diff options
-rw-r--r-- | .clang-format | 212 | ||||
-rw-r--r-- | .gitignore | 8 | ||||
-rw-r--r-- | CMakeLists.txt | 21 | ||||
-rw-r--r-- | src/carModel.h | 104 | ||||
-rw-r--r-- | src/city.c | 336 | ||||
-rw-r--r-- | src/cityModel.h | 958 | ||||
-rw-r--r-- | src/cityTexture.h | 8890 | ||||
-rw-r--r-- | src/small3dlib.h | 2945 |
8 files changed, 13474 insertions, 0 deletions
diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..0cd8217 --- /dev/null +++ b/.clang-format @@ -0,0 +1,212 @@ +--- +Language: Cpp +# BasedOnStyle: Chromium +AccessModifierOffset: -1 +AlignAfterOpenBracket: Align +AlignArrayOfStructures: None +AlignConsecutiveMacros: None +AlignConsecutiveAssignments: None +AlignConsecutiveBitFields: None +AlignConsecutiveDeclarations: None +AlignEscapedNewlines: Left +AlignOperands: Align +AlignTrailingComments: true +AllowAllArgumentsOnNextLine: true +AllowAllConstructorInitializersOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: false +AllowShortEnumsOnASingleLine: true +AllowShortBlocksOnASingleLine: Never +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: Inline +AllowShortLambdasOnASingleLine: All +AllowShortIfStatementsOnASingleLine: Never +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: true +AlwaysBreakTemplateDeclarations: Yes +AttributeMacros: + - __capability +BinPackArguments: true +BinPackParameters: false +BraceWrapping: + AfterCaseLabel: false + AfterClass: false + AfterControlStatement: Never + AfterEnum: false + AfterFunction: false + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + AfterExternBlock: false + BeforeCatch: false + BeforeElse: false + BeforeLambdaBody: false + BeforeWhile: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakBeforeBinaryOperators: None +BreakBeforeConceptDeclarations: true +BreakBeforeBraces: Attach +BreakBeforeInheritanceComma: false +BreakInheritanceList: BeforeColon +BreakBeforeTernaryOperators: true +BreakConstructorInitializersBeforeComma: false +BreakConstructorInitializers: BeforeColon +BreakAfterJavaFieldAnnotations: false +BreakStringLiterals: true +ColumnLimit: 80 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: false +ConstructorInitializerAllOnOneLineOrOnePerLine: true +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DeriveLineEnding: true +DerivePointerAlignment: false +DisableFormat: false +EmptyLineAfterAccessModifier: Never +EmptyLineBeforeAccessModifier: LogicalBlock +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: true +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IfMacros: + - KJ_IF_MAYBE +IncludeBlocks: Preserve +IncludeCategories: + - Regex: '^<ext/.*\.h>' + Priority: 2 + SortPriority: 0 + CaseSensitive: false + - Regex: '^<.*\.h>' + Priority: 1 + SortPriority: 0 + CaseSensitive: false + - Regex: '^<.*' + Priority: 2 + SortPriority: 0 + CaseSensitive: false + - Regex: '.*' + Priority: 3 + SortPriority: 0 + CaseSensitive: false +IncludeIsMainRegex: '([-_](test|unittest))?$' +IncludeIsMainSourceRegex: '' +IndentAccessModifiers: false +IndentCaseLabels: true +IndentCaseBlocks: false +IndentGotoLabels: true +IndentPPDirectives: None +IndentExternBlock: AfterExternBlock +IndentRequires: false +IndentWidth: 4 +IndentWrappedFunctionNames: false +InsertTrailingCommas: None +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: false +LambdaBodyIndentation: Signature +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +ObjCBinPackProtocolList: Never +ObjCBlockIndentWidth: 2 +ObjCBreakBeforeNestedBlockParam: true +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: true +PenaltyBreakAssignment: 2 +PenaltyBreakBeforeFirstCallParameter: 1 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakString: 1000 +PenaltyBreakTemplateDeclaration: 10 +PenaltyExcessCharacter: 1000000 +PenaltyReturnTypeOnItsOwnLine: 200 +PenaltyIndentedWhitespace: 0 +PointerAlignment: Left +PPIndentWidth: -1 +RawStringFormats: + - Language: Cpp + Delimiters: + - cc + - CC + - cpp + - Cpp + - CPP + - 'c++' + - 'C++' + CanonicalDelimiter: '' + BasedOnStyle: google + - Language: TextProto + Delimiters: + - pb + - PB + - proto + - PROTO + EnclosingFunctions: + - EqualsProto + - EquivToProto + - PARSE_PARTIAL_TEXT_PROTO + - PARSE_TEST_PROTO + - PARSE_TEXT_PROTO + - ParseTextOrDie + - ParseTextProtoOrDie + - ParseTestProto + - ParsePartialTestProto + CanonicalDelimiter: pb + BasedOnStyle: google +ReferenceAlignment: Pointer +ReflowComments: true +ShortNamespaceLines: 1 +SortIncludes: CaseSensitive +SortJavaStaticImport: Before +SortUsingDeclarations: true +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeCaseColon: false +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeParens: ControlStatements +SpaceAroundPointerQualifiers: Default +SpaceBeforeRangeBasedForLoopColon: true +SpaceInEmptyBlock: false +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 2 +SpacesInAngles: Never +SpacesInConditionalStatement: false +SpacesInContainerLiterals: true +SpacesInCStyleCastParentheses: false +SpacesInLineCommentPrefix: + Minimum: 1 + Maximum: -1 +SpacesInParentheses: false +SpacesInSquareBrackets: false +SpaceBeforeSquareBrackets: false +BitFieldColonSpacing: Both +Standard: Auto +StatementAttributeLikeMacros: + - Q_EMIT +StatementMacros: + - Q_UNUSED + - QT_REQUIRE_VERSION +TabWidth: 8 +UseCRLF: false +UseTab: Never +WhitespaceSensitiveMacros: + - STRINGIZE + - PP_STRINGIZE + - BOOST_PP_STRINGIZE + - NS_SWIFT_NAME + - CF_SWIFT_NAME +... + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..76e6b32 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +.DS_Store +.idea +*.log +tmp/ + + +.ccls* +build* diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..2228b39 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,21 @@ +cmake_minimum_required(VERSION 3.15) +project(wip-shooter) + +find_package(SDL2 REQUIRED) # Requires at least version 3.0 +include_directories(${SDL2_INCLUDE_DIRS}) + +set(CMAKE_C_STANDARD 11) # Requires C11 standard + +set (CMAKE_CXX_STANDARD 17) + +add_executable(${PROJECT_NAME} + src/city.c) + +target_link_libraries(${PROJECT_NAME} ${SDL2_LIBRARIES}) + +# Checks if OSX and links appropriate frameworks (only required on MacOS) +if (APPLE) + target_link_libraries(${PROJECT_NAME} "-framework IOKit") + target_link_libraries(${PROJECT_NAME} "-framework Cocoa") + target_link_libraries(${PROJECT_NAME} "-framework OpenGL") +endif() diff --git a/src/carModel.h b/src/carModel.h new file mode 100644 index 0000000..7d8138f --- /dev/null +++ b/src/carModel.h @@ -0,0 +1,104 @@ +#ifndef CAR_MODEL_H +#define CAR_MODEL_H + +#define CAR_VERTEX_COUNT 12 +const S3L_Unit carVertices[CAR_VERTEX_COUNT * 3] = { + -51, 14, -108, // 0 + -31, 103, -92, // 3 + -31, 103, -3, // 6 + 51, 14, -108, // 9 + 31, 103, -92, // 12 + 31, 103, -3, // 15 + -48, 59, 31, // 18 + 48, 59, 31, // 21 + -40, 52, 86, // 24 + -44, 14, 86, // 27 + 44, 14, 86, // 30 + 40, 52, 86 // 33 +}; // carVertices + +#define CAR_TRIANGLE_COUNT 18 +const S3L_Index carTriangleIndices[CAR_TRIANGLE_COUNT * 3] = { + 4, 3, 5, // 0 + 2, 7, 6, // 3 + 1, 0, 4, // 6 + 7, 5, 3, // 9 + 2, 4, 5, // 12 + 2, 0, 1, // 15 + 9, 6, 8, // 18 + 7, 8, 6, // 21 + 3, 4, 0, // 24 + 9, 11, 10, // 27 + 7, 3, 10, // 30 + 0, 6, 9, // 33 + 6, 0, 2, // 36 + 10, 11, 7, // 39 + 2, 5, 7, // 42 + 2, 1, 4, // 45 + 7, 11, 8, // 48 + 9, 8, 11 // 51 +}; // carTriangleIndices + +#define CAR_UV_COUNT 24 +const S3L_Unit carUVs[CAR_UV_COUNT * 2] = { + 451, 476, // 0 + 459, 509, // 2 + 422, 477, // 4 + 422, 476, // 6 + 409, 451, // 8 + 409, 476, // 10 + 451, 476, // 12 + 484, 476, // 14 + 451, 451, // 16 + 409, 492, // 18 + 422, 451, // 20 + 422, 477, // 22 + 459, 509, // 24 + 451, 476, // 26 + 398, 509, // 28 + 409, 492, // 30 + 398, 493, // 32 + 397, 476, // 34 + 484, 451, // 36 + 386, 476, // 38 + 397, 451, // 40 + 386, 451, // 42 + 398, 509, // 44 + 398, 493 // 46 +}; // carUVs + +#define CAR_UV_INDEX_COUNT 18 +const S3L_Index carUVIndices[CAR_UV_INDEX_COUNT * 3] = { + 0, 1, 2, // 0 + 3, 4, 5, // 3 + 6, 7, 8, // 6 + 9, 2, 1, // 9 + 3, 8, 10, // 12 + 11, 12, 13, // 15 + 14, 15, 16, // 18 + 4, 17, 5, // 21 + 18, 8, 7, // 24 + 19, 20, 21, // 27 + 9, 1, 22, // 30 + 12, 15, 14, // 33 + 15, 12, 11, // 36 + 22, 23, 9, // 39 + 3, 10, 4, // 42 + 3, 6, 8, // 45 + 4, 20, 17, // 48 + 19, 17, 20 // 51 +}; // carUVIndices + +S3L_Model3D carModel; + +void carModelInit() +{ + S3L_model3DInit( + carVertices, + CAR_VERTEX_COUNT, + carTriangleIndices, + CAR_TRIANGLE_COUNT, + &carModel); +} + +#endif // guard diff --git a/src/city.c b/src/city.c new file mode 100644 index 0000000..3ba25cb --- /dev/null +++ b/src/city.c @@ -0,0 +1,336 @@ +/* + Example program for small3dlib -- a GTA-like game demo. + + author: Miloslav Ciz + license: CC0 1.0 +*/ + +#include <SDL2/SDL.h> +#include <SDL2/SDL_scancode.h> +#include <stdio.h> +#include <time.h> + +#define S3L_FLAT 0 +#define S3L_NEAR_CROSS_STRATEGY 3 +#define S3L_PERSPECTIVE_CORRECTION 2 +#define S3L_SORT 0 +#define S3L_STENCIL_BUFFER 0 +#define S3L_Z_BUFFER 2 + +#define S3L_PIXEL_FUNCTION drawPixel + +#define S3L_RESOLUTION_X 1000 +#define S3L_RESOLUTION_Y 600 + +#include "small3dlib.h" + +#include "cityModel.h" +#include "cityTexture.h" +#include "carModel.h" + +#define TEXTURE_W 256 +#define TEXTURE_H 256 + +#define MAX_VELOCITY 1000 +#define ACCELERATION 700 +#define TURN_SPEED 300 +#define FRICTION 600 + +S3L_Model3D models[2]; + +const uint8_t collisionMap[8 * 10] = +{ + 1,1,1,1,1,1,1,1, + 1,1,1,1,0,0,0,1, + 1,1,1,1,0,1,0,1, + 2,2,1,0,0,0,0,3, + 1,2,1,0,1,1,3,1, + 2,0,0,0,1,1,3,3, + 1,0,1,0,0,1,1,1, + 1,0,0,0,1,1,1,1, + 1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1 +}; + +S3L_Scene scene; + +uint32_t pixels[S3L_RESOLUTION_X * S3L_RESOLUTION_Y]; + +uint32_t frame = 0; + +void clearScreen() +{ + uint32_t index = 0; + + for (uint16_t y = 0; y < S3L_RESOLUTION_Y; ++y) + { + S3L_Unit t = S3L_min(S3L_FRACTIONS_PER_UNIT,((y * S3L_FRACTIONS_PER_UNIT) / S3L_RESOLUTION_Y) * 4); + + uint32_t r = S3L_interpolateByUnit(200,242,t); + uint32_t g = S3L_interpolateByUnit(102,255,t); + uint32_t b = S3L_interpolateByUnit(255,230,t); + + uint32_t color = (r << 24) | (g << 16 ) | (b << 8); + + for (uint16_t x = 0; x < S3L_RESOLUTION_X; ++x) + { + pixels[index] = color; + index++; + } + } +} + +static inline void setPixel(int x, int y, uint8_t red, uint8_t green, uint8_t blue) +{ + uint8_t *p = ((uint8_t *) pixels) + (y * S3L_RESOLUTION_X + x) * 4 + 1; + + *p = blue; + ++p; + *p = green; + ++p; + *p = red; +} + +void sampleTexture(int32_t u, int32_t v, uint8_t *r, uint8_t *g, uint8_t *b) +{ + u = S3L_clamp(u,0,CITY_TEXTURE_WIDTH - 1); + v = S3L_clamp(v,0,CITY_TEXTURE_HEIGHT - 1); + + const uint8_t *t = cityTexture + (v * CITY_TEXTURE_WIDTH + u) * 3; + + *r = *t; + t++; + *g = *t; + t++; + *b = *t; +} + +uint32_t previousTriangle = -1; +S3L_Vec4 uv0, uv1, uv2; + +void drawPixel(S3L_PixelInfo *p) +{ + if (p->triangleID != previousTriangle) + { + const S3L_Index *uvIndices; + const S3L_Unit *uvs; + + if (p->modelIndex == 0) + { + uvIndices = cityUVIndices; + uvs = cityUVs; + } + else + { + uvIndices = carUVIndices; + uvs = carUVs; + } + + S3L_getIndexedTriangleValues(p->triangleIndex,uvIndices,uvs,2,&uv0,&uv1,&uv2); + + previousTriangle = p->triangleID; + } + + uint8_t r, g, b; + + S3L_Unit uv[2]; + + uv[0] = S3L_interpolateBarycentric(uv0.x,uv1.x,uv2.x,p->barycentric); + uv[1] = S3L_interpolateBarycentric(uv0.y,uv1.y,uv2.y,p->barycentric); + + sampleTexture(uv[0] >> 1,uv[1] >> 1,&r,&g,&b); + + setPixel(p->x,p->y,r,g,b); +} + +void draw() +{ + S3L_newFrame(); + clearScreen(); + S3L_drawScene(scene); +} + +static inline uint8_t collision(S3L_Vec4 worldPosition) +{ + worldPosition.x /= S3L_FRACTIONS_PER_UNIT; + worldPosition.z /= -S3L_FRACTIONS_PER_UNIT; + + uint16_t index = worldPosition.z * 8 + worldPosition.x; + + return collisionMap[index]; +} + +static inline void handleCollision(S3L_Vec4 *pos, S3L_Vec4 previousPos) +{ + S3L_Vec4 newPos = *pos; + newPos.x = previousPos.x; + + if (collision(newPos)) + { + newPos = *pos; + newPos.z = previousPos.z; + + if (collision(newPos)) + newPos = previousPos; + } + + *pos = newPos; +} + +int16_t fps = 0; + +int main() +{ + SDL_Window *window = SDL_CreateWindow("city demo", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, S3L_RESOLUTION_X, S3L_RESOLUTION_Y, SDL_WINDOW_SHOWN); + SDL_Renderer *renderer = SDL_CreateRenderer(window,-1,0); + SDL_Texture *textureSDL = SDL_CreateTexture(renderer,SDL_PIXELFORMAT_RGBX8888, SDL_TEXTUREACCESS_STATIC, S3L_RESOLUTION_X, S3L_RESOLUTION_Y); + SDL_Surface *screenSurface = SDL_GetWindowSurface(window); + SDL_Event event; + + cityModelInit(); + carModelInit(); + + models[0] = cityModel; + models[1] = carModel; + + S3L_sceneInit(models,2,&scene); + + S3L_transform3DSet(1909,16,-3317,0,-510,0,512,512,512,&(models[1].transform)); + + int running = 1; + + clock_t nextPrintT; + + nextPrintT = clock(); + + S3L_Vec4 carDirection; + + S3L_vec4Init(&carDirection); + + scene.camera.transform.translation.x = 0; + scene.camera.transform.translation.y = S3L_FRACTIONS_PER_UNIT / 4; + scene.camera.transform.rotation.x = 1; + + int16_t velocity = 0; + + while (running) // main loop + { + clock_t frameStartT = clock(); + + models[1].transform.rotation.y += models[1].transform.rotation.z; // overturn the car for the rendering + + draw(); + + models[1].transform.rotation.y -= models[1].transform.rotation.z; // turn the car back for the physics + + fps++; + + SDL_UpdateTexture(textureSDL,NULL,pixels,S3L_RESOLUTION_X * sizeof(uint32_t)); + + clock_t nowT = clock(); + + double timeDiff = ((double) (nowT - nextPrintT)) / CLOCKS_PER_SEC; + double frameDiff = ((double) (nowT - frameStartT)) / CLOCKS_PER_SEC; + int16_t frameDiffMs = frameDiff * 1000; + + if (timeDiff >= 1.0) + { + nextPrintT = nowT; + printf("FPS: %d\n",fps); + fps = 0; + } + + while (SDL_PollEvent(&event)) + if (event.type == SDL_QUIT) + running = 0; + + const uint8_t *state = SDL_GetKeyboardState(NULL); + + int16_t step = (velocity * frameDiffMs) / 1000; + int16_t stepFriction = (FRICTION * frameDiffMs) / 1000; + int16_t stepRotation = TURN_SPEED * frameDiffMs * S3L_max(0,velocity - 200) / (MAX_VELOCITY * 1000); + + int16_t stepVelocity = S3L_nonZero((ACCELERATION * frameDiffMs) / 1000); + + if (stepRotation == 0 && S3L_abs(velocity) >= 200) + stepRotation = 1; + + if (velocity < 0) + stepRotation *= -1; + + if (state[SDL_SCANCODE_LEFT] || state[SDL_SCANCODE_A]) + { + models[1].transform.rotation.y += stepRotation; + models[1].transform.rotation.z = + S3L_min(S3L_abs(velocity) / 64, models[1].transform.rotation.z + 1); + } + else if (state[SDL_SCANCODE_RIGHT] || state[SDL_SCANCODE_D]) + { + models[1].transform.rotation.y -= stepRotation; + models[1].transform.rotation.z = + S3L_max(-S3L_abs(velocity) / 64, models[1].transform.rotation.z - 1); + } + else + models[1].transform.rotation.z = (models[1].transform.rotation.z * 3) / 4; + + S3L_rotationToDirections(models[1].transform.rotation,S3L_FRACTIONS_PER_UNIT,&carDirection,0,0); + + S3L_Vec4 previousCarPos = models[1].transform.translation; + + int16_t friction = 0; + + if (state[SDL_SCANCODE_UP] || state[SDL_SCANCODE_W]) + velocity = S3L_min(MAX_VELOCITY,velocity + (velocity < 0 ? (2 * stepVelocity) : stepVelocity)); + else if (state[SDL_SCANCODE_DOWN] || state[SDL_SCANCODE_S]) + velocity = S3L_max(-MAX_VELOCITY,velocity - (velocity > 0 ? (2 * stepVelocity) : stepVelocity)); + else + friction = 1; + + models[1].transform.translation.x += (carDirection.x * step) / S3L_FRACTIONS_PER_UNIT; + models[1].transform.translation.z += (carDirection.z * step) / S3L_FRACTIONS_PER_UNIT; + + uint8_t coll = collision(models[1].transform.translation); + + if (coll != 0) + { + if (coll == 1) + { + handleCollision(&(models[1].transform.translation),previousCarPos); + friction = 2; + } + else if (coll == 2) + { + // teleport the car + models[1].transform.translation.x += 5 * S3L_FRACTIONS_PER_UNIT; + models[1].transform.translation.z += 2 * S3L_FRACTIONS_PER_UNIT; + } + else + { + // teleport the car + models[1].transform.translation.x -= 5 * S3L_FRACTIONS_PER_UNIT; + models[1].transform.translation.z -= 2 * S3L_FRACTIONS_PER_UNIT; + } + } + + if (velocity > 0) + velocity = S3L_max(0,velocity - stepFriction * friction); + else + velocity = S3L_min(0,velocity + stepFriction * friction); + + scene.camera.transform.translation.x = + scene.models[1].transform.translation.x - (carDirection.x) / S3L_FRACTIONS_PER_UNIT; + + scene.camera.transform.translation.z = + scene.models[1].transform.translation.z - (carDirection.z) / S3L_FRACTIONS_PER_UNIT; + + scene.camera.transform.rotation.y = models[1].transform.rotation.y; + + SDL_RenderClear(renderer); + SDL_RenderCopy(renderer,textureSDL,NULL,NULL); + SDL_RenderPresent(renderer); + + frame++; + } + + return 0; +} diff --git a/src/cityModel.h b/src/cityModel.h new file mode 100644 index 0000000..9208de6 --- /dev/null +++ b/src/cityModel.h @@ -0,0 +1,958 @@ +#ifndef CITY_MODEL_H +#define CITY_MODEL_H + +#define CITY_VERTEX_COUNT 155 +const S3L_Unit cityVertices[CITY_VERTEX_COUNT * 3] = { + 0, 2, -2048, // 0 + -512, 2, -1536, // 3 + -1024, 2, -2560, // 6 + -1024, 2, -3072, // 9 + -1024, 2, -3584, // 12 + -512, 2, -3072, // 15 + -512, 2, -2560, // 18 + 512, 2, -1536, // 21 + 512, 2, -2048, // 24 + 1024, 2, -1536, // 27 + 512, 2, -2560, // 30 + 0, 2, -2560, // 33 + 563, 889, -1996, // 36 + 563, 889, -2611, // 39 + -51, 889, -2611, // 42 + -238, 790, -3072, // 45 + 512, 792, -3072, // 48 + -1024, 388, -3072, // 51 + -1024, 388, -3584, // 54 + 512, 388, -1536, // 57 + 1024, 388, -1536, // 60 + -512, 698, -1536, // 63 + -1024, 698, -2560, // 66 + -1024, 388, -2560, // 69 + -512, 698, -2560, // 72 + 512, 698, -1536, // 75 + 512, 407, -938, // 78 + 512, 698, -938, // 81 + -512, 148, -3072, // 84 + -238, 148, -3072, // 87 + -512, 148, -3347, // 90 + -1372, 297, -2017, // 93 + -1145, 297, -1737, // 96 + -1395, 1403, -2044, // 99 + -1122, 1403, -1709, // 102 + 2560, 2, -1024, // 105 + 2048, 2, -512, // 108 + 1024, 2, -3072, // 111 + 1024, 2, -3584, // 114 + 512, 2, -4096, // 117 + 1024, 2, -4096, // 120 + 2048, 2, -3584, // 123 + 2048, 2, -4096, // 126 + 1536, 2, -3584, // 129 + 1536, 2, -3072, // 132 + 1024, 2, -2560, // 135 + 512, 2, -3072, // 138 + 1536, 2, -1536, // 141 + 1536, 2, -2048, // 144 + 1536, 2, -2560, // 147 + 2048, 2, -2048, // 150 + 2048, 2, -1536, // 153 + 3072, 2, -512, // 156 + 3072, 2, -1024, // 159 + 3584, 2, -512, // 162 + 3072, 2, -2048, // 165 + 2560, 2, -1536, // 168 + 2560, 2, -3072, // 171 + 2560, 2, -3584, // 174 + 2048, 2, -3072, // 177 + 998, 155, -3046, // 180 + 998, 155, -3609, // 183 + 1561, 155, -3609, // 186 + 1561, 155, -3046, // 189 + 2508, 889, -972, // 192 + 3123, 889, -972, // 195 + 3123, 889, -1587, // 198 + 2508, 889, -1587, // 201 + 1024, 316, -4096, // 204 + 2048, 316, -4096, // 207 + 512, 792, -4096, // 210 + 1024, 298, -4710, // 213 + 2321, 790, -2048, // 216 + 3072, 792, -2048, // 219 + 2048, 790, -3072, // 222 + 512, 792, -4710, // 225 + 1280, 297, -3328, // 228 + 2560, 790, -3072, // 231 + 2560, 259, -3072, // 234 + 2560, 259, -3584, // 237 + 1024, 388, -2560, // 240 + 1536, 388, -2048, // 243 + 1536, 388, -2560, // 246 + 3072, 388, -512, // 249 + 3584, 388, -512, // 252 + 2048, 698, -512, // 255 + 1536, 698, -1536, // 258 + 1536, 388, -1536, // 261 + 2048, 698, -1536, // 264 + 3072, 698, -512, // 267 + 3072, 407, 85, // 270 + 3072, 698, 85, // 273 + 1536, 698, -647, // 276 + 1536, 388, -647, // 279 + 2048, 148, -2048, // 282 + 2321, 148, -2048, // 285 + 2048, 148, -2323, // 288 + 2048, 790, -2323, // 291 + 2048, 1484, -3584, // 294 + 2048, 1227, -4096, // 297 + 2560, 1484, -3584, // 300 + 2443, -253, -5243, // 303 + 2721, -253, -4712, // 306 + 2443, 1078, -5243, // 309 + 2721, 1078, -4712, // 312 + 1187, 297, -993, // 315 + 1414, 297, -713, // 318 + 1177, 1403, -1022, // 321 + 1450, 1403, -687, // 324 + 1055, 297, -700, // 327 + 1019, 1403, -671, // 330 + 3584, 2, -2048, // 333 + 3584, 2, -2560, // 336 + 3072, 2, -3072, // 339 + 3584, 2, -3072, // 342 + 4608, 2, -2560, // 345 + 4608, 2, -3072, // 348 + 4096, 2, -2560, // 351 + 4096, 2, -2048, // 354 + 3584, 2, -1536, // 357 + 3072, 2, -1536, // 360 + 4096, 2, -1536, // 363 + 4608, 2, -1024, // 366 + 5120, 2, -2048, // 369 + 5120, 2, -2560, // 372 + 4608, 2, -2048, // 375 + 3558, 155, -2022, // 378 + 3558, 155, -2585, // 381 + 4121, 155, -2022, // 384 + 3584, 316, -3072, // 387 + 4608, 316, -3072, // 390 + 3072, 792, -3072, // 393 + 4881, 790, -1024, // 396 + 4608, 790, -2048, // 399 + 3840, 297, -2304, // 402 + 5120, 259, -2048, // 405 + 5120, 259, -2560, // 408 + 3584, 388, -1536, // 411 + 4096, 388, -1536, // 414 + 4881, 148, -1024, // 417 + 4608, 148, -1299, // 420 + 4608, 790, -1299, // 423 + 4608, 1484, -2560, // 426 + 4608, 1227, -3072, // 429 + 5120, 1484, -2560, // 432 + 5003, -253, -4219, // 435 + 5281, -253, -3688, // 438 + 5003, 1078, -4219, // 441 + 5281, 1078, -3688, // 444 + 3747, 297, 30, // 447 + 3974, 297, 310, // 450 + 3737, 1403, 1, // 453 + 4010, 1403, 336, // 456 + 3615, 297, 323, // 459 + 3579, 1403, 352 // 462 +}; // cityVertices + +#define CITY_TRIANGLE_COUNT 197 +const S3L_Index cityTriangleIndices[CITY_TRIANGLE_COUNT * 3] = { + 0, 1, 6, // 0 + 2, 3, 5, // 3 + 5, 3, 4, // 6 + 11, 5, 46, // 9 + 0, 6, 11, // 12 + 1, 0, 7, // 15 + 8, 45, 9, // 18 + 8, 10, 45, // 21 + 46, 10, 11, // 24 + 5, 11, 6, // 27 + 0, 8, 7, // 30 + 8, 9, 7, // 33 + 5, 6, 2, // 36 + 11, 13, 14, // 39 + 10, 8, 12, // 42 + 3, 18, 4, // 45 + 9, 19, 7, // 48 + 9, 45, 80, // 51 + 1, 7, 19, // 54 + 22, 23, 24, // 57 + 19, 21, 1, // 60 + 1, 24, 6, // 63 + 25, 21, 19, // 66 + 2, 23, 17, // 69 + 24, 23, 6, // 72 + 2, 17, 3, // 75 + 25, 26, 27, // 78 + 6, 23, 2, // 81 + 29, 28, 30, // 84 + 28, 29, 5, // 87 + 5, 29, 46, // 90 + 46, 29, 16, // 93 + 29, 15, 16, // 96 + 3, 17, 18, // 99 + 1, 21, 24, // 102 + 11, 10, 13, // 105 + 10, 12, 13, // 108 + 9, 20, 19, // 111 + 9, 80, 20, // 114 + 25, 19, 26, // 117 + 34, 31, 32, // 120 + 34, 33, 31, // 123 + 35, 36, 51, // 126 + 38, 46, 39, // 129 + 40, 38, 39, // 132 + 42, 41, 43, // 135 + 43, 40, 42, // 138 + 41, 59, 43, // 141 + 45, 37, 44, // 144 + 10, 46, 37, // 147 + 47, 48, 50, // 150 + 49, 59, 50, // 153 + 50, 48, 49, // 156 + 56, 50, 55, // 159 + 35, 51, 56, // 162 + 36, 35, 52, // 165 + 53, 119, 54, // 168 + 53, 120, 119, // 171 + 55, 120, 56, // 174 + 59, 44, 43, // 177 + 59, 49, 44, // 180 + 50, 56, 51, // 183 + 35, 53, 52, // 186 + 53, 54, 52, // 189 + 50, 51, 47, // 192 + 40, 43, 38, // 195 + 38, 37, 46, // 198 + 37, 45, 10, // 201 + 44, 49, 45, // 204 + 57, 59, 41, // 207 + 41, 58, 57, // 210 + 44, 37, 60, // 213 + 37, 38, 61, // 216 + 62, 43, 44, // 219 + 43, 61, 38, // 222 + 62, 63, 76, // 225 + 56, 66, 67, // 228 + 56, 64, 35, // 231 + 120, 53, 65, // 234 + 35, 65, 53, // 237 + 40, 69, 42, // 240 + 98, 79, 41, // 243 + 68, 70, 75, // 246 + 39, 46, 16, // 249 + 39, 70, 68, // 252 + 39, 68, 40, // 255 + 60, 76, 63, // 258 + 41, 79, 58, // 261 + 78, 74, 59, // 264 + 58, 78, 57, // 267 + 96, 97, 95, // 270 + 45, 49, 82, // 273 + 48, 82, 49, // 276 + 54, 83, 52, // 279 + 54, 119, 137, // 282 + 36, 52, 83, // 285 + 86, 87, 88, // 288 + 83, 85, 36, // 291 + 36, 88, 51, // 294 + 89, 85, 83, // 297 + 47, 87, 81, // 300 + 88, 87, 51, // 303 + 47, 81, 48, // 306 + 89, 90, 91, // 309 + 51, 87, 47, // 312 + 87, 86, 92, // 315 + 76, 60, 61, // 318 + 61, 62, 76, // 321 + 74, 97, 96, // 324 + 96, 59, 74, // 327 + 57, 78, 59, // 330 + 59, 96, 50, // 333 + 94, 50, 96, // 336 + 95, 94, 96, // 339 + 94, 95, 50, // 342 + 50, 95, 55, // 345 + 55, 95, 73, // 348 + 95, 72, 73, // 351 + 97, 72, 95, // 354 + 42, 69, 41, // 357 + 69, 98, 41, // 360 + 40, 68, 69, // 363 + 68, 75, 71, // 366 + 45, 82, 80, // 369 + 48, 81, 82, // 372 + 39, 16, 70, // 375 + 36, 85, 88, // 378 + 87, 92, 93, // 381 + 56, 120, 66, // 384 + 56, 67, 64, // 387 + 120, 65, 66, // 390 + 35, 64, 65, // 393 + 98, 100, 79, // 396 + 58, 79, 78, // 399 + 78, 77, 74, // 402 + 98, 69, 99, // 405 + 44, 60, 63, // 408 + 37, 61, 60, // 411 + 62, 44, 63, // 414 + 43, 62, 61, // 417 + 54, 84, 83, // 420 + 54, 137, 84, // 423 + 89, 83, 90, // 426 + 101, 104, 102, // 429 + 101, 103, 104, // 432 + 108, 105, 106, // 435 + 110, 105, 107, // 438 + 108, 107, 105, // 441 + 110, 109, 105, // 444 + 112, 55, 113, // 447 + 114, 112, 113, // 450 + 117, 114, 116, // 453 + 115, 125, 117, // 456 + 119, 111, 118, // 459 + 120, 55, 111, // 462 + 121, 125, 122, // 465 + 125, 118, 117, // 468 + 125, 121, 118, // 471 + 114, 117, 112, // 474 + 112, 111, 55, // 477 + 111, 119, 120, // 480 + 118, 121, 119, // 483 + 123, 125, 115, // 486 + 115, 124, 123, // 489 + 118, 111, 126, // 492 + 111, 112, 127, // 495 + 114, 130, 116, // 498 + 142, 136, 115, // 501 + 113, 55, 73, // 504 + 113, 131, 129, // 507 + 113, 129, 114, // 510 + 126, 134, 128, // 513 + 115, 136, 124, // 516 + 124, 135, 123, // 519 + 140, 141, 139, // 522 + 119, 121, 138, // 525 + 134, 126, 127, // 528 + 133, 141, 140, // 531 + 140, 125, 133, // 534 + 125, 140, 122, // 537 + 141, 132, 139, // 540 + 116, 130, 115, // 543 + 130, 142, 115, // 546 + 114, 129, 130, // 549 + 119, 138, 137, // 552 + 113, 73, 131, // 555 + 142, 144, 136, // 558 + 124, 136, 135, // 561 + 142, 130, 143, // 564 + 118, 126, 128, // 567 + 111, 127, 126, // 570 + 145, 148, 146, // 573 + 145, 147, 148, // 576 + 152, 149, 150, // 579 + 154, 149, 151, // 582 + 152, 151, 149, // 585 + 154, 153, 149 // 588 +}; // cityTriangleIndices + +#define CITY_UV_COUNT 377 +const S3L_Unit cityUVs[CITY_UV_COUNT * 2] = { + 125, 125, // 0 + 1, 1, // 2 + 1, 249, // 4 + 2, 1, // 6 + 2, 126, // 8 + 126, 126, // 10 + 2, 262, // 12 + 126, 262, // 14 + 126, 386, // 16 + 126, 387, // 18 + 2, 511, // 20 + 2, 262, // 22 + 125, 249, // 24 + 1, 2, // 26 + 125, 126, // 28 + 1, 251, // 30 + 126, 125, // 32 + 2, 249, // 34 + 2, 1, // 36 + 126, 249, // 38 + 126, 262, // 40 + 126, 511, // 42 + 125, 251, // 44 + 126, 1, // 46 + 126, 1, // 48 + 258, 253, // 50 + 386, 1, // 52 + 258, 1, // 54 + 260, 253, // 56 + 405, 253, // 58 + 405, 2, // 60 + 253, 511, // 62 + 130, 386, // 64 + 130, 511, // 66 + 381, 508, // 68 + 256, 386, // 70 + 256, 508, // 72 + 130, 509, // 74 + 380, 509, // 76 + 380, 386, // 78 + 258, 253, // 80 + 510, 253, // 82 + 510, 114, // 84 + 354, 3, // 86 + 354, 115, // 88 + 510, 3, // 90 + 258, 3, // 92 + 507, 252, // 94 + 255, 2, // 96 + 255, 252, // 98 + 510, 3, // 100 + 376, 511, // 102 + 376, 386, // 104 + 253, 386, // 106 + 510, 254, // 108 + 258, 3, // 110 + 475, 112, // 112 + 475, 3, // 114 + 354, 254, // 116 + 245, 319, // 118 + 190, 264, // 120 + 135, 319, // 122 + 509, 209, // 124 + 443, 209, // 126 + 509, 253, // 128 + 259, 253, // 130 + 259, 16, // 132 + 443, 16, // 134 + 507, 2, // 136 + 386, 253, // 138 + 260, 2, // 140 + 381, 386, // 142 + 130, 386, // 144 + 258, 112, // 146 + 509, 352, // 148 + 261, 259, // 150 + 261, 352, // 152 + 509, 259, // 154 + 125, 125, // 156 + 1, 1, // 158 + 1, 249, // 160 + 127, 125, // 162 + 3, 249, // 164 + 3, 1, // 166 + 127, 1, // 168 + 1, 2, // 170 + 125, 2, // 172 + 125, 126, // 174 + 1, 250, // 176 + 125, 254, // 178 + 125, 129, // 180 + 1, 254, // 182 + 126, 128, // 184 + 1, 128, // 186 + 1, 252, // 188 + 130, 1, // 190 + 130, 125, // 192 + 254, 125, // 194 + 2, 1, // 196 + 2, 126, // 198 + 126, 126, // 200 + 126, 386, // 202 + 2, 510, // 204 + 2, 262, // 206 + 2, 262, // 208 + 126, 262, // 210 + 126, 386, // 212 + 126, 387, // 214 + 2, 511, // 216 + 2, 262, // 218 + 125, 249, // 220 + 1, 2, // 222 + 125, 126, // 224 + 1, 251, // 226 + 126, 125, // 228 + 2, 249, // 230 + 2, 1, // 232 + 126, 249, // 234 + 126, 262, // 236 + 1, 129, // 238 + 126, 510, // 240 + 126, 511, // 242 + 125, 251, // 244 + 126, 1, // 246 + 126, 1, // 248 + 125, 250, // 250 + 127, 249, // 252 + 254, 1, // 254 + 126, 252, // 256 + 253, 130, // 258 + 129, 130, // 260 + 129, 254, // 262 + 253, 254, // 264 + 387, 448, // 266 + 508, 448, // 268 + 508, 386, // 270 + 387, 446, // 272 + 508, 446, // 274 + 508, 388, // 276 + 385, 390, // 278 + 385, 446, // 280 + 510, 446, // 282 + 511, 447, // 284 + 386, 388, // 286 + 386, 447, // 288 + 254, 259, // 290 + 131, 259, // 292 + 192, 321, // 294 + 258, 253, // 296 + 386, 1, // 298 + 258, 1, // 300 + 510, 252, // 302 + 385, 2, // 304 + 385, 252, // 306 + 260, 253, // 308 + 405, 253, // 310 + 405, 2, // 312 + 510, 254, // 314 + 384, 0, // 316 + 384, 254, // 318 + 381, 511, // 320 + 131, 434, // 322 + 131, 511, // 324 + 510, 350, // 326 + 302, 261, // 328 + 259, 350, // 330 + 221, 324, // 332 + 221, 257, // 334 + 163, 257, // 336 + 259, 252, // 338 + 511, 252, // 340 + 511, 15, // 342 + 259, 352, // 344 + 404, 352, // 346 + 317, 258, // 348 + 259, 258, // 350 + 130, 259, // 352 + 191, 320, // 354 + 253, 259, // 356 + 259, 261, // 358 + 259, 176, // 360 + 414, 16, // 362 + 414, 254, // 364 + 253, 382, // 366 + 129, 327, // 368 + 129, 382, // 370 + 477, 210, // 372 + 477, 15, // 374 + 354, 210, // 376 + 222, 509, // 378 + 352, 509, // 380 + 352, 386, // 382 + 253, 511, // 384 + 130, 386, // 386 + 130, 511, // 388 + 381, 508, // 390 + 256, 386, // 392 + 256, 508, // 394 + 130, 509, // 396 + 380, 509, // 398 + 380, 386, // 400 + 258, 253, // 402 + 510, 253, // 404 + 510, 114, // 406 + 354, 3, // 408 + 354, 115, // 410 + 510, 3, // 412 + 258, 3, // 414 + 507, 252, // 416 + 255, 2, // 418 + 255, 252, // 420 + 510, 3, // 422 + 376, 511, // 424 + 376, 386, // 426 + 253, 386, // 428 + 510, 254, // 430 + 258, 3, // 432 + 475, 112, // 434 + 475, 3, // 436 + 354, 254, // 438 + 509, 117, // 440 + 509, 2, // 442 + 259, 2, // 444 + 191, 321, // 446 + 254, 258, // 448 + 128, 258, // 450 + 252, 259, // 452 + 131, 259, // 454 + 192, 320, // 456 + 260, 16, // 458 + 442, 16, // 460 + 442, 211, // 462 + 260, 255, // 464 + 259, 254, // 466 + 509, 255, // 468 + 509, 211, // 470 + 245, 319, // 472 + 190, 264, // 474 + 135, 319, // 476 + 509, 209, // 478 + 443, 209, // 480 + 509, 253, // 482 + 259, 253, // 484 + 259, 16, // 486 + 443, 16, // 488 + 354, 15, // 490 + 260, 350, // 492 + 312, 350, // 494 + 260, 264, // 496 + 509, 264, // 498 + 381, 434, // 500 + 163, 324, // 502 + 222, 386, // 504 + 259, 15, // 506 + 507, 2, // 508 + 259, 117, // 510 + 386, 253, // 512 + 510, 2, // 514 + 260, 2, // 516 + 510, 0, // 518 + 510, 261, // 520 + 253, 327, // 522 + 259, 16, // 524 + 466, 350, // 526 + 387, 386, // 528 + 387, 388, // 530 + 510, 390, // 532 + 511, 388, // 534 + 381, 386, // 536 + 130, 386, // 538 + 258, 112, // 540 + 509, 251, // 542 + 351, 1, // 544 + 351, 251, // 546 + 509, 1, // 548 + 509, 352, // 550 + 261, 259, // 552 + 261, 352, // 554 + 509, 260, // 556 + 261, 351, // 558 + 509, 351, // 560 + 509, 259, // 562 + 261, 260, // 564 + 127, 125, // 566 + 3, 249, // 568 + 3, 1, // 570 + 127, 1, // 572 + 125, 126, // 574 + 1, 250, // 576 + 1, 2, // 578 + 125, 254, // 580 + 125, 129, // 582 + 1, 254, // 584 + 126, 128, // 586 + 1, 128, // 588 + 1, 252, // 590 + 130, 1, // 592 + 130, 125, // 594 + 254, 125, // 596 + 126, 386, // 598 + 2, 510, // 600 + 2, 262, // 602 + 1, 129, // 604 + 126, 510, // 606 + 125, 250, // 608 + 127, 249, // 610 + 254, 1, // 612 + 126, 252, // 614 + 253, 130, // 616 + 129, 130, // 618 + 129, 254, // 620 + 253, 254, // 622 + 387, 448, // 624 + 508, 448, // 626 + 508, 386, // 628 + 387, 446, // 630 + 508, 446, // 632 + 508, 388, // 634 + 381, 511, // 636 + 131, 434, // 638 + 131, 511, // 640 + 510, 350, // 642 + 302, 261, // 644 + 259, 350, // 646 + 259, 252, // 648 + 511, 252, // 650 + 511, 15, // 652 + 259, 352, // 654 + 404, 352, // 656 + 317, 258, // 658 + 259, 258, // 660 + 130, 259, // 662 + 191, 320, // 664 + 253, 259, // 666 + 259, 261, // 668 + 253, 382, // 670 + 129, 327, // 672 + 129, 382, // 674 + 477, 210, // 676 + 477, 15, // 678 + 354, 210, // 680 + 222, 509, // 682 + 352, 509, // 684 + 352, 386, // 686 + 191, 321, // 688 + 254, 258, // 690 + 128, 258, // 692 + 260, 16, // 694 + 442, 16, // 696 + 442, 211, // 698 + 260, 255, // 700 + 509, 255, // 702 + 354, 15, // 704 + 260, 350, // 706 + 312, 350, // 708 + 260, 264, // 710 + 509, 264, // 712 + 381, 434, // 714 + 222, 386, // 716 + 259, 15, // 718 + 510, 261, // 720 + 253, 327, // 722 + 466, 350, // 724 + 387, 386, // 726 + 387, 388, // 728 + 509, 251, // 730 + 351, 1, // 732 + 351, 251, // 734 + 509, 1, // 736 + 509, 352, // 738 + 261, 259, // 740 + 261, 352, // 742 + 509, 260, // 744 + 261, 351, // 746 + 509, 351, // 748 + 509, 259, // 750 + 261, 260 // 752 +}; // cityUVs + +#define CITY_UV_INDEX_COUNT 197 +const S3L_Index cityUVIndices[CITY_UV_INDEX_COUNT * 3] = { + 0, 1, 2, // 0 + 3, 4, 5, // 3 + 6, 7, 8, // 6 + 9, 10, 11, // 9 + 0, 2, 12, // 12 + 13, 14, 15, // 15 + 16, 17, 18, // 18 + 16, 19, 17, // 21 + 11, 20, 9, // 24 + 10, 9, 21, // 27 + 14, 22, 15, // 30 + 16, 18, 23, // 33 + 5, 24, 3, // 36 + 25, 26, 27, // 39 + 28, 29, 30, // 42 + 31, 32, 33, // 45 + 34, 35, 36, // 48 + 37, 38, 39, // 51 + 40, 41, 42, // 54 + 43, 44, 45, // 57 + 42, 46, 40, // 60 + 47, 48, 49, // 63 + 50, 46, 42, // 66 + 51, 52, 53, // 69 + 45, 44, 54, // 72 + 51, 53, 31, // 75 + 55, 56, 57, // 78 + 54, 44, 58, // 81 + 59, 60, 61, // 84 + 62, 63, 64, // 87 + 64, 63, 65, // 90 + 65, 63, 66, // 93 + 63, 67, 66, // 96 + 31, 53, 32, // 99 + 47, 68, 48, // 102 + 25, 69, 26, // 105 + 28, 30, 70, // 108 + 34, 71, 35, // 111 + 37, 39, 72, // 114 + 55, 73, 56, // 117 + 74, 75, 76, // 120 + 74, 77, 75, // 123 + 78, 79, 80, // 126 + 81, 82, 83, // 129 + 84, 81, 83, // 132 + 85, 86, 87, // 135 + 87, 88, 85, // 138 + 89, 90, 91, // 141 + 92, 93, 94, // 144 + 95, 96, 97, // 147 + 98, 99, 100, // 150 + 101, 102, 103, // 153 + 104, 105, 106, // 156 + 107, 108, 109, // 159 + 78, 80, 110, // 162 + 111, 112, 113, // 165 + 114, 115, 116, // 168 + 114, 117, 115, // 171 + 109, 118, 107, // 174 + 90, 119, 91, // 177 + 102, 101, 120, // 180 + 108, 107, 121, // 183 + 112, 122, 113, // 186 + 114, 116, 123, // 189 + 100, 124, 98, // 192 + 88, 87, 125, // 195 + 81, 126, 82, // 198 + 97, 127, 95, // 201 + 94, 128, 92, // 204 + 129, 130, 131, // 207 + 131, 132, 129, // 210 + 133, 134, 135, // 213 + 136, 137, 138, // 216 + 139, 140, 141, // 219 + 142, 143, 144, // 222 + 145, 146, 147, // 225 + 148, 149, 150, // 228 + 151, 152, 153, // 231 + 154, 155, 156, // 234 + 157, 158, 159, // 237 + 160, 161, 162, // 240 + 163, 164, 165, // 243 + 166, 167, 168, // 246 + 169, 170, 171, // 249 + 172, 173, 174, // 252 + 172, 174, 175, // 255 + 176, 177, 178, // 258 + 165, 164, 179, // 261 + 180, 181, 182, // 264 + 183, 184, 185, // 267 + 186, 187, 188, // 270 + 189, 190, 191, // 273 + 192, 193, 194, // 276 + 195, 196, 197, // 279 + 198, 199, 200, // 282 + 201, 202, 203, // 285 + 204, 205, 206, // 288 + 203, 207, 201, // 291 + 208, 209, 210, // 294 + 211, 207, 203, // 297 + 212, 213, 214, // 300 + 206, 205, 215, // 303 + 212, 214, 192, // 306 + 216, 217, 218, // 309 + 215, 205, 219, // 312 + 220, 221, 222, // 315 + 223, 224, 225, // 318 + 226, 227, 228, // 321 + 229, 230, 231, // 324 + 231, 232, 229, // 327 + 233, 180, 182, // 330 + 232, 231, 234, // 333 + 235, 234, 231, // 336 + 236, 237, 238, // 339 + 239, 240, 241, // 342 + 241, 240, 242, // 345 + 242, 240, 243, // 348 + 240, 244, 243, // 351 + 187, 245, 188, // 354 + 246, 247, 248, // 357 + 247, 249, 248, // 360 + 160, 250, 161, // 363 + 166, 168, 251, // 366 + 189, 191, 252, // 369 + 192, 214, 193, // 372 + 169, 171, 253, // 375 + 208, 254, 209, // 378 + 220, 222, 255, // 381 + 148, 256, 149, // 384 + 151, 257, 152, // 387 + 154, 156, 258, // 390 + 157, 259, 158, // 393 + 163, 260, 164, // 396 + 183, 261, 184, // 399 + 180, 262, 181, // 402 + 249, 247, 263, // 405 + 133, 135, 264, // 408 + 136, 138, 265, // 411 + 139, 141, 266, // 414 + 142, 267, 143, // 417 + 195, 268, 196, // 420 + 198, 200, 269, // 423 + 216, 270, 217, // 426 + 271, 272, 273, // 429 + 271, 274, 272, // 432 + 275, 276, 277, // 435 + 278, 279, 280, // 438 + 275, 281, 276, // 441 + 278, 282, 279, // 444 + 283, 284, 285, // 447 + 286, 283, 285, // 450 + 287, 288, 289, // 453 + 290, 291, 292, // 456 + 293, 294, 295, // 459 + 296, 297, 298, // 462 + 299, 300, 301, // 465 + 291, 302, 292, // 468 + 300, 299, 303, // 471 + 288, 287, 304, // 474 + 283, 305, 284, // 477 + 298, 306, 296, // 480 + 295, 307, 293, // 483 + 308, 309, 310, // 486 + 310, 311, 308, // 489 + 312, 313, 314, // 492 + 315, 316, 317, // 495 + 318, 319, 320, // 498 + 321, 322, 323, // 501 + 324, 325, 326, // 504 + 327, 328, 329, // 507 + 327, 329, 330, // 510 + 331, 332, 333, // 513 + 323, 322, 334, // 516 + 335, 336, 337, // 519 + 338, 339, 340, // 522 + 341, 342, 343, // 525 + 344, 345, 346, // 528 + 347, 348, 349, // 531 + 349, 350, 347, // 534 + 350, 349, 351, // 537 + 339, 352, 340, // 540 + 353, 354, 355, // 543 + 354, 356, 355, // 546 + 318, 357, 319, // 549 + 341, 343, 358, // 552 + 324, 326, 359, // 555 + 321, 360, 322, // 558 + 335, 361, 336, // 561 + 356, 354, 362, // 564 + 312, 314, 363, // 567 + 315, 317, 364, // 570 + 365, 366, 367, // 573 + 365, 368, 366, // 576 + 369, 370, 371, // 579 + 372, 373, 374, // 582 + 369, 375, 370, // 585 + 372, 376, 373 // 588 +}; // cityUVIndices + +S3L_Model3D cityModel; + +void cityModelInit() +{ + S3L_model3DInit( + cityVertices, + CITY_VERTEX_COUNT, + cityTriangleIndices, + CITY_TRIANGLE_COUNT, + &cityModel); +} + +#endif // guard diff --git a/src/cityTexture.h b/src/cityTexture.h new file mode 100644 index 0000000..176004f --- /dev/null +++ b/src/cityTexture.h @@ -0,0 +1,8890 @@ +#ifndef CITY_TEXTURE_H +#define CITY_TEXTURE_H + +#define CITY_TEXTURE_WIDTH 256 +#define CITY_TEXTURE_HEIGHT 256 + +const uint8_t cityTexture[196608] = { +35,24,34,62,46,59,38,32,37,38,23,38,37,30,41,66,47,64,41,25,44,40,29,41,39,25, +44,68,47,67,41,26,43,41,24,41,39,28,40,68,47,66,41,37,41,41,29,40,40,21,38,69, +48,73,42,26,41,41,26,43,40,28,39,69,52,66,42,36,41,41,26,41,40,33,43,69,50,66, +42,27,46,41,30,42,40,25,46,69,48,68,42,27,44,41,25,41,40,29,41,69,48,66,42,38, +41,41,25,43,40,22,41,69,48,66,42,27,43,41,25,40,40,22,39,69,48,70,42,27,41,41, +27,43,40,28,39,69,52,66,42,36,41,41,26,41,40,33,43,69,50,66,42,27,46,41,30,42, +40,25,46,69,48,68,42,27,41,41,27,43,40,28,39,69,52,66,42,36,41,41,26,41,40,33, +43,69,50,66,42,27,46,41,30,42,40,25,46,69,48,68,30,18,31,29,17,29,28,20,29,50, +34,48,43,39,42,109,107,112,74,54,72,78,58,75,124,121,126,54,31,52,24,22,40,171, +169,88,27,24,37,41,38,42,40,39,51,40,38,50,39,37,40,39,37,49,39,38,38,53,46,65, +51,46,60,51,60,59,51,46,51,51,51,51,51,47,58,51,47,58,51,47,52,51,47,61,51,47, +52,51,57,57,51,48,51,51,48,51,51,50,51,51,52,51,51,55,61,51,47,52,51,46,51,51, +64,51,51,47,51,51,57,56,53,53,60,39,46,38,39,41,39,39,45,39,40,39,40,41,46,41, +41,40,50,28,35,45,162,159,102,28,59,43,66,39,64,74,65,74,70,63,73,109,86,108,70, +49,69,69,53,68,64,50,66,92,70,92,55,38,54,52,39,51,47,37,50,75,56,75,97,97,100, +104,103,106,111,110,112,114,113,116,125,126,127,130,128,133,127,127,129,131,130, +132,131,130,133,129,129,131,129,129,131,129,128,130,132,131,133,132,132,134,131, +130,133,132,131,133,132,131,133,132,132,134,132,131,133,129,129,131,128,127,130, +129,129,131,133,132,137,129,129,133,129,129,133,129,129,131,134,132,137,132,131, +133,133,132,136,136,135,138,135,133,137,137,137,138,135,133,137,132,132,134,137, +137,138,135,133,137,135,133,137,133,132,136,133,132,136,138,137,138,136,135,138, +132,132,134,130,132,137,135,133,137,137,136,138,133,132,136,133,132,136,132,132, +134,136,133,138,129,129,133,131,130,133,133,132,136,129,129,133,132,131,133,129, +129,133,132,131,133,129,129,133,132,132,134,132,131,133,133,132,136,137,135,138, +132,132,134,136,133,138,129,129,133,132,131,133,133,132,137,132,131,133,131,130, +133,131,130,133,129,129,133,136,133,138,135,133,137,132,132,134,132,131,133,137, +136,138,138,137,141,132,132,134,132,131,133,129,129,133,131,130,133,129,129,131, +129,129,133,132,131,133,129,129,133,129,129,131,128,127,130,129,129,133,128,127, +130,127,126,129,129,129,134,128,127,130,129,129,133,134,132,137,129,129,133,138, +137,138,133,132,136,131,130,133,129,129,133,133,132,133,129,129,133,128,127,130, +129,129,133,131,130,133,129,128,130,131,130,133,129,128,130,128,127,130,126,124, +128,127,126,129,129,130,134,127,126,129,130,130,132,126,124,128,133,132,134,132, +131,133,132,132,134,129,129,131,129,129,131,132,131,133,129,128,130,131,130,133, +129,129,131,132,132,134,135,133,137,133,132,136,132,132,134,133,132,136,136,135, +138,61,43,61,99,97,102,38,27,37,68,49,68,68,51,67,108,108,110,43,25,42,74,54,72, +72,55,75,111,109,113,44,26,43,75,56,78,73,59,73,111,109,118,44,26,43,76,55,75, +74,61,74,113,113,118,44,26,45,76,56,74,74,53,74,113,111,115,45,33,44,77,56,77, +74,56,74,113,113,115,45,27,44,77,56,74,74,56,77,113,111,115,45,27,44,77,57,80, +74,60,74,113,111,120,45,27,44,77,56,74,74,53,72,113,112,120,45,30,45,77,56,74, +74,53,74,113,115,115,45,27,45,77,56,74,74,53,74,113,111,115,45,33,44,77,56,77, +74,56,74,113,113,115,45,27,44,77,56,74,74,56,77,113,111,115,45,27,45,77,56,74, +74,53,74,113,111,115,45,33,44,77,56,77,74,56,74,113,113,115,45,27,44,77,56,74, +74,56,77,113,111,115,32,19,31,55,41,57,54,43,54,78,77,81,46,27,45,116,114,118, +79,59,77,83,62,80,129,126,131,56,32,54,24,23,41,172,170,89,27,24,38,40,38,42,41, +39,51,40,38,50,39,37,40,39,37,49,39,38,38,53,46,65,51,46,60,51,60,59,51,59,51, +51,48,51,51,47,51,51,56,51,51,47,52,51,47,62,51,47,52,51,48,51,51,51,61,51,51, +51,51,49,52,51,48,51,51,47,51,51,47,58,51,51,51,51,46,51,51,60,59,51,46,60,53, +46,65,39,38,38,39,37,49,39,37,40,40,38,49,41,39,51,41,39,42,28,25,39,179,177,95, +28,26,46,66,39,64,154,151,156,107,81,104,107,80,104,150,148,152,103,77,105,101, +75,106,57,54,58,126,124,128,80,59,82,79,58,83,46,44,47,102,100,104,108,107,110, +114,114,116,117,116,119,123,123,125,126,126,130,127,126,129,132,131,133,129,128, +131,130,130,134,130,130,132,129,128,131,130,130,134,130,130,134,134,133,137,130, +130,134,130,130,134,137,136,139,134,133,137,132,131,134,130,129,131,130,129,131, +136,134,138,132,131,134,132,131,134,132,131,134,130,130,134,134,133,137,134,133, +137,138,137,139,132,132,133,137,136,139,133,132,134,136,134,138,138,137,139,133, +132,137,139,138,141,136,134,138,137,136,139,133,132,137,139,138,141,138,137,139, +136,134,138,136,134,138,137,136,139,141,141,143,141,140,143,133,133,135,136,134, +138,132,131,134,129,130,134,136,134,138,134,133,137,133,132,134,132,131,134,140, +139,142,133,132,134,133,133,135,133,133,135,129,129,134,137,136,139,133,132,134, +133,132,134,134,133,137,129,128,131,133,132,134,133,132,134,133,133,135,133,132, +134,130,130,134,132,131,134,134,133,137,133,133,135,133,132,134,138,137,139,139, +138,141,137,136,139,134,133,137,133,132,134,136,134,138,132,131,134,130,130,134, +133,132,134,134,133,135,128,127,130,130,130,134,130,130,134,128,127,130,127,125, +129,130,130,134,130,129,131,133,132,134,133,132,134,132,131,134,140,139,142,136, +134,138,133,132,134,132,131,134,129,128,131,129,128,131,130,129,131,130,130,134, +133,132,134,133,132,134,132,131,134,130,130,134,133,132,134,128,127,130,128,127, +130,129,128,131,127,125,129,127,125,129,128,127,130,130,129,131,132,131,134,134, +132,134,130,130,134,130,129,131,133,132,134,130,129,131,132,131,134,130,130,134, +133,132,134,134,133,137,136,134,138,134,133,137,134,133,137,133,133,135,61,42, +63,101,102,103,39,23,37,71,50,68,72,50,69,115,116,121,46,26,51,80,59,77,79,54, +77,119,118,126,48,35,46,82,62,79,80,56,76,120,118,124,48,27,46,82,61,79,80,59, +79,121,121,123,49,35,50,83,60,80,81,57,83,122,123,124,49,30,47,84,60,81,81,57, +78,122,123,128,49,28,54,84,62,81,81,56,80,122,121,128,49,36,47,84,64,81,81,57, +78,122,120,126,49,28,47,84,60,81,81,56,78,122,121,126,49,31,47,84,66,85,81,57, +78,122,120,127,49,36,50,84,60,81,81,57,84,122,123,124,49,30,47,84,60,81,81,57, +78,122,123,128,49,28,54,84,62,81,81,56,80,122,121,128,49,36,50,84,60,81,81,57, +84,122,123,124,49,30,47,84,60,81,81,57,78,122,123,128,49,28,54,84,62,81,81,56, +80,122,121,128,35,25,34,61,46,59,59,41,56,86,85,88,50,28,48,123,121,125,85,61, +82,88,66,94,135,132,141,58,34,57,25,30,42,174,172,93,27,30,39,40,41,41,41,40,45, +40,50,41,39,37,39,39,44,39,39,38,38,53,46,67,51,61,51,51,46,52,51,51,51,51,47, +51,51,48,51,51,62,51,51,51,57,51,47,55,51,50,55,51,47,51,51,48,52,51,58,51,51, +61,51,51,47,51,51,47,65,51,47,51,51,48,51,51,59,51,51,46,52,51,61,51,52,46,67, +39,38,38,39,44,39,39,37,39,40,50,41,41,39,45,41,42,42,27,31,40,179,177,97,28,32, +46,66,39,64,154,151,160,106,81,113,106,77,102,149,147,151,102,72,98,102,74,100, +57,36,59,129,127,131,83,57,79,82,59,80,48,29,49,83,82,83,89,88,89,102,100,102, +105,104,106,104,103,105,108,106,108,107,107,108,106,104,107,108,109,109,107,105, +109,110,109,111,108,107,109,112,110,111,112,110,111,106,105,109,76,76,77,116, +114,116,113,112,114,115,114,116,113,113,114,108,108,109,108,108,109,114,113,115, +112,113,113,113,113,113,110,109,112,111,109,111,115,114,115,117,115,118,117,117, +118,115,113,115,109,109,111,76,76,77,113,113,114,124,122,124,117,116,118,124, +122,123,119,118,120,113,112,114,116,114,117,119,118,120,120,119,121,121,121,122, +120,119,121,112,111,113,119,118,120,108,107,109,78,78,80,122,121,123,113,112, +114,117,115,118,117,117,118,112,112,113,111,109,111,111,109,111,117,115,118,117, +115,118,118,117,119,119,118,120,114,113,115,118,117,119,112,112,113,117,117,118, +109,109,111,74,74,76,112,110,112,110,109,113,109,108,110,117,115,118,111,109, +111,108,108,109,112,112,113,117,117,118,112,111,113,120,119,121,114,113,115,113, +112,114,112,112,113,112,111,113,111,109,111,113,112,114,112,110,111,103,102,105, +76,76,77,112,110,112,111,110,113,109,108,110,107,105,108,107,105,108,108,109, +109,104,104,106,114,113,115,115,114,116,114,113,115,114,113,115,112,112,113,119, +118,120,115,114,116,103,106,110,73,73,74,112,110,112,118,117,119,114,113,115, +118,117,119,111,109,111,117,115,118,114,113,115,104,103,105,104,103,105,109,108, +110,103,102,104,105,104,106,109,109,110,104,104,105,105,104,106,76,76,77,114, +112,114,113,112,114,113,112,114,111,109,113,113,112,114,113,113,114,113,112,114, +108,108,109,112,111,113,112,112,113,112,111,113,112,112,113,100,98,102,103,102, +110,70,52,67,113,111,116,118,116,120,122,120,124,86,61,83,128,126,130,128,126, +134,129,130,131,89,66,88,130,128,132,129,128,131,130,127,135,90,64,86,131,131, +133,130,129,135,131,130,133,91,64,87,132,130,134,131,129,133,131,130,138,91,68, +88,132,130,135,131,129,134,131,129,134,91,65,88,132,130,135,131,129,137,131,132, +134,91,67,90,132,130,135,131,130,134,131,129,137,91,65,88,132,130,135,131,132, +140,131,129,134,91,65,94,132,134,135,131,129,139,131,131,134,91,65,88,132,130, +135,131,129,134,131,130,138,91,68,88,132,130,135,131,129,134,131,129,134,91,65, +88,132,130,135,131,129,137,131,132,134,91,65,88,132,130,135,131,129,134,131,130, +138,91,68,88,132,130,135,131,129,134,131,129,134,91,65,88,132,130,135,131,129, +137,131,132,134,66,48,65,94,93,95,94,93,95,94,93,97,92,65,88,132,132,136,135, +133,139,137,135,142,141,138,143,61,36,59,26,27,38,176,174,95,26,38,36,41,38,55, +40,43,49,40,46,41,39,37,39,39,38,39,39,38,38,52,47,68,51,52,58,51,47,67,51,52, +54,51,47,62,51,50,51,51,52,51,51,48,51,51,52,54,50,60,49,42,40,48,42,42,41,50, +46,59,51,47,55,51,47,51,51,52,52,51,48,51,51,47,51,51,51,51,51,47,67,51,52,58, +52,47,68,39,38,38,39,38,39,39,37,39,40,46,41,40,43,49,41,38,55,27,38,37,178,177, +97,28,29,40,28,26,29,154,151,156,152,150,157,152,150,156,150,150,154,148,146, +156,146,144,148,98,70,99,181,166,149,178,160,149,177,159,141,119,84,98,90,91,91, +100,97,101,105,105,105,106,105,107,111,110,114,119,118,119,117,113,115,117,115, +118,108,106,109,111,110,113,108,106,109,108,106,109,112,110,112,112,110,112,109, +107,111,79,79,79,115,114,116,113,113,114,114,113,115,114,113,115,109,109,110, +109,109,110,114,113,115,113,113,115,115,114,116,113,113,114,114,113,115,116,114, +119,113,112,114,115,114,116,113,114,114,107,106,110,75,75,74,121,120,122,121, +122,123,120,119,121,121,120,122,121,120,122,122,121,123,119,118,120,117,115,118, +122,122,123,120,119,121,122,121,123,115,114,116,120,119,121,114,114,115,85,85, +88,121,120,122,118,117,119,122,121,123,119,118,120,113,113,114,113,112,114,113, +113,115,115,114,119,108,109,110,117,115,118,118,117,119,117,115,118,121,120,122, +115,114,116,121,120,122,112,111,114,81,81,83,111,110,112,109,108,110,114,114, +116,114,113,115,116,115,117,114,113,115,118,117,121,121,120,122,114,113,116,118, +117,119,123,122,124,117,117,118,115,114,116,114,113,115,110,109,111,113,114,114, +114,112,114,110,110,112,81,81,83,116,115,117,104,103,105,115,114,117,110,109, +111,110,109,111,114,113,115,112,110,112,118,118,119,113,112,114,109,107,110,119, +118,120,115,114,116,117,117,118,118,115,119,105,107,111,80,80,81,114,114,116, +117,115,118,118,117,119,119,119,121,113,112,114,109,107,110,113,114,114,108,106, +109,114,113,115,114,113,115,110,109,111,113,110,112,114,114,115,111,109,112,102, +103,105,80,80,82,110,109,111,109,109,110,114,114,115,105,105,106,109,108,110, +112,110,112,113,112,114,113,112,114,113,112,114,115,114,116,117,115,118,120,119, +121,37,26,37,68,50,65,45,38,44,48,30,48,50,41,54,89,65,86,58,38,62,58,43,59,57, +38,64,96,68,94,60,40,63,60,37,60,58,43,59,97,68,93,61,55,60,35,29,45,30,22,44, +58,53,82,61,40,60,60,41,63,59,42,58,98,74,94,62,53,61,61,40,61,59,49,63,98,72, +94,62,41,66,61,45,62,59,39,66,98,70,96,62,41,64,61,38,61,59,43,60,98,69,94,62, +56,61,61,38,63,59,34,61,98,70,94,62,41,63,61,38,59,59,34,57,98,70,99,62,41,61, +61,41,63,59,42,58,98,74,94,62,53,61,61,40,61,59,49,63,98,72,94,62,41,66,61,45, +62,59,39,66,98,70,96,62,41,61,61,41,63,59,42,58,98,74,94,62,53,61,61,40,61,59, +49,63,98,72,94,62,41,66,61,45,62,59,39,66,98,70,96,62,41,64,61,38,61,59,43,60, +98,69,95,62,56,61,98,71,94,60,35,65,62,37,61,105,81,102,63,37,61,27,25,51,176, +175,96,27,30,45,41,39,44,40,40,39,40,38,40,39,40,42,39,58,41,38,41,37,52,47,51, +51,58,60,51,47,59,51,47,52,51,47,52,51,47,51,51,55,51,51,60,51,51,47,51,42,51, +41,170,169,170,170,168,170,42,50,46,51,47,58,51,47,51,51,47,57,51,50,51,51,47, +62,51,52,54,51,47,59,51,58,60,52,47,51,38,41,37,39,58,41,39,40,42,40,38,40,40, +40,39,41,39,44,27,29,45,178,176,98,28,26,53,35,36,48,112,86,109,67,41,66,66,39, +71,107,78,103,88,77,88,94,70,91,99,74,97,186,169,153,128,94,108,130,94,110,85, +76,71,100,100,101,100,99,101,109,109,110,109,108,113,112,111,113,115,115,117, +112,111,113,113,113,114,110,109,111,103,102,103,106,105,107,109,110,110,108,106, +109,109,109,111,110,109,111,75,75,76,110,110,111,113,112,114,110,109,111,113, +114,114,109,109,110,113,114,114,112,110,112,110,109,111,113,113,114,118,115,119, +113,112,114,109,109,110,109,108,110,112,110,112,108,106,109,106,105,107,80,80, +81,113,111,113,117,117,118,117,117,118,121,120,122,117,117,118,117,117,118,117, +115,118,117,115,118,117,117,118,121,121,122,120,119,121,114,113,115,120,119,121, +114,113,115,85,85,88,122,121,123,118,117,119,117,117,118,121,120,122,113,112, +114,114,113,115,118,115,118,115,114,116,113,113,114,113,113,114,121,120,122,118, +117,119,118,117,119,115,114,116,119,118,120,111,110,113,76,76,78,115,114,116, +116,115,117,112,110,112,114,113,115,110,109,111,110,109,111,118,117,119,123,122, +124,119,118,120,125,123,125,120,119,121,118,117,119,121,120,122,107,105,108,112, +110,112,108,106,109,114,114,116,102,102,104,80,80,81,110,110,111,105,104,106, +110,109,111,109,108,110,110,109,111,109,108,110,113,112,114,113,113,114,119,118, +120,113,113,114,114,113,115,118,117,119,115,114,116,118,118,119,102,102,104,75, +75,75,115,114,116,114,113,115,115,114,116,122,121,123,114,113,115,118,118,119, +114,113,115,109,109,111,105,105,106,105,104,106,108,106,109,108,106,109,109,109, +111,110,109,111,105,104,107,76,76,75,110,110,111,109,109,110,113,110,112,105, +105,106,109,108,110,109,109,110,109,108,110,108,106,109,115,114,116,112,110,112, +115,114,116,113,113,114,66,48,63,107,109,110,45,29,50,84,65,85,89,63,88,136,138, +142,60,38,60,102,76,99,102,74,104,145,143,151,63,40,73,104,78,104,103,75,101, +146,146,153,63,42,61,68,59,81,70,64,76,108,107,111,64,49,63,105,78,104,104,77, +100,146,147,148,64,42,70,106,83,107,104,74,103,146,148,153,64,40,64,106,79,103, +104,75,107,146,144,153,64,41,74,106,79,105,104,76,102,146,146,154,64,42,62,106, +79,108,104,75,100,146,145,150,64,48,65,106,82,105,104,75,105,146,144,148,64,49, +63,106,78,105,104,77,100,146,147,148,64,42,70,106,83,107,104,74,103,146,148,153, +64,40,64,106,79,103,104,75,107,146,144,153,64,49,63,106,78,105,104,77,100,146, +147,148,64,42,70,106,83,107,104,74,103,146,148,153,64,40,64,106,79,103,104,75, +107,146,144,153,64,41,74,106,79,105,104,76,102,147,147,154,64,42,62,147,145,149, +105,76,101,107,80,105,64,37,62,34,31,55,125,126,71,177,175,94,28,26,41,41,42,41, +40,39,40,40,40,40,39,37,43,39,36,47,38,53,37,52,55,52,51,51,51,51,51,52,51,47, +56,51,47,54,51,47,51,51,50,51,51,47,60,51,56,51,39,35,39,168,166,168,168,166, +170,39,41,44,51,48,52,51,47,52,51,47,58,51,47,51,51,47,52,51,47,52,51,51,52,51, +51,51,52,55,52,38,53,37,39,36,47,39,37,43,39,39,39,40,39,40,41,42,41,28,26,41, +178,176,94,127,128,71,35,32,57,28,38,28,112,84,109,110,80,106,153,151,155,109, +81,105,107,80,110,99,72,95,188,172,157,133,94,108,136,97,110,89,60,76,107,105, +109,104,103,104,109,108,110,110,110,111,112,111,113,117,118,118,117,115,118,116, +115,117,110,109,111,110,110,111,114,111,113,111,110,112,111,110,112,115,115,116, +104,103,106,77,77,79,123,122,124,119,116,120,110,110,111,114,113,115,114,113, +115,116,115,117,114,113,115,114,114,115,116,115,117,118,116,119,118,119,119,119, +116,120,116,115,117,116,114,116,117,116,118,107,106,111,79,79,80,114,112,114, +121,120,122,118,118,119,122,121,123,126,126,127,118,118,119,123,122,124,122,122, +124,126,123,126,126,126,127,120,119,121,119,118,120,126,124,126,110,110,112,80, +80,82,124,123,125,122,121,123,122,121,123,122,121,123,119,118,120,118,118,119, +118,118,119,118,116,119,114,114,115,121,120,122,124,123,125,122,121,123,123,123, +124,119,118,120,122,121,123,110,110,112,80,80,82,116,115,117,116,115,117,119, +116,120,118,116,119,120,119,121,119,119,120,115,114,116,121,120,122,123,121,124, +119,118,120,123,123,124,118,118,119,121,120,122,120,119,121,116,115,117,111,110, +113,119,119,120,103,102,104,76,76,76,115,114,116,114,113,115,117,116,118,113, +111,113,110,110,111,111,110,112,113,111,113,114,114,115,124,123,125,121,120,122, +116,115,117,123,122,124,123,122,124,118,119,119,111,111,113,75,75,75,120,119, +121,116,115,117,118,116,119,123,123,124,118,116,119,115,114,116,119,119,120,117, +115,118,110,110,112,107,106,110,112,111,112,109,107,111,115,114,116,115,115,116, +98,102,105,78,77,79,111,111,112,115,113,116,113,111,113,117,116,118,106,106,107, +111,110,112,111,110,112,109,107,110,114,114,115,119,119,120,118,116,119,122,121, +123,64,48,62,107,107,109,45,29,48,84,61,83,89,63,87,138,136,140,60,35,62,104,75, +100,102,71,98,148,146,156,63,38,62,106,77,102,103,72,102,148,147,155,64,44,66, +67,58,84,65,54,80,109,110,114,64,38,62,107,78,107,104,79,100,149,149,151,64,43, +69,107,78,105,104,74,102,149,147,151,64,38,66,107,77,103,104,73,100,149,147,157, +64,39,63,107,77,103,104,73,103,149,148,155,64,44,66,107,77,103,104,73,102,149, +147,155,64,41,62,107,77,109,104,73,105,149,147,153,64,38,62,107,78,107,104,79, +100,149,149,151,64,43,69,107,78,105,104,74,102,149,147,151,64,38,66,107,77,103, +104,73,100,149,147,157,64,38,62,107,78,107,104,79,100,149,149,151,64,43,69,107, +78,105,104,74,102,149,147,151,64,38,66,107,77,103,104,73,100,149,147,157,64,39, +63,107,77,103,104,73,103,149,148,155,64,44,66,147,148,149,107,79,109,127,98,124, +36,36,36,32,29,39,124,123,69,124,124,71,35,34,40,41,39,41,40,39,39,39,37,39,39, +40,39,39,36,39,37,51,37,52,47,51,51,51,54,51,66,58,51,47,57,51,47,51,51,46,51, +51,65,51,51,54,62,51,48,50,39,38,63,168,167,168,168,166,169,39,35,44,51,56,55, +51,51,58,51,56,52,51,47,51,51,47,54,51,47,56,51,66,58,51,51,54,52,47,51,37,51, +37,39,36,39,39,40,39,39,37,39,40,39,39,40,39,40,35,33,40,125,125,70,125,124,70, +33,30,40,37,37,37,124,95,121,110,81,112,150,151,152,112,89,109,118,98,119,133, +130,137,191,177,162,191,175,164,191,175,159,139,99,116,74,74,76,74,74,76,77,77, +78,75,75,76,75,75,76,80,80,81,80,80,81,81,81,82,81,82,82,78,78,80,82,82,83,75, +75,76,77,77,77,76,76,77,82,82,83,82,82,83,81,81,83,83,83,85,80,80,81,80,80,81, +81,81,83,76,76,77,82,82,84,78,78,80,80,80,81,80,80,81,80,80,81,81,81,83,80,80, +81,77,77,78,77,77,77,81,81,82,78,78,79,81,82,83,81,81,82,80,80,81,85,85,87,84, +84,85,83,83,85,82,82,84,86,86,89,83,84,84,89,89,93,90,90,90,83,83,85,80,81,83, +85,85,85,87,87,91,86,86,89,84,84,85,83,83,85,84,84,85,87,86,91,90,90,91,84,84, +85,83,83,85,76,76,77,81,81,82,81,81,83,81,81,83,81,81,83,83,83,85,90,90,91,85, +85,85,82,82,84,81,81,83,81,81,82,78,78,80,78,78,80,81,81,83,81,81,82,83,83,85, +83,83,85,81,81,82,82,82,84,83,83,85,82,82,84,85,84,90,81,81,82,83,83,85,86,85, +90,77,77,77,76,76,77,78,78,78,76,76,77,77,77,78,78,78,80,77,77,77,80,80,81,80, +80,81,77,77,77,77,77,77,81,81,83,80,80,81,77,78,80,82,82,84,81,81,83,81,81,83, +81,81,82,78,78,78,81,81,84,80,80,81,75,75,76,81,81,82,80,80,81,77,77,77,78,78, +80,81,81,82,80,80,81,77,77,77,73,73,73,64,67,68,70,70,71,76,76,77,77,76,77,76, +76,77,74,74,75,77,77,77,77,77,77,73,73,74,78,78,81,76,76,77,81,81,82,77,77,78, +78,78,80,74,74,75,81,81,82,81,81,83,104,103,106,109,107,111,78,54,75,126,124, +131,134,132,141,141,138,143,103,79,102,150,147,157,150,150,152,151,148,153,108, +76,111,153,150,155,152,150,158,152,150,154,108,80,111,113,113,117,112,115,118, +113,113,115,108,81,104,153,153,155,152,151,154,152,150,154,108,77,104,153,151, +158,152,150,159,152,149,154,108,83,107,153,150,160,152,152,154,152,149,154,108, +77,111,153,150,155,152,150,158,152,150,154,108,80,111,153,150,157,152,149,156, +152,151,154,108,81,104,153,150,155,152,150,154,152,151,157,108,81,104,153,153, +155,152,151,154,152,150,154,108,77,104,153,151,158,152,150,159,152,149,154,108, +83,107,153,150,160,152,152,154,152,149,154,108,81,104,153,153,155,152,151,154, +152,150,154,108,77,104,153,151,158,152,150,159,152,149,154,108,83,107,153,150, +160,152,152,154,152,149,154,108,77,111,153,150,155,152,150,158,152,150,154,108, +80,111,109,80,111,124,92,126,28,26,39,37,41,41,28,26,38,180,179,94,29,27,48,41, +43,43,40,59,42,40,42,39,39,37,48,39,54,44,38,35,52,52,52,52,51,58,55,51,48,55, +51,47,51,51,47,51,51,53,52,51,58,55,51,47,58,51,52,59,51,49,52,39,35,47,168,167, +170,168,167,168,39,37,47,51,52,61,51,52,52,51,51,59,51,46,51,51,47,51,51,47,57, +51,47,51,51,48,55,51,58,55,52,52,52,38,35,52,39,54,44,39,37,48,40,42,39,40,59, +42,41,43,43,29,27,48,179,179,94,28,25,38,37,41,41,28,25,39,118,87,120,110,81, +112,133,121,133,110,101,112,81,55,82,107,77,103,64,43,62,66,44,65,66,52,66,67, +67,69,62,62,65,63,63,66,59,59,61,63,63,65,63,62,64,62,61,63,67,67,71,61,60,62, +61,60,62,62,62,64,60,59,60,60,59,61,62,62,63,67,67,68,61,61,63,67,66,68,69,68, +72,63,62,64,61,61,63,61,61,63,67,66,68,69,68,72,63,63,65,68,68,71,68,68,71,64, +64,67,61,61,63,67,66,69,64,64,67,62,61,63,66,66,68,67,67,70,64,63,66,63,62,64, +64,63,67,69,69,69,69,69,69,65,65,68,66,65,69,68,68,70,71,70,73,69,69,72,68,66, +69,66,65,68,67,67,70,67,67,70,68,68,70,72,70,75,67,67,70,67,67,70,66,66,69,67, +67,70,69,69,72,67,66,70,68,68,70,67,67,70,66,65,69,66,65,67,66,66,67,68,68,70, +66,65,67,69,69,70,69,69,72,66,66,68,70,70,74,66,66,69,67,66,68,62,61,63,62,62, +64,61,61,62,64,63,66,66,66,67,69,68,70,66,65,69,67,67,70,69,68,70,68,67,70,63, +63,64,68,68,71,69,68,70,63,63,64,61,61,62,65,64,68,61,60,62,61,60,62,63,63,65, +62,62,64,63,63,65,64,64,67,63,63,65,62,61,62,66,66,68,62,62,64,67,67,70,62,62, +64,64,63,66,70,68,72,61,61,63,62,62,64,62,61,62,66,66,69,66,66,69,66,66,69,62, +62,64,67,66,69,67,66,71,58,58,58,62,62,62,63,63,65,58,58,59,59,59,59,60,60,62, +62,62,64,67,64,70,62,62,62,61,61,63,60,60,62,58,58,59,62,62,63,63,63,65,59,59, +61,62,61,63,63,63,64,61,61,62,63,63,64,63,62,64,62,62,64,39,24,38,41,33,44,77, +54,74,53,36,55,56,36,56,60,48,63,103,73,99,36,32,53,35,29,56,35,25,49,68,58,86, +66,41,65,65,48,63,108,80,107,68,46,71,66,42,65,65,49,63,108,80,107,68,46,71,111, +82,108,109,82,105,153,151,155,109,79,105,109,83,110,153,151,155,67,43,67,111,88, +108,109,82,112,153,151,155,67,51,69,111,86,108,109,81,105,153,151,157,109,79, +111,109,80,111,36,30,57,71,61,87,69,58,84,114,114,116,109,80,105,109,78,108,153, +154,160,67,43,66,111,83,115,109,79,105,153,153,157,109,80,105,109,81,107,153, +152,157,67,50,77,111,88,108,109,80,105,153,151,155,67,47,69,111,85,108,109,79, +105,153,151,155,109,79,113,109,78,107,153,154,155,67,43,66,111,83,111,109,79, +105,153,152,158,67,52,67,111,82,112,109,79,105,153,151,155,106,77,102,109,82, +106,109,80,111,66,39,64,28,26,39,28,26,39,28,26,39,160,160,84,117,119,68,37,45, +41,40,38,45,40,37,48,39,54,38,39,37,40,39,37,41,37,36,37,52,52,52,51,47,51,51, +52,54,51,49,51,51,47,51,51,47,51,51,48,52,51,55,54,51,47,51,51,51,51,39,37,44, +168,166,170,168,166,168,39,34,39,51,47,51,51,47,51,51,47,58,51,58,55,51,53,52, +51,47,51,51,49,51,51,52,54,51,47,51,52,52,52,37,36,37,39,37,41,39,37,40,39,54, +38,40,37,48,41,38,45,37,45,41,117,119,68,160,160,84,28,25,39,28,25,39,28,26,39, +66,39,64,110,81,112,109,83,106,106,77,102,152,150,154,108,79,104,110,82,111,67, +51,67,152,158,149,148,152,146,154,157,150,156,159,151,150,154,148,154,159,151, +150,153,146,149,155,147,146,150,144,148,152,146,147,151,145,147,151,145,152,155, +149,145,146,139,151,154,148,155,159,152,150,153,146,152,154,148,152,155,149,155, +159,152,151,155,149,153,155,149,151,154,147,145,150,144,149,152,145,151,153,147, +152,154,148,152,155,149,154,156,151,151,155,149,152,156,150,155,158,152,159,161, +153,154,156,151,154,156,151,152,154,148,163,165,158,163,163,157,159,161,153,159, +159,152,153,158,151,157,160,152,152,156,150,160,163,154,155,158,152,160,160,153, +160,161,153,152,155,149,159,159,152,160,161,153,152,155,149,152,156,150,153,158, +151,159,159,152,159,161,153,158,159,152,161,161,153,160,163,155,158,161,153,155, +158,152,159,159,152,154,159,152,159,162,153,161,163,154,152,154,148,159,159,152, +159,162,153,151,153,147,151,153,147,155,158,152,162,163,155,151,155,149,159,161, +153,153,158,151,161,162,153,155,158,152,151,156,150,153,159,151,145,150,143,146, +151,144,149,152,146,151,157,151,146,150,144,149,152,146,150,153,147,149,152,146, +149,152,146,145,147,140,147,150,143,150,153,147,149,152,146,151,156,150,157,160, +151,156,161,152,159,159,151,154,160,151,155,158,151,155,158,151,156,159,151,149, +152,146,149,153,147,154,156,151,161,161,153,161,163,156,159,160,151,150,154,148, +152,155,149,150,153,147,148,150,144,155,157,152,150,152,146,147,150,144,145,147, +140,148,151,145,151,154,148,150,154,148,147,150,144,147,150,144,148,151,145,150, +152,146,150,153,147,152,156,149,151,155,149,153,156,151,154,156,151,154,156,151, +151,156,150,159,159,151,68,49,67,72,53,69,117,117,119,52,38,51,95,70,94,100,75, +97,147,147,149,39,33,49,72,62,86,68,59,86,114,114,118,110,84,114,109,85,105,153, +151,155,68,43,68,111,84,115,110,85,106,153,151,155,68,43,68,110,80,108,107,80, +103,151,149,153,107,79,103,107,75,103,152,150,154,66,39,64,110,80,106,107,77, +103,152,150,157,66,49,66,110,80,108,107,75,109,151,152,153,107,75,105,107,75, +108,37,29,49,70,61,86,64,59,90,112,113,117,107,75,107,107,81,107,152,150,154,66, +45,68,110,80,106,107,79,103,151,149,153,107,75,108,107,75,107,152,150,154,66,39, +65,110,85,111,107,78,105,152,150,160,66,50,66,110,84,111,107,76,103,151,149,153, +107,75,106,107,86,110,152,154,158,66,39,77,110,80,106,107,75,103,152,150,156,66, +46,67,110,83,110,107,79,103,152,153,154,110,81,112,124,95,121,66,39,64,33,30,40, +28,26,39,28,26,39,160,160,85,73,70,53,37,35,42,41,40,41,40,41,40,40,36,40,38,52, +38,39,37,40,39,37,46,52,46,51,51,53,51,51,47,51,51,49,51,51,50,51,51,47,55,51, +47,51,51,48,52,51,48,51,51,47,51,51,47,59,39,35,39,168,166,170,168,166,170,39, +34,39,51,47,51,51,47,52,51,51,51,51,48,52,51,47,51,51,47,51,51,50,51,51,49,51, +51,47,51,51,53,51,52,46,51,39,37,46,39,37,40,38,52,38,40,36,40,40,41,40,41,40, +41,37,35,42,73,70,53,160,160,84,28,25,39,28,25,39,33,30,40,35,35,35,113,87,110, +110,81,112,152,153,154,106,78,102,109,82,109,65,46,66,152,157,143,150,153,147, +150,153,146,148,152,146,148,151,144,153,154,148,147,150,143,145,147,142,143,145, +140,145,149,143,149,151,144,144,146,141,145,149,143,145,149,143,147,150,143,148, +152,146,147,150,143,147,151,144,150,152,146,154,157,152,150,153,147,148,151,144, +146,151,144,145,147,142,147,150,143,149,152,146,150,153,147,154,157,151,149,152, +146,147,151,145,149,153,147,155,158,151,151,154,148,149,152,146,150,153,147,150, +153,147,158,160,153,157,159,152,151,156,148,147,148,143,149,153,146,148,150,144, +151,154,148,153,159,150,149,153,147,154,157,150,148,154,148,153,156,149,149,154, +148,152,157,149,149,154,148,148,152,146,154,156,149,148,154,148,160,161,154,158, +158,150,151,154,148,158,158,150,154,157,150,151,154,148,152,157,149,148,151,145, +148,151,145,150,156,149,148,151,145,154,158,150,150,153,147,148,152,146,148,151, +145,154,157,149,153,156,149,149,154,148,152,157,149,154,157,150,157,158,150,153, +156,149,148,153,147,153,158,149,147,151,145,147,151,145,147,152,146,145,148,142, +147,150,144,146,149,143,145,149,143,145,149,143,145,149,143,142,144,137,144,145, +140,148,152,145,147,151,145,145,149,143,145,149,143,149,152,145,150,153,146,149, +152,145,147,152,145,148,151,145,148,152,145,144,144,140,151,155,149,148,152,145, +147,151,145,153,157,150,150,153,146,147,151,145,148,151,145,146,150,144,149,152, +145,150,153,146,147,152,145,151,155,148,146,149,143,144,146,141,148,151,145,149, +152,145,144,146,141,144,148,142,145,146,140,145,146,141,144,146,141,145,148,142, +149,152,145,148,152,145,147,151,145,155,157,151,147,152,145,155,156,151,66,55, +66,70,50,68,116,115,120,51,28,49,93,78,93,98,72,96,147,146,151,34,25,49,74,67, +80,66,56,82,113,116,119,108,88,108,107,76,103,153,152,155,66,49,67,108,88,108, +107,76,103,153,152,155,66,49,67,154,152,160,153,151,155,152,150,154,152,150,159, +152,150,160,152,150,159,108,76,107,154,152,159,153,151,155,152,150,154,108,79, +110,154,152,158,153,151,155,153,150,155,154,152,156,154,152,156,70,58,85,116, +115,119,113,114,120,113,114,118,154,153,156,154,151,158,154,151,156,110,78,106, +155,153,163,154,154,156,153,152,155,154,151,160,154,151,155,154,152,156,110,82, +113,155,152,157,154,155,156,154,154,156,110,85,106,155,152,157,154,153,158,153, +150,158,154,151,155,154,152,155,154,151,158,110,83,106,155,152,161,154,154,156, +154,151,156,110,82,106,155,152,159,154,151,156,157,156,163,66,39,64,37,37,41,38, +43,41,28,26,38,74,72,54,160,160,84,73,70,53,41,39,42,41,39,42,40,38,50,40,56,45, +39,36,53,53,53,53,39,52,39,38,35,37,52,62,65,51,56,52,51,47,51,51,47,68,51,47, +51,51,47,51,51,47,58,51,55,56,51,48,57,51,58,58,51,48,51,39,35,39,168,166,168, +168,166,168,39,34,47,51,47,51,51,50,51,51,47,51,51,48,52,51,47,51,51,47,55,51, +47,51,51,47,68,51,47,51,51,56,52,52,62,65,38,35,37,39,52,39,53,53,53,39,36,53, +40,56,45,40,38,50,41,39,42,41,39,42,73,70,53,160,160,84,73,71,53,28,25,38,38,42, +41,38,38,42,66,39,64,154,153,160,153,150,155,154,151,158,110,82,106,159,161,146, +151,156,148,152,159,152,148,151,145,154,158,150,152,156,148,151,158,149,151,154, +147,146,150,144,146,150,144,150,153,147,147,151,145,147,151,145,151,155,147,148, +152,146,160,160,153,150,153,147,149,154,147,151,156,148,160,161,154,159,159,152, +153,157,149,152,159,151,149,153,146,152,158,151,154,158,151,152,157,150,150,154, +148,152,154,148,150,153,147,147,151,144,149,152,145,154,158,152,148,152,145,152, +154,148,152,156,149,160,160,153,159,160,153,154,157,151,152,157,150,159,159,152, +159,161,154,152,154,148,153,158,151,152,154,148,154,159,152,159,159,152,157,160, +153,159,159,152,152,156,149,160,162,155,153,158,151,152,154,148,159,160,153,159, +159,152,150,154,148,152,154,148,150,154,148,150,154,148,154,157,151,161,160,153, +161,161,154,159,159,152,159,161,154,149,151,145,159,161,154,151,154,148,155,158, +152,151,153,147,149,152,146,151,156,149,152,157,150,159,159,152,161,163,156,160, +163,156,160,160,153,154,157,151,152,156,149,152,156,149,150,153,147,152,156,149, +151,154,148,151,154,148,151,158,150,146,146,140,145,149,144,147,153,147,145,146, +141,147,152,146,146,147,142,148,153,147,158,159,152,150,153,147,155,158,151,150, +156,148,151,158,149,151,154,147,150,154,147,149,152,146,146,149,143,147,151,145, +147,151,145,149,154,147,158,160,153,151,158,149,148,153,147,148,153,147,146,151, +145,151,157,148,150,154,147,151,156,148,152,156,148,151,154,147,152,158,150,149, +154,147,149,153,147,148,151,145,149,152,146,149,152,146,146,147,142,149,152,146, +146,150,144,146,147,142,148,151,145,149,152,146,149,154,147,149,152,146,151,154, +147,103,103,109,108,108,111,116,115,118,86,60,90,134,134,139,142,142,144,147, +146,149,64,58,90,114,113,116,112,113,117,115,115,117,153,151,159,153,151,157, +153,151,158,109,77,105,153,151,159,153,151,157,153,151,158,109,77,105,67,42,66, +64,52,65,110,79,106,109,82,105,107,76,111,152,150,156,108,78,107,110,84,106,65, +40,67,155,153,157,130,95,126,131,99,128,66,39,64,66,39,64,66,39,64,66,39,64,66, +39,64,66,39,64,66,39,64,66,39,64,66,39,64,66,39,64,66,39,64,66,39,64,66,39,64, +66,39,64,66,39,64,66,39,64,66,39,64,66,39,64,66,39,64,66,39,64,66,39,64,66,39, +64,66,39,64,66,39,64,66,39,64,66,39,64,66,39,64,66,39,64,66,39,64,66,39,64,66, +39,64,66,39,64,66,39,64,66,39,64,66,39,64,66,39,64,66,39,64,34,30,38,34,30,40, +28,26,37,179,179,96,160,160,84,73,70,53,41,38,44,41,39,42,40,47,43,40,38,41,39, +37,41,38,37,38,53,53,53,38,36,42,38,37,38,37,36,37,52,47,51,51,47,55,51,47,50, +51,47,51,51,49,66,51,47,50,51,48,52,51,51,51,51,65,51,51,56,51,42,37,41,170,168, +172,170,168,170,42,43,54,51,56,58,51,50,51,51,46,54,51,55,56,51,47,58,51,47,51, +51,47,51,51,47,50,51,47,55,52,47,51,37,36,37,38,37,38,38,36,42,53,53,53,38,37, +38,39,37,42,40,38,41,40,47,44,41,39,42,41,38,44,72,70,53,159,159,84,179,179,95, +28,25,37,33,30,40,33,30,38,28,25,28,66,39,64,66,39,64,66,39,64,154,160,150,153, +157,150,157,159,151,151,154,147,152,156,148,153,157,149,157,159,151,154,160,153, +149,153,146,151,157,148,152,159,151,147,152,145,148,150,144,150,153,146,154,158, +150,161,160,154,161,162,156,154,158,150,150,154,147,158,160,154,158,159,153,154, +158,151,157,158,151,151,156,147,153,156,149,161,162,155,152,156,149,159,161,154, +151,156,149,148,151,145,149,152,146,153,158,150,149,152,146,151,154,148,161,162, +155,153,157,150,160,162,155,160,162,155,156,160,152,152,158,150,161,161,154,162, +167,161,153,158,150,161,161,154,153,157,149,157,160,153,153,157,149,160,161,154, +161,162,155,162,162,155,161,161,154,153,158,150,161,160,153,152,158,150,154,158, +150,152,156,149,150,154,148,152,156,149,149,153,147,160,161,154,161,160,153,157, +160,153,162,163,158,153,157,149,150,154,148,150,156,149,154,158,150,154,158,150, +150,153,147,149,154,148,153,157,149,159,161,154,160,161,155,158,160,153,160,160, +153,162,162,155,156,160,152,153,159,151,150,156,148,161,161,155,158,160,153,149, +152,146,150,154,147,153,158,149,158,160,154,149,153,146,147,149,143,147,148,142, +146,148,142,150,152,146,145,145,140,158,160,154,154,157,150,151,154,147,155,160, +153,150,154,147,154,157,149,151,154,148,151,154,147,148,149,142,146,147,142,149, +151,145,150,153,146,157,161,154,151,154,148,151,154,147,152,158,151,150,154,147, +153,156,149,151,154,147,151,154,148,154,160,153,154,157,150,147,151,144,155,158, +151,153,157,150,150,153,146,152,157,150,152,154,148,150,154,147,159,161,154,152, +156,149,146,147,142,151,154,148,149,153,146,150,153,146,152,154,148,151,156,149, +39,23,40,41,30,42,78,55,75,53,35,53,57,35,58,60,44,61,104,74,100,67,45,66,67,51, +66,66,39,64,110,82,106,67,42,66,66,39,64,109,78,105,69,63,68,67,42,66,66,39,64, +109,78,105,69,63,68,110,80,115,154,153,158,64,35,62,111,83,111,110,81,113,154, +152,162,110,85,107,120,89,116,66,39,64,30,30,29,33,44,34,29,30,35,32,29,47,28, +42,47,28,26,41,28,30,41,28,46,50,28,26,52,28,26,40,28,43,38,28,26,39,28,28,55, +28,62,47,28,27,40,28,26,40,28,30,40,28,26,40,28,26,40,28,30,47,28,26,42,29,42, +47,29,27,41,29,27,54,29,38,41,29,27,46,29,27,51,29,26,39,29,26,41,29,29,44,29, +26,43,29,26,39,29,33,39,29,30,40,29,29,45,28,26,53,28,26,45,28,29,42,28,26,40, +28,28,43,128,130,74,126,125,76,180,177,98,124,123,76,28,25,44,40,53,43,41,39,46, +40,41,49,40,45,51,39,37,40,39,37,46,53,47,52,52,54,52,38,36,43,38,47,38,38,37, +37,52,48,52,51,47,60,51,47,59,51,51,58,51,47,51,51,47,58,51,55,51,51,47,56,51, +55,54,51,52,51,50,46,49,42,47,41,42,37,45,50,46,59,51,51,57,51,48,52,51,68,54, +51,48,52,51,47,50,51,49,66,51,51,58,51,47,59,51,47,60,52,48,52,38,37,37,38,47, +38,38,36,43,52,54,52,53,47,52,39,37,46,39,37,41,40,45,51,40,41,49,41,39,46,40, +53,43,28,25,44,123,122,76,179,177,97,125,123,75,126,128,73,28,28,42,28,26,39,28, +29,41,28,26,44,160,163,156,152,156,149,160,163,156,159,161,154,152,157,149,155, +160,151,159,161,153,159,162,155,154,158,149,151,155,148,158,160,153,156,160,151, +151,156,148,152,156,148,154,158,151,156,160,153,161,162,157,156,160,153,159,160, +155,159,162,158,160,161,156,158,161,155,154,158,150,160,163,157,155,161,154,162, +163,156,160,161,155,161,165,158,160,160,154,153,157,149,150,153,147,161,162,156, +158,161,152,151,156,148,159,162,155,156,160,152,164,167,159,164,166,158,158,161, +153,158,161,153,158,161,153,161,162,155,161,162,156,157,160,152,160,163,156,161, +164,157,159,160,154,159,160,154,166,166,161,161,162,155,156,160,152,160,160,154, +161,166,158,157,160,152,159,163,155,163,164,157,157,160,152,162,163,157,152,157, +149,153,159,151,160,161,155,152,157,149,153,159,151,152,157,149,156,159,151,161, +162,156,153,159,151,153,159,151,155,162,153,155,160,152,153,158,150,154,158,150, +155,159,151,157,160,152,160,163,156,162,165,159,159,162,155,154,158,150,151,156, +148,154,160,152,156,159,151,156,159,151,152,156,148,150,151,144,154,158,151,156, +160,153,150,155,147,151,152,144,149,150,144,148,150,143,152,153,145,153,159,151, +152,154,148,150,153,147,149,151,145,149,152,146,151,154,148,147,149,143,151,155, +149,151,151,144,151,153,146,154,158,151,154,158,151,154,155,149,155,159,152,152, +155,149,154,158,150,153,155,149,155,159,152,151,154,148,152,154,148,157,160,153, +157,160,153,152,156,149,152,153,148,154,161,154,152,155,149,151,154,148,154,158, +150,151,156,149,155,159,151,156,162,155,154,160,152,160,162,154,154,158,151,152, +154,148,159,161,154,152,157,150,68,49,66,72,51,69,117,115,119,53,35,55,95,71,93, +101,73,97,148,146,150,66,45,69,111,82,110,109,80,109,155,155,157,111,83,108,110, +80,106,154,152,156,68,43,71,111,83,108,110,80,106,154,152,156,68,43,71,108,79, +105,152,151,156,154,152,156,68,51,69,73,53,71,76,55,74,66,39,64,36,40,64,34,40, +39,28,27,59,28,33,36,129,128,95,126,125,79,181,179,98,180,178,98,181,179,99,181, +183,122,181,179,120,181,179,120,181,182,120,181,179,107,181,179,98,181,181,97, +181,183,97,181,180,97,181,180,97,181,179,97,181,179,97,181,179,97,181,179,97, +181,179,97,181,179,97,181,183,97,181,179,97,181,182,99,181,180,101,181,182,103, +181,184,105,181,183,107,181,181,107,181,180,107,181,181,107,181,180,108,181,180, +106,181,179,106,181,180,104,180,178,96,180,179,95,179,177,95,179,178,95,126,129, +71,27,35,37,34,31,39,40,42,53,41,53,39,40,38,43,40,44,40,39,37,44,39,52,39,39, +36,38,53,63,66,52,57,53,38,35,48,38,37,37,37,36,58,52,47,52,51,47,58,51,47,52, +51,67,60,51,47,54,51,50,52,51,51,57,51,56,51,51,48,51,51,48,55,51,62,68,51,59, +56,51,50,50,51,59,67,51,55,72,51,48,62,51,46,51,51,55,51,51,47,58,51,47,51,51, +67,60,51,47,52,51,47,58,52,47,52,37,36,58,38,37,37,38,35,48,52,57,53,53,63,66, +39,36,38,39,53,39,39,37,44,40,44,40,40,38,43,40,53,39,40,42,53,33,31,39,27,35, +37,124,128,70,177,177,94,178,176,93,178,177,94,179,177,94,179,178,102,161,164, +157,156,160,152,156,160,153,163,165,161,99,98,102,122,121,124,111,111,112,113, +114,114,104,101,104,110,108,110,105,100,105,114,116,116,160,163,156,154,158,151, +158,162,155,161,164,158,166,168,161,157,161,155,165,167,160,167,170,162,125,124, +129,124,126,126,130,129,134,121,124,124,124,126,126,143,142,147,120,119,122,140, +138,144,168,171,162,160,161,154,156,158,151,156,160,152,159,163,156,154,159,151, +157,160,152,158,162,154,120,122,123,132,129,137,121,124,124,121,124,125,125,124, +127,105,100,103,111,111,112,126,125,130,159,162,154,170,175,167,166,165,159,159, +161,154,172,175,168,165,166,159,167,171,164,162,166,158,125,128,129,130,130,134, +125,126,127,118,121,122,121,124,125,121,124,125,118,121,122,110,109,112,156,162, +154,159,160,153,162,165,159,161,165,158,157,160,153,158,162,155,159,160,153,159, +163,156,117,120,121,98,95,95,119,121,122,115,117,117,125,126,127,124,126,126, +142,141,143,128,127,132,167,167,160,156,159,151,156,160,152,160,162,158,162,166, +160,160,164,159,160,163,158,163,163,157,118,116,122,112,111,112,112,112,112,97, +93,95,97,94,96,92,90,90,97,93,95,107,106,109,159,163,155,158,161,153,153,158, +151,150,150,145,150,155,148,150,151,146,150,152,147,153,155,149,90,89,90,99,97, +97,102,101,101,105,101,104,96,93,94,111,115,114,108,107,109,117,120,121,158,162, +155,153,157,150,152,157,150,159,160,153,162,165,158,157,160,152,159,160,153,168, +169,161,114,116,117,98,96,96,116,118,119,96,93,94,104,101,104,115,118,118,115, +118,118,109,109,112,169,170,163,157,162,154,160,161,155,160,162,157,66,46,66,70, +48,72,116,114,118,51,36,50,93,67,93,98,69,101,147,145,149,64,47,63,109,81,105, +106,82,102,154,153,156,108,78,105,107,75,103,153,154,161,66,39,68,108,78,105, +107,75,103,153,154,161,66,39,68,107,75,103,153,150,155,65,36,68,66,39,64,66,39, +64,37,37,55,28,27,37,28,29,46,125,130,100,179,179,125,180,178,101,179,177,94, +180,179,96,126,124,73,129,131,72,28,27,50,28,28,51,28,36,36,28,29,37,28,32,52, +28,26,39,28,26,41,28,29,41,28,26,51,28,28,40,28,26,44,28,29,47,28,26,41,28,26, +50,28,43,40,28,29,40,28,29,40,28,32,52,28,40,51,28,38,42,28,47,41,28,35,44,28, +33,40,28,27,40,28,47,40,28,30,39,28,35,40,28,32,50,28,26,40,28,26,51,28,26,38, +28,31,52,28,39,39,28,26,39,27,32,42,34,35,40,40,44,40,41,40,61,40,37,40,40,37, +59,40,47,40,39,42,39,39,37,40,39,37,42,39,38,39,37,36,37,52,47,51,38,53,38,37, +36,37,52,49,51,51,57,61,51,49,52,51,47,52,51,46,52,51,46,56,51,66,60,51,48,54, +51,57,57,51,48,51,51,47,56,51,50,51,51,47,51,51,47,56,51,48,51,51,52,50,51,52, +51,51,50,51,51,51,57,51,50,52,51,47,54,51,46,52,51,47,52,51,49,52,51,57,61,52, +49,51,37,36,37,38,53,38,52,47,51,37,36,37,39,38,39,39,37,42,39,37,40,39,42,39, +40,47,40,40,37,59,40,37,40,41,39,61,40,44,40,33,34,40,27,31,41,27,26,38,27,38, +38,27,31,51,28,25,38,169,170,163,162,168,161,161,167,160,99,98,101,92,99,138,80, +84,115,75,81,110,77,83,113,78,83,112,76,82,110,75,82,110,74,82,112,106,105,108, +155,161,153,160,162,155,165,166,161,162,167,160,167,168,161,158,163,155,142,140, +145,44,81,108,50,82,108,49,82,108,50,84,110,50,84,110,48,81,107,50,82,108,45,81, +109,116,115,118,164,167,162,157,160,153,162,165,160,153,158,149,163,166,161,162, +166,161,107,105,106,102,108,153,102,109,149,102,109,150,104,111,153,104,111,153, +98,105,144,89,95,130,76,80,112,123,124,125,163,166,161,166,166,160,159,162,157, +166,168,160,165,166,160,160,166,160,144,142,148,33,64,90,41,67,91,40,67,91,42, +69,93,43,69,93,41,68,91,43,68,92,37,65,92,131,135,136,161,163,158,166,167,161, +160,166,160,152,155,148,160,163,158,157,160,153,113,113,115,47,84,110,51,83,109, +50,84,109,56,93,122,63,106,139,66,111,146,64,111,147,61,111,150,122,122,125,167, +167,160,157,160,154,161,164,158,167,167,160,160,165,158,162,165,159,120,123,124, +46,81,110,49,82,108,49,82,108,51,84,111,51,84,111,51,83,109,53,87,116,61,109, +144,99,94,99,160,163,156,161,166,159,156,161,152,146,149,145,150,152,146,156, +160,152,92,91,92,53,86,84,56,85,82,56,84,82,57,86,84,57,86,84,54,83,81,54,83,81, +52,83,84,117,119,119,161,162,155,153,159,151,154,158,150,156,160,153,158,162, +155,158,161,153,120,122,123,46,81,110,50,82,109,49,82,108,51,84,111,51,84,111, +49,82,108,50,81,108,45,81,110,123,124,125,159,161,154,160,162,155,167,168,161, +103,101,106,108,110,111,116,115,122,86,65,83,134,132,137,142,143,144,147,146, +153,106,81,103,152,153,154,152,152,154,154,152,156,153,152,159,153,152,157,153, +151,155,109,78,105,153,152,159,153,152,157,153,151,155,109,78,105,153,151,155, +159,156,164,81,49,83,32,34,35,28,44,38,28,29,47,179,177,123,179,178,105,179,177, +94,125,125,69,28,26,37,28,46,39,28,27,50,33,39,46,37,40,53,41,39,44,42,63,41,42, +40,66,42,61,41,42,39,42,42,39,42,42,41,42,42,53,42,42,39,42,42,53,44,42,40,52, +42,45,46,42,40,46,42,44,47,42,48,42,42,40,52,43,48,54,43,41,44,43,39,44,43,43, +47,43,39,54,43,55,44,43,40,47,43,59,46,43,42,43,43,40,53,43,56,46,43,39,54,43, +43,45,42,40,54,42,40,52,42,40,45,42,39,42,41,39,47,41,39,41,41,45,43,40,43,45, +40,43,49,40,52,42,39,58,42,39,57,39,39,36,39,39,44,41,39,37,44,38,47,38,38,37, +37,52,48,52,37,36,56,52,53,51,51,50,57,51,47,57,51,47,52,51,59,51,51,55,61,51, +47,51,51,57,57,51,57,57,51,57,51,51,56,56,51,48,51,51,47,51,51,47,58,51,53,51, +51,51,51,51,51,51,51,51,58,51,58,51,51,48,54,51,66,60,51,46,56,51,55,61,51,59, +51,51,47,52,51,47,57,51,50,57,52,53,51,37,36,56,52,48,52,38,37,37,38,47,38,39, +37,44,39,44,41,39,36,39,39,57,39,39,58,42,40,52,42,40,43,48,40,42,44,40,45,43, +41,38,41,41,39,46,41,39,41,41,39,44,41,39,51,170,172,165,168,169,161,166,170, +162,113,110,113,102,109,149,135,159,200,127,141,185,80,83,112,80,83,112,124,134, +181,124,134,181,77,80,111,122,121,123,158,161,153,160,162,155,160,162,155,168, +170,163,160,166,160,154,161,152,143,141,146,50,82,109,85,139,178,85,139,178,55, +85,109,55,85,109,84,139,178,85,139,178,50,83,109,124,125,126,163,169,161,160, +162,155,167,170,162,160,164,157,167,169,161,167,169,161,130,129,133,103,110,152, +145,178,215,145,178,215,106,113,152,106,113,152,144,178,215,141,171,209,88,95, +129,132,135,136,166,168,161,162,168,160,157,160,153,167,169,161,164,166,161,158, +162,153,146,149,153,39,67,91,81,113,153,81,113,153,47,72,94,47,72,94,81,113,153, +81,113,153,40,68,92,132,136,136,159,163,156,159,162,155,160,162,155,165,167,161, +157,160,152,154,155,149,108,107,109,50,85,109,85,139,178,85,139,178,54,86,110, +60,94,121,107,168,195,115,179,202,65,112,148,144,143,146,169,173,164,167,168, +160,169,169,162,164,167,160,162,166,160,161,163,158,112,110,110,51,83,110,85, +138,178,85,138,177,54,84,109,54,84,109,85,138,177,85,138,177,55,89,116,93,88,90, +156,160,153,159,162,158,159,165,159,159,160,155,158,160,153,158,159,150,106,101, +105,57,86,83,85,147,136,85,147,136,59,86,82,59,86,82,86,147,136,86,147,136,56, +84,82,110,106,109,166,168,162,158,161,155,154,158,151,157,159,152,160,165,159, +159,161,155,127,129,130,50,82,109,85,138,177,85,138,177,54,84,109,54,84,109,85, +138,177,84,138,177,50,81,109,132,136,136,160,163,156,150,153,147,160,164,157,39, +29,38,41,25,40,78,58,75,53,46,53,57,43,56,60,38,58,104,78,100,67,58,66,67,44,73, +66,45,71,110,78,106,67,42,66,66,39,67,109,79,105,69,62,68,67,42,66,66,39,67,109, +79,105,69,62,68,81,54,81,66,39,64,29,29,49,28,31,37,178,176,106,178,175,95,178, +176,92,27,25,35,27,25,44,34,31,51,41,38,42,42,38,47,42,55,42,42,65,42,42,44,42, +42,39,42,42,38,43,42,46,41,42,39,59,42,39,42,42,58,42,42,46,42,42,39,42,42,41, +42,42,41,43,42,39,43,42,39,52,42,46,42,42,39,42,42,41,41,42,47,68,42,41,43,42, +45,43,42,41,43,42,39,57,42,40,50,42,40,43,42,40,47,42,47,42,42,52,47,42,44,56, +42,40,43,42,40,51,42,39,43,42,39,43,41,39,43,41,39,42,41,39,42,41,45,55,40,38, +46,40,38,40,40,38,41,40,36,49,39,61,43,39,35,39,39,37,39,39,36,43,38,44,48,38, +35,48,38,37,37,37,36,58,52,47,52,52,47,56,51,55,51,51,47,51,51,47,51,51,48,69, +51,47,51,51,51,70,51,53,52,51,48,61,51,48,52,51,48,57,51,48,54,51,47,51,51,47, +51,51,57,51,51,49,51,51,48,54,51,48,61,51,47,50,51,47,51,51,57,57,51,57,57,51, +47,51,51,51,70,51,47,51,51,48,69,51,47,51,51,47,51,51,55,51,52,47,56,52,47,52, +37,36,58,38,37,37,38,35,48,38,44,48,39,36,43,39,37,39,39,35,39,39,61,43,39,36, +49,40,37,41,40,38,40,40,38,45,40,44,54,40,38,41,41,38,42,41,39,42,169,171,164, +169,171,164,171,172,163,127,129,130,102,111,152,143,173,211,144,163,204,83,88, +117,79,83,111,132,139,188,124,134,182,76,82,111,125,126,126,157,161,153,161,166, +159,160,164,157,159,162,155,159,160,154,161,163,156,126,128,129,49,83,109,85, +139,179,92,144,185,55,85,110,55,85,110,92,144,185,85,139,178,50,83,109,135,139, +139,170,170,162,161,165,158,160,162,155,151,153,147,158,161,154,162,168,161,132, +136,136,104,108,150,145,178,215,151,181,219,108,111,151,108,111,151,151,181,219, +144,178,215,98,103,144,142,141,144,166,168,161,167,168,162,159,159,153,171,174, +166,157,160,153,161,163,155,139,139,142,39,67,92,82,113,153,87,120,159,47,71,94, +47,71,94,87,120,159,82,113,153,41,67,92,145,144,147,166,168,161,160,162,155,157, +160,153,158,160,153,163,167,160,161,164,156,113,110,113,51,83,110,85,139,178,89, +144,185,55,84,110,55,85,111,99,155,191,107,168,195,66,111,147,134,138,139,173, +175,167,165,169,161,169,171,163,170,173,167,166,168,161,173,175,167,124,123,126, +55,92,121,84,140,178,89,143,185,55,84,110,55,84,110,89,143,185,84,138,178,52,84, +110,94,93,93,158,159,151,159,162,155,159,162,155,158,160,153,156,158,151,159, +160,152,97,96,97,58,85,83,85,147,137,91,152,142,60,86,83,60,86,83,91,152,142,85, +147,137,56,85,83,121,124,123,162,168,162,161,165,160,158,160,153,159,161,154, +160,165,157,159,161,154,124,123,126,51,83,109,84,138,178,89,143,185,55,84,110, +55,84,110,89,143,185,84,138,178,51,82,109,132,135,136,166,167,161,162,165,159, +164,168,161,68,49,68,72,51,69,117,115,119,53,34,53,95,71,96,101,73,97,148,146, +150,66,44,66,111,87,112,109,81,107,155,153,160,108,78,105,108,79,104,107,82,107, +108,78,107,108,78,108,107,76,104,114,83,111,127,92,126,66,39,64,28,29,47,124, +123,88,178,176,98,178,177,93,27,25,48,27,25,38,39,36,52,41,39,41,41,54,41,41,45, +42,41,51,41,41,38,41,41,38,50,41,40,41,41,39,41,41,49,42,41,39,49,41,39,40,41, +39,41,41,39,58,41,40,40,41,40,41,41,53,46,41,40,52,41,45,49,41,39,42,41,40,41, +41,40,41,41,46,41,41,57,46,41,39,53,41,41,45,41,39,47,41,41,42,41,39,46,41,43, +42,41,39,51,41,41,50,41,42,41,41,46,42,41,54,45,41,44,42,41,38,53,41,45,42,41, +58,50,40,38,49,40,39,42,40,38,47,40,38,43,40,37,41,39,37,40,39,55,42,39,37,40, +53,54,52,38,37,38,38,54,54,38,36,40,38,53,38,37,36,37,52,49,51,51,57,61,51,46, +51,51,56,52,51,49,52,51,53,51,51,47,51,51,50,51,51,48,52,51,49,55,51,51,51,51, +52,64,51,48,51,51,50,51,51,50,51,51,47,51,51,47,51,51,51,51,51,53,51,51,48,50, +51,53,68,51,47,51,51,48,52,51,48,61,51,53,52,51,48,52,51,50,51,51,47,51,51,53, +51,51,49,52,51,56,52,51,46,51,51,57,61,52,49,51,37,36,37,38,53,38,38,36,40,38, +54,54,38,37,38,53,54,52,39,37,40,39,54,42,39,37,40,39,37,40,39,37,43,40,37,47, +40,39,42,40,38,48,40,57,49,170,173,166,162,166,159,172,173,165,132,136,136,105, +110,154,145,179,216,151,178,216,97,101,136,84,89,119,131,142,190,124,136,184,77, +81,112,127,126,130,162,164,156,159,162,155,170,174,166,162,168,160,162,166,159, +160,163,156,142,141,144,48,83,110,85,141,180,92,147,187,55,86,111,55,86,111,92, +147,187,85,141,180,51,84,111,135,139,139,171,175,167,168,169,163,164,167,160, +162,167,160,168,169,163,169,171,163,124,123,125,102,106,147,145,179,216,155,181, +218,109,114,155,109,114,155,155,181,218,147,179,216,104,108,152,137,141,142,166, +170,162,169,170,162,164,167,160,171,171,163,170,171,166,172,172,166,140,143,144, +39,68,96,83,115,155,88,120,161,47,72,98,47,72,98,88,120,161,83,115,155,43,68,93, +137,141,142,171,172,163,160,167,160,159,161,154,163,167,160,165,168,161,160,162, +155,132,136,137,50,84,111,86,141,180,92,145,187,55,86,111,55,86,111,93,146,187, +95,153,187,63,106,140,132,135,136,173,173,167,162,165,159,165,167,161,169,170, +164,166,168,162,169,170,162,142,141,146,60,105,139,95,152,187,92,146,187,55,86, +111,55,86,111,92,145,187,86,140,180,52,85,112,111,108,111,160,163,156,158,161, +154,157,160,153,156,158,152,156,160,153,159,162,155,97,96,97,57,88,85,87,149, +138,94,154,144,60,88,84,60,88,84,94,154,144,87,149,138,56,86,84,125,126,126,164, +168,160,161,165,158,166,168,161,162,166,159,160,162,155,161,165,158,137,141,142, +49,83,110,86,140,180,92,145,187,55,86,111,55,86,111,92,145,187,86,140,180,51,84, +111,135,139,140,162,166,159,166,167,160,165,169,161,66,49,65,70,48,67,116,114, +118,51,42,55,93,71,92,98,69,94,147,145,149,64,54,69,109,78,108,106,76,104,154, +152,161,109,79,105,109,84,110,153,154,156,109,81,105,109,79,111,157,155,159,114, +83,111,66,39,64,28,27,35,178,176,104,178,178,95,123,123,71,27,29,38,38,48,40,41, +39,41,41,41,41,41,38,47,40,38,40,40,40,40,40,38,40,40,38,40,40,38,40,40,38,43, +40,38,40,40,39,40,40,45,40,40,39,52,40,38,40,40,44,40,40,39,51,40,42,55,40,44, +47,40,43,41,40,50,41,40,40,40,40,38,42,40,56,40,40,37,46,40,41,42,40,52,43,40, +40,45,40,50,41,40,38,45,40,38,40,40,38,43,40,38,41,40,39,41,40,42,40,40,49,40, +40,37,42,40,37,44,40,62,41,40,37,43,40,49,45,40,41,50,40,37,47,39,37,52,39,37, +40,39,37,45,39,38,42,39,38,48,39,38,39,53,48,53,53,46,63,37,43,47,38,36,38,37, +36,56,52,53,51,51,50,57,51,47,57,51,68,51,51,58,51,51,48,57,51,52,57,51,57,51, +51,47,55,51,48,60,51,56,51,51,57,51,51,55,51,51,51,60,51,48,56,51,49,56,51,53, +51,51,47,51,51,51,62,51,47,54,51,47,51,51,47,56,51,47,70,51,52,64,51,51,51,51, +49,55,51,48,60,51,47,55,51,57,51,51,52,57,51,48,57,51,58,51,51,68,51,51,47,57, +51,50,57,52,53,51,37,36,56,38,36,38,37,43,47,53,46,63,53,48,53,39,38,39,39,38, +48,39,38,42,39,37,45,39,37,40,39,37,52,39,37,46,39,40,50,39,49,45,164,168,160, +158,161,154,162,166,159,119,116,119,107,114,157,106,111,149,106,110,149,109,112, +152,99,103,139,82,86,115,78,82,109,79,83,114,125,124,126,155,159,151,160,164, +157,160,164,157,162,167,160,161,167,160,160,162,154,145,143,149,50,84,112,55,84, +108,54,83,108,57,87,113,57,87,113,54,83,108,55,84,108,52,86,113,120,116,118,162, +166,159,160,164,157,166,169,162,160,162,155,169,170,163,171,172,163,124,123,125, +94,96,134,102,107,143,106,110,149,111,115,156,111,115,156,106,110,149,106,111, +149,107,114,157,120,116,118,162,167,160,165,169,161,162,168,160,174,174,168,169, +170,162,172,174,167,148,146,151,42,69,93,48,71,92,48,70,92,51,74,96,51,74,96,48, +70,92,48,71,92,45,70,94,131,135,136,161,165,158,160,162,155,156,157,150,157,159, +152,160,167,160,160,162,155,126,129,128,52,85,113,55,84,108,54,83,108,57,87,113, +57,87,113,54,83,108,55,85,109,57,95,125,119,116,119,161,166,159,157,160,153,159, +162,155,157,159,152,160,164,157,170,173,164,144,143,146,66,115,152,68,106,136, +59,92,120,56,87,114,56,87,113,53,83,108,54,84,108,53,87,113,101,100,103,162,166, +159,161,165,158,154,156,149,154,157,150,156,158,151,159,161,154,111,107,110,57, +88,85,59,86,81,59,84,81,61,89,85,61,89,85,59,84,81,59,86,81,57,88,85,113,110, +113,162,166,159,157,160,153,160,166,159,162,166,159,162,168,161,163,167,160,145, +143,150,49,85,112,54,84,108,53,83,108,56,87,113,56,87,113,53,83,108,54,84,108, +51,86,113,117,112,114,162,169,162,160,164,157,161,167,160,103,103,106,108,110, +115,116,114,118,86,62,83,134,134,137,142,143,148,147,145,149,106,78,103,152,154, +158,152,150,154,154,151,156,107,75,107,107,76,103,152,152,158,107,75,103,107,77, +104,166,164,168,66,39,64,28,30,46,177,176,105,178,177,94,27,27,44,34,30,40,40, +37,41,41,51,41,40,38,47,40,50,40,40,38,40,40,38,40,40,43,43,40,37,43,40,37,40, +39,39,45,39,50,54,39,48,39,39,38,39,39,45,38,39,38,54,39,42,42,39,44,40,39,38, +40,39,46,39,39,48,39,39,51,51,39,49,42,39,39,46,39,37,42,39,38,44,39,48,40,39, +38,53,39,44,47,39,38,51,39,38,45,39,37,39,39,37,39,39,37,42,39,43,45,39,44,41, +39,53,39,39,38,48,39,37,39,39,43,45,39,36,39,39,38,40,39,41,47,39,38,46,39,38, +44,39,43,41,39,37,47,39,49,41,39,38,40,38,47,47,38,42,48,37,38,42,52,47,51,52, +60,51,52,47,57,52,47,56,51,55,51,51,47,51,51,47,51,51,58,59,51,52,51,51,47,54, +51,47,51,51,48,59,51,52,51,51,53,62,51,48,52,51,48,52,51,47,51,51,47,51,51,47, +51,51,48,61,50,45,55,42,38,49,42,36,42,50,45,50,51,48,52,51,57,57,51,47,50,51, +55,51,51,57,51,51,56,51,51,53,62,51,52,51,51,48,59,51,47,51,51,47,54,51,52,51, +51,58,59,51,47,51,51,47,51,51,55,51,52,47,56,52,47,57,52,60,51,52,47,51,37,38, +42,38,42,48,38,47,47,38,37,39,39,49,41,39,37,47,39,43,41,39,38,44,39,38,46,39, +41,46,164,169,162,165,168,161,164,168,160,127,126,128,105,115,157,147,180,217, +156,183,220,109,117,157,106,113,151,145,165,207,129,144,189,78,85,114,117,114, +116,162,162,156,161,165,159,158,161,154,163,167,160,160,166,159,163,167,160,139, +139,141,50,86,111,87,142,181,93,148,188,56,88,112,56,88,112,93,147,188,87,141, +181,51,86,112,132,136,134,161,166,160,160,164,158,160,162,157,160,162,157,165, +169,162,167,169,162,135,139,139,79,84,116,136,157,199,152,177,215,108,116,155, +109,117,156,156,182,219,148,179,216,104,114,154,135,139,139,171,171,163,166,168, +161,161,167,160,166,170,162,162,167,160,171,175,166,144,144,147,41,69,96,84,115, +157,89,121,162,50,73,98,50,73,98,89,121,162,84,115,157,44,69,96,142,144,145,169, +170,163,161,166,159,160,166,159,158,161,154,161,165,158,161,165,158,132,136,134, +51,86,111,87,141,181,93,147,188,56,88,111,56,88,111,93,147,188,87,141,181,51,87, +112,132,136,134,163,169,161,158,161,154,160,162,155,157,160,153,160,164,157,163, +169,161,131,135,136,68,118,151,118,180,204,117,173,202,62,98,123,56,88,112,93, +147,188,87,141,181,53,87,112,109,108,109,147,153,145,162,166,159,156,157,149, +154,157,150,152,156,148,155,158,151,123,121,127,57,89,84,89,150,139,95,156,144, +61,90,84,61,90,84,95,156,144,89,150,139,57,90,84,110,107,110,155,158,151,158, +159,151,160,164,157,163,167,160,159,162,155,161,165,158,124,123,125,51,86,111, +87,141,181,93,147,188,56,88,111,56,88,111,93,147,188,87,141,181,51,86,111,132, +136,136,166,169,161,161,165,158,160,165,158,39,23,38,41,23,46,78,55,75,53,35,57, +57,35,56,60,35,66,104,74,100,67,45,72,67,42,67,66,39,68,110,84,109,153,155,155, +153,150,155,152,153,154,153,151,155,171,169,172,66,39,64,28,31,50,178,176,139, +178,178,102,27,25,36,38,36,41,41,46,41,40,40,45,40,38,40,40,38,46,40,39,41,39, +40,50,39,37,44,39,54,51,39,50,40,39,36,41,39,40,41,39,37,57,39,42,39,39,38,39, +39,59,54,39,43,38,39,50,53,39,43,48,39,38,39,39,38,53,39,38,65,39,38,42,39,38, +40,39,37,40,39,37,39,39,37,43,39,37,39,39,38,50,39,48,53,39,44,42,39,44,39,39, +38,39,39,38,41,39,38,40,39,45,50,39,40,39,39,37,52,39,38,40,39,38,38,39,38,38, +39,38,38,39,38,39,39,38,46,39,43,46,39,38,39,39,42,49,39,40,43,38,36,48,37,36, +38,52,46,52,52,47,51,52,47,65,51,55,57,51,47,51,51,47,51,51,46,51,51,56,52,51, +49,52,51,53,51,51,50,51,51,61,57,51,48,52,51,47,55,51,47,55,51,47,52,51,47,52, +51,47,52,51,56,52,51,49,51,51,47,51,51,51,51,51,47,51,42,41,43,170,169,170,170, +170,171,42,36,49,51,53,61,51,52,64,51,66,56,51,47,51,51,48,52,51,48,52,51,47,52, +51,47,52,51,47,55,51,47,55,51,48,52,51,61,57,51,50,51,51,53,51,51,49,52,51,56, +52,51,46,51,51,47,51,51,47,51,51,55,57,52,47,65,52,47,51,52,46,52,37,36,38,38, +36,47,38,39,42,38,42,49,39,38,39,39,43,46,39,38,46,165,169,162,160,164,157,162, +166,159,117,114,116,107,114,156,147,179,216,156,182,219,110,115,155,109,115,156, +153,178,216,137,160,202,81,90,121,120,117,120,161,164,156,163,169,161,159,161, +154,158,159,152,161,167,160,159,162,154,130,129,133,51,86,111,86,140,181,93,147, +188,56,87,112,56,87,112,93,147,188,86,141,181,50,86,111,136,136,139,167,170,161, +162,166,159,162,167,159,159,162,155,158,161,154,163,170,161,135,139,140,77,83, +113,127,138,185,144,163,205,106,111,150,109,115,156,156,182,219,147,179,216,106, +113,155,140,143,143,172,175,166,166,170,162,164,169,161,166,170,162,165,168,160, +168,170,163,147,146,149,41,69,95,83,115,157,89,121,162,49,73,97,49,73,97,89,121, +162,83,115,157,44,69,96,135,139,140,166,169,161,165,169,160,161,167,160,151,155, +150,163,166,159,161,166,158,123,120,123,51,86,112,86,141,181,93,147,188,56,87, +112,56,87,112,93,147,188,86,141,181,51,85,111,132,135,134,166,171,162,162,166, +159,162,168,161,161,166,159,160,164,157,163,170,161,135,139,139,68,117,153,118, +182,205,126,183,207,70,110,141,62,96,124,94,148,187,86,141,181,52,86,112,113, +110,113,159,160,153,163,167,160,160,164,158,161,166,159,153,157,149,159,160,152, +114,111,113,57,89,85,87,150,139,95,156,143,61,89,85,61,89,85,95,156,143,87,150, +139,56,90,85,120,117,120,161,164,156,161,165,158,158,159,151,158,161,154,159, +162,155,161,163,156,127,126,128,51,86,112,86,141,181,93,147,187,56,87,112,56,87, +112,93,147,186,86,141,181,51,85,111,132,136,134,161,165,158,160,164,157,162,166, +159,68,49,66,72,52,69,117,115,119,53,39,53,95,71,93,101,75,97,148,146,150,66,50, +67,111,83,108,109,80,105,155,152,162,65,46,64,65,38,64,109,84,107,74,48,71,66, +39,64,31,34,37,125,125,89,178,177,93,27,34,35,38,37,44,41,39,41,40,46,40,40,38, +40,40,44,40,39,37,39,39,44,41,39,46,40,39,57,42,39,41,38,39,36,39,39,50,39,39, +36,39,39,37,39,39,37,42,39,38,43,39,42,53,39,42,39,39,37,40,39,38,48,39,38,47, +39,37,46,39,38,38,39,47,39,39,43,50,39,43,42,39,37,54,39,36,37,39,38,56,38,37, +38,53,47,52,53,48,56,53,48,52,53,47,52,53,47,61,38,37,41,39,38,47,39,37,51,38, +53,39,53,48,53,53,54,57,53,48,60,53,50,68,53,48,57,53,49,52,53,54,57,53,48,58, +53,47,52,52,50,51,52,53,56,52,47,56,51,47,51,51,51,51,51,47,51,51,47,51,51,49, +56,51,47,54,51,68,51,51,58,51,51,48,57,51,52,57,51,49,57,51,48,52,51,46,58,51, +62,61,51,47,52,51,51,64,51,47,54,51,47,59,51,47,59,51,52,51,51,50,51,51,47,51, +51,49,58,39,34,39,168,166,168,168,166,168,39,34,49,51,47,55,51,48,52,51,47,51, +51,49,51,51,56,52,51,47,52,51,47,54,51,51,64,51,47,52,51,62,61,51,46,58,51,48, +52,51,49,57,51,52,57,51,48,57,51,58,51,51,68,51,51,47,54,51,49,56,51,47,51,51, +47,51,51,51,51,51,47,51,52,47,56,52,53,56,52,50,51,52,47,51,52,47,58,52,53,56, +53,48,52,162,164,157,159,162,155,158,159,152,111,111,112,106,115,157,148,180, +217,148,180,217,109,117,156,109,117,156,150,179,217,148,175,214,92,104,140,120, +117,120,159,160,153,159,162,155,158,159,152,156,158,151,160,166,159,158,160,153, +123,120,123,51,86,112,87,142,182,87,142,182,56,88,112,56,88,112,87,142,182,87, +142,182,51,86,112,118,116,117,161,165,158,161,168,161,160,164,157,159,162,155, +161,168,161,163,167,160,119,116,119,78,84,114,126,137,185,128,141,188,97,104, +138,106,113,151,148,179,217,148,180,217,106,113,155,134,138,139,169,171,164,164, +167,160,167,169,162,162,166,159,161,167,160,169,171,164,141,144,145,43,69,96,84, +116,158,84,116,158,50,73,98,50,73,98,84,116,158,84,116,158,45,70,96,126,125,127, +161,165,156,158,161,154,163,168,161,150,153,148,156,158,151,162,162,156,114,114, +115,52,88,112,87,142,182,87,142,182,56,88,112,56,88,112,87,142,182,87,142,182, +51,86,112,123,119,122,163,168,160,160,162,155,161,168,161,161,166,159,159,162, +155,160,163,156,130,129,133,71,118,154,119,183,206,119,183,206,75,119,152,70, +111,141,96,154,188,87,143,182,51,87,112,136,140,144,159,161,154,159,160,152,158, +161,154,161,161,156,152,156,149,155,159,151,114,111,113,59,97,91,91,152,142,90, +152,143,61,90,85,61,90,85,90,152,143,90,152,143,56,90,85,120,117,120,159,162, +155,157,158,151,156,157,150,154,156,149,158,160,153,159,162,155,115,113,113,51, +87,112,87,142,182,87,142,182,56,88,112,56,88,112,88,142,185,87,142,182,51,88, +112,123,120,123,162,169,161,160,165,158,158,161,154,66,49,68,70,48,68,116,114, +122,51,33,57,93,71,95,98,68,96,147,145,152,64,43,72,109,79,112,106,75,102,154, +154,156,110,82,106,110,92,106,154,152,156,133,100,135,34,43,47,28,27,49,179,177, +94,28,30,35,38,42,45,41,40,41,40,38,48,40,38,64,40,50,39,39,37,52,39,37,39,39, +38,44,39,49,40,39,42,47,38,42,51,38,37,38,38,61,43,38,49,42,38,36,38,38,36,43, +38,36,51,38,37,37,38,46,38,38,43,37,53,47,64,37,37,45,38,36,38,38,37,38,38,40, +38,38,39,37,38,37,43,37,36,51,53,64,59,53,54,62,53,48,60,52,47,52,52,47,65,52, +49,52,52,47,52,52,69,52,53,47,52,53,47,62,53,57,57,53,47,52,52,53,57,52,47,52, +52,54,51,52,46,57,52,59,52,51,47,51,51,47,60,51,47,51,51,47,59,51,47,51,51,47, +51,51,47,58,51,56,64,51,47,51,51,47,52,51,57,55,51,51,54,51,58,51,51,58,59,51, +52,51,51,47,54,51,47,51,51,48,61,51,56,52,51,56,56,51,47,52,51,47,52,51,47,58, +51,47,59,51,50,58,51,48,55,51,57,51,51,58,60,51,52,65,51,47,50,39,34,49,168,166, +168,168,168,169,39,34,40,51,52,59,51,51,52,51,54,64,51,52,51,51,47,59,51,47,59, +51,47,59,51,47,58,51,47,52,51,47,52,51,56,56,51,56,52,51,48,61,51,47,51,51,47, +54,51,52,51,51,58,59,51,58,51,51,51,54,51,57,55,51,47,52,51,47,51,51,56,64,51, +47,58,51,47,51,51,47,51,51,47,59,51,47,51,51,47,59,51,47,51,167,172,164,166,169, +161,162,166,159,107,106,108,99,109,156,96,108,151,96,109,152,100,109,155,100, +109,155,97,109,151,97,108,151,94,105,150,126,129,128,162,169,161,166,169,161, +158,161,154,162,166,159,165,168,160,163,167,160,139,139,142,39,83,111,43,82,109, +43,82,109,44,84,111,44,84,111,43,82,109,43,82,109,40,82,111,131,135,134,163,168, +160,160,164,157,169,170,164,160,165,158,162,166,159,168,171,163,131,135,134,72, +79,113,72,79,111,72,79,111,77,85,119,88,98,138,95,105,148,97,108,152,99,108,155, +136,140,141,175,177,169,173,173,166,170,173,166,167,171,163,170,171,163,167,171, +163,136,140,141,35,64,93,35,65,92,35,65,93,36,67,95,35,67,95,35,65,92,35,65,93, +35,64,94,136,135,138,161,165,158,167,169,163,165,168,160,165,168,161,158,161, +154,163,167,160,116,113,116,41,85,111,42,82,108,42,82,108,44,84,111,44,83,111, +42,81,108,42,82,108,39,83,111,135,139,140,162,166,159,160,164,157,159,162,155, +167,170,163,160,164,157,163,167,160,129,128,132,56,113,153,59,113,150,59,113, +150,60,115,152,59,113,150,53,103,136,46,90,120,40,84,112,119,116,119,159,162, +155,159,162,155,159,163,156,154,157,150,159,161,154,155,158,151,120,117,120,58, +119,116,51,95,92,49,84,83,50,85,84,50,85,84,47,82,80,49,82,80,45,84,85,129,128, +133,164,170,162,159,161,154,158,161,154,160,162,155,165,168,161,163,169,161,137, +135,141,39,82,111,42,82,108,42,82,108,43,83,111,44,84,111,43,82,108,43,82,108, +40,84,111,122,119,122,172,175,167,170,173,166,169,171,163,103,101,106,108,107, +115,116,117,118,86,61,84,134,132,137,142,141,148,147,148,149,106,76,104,152,150, +158,152,150,160,154,151,156,107,75,108,107,75,103,153,152,155,66,39,64,28,26,43, +180,178,128,179,177,104,39,39,41,41,40,45,41,44,46,40,49,49,40,38,39,39,38,40, +39,37,39,39,37,39,39,37,40,38,44,48,38,37,38,38,42,38,38,41,38,38,35,38,38,41, +46,38,36,39,38,39,39,38,44,46,38,37,46,38,37,40,38,37,38,37,38,37,52,53,60,52, +46,51,37,36,58,38,46,37,37,36,37,52,47,55,52,51,51,52,47,51,51,47,51,51,47,52, +51,47,58,51,55,51,51,47,51,51,47,51,51,47,57,51,51,51,51,47,52,51,48,58,51,47, +51,51,47,51,51,50,51,51,47,51,51,47,67,51,59,65,51,51,59,51,47,59,51,53,51,51, +46,51,51,47,56,51,52,51,51,49,58,51,55,51,51,47,51,51,47,51,51,47,59,51,48,54, +51,48,51,51,48,51,51,50,51,51,61,57,51,48,52,51,47,55,51,47,52,51,47,52,51,48, +52,51,48,52,51,46,52,51,53,51,51,50,51,51,49,52,51,48,51,51,50,54,51,53,51,51, +47,52,39,34,39,168,166,168,168,167,168,39,34,47,51,53,57,51,48,52,51,58,51,51, +57,51,51,48,55,51,50,58,51,53,51,51,46,52,51,48,52,51,48,52,51,47,52,51,47,52, +51,47,55,51,48,52,51,61,57,51,50,51,51,48,51,51,48,51,51,48,54,51,47,59,51,47, +51,51,47,51,51,55,51,51,49,58,51,52,51,51,47,56,51,46,51,51,53,51,51,47,59,51, +51,59,163,168,161,168,169,163,161,165,158,102,101,104,189,187,190,186,185,188, +188,186,189,188,186,189,190,193,193,185,185,190,185,184,187,186,186,191,122,121, +124,163,169,161,164,167,160,162,167,160,172,173,166,170,173,167,169,170,163,115, +114,117,188,190,191,187,185,188,182,181,185,186,184,187,186,185,188,186,185,188, +184,183,186,186,185,188,127,132,131,160,162,154,161,165,158,170,171,164,166,170, +162,164,169,161,161,166,159,121,121,124,187,186,189,187,185,188,184,183,186,186, +185,188,184,183,186,187,185,188,182,181,185,188,186,189,121,120,123,176,177,169, +173,174,167,173,173,166,171,173,166,167,171,163,165,169,162,131,131,135,188,187, +190,184,183,186,184,183,186,182,181,185,187,185,188,185,184,187,184,183,186,186, +185,188,137,137,141,163,168,161,161,165,158,168,169,162,162,166,159,165,168,161, +161,167,159,111,108,113,188,186,189,187,185,188,189,187,190,187,185,188,186,185, +188,191,194,194,189,187,190,190,188,191,114,111,115,162,168,160,159,161,154,161, +167,160,166,169,160,160,164,157,165,170,162,135,135,139,186,185,188,185,183,186, +182,181,185,188,186,189,187,185,188,186,185,188,191,194,194,190,188,191,118,115, +119,161,167,159,159,160,152,157,159,152,159,160,153,148,151,146,152,157,149,112, +109,113,189,193,193,192,191,194,189,187,190,186,185,190,187,185,188,188,186,189, +186,185,190,186,186,191,125,125,130,163,169,161,165,168,161,165,168,161,162,169, +160,166,169,160,161,165,158,121,121,123,187,186,189,187,185,188,188,186,189,193, +192,195,186,185,188,185,185,190,187,185,188,187,186,189,142,140,147,168,170,163, +164,169,161,171,173,166,39,23,38,41,30,40,78,57,77,53,35,56,57,35,56,60,44,58, +104,77,103,67,45,70,67,43,78,66,40,65,110,78,113,152,153,154,153,153,155,169, +168,173,28,26,29,28,26,48,180,177,95,28,30,37,42,40,55,41,48,54,40,43,40,40,38, +40,39,37,39,39,38,45,39,42,44,39,42,40,38,36,43,38,38,42,38,35,39,38,53,39,38, +49,39,38,41,39,38,36,48,38,35,39,38,39,41,38,36,37,38,42,37,38,36,37,37,43,37, +52,52,56,51,52,55,51,47,64,52,63,60,52,50,55,52,56,57,51,55,51,51,47,51,51,50, +51,51,58,58,51,47,58,51,47,52,51,47,51,51,47,51,51,48,51,51,47,51,51,47,51,51, +47,57,51,47,51,51,48,51,51,47,52,51,47,54,51,51,54,51,47,50,51,47,65,51,47,51, +51,47,64,51,46,55,51,68,56,51,61,52,51,47,51,51,47,61,51,47,60,51,47,54,51,57, +55,51,47,52,51,56,56,51,55,51,51,52,51,51,49,57,51,48,52,51,46,58,51,62,61,51, +51,64,51,47,54,51,47,52,51,56,52,51,61,59,51,52,51,51,60,60,51,48,51,51,63,51, +51,47,51,51,47,55,51,47,59,39,34,39,168,168,169,168,166,168,39,34,40,51,47,52, +51,52,51,51,49,51,51,48,51,51,49,52,51,50,51,51,52,51,51,61,59,51,56,52,51,47, +52,51,47,54,51,51,64,51,62,61,51,46,58,51,48,52,51,49,57,51,52,51,51,55,51,51, +56,56,51,47,52,51,57,55,51,47,54,51,47,60,51,47,61,51,47,51,51,61,52,51,68,56, +51,46,55,51,47,64,51,47,51,168,171,162,162,166,159,162,166,159,161,167,160,159, +164,156,169,171,163,160,164,157,160,167,159,159,161,156,164,167,159,167,169,162, +160,165,157,163,167,160,169,170,164,168,169,162,162,166,159,164,167,160,168,170, +163,162,168,160,163,167,160,161,167,160,160,166,159,170,171,163,161,168,159,169, +173,165,168,170,162,171,173,165,167,171,163,167,170,163,160,164,157,162,166,159, +162,168,160,167,171,163,165,168,160,167,169,162,171,172,164,171,173,165,164,167, +159,165,170,161,173,173,166,166,169,161,163,169,160,167,169,161,164,167,160,161, +168,161,174,174,168,167,169,162,167,169,162,173,174,168,165,168,160,174,173,167, +169,170,163,170,173,165,171,174,167,165,170,161,170,171,162,171,173,166,164,167, +159,166,170,162,165,168,159,171,172,164,171,173,166,165,168,160,168,170,163,161, +165,158,159,162,155,158,160,153,160,163,156,158,161,153,157,160,153,159,165,157, +159,164,157,167,171,163,163,167,159,163,168,159,159,161,156,160,162,155,159,162, +155,158,161,154,158,161,154,161,166,159,160,166,159,161,165,158,168,171,164,169, +173,165,161,168,159,164,169,160,160,164,157,160,167,159,167,171,162,167,168,161, +160,165,158,167,171,163,160,164,157,160,165,159,159,162,155,160,164,158,157,159, +152,160,160,152,158,160,153,155,156,149,156,158,150,160,166,158,159,163,156,159, +161,154,160,166,158,159,161,154,157,159,152,162,166,159,160,162,155,161,165,158, +160,164,157,166,168,160,159,162,155,160,166,159,168,172,164,161,167,159,160,165, +158,161,168,159,159,163,156,164,169,161,161,168,159,165,168,159,162,167,160,165, +170,162,160,164,157,161,167,160,165,168,160,68,50,70,72,55,69,117,115,119,53,32, +53,95,72,99,101,78,97,148,146,150,66,42,66,111,83,110,109,80,105,155,152,157, +109,79,105,133,98,129,66,39,64,29,27,46,181,179,98,28,27,37,40,40,50,42,48,41, +41,40,52,40,44,51,40,49,40,39,38,39,39,37,39,39,51,41,38,36,37,38,36,46,38,36, +36,52,53,61,51,49,52,52,47,51,52,47,55,51,47,51,51,47,51,51,47,51,51,47,51,51, +49,51,51,60,57,51,57,51,51,48,51,51,47,51,51,47,51,51,56,51,51,55,51,51,48,51, +51,48,51,51,50,57,51,49,51,51,54,52,51,65,51,51,48,51,51,52,52,51,58,51,51,48, +56,51,48,51,51,56,51,51,47,51,51,61,51,51,47,56,51,48,51,51,55,57,51,57,51,51, +48,58,51,47,55,51,47,60,51,58,51,51,47,51,51,47,51,51,47,51,51,56,68,51,62,58, +51,49,51,51,47,51,51,47,51,51,49,51,51,52,56,51,52,51,51,47,57,51,52,51,51,47, +56,51,53,51,51,47,51,51,55,51,51,47,52,51,47,59,51,47,64,51,47,51,51,47,51,51, +47,52,51,47,56,51,47,51,51,47,65,51,47,54,51,47,50,39,38,56,168,169,168,168,167, +169,39,42,44,51,47,62,51,47,61,51,47,54,51,63,51,51,48,51,51,60,60,51,47,59,51, +47,52,51,47,59,51,47,59,51,47,59,51,47,58,51,47,52,51,47,52,51,56,56,51,56,52, +51,48,61,51,51,51,51,48,51,51,51,62,51,61,59,51,51,52,51,53,55,51,47,51,51,47, +51,51,47,51,51,52,51,51,50,51,51,48,51,51,47,52,171,173,166,169,171,163,171,173, +167,161,165,158,168,169,163,165,168,160,168,169,162,168,169,163,160,165,158,164, +169,161,166,169,162,167,170,163,164,167,160,170,171,163,165,168,160,161,166,159, +169,170,163,169,173,166,166,170,162,171,173,167,160,167,160,170,171,163,170,171, +163,170,171,163,164,167,160,166,170,162,170,171,163,168,170,163,171,174,168,171, +173,165,170,171,163,168,170,163,173,173,167,170,173,167,170,171,163,171,173,165, +173,174,168,173,174,168,168,170,163,173,177,169,171,173,165,170,173,167,171,173, +167,162,166,159,160,162,157,170,171,163,164,169,161,164,169,161,170,173,166,168, +170,163,171,173,165,173,177,169,166,170,162,171,174,168,167,171,163,173,173,167, +170,171,163,171,173,166,170,171,163,164,167,160,164,167,160,174,178,171,171,173, +165,171,173,167,169,170,164,160,165,158,165,168,161,165,168,161,157,159,152,162, +167,160,159,162,155,168,169,163,168,169,162,161,167,160,171,173,167,166,169,160, +158,161,154,161,167,160,160,164,157,160,166,159,159,162,155,170,171,164,164,167, +160,170,173,166,173,173,167,164,168,160,170,173,167,165,168,160,161,167,160,167, +169,162,170,173,167,169,173,165,167,171,163,166,168,160,160,164,157,162,167,161, +166,169,160,162,167,160,160,164,157,161,168,161,165,168,161,162,169,161,162,169, +161,165,167,161,160,164,157,162,166,159,169,170,164,165,168,161,160,166,159,163, +168,161,162,166,159,169,170,164,169,170,164,164,169,162,164,168,160,173,178,170, +170,171,163,170,173,166,170,173,167,158,161,154,160,164,157,165,168,161,158,161, +154,161,165,158,161,165,158,160,165,158,164,169,161,171,173,166,66,53,66,70,48, +67,116,115,118,51,37,52,93,75,93,98,69,94,147,146,149,64,48,65,109,80,107,106, +75,105,154,152,160,110,79,106,66,39,64,35,32,42,129,128,76,181,181,97,28,45,51, +42,40,51,42,39,65,41,40,41,40,39,49,39,45,39,39,38,41,39,37,50,38,41,62,38,36, +37,38,36,37,38,47,56,52,47,54,51,48,51,51,47,55,51,47,58,51,47,55,51,52,52,51, +47,51,51,52,51,51,48,59,51,49,52,51,52,51,51,47,57,51,47,55,51,48,51,51,50,58, +51,48,51,51,48,51,51,56,57,51,58,51,51,48,51,51,52,51,51,47,54,51,48,61,51,48, +51,51,60,51,51,50,57,51,51,51,51,46,55,51,46,52,51,47,51,51,47,51,51,57,51,51, +58,51,51,49,56,51,50,51,51,47,68,51,59,58,51,46,51,51,61,57,51,56,59,51,52,52, +51,49,56,51,46,59,51,55,52,51,48,51,51,47,51,51,51,54,51,61,51,51,47,51,51,59, +54,51,49,51,51,58,51,51,49,52,51,47,51,51,47,51,51,47,54,51,47,61,51,58,60,51, +53,52,51,50,51,51,49,51,51,47,51,51,52,52,51,48,58,51,47,51,51,47,58,39,34,40, +168,167,170,168,167,168,39,33,40,51,58,52,51,47,52,51,47,51,51,47,58,51,47,51, +51,52,57,51,47,51,51,50,56,51,47,57,51,53,51,51,47,51,51,47,54,51,47,51,51,51, +51,51,56,56,51,47,52,51,47,58,51,55,52,51,47,52,51,47,56,51,48,56,51,47,61,51, +47,51,51,58,64,51,47,51,51,47,60,51,47,51,51,47,52,51,52,51,40,46,46,162,166, +159,170,173,166,167,169,162,166,170,162,164,169,161,167,169,162,161,167,160,161, +166,159,160,164,157,165,169,160,164,169,161,160,162,155,164,169,161,166,170,162, +165,168,160,167,169,162,168,170,163,167,171,163,167,171,163,173,174,168,170,173, +166,165,168,160,168,170,163,167,169,162,170,171,163,166,170,162,168,170,163,173, +175,169,171,174,167,173,173,166,161,166,159,168,170,163,167,169,162,170,173,165, +160,165,159,170,173,165,170,171,163,171,174,167,170,171,163,170,171,163,165,168, +160,167,171,163,167,169,162,162,166,159,160,162,155,170,171,164,169,170,163,162, +168,160,165,168,160,165,168,160,170,171,163,173,173,167,166,170,162,166,170,162, +167,171,163,173,173,167,166,170,162,167,169,162,166,170,162,166,170,162,162,166, +159,159,163,157,167,169,162,166,170,162,167,169,162,162,166,159,162,169,160,165, +167,160,161,165,158,160,164,157,158,161,154,164,167,160,168,169,163,160,164,157, +164,168,160,160,165,158,163,166,159,160,164,157,158,160,153,160,162,155,159,161, +154,160,164,157,161,165,158,170,171,163,165,168,160,167,169,162,170,171,163,161, +165,158,171,173,167,168,170,163,170,171,163,170,173,167,169,173,165,162,166,159, +165,167,160,161,166,159,165,168,161,161,166,159,158,159,151,157,159,152,158,160, +153,158,161,154,158,161,154,160,167,160,158,161,154,160,165,158,164,167,160,160, +164,157,158,160,153,157,157,150,160,165,158,161,165,158,162,166,159,160,164,157, +162,166,159,171,173,166,164,167,160,168,170,163,169,170,164,158,161,154,164,167, +160,160,164,157,158,161,154,160,164,157,166,168,160,160,166,159,161,167,160,164, +167,160,103,101,110,108,106,113,116,114,122,86,60,83,134,132,141,142,140,146, +147,145,152,106,75,103,152,152,159,152,151,158,154,152,156,110,84,109,66,39,64, +29,27,52,183,181,99,129,128,74,35,47,43,42,41,44,42,39,44,41,39,42,40,39,62,39, +41,39,39,38,39,39,37,39,38,36,37,38,36,48,38,36,37,37,37,56,52,52,51,51,47,51, +51,53,60,51,47,50,51,50,54,51,47,51,51,47,51,51,53,52,51,53,51,51,53,57,51,47, +51,51,47,55,51,51,55,51,58,57,51,47,51,51,62,51,51,47,54,51,47,51,51,48,60,51, +50,56,51,51,58,51,47,52,51,50,52,51,55,52,51,54,51,51,48,58,51,47,51,51,59,51, +51,68,51,51,51,60,51,47,59,51,48,51,51,52,51,51,54,51,51,59,51,51,49,51,51,49, +54,51,47,52,51,47,54,51,51,52,51,48,59,51,47,58,51,51,54,51,47,61,51,47,55,51, +51,51,51,56,56,51,57,55,51,55,51,51,48,51,51,47,51,51,47,56,51,49,51,51,56,51, +51,47,58,51,52,55,51,47,59,51,47,52,51,47,51,51,48,51,51,47,51,51,47,52,51,47, +51,51,47,51,51,47,59,51,47,51,42,36,49,170,170,170,170,171,170,42,39,46,51,48, +62,51,47,52,51,51,57,51,47,51,51,47,51,51,47,51,51,57,51,51,47,61,51,47,51,51, +47,51,51,47,51,51,47,51,51,55,51,51,48,58,51,48,55,51,48,55,51,47,51,51,47,51, +51,48,52,51,47,52,51,48,52,51,57,51,51,48,51,51,47,51,51,47,51,51,47,59,51,47, +52,51,57,52,51,47,56,39,36,54,170,172,165,160,165,158,161,165,158,169,170,164, +164,167,160,170,171,164,165,168,160,165,169,161,159,160,152,158,160,153,165,169, +162,159,162,155,164,168,160,164,167,160,167,169,162,169,171,163,167,171,163,168, +169,162,162,166,159,165,168,160,168,170,163,170,171,163,167,169,162,170,173,165, +175,178,171,173,177,170,174,175,169,170,173,166,173,175,168,169,173,165,166,170, +162,170,171,163,170,171,163,170,173,167,167,171,163,171,174,168,173,175,168,174, +175,168,170,173,166,173,173,167,159,161,154,168,169,162,170,171,163,166,170,162, +160,162,155,166,170,163,164,169,161,169,173,166,170,171,163,171,173,166,167,169, +162,165,168,160,170,173,167,170,173,165,169,173,165,166,169,162,170,171,163,167, +171,163,170,173,167,173,173,167,169,173,166,162,168,160,168,171,164,164,168,160, +165,168,160,161,166,159,160,164,157,160,164,157,163,167,160,158,161,154,159,161, +154,159,162,155,160,165,158,158,159,152,160,164,157,161,167,160,160,165,158,160, +164,157,158,161,154,160,164,157,163,168,161,161,166,159,167,169,162,170,171,163, +168,170,163,170,171,163,171,174,168,162,167,160,162,167,160,161,167,160,161,166, +159,164,167,160,174,177,171,171,173,166,162,166,159,158,161,154,158,161,154,158, +159,152,157,159,152,154,157,150,152,156,149,158,160,153,160,164,157,160,165,158, +154,157,150,159,162,155,161,167,160,160,164,157,161,167,160,160,165,158,158,161, +154,165,168,161,160,162,155,160,165,158,164,167,160,164,167,160,161,166,159,164, +168,160,164,167,160,161,167,160,171,174,166,162,168,160,168,169,163,167,169,162, +164,169,161,164,169,161,170,171,163,167,171,163,39,23,38,41,23,40,78,55,75,53, +48,53,57,35,56,60,35,58,104,74,100,67,61,66,67,44,65,66,46,68,110,81,113,111,84, +108,37,37,39,29,27,46,183,183,100,29,35,40,42,40,42,42,48,42,42,42,47,41,45,60, +40,38,39,39,42,39,39,52,39,39,42,39,38,38,38,38,42,43,37,36,37,52,56,51,51,46, +51,51,58,55,51,47,52,51,47,62,51,51,51,51,60,51,51,52,51,51,47,51,51,47,51,51, +49,56,51,49,51,51,47,52,51,55,57,51,46,52,51,57,52,51,47,55,51,47,59,51,56,58, +51,47,52,51,53,52,51,47,55,51,47,61,51,47,54,51,48,56,51,50,55,51,47,51,51,47, +51,51,47,51,51,47,51,51,47,52,51,49,52,51,47,58,51,48,51,51,52,51,51,47,56,51, +53,54,51,47,54,51,51,54,51,47,55,51,47,59,51,47,61,51,47,57,51,47,52,51,47,51, +51,47,52,51,47,51,51,48,51,51,48,61,51,49,51,51,53,54,51,47,51,51,47,51,51,47, +51,51,48,51,51,56,51,51,47,57,51,49,52,51,47,52,51,58,62,51,56,58,51,48,51,51, +57,51,51,47,55,51,47,58,51,47,52,51,47,54,50,45,50,42,36,49,42,39,55,50,46,57, +51,48,64,51,56,51,51,48,54,51,47,67,51,51,51,51,48,52,51,48,55,51,50,58,51,47, +51,51,47,51,51,47,51,51,47,55,51,60,59,51,47,55,51,57,51,51,48,51,51,51,62,51, +47,50,51,47,59,51,47,52,51,47,52,51,47,61,51,47,52,51,59,51,51,57,54,51,47,59, +51,47,52,51,47,56,51,47,52,40,33,41,163,169,161,161,167,160,160,164,157,160,164, +157,163,167,160,165,170,162,161,166,159,162,166,159,160,162,155,160,162,155,162, +169,162,161,163,156,165,169,161,161,167,160,162,167,160,172,173,166,160,165,158, +160,165,158,158,159,153,166,169,160,171,172,164,175,175,167,171,172,164,167,169, +163,174,176,169,175,176,169,169,174,166,170,174,166,173,174,167,171,174,168,164, +169,161,170,173,167,167,169,162,167,171,163,167,171,163,170,171,163,174,176,169, +174,179,171,172,174,166,169,171,164,161,166,158,166,169,161,162,168,161,171,172, +164,168,169,163,162,166,159,166,170,162,161,167,160,164,169,161,170,171,163,167, +169,162,168,171,164,172,175,167,171,174,166,175,177,169,168,169,163,175,175,167, +167,171,163,172,175,166,168,169,163,172,175,168,158,161,154,165,168,160,169,171, +164,164,169,161,164,167,160,161,166,159,158,160,153,160,162,155,163,168,161,161, +166,158,162,167,159,167,170,161,158,162,155,162,166,159,159,162,155,158,161,154, +163,168,161,160,164,157,160,164,157,159,161,154,162,168,160,169,173,166,162,167, +160,168,170,163,167,171,163,168,170,163,169,170,163,161,166,159,162,168,160,162, +166,159,167,171,163,170,173,166,166,170,162,170,173,167,162,167,161,156,157,150, +159,160,152,157,158,151,160,163,156,162,166,159,164,168,161,164,168,161,159,161, +154,161,162,153,159,161,154,161,166,158,160,163,156,161,166,159,159,162,155,151, +156,149,159,161,154,159,162,155,161,165,158,160,164,157,166,169,161,161,166,159, +162,167,160,162,168,161,167,170,161,159,162,155,166,169,162,168,170,163,175,175, +167,167,169,162,169,170,163,170,171,163,169,173,165,68,49,66,72,51,69,117,115, +119,53,32,55,95,71,93,101,73,97,148,146,150,66,42,69,111,83,114,109,80,105,155, +152,159,124,90,121,31,42,44,136,135,85,184,184,101,29,27,40,44,56,62,43,39,45, +42,57,42,41,40,41,40,39,55,39,48,42,53,47,53,38,37,38,38,50,38,37,36,36,52,49, +62,51,47,51,51,56,52,51,48,59,51,48,52,51,47,52,51,52,51,51,52,51,51,47,51,51, +47,56,51,47,51,51,49,66,51,47,51,51,47,52,51,48,61,51,47,59,51,47,60,51,47,55, +51,50,54,51,47,52,51,47,52,51,47,60,51,47,52,51,47,54,51,47,61,51,53,57,51,49, +56,51,57,57,51,47,51,51,47,51,51,47,58,51,50,52,51,61,58,51,47,56,51,53,58,51, +48,51,51,57,56,51,50,51,51,47,51,51,48,58,51,47,57,51,47,53,51,60,52,51,47,51, +51,50,51,51,47,51,51,47,58,51,49,55,51,48,51,51,55,51,51,57,51,51,48,57,51,50, +60,51,51,51,51,52,54,51,50,51,51,48,52,51,47,65,51,47,51,51,47,52,51,47,54,51, +47,65,51,56,51,51,50,51,51,47,58,51,61,59,51,58,52,51,47,59,51,47,51,51,55,51, +51,55,51,51,57,51,51,57,51,51,48,58,51,48,55,51,52,56,51,57,52,51,54,51,51,56, +51,51,46,57,51,47,51,51,55,55,51,47,50,51,56,54,51,46,51,51,60,51,51,52,58,51, +55,50,51,55,50,51,47,64,51,47,68,51,47,51,51,57,62,51,47,62,51,47,52,51,47,51, +51,47,57,51,51,52,51,50,60,51,47,61,51,50,52,40,34,49,162,168,160,165,167,160, +162,167,160,159,161,153,128,128,132,140,139,142,126,125,128,127,130,129,117,114, +117,117,114,117,127,130,129,119,115,119,162,166,159,166,169,161,162,166,159,162, +166,159,162,169,160,160,166,159,160,164,157,166,171,163,128,127,132,135,138,139, +137,140,141,137,140,141,144,143,146,146,146,149,144,143,146,140,142,144,173,176, +169,170,171,163,171,173,166,167,171,163,164,169,161,171,173,167,167,171,163,167, +170,161,139,141,143,147,146,149,136,140,141,141,144,145,142,141,144,120,116,118, +121,116,118,136,140,141,166,170,161,169,170,164,168,169,162,161,165,158,169,170, +164,162,168,160,162,166,159,164,170,162,120,118,119,131,135,134,137,140,141,140, +143,143,134,138,139,135,138,139,129,128,132,136,140,141,168,172,164,162,169,161, +164,169,161,164,169,161,164,168,160,172,173,166,168,169,163,162,164,157,107,105, +106,120,117,120,123,120,123,120,116,119,132,136,134,130,129,133,120,117,120,106, +105,107,161,161,154,162,167,160,161,165,158,160,162,155,159,161,154,160,164,157, +162,168,161,164,168,161,136,140,141,144,143,146,137,141,141,132,135,134,123,120, +123,123,120,123,126,125,127,134,138,139,166,169,161,161,166,159,167,170,162,166, +168,160,160,164,157,156,158,151,161,163,156,161,165,157,106,105,107,125,124,126, +111,110,112,117,114,117,117,114,117,120,117,120,125,124,126,109,108,111,163,165, +157,161,162,156,158,159,151,166,169,161,161,166,159,160,165,158,165,168,161,164, +170,161,135,135,138,123,120,123,132,136,134,135,139,140,123,120,124,117,113,115, +132,136,134,138,137,141,166,169,161,161,167,160,161,167,160,166,170,162,66,46, +64,70,48,67,116,117,125,51,29,53,93,67,90,98,68,94,147,148,155,64,38,66,109,79, +105,106,75,104,154,151,158,66,39,64,34,31,41,134,133,86,185,184,104,29,27,53,44, +41,58,43,63,43,42,39,43,41,43,52,40,39,40,39,53,46,53,57,52,53,48,52,52,52,51, +52,47,61,51,58,51,51,47,51,51,67,61,51,47,59,51,50,52,51,65,51,51,52,51,51,47, +51,51,47,51,51,47,56,51,52,51,51,47,51,51,58,51,51,52,52,51,49,51,51,47,58,51, +56,64,49,45,50,42,40,43,39,42,46,39,34,47,42,39,42,50,45,54,51,58,52,51,47,52, +50,53,50,42,37,41,39,34,39,39,34,39,39,42,57,39,37,48,40,40,50,42,36,52,45,41, +52,50,46,52,51,48,51,51,50,51,51,46,51,51,49,51,51,52,55,51,47,57,50,48,56,43, +46,48,40,34,47,39,40,39,39,34,39,39,34,45,39,35,39,39,40,53,42,51,42,50,55,61, +51,55,51,51,48,51,51,55,51,51,47,54,51,47,60,51,58,55,50,57,56,42,55,41,39,34, +50,39,34,40,39,34,49,39,33,40,39,37,39,39,34,39,42,45,45,50,60,49,51,49,58,51, +50,51,51,48,58,51,47,51,51,48,51,51,48,51,50,54,49,42,37,41,39,35,41,39,47,39, +39,38,43,39,34,49,39,57,39,39,33,39,42,36,41,50,45,71,51,47,50,51,52,52,51,51, +52,51,48,52,51,48,69,51,48,58,50,57,50,42,38,48,39,34,43,39,34,40,39,36,50,39, +34,48,39,34,40,39,33,39,42,60,43,50,49,55,51,46,52,51,50,52,40,33,48,164,170, +163,160,164,157,161,166,159,119,116,119,33,73,92,38,72,91,39,73,91,41,74,93,41, +75,94,42,74,93,47,87,109,47,97,122,106,105,108,161,165,158,166,169,160,171,174, +166,158,160,153,160,164,157,162,167,160,131,135,133,56,100,134,53,87,113,50,85, +111,51,87,114,50,87,113,49,85,111,49,85,111,45,84,112,136,139,140,166,169,161, +167,169,162,170,171,163,168,170,163,169,173,165,173,175,167,112,111,113,46,86, +113,49,85,111,51,85,111,52,87,113,51,87,114,51,87,112,52,87,112,46,85,113,139, +142,143,160,166,158,161,165,158,164,168,160,169,170,164,162,166,159,165,169,161, +130,134,133,66,118,155,71,118,154,68,117,153,71,119,157,69,118,154,63,108,140, +57,95,124,47,85,114,128,128,132,158,158,151,160,164,157,161,166,159,160,164,157, +161,165,158,161,166,159,119,115,119,49,88,114,52,88,112,51,88,112,52,88,114,52, +88,114,51,86,112,52,87,112,50,89,115,99,98,102,160,162,155,160,161,155,160,167, +160,160,164,157,158,160,153,160,162,155,114,111,114,48,86,113,51,85,111,50,86, +112,56,98,126,65,111,144,69,118,152,70,118,154,64,117,155,131,134,133,161,166, +159,160,164,157,160,166,159,167,170,163,159,160,152,157,159,152,112,109,112,49, +89,114,52,88,112,52,87,112,52,88,112,52,88,112,51,87,112,51,88,112,51,90,117,96, +90,92,152,155,149,160,160,152,160,164,157,161,166,159,158,160,153,157,162,154, +142,140,146,32,70,90,39,73,91,39,72,91,39,74,93,41,74,93,40,73,92,39,72,91,32, +70,91,134,138,139,162,167,160,162,166,159,164,168,160,103,102,110,108,107,113, +116,114,118,86,61,83,134,133,141,142,141,146,147,145,149,106,76,103,152,151,156, +152,150,158,154,153,156,66,39,64,31,28,39,187,186,144,134,134,78,35,32,50,44,45, +44,43,39,43,42,48,54,41,43,52,40,46,40,39,37,58,53,48,59,52,49,57,51,47,51,51, +47,51,51,48,56,51,48,51,51,47,52,51,57,55,51,57,61,51,46,52,51,47,51,51,47,51, +51,57,59,51,49,51,51,51,51,51,48,51,51,49,51,51,56,58,50,46,60,46,42,62,41,35, +53,35,32,35,169,168,169,168,166,169,168,167,171,170,170,170,42,54,43,51,47,54, +51,48,51,42,43,63,170,169,173,168,166,168,168,166,168,168,166,168,168,166,168, +168,166,168,159,159,159,130,128,132,46,45,52,51,57,56,51,47,55,51,66,51,51,46, +55,51,48,50,51,58,70,43,44,49,154,153,156,166,164,166,168,168,169,168,166,168, +168,166,168,168,169,168,168,166,169,170,168,171,42,38,42,51,48,54,51,49,51,51, +47,58,51,52,51,51,47,51,51,47,52,42,36,41,170,170,171,168,166,171,168,166,168, +168,166,169,168,168,168,168,168,168,168,167,168,170,169,170,42,36,45,51,47,51, +51,47,51,51,48,65,51,47,51,51,47,51,51,55,54,42,37,43,170,168,170,168,169,168, +168,166,169,168,166,171,168,167,169,168,166,171,168,166,168,170,171,171,42,37, +40,51,48,68,51,58,62,51,48,59,51,50,52,51,55,55,51,47,65,42,50,50,170,168,171, +168,166,168,168,167,168,168,170,168,168,169,171,168,166,168,168,166,171,170,168, +170,42,41,47,51,66,52,51,59,54,40,39,51,165,171,163,161,166,159,161,167,159,120, +117,121,41,74,92,68,120,150,68,120,150,46,75,93,46,75,93,68,120,150,69,122,151, +48,89,109,117,114,118,162,166,159,159,161,155,159,164,157,164,167,160,164,169, +162,159,162,155,115,113,114,68,115,147,103,162,193,88,144,183,56,88,112,56,88, +112,87,142,182,87,142,182,51,85,111,137,140,141,166,169,161,162,167,160,171,173, +166,167,171,163,164,169,161,166,170,161,114,113,115,52,87,112,87,142,182,87,142, +182,56,88,112,56,88,112,87,142,182,87,142,182,51,85,111,137,140,141,165,168,161, +160,165,158,160,166,159,166,170,162,164,167,160,166,169,161,135,139,140,71,118, +154,119,183,206,119,183,206,77,121,154,77,121,154,117,180,204,109,170,198,56,93, +122,123,119,122,163,168,160,164,167,160,164,169,162,160,164,157,167,170,163,166, +169,161,120,117,120,52,88,112,87,142,183,87,142,182,56,88,112,56,88,112,87,142, +182,87,142,183,53,87,113,111,107,110,162,164,159,156,157,150,160,165,158,160, +166,159,160,164,157,163,169,161,141,143,144,51,86,111,87,142,182,87,142,182,56, +89,113,62,98,124,110,170,198,118,180,204,71,118,154,132,135,134,166,169,161,160, +165,158,160,162,155,160,165,158,160,167,160,158,159,152,114,110,113,52,88,113, +87,142,182,87,140,181,87,140,181,87,140,181,87,140,181,87,142,182,52,88,113,112, +111,113,155,158,150,154,157,150,159,162,155,157,159,152,158,159,151,161,167,159, +140,139,142,38,72,91,68,120,150,68,120,150,46,75,93,46,75,93,68,120,150,68,120, +150,40,73,92,120,116,120,162,166,159,164,168,160,164,169,161,39,23,38,41,23,42, +78,55,75,53,48,53,57,35,56,60,35,61,104,75,100,67,60,66,67,42,73,66,39,64,110, +82,112,66,39,64,31,46,40,187,186,137,138,137,82,39,37,44,44,51,44,43,44,45,42, +41,61,41,40,40,40,39,41,38,37,53,53,48,52,52,59,65,51,52,51,51,54,51,51,55,57, +51,52,52,51,57,51,51,47,52,51,61,59,51,59,51,51,48,51,51,47,51,51,50,51,51,50, +51,51,57,51,51,48,51,51,46,65,46,41,55,37,32,37,111,112,110,169,167,169,169,169, +170,168,166,170,168,167,168,168,166,168,170,169,170,42,51,49,51,54,62,51,52,55, +42,37,44,170,168,170,168,166,169,168,166,170,168,166,168,168,166,170,168,167, +168,162,160,163,140,138,141,45,42,55,51,51,55,51,62,58,51,46,66,51,51,59,51,54, +51,51,53,53,43,39,47,159,157,162,168,168,168,168,168,169,168,168,168,168,166, +168,168,169,171,168,166,170,170,168,170,42,36,48,51,47,51,51,57,51,51,47,56,51, +47,52,51,48,51,51,47,55,42,36,41,170,170,170,168,166,168,168,166,168,168,167, +168,168,166,168,168,169,169,168,167,168,170,168,173,42,36,50,51,58,51,51,47,55, +51,49,51,51,47,51,51,47,51,51,47,72,42,36,41,170,171,170,168,168,170,168,166, +168,168,166,168,168,169,169,168,167,168,168,166,168,170,170,170,42,39,45,51,55, +61,51,48,52,51,48,56,51,49,61,51,56,59,51,58,51,42,48,42,170,171,170,168,166, +168,168,166,169,168,165,168,168,166,168,168,166,168,168,167,168,170,169,172,42, +36,52,51,46,51,51,46,54,40,44,41,163,164,157,161,167,160,163,168,161,111,110, +113,41,74,92,68,119,149,73,124,153,46,75,92,46,75,92,73,124,153,68,119,149,42, +76,93,111,108,111,159,161,153,158,161,154,159,162,155,169,170,164,168,169,162, +168,172,164,120,117,120,69,120,153,113,175,201,110,165,198,57,88,114,56,87,112, +93,147,188,86,140,181,51,85,111,141,144,145,166,169,161,167,169,162,169,173,166, +162,168,160,169,170,164,169,171,163,127,129,129,51,86,111,86,140,181,93,147,188, +56,87,112,56,87,112,93,147,188,86,140,181,51,85,111,141,144,145,163,168,161,160, +165,158,164,168,160,168,170,163,164,167,160,170,172,164,126,125,127,70,118,152, +118,182,205,128,185,210,77,119,154,77,119,154,128,185,209,116,178,203,61,105, +137,135,139,139,169,171,163,164,168,160,164,167,160,164,167,160,167,169,163,166, +169,161,116,113,116,51,86,112,86,140,181,93,147,188,56,87,112,56,87,112,93,147, +188,86,140,181,52,87,112,111,108,111,157,158,151,156,158,151,156,158,151,157, +159,152,157,160,152,163,167,160,142,141,144,51,85,111,86,140,181,93,147,188,56, +87,112,56,88,113,103,158,194,108,169,197,69,116,150,126,129,128,161,165,158,160, +165,158,160,164,157,163,168,161,160,164,157,163,168,161,120,117,120,56,98,124, +86,141,181,92,147,186,93,147,186,93,147,186,92,147,186,86,140,181,51,87,112,124, +121,124,157,159,152,156,157,150,158,162,155,157,159,152,161,165,158,160,163,156, +126,125,127,39,72,91,68,119,149,73,124,153,46,75,92,46,75,92,73,124,153,68,119, +149,40,72,91,127,130,129,167,170,161,164,167,160,169,170,163,68,50,66,72,51,69, +117,117,123,53,32,53,95,72,93,101,73,97,148,148,153,66,42,67,111,84,114,109,87, +107,155,152,160,66,39,64,31,29,56,188,187,110,30,28,40,44,59,45,44,49,44,43,42, +46,42,45,43,41,40,41,39,44,40,54,49,54,52,53,52,52,48,52,51,48,54,51,60,55,51, +47,52,51,48,51,51,56,58,51,48,51,51,47,51,51,49,52,51,51,52,51,47,51,51,48,56, +51,48,51,51,58,51,51,47,50,43,38,62,111,115,114,169,167,171,168,167,169,169,167, +169,111,110,110,36,32,46,39,47,53,39,48,40,42,40,55,50,46,50,51,53,56,51,47,60, +50,56,59,42,36,42,39,34,39,39,34,39,39,44,45,39,35,39,40,35,39,41,38,43,45,41, +54,50,49,56,51,49,56,51,51,55,51,47,52,51,55,52,51,59,62,51,49,59,50,45,54,43, +37,49,40,37,46,39,35,39,39,47,43,39,38,45,39,33,38,39,34,40,42,36,54,50,45,55, +51,47,57,51,48,51,51,48,51,51,55,51,51,46,51,51,47,56,50,45,49,42,41,41,39,33, +46,39,59,46,39,33,39,39,34,39,39,36,39,39,41,53,42,36,42,50,45,59,51,47,51,51, +47,59,51,56,57,51,55,57,51,47,51,51,47,57,50,61,55,42,36,43,39,34,39,39,34,39, +39,41,39,39,33,49,39,34,39,39,34,39,42,36,41,50,51,49,51,49,54,51,49,52,51,53, +56,51,48,54,51,52,52,51,48,58,50,46,57,42,36,41,39,34,46,39,41,39,39,54,39,39, +44,51,39,41,39,39,35,45,42,36,43,50,47,49,51,60,51,51,50,67,40,34,41,160,162, +155,158,159,152,162,167,159,114,113,116,41,73,92,68,120,150,74,125,154,46,75,93, +46,75,93,74,125,154,68,120,150,41,75,92,108,108,110,147,152,144,161,166,159,162, +167,160,166,169,162,162,166,159,170,172,165,120,117,119,71,121,154,119,182,205, +122,179,206,65,103,131,57,89,113,93,148,189,86,142,182,51,85,111,134,138,139, +172,173,164,164,169,161,167,171,163,164,167,160,160,166,159,173,175,167,119,116, +119,51,86,112,87,142,182,93,148,189,56,88,112,56,88,112,93,148,189,86,142,182, +51,85,111,141,144,144,166,169,161,159,164,157,161,165,158,173,174,168,167,169, +162,168,170,163,126,125,127,69,116,152,119,183,206,128,186,210,77,121,154,77, +121,154,128,186,210,119,183,206,69,115,149,135,138,139,163,167,160,167,170,163, +162,166,159,160,165,158,157,160,153,161,166,159,126,125,127,51,86,112,87,142, +182,93,148,189,56,88,112,56,88,112,93,148,189,87,142,182,53,88,113,97,92,93,162, +166,159,154,157,150,154,157,150,157,159,152,158,159,151,161,166,159,126,125,127, +52,86,112,87,142,182,93,148,189,56,88,112,56,88,112,94,149,189,96,154,188,64, +108,141,127,129,129,167,170,161,160,164,157,159,161,154,160,164,157,159,161,154, +162,168,160,123,120,123,64,111,141,98,154,188,94,149,188,93,148,188,93,148,188, +93,148,188,88,142,182,51,88,112,120,117,120,160,163,155,149,152,148,159,159,151, +154,157,150,147,151,144,161,163,156,135,139,140,39,72,91,68,120,150,74,125,154, +46,75,93,46,75,93,74,125,154,68,120,150,41,74,92,114,113,116,161,165,158,164, +169,161,168,169,162,66,46,68,70,48,67,116,116,118,51,37,55,93,67,95,98,68,94, +147,147,149,64,48,69,109,84,107,106,77,113,154,151,155,66,39,64,31,29,44,189, +187,109,30,43,43,45,48,45,44,54,58,43,45,46,42,41,42,40,43,55,55,50,55,53,50,53, +52,53,52,52,49,53,51,48,58,51,47,55,51,47,55,51,52,61,51,47,51,51,53,51,51,47, +52,51,47,51,51,51,51,51,57,51,51,47,51,51,48,51,51,48,67,48,45,48,114,115,113, +168,166,170,168,166,169,110,109,110,37,32,38,46,43,47,50,46,55,51,47,54,51,48, +52,51,48,50,51,48,69,51,47,52,51,50,55,51,47,54,51,47,57,51,55,52,51,47,61,51, +48,51,51,47,51,51,54,58,51,68,52,51,56,53,51,57,62,51,55,58,51,46,55,51,47,52, +51,46,61,51,46,51,51,47,50,51,52,52,51,59,51,51,46,51,51,55,58,51,50,51,51,48, +50,51,50,72,51,55,51,51,50,60,51,58,56,51,50,55,51,55,51,51,47,58,51,64,65,51, +64,66,51,47,51,51,47,51,51,47,51,51,47,62,51,46,54,51,47,51,51,58,51,51,47,51, +51,47,56,51,56,52,51,60,64,51,59,51,51,47,55,51,50,51,51,51,51,51,47,51,51,47, +62,51,47,51,51,47,52,51,48,51,51,47,57,51,57,56,51,47,51,51,48,56,51,47,54,51, +47,51,51,49,54,51,47,62,51,47,52,51,49,58,51,52,52,51,59,64,51,47,51,51,47,54, +51,47,52,51,49,51,51,47,51,51,47,52,51,46,57,51,53,56,51,47,52,107,107,107,158, +157,158,51,47,51,51,47,51,39,33,40,174,175,166,160,165,158,169,171,164,137,136, +140,40,74,93,45,74,91,45,73,90,47,77,94,47,77,94,45,73,90,46,74,91,41,76,93,123, +121,126,160,162,154,163,167,160,161,166,159,169,170,164,169,170,164,166,170,161, +123,120,123,71,122,157,75,118,150,74,116,149,74,116,149,66,103,132,55,86,110,55, +86,109,52,87,113,141,144,145,163,168,161,162,167,160,174,174,168,169,173,166, +170,171,163,175,175,167,137,141,142,52,87,113,55,86,109,54,85,109,57,89,114,57, +89,114,54,85,109,55,86,109,52,87,113,141,143,144,171,174,166,167,169,162,162, +168,160,173,173,166,170,173,167,167,171,163,135,139,139,64,110,143,74,116,148, +74,117,150,78,122,157,78,122,157,74,117,150,75,118,150,71,119,155,135,138,139, +163,167,160,162,168,160,173,174,168,171,173,166,169,171,164,172,173,164,139,139, +142,51,87,113,55,86,109,54,85,109,57,89,114,57,89,114,54,85,109,55,86,109,53,88, +114,120,118,122,163,168,161,166,169,161,160,164,157,159,161,154,159,162,155,170, +172,165,126,126,127,52,88,114,55,86,109,54,85,109,57,89,114,57,89,114,54,85,109, +55,87,110,59,98,126,112,109,110,167,170,162,164,169,160,160,165,158,162,169,161, +163,167,160,164,168,160,123,120,123,70,120,154,69,108,137,60,93,119,53,84,108, +53,84,107,54,84,107,55,86,109,52,88,114,130,129,133,161,166,158,158,160,153,159, +162,155,162,168,161,162,166,159,163,167,160,135,139,140,39,73,92,45,74,91,45,73, +90,47,77,94,47,77,94,45,73,90,46,74,91,41,75,93,124,121,124,161,168,161,160,164, +157,161,166,159,103,103,112,108,110,111,116,114,118,86,61,83,134,134,142,142, +143,144,147,145,149,106,76,103,152,150,154,152,151,156,154,152,160,66,39,64,31, +29,44,189,188,113,30,33,43,45,44,60,44,42,43,43,45,53,42,39,41,56,49,59,54,51, +54,53,49,53,52,57,52,52,59,55,51,51,52,51,53,58,51,47,51,51,47,51,51,47,51,51, +47,51,51,63,62,51,47,51,51,47,51,51,47,51,51,47,61,51,53,51,51,48,51,51,56,50, +38,59,38,171,169,172,111,110,112,43,38,43,50,46,56,51,48,58,51,47,52,51,47,66, +51,47,64,51,56,52,51,48,51,51,53,54,51,49,55,51,47,52,51,47,52,51,48,58,51,51, +52,51,47,51,51,47,67,51,47,55,51,57,62,51,50,55,51,48,52,51,46,56,51,67,56,51, +46,65,51,66,51,51,59,60,51,56,70,51,47,52,51,47,57,51,50,60,51,48,51,51,48,56, +51,48,51,51,47,62,51,47,51,51,51,54,51,50,51,51,55,51,51,48,57,51,55,51,51,52, +54,51,58,55,51,47,50,51,47,56,51,50,51,51,56,51,51,55,51,51,47,59,51,50,56,51, +47,51,51,48,51,51,49,58,51,61,51,51,51,52,50,45,49,42,41,43,42,36,51,50,45,50, +51,47,52,51,52,52,51,55,60,51,52,51,51,53,51,51,51,57,51,50,51,51,50,57,51,52, +59,51,47,52,51,47,59,51,47,51,51,47,51,51,56,56,51,47,59,51,47,59,51,53,60,51, +47,56,51,53,56,51,52,64,51,47,55,51,47,51,51,55,66,51,47,50,51,47,57,95,94,95, +148,147,149,51,47,56,51,59,51,40,44,41,162,164,157,157,159,152,161,166,158,117, +114,117,41,73,92,68,120,150,74,125,154,46,75,93,46,75,93,74,125,154,68,120,150, +41,75,92,117,114,117,155,157,150,161,167,160,160,164,157,161,165,158,159,162, +155,162,166,159,137,141,142,71,118,153,119,183,206,128,186,210,76,120,153,72, +114,145,107,163,197,88,143,183,50,86,111,137,141,142,165,168,161,161,165,158, +164,167,160,160,166,159,167,169,162,172,174,166,137,140,141,51,85,111,86,142, +182,93,148,189,56,88,112,56,88,112,93,148,189,86,142,182,50,85,111,148,147,150, +175,177,169,173,173,167,160,165,159,173,174,168,164,169,161,161,167,159,137,140, +141,56,95,124,111,171,199,126,185,209,77,121,154,77,121,154,128,186,210,118,183, +206,70,117,153,137,140,141,165,169,161,173,173,167,173,175,169,167,169,162,164, +169,161,162,168,161,135,139,139,50,86,111,87,142,182,93,148,189,56,88,112,56,88, +112,93,148,189,87,142,182,52,87,112,108,107,108,162,166,158,160,166,159,160,164, +157,159,162,155,159,162,155,161,165,158,119,116,119,51,86,112,87,142,182,93,148, +189,56,88,112,56,88,112,93,148,189,87,142,182,51,87,113,127,129,129,161,165,158, +166,168,160,160,164,157,161,165,158,153,156,149,161,167,159,132,136,135,70,119, +154,119,180,204,117,174,202,103,159,194,94,149,188,93,148,188,88,142,182,51,86, +112,126,125,127,162,168,161,157,159,152,162,167,160,159,160,152,160,164,157,165, +168,161,141,141,144,39,75,93,68,120,150,74,125,154,46,75,93,46,75,93,74,125,154, +68,120,150,41,74,92,120,117,120,161,166,158,157,158,151,160,166,159,39,24,38,41, +33,44,78,54,75,53,36,56,57,37,56,60,49,64,104,73,100,36,32,54,35,30,56,36,26,50, +69,59,87,66,39,64,31,35,44,189,191,115,30,28,43,45,45,45,44,48,51,43,42,43,42, +57,42,56,53,57,54,64,54,53,52,53,52,48,59,52,49,53,51,47,61,51,47,52,51,47,54, +51,47,51,51,47,54,51,47,52,51,47,52,51,47,60,51,49,58,51,47,51,51,47,66,51,47, +56,51,56,51,51,65,58,50,45,56,43,56,42,46,41,53,51,54,51,51,60,62,51,46,54,51, +51,51,51,47,61,51,48,51,51,52,52,51,53,51,51,47,51,51,47,56,51,47,52,51,47,51, +51,49,62,51,47,61,51,47,51,51,48,51,51,59,51,51,55,65,51,68,55,51,48,57,51,47, +52,51,52,52,51,49,56,51,47,52,51,58,51,51,47,54,51,47,51,51,53,62,51,48,56,51, +47,56,51,61,51,51,56,51,51,48,51,51,56,56,51,50,51,51,51,56,51,48,51,51,47,62, +51,47,51,51,47,51,51,53,51,51,47,51,51,52,51,51,47,65,51,47,51,51,50,51,51,48, +52,51,59,51,51,47,69,51,50,60,51,55,51,51,47,51,51,58,54,42,36,47,170,168,170, +170,168,170,42,43,49,51,48,55,51,60,55,51,47,52,51,48,60,51,47,58,51,47,51,51, +47,51,51,53,51,51,47,52,51,47,56,51,47,58,51,63,51,51,47,51,51,55,55,51,47,51, +51,49,54,51,48,62,51,52,52,51,47,61,51,47,51,51,56,60,51,47,60,51,47,61,51,47, +51,51,59,51,95,92,95,148,147,148,51,56,51,51,46,51,40,33,44,165,170,163,160,165, +158,162,168,161,104,99,104,41,73,92,68,119,149,73,124,153,46,75,92,46,75,92,73, +124,153,68,119,149,41,73,92,111,110,113,162,166,159,165,169,162,165,168,160,164, +167,160,161,166,159,162,166,159,140,143,144,70,117,153,118,182,205,128,185,210, +77,119,154,76,119,153,120,177,205,99,157,190,52,87,112,117,115,116,167,172,163, +170,171,163,171,174,168,165,168,160,168,170,163,175,174,167,141,144,144,50,85, +111,86,140,181,93,147,188,56,87,112,56,87,112,93,147,188,86,140,181,49,85,111, +136,140,141,167,170,162,170,173,166,171,173,167,171,173,165,170,171,163,175,174, +167,146,146,149,49,86,111,98,155,189,120,177,204,76,118,153,77,119,154,128,185, +210,118,182,205,70,117,153,140,142,143,173,174,166,171,173,165,173,174,167,170, +171,163,166,170,162,172,173,164,123,119,121,51,86,111,86,140,181,93,147,188,56, +87,112,56,87,112,93,147,188,86,140,181,52,86,112,117,114,116,163,167,160,151, +156,149,156,158,151,160,165,158,161,165,158,162,167,160,138,141,142,50,85,111, +86,140,181,93,147,188,56,87,112,56,87,112,93,147,188,86,140,181,51,86,111,123, +120,123,161,165,158,168,169,163,164,168,160,161,166,159,159,162,155,161,163,156, +117,113,114,70,118,154,118,181,205,124,183,207,116,173,201,102,158,192,92,148, +186,86,140,181,50,85,111,135,139,140,161,163,156,160,161,155,166,169,161,160, +161,155,158,160,153,160,163,156,144,143,146,45,86,109,71,125,153,73,124,153,46, +75,92,46,75,92,73,124,153,68,119,149,40,74,91,116,113,117,166,170,162,166,169, +160,168,169,162,68,49,67,72,53,69,117,117,119,53,38,52,95,70,95,101,76,97,148, +148,150,39,33,50,72,62,86,69,60,87,115,115,119,66,39,64,32,29,51,189,190,116,31, +33,43,45,69,45,44,42,45,43,44,43,42,39,43,56,50,56,54,48,55,53,61,59,52,48,62, +52,48,57,51,47,59,51,47,56,51,47,65,51,49,64,51,47,58,51,47,58,51,47,59,51,47, +64,51,51,51,51,46,59,48,49,58,51,46,58,51,46,51,51,60,51,51,54,51,51,46,52,51, +47,51,51,47,51,51,46,51,51,62,54,51,47,52,51,47,54,51,50,51,51,57,51,51,49,51, +51,50,56,51,51,51,51,47,51,51,47,55,51,49,51,51,47,51,51,47,57,51,53,54,51,48, +51,51,47,60,51,62,51,51,47,54,51,47,55,51,49,55,51,47,52,51,47,55,51,47,54,51, +47,51,51,48,51,51,47,51,51,47,65,51,51,51,51,50,51,51,48,59,51,55,51,51,52,51, +51,48,58,51,47,51,51,47,51,51,53,60,51,47,51,51,47,51,51,47,51,51,47,52,51,48, +51,51,47,51,51,47,51,51,61,57,51,51,52,51,48,60,51,55,51,51,49,51,51,48,51,51, +48,54,51,48,51,39,34,49,168,169,168,168,166,171,39,51,50,51,47,52,51,52,55,51, +57,52,51,48,52,51,47,57,51,47,52,51,47,51,51,47,56,51,52,54,51,50,57,51,55,64, +51,47,65,51,47,51,51,58,51,51,47,69,51,47,58,51,49,52,51,47,52,51,47,58,51,49, +55,51,59,55,51,51,52,51,51,56,51,53,52,51,49,52,95,92,96,148,147,149,51,46,51, +51,49,51,40,38,42,167,170,163,160,162,155,166,169,161,140,140,143,39,72,91,69, +120,151,69,120,151,46,75,93,46,75,93,68,120,150,68,120,150,40,73,92,125,125,127, +162,166,158,162,166,159,166,169,162,171,173,167,169,170,164,161,167,160,137,141, +141,70,117,153,121,183,208,121,183,208,77,121,154,77,121,154,119,182,205,113, +174,200,58,99,128,145,143,148,169,171,164,168,170,163,170,171,163,170,171,163, +169,173,166,171,174,166,144,144,147,50,85,111,87,142,182,87,142,182,56,88,112, +56,88,112,87,142,182,87,142,182,49,85,111,147,146,149,172,175,168,171,174,168, +167,169,162,171,174,168,171,173,166,172,174,166,146,146,149,49,85,111,88,143, +183,100,158,191,72,114,145,76,120,153,119,183,206,119,183,206,68,117,153,148, +146,151,167,171,163,173,173,166,173,175,169,171,174,167,173,178,172,171,174,167, +144,143,146,50,86,111,88,142,185,88,142,185,56,88,112,56,88,112,88,142,185,87, +142,182,51,87,112,127,126,128,160,164,156,157,159,152,157,159,152,160,162,155, +159,162,155,161,165,158,132,135,134,50,86,111,88,142,185,88,142,185,56,88,112, +56,88,112,88,142,185,88,142,185,51,86,112,127,130,129,161,163,156,161,166,159, +165,169,162,162,168,161,159,161,154,163,168,160,136,139,140,70,119,154,128,136, +154,128,134,151,119,179,204,124,126,146,119,114,139,88,143,185,51,86,112,132, +136,134,161,167,159,160,164,157,162,169,160,165,168,161,161,166,159,159,162,154, +142,141,144,45,86,110,88,156,180,73,127,156,46,75,93,46,75,93,69,120,151,68,120, +150,39,73,91,130,130,134,169,171,164,161,165,158,169,171,164,66,55,66,70,50,68, +116,115,120,51,28,49,93,78,93,98,72,96,147,146,151,34,25,49,74,67,80,67,56,83, +114,117,120,66,39,64,32,34,61,189,189,116,31,28,43,46,42,46,44,42,44,43,43,57, +42,39,43,40,49,41,55,60,54,53,51,53,52,50,52,52,48,52,51,47,51,51,52,51,51,61, +57,51,48,52,51,56,54,51,52,60,51,48,72,51,62,51,51,61,59,43,38,47,114,113,113, +38,33,48,50,49,49,51,47,56,51,53,51,51,47,51,51,49,52,51,47,56,51,47,51,51,47, +51,51,47,57,51,47,57,51,50,64,51,51,51,51,48,52,51,47,51,51,48,51,51,47,51,51, +47,51,51,55,51,51,47,51,51,47,55,51,55,56,51,55,51,51,48,51,51,49,51,51,48,64, +51,52,51,51,47,57,51,47,56,51,59,56,51,55,58,51,48,68,51,51,51,51,52,51,51,47, +56,51,53,55,51,47,54,51,51,51,51,50,51,51,48,65,51,55,51,51,47,60,51,47,52,51, +48,51,51,48,54,51,51,51,51,47,51,51,47,60,51,47,51,51,47,60,51,47,52,51,47,59, +51,50,60,51,47,52,51,57,51,51,48,56,51,55,51,51,49,69,51,53,55,39,35,39,168,166, +168,168,166,168,39,41,40,51,50,52,51,57,59,51,48,57,51,48,58,51,54,51,51,61,51, +51,57,51,51,52,51,51,55,51,51,47,51,51,51,52,51,58,61,51,61,51,51,52,51,51,47, +51,51,47,61,51,47,52,51,47,52,51,57,51,51,47,51,51,47,55,51,68,51,51,48,58,51, +57,52,51,47,51,95,92,96,148,147,149,51,66,51,51,51,58,40,33,44,162,168,161,160, +164,157,162,169,161,122,119,123,32,68,88,32,67,87,32,67,87,32,69,89,32,69,89,32, +67,87,32,67,87,32,69,89,100,100,103,157,159,152,160,165,158,161,165,158,165,168, +160,165,168,160,161,163,156,135,135,138,54,112,151,56,111,148,57,113,148,60,115, +153,60,114,153,57,111,148,57,112,147,50,106,143,135,135,138,161,166,159,160,164, +157,164,169,161,166,170,163,161,165,158,171,175,166,135,134,137,40,82,111,43,82, +109,43,82,108,44,83,111,44,84,111,43,82,109,42,82,108,40,82,110,140,142,143,165, +169,162,173,173,167,166,170,162,170,171,163,170,171,163,168,172,164,140,143,144, +39,82,110,43,82,109,44,83,110,51,97,128,57,109,144,58,112,149,57,112,148,55,113, +151,136,140,141,163,167,160,164,169,161,170,173,167,164,167,160,170,173,167,167, +171,163,125,124,126,39,82,111,42,82,108,42,82,108,44,84,111,43,83,111,42,82,108, +42,82,108,42,83,112,107,106,108,160,163,156,154,158,150,154,157,150,160,166,159, +160,161,155,161,162,156,126,125,127,41,82,111,42,82,108,42,82,108,43,83,111,43, +83,111,42,82,108,41,82,108,41,83,111,103,98,103,161,164,156,161,165,158,160,164, +157,158,162,155,157,161,154,161,166,158,122,119,122,55,115,153,106,87,111,106, +86,111,57,111,148,106,84,109,105,80,102,46,91,120,41,83,112,109,105,109,158,162, +155,160,164,157,161,166,159,160,166,159,159,162,155,161,165,158,134,138,139,33, +68,89,36,75,98,41,87,113,34,73,95,32,68,89,32,67,87,32,67,87,32,67,88,116,116, +118,163,168,160,159,162,155,164,169,161,103,103,109,108,108,111,116,115,118,86, +61,91,134,134,140,142,142,144,147,146,149,64,58,90,114,113,117,112,113,117,115, +115,117,66,39,64,32,29,43,189,188,115,31,31,42,46,43,49,44,42,48,43,52,43,42,54, +54,40,50,53,55,58,54,53,54,60,52,49,58,52,48,52,51,53,55,51,55,51,51,51,66,51, +51,50,51,51,61,51,54,56,51,58,55,51,47,52,46,50,47,111,110,111,168,166,172,171, +168,170,43,39,43,51,47,51,51,47,51,51,47,51,51,57,51,51,48,51,51,57,58,51,52,51, +51,47,51,51,47,51,51,48,52,51,53,51,51,49,51,51,57,57,51,55,58,51,52,51,51,50, +51,51,47,51,51,58,51,51,47,51,51,57,52,51,48,60,51,49,51,51,48,51,51,48,51,51, +47,51,51,47,51,51,47,51,51,55,59,51,47,58,51,47,54,51,47,57,51,47,51,51,47,51, +51,47,51,51,48,51,51,50,51,51,47,51,51,47,51,51,52,51,51,47,55,51,51,52,51,47, +61,51,48,51,51,48,58,51,49,52,51,47,52,51,47,59,51,55,51,51,47,52,51,47,52,51, +49,62,51,47,57,51,47,51,51,48,52,51,54,51,51,58,54,51,48,51,39,38,43,168,168, +168,168,169,168,39,34,41,51,56,54,51,65,54,51,50,55,51,57,57,51,55,51,51,48,51, +51,51,57,51,58,51,51,48,51,51,50,52,51,49,52,51,47,56,51,47,67,51,47,51,51,50, +51,51,53,58,51,47,52,51,48,51,51,54,51,51,61,51,51,48,60,51,46,51,51,56,52,51, +47,52,51,47,56,95,92,96,148,147,149,51,52,52,51,49,52,40,40,44,164,169,162,160, +164,157,167,170,162,107,105,109,190,189,192,190,189,192,190,189,192,189,188,191, +189,187,191,192,191,194,189,188,191,189,188,191,95,94,98,161,164,156,160,166, +159,160,162,155,160,164,157,165,168,161,158,162,154,132,132,135,188,192,192,193, +192,195,189,187,190,186,185,190,188,186,189,191,194,195,189,187,190,190,188,191, +117,115,117,161,165,158,159,162,155,160,166,160,160,162,155,160,166,159,165,168, +161,136,139,141,185,183,186,184,183,186,186,185,188,187,187,191,186,185,188,185, +184,187,186,189,190,187,186,189,124,124,129,169,171,164,169,173,165,170,171,163, +173,173,167,174,175,169,171,171,164,143,143,146,187,186,189,186,184,187,182,181, +185,186,184,187,185,184,187,185,184,187,188,186,189,188,187,190,140,139,143,172, +172,164,164,169,161,168,169,162,164,168,160,164,167,160,165,170,162,115,115,118, +193,192,195,189,187,190,190,188,191,185,185,190,188,186,189,193,192,195,185,185, +190,189,187,190,102,102,104,162,164,157,160,160,152,154,157,150,161,162,155,159, +162,155,166,169,161,125,125,130,187,186,189,190,188,191,190,188,191,193,192,195, +190,188,191,192,191,194,192,190,193,194,193,196,115,112,116,160,162,155,165,168, +161,160,165,158,160,164,157,158,160,153,161,166,158,118,116,120,188,186,189,192, +190,193,188,191,191,189,187,190,193,192,195,193,192,195,189,187,190,193,192,195, +111,108,113,161,167,160,160,162,155,162,167,160,161,165,158,166,169,161,159,162, +154,142,141,148,188,187,190,188,186,189,190,189,192,190,189,192,189,187,190,191, +194,195,190,189,192,189,187,190,125,125,130,166,169,161,162,166,159,160,165,158, +39,23,40,41,30,42,78,55,75,53,35,53,57,35,58,60,44,61,104,74,100,67,45,66,67,51, +66,66,39,64,110,82,106,66,39,64,32,32,44,189,188,114,31,33,60,46,43,58,44,42,44, +43,44,48,41,43,42,56,55,55,54,48,54,53,52,53,52,51,52,52,54,52,51,49,51,51,48, +57,51,53,57,51,48,51,51,51,51,51,48,51,51,60,57,50,46,54,37,38,37,169,167,169, +168,166,169,111,110,113,46,46,46,51,47,58,51,47,51,51,49,58,51,48,68,51,50,50, +51,48,64,51,47,54,51,47,56,51,52,51,51,49,51,51,47,51,51,61,51,51,48,51,51,52, +56,51,51,52,51,47,58,51,48,58,51,47,55,52,47,57,52,52,51,52,52,56,52,56,52,51, +48,51,51,49,51,51,57,51,51,47,70,51,47,51,51,53,62,51,48,56,51,47,56,51,61,51, +51,57,51,51,47,70,51,47,51,51,61,51,51,55,59,51,47,54,51,49,57,51,47,54,51,51, +57,51,50,65,51,47,52,51,53,52,51,47,57,51,47,55,51,47,58,51,47,58,51,48,52,51, +47,52,51,58,52,51,49,52,51,60,64,51,51,51,51,47,55,51,61,51,51,54,51,51,51,51, +39,47,62,168,167,171,168,167,168,39,45,40,51,47,61,51,54,52,51,51,51,51,48,51, +51,49,52,51,48,51,51,48,55,51,58,59,51,48,58,51,47,52,51,47,58,51,47,52,51,48, +51,51,47,51,52,48,52,51,50,57,51,48,58,51,57,51,51,56,52,51,56,51,51,48,52,51, +47,54,51,47,55,51,47,55,51,50,61,95,92,96,148,147,149,51,47,52,51,47,57,40,34, +40,163,167,160,156,158,151,158,161,154,158,160,153,147,151,144,159,161,154,153, +156,148,157,159,152,157,160,152,149,153,146,155,156,149,158,160,152,162,167,160, +161,163,156,158,159,151,160,162,155,160,164,157,160,165,158,157,159,152,160,166, +159,155,156,148,156,158,151,158,159,151,158,160,153,159,164,156,160,166,158,155, +157,149,155,157,150,160,163,156,162,166,159,160,164,157,160,162,155,160,162,155, +158,160,153,161,165,158,171,172,164,171,174,167,173,175,168,173,174,167,173,175, +168,170,171,162,161,168,159,167,169,161,173,174,167,165,169,160,171,173,166,169, +173,165,167,169,162,167,171,163,170,171,163,166,170,162,165,169,160,170,171,163, +163,168,159,164,168,159,160,167,159,170,171,163,165,168,159,165,168,159,159,164, +156,168,170,163,162,166,159,167,169,162,162,168,160,155,159,151,162,169,161,161, +166,159,163,169,161,160,164,156,158,161,154,159,161,154,159,162,154,159,161,154, +159,164,156,161,165,157,161,165,158,154,158,150,159,161,154,154,157,150,158,160, +153,158,161,154,158,160,153,161,162,155,161,165,158,160,164,157,162,166,158,160, +165,157,157,160,153,153,156,148,155,157,150,157,158,149,162,167,160,159,162,155, +159,160,152,168,169,163,161,166,159,161,165,158,159,160,152,158,161,154,160,161, +152,160,164,157,159,163,156,162,167,159,158,161,154,149,152,146,159,161,154,159, +164,156,156,158,151,161,162,156,159,160,152,160,161,155,158,159,152,160,166,159, +165,167,160,161,168,161,161,168,160,164,167,160,159,161,154,159,164,156,159,160, +154,166,170,162,156,158,150,155,158,149,157,159,152,163,167,160,168,172,164,161, +166,159,166,168,160,68,49,66,72,51,69,117,115,119,53,35,55,95,71,93,101,73,97, +148,146,150,66,45,69,111,82,110,109,81,109,155,155,157,66,39,64,32,37,55,189, +189,114,31,39,54,46,43,63,44,42,44,43,51,48,57,55,63,55,71,60,54,57,54,53,61,56, +52,53,52,52,49,52,51,56,56,51,47,51,51,48,51,51,48,51,51,48,54,51,47,51,51,48, +54,46,45,52,111,109,110,168,168,169,110,112,110,43,40,51,51,47,50,51,47,51,51, +52,51,51,47,51,51,48,51,51,58,54,51,50,55,51,47,51,51,52,51,51,47,57,51,47,51, +51,47,51,51,47,51,51,47,55,51,56,57,51,47,66,51,47,51,51,47,51,52,63,51,37,49, +55,38,48,37,38,47,45,37,52,46,52,48,51,51,47,52,51,57,51,51,47,62,51,47,56,51, +47,51,51,47,65,51,51,51,51,50,51,51,57,51,51,47,62,51,47,56,51,57,50,51,46,69, +52,63,56,52,60,58,52,46,51,52,67,62,51,50,62,51,47,52,51,57,60,51,47,56,51,55, +60,51,50,52,51,47,52,51,47,57,51,52,59,51,47,56,51,48,51,51,52,55,51,47,51,51, +49,51,51,48,52,51,51,52,51,48,51,39,35,40,168,168,169,168,167,169,39,38,43,51, +60,52,51,47,52,51,50,58,51,57,51,51,47,59,51,47,56,51,47,58,51,47,54,51,47,52, +51,47,61,51,47,61,51,58,55,51,47,58,52,49,59,37,45,36,52,47,63,51,47,52,51,49, +55,51,50,55,51,62,59,51,54,56,51,47,51,51,51,52,52,47,51,51,47,55,90,87,95,148, +147,149,51,47,58,51,57,71,40,34,46,163,165,157,159,160,152,161,165,158,158,161, +154,158,161,154,161,162,155,156,158,151,158,160,153,157,158,151,152,156,149,149, +153,146,151,154,148,159,160,153,158,160,153,159,162,156,160,165,158,159,160,152, +163,169,161,159,162,155,164,166,158,155,160,153,156,159,152,157,159,152,156,158, +151,160,164,157,162,166,159,160,164,157,158,160,153,158,161,154,160,162,155,158, +161,154,163,167,160,160,164,157,160,165,158,160,164,157,164,167,160,171,173,166, +166,170,162,171,173,165,171,173,165,167,171,163,162,168,160,165,168,160,164,168, +160,167,169,162,167,169,162,167,171,163,167,171,163,167,171,163,168,170,163,162, +167,160,166,170,162,160,165,158,166,170,162,164,167,160,160,165,158,159,162,155, +161,166,159,162,166,159,160,164,157,164,167,160,165,168,160,171,173,166,171,173, +166,164,168,160,162,166,159,159,162,155,159,161,154,160,165,158,158,161,154,159, +160,152,157,159,152,161,165,158,146,149,143,161,165,158,158,161,154,161,165,158, +156,157,150,156,158,151,156,157,149,159,161,154,157,158,151,151,156,149,157,158, +151,157,160,152,158,161,154,158,160,153,160,163,156,152,156,149,159,160,153,151, +156,149,160,164,158,160,164,157,158,161,154,158,161,154,158,160,153,160,166,159, +158,161,154,160,162,155,157,158,151,150,154,148,158,161,154,160,166,159,157,159, +152,158,160,153,159,160,152,160,165,158,158,159,152,158,160,153,158,161,154,158, +160,153,159,160,152,157,158,151,162,168,161,158,161,154,161,165,158,166,168,160, +160,165,158,159,160,152,157,159,152,160,166,159,160,166,159,161,165,158,160,161, +155,157,159,152,160,166,159,162,169,160,161,165,158,66,46,66,70,48,72,116,114, +118,51,36,50,93,67,93,98,69,101,147,145,149,64,47,63,109,81,105,106,82,102,154, +153,156,66,39,64,32,30,55,190,191,115,31,29,42,46,43,46,44,43,53,43,42,52,57,52, +56,55,50,55,54,49,54,53,49,60,52,48,53,52,50,52,51,54,52,51,69,62,51,47,56,51, +55,55,51,51,72,51,47,56,50,46,56,37,32,37,169,170,169,169,167,169,37,36,37,50, +47,51,51,54,51,51,56,57,51,51,51,51,50,52,51,48,51,51,57,51,51,47,59,51,47,67, +51,47,51,51,47,51,51,56,56,51,52,51,51,47,51,51,47,54,52,49,57,52,47,57,52,48, +51,52,56,65,37,36,38,38,37,37,38,52,38,38,35,47,38,36,40,37,35,50,52,61,55,52, +47,51,52,47,51,52,57,66,51,52,51,51,47,56,51,53,55,51,47,54,52,47,51,52,47,51, +52,57,66,52,48,60,52,50,58,37,35,38,38,61,38,38,45,37,37,46,45,52,47,51,52,47, +51,52,49,60,51,48,51,51,47,51,51,49,51,51,53,51,51,47,62,51,47,52,51,52,58,51, +47,56,51,53,51,51,47,51,51,57,51,51,49,51,51,47,56,51,47,51,39,34,39,168,166, +168,168,166,168,39,34,40,51,47,60,51,47,52,51,48,54,51,56,57,51,50,51,51,47,51, +51,47,54,51,53,58,51,47,52,51,47,52,51,58,51,51,46,52,51,47,51,52,51,58,38,36, +47,37,36,37,52,48,62,52,48,51,52,55,59,52,46,51,52,66,61,52,51,53,52,47,52,37, +39,37,37,36,46,91,91,91,149,147,149,38,42,37,51,47,51,40,34,44,163,169,162,162, +166,159,156,158,151,154,157,150,160,165,158,160,164,157,158,161,154,154,157,150, +159,161,154,159,160,152,145,148,143,146,150,143,151,154,149,154,157,150,157,158, +150,158,160,153,160,164,157,160,165,158,162,166,159,171,173,166,158,161,154,146, +149,142,162,169,161,168,169,163,169,170,164,160,164,157,169,171,164,159,161,154, +161,166,159,157,159,152,160,164,157,160,164,157,162,168,161,167,170,163,161,167, +160,160,166,159,164,169,161,167,171,163,167,171,163,170,171,163,168,170,163,164, +169,161,164,167,160,168,171,164,164,169,161,162,168,160,169,173,165,173,174,168, +171,173,165,164,169,161,170,171,163,166,170,162,169,170,164,168,169,162,160,165, +158,163,168,161,153,156,149,159,162,155,160,162,155,160,164,157,161,167,160,168, +169,162,167,169,162,168,170,163,167,171,163,168,169,163,161,165,158,160,162,155, +161,166,159,165,169,162,160,164,157,158,159,151,158,159,151,159,160,154,158,161, +154,156,158,151,157,159,152,161,165,158,156,157,150,156,157,150,159,161,154,160, +161,155,158,161,154,160,164,157,160,164,158,157,159,152,158,161,154,156,158,151, +161,161,156,159,162,155,159,162,155,159,160,152,163,169,161,161,165,158,160,164, +157,156,158,151,159,162,155,154,157,150,161,163,156,157,159,152,151,154,149,160, +162,154,156,157,151,168,172,164,160,164,157,158,160,153,162,166,159,160,162,155, +165,168,161,160,164,157,161,167,160,161,166,159,160,162,155,161,165,158,161,166, +159,174,175,168,165,168,160,160,162,155,160,166,159,149,152,147,156,157,150,161, +166,159,154,156,149,161,166,159,154,157,149,158,161,154,160,164,157,160,166,159, +103,101,106,108,110,111,116,115,123,86,65,83,134,132,137,142,143,144,147,146, +153,106,81,103,152,153,154,152,152,154,154,152,156,66,39,64,32,46,44,190,190, +116,31,33,43,46,44,46,44,47,44,43,49,48,57,52,63,55,54,65,54,50,57,53,49,53,52, +48,52,52,48,62,51,47,59,51,48,51,51,58,52,51,52,51,51,48,55,51,56,51,46,43,46, +111,110,110,168,166,168,111,110,115,46,42,46,51,54,52,51,57,56,51,51,52,51,53, +62,51,55,51,51,48,51,51,48,57,51,47,51,51,62,52,51,47,51,51,47,52,51,62,64,52, +50,51,52,47,54,52,59,52,37,48,37,38,36,46,38,51,37,38,36,46,38,36,42,38,36,44, +38,36,38,38,36,38,38,36,54,38,36,46,38,36,38,38,39,57,38,37,46,38,36,38,46,42, +46,46,42,46,48,45,49,50,47,50,38,39,56,38,37,45,38,36,37,38,43,37,38,41,48,38, +36,41,38,35,48,38,37,42,38,38,39,38,37,38,38,46,38,37,43,37,52,47,53,51,48,52, +51,49,54,51,47,51,51,47,51,51,46,56,51,71,52,51,48,68,51,47,51,51,47,50,51,55, +57,51,47,51,51,47,51,51,48,55,42,52,42,170,168,170,170,168,170,42,36,43,51,47, +58,51,51,59,51,48,51,51,61,51,51,47,51,51,50,65,51,52,51,51,48,58,51,47,51,51, +47,51,51,62,55,51,52,57,51,47,51,52,47,58,38,49,57,38,37,37,38,37,37,38,36,38, +38,43,46,38,49,37,38,36,37,38,37,38,38,46,37,38,37,46,38,42,37,91,91,91,149,147, +149,38,42,37,38,43,37,41,38,52,162,164,157,159,162,155,160,166,159,158,160,153, +160,162,155,160,165,158,156,158,151,154,157,150,156,157,150,151,154,148,158,160, +153,151,154,148,149,152,146,154,157,150,161,166,159,160,166,159,159,161,154,161, +165,158,161,165,158,166,170,162,163,168,160,137,140,134,162,168,161,160,165,158, +172,174,166,162,168,160,160,162,157,161,165,158,161,166,159,161,167,160,160,165, +158,160,162,155,159,162,155,160,165,158,165,167,160,161,165,158,174,178,171,169, +173,165,168,170,163,173,175,169,170,171,163,164,167,160,164,167,160,168,169,162, +161,165,158,166,170,162,167,169,162,173,173,166,173,173,167,165,168,160,167,171, +163,164,169,161,160,164,157,162,168,160,169,170,164,160,165,158,161,168,161,160, +165,158,160,165,158,165,167,160,169,170,164,160,166,159,164,167,160,166,170,162, +162,167,160,162,166,159,162,166,159,160,162,155,165,168,161,160,166,159,161,167, +160,158,159,151,158,161,154,156,158,151,156,157,149,160,161,154,151,156,149,158, +161,154,161,161,155,154,157,150,157,158,151,160,164,157,161,167,160,162,166,159, +160,165,158,158,161,154,159,162,155,156,159,151,160,162,155,160,161,155,161,163, +155,157,158,151,160,164,157,158,162,155,169,170,164,160,164,157,160,165,158,158, +159,152,158,160,153,161,165,158,156,158,151,158,160,153,158,161,154,167,170,163, +162,166,159,159,162,155,158,160,153,158,159,151,158,161,154,160,165,158,159,160, +152,159,161,154,159,162,155,161,165,158,161,166,159,164,168,160,164,167,160,164, +167,160,162,168,161,158,161,154,157,159,152,159,160,152,160,166,159,160,164,157, +163,167,160,159,162,155,160,162,155,161,166,159,39,29,38,41,25,40,78,58,75,53, +46,53,57,43,56,60,38,58,104,78,100,67,58,66,67,44,73,66,45,71,110,78,106,66,39, +64,32,29,60,190,188,115,31,32,45,46,50,46,44,43,49,50,49,54,56,52,59,55,59,55, +54,50,54,53,49,62,52,48,52,52,48,59,51,51,55,51,59,56,51,48,51,51,53,51,51,48, +69,51,52,51,41,35,46,169,168,171,168,166,168,36,32,35,50,58,50,51,47,51,51,70, +51,51,55,51,51,47,51,51,47,64,51,51,55,51,47,57,51,58,51,51,46,65,51,53,57,51, +47,58,52,47,52,37,43,36,38,40,63,38,49,40,38,36,38,38,40,39,38,45,41,38,40,39, +38,42,38,38,36,38,39,44,39,39,37,39,39,37,49,39,42,40,39,40,40,39,37,49,39,37, +40,39,37,40,39,38,40,39,37,40,39,37,40,38,36,39,38,36,39,38,36,39,38,36,39,38, +36,38,38,42,38,38,36,41,38,36,38,38,36,38,38,36,38,38,37,38,38,37,39,38,36,40, +52,56,52,51,47,51,51,47,68,51,51,51,51,47,70,51,48,54,51,48,54,51,47,52,51,59, +52,51,47,74,51,47,51,51,47,56,51,47,60,51,47,59,50,45,58,42,36,52,42,36,52,50, +53,50,51,51,57,51,47,51,51,51,52,51,47,51,51,59,51,51,49,51,51,49,51,51,47,56, +51,47,51,51,47,58,51,51,51,51,48,66,51,53,54,52,47,51,38,36,57,38,39,55,38,44, +43,38,48,47,38,39,39,38,49,46,38,41,38,38,46,38,38,37,46,38,40,39,38,42,45,91, +91,91,150,148,150,39,43,38,39,43,38,40,39,49,169,172,165,162,167,160,162,169, +160,160,164,157,163,167,160,160,163,156,159,162,155,164,170,162,158,160,153,153, +157,150,162,164,157,160,163,156,154,157,150,161,166,159,159,162,155,161,165,158, +160,162,155,166,168,160,162,168,160,168,170,164,168,170,163,161,166,159,137,141, +135,161,165,158,161,166,159,162,167,160,169,171,163,165,169,161,161,167,159,158, +161,154,159,161,154,165,168,161,159,162,155,160,162,155,160,164,157,168,169,163, +167,170,163,165,169,161,168,170,163,175,177,170,166,169,161,167,172,163,166,169, +161,165,169,161,164,169,161,170,173,166,167,169,162,171,173,166,169,173,165,161, +165,158,165,168,160,168,169,163,161,165,158,165,170,162,166,169,161,161,165,158, +161,166,159,170,172,164,163,169,161,161,165,158,165,169,160,162,166,159,164,169, +161,164,167,160,167,169,162,174,174,168,164,167,160,165,168,160,161,166,159,159, +163,156,162,164,156,161,168,161,161,167,159,159,160,152,160,163,156,162,167,159, +157,158,150,159,162,155,160,164,157,158,160,153,159,160,152,161,165,158,160,164, +157,165,168,161,161,165,158,161,166,158,167,170,162,160,163,156,159,160,152,169, +171,164,151,154,148,161,163,156,163,169,161,159,162,155,164,167,160,164,169,161, +164,167,160,166,169,161,160,165,158,158,160,153,159,161,154,162,166,159,160,163, +156,162,166,159,163,169,161,164,170,161,162,169,162,157,159,152,160,161,152,159, +163,156,156,158,151,147,151,144,157,159,152,160,162,155,159,164,157,168,169,163, +165,168,161,165,168,161,162,168,160,162,163,156,155,159,151,161,164,157,160,161, +153,168,172,164,165,168,161,162,166,159,162,169,160,168,169,162,68,49,68,72,51, +69,117,115,119,53,34,53,95,71,96,101,73,97,148,146,150,66,44,66,111,87,112,109, +81,107,155,153,160,66,39,64,32,51,43,190,188,115,31,28,49,46,56,55,44,45,53,51, +50,60,45,46,55,43,45,55,42,44,52,40,43,52,41,45,52,51,52,52,51,47,51,51,47,51, +51,47,56,51,47,51,51,47,51,51,52,51,39,37,39,168,166,171,168,166,170,39,40,43, +51,59,57,51,51,51,51,47,56,51,59,72,51,47,60,51,52,57,51,46,57,51,68,51,51,49, +52,51,52,60,51,47,52,51,49,59,51,52,51,52,48,52,38,36,37,38,49,38,38,36,39,38, +50,42,38,43,40,39,62,40,39,38,39,39,36,39,39,49,39,39,37,41,39,38,44,39,52,39, +39,39,48,39,37,40,39,37,47,39,37,40,39,37,40,39,37,40,40,37,41,40,39,41,39,37, +40,39,37,41,39,39,42,38,42,44,38,36,38,38,37,38,38,48,38,38,39,51,38,36,38,38, +44,43,38,36,38,38,36,38,37,50,46,52,52,56,51,48,50,51,48,61,51,47,62,51,47,60, +51,48,54,51,50,60,51,49,56,51,47,58,51,47,57,51,52,61,51,47,51,51,47,52,51,47, +52,51,47,60,51,56,51,51,48,57,51,48,51,51,58,51,51,48,55,51,55,57,51,54,51,51, +57,51,51,48,51,51,53,64,51,47,51,51,47,54,51,47,51,51,47,54,52,51,51,37,49,43, +38,53,37,38,41,38,38,38,37,38,41,51,38,37,39,38,38,43,38,36,50,38,46,47,38,36, +48,39,57,40,39,42,40,92,92,92,151,149,151,39,43,38,39,43,38,41,34,53,164,171, +162,169,170,164,164,167,160,169,171,164,135,134,138,119,117,117,116,113,116,138, +136,141,123,120,123,114,111,113,111,111,112,112,109,112,160,162,155,160,167,160, +162,166,159,160,165,158,160,165,158,171,171,164,160,166,159,168,172,164,134,138, +139,124,119,121,142,141,144,114,117,116,120,116,119,123,120,123,135,139,140,128, +127,132,164,168,161,161,167,160,161,168,161,161,168,161,160,164,157,158,159,152, +162,168,161,160,165,158,147,145,151,140,143,143,129,128,132,129,128,132,142,141, +144,135,139,139,126,125,127,136,140,141,164,168,160,164,169,161,168,170,163,169, +173,165,173,173,167,164,167,160,162,166,159,169,171,164,124,124,126,141,143,144, +126,125,127,135,139,140,120,116,117,146,145,151,124,119,121,129,128,132,163,167, +159,160,165,158,168,169,162,165,168,160,168,170,163,173,173,167,162,166,159,168, +172,163,136,140,141,123,120,123,97,91,93,127,129,129,137,136,139,123,120,122, +140,139,142,125,124,126,160,161,153,165,168,161,160,165,158,162,166,160,158,162, +155,160,166,159,168,169,163,164,168,160,118,115,118,120,117,120,120,117,119,130, +129,133,127,126,128,123,120,123,127,126,128,135,135,138,162,166,158,162,166,159, +162,166,159,168,169,162,160,166,159,160,165,158,168,169,163,164,170,162,119,115, +119,120,117,120,120,117,120,132,136,134,135,139,140,119,116,119,137,136,139,117, +115,116,149,153,146,154,157,150,158,160,153,157,159,152,162,166,159,158,161,154, +162,169,161,170,172,165,122,118,120,138,142,142,126,126,127,127,127,128,105,100, +105,108,108,110,119,118,119,109,108,111,167,170,162,167,169,163,161,165,158,166, +170,162,66,49,65,70,48,67,116,114,118,51,42,55,93,71,92,98,69,94,147,145,149,64, +54,69,109,78,108,106,76,104,154,152,161,66,39,64,32,29,44,190,188,115,31,33,43, +46,44,52,48,49,58,44,48,57,43,46,55,43,45,54,43,45,52,43,46,53,40,43,51,51,46, +55,51,47,56,51,47,54,51,53,51,51,49,51,51,50,52,51,50,58,39,34,51,168,166,168, +168,166,168,39,34,39,51,51,51,51,49,52,51,58,52,51,49,57,51,47,52,51,47,52,51, +50,58,51,71,51,51,52,54,51,47,54,51,47,52,51,47,51,52,47,52,37,36,37,38,53,38, +38,35,49,38,47,39,38,35,50,39,38,44,39,36,44,39,41,48,39,52,49,39,36,39,39,44, +39,39,51,47,39,38,61,39,37,53,39,54,38,39,52,38,39,37,47,47,42,47,44,41,44,41, +41,45,42,39,45,39,42,40,39,47,39,39,37,49,39,37,39,39,37,39,39,37,39,38,36,48, +38,49,37,38,35,38,38,53,38,38,36,47,38,51,57,38,36,38,52,51,52,51,52,51,52,52, +59,52,52,52,51,47,52,51,47,59,51,47,57,51,55,61,51,47,57,51,48,51,51,47,68,51, +51,51,51,47,51,51,47,51,51,47,51,51,47,51,51,51,51,51,53,51,51,48,57,51,48,58, +51,48,51,51,56,57,51,50,57,51,62,54,51,47,51,51,49,51,51,47,51,51,47,58,52,49, +57,37,49,37,38,55,42,38,50,38,38,36,38,38,36,41,38,36,46,38,42,42,38,36,39,38, +49,38,39,42,39,39,38,40,39,39,47,39,37,44,100,100,100,156,155,156,38,41,38,39, +38,48,42,33,43,169,173,165,160,164,157,171,172,164,145,143,150,44,85,112,51,87, +112,52,87,112,51,88,114,52,88,114,52,87,112,52,88,112,49,89,114,109,108,111,163, +170,161,168,169,163,161,166,159,166,168,160,169,170,164,162,167,160,141,140,143, +51,87,85,57,88,85,56,87,84,56,90,86,57,90,86,59,93,89,66,108,103,66,120,118,135, +134,137,162,168,161,158,160,153,160,164,157,161,165,158,171,174,166,171,172,164, +135,134,137,51,94,124,51,85,112,51,86,112,51,88,114,51,87,114,50,86,111,52,86, +112,47,85,113,134,138,139,169,170,163,164,169,161,161,167,160,169,171,163,169, +170,163,167,171,163,136,139,141,47,85,113,51,86,111,51,86,112,51,88,114,52,88, +114,50,86,111,51,86,112,47,85,113,136,140,141,168,170,163,169,173,165,171,174, +168,170,173,166,173,174,168,165,170,162,144,142,148,101,113,159,105,115,157,107, +115,157,106,116,158,99,108,148,86,93,127,79,83,114,76,83,115,125,124,126,169, +171,163,164,169,161,166,169,160,162,167,160,165,168,160,175,176,169,140,140,143, +46,87,114,51,88,112,51,87,112,52,88,114,52,88,114,51,87,112,51,86,112,46,85,113, +140,140,143,165,168,161,167,169,162,167,169,162,169,170,164,169,171,164,163,170, +161,115,112,115,41,74,97,40,70,90,48,83,107,57,98,126,64,111,144,56,96,127,57, +97,127,54,101,134,137,141,145,159,161,154,157,158,150,160,166,159,160,167,160, +160,164,157,161,165,158,141,140,143,38,68,96,44,70,96,44,70,96,45,72,99,47,73, +99,46,72,97,45,73,97,41,71,98,118,115,119,162,168,161,161,166,159,169,170,163, +103,103,106,108,110,115,116,114,118,86,62,83,134,134,137,142,143,148,147,145, +149,106,78,103,152,154,158,152,150,154,154,151,156,66,39,64,32,29,43,190,188, +115,31,32,43,46,43,47,47,44,47,50,46,60,56,52,63,55,51,55,54,49,54,50,48,54,39, +42,51,50,59,52,51,46,51,51,53,57,51,46,57,51,59,69,51,47,51,51,47,51,42,44,41, +170,168,170,170,168,170,42,44,49,51,47,55,51,48,60,51,47,56,51,47,60,51,49,62, +51,48,52,51,48,51,51,46,51,51,48,52,51,48,51,51,58,62,52,47,60,37,45,37,38,53, +47,38,36,42,38,38,48,39,36,39,39,52,39,39,37,41,39,37,43,39,41,39,40,37,40,40, +38,41,40,45,53,40,38,45,40,38,40,40,38,48,40,46,64,40,37,58,40,43,40,40,39,50, +40,38,44,40,38,39,40,44,39,39,46,63,39,36,57,39,44,38,39,42,39,39,55,41,39,38, +39,39,37,39,38,37,44,38,41,49,38,36,39,38,41,39,38,42,42,38,39,39,37,41,45,52, +47,56,37,36,38,37,51,36,52,47,52,51,47,52,51,47,52,51,61,54,51,49,65,51,48,50, +51,58,55,51,58,51,51,52,51,51,50,51,51,47,51,51,47,51,51,55,51,51,48,57,51,48, +51,51,55,58,51,48,51,51,48,51,51,48,51,51,54,51,51,47,51,51,52,51,51,59,51,52, +47,51,37,39,37,38,37,38,38,35,40,38,36,38,38,38,46,38,36,41,38,36,53,38,41,52, +39,37,47,39,37,39,39,39,43,39,43,39,39,37,40,39,38,41,102,102,102,158,156,158, +40,39,49,40,45,39,26,28,26,163,167,160,156,156,149,165,168,161,137,141,141,50, +87,111,87,142,182,87,142,182,56,88,112,56,88,112,87,142,182,87,142,183,51,88, +112,120,117,120,162,168,160,165,167,160,160,164,157,160,165,158,164,167,160,161, +166,158,131,135,133,57,88,85,89,151,140,89,151,140,61,90,85,61,90,85,89,151,140, +94,157,142,66,110,104,136,135,138,161,166,159,157,161,154,160,161,155,161,168, +161,165,168,160,165,168,161,129,129,133,65,108,141,96,154,188,87,143,182,56,88, +112,56,88,112,87,142,182,87,142,182,51,86,112,119,116,119,161,163,158,161,165, +158,161,165,158,161,165,158,164,167,160,162,166,159,142,144,145,51,85,111,87, +142,182,87,142,182,56,88,112,56,88,112,87,142,182,87,142,182,51,85,111,140,143, +143,166,169,161,173,173,167,166,170,162,167,169,162,161,167,160,163,168,161,123, +119,121,106,114,156,148,180,217,148,180,217,109,117,156,108,115,154,141,166,207, +132,150,194,79,83,114,126,125,127,162,168,161,164,167,160,159,160,153,164,167, +160,161,165,158,163,167,160,129,128,132,52,86,112,87,142,182,87,142,182,56,88, +112,56,88,112,87,142,182,87,142,182,49,85,111,144,144,147,172,172,164,167,169, +162,164,167,160,161,167,160,164,167,160,159,162,155,115,114,116,40,70,90,67,111, +146,78,129,166,56,89,113,62,98,124,107,166,194,99,156,179,57,97,127,120,116,119, +161,161,153,159,161,154,163,168,161,158,161,154,158,161,154,158,161,152,139,139, +142,44,70,97,84,116,158,84,116,158,50,74,98,50,74,98,84,116,158,84,116,158,45, +72,97,120,117,120,161,168,160,161,167,160,166,170,162,39,23,38,41,23,46,78,55, +75,53,35,58,57,35,56,60,35,66,104,74,100,67,45,72,67,42,67,66,39,68,110,84,109, +66,39,64,32,29,43,190,188,115,31,28,43,46,43,52,33,33,33,50,46,52,31,31,31,55, +50,56,29,29,29,50,48,53,39,42,51,46,47,52,51,59,55,51,46,60,51,55,61,51,48,57, +51,52,51,51,55,51,50,45,49,42,36,57,42,39,41,50,45,49,51,47,51,51,53,54,51,47, +57,51,53,52,51,47,58,51,47,51,51,60,54,51,47,57,51,55,51,51,47,51,51,59,51,52, +47,51,38,39,37,38,51,39,38,37,37,38,37,38,53,63,67,54,47,53,38,37,38,40,37,53, +40,37,40,40,37,49,40,60,43,41,40,41,41,42,41,41,45,40,41,45,40,41,42,42,41,39, +42,41,39,49,41,39,49,40,38,41,40,40,41,40,41,39,40,40,39,40,40,40,40,43,40,40, +58,42,39,36,48,39,36,39,39,36,52,38,37,38,53,47,52,53,63,66,37,36,37,38,37,37, +38,41,47,38,37,38,38,37,46,37,43,45,52,47,63,51,63,51,51,47,64,51,47,52,51,47, +52,51,49,51,51,53,61,51,48,51,51,48,51,51,57,55,51,47,56,51,47,66,51,55,57,51, +56,59,51,55,52,51,47,55,51,47,51,51,47,51,51,53,66,51,47,55,51,56,57,51,53,57, +51,47,51,51,47,51,52,47,53,38,37,37,38,37,38,38,47,46,38,37,37,37,36,37,52,63, +66,53,47,52,38,37,38,39,36,52,39,36,39,39,36,47,39,58,42,40,39,40,40,41,40,40, +45,39,40,45,39,41,42,42,41,39,42,41,40,50,163,164,157,161,167,160,166,170,161, +123,119,122,51,87,111,86,140,181,93,147,188,56,87,112,56,87,112,93,147,188,86, +140,181,51,86,111,130,129,133,161,165,158,159,162,155,160,165,158,164,167,160, +170,173,167,165,168,161,137,141,141,57,86,84,87,149,139,95,156,144,61,89,85,61, +89,85,95,156,144,87,149,139,59,93,89,126,125,127,163,167,160,161,167,160,158, +161,154,159,162,155,160,164,157,169,171,164,126,129,128,69,116,150,108,169,197, +103,158,194,56,87,113,56,87,112,93,147,188,86,140,181,51,87,111,127,129,129,163, +170,161,166,169,160,162,166,159,166,168,160,160,165,158,161,167,160,137,141,141, +51,85,111,86,140,181,93,147,188,56,87,112,56,87,112,93,147,188,86,140,181,51,85, +111,140,142,143,171,172,164,166,170,162,171,173,166,173,174,168,170,171,163,169, +171,164,132,135,134,106,113,155,147,179,216,156,182,219,110,115,155,110,115,155, +154,180,217,140,165,206,85,91,125,135,138,139,172,173,164,159,164,157,164,169, +160,167,169,162,169,170,163,162,167,160,135,139,139,51,85,111,86,140,181,93,147, +188,56,87,112,56,87,112,93,147,188,86,140,181,49,85,110,144,144,147,166,169,161, +168,170,163,169,173,166,164,167,160,166,170,162,166,170,162,113,109,113,40,68, +90,66,109,142,87,137,177,56,87,112,56,88,113,103,158,194,92,146,173,56,95,124, +127,126,128,151,157,148,160,166,159,161,165,158,161,166,159,161,167,160,159,162, +155,140,139,142,47,76,105,83,116,157,89,121,162,49,73,97,49,73,97,89,121,162,83, +115,157,44,71,96,125,124,126,161,167,159,160,164,157,166,168,160,68,49,66,72,53, +69,117,115,120,53,39,54,96,71,93,101,75,97,148,146,150,66,50,67,111,83,108,109, +80,105,155,152,162,66,39,64,32,29,61,190,189,116,31,28,43,46,43,48,33,33,33,50, +51,58,31,31,31,55,56,56,29,29,29,50,49,60,40,43,51,46,46,52,51,50,54,51,55,52, +51,50,51,51,48,57,51,60,51,51,56,51,51,47,51,51,47,54,51,52,56,51,61,59,51,47, +51,51,53,58,51,49,57,51,52,58,51,47,56,51,47,59,51,47,51,51,47,51,51,50,51,51, +53,51,51,47,51,52,47,51,37,49,43,38,36,52,39,48,39,39,38,39,39,36,38,40,37,47, +40,38,42,40,56,46,41,42,41,41,39,45,41,43,43,37,36,42,38,36,45,36,36,46,35,38, +41,27,30,39,27,25,38,27,35,44,27,35,44,27,25,38,32,33,41,29,39,38,27,29,44,28, +26,41,34,33,39,40,42,42,40,38,44,40,41,40,39,55,45,39,37,41,39,37,46,39,36,38, +38,37,38,38,47,38,38,36,39,38,36,43,38,37,52,52,47,51,51,47,59,51,47,55,51,47, +51,51,57,51,51,47,56,51,47,51,51,53,51,51,48,59,51,48,51,51,48,57,51,47,52,51, +51,62,51,48,57,51,47,56,51,47,52,51,47,58,51,48,51,51,47,51,51,48,51,51,49,51, +51,47,51,51,47,51,51,47,51,52,47,51,37,37,55,38,40,43,38,43,52,38,35,39,38,47, +38,38,37,38,38,35,37,39,37,46,39,37,41,39,54,44,39,40,39,40,37,44,40,42,42,34, +33,39,28,25,40,27,29,44,27,38,37,27,30,39,27,25,38,27,35,45,167,170,163,160,164, +157,162,167,159,123,120,123,52,89,114,87,142,182,93,148,189,56,88,112,56,88,112, +93,148,189,87,142,182,52,88,112,120,117,120,160,164,156,160,167,160,159,161,154, +165,169,161,165,168,160,167,170,163,142,141,144,56,88,84,87,151,140,95,157,145, +61,90,85,61,90,85,95,157,145,89,151,140,57,88,85,117,117,120,162,168,160,160, +164,157,165,168,161,157,159,152,159,162,155,164,169,162,120,117,119,70,121,154, +118,180,204,117,174,203,62,98,124,56,88,113,93,148,189,87,142,182,51,88,112,123, +120,123,167,170,161,160,165,158,160,164,157,162,169,160,165,167,161,162,166,159, +132,136,134,51,86,112,87,142,182,93,148,189,56,88,112,56,88,112,93,148,189,86, +142,182,51,85,111,141,144,145,173,175,167,173,175,169,175,179,171,171,174,167, +173,175,169,173,175,167,135,139,139,106,114,156,148,180,217,156,183,220,109,117, +156,109,117,156,156,183,220,145,177,215,96,104,142,141,141,144,175,175,167,169, +170,164,164,167,160,167,169,162,174,173,167,169,172,166,135,138,139,52,86,111, +86,142,182,93,148,189,56,88,112,56,88,112,93,148,189,87,142,182,49,85,111,145, +144,147,168,170,163,167,171,163,170,173,166,167,169,162,170,171,163,170,172,164, +132,136,134,41,71,93,76,126,162,87,138,178,56,88,112,56,88,112,94,149,189,81, +132,163,51,88,116,127,126,128,158,160,153,161,165,158,159,162,155,160,165,158, +160,167,160,160,163,156,136,136,139,55,88,121,93,129,167,89,123,163,50,73,98,50, +73,98,89,122,163,84,116,158,45,72,97,109,107,108,161,164,157,157,159,152,160, +164,157,66,50,68,70,48,69,117,115,122,51,33,58,93,71,96,98,69,97,147,145,152,64, +43,72,109,79,112,106,75,102,154,154,156,66,39,64,32,39,42,190,189,115,31,28,43, +46,44,46,33,33,33,50,52,50,31,31,31,55,51,55,29,29,29,50,58,53,40,43,52,46,48, +55,51,62,51,51,48,51,51,47,51,51,56,52,51,49,56,51,48,56,51,48,55,51,47,51,51, +61,51,51,50,51,51,48,51,51,48,54,51,50,51,51,55,54,51,47,54,51,47,51,51,48,51, +51,47,51,51,47,68,51,47,51,51,57,59,51,48,51,53,48,53,39,50,38,39,37,44,39,37, +42,40,53,40,40,38,41,41,38,42,41,39,51,41,40,41,38,44,43,40,37,46,62,61,51,168, +167,91,178,176,98,173,172,94,178,176,96,177,176,93,160,156,99,160,156,99,177, +175,92,177,175,94,177,175,95,176,175,96,176,174,93,132,131,72,29,27,47,36,45,40, +40,39,40,40,38,49,39,37,41,39,37,40,39,52,39,39,37,42,38,36,43,38,36,46,38,37, +38,38,37,47,37,37,37,52,48,51,51,47,54,51,53,51,51,59,51,51,48,54,51,47,55,51, +52,51,51,57,51,51,49,51,51,47,51,51,51,57,51,55,52,51,48,59,51,48,52,51,53,52, +51,48,52,51,48,51,51,52,59,51,47,56,51,47,60,51,61,68,51,47,51,52,47,57,37,41, +41,38,37,65,38,37,47,38,36,41,38,49,38,38,36,43,38,36,41,39,52,39,39,37,40,39, +37,40,39,37,49,40,39,40,36,44,40,29,26,47,121,121,68,176,174,92,176,175,96,177, +175,95,177,176,95,178,176,93,161,158,100,164,169,162,161,165,158,161,165,158, +120,116,119,58,100,129,56,87,111,54,85,109,57,89,114,57,89,114,54,85,109,55,86, +109,53,89,114,115,114,116,158,159,152,157,159,152,160,164,157,159,162,155,160, +165,158,161,163,156,129,129,133,56,89,85,60,88,82,59,87,82,62,91,86,62,91,86,59, +87,82,60,88,82,57,89,85,129,129,133,136,137,130,158,161,154,158,161,154,157,159, +152,159,162,155,161,162,156,120,117,120,71,122,157,75,118,150,73,115,147,72,112, +144,63,99,126,54,85,110,55,86,109,52,88,114,123,120,123,163,167,160,164,167,160, +159,161,154,161,165,158,159,162,155,160,163,156,120,116,119,52,88,114,55,86,109, +54,85,109,57,89,114,57,89,114,54,85,109,55,86,109,52,87,113,131,135,133,162,166, +159,165,168,160,171,173,166,170,171,163,171,173,165,168,172,164,123,119,121,106, +115,157,106,114,152,106,113,152,112,118,159,112,118,159,106,113,152,106,114,152, +105,115,157,126,125,127,172,175,167,164,167,160,158,160,154,160,164,157,164,167, +160,169,171,164,135,138,139,52,87,113,55,86,109,54,85,109,57,89,114,57,89,114, +54,85,109,55,86,109,51,87,113,135,135,138,166,169,161,170,171,163,165,168,160, +162,166,159,161,166,159,163,168,161,126,129,128,43,74,97,48,76,97,54,85,109,57, +89,114,57,89,114,54,85,109,46,74,94,44,77,100,120,117,120,157,159,152,156,158, +151,160,164,157,159,162,155,157,161,154,159,162,154,130,129,133,62,96,132,60,91, +120,53,79,105,51,75,100,51,75,99,48,71,95,48,72,95,46,72,99,114,114,116,159,161, +154,156,158,151,158,160,153,104,102,106,109,108,116,117,118,119,87,61,85,135, +133,138,143,142,149,147,148,149,107,76,105,153,151,159,152,150,160,154,151,156, +66,39,64,32,39,65,190,188,116,31,32,47,46,42,48,33,33,33,50,50,66,31,31,31,55, +51,55,29,29,29,52,48,54,40,43,51,45,52,57,51,54,58,51,47,51,51,47,51,51,47,55, +51,47,51,51,51,51,50,57,55,42,39,41,42,35,58,50,45,49,51,55,51,51,51,51,51,56, +54,51,48,51,51,47,57,51,51,51,51,47,62,51,47,51,51,48,51,51,47,54,51,51,51,52, +52,52,53,56,56,39,44,42,39,44,41,40,37,41,40,38,44,41,46,52,41,48,44,42,39,43, +37,35,43,93,93,60,168,167,92,163,161,89,158,158,88,75,73,60,75,74,51,28,32,46, +28,25,45,28,58,42,27,57,42,27,25,45,27,32,45,83,82,53,83,80,62,146,146,79,154, +153,83,177,177,94,126,127,72,36,34,42,40,38,41,40,46,43,40,45,51,39,37,43,39,37, +40,39,44,41,38,41,38,38,36,38,38,37,38,38,37,38,52,48,51,51,47,56,51,47,62,51, +47,51,51,49,51,51,47,55,51,49,52,51,51,56,51,47,51,51,47,54,50,45,56,42,43,42, +42,36,49,50,45,54,51,47,52,51,47,60,51,56,64,51,48,51,51,53,51,51,47,51,51,47, +51,52,47,51,37,36,43,38,37,39,38,43,38,38,40,38,38,46,38,38,49,38,38,43,40,39, +37,40,39,37,43,39,44,50,39,46,42,40,38,41,36,34,41,113,115,66,177,176,91,121, +120,68,123,124,70,27,25,51,27,28,39,27,32,45,28,25,45,28,58,42,170,172,165,160, +164,157,166,171,162,132,136,134,66,112,146,98,156,189,94,149,190,56,88,112,56, +88,112,93,148,189,87,142,182,52,88,112,117,114,116,162,167,160,162,168,161,159, +161,154,165,168,161,162,168,161,159,161,154,127,129,129,56,88,85,89,151,140,95, +157,145,61,90,85,61,90,85,95,157,145,87,151,140,56,88,84,142,141,144,166,171, +162,136,140,134,155,155,150,160,165,156,159,163,156,172,175,168,123,120,123,70, +121,154,119,183,206,128,186,210,75,119,152,70,111,141,103,159,195,87,143,182,50, +86,111,137,141,142,165,170,162,169,170,163,166,170,162,164,169,161,160,162,157, +160,163,156,127,130,129,51,86,112,87,142,182,93,148,189,56,88,112,56,88,112,93, +148,189,86,142,182,51,85,111,137,141,142,161,165,158,170,171,164,170,171,163, +164,167,160,173,173,166,173,174,166,141,144,145,97,103,142,145,177,215,156,183, +220,109,117,156,109,117,156,156,183,220,148,180,217,105,115,157,123,120,123,170, +172,165,169,173,166,166,168,160,162,167,160,164,167,160,169,172,164,140,143,144, +51,85,111,75,151,118,93,148,189,56,88,112,56,88,112,93,148,189,87,142,182,50,85, +111,144,143,146,170,175,166,173,174,168,167,169,162,167,170,163,161,165,158,161, +165,158,120,116,119,43,74,96,87,142,182,93,148,189,56,88,112,56,88,112,93,148, +189,85,138,178,45,79,100,111,111,112,155,158,151,162,165,159,160,165,158,162, +169,160,164,167,160,165,168,161,136,136,139,60,96,132,113,157,189,112,154,184, +55,81,109,50,73,99,89,122,163,84,116,158,43,70,96,137,136,139,161,167,159,161, +167,160,162,169,161,39,23,39,42,30,41,79,58,78,54,35,57,58,36,57,61,45,59,105, +78,104,67,45,70,67,43,78,66,40,65,110,78,113,66,39,64,32,42,43,190,188,115,31, +29,47,46,43,47,33,33,33,49,54,56,31,31,31,55,55,55,29,29,29,50,55,52,40,43,52, +45,47,52,51,52,51,51,51,51,51,47,51,51,47,51,51,52,51,51,47,51,42,48,41,170,169, +170,170,172,174,42,42,40,51,48,50,51,55,67,51,49,51,51,48,56,51,52,51,51,59,51, +51,47,51,51,53,55,51,47,51,52,49,60,52,52,51,53,48,52,38,37,53,39,38,39,39,36, +39,40,43,40,41,45,41,41,42,50,42,40,43,42,40,43,74,72,54,162,162,87,103,102,60, +34,30,40,35,32,57,35,36,48,28,25,29,28,61,29,28,25,28,39,44,51,39,44,51,27,25, +27,27,61,29,27,25,29,34,35,47,34,32,56,33,30,40,74,72,48,168,167,90,72,70,52,41, +39,42,40,38,41,40,41,48,39,44,39,39,42,39,39,36,39,39,38,39,38,39,56,38,37,38, +38,43,37,52,46,57,51,51,51,51,49,50,51,52,51,51,48,51,51,50,51,51,47,51,51,47, +52,51,47,65,51,47,51,42,54,50,170,168,170,170,169,170,42,40,49,51,55,57,51,58, +56,51,50,55,51,55,52,51,50,60,51,47,51,51,60,51,52,47,57,37,36,38,38,44,47,38, +37,38,38,44,38,38,36,38,38,36,38,39,35,39,39,42,39,39,43,39,39,40,48,40,38,41, +40,38,41,70,68,51,156,156,81,27,25,36,32,29,39,34,31,55,34,35,47,66,39,64,66,39, +64,66,39,64,66,39,64,165,170,163,160,166,160,163,167,160,132,136,134,54,91,117, +112,173,200,105,160,195,57,88,114,56,87,112,93,147,188,86,140,181,51,87,112,124, +120,123,159,162,155,166,169,161,165,167,161,159,162,155,160,162,155,162,164,156, +109,106,107,57,89,85,87,149,139,95,156,144,61,89,85,61,89,85,95,156,144,87,149, +139,57,86,84,136,135,138,163,170,161,157,160,153,160,161,155,157,161,154,160, +163,155,164,169,161,123,120,123,70,119,153,118,182,205,128,185,210,76,119,154, +75,118,152,117,173,202,95,152,187,51,85,112,137,141,141,169,171,164,171,173,166, +168,170,163,172,173,167,159,165,158,161,165,158,115,113,113,51,86,112,86,140, +181,93,147,188,56,87,112,56,87,112,93,147,188,86,140,181,51,85,111,137,140,141, +168,171,163,162,166,159,166,170,162,165,168,160,173,178,171,166,169,160,137,140, +141,85,91,125,140,165,206,154,180,217,109,115,156,110,115,155,156,182,219,147, +179,216,106,114,156,118,116,117,162,166,159,161,165,158,161,165,158,160,164,157, +160,165,158,160,163,155,135,139,139,51,85,111,75,151,117,79,153,122,56,87,112, +56,87,112,93,147,188,86,140,181,50,85,111,131,135,133,169,171,164,167,169,162, +170,171,163,164,167,160,160,165,158,162,166,159,132,136,134,51,86,111,86,140, +181,93,147,188,56,87,112,56,87,112,93,147,188,86,140,181,52,88,112,114,111,114, +153,157,151,158,161,154,168,169,163,166,168,160,167,170,163,163,167,160,137,141, +142,60,95,131,114,158,191,120,164,192,61,92,122,54,81,108,89,122,162,83,115,157, +44,72,96,120,117,120,161,166,158,158,162,155,167,170,163,69,51,71,73,55,70,119, +117,121,54,33,54,97,73,100,102,78,98,149,147,151,66,42,66,111,83,110,109,80,105, +155,152,157,66,39,64,32,30,43,190,190,115,31,29,43,46,55,47,33,33,33,45,45,49, +31,31,31,55,53,55,29,29,29,52,49,67,40,43,51,45,45,52,51,47,59,51,68,59,51,46, +51,51,47,57,51,47,51,51,49,59,39,35,45,168,166,168,168,169,167,39,33,57,51,53, +62,51,47,50,51,52,58,51,66,51,51,52,51,51,52,51,51,47,57,51,47,61,52,48,51,37, +52,59,37,35,46,53,62,53,38,39,44,39,40,39,40,58,40,40,48,40,41,39,44,42,40,47, +42,39,46,74,72,54,162,162,86,28,26,39,37,42,42,38,38,38,31,40,31,112,86,109,154, +151,156,153,150,159,153,150,155,74,65,74,74,65,74,153,150,155,154,151,160,161, +158,163,130,100,127,31,41,31,36,36,36,36,41,41,27,25,39,159,159,84,72,70,52,41, +38,44,40,38,46,40,38,43,39,47,39,39,56,39,39,37,39,38,38,38,38,37,41,38,43,51, +37,41,37,52,47,51,51,48,70,51,60,57,51,47,51,51,53,52,51,52,51,51,47,51,51,47, +56,51,57,59,39,33,44,168,166,168,168,166,168,39,37,40,51,48,58,51,48,52,51,51, +60,51,48,58,51,50,66,51,52,51,51,46,54,51,58,51,52,46,52,38,36,49,38,37,38,38, +36,42,38,36,47,38,41,41,39,56,39,39,46,39,39,37,42,40,38,45,40,37,43,70,68,51, +156,156,81,27,25,38,36,40,40,37,37,37,28,37,28,112,86,109,154,151,156,154,151, +160,154,151,156,74,65,74,167,170,160,157,158,151,162,166,159,116,113,116,51,87, +112,92,148,185,113,174,201,63,99,126,57,89,114,86,142,182,88,142,185,51,88,112, +123,120,123,160,162,155,159,162,155,164,169,162,166,169,160,161,166,159,163,169, +162,118,116,117,56,89,85,89,151,140,89,151,140,61,90,85,61,90,85,89,151,140,89, +151,140,57,86,84,140,143,144,161,166,159,162,166,159,163,168,160,154,160,153, +160,163,155,162,165,158,132,136,134,70,119,154,119,183,206,119,183,206,77,121, +154,76,121,154,118,180,204,110,170,198,57,95,124,129,128,133,163,167,160,167, +169,162,158,160,153,164,169,161,164,169,161,166,169,161,132,136,134,51,86,112, +87,142,182,88,142,185,56,88,112,56,88,112,87,142,182,87,142,182,51,85,111,141, +144,144,161,169,159,169,170,163,164,167,160,159,164,157,170,171,163,161,166,158, +140,143,144,78,84,114,132,150,194,141,166,207,107,115,154,109,117,157,148,180, +217,148,180,217,106,114,155,135,139,140,162,166,159,160,164,157,159,161,154,165, +168,160,168,169,162,169,171,163,129,128,132,52,86,112,76,151,118,76,151,118,56, +88,112,56,88,112,88,142,185,88,142,185,50,85,111,137,140,141,175,174,167,169, +173,165,164,169,161,164,167,160,165,168,160,167,172,163,129,128,132,50,86,112, +87,142,182,87,142,182,56,88,112,56,88,112,88,142,185,88,142,185,52,88,112,114, +111,114,157,160,152,158,161,154,160,164,157,158,160,154,159,166,159,175,175,168, +137,141,141,57,95,132,115,160,192,115,159,191,67,98,132,63,92,124,93,129,167,85, +117,159,44,72,97,123,120,123,159,161,152,160,164,157,161,166,159,67,53,67,71,49, +68,118,117,120,52,38,53,95,77,95,99,70,95,148,147,150,65,48,66,109,80,107,107, +75,106,154,152,160,66,39,64,32,35,43,190,188,116,31,42,47,46,43,47,44,49,58,45, +46,46,47,49,56,54,57,57,54,55,54,53,61,52,40,42,52,45,49,52,51,52,54,51,49,51, +51,49,51,51,66,51,51,50,57,51,47,55,39,34,50,168,168,168,168,166,171,39,34,45, +51,47,59,51,51,51,51,47,51,51,47,51,51,49,51,51,48,57,51,47,51,52,47,51,37,42, +38,38,42,38,38,36,38,53,54,57,54,47,55,39,54,39,40,59,42,41,38,60,42,55,41,41, +55,44,75,72,54,163,163,86,28,26,40,28,26,40,29,26,40,113,87,110,112,84,109,67, +41,66,152,150,157,106,80,113,107,81,104,69,62,73,69,62,73,107,81,104,106,81,113, +152,150,157,67,41,66,129,97,125,128,98,124,28,25,39,28,25,39,28,25,39,159,159, +84,72,70,52,40,53,43,40,53,39,40,37,59,39,58,41,39,40,41,39,45,40,38,46,38,38, +46,38,38,36,37,52,47,51,51,52,65,51,47,54,51,47,51,51,47,55,51,50,51,51,47,56, +51,47,55,51,47,58,39,35,49,168,166,168,168,166,170,39,41,48,51,57,58,51,48,59, +51,50,57,51,48,67,51,53,59,51,47,52,51,47,57,51,52,51,52,62,52,38,43,38,38,37, +39,38,39,38,38,36,58,39,37,42,39,57,41,39,36,58,40,52,39,39,52,42,70,68,51,156, +156,81,27,25,38,27,25,38,28,25,39,113,87,110,112,84,109,67,41,66,153,151,158, +107,81,114,108,82,105,70,63,74,158,160,131,150,155,148,160,163,155,120,117,120, +40,84,111,42,82,108,44,87,114,57,109,144,49,95,125,43,83,110,42,81,108,40,84, +111,119,116,119,161,164,156,158,161,154,161,165,158,162,166,159,169,171,164,166, +169,161,144,143,148,45,83,83,47,82,80,47,82,80,49,85,85,49,85,85,49,83,82,49,83, +82,45,83,84,141,143,144,168,170,163,171,173,166,170,173,167,166,167,161,161,164, +156,160,167,158,111,108,111,56,114,152,59,113,150,59,113,150,60,115,153,60,115, +153,59,112,150,58,111,147,53,105,140,129,128,132,161,165,158,172,173,166,160, +166,159,168,169,162,161,167,160,173,175,166,134,138,139,39,82,110,43,82,108,42, +82,108,43,83,111,43,83,111,42,82,108,42,82,108,40,82,110,148,147,152,165,168, +160,175,175,169,170,173,167,164,168,160,169,173,166,166,169,161,141,143,144,71, +79,112,71,80,112,78,88,123,92,102,143,98,109,153,99,107,152,98,109,153,97,108, +154,141,140,143,175,176,169,169,170,164,160,166,159,168,170,164,168,170,163,161, +167,160,141,141,144,40,82,110,60,135,70,42,82,108,44,84,111,44,84,111,43,82,108, +42,82,108,39,81,110,145,148,152,168,169,162,173,173,167,171,173,166,165,168,160, +164,167,160,175,176,168,145,143,150,39,82,110,42,82,108,42,82,108,44,84,111,44, +84,111,43,82,108,42,82,108,42,84,112,107,107,108,161,163,156,157,158,151,158, +161,154,165,169,162,171,171,164,169,171,164,144,143,147,48,88,128,48,89,126,48, +89,126,48,92,130,48,90,128,44,82,116,39,72,102,35,63,94,136,141,141,170,172,164, +161,165,158,164,167,160,104,102,111,110,108,115,118,116,124,88,61,85,137,135, +143,144,142,148,148,146,153,107,75,103,153,153,160,152,151,158,154,152,156,66, +39,64,32,29,43,190,188,115,31,31,42,46,44,48,44,47,56,43,46,56,42,45,55,42,45, +55,40,43,52,39,42,52,39,42,51,45,51,51,51,46,51,51,47,51,51,47,51,51,46,51,51, +52,51,51,52,52,39,33,40,168,167,168,168,166,168,39,34,38,51,47,69,51,47,51,51, +48,56,51,47,51,51,50,51,51,52,52,51,58,54,52,51,52,37,38,49,38,37,49,39,38,40, +38,43,38,54,48,54,55,60,61,41,53,43,41,38,41,41,43,54,29,26,45,163,163,87,75,73, +55,28,26,40,29,26,40,110,81,112,110,81,112,110,80,106,65,39,70,151,149,155,105, +77,101,106,79,103,109,85,108,109,85,108,58,44,66,79,64,78,68,46,67,66,39,71,110, +80,106,110,81,112,126,92,128,28,25,39,28,25,39,73,71,53,159,159,84,28,25,43,39, +42,52,40,37,40,39,52,42,39,37,44,39,37,40,38,42,38,38,37,46,38,44,38,52,47,59, +51,47,59,51,47,58,51,47,64,51,47,51,51,47,56,51,47,51,51,47,62,51,57,62,39,46, +40,168,166,168,168,167,168,39,52,44,51,58,60,51,47,52,51,47,51,51,57,64,51,51, +50,51,47,51,51,51,58,51,47,57,52,47,51,38,53,42,38,36,39,38,50,47,38,35,38,39, +38,47,39,51,41,39,36,39,39,41,51,27,24,42,156,156,81,71,69,52,27,25,38,28,26,39, +110,81,112,110,81,112,110,80,106,66,39,71,152,150,156,106,77,102,107,80,104,110, +86,109,160,161,145,158,159,151,163,167,160,100,100,102,193,192,195,189,187,190, +187,185,188,185,184,187,188,186,189,186,185,188,191,194,195,188,192,192,128,132, +131,161,163,156,161,166,159,160,165,158,168,169,162,162,167,160,165,170,162,137, +140,142,189,188,191,187,186,189,189,187,190,189,187,190,189,187,190,185,184,187, +187,185,188,185,183,186,132,137,138,172,175,168,167,171,163,173,174,167,167,169, +162,164,168,160,175,174,167,135,135,139,187,186,189,184,183,186,184,183,186,184, +183,186,186,185,188,185,184,187,185,184,187,185,184,187,124,124,129,171,172,164, +169,173,165,171,173,165,166,170,162,162,168,160,169,171,164,131,135,136,187,186, +189,185,185,190,186,185,188,190,188,191,189,187,190,188,186,189,188,186,189,188, +187,190,139,139,143,168,172,164,171,174,168,164,169,161,165,168,160,173,174,168, +168,172,164,131,131,135,190,189,192,186,185,188,188,186,189,188,186,189,184,183, +186,187,185,188,182,181,185,187,186,189,131,131,135,173,175,167,159,165,158,162, +167,160,162,167,160,170,171,163,168,172,164,125,124,129,186,185,188,186,185,188, +188,186,189,186,185,188,187,185,188,185,185,190,190,188,191,189,188,191,140,140, +144,172,174,166,164,168,160,171,173,165,165,168,160,165,168,160,171,172,164,140, +139,143,186,185,188,187,185,188,188,186,189,184,183,186,187,185,188,185,185,190, +189,187,190,187,186,191,102,101,104,158,159,152,158,159,152,159,162,155,162,166, +159,162,168,160,167,171,163,140,140,144,185,183,187,189,187,190,187,185,188,185, +184,187,182,181,185,186,185,188,190,188,191,193,191,194,136,139,141,175,175,167, +165,168,160,164,168,160,40,23,39,42,23,41,80,56,77,55,50,54,58,36,57,61,36,59, +105,75,101,68,62,67,67,45,65,66,46,68,110,81,113,66,39,64,32,33,52,190,189,115, +31,29,47,46,53,63,44,48,58,44,45,53,46,47,55,46,47,56,48,55,54,48,49,53,51,47, +52,52,48,65,51,53,54,51,55,59,51,47,54,51,49,51,51,53,51,51,46,52,39,50,51,168, +166,168,168,166,169,39,34,39,51,47,51,51,47,52,51,47,52,51,47,51,51,52,51,51,48, +60,51,48,62,51,57,55,52,47,51,38,37,38,39,48,45,39,38,39,40,38,40,40,40,39,41, +44,50,42,41,63,34,32,40,127,126,78,181,181,98,28,26,39,34,31,41,66,39,64,69,46, +68,150,151,152,153,151,155,106,78,103,67,45,66,148,146,150,147,145,149,68,49,67, +40,34,40,52,52,60,83,81,85,68,45,67,103,75,100,153,151,155,151,152,153,113,83, +115,66,39,64,33,30,40,28,25,38,178,178,95,122,121,75,33,31,39,40,39,60,40,43,48, +39,37,43,39,55,39,38,38,55,38,37,37,38,36,57,52,47,57,51,47,52,51,47,52,51,47, +52,51,55,56,51,47,51,51,47,51,51,47,54,51,47,52,39,46,41,168,169,168,168,168, +168,39,34,47,51,48,55,51,47,56,51,47,54,51,47,51,51,52,54,51,47,55,51,47,51,51, +47,57,52,47,51,38,36,37,38,56,49,38,48,45,39,44,54,39,45,40,39,42,48,40,39,60, +33,31,38,120,119,74,176,176,93,27,25,37,33,29,39,66,39,64,110,81,112,151,152, +153,154,152,156,107,79,103,151,151,155,150,148,152,150,148,152,69,50,68,161,167, +159,157,161,154,163,166,159,159,161,153,161,165,157,163,167,158,160,164,157,161, +167,159,169,171,163,160,164,157,164,166,159,162,167,160,159,165,157,166,169,161, +165,168,160,161,166,159,168,169,162,169,170,163,164,167,160,171,172,164,167,169, +161,170,171,162,160,166,159,161,167,159,161,168,159,161,168,159,168,170,162,170, +173,166,165,168,160,173,177,170,173,177,169,173,177,170,170,171,163,173,175,169, +173,174,167,174,175,168,170,171,162,169,173,165,165,170,161,173,173,166,171,174, +167,168,170,162,166,171,162,173,173,166,170,171,163,173,177,169,173,177,170,171, +174,167,173,174,168,171,173,166,160,165,158,163,169,161,164,167,159,173,174,167, +170,173,165,170,171,162,159,164,156,161,167,159,159,166,158,164,167,159,169,174, +166,166,170,162,171,174,168,171,173,165,167,169,162,173,175,169,170,173,167,174, +174,167,165,170,161,167,171,162,161,167,159,170,171,163,167,169,161,160,166,159, +166,170,161,170,171,163,161,165,158,169,170,164,164,167,160,167,171,163,171,173, +166,170,173,166,165,168,160,161,167,160,167,169,162,167,169,162,163,168,159,167, +171,163,167,170,161,162,168,159,156,159,150,170,173,166,171,173,166,167,171,163, +173,175,169,173,175,169,165,168,160,162,167,159,162,166,159,160,165,157,168,170, +163,167,169,161,159,163,156,161,167,159,163,167,159,165,168,159,160,166,158,165, +168,160,162,168,160,158,161,154,160,164,157,164,169,162,162,167,160,162,166,159, +167,169,162,174,174,167,173,173,166,164,167,159,163,166,159,170,171,162,168,170, +162,170,173,166,163,168,159,160,166,157,167,171,163,161,167,160,169,170,164,169, +170,163,69,50,67,73,52,71,120,118,122,54,33,57,98,73,95,102,74,99,149,147,151, +67,42,70,111,83,114,110,80,106,155,152,159,66,39,64,32,30,60,190,190,114,31,40, +49,46,43,44,44,50,50,49,51,49,49,49,61,54,53,56,54,48,54,53,59,59,52,48,60,52, +50,52,51,47,55,51,52,51,51,59,51,51,46,51,51,47,64,51,59,62,39,33,43,168,167, +168,168,167,168,39,34,39,51,50,54,51,50,51,51,47,51,51,52,51,51,52,51,51,47,57, +51,47,61,52,48,51,37,52,59,37,35,47,53,62,53,38,39,44,40,41,40,40,39,40,41,43, +45,41,45,41,28,36,38,182,179,100,28,26,38,39,43,42,66,39,64,110,81,112,69,46,68, +112,89,109,109,81,105,89,79,89,66,44,65,102,73,98,102,76,104,95,87,100,101,83, +103,104,79,107,147,142,148,67,45,66,101,81,99,110,81,106,113,90,110,134,122,134, +115,85,117,66,39,64,38,42,41,27,27,36,174,172,94,27,34,37,39,44,39,40,42,44,39, +37,42,39,36,39,39,37,38,38,55,52,38,46,38,52,47,51,51,56,57,51,49,57,51,47,59, +51,48,51,51,55,51,51,46,51,51,46,51,51,71,55,39,34,46,168,166,168,168,166,170, +39,51,45,51,55,51,51,47,51,51,59,55,51,48,51,51,47,51,51,47,57,51,47,70,51,47, +51,52,48,51,38,36,39,38,39,39,38,51,39,39,51,40,39,38,43,39,41,44,39,43,39,26, +34,36,177,174,94,27,25,35,37,41,40,66,39,64,110,81,112,69,46,68,113,90,110,110, +81,106,90,80,90,68,45,67,105,75,101,105,79,107,98,90,104,110,109,112,111,110, +113,112,111,113,113,112,115,113,112,115,114,113,116,115,114,117,115,114,117,115, +114,117,115,114,117,115,114,117,115,114,117,115,114,117,115,114,117,115,114,117, +115,114,117,115,114,117,115,114,117,115,114,117,115,114,117,115,114,117,115,114, +117,115,114,117,115,114,117,115,114,117,115,114,117,115,114,117,115,114,117,115, +114,117,115,114,117,115,114,117,115,114,117,115,114,117,115,114,117,115,114,117, +115,114,117,115,114,117,115,114,117,115,114,117,115,114,117,115,114,117,115,114, +117,115,114,117,115,114,117,115,114,117,115,114,117,115,114,117,134,133,136,115, +114,117,115,114,117,115,114,117,115,114,117,115,114,117,115,114,117,115,114,117, +115,114,117,115,114,117,115,114,117,115,114,117,115,114,117,115,114,117,115,114, +117,115,114,117,115,114,117,115,114,117,115,114,117,115,114,117,115,114,117,115, +114,117,115,114,117,115,114,117,115,114,117,115,114,117,115,114,117,115,114,117, +115,114,117,115,114,117,115,114,117,115,114,117,115,114,117,115,114,117,115,114, +117,115,114,117,115,114,117,115,114,117,115,114,117,115,114,117,115,114,117,115, +114,117,115,114,117,115,114,117,115,114,117,115,114,117,115,114,117,115,114,117, +115,114,117,115,114,117,115,114,117,115,114,117,115,114,117,115,114,117,115,114, +117,115,114,117,115,114,117,115,114,117,115,114,117,115,114,117,115,114,117,115, +114,117,115,114,117,115,114,117,115,114,117,115,114,117,115,114,117,115,114,117, +115,114,117,115,114,117,115,114,117,115,114,117,115,114,117,115,114,117,115,114, +117,115,114,117,115,114,117,115,114,117,115,114,117,115,114,117,115,114,117,67, +47,65,71,49,69,119,120,127,53,30,54,95,68,92,99,69,96,148,149,156,65,38,67,109, +79,105,107,75,105,154,151,158,66,39,64,32,33,47,190,188,116,31,55,55,46,63,46, +44,44,45,43,43,45,51,51,55,54,50,55,54,62,54,53,52,56,52,48,52,52,49,55,51,56, +51,51,46,58,51,46,60,51,63,52,51,50,55,51,52,58,39,35,40,168,168,169,168,166, +170,39,34,39,51,56,61,51,47,51,51,51,51,51,49,51,51,48,57,51,47,51,52,47,51,37, +42,38,38,42,38,39,37,39,53,54,57,54,48,55,39,55,39,41,38,44,41,46,43,34,35,41, +128,131,72,128,127,78,34,31,41,37,37,42,114,88,111,110,83,107,69,46,68,118,99, +119,107,80,110,106,94,107,64,43,63,101,74,99,97,69,94,114,111,115,105,94,105,97, +69,99,136,134,141,66,44,65,106,87,107,107,76,105,123,107,125,111,102,113,110,83, +107,124,95,120,36,36,41,32,29,37,109,108,68,123,126,69,33,34,39,40,44,42,39,37, +42,39,43,39,39,44,40,38,36,38,38,45,37,52,47,56,51,47,51,51,49,58,51,48,51,51, +48,51,51,52,52,51,66,51,51,54,51,51,46,51,39,33,45,168,166,168,168,166,168,39, +48,39,51,47,51,51,47,57,51,50,55,51,47,51,51,47,51,51,47,51,51,47,51,51,47,51, +52,47,57,38,46,43,38,55,41,38,47,38,39,37,39,39,42,49,39,44,42,33,34,39,121,124, +68,121,119,73,32,29,39,37,37,42,113,87,110,110,83,107,69,46,68,119,99,120,109, +81,112,109,96,110,67,44,66,106,77,104,102,73,99,119,116,121,121,119,126,107,107, +109,117,117,120,111,110,113,125,124,129,119,119,121,136,136,140,138,138,141,139, +139,142,137,137,140,139,139,142,134,133,139,143,141,147,141,141,144,142,142,145, +141,141,144,144,144,148,139,139,142,136,136,140,141,141,145,126,126,131,141,141, +145,136,136,140,136,136,140,144,144,148,145,144,150,146,145,151,142,142,145,142, +141,145,142,142,145,142,141,145,147,146,152,138,138,142,142,142,145,144,144,147, +141,141,145,144,144,147,142,141,145,142,142,145,141,141,144,141,141,144,141,141, +144,146,146,149,147,147,150,141,141,145,141,141,145,146,146,149,151,151,154,152, +151,154,139,138,142,143,142,149,133,133,137,127,126,131,139,139,142,139,139,142, +133,133,136,141,141,144,141,141,144,138,136,142,141,141,144,145,145,148,139,138, +144,146,145,151,142,142,145,136,136,140,141,141,145,136,136,140,141,141,145,126, +126,131,133,133,136,136,136,140,133,133,136,144,142,149,126,126,131,139,139,142, +136,136,140,133,133,137,137,137,140,121,121,123,127,127,131,127,126,131,126,126, +131,146,144,150,141,141,144,137,137,141,121,121,123,137,137,141,123,123,126,122, +121,124,128,128,132,115,114,117,134,134,137,137,136,140,133,133,136,141,141,144, +145,144,150,138,138,142,141,141,144,144,144,148,137,136,140,137,136,140,142,142, +146,126,126,130,147,145,151,142,142,145,136,136,140,137,137,140,123,123,126,127, +127,132,127,127,132,121,121,124,121,121,124,134,134,138,134,134,137,133,133,137, +136,136,140,136,137,140,137,137,140,137,137,140,133,133,136,141,141,144,142,142, +145,133,133,136,142,142,146,139,139,142,133,133,137,137,136,140,141,141,144,104, +103,111,110,109,115,119,116,121,88,63,85,137,136,143,144,143,148,148,146,150, +107,77,103,153,152,157,152,150,158,154,153,156,66,39,64,32,29,43,190,188,115,31, +29,42,46,54,48,44,43,44,43,52,48,46,45,49,51,48,53,54,49,61,53,49,53,52,50,52, +52,48,65,51,47,51,51,60,51,51,47,51,51,46,52,51,60,56,51,47,58,42,39,51,170,168, +170,170,168,171,42,42,41,51,47,56,51,47,57,51,47,54,51,50,51,51,52,52,51,58,54, +52,51,52,37,38,49,38,37,49,39,38,40,38,43,38,54,48,54,55,60,61,41,57,41,41,39, +41,28,32,42,180,179,96,129,132,75,34,31,39,66,39,64,110,81,112,107,78,103,68,46, +67,135,132,139,112,98,111,119,115,121,62,41,61,114,114,120,109,109,112,105,106, +109,106,107,110,132,130,134,141,139,143,65,43,64,144,144,151,139,134,140,145, +143,148,82,56,83,107,78,103,116,92,119,66,39,64,31,30,33,117,119,69,176,175,92, +27,31,41,40,38,40,163,161,163,167,165,167,164,162,164,164,162,164,164,162,164, +164,161,164,164,161,164,164,162,164,164,162,164,164,162,164,164,162,164,164,162, +164,167,165,167,106,103,105,42,55,47,170,169,170,170,170,171,42,39,49,51,47,51, +51,53,51,51,47,54,51,47,54,51,47,54,51,47,54,51,47,54,51,36,52,34,40,47,36,31, +46,36,37,46,37,24,43,37,24,40,37,31,41,40,37,40,26,30,40,175,174,91,122,124,71, +32,29,37,66,39,64,110,81,112,107,78,103,69,46,68,136,133,140,114,99,113,123,118, +125,65,43,64,122,121,127,117,117,120,112,113,116,128,127,129,128,127,129,136, +134,136,137,135,138,134,133,135,142,140,143,146,143,145,151,150,152,148,147,149, +146,144,148,151,150,152,150,149,150,150,149,152,146,144,148,155,154,156,158,157, +159,157,156,158,149,148,150,154,152,155,154,152,155,149,144,147,147,145,147,155, +154,157,156,155,157,159,158,160,159,158,160,153,150,155,153,151,154,157,156,158, +154,151,156,153,151,154,155,154,155,150,149,152,158,156,160,151,150,152,157,156, +158,155,154,156,159,158,160,159,158,161,157,156,159,154,151,155,151,148,151,157, +156,158,160,159,161,158,157,159,158,157,159,164,161,164,163,162,164,155,154,155, +154,152,155,151,150,152,151,150,152,142,141,143,150,149,151,148,147,149,157,156, +158,156,155,157,154,151,154,155,154,156,158,157,159,160,159,161,157,156,157,159, +158,160,153,150,155,154,152,155,150,149,151,147,145,147,148,147,149,150,149,150, +157,155,159,156,155,157,158,157,160,155,154,156,144,142,145,152,151,153,155,154, +156,149,148,150,152,151,153,145,142,145,149,148,150,151,150,152,151,150,152,155, +154,156,154,152,155,148,147,149,149,146,150,151,150,152,151,150,152,146,145,147, +142,141,143,140,139,141,144,142,145,155,154,156,145,144,146,151,150,152,155,154, +156,150,149,151,154,152,155,156,155,157,152,151,153,147,145,147,154,152,155,151, +151,152,156,154,158,151,151,152,155,152,157,155,154,156,148,145,147,151,150,152, +144,141,146,148,146,148,139,141,140,138,137,139,145,142,145,150,149,152,152,150, +155,147,144,146,145,144,146,150,149,151,147,145,147,156,155,157,165,162,165,150, +149,151,148,147,149,154,152,155,152,151,153,152,151,153,155,154,156,20,16,29,22, +16,30,48,42,66,55,36,57,58,40,58,61,39,59,105,75,108,68,45,70,67,50,68,66,42,64, +110,82,106,66,39,64,32,29,43,190,190,116,31,40,49,46,43,46,44,43,45,43,42,43,44, +43,46,50,47,51,54,49,61,53,65,53,52,48,52,52,48,52,51,50,51,51,47,62,51,47,51, +51,49,56,51,55,52,51,47,56,50,45,50,42,47,41,42,36,41,50,46,56,51,56,51,51,47, +51,51,47,52,51,52,51,51,48,60,51,48,62,51,57,55,52,47,51,38,37,38,39,48,45,39, +38,39,39,38,39,40,40,39,41,43,41,41,39,47,28,27,39,180,178,95,28,28,43,28,26,28, +141,120,144,149,148,151,153,151,155,68,45,67,67,45,66,66,44,65,63,42,62,60,39, +59,57,51,60,53,32,54,84,60,82,54,35,53,56,37,56,60,39,59,63,42,62,66,44,65,67, +45,66,68,45,67,69,46,68,154,152,156,154,153,115,74,73,80,33,32,34,27,27,41,176, +174,91,27,25,37,40,38,45,39,37,43,42,40,45,45,42,46,41,38,42,45,42,46,51,65,52, +51,47,60,51,47,69,51,47,57,51,47,56,51,47,51,51,47,57,51,48,50,51,47,64,50,56, +49,42,46,47,42,43,45,50,45,64,51,53,50,51,47,51,51,47,52,51,47,60,51,48,62,51, +53,51,51,47,54,51,47,51,51,52,54,36,37,46,36,37,46,37,38,47,37,38,47,37,38,47, +40,37,45,26,25,37,175,173,90,27,27,41,27,25,27,154,153,160,153,154,155,154,152, +156,108,78,104,68,45,67,67,45,66,66,44,65,64,42,63,62,56,65,58,35,59,90,65,88, +119,117,121,121,120,123,132,131,134,132,130,133,142,141,143,146,145,147,147,146, +148,152,151,153,149,148,150,153,152,154,149,148,150,150,149,152,152,151,153,148, +147,149,151,150,152,151,150,152,156,155,157,157,156,158,150,149,151,156,155,157, +146,145,148,151,150,152,156,155,157,155,152,156,158,157,159,160,159,161,157,156, +158,154,152,155,158,157,159,161,160,162,161,160,162,156,155,157,149,148,149,160, +159,161,159,158,160,159,158,160,160,159,161,152,151,153,155,154,156,161,160,162, +156,155,156,151,150,152,151,150,152,159,158,160,155,154,156,154,153,155,158,157, +159,162,161,164,155,154,156,151,150,152,156,155,157,155,154,156,149,148,150,153, +152,154,149,148,150,153,151,153,151,150,152,156,155,157,159,158,160,154,152,155, +160,159,161,156,155,157,154,153,155,156,155,157,154,153,155,153,151,154,150,149, +152,151,150,152,154,152,155,156,155,156,158,157,159,154,152,156,162,161,163,151, +150,152,158,157,159,154,152,155,151,150,151,152,151,155,147,145,147,150,149,151, +149,149,150,147,145,147,148,147,149,149,148,150,153,152,154,150,150,151,155,153, +156,155,153,156,145,143,146,141,140,142,137,136,139,151,150,153,148,147,149,150, +149,151,157,156,158,155,154,156,149,148,150,149,148,151,156,155,157,154,152,155, +152,151,153,158,157,159,159,158,160,151,150,152,149,148,150,150,149,151,153,152, +154,146,145,147,149,148,150,151,150,153,145,144,146,145,144,146,144,142,145,145, +144,146,149,148,151,156,155,157,148,146,148,152,151,153,153,152,154,149,148,150, +152,151,153,158,157,159,148,146,148,149,148,150,154,152,155,154,152,155,148,147, +149,154,152,155,43,36,52,45,42,58,85,86,86,54,33,53,98,73,95,102,81,104,149,150, +151,67,42,65,111,86,110,110,80,112,155,152,157,66,39,64,32,29,47,190,188,116,31, +28,43,46,56,46,44,48,54,42,41,43,44,42,45,51,48,62,54,50,60,53,57,59,52,49,52, +52,58,61,51,58,50,51,48,69,51,53,57,51,48,52,51,47,61,51,47,55,51,47,55,51,51, +56,51,50,51,51,47,51,51,51,57,51,55,68,51,50,55,51,58,51,51,48,54,51,48,52,51, +48,51,52,47,57,38,36,54,39,52,42,39,38,43,39,38,44,40,38,52,41,40,41,41,39,41, +28,39,39,179,179,95,28,26,40,66,39,64,127,112,129,107,79,103,109,79,105,65,44, +63,144,140,151,104,76,103,142,140,148,57,38,57,89,70,87,83,62,82,98,97,100,89, +75,87,88,64,85,127,123,128,61,43,67,107,89,108,107,79,108,151,148,154,41,44,42, +67,57,70,138,131,90,131,128,133,66,39,64,27,25,38,175,174,90,26,37,37,40,38,40, +39,38,40,45,42,45,42,41,44,41,39,43,45,42,50,51,57,52,51,48,54,51,57,56,51,47, +52,51,48,51,51,51,51,51,47,51,51,47,55,51,52,56,51,47,51,51,47,51,51,47,51,51, +47,54,51,49,66,51,47,58,51,47,51,51,47,57,51,52,51,51,51,70,51,59,55,51,48,51, +51,47,51,36,37,46,36,37,46,37,38,47,37,38,47,37,38,47,39,37,39,26,37,37,174,173, +89,27,24,37,66,39,64,154,151,156,107,79,103,110,80,106,65,45,63,146,142,153,106, +78,105,146,144,153,61,41,61,96,76,94,90,67,89,104,103,106,120,118,120,123,122, +125,128,127,129,133,131,133,96,100,100,99,103,103,103,99,100,107,109,110,104, +108,108,105,105,108,106,109,109,104,103,107,152,151,153,154,152,155,154,154,155, +156,155,157,158,157,159,156,155,157,151,150,152,160,159,161,103,100,102,103,100, +102,105,105,108,100,98,97,104,103,104,108,111,111,107,110,110,113,112,116,156, +155,157,160,159,161,158,157,159,160,159,161,153,151,154,153,151,154,151,150,152, +156,155,157,101,105,103,104,108,108,108,111,111,114,113,117,112,111,114,100,104, +101,97,101,101,107,110,110,158,153,157,151,150,152,159,158,160,165,164,166,155, +154,156,151,150,152,154,151,155,153,152,154,102,100,100,106,109,110,102,100,100, +106,109,109,105,109,109,104,108,108,107,110,110,103,103,106,157,156,158,158,157, +159,155,154,156,158,157,159,157,156,158,158,157,158,156,155,157,161,160,162,106, +105,108,105,109,110,107,110,111,114,114,117,119,118,121,108,111,112,114,114,117, +111,110,113,146,143,146,147,145,147,140,139,141,145,144,146,144,142,145,142,141, +145,155,154,156,151,150,153,103,107,107,101,98,100,104,108,108,104,108,108,105, +102,104,104,108,105,105,102,104,102,99,101,151,150,152,151,150,152,154,153,155, +158,157,159,151,150,152,141,140,142,151,150,152,152,151,153,104,108,108,107,110, +110,107,110,110,108,110,110,104,101,104,103,100,102,106,105,108,99,98,99,146, +144,147,147,146,149,147,145,147,148,147,149,152,151,153,148,147,149,147,145,147, +156,152,158,104,108,108,109,111,111,109,111,112,104,104,105,105,101,102,111,110, +113,104,101,104,99,98,98,151,150,152,151,150,152,141,140,142,145,144,146,40,34, +52,44,35,54,82,84,90,53,30,51,95,68,94,99,70,96,148,146,155,65,38,63,109,79,110, +107,75,108,154,152,156,66,39,64,32,33,52,190,188,115,31,28,42,46,44,47,44,42,44, +51,48,62,44,42,45,51,51,58,54,49,55,53,49,53,52,57,52,52,50,52,51,48,58,51,50, +52,51,48,52,51,51,52,51,59,51,51,47,54,51,47,51,51,47,58,51,47,51,51,52,51,51, +50,56,51,47,50,51,55,51,51,58,53,51,46,53,51,60,56,51,52,54,51,53,51,53,51,55, +39,44,42,39,37,50,39,38,42,40,39,41,41,50,42,41,39,45,28,31,51,179,178,95,28,29, +42,66,39,64,143,135,147,110,83,110,111,82,112,67,45,66,144,139,145,100,74,103, +139,137,141,54,37,58,86,62,83,79,56,83,93,92,98,83,69,85,83,58,83,127,124,129, +58,35,61,119,107,120,103,77,107,148,144,151,52,37,51,77,57,80,124,107,101,155, +152,159,66,39,64,27,28,40,175,173,90,26,30,49,40,38,43,39,41,39,46,43,49,43,40, +43,43,41,46,46,44,47,51,47,66,51,49,62,51,52,57,51,50,52,51,52,55,51,56,59,51, +48,51,51,47,51,51,53,52,51,47,65,51,47,51,51,55,51,51,47,52,51,47,58,51,52,52, +51,47,52,51,60,51,51,52,51,51,51,50,51,50,55,51,47,51,51,47,51,51,47,51,36,37, +46,36,37,47,37,38,47,37,38,47,39,37,42,26,29,48,174,172,89,26,27,39,66,39,64, +155,152,159,110,83,110,111,83,112,67,46,66,145,140,146,103,76,106,144,142,146, +58,40,62,93,68,90,86,61,90,100,99,104,107,106,108,114,113,115,115,114,116,89,86, +89,46,81,106,50,83,108,51,85,110,53,88,113,54,88,114,53,87,113,54,87,113,52,88, +115,103,102,103,149,148,150,154,151,155,148,147,149,153,151,154,156,155,157,148, +146,148,104,108,108,51,89,116,53,88,113,53,88,113,54,89,115,54,89,115,53,87,113, +54,87,113,51,88,114,105,105,107,157,156,158,156,155,157,158,157,159,154,153,155, +153,151,154,149,148,150,106,105,108,43,74,98,44,72,94,42,70,92,53,89,115,52,88, +113,45,75,98,53,87,114,56,97,128,103,107,107,159,158,160,158,157,159,156,155, +157,153,151,154,150,149,151,151,150,152,102,107,107,57,98,128,54,87,114,53,88, +113,54,89,115,54,89,115,54,87,113,54,87,113,52,88,115,107,110,110,157,156,158, +161,160,162,158,157,159,153,151,154,158,157,159,154,152,155,107,110,110,37,73, +93,42,74,92,42,74,92,42,75,94,42,75,94,41,74,92,41,74,92,38,73,93,103,107,108, +152,151,153,152,151,153,151,150,152,149,148,151,145,144,146,146,145,147,103,102, +103,71,121,158,72,121,155,72,119,155,71,117,152,64,105,136,54,88,115,53,89,113, +51,90,116,103,100,102,142,141,143,149,148,150,155,154,156,148,147,149,145,144, +147,152,150,152,104,108,108,52,88,115,54,87,113,54,87,113,54,89,115,54,89,115, +53,88,113,53,89,113,51,90,115,99,97,97,140,139,140,142,141,145,149,148,150,149, +148,150,155,154,156,149,148,150,101,105,103,52,88,115,54,87,113,54,88,114,60,99, +128,68,112,145,71,118,153,72,122,155,70,124,158,102,98,101,152,151,153,149,148, +150,149,148,150,71,73,72,75,76,80,84,85,86,88,63,89,137,139,139,144,142,149,148, +148,150,107,77,108,153,151,155,152,150,156,154,153,159,66,39,64,32,29,46,189, +188,115,33,32,50,46,52,59,44,43,58,49,45,50,47,45,48,54,49,63,54,49,61,53,50,53, +52,47,52,52,49,52,51,58,55,51,48,58,51,53,58,51,52,50,51,47,59,51,51,51,51,59, +55,51,60,51,51,47,51,51,47,51,51,47,67,51,47,52,51,47,54,51,47,53,48,45,57,47, +44,54,49,47,56,51,49,51,53,49,52,39,40,47,38,46,43,36,39,38,39,42,46,41,49,57, +41,39,51,28,25,38,179,178,103,28,26,44,66,39,64,110,82,108,66,46,67,67,51,67,68, +53,68,120,101,122,142,140,145,138,134,147,91,61,90,101,98,102,94,91,95,90,88,93, +98,96,102,116,116,118,127,124,129,97,70,99,144,141,152,147,144,151,145,137,150, +68,53,68,68,52,68,66,46,67,110,82,106,66,39,64,26,24,41,174,173,96,26,24,36,39, +37,49,35,27,49,48,36,49,47,35,49,46,42,48,46,52,60,49,34,65,49,34,57,49,36,55, +49,37,61,49,46,60,49,49,53,50,36,52,51,47,52,51,36,53,51,36,56,51,36,56,51,37, +55,50,38,57,50,41,59,50,48,59,50,54,52,50,39,55,50,61,55,50,36,60,50,37,52,50, +37,52,50,39,52,36,37,46,36,37,46,52,36,53,35,41,48,37,32,47,39,37,48,26,24,35, +173,172,95,26,24,41,66,39,64,110,82,106,66,46,67,68,52,68,68,53,68,122,103,124, +146,144,149,144,140,152,98,66,97,110,108,112,103,101,105,99,96,101,113,111,114, +107,106,108,127,126,128,91,88,90,48,81,103,82,135,176,84,138,179,55,87,110,56, +87,111,87,141,182,87,142,183,54,87,113,105,104,105,145,143,147,154,152,155,155, +154,156,155,154,156,156,155,157,153,152,154,111,110,113,54,87,113,87,142,183,87, +142,182,56,88,112,56,88,112,87,142,182,87,142,183,54,87,113,107,110,110,161,160, +162,159,158,160,160,159,161,158,157,159,160,159,161,158,157,159,114,114,117,40, +66,86,65,108,142,67,111,144,56,88,112,56,88,112,69,113,146,73,120,150,52,85,110, +115,114,118,158,157,159,153,151,154,158,157,159,160,159,161,154,153,155,159,158, +160,108,110,110,68,110,143,96,154,189,87,143,182,56,88,112,56,88,112,87,142,182, +87,142,183,54,87,113,109,111,111,157,156,158,153,151,154,161,160,162,157,157, +158,151,150,152,149,148,150,108,111,111,42,74,92,68,120,150,68,120,150,46,75,93, +46,75,93,68,120,150,68,120,150,42,74,92,107,110,111,158,157,159,147,144,146,156, +155,157,154,151,155,150,149,151,160,159,161,103,107,104,74,119,155,119,183,206, +119,183,206,76,120,153,73,116,147,103,162,193,88,144,183,53,88,114,109,108,110, +153,152,156,158,157,159,159,158,160,155,154,156,149,148,150,151,150,153,104,101, +103,54,87,113,87,142,183,87,142,182,56,88,112,56,88,112,87,142,182,87,142,183, +53,87,113,105,108,108,150,148,150,152,151,153,148,147,149,146,145,148,148,147, +149,155,153,156,108,110,110,54,87,113,87,142,183,87,142,182,56,89,113,62,98,124, +110,170,198,118,180,205,72,119,155,104,108,108,156,155,157,158,157,159,153,151, +154,40,22,39,42,23,47,80,59,77,55,42,59,58,35,57,61,36,67,105,79,101,68,52,73, +67,46,68,66,49,69,110,78,112,66,39,64,32,41,46,187,188,114,36,33,55,46,44,61,44, +44,44,50,46,50,52,48,53,55,50,59,54,49,54,53,49,57,52,67,51,52,48,57,51,51,51, +51,51,52,51,49,58,51,50,65,51,49,51,51,56,51,51,54,51,51,54,51,51,53,58,51,47, +51,51,47,51,51,47,54,51,47,52,51,53,52,51,47,51,51,53,51,51,48,51,51,51,55,52, +54,52,51,49,53,50,48,54,50,47,51,47,55,56,41,40,41,41,56,41,30,26,45,155,159,89, +30,29,40,66,39,64,70,44,68,66,39,64,108,82,107,68,44,66,65,41,75,61,43,67,96,67, +93,30,24,41,22,21,45,22,21,37,46,37,57,65,48,64,66,39,64,109,79,111,69,52,67, +154,148,158,84,166,0,85,164,0,88,165,0,88,165,0,86,165,0,88,165,0,88,166,0,88, +166,0,88,166,0,88,166,0,88,166,0,88,166,0,88,166,0,88,166,0,88,166,0,88,166,0, +88,166,0,87,165,0,87,165,0,86,163,0,86,162,0,86,161,0,84,159,0,83,157,0,80,151, +0,83,157,0,82,156,0,79,149,0,71,132,13,69,128,13,68,124,13,70,129,11,75,138,3, +78,146,0,79,150,0,73,139,13,77,147,7,76,142,7,68,130,20,72,138,16,82,156,0,66, +124,22,80,151,0,80,152,0,79,151,0,78,147,3,64,121,22,67,125,19,78,144,0,75,143, +0,79,148,0,73,133,0,75,149,0,67,131,0,76,151,0,69,131,0,73,139,0,69,131,0,73, +148,0,138,136,140,142,141,143,147,146,147,104,101,103,53,88,112,86,140,181,93, +147,188,56,87,112,56,87,112,93,147,188,86,140,181,53,87,112,102,105,104,145,143, +146,154,152,155,148,147,149,146,145,148,150,149,151,146,145,147,108,107,109,54, +87,112,86,140,181,93,147,188,56,87,112,56,87,112,93,147,188,86,140,181,52,87, +112,112,111,113,156,155,157,148,147,149,155,154,156,155,154,156,159,158,160,152, +151,153,105,104,108,40,68,88,64,106,139,74,119,155,56,87,112,56,87,112,87,137, +177,65,107,140,43,75,97,107,110,110,154,152,155,160,159,162,147,146,149,159,158, +160,153,151,155,152,151,153,103,107,105,73,118,152,108,169,197,103,158,194,56, +87,113,56,87,112,93,147,188,86,140,181,54,87,112,105,109,109,149,148,151,153, +151,154,155,154,156,157,156,158,151,150,152,151,150,152,104,108,109,42,74,92,68, +119,149,73,124,153,46,75,92,46,75,92,73,124,153,68,119,149,41,73,92,112,111,114, +159,158,160,150,149,151,148,147,149,149,148,150,150,149,151,160,159,161,104,108, +108,74,119,154,118,182,205,128,185,210,77,119,154,76,119,153,122,179,206,101, +160,192,54,88,114,105,105,108,151,150,152,151,150,152,154,153,155,148,147,149, +142,141,142,151,150,153,104,108,108,53,87,112,86,140,181,93,147,188,56,87,112, +56,87,112,93,147,188,86,140,181,54,87,112,105,109,109,157,156,158,153,151,154, +154,152,155,153,151,154,156,155,157,155,152,155,109,111,111,54,87,112,86,140, +181,93,147,188,56,87,112,56,88,113,103,158,194,108,169,197,71,118,152,105,104, +108,151,150,152,150,149,151,151,150,152,69,57,67,73,53,72,120,118,126,54,41,53, +98,82,95,102,75,100,149,147,155,67,51,65,111,82,110,110,81,108,155,153,157,66, +39,64,32,29,44,185,185,111,38,37,52,46,55,59,44,47,44,50,56,51,56,62,56,55,50, +55,54,49,57,53,49,58,52,48,68,52,49,63,51,47,51,51,47,51,51,47,54,51,48,50,51, +48,51,51,55,51,51,48,51,51,48,51,51,50,58,51,47,57,51,47,51,51,47,51,51,48,62, +51,47,51,51,47,51,51,47,58,51,47,51,51,50,58,51,47,63,52,57,53,52,48,52,52,49, +53,53,47,53,41,39,41,41,44,51,31,29,39,153,151,88,30,32,41,66,39,64,113,84,114, +110,80,108,153,152,161,67,42,66,108,81,109,102,75,99,139,141,141,30,22,42,52,46, +67,48,40,58,79,80,80,110,79,114,110,80,108,154,154,156,68,43,73,154,148,158,86, +165,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,164,0,88,164,0,87,163,0, +87,163,0,79,148,13,79,148,13,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,85, +160,0,84,158,0,84,157,0,83,155,0,81,153,0,79,149,0,78,144,0,76,139,0,81,149,0, +82,152,0,81,151,0,72,134,13,71,133,13,70,130,13,73,135,11,77,143,3,77,142,3,72, +131,11,70,128,13,73,133,7,71,126,7,71,131,13,67,125,21,76,143,7,64,122,22,78, +148,0,78,147,0,78,146,0,76,140,3,71,130,12,75,137,3,75,138,0,75,138,0,75,139,0, +77,143,0,76,141,0,74,136,0,73,135,0,73,133,0,73,132,0,73,133,0,68,130,0,143,140, +145,140,139,141,147,146,149,105,102,104,53,89,113,87,142,182,93,148,189,56,88, +112,56,88,112,93,148,189,87,142,182,53,87,113,102,105,104,156,155,157,151,150, +152,149,148,150,149,148,150,156,155,157,149,148,150,109,112,112,54,87,113,87, +142,182,93,148,189,56,88,112,56,88,112,93,148,189,87,142,182,52,87,112,115,114, +118,162,161,163,154,153,155,161,160,162,157,156,158,165,164,166,155,154,156,103, +107,104,40,67,88,67,111,144,91,144,185,56,88,112,56,88,112,91,144,185,65,109, +141,38,67,87,112,111,113,165,164,166,155,154,156,159,158,160,157,156,158,155, +154,156,155,152,156,104,103,105,72,119,155,118,180,204,117,174,203,62,98,124,56, +88,113,93,148,189,87,142,182,54,87,113,106,109,109,148,146,148,157,156,158,156, +155,157,148,147,149,157,156,158,156,155,157,105,109,110,42,74,92,68,120,150,74, +125,154,46,75,93,46,75,93,74,125,154,68,120,150,42,74,92,107,110,110,157,156, +158,158,157,159,157,156,158,150,149,152,144,143,145,155,153,156,109,111,111,74, +119,155,119,183,206,128,186,210,77,121,154,77,121,154,127,185,210,114,176,201, +62,102,132,105,101,102,155,155,156,160,159,161,157,156,158,151,150,152,140,139, +141,157,156,159,103,100,102,53,89,113,87,142,182,93,148,189,56,88,112,56,88,112, +93,148,189,87,142,182,54,87,113,109,111,111,157,156,158,151,150,152,146,144,146, +156,155,157,150,149,151,156,155,157,112,111,114,53,87,112,87,142,182,93,148,189, +56,88,112,56,88,112,94,149,189,96,154,188,68,110,141,112,111,114,151,150,152, +155,154,156,147,145,147,67,50,66,71,52,72,119,116,121,53,38,51,95,73,94,99,73, +100,148,146,150,65,48,63,109,79,105,107,79,108,154,151,156,66,39,64,32,29,47, +181,181,110,42,40,63,47,46,58,44,57,44,59,53,59,56,62,56,55,53,55,54,49,55,53, +49,54,52,48,54,52,58,53,51,48,59,51,50,51,51,53,64,51,47,64,51,61,51,51,52,52, +51,57,51,51,48,51,51,50,58,51,52,55,51,56,52,51,47,51,51,47,51,51,50,58,51,47, +51,51,66,54,51,46,53,51,47,57,51,47,66,52,52,53,52,53,52,54,59,58,39,38,40,41, +38,45,41,45,50,32,30,52,154,153,89,29,26,40,66,39,64,110,84,110,107,75,103,152, +153,158,65,38,64,106,80,107,100,71,96,136,134,138,27,20,40,51,45,65,46,37,57,76, +77,80,107,75,106,107,75,105,153,151,155,66,39,64,154,148,158,86,165,0,87,163,0, +87,163,0,87,163,0,88,164,0,82,157,0,82,157,0,74,149,0,82,157,0,88,164,0,78,146, +15,78,146,15,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,86,162,0,86,160,0,85, +160,0,85,158,0,85,157,0,84,155,0,81,150,0,77,139,0,81,147,0,82,151,0,84,155,0, +84,152,0,84,155,0,83,153,0,83,152,0,83,152,0,82,145,2,76,132,9,81,142,0,80,141, +0,74,123,0,76,134,0,79,146,7,66,123,24,81,153,5,79,147,7,70,131,18,69,131,17,78, +146,0,73,135,11,72,133,11,76,139,0,74,137,0,74,137,0,75,138,0,76,139,0,74,137,0, +73,132,0,72,131,0,72,131,0,72,131,0,71,139,0,146,143,148,142,141,143,141,140, +142,103,105,104,54,89,115,55,86,109,54,85,109,57,89,114,57,89,114,54,85,109,55, +86,109,54,89,115,104,100,103,148,146,148,156,155,157,153,151,154,155,154,156, +156,155,157,150,149,151,109,111,112,59,95,122,55,86,109,54,85,109,57,89,114,57, +89,114,54,85,109,55,86,109,53,88,114,108,111,111,161,160,162,160,159,161,165, +164,166,169,168,170,165,164,166,162,161,163,112,111,113,42,72,92,43,69,88,54,85, +109,57,89,114,57,89,114,54,85,109,41,66,85,39,67,87,115,114,118,162,161,163,159, +158,160,159,158,160,160,159,161,156,155,157,158,157,159,105,109,109,74,122,157, +75,118,150,73,115,147,72,112,144,63,98,126,54,85,110,55,86,109,55,89,114,108, +110,110,152,151,155,159,158,160,156,155,157,158,157,159,154,153,155,156,155,157, +105,105,109,43,75,94,46,74,91,45,73,90,47,77,94,47,77,94,45,73,90,46,74,91,42, +75,93,114,113,117,165,162,165,165,164,166,154,153,155,155,154,156,151,150,152, +152,151,153,112,111,114,75,122,156,75,118,150,74,117,150,78,122,157,78,122,157, +74,117,150,75,118,149,69,114,149,114,113,117,160,159,161,159,158,160,161,160, +162,159,158,160,155,154,156,151,150,152,101,99,99,54,90,115,55,86,109,54,85,109, +57,89,114,57,89,114,54,85,109,55,86,109,55,89,114,107,110,110,158,157,159,153, +151,154,157,156,158,151,150,152,157,156,158,152,151,153,105,109,109,54,89,114, +55,86,109,54,85,109,57,89,114,57,89,114,54,85,109,55,87,110,61,98,126,109,111, +111,152,151,153,156,155,157,156,155,157,104,102,107,110,109,112,119,120,123,88, +62,89,137,135,139,144,143,146,148,149,152,107,76,108,153,151,155,152,150,154, +154,152,156,66,39,64,32,29,44,176,175,104,37,33,50,41,37,46,43,42,45,59,53,58, +56,52,70,54,53,59,45,40,50,43,37,50,44,45,49,51,47,55,51,54,53,51,50,52,50,46, +50,42,47,50,39,43,39,42,37,41,50,46,49,51,59,62,51,48,53,50,46,58,44,52,48,41, +42,42,42,37,48,50,57,49,51,47,51,51,52,51,50,55,58,46,41,56,46,43,53,49,44,58, +52,51,52,54,50,53,40,39,52,38,38,38,30,32,34,27,27,39,162,161,92,28,26,39,66,39, +64,155,152,157,152,150,160,152,150,154,107,77,103,149,147,156,144,142,150,136, +134,142,56,46,68,85,86,92,78,80,85,75,77,81,153,154,157,153,151,155,153,151,158, +109,83,105,154,148,158,85,164,0,87,163,0,87,163,0,88,164,0,82,157,0,82,157,0,78, +154,0,76,150,7,61,120,24,76,146,11,81,151,11,81,151,11,87,163,0,77,153,0,87,163, +0,87,163,0,87,163,0,87,163,0,87,162,0,87,161,0,84,159,0,83,159,0,83,158,0,83, +154,0,81,152,0,82,152,0,83,153,0,85,153,0,84,151,0,84,149,0,83,146,0,83,144,0, +83,143,0,82,142,0,82,142,0,82,144,0,82,144,0,81,139,0,79,137,0,83,149,0,85,159, +0,73,134,19,68,126,22,73,136,15,76,142,7,79,147,0,77,144,3,78,144,3,74,141,0,73, +138,0,74,137,0,74,137,0,75,138,0,75,138,0,74,135,0,73,132,0,72,131,0,72,131,0, +67,131,0,146,143,148,137,137,138,148,147,150,99,98,99,53,88,113,87,142,182,93, +148,189,56,88,112,56,88,112,93,148,189,87,142,182,53,88,113,103,100,102,143,142, +144,149,148,150,150,149,151,151,150,152,150,149,151,149,148,150,103,107,105,73, +118,153,93,149,186,93,148,189,56,88,112,56,88,112,93,148,189,87,142,182,53,87, +112,112,111,113,155,154,156,159,158,160,157,156,158,157,156,158,158,157,159,158, +157,159,107,110,110,41,69,91,78,128,164,93,148,189,56,88,112,56,88,112,93,148, +189,78,128,164,41,69,90,107,109,109,165,162,165,158,157,159,159,158,160,155,154, +156,154,153,155,152,151,153,104,100,101,72,119,155,119,183,206,128,186,210,75, +119,151,70,110,141,101,156,193,87,142,182,54,87,112,108,111,111,156,155,156,158, +157,159,153,151,154,149,148,150,151,150,152,156,155,157,105,105,109,42,74,92,68, +120,150,74,125,154,46,75,93,46,75,93,74,125,154,68,120,150,42,74,92,108,111,111, +166,165,167,158,157,159,155,154,156,159,158,160,151,150,152,156,155,157,107,107, +109,71,114,149,119,182,205,128,186,210,77,121,154,77,121,154,128,186,210,119, +183,206,72,119,153,108,111,111,159,157,159,156,155,157,157,156,158,158,157,159, +155,154,156,155,152,156,104,101,103,53,89,113,87,142,182,93,148,189,56,88,112, +56,88,112,93,148,189,87,142,182,54,87,113,107,110,110,158,157,159,157,156,158, +156,155,157,151,150,152,154,153,155,156,154,156,114,113,117,54,87,112,87,142, +182,93,148,189,56,88,112,56,88,112,93,148,189,87,142,182,54,88,114,109,111,111, +156,155,157,150,149,151,156,155,157,40,27,39,42,23,49,80,59,77,55,35,56,58,41, +57,61,36,70,105,78,101,68,44,69,67,50,72,66,39,67,110,78,106,66,39,64,32,29,43, +188,187,156,162,161,163,168,167,169,33,31,44,59,60,58,56,52,56,46,42,45,163,161, +164,158,156,158,156,154,158,44,47,52,51,48,52,51,50,64,42,38,41,170,168,170,168, +167,168,170,171,172,42,35,41,51,56,57,51,47,56,44,41,51,146,147,147,163,161,164, +170,171,171,42,36,41,51,50,51,51,47,59,45,46,52,131,129,131,120,118,122,117,116, +120,48,43,51,54,49,62,39,38,39,27,24,29,174,172,174,155,156,156,170,168,130,28, +31,44,66,39,64,70,53,68,66,42,71,108,77,104,68,45,77,65,44,65,61,36,65,96,68,93, +55,36,63,50,33,50,44,25,47,74,52,71,65,50,64,66,39,64,109,78,108,69,45,68,154, +148,158,86,167,0,87,164,0,88,164,0,74,149,0,82,157,0,82,157,0,74,148,0,79,151,7, +71,140,13,77,152,3,88,164,0,87,163,0,87,164,0,85,160,0,87,163,0,86,163,0,88,164, +0,89,164,0,93,162,0,104,157,20,106,159,23,125,151,63,133,148,75,129,147,72,125, +149,61,135,150,76,100,156,16,79,159,0,80,159,0,80,157,0,84,154,0,85,153,0,85, +153,0,85,153,0,85,153,0,85,154,0,85,154,0,85,153,0,84,150,0,84,151,0,85,155,0, +86,157,0,84,153,0,73,131,12,77,140,0,78,142,0,78,145,0,75,142,0,66,138,0,77,141, +0,77,142,0,74,137,0,74,136,0,75,138,0,75,139,0,74,133,0,70,130,0,70,130,0,70, +136,0,146,143,148,146,144,148,152,151,153,98,97,98,53,87,112,86,140,181,93,147, +188,56,87,112,56,87,112,93,147,188,86,140,181,53,87,112,103,106,104,141,140,142, +149,148,150,140,139,141,149,148,150,156,155,157,148,146,148,108,110,111,58,93, +120,116,179,204,99,153,191,56,87,112,56,87,112,93,147,188,86,140,181,54,87,112, +105,109,109,156,155,157,150,149,151,155,154,156,149,148,150,160,159,161,161,160, +162,112,111,113,45,77,100,84,137,177,93,147,188,56,87,112,56,87,112,93,147,188, +86,140,181,45,77,100,108,108,110,162,161,163,157,156,158,160,159,161,159,158, +160,155,154,156,159,158,160,104,108,108,74,119,154,118,182,205,128,185,210,76, +119,154,75,117,151,115,171,201,91,147,185,52,87,112,114,113,117,154,152,155,150, +149,151,151,150,152,153,151,154,158,157,159,159,158,160,110,109,112,41,74,92, +109,91,112,110,94,114,46,75,92,46,75,92,73,124,153,68,119,149,41,73,92,108,111, +111,166,165,167,164,160,164,161,160,162,155,154,156,158,157,159,155,152,155,108, +110,110,64,103,133,113,175,201,127,185,209,77,119,154,77,119,154,128,185,210, +118,182,205,71,119,154,117,116,119,161,160,162,160,159,161,160,159,161,157,156, +158,158,157,159,160,159,161,105,109,109,53,87,112,86,140,181,93,147,188,56,87, +112,56,87,112,93,146,187,86,140,181,54,87,112,104,108,108,155,152,156,150,149, +151,155,154,156,158,157,159,155,154,156,159,158,160,108,111,111,54,87,112,86, +140,181,93,147,188,56,87,112,56,87,112,93,147,188,86,140,181,54,87,112,108,111, +111,158,157,159,151,150,152,151,150,152,69,50,70,73,52,71,120,118,122,54,33,62, +98,73,99,102,74,99,149,147,151,67,42,76,111,91,108,110,81,106,155,152,157,66,39, +64,32,34,43,189,187,164,176,176,177,180,178,181,29,28,58,59,54,58,56,52,56,43, +45,42,172,170,175,169,168,169,168,167,168,41,39,41,51,47,51,51,52,56,39,41,39, +168,166,168,165,163,165,168,168,168,39,52,39,51,46,51,51,47,51,41,40,41,163,161, +168,165,162,164,168,166,170,39,34,50,51,50,51,51,47,51,41,36,42,164,161,166,155, +153,156,148,146,148,44,39,50,53,49,61,55,51,53,27,25,36,174,173,174,165,164,165, +170,169,147,28,26,39,66,39,64,83,62,84,81,62,78,112,112,113,67,45,68,108,81,109, +102,74,99,138,138,144,55,36,55,84,62,85,77,55,74,113,113,119,110,80,109,110,80, +106,154,152,160,68,43,67,112,83,109,154,148,158,86,166,0,87,164,0,82,157,0,78, +155,0,87,163,0,82,157,0,78,150,7,78,150,7,88,164,0,76,150,0,82,157,0,82,157,0, +87,164,0,84,164,0,107,161,28,149,155,97,150,155,101,165,150,119,160,149,115,138, +154,84,167,147,124,178,143,133,174,139,130,168,136,128,180,146,138,180,146,138, +180,147,139,181,147,140,171,138,133,77,163,0,82,163,0,86,162,0,87,163,0,87,163, +0,87,163,0,87,163,0,87,161,0,86,158,0,85,156,0,85,156,0,86,157,0,84,153,0,73, +129,11,75,134,0,76,137,0,77,140,0,68,137,0,72,139,0,78,143,0,68,138,0,69,137,0, +75,137,0,74,135,0,73,133,0,73,133,0,72,131,0,70,130,0,68,131,0,146,143,148,138, +141,142,148,147,150,104,101,103,53,89,113,87,142,182,88,142,185,56,88,112,56,88, +112,88,142,185,87,142,182,53,89,113,103,100,102,141,140,142,141,140,143,145,144, +146,150,149,151,151,150,152,152,151,153,106,109,109,53,88,114,98,156,190,113, +174,201,59,93,119,56,88,112,87,142,182,87,142,182,54,87,113,105,109,109,155,152, +156,151,150,152,153,151,154,158,157,159,153,151,154,154,152,156,107,110,110,53, +87,113,87,142,182,87,142,182,56,88,112,56,88,112,87,142,182,87,142,182,52,87, +112,117,117,119,157,156,158,159,158,160,157,156,158,160,159,161,158,157,159,161, +160,162,110,109,111,74,119,155,119,183,206,119,183,206,77,121,154,76,121,154, +116,179,203,106,166,195,55,92,118,112,111,113,157,156,158,154,151,155,149,148, +150,156,155,157,158,157,159,157,156,158,105,105,109,42,74,92,109,92,112,109,92, +112,46,75,93,46,75,93,109,92,112,109,92,112,41,74,92,107,110,110,162,161,163, +156,155,157,158,157,159,159,158,160,153,151,154,152,151,153,105,109,109,55,89, +115,104,163,194,115,177,202,76,121,154,77,121,154,119,183,206,119,183,206,71, +119,154,115,114,118,158,157,159,164,161,164,160,158,160,157,156,158,157,156,158, +159,158,160,112,111,113,52,87,112,87,141,184,87,141,184,56,87,111,55,87,111,86, +141,181,87,141,181,54,87,113,108,110,110,151,150,152,156,155,157,151,150,152, +156,156,157,153,151,154,157,156,158,108,111,111,54,87,113,87,142,182,87,142,182, +56,88,112,56,88,112,87,142,182,87,142,182,54,87,113,105,109,109,157,156,158,153, +151,154,154,153,155,67,47,66,71,49,69,119,120,126,53,30,52,95,68,94,99,69,96, +148,149,155,65,38,64,109,81,105,107,75,103,154,153,156,66,39,64,32,29,50,189, +188,166,181,181,183,184,182,184,29,30,53,42,59,54,56,58,56,42,36,55,172,170,172, +168,167,168,169,168,170,39,34,39,51,47,51,51,48,55,39,60,39,168,165,169,165,167, +168,168,166,168,39,36,46,51,47,51,51,50,54,40,34,39,168,166,169,165,167,165,168, +166,168,39,34,40,51,48,52,51,56,52,40,35,46,168,166,170,167,165,167,169,170,169, +41,35,46,53,48,54,55,68,64,27,25,28,174,173,174,170,169,171,171,169,157,29,30, +40,66,39,64,81,59,78,78,55,79,111,110,113,65,48,68,106,77,105,100,70,96,136,134, +144,53,39,55,82,59,81,75,51,72,111,109,119,107,75,108,107,75,103,153,151,158,66, +44,65,110,80,106,109,82,105,154,148,158,84,165,0,87,164,0,77,155,0,86,162,0,87, +163,0,83,156,7,83,156,7,87,163,0,87,164,0,81,157,0,78,157,0,97,163,6,135,156,78, +181,148,141,179,148,140,179,148,139,178,148,139,178,147,138,179,147,138,178,147, +138,178,147,137,178,147,137,169,141,131,167,139,130,178,148,138,178,148,138,170, +141,132,178,148,139,180,148,140,178,148,137,77,164,0,81,164,0,83,164,0,86,163,0, +87,163,0,87,163,0,87,162,0,87,161,0,87,161,0,86,161,0,86,157,0,83,146,0,80,138, +0,77,136,0,77,140,0,67,137,0,74,138,0,68,138,0,66,137,0,69,138,0,79,145,0,74, +137,0,74,136,0,74,136,0,74,133,0,74,136,0,68,131,0,143,141,145,136,134,138,143, +142,144,102,99,101,45,87,113,45,83,109,45,83,110,47,85,112,47,85,112,46,84,110, +46,83,110,45,87,113,99,99,100,149,147,149,139,138,140,141,140,142,151,150,152, +149,148,150,148,146,148,104,103,105,45,85,113,46,84,112,51,94,123,61,110,146,49, +90,119,44,83,109,45,83,109,45,84,112,103,107,108,153,152,154,155,154,156,156, +155,157,155,154,156,155,154,156,157,156,158,103,107,107,43,84,112,44,82,109,43, +82,109,45,84,111,45,85,112,44,83,109,44,83,109,45,84,112,106,109,109,161,160, +162,161,160,162,157,156,158,159,158,160,156,155,157,158,157,158,104,103,107,63, +117,154,60,114,150,60,114,150,61,115,153,61,117,154,60,114,149,58,110,145,53, +103,136,105,109,109,153,152,154,148,147,149,154,152,155,147,145,146,150,149,151, +157,156,158,103,101,103,32,70,90,102,59,71,102,59,71,32,70,90,32,70,90,102,59, +71,102,59,71,32,69,89,113,113,117,159,158,160,153,151,154,154,153,155,165,164, +166,159,158,161,148,146,148,105,108,109,44,84,112,44,85,113,52,99,132,59,112, +148,63,116,154,60,114,150,60,114,150,59,115,154,113,112,116,161,160,162,158,157, +159,158,157,159,159,158,160,153,151,154,154,151,154,103,107,107,46,84,111,44,82, +108,43,81,107,44,82,109,44,82,109,43,80,107,43,81,108,45,83,111,105,109,109,150, +149,151,151,150,152,156,155,157,154,153,155,154,153,155,152,151,153,107,109,110, +45,84,112,44,82,109,44,82,109,45,84,112,45,84,111,44,82,109,45,82,109,43,84,112, +111,110,113,157,156,158,155,154,156,155,154,156,104,104,113,110,108,118,119,118, +121,88,63,85,137,137,144,144,142,151,148,147,150,107,77,103,153,152,155,152,150, +154,154,151,156,66,39,64,32,30,43,189,187,169,182,180,182,184,182,184,29,28,31, +42,52,57,57,52,56,42,36,49,172,170,172,168,167,168,169,168,170,39,35,39,51,59, +51,51,50,51,39,36,39,168,166,170,165,163,165,168,166,169,39,44,39,51,48,55,51, +47,51,39,34,40,168,167,170,165,163,165,168,166,168,39,37,40,51,58,57,51,47,60, +39,44,47,168,166,168,166,164,166,169,169,171,40,34,41,53,58,60,55,60,55,27,25, +37,174,174,174,172,170,174,172,171,165,29,28,36,66,39,64,114,113,120,112,111, +116,111,110,113,107,76,103,149,148,153,144,142,149,136,134,138,89,62,86,121,120, +126,115,113,120,112,110,114,153,151,155,153,152,155,153,151,158,109,78,105,154, +153,161,153,152,160,153,150,158,154,148,158,85,164,0,87,163,0,87,163,0,87,163,0, +87,163,0,87,163,0,86,163,0,81,164,0,106,161,25,150,154,101,181,148,141,179,148, +140,178,148,139,178,148,138,178,148,138,178,148,138,178,148,138,178,148,138,178, +148,138,178,148,138,178,148,138,178,148,138,171,143,133,165,138,128,169,141,131, +176,146,137,178,148,138,178,148,138,178,148,139,180,148,140,181,148,141,170,151, +126,79,164,0,85,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,86,161,0,85, +155,0,83,149,0,81,142,0,72,136,0,68,136,0,66,136,0,67,136,0,67,137,0,75,141,0, +74,145,0,73,139,0,75,137,0,76,139,0,75,137,0,73,133,0,65,130,0,142,139,143,146, +145,148,145,143,146,100,98,101,172,171,174,176,174,177,169,168,170,169,172,173, +169,168,171,167,166,168,169,168,171,171,170,173,100,97,100,145,143,146,148,146, +148,137,136,138,151,150,152,149,148,150,152,151,153,94,92,95,170,169,172,170, +169,171,173,172,177,165,168,168,177,175,178,179,177,180,172,170,174,181,179,182, +99,103,104,148,146,148,149,148,150,157,156,158,159,158,160,160,159,161,158,157, +159,109,109,113,187,186,188,175,178,181,185,183,186,182,180,184,176,175,177,179, +177,180,176,175,177,182,180,183,102,102,105,161,160,162,156,155,157,158,157,159, +158,157,159,155,154,156,160,159,161,102,105,106,175,178,182,175,174,176,177,176, +179,182,180,184,176,175,177,178,176,179,178,176,179,173,172,176,98,96,97,150, +149,151,149,148,151,148,147,149,150,149,151,157,156,158,156,155,157,98,103,104, +180,179,182,171,175,176,180,178,181,179,177,180,180,178,181,176,175,178,180,178, +181,180,179,182,106,106,109,159,158,160,149,148,150,155,154,156,158,157,159,151, +150,152,155,152,156,99,104,105,188,187,190,180,179,182,186,185,187,182,180,184, +175,174,176,179,177,180,176,175,178,180,178,181,102,106,107,157,156,158,156,155, +157,149,149,152,153,151,154,150,149,151,149,148,150,102,100,104,125,123,127,125, +123,127,125,123,127,125,123,127,125,123,127,125,123,127,176,175,177,176,175,178, +96,95,95,152,151,156,151,150,154,150,149,151,151,150,152,154,153,155,158,157, +159,99,99,103,183,182,185,179,177,180,181,179,182,177,176,178,181,179,182,182, +180,184,172,176,179,182,180,183,106,106,109,157,156,157,150,149,151,155,154,156, +40,23,39,42,27,45,80,56,79,55,38,54,58,36,57,61,40,64,105,75,104,68,47,67,67,49, +68,66,39,64,110,78,106,66,39,64,32,44,65,189,189,169,182,181,182,184,182,184,29, +34,29,42,52,57,56,52,56,42,42,42,172,173,175,168,166,168,169,170,169,39,51,39, +51,46,51,51,50,52,39,33,48,168,166,168,165,166,165,168,166,168,39,40,39,51,58, +60,51,48,52,39,34,51,168,166,168,165,163,166,168,166,170,39,38,49,51,52,60,51, +48,54,39,40,47,168,167,168,166,164,166,169,168,170,40,35,41,53,49,59,55,51,62, +27,25,28,174,173,174,173,172,174,173,171,168,30,28,40,66,39,64,70,43,72,66,39, +64,108,77,109,68,61,67,65,41,64,61,40,63,96,69,93,55,50,55,50,30,49,45,29,47,76, +54,73,65,39,67,66,39,64,109,82,112,69,50,74,68,57,66,67,69,66,64,42,64,154,148, +158,85,165,0,87,163,0,87,163,0,86,163,0,85,164,0,81,164,0,98,161,17,182,147,142, +180,148,140,179,148,139,178,148,138,178,148,138,178,148,138,178,148,138,178,148, +138,178,148,138,178,148,138,178,148,138,178,148,138,178,148,138,178,148,138,178, +148,138,178,148,138,164,137,127,172,143,134,178,148,138,178,148,138,178,148,138, +178,148,138,178,148,138,178,148,138,178,149,137,167,151,121,120,158,52,85,164,0, +87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,86,160,0,86,157,0,80,144,0,63,126, +0,68,131,0,70,135,0,70,136,0,69,137,0,69,138,0,69,139,0,75,145,0,77,141,0,77, +141,0,77,142,0,74,135,0,69,132,0,146,143,148,139,138,140,146,145,147,138,137, +139,145,144,147,148,147,149,143,141,144,150,149,151,141,140,142,143,141,144,146, +145,148,140,139,141,146,145,147,141,140,142,145,144,147,150,149,151,147,145,147, +152,151,153,150,149,151,150,149,151,144,141,146,145,144,147,147,144,146,144,143, +145,144,143,145,154,153,155,153,150,153,155,154,156,152,151,153,142,141,143,149, +148,152,153,151,154,154,153,155,150,149,151,157,156,158,154,152,155,156,155,157, +159,158,160,156,155,157,160,159,161,156,155,156,157,156,158,152,150,153,158,157, +159,155,154,156,159,158,160,155,154,156,164,161,164,158,157,159,157,156,158,156, +155,157,156,155,157,156,155,157,150,149,151,155,154,156,155,154,155,155,154,156, +150,149,151,147,146,148,149,148,150,154,152,155,148,147,149,146,145,148,144,142, +145,149,148,150,155,154,156,147,145,147,152,151,153,144,143,145,149,148,150,153, +151,154,148,147,149,154,153,155,154,153,155,153,152,154,160,159,161,155,154,156, +153,151,154,150,149,151,156,155,157,156,155,157,150,149,151,150,149,151,151,150, +152,156,155,157,154,153,155,155,154,156,159,158,160,157,156,158,156,155,157,149, +148,150,155,154,156,156,155,157,164,161,164,156,155,157,155,154,156,158,157,159, +154,153,155,153,152,154,87,85,89,102,100,104,102,100,104,102,100,104,102,100, +104,102,100,104,125,123,127,149,149,150,154,153,156,151,150,152,149,148,150,155, +154,155,155,154,155,153,151,154,151,150,152,156,155,157,155,154,156,143,141,144, +148,147,150,155,154,155,156,155,157,150,149,151,158,156,158,157,156,158,153,152, +154,158,157,159,153,151,154,146,144,146,157,156,158,69,50,68,73,54,71,120,118, +122,54,39,53,98,73,97,102,76,99,149,147,151,67,49,66,111,87,108,110,82,109,155, +152,157,66,39,64,32,33,43,189,188,168,182,183,182,184,182,184,29,36,29,59,53,63, +56,52,56,42,47,42,172,173,172,168,166,168,169,170,170,39,33,56,51,47,55,51,46, +64,39,65,40,168,167,168,165,163,169,168,167,169,39,35,47,51,51,52,51,46,56,39, +47,51,168,166,168,165,164,165,168,166,168,39,34,39,51,51,52,51,48,52,39,45,50, +168,166,168,166,164,166,169,167,169,40,36,50,53,49,56,55,59,55,27,39,28,174,173, +174,173,175,173,174,172,171,30,46,41,66,39,64,113,85,114,110,82,113,153,151,159, +67,46,66,108,81,105,102,74,101,138,136,144,55,37,54,84,62,82,79,56,77,115,113, +121,110,80,106,110,82,114,154,156,160,68,52,66,112,85,109,111,88,115,110,79,106, +154,148,158,79,164,0,81,164,0,88,163,0,110,159,34,125,156,60,181,147,142,180, +148,140,178,148,139,178,148,138,178,148,138,178,148,138,178,148,138,178,148,138, +178,148,138,178,148,138,178,148,138,178,148,138,178,148,138,178,148,138,178,148, +138,178,148,138,178,148,138,178,148,138,165,138,128,173,144,134,178,148,138,178, +148,138,178,148,138,178,148,138,178,148,138,178,148,138,178,148,138,179,148,139, +175,150,134,101,161,18,85,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87, +162,0,70,139,0,72,135,0,64,128,0,71,132,0,79,145,0,75,145,0,73,144,0,73,144,0, +75,145,0,79,148,0,78,145,0,76,141,0,75,137,0,71,138,0,141,138,142,129,127,129, +139,138,140,136,135,137,140,139,141,146,145,146,145,144,147,150,149,152,149,148, +150,144,142,146,151,150,153,132,131,133,139,138,141,140,139,141,149,148,150,148, +147,149,150,149,151,150,149,151,141,140,142,149,148,150,144,142,145,150,149,151, +146,145,148,148,146,148,138,137,139,155,154,156,150,149,151,158,157,159,155,154, +156,142,141,143,144,142,145,154,151,155,151,150,152,144,141,146,149,148,151,150, +149,152,151,150,152,147,146,148,160,159,161,156,155,157,153,151,154,154,153,155, +153,151,154,159,158,160,156,156,157,153,151,155,153,151,154,156,155,157,157,156, +158,154,153,155,154,153,155,160,159,161,147,146,148,151,150,152,154,153,155,151, +150,152,149,148,150,157,156,158,154,151,155,151,150,152,159,158,160,154,154,155, +147,145,147,147,145,147,147,145,147,149,148,151,148,147,149,145,144,146,144,142, +146,138,137,139,149,148,152,150,149,151,165,164,166,157,156,158,164,161,164,159, +158,160,159,158,160,159,158,160,149,148,150,157,156,158,157,156,158,151,150,152, +156,155,157,155,154,156,151,150,152,151,150,152,149,148,150,151,150,152,154,153, +155,154,153,155,151,150,152,165,164,166,156,155,157,157,156,158,167,166,168,165, +164,166,152,150,153,151,149,152,147,146,148,87,85,89,102,100,104,102,100,104, +102,100,104,102,100,104,102,100,104,125,123,127,154,151,154,150,149,151,153,152, +154,150,149,151,153,151,154,150,149,151,155,154,156,151,150,152,154,153,155,157, +156,158,140,139,142,148,147,149,157,156,158,158,157,159,156,155,157,157,156,158, +151,150,152,161,160,162,157,156,158,155,154,156,154,153,155,151,150,152,67,49, +65,71,49,69,119,116,126,53,41,58,95,71,92,99,69,96,148,146,155,65,51,71,109,83, +105,107,77,105,154,151,156,66,39,64,32,29,44,189,187,168,182,181,182,184,182, +184,29,51,29,59,59,60,56,52,56,42,37,48,172,170,172,168,169,168,169,167,171,39, +41,44,51,53,59,51,51,54,39,34,41,168,166,168,165,163,166,168,166,169,39,34,43, +51,47,52,51,59,55,39,33,43,168,166,168,165,167,165,168,166,170,39,34,39,51,48, +52,51,59,51,39,39,44,168,166,168,166,168,167,169,169,169,40,34,44,53,49,63,55, +49,55,27,29,39,174,173,174,173,171,173,174,173,171,29,53,48,66,39,64,110,87,109, +107,82,103,152,150,154,65,38,63,106,77,102,100,75,100,136,134,138,53,30,51,83, +59,80,77,57,77,114,112,116,107,75,103,107,75,110,153,151,157,66,42,68,110,89, +106,108,78,105,107,79,106,154,148,158,181,148,140,181,148,141,180,148,140,180, +148,140,180,148,140,178,148,139,178,148,138,178,148,138,178,148,138,178,148,138, +178,148,138,178,148,138,178,148,138,178,148,138,178,148,138,178,147,137,178,147, +136,177,145,135,177,144,134,179,145,136,180,146,138,180,146,138,174,142,134,170, +139,131,174,142,133,178,147,137,178,147,137,178,148,138,178,148,138,178,148,138, +178,148,138,178,148,138,178,148,138,179,148,139,169,151,130,106,161,22,85,163,0, +87,163,0,87,163,0,87,163,0,87,163,0,88,164,0,76,148,0,84,155,0,75,141,0,76,141, +0,85,156,0,87,161,0,83,156,0,73,145,0,69,141,0,74,145,0,79,148,0,69,137,0,73, +136,0,75,145,0,143,146,149,141,139,142,136,135,137,146,145,147,144,142,145,135, +134,136,142,141,143,147,145,147,145,144,146,140,139,141,141,140,142,137,136,138, +136,135,137,142,141,143,149,148,150,144,141,145,151,151,152,153,151,154,155,154, +156,145,144,146,145,144,146,148,147,149,147,145,147,138,137,139,146,145,148,154, +151,155,153,151,154,151,150,152,155,154,156,137,136,138,145,144,146,157,156,158, +149,148,150,148,147,149,144,143,147,150,149,152,151,150,152,157,156,158,147,146, +148,155,154,156,154,153,155,154,153,155,150,149,152,151,150,152,151,150,152,150, +149,151,150,149,151,148,147,149,159,158,160,149,148,150,159,158,160,153,151,154, +153,151,154,154,153,155,153,151,154,157,156,158,150,149,151,150,149,151,148,147, +149,153,151,154,156,155,157,156,155,157,150,149,151,144,142,145,140,139,141,146, +145,148,150,149,151,144,141,145,147,145,147,145,144,147,146,145,148,153,151,154, +156,155,157,158,157,159,159,158,160,159,158,160,159,158,160,157,156,158,151,150, +152,143,141,144,155,154,156,144,143,145,155,154,156,159,158,160,156,155,157,155, +154,156,157,156,158,149,148,150,150,149,151,150,149,151,155,154,156,158,157,159, +156,155,157,156,155,157,163,160,163,154,153,155,155,154,156,151,149,152,152,151, +153,87,85,89,87,85,89,87,85,89,87,85,89,87,85,89,87,85,89,102,100,104,150,149, +151,154,154,156,155,154,156,158,157,159,144,143,145,157,156,158,149,148,150,151, +150,152,150,149,151,149,148,150,148,147,149,151,150,155,150,149,151,151,150,152, +155,154,156,161,160,162,149,148,150,155,154,156,153,151,154,155,154,156,156,155, +157,154,153,155,104,104,107,110,108,112,119,120,121,88,62,90,137,137,139,144, +142,146,148,149,150,107,76,109,153,153,158,152,150,158,154,153,156,66,39,64,32, +29,43,189,187,168,182,182,182,184,182,184,29,31,29,59,62,58,56,52,61,42,45,50, +172,170,172,167,166,169,169,170,169,39,33,39,51,47,51,51,49,51,39,34,39,168,167, +168,165,163,165,168,166,169,39,44,47,51,47,58,51,47,51,39,34,39,168,166,168,165, +163,165,168,166,168,39,34,39,51,58,54,51,48,56,40,44,47,167,167,169,166,164,166, +169,166,169,40,49,41,53,49,62,55,55,61,27,25,28,174,175,178,173,172,173,174,172, +170,29,32,37,66,39,64,155,154,161,152,152,156,152,152,154,107,77,103,149,147, +154,144,143,146,136,135,141,89,63,86,122,120,127,116,115,119,114,113,118,153, +151,155,153,151,155,153,153,155,109,78,110,154,153,159,153,153,155,153,154,155, +154,148,158,179,149,138,178,148,138,178,148,138,178,148,138,178,148,138,178,148, +138,178,148,138,178,148,138,178,148,138,178,148,138,178,148,138,178,148,138,178, +148,138,178,148,138,178,147,138,179,146,137,179,144,136,179,143,134,181,139,133, +119,152,52,120,149,57,106,150,30,139,140,80,126,140,67,146,141,86,174,138,122, +177,141,131,177,144,134,178,146,136,178,147,137,178,148,138,178,148,138,178,148, +138,178,148,138,179,148,139,169,151,127,104,161,20,85,163,0,87,163,0,87,163,0, +87,163,0,87,163,0,87,164,0,87,162,0,85,158,0,86,158,0,86,158,0,85,158,0,78,152, +0,76,150,0,72,145,0,73,145,0,73,144,0,65,137,0,75,138,0,68,130,0,140,137,141, +138,137,140,146,145,147,144,142,145,155,154,156,148,147,149,146,145,148,148,147, +149,145,144,147,150,149,151,155,154,156,142,141,143,146,145,147,140,139,141,146, +145,149,152,150,152,149,148,150,154,153,155,154,153,155,159,158,160,149,148,150, +157,156,158,157,156,158,149,148,150,149,148,150,150,149,151,156,155,157,157,156, +158,156,155,157,147,145,147,146,145,148,151,150,152,150,149,151,156,155,157,159, +158,160,153,151,154,160,159,161,154,153,155,159,158,160,151,150,152,158,157,159, +157,156,157,150,149,151,157,156,158,157,156,158,158,157,159,159,158,160,156,155, +157,159,158,160,159,158,160,165,164,166,159,158,160,160,159,161,157,156,158,157, +156,158,157,156,158,151,150,152,156,155,157,155,154,156,148,147,149,154,153,155, +156,155,157,160,159,161,151,150,152,151,150,152,161,160,162,158,157,159,154,153, +155,159,158,160,151,150,152,155,154,156,154,153,155,159,158,160,165,164,166,164, +160,163,164,160,164,158,157,159,161,160,162,155,154,156,158,157,159,154,153,155, +155,154,156,156,155,157,151,150,152,155,154,156,156,155,156,151,150,154,159,158, +160,154,153,155,158,157,159,147,147,149,159,158,160,158,158,159,160,159,161,169, +168,170,159,158,160,154,153,155,148,147,149,148,147,149,152,149,152,142,141,143, +127,126,128,127,126,127,136,135,136,135,133,136,146,145,147,150,149,151,153,152, +154,156,155,157,158,157,159,153,151,154,154,153,155,157,156,158,159,158,160,157, +156,158,159,158,160,150,149,151,151,150,152,154,152,155,143,141,144,158,157,159, +157,156,158,160,159,161,153,151,154,153,151,154,160,159,161,159,158,160,157,156, +158,40,23,46,42,28,42,80,59,78,55,38,55,58,36,67,61,41,60,105,78,102,68,48,68, +67,43,65,66,39,65,110,78,111,66,39,64,32,29,48,189,188,167,181,179,181,184,183, +187,29,40,29,59,53,66,56,62,64,42,37,43,172,170,172,167,166,170,169,168,169,39, +43,41,51,47,57,51,59,54,39,35,39,168,169,170,165,163,166,168,166,169,39,35,43, +51,51,62,51,47,51,39,34,39,168,166,171,165,163,166,168,167,170,39,35,41,51,59, +51,51,50,56,41,37,46,158,156,158,167,166,167,169,170,170,40,40,59,53,49,62,55, +53,53,27,28,37,174,173,174,173,171,173,173,172,167,29,26,37,66,39,64,70,44,68, +66,39,68,108,81,108,68,44,67,65,41,64,61,36,59,96,67,93,55,35,55,50,30,49,46,26, +44,77,53,74,65,56,64,66,42,71,109,78,110,69,46,71,68,50,68,67,47,67,65,50,64, +154,148,158,180,149,139,178,148,138,178,148,138,178,148,138,178,148,138,178,148, +138,178,148,138,178,148,138,178,148,138,178,148,138,178,148,138,178,148,138,178, +148,139,175,149,134,164,150,117,144,154,89,115,156,43,79,161,0,81,159,0,83,155, +0,84,152,0,83,150,0,81,147,0,80,146,0,93,145,4,131,139,66,164,135,104,169,137, +115,173,139,122,177,141,131,177,145,135,178,148,138,178,148,138,178,148,138,178, +148,138,179,148,139,170,151,127,117,160,44,88,164,0,85,163,0,86,163,0,87,163,0, +87,163,0,87,163,0,87,161,0,86,159,0,87,159,0,77,150,0,72,146,0,79,155,0,71,147, +0,83,156,0,70,144,0,70,141,0,79,148,0,72,141,0,143,140,145,140,139,141,148,145, +147,145,144,147,153,151,153,152,151,153,146,145,147,151,150,152,150,149,151,142, +141,143,149,146,148,146,145,147,141,140,143,144,142,145,140,139,142,138,137,140, +154,152,155,153,151,154,156,156,157,151,150,152,155,152,155,150,149,151,156,155, +157,148,146,148,152,151,153,149,148,150,155,152,156,155,154,156,151,150,152,148, +147,150,149,148,151,148,147,149,149,148,150,149,148,150,154,153,155,151,150,152, +159,158,160,157,155,157,158,157,159,160,159,161,154,152,155,159,158,160,152,151, +153,151,150,152,153,151,154,157,156,158,160,159,161,158,157,159,159,158,160,158, +157,159,157,156,158,160,159,161,154,152,155,159,158,160,156,155,157,160,159,161, +159,158,160,157,156,158,150,149,151,146,145,147,154,152,155,151,150,152,156,155, +157,158,157,159,154,153,155,160,159,161,155,154,156,158,157,159,156,155,157,152, +151,153,155,152,156,152,151,155,152,151,153,154,152,155,161,160,162,160,159,161, +159,158,160,156,155,157,155,154,156,154,153,155,156,155,157,146,144,146,153,151, +154,147,145,147,152,151,153,151,150,152,151,150,152,151,150,152,150,149,151,156, +155,157,148,146,148,154,152,155,151,150,152,150,149,151,160,159,161,158,157,159, +150,149,151,148,147,149,144,143,145,142,141,143,137,136,138,138,136,139,134,133, +134,141,140,142,146,145,146,143,142,144,150,148,151,152,150,153,149,148,150,146, +144,146,157,156,158,155,154,156,153,151,154,157,156,158,155,154,156,158,157,160, +150,149,151,148,146,148,146,145,147,152,151,153,152,151,153,151,150,152,159,158, +160,159,158,160,153,151,154,154,153,155,151,150,152,156,155,157,69,53,70,73,52, +71,120,118,122,54,33,53,98,76,99,102,74,99,149,147,151,67,42,66,111,83,113,110, +80,106,155,152,157,66,39,64,32,29,50,189,187,163,179,178,180,184,184,184,29,28, +29,59,54,59,56,65,70,42,37,46,172,170,172,167,166,167,169,169,170,39,34,47,51, +47,54,51,57,51,39,40,39,168,166,168,165,163,167,168,167,170,39,44,39,51,48,66, +51,56,51,39,33,39,168,167,168,165,163,165,168,166,168,39,35,39,51,57,51,51,48, +51,41,37,51,158,156,158,167,166,168,169,168,171,40,45,43,53,49,68,55,53,69,27, +28,28,174,174,174,172,170,175,173,171,164,29,28,38,66,39,64,113,84,113,110,82, +112,153,151,157,67,60,65,108,81,109,102,78,99,138,136,145,55,49,53,84,62,85,78, +59,75,115,113,122,110,79,106,110,83,106,154,152,158,68,43,66,112,83,111,111,83, +108,110,80,106,154,148,158,180,148,139,178,148,139,178,148,138,178,148,138,178, +148,138,178,148,138,179,148,139,180,148,140,180,148,140,179,148,140,178,148,139, +178,148,139,171,150,128,158,151,114,129,159,70,89,163,0,85,162,0,87,162,0,87, +162,0,87,161,0,86,160,0,86,159,0,86,156,1,82,150,4,84,154,0,81,151,0,94,149,5, +118,142,50,134,138,70,174,132,115,176,138,127,177,145,134,178,147,137,178,148, +138,178,148,138,178,148,138,178,148,139,176,149,135,151,154,104,133,156,77,101, +161,18,99,160,11,90,164,0,86,163,0,87,162,0,87,161,0,87,160,0,76,151,0,84,158,0, +76,151,0,83,157,0,78,154,0,70,144,0,74,146,0,79,147,0,73,144,0,146,142,149,144, +142,146,150,149,151,146,144,147,104,108,108,109,108,111,106,101,102,106,109,110, +103,107,105,104,107,105,105,102,104,100,99,100,146,144,147,151,150,152,150,149, +151,154,152,155,150,149,151,155,154,156,158,157,159,159,157,159,106,105,108,112, +112,114,105,109,109,112,112,115,103,107,105,106,105,109,107,111,111,113,112,116, +157,155,157,148,147,149,150,149,151,150,149,151,157,156,158,155,154,156,156,155, +157,160,159,161,103,107,107,107,106,109,112,111,113,112,111,113,107,107,109,104, +108,108,104,108,108,103,107,107,153,152,154,154,153,155,156,155,157,156,155,157, +159,158,160,151,150,152,157,156,158,156,155,157,106,109,109,112,111,114,112,111, +114,114,114,117,105,109,109,112,111,114,108,111,111,102,106,104,158,157,159,151, +150,152,153,151,154,160,159,161,153,151,154,156,155,157,156,155,157,153,152,154, +110,110,112,103,107,104,109,111,111,112,111,114,112,111,114,104,102,102,115,114, +118,115,115,117,167,166,168,160,159,161,161,160,162,155,154,156,154,153,155,153, +151,154,160,159,161,155,153,156,104,103,107,111,110,113,110,109,112,101,99,99, +103,100,103,105,109,109,108,110,110,103,107,108,159,157,159,157,157,158,164,161, +164,160,159,161,159,158,160,152,150,153,155,154,156,154,153,154,97,97,98,98,98, +101,98,98,101,106,105,107,109,108,112,112,112,115,112,111,115,111,111,115,158, +156,158,159,158,160,153,151,154,151,150,152,153,151,154,157,156,158,158,157,159, +161,159,161,113,112,116,103,107,104,113,112,114,105,109,109,104,108,108,108,110, +110,107,106,109,110,110,112,160,159,160,153,151,154,150,149,151,153,151,154,67, +47,65,71,49,69,119,120,121,53,30,51,95,68,92,99,69,96,148,149,150,65,38,63,109, +79,105,107,75,106,154,151,156,66,39,64,32,30,50,189,189,157,177,179,177,183,183, +183,29,28,29,59,54,65,56,52,67,42,48,42,172,171,172,167,166,167,169,168,169,39, +34,47,51,53,51,51,50,51,39,40,39,168,166,168,165,165,169,168,166,170,40,39,57, +51,48,50,51,48,54,39,47,39,168,167,168,165,163,169,168,166,168,39,40,39,51,48, +51,51,52,67,40,40,40,167,165,168,166,165,167,169,168,169,40,42,41,53,58,60,55, +52,52,27,25,28,174,173,174,171,169,171,171,169,158,29,30,37,66,39,64,110,85,114, +107,75,103,152,151,159,65,37,64,106,87,104,100,71,96,136,134,138,53,30,52,82,67, +81,75,53,73,112,110,115,107,81,103,107,75,103,153,152,159,66,57,68,110,85,109, +108,78,108,107,75,105,154,148,158,120,158,53,173,150,130,178,149,139,179,148, +138,178,148,138,178,149,138,156,153,107,98,161,17,108,160,28,145,156,92,160,151, +115,174,150,131,167,151,124,157,153,111,129,157,69,92,164,0,97,163,0,92,163,0, +87,163,0,87,163,0,87,163,0,87,163,0,84,158,5,77,144,16,87,162,0,87,161,0,85,156, +3,82,152,3,95,151,4,145,138,80,171,134,114,176,140,129,178,146,135,178,148,138, +178,148,138,178,148,138,178,148,138,178,148,139,179,148,139,180,148,140,180,148, +140,181,148,141,140,156,85,96,163,6,85,163,0,87,162,0,87,161,0,87,162,0,88,163, +0,78,154,0,86,161,0,83,157,0,79,150,0,69,137,0,74,137,0,75,145,0,146,142,148, +145,144,146,146,145,147,102,99,102,51,89,115,53,87,113,53,87,113,54,89,115,54, +89,115,53,87,113,53,88,113,51,89,116,102,106,104,149,148,150,154,152,155,151, +150,152,157,156,158,157,156,158,156,155,157,107,110,110,44,71,98,47,72,97,46,72, +97,47,73,99,47,73,99,46,72,97,47,72,97,43,71,98,110,110,113,154,152,155,149,148, +150,155,154,156,151,150,154,157,156,158,155,154,156,102,102,103,79,85,117,80,85, +114,78,85,114,78,85,114,78,85,114,79,85,114,80,85,114,79,85,117,103,107,107,152, +151,153,157,156,158,148,147,149,158,157,159,153,151,154,149,148,150,106,109,110, +37,73,93,41,74,92,41,74,92,42,75,94,44,76,95,47,85,106,54,96,119,51,99,127,104, +108,108,152,151,153,156,155,157,150,149,151,151,150,152,153,151,154,156,154,156, +107,110,110,53,91,119,54,87,113,53,87,113,54,89,115,54,89,115,53,87,113,52,87, +112,49,87,114,115,114,117,167,166,168,159,158,160,159,158,160,159,159,161,164, +161,164,156,155,157,103,103,106,52,88,115,54,87,113,53,87,113,54,89,115,54,89, +115,53,87,113,54,87,113,52,88,115,106,109,109,160,159,161,161,160,162,159,158, +160,159,158,160,155,154,156,158,156,158,108,107,110,66,118,154,70,115,150,69, +114,149,66,109,141,58,97,126,51,86,112,52,87,111,49,88,114,110,110,112,158,157, +158,155,155,156,153,151,154,154,153,155,155,154,156,156,155,157,107,109,110,56, +90,86,58,89,85,58,89,85,59,91,87,59,91,87,58,89,85,59,89,85,56,90,87,103,107, +107,159,158,160,158,157,159,157,157,158,104,102,107,110,110,118,119,116,121,88, +63,90,137,135,139,144,144,151,148,146,150,107,77,109,153,151,155,152,150,154, +154,151,158,66,39,64,32,29,43,189,189,145,170,170,171,183,183,184,29,28,48,59, +53,58,56,52,62,42,40,42,172,171,173,167,166,167,169,168,169,39,34,44,51,47,51, +51,53,51,40,35,40,166,167,166,163,164,163,153,151,156,42,41,44,51,48,57,51,48, +57,39,41,40,168,166,171,165,165,165,168,168,168,39,37,39,51,49,51,51,49,51,41, +41,44,163,163,163,166,166,165,169,167,172,40,45,41,53,54,56,55,58,67,27,25,34, +174,173,176,168,166,168,165,164,146,29,26,38,66,39,64,155,154,157,152,150,154, +152,150,154,107,77,103,149,148,154,144,142,146,136,136,138,89,64,86,121,120,127, +115,113,117,112,112,114,153,151,157,153,152,158,153,151,155,109,81,105,154,154, +160,153,151,160,153,151,155,154,148,158,95,163,0,130,157,72,152,154,105,154,154, +105,152,154,105,152,155,101,120,158,51,91,164,0,86,163,0,87,164,0,100,160,10, +119,158,52,136,157,81,143,155,91,131,157,74,110,159,37,105,160,28,96,162,0,87, +163,0,87,163,0,87,163,0,87,163,0,87,163,0,76,143,17,73,138,19,83,156,7,81,151, +11,81,150,11,85,160,0,95,155,5,162,136,103,176,134,122,179,141,129,178,146,135, +178,147,136,180,148,137,178,148,138,178,148,138,178,148,138,178,148,138,178,148, +138,178,148,139,179,148,140,181,147,142,119,159,50,88,163,0,86,163,0,87,162,0, +85,160,0,78,154,0,83,158,0,76,149,0,72,141,0,64,136,0,75,138,0,71,138,0,141,138, +142,140,139,141,149,147,149,99,98,99,53,89,113,87,142,183,87,142,182,56,88,112, +56,88,112,87,142,182,87,142,183,54,87,113,103,107,105,150,149,151,144,142,145, +145,144,146,150,149,151,158,158,159,154,152,155,107,110,110,47,72,97,84,116,158, +84,116,158,50,74,98,50,74,98,84,116,158,84,116,158,47,72,97,107,110,111,157,156, +158,156,155,156,151,150,154,147,144,146,150,149,151,152,151,153,105,104,108,80, +85,114,90,98,131,94,101,135,131,142,189,131,142,189,94,101,135,90,98,131,80,85, +114,105,101,102,151,150,152,155,154,156,153,151,154,155,154,156,155,154,156,151, +150,152,109,112,112,42,74,92,68,120,150,68,120,150,46,75,93,46,75,93,69,122,151, +78,139,165,54,96,119,108,110,111,151,150,152,150,149,151,155,154,156,151,150, +152,153,151,154,150,149,151,109,111,112,64,104,135,89,144,184,87,142,182,56,88, +112,56,88,112,87,142,182,87,142,183,53,87,113,107,109,109,166,165,167,156,155, +157,158,157,159,154,153,155,155,154,156,158,157,159,108,111,111,54,87,113,87, +142,183,87,142,182,56,88,112,56,88,112,87,142,182,87,142,183,53,87,112,115,114, +118,151,150,153,146,144,146,157,156,158,154,153,155,159,158,160,154,153,155,111, +110,112,70,118,153,117,181,203,117,181,203,74,118,150,69,110,140,95,152,187,87, +143,183,53,87,113,107,110,110,151,150,152,151,150,152,157,156,158,147,146,148, +158,157,159,151,150,152,107,110,110,59,89,85,89,151,141,89,151,140,61,90,85,61, +90,85,89,151,140,89,151,141,59,89,85,107,110,110,155,154,156,155,154,156,155, +154,156,40,23,40,42,23,42,80,59,80,55,41,57,58,36,59,61,36,61,105,78,105,68,51, +70,67,43,69,66,39,69,110,78,108,66,39,64,32,29,57,189,188,135,163,162,164,183, +181,183,29,28,29,59,53,58,56,52,56,45,38,65,173,173,173,170,171,171,171,169,171, +43,36,43,51,52,59,51,47,60,43,43,43,155,155,155,142,140,143,119,117,122,46,42, +53,51,52,54,51,49,60,42,38,49,170,168,171,168,169,169,170,167,170,42,42,51,51, +49,51,51,47,52,44,48,48,147,145,148,164,162,164,171,169,171,43,37,54,53,48,54, +55,56,58,27,38,31,159,157,160,146,146,146,157,155,119,28,28,53,66,39,64,70,44, +71,66,39,64,108,77,107,68,48,67,65,41,66,61,36,59,96,68,93,55,39,55,50,30,51,45, +25,43,75,53,72,65,46,64,66,39,64,109,79,105,69,45,69,68,51,66,67,42,68,66,39,75, +154,148,158,85,165,0,85,163,0,84,164,0,83,164,0,84,164,0,84,164,0,86,163,0,87, +163,0,87,163,0,87,163,0,86,163,0,95,162,0,102,163,17,127,157,67,124,158,59,111, +159,40,101,162,12,93,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,83,156, +7,75,141,18,83,156,7,73,138,19,76,144,16,68,129,23,82,156,5,103,150,22,165,133, +106,175,133,123,176,142,129,177,146,134,178,146,136,178,147,138,178,148,138,178, +148,138,178,148,138,178,148,138,178,148,138,178,148,138,178,148,139,180,148,140, +182,147,142,101,161,20,85,164,0,87,164,0,75,148,0,74,149,0,74,147,0,66,138,0,75, +145,0,79,146,0,70,134,0,144,147,150,140,139,141,147,146,148,99,98,100,53,88,112, +86,140,181,93,147,188,56,87,112,56,87,112,93,147,188,86,140,181,53,87,112,105, +108,108,150,148,150,148,147,149,152,151,153,155,154,156,166,165,167,160,159,160, +114,114,117,45,71,97,83,115,157,89,121,162,49,73,97,49,73,97,89,121,162,83,115, +157,46,71,97,105,109,110,157,156,158,154,153,155,160,159,161,153,151,154,155, +154,156,160,159,161,110,109,111,79,85,114,90,98,131,90,98,131,131,142,189,131, +142,189,94,101,135,90,98,131,79,85,114,108,110,110,156,155,157,160,159,161,155, +154,156,161,160,162,160,159,161,157,156,158,109,111,112,42,73,92,68,119,149,73, +124,153,46,75,92,46,75,92,73,124,153,69,121,150,47,84,106,112,112,114,156,155, +157,153,151,155,153,151,154,154,153,155,155,154,156,145,143,146,105,104,105,71, +115,148,102,160,192,94,148,189,56,87,112,56,87,112,93,147,188,86,140,181,53,87, +112,104,108,108,158,156,158,155,154,156,160,159,161,155,154,156,161,160,162,160, +159,161,107,110,110,54,87,112,86,140,181,93,147,188,56,87,112,56,87,112,93,147, +188,86,140,181,52,87,112,115,114,118,159,158,160,161,160,162,156,155,157,160, +159,161,154,153,155,154,152,155,115,115,118,71,119,153,117,181,204,127,184,209, +77,119,153,75,117,150,117,173,202,93,149,186,52,87,112,115,114,118,158,157,159, +157,156,158,154,153,155,155,154,156,158,157,159,162,161,163,114,113,117,57,89, +85,87,149,139,95,156,144,61,89,85,61,89,85,95,156,144,87,149,139,59,89,85,108, +111,111,162,161,163,159,158,160,151,150,152,69,52,68,73,53,71,120,118,129,54,39, +53,71,54,71,75,54,72,109,107,115,67,49,65,111,83,108,110,81,106,155,152,157,66, +39,64,32,29,44,185,184,111,30,38,38,32,43,33,41,44,48,59,54,64,56,52,56,54,57, +60,44,39,43,40,48,40,43,40,49,51,58,61,51,47,51,51,47,51,50,48,55,44,40,52,44, +43,51,47,42,53,51,49,60,51,47,54,51,47,54,50,45,58,42,43,48,39,46,39,42,43,41, +50,45,49,51,47,61,51,47,52,50,47,53,44,40,48,41,45,46,43,37,43,51,46,50,54,65, +63,39,38,38,43,52,44,41,38,52,36,38,45,150,151,85,28,27,39,66,39,64,113,84,112, +110,80,106,153,151,155,67,42,66,108,81,108,102,75,101,138,136,145,55,34,54,84, +62,84,78,56,76,114,112,121,110,83,112,110,80,106,154,153,159,68,46,67,112,84, +109,111,85,115,110,80,112,154,148,158,84,164,0,87,163,0,87,163,0,87,163,0,87, +163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,162,0,86,162,0,90,161,0,91,162,0, +115,159,47,113,159,47,103,162,23,92,163,0,88,163,0,87,163,0,87,163,0,87,163,0, +87,163,0,87,163,0,87,164,0,65,123,25,86,163,0,85,160,0,78,146,13,78,147,13,87, +163,0,80,152,6,98,136,23,161,130,94,170,135,118,175,140,129,177,144,132,178,146, +136,180,148,137,178,148,138,178,148,138,178,148,138,178,148,138,178,148,138,178, +148,138,178,148,138,178,148,139,166,151,121,120,159,52,82,157,0,78,153,0,83,157, +0,72,145,0,73,145,0,85,157,0,78,147,0,70,134,0,143,140,145,140,139,142,140,139, +141,103,100,102,53,89,113,87,142,182,93,148,189,56,88,112,56,88,112,93,148,189, +87,142,182,53,87,113,105,108,108,150,148,150,152,151,153,141,140,142,150,149, +151,157,156,158,160,159,161,112,111,114,45,72,97,84,116,158,89,122,163,50,73,98, +50,73,98,89,122,163,84,116,158,46,72,97,108,107,110,151,150,152,153,151,154,156, +155,157,154,153,155,154,153,155,157,156,158,104,103,104,80,85,114,90,98,131,94, +101,135,132,143,191,131,142,189,94,101,135,90,98,131,80,85,114,105,109,109,155, +152,156,153,151,154,153,151,154,165,164,166,156,155,157,152,151,153,106,109,110, +42,74,92,68,120,150,74,125,154,46,75,93,46,75,93,74,125,154,68,120,150,42,75,93, +108,110,111,156,155,157,147,145,147,150,149,151,155,154,156,157,156,158,153,152, +156,104,100,101,72,120,155,114,176,202,110,166,199,57,89,114,56,88,112,93,148, +189,87,142,182,53,87,113,103,106,104,159,158,160,155,154,156,155,154,156,156, +155,157,161,160,162,160,159,161,107,110,110,54,87,113,87,142,182,93,148,189,56, +88,112,56,88,112,93,148,189,87,142,182,53,87,112,108,111,111,155,154,156,151, +150,152,153,151,154,160,159,161,154,153,155,154,152,157,108,111,111,74,119,154, +119,183,206,128,186,210,77,121,154,76,121,154,125,183,208,107,167,196,55,92,119, +114,113,117,154,152,155,148,147,149,151,150,152,158,157,159,156,155,157,156,155, +157,105,109,108,58,89,85,89,151,140,95,157,145,61,90,85,61,90,85,95,157,145,89, +151,140,59,89,85,108,111,111,160,159,161,154,153,155,153,151,155,67,47,65,71,52, +69,119,118,121,53,30,51,69,49,67,72,54,69,108,107,110,65,38,63,109,79,109,107, +75,107,154,152,160,66,39,64,32,32,57,188,187,114,34,40,49,45,47,54,44,42,43,59, +59,69,56,52,56,55,59,63,53,49,53,53,50,53,52,48,58,52,48,52,51,49,51,51,55,57, +51,47,52,51,48,56,51,49,57,51,56,61,51,49,60,51,50,52,51,47,52,51,47,58,51,52, +52,51,52,54,51,48,51,51,50,57,51,50,50,51,59,61,51,52,52,51,50,55,51,56,51,52, +48,52,52,48,52,54,50,53,40,42,44,40,37,56,44,42,45,36,46,53,156,153,88,28,36,39, +66,39,64,110,80,107,107,75,103,152,151,157,65,38,63,106,80,107,100,70,100,136, +134,141,53,30,51,83,62,84,76,52,76,112,110,117,107,87,105,107,87,103,153,154, +157,66,55,64,110,87,113,108,78,107,107,79,105,154,148,158,84,164,0,87,163,0,87, +163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,162,0,86,162,1, +86,161,1,90,161,1,109,159,37,110,159,39,96,161,0,88,162,0,88,162,0,87,162,0,86, +160,0,86,162,0,86,162,0,85,159,0,84,156,0,67,127,21,66,124,23,80,150,5,71,133, +19,85,158,0,86,162,0,83,154,7,79,146,6,93,145,4,134,135,69,166,135,108,172,140, +121,177,143,132,179,145,136,177,147,138,178,148,138,178,148,138,178,148,138,178, +147,136,178,147,136,178,148,138,178,148,138,179,148,139,173,150,130,121,158,52, +75,152,0,77,151,0,75,148,0,84,159,0,87,163,0,85,158,0,73,142,0,147,144,149,146, +145,148,140,139,141,103,100,102,54,90,115,55,86,109,54,85,109,57,89,114,57,89, +114,54,85,109,55,86,109,54,89,115,103,105,104,146,145,147,151,150,152,156,155, +157,158,157,159,151,150,152,156,155,157,108,110,111,47,73,99,48,72,95,48,71,95, +51,75,99,51,75,99,48,71,95,48,72,95,46,73,99,114,114,118,152,151,153,153,151, +154,157,156,158,159,158,160,153,151,154,158,157,159,105,109,109,83,90,120,78,84, +111,77,82,109,76,82,109,76,82,109,77,82,109,78,84,111,80,87,116,103,107,105,149, +148,150,156,155,157,148,147,149,154,153,155,156,155,157,152,151,153,104,108,109, +43,75,94,46,74,91,45,73,90,47,77,94,47,77,94,45,73,90,46,74,91,43,75,94,105,108, +109,152,151,153,147,145,147,147,145,147,143,141,144,157,156,158,149,148,150,104, +108,108,74,122,157,75,118,149,71,111,143,67,105,135,58,90,116,54,85,109,55,86, +109,54,89,114,105,109,109,157,155,157,153,151,154,157,156,158,151,150,152,156, +155,157,157,156,157,105,104,108,55,89,114,55,86,109,54,85,109,57,89,114,57,89, +114,54,85,109,55,86,109,54,88,114,107,110,110,161,160,162,148,147,149,149,148, +150,161,160,162,160,159,161,154,152,155,107,110,110,75,122,157,75,118,150,74, +117,150,78,122,157,78,122,157,74,116,150,73,115,146,66,108,139,107,106,109,158, +157,159,153,151,154,150,149,151,155,154,156,157,156,158,160,159,161,114,113,117, +58,90,86,60,88,82,59,87,82,62,91,86,62,91,86,59,87,82,60,88,82,60,91,86,105,109, +109,159,158,160,165,164,166,157,156,158,104,102,107,110,111,118,119,116,121,88, +63,86,98,98,100,104,105,109,108,107,110,107,77,104,153,153,155,152,151,156,154, +151,159,66,39,64,32,29,43,189,188,115,32,30,43,45,52,45,44,55,44,59,53,58,56,57, +61,55,50,56,53,61,53,53,48,53,52,48,52,52,54,53,51,47,56,51,57,51,51,50,57,51, +48,60,51,57,57,51,48,58,50,47,50,42,55,51,42,43,41,50,45,49,51,53,51,51,49,51, +51,47,52,51,48,51,51,47,58,51,47,51,51,47,51,51,47,57,51,47,51,52,51,52,52,48, +52,54,48,58,40,39,43,40,44,39,41,41,42,32,30,50,155,154,88,29,41,41,66,39,64, +155,154,160,152,151,154,152,150,158,107,82,110,149,147,151,144,142,146,136,136, +138,89,68,92,122,120,124,116,114,118,113,113,115,153,153,155,153,153,158,153, +152,155,109,77,108,154,152,156,153,151,155,153,151,155,154,148,158,84,164,0,88, +164,0,87,164,0,87,163,0,87,163,0,87,163,0,86,162,0,85,159,0,86,162,0,86,162,0, +86,162,1,85,160,1,88,160,2,101,159,25,104,158,31,92,161,1,86,158,1,85,158,0,85, +157,0,84,157,0,85,158,0,74,139,17,65,123,23,69,132,16,63,120,22,57,113,25,58, +113,25,58,112,26,74,140,13,68,129,22,83,155,5,73,135,18,84,153,0,87,147,0,109, +140,33,133,141,68,143,142,78,157,142,99,163,143,108,179,144,135,178,146,138,178, +146,137,176,145,133,178,147,136,178,148,138,178,148,138,178,148,138,178,148,139, +174,149,129,106,158,26,73,145,0,79,154,0,88,163,0,87,164,0,84,159,0,74,146,0, +144,146,150,141,147,149,142,141,143,105,102,104,53,89,113,87,142,182,93,148,189, +56,88,112,56,88,112,93,148,189,87,142,182,53,88,113,99,98,99,146,145,147,158, +157,159,150,149,151,156,155,157,153,151,154,142,141,143,108,111,111,47,72,97,84, +116,158,89,122,163,50,73,98,50,73,98,89,122,163,84,116,158,45,72,97,114,114,117, +152,151,153,154,153,155,158,157,158,153,151,155,151,150,152,152,151,153,108,110, +110,83,90,120,90,98,131,95,103,138,131,142,189,131,142,189,95,103,138,90,98,131, +79,85,115,105,104,105,142,141,143,141,140,142,149,148,150,153,151,154,149,148, +150,153,151,153,106,109,110,42,74,92,68,120,150,74,125,154,46,75,93,46,75,93,74, +125,154,68,120,150,42,74,92,104,108,106,149,148,150,149,148,150,154,152,155,147, +145,147,151,150,152,155,153,156,103,107,105,72,119,155,119,183,206,127,185,210, +73,115,147,66,104,133,94,149,190,87,142,182,52,87,112,114,113,117,137,136,137, +156,156,157,153,151,154,154,153,155,150,149,151,157,156,158,107,110,110,54,87, +113,87,142,182,93,148,189,56,88,112,56,88,112,93,148,189,87,142,182,52,87,112, +114,113,117,161,160,162,151,150,152,155,154,156,158,157,159,159,158,160,154,152, +155,109,111,111,73,118,153,119,183,206,128,186,210,77,121,154,77,121,154,128, +186,210,119,182,206,70,116,151,108,110,110,150,149,151,154,152,155,149,148,150, +151,150,152,159,158,160,154,152,156,107,110,110,59,89,85,89,151,140,95,157,145, +61,90,85,61,90,85,95,157,145,89,151,140,59,89,85,105,104,108,155,154,156,158, +157,159,155,154,156,40,23,41,42,23,42,80,58,77,55,38,56,58,36,60,61,36,61,105, +77,101,68,48,69,67,45,65,66,61,68,110,79,106,66,39,64,32,30,44,189,188,115,30, +30,43,45,55,47,44,49,52,58,52,58,56,52,56,55,50,55,53,49,62,53,51,53,52,50,52, +52,48,52,51,46,57,51,64,52,51,60,52,51,48,52,51,48,52,51,56,58,42,43,53,170,167, +169,170,168,173,42,36,41,51,47,51,51,60,52,51,47,57,51,47,51,51,50,51,51,47,56, +51,47,51,51,47,51,51,47,51,53,52,52,53,52,52,54,49,63,40,39,42,40,44,50,41,49, +45,30,26,48,157,158,89,29,26,40,66,39,64,70,53,68,66,38,64,108,78,110,68,44,66, +65,49,63,61,39,67,96,68,93,56,35,54,50,37,49,46,28,50,76,53,73,65,39,64,66,48, +64,109,78,105,69,46,73,68,50,67,67,42,66,64,39,64,154,148,158,75,152,0,74,149,0, +82,157,0,82,157,0,87,164,0,85,158,0,83,156,0,84,157,0,84,157,0,85,158,0,86,161, +0,86,161,1,85,159,2,92,158,2,97,156,13,87,154,2,83,153,2,81,153,1,82,153,1,82, +153,0,83,155,0,73,135,17,64,121,22,75,138,5,73,137,4,54,110,23,52,106,26,64,123, +19,67,125,21,66,124,23,78,146,13,84,158,5,73,137,19,86,157,0,84,152,0,85,152,0, +88,152,0,96,151,0,121,145,38,132,137,55,172,129,115,174,139,126,176,145,132,177, +147,137,178,148,138,178,148,138,173,144,134,164,136,126,168,137,128,141,152,88, +84,160,0,86,161,0,87,162,0,87,163,0,84,157,0,74,142,0,147,144,149,142,141,143, +140,139,141,105,102,104,53,88,112,86,140,181,93,147,188,56,87,112,56,87,112,93, +147,188,86,141,181,53,87,112,101,98,101,151,150,152,151,150,152,156,155,157,159, +158,160,155,155,156,153,152,156,105,109,110,45,71,97,83,115,157,89,121,162,49, +73,97,49,73,97,89,121,162,83,115,157,45,71,97,112,111,114,155,154,156,156,155, +157,155,154,156,154,153,155,156,155,157,151,150,152,104,104,105,83,90,120,90,98, +131,95,103,138,131,142,189,131,142,189,95,103,138,90,98,131,79,85,114,103,107, +105,157,156,158,151,150,152,156,155,157,153,151,154,148,147,150,157,156,158,104, +108,109,42,74,92,68,119,149,73,124,153,46,75,92,46,75,92,73,124,153,68,119,149, +42,74,92,104,101,104,150,149,151,146,145,148,149,148,150,144,142,145,145,144, +146,152,151,153,104,104,105,72,119,154,118,182,205,128,185,210,76,119,153,73, +114,147,110,165,198,87,142,182,52,87,112,108,111,111,161,160,162,131,130,132, +153,152,154,156,155,157,157,156,158,154,152,155,109,111,111,54,87,112,86,140, +181,93,147,188,56,87,112,56,87,112,93,147,188,86,140,181,52,87,112,114,113,117, +159,158,159,160,159,161,158,157,159,154,153,155,151,150,152,156,155,157,103,106, +104,67,111,143,117,180,204,128,185,209,77,119,154,77,119,154,128,185,210,118, +182,205,74,119,154,105,101,102,152,151,153,147,145,147,152,151,153,151,150,152, +156,155,156,151,150,152,108,110,110,59,89,85,87,149,139,95,156,144,61,89,85,61, +89,85,95,156,144,87,149,139,59,89,85,105,109,109,158,157,159,154,153,155,157, +156,158,69,50,70,73,52,72,120,120,122,54,33,53,98,73,99,102,74,100,149,149,151, +67,42,66,111,83,112,110,79,108,155,156,159,66,39,64,32,29,44,189,190,115,30,29, +44,45,44,45,44,41,51,42,52,53,57,58,56,55,59,58,53,49,54,53,48,53,52,48,52,52, +49,52,51,59,55,51,46,57,51,47,54,51,49,51,51,57,61,51,48,52,39,38,40,168,169, +171,168,169,171,39,35,47,51,48,51,51,54,55,51,50,51,51,52,52,51,49,57,51,56,51, +51,53,51,51,47,51,52,53,55,38,35,48,39,51,38,39,40,39,40,41,45,40,38,50,41,41, +43,28,26,38,160,158,92,29,26,44,66,39,64,113,92,112,110,90,106,153,151,155,67, +50,66,108,89,108,102,78,99,138,136,141,55,41,54,85,69,85,79,59,76,115,113,117, +110,80,109,110,80,112,154,152,160,68,43,70,112,87,113,111,83,108,110,82,106,154, +148,158,71,149,0,83,158,0,78,154,0,85,160,0,86,162,0,84,158,0,83,156,0,82,155,0, +82,154,0,81,153,0,83,156,0,84,158,0,84,158,1,91,157,2,88,153,3,82,150,3,79,149, +4,79,149,3,79,149,3,80,148,1,82,151,0,78,146,0,77,142,0,75,139,2,64,126,11,60, +119,16,63,123,15,72,137,5,75,144,2,62,118,25,62,117,26,77,143,14,66,127,22,88, +164,0,86,160,0,86,158,0,85,156,0,85,155,0,83,155,0,87,151,0,91,142,0,174,124, +111,175,140,129,178,146,136,180,148,137,168,140,131,167,139,130,176,145,136,166, +147,122,122,153,54,84,158,0,86,161,0,87,162,0,87,163,0,84,160,0,71,137,0,142, +139,144,141,140,142,140,139,141,104,101,103,53,89,113,115,107,137,115,107,137, +56,88,112,56,88,112,115,107,137,115,107,137,53,88,113,100,97,100,143,142,144, +145,144,146,149,148,150,153,151,154,155,154,156,149,148,150,114,114,118,45,72, +97,84,116,158,85,116,159,50,73,98,50,73,98,84,116,158,84,116,158,45,71,97,115, +115,118,159,158,160,154,153,155,167,166,168,158,157,159,150,149,152,155,153,156, +103,100,102,82,89,119,90,98,131,95,103,138,67,138,140,64,137,138,95,103,138,90, +98,131,79,85,115,103,107,105,158,157,159,157,156,158,154,153,155,156,155,157, +150,149,151,156,155,157,105,109,110,42,74,92,68,120,150,68,120,150,46,75,93,46, +75,93,68,120,150,68,120,150,42,74,93,103,101,101,145,143,146,144,142,146,150, +149,152,144,142,145,148,146,147,145,143,146,105,102,104,72,122,155,119,183,206, +119,183,206,77,121,154,76,120,153,114,176,201,103,162,193,55,88,115,103,106,104, +159,158,160,135,134,136,147,146,148,156,155,157,156,155,157,158,157,159,108,111, +111,54,87,112,87,142,182,87,142,182,56,88,112,56,88,112,87,142,182,87,142,182, +52,87,112,112,111,113,156,155,157,158,157,159,158,157,159,159,158,160,153,151, +154,158,157,159,114,113,117,59,99,127,112,174,200,118,182,205,77,121,154,77,121, +154,119,183,206,119,183,206,74,119,155,104,108,108,153,152,154,145,144,146,140, +139,142,149,148,151,156,155,157,151,150,152,105,105,108,59,89,85,89,151,140,89, +151,140,61,90,85,61,90,85,89,151,140,89,151,140,59,89,85,109,111,111,154,152, +155,159,158,160,154,153,155,67,47,65,71,49,69,119,118,121,53,30,51,95,68,92,99, +69,96,148,147,150,65,38,63,109,79,105,107,75,103,154,153,156,66,39,64,32,32,56, +189,190,115,30,28,50,45,42,47,44,59,44,43,52,43,57,52,66,55,59,59,53,49,53,53, +54,53,52,50,52,52,54,53,51,49,52,51,47,62,51,53,52,51,50,52,51,55,51,51,48,51, +39,35,39,168,166,168,168,168,169,39,39,50,51,56,57,51,62,60,51,50,51,51,47,53, +51,48,56,51,48,57,51,47,51,51,47,56,51,56,51,53,50,54,38,36,38,39,49,46,40,47, +50,40,41,52,41,39,42,30,47,40,154,153,87,30,27,40,66,39,64,110,82,111,107,77, +107,152,152,154,65,44,63,106,78,102,100,72,99,137,135,143,53,35,51,83,60,80,76, +54,75,113,111,120,107,79,107,107,75,110,153,151,155,66,39,64,110,83,106,108,78, +110,107,79,104,154,148,158,74,154,0,83,158,0,82,157,0,87,164,0,87,163,0,86,162, +0,86,160,0,85,158,0,83,156,0,84,155,0,83,155,0,85,156,0,86,157,0,85,154,1,81, +150,3,78,148,4,76,146,5,74,142,6,73,141,6,74,142,5,75,143,3,75,140,2,74,137,2, +71,132,4,62,122,11,62,120,13,60,115,19,73,135,4,67,127,16,67,127,17,66,124,21, +59,120,21,56,110,27,82,157,0,76,143,17,81,153,3,87,162,0,86,160,0,86,158,0,86, +155,0,97,146,0,106,140,14,173,131,119,176,144,131,173,143,132,164,137,127,178, +148,138,135,119,104,132,150,70,95,157,2,86,158,0,86,161,0,87,162,0,87,163,0,85, +161,0,71,137,0,143,146,149,139,138,140,146,144,147,98,98,99,46,87,113,104,68,85, +104,68,84,46,85,112,47,85,112,104,68,85,104,68,85,46,87,113,97,92,93,147,146, +150,149,148,150,150,149,151,155,154,156,143,141,144,153,152,154,114,113,117,35, +67,95,36,66,93,36,66,93,38,68,96,37,68,95,35,66,93,35,66,93,35,67,95,111,111, +113,156,155,157,153,151,154,159,158,160,160,159,161,155,154,156,151,150,152,101, +99,99,73,79,111,73,79,111,73,79,111,73,79,111,73,79,111,73,79,111,72,80,112,73, +83,115,100,99,101,155,152,156,156,155,157,149,148,150,155,154,156,150,149,151, +148,146,148,107,110,111,32,69,90,32,68,88,32,68,88,32,70,90,32,70,90,32,68,88, +32,68,88,32,70,90,104,108,109,145,143,147,141,140,143,149,148,150,142,141,143, +144,142,145,148,147,150,103,100,102,60,118,154,60,113,150,60,113,150,61,115,153, +60,115,153,60,112,149,57,107,143,53,100,133,104,104,107,160,159,161,149,148,150, +139,138,140,156,155,157,158,157,159,152,151,153,108,110,111,44,84,112,44,82,109, +44,82,109,45,85,112,46,85,112,44,83,109,45,83,109,45,84,112,108,111,111,152,151, +153,157,156,158,157,156,158,157,156,158,154,153,155,154,152,155,111,111,113,44, +85,113,52,96,126,58,107,141,61,114,152,61,115,153,60,113,150,60,113,150,61,117, +154,107,110,110,149,148,150,151,150,152,147,145,147,147,145,147,155,154,156,152, +151,153,104,104,107,50,86,85,49,84,81,50,83,82,51,86,86,51,87,85,50,84,81,49,84, +81,51,86,86,107,109,109,157,156,158,157,156,158,156,155,157,104,102,111,110,111, +112,119,118,124,88,68,90,137,135,143,144,145,146,148,147,153,107,82,109,153,151, +155,152,150,159,154,151,158,66,39,64,32,29,43,189,188,115,30,28,44,45,42,62,44, +62,59,43,41,54,57,53,56,55,50,55,53,49,53,53,55,59,52,48,52,52,48,53,51,47,59, +51,48,57,51,48,52,51,57,56,51,48,52,51,50,51,39,33,43,168,167,171,168,166,168, +39,38,45,51,59,51,51,49,51,51,56,60,51,53,52,51,47,52,51,59,51,51,47,55,51,57, +51,51,50,56,52,56,59,53,59,52,49,44,57,43,40,45,40,41,40,41,39,59,30,26,38,153, +152,88,30,27,39,66,39,64,155,154,159,152,153,154,152,150,154,107,77,103,149,147, +154,144,142,146,137,138,139,89,63,86,122,119,127,115,113,117,112,113,114,153, +151,159,153,151,155,153,151,157,109,87,105,154,152,159,153,152,155,153,151,155, +154,148,158,85,165,0,72,147,0,83,159,0,87,163,0,87,163,0,87,163,0,87,163,0,86, +163,0,79,154,0,75,149,0,85,159,0,85,155,0,84,151,0,83,150,0,79,147,1,78,146,3, +75,144,5,72,139,7,69,136,8,69,134,9,68,133,9,66,129,10,64,126,11,62,122,10,61, +119,11,63,120,10,68,127,6,58,111,20,60,113,21,60,114,23,68,133,9,66,128,19,52, +103,29,76,150,0,55,109,28,66,126,23,70,136,12,76,148,0,86,157,0,86,157,0,105, +148,11,132,138,58,174,134,120,176,143,130,164,136,125,169,141,131,153,132,118, +148,126,113,160,144,109,98,154,11,86,159,0,86,160,0,87,162,0,87,163,0,88,164,0, +71,137,0,143,147,151,139,138,140,145,143,147,99,98,98,170,169,172,171,169,172, +171,175,175,173,171,175,170,169,172,172,170,173,168,167,169,171,169,172,96,96, +98,156,155,157,151,150,155,151,150,152,151,150,152,152,151,153,148,146,148,104, +104,107,173,173,178,179,178,180,177,175,178,171,175,176,180,178,181,179,177,180, +180,178,181,180,179,182,107,108,112,158,157,159,154,153,155,158,157,159,163,160, +163,158,157,159,157,156,158,104,104,107,183,181,185,181,179,182,180,178,181,171, +175,175,177,175,178,176,175,178,179,177,180,179,177,180,99,96,100,151,150,152, +151,150,152,150,149,151,154,152,155,150,149,151,150,149,151,100,100,104,179,177, +180,179,177,180,180,178,181,179,177,180,176,175,178,180,178,181,178,176,179,173, +173,178,99,104,104,149,148,150,144,142,146,150,149,151,147,145,147,147,145,147, +149,149,150,99,97,100,178,176,179,180,178,181,182,180,184,178,177,179,185,184, +186,179,178,181,181,179,182,180,178,181,100,100,104,157,156,158,155,154,156,154, +153,155,148,147,149,156,155,157,154,152,155,103,106,107,186,185,187,180,179,182, +182,180,184,176,175,178,176,175,178,180,179,181,172,171,174,181,180,182,103,103, +106,158,156,158,159,158,160,156,155,157,156,155,157,150,149,151,151,150,152,102, +106,106,180,178,181,176,174,177,171,175,176,181,179,182,182,180,184,178,177,180, +180,178,181,178,176,179,98,98,100,157,156,158,149,148,150,147,145,147,149,148, +150,155,154,156,160,159,161,105,105,108,177,176,179,178,176,179,181,179,182,179, +177,180,179,177,180,167,171,172,178,176,179,181,179,182,103,107,107,155,154,156, +155,154,156,157,156,158,40,28,39,42,25,44,80,64,81,55,42,54,58,42,57,61,39,63, +105,85,106,68,52,67,67,60,66,66,42,64,110,82,106,66,39,64,32,29,43,189,188,116, +30,29,53,45,43,51,44,42,52,43,42,46,41,45,44,56,50,60,53,50,53,53,51,61,52,50, +59,52,48,62,51,60,56,51,51,61,51,56,51,51,58,56,51,49,51,51,57,51,39,50,39,168, +166,168,168,166,170,39,47,39,51,47,51,51,55,51,51,47,51,51,58,51,51,47,58,51,50, +54,51,47,51,51,61,51,51,49,65,52,48,56,52,49,53,49,44,49,42,40,47,40,56,40,41, +39,41,30,26,46,154,153,87,30,49,41,66,39,64,70,44,72,66,39,69,108,77,109,68,47, +67,65,44,65,61,43,66,96,68,96,56,38,55,50,33,50,45,31,48,75,52,75,65,39,72,66, +39,64,109,81,109,69,59,71,68,61,69,67,49,71,64,39,76,154,148,158,73,150,0,71, +147,0,86,161,0,87,163,0,87,163,0,87,163,0,87,163,0,88,164,0,72,146,0,72,145,0, +75,148,0,85,153,0,81,144,0,80,144,0,75,144,0,80,150,1,79,147,3,76,144,4,72,138, +6,69,134,8,67,133,10,66,130,11,64,126,12,63,122,11,62,119,11,63,118,11,66,122,7, +68,125,7,70,129,6,65,122,17,66,126,17,66,128,16,55,106,28,72,146,0,74,145,5,69, +135,12,74,143,0,84,152,0,85,156,0,82,155,0,136,144,72,165,128,103,174,137,125, +177,144,132,167,138,128,169,141,131,149,128,114,148,124,110,150,133,101,88,156, +0,86,159,0,86,160,0,87,162,0,86,162,0,87,163,0,71,137,0,141,138,142,140,139,141, +141,140,142,145,143,147,142,141,142,139,138,141,135,133,137,137,136,137,144,142, +146,138,137,139,145,144,146,138,137,140,136,135,138,142,141,145,149,148,150,151, +150,152,155,154,156,149,148,150,145,144,146,150,149,151,141,140,142,140,139,141, +140,139,141,143,141,144,154,153,155,149,148,150,154,153,154,152,150,154,179,178, +181,178,177,180,147,146,148,156,155,157,183,182,185,177,176,179,157,156,158,152, +151,152,161,160,161,152,150,153,155,154,156,148,147,149,150,149,151,151,150,151, +146,144,146,144,143,145,149,148,150,144,142,145,154,152,155,147,145,147,148,147, +149,141,140,142,150,149,151,151,150,152,144,143,145,150,149,151,153,150,153,152, +150,153,150,149,153,154,153,155,147,146,148,150,149,151,151,150,152,152,151,155, +146,145,148,138,137,140,150,149,151,154,152,155,145,144,146,147,146,149,150,149, +151,149,148,150,150,149,153,154,153,155,160,159,161,146,145,147,147,146,149,150, +149,151,145,144,146,149,148,150,149,148,150,148,147,149,147,145,147,152,150,153, +135,134,135,151,149,153,156,155,157,154,153,155,152,150,153,148,147,149,147,146, +148,148,147,149,139,138,140,149,148,150,158,157,159,154,153,155,153,151,154,157, +157,158,158,157,159,150,149,151,150,149,151,150,149,151,153,151,154,147,146,148, +144,143,145,154,153,155,152,150,153,149,148,150,155,154,156,147,146,148,149,148, +150,154,152,155,154,152,155,149,148,150,149,148,150,149,148,150,151,150,152,158, +157,159,154,153,155,146,143,145,154,153,156,150,149,151,153,151,154,148,147,150, +146,144,146,153,151,154,151,150,152,151,150,152,153,151,154,158,158,159,69,50, +67,73,52,74,120,119,122,54,39,53,98,73,95,102,74,103,149,148,151,67,49,66,111, +85,110,110,84,111,155,152,157,66,39,64,32,39,44,189,188,114,30,28,60,45,48,45, +44,48,57,43,41,45,42,42,53,56,56,61,53,49,53,53,53,54,52,48,60,52,57,53,51,47, +52,51,47,55,51,68,51,51,47,51,51,48,51,51,51,51,39,33,44,168,167,168,168,167, +169,39,35,39,51,52,55,51,48,51,51,48,51,51,54,53,51,47,51,51,55,51,51,48,51,51, +55,54,51,47,51,52,48,59,52,49,61,49,49,52,42,39,42,40,38,41,41,38,42,31,38,43, +152,150,86,31,28,51,66,39,64,113,85,109,110,84,110,153,151,155,67,54,66,79,62, +78,75,54,73,100,101,101,55,44,54,84,65,83,77,54,74,113,115,115,110,79,106,110, +80,108,154,152,156,68,46,66,112,83,116,111,83,110,110,80,107,154,148,158,68,147, +0,75,149,0,88,164,0,87,163,0,87,163,0,87,163,0,86,163,0,78,153,0,68,144,0,68, +142,0,70,144,0,81,144,0,76,136,0,77,140,0,73,141,0,76,146,0,83,154,0,81,150,1, +77,145,1,76,142,2,75,141,3,73,140,4,72,136,5,69,131,7,64,123,10,62,120,11,64, +120,11,67,126,7,69,128,6,74,136,5,76,142,4,76,144,3,63,124,19,70,145,0,79,152,0, +70,140,0,80,149,0,85,156,0,85,155,0,95,153,5,159,126,98,162,125,109,168,136,125, +168,138,128,178,146,136,178,147,137,157,131,119,132,113,95,108,124,61,80,147,7, +86,158,0,82,153,7,83,154,7,85,158,0,86,160,0,71,137,0,143,140,144,140,139,141, +145,144,146,151,150,153,145,144,146,142,141,143,139,138,140,150,149,151,138,137, +140,136,135,136,150,149,151,142,141,143,139,138,141,148,146,148,149,148,150,151, +150,152,151,150,155,147,145,147,144,142,145,150,149,151,151,150,153,149,148,150, +142,141,143,149,148,150,155,154,156,154,154,155,153,151,154,157,156,158,157,156, +158,157,156,158,178,177,180,180,179,183,158,157,158,157,156,158,154,153,155,148, +147,149,158,157,159,150,149,151,154,153,155,156,155,157,154,151,155,150,149,151, +152,151,153,149,148,150,145,144,146,151,151,155,154,153,155,155,155,156,153,151, +154,149,148,150,150,149,151,157,156,158,157,156,158,151,150,152,149,148,150,155, +154,156,153,151,154,153,151,154,148,147,149,147,145,147,154,152,155,150,149,151, +152,151,155,141,140,142,145,144,146,150,149,151,150,149,151,150,149,151,148,147, +149,151,150,152,153,151,154,153,151,154,156,155,157,156,155,157,157,156,158,155, +155,156,156,155,157,154,153,155,155,154,156,148,147,149,149,148,151,139,137,140, +154,153,156,154,153,155,155,154,156,153,151,154,155,155,156,153,151,154,151,150, +152,156,155,157,149,148,150,157,156,158,157,156,158,149,148,150,154,153,155,154, +153,155,153,151,154,151,150,152,156,155,157,150,149,151,150,149,151,148,147,149, +138,137,139,155,154,156,156,155,157,151,150,152,158,157,159,147,145,147,151,150, +152,148,147,149,152,151,153,147,145,147,152,151,153,144,143,145,150,149,151,157, +156,158,156,155,157,153,151,154,150,149,151,147,145,147,150,149,151,151,150,152, +149,148,150,159,158,160,155,154,156,155,154,156,157,156,158,156,155,157,67,47, +65,71,49,69,119,115,121,53,47,56,95,68,92,99,69,96,148,145,150,65,58,69,109,88, +105,107,76,109,154,151,159,66,39,64,32,50,43,189,188,115,30,29,43,45,48,51,44, +43,45,43,42,43,41,39,49,56,50,72,53,60,58,53,54,53,52,49,58,52,49,53,51,47,61, +51,53,51,51,46,51,51,49,51,51,49,51,51,48,51,39,37,39,168,166,168,168,166,168, +39,39,46,51,67,62,51,47,55,51,47,55,51,49,55,51,47,58,51,57,51,51,51,57,51,48, +55,51,47,60,52,48,65,52,48,61,49,44,49,42,39,50,40,39,45,41,61,53,32,47,53,147, +146,84,31,29,41,66,39,64,110,84,112,107,80,107,152,150,154,65,41,64,78,57,78,73, +55,70,98,98,100,53,33,52,83,59,83,75,55,72,110,108,112,107,81,103,107,75,103, +153,151,158,66,42,64,110,80,112,108,86,107,107,75,103,154,148,158,71,149,0,76, +151,0,78,154,0,88,164,0,87,163,0,87,163,0,86,161,0,69,144,0,68,142,0,72,144,0, +72,141,0,69,134,0,77,133,0,72,137,0,72,141,0,72,142,0,79,148,0,82,151,0,81,150, +0,78,148,0,77,146,1,76,145,2,76,142,2,73,137,3,68,130,7,64,122,11,63,121,11,69, +127,7,72,133,6,76,139,4,70,128,16,69,129,16,60,123,15,73,138,13,62,128,14,72, +135,10,86,156,0,85,155,0,81,150,3,121,141,63,161,123,100,166,136,123,176,143, +134,177,147,137,178,146,136,177,144,135,179,140,131,129,133,75,84,137,13,84,155, +0,85,156,0,68,126,21,70,132,20,84,155,0,85,158,0,67,129,0,152,149,153,138,137, +138,145,144,147,147,145,147,144,142,145,142,141,143,142,141,143,146,145,147,140, +139,141,139,138,141,142,141,143,140,139,141,140,139,141,141,140,142,147,145,147, +149,148,150,148,147,149,152,151,153,146,145,148,147,145,147,142,141,143,145,144, +146,144,142,145,136,135,138,147,145,147,151,150,152,151,150,154,157,156,157,159, +158,160,156,155,157,158,157,159,159,158,160,185,184,187,150,149,151,157,156,158, +149,148,150,157,156,158,151,150,152,149,148,150,148,147,149,146,145,148,147,145, +147,149,148,150,147,145,147,149,148,150,151,150,152,156,155,157,160,159,161,158, +157,159,154,153,155,154,153,155,155,154,156,154,153,155,156,155,157,151,150,152, +149,148,150,148,147,149,151,150,152,149,148,150,147,145,147,154,152,155,151,150, +155,151,151,152,147,145,147,145,144,146,149,148,150,146,145,148,151,150,152,146, +145,148,150,149,151,151,150,152,151,150,154,155,154,156,158,157,159,155,154,156, +153,151,154,154,153,155,156,155,157,150,149,151,154,152,155,147,145,147,123,121, +124,151,150,152,154,153,155,155,154,156,153,151,154,156,155,157,149,148,150,148, +147,149,147,145,147,148,147,149,155,154,156,154,153,155,153,151,154,160,159,161, +156,155,157,155,155,156,153,151,154,155,155,156,151,150,154,156,155,157,153,151, +154,155,154,156,150,149,152,150,149,151,155,154,156,155,154,156,149,148,150,148, +147,149,142,141,143,138,137,139,145,144,146,151,150,152,156,155,157,151,150,152, +153,151,154,155,154,156,156,155,157,152,151,155,145,144,146,145,144,147,141,140, +142,142,141,143,154,151,155,156,155,157,151,150,152,151,150,152,154,153,155,104, +104,107,110,108,116,119,121,121,88,68,85,137,137,139,144,142,149,148,150,150, +107,82,103,153,154,155,152,153,154,154,152,156,66,39,64,32,30,43,189,190,117,30, +30,42,45,55,51,44,45,46,42,42,42,57,56,57,55,59,55,53,51,53,53,53,57,52,49,52, +52,58,52,51,47,57,51,47,51,51,47,51,51,47,51,51,58,51,51,47,51,42,38,53,170,168, +172,170,168,172,42,47,42,51,47,58,51,47,64,51,53,57,51,47,52,51,66,52,51,47,51, +51,53,60,51,47,52,51,66,54,52,48,53,52,48,52,50,50,49,40,39,48,40,43,41,41,38, +42,32,36,41,147,146,80,31,29,49,66,39,64,155,152,160,152,150,157,152,153,154, +107,76,103,109,107,112,105,106,107,98,98,100,89,63,86,122,120,127,114,115,116, +110,110,113,153,153,160,153,151,155,153,151,159,109,78,105,154,154,156,153,152, +155,153,151,159,154,148,158,73,152,0,74,149,0,78,154,0,88,164,0,87,163,0,87,163, +0,82,156,0,78,151,0,82,154,0,72,144,0,69,138,0,72,134,0,71,131,0,77,144,0,79, +149,0,75,146,0,76,147,0,82,151,0,82,155,0,82,154,0,75,146,0,79,150,0,75,147,0, +71,140,2,68,133,4,67,129,9,67,126,10,72,133,7,76,138,5,78,140,6,65,120,19,64, +121,14,72,132,10,68,137,0,75,142,3,75,138,10,85,155,0,84,154,0,92,146,3,146,122, +78,171,135,118,178,147,136,177,147,137,178,147,137,177,145,134,168,134,123,107, +139,44,66,108,23,78,129,16,87,146,6,73,129,17,74,138,16,84,155,0,78,146,0,82, +152,0,67,130,0,144,141,145,142,141,145,147,146,149,142,141,143,138,138,139,150, +149,151,136,135,137,142,141,143,145,143,147,138,137,139,138,137,139,139,138,140, +141,140,142,141,140,142,148,148,150,147,145,147,152,151,153,149,148,150,145,144, +147,149,148,149,137,136,138,144,142,145,151,150,153,142,141,145,144,142,146,148, +147,149,148,147,150,151,150,152,150,149,151,154,153,155,154,153,155,158,157,159, +157,156,158,154,153,155,159,158,160,153,151,154,157,156,158,157,156,158,151,150, +152,150,149,151,147,145,147,149,148,151,147,145,147,150,149,151,145,144,146,145, +144,146,157,156,158,151,150,152,150,149,151,149,148,150,154,151,155,151,150,152, +151,150,152,155,154,156,156,155,157,154,151,155,149,148,150,149,148,150,144,141, +146,149,148,150,148,147,149,146,145,148,150,149,151,147,145,147,149,148,150,148, +147,149,148,147,149,145,144,146,151,150,152,145,144,146,155,154,156,150,149,151, +158,157,159,153,151,154,153,151,155,150,149,151,156,155,157,150,149,151,145,144, +146,148,147,149,133,133,134,150,149,151,155,154,156,153,151,154,157,156,158,153, +151,154,153,151,154,148,147,149,148,147,149,148,147,149,141,140,142,148,147,149, +150,149,151,155,154,156,153,151,154,159,158,160,150,149,152,150,149,151,157,156, +158,150,149,151,149,148,150,151,150,152,154,153,155,157,156,158,151,150,152,156, +155,157,158,157,159,153,151,154,151,150,152,149,148,152,148,147,149,144,142,145, +149,148,150,156,155,157,146,144,146,156,156,157,155,154,156,146,144,146,143,141, +144,149,148,150,144,142,145,145,144,147,145,144,146,147,145,147,149,148,150,156, +155,157,151,150,152,153,151,154,21,19,30,19,17,35,51,44,62,55,35,54,58,45,62,61, +39,67,105,80,104,68,44,67,67,43,66,66,52,64,110,78,110,66,39,64,32,30,50,189, +188,115,30,29,42,45,51,59,44,45,44,56,51,59,56,52,56,55,50,55,53,50,53,53,58,53, +52,54,55,52,48,52,51,52,54,51,60,57,51,48,51,51,57,55,51,49,51,51,48,51,50,56, +59,42,37,41,42,46,41,50,46,49,51,48,59,51,48,58,51,52,55,51,47,59,51,52,55,51, +53,51,51,47,52,51,47,60,51,49,52,52,48,59,52,48,58,50,57,51,40,50,44,40,38,44, +41,45,42,31,27,41,154,150,83,31,35,41,66,39,64,70,53,68,66,48,64,108,76,107,68, +55,67,65,41,64,61,36,64,97,68,93,56,45,55,50,30,49,45,25,47,46,37,56,39,34,46, +35,30,53,67,59,90,69,52,67,68,50,67,67,42,66,65,38,72,154,148,158,81,159,0,77, +151,0,77,151,0,88,164,0,87,163,0,87,164,0,85,159,0,83,155,0,81,153,0,74,145,0, +74,145,0,84,152,0,74,134,0,87,158,0,78,152,0,72,147,0,79,154,0,85,159,0,78,153, +0,74,147,0,69,144,0,72,146,0,84,157,0,75,149,1,65,135,4,69,134,9,70,134,9,75, +138,6,78,143,4,75,135,11,76,136,10,83,149,2,82,148,1,66,133,3,61,114,22,87,158, +0,84,155,0,83,145,4,124,123,53,175,133,121,177,144,133,180,148,137,178,148,138, +178,147,136,177,142,132,128,106,90,76,130,14,72,109,26,82,130,15,76,134,13,61, +111,24,75,139,14,75,139,11,71,130,11,75,139,0,67,130,0,151,148,152,140,139,141, +146,145,149,149,148,150,149,147,149,146,143,147,141,140,142,142,141,143,144,143, +145,137,136,138,144,143,145,141,140,142,149,148,150,147,145,147,148,147,149,150, +149,151,149,148,150,158,157,159,159,158,160,152,151,153,146,145,148,149,147,148, +153,152,154,152,151,153,146,145,147,149,148,150,159,158,160,162,161,163,158,157, +159,154,153,155,151,150,152,157,156,158,159,158,160,164,161,164,157,156,158,156, +155,157,158,157,159,167,166,168,157,156,158,161,160,162,156,155,157,156,155,157, +155,153,156,157,156,158,145,144,146,152,151,153,150,149,151,144,142,145,152,151, +153,148,147,149,148,147,149,154,152,155,148,146,148,158,157,159,155,152,155,153, +152,154,150,149,151,158,157,159,152,151,153,150,149,151,151,150,152,146,145,148, +152,151,153,155,154,156,155,154,156,150,149,151,146,145,148,150,149,151,152,151, +153,146,145,147,149,148,150,157,156,158,159,158,160,162,161,163,160,159,161,156, +155,157,141,140,144,156,155,157,148,147,149,157,156,158,129,128,130,160,159,161, +153,151,154,151,150,152,150,149,151,150,149,151,153,152,154,153,152,154,150,149, +151,157,156,158,157,156,158,153,152,154,147,145,147,148,147,149,161,160,162,154, +153,155,148,147,150,154,151,154,153,151,154,149,148,150,150,149,151,157,156,158, +160,159,161,157,156,158,154,152,155,159,158,160,158,157,159,154,152,155,154,152, +155,148,147,149,155,154,156,145,144,146,148,147,149,155,151,154,155,154,156,161, +160,162,165,162,165,160,159,161,155,153,156,148,146,148,152,151,153,150,148,150, +153,152,154,157,156,158,157,156,158,157,156,158,154,153,155,159,158,160,40,37, +57,46,40,54,85,85,86,54,33,54,98,73,103,102,77,99,149,149,151,67,42,67,111,84, +112,110,80,110,155,152,157,66,39,64,32,30,50,189,188,115,30,64,43,45,43,45,44, +42,45,56,56,62,56,67,65,55,56,64,53,58,53,53,48,58,52,48,66,52,48,52,51,47,51, +51,51,51,51,57,52,51,48,56,51,48,51,51,51,55,51,62,59,51,52,51,51,50,51,51,50, +51,51,53,51,51,47,51,51,56,57,51,48,55,51,47,52,51,47,51,51,47,58,51,47,55,51, +47,55,52,56,52,53,54,62,38,37,42,40,38,43,40,41,40,41,39,45,31,27,52,150,150,80, +31,28,55,66,39,64,113,90,109,110,80,111,153,152,160,67,42,67,108,80,105,103,78, +101,139,137,143,55,34,55,84,62,82,77,58,76,78,79,82,70,59,84,71,62,83,113,115, +122,68,43,73,112,85,114,111,83,108,110,86,109,154,148,158,75,155,0,71,146,0,86, +161,0,88,164,0,82,157,0,82,157,0,87,161,0,84,156,0,82,154,0,76,146,0,82,155,0, +87,159,0,85,149,0,84,153,0,73,147,0,72,147,0,84,160,0,82,157,0,78,151,0,75,149, +0,68,145,0,78,155,0,84,159,1,70,143,3,67,137,8,65,133,11,78,147,7,81,150,4,82, +149,2,83,150,2,84,150,1,84,151,1,79,139,9,62,120,10,67,117,19,85,154,0,91,143,4, +118,123,50,166,127,116,166,135,124,170,141,133,173,144,134,178,148,138,177,145, +136,179,138,130,70,138,9,99,130,34,104,146,29,83,151,0,77,139,10,72,132,17,81, +151,7,73,135,15,66,122,18,72,134,7,68,131,0,140,137,142,137,136,138,148,146,148, +143,142,144,101,98,101,98,98,99,98,93,94,104,103,105,102,99,101,94,92,94,93,91, +93,94,94,96,147,146,148,148,146,147,154,152,155,150,149,151,141,140,142,147,145, +147,149,148,151,152,151,153,99,98,98,102,99,102,103,102,101,102,99,102,102,99, +102,105,101,104,104,108,108,110,109,112,161,159,161,158,157,159,153,151,154,153, +151,154,156,155,157,158,157,159,164,161,164,157,156,158,105,108,108,114,113,116, +115,114,118,107,110,110,107,110,110,105,109,109,105,104,108,106,109,109,150,149, +151,147,145,147,147,145,147,140,140,142,150,149,151,145,144,146,142,141,143,147, +146,148,99,98,98,108,107,109,104,108,108,103,99,100,104,101,104,103,107,105,101, +100,101,102,106,104,151,150,152,144,142,146,144,141,144,151,150,152,145,144,146, +147,145,147,142,141,143,147,146,148,104,104,107,101,100,101,102,105,104,104,103, +104,107,110,110,105,108,108,114,113,117,107,106,109,149,147,149,145,144,147,145, +144,146,148,147,149,132,129,133,144,143,146,149,148,150,150,149,151,104,108,108, +109,108,111,103,100,102,101,98,100,100,97,99,101,98,100,103,100,102,104,103,107, +147,146,148,147,145,147,150,149,151,148,147,149,153,151,154,151,150,154,149,148, +150,149,147,149,102,99,101,105,109,109,103,106,104,108,110,110,105,109,109,104, +103,104,104,103,104,102,100,102,153,152,157,147,145,147,144,142,145,142,141,145, +145,144,146,150,149,151,156,155,157,155,153,156,106,109,109,112,111,113,103,107, +104,105,101,104,103,107,105,103,107,105,103,100,102,101,105,103,155,153,156,160, +159,161,157,156,158,157,156,158,41,34,52,43,35,55,83,84,88,53,30,53,95,70,94,99, +69,98,148,146,152,65,38,66,109,88,105,107,75,103,154,151,158,66,39,64,32,29,43, +189,189,115,30,34,43,45,51,45,44,68,46,56,52,55,56,52,60,55,50,59,53,49,64,53, +48,52,52,62,52,52,48,52,51,47,52,51,47,57,51,55,57,51,47,51,51,53,51,51,47,51, +51,47,51,51,48,51,51,48,51,51,50,51,51,49,65,51,47,51,51,47,65,51,55,51,51,47, +55,51,60,51,51,46,59,51,56,51,51,47,52,52,54,52,53,48,61,39,40,38,40,38,40,40, +38,40,41,39,51,30,27,43,156,155,83,30,29,51,66,39,64,110,81,110,107,85,103,152, +150,154,65,43,68,106,80,102,100,79,96,137,135,139,53,35,56,83,62,80,75,59,72,76, +77,80,67,56,83,67,58,85,113,114,119,66,39,64,110,80,106,108,78,105,107,75,104, +154,148,158,67,147,0,72,147,0,88,164,0,82,157,0,75,148,0,78,154,0,84,159,0,85, +159,0,84,158,0,85,159,0,86,163,0,86,160,0,84,149,0,80,146,0,72,144,0,75,149,0, +86,161,0,78,154,0,78,156,0,69,145,0,83,157,0,77,152,1,74,147,4,67,137,8,63,132, +11,65,133,11,84,157,3,85,157,1,85,156,1,85,153,0,85,153,0,85,153,0,69,128,9,73, +136,2,85,150,0,81,143,1,126,116,54,171,122,107,175,139,126,178,146,135,176,146, +137,173,144,134,170,140,132,168,146,124,76,154,0,85,145,4,74,128,13,82,147,0,83, +150,0,75,140,3,71,137,8,73,142,7,82,151,0,66,124,17,64,117,17,68,131,0,142,140, +145,143,142,143,141,140,143,101,104,103,51,90,115,54,88,113,54,88,113,56,92,120, +65,108,140,65,107,137,56,91,117,52,89,115,92,91,91,138,137,139,148,147,149,151, +150,155,155,154,156,151,150,152,156,155,157,107,106,109,51,89,116,53,89,113,53, +89,113,54,90,115,54,90,115,53,88,113,53,87,113,51,88,114,110,109,112,158,156, +158,156,155,157,165,164,166,154,153,155,156,155,157,162,161,163,103,107,107,52, +88,115,53,87,112,52,87,112,54,89,115,55,89,115,54,87,113,54,87,113,52,88,115, +106,109,109,151,150,152,148,147,149,141,140,142,158,157,159,151,150,152,152,151, +153,98,98,99,56,92,87,58,89,85,58,89,85,59,91,87,59,91,87,58,89,85,58,91,85,56, +91,87,103,100,103,151,150,152,154,152,155,151,150,155,152,151,153,151,150,152, +148,146,148,103,100,103,51,90,115,53,88,113,53,87,113,54,89,115,55,91,117,63, +104,135,71,115,149,71,121,158,107,110,110,152,151,153,140,139,142,145,144,147, +155,154,156,127,126,128,152,151,153,103,107,107,53,89,116,54,87,113,53,88,113, +54,89,115,54,89,115,53,88,113,53,88,113,50,88,115,111,110,113,156,155,157,153, +151,154,157,156,158,156,155,157,150,149,151,151,151,152,102,99,101,78,88,118,79, +85,115,79,85,115,80,87,117,80,87,117,79,85,115,79,85,115,79,87,119,103,100,102, +156,155,157,151,150,152,137,136,138,145,144,146,152,151,153,149,148,150,107,110, +110,70,121,158,73,118,154,68,112,146,61,101,131,54,90,116,53,87,113,53,88,113, +52,88,115,103,103,106,160,159,160,156,155,157,160,159,161,70,71,73,76,76,78,84, +85,87,88,63,88,137,135,139,144,143,146,148,148,152,107,77,106,153,152,155,152, +150,154,154,154,159,66,39,64,32,29,48,189,188,115,30,34,42,45,51,60,44,42,49,56, +55,55,56,53,56,55,65,59,53,54,61,53,48,67,52,48,52,52,48,52,51,47,51,51,47,51, +51,47,51,51,47,60,51,47,51,51,51,51,51,47,55,51,53,56,51,48,51,51,48,51,51,47, +51,51,52,51,51,47,51,51,54,52,51,47,53,51,52,52,51,56,51,51,55,51,51,47,58,53, +52,52,38,41,37,39,45,50,40,43,55,40,38,49,41,41,41,31,27,41,150,150,82,31,32,41, +66,39,64,155,154,159,152,150,154,152,150,154,107,77,107,149,148,151,144,142,151, +137,135,139,90,64,90,122,121,124,114,112,122,76,77,80,114,115,117,114,114,117, +114,114,117,109,80,112,154,153,161,153,151,155,154,153,158,154,148,158,70,148,0, +88,164,0,82,157,0,79,157,0,75,149,0,78,154,0,82,157,0,86,162,0,86,162,0,86,162, +0,87,163,0,86,160,0,85,149,0,74,138,0,72,142,0,78,154,0,78,153,0,85,160,1,73, +147,1,74,148,2,80,152,5,72,145,6,69,140,9,68,136,11,63,134,9,78,150,4,87,163,0, +87,161,0,86,160,0,86,157,0,85,154,0,85,153,0,70,134,0,77,145,0,79,144,0,77,140, +1,159,120,99,173,135,121,175,143,130,178,147,136,178,148,138,178,148,138,168, +139,130,139,141,86,78,152,0,84,150,0,84,151,0,83,149,0,84,149,0,66,134,0,77,146, +0,67,139,0,80,150,0,75,139,0,72,131,0,68,131,0,142,140,144,140,139,141,147,146, +148,103,105,104,53,89,113,87,142,183,87,142,182,56,88,112,58,91,116,106,165,195, +106,165,196,55,92,118,101,98,100,147,146,148,145,144,147,150,149,151,157,156, +158,156,155,157,150,149,152,108,110,110,54,87,113,87,142,183,87,142,182,56,88, +112,56,88,112,87,142,182,87,142,183,54,87,113,105,109,109,150,149,151,159,158, +160,156,155,157,159,158,160,153,151,154,165,162,165,108,111,111,54,87,113,87, +142,183,87,142,182,56,88,112,56,88,112,87,142,182,87,142,183,54,87,113,111,110, +113,156,155,157,156,155,157,145,144,147,145,144,146,149,148,150,150,149,151,105, +104,105,58,90,85,89,151,141,89,151,140,61,90,85,61,90,85,89,151,140,89,151,141, +58,91,85,104,101,103,138,138,139,148,147,149,149,148,151,148,147,149,147,145, +147,146,145,147,102,99,102,53,89,113,87,142,183,87,142,182,56,88,112,56,88,112, +90,146,184,105,165,196,71,116,150,109,111,112,153,152,154,141,140,143,144,142, +145,152,151,153,130,129,133,156,155,157,104,108,108,62,100,131,88,143,184,87, +142,182,56,88,112,56,88,112,87,142,182,87,142,183,52,87,112,112,111,113,157,156, +158,154,153,155,154,153,155,148,147,149,143,141,144,151,150,152,100,97,99,78,87, +116,127,137,186,126,137,185,80,86,114,80,86,114,126,137,185,127,137,186,79,85, +115,104,104,105,150,149,151,144,142,145,150,149,151,151,150,152,147,145,147,149, +148,150,108,110,110,74,119,155,119,183,206,118,181,205,71,112,143,62,98,125,87, +143,182,87,142,183,54,87,113,104,108,108,161,160,162,161,160,162,159,158,160,40, +23,39,42,23,42,80,62,79,55,42,60,58,36,57,61,35,61,105,82,103,68,52,74,67,46,72, +66,39,65,110,78,106,66,39,64,32,29,47,189,188,116,30,29,42,45,43,44,44,59,59,55, +54,54,56,52,56,55,49,62,53,53,53,53,53,60,52,48,52,52,54,52,51,47,51,51,47,51, +51,47,57,51,63,51,51,46,51,51,47,51,51,58,51,51,48,51,51,52,51,51,56,51,51,53, +56,51,47,51,51,47,51,51,48,51,51,52,58,51,48,54,51,48,51,51,47,51,51,47,61,52, +49,52,53,48,53,38,45,45,40,41,53,40,43,40,41,39,41,31,27,40,152,150,83,30,42,45, +66,39,64,70,48,73,66,39,64,108,77,104,68,45,73,66,41,64,61,36,59,97,68,93,56,37, +60,50,30,48,45,25,43,74,51,71,65,39,64,66,42,64,109,78,112,69,45,75,68,70,67,67, +41,67,66,37,72,154,148,158,77,155,0,86,161,0,78,154,0,76,151,0,76,150,0,74,149, +0,82,157,0,87,163,0,87,163,0,87,163,0,87,162,0,86,158,0,74,136,1,74,135,1,81, +150,1,75,147,1,80,154,2,85,159,3,73,148,4,80,153,6,72,141,11,72,142,11,66,134, +11,74,143,8,74,145,4,85,159,1,87,163,0,87,163,0,87,162,0,86,160,0,86,158,0,80, +149,0,76,141,0,73,135,0,71,130,0,93,135,22,164,128,113,174,140,125,175,144,129, +178,147,136,178,148,138,178,148,138,177,145,134,169,128,119,131,139,66,82,150,0, +83,151,0,84,152,0,71,137,0,67,135,0,68,135,0,72,136,0,79,147,0,75,139,0,72,131, +0,68,131,0,141,139,143,132,131,133,142,141,143,105,102,104,53,87,112,86,140,181, +93,147,188,56,87,112,56,87,112,97,151,190,105,165,194,69,113,146,100,97,100,149, +147,149,151,150,152,149,148,150,148,147,149,150,149,151,151,149,151,103,107,105, +54,87,112,86,140,181,93,147,188,56,87,112,56,87,112,93,147,188,86,140,181,54,87, +112,109,111,112,150,149,151,148,147,149,150,149,151,149,148,150,147,144,146,160, +159,161,107,110,110,54,87,112,86,140,181,93,147,188,56,87,112,56,87,112,93,147, +188,86,140,181,53,87,112,104,100,101,149,148,150,155,154,156,146,145,148,150, +149,150,146,145,148,145,143,146,101,98,101,58,89,85,87,150,139,95,156,144,61,89, +85,61,89,85,95,156,144,87,149,139,58,89,85,105,104,105,143,142,144,151,150,152, +145,144,146,141,140,142,152,151,153,148,146,148,102,99,102,53,88,112,86,140,181, +93,147,188,56,87,112,56,87,112,93,147,188,90,146,184,65,106,136,104,103,105,153, +152,154,144,142,145,144,142,145,146,145,148,131,130,131,153,152,156,105,109,109, +70,113,145,99,157,190,94,148,189,56,87,112,56,87,112,93,147,188,86,140,181,52, +87,112,107,110,109,152,151,153,148,147,149,153,151,154,153,151,154,154,152,155, +150,149,151,103,100,103,78,86,115,126,135,183,133,142,191,81,85,113,81,85,113, +133,142,191,126,135,183,79,85,114,106,110,110,145,143,146,145,144,146,147,145, +147,147,145,147,150,149,151,156,155,157,105,109,109,74,119,154,118,182,205,128, +185,209,76,118,152,70,110,141,103,158,194,86,141,181,54,87,112,104,108,108,158, +157,159,153,151,155,153,151,155,69,51,69,73,60,75,120,121,125,54,43,54,98,73,98, +102,84,104,149,150,154,67,53,67,111,82,108,110,82,108,155,152,157,66,39,64,32, +32,50,189,189,114,30,50,54,45,50,54,44,49,57,53,53,67,56,54,59,55,72,56,53,51, +53,53,54,53,52,49,57,52,49,52,51,54,55,51,47,51,51,47,51,51,46,51,51,60,51,51, +47,54,51,49,56,51,48,57,51,51,51,51,48,56,51,47,64,51,56,51,51,51,51,51,47,52, +51,50,51,51,48,51,51,47,51,51,47,51,51,47,51,52,61,58,52,47,52,50,55,57,40,39, +39,40,58,45,41,47,41,30,27,51,156,155,83,30,58,47,66,39,64,113,89,112,110,80, +109,153,151,158,67,42,65,108,83,108,103,75,99,139,137,141,55,34,53,84,64,84,77, +56,74,113,111,115,110,79,106,110,91,108,154,152,161,68,46,72,112,83,114,111,94, +108,111,79,109,154,148,158,84,161,0,78,154,0,75,150,0,74,149,0,74,149,0,78,155, +0,88,164,0,87,162,0,86,162,0,86,161,1,86,162,1,75,145,2,77,136,2,71,129,2,76, +142,3,74,146,5,81,154,5,78,151,6,76,148,8,73,143,10,70,139,12,72,143,10,74,143, +7,77,147,4,81,152,1,84,157,0,86,162,0,87,163,0,87,163,0,87,163,0,88,163,0,75, +148,0,74,143,0,75,142,0,72,133,0,122,129,37,173,132,119,174,140,125,175,144,129, +178,146,136,178,148,138,178,148,138,177,142,131,176,132,121,130,142,67,82,151,0, +84,151,0,79,146,0,66,133,0,72,133,0,66,131,0,73,134,0,77,141,0,79,148,0,72,131, +0,68,131,0,143,141,146,136,139,140,150,149,151,103,99,102,53,89,113,87,142,182, +93,148,189,56,88,112,56,88,112,93,148,189,89,145,184,61,99,128,101,98,100,137, +136,138,144,142,145,145,144,146,144,142,145,145,144,146,151,150,152,103,107,105, +53,87,113,87,142,182,93,148,189,56,88,112,56,88,112,93,148,189,87,142,182,54,87, +113,105,109,109,155,153,156,148,147,149,157,156,158,147,145,147,147,145,147,157, +156,158,109,111,111,54,87,113,87,142,182,93,148,189,56,88,112,56,88,112,93,148, +189,87,142,182,53,87,113,103,107,105,157,156,158,156,155,157,149,148,150,148, +147,149,146,145,148,150,149,151,100,99,100,58,90,85,89,151,140,95,157,145,61,90, +85,61,90,85,95,157,145,89,151,140,58,89,85,109,109,111,145,143,146,146,145,148, +151,150,152,151,150,152,154,152,155,153,152,154,102,99,101,53,89,113,87,142,182, +93,148,189,56,88,112,56,88,112,93,148,189,87,142,182,56,92,119,104,108,108,152, +151,153,145,144,146,147,145,147,148,147,149,131,130,132,152,151,153,103,107,105, +72,119,154,113,174,200,107,163,197,57,89,113,56,88,112,93,148,189,87,142,182,52, +87,112,115,115,118,155,152,155,157,156,158,159,158,160,154,153,155,150,149,151, +153,152,154,106,105,108,79,85,115,126,137,185,133,143,192,80,86,114,80,86,114, +133,143,192,126,137,185,79,85,115,105,104,105,150,149,151,140,139,140,150,149, +151,150,150,151,155,154,156,156,155,157,105,109,109,74,119,155,119,183,206,128, +186,210,77,121,154,75,119,152,117,174,203,96,154,188,54,87,114,104,108,108,160, +159,161,156,155,157,156,155,157,67,48,69,71,54,71,119,119,127,53,33,51,95,69,98, +99,76,99,148,148,156,65,41,63,109,80,105,107,75,107,154,153,155,66,39,64,32,30, +43,189,188,116,30,30,43,45,44,56,44,43,46,50,50,53,56,52,56,55,50,59,53,52,70, +53,59,53,52,62,55,52,58,52,51,67,51,51,48,58,51,47,51,51,61,51,51,52,55,51,47, +51,51,60,61,51,58,57,51,48,52,51,52,57,51,47,51,51,47,56,51,48,60,51,50,51,51, +54,59,51,59,51,51,56,51,51,50,51,51,49,63,52,48,59,52,58,52,52,50,57,40,39,50, +40,41,50,41,47,41,30,27,42,155,154,83,29,27,39,66,39,64,110,87,107,107,75,108, +152,150,154,65,45,64,106,82,102,100,70,96,137,135,139,53,37,53,83,63,80,75,52, +72,111,109,114,107,75,103,107,75,108,153,154,155,66,58,64,110,85,106,109,78,105, +103,85,108,154,148,158,79,157,0,76,150,0,73,148,0,73,148,0,78,154,0,88,163,0,86, +162,1,86,161,1,85,160,2,84,158,3,83,157,3,73,144,4,69,129,4,72,132,5,67,132,6, +70,140,7,77,149,8,75,146,9,73,144,10,71,140,11,71,141,11,75,146,8,77,147,4,77, +147,2,82,152,0,85,157,0,86,162,0,87,163,0,87,163,0,87,163,0,79,156,0,75,149,0, +78,154,0,75,144,0,94,139,0,134,130,58,172,133,119,172,139,123,176,144,131,178, +147,136,178,148,138,178,148,138,178,145,135,176,134,123,151,139,91,80,151,0,83, +151,0,79,145,0,67,132,0,68,132,0,69,131,0,66,131,0,77,138,0,78,145,0,72,131,0, +68,131,0,142,140,145,140,139,141,142,141,144,98,97,98,54,90,115,55,86,109,54,85, +109,57,89,114,57,89,114,54,85,109,55,86,109,55,90,117,96,96,98,138,137,139,142, +141,145,151,150,153,144,142,145,150,149,152,146,145,147,104,99,100,54,89,115,55, +86,109,54,85,109,57,89,114,57,89,114,54,85,109,55,86,109,55,89,114,106,109,109, +149,148,150,148,147,149,154,151,155,150,150,152,144,142,145,153,152,154,104,108, +108,54,89,114,55,86,109,54,85,109,57,89,114,57,89,114,54,85,109,55,86,109,54,89, +114,103,107,105,155,152,155,153,151,154,147,145,147,147,145,147,141,140,142,151, +150,152,102,105,104,60,95,90,60,88,82,59,87,82,62,91,86,62,91,86,59,87,82,60,88, +82,60,91,86,103,107,105,146,145,147,151,150,152,151,150,152,140,139,141,152,151, +153,148,146,148,105,102,104,54,90,115,55,86,109,54,85,109,57,89,114,57,89,114, +54,85,109,55,86,109,54,89,114,104,101,104,150,149,151,148,147,149,149,148,151, +152,151,153,135,134,136,146,145,147,105,102,104,74,122,158,75,117,149,70,110, +141,66,103,132,58,90,115,54,85,109,55,86,109,54,89,114,108,110,110,151,150,152, +159,158,160,155,154,156,148,147,149,149,148,150,148,146,148,105,102,104,80,87, +116,78,84,111,78,83,111,82,87,116,82,87,116,78,83,111,78,84,111,80,87,116,105, +104,105,143,142,144,142,141,145,151,150,152,144,142,145,144,142,145,149,146,148, +105,108,108,75,122,157,75,118,150,74,117,150,78,122,157,78,122,157,73,115,147, +69,108,137,61,99,126,103,107,104,158,157,159,154,153,155,156,155,157,104,102, +107,110,108,116,119,116,121,88,63,86,137,135,139,144,142,149,148,146,150,107,77, +104,153,151,155,145,142,147,154,151,161,66,39,64,32,29,43,189,188,115,30,32,58, +45,55,48,44,45,51,46,59,50,56,52,55,55,51,73,53,50,52,53,54,53,52,48,53,52,61, +53,51,50,59,51,55,55,51,47,51,51,47,58,51,47,51,51,47,51,50,57,51,43,43,42,42, +36,43,50,45,58,51,47,59,51,50,52,51,47,52,51,47,58,51,47,56,51,47,51,51,49,54, +51,47,58,51,47,52,52,48,53,52,49,53,52,48,53,43,47,44,40,51,40,41,42,41,27,30, +44,161,160,86,28,40,40,66,39,64,155,154,157,152,156,154,152,152,157,107,77,103, +149,147,157,144,145,146,137,136,142,90,64,86,122,120,130,115,117,118,112,111, +118,153,151,155,153,153,155,153,154,159,109,77,108,154,153,156,153,151,155,154, +151,159,154,148,158,80,158,0,78,154,0,83,158,0,72,147,0,87,163,0,86,161,1,85, +160,1,84,159,2,83,157,3,81,154,5,80,152,6,78,149,6,77,140,6,76,139,6,74,140,7, +76,147,8,75,146,9,74,145,9,73,143,10,71,141,11,74,145,9,77,148,6,78,147,4,77, +148,2,81,152,0,84,157,0,87,160,0,87,163,0,87,163,0,88,164,0,78,154,0,79,156,0, +78,154,0,84,152,0,97,141,1,154,137,94,171,136,120,171,138,121,176,144,132,178, +147,136,178,148,138,178,148,138,178,147,137,177,142,132,173,135,121,82,151,0,83, +151,0,83,152,0,81,144,0,69,135,0,68,134,0,66,131,0,73,135,0,73,136,0,75,139,0, +68,131,0,143,141,144,135,134,138,147,146,148,103,100,102,53,88,113,87,142,182, +93,148,189,56,88,112,56,88,112,93,148,189,87,142,182,54,88,113,98,93,94,141,140, +142,150,149,151,150,149,151,154,152,155,147,145,147,152,151,153,103,107,105,53, +87,113,87,142,182,93,148,189,56,88,112,56,88,112,93,148,189,87,142,182,54,87, +113,105,109,109,153,152,154,144,141,145,152,151,153,145,144,146,151,150,152,145, +143,147,100,98,98,53,88,113,87,142,182,93,148,189,56,88,112,56,88,112,93,148, +189,87,142,182,53,87,113,104,101,103,158,157,159,156,155,157,157,156,158,154, +152,155,141,141,143,151,150,152,102,105,104,67,111,104,92,155,141,95,157,145,61, +90,85,61,90,85,95,157,145,89,151,140,59,89,85,105,109,109,143,142,144,149,148, +150,150,149,151,147,145,147,149,148,150,151,150,152,105,102,104,53,89,113,87, +142,182,93,148,189,56,88,112,56,88,112,93,148,189,87,142,182,53,87,113,103,107, +105,155,153,156,147,145,147,148,147,149,151,150,152,145,143,146,148,146,148,102, +100,100,72,121,155,119,183,206,127,185,210,72,114,145,64,102,130,94,149,190,87, +142,182,53,88,113,103,100,102,151,150,152,156,155,157,155,154,156,147,145,147, +149,148,149,143,142,146,103,105,104,79,85,115,126,137,185,133,143,192,80,86,114, +80,86,114,133,143,192,126,137,185,79,85,115,103,105,104,146,143,146,145,145,148, +148,145,147,141,140,142,142,141,143,141,140,142,105,102,104,72,119,155,119,183, +206,128,186,210,77,121,154,77,121,154,128,186,210,118,180,204,66,110,143,103, +107,105,152,151,153,153,151,154,151,150,152,40,25,40,42,23,41,80,60,77,55,40,54, +58,39,58,61,36,59,105,80,101,68,50,67,67,52,66,153,150,160,79,51,79,66,39,64,32, +34,43,189,188,116,30,29,45,45,45,55,44,42,44,44,43,64,56,57,63,55,59,59,53,49, +60,53,55,53,52,48,52,52,48,55,51,47,51,51,47,54,51,47,52,51,53,55,51,55,58,51, +58,55,43,37,48,159,157,159,170,171,171,42,42,42,51,52,60,51,51,51,51,56,57,51, +49,56,51,47,52,51,47,51,51,48,52,51,49,56,51,48,62,52,48,56,52,48,52,52,48,60, +45,52,44,40,39,40,41,39,42,27,25,40,162,162,87,28,29,46,66,39,64,70,42,68,66,44, +67,108,76,104,68,48,72,66,45,66,61,46,63,97,68,93,56,39,59,50,34,51,46,34,47,76, +53,73,65,47,65,66,39,68,109,81,105,69,49,68,68,51,69,67,42,66,65,39,70,154,148, +158,86,165,0,88,164,0,82,157,0,82,156,0,86,161,1,85,160,2,84,158,3,82,156,4,81, +154,5,79,152,6,79,152,6,79,152,6,78,145,5,77,143,5,77,148,7,78,149,7,74,145,7, +77,148,8,74,145,9,72,141,11,74,145,9,78,149,6,78,147,4,76,147,2,80,150,1,84,157, +0,74,148,0,87,163,0,85,160,0,88,164,0,87,163,0,82,157,0,86,154,0,95,146,0,109, +144,19,156,141,100,171,137,119,172,138,122,174,140,125,176,145,133,177,147,137, +178,148,138,178,148,138,178,146,136,178,139,129,133,146,73,90,154,0,84,153,0,83, +152,0,82,150,0,70,137,0,67,131,0,70,131,0,72,131,0,74,137,0,67,130,0,150,148, +152,148,146,148,143,142,144,101,98,101,53,87,112,86,140,181,93,147,188,56,87, +112,56,87,112,93,147,188,86,141,181,53,87,112,102,101,102,142,141,143,144,142, +145,145,144,146,154,152,155,151,151,152,153,152,156,104,104,105,53,87,112,86, +140,181,93,147,188,56,87,112,56,87,112,93,147,188,86,140,181,54,87,112,108,110, +110,156,155,157,148,147,149,147,145,147,145,144,146,138,137,140,147,146,148,94, +91,92,53,87,112,86,141,181,79,153,122,56,87,112,56,87,112,93,147,188,86,140,181, +53,87,112,105,109,109,158,157,159,158,157,159,153,151,154,156,155,157,148,147, +149,146,145,147,102,105,104,67,111,103,108,172,150,98,160,147,61,89,85,61,89,85, +95,156,144,87,149,139,59,89,85,105,104,105,147,146,148,137,136,138,142,141,143, +145,144,146,149,148,150,151,150,153,103,100,103,53,88,112,86,140,181,93,147,188, +56,87,112,56,87,112,93,147,188,86,140,181,53,87,112,103,107,105,155,153,156,145, +144,146,149,148,150,151,150,152,147,144,147,150,149,151,103,107,105,72,119,154, +118,182,205,128,185,209,76,119,153,72,113,145,107,162,196,87,141,182,53,87,112, +105,104,105,148,146,148,154,151,155,148,147,149,149,148,150,145,144,146,142,141, +144,103,100,102,79,85,114,126,135,183,133,142,191,81,85,113,81,85,113,133,142, +191,126,136,184,79,85,114,103,99,102,146,144,147,140,139,141,142,141,143,141, +140,143,141,140,142,142,141,143,105,109,109,71,118,152,91,167,133,128,185,210, +77,119,154,77,119,154,128,185,210,118,181,205,71,118,152,106,109,109,150,149, +151,149,148,151,139,138,140,69,50,70,73,52,72,120,118,125,54,40,56,98,73,99,102, +74,100,149,147,154,67,50,69,100,73,97,153,150,160,51,49,51,66,63,66,32,29,43, +189,189,115,30,45,44,45,43,50,44,44,46,43,39,44,57,60,56,55,52,64,53,54,71,53, +48,60,52,48,52,52,56,66,51,47,51,51,49,55,51,48,60,51,47,57,51,47,57,51,51,57, +41,36,46,157,155,157,168,170,170,39,41,39,51,48,51,51,48,51,51,48,51,51,48,51, +51,48,58,51,48,51,51,51,51,51,47,51,51,51,59,52,48,53,52,63,52,54,49,56,40,43, +53,40,44,40,41,39,52,27,25,40,160,158,85,28,26,40,66,39,64,113,84,109,110,90, +111,153,151,155,67,56,66,108,80,107,103,75,102,139,137,144,55,46,54,85,62,84,79, +57,78,116,113,121,110,79,106,110,80,106,154,153,156,68,43,72,112,84,109,111,83, +108,110,80,106,154,148,158,84,164,0,87,163,0,87,163,0,86,162,1,85,160,2,84,158, +3,82,156,4,81,155,4,81,154,5,82,155,4,83,157,3,84,158,3,83,153,3,88,152,3,87, +155,3,84,158,3,71,144,3,83,157,4,78,150,7,73,144,10,74,144,10,77,150,7,76,146,4, +77,146,2,80,150,1,78,151,0,77,150,0,78,151,0,76,151,0,78,154,0,83,160,0,83,154, +0,119,146,50,152,136,89,164,137,106,172,138,123,172,139,123,175,145,132,171,138, +120,174,140,127,177,145,133,177,147,137,178,148,138,178,147,137,177,145,135,171, +144,124,140,149,85,104,155,19,86,157,0,80,153,0,72,143,0,67,134,0,68,131,0,72, +136,0,72,131,0,67,131,0,151,149,153,147,145,147,151,150,152,102,105,104,53,89, +113,87,142,182,87,142,182,56,88,112,56,88,112,87,142,182,87,142,182,53,88,113, +102,99,101,146,144,148,145,144,146,150,150,151,150,149,151,146,145,148,143,142, +144,106,105,109,54,87,113,88,142,185,88,142,185,56,88,112,56,88,112,88,142,185, +87,142,182,53,87,113,104,104,105,150,149,152,156,155,157,151,150,152,151,150, +152,145,144,146,149,146,148,108,107,110,53,87,113,76,151,118,76,151,118,56,88, +112,56,88,112,87,142,182,87,142,182,53,87,113,104,101,103,156,155,157,149,148, +150,147,145,147,154,151,155,147,145,147,151,150,152,105,102,104,60,92,88,110, +173,150,111,173,151,63,94,88,61,90,85,90,152,143,89,151,140,59,89,85,106,109, +109,149,148,150,149,148,150,145,144,146,145,144,146,149,148,150,146,145,148,103, +99,102,53,89,113,87,142,182,87,142,182,56,88,112,56,88,112,87,142,182,87,142, +182,53,87,113,104,104,105,149,148,150,149,148,150,151,150,155,153,150,153,148, +147,151,156,155,157,105,109,109,72,119,155,121,183,208,121,183,208,77,121,154, +76,120,153,114,174,202,100,156,193,53,88,114,105,104,105,147,146,149,155,154, +156,150,149,151,152,151,153,151,150,152,151,150,152,99,95,98,78,87,116,129,137, +187,129,137,187,80,86,114,80,86,114,129,137,187,129,137,187,79,86,115,105,102, +104,146,143,146,144,142,145,141,140,143,140,139,142,154,152,155,151,150,152,105, +104,105,66,110,143,92,166,134,93,168,135,77,121,154,77,121,154,121,183,208,121, +183,208,72,122,155,104,101,104,153,152,154,156,155,157,151,150,152,67,47,66,71, +49,74,119,119,121,53,33,51,95,68,94,99,70,103,148,148,150,65,41,63,98,74,98,153, +150,160,51,49,51,66,63,66,32,37,43,189,189,117,30,28,50,45,44,48,44,46,44,43,60, +43,57,52,57,55,57,55,53,49,52,53,48,58,52,50,56,52,52,57,51,51,55,51,47,56,51, +47,60,51,49,52,51,57,51,51,60,65,40,34,42,166,165,167,168,167,171,39,36,43,51, +56,51,51,47,51,51,48,51,51,47,51,51,51,52,51,52,57,51,47,51,51,47,51,51,47,58, +52,50,52,52,48,58,54,55,53,40,45,49,40,51,40,41,43,47,27,25,41,168,165,88,28,32, +40,66,39,64,110,80,112,107,75,103,152,150,154,65,53,63,106,79,107,100,72,96,137, +135,139,53,43,52,83,61,84,77,54,74,113,111,116,107,87,105,107,77,103,153,152, +155,66,46,72,110,82,111,108,78,105,107,75,103,154,148,158,84,164,0,87,163,0,87, +163,0,86,162,1,85,160,1,84,159,2,83,157,3,83,157,3,84,159,2,86,161,1,87,163,0, +87,161,0,92,154,0,105,155,29,94,162,1,73,147,0,76,150,0,87,163,1,78,151,3,76, +148,8,74,145,9,74,143,8,73,141,5,77,146,2,79,151,1,73,146,0,79,154,0,74,148,0, +78,154,0,78,154,0,77,152,0,116,148,49,169,137,116,174,134,121,174,138,123,174, +140,127,175,141,129,176,145,132,175,141,129,174,140,127,176,144,131,178,147,136, +178,148,138,178,148,138,178,147,137,178,146,137,177,144,131,154,149,101,108,148, +45,88,151,0,76,142,0,68,136,0,68,128,0,72,131,0,72,131,0,67,130,0,153,151,155, +147,145,147,148,146,148,103,100,102,44,86,113,45,83,109,45,83,109,46,85,112,46, +85,112,46,83,110,46,84,110,47,86,113,94,91,92,143,142,147,149,148,150,150,149, +151,155,154,156,147,145,147,137,136,138,108,110,110,46,85,113,45,83,109,45,83, +109,46,85,112,46,85,112,45,83,109,44,83,109,44,85,112,100,98,98,150,149,151,154, +152,155,154,151,155,148,147,149,144,142,145,151,150,152,103,107,104,44,85,112, +60,135,70,44,83,109,46,85,112,46,85,112,44,82,109,44,82,109,43,84,112,103,103, +104,148,146,148,145,144,146,147,145,147,156,155,157,148,147,150,149,146,148,100, +100,101,50,87,85,52,87,85,57,104,100,60,108,105,52,89,87,49,84,81,49,84,81,51, +86,86,104,108,109,156,155,157,152,151,153,144,142,145,140,139,141,144,142,145, +142,141,144,102,99,102,46,87,113,45,83,109,44,83,109,45,85,112,45,84,111,44,82, +109,44,83,109,44,85,112,103,103,104,159,158,160,145,144,146,148,147,149,150,149, +151,149,148,150,153,152,154,103,100,103,63,117,154,61,114,150,61,114,150,63,117, +154,64,117,154,62,114,150,58,106,140,50,95,126,104,108,108,146,145,148,147,145, +147,151,150,152,145,144,146,149,149,150,147,146,150,103,100,102,74,84,116,73,81, +111,73,81,111,75,82,114,75,82,114,74,80,112,74,81,111,75,82,115,103,103,104,143, +142,147,144,142,145,142,141,143,138,137,139,149,148,151,153,152,154,104,103,104, +49,94,124,56,105,137,65,142,96,64,116,154,64,117,154,63,114,151,63,114,151,61, +119,155,104,101,103,150,149,151,154,154,155,154,151,155,104,102,107,110,108,117, +119,116,126,88,62,90,137,135,139,144,142,150,148,146,155,107,76,109,134,130,135, +153,150,160,51,49,51,66,63,66,32,29,43,189,188,115,30,28,42,45,44,55,44,42,48, +43,44,43,41,39,41,56,52,64,53,49,53,53,52,54,52,53,52,52,48,52,51,56,55,51,48, +55,51,47,55,51,67,52,51,51,51,51,48,53,41,38,46,159,160,159,168,170,170,39,33, +47,51,46,51,51,62,59,51,47,51,51,52,52,51,52,51,52,47,51,52,47,53,51,53,51,51, +47,51,52,48,52,52,48,53,53,60,61,49,45,50,40,39,40,41,43,51,27,25,38,171,169,91, +28,26,40,66,39,64,155,152,157,152,151,154,152,150,154,107,76,107,149,148,154, +144,142,146,137,135,144,90,63,90,122,121,127,116,114,118,113,111,121,153,150, +157,153,153,155,153,153,157,109,77,111,154,154,156,153,152,155,153,154,155,154, +148,158,84,164,0,87,163,0,87,163,0,87,162,0,86,162,1,86,161,1,86,161,1,86,161,1, +87,163,0,87,163,0,87,163,0,85,158,0,102,152,26,119,155,51,90,156,0,75,151,0,86, +161,0,77,150,0,77,154,2,80,153,6,74,145,9,70,138,8,73,141,5,79,148,2,69,143,1, +73,146,0,78,151,0,75,149,0,77,154,0,76,153,0,83,153,0,140,144,84,174,140,122, +175,139,126,175,140,127,176,145,132,177,146,134,178,147,136,177,147,138,177,145, +133,176,145,132,178,147,136,178,148,139,178,148,138,178,148,138,178,147,137,177, +145,135,172,143,126,158,145,105,129,148,68,112,145,52,79,138,21,73,138,0,79,148, +0,72,130,0,67,130,0,157,154,158,150,149,151,156,155,157,96,94,97,178,176,179, +172,172,177,176,174,177,178,176,179,177,175,178,167,166,168,167,166,169,164,163, +166,96,94,96,140,139,142,142,141,143,147,145,147,152,151,153,147,145,147,151, +150,152,103,103,106,171,170,173,171,170,172,172,172,177,172,172,177,177,175,178, +171,169,172,179,177,180,182,180,183,96,93,96,156,155,157,143,141,144,150,149, +151,152,151,153,141,140,142,149,148,150,97,97,98,177,175,178,180,178,181,175, +174,176,178,176,179,175,174,177,180,178,181,180,178,181,183,181,185,107,107,110, +152,151,153,158,157,159,149,148,150,155,154,156,149,148,150,141,140,142,97,100, +100,171,175,176,177,175,178,177,175,178,172,172,177,172,172,177,179,177,180,175, +174,177,180,178,181,99,99,104,155,153,156,141,140,142,145,144,146,149,148,150, +148,148,149,145,143,146,92,92,94,167,170,171,173,172,177,177,175,178,178,176, +179,182,180,184,181,179,182,176,175,177,177,176,179,98,103,104,155,152,156,148, +147,149,154,152,155,153,151,154,151,150,152,151,150,152,100,105,105,178,176,179, +170,169,171,172,172,177,178,176,179,169,168,170,165,162,166,168,171,172,171,175, +176,97,97,99,146,145,147,148,148,150,144,142,145,151,150,152,147,145,147,142, +141,143,99,97,98,168,171,172,176,174,177,172,172,177,172,172,177,176,174,177, +168,166,169,170,174,175,169,168,171,93,88,90,141,140,142,142,141,143,141,140, +142,138,137,138,143,141,145,141,140,142,99,104,104,178,176,179,171,170,172,171, +170,173,168,167,169,169,172,173,169,168,171,168,167,169,174,172,176,93,92,92, +150,149,151,156,155,157,144,144,145,40,25,39,42,27,42,80,58,77,55,47,55,58,39, +57,61,40,60,105,77,101,68,58,68,66,44,65,153,150,160,51,49,51,66,63,66,32,29,50, +189,189,115,30,32,45,45,43,45,44,46,45,43,42,55,41,45,47,56,62,55,53,59,68,53, +48,57,52,48,60,52,48,57,51,52,51,51,47,51,51,47,51,51,52,66,51,48,51,51,48,55, +41,35,51,159,160,159,168,168,168,39,50,55,51,52,62,51,47,58,51,47,51,52,54,54, +52,51,56,37,36,40,37,45,37,52,53,52,52,58,52,53,48,52,53,59,52,54,49,54,51,51, +55,40,38,40,41,43,41,27,25,40,165,162,87,28,26,40,66,39,64,70,49,75,66,57,74, +108,76,104,39,33,51,38,31,48,31,25,49,61,51,76,56,40,55,50,35,49,45,25,46,76,52, +74,65,42,65,66,50,65,109,84,110,69,45,68,68,46,67,67,42,67,64,50,64,154,148,158, +85,165,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163, +0,87,163,0,87,162,0,89,154,0,115,149,46,125,155,60,83,153,1,78,154,0,78,154,0, +76,151,0,85,160,0,78,151,3,75,144,7,70,138,7,73,141,5,68,139,2,68,140,1,74,144, +5,78,149,1,76,153,0,93,152,11,114,146,50,176,141,129,176,141,130,176,142,129, +175,143,128,176,145,133,177,146,134,178,147,136,180,148,137,178,148,138,177,147, +137,178,146,136,179,147,138,165,150,121,180,148,140,178,148,139,178,147,137,177, +144,133,178,140,129,154,143,99,121,147,55,102,150,28,86,147,4,88,161,0,78,152,0, +85,162,0,66,129,0,150,148,152,147,145,147,152,151,153,152,151,153,149,148,150, +154,153,155,146,144,146,146,144,146,150,149,151,139,138,141,141,140,142,145,144, +146,140,139,142,140,139,141,151,150,152,147,145,147,147,145,147,149,148,150,147, +145,147,151,150,152,148,147,149,144,143,146,153,151,154,151,150,151,151,150,151, +151,149,154,156,155,158,155,154,156,156,155,157,156,155,157,149,148,150,155,154, +156,155,154,156,150,149,151,150,149,151,147,146,149,149,148,150,150,149,151,156, +155,157,144,142,144,148,147,149,148,147,149,152,150,153,156,155,157,157,156,158, +158,157,159,158,157,159,151,150,152,157,156,158,154,153,155,158,157,159,155,154, +156,149,147,149,157,156,158,150,149,151,149,148,149,149,148,149,147,146,148,148, +147,149,154,153,155,157,156,158,151,150,152,154,152,155,147,145,147,148,147,149, +152,151,153,150,149,151,150,149,151,140,139,141,139,138,140,143,141,144,147,146, +148,149,148,150,155,154,156,156,155,157,156,155,157,154,152,155,149,148,150,149, +148,150,148,147,149,154,152,155,147,145,147,155,154,156,154,152,155,156,155,158, +143,141,144,149,148,150,150,149,151,151,150,152,148,151,157,138,136,138,148,147, +149,148,146,148,142,141,143,150,149,151,144,142,146,150,149,151,141,140,142,149, +148,150,145,143,147,142,141,145,143,141,145,143,141,144,153,151,154,151,150,152, +144,143,145,149,148,150,145,144,146,143,142,144,137,136,138,139,138,140,139,138, +141,143,141,145,175,174,177,172,171,175,151,150,152,150,149,151,149,148,150,147, +144,146,150,149,151,141,140,142,139,138,140,147,145,147,143,141,144,150,149,152, +152,151,153,156,155,157,149,148,150,69,54,67,73,61,71,120,121,122,54,38,55,98, +77,95,102,85,99,149,150,151,67,47,68,100,74,97,153,150,160,51,49,51,66,63,66,32, +29,43,189,190,115,30,43,47,45,47,49,44,58,46,43,41,44,57,57,56,55,51,62,53,53, +60,53,54,54,52,48,55,52,48,52,51,47,51,51,47,51,51,47,51,51,58,55,51,57,51,51, +52,51,40,35,46,167,170,167,168,166,169,39,34,40,51,47,55,51,47,52,51,47,66,39, +38,42,37,52,35,38,36,51,38,36,37,37,36,37,37,36,36,39,38,53,39,37,38,39,51,60, +40,52,53,40,39,40,41,39,45,27,25,46,165,164,88,28,40,44,66,39,64,113,85,113,110, +82,106,153,152,155,34,29,57,74,69,81,65,59,80,102,101,105,55,33,60,84,74,84,77, +59,77,114,111,116,110,80,106,110,80,108,154,152,160,68,43,67,112,85,109,111,83, +108,110,82,106,154,148,158,78,161,3,75,152,11,81,164,0,81,164,0,65,130,23,72, +139,19,83,156,7,86,160,3,86,160,3,73,138,19,86,160,0,98,149,11,127,149,64,129, +155,68,76,151,0,77,151,0,79,157,0,83,158,0,78,154,0,76,151,2,71,137,13,73,139,8, +68,131,15,63,130,12,62,120,23,67,130,17,78,149,6,81,149,8,172,141,131,176,143, +131,175,143,129,177,144,132,177,145,133,178,146,137,178,146,137,177,146,134,177, +146,134,178,147,136,180,148,138,180,148,140,181,147,141,155,153,106,116,160,45, +81,164,0,180,148,140,178,148,138,177,144,133,176,139,127,179,135,126,78,152,0, +75,144,0,85,154,0,76,145,0,78,152,0,88,163,0,84,165,0,147,144,148,144,142,145, +147,145,147,144,141,146,148,147,149,148,147,149,144,142,145,145,144,146,139,138, +140,142,141,145,140,139,141,139,138,140,131,130,132,140,139,141,138,137,139,147, +145,147,151,150,151,152,151,155,141,140,142,151,150,152,141,140,142,136,135,137, +144,142,145,146,145,148,149,148,150,148,147,149,149,148,150,150,149,151,149,148, +150,156,155,156,151,150,154,155,154,156,147,145,147,152,151,153,150,149,151,142, +141,143,148,147,149,147,145,147,150,149,151,151,150,152,149,148,150,154,152,155, +149,148,150,150,149,151,153,151,154,153,151,154,154,153,155,153,151,154,158,157, +159,150,149,151,155,154,156,148,147,149,150,149,151,144,143,145,152,151,155,144, +142,146,145,144,146,144,142,145,148,147,149,149,148,150,156,155,157,147,145,147, +150,149,151,151,151,153,147,145,147,147,145,147,144,142,145,138,137,139,144,142, +145,140,139,141,139,138,140,142,141,143,144,142,146,148,147,149,157,156,158,157, +156,158,150,149,151,149,148,150,145,144,146,150,149,151,149,148,150,148,147,149, +141,140,142,151,150,155,148,147,149,136,135,137,147,145,147,142,141,145,140,139, +141,149,148,149,139,138,140,139,138,140,144,142,145,150,149,151,144,142,145,140, +139,141,142,141,143,141,140,142,148,146,148,140,139,141,140,139,141,148,146,148, +142,141,143,151,150,152,149,149,150,144,142,145,147,145,147,141,140,142,146,145, +147,139,138,140,137,136,138,134,132,136,169,168,171,139,138,140,138,137,139,147, +145,147,147,145,147,141,140,142,141,140,142,138,137,139,138,137,139,132,131,133, +140,139,141,145,144,146,144,142,146,148,147,149,153,151,154,154,154,155,67,49, +68,71,49,69,119,116,127,53,33,51,95,71,97,99,69,96,148,146,156,65,41,63,105,75, +101,153,150,160,51,49,51,66,63,66,32,46,43,189,189,116,30,29,45,45,42,60,44,42, +45,43,42,44,57,52,60,55,52,55,53,49,61,53,48,54,52,48,58,52,56,53,51,47,51,51, +47,51,51,47,62,51,48,51,51,48,57,51,48,51,39,47,39,168,166,171,168,167,168,39, +33,41,51,47,52,51,50,51,51,53,51,52,55,58,52,49,53,52,48,51,52,57,56,52,56,58, +52,56,59,38,37,41,39,38,38,39,38,50,40,45,39,40,38,44,41,43,44,27,40,38,171,170, +91,28,27,54,66,39,64,110,86,112,107,82,103,152,153,154,37,30,48,68,60,83,66,58, +75,100,101,103,53,36,53,83,62,81,75,59,72,110,110,113,107,75,103,107,76,103,153, +151,157,66,39,64,110,81,106,108,83,109,107,75,103,154,148,158,177,146,137,165, +138,129,181,148,141,181,148,141,162,135,126,101,140,45,83,156,7,76,152,11,63, +120,26,73,134,18,77,141,6,121,146,53,145,152,89,124,157,59,90,164,0,88,164,0,76, +150,0,83,158,0,76,151,0,77,152,1,74,139,13,73,138,14,58,124,18,62,128,15,70,138, +11,78,148,11,80,153,6,178,146,136,177,146,135,178,145,134,178,145,134,177,146, +136,177,147,138,177,146,134,176,144,132,176,144,132,169,140,128,157,134,119,125, +115,97,125,156,60,110,159,36,90,163,0,85,163,0,82,164,0,182,147,142,178,148,139, +177,144,133,176,137,126,178,134,125,73,145,0,80,147,0,81,150,0,74,145,0,88,162, +0,87,162,0,84,164,0,150,147,152,150,149,151,149,148,152,152,151,153,155,154,156, +154,151,154,154,152,155,151,150,152,151,150,151,151,150,151,154,152,155,139,138, +140,146,145,147,144,142,145,151,150,152,149,148,150,145,144,147,155,154,156,147, +145,147,156,155,157,150,149,151,149,148,150,151,150,152,145,144,146,151,150,152, +155,154,156,156,155,157,156,155,157,153,151,154,158,157,159,149,148,150,156,155, +157,145,144,146,148,147,149,144,142,145,141,140,142,150,149,151,150,150,152,148, +147,149,151,150,152,149,148,150,151,150,152,150,149,151,151,150,152,149,148,150, +151,150,152,155,154,156,151,150,152,154,153,155,155,154,156,149,148,150,147,145, +147,152,151,155,149,148,150,154,152,155,149,148,150,148,147,149,155,154,156,147, +145,147,154,152,155,150,149,151,149,148,150,154,152,155,154,152,155,140,139,141, +154,152,155,149,149,151,145,144,146,148,145,147,149,148,150,141,140,142,148,145, +147,149,148,150,149,148,150,157,156,158,150,149,151,153,151,154,157,156,158,143, +141,144,148,147,150,158,157,159,151,150,152,156,155,157,158,157,159,154,152,156, +145,144,146,154,152,155,145,144,147,149,148,150,149,148,150,145,144,146,144,142, +145,148,145,147,144,142,145,152,151,153,149,148,150,148,145,147,144,142,145,140, +139,141,146,145,147,141,140,142,144,142,145,148,146,148,144,142,145,144,142,145, +144,142,145,149,148,150,138,137,139,140,139,141,149,148,150,144,142,147,141,140, +142,140,139,141,148,145,147,144,142,146,150,149,151,149,148,150,142,141,143,141, +140,142,141,140,143,141,140,142,146,145,147,142,141,143,149,148,150,148,148,149, +146,145,148,154,152,156,153,151,154,104,102,107,110,108,115,119,120,126,88,62, +85,137,135,139,144,142,148,148,149,155,107,76,103,146,145,148,153,150,160,51,49, +51,66,63,66,32,33,53,189,188,115,30,35,42,45,56,50,44,42,57,47,44,52,56,52,56, +55,50,64,53,60,60,53,48,57,52,53,52,52,53,52,51,49,51,51,51,58,51,55,58,51,48, +51,51,48,51,51,55,51,42,36,48,170,168,171,170,171,170,42,57,46,51,52,61,51,51, +57,51,47,51,51,56,52,51,56,53,51,47,57,51,47,51,51,58,52,51,47,62,53,49,57,38, +37,43,39,36,38,40,38,40,40,40,54,41,39,40,27,25,40,166,165,88,28,44,40,66,39,64, +155,153,159,152,153,159,152,150,154,69,57,83,112,113,113,105,106,112,99,100,104, +90,64,86,122,123,124,114,111,119,110,107,112,153,154,155,153,152,158,153,151, +155,109,81,105,154,154,156,153,151,155,153,155,155,154,148,158,179,149,138,178, +148,138,178,148,138,178,148,138,178,148,139,180,148,140,180,148,140,182,147,142, +88,147,19,86,126,18,64,105,21,125,135,73,151,153,100,103,160,22,87,163,0,87,163, +0,88,164,0,78,154,0,78,153,0,77,149,3,82,152,6,75,143,12,63,134,12,58,113,26,74, +141,18,62,126,24,171,140,134,178,148,138,178,147,136,180,147,136,178,147,137, +178,147,136,177,146,134,160,132,118,123,112,91,170,141,129,138,121,105,137,120, +106,90,161,0,86,164,0,86,163,0,87,163,0,87,163,0,86,163,0,77,164,0,180,148,140, +177,143,132,176,136,123,178,133,123,78,136,9,83,146,0,74,142,0,85,157,0,87,161, +0,86,161,0,82,160,0,146,141,149,148,145,147,145,144,146,145,144,147,149,148,151, +151,150,152,154,152,155,151,150,152,152,151,155,149,148,150,148,147,149,142,141, +143,138,137,139,137,136,138,144,142,145,140,139,141,146,145,147,152,151,153,150, +149,151,151,150,152,145,143,146,146,145,147,151,150,153,152,151,153,150,149,152, +158,157,159,152,151,153,149,148,150,155,153,156,155,153,156,156,155,157,147,146, +149,142,141,145,150,149,150,150,149,151,138,137,139,145,144,146,148,147,149,149, +148,150,151,150,152,149,148,150,146,145,148,145,144,146,148,147,149,147,145,147, +145,144,147,148,147,149,147,145,147,150,149,151,147,145,147,154,152,155,146,145, +148,145,144,146,145,144,146,151,150,151,151,150,153,148,147,149,150,149,151,145, +144,146,148,147,149,152,151,153,149,148,150,149,148,151,148,147,149,145,144,146, +150,149,151,148,147,149,142,141,143,144,142,145,150,149,151,149,148,150,145,144, +146,154,152,155,149,148,150,154,153,155,155,154,156,154,151,155,154,151,155,150, +149,151,157,156,158,153,151,154,149,148,150,149,148,151,149,148,151,148,147,149, +148,147,149,154,152,155,147,145,147,141,140,142,144,142,145,141,140,142,150,149, +151,147,145,147,144,142,146,150,149,151,144,142,145,147,145,147,144,142,145,138, +137,139,141,141,142,137,136,138,140,139,141,140,139,141,141,140,142,142,141,143, +139,138,140,145,142,146,139,138,140,142,141,143,148,146,148,144,142,145,144,142, +145,142,141,143,147,145,147,147,145,147,142,141,143,142,141,143,151,150,152,152, +151,153,148,146,148,140,139,141,144,142,145,142,141,145,149,148,150,147,145,147, +145,144,146,148,147,149,147,145,147,40,28,39,42,25,41,80,58,77,55,36,54,58,43, +57,61,39,59,105,77,101,68,45,67,67,43,68,153,150,160,81,54,79,66,39,64,32,29,64, +189,189,114,30,44,42,45,64,61,44,48,43,47,46,47,56,57,56,55,50,60,53,49,59,53, +48,53,52,50,52,52,47,60,51,66,51,51,50,51,51,56,51,51,55,52,51,49,52,51,50,51, +50,45,54,42,36,43,42,35,41,50,44,59,51,47,51,51,47,51,51,47,51,51,55,53,51,50, +51,51,49,51,51,48,58,51,57,54,51,47,50,52,50,62,53,56,52,54,55,54,39,43,52,40, +43,39,41,39,54,28,26,44,155,157,85,29,32,55,66,39,64,70,44,68,66,39,67,108,78, +104,68,44,68,66,41,76,61,44,60,97,68,98,56,36,56,50,30,59,44,31,44,73,51,74,65, +39,64,66,39,64,109,78,105,69,46,74,68,43,66,67,42,66,65,57,65,154,148,158,180, +149,139,178,148,138,178,148,138,178,148,138,178,148,138,178,148,138,178,148,138, +178,148,139,175,140,131,152,135,93,133,145,72,148,151,97,156,153,107,100,160,12, +87,163,0,87,163,0,88,164,0,75,149,0,75,148,0,67,126,24,79,148,14,62,126,19,57, +112,26,67,126,25,72,145,16,172,139,134,166,138,130,168,140,130,178,148,138,178, +148,138,173,143,132,171,140,128,169,137,124,141,121,103,109,105,82,151,127,116, +84,156,7,81,151,11,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,82,164, +0,182,147,142,178,147,138,176,136,125,162,130,106,117,138,60,83,134,19,81,152,0, +86,159,0,86,160,0,85,157,0,78,153,0,143,139,144,141,140,142,145,144,146,140,139, +141,152,151,153,143,142,144,146,145,147,148,146,148,148,146,148,146,145,148,151, +150,153,145,143,146,139,138,140,139,138,140,144,142,145,145,143,146,131,129,132, +116,115,117,96,94,97,102,100,103,98,97,99,97,95,98,99,97,98,99,98,100,102,100, +103,104,102,105,99,99,101,102,100,103,102,100,103,102,99,103,116,115,117,131, +129,132,142,141,143,149,148,151,151,150,153,144,142,145,152,151,153,150,149,151, +148,146,148,155,153,156,149,148,150,146,145,147,146,145,148,152,151,153,147,145, +147,147,145,147,149,148,150,147,145,147,145,144,146,147,145,147,147,145,147,155, +155,156,138,137,139,147,146,148,146,145,148,145,143,146,140,139,141,146,143,147, +141,140,142,146,145,148,151,150,152,140,139,141,149,148,150,148,147,149,145,144, +147,149,148,150,148,147,149,144,142,147,139,138,140,142,141,143,142,141,143,146, +145,147,151,150,152,150,149,151,157,156,158,152,151,153,141,140,142,148,147,149, +148,147,149,148,147,149,151,150,152,147,145,147,147,145,147,147,145,147,150,150, +151,147,146,149,151,150,152,147,147,150,142,141,143,143,142,144,142,141,143,145, +143,146,150,149,151,147,145,147,142,141,143,144,142,145,145,144,147,148,146,147, +138,137,139,135,133,136,144,143,145,144,143,145,136,133,137,147,146,148,149,147, +149,143,142,147,140,139,141,140,139,141,141,140,142,140,139,141,141,140,142,138, +138,139,149,148,150,145,144,146,145,144,147,150,149,151,137,136,138,140,139,141, +151,150,152,143,142,144,143,142,144,147,146,149,146,143,146,143,142,144,144,142, +146,152,151,155,149,148,150,148,147,149,69,50,67,73,52,71,120,118,125,54,37,59, +98,73,95,102,74,99,149,147,154,67,46,73,111,87,111,110,81,106,155,152,160,66,39, +64,32,29,51,189,188,115,30,29,50,45,43,45,44,55,51,49,45,52,56,52,56,55,50,55, +53,60,54,53,48,54,52,48,53,52,50,51,51,50,51,51,49,51,51,51,51,51,51,50,51,67, +56,51,46,51,51,56,51,51,46,51,51,64,52,51,61,51,51,47,51,51,56,51,51,48,56,51, +47,60,51,48,53,51,47,51,51,52,51,51,47,58,51,55,63,52,48,52,52,51,52,53,54,53, +53,57,58,40,39,40,41,47,49,28,44,48,161,160,86,29,36,45,66,39,64,113,84,109,110, +87,106,153,154,155,67,47,67,108,86,105,103,75,102,139,137,141,55,38,55,84,66,82, +77,55,76,112,110,114,110,87,106,110,80,106,154,152,156,68,46,73,112,85,114,111, +83,111,110,81,113,154,148,158,181,148,139,178,148,139,178,148,138,178,148,138, +178,148,138,178,148,138,178,148,138,178,148,138,177,144,133,177,138,128,163,144, +115,150,145,104,151,147,106,100,160,14,87,163,0,87,163,0,82,157,0,75,148,0,82, +157,0,88,164,0,76,149,0,74,149,0,86,161,0,74,141,18,76,132,23,180,148,140,178, +148,138,178,148,138,162,135,126,156,131,119,155,129,116,165,133,118,164,132,118, +140,117,104,78,141,17,69,134,21,77,144,16,87,163,0,74,139,19,78,146,15,87,163,0, +87,163,0,87,163,0,87,163,0,86,163,0,77,164,0,180,148,140,176,139,127,176,131, +119,172,133,113,111,139,54,82,152,0,86,158,0,85,159,0,84,155,0,75,148,0,148,145, +151,150,149,151,145,144,146,152,151,153,101,104,103,100,99,101,103,100,102,104, +102,102,102,105,104,99,95,98,104,101,103,98,97,98,146,144,147,148,146,148,142, +141,143,150,149,151,116,115,117,106,104,107,104,102,105,103,101,104,99,98,100, +103,99,100,100,99,101,100,98,99,100,98,99,105,101,106,104,102,105,108,105,109, +107,105,108,111,109,112,108,106,109,116,115,117,146,145,148,155,154,156,148,147, +149,153,152,153,103,100,102,103,100,103,102,99,101,104,108,108,104,101,104,110, +110,112,104,108,108,104,108,108,150,149,151,154,152,155,155,154,156,151,150,152, +152,151,153,144,142,145,142,141,143,150,149,151,102,99,102,104,108,106,105,109, +109,103,106,105,104,101,104,104,101,104,101,100,101,101,104,103,158,157,159,149, +148,150,155,154,156,144,142,145,139,138,140,149,148,150,149,148,150,147,146,148, +102,99,102,104,108,105,105,102,104,105,102,104,102,99,101,104,102,104,103,100, +102,103,107,107,156,153,157,152,151,153,147,145,147,151,151,155,150,149,151,149, +148,150,156,155,157,156,153,158,103,100,102,103,100,103,106,105,108,105,102,104, +103,100,102,105,105,107,103,101,101,103,103,104,150,149,151,152,151,153,148,147, +149,152,151,153,149,148,150,148,147,149,146,145,147,141,140,142,99,98,100,103, +105,104,104,108,106,105,102,104,110,110,112,105,104,105,103,105,104,98,96,96, +149,146,150,148,146,148,149,148,150,149,148,150,144,142,145,151,150,152,151,150, +152,151,150,152,102,99,102,102,101,102,106,105,109,104,101,103,103,100,102,103, +100,102,100,98,98,101,104,103,147,146,149,148,147,149,157,156,158,156,155,157, +67,47,65,71,52,72,119,120,121,53,29,51,95,68,92,99,74,100,148,149,150,65,37,63, +109,88,105,107,76,103,154,153,156,66,39,64,32,29,43,189,188,115,30,28,43,45,44, +47,45,49,45,50,55,56,56,66,56,55,49,55,53,70,53,53,48,54,52,48,61,52,48,71,51, +47,51,51,57,51,51,51,64,51,48,71,51,46,50,51,48,51,51,47,51,51,49,59,51,60,56, +51,46,56,51,47,51,51,50,51,51,47,65,51,52,54,51,48,51,51,47,57,51,49,51,51,52, +52,51,48,52,52,49,52,52,54,52,53,49,57,55,58,60,40,46,40,41,44,44,28,27,48,155, +153,84,29,26,41,66,39,64,110,83,113,107,75,103,152,150,156,65,38,74,106,77,102, +100,70,103,137,135,143,53,31,61,83,59,80,74,51,77,110,107,116,107,82,105,107,75, +110,153,151,155,66,42,69,110,79,108,108,86,105,107,75,105,154,148,158,107,160, +30,181,148,141,179,148,139,178,148,139,178,148,139,178,148,138,178,148,138,178, +148,138,178,146,136,177,145,135,171,147,130,156,145,115,155,145,109,106,159,24, +86,163,0,87,163,0,85,160,0,77,154,0,88,164,0,81,152,11,72,145,3,78,154,0,87,164, +0,70,145,16,182,147,142,178,148,139,178,148,138,178,148,138,175,146,137,137,118, +102,144,123,103,170,137,120,138,143,78,84,147,12,69,132,22,69,131,22,70,132,22, +79,148,13,81,151,11,86,160,3,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,81, +164,0,181,148,141,176,138,127,175,129,117,163,130,108,121,142,64,84,156,0,86, +158,0,86,160,0,84,155,0,74,147,0,142,139,144,141,140,142,146,145,147,101,98,100, +51,89,115,53,89,113,53,88,113,54,89,115,54,89,115,53,88,113,53,89,113,51,90,115, +101,104,103,146,145,147,142,141,143,145,143,147,103,100,104,104,102,105,134,132, +134,131,130,132,126,125,127,125,124,126,130,127,130,125,124,127,122,121,123,126, +125,130,130,130,132,133,132,134,136,134,137,142,141,142,105,104,106,107,105,108, +148,146,148,149,148,151,151,150,152,103,100,102,78,88,118,78,87,116,78,87,116, +80,87,117,80,87,117,79,85,115,80,85,114,79,85,117,103,102,104,151,150,152,154, +151,155,148,147,149,147,145,147,142,141,143,146,145,147,100,99,101,44,73,99,46, +72,98,46,72,98,48,73,100,48,74,100,46,72,98,46,73,98,43,73,99,103,107,107,148, +146,148,147,145,147,142,141,143,138,137,138,142,141,143,145,143,147,99,97,97,51, +90,115,53,89,113,53,89,113,54,90,115,54,90,115,53,89,113,53,89,113,52,88,115, +104,108,108,152,151,153,148,147,149,151,150,152,147,145,147,149,148,150,154,152, +155,103,103,106,40,71,93,40,70,89,42,70,92,47,80,103,54,90,117,51,87,113,57,95, +123,58,100,132,104,108,108,148,146,148,147,145,147,146,145,148,152,151,153,147, +145,147,149,146,148,100,99,101,51,89,116,53,87,113,53,87,113,54,89,115,54,89, +115,53,87,113,53,87,113,51,90,115,101,98,100,145,143,146,141,140,143,142,141, +143,151,150,152,150,149,151,153,151,153,103,102,103,51,90,116,54,89,115,54,89, +114,55,90,116,55,90,116,54,89,115,54,89,115,54,90,117,103,107,107,153,152,156, +148,147,149,154,153,155,104,102,111,110,108,117,119,116,121,88,63,85,137,135, +143,144,142,150,148,146,150,107,77,103,153,152,159,152,151,154,154,151,158,66, +39,64,32,34,51,189,188,115,30,29,43,45,56,45,44,43,44,52,62,52,57,55,56,56,50, +55,54,49,53,54,51,62,52,48,52,52,48,53,51,47,51,51,47,51,51,63,55,51,47,50,51, +57,55,51,51,55,51,47,51,51,47,51,51,46,58,51,55,51,51,47,57,51,47,51,51,56,60, +51,47,51,51,47,52,51,47,52,51,47,58,51,47,51,51,47,51,52,57,52,52,50,53,53,49, +59,55,49,53,40,44,45,41,40,51,28,25,52,157,155,84,29,33,47,66,39,64,155,152,159, +152,150,154,152,150,154,107,77,103,149,147,154,144,142,148,137,135,139,90,64,86, +122,120,126,114,112,118,110,107,112,153,151,159,153,151,155,153,151,157,109,78, +105,154,155,156,153,152,160,153,151,155,154,148,158,88,163,0,123,158,61,157,154, +108,160,153,113,165,150,121,180,148,140,178,148,139,178,148,138,178,148,138,178, +148,138,174,149,133,169,151,127,168,151,125,135,154,81,91,162,0,87,163,0,87,163, +0,86,160,3,81,152,11,76,146,11,68,143,3,60,119,25,71,149,13,182,147,142,178,148, +139,178,148,138,178,148,138,178,148,139,175,144,131,168,136,124,157,126,109,160, +145,108,96,148,20,80,152,11,81,151,11,70,132,22,80,149,12,73,138,19,76,143,17, +87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,81,164,0,181,148,141,176, +137,126,177,130,117,137,125,91,122,143,66,87,157,0,86,159,0,86,161,0,84,157,0, +74,148,0,142,139,144,145,143,146,142,141,143,104,103,104,53,89,113,87,142,183, +87,142,182,56,88,112,56,88,112,87,142,182,87,142,183,53,89,113,103,99,102,143, +142,144,142,141,143,143,142,144,98,97,99,98,97,99,138,137,139,134,132,135,69,62, +52,71,65,56,71,65,56,71,65,56,72,65,56,71,65,56,71,65,56,68,63,52,138,138,140, +141,140,142,101,98,99,103,101,104,153,152,156,156,155,157,156,155,157,104,101, +103,78,87,116,127,137,186,126,137,185,80,86,114,80,86,114,126,137,185,127,137, +186,79,86,115,101,99,99,152,151,153,151,150,152,148,147,149,150,149,151,156,155, +157,152,151,153,105,104,105,47,72,98,84,116,158,84,116,158,50,74,98,50,74,98,84, +116,158,84,116,158,46,73,98,104,101,103,145,143,146,145,144,146,142,141,143,151, +150,153,149,148,149,146,145,148,106,105,109,53,89,113,87,142,183,87,142,182,56, +88,112,56,88,112,87,142,182,87,142,183,54,87,113,105,104,108,156,155,157,150, +149,151,153,151,154,156,155,157,150,149,151,158,157,159,104,107,107,39,65,86,65, +109,142,72,119,155,49,78,100,52,83,105,74,120,150,90,142,170,61,100,130,109,111, +111,150,149,151,150,149,151,147,145,147,152,151,153,141,141,142,145,143,147,103, +105,104,59,96,125,87,143,183,87,142,182,56,88,112,56,88,112,87,142,182,87,142, +183,53,89,113,105,102,104,149,147,149,146,145,147,142,141,143,144,142,145,148, +147,149,151,149,151,111,111,113,41,73,91,68,120,149,68,120,149,46,75,92,46,75, +92,68,120,149,68,120,149,41,73,92,108,111,111,148,146,148,140,139,141,157,156, +158,40,23,40,43,23,41,80,65,81,55,49,54,58,36,58,61,36,59,105,86,106,68,61,67, +67,56,69,66,52,71,110,78,106,66,39,64,32,30,43,189,189,115,30,35,44,45,43,45,44, +43,50,43,41,42,42,39,60,41,53,39,40,38,61,38,37,37,53,48,52,52,58,57,51,51,51, +51,47,52,51,47,55,51,47,50,51,47,56,51,48,61,51,47,55,51,53,51,51,55,56,51,59, +51,51,49,60,51,63,51,51,47,52,51,55,56,51,54,64,51,58,57,51,47,56,51,57,57,51, +47,51,52,59,58,52,48,52,53,51,53,55,49,53,40,38,43,41,41,48,27,25,41,162,162,86, +28,26,50,66,39,64,70,56,68,66,39,64,108,77,104,68,45,67,66,41,66,61,41,59,97,68, +93,56,37,55,50,30,50,44,28,43,73,51,71,65,46,64,66,46,64,109,81,105,69,45,68,68, +51,67,67,42,67,66,39,64,154,148,158,85,165,0,85,163,0,83,164,0,90,163,0,100,160, +14,101,161,20,180,148,140,178,148,138,178,148,138,178,148,138,176,149,134,172, +150,131,171,150,127,164,146,122,95,159,13,97,163,1,98,162,1,85,160,3,79,152,11, +69,147,0,80,158,0,81,164,0,182,147,142,178,148,139,178,148,138,178,148,138,178, +148,138,177,145,133,174,140,127,171,137,119,145,122,99,105,149,37,75,144,17,83, +156,7,87,163,0,87,163,0,83,156,7,69,130,23,80,151,11,87,163,0,87,163,0,87,163,0, +87,163,0,87,163,0,87,163,0,71,143,17,153,130,118,176,136,125,149,126,94,133,125, +89,119,144,60,88,159,0,86,160,0,86,161,0,84,157,0,75,148,0,137,134,140,139,138, +140,139,138,141,102,99,101,53,87,112,86,140,181,93,147,188,56,87,112,56,87,112, +93,147,188,86,140,181,53,88,112,102,99,102,151,150,152,152,151,153,151,150,152, +97,94,98,101,100,102,139,139,141,72,66,56,90,84,73,103,95,82,103,95,82,103,95, +82,103,95,82,103,95,82,103,94,82,90,84,73,71,67,55,148,147,149,96,97,98,103,101, +104,149,148,150,150,149,151,155,152,156,105,109,109,79,85,114,126,135,183,133, +142,191,81,85,113,81,85,113,133,142,191,126,135,183,79,85,114,103,107,105,149, +148,150,153,151,154,156,155,157,155,154,156,148,147,150,153,152,154,106,110,110, +47,72,97,83,115,157,89,121,162,49,73,97,49,73,97,89,121,162,83,115,157,46,73,97, +105,109,109,150,149,151,147,145,147,154,152,155,151,150,152,148,147,149,146,145, +148,104,100,103,53,88,112,86,140,181,93,147,188,56,87,112,56,87,112,93,147,188, +86,140,181,54,87,112,105,104,108,155,153,156,150,149,151,150,149,151,155,154, +156,150,149,151,159,158,160,108,111,111,40,66,85,70,115,150,76,121,158,54,85, +109,56,87,112,77,123,158,76,124,154,55,90,116,109,111,111,157,156,158,150,149, +151,151,150,152,154,152,155,149,148,150,152,151,153,104,107,105,66,110,141,95, +153,187,94,148,188,56,87,112,56,87,112,93,147,188,86,141,181,53,88,112,102,105, +104,151,150,152,141,140,142,137,136,138,149,148,150,147,145,147,147,146,149,110, +110,112,41,74,92,68,119,149,73,124,153,46,75,92,46,75,92,73,124,153,68,119,149, +42,73,92,109,112,112,150,149,151,151,150,152,155,154,156,69,50,69,74,52,77,120, +119,125,54,35,55,98,73,98,102,74,107,149,148,154,67,44,68,111,85,108,110,80,108, +155,152,157,66,39,64,32,29,61,189,189,115,30,40,47,45,43,56,44,61,45,43,58,47, +42,39,50,41,38,39,39,38,38,54,61,54,52,48,53,52,48,52,51,48,51,51,47,51,51,52, +54,51,47,69,51,47,59,51,53,52,51,47,59,51,47,52,51,49,51,51,56,51,51,47,52,51, +47,59,51,47,66,51,50,54,51,47,58,51,50,52,51,47,52,51,48,52,51,48,63,52,48,52, +52,48,52,53,61,53,55,49,63,40,50,49,41,49,42,27,38,41,161,163,85,28,26,50,66,39, +64,113,84,114,110,82,106,153,151,158,67,45,69,108,80,105,103,75,99,139,137,143, +55,37,57,84,62,82,77,55,74,112,110,117,110,83,106,110,80,111,154,152,156,68,43, +69,112,90,109,111,83,108,110,87,106,154,148,158,84,164,0,87,163,0,87,163,0,87, +163,0,85,163,0,119,158,53,180,148,141,178,148,138,178,148,138,178,148,138,178, +148,137,175,149,134,172,150,131,166,146,125,176,144,136,138,157,82,139,156,85, +122,158,61,152,155,103,120,154,61,100,160,17,134,156,78,180,148,140,178,148,138, +178,148,138,177,147,137,178,147,137,175,141,129,171,138,121,173,135,121,108,146, +41,86,160,3,70,132,22,76,143,17,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87, +163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,77,157,7,170,139,130,176,135, +123,177,134,122,129,133,86,98,157,5,86,159,0,86,160,0,86,163,0,84,156,0,74,146, +0,143,140,144,142,141,146,142,141,143,96,95,97,54,88,113,87,142,181,93,148,188, +56,88,112,56,88,112,93,148,188,87,142,181,53,89,113,102,99,101,142,141,143,147, +145,147,151,150,152,102,100,103,100,99,101,147,145,149,79,72,62,80,74,66,79,73, +66,79,73,66,79,73,66,79,73,66,79,73,66,79,73,66,80,75,66,78,71,61,157,155,158, +103,101,104,99,98,100,149,148,150,156,155,158,155,152,156,105,109,109,80,85,114, +126,137,184,132,143,191,80,86,114,80,86,114,132,143,191,126,137,184,79,85,115, +103,107,105,149,148,150,156,155,157,149,148,150,148,147,150,149,148,150,149,148, +150,108,111,111,47,72,98,84,116,157,89,122,162,50,73,98,50,73,98,89,122,162,84, +116,157,46,73,98,105,102,104,147,146,150,149,148,150,142,141,143,142,141,143, +148,146,147,150,149,152,104,101,103,53,89,113,87,142,181,93,148,188,56,88,112, +56,88,112,93,148,188,87,142,181,54,87,113,108,110,110,155,153,156,151,150,152, +153,153,154,158,156,159,154,153,155,158,157,159,105,109,109,41,67,88,70,115,148, +82,131,168,56,88,112,56,88,112,82,130,168,66,109,141,45,74,97,105,109,109,152, +151,153,157,156,158,150,149,151,148,147,149,151,150,152,145,143,146,100,98,98, +71,119,153,110,169,197,103,158,194,56,88,113,56,88,112,93,147,188,87,141,181,53, +89,112,105,102,104,148,146,148,141,140,142,152,151,153,148,147,149,144,142,145, +143,142,146,105,102,105,42,74,91,68,119,149,74,124,153,46,75,93,46,75,93,74,124, +153,68,119,149,42,74,92,108,111,111,155,153,156,150,149,151,156,155,157,67,47, +67,72,52,72,119,116,121,53,30,54,95,68,95,99,73,99,148,146,150,65,38,67,109,79, +105,107,75,108,154,151,156,66,39,64,32,29,44,189,188,115,30,33,47,45,44,48,44, +45,54,43,42,46,57,52,56,56,53,70,54,49,57,53,52,59,52,48,52,52,48,52,51,47,51, +51,47,60,51,47,50,51,47,67,51,47,51,51,49,52,51,47,58,51,52,62,51,47,52,51,47, +51,51,53,51,51,47,51,51,49,51,51,47,55,51,47,58,51,52,52,51,47,52,51,47,56,51, +47,52,52,53,52,52,54,61,53,49,54,55,49,53,40,45,39,41,43,41,27,26,41,161,161,86, +28,73,41,66,39,64,110,84,107,107,75,103,152,150,154,65,38,63,106,83,107,100,70, +98,137,135,141,53,31,52,83,64,83,74,51,73,110,108,115,107,79,106,107,75,107,153, +153,155,66,39,64,110,83,113,108,91,105,107,78,103,154,148,158,84,164,0,87,163,0, +87,163,0,87,163,0,87,163,0,96,163,0,164,151,117,180,148,140,178,148,139,178,148, +138,178,148,138,178,148,137,176,149,134,174,149,133,168,140,131,179,148,140,179, +148,140,163,151,118,179,148,138,170,151,129,142,155,88,180,148,141,178,147,137, +177,146,134,178,146,137,177,146,134,176,144,133,174,140,125,172,137,120,129,147, +60,83,151,11,74,138,19,84,158,5,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87, +163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,86,163,0,78,164,0,180,146, +137,176,136,125,162,133,110,138,143,86,83,160,0,86,161,0,86,161,0,85,160,0,84, +156,0,74,146,0,152,154,157,141,139,141,150,149,151,96,95,97,55,87,114,55,84,108, +54,83,108,57,87,113,57,87,113,54,83,108,55,84,108,54,89,114,103,100,102,132,131, +133,142,141,143,151,150,152,105,102,106,99,97,98,141,140,141,79,73,63,90,84,73, +108,101,87,108,101,87,108,102,87,108,102,87,108,102,87,108,102,87,90,84,73,79, +72,62,150,149,151,104,103,105,104,103,105,152,151,153,163,160,162,152,151,153, +103,102,103,81,85,114,78,82,109,78,81,109,82,85,114,82,85,114,78,81,109,78,82, +109,81,84,115,101,99,99,152,151,153,150,149,151,144,141,145,148,147,150,150,149, +151,157,156,158,104,108,108,48,72,96,48,71,92,48,70,92,51,73,96,51,73,96,48,70, +92,48,71,92,47,73,96,103,100,102,143,142,144,150,149,151,141,140,142,138,137, +139,137,136,139,143,142,144,102,99,101,54,90,115,55,84,108,54,83,108,57,87,113, +57,87,113,54,83,108,55,84,108,55,86,113,104,108,108,155,153,156,149,148,151,154, +153,155,160,159,161,158,157,159,154,152,155,104,108,108,41,65,87,44,69,89,54,83, +108,57,87,113,57,87,113,52,81,105,40,63,82,40,66,87,102,105,103,152,151,153,157, +156,158,153,151,154,150,149,151,146,144,146,148,145,147,101,104,103,74,119,157, +74,113,146,68,105,136,63,96,125,57,87,114,54,83,108,55,84,108,54,89,114,103,100, +102,142,141,143,147,144,146,148,147,149,149,148,149,142,141,145,141,140,142,101, +99,99,43,74,93,46,73,90,45,72,89,47,75,93,47,75,93,45,72,89,46,73,90,43,74,93, +103,107,108,155,153,156,147,146,148,151,150,152,104,102,107,110,108,113,119,116, +121,88,63,85,137,135,139,144,142,146,148,146,150,107,77,103,153,153,158,152,150, +154,154,154,156,66,39,64,32,29,56,189,189,115,30,28,44,45,49,48,44,48,49,43,51, +56,57,52,68,55,50,55,53,49,53,53,59,59,52,49,57,52,59,53,51,48,58,51,47,52,51, +51,51,51,47,50,51,47,55,51,51,60,50,58,54,42,36,46,42,39,53,50,46,49,51,56,58, +51,47,56,51,48,51,51,49,58,51,47,52,51,51,51,51,52,59,51,47,58,51,47,60,52,48, +53,52,52,67,53,55,53,55,49,53,40,43,39,41,40,51,27,26,51,163,162,87,28,26,40,66, +39,64,155,156,157,152,150,156,152,151,156,107,76,106,149,149,156,144,142,146, +137,135,143,90,63,89,122,122,128,114,112,116,110,108,117,153,151,157,153,152, +155,153,153,159,109,78,105,154,152,156,153,151,160,153,150,161,154,148,158,84, +164,0,87,163,0,87,163,0,87,163,0,87,163,0,86,163,0,107,160,29,157,154,108,172, +150,129,178,148,139,178,148,138,178,148,138,177,148,138,177,147,136,168,139,130, +176,146,137,178,148,138,178,148,139,180,148,138,178,147,137,178,146,135,176,145, +134,175,144,129,175,141,129,175,141,129,174,141,128,172,139,123,171,137,120,173, +136,120,103,155,11,89,148,11,91,162,0,87,163,0,87,163,0,87,163,0,87,163,0,87, +163,0,87,163,0,84,158,5,87,163,0,74,139,19,78,146,15,87,163,0,65,125,25,61,125, +25,182,147,142,178,146,137,176,139,129,179,139,130,133,152,73,84,162,0,87,162,0, +88,164,0,84,160,0,82,154,0,74,145,0,148,150,153,146,150,151,148,145,147,95,94, +94,53,86,112,86,141,181,92,147,187,55,86,111,55,86,111,92,147,187,86,141,181,52, +88,112,102,99,101,139,138,140,138,137,139,149,148,151,103,101,105,93,95,93,144, +143,145,81,74,64,90,84,73,111,103,88,111,103,88,111,103,88,111,103,88,111,103, +88,111,103,88,90,84,73,80,74,63,157,155,158,98,96,97,106,104,107,157,156,158, +150,149,151,157,156,158,104,108,108,79,83,113,125,136,184,131,142,190,80,84,112, +80,84,112,131,142,190,125,136,183,79,82,113,103,107,107,151,150,152,156,155,157, +148,147,149,150,149,151,148,147,150,153,152,154,109,108,111,46,71,94,83,115,155, +88,121,161,47,72,98,47,72,98,88,121,161,83,115,155,44,72,98,105,105,108,143,142, +144,149,148,150,147,144,146,141,140,142,139,138,140,140,139,141,103,100,102,55, +94,120,86,141,180,92,147,187,55,86,111,55,86,111,92,147,187,85,141,180,53,85, +112,108,110,110,152,151,152,149,148,150,157,156,158,153,151,154,150,149,151,159, +158,160,107,110,110,41,68,90,75,125,160,92,147,187,55,86,111,55,86,111,92,147, +187,67,111,144,40,68,91,111,110,113,155,153,156,151,150,152,154,153,155,150,150, +151,146,144,146,151,150,152,102,99,102,71,117,154,118,182,204,124,182,207,69, +108,140,61,95,123,92,146,187,86,141,180,52,88,112,104,101,103,143,142,144,142, +142,143,147,146,148,144,142,146,148,147,149,143,143,144,103,106,105,41,73,92,67, +119,149,72,123,153,45,74,92,45,74,92,72,123,153,67,119,149,42,73,91,104,107,108, +151,150,153,145,141,144,154,152,155,40,23,41,43,23,45,80,61,80,55,35,54,58,36, +60,61,36,65,105,81,105,68,44,67,67,43,68,66,48,64,110,89,106,66,39,64,32,29,48, +189,188,115,30,30,49,45,45,45,44,50,45,43,45,54,57,52,68,55,60,55,53,50,59,53, +50,56,52,51,53,52,58,52,51,52,54,51,56,51,51,48,51,51,47,59,51,47,52,51,52,62, +42,42,57,170,169,172,170,168,170,42,37,41,51,52,51,51,48,51,51,65,52,51,48,55, +51,48,51,51,58,51,51,47,55,51,49,57,51,47,52,52,49,53,52,48,55,53,49,58,55,55, +70,40,41,40,41,39,43,27,33,40,165,163,87,28,26,47,66,39,64,70,44,81,66,39,66, +108,78,104,68,60,72,66,41,64,61,43,59,97,68,95,56,49,59,50,30,48,45,31,43,74,51, +72,65,39,64,66,43,64,109,81,110,69,51,68,68,43,67,66,48,66,154,148,158,85,165,0, +87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,86,163,0,89,163,0,127,157, +64,173,150,131,178,148,139,178,148,138,178,148,138,177,147,137,168,139,130,172, +143,133,178,148,138,177,147,137,177,146,134,176,144,132,175,141,129,175,141,128, +175,141,128,175,141,128,174,141,128,174,140,127,174,140,127,171,138,121,141,135, +84,97,141,26,87,145,13,77,140,18,82,153,9,87,163,0,87,163,0,87,163,0,80,151,11, +67,127,24,72,137,20,87,163,0,81,151,11,78,146,15,78,148,13,75,157,7,172,141,134, +178,148,139,178,147,136,178,142,132,149,150,95,91,154,6,82,157,0,88,164,0,78, +153,0,73,148,0,82,151,0,73,142,0,144,141,145,148,147,150,148,147,149,102,101, +102,52,85,110,85,139,179,92,144,186,55,85,109,55,85,109,92,144,186,85,138,179, +52,87,110,102,104,103,144,143,145,143,142,144,147,144,147,104,102,105,100,99, +101,150,148,151,80,74,63,90,84,73,111,103,88,111,103,88,111,103,88,111,103,88, +111,103,88,65,55,43,66,56,44,81,74,64,157,155,158,103,101,104,104,102,105,147, +146,148,151,150,152,153,151,154,106,108,108,77,83,112,124,134,182,132,139,188, +79,83,111,79,83,111,132,139,188,124,134,182,77,83,112,102,101,102,155,153,156, +155,154,156,150,149,151,152,151,153,142,141,143,151,150,152,101,104,103,44,71, +94,82,113,154,88,119,160,47,72,94,47,72,94,88,119,160,82,113,154,44,72,94,102, +99,101,143,142,143,141,140,143,142,141,143,149,148,150,141,140,142,147,144,147, +102,101,101,70,118,149,91,146,183,92,144,186,55,85,110,55,85,110,92,144,186,85, +139,179,51,85,110,109,108,111,150,149,151,142,141,143,151,150,151,154,152,155, +148,147,149,158,157,159,112,111,114,43,73,94,85,139,179,92,144,185,55,85,110,55, +85,110,92,144,185,79,130,167,47,79,103,112,112,114,158,157,159,158,157,159,154, +153,155,154,151,155,149,148,151,152,151,153,101,104,103,71,115,151,117,181,203, +122,184,207,74,113,149,69,106,139,99,155,191,85,140,178,52,84,110,102,104,103, +140,139,141,146,143,146,139,138,141,135,135,136,146,142,146,149,148,150,102,104, +104,41,72,90,67,116,147,70,122,151,45,73,90,45,73,90,70,122,151,67,116,147,41, +72,90,101,104,103,153,152,154,149,148,150,151,150,152,69,51,70,74,55,73,120,121, +128,54,40,53,98,74,100,102,78,102,149,150,156,67,50,65,111,83,108,110,80,106, +155,152,161,66,39,64,32,35,57,189,188,115,30,28,42,45,43,51,44,43,44,43,42,61, +41,55,39,56,56,63,53,53,53,53,55,60,52,49,52,52,57,52,51,48,51,51,48,51,51,51, +57,51,48,52,51,48,52,51,49,56,39,40,50,168,166,168,168,166,168,39,48,39,51,52, +51,51,48,54,51,54,61,51,55,61,51,48,52,51,48,51,51,48,52,51,55,62,51,51,59,52, +49,56,52,48,63,53,60,53,55,49,53,40,39,50,41,43,43,27,26,40,158,156,84,28,40,39, +66,39,64,113,84,109,110,83,106,153,151,155,67,42,66,108,81,105,103,75,99,139, +137,141,55,34,54,84,62,82,77,55,74,113,110,115,110,84,111,110,85,106,154,154, +161,68,43,66,112,84,109,154,148,158,87,167,0,87,164,0,87,163,0,86,160,0,84,156, +0,85,159,0,87,163,0,87,163,0,87,163,0,87,163,0,90,164,0,122,158,53,170,150,131, +179,148,140,178,148,138,178,148,138,168,140,130,173,144,134,175,144,133,178,146, +136,176,145,133,176,144,132,176,145,132,176,145,133,177,146,134,178,146,137,178, +146,136,178,146,137,177,145,133,174,140,127,157,135,115,119,136,67,90,161,0,72, +146,15,73,146,15,78,148,13,84,158,5,84,158,5,83,156,7,77,145,15,78,146,14,64, +122,26,82,164,0,75,152,11,72,152,11,182,147,142,178,148,139,178,148,138,178,146, +136,179,144,136,93,162,1,75,151,0,81,157,0,88,164,0,71,146,0,76,149,0,78,145,0, +74,141,0,138,135,139,140,139,141,142,141,143,95,91,92,53,86,111,86,139,181,86, +139,180,55,85,110,55,85,110,86,139,180,86,139,181,52,86,111,101,98,100,138,137, +139,129,128,130,134,133,135,100,99,101,99,98,100,145,144,146,81,74,64,90,84,73, +111,103,88,111,103,88,111,103,88,111,103,88,111,103,88,64,55,43,65,55,43,81,74, +64,150,148,150,103,100,104,104,102,105,149,148,150,150,149,151,151,150,152,100, +98,98,78,81,112,124,134,181,123,134,181,79,83,111,79,83,111,125,134,182,125,134, +182,79,82,112,106,105,108,155,153,156,148,147,150,146,145,147,149,149,151,144, +141,143,142,141,144,101,99,99,44,70,95,81,113,153,83,113,154,48,72,95,48,72,95, +83,113,154,83,113,154,44,71,95,103,100,103,136,134,137,137,136,138,132,131,136, +138,137,139,141,140,142,141,140,142,96,95,98,57,92,119,115,179,202,90,147,182, +55,85,110,55,85,110,84,139,178,85,139,178,52,84,111,100,98,98,149,148,150,139, +138,140,142,141,145,141,140,142,144,141,143,151,150,152,110,109,111,51,84,111, +85,139,178,84,139,178,55,85,111,55,85,109,84,139,178,85,139,178,51,84,110,101, +99,99,150,148,150,159,158,160,147,146,148,150,150,151,145,144,146,147,145,147, +99,102,101,70,115,151,118,181,204,118,181,204,74,116,150,73,115,147,108,168,196, +95,151,186,51,84,111,101,103,102,144,143,147,135,133,136,135,133,136,142,141, +143,135,133,136,139,138,141,101,98,101,40,74,91,67,116,148,67,116,148,44,73,91, +44,73,91,67,116,148,67,116,148,40,73,91,102,99,101,150,149,151,145,144,146,146, +145,147,67,51,65,72,52,69,119,117,123,53,34,55,95,74,92,100,74,96,148,146,152, +65,42,68,109,79,114,107,75,103,154,152,156,66,39,64,32,29,44,189,189,115,30,28, +44,45,58,45,44,49,48,43,42,43,42,54,44,56,50,71,53,58,53,53,53,56,52,49,61,52, +51,52,51,48,51,51,60,61,51,54,57,51,52,51,51,51,51,51,52,56,39,33,39,168,166, +170,168,166,169,39,49,45,51,47,51,51,56,51,51,52,51,51,57,52,51,47,51,51,55,57, +51,48,52,51,56,52,51,52,52,52,49,53,52,59,53,53,49,61,55,49,58,40,43,40,41,39, +49,27,45,40,166,165,88,28,28,56,66,39,64,110,80,107,107,75,109,152,150,156,65, +41,63,106,77,107,100,70,100,137,138,139,53,33,52,83,59,83,74,51,74,110,111,112, +107,82,103,107,76,107,153,151,158,66,43,64,154,148,158,85,166,0,87,164,0,87,163, +0,86,163,0,82,154,0,78,145,0,82,154,0,87,164,0,87,163,0,87,163,0,87,163,0,87, +163,0,85,164,0,106,161,28,150,155,100,181,148,141,175,144,136,173,144,135,178, +148,138,173,144,134,168,139,128,173,142,132,178,147,136,178,147,136,180,148,137, +178,148,138,178,148,138,178,148,138,178,148,138,178,148,138,178,149,139,177,147, +138,178,147,139,182,148,139,180,148,141,182,147,142,69,145,16,70,141,18,63,127, +24,69,139,19,81,164,0,74,149,13,59,122,26,182,147,142,177,146,138,176,146,137, +178,148,139,178,148,138,178,148,139,180,146,138,182,146,140,69,150,0,76,151,0, +76,151,0,73,148,0,74,149,0,84,157,0,76,141,0,72,138,0,138,139,143,137,136,139, +144,142,144,99,95,99,43,82,110,44,79,107,44,79,107,44,81,109,44,81,109,44,79, +107,44,79,107,44,83,110,100,97,100,142,141,143,141,140,143,137,136,138,100,97, +98,104,100,105,152,151,153,80,73,63,90,84,73,111,103,88,111,103,88,111,103,88, +111,103,88,111,103,88,111,103,89,90,84,73,80,73,63,155,154,158,99,97,97,104,102, +105,141,140,142,142,140,142,152,151,153,103,102,105,73,78,111,72,76,108,70,77, +107,72,78,110,72,78,110,70,77,107,71,76,107,74,78,110,101,100,101,148,147,151, +148,147,149,151,150,152,148,147,149,146,145,147,147,146,148,102,102,105,33,65, +91,33,64,88,33,64,88,35,65,91,37,66,91,35,65,89,35,64,89,34,66,91,99,102,101, +146,144,148,143,141,142,138,137,140,140,139,141,145,143,146,146,144,147,99,95, +98,43,83,109,46,84,113,58,107,143,47,87,116,44,81,108,43,79,105,44,79,106,44,81, +109,101,100,102,148,147,150,139,138,141,145,143,146,144,142,145,146,146,148,155, +153,156,104,108,108,44,80,108,43,79,105,43,79,106,45,81,108,45,81,108,43,79,106, +43,79,106,44,81,109,101,104,104,146,145,147,141,139,140,153,151,154,149,148,150, +144,142,146,144,143,144,98,94,97,61,113,150,61,110,146,60,108,146,61,111,148,61, +111,148,59,107,143,54,99,134,49,92,121,100,97,100,143,141,143,137,136,138,140, +139,141,138,137,139,135,133,136,137,136,139,95,94,95,30,69,88,31,68,86,31,68,86, +33,70,88,33,70,88,31,68,86,31,68,86,30,69,88,100,97,100,146,143,147,147,146,148, +147,146,149,105,103,109,111,109,120,119,117,121,89,65,85,137,136,142,144,142, +152,148,146,150,107,79,103,153,151,155,152,153,154,154,151,158,66,39,64,32,35, +61,189,190,113,30,28,54,45,43,49,44,42,44,43,43,43,41,52,39,56,50,55,53,50,62, +53,55,53,52,48,52,52,52,52,51,50,57,51,48,54,51,48,60,51,53,51,51,51,51,51,50, +57,39,52,70,168,166,169,168,166,168,39,44,39,51,56,54,51,48,51,51,48,57,51,50, +62,51,55,51,51,62,57,51,48,58,51,51,58,51,50,52,52,49,59,52,56,52,54,49,60,39, +48,38,40,47,52,41,39,48,27,38,40,163,160,87,28,27,41,66,39,64,155,155,157,152, +154,154,152,150,156,107,79,103,149,147,151,144,142,149,137,135,141,90,65,86,122, +120,124,114,112,119,110,108,114,153,151,157,153,152,155,153,152,157,109,83,108, +154,148,158,85,164,0,87,163,0,86,162,0,84,157,0,82,151,0,78,144,0,78,147,0,85, +161,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,86,163,0,85,164,0,81,164,0, +95,156,19,176,144,138,179,148,139,178,148,138,178,148,138,173,144,134,178,148, +138,178,148,138,178,148,138,178,148,138,178,148,138,178,148,138,178,148,138,178, +148,138,178,148,138,178,148,138,178,148,138,178,148,138,178,148,138,178,148,139, +180,148,140,180,147,140,174,144,136,174,143,135,181,148,141,181,148,141,180,148, +140,178,148,139,178,148,138,178,148,138,178,148,138,178,148,139,181,148,141,117, +158,49,69,150,0,78,156,0,72,147,0,73,148,0,69,145,0,88,164,0,83,156,0,76,139,0, +70,136,0,142,139,144,139,143,144,139,138,140,95,93,94,170,168,171,165,163,167, +165,165,169,170,168,171,168,166,169,165,163,167,162,161,163,163,162,165,96,94, +97,137,136,138,132,131,134,139,138,140,98,97,99,103,100,104,143,142,144,81,74, +64,90,84,73,111,103,88,111,103,88,111,103,88,111,103,88,111,103,88,111,103,88, +90,84,73,80,74,63,152,151,154,94,93,94,97,95,98,136,134,137,136,135,137,146,144, +147,90,89,88,173,171,174,167,166,168,167,166,169,168,167,170,168,167,170,170, +168,171,165,163,166,166,164,168,94,95,96,147,146,148,148,147,149,142,141,145, +145,144,148,142,141,143,147,146,148,90,91,90,166,166,170,167,166,169,170,169, +171,165,163,167,157,156,158,160,159,162,163,161,164,162,166,167,94,91,94,138, +137,139,142,141,144,136,135,138,137,136,138,138,137,139,136,134,137,92,89,91, +167,166,170,168,166,169,167,166,169,169,168,171,173,171,175,173,171,175,162,160, +163,162,166,167,95,95,96,144,143,145,136,135,138,138,137,139,140,138,140,134, +132,135,149,148,150,96,96,99,172,170,173,168,167,170,168,166,169,166,165,169, +158,162,163,169,167,170,168,166,169,168,167,170,98,101,102,146,145,147,147,146, +148,148,147,150,140,139,141,137,137,138,138,137,139,87,87,87,159,162,163,159, +158,160,162,161,164,165,163,167,165,165,168,165,165,168,168,166,169,163,162,164, +89,89,90,137,137,139,137,136,138,133,132,134,136,135,137,138,137,139,137,137, +139,94,91,95,163,162,165,164,162,164,162,160,163,156,154,157,159,158,161,162, +160,163,163,161,164,162,166,167,89,89,90,138,138,139,137,137,138,138,137,140,40, +23,40,43,28,43,80,61,80,29,24,42,31,25,46,34,28,46,68,60,83,68,44,67,67,58,68, +66,38,72,110,82,106,66,39,64,32,29,48,189,189,115,30,28,53,45,42,65,44,41,44,43, +42,43,57,61,74,55,53,55,53,49,52,53,48,66,52,48,58,52,60,52,51,50,51,51,53,51, +51,51,51,51,47,51,51,47,51,51,47,57,39,33,37,168,170,169,168,168,168,39,41,39, +51,48,51,51,58,51,51,47,60,51,49,52,51,47,51,51,51,51,51,48,51,51,50,52,51,52, +54,52,54,58,52,48,72,54,51,60,40,38,39,40,38,41,41,39,41,27,34,40,161,161,86,28, +33,42,66,39,64,105,68,85,100,65,81,146,108,119,68,45,72,66,41,65,61,36,59,97,68, +93,56,37,59,50,30,49,44,25,43,73,51,70,65,38,64,66,60,64,109,79,110,69,43,70, +154,148,158,87,165,0,86,163,0,85,158,0,82,153,0,78,148,0,75,138,0,76,141,0,82, +153,0,86,163,0,87,164,0,87,164,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0, +88,164,0,116,159,45,151,155,100,181,148,141,179,148,139,173,144,135,173,144,134, +178,148,138,178,148,138,178,148,138,178,148,139,180,148,140,180,148,140,180,148, +140,180,148,140,178,148,139,178,148,138,178,148,138,178,148,138,178,148,138,178, +148,138,178,148,138,178,148,138,178,148,138,178,148,138,178,148,138,178,148,138, +178,148,139,179,148,140,179,148,139,179,148,139,174,150,134,127,158,64,78,154,0, +79,157,0,72,147,0,76,151,0,69,145,0,83,157,0,88,164,0,83,156,0,75,138,0,71,135, +0,135,137,141,135,133,136,140,139,141,137,137,138,136,135,139,131,130,131,135, +134,137,134,132,135,135,134,136,132,131,133,134,132,136,138,136,138,139,137,139, +140,139,141,132,132,133,134,133,135,104,102,105,100,97,98,143,142,144,80,74,64, +90,84,73,111,103,88,111,103,88,111,103,88,111,103,88,111,103,88,111,103,88,90, +84,73,79,73,63,154,153,156,99,98,100,100,98,98,133,132,134,139,136,138,138,136, +138,140,139,141,146,145,147,144,141,145,139,138,140,138,137,139,138,137,139,139, +138,140,140,139,141,144,142,145,133,132,134,129,128,130,146,145,147,138,136,138, +140,139,142,139,138,140,141,140,142,140,139,141,138,137,139,140,139,141,135,134, +137,140,139,140,139,138,140,134,132,135,131,130,132,136,135,137,140,139,141,133, +132,136,132,131,133,140,139,141,135,133,136,141,140,142,140,139,141,129,128,130, +131,130,132,132,131,133,135,134,137,139,138,140,140,139,141,145,144,146,140,139, +141,135,134,137,139,137,139,132,131,133,133,132,134,133,132,134,140,140,142,138, +136,138,146,145,147,136,135,138,141,140,142,137,135,137,130,130,131,134,132,136, +132,131,133,135,134,136,132,131,133,141,140,142,140,139,141,145,142,146,146,145, +147,138,137,139,148,147,150,137,136,137,133,132,134,134,133,135,135,132,136,132, +131,133,129,128,130,138,137,138,144,142,145,132,131,132,132,131,133,138,137,140, +137,136,138,132,131,133,137,136,138,132,131,133,132,131,133,132,131,133,132,131, +134,131,130,133,128,127,129,131,130,133,130,129,131,129,128,131,135,133,136,128, +127,129,122,121,123,136,135,137,137,136,138,137,136,137,141,140,142,139,138,141, +69,51,69,74,53,74,120,118,123,30,22,42,62,54,77,64,56,81,111,110,114,67,42,66, +111,82,108,110,80,106,155,154,161,66,39,64,32,51,43,189,192,115,30,28,43,45,70, +51,44,59,50,43,46,42,57,51,66,55,50,56,53,49,64,53,53,53,52,48,52,52,48,52,51, +47,69,51,47,51,51,59,51,51,50,51,51,52,51,51,47,56,39,34,58,168,166,171,168,167, +168,39,35,61,51,48,51,51,47,51,51,49,51,51,54,51,51,59,52,51,47,64,51,47,51,51, +53,51,51,48,59,52,54,52,53,48,52,38,37,39,40,45,51,40,39,43,41,39,41,27,33,44, +162,160,86,28,26,39,66,39,64,152,117,123,148,108,121,196,181,166,67,42,73,108, +85,105,103,75,101,139,137,145,55,34,60,84,66,82,77,55,75,112,110,119,110,85,106, +110,83,106,154,152,156,68,49,69,154,148,158,85,160,0,81,151,0,79,149,0,78,148,0, +77,141,0,74,136,0,74,137,0,78,144,0,82,155,0,83,154,0,83,155,0,84,156,0,85,158, +0,86,163,0,87,163,0,87,163,0,87,163,0,86,163,0,84,164,0,108,159,30,148,154,96, +167,148,128,171,141,134,164,138,128,176,146,137,181,148,141,162,135,126,79,132, +28,124,152,67,76,132,25,107,160,28,179,149,137,178,148,139,178,148,139,180,148, +140,180,148,140,180,148,141,180,148,140,180,148,140,179,148,140,179,148,139,179, +148,140,180,148,140,181,147,142,123,157,60,156,153,111,160,154,113,122,158,55, +90,164,0,87,164,0,76,150,0,70,146,0,70,146,0,78,154,0,88,164,0,86,163,0,83,156, +0,76,139,0,71,135,0,134,131,135,138,140,141,143,142,144,139,138,140,145,143,146, +139,138,140,128,127,129,140,139,141,138,137,139,139,138,140,135,133,138,131,131, +132,138,137,139,140,139,142,140,139,141,132,132,133,101,100,102,100,96,97,159, +158,160,80,73,63,90,84,73,111,103,88,111,103,88,111,103,88,111,103,88,111,103, +88,111,103,88,90,84,73,80,73,63,159,158,160,103,100,102,105,103,107,128,128,131, +138,137,139,132,131,133,140,139,141,142,141,143,140,139,141,146,145,147,145,143, +146,145,143,146,146,142,145,147,146,148,141,141,143,136,133,136,132,131,133,143, +142,144,138,137,140,143,142,144,142,141,144,146,145,147,141,140,142,145,142,146, +149,148,150,138,137,139,142,141,143,139,138,140,139,138,141,132,131,133,139,138, +140,139,138,140,127,126,128,138,137,139,138,137,141,137,137,138,135,133,137,133, +132,136,138,137,139,132,131,134,135,133,138,133,132,134,142,141,143,145,143,146, +139,138,140,147,146,148,146,145,148,136,132,136,143,142,144,141,140,142,139,138, +140,142,141,143,138,137,139,142,142,143,143,142,144,140,139,141,139,138,140,140, +139,141,130,129,131,130,129,131,141,140,142,127,126,129,139,138,140,139,138,142, +146,145,147,141,140,142,137,136,138,137,136,138,151,150,152,138,137,139,137,137, +138,143,142,144,131,130,132,123,122,124,137,136,138,137,136,138,140,139,141,137, +136,138,131,130,133,137,136,139,130,129,131,127,126,128,128,127,129,84,117,72, +132,131,135,131,130,132,134,133,135,130,129,131,129,128,130,132,131,133,133,132, +134,130,129,131,132,131,134,139,138,140,138,137,139,133,132,136,135,133,136,137, +136,138,138,137,139,67,49,67,72,49,69,119,119,121,29,25,40,60,52,76,62,52,77, +110,111,113,65,45,65,109,83,105,107,77,106,154,151,155,66,39,64,32,47,50,189, +190,115,30,28,50,45,48,47,44,45,48,43,43,42,57,51,56,55,50,55,53,51,53,53,48,53, +52,61,56,52,48,52,51,47,51,51,47,50,51,49,74,51,47,50,51,47,51,51,48,51,39,34, +38,168,166,171,168,166,168,39,34,39,51,58,51,51,47,51,51,52,58,51,48,51,51,60, +51,51,50,55,51,59,52,51,48,51,51,59,51,52,48,52,53,48,58,38,49,39,40,39,42,40, +39,49,41,39,42,28,26,57,157,157,84,29,26,40,66,39,64,149,112,122,144,103,122, +195,182,165,65,38,63,106,77,102,100,70,96,137,135,139,53,31,52,83,59,80,74,51, +71,110,107,112,107,75,103,107,75,103,153,151,155,66,43,67,154,148,158,80,151,0, +76,138,0,75,137,0,78,144,0,76,139,0,74,136,0,73,135,0,75,137,0,78,145,0,78,144, +0,77,142,0,78,144,0,78,147,0,83,156,0,86,162,0,87,163,0,87,163,0,87,163,0,87, +163,0,85,163,0,108,160,27,145,155,94,156,154,106,95,150,27,78,161,3,65,132,22, +71,143,17,75,144,16,86,162,1,86,163,0,91,162,0,137,157,82,171,150,131,168,151, +122,117,160,44,80,164,0,81,164,0,97,163,5,131,157,76,141,156,89,158,154,111,149, +155,98,102,161,18,81,164,0,91,163,0,101,160,11,89,164,0,85,163,0,87,163,0,88, +164,0,75,148,0,79,154,0,75,148,0,88,164,0,87,163,0,85,160,0,82,154,0,78,144,0, +76,139,12,131,133,136,133,132,135,136,133,135,136,134,137,134,133,134,132,131, +134,133,132,134,136,134,137,136,134,137,134,132,134,127,127,130,130,129,131,131, +130,132,134,132,134,137,136,138,116,115,117,101,100,102,102,100,103,151,150,152, +80,73,63,90,84,73,90,84,73,90,84,73,90,84,73,90,84,73,90,84,73,90,84,73,90,84, +73,79,73,62,158,157,159,96,94,97,106,104,107,116,115,117,138,134,137,131,131, +132,130,129,131,131,131,132,138,137,139,141,140,142,139,138,140,140,139,141,141, +140,142,141,140,142,134,132,134,131,130,132,130,129,131,131,130,132,136,134,137, +133,132,135,129,128,130,138,137,139,138,137,139,140,139,141,143,144,144,141,140, +142,140,139,141,139,138,140,132,131,133,130,130,131,138,137,140,130,130,131,129, +128,130,137,136,138,140,139,140,129,128,130,137,136,138,137,136,139,131,130,133, +134,132,134,137,137,138,136,134,137,138,137,139,141,140,142,140,139,141,142,141, +143,140,139,141,141,140,142,144,144,145,139,138,141,136,134,138,139,138,140,134, +131,133,140,139,141,138,137,139,141,141,142,137,136,138,133,132,135,129,129,130, +129,128,130,134,132,134,137,135,139,124,123,125,130,129,130,141,141,144,139,138, +140,132,131,132,138,138,140,146,145,147,132,131,133,132,131,133,130,129,131,123, +122,124,129,128,130,128,127,130,134,132,134,131,130,132,132,131,134,130,129,131, +134,132,134,129,128,131,128,127,129,127,125,128,82,116,71,83,116,71,137,135,138, +130,129,131,123,122,126,83,116,72,138,137,139,122,122,123,125,124,126,130,129, +132,127,127,128,134,132,134,129,128,130,132,131,133,141,140,142,136,134,137,105, +103,107,111,109,113,120,117,122,56,46,69,100,101,105,106,107,110,109,110,114, +107,77,104,153,151,155,152,150,156,154,152,160,66,39,64,32,33,48,189,191,115,30, +28,49,45,43,57,44,43,45,42,40,48,57,61,56,54,50,60,53,51,53,53,48,52,52,51,70, +52,48,58,51,47,58,51,57,50,51,47,69,51,47,50,51,47,66,51,47,56,42,36,41,170,168, +170,170,168,170,42,38,41,51,47,51,51,51,61,51,47,65,51,53,65,51,49,61,51,47,52, +51,47,59,51,49,67,51,47,63,52,53,56,52,48,52,54,51,54,40,40,47,40,59,40,41,38, +47,28,48,40,155,155,84,29,26,40,66,39,64,198,182,168,196,183,168,195,180,165, +107,77,103,149,147,155,144,142,146,137,135,139,90,64,86,122,120,127,114,112,116, +110,107,112,153,153,159,153,151,155,153,151,155,110,81,107,154,148,158,82,157,0, +79,149,0,78,146,0,78,145,0,75,138,0,75,138,0,74,137,0,76,139,0,78,144,0,77,142, +0,77,141,0,76,141,0,78,145,0,82,154,0,84,158,0,85,160,0,87,163,0,87,163,0,87, +163,0,87,163,0,86,163,0,104,160,25,133,155,79,142,157,88,92,135,38,67,123,25,64, +120,26,79,148,13,87,163,0,87,163,0,87,163,0,85,163,0,86,164,0,86,164,0,85,163,0, +87,163,0,87,163,0,86,163,0,85,163,0,84,164,0,83,164,0,84,164,0,86,163,0,87,163, +0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,85,160,0,78,153,0,78,154,0,88, +164,0,87,163,0,87,163,0,85,158,0,83,155,0,79,149,0,87,147,34,100,95,100,100,99, +101,99,98,100,99,99,101,102,100,104,103,101,104,100,99,101,105,103,106,105,103, +106,104,102,105,103,101,104,103,101,105,98,96,97,97,96,98,100,99,101,105,104, +106,108,106,109,106,104,107,156,154,157,74,67,55,77,70,59,77,70,59,77,70,59,77, +70,59,77,70,59,77,70,59,77,70,59,77,70,59,74,67,55,157,156,158,97,97,98,106,104, +107,104,102,105,103,101,104,103,101,104,103,101,104,102,100,103,99,98,100,104, +101,105,98,98,100,98,98,103,98,98,102,102,100,103,101,99,102,102,100,103,104, +102,105,98,97,99,105,103,106,104,102,105,99,97,98,102,100,103,104,102,105,98,97, +99,102,100,103,98,97,99,104,102,105,110,108,112,102,100,103,101,99,103,99,98, +100,103,101,105,97,96,98,101,99,102,104,102,105,104,102,105,103,101,104,101,103, +107,98,97,99,97,97,99,98,96,97,98,97,99,103,101,104,109,104,106,103,101,104,101, +98,99,102,100,103,103,101,104,101,99,102,103,103,104,103,101,104,105,103,106, +107,105,108,103,102,104,103,101,104,101,100,103,103,103,104,102,100,104,100,100, +102,103,101,104,104,102,105,99,99,101,99,98,100,98,97,99,104,102,105,104,104, +110,102,100,103,104,102,105,99,97,98,98,96,97,102,100,103,100,99,101,100,99,101, +100,99,101,104,102,105,99,98,100,100,99,101,103,101,104,99,99,101,99,98,100,104, +103,105,70,108,54,70,109,56,71,109,55,72,110,61,72,109,58,70,108,55,68,107,52, +70,108,54,72,109,57,71,109,56,96,95,96,95,94,95,99,98,100,103,101,104,103,101, +104,101,99,102,103,103,104,104,105,110,40,23,39,43,24,45,81,57,78,56,38,55,59, +36,58,61,36,64,105,75,101,68,47,67,67,58,71,66,39,64,110,78,106,66,39,64,32,29, +48,189,188,115,30,32,46,45,50,45,44,46,46,57,61,65,56,50,56,54,63,62,53,52,58, +53,48,64,52,48,51,52,50,56,51,46,51,51,54,51,51,59,56,51,47,52,51,47,51,51,58, +51,50,53,49,42,36,41,42,36,54,50,45,49,51,48,51,51,60,56,51,47,52,51,53,59,51, +47,63,51,47,54,51,47,51,51,55,59,51,51,51,52,48,52,52,48,52,53,48,57,40,39,46, +40,37,40,41,42,41,27,25,40,161,160,87,28,31,45,66,39,64,70,48,68,66,43,64,108, +80,105,68,58,67,66,44,67,61,36,59,97,68,93,56,48,55,50,33,51,44,25,43,73,51,70, +65,42,74,66,39,66,109,84,105,69,44,70,154,148,158,78,149,0,74,137,0,73,135,0,75, +138,0,75,138,0,76,141,0,76,141,0,77,141,0,78,146,0,78,144,0,77,142,0,78,145,0, +78,148,0,83,154,0,77,150,0,81,156,0,85,160,0,86,162,0,87,163,0,87,163,0,87,163, +0,86,163,0,99,162,1,112,159,42,114,144,63,78,120,36,65,121,26,78,146,15,87,163, +0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87, +163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0, +87,163,0,87,163,0,87,163,0,82,157,0,82,157,0,88,164,0,87,163,0,87,163,0,87,163, +0,86,160,0,84,157,0,83,155,0,89,154,24,121,112,115,134,131,133,146,142,144,120, +114,117,150,147,149,144,141,143,109,103,104,101,100,102,113,109,111,141,138,140, +143,139,141,121,114,117,141,138,140,140,135,138,114,111,112,101,100,102,106,105, +107,106,104,107,88,88,90,182,183,184,182,182,184,182,182,184,182,183,184,182, +183,184,182,183,184,182,183,184,182,182,184,182,182,184,183,183,184,88,88,90, +104,101,103,106,105,107,105,103,106,121,117,119,144,141,143,143,139,142,121,114, +117,140,134,138,143,141,142,121,115,118,101,100,102,111,107,109,144,141,143,151, +148,150,120,114,117,148,144,147,143,141,142,117,111,111,99,98,100,107,103,105, +135,132,134,133,130,132,121,114,118,141,138,140,141,138,140,113,109,111,105,103, +106,119,113,115,146,142,144,143,141,142,121,114,117,141,138,140,143,141,142,120, +115,118,103,101,104,120,113,113,144,141,143,140,134,139,121,114,117,143,139,142, +142,139,141,117,111,112,105,103,106,112,106,108,144,141,143,142,139,141,120,114, +117,143,141,142,146,142,144,114,110,112,105,103,106,121,114,114,144,141,143,146, +142,144,120,114,117,148,144,147,147,143,145,111,104,104,101,100,102,117,112,111, +138,134,136,137,132,134,121,115,118,136,132,134,136,132,134,120,114,116,103,101, +104,118,112,113,140,135,138,141,138,140,121,114,117,143,141,142,139,133,138,121, +117,119,105,104,107,120,113,113,143,141,142,140,134,139,121,114,117,143,140,142, +143,141,142,118,111,112,102,103,107,121,114,114,144,141,143,143,140,142,121,114, +117,143,140,142,143,141,142,114,108,108,100,100,102,110,104,105,135,131,134,137, +133,134,120,114,117,148,144,147,146,141,144,120,114,114,69,53,73,74,53,73,121, +118,123,55,34,54,98,77,103,103,75,102,149,147,151,67,42,66,111,86,110,110,84, +106,155,154,159,66,39,64,32,32,51,189,188,116,30,51,42,45,60,51,44,59,51,57,52, +56,56,60,56,54,50,54,53,49,53,53,48,57,52,48,52,52,66,52,51,60,51,51,51,67,51, +47,51,51,47,54,51,47,51,51,51,52,51,51,57,51,48,58,51,58,51,51,50,51,51,47,51, +51,47,56,51,47,52,51,51,51,51,47,61,51,53,52,51,47,51,51,50,51,51,50,51,52,48, +52,52,48,57,52,49,63,44,55,47,40,38,40,41,40,45,28,25,45,160,160,87,28,36,51,66, +39,64,113,84,109,110,83,114,153,151,155,67,49,66,108,80,109,103,76,102,139,137, +141,55,40,54,84,62,85,77,56,76,112,110,114,110,80,108,110,81,111,154,153,159,69, +42,69,154,148,158,73,138,0,73,133,0,73,135,0,74,137,0,76,141,0,77,142,0,77,142, +0,77,142,0,79,145,0,77,141,0,78,143,0,75,138,0,75,137,0,73,139,0,71,140,0,79, +149,5,71,133,19,85,159,0,86,162,0,78,146,15,81,151,11,87,163,0,87,163,0,75,139, +19,79,131,23,83,136,23,83,146,14,82,153,9,83,156,7,87,163,0,81,151,11,78,146,14, +87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163, +0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87, +163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,86,162,0,85,159,0,85,159,0, +90,159,12,139,138,141,136,131,133,142,139,141,120,114,117,136,132,134,143,140, +142,140,135,138,102,100,103,138,134,136,140,137,139,141,138,140,120,113,117,142, +139,141,139,133,136,138,134,136,103,101,104,105,103,106,102,99,103,88,88,90,102, +102,106,100,100,104,98,98,103,97,97,99,96,96,98,97,97,99,95,95,97,98,98,103,102, +102,105,100,100,103,88,88,90,97,95,96,106,105,107,101,100,102,140,135,138,139, +136,138,142,140,141,120,113,116,141,138,140,141,138,140,146,142,144,104,102,105, +142,140,142,138,133,136,141,138,140,120,114,117,139,134,137,142,139,141,141,138, +140,96,97,100,137,133,135,137,133,134,139,134,137,120,114,117,141,138,140,141, +138,140,140,135,138,98,96,97,143,142,143,142,139,141,135,131,133,120,114,117, +141,138,140,138,133,136,137,134,135,98,98,100,149,145,148,145,141,143,141,138, +140,120,113,116,146,141,144,140,137,139,149,145,148,103,102,105,143,141,142,145, +141,143,142,139,141,119,113,116,147,143,146,139,136,138,142,139,141,107,104,109, +143,141,142,145,140,143,148,145,147,119,113,116,149,146,148,140,137,139,142,139, +142,98,97,97,140,135,138,142,138,141,140,137,139,120,114,117,140,137,139,136, +132,134,137,133,135,100,99,101,138,134,136,133,130,132,136,132,134,120,114,117, +142,139,141,135,131,133,144,141,143,98,97,99,141,138,140,145,141,143,142,138, +141,79,113,65,139,134,137,138,133,136,142,139,141,98,96,97,143,140,142,142,140, +142,143,140,142,120,113,116,141,138,140,139,136,139,138,134,136,97,95,98,131, +128,130,132,129,131,140,137,139,120,114,117,140,137,139,140,138,139,139,134,137, +67,47,67,72,50,69,120,117,124,53,30,55,96,69,95,100,71,96,148,146,152,65,38,67, +109,79,105,107,79,103,154,151,156,66,39,64,32,51,43,189,188,117,30,33,45,45,56, +45,44,43,46,57,61,63,56,63,57,54,52,54,53,51,70,53,52,53,52,48,52,52,47,52,51, +47,54,51,47,57,51,53,51,51,50,55,51,48,51,51,61,51,51,48,51,51,48,51,51,51,54, +51,47,51,51,47,61,51,47,51,51,47,52,51,53,52,51,47,66,51,47,50,51,57,51,51,49, +52,51,47,51,52,48,52,52,52,59,51,46,50,43,42,49,40,38,39,41,38,63,28,50,38,156, +155,84,29,26,40,66,39,64,110,83,109,107,76,103,152,151,159,65,43,63,106,77,102, +100,74,101,137,137,142,53,35,52,83,59,80,74,54,75,110,110,115,107,79,103,107,75, +103,153,152,155,67,38,68,154,148,158,76,143,0,75,138,0,77,142,0,78,145,0,78,147, +0,76,146,0,74,144,0,74,142,0,70,138,0,69,137,0,68,138,0,69,135,0,72,136,0,73, +137,0,78,147,0,82,153,0,84,157,0,85,159,0,76,142,16,72,137,19,71,135,21,73,138, +19,77,144,16,83,156,7,79,149,12,67,127,24,73,138,19,83,156,7,83,156,7,87,163,0, +81,151,11,78,146,15,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87, +163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0, +87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163,0,87,163, +0,86,162,0,87,164,0,90,162,0,103,95,101,130,127,129,133,130,132,121,115,118,136, +134,134,146,142,144,120,117,119,105,103,107,117,112,112,140,133,139,142,139,141, +121,115,118,136,134,134,140,135,138,118,112,112,106,104,107,103,101,104,88,88, +90,88,88,90,182,183,183,182,182,183,182,182,183,182,182,183,182,182,183,182,182, +183,182,182,183,182,182,183,182,182,183,182,182,183,88,88,90,88,88,90,99,98,100, +101,101,102,120,114,116,142,139,141,144,141,143,120,114,117,146,142,144,149,146, +148,129,122,122,105,104,106,118,111,112,136,134,134,140,135,138,121,115,118,134, +131,133,140,134,139,119,113,115,103,102,105,109,104,104,143,138,143,134,131,133, +121,115,118,137,133,134,140,134,139,107,103,104,71,109,57,112,105,104,142,139, +141,87,118,75,121,115,118,139,134,138,141,135,140,114,108,110,99,98,100,118,111, +112,143,139,142,144,141,143,120,114,117,148,142,147,149,146,148,120,116,118,113, +110,111,128,122,124,146,142,144,149,143,148,120,114,117,149,146,148,144,140,143, +123,119,119,105,104,106,121,117,115,146,142,144,148,144,147,120,114,117,150,147, +149,151,149,150,118,111,113,98,98,100,120,115,118,140,133,139,141,138,140,120, +114,117,147,143,145,146,141,144,113,108,108,100,99,101,114,108,110,137,133,135, +140,135,138,121,114,117,143,139,142,141,138,140,115,110,110,101,100,102,117,111, +112,147,141,145,141,138,140,80,113,65,88,119,76,140,137,143,121,115,118,100,99, +101,118,111,113,148,142,147,143,141,142,121,114,117,143,140,142,142,139,141,120, +114,116,100,99,101,111,104,106,137,133,135,134,131,133,121,114,117,146,141,144, +143,139,142,117,111,113,105,107,107,111,109,119,120,117,122,89,63,92,138,140, +140,144,142,151,148,146,150,107,77,110,153,153,155,152,150,157,154,154,158,66, +39,64,31,29,43,189,188,114,30,45,43,45,42,55,44,44,45,57,52,61,56,51,56,54,53, +62,53,54,52,52,50,60,52,56,58,52,56,58,51,48,55,51,53,61,51,47,51,51,53,51,51, +48,51,51,57,51,51,49,54,51,59,55,51,52,54,51,48,52,51,53,51,51,50,59,51,47,58, +51,47,57,51,47,55,51,47,60,51,50,56,51,47,59,51,52,52,52,48,58,52,48,55,50,49, +51,42,40,44,40,40,49,41,52,41,30,25,40,155,153,84,30,26,40,66,39,64,155,152,157, +152,153,154,152,150,154,107,77,103,149,147,155,144,143,146,137,136,139,90,64,86, +122,120,127,114,113,116,110,109,112,153,151,159,153,152,155,153,151,158,110,79, +109,154,148,158,84,160,0,83,156,0,84,158,0,74,150,0,78,153,0,79,153,0,79,152,0, +76,149,0,79,148,0,77,143,0,73,144,0,74,148,0,79,152,0,84,158,0,85,161,0,87,163, +0,87,165,0,87,165,0,84,158,5,83,157,7,77,145,17,85,160,5,85,161,5,88,165,1,88, +166,0,88,166,0,88,166,0,88,166,0,88,166,0,88,166,0,88,166,0,88,166,0,88,166,0, +88,166,0,88,166,0,88,166,0,88,166,0,88,166,0,88,166,0,88,166,0,88,166,0,88,166, +0,88,166,0,88,166,0,88,166,0,88,166,0,88,166,0,88,166,0,88,166,0,88,166,0,88, +166,0,88,166,0,88,166,0,88,166,0,88,166,0,88,166,0,88,166,0,88,166,0,87,167,0, +93,91,97,97,94,98,97,94,98,92,91,92,94,93,94,99,98,100,98,97,99,103,100,104,103, +99,100,101,98,96,101,96,96,100,94,93,102,98,98,104,100,102,102,99,97,100,99,98, +88,88,90,88,88,90,88,88,90,105,101,104,106,102,105,106,102,105,100,97,97,100,99, +99,104,101,101,101,98,99,102,102,101,107,106,107,102,101,100,88,88,90,88,88,90, +88,88,90,99,92,91,104,99,99,102,98,97,102,98,97,107,105,105,106,104,104,105,101, +102,107,103,105,105,102,103,107,103,105,105,101,103,101,98,96,101,99,97,100,98, +98,100,98,97,99,97,97,102,99,98,102,99,97,101,98,96,102,98,98,99,96,97,94,93,91, +68,107,51,72,109,56,72,109,56,72,109,54,82,105,70,81,105,71,75,107,61,75,107,61, +95,94,91,102,100,100,97,95,93,106,102,105,101,98,96,99,98,97,105,101,102,104, +100,101,104,101,101,106,102,103,113,110,111,109,105,103,113,110,111,108,104,102, +106,103,104,106,102,104,104,100,102,106,102,104,107,103,105,107,103,105,106,104, +104,106,104,104,109,105,103,109,105,107,106,102,104,105,101,103,103,99,99,99,93, +92,96,95,93,101,96,96,105,101,103,100,98,96,103,98,98,102,100,100,101,99,99,104, +99,100,99,96,97,96,91,90,100,99,98,103,98,98,100,98,97,102,100,99,102,100,100, +101,100,99,106,102,104,71,109,55,72,109,55,71,109,54,70,108,54,103,99,98,102, +100,100,105,105,107,105,101,103,105,101,103,101,98,96,100,98,97,102,98,97,101, +99,97,107,104,105,102,99,97,101,98,99,103,98,99,101,100,99,104,100,102,105,101, +103,105,101,103,40,23,39,43,24,41,81,65,78,56,35,56,59,35,58,61,36,59,105,86, +101,68,44,69,67,43,72,66,39,64,110,78,106,66,39,64,31,40,47,189,188,114,30,28, +55,45,43,61,44,42,44,56,60,58,56,51,56,54,51,62,53,60,65,52,62,57,52,51,52,52, +55,52,51,56,60,51,48,52,51,48,51,51,48,51,51,55,51,51,47,52,51,56,51,51,58,56, +51,51,51,51,48,51,51,48,52,51,47,58,51,47,51,51,55,58,51,47,51,51,52,51,51,47, +54,51,59,60,51,47,59,52,49,69,52,48,60,50,49,57,41,47,50,40,39,54,41,51,52,28, +31,42,156,155,84,29,50,40,66,39,64,70,44,74,66,46,75,108,77,108,68,45,78,66,44, +64,61,36,59,97,71,93,56,37,64,50,33,48,44,25,43,73,53,70,62,29,32,65,32,36,65, +33,37,68,38,42,68,35,46,69,31,48,70,30,48,70,30,48,70,31,48,70,31,48,70,31,48, +70,32,48,70,32,48,70,32,48,70,33,48,70,33,48,70,32,48,70,32,48,70,30,48,70,29, +48,70,29,48,70,29,48,70,29,48,70,29,48,69,29,48,69,29,48,69,29,48,69,29,48,69, +29,48,69,29,48,69,29,48,69,29,48,69,29,48,69,29,48,69,29,48,69,29,48,69,29,48, +69,29,48,69,29,48,69,29,48,69,29,48,69,29,48,69,29,48,69,29,48,69,29,48,69,29, +48,69,29,48,69,29,48,69,29,48,69,29,48,69,29,48,69,29,48,69,29,48,69,29,48,69, +29,48,69,29,48,69,29,48,69,29,48,69,29,48,69,29,48,69,29,48,69,29,48,69,29,48, +66,29,41,95,100,101,95,100,101,132,132,133,129,128,129,137,135,136,138,137,138, +132,131,132,138,135,135,51,90,147,54,89,145,53,87,145,53,88,145,53,87,145,53,88, +145,53,89,145,53,89,145,48,79,132,46,75,127,46,75,126,49,78,128,49,78,127,49,77, +127,48,77,127,47,76,128,47,77,129,47,78,132,48,82,140,49,84,144,49,84,143,46,83, +142,45,83,143,47,84,143,53,88,146,51,86,145,50,85,144,50,85,144,49,85,144,49,84, +144,49,86,144,50,86,144,51,87,144,52,87,144,53,88,145,53,88,145,53,87,145,51,86, +144,52,86,144,53,88,145,56,90,147,54,88,145,53,87,145,53,87,145,53,87,145,53,88, +145,53,88,145,53,87,145,53,88,145,53,89,145,53,87,145,55,101,105,54,97,118,53, +87,145,53,88,145,54,88,145,53,82,133,49,77,127,48,75,125,48,77,125,48,76,125,48, +76,126,48,77,126,49,78,128,49,77,127,50,81,133,51,86,144,50,85,144,49,86,144,49, +86,144,50,86,144,51,87,144,54,89,146,51,87,144,49,85,144,49,85,144,50,85,144,51, +85,144,52,88,144,53,88,145,53,89,145,53,88,145,53,87,145,53,87,145,53,88,145,53, +88,145,53,89,145,54,88,145,56,90,147,54,88,145,53,87,145,53,88,145,53,87,145,53, +87,145,53,89,145,53,88,145,53,88,145,53,88,145,53,88,145,53,88,145,53,89,145,53, +87,145,53,87,145,54,88,145,56,90,147,53,89,145,53,88,145,53,88,145,53,89,145,53, +87,145,53,89,145,53,88,145,53,88,145,53,88,145,53,89,145,53,88,145,53,88,145,53, +88,145,53,88,145,53,88,145,69,60,69,74,52,71,121,118,127,55,34,53,98,86,98,103, +74,99,149,147,155,67,42,65,111,84,108,110,86,106,155,152,157,66,39,64,31,29,47, +189,188,114,30,28,55,45,43,49,44,43,60,55,53,55,56,51,57,54,50,54,53,54,53,52, +50,52,52,49,52,52,53,52,51,48,51,51,48,52,51,48,56,51,55,57,51,52,51,51,59,54, +51,50,60,51,48,51,51,49,51,51,57,55,51,48,61,51,48,50,51,47,51,51,52,52,51,47, +51,51,52,51,51,47,60,51,56,52,51,47,52,52,48,57,52,50,57,48,55,57,41,44,41,40, +43,40,41,39,40,27,25,56,163,162,86,28,26,39,66,39,64,113,88,109,110,80,113,153, +151,155,67,54,68,108,80,105,103,78,104,139,137,145,55,44,56,84,62,82,77,58,77, +112,110,119,59,32,36,63,42,45,63,42,46,64,42,46,64,42,46,64,42,46,64,42,46,64, +42,46,64,42,46,64,42,46,64,42,46,64,42,46,64,42,46,64,42,46,64,42,46,64,42,46, +64,42,46,64,42,46,63,42,46,63,42,46,63,42,46,64,42,46,64,42,46,64,42,46,64,42, +46,64,42,46,64,42,46,64,42,46,64,42,46,64,42,46,64,42,46,64,42,46,64,42,46,64, +42,46,64,42,46,64,42,46,64,42,46,64,42,46,64,42,46,64,42,46,64,42,46,64,42,46, +64,42,46,64,42,46,64,42,46,64,42,46,64,42,46,64,42,46,64,42,46,64,42,46,64,42, +46,64,42,46,63,42,46,63,42,46,63,42,46,64,42,46,64,42,46,64,42,46,64,42,46,64, +42,46,64,42,46,64,42,46,64,42,46,61,33,38,95,100,101,95,100,101,136,133,134,132, +131,132,131,130,131,129,128,129,130,129,130,137,137,137,51,86,144,118,157,228, +116,156,226,116,155,226,115,155,226,116,155,226,116,156,226,118,157,228,50,77, +126,103,137,199,102,136,198,102,135,198,101,135,198,109,142,200,122,155,205,128, +159,206,128,160,207,128,161,207,135,169,218,146,183,235,146,184,236,146,183,236, +147,183,236,149,185,238,68,109,174,149,186,238,147,184,237,146,184,236,146,184, +236,146,184,236,146,184,236,146,183,235,141,178,235,127,165,230,118,156,226,115, +155,226,123,161,229,143,179,235,129,167,230,121,160,230,53,85,140,118,157,228, +116,156,226,116,155,226,115,155,226,115,155,226,115,155,226,116,155,226,116,156, +226,116,155,226,115,155,226,115,155,226,115,155,226,116,155,226,116,156,226,118, +157,228,48,73,120,88,119,188,83,113,184,83,111,183,82,111,184,84,114,185,86,117, +187,99,132,196,103,137,199,114,150,217,132,170,231,143,179,235,146,183,236,146, +184,236,147,184,237,149,186,238,68,109,174,149,186,238,147,184,237,146,183,236, +143,182,235,137,175,233,121,158,228,115,155,226,116,156,226,116,155,226,115,155, +226,115,155,226,115,155,226,116,155,226,116,156,226,118,157,228,53,85,140,118, +157,228,116,156,226,116,155,226,115,155,226,115,155,226,115,155,226,116,155,226, +116,156,226,116,155,226,115,155,226,115,155,226,115,155,226,116,155,226,116,156, +226,118,157,228,53,85,140,118,157,228,116,156,226,116,155,226,115,155,226,115, +155,226,115,155,226,116,155,226,116,156,226,116,155,226,115,155,226,115,155,226, +115,155,226,116,155,226,116,156,226,117,156,226,67,47,65,72,49,69,120,121,128, +53,30,56,96,69,93,100,70,96,148,149,156,65,37,68,109,83,105,107,76,108,154,151, +156,66,39,64,31,44,44,189,190,114,30,30,43,45,43,46,44,42,49,53,50,62,56,51,65, +54,54,58,53,49,60,52,52,52,52,48,60,52,52,57,51,57,57,51,52,51,51,56,61,51,52, +51,51,56,51,51,48,51,51,48,51,51,55,55,51,61,60,51,51,57,51,49,54,51,57,65,51, +59,51,51,52,51,51,56,60,51,49,51,51,47,51,51,56,52,51,46,52,52,60,60,52,48,52, +45,53,54,40,43,40,40,39,47,41,39,40,27,28,57,160,158,85,28,26,57,66,39,64,110, +80,107,107,80,103,152,152,156,65,38,70,106,81,102,100,70,99,136,136,140,53,31, +58,83,62,80,74,51,74,109,109,113,161,58,73,161,64,78,161,64,78,161,64,78,161,64, +78,161,64,78,161,64,78,161,64,78,161,64,78,161,64,78,161,64,78,161,64,78,161,64, +78,161,64,78,161,64,78,161,64,78,161,64,78,161,64,78,161,64,78,177,62,79,161,64, +78,161,64,78,161,64,78,161,64,78,161,64,78,161,64,78,161,64,78,161,64,78,161,64, +78,161,64,78,161,64,78,161,64,78,161,64,78,161,64,78,161,64,78,161,64,78,161,64, +78,161,64,78,161,64,78,161,64,78,161,64,78,161,64,78,161,64,78,161,64,78,161,64, +78,161,64,78,161,64,78,161,64,78,161,64,78,161,64,78,161,64,78,161,64,78,161,64, +78,177,62,79,161,64,78,161,64,78,161,64,78,161,64,78,161,64,78,161,64,78,161,64, +78,161,64,78,161,64,78,162,59,75,95,100,101,95,100,101,138,137,138,136,135,136, +137,136,137,141,140,141,142,141,143,137,134,133,50,85,144,116,156,226,113,153, +224,146,177,238,145,177,237,146,177,238,113,153,224,116,156,226,49,76,126,102, +136,198,99,133,196,128,154,208,127,153,207,132,158,208,147,168,212,154,172,213, +125,158,205,156,175,216,168,188,233,176,198,245,176,198,245,177,199,245,143,180, +234,147,183,235,66,107,171,147,184,236,143,181,234,177,199,245,176,198,245,176, +198,245,176,198,245,176,199,246,144,181,233,171,195,243,158,185,240,148,178,238, +145,176,237,152,181,238,140,176,232,137,173,232,52,86,143,116,156,226,113,153, +224,146,177,238,145,177,237,145,177,237,145,177,237,146,178,238,113,153,223,146, +178,238,145,177,237,145,177,237,145,177,237,146,177,238,113,153,224,116,156,226, +45,69,113,79,107,181,79,107,180,103,131,195,102,130,194,100,128,193,99,129,195, +113,143,206,106,143,211,145,176,236,148,178,238,160,187,240,173,195,243,176,197, +243,143,181,234,147,184,236,66,107,172,147,184,236,143,181,234,177,199,245,175, +199,245,175,195,243,166,192,242,150,182,238,113,152,223,146,178,238,145,177,237, +145,177,237,145,177,237,146,177,238,113,153,224,116,156,226,52,84,139,116,156, +226,113,153,224,146,177,238,145,177,237,145,177,237,145,177,237,146,178,238,113, +153,223,146,178,238,145,177,237,145,177,237,145,177,237,146,177,238,113,153,224, +116,156,226,52,84,139,116,156,226,113,153,224,146,177,238,145,177,237,145,177, +237,145,177,237,146,178,238,113,153,223,146,178,238,145,177,237,145,177,237,145, +177,237,146,177,238,113,153,224,115,154,224,105,106,116,111,110,113,120,121,122, +89,69,88,138,139,147,144,143,146,148,149,150,107,83,106,153,151,159,152,154,156, +154,154,156,66,39,64,31,33,43,189,188,114,30,28,53,45,43,54,44,50,59,53,49,57, +56,60,56,54,59,54,53,49,53,52,48,52,52,48,52,52,48,60,51,47,51,51,49,51,51,51, +51,51,47,62,51,57,51,51,48,65,50,46,49,42,55,41,42,43,48,50,54,49,51,51,51,51, +51,51,51,58,58,51,53,52,51,48,51,51,48,51,51,47,59,51,49,52,51,66,63,52,47,52, +50,50,54,42,45,42,40,40,40,40,40,40,41,39,43,28,25,48,156,157,84,29,26,39,66,39, +64,155,153,159,152,150,158,152,150,157,107,77,103,149,147,157,144,142,146,136, +137,140,90,64,86,122,120,130,114,112,116,109,110,113,159,57,72,158,62,76,158,62, +76,158,62,76,158,62,76,158,62,76,158,62,76,158,62,76,158,62,76,158,62,76,158,62, +76,158,62,76,158,62,76,158,62,76,158,62,76,158,62,76,158,62,76,158,62,76,158,63, +76,174,60,78,158,63,76,158,62,76,158,62,76,158,62,76,158,62,76,158,62,76,158,62, +76,158,62,76,158,62,76,158,62,76,158,62,76,158,62,76,158,62,76,158,62,76,158,62, +76,158,62,76,158,62,76,158,62,76,158,62,76,158,62,76,158,62,76,158,62,76,158,62, +76,158,62,76,133,67,79,128,55,67,128,55,67,128,55,67,128,55,67,128,55,67,133,67, +79,158,62,76,158,63,76,174,60,78,158,63,76,158,62,76,158,62,76,158,62,76,158,62, +76,158,62,76,158,62,76,158,62,76,158,62,76,159,58,73,95,100,101,95,100,101,133, +132,133,135,133,134,137,136,137,143,142,143,140,139,140,149,148,148,49,85,143, +116,155,226,146,177,238,144,176,237,144,176,237,144,176,237,146,177,238,116,155, +226,49,76,126,101,133,197,128,154,208,126,153,207,126,153,207,128,154,207,139, +163,210,153,172,214,130,163,212,169,190,235,174,197,243,175,198,245,175,198,245, +175,198,245,177,199,245,146,183,236,66,106,171,139,176,222,176,199,246,175,198, +245,175,198,245,175,198,245,175,198,245,176,198,245,143,181,234,175,196,243,171, +194,243,159,186,240,147,178,238,144,176,237,150,182,238,135,173,232,62,99,160, +121,159,228,146,177,237,144,176,237,144,176,237,144,176,237,144,176,237,145,176, +237,113,152,223,145,176,237,144,176,237,144,176,237,144,176,237,144,176,237,146, +177,238,116,155,226,44,67,111,79,106,181,100,128,194,98,127,192,98,126,192,100, +132,200,111,146,218,126,160,230,111,150,222,145,176,237,144,176,237,147,178,238, +160,187,240,171,194,243,176,197,243,146,184,236,66,107,172,146,184,236,177,199, +245,175,198,245,175,198,245,174,198,245,173,196,243,168,193,242,118,157,226,145, +176,237,144,176,237,144,176,237,144,176,237,144,176,237,146,177,238,116,155,226, +52,84,139,116,155,226,146,177,238,144,176,237,144,176,237,144,176,237,144,176, +237,145,176,237,113,152,223,145,176,237,144,176,237,144,176,237,144,176,237,144, +176,237,146,177,238,116,155,226,52,84,139,111,150,215,144,175,235,144,176,237, +144,176,237,144,176,237,144,176,237,145,176,237,113,152,223,145,176,237,144,176, +237,144,176,237,144,176,237,144,176,237,146,177,238,114,154,224,40,25,42,43,24, +42,81,57,78,56,35,60,59,38,61,61,36,60,105,75,101,68,44,73,67,49,70,66,39,65, +110,78,112,66,39,64,31,30,55,189,188,114,30,30,46,45,44,46,44,44,45,54,48,59,56, +51,57,54,50,55,53,55,63,52,51,61,52,48,53,52,48,52,51,46,51,51,54,51,51,61,51, +51,56,58,51,52,51,51,55,51,42,37,41,170,168,171,170,168,170,42,37,41,51,60,55, +51,48,58,51,48,51,51,49,51,51,47,51,51,55,51,51,60,55,51,51,52,51,46,58,52,57, +63,49,60,53,41,40,41,40,48,40,40,39,40,41,39,54,28,25,48,159,160,84,29,33,40,66, +39,64,70,43,68,66,39,64,108,78,104,68,45,67,66,41,64,60,36,60,92,68,99,56,37,55, +50,30,48,44,25,43,70,51,75,189,83,101,186,85,103,186,85,103,186,85,103,186,85, +103,186,85,103,186,85,103,186,85,103,186,85,103,186,85,103,186,85,102,186,85, +102,186,85,102,186,85,102,186,85,102,186,85,102,186,85,102,186,85,102,186,85, +102,190,75,92,186,85,102,186,85,102,186,85,102,186,85,102,186,85,102,186,85,102, +186,85,102,186,85,102,186,85,102,186,85,102,186,85,102,186,85,102,186,85,102, +186,85,102,186,85,102,186,85,102,186,85,102,186,85,102,186,85,102,186,85,102, +186,85,102,186,85,102,186,85,102,186,85,102,150,71,86,186,85,102,186,85,102,186, +85,102,186,85,102,186,85,102,150,71,86,186,85,102,186,85,102,190,75,92,186,85, +102,186,85,102,186,85,102,186,85,102,186,85,102,186,85,102,186,85,102,186,85, +102,186,85,102,188,82,100,95,100,101,95,100,101,143,142,143,139,138,139,139,138, +139,135,133,134,131,130,131,149,148,148,49,85,143,115,155,226,145,177,237,144, +176,237,144,176,237,144,176,237,145,177,237,115,155,226,48,74,124,88,119,188, +125,152,206,126,153,207,126,153,207,126,153,207,130,157,209,151,173,220,137,173, +228,175,199,245,175,198,245,175,198,245,175,198,245,175,198,245,176,198,245,146, +184,236,64,106,163,103,142,161,165,188,230,174,198,245,175,198,245,175,198,245, +175,198,245,176,198,245,143,181,233,176,198,245,174,196,243,171,194,243,158,186, +240,146,177,238,144,175,237,119,158,228,62,99,160,132,170,227,148,179,237,144, +176,237,144,176,237,144,176,237,144,176,237,145,176,237,113,152,223,145,176,237, +144,176,237,144,176,237,144,176,237,144,176,237,145,177,237,115,155,226,45,68, +113,78,106,181,98,127,192,97,126,192,97,127,193,108,144,217,115,152,229,139,171, +236,113,152,223,145,176,237,144,176,237,144,176,237,147,178,238,159,186,240,173, +195,243,146,183,236,66,107,171,145,183,235,176,198,244,175,198,244,175,198,245, +175,198,245,174,198,245,175,197,243,136,173,231,151,181,238,144,176,237,144,176, +237,144,176,237,144,176,237,145,177,237,115,155,226,52,84,139,115,155,226,145, +177,237,144,176,237,144,176,237,144,176,237,144,176,237,145,176,237,113,152,223, +145,176,237,144,176,237,144,176,237,144,176,237,144,176,237,145,177,237,115,155, +226,51,86,132,86,129,161,127,161,206,142,174,234,144,176,237,144,176,237,144, +176,237,145,176,237,113,152,223,145,176,237,144,176,237,144,176,237,144,176,237, +144,176,237,145,176,237,114,153,224,69,51,67,74,53,71,121,118,123,55,34,55,98, +73,96,103,75,99,149,147,151,67,42,67,111,83,110,110,80,113,155,154,157,66,39,64, +31,34,47,189,188,114,30,35,54,45,55,47,44,41,50,55,49,63,56,52,57,54,50,55,53, +54,59,52,55,54,52,48,57,52,48,57,51,70,65,51,62,61,51,46,55,51,48,51,51,59,51, +51,50,57,39,37,39,168,166,168,168,166,168,39,37,39,51,48,51,51,48,51,51,55,54, +51,47,51,51,47,52,51,47,56,51,47,62,51,47,52,51,47,55,52,48,53,49,47,49,41,44, +51,40,40,40,40,45,46,41,39,52,28,25,41,159,158,86,29,26,46,66,39,64,113,90,114, +110,80,106,153,151,155,67,42,71,108,87,107,103,78,106,136,137,144,55,34,58,84, +67,83,77,58,79,109,110,118,194,52,74,192,59,78,192,59,78,192,59,78,192,59,77, +192,59,77,192,59,77,192,59,77,192,59,77,192,59,77,192,59,77,192,59,77,192,59,77, +192,59,77,192,59,77,192,59,77,192,59,77,192,59,77,192,59,77,192,59,78,192,59,77, +192,59,77,192,59,77,192,59,77,192,59,77,192,59,77,192,59,77,192,59,77,192,59,77, +192,59,77,192,59,77,192,59,77,192,59,77,192,59,77,192,59,77,192,59,77,192,59,77, +192,59,77,192,59,77,192,59,77,192,59,77,192,59,77,192,59,77,192,59,77,155,53,68, +192,59,77,192,59,77,192,59,77,192,59,77,192,59,77,155,53,68,192,59,77,192,59,77, +192,59,78,192,59,77,192,59,77,192,59,77,192,59,77,192,59,77,192,59,77,192,59,77, +192,59,77,192,59,77,194,54,74,95,100,101,95,100,101,138,139,140,136,135,136,138, +137,138,145,143,144,138,138,139,147,144,143,49,85,143,115,155,226,145,177,237, +144,176,237,144,176,237,144,176,237,145,177,237,114,154,226,45,70,116,80,109, +182,120,147,203,122,150,205,126,153,207,126,153,207,129,157,212,146,174,233,130, +168,229,173,195,243,174,196,243,175,198,245,175,198,245,175,198,245,176,198,245, +146,184,236,63,106,160,103,143,161,162,186,226,173,196,243,174,198,245,175,198, +245,175,198,245,176,198,245,143,181,233,176,198,245,175,198,245,172,194,243,162, +187,241,149,179,238,137,169,236,106,146,223,52,87,139,110,150,187,154,180,224, +147,179,237,144,176,237,144,176,237,144,176,237,145,176,237,113,152,223,145,176, +237,144,176,237,144,176,237,144,176,237,144,176,237,145,177,237,115,155,226,45, +69,115,78,106,181,98,127,192,98,127,192,97,127,193,108,138,201,132,163,224,145, +176,237,113,152,223,145,176,237,144,176,237,144,176,237,144,176,237,147,178,238, +158,185,240,141,178,234,62,96,156,131,165,213,161,182,225,164,185,229,172,194, +241,175,198,245,175,198,245,175,198,245,142,179,233,169,193,242,153,182,239,145, +177,237,144,176,237,144,176,237,145,177,237,115,155,226,52,84,139,115,155,226, +145,177,237,144,176,237,144,176,237,144,176,237,144,176,237,145,176,237,113,152, +223,145,176,237,144,176,237,144,176,237,144,176,237,144,176,237,145,177,237,115, +155,226,51,87,130,84,128,156,121,155,196,142,174,233,144,176,237,144,176,237, +144,176,237,145,176,237,113,152,223,145,176,237,144,176,237,144,176,237,144,176, +237,144,176,237,145,176,237,114,153,224,67,47,67,72,52,69,120,117,124,53,30,61, +96,69,95,100,74,96,148,146,152,65,38,74,109,80,105,107,81,103,154,151,156,66,39, +64,31,29,46,189,189,114,30,32,55,45,43,45,44,48,50,56,69,56,56,53,62,54,50,64, +53,59,59,52,47,54,52,59,59,52,48,52,51,49,54,51,47,52,51,47,54,51,48,55,51,56, +59,51,49,51,39,35,39,168,166,168,168,166,168,39,44,44,51,52,52,51,47,52,51,56, +57,51,47,62,51,55,61,51,47,54,51,47,60,51,47,51,51,47,51,52,48,58,50,54,56,42, +44,44,40,46,40,40,39,54,41,45,49,30,50,43,154,152,83,30,27,40,66,39,64,110,80, +109,107,75,103,152,151,157,65,42,63,106,78,102,100,70,96,136,140,140,53,34,52, +83,60,80,74,51,71,109,113,113,160,58,73,159,64,78,159,64,78,159,64,78,159,64,78, +159,64,78,158,64,78,175,62,79,158,64,78,159,63,78,159,63,78,159,63,78,159,63,78, +159,63,78,159,63,78,159,63,78,159,63,78,159,63,78,159,63,78,159,63,78,159,63,78, +159,63,78,159,63,78,159,63,78,159,63,78,159,63,78,159,63,78,159,63,78,159,63,78, +159,63,78,159,63,78,159,63,78,158,63,78,174,61,79,158,63,78,159,63,78,159,63,78, +159,63,78,159,63,78,159,63,78,159,63,78,159,63,78,159,63,78,159,63,78,129,55,69, +159,63,78,159,63,78,158,63,77,158,63,77,158,63,77,128,55,68,158,63,77,158,63,77, +158,63,77,158,63,77,158,63,77,158,63,77,158,63,77,158,63,77,158,63,77,158,63,77, +158,63,77,158,63,77,159,59,74,95,100,101,95,100,101,136,135,136,135,135,136,141, +140,141,146,145,146,137,136,137,141,139,140,49,85,142,115,155,226,145,177,237, +144,176,237,144,176,237,144,176,237,145,177,237,114,154,226,43,67,111,78,107, +181,102,130,194,101,130,194,121,148,204,126,153,207,133,162,219,145,176,236,116, +155,225,161,187,240,171,194,243,174,196,243,175,198,245,175,198,245,176,198,245, +146,184,236,65,107,169,117,156,186,172,193,239,173,196,243,173,196,243,174,198, +245,175,198,245,176,198,245,143,181,233,176,198,245,174,197,245,160,187,243,152, +179,239,148,176,239,135,169,235,94,132,220,49,81,130,102,142,189,156,182,227, +163,188,240,148,180,238,144,176,237,144,176,237,145,176,237,113,152,223,145,176, +237,144,176,237,144,176,237,144,176,237,144,176,237,145,177,237,115,155,226,45, +69,113,78,106,181,98,127,192,97,126,192,110,138,198,125,153,207,129,158,213,142, +172,232,113,152,223,145,176,237,144,176,237,144,176,237,144,176,237,144,176,237, +147,177,237,128,165,230,58,91,147,127,159,205,153,173,214,153,173,215,161,182, +226,175,198,244,175,198,245,176,198,245,143,181,234,175,196,243,169,193,242,154, +183,239,145,177,237,144,176,237,145,177,237,115,155,226,52,84,139,115,155,226, +145,177,237,144,176,237,144,176,237,144,176,237,144,176,237,145,176,237,113,152, +223,145,176,237,144,176,237,144,176,237,144,176,237,144,176,237,145,177,237,115, +155,226,51,86,131,85,129,158,122,156,197,142,174,233,144,176,237,144,176,237, +144,176,237,145,176,237,113,152,223,145,176,237,144,176,237,144,176,237,144,176, +237,144,176,237,145,176,237,114,153,224,105,105,107,111,110,117,120,117,124,89, +68,89,138,138,140,144,143,149,148,146,152,107,82,107,153,151,160,152,150,157, +154,151,156,66,39,64,31,53,43,189,188,114,30,59,45,45,53,50,44,43,46,56,53,55, +56,51,56,54,50,54,53,49,61,52,47,57,52,61,52,52,52,52,51,47,54,51,48,52,51,52, +52,51,47,58,51,52,51,51,48,54,39,44,43,168,166,168,168,169,168,39,33,39,51,59, +51,51,47,68,51,48,51,51,47,51,51,47,51,51,47,51,51,53,51,51,47,51,51,47,51,52, +54,52,51,55,53,43,41,46,40,38,40,40,38,40,41,39,42,28,25,51,156,155,84,29,35,41, +66,39,64,155,153,160,152,150,160,152,153,156,107,80,103,149,147,157,144,142,147, +136,139,140,90,66,86,122,120,130,114,112,116,109,112,113,160,58,73,159,63,77, +159,63,77,159,63,77,159,63,77,159,63,77,159,63,77,174,61,78,159,63,77,159,63,77, +159,63,77,159,63,77,159,63,77,159,63,77,159,63,77,159,63,77,159,63,77,158,63,77, +158,63,77,158,63,77,158,63,77,158,63,77,158,63,77,158,63,77,158,63,77,158,63,77, +158,63,77,158,63,77,158,63,77,158,63,77,158,63,77,158,63,77,158,63,77,174,61,78, +158,63,77,158,63,77,158,63,77,158,63,77,158,63,77,158,63,77,158,63,77,158,63,77, +158,63,77,158,63,77,133,68,80,129,55,68,129,55,68,129,55,68,129,55,68,129,55,68, +133,67,80,158,62,77,158,62,77,158,62,77,158,62,77,158,62,77,158,62,77,158,62,77, +158,62,77,158,62,77,158,62,77,158,62,77,159,62,77,160,57,74,95,100,101,95,100, +101,140,139,140,142,141,142,140,139,140,146,145,146,139,138,139,148,147,145,49, +85,142,115,155,226,145,177,237,144,176,237,144,176,237,144,176,237,145,177,237, +114,154,226,43,66,110,79,107,181,100,129,194,102,130,194,111,138,198,125,151, +206,130,157,212,143,174,233,113,153,223,148,179,238,160,187,240,173,195,243,175, +196,243,176,198,245,177,199,245,146,184,236,64,106,163,104,144,163,168,191,233, +175,198,245,174,196,243,175,196,243,175,198,245,177,199,245,143,181,234,177,199, +245,175,197,245,162,187,243,156,183,242,155,180,240,151,179,241,107,148,224,49, +83,136,100,141,193,139,172,222,164,189,240,165,190,241,149,180,238,145,176,237, +146,178,238,113,153,223,146,178,238,145,176,237,145,176,237,145,176,237,145,176, +237,146,178,238,116,155,226,44,67,112,79,106,181,99,128,193,108,135,197,126,153, +207,127,154,208,129,156,211,139,170,227,113,153,223,146,178,238,145,176,237,145, +176,237,145,176,237,145,176,237,146,178,238,117,156,226,53,80,132,122,154,205, +153,172,212,153,173,214,154,174,215,172,193,239,176,198,245,177,199,245,143,181, +234,176,199,246,174,196,243,170,194,242,156,184,239,147,177,237,146,177,238,116, +155,226,52,84,139,113,152,225,146,178,238,145,176,237,145,176,237,145,176,237, +145,176,237,146,178,238,113,153,223,146,178,238,145,176,237,145,176,237,145,176, +237,145,176,237,146,178,238,116,155,226,52,85,135,93,134,174,128,161,206,144, +175,235,145,176,237,145,176,237,145,176,237,146,178,238,113,153,223,146,178,238, +145,176,237,145,176,237,145,176,237,145,176,237,146,178,238,114,154,224,40,23, +44,43,40,43,81,60,78,56,40,56,59,35,64,61,58,61,105,79,101,68,50,69,67,54,68,66, +55,65,110,78,106,66,39,64,31,29,58,189,187,115,30,35,46,45,49,45,44,43,44,56,53, +56,56,56,73,54,50,54,53,48,59,52,63,52,52,47,52,52,48,52,51,52,55,51,47,55,51, +50,52,51,53,60,51,50,58,51,52,51,39,40,39,168,167,170,168,166,168,39,34,39,51, +47,52,51,48,50,51,59,51,51,47,55,51,47,56,51,51,50,51,47,60,51,47,70,51,47,51, +52,48,52,51,52,51,44,46,48,40,63,40,40,37,47,41,41,40,27,33,56,164,162,87,28,26, +51,66,39,64,70,42,68,66,62,64,108,80,107,68,50,67,66,49,64,60,36,69,92,72,93,56, +41,55,50,37,49,44,25,50,70,53,70,189,85,101,186,86,103,186,86,103,186,86,103, +186,86,103,186,86,103,186,86,103,186,86,103,186,86,103,186,86,103,186,86,103, +186,86,103,186,86,103,186,86,103,186,86,103,186,86,103,186,86,103,186,86,103, +186,86,103,186,86,103,186,86,103,186,86,103,186,86,103,186,86,103,186,86,103, +186,86,103,186,86,103,186,86,103,186,86,103,186,86,103,186,86,103,186,86,103, +186,86,103,186,86,103,186,86,103,186,86,103,186,86,103,186,86,103,186,86,103, +186,86,103,186,86,103,186,86,103,186,86,103,186,86,103,186,86,103,186,86,103, +186,86,103,186,86,103,186,86,103,186,86,103,186,86,103,186,86,103,186,86,103, +186,86,103,185,86,103,185,86,103,185,86,103,185,86,103,185,86,103,185,86,103, +185,86,103,185,86,103,185,86,103,187,83,101,95,100,101,95,100,101,143,142,143, +136,135,136,136,135,136,145,143,144,140,139,140,150,149,148,49,85,142,115,155, +226,145,177,237,144,176,237,144,176,237,144,176,237,145,177,237,114,154,226,42, +64,107,79,107,181,77,105,177,90,122,188,98,131,194,99,133,195,99,133,195,105, +142,207,114,154,223,113,153,223,116,155,225,129,167,228,139,176,233,143,180,234, +143,181,234,147,184,236,65,107,169,123,161,194,141,179,230,143,181,233,143,180, +234,143,180,232,142,180,232,143,180,234,144,182,234,143,181,234,141,180,233,127, +168,229,120,163,227,119,162,227,116,159,228,117,158,229,54,89,144,97,136,179,92, +134,178,114,153,219,132,171,230,132,170,230,118,157,226,112,152,223,114,154,224, +113,153,223,113,152,223,113,152,223,113,152,223,113,152,223,113,153,223,116,156, +226,46,71,116,79,108,181,79,107,179,96,129,193,103,138,202,105,140,206,106,143, +209,111,150,219,114,154,224,113,153,223,113,152,223,113,152,223,113,152,223,113, +152,223,113,153,223,116,156,226,49,75,124,109,142,200,120,153,203,124,156,203, +125,158,205,129,163,210,140,177,228,143,181,234,144,182,234,143,181,234,143,181, +234,143,180,232,138,175,232,127,165,228,115,154,225,116,155,226,50,80,134,91, +131,217,110,149,222,113,152,223,113,152,223,113,152,223,113,152,223,113,153,223, +114,154,224,113,153,223,113,152,223,113,152,223,113,152,223,113,152,223,113,153, +223,116,156,226,51,82,126,85,127,157,86,129,162,109,148,213,113,152,223,113,152, +223,113,152,223,113,153,223,114,154,224,113,153,223,113,152,223,113,152,223,113, +152,223,113,152,223,113,153,223,115,154,224,69,51,70,74,52,71,121,118,123,55,43, +60,98,74,99,103,74,99,149,147,151,67,53,73,111,82,113,110,80,106,155,152,157,66, +39,64,31,29,43,189,187,114,30,39,41,45,62,51,44,55,43,56,52,62,56,51,56,54,50, +54,53,63,53,52,54,58,52,50,57,52,54,67,51,47,57,51,62,60,51,47,61,51,47,52,51, +52,51,51,47,51,39,34,43,168,166,169,168,166,171,39,44,39,51,47,51,51,48,67,51, +47,51,51,47,54,51,47,54,51,47,70,51,49,50,51,47,50,51,52,51,52,48,52,51,49,52, +46,42,50,40,41,46,40,39,39,41,51,57,27,25,54,162,160,87,28,26,56,66,39,64,113, +84,113,110,83,106,153,151,155,67,42,65,108,87,109,103,79,99,136,137,147,55,34, +54,84,67,85,77,59,74,109,110,120,194,53,74,192,60,78,192,60,78,192,60,78,192,60, +78,192,60,78,191,60,77,191,60,77,191,60,77,191,60,77,191,60,77,191,60,77,191,60, +77,191,60,77,191,60,77,191,60,77,191,60,77,191,60,77,191,60,77,191,60,77,191,60, +77,191,60,77,191,60,77,191,60,77,191,60,77,191,60,77,191,60,77,191,60,77,191,60, +77,191,60,77,191,60,77,191,60,77,191,60,77,191,60,77,191,60,77,191,60,77,191,60, +77,191,60,77,191,60,77,191,60,77,191,60,77,191,60,77,191,60,77,191,60,77,191,60, +77,191,60,77,191,60,77,191,60,77,191,60,77,191,60,77,191,60,77,191,60,77,191,60, +77,191,60,77,191,60,77,192,60,77,192,60,77,192,60,77,192,60,77,192,60,77,192,60, +77,192,60,77,192,60,77,194,55,76,95,100,101,95,100,101,135,135,136,133,132,133, +137,136,137,137,136,137,136,135,136,138,136,137,49,85,142,115,155,226,145,177, +237,144,176,237,144,176,237,144,176,237,145,177,237,114,154,226,42,65,108,79, +106,181,106,135,197,125,151,206,127,153,207,127,153,207,127,153,207,130,158,212, +112,151,221,146,178,238,145,176,237,148,178,238,160,187,240,173,195,243,176,197, +243,146,184,236,66,107,171,141,179,228,177,199,245,176,198,245,176,198,245,175, +198,245,174,196,243,175,197,243,143,180,234,177,199,246,176,198,245,173,196,245, +163,188,243,166,190,243,156,183,242,121,164,230,60,94,151,116,154,202,134,166, +215,144,175,235,149,180,238,165,192,241,172,195,242,152,182,238,112,152,223,146, +178,238,145,176,237,145,176,237,145,176,237,145,176,237,146,178,238,116,155,226, +46,71,117,79,107,181,100,129,194,120,148,204,143,174,234,145,176,236,145,176, +236,146,178,238,113,153,223,146,178,238,145,176,237,145,176,237,145,176,237,145, +176,237,146,178,238,116,155,226,49,75,123,101,135,198,132,159,208,147,168,212, +153,171,212,153,173,214,160,180,223,176,198,244,143,180,233,177,199,245,176,198, +245,176,198,245,175,196,243,173,195,243,161,187,240,117,155,227,43,71,121,90, +129,217,141,174,237,145,176,237,145,176,237,145,176,237,145,176,237,146,178,238, +113,153,223,146,178,238,145,176,237,145,176,237,145,176,237,145,176,237,146,178, +238,116,155,226,49,76,123,93,129,177,122,154,197,144,175,235,145,176,237,145, +176,237,145,176,237,146,178,238,113,153,223,146,178,238,145,176,237,145,176,237, +145,176,237,145,176,237,146,178,238,114,154,224,67,49,67,72,49,73,120,117,125, +53,35,51,96,71,96,100,70,102,148,146,153,65,44,63,109,80,105,107,79,109,154,151, +156,66,39,64,31,47,43,189,187,114,30,28,50,45,43,44,44,54,62,57,55,67,56,58,57, +54,50,54,53,59,53,52,49,52,52,48,52,52,49,53,51,49,52,51,47,52,51,47,51,51,47, +51,51,47,51,51,47,56,39,34,46,168,167,169,168,166,170,39,44,40,51,49,51,51,48, +51,51,49,57,51,47,57,51,51,54,51,52,50,51,47,57,51,47,57,51,51,56,52,48,62,52, +48,57,49,45,56,41,44,41,40,44,49,41,40,40,27,25,44,165,163,87,28,26,40,66,39,64, +110,80,107,107,75,103,152,153,160,65,38,63,106,81,108,100,71,101,137,137,144,54, +31,52,83,63,85,75,52,75,109,109,116,160,58,73,158,64,78,158,64,78,158,63,78,158, +63,78,158,63,78,158,63,78,158,63,78,158,63,78,158,63,78,158,63,78,158,63,78,158, +63,78,158,63,78,158,63,78,158,63,78,158,63,78,158,63,78,158,63,78,158,63,78,158, +63,78,158,63,78,158,63,78,158,63,78,158,63,78,158,63,78,158,63,78,158,63,78,158, +63,78,158,63,78,158,63,78,158,63,78,158,63,77,158,63,77,158,63,77,158,63,77,158, +63,77,158,63,77,158,63,77,158,63,77,158,63,77,158,63,77,157,63,77,157,63,77,157, +63,77,157,63,77,157,63,77,157,63,77,157,63,77,157,63,77,157,63,77,157,63,77,156, +63,77,173,61,78,156,63,77,157,63,77,157,63,77,157,63,77,157,63,77,157,63,77,157, +63,77,157,63,77,157,63,77,158,60,74,95,100,101,95,100,101,135,133,134,133,132, +133,131,130,131,142,141,142,132,131,131,141,140,139,49,85,142,115,155,226,145, +177,237,144,176,237,144,176,237,144,176,237,145,177,237,114,154,226,45,69,114, +79,108,182,110,138,198,124,151,206,126,153,207,126,153,207,126,153,207,127,154, +208,109,147,215,145,176,237,144,176,237,144,176,237,147,178,238,160,187,240,173, +195,243,145,182,235,64,106,164,129,167,206,173,196,241,175,198,245,175,198,245, +175,198,245,174,198,245,174,196,243,142,179,232,175,196,243,175,198,245,175,198, +245,173,197,245,166,191,244,153,181,242,119,164,230,58,89,144,126,159,208,156, +182,233,146,178,238,144,176,237,147,178,238,156,185,240,172,195,242,119,158,226, +145,176,237,144,176,237,144,176,237,144,176,237,144,176,237,145,177,237,114,154, +226,45,70,117,78,107,181,99,128,193,122,152,212,144,176,236,144,176,237,144,176, +237,145,176,237,113,152,223,145,176,237,144,176,237,144,176,237,144,176,237,144, +176,237,145,177,237,115,155,226,49,75,123,101,135,198,127,153,207,131,158,208, +146,167,212,151,171,212,152,173,214,163,183,227,132,167,216,171,192,238,175,198, +245,175,198,245,175,198,245,174,196,243,173,195,243,129,167,230,42,70,121,89, +129,217,137,169,235,144,176,237,144,176,237,144,176,237,144,176,237,145,176,237, +113,152,223,145,176,237,144,176,237,144,176,237,144,176,237,144,176,237,145,177, +237,115,155,226,49,75,122,93,129,180,110,143,176,141,173,230,144,176,237,144, +176,237,144,176,237,145,176,237,113,152,223,145,176,237,144,176,237,144,176,237, +144,176,237,144,176,237,145,176,237,114,153,224,105,103,112,111,113,118,120,117, +124,89,62,91,138,136,144,144,146,150,148,146,152,107,76,109,153,154,157,152,150, +158,154,151,156,66,39,64,31,29,43,189,187,114,30,28,43,45,43,45,44,44,44,58,58, +64,56,60,56,54,51,61,53,50,53,52,48,52,52,48,56,52,48,62,51,47,52,51,55,54,51, +47,51,51,56,51,51,48,57,51,47,54,42,39,46,170,171,172,170,168,169,42,37,46,51, +56,66,51,47,51,51,55,51,51,49,51,51,47,54,51,47,51,51,47,56,51,51,52,51,58,59, +52,50,57,50,46,57,53,49,62,46,44,51,40,43,39,41,40,43,27,42,48,160,160,85,28,26, +51,66,39,64,155,153,159,152,152,158,152,151,154,107,81,107,150,150,155,145,143, +150,137,138,144,90,67,90,122,122,128,114,112,120,109,110,116,159,58,73,158,63, +77,158,63,77,157,63,77,157,63,77,157,63,77,157,63,77,157,63,77,157,63,77,157,63, +77,157,63,77,157,63,77,157,63,77,157,63,77,157,63,77,157,63,77,157,63,77,157,63, +77,157,63,77,157,63,77,157,63,77,157,63,77,157,63,77,157,63,77,157,63,77,157,63, +77,157,63,77,157,63,77,157,63,77,157,63,77,157,62,77,157,62,77,157,62,77,157,62, +77,157,62,77,157,62,77,157,62,77,157,62,77,157,62,77,157,62,77,157,62,77,157,62, +77,157,62,77,157,62,77,157,62,77,157,62,77,157,62,77,157,62,77,157,62,77,157,62, +77,157,62,77,157,62,77,157,62,77,172,60,78,157,62,77,157,62,77,157,62,77,157,62, +77,157,62,77,157,62,76,157,62,76,157,62,76,156,62,76,157,58,73,95,100,101,95, +100,101,137,136,137,132,131,132,132,132,133,139,137,138,136,135,136,141,140,139, +52,88,147,115,155,226,145,176,237,144,176,237,144,176,237,144,176,237,145,177, +237,114,154,226,44,69,114,78,107,181,115,142,200,125,152,207,126,153,207,126, +153,207,126,153,207,127,154,207,107,143,210,145,176,237,144,176,237,144,176,237, +144,176,237,147,178,238,161,187,240,141,178,234,65,106,164,129,167,206,173,196, +241,175,198,245,175,198,245,175,198,245,175,198,245,175,198,245,142,180,232,174, +196,243,174,196,243,175,198,245,173,196,245,163,189,243,154,181,242,119,164,230, +56,90,142,112,147,178,147,172,204,161,186,237,147,180,238,144,176,237,146,177, +237,157,185,240,140,176,232,152,181,238,144,176,237,144,176,237,144,176,237,144, +176,237,145,177,237,114,154,226,46,75,126,84,118,198,107,141,210,117,153,227, +140,173,236,144,176,237,144,176,237,145,176,237,113,152,223,145,176,237,144,176, +237,144,176,237,144,176,237,144,176,237,145,177,237,115,155,226,49,75,123,101, +136,198,127,153,207,126,153,207,129,158,208,145,166,212,151,170,212,153,173,214, +125,158,204,160,180,223,174,197,244,175,198,245,175,198,245,175,198,245,175,196, +243,139,177,234,47,78,135,92,131,219,130,163,234,140,173,236,144,176,237,144, +176,237,144,176,237,145,176,237,113,152,223,145,176,237,144,176,237,144,176,237, +144,176,237,144,176,237,145,177,237,115,155,225,49,77,117,89,126,170,119,149, +194,140,171,231,144,176,237,144,176,237,144,176,237,145,176,237,113,152,223,145, +176,237,144,176,237,144,176,237,144,176,237,144,176,237,145,176,237,114,153,224, +40,27,39,43,24,41,81,57,78,56,40,54,43,29,42,44,26,43,77,55,74,50,36,48,67,57, +67,66,38,64,110,85,106,66,39,64,31,30,44,189,189,114,30,32,43,45,50,45,44,50,45, +58,53,65,56,51,56,54,51,54,53,57,53,52,49,57,52,48,58,52,48,52,51,52,61,51,48, +55,51,51,51,51,52,59,51,46,51,51,49,52,50,48,50,42,36,54,42,36,57,50,45,50,51, +55,58,51,47,59,51,47,51,51,48,52,51,54,51,51,47,51,51,48,51,51,48,51,52,48,53, +48,45,53,48,44,54,45,42,50,41,51,40,40,38,55,41,38,41,27,25,40,161,158,85,28,29, +49,66,39,64,70,43,72,66,39,65,108,79,104,68,51,69,66,44,67,61,36,69,93,70,100, +32,28,42,28,22,39,18,17,39,40,38,58,187,85,101,184,86,103,184,86,103,184,86,103, +184,86,103,184,86,103,184,86,103,184,86,103,184,86,103,184,86,103,184,86,103, +184,86,103,184,86,103,184,86,103,184,86,103,184,86,103,184,86,103,184,86,103, +184,86,103,184,86,103,184,86,103,184,86,103,184,86,103,184,86,103,184,86,103, +184,86,103,184,86,103,184,86,103,184,86,103,184,85,103,184,85,103,184,85,103, +184,85,103,184,85,103,184,85,103,184,85,103,184,85,103,184,85,103,184,85,103, +184,85,103,184,85,103,184,85,103,184,85,103,183,85,103,183,85,103,183,85,103, +183,85,103,183,85,103,183,85,103,183,85,103,183,85,103,183,85,103,183,85,103, +183,85,103,183,85,103,183,85,103,183,85,102,183,85,102,183,85,102,183,85,102, +183,85,102,183,85,102,183,85,102,186,82,100,95,100,101,95,100,101,132,131,132, +132,131,132,135,133,134,135,135,136,137,136,137,138,136,136,62,101,164,120,159, +228,145,176,237,144,176,237,144,176,237,144,176,237,145,177,237,115,155,226,48, +74,124,87,117,187,125,152,206,126,153,207,126,153,207,126,153,207,126,153,207, +127,154,207,105,140,206,145,176,236,144,176,237,144,176,237,144,176,237,144,176, +237,148,178,238,132,168,231,65,105,167,144,181,232,176,198,245,175,198,245,175, +198,245,175,198,245,175,198,245,176,198,245,143,180,234,175,196,243,173,196,243, +172,195,243,161,187,243,154,182,242,154,181,242,120,164,230,57,90,146,132,166, +212,172,195,239,172,195,243,165,190,241,149,180,238,144,176,237,147,177,237,126, +164,227,172,195,242,151,182,239,144,176,237,144,176,237,144,176,237,145,177,237, +113,153,225,45,73,123,92,132,217,118,155,230,118,155,232,135,168,235,143,175, +237,144,176,237,145,176,237,113,152,223,145,176,237,144,176,237,144,176,237,144, +176,237,144,176,237,145,177,237,115,155,226,49,75,123,101,136,198,127,154,207, +126,153,207,126,153,207,130,157,208,145,166,211,152,170,212,125,157,205,158,177, +220,174,197,244,175,198,245,175,198,245,175,198,245,176,198,245,144,181,235,53, +85,149,103,146,223,123,158,233,121,157,232,141,174,236,144,176,237,144,176,237, +145,176,237,113,152,223,145,176,237,144,176,237,144,176,237,144,176,237,144,176, +237,145,177,237,115,155,225,49,77,118,90,127,173,125,152,203,130,159,214,141, +172,232,144,176,237,144,176,237,145,176,237,113,152,223,145,176,237,144,176,237, +144,176,237,144,176,237,144,176,237,145,176,237,114,153,224,75,73,75,96,94,95, +103,103,104,94,93,94,95,94,95,119,118,119,101,101,101,93,93,94,101,97,100,101, +97,101,155,155,155,66,39,64,31,30,43,189,189,115,30,32,43,45,45,47,44,43,44,41, +56,41,57,51,65,54,62,57,53,61,54,52,52,54,52,48,71,52,56,58,51,57,51,51,51,67, +51,48,51,51,52,54,51,65,59,51,47,51,51,47,58,51,47,52,51,50,56,51,47,52,51,47, +52,51,53,51,51,47,57,52,60,51,48,48,51,49,54,50,50,48,55,52,60,51,44,46,44,41, +39,42,40,38,42,38,37,39,40,41,40,40,37,53,41,63,41,29,45,40,158,157,84,29,27,41, +66,39,64,113,84,109,110,79,106,153,157,161,67,53,76,108,85,106,104,75,100,137, +138,146,30,30,47,55,48,65,48,40,58,74,77,82,191,54,74,189,60,78,188,60,78,188, +60,78,188,60,78,188,60,78,188,60,78,188,60,78,188,60,78,188,60,78,188,60,78,188, +60,78,188,60,78,188,60,78,188,60,78,188,60,78,188,60,78,188,60,78,188,60,78,188, +60,78,188,60,78,188,60,78,188,60,78,188,60,78,188,60,78,188,60,78,188,60,78,188, +60,78,188,60,78,188,60,78,188,60,78,188,60,78,188,60,78,188,60,78,188,60,78,188, +60,78,188,60,78,188,60,78,188,60,78,188,60,78,188,60,78,188,60,78,188,60,78,188, +60,78,188,60,78,188,60,78,188,60,78,188,60,78,188,60,78,188,60,78,188,60,78,188, +60,78,188,60,78,188,60,78,188,60,77,189,60,77,187,60,77,187,60,77,187,60,77,187, +60,77,187,60,77,187,60,77,187,60,77,189,56,75,95,100,101,95,100,101,142,141,142, +141,140,141,139,138,139,137,136,137,135,133,134,149,147,146,60,100,163,135,173, +232,149,181,238,144,176,237,144,176,237,144,176,237,146,177,238,116,155,226,49, +76,125,100,133,197,128,154,208,126,153,207,126,153,207,126,153,207,126,153,207, +127,154,207,104,140,205,145,175,236,144,176,237,144,176,237,144,176,237,144,176, +237,146,177,237,118,157,228,58,95,153,141,178,234,176,197,243,174,198,245,175, +198,245,175,198,245,175,198,245,176,198,245,143,181,233,175,198,245,174,196,243, +171,195,243,160,185,241,156,183,242,160,186,242,122,166,231,59,92,148,131,165, +212,173,194,239,174,198,245,172,195,243,165,190,241,149,180,238,145,176,237,115, +153,223,158,185,240,175,198,243,153,182,239,144,176,237,144,176,237,146,177,238, +116,155,226,50,81,134,93,132,218,119,155,233,134,167,235,143,175,237,144,176, +237,144,176,237,145,176,237,113,152,223,145,176,237,144,176,237,144,176,237,144, +176,237,144,176,237,146,177,238,116,155,226,49,75,123,102,135,198,128,154,208, +126,153,207,126,153,207,126,153,207,130,157,208,145,167,211,124,156,206,168,190, +235,175,198,245,175,198,245,175,198,245,175,198,245,177,199,245,144,182,235,55, +89,153,115,157,229,139,171,236,124,159,233,140,173,236,144,176,237,144,176,237, +145,176,237,113,152,223,145,176,237,144,176,237,144,176,237,144,176,237,144,176, +237,146,177,238,116,155,226,49,75,121,100,133,193,128,154,208,126,154,208,133, +162,219,143,174,235,144,176,237,145,176,237,113,152,223,145,176,237,144,176,237, +144,176,237,144,176,237,144,176,237,146,177,238,114,154,224,72,70,72,95,94,95, +103,102,103,94,92,94,95,94,95,119,117,119,100,100,101,93,92,94,101,97,100,100, +96,100,153,153,153,66,39,64,31,39,43,189,187,115,30,39,44,45,44,50,44,55,44,42, +44,42,57,51,56,54,59,62,53,53,53,52,57,58,52,49,51,52,49,63,51,48,52,51,53,51, +51,49,56,51,47,51,51,46,51,51,47,51,51,52,54,51,55,52,51,47,59,51,53,52,51,49, +58,51,47,52,51,47,52,51,51,56,51,51,53,51,49,55,51,50,52,52,49,56,52,53,58,53, +50,61,52,48,58,42,43,47,40,41,43,31,38,44,41,43,50,29,26,40,161,160,87,28,27,47, +66,39,64,110,84,107,107,77,103,152,153,157,65,42,69,107,80,108,101,70,101,137, +137,145,27,24,44,52,46,67,45,38,60,74,77,80,158,60,75,156,64,79,156,64,78,156, +64,78,156,64,78,156,64,78,156,64,78,156,64,78,156,64,78,156,64,78,156,64,78,156, +64,78,156,64,78,156,64,78,156,64,78,156,64,78,156,64,78,156,64,78,156,64,78,170, +62,79,156,64,78,156,64,78,156,64,77,156,64,77,156,64,77,156,64,77,156,64,77,156, +64,77,156,64,77,156,64,77,156,64,77,156,64,77,156,64,77,156,64,77,156,64,77,156, +64,77,156,64,77,156,64,77,156,64,77,156,64,77,156,64,77,155,64,77,155,64,77,155, +64,77,155,64,77,155,64,77,155,64,77,155,64,77,155,64,77,155,64,77,155,63,77,155, +63,77,155,63,77,155,63,77,155,63,77,155,63,77,155,63,77,155,63,77,155,63,77,155, +63,77,155,63,77,155,63,77,155,63,77,156,59,74,95,100,101,95,100,101,139,139,140, +137,136,137,140,139,140,141,140,141,135,133,134,147,144,143,50,87,147,135,173, +233,132,171,230,149,181,238,145,176,237,146,177,238,113,153,224,116,156,226,49, +76,126,102,136,198,99,133,196,128,154,208,127,154,207,127,154,207,127,154,207, +128,155,208,101,136,198,142,172,231,145,177,237,145,177,237,145,177,237,146,177, +238,113,153,224,116,156,226,52,84,141,128,166,230,138,176,232,176,197,243,175, +198,245,176,198,245,176,198,245,177,199,245,143,181,234,177,199,245,175,198,245, +175,196,243,171,194,242,162,186,241,124,166,229,124,167,231,59,92,149,129,161, +207,128,161,209,172,193,238,175,199,245,174,196,243,166,191,241,150,181,238,112, +152,223,146,178,237,154,182,239,176,198,244,154,182,239,146,178,237,113,153,224, +116,156,226,50,81,134,92,132,218,101,140,219,145,176,238,145,177,237,145,177, +237,145,177,237,146,178,238,113,153,223,146,178,238,145,177,237,145,177,237,145, +177,237,146,177,238,113,153,224,116,156,226,49,74,123,102,136,198,99,133,196, +128,154,208,127,154,207,127,153,207,127,153,207,131,158,209,122,158,214,174,196, +243,175,196,243,176,198,245,176,198,245,177,199,245,143,181,234,147,184,236,61, +100,165,120,162,230,131,170,231,157,185,239,148,178,238,145,176,237,145,176,237, +146,178,238,113,153,223,146,178,238,145,177,237,145,177,237,145,177,237,146,177, +238,113,153,224,115,155,224,48,81,111,94,130,179,99,133,195,128,154,208,129,157, +211,141,172,231,145,177,237,146,178,238,113,153,223,146,178,238,145,177,237,145, +177,237,145,177,237,146,177,238,113,153,224,115,154,224,79,78,79,101,101,101, +103,102,103,114,112,114,115,115,116,122,122,122,117,116,117,113,111,113,109,109, +111,109,109,110,152,152,153,66,39,64,31,49,61,189,187,115,30,33,50,45,45,49,44, +53,54,42,47,41,57,58,57,54,55,54,53,50,53,52,49,52,52,48,52,52,49,57,51,50,56, +51,48,55,51,53,51,51,47,55,51,59,51,51,47,51,51,47,57,51,46,66,51,47,59,51,47, +58,51,47,61,51,47,52,51,58,52,51,53,59,51,48,53,51,50,52,51,49,51,51,48,52,51, +50,53,49,46,54,48,44,54,41,47,44,40,39,45,30,32,40,41,39,56,29,42,40,156,156,84, +29,37,51,66,39,64,155,155,157,152,154,157,152,152,154,107,77,103,150,148,158, +145,143,147,138,140,144,58,48,70,86,88,95,80,81,84,75,77,79,158,59,73,156,64,77, +156,64,77,156,64,77,155,64,77,155,64,77,155,64,77,155,64,77,155,64,77,155,64,77, +155,64,77,155,64,77,155,64,77,155,64,77,155,64,77,155,63,77,155,63,77,155,63,77, +155,63,77,169,61,78,155,63,77,155,63,77,155,63,77,155,63,77,154,63,77,154,63,77, +154,63,77,154,63,77,154,63,77,154,63,77,154,63,77,154,63,77,154,63,77,154,63,77, +154,63,77,154,63,77,154,63,77,154,63,77,154,63,77,154,63,77,154,63,77,154,63,77, +154,63,77,154,63,77,154,63,77,154,63,77,154,63,77,154,63,77,154,63,77,154,63,77, +154,63,77,154,63,77,154,63,77,154,63,77,154,63,77,154,63,76,154,63,76,154,63,76, +154,63,76,154,63,76,154,63,76,154,63,76,153,63,76,155,59,73,95,100,101,95,100, +101,133,132,133,59,53,71,59,53,71,59,53,71,59,53,71,143,142,141,49,85,144,122, +161,230,135,173,233,135,173,232,121,160,229,115,155,226,116,156,226,118,157,228, +51,79,130,104,137,200,102,136,198,102,135,198,101,135,198,101,135,198,101,135, +198,102,135,198,102,136,198,106,141,207,115,154,225,115,155,226,115,155,226,116, +155,226,116,156,226,118,157,228,53,85,140,119,158,228,127,164,230,140,178,234, +145,183,235,146,184,236,146,184,236,146,184,236,147,184,236,146,184,236,146,184, +236,146,184,236,146,183,236,143,182,235,145,181,235,145,184,236,62,95,153,129, +162,207,128,160,206,132,166,213,145,183,235,146,183,236,143,182,235,138,175,233, +122,159,228,115,155,226,115,155,226,124,163,229,147,184,235,130,167,231,119,156, +226,118,157,228,53,85,140,114,153,226,115,155,226,116,155,226,115,155,226,115, +155,226,115,155,226,116,155,226,116,156,226,116,155,226,115,155,226,115,155,226, +115,155,226,116,155,226,116,156,226,118,157,228,49,75,124,104,137,199,102,136, +198,102,135,198,101,135,198,101,135,198,101,135,198,101,135,198,111,146,210,133, +169,231,142,179,235,146,183,236,146,184,236,146,184,236,147,184,236,148,186,237, +68,108,173,142,181,236,147,183,236,143,179,235,133,169,232,119,158,228,115,155, +226,116,155,226,116,156,226,116,155,226,115,155,226,115,155,226,115,155,226,116, +155,226,116,156,226,115,154,222,48,87,99,86,124,159,100,134,193,102,135,198,103, +138,201,112,151,220,115,155,226,116,155,226,116,156,226,116,155,226,115,155,226, +115,155,226,115,155,226,116,155,226,116,156,226,117,156,226,69,68,69,93,92,93, +97,94,96,111,110,111,94,93,94,94,93,94,100,96,99,112,111,112,95,93,95,95,94,95, +147,144,147,66,39,64,31,30,43,189,189,114,30,34,41,45,45,51,44,43,46,42,41,46, +40,46,57,55,53,54,53,55,53,52,52,58,52,53,52,52,49,57,51,57,55,51,53,57,51,48, +54,51,56,51,51,48,60,51,47,51,51,47,58,51,65,55,51,60,54,51,48,59,51,50,52,51, +58,62,51,48,60,50,49,53,51,49,54,50,53,51,46,48,47,53,53,56,54,58,53,53,53,54, +45,43,46,39,42,40,40,51,45,30,40,43,41,39,40,29,25,40,158,156,85,29,32,54,66,39, +64,70,44,68,66,46,64,108,81,104,68,45,73,66,42,65,61,36,67,93,74,94,57,37,61,51, +32,50,44,25,49,70,55,70,184,87,103,181,87,104,180,87,104,180,87,104,180,87,104, +180,87,103,180,86,103,180,86,103,180,86,103,180,86,103,180,86,103,180,86,103, +180,86,103,180,86,103,180,86,103,180,86,103,180,85,103,179,85,103,179,85,103, +179,85,103,179,85,102,179,85,102,179,85,102,179,85,102,179,85,102,179,85,102, +179,85,102,179,85,102,179,85,102,179,85,102,179,85,102,179,85,102,179,85,102, +179,85,102,179,85,102,179,85,102,179,85,102,179,85,102,179,85,102,179,85,102, +179,85,102,179,85,102,179,85,102,179,85,102,179,85,102,179,85,102,179,85,102, +179,85,102,179,85,102,179,85,102,179,85,102,179,85,102,179,85,102,179,85,102, +179,85,102,179,85,102,179,85,101,179,85,101,179,85,101,179,85,101,179,85,101, +179,85,101,179,85,102,181,82,100,95,100,101,95,100,101,143,142,143,59,53,71,59, +53,71,59,53,71,59,53,71,148,147,147,50,88,148,53,87,145,53,89,148,61,100,164,67, +108,171,54,90,151,49,85,143,51,86,144,55,83,136,49,75,124,49,74,123,49,74,123, +49,74,123,49,75,123,49,74,123,49,74,123,49,74,123,50,78,129,52,84,139,52,84,139, +52,84,139,52,84,139,52,84,139,53,85,140,57,89,145,53,85,140,52,84,140,57,91,150, +64,104,165,67,106,171,66,107,172,66,107,172,66,107,172,66,107,172,66,107,172,66, +107,172,66,107,172,66,107,171,66,106,171,68,108,172,66,99,156,61,95,152,60,94, +151,60,94,151,64,103,166,66,107,172,66,107,172,66,106,170,62,102,163,55,87,144, +51,83,139,51,83,138,55,89,147,67,105,168,58,94,152,53,85,142,57,89,145,53,85, +140,52,84,139,52,84,139,52,84,139,52,84,139,52,84,139,52,84,139,52,84,139,52,84, +139,52,84,139,52,84,139,52,84,139,52,84,139,52,84,139,53,85,140,53,79,129,49,75, +124,49,74,123,49,74,123,49,74,123,49,74,123,49,74,123,49,74,123,48,76,126,51,84, +139,59,96,157,65,104,168,67,107,171,66,107,172,66,107,172,68,108,173,72,112,176, +68,108,173,66,107,172,67,107,172,66,106,169,61,98,159,52,86,143,51,83,139,52,84, +139,52,84,139,52,84,139,52,84,139,52,84,139,52,84,139,52,84,139,53,85,140,53,81, +124,49,77,121,49,74,123,49,75,123,50,78,129,52,83,138,52,84,139,52,84,139,52,84, +139,52,84,139,52,84,139,52,84,139,52,84,139,52,84,139,52,84,139,52,84,139,74,72, +74,96,94,96,103,103,103,118,117,117,99,96,99,100,96,100,109,109,109,118,117,118, +101,97,100,101,97,100,153,153,154,66,39,64,31,35,44,189,187,114,30,28,41,45,44, +60,44,41,53,42,41,45,40,49,44,55,50,54,53,54,53,52,49,52,52,48,62,52,48,56,51, +47,57,51,47,66,51,47,51,51,55,51,51,52,51,51,57,59,51,47,52,51,47,52,51,47,59, +51,47,55,51,47,52,51,51,58,51,55,52,51,48,57,51,53,52,42,40,43,53,53,56,70,69, +71,70,70,71,75,74,75,78,78,78,43,45,43,40,41,47,30,37,39,41,39,41,27,32,40,162, +161,86,28,30,56,66,39,64,113,84,113,110,80,108,153,151,158,67,42,65,109,81,110, +104,75,100,138,139,145,56,35,54,86,64,87,78,56,75,109,110,116,80,31,40,79,31,40, +79,31,40,79,31,40,79,31,40,79,31,40,79,31,40,79,31,40,79,31,40,79,31,40,79,31, +40,79,31,40,79,31,40,79,31,40,79,31,40,79,31,40,79,31,40,79,31,40,79,31,40,79, +31,40,79,31,40,79,31,40,79,31,40,79,31,40,79,31,40,79,31,40,79,31,40,79,31,40, +79,31,40,79,31,40,79,31,40,79,31,40,79,31,40,79,31,40,79,31,40,79,31,40,79,31, +40,79,31,40,79,31,40,79,31,40,79,31,40,79,31,40,79,31,40,79,31,40,79,31,40,79, +31,40,79,31,40,79,31,40,79,31,40,79,31,40,79,31,40,79,31,40,79,31,40,79,31,40, +79,31,40,79,31,40,79,31,40,79,31,40,79,31,40,79,31,40,79,31,40,79,31,40,79,31, +40,79,31,40,98,103,103,103,102,103,103,102,103,103,103,104,107,105,106,105,104, +105,101,99,101,108,107,108,111,110,109,107,107,105,111,109,107,148,147,146,138, +136,136,143,142,142,144,144,143,149,148,146,49,78,131,104,137,199,102,136,198, +102,135,198,101,135,198,101,135,198,101,135,198,102,135,198,104,139,202,113,151, +220,115,155,226,115,155,226,115,155,226,116,155,226,116,156,226,118,157,228,53, +85,140,118,157,228,116,156,226,117,156,226,127,164,230,141,177,234,145,183,235, +146,184,236,147,184,236,146,184,236,146,184,236,146,184,236,146,184,236,146,184, +236,147,183,236,147,185,236,62,96,153,129,162,207,128,160,206,128,160,206,133, +167,215,145,183,235,146,184,236,146,184,236,146,182,235,138,176,233,121,159,229, +115,155,226,115,155,226,123,161,229,143,179,235,131,168,232,53,85,142,118,157, +228,116,156,226,116,155,226,115,155,226,115,155,226,115,155,226,116,155,226,116, +156,226,116,155,226,115,155,226,115,155,226,115,155,226,116,155,226,116,156,226, +118,157,228,50,76,125,103,137,199,102,136,198,102,135,198,101,135,198,101,135, +198,101,135,198,102,135,198,102,137,199,110,147,214,119,158,228,132,169,231,142, +179,235,146,183,236,147,184,236,148,186,237,68,108,173,148,186,237,147,184,236, +146,184,236,146,183,236,143,180,235,136,174,233,121,159,228,116,155,226,116,155, +226,115,155,226,115,155,226,115,155,226,116,155,226,116,156,226,118,157,228,49, +75,124,103,137,199,102,136,198,106,141,206,113,152,222,115,155,226,115,155,226, +116,155,226,116,156,226,116,155,226,115,155,226,115,155,226,115,155,226,116,155, +226,116,156,226,117,156,226,72,70,72,119,117,119,124,124,125,117,116,117,99,95, +98,99,96,99,108,108,109,118,117,118,123,119,122,122,120,123,153,153,154,66,39, +64,31,29,47,189,188,114,30,28,41,45,58,57,44,43,44,42,41,42,57,51,57,54,53,54, +53,49,53,52,52,60,52,48,57,52,48,53,51,48,54,51,47,51,51,47,56,51,48,51,51,52, +51,51,49,51,51,56,51,51,48,65,51,55,58,51,47,52,51,47,65,51,47,58,51,47,52,50, +51,55,51,53,58,46,45,47,70,69,71,69,68,69,71,70,71,68,68,68,73,72,75,70,69,71, +39,37,47,30,31,38,41,39,41,27,25,41,162,159,85,28,26,41,66,39,64,110,80,115,107, +80,111,152,150,154,65,38,63,107,77,103,101,70,97,137,142,142,55,31,53,84,61,81, +75,52,73,107,113,113,133,51,64,132,55,67,132,55,67,132,55,67,132,55,67,132,55, +67,132,55,67,132,55,67,132,55,67,132,55,67,132,54,67,132,54,67,132,54,67,132,54, +67,132,54,67,132,54,67,132,54,67,132,54,67,132,54,67,132,54,67,132,54,67,132,54, +67,132,54,67,132,54,67,132,54,66,132,54,66,132,54,66,132,54,66,132,54,66,132,54, +66,132,54,66,132,54,66,132,54,66,132,54,66,132,54,66,132,54,66,132,54,66,143,53, +67,132,54,66,132,54,66,132,54,66,132,54,66,132,54,66,132,54,66,132,54,66,132,54, +66,132,54,66,131,54,66,131,54,66,131,54,66,131,54,66,131,54,66,131,54,66,131,54, +66,131,54,66,131,54,66,131,54,66,131,54,66,131,54,66,131,54,66,131,54,66,131,54, +66,131,54,66,133,53,65,98,101,101,101,99,98,102,99,99,103,101,100,110,107,105, +110,107,105,105,102,102,111,109,108,106,104,103,107,106,104,111,110,109,103,102, +102,137,137,138,135,133,134,136,135,137,144,144,143,46,75,126,102,136,198,99, +133,196,128,154,208,127,154,207,127,154,207,127,154,207,128,156,209,106,143,209, +146,178,237,145,177,237,145,177,237,145,177,237,146,177,238,113,153,224,116,156, +226,52,84,139,116,156,226,113,153,224,146,177,238,146,177,237,154,182,239,169, +193,242,175,197,243,143,181,234,177,199,245,176,198,245,176,198,245,176,198,245, +177,199,245,143,181,234,147,183,236,60,94,151,128,159,206,125,158,205,154,173, +214,158,177,220,175,197,244,176,198,245,177,199,245,143,181,234,175,198,243,168, +193,242,150,181,238,145,176,237,145,177,237,120,158,226,143,179,235,58,94,152, +120,158,228,113,153,223,146,177,238,145,177,237,145,177,237,145,177,237,146,178, +238,113,153,223,146,178,238,145,177,237,145,177,237,145,177,237,146,177,238,113, +153,224,116,156,226,49,76,125,100,133,196,98,132,196,128,154,208,127,154,207, +127,154,207,127,154,207,128,155,208,99,134,195,137,166,223,143,174,234,147,177, +237,160,187,240,173,195,243,144,181,234,147,184,236,66,107,171,144,181,230,143, +181,234,177,199,245,176,198,245,175,199,245,174,196,243,167,193,242,118,156,225, +146,177,237,145,176,237,145,177,237,145,177,237,146,177,238,113,153,224,116,156, +226,49,74,123,102,136,198,99,134,198,144,174,235,145,177,237,145,177,237,145, +177,237,146,178,238,113,153,223,146,178,238,145,177,237,145,177,237,145,177,237, +146,177,238,113,153,224,115,154,224,79,79,79,101,101,102,103,102,103,114,112, +114,106,106,107,107,107,109,108,108,109,116,113,116,109,109,110,109,109,110,153, +153,154,66,39,64,31,37,47,189,187,115,30,28,57,45,43,44,44,41,53,41,45,50,57,53, +56,54,59,64,53,49,52,52,48,57,52,49,60,52,48,52,51,47,51,51,47,51,51,50,51,51, +47,51,51,55,52,51,52,51,50,46,49,42,36,43,42,36,41,50,50,49,51,50,52,51,47,60, +51,47,51,51,48,60,51,48,54,48,47,48,72,72,72,68,67,68,75,75,75,78,77,79,68,69, +72,79,79,79,39,38,39,29,29,41,41,39,41,29,25,40,158,157,86,29,26,40,66,39,64, +155,153,157,152,150,154,152,150,154,107,77,109,150,151,152,145,143,147,138,138, +142,91,65,93,124,125,126,115,113,117,109,109,113,133,51,65,133,54,67,133,54,67, +133,54,67,133,54,67,133,54,67,133,54,67,133,54,67,133,54,67,133,54,67,133,54,67, +133,54,67,133,54,67,133,54,67,133,54,67,133,54,67,133,54,66,133,54,66,133,54,66, +133,54,66,133,54,66,133,54,66,133,54,66,133,54,66,133,54,66,133,54,66,133,54,66, +133,54,66,133,54,66,133,54,66,133,54,66,133,54,66,133,54,66,133,54,66,133,54,66, +133,54,66,133,54,66,144,53,67,133,54,66,133,54,66,133,54,66,133,54,66,133,54,66, +133,54,66,132,54,66,132,54,66,132,54,66,132,54,66,132,54,66,132,54,66,132,54,66, +132,54,66,132,54,66,132,54,66,132,54,66,132,54,66,132,54,66,132,54,66,132,54,66, +132,54,66,132,54,66,132,54,66,132,54,66,134,52,62,43,90,147,53,89,145,53,89,145, +53,88,145,53,88,145,53,88,145,53,88,145,53,87,145,53,87,145,53,87,145,51,87,146, +110,109,106,100,100,100,137,135,136,139,139,140,141,139,139,51,81,134,101,135, +198,128,154,208,126,153,207,126,154,208,129,157,212,130,159,215,135,164,221,111, +149,219,145,176,237,144,176,237,144,176,237,144,176,237,144,176,237,146,177,238, +116,155,226,52,84,139,116,155,226,146,177,238,144,176,237,144,176,237,144,176, +237,150,181,238,169,193,242,142,179,233,175,198,245,175,198,245,175,198,245,175, +198,245,175,198,245,177,199,245,146,184,236,60,94,151,127,158,205,154,172,212, +152,173,214,158,179,222,174,197,244,175,198,245,176,198,245,143,181,233,175,198, +245,173,196,243,168,192,242,150,181,238,144,176,237,145,177,237,123,161,229,67, +106,168,137,173,232,149,181,238,144,176,237,144,176,237,144,176,237,144,176,237, +145,176,237,113,152,223,145,176,237,144,176,237,144,176,237,144,176,237,144,176, +237,146,177,238,116,155,226,48,74,122,83,112,184,120,146,203,125,152,207,126, +153,207,126,153,207,126,153,207,127,153,207,99,133,195,128,155,209,129,158,213, +129,158,213,141,170,228,159,187,240,173,195,243,145,182,235,63,106,160,120,159, +191,173,195,239,175,198,245,175,198,245,175,198,245,174,198,245,175,195,243,135, +172,231,150,181,238,144,176,237,144,176,237,144,176,237,144,176,237,146,177,238, +116,155,226,49,73,122,98,130,195,123,152,211,139,171,235,144,176,237,144,176, +237,144,176,237,145,176,237,113,152,223,145,176,237,144,176,237,144,176,237,144, +176,237,144,176,237,146,177,238,114,154,224,69,68,69,93,92,93,97,94,96,111,111, +111,111,110,111,118,117,118,116,113,116,110,110,111,93,92,94,93,92,93,144,144, +146,66,39,64,31,29,43,189,190,114,30,29,43,45,43,61,44,43,45,58,65,58,56,50,60, +54,49,53,53,49,71,52,49,64,52,48,56,52,53,57,51,47,51,51,50,51,51,60,51,51,47, +54,51,47,57,51,50,55,42,36,41,170,168,170,170,168,170,42,46,62,51,52,51,51,47, +51,51,47,51,50,49,53,51,47,53,47,46,48,72,71,72,69,69,69,69,69,70,66,66,66,73, +73,73,75,74,75,39,38,43,30,34,38,41,39,48,29,44,40,157,155,84,29,43,40,66,39,64, +70,50,75,66,49,65,108,77,104,68,45,70,66,41,65,61,41,62,93,69,94,57,37,59,51,31, +50,44,29,45,69,51,70,156,74,90,153,75,90,153,75,90,153,75,90,153,75,90,153,75, +90,153,75,90,153,75,90,153,75,90,153,75,90,153,75,90,153,75,90,153,75,90,153,75, +90,153,75,90,153,75,90,153,75,90,153,75,90,153,75,90,153,75,90,153,75,90,153,75, +90,153,75,90,153,75,90,153,75,90,153,75,90,153,75,90,153,75,90,153,75,90,153,75, +90,153,75,90,153,75,90,153,75,90,153,75,90,153,75,90,153,75,90,153,75,90,153,75, +90,153,75,90,153,74,90,153,74,90,153,74,90,153,74,90,153,74,90,153,74,90,153,74, +90,153,74,90,153,74,90,153,74,90,153,74,90,153,74,90,153,74,90,153,74,90,153,74, +90,153,74,90,153,74,90,153,74,90,153,74,89,153,74,89,153,74,89,153,74,89,153,74, +89,153,74,89,155,70,83,111,157,229,115,155,226,115,155,226,115,155,226,115,155, +226,115,155,226,115,155,226,115,155,226,115,155,226,116,155,226,117,157,228,49, +85,143,108,106,102,94,93,92,136,134,135,134,134,132,62,98,154,109,142,200,128, +154,207,126,154,208,137,167,225,143,175,235,143,175,236,145,175,236,113,152,223, +145,176,237,144,176,237,144,176,237,144,176,237,144,176,237,145,177,237,115,155, +226,52,84,139,115,155,226,145,177,237,144,176,237,144,176,237,144,176,237,144, +176,237,151,181,238,136,173,231,175,197,243,174,198,245,175,198,245,175,198,245, +175,198,245,176,198,245,146,184,236,60,94,152,128,159,206,152,171,212,152,171, +212,153,174,216,160,181,225,169,191,236,175,197,243,142,179,231,174,196,243,172, +196,243,171,194,241,167,190,240,152,180,237,145,175,235,114,154,225,55,87,144, +130,169,225,164,189,239,148,180,238,144,176,237,144,176,237,144,176,237,145,176, +237,113,152,223,145,176,237,144,176,237,144,176,237,144,176,237,144,176,237,145, +177,237,115,155,226,48,73,121,82,111,183,116,143,201,125,152,207,126,153,207, +126,153,207,126,153,207,127,153,207,99,133,195,127,153,207,126,153,207,126,153, +207,130,158,214,146,177,237,161,187,240,142,179,235,66,107,167,134,172,215,175, +197,244,175,198,245,175,198,245,175,198,245,175,198,245,175,198,245,142,179,233, +168,193,242,150,181,238,144,176,237,144,176,237,144,176,237,145,177,237,114,154, +226,44,69,114,82,113,190,113,149,221,117,154,231,140,173,236,144,176,237,144, +176,237,145,176,237,113,152,223,145,176,237,144,176,237,144,176,237,144,176,237, +144,176,237,145,176,237,114,153,224,74,72,74,96,94,96,103,102,104,94,92,94,99, +96,99,122,119,122,109,108,110,93,92,94,95,94,97,95,94,97,148,148,148,66,39,64, +31,29,48,189,189,114,30,28,48,45,44,57,44,51,48,41,39,41,57,71,62,54,71,54,53, +54,53,52,48,52,52,48,53,52,52,52,51,47,59,51,47,51,51,50,51,51,48,52,51,47,56, +51,50,51,39,34,39,168,167,168,168,166,169,39,35,39,51,59,51,51,47,59,51,47,51, +51,55,54,51,47,54,41,40,42,63,63,64,72,72,73,71,71,71,70,70,70,77,77,77,46,45, +49,40,38,41,30,30,38,41,39,41,29,25,40,161,159,85,28,27,40,66,39,64,113,84,113, +110,83,106,153,151,155,67,42,71,109,84,106,104,75,100,138,141,149,56,35,60,86, +66,84,78,56,75,109,112,121,160,49,66,158,53,69,158,53,69,158,53,69,158,53,69, +158,53,69,158,53,69,158,53,69,158,53,69,158,53,69,158,53,69,158,53,69,158,53,69, +158,53,69,158,53,69,158,53,69,158,53,69,158,53,69,158,53,69,158,53,69,158,53,69, +158,53,69,158,53,69,158,53,69,158,53,69,158,53,69,158,53,69,158,53,69,158,53,69, +158,53,69,158,53,69,158,53,69,158,53,69,158,53,69,158,53,69,158,53,69,158,53,69, +158,53,69,158,53,69,158,53,69,158,53,69,158,53,69,158,53,69,158,53,69,158,53,69, +158,53,69,157,53,69,157,53,69,157,52,69,157,52,68,157,52,68,157,52,68,157,52,68, +157,52,68,157,52,68,157,52,68,157,52,68,157,52,68,157,52,68,157,52,68,157,52,68, +157,52,68,157,52,68,159,45,58,143,179,241,145,177,237,145,177,237,145,177,237, +145,177,237,145,177,237,145,177,237,145,177,237,145,177,237,146,178,238,114,153, +224,117,157,228,52,89,146,105,104,102,136,134,135,140,139,138,51,80,135,129,160, +206,138,162,211,137,166,222,144,176,237,144,176,237,144,176,237,145,176,237,113, +152,223,145,176,237,144,176,237,144,176,237,144,176,237,144,176,237,145,177,237, +115,155,226,52,84,138,112,152,225,145,177,237,144,176,237,144,176,237,144,176, +237,144,176,237,145,176,237,118,157,226,168,193,242,173,196,243,174,198,245,175, +198,245,175,198,245,176,198,245,146,184,236,60,94,152,128,160,206,153,171,212, +151,171,212,152,171,212,152,173,214,153,173,215,155,174,216,126,159,205,154,173, +215,153,173,215,153,173,215,152,172,214,148,169,213,136,160,210,105,139,202,49, +80,126,93,134,170,151,179,220,163,188,239,148,180,238,140,172,230,144,176,237, +145,176,237,113,152,223,145,176,237,144,176,237,144,176,237,144,176,237,144,176, +237,145,177,237,115,155,226,46,71,117,79,107,181,102,130,194,122,149,205,126, +153,207,126,153,207,126,153,207,127,153,207,99,133,195,127,153,207,126,153,207, +126,153,207,130,158,213,143,175,236,148,178,238,131,167,230,63,104,156,120,158, +191,172,194,239,175,198,245,175,198,245,175,198,245,175,198,245,176,198,245,143, +181,234,175,196,243,168,192,242,149,181,238,144,176,237,144,176,237,145,176,237, +114,154,226,46,74,125,89,128,216,119,156,231,117,154,231,139,172,236,144,176, +237,144,176,237,145,176,237,113,152,223,145,176,237,144,176,237,144,176,237,144, +176,237,144,176,237,145,176,237,114,153,224,72,70,73,95,94,95,103,102,103,94,93, +94,99,95,99,122,119,121,108,108,109,93,92,93,95,94,97,95,94,97,148,148,148,66, +39,64,31,29,43,47,45,65,30,30,56,45,43,62,44,45,55,42,44,42,57,56,61,54,55,54, +53,54,53,52,57,54,52,48,67,52,48,53,51,47,51,51,48,56,51,47,51,51,47,67,51,47, +55,51,50,51,39,37,39,168,166,168,168,166,170,39,35,45,51,57,51,51,47,61,51,47, +55,51,55,54,51,47,55,47,43,49,38,38,40,54,54,55,60,61,63,59,62,63,45,49,46,39, +39,46,40,39,41,30,43,40,41,39,41,28,25,40,161,163,85,28,29,40,66,39,64,110,82, +112,107,80,103,152,154,154,65,45,69,107,77,108,101,74,97,137,137,148,55,37,58, +84,60,85,75,55,73,107,107,120,136,53,66,135,57,70,135,57,70,135,57,70,135,57,70, +135,57,70,135,57,70,135,57,70,135,57,70,135,57,70,135,57,70,135,57,70,135,57,70, +135,57,70,135,57,70,135,57,70,135,57,70,135,57,70,135,57,70,135,57,70,135,57,70, +135,57,70,135,57,70,135,57,70,135,57,70,135,57,70,135,57,70,135,57,70,135,57,70, +135,57,70,135,57,70,135,57,70,135,57,70,135,57,70,135,57,70,134,57,70,134,57,70, +134,57,70,134,57,69,134,57,69,134,57,69,134,57,69,134,57,69,134,57,69,134,57,69, +134,57,69,134,57,69,134,56,69,134,56,69,134,56,69,134,56,69,145,54,70,134,56,69, +134,56,69,134,56,69,134,56,69,134,56,69,134,56,69,134,56,69,133,56,69,133,56,69, +133,56,69,133,56,68,134,50,57,143,179,241,144,176,237,144,176,237,144,176,237, +144,176,237,144,176,237,144,176,237,144,176,237,144,176,237,144,176,237,146,178, +238,116,155,226,53,87,145,102,100,98,141,140,142,141,140,140,47,80,136,113,150, +211,166,188,235,156,185,240,146,177,237,144,176,237,144,176,237,145,176,237,113, +152,223,145,176,237,144,176,237,144,176,237,144,176,237,144,176,237,145,177,237, +114,154,226,48,78,131,94,134,218,140,173,236,142,175,237,142,175,237,141,174, +236,141,174,236,143,175,237,112,152,223,149,181,238,166,191,242,173,195,243,174, +198,245,175,198,245,176,198,245,146,184,236,60,94,151,128,160,206,154,173,214, +152,171,212,151,171,212,152,171,212,152,173,214,154,173,214,125,158,204,154,173, +214,153,173,214,153,173,214,152,173,214,151,171,212,148,169,212,110,143,201,49, +75,124,104,142,203,133,166,213,157,183,231,155,181,227,114,149,179,139,171,228, +145,176,237,113,152,223,145,176,237,144,176,237,144,176,237,144,176,237,144,176, +237,145,177,237,115,155,226,47,71,117,79,107,181,99,128,193,120,148,204,126,154, +207,126,154,207,126,154,208,127,154,207,99,133,195,127,153,207,126,153,207,126, +154,207,130,159,215,143,175,236,145,176,237,118,157,228,58,95,150,127,165,209, +173,193,239,174,198,245,175,198,245,175,198,245,175,198,245,176,198,245,143,181, +233,175,198,245,173,196,243,168,192,242,153,182,239,145,177,237,145,176,237,115, +155,226,51,82,136,98,138,220,127,162,233,127,162,233,142,175,237,144,176,237, +144,176,237,145,176,237,113,152,223,145,176,237,144,176,237,144,176,237,144,176, +237,144,176,237,145,176,237,114,153,224,100,100,101,117,117,118,124,124,125,146, +144,145,151,151,151,145,145,145,152,152,153,144,143,145,148,148,148,148,148,148, +121,121,122,66,39,64,31,30,43,47,45,65,30,32,43,45,46,45,44,48,50,42,40,62,57, +62,65,54,50,54,53,50,53,52,58,62,52,48,58,52,49,63,51,49,51,51,59,51,51,50,57, +51,51,51,51,53,50,51,47,51,39,34,46,168,169,171,168,169,169,39,33,39,51,60,51, +51,47,55,51,49,52,51,49,52,51,49,57,51,50,51,48,49,51,43,41,46,41,40,48,41,41, +47,39,44,43,39,49,45,40,46,41,30,33,39,41,38,41,28,62,40,161,160,87,28,41,57,66, +39,64,155,152,157,152,152,156,152,151,157,107,77,105,150,152,156,145,143,147, +138,138,145,91,65,90,124,126,130,115,113,117,109,109,116,137,54,67,136,57,70, +136,57,70,136,57,70,136,57,70,136,57,70,136,57,70,136,57,70,136,57,70,136,57,70, +136,57,70,136,57,70,136,57,70,136,57,70,136,57,70,136,57,70,136,57,70,136,57,70, +136,57,70,136,57,70,136,57,70,136,57,70,136,56,69,136,56,69,136,56,69,136,56,69, +136,56,69,136,56,69,135,56,69,135,56,69,135,56,69,135,56,69,135,56,69,135,56,69, +135,56,69,135,56,69,135,56,69,135,56,69,135,56,69,135,56,69,135,56,69,135,56,69, +135,56,69,135,56,69,135,56,69,135,56,69,135,56,69,135,56,69,135,56,69,135,56,69, +135,56,69,146,54,70,135,56,69,135,56,69,135,56,69,135,56,69,135,56,69,135,56,69, +134,56,69,134,56,68,134,56,68,134,56,68,134,56,68,135,50,58,145,180,243,146,178, +240,146,178,240,146,178,240,146,178,240,146,178,240,146,178,240,146,178,240,146, +178,240,146,178,240,147,179,240,117,157,228,54,88,146,92,89,86,141,140,141,140, +139,138,49,85,142,113,152,220,151,181,237,172,195,242,157,185,240,148,178,238, +145,176,237,146,178,238,113,153,223,146,178,238,145,176,237,145,176,237,145,176, +237,145,176,237,146,178,238,115,154,226,48,78,130,93,132,218,126,162,234,127, +161,233,127,161,233,122,157,232,121,157,232,129,164,235,111,151,222,146,177,237, +149,180,238,166,192,241,173,195,243,175,198,245,177,199,245,146,184,236,60,94, +151,128,160,206,154,173,214,154,173,214,153,171,212,152,171,212,153,171,212,154, +173,215,125,158,205,154,173,214,154,173,214,154,173,214,154,173,214,153,173,214, +153,172,212,122,154,205,53,81,130,93,133,175,104,141,165,114,149,179,124,154, +178,122,152,175,137,169,217,145,176,235,113,153,223,146,178,238,145,176,237,145, +176,237,145,176,237,145,176,237,146,178,238,116,155,226,47,72,118,80,108,182, +100,129,194,119,145,202,127,153,207,127,153,207,127,153,207,128,155,208,99,133, +195,128,155,208,127,154,207,127,154,207,131,159,215,144,175,236,146,178,238,116, +155,226,51,86,135,96,136,166,151,178,215,172,194,240,175,198,245,176,198,245, +176,198,245,177,199,245,143,181,234,177,199,245,175,198,245,175,196,243,170,194, +242,155,183,239,146,178,237,115,155,226,52,84,139,114,153,224,144,176,238,143, +174,237,145,176,237,145,176,237,145,176,237,146,178,238,113,153,223,146,178,238, +145,176,237,145,176,237,145,176,237,145,176,237,146,178,238,114,154,224,40,23, +41,43,24,41,81,61,78,56,36,56,59,36,60,61,36,59,105,80,101,68,45,68,67,46,75,66, +39,70,110,78,111,66,39,64,31,47,61,47,45,65,30,30,49,45,53,51,44,47,48,41,44,40, +57,64,60,54,49,54,53,50,53,52,51,54,52,48,52,52,49,52,51,47,52,51,46,51,51,58, +51,51,47,51,51,47,72,51,47,60,39,34,40,168,166,169,168,166,168,39,34,48,51,47, +50,51,47,52,51,50,60,51,50,61,51,51,58,51,57,54,51,47,54,51,48,57,49,46,59,49, +47,57,40,47,42,39,44,41,40,42,45,30,31,41,41,45,43,28,25,40,167,167,89,28,27,54, +66,39,64,70,54,72,66,44,64,108,82,104,68,52,73,66,41,65,61,36,70,93,75,99,57,43, +61,51,31,50,44,25,51,69,55,74,157,77,93,155,78,94,155,78,94,155,78,94,155,78,94, +155,78,94,155,78,94,155,78,94,155,78,94,155,78,94,155,78,94,155,78,94,155,78,94, +155,78,94,155,78,94,155,78,94,155,78,94,155,78,94,155,78,94,155,78,94,155,78,94, +155,78,94,155,78,94,155,78,94,155,78,94,155,78,94,155,78,94,155,78,94,155,78,94, +155,78,94,155,78,94,155,78,94,155,78,93,155,78,93,155,78,93,155,78,93,155,78,93, +155,78,93,155,78,93,155,78,93,155,78,93,155,78,93,155,78,93,155,78,93,155,78,93, +155,78,93,155,78,93,155,78,93,155,78,93,155,78,93,155,77,93,155,77,93,155,77,93, +155,77,93,154,77,93,154,77,93,154,77,93,154,77,92,154,77,92,154,77,92,154,77,92, +154,77,92,154,77,92,157,75,89,41,82,140,45,80,137,45,80,137,45,80,137,45,80,137, +45,80,137,45,80,137,45,80,137,45,80,137,45,80,137,46,81,137,52,85,140,56,90,148, +93,93,90,131,130,131,140,139,138,49,86,140,98,140,187,106,147,210,118,157,225, +140,176,232,134,170,230,117,156,225,113,152,223,114,154,224,113,153,223,113,152, +223,113,152,223,113,152,223,113,152,223,113,153,223,116,156,226,50,81,135,93, +133,218,88,127,213,88,125,213,89,127,214,90,128,214,89,127,213,92,131,215,111, +151,223,113,153,223,112,152,223,118,156,225,134,171,231,140,179,233,143,180,234, +147,184,236,60,94,151,128,160,206,125,158,205,125,158,204,125,158,204,125,157, +205,124,157,203,125,157,205,126,159,205,125,158,205,125,158,204,125,158,204,125, +158,204,125,158,204,125,158,205,128,159,205,58,94,140,92,132,157,84,126,152,89, +132,170,100,141,189,102,143,172,127,167,222,117,156,225,114,153,224,113,153,223, +113,152,223,113,152,223,113,152,223,113,152,223,113,153,223,116,156,226,48,72, +120,81,110,182,76,104,177,83,113,182,96,130,193,99,133,195,99,133,195,99,133, +195,100,134,196,99,133,195,99,133,195,99,133,195,103,138,202,113,151,222,113, +153,223,116,156,226,52,86,134,101,141,190,118,157,217,136,174,231,142,180,232, +143,181,234,143,181,233,143,181,234,144,182,234,143,181,234,143,181,233,143,181, +234,142,180,232,137,174,232,124,162,228,118,156,226,50,78,128,103,141,210,103, +142,216,109,148,221,113,152,223,113,152,223,113,152,223,113,153,223,114,154,224, +113,153,223,113,152,223,113,152,223,113,152,223,113,152,223,113,153,223,115,154, +224,69,51,67,74,55,74,121,118,123,55,34,60,98,73,96,103,77,103,149,147,151,67, +42,73,111,86,111,110,80,106,155,152,159,66,39,64,31,33,60,47,45,65,30,29,45,45, +51,72,44,43,50,58,62,58,56,54,56,54,65,54,53,57,70,52,47,58,52,48,61,52,50,52, +51,47,51,51,57,62,51,47,51,51,47,51,51,47,61,51,66,55,39,33,40,168,168,168,168, +167,168,39,35,39,51,47,66,51,47,54,51,50,61,51,64,51,51,47,52,51,48,55,52,49,58, +49,46,58,51,45,59,50,46,57,42,50,46,39,44,39,40,38,41,40,45,46,41,39,43,28,25, +40,165,165,90,28,47,39,66,39,64,113,85,115,110,83,106,153,153,159,67,42,65,109, +81,106,104,77,103,137,139,145,56,35,55,86,64,84,78,57,77,107,110,116,161,50,69, +160,54,71,160,54,71,160,54,71,160,54,71,160,54,71,160,54,71,160,54,71,160,54,71, +160,54,71,160,54,71,160,54,71,160,54,71,160,54,71,160,54,71,160,54,71,160,54,71, +160,54,71,160,54,71,160,54,71,160,54,71,160,54,71,160,54,71,160,54,71,160,54,71, +160,54,71,160,54,71,160,54,71,160,54,71,160,54,71,160,54,71,160,54,71,160,54,71, +160,54,71,160,54,71,160,54,71,160,54,71,160,54,71,160,54,71,160,54,71,160,54,71, +160,54,71,160,54,71,160,54,71,160,54,71,159,54,71,159,54,71,159,54,70,159,54,70, +159,54,70,159,54,70,159,54,70,159,54,70,159,54,70,159,54,70,159,54,70,159,54,70, +159,54,70,159,54,70,159,54,70,159,54,70,159,54,70,159,54,70,161,47,62,144,180, +242,146,178,240,146,178,240,146,178,240,146,178,240,146,178,240,146,178,240,146, +178,240,146,178,240,146,178,240,147,179,240,117,157,228,54,88,145,93,91,88,137, +136,138,144,142,142,49,86,137,90,132,167,130,163,210,144,175,235,150,181,238, +165,190,241,165,190,241,149,181,238,113,152,223,146,178,238,145,176,237,145,176, +237,145,176,237,145,176,237,146,178,238,115,154,226,47,76,127,90,129,217,119, +157,233,121,156,232,133,166,234,136,168,235,135,168,235,142,175,237,113,153,223, +146,178,238,145,176,237,145,176,237,150,180,238,166,191,241,174,197,243,146,183, +236,60,94,151,128,160,206,154,173,214,154,173,214,154,173,214,154,173,214,153, +171,212,153,172,212,125,157,204,154,174,215,154,173,215,155,174,216,154,173,215, +154,173,215,156,175,216,131,165,212,64,102,160,106,145,170,113,146,166,132,164, +211,143,174,233,145,176,231,165,190,241,166,191,242,118,157,226,145,177,237,145, +176,237,145,176,237,145,176,237,145,176,237,146,178,238,116,155,226,48,72,120, +81,109,182,99,129,194,103,130,194,111,138,199,125,151,206,127,154,207,128,155, +208,99,133,195,128,155,208,127,153,207,127,153,207,131,159,215,144,175,236,146, +178,238,114,153,221,50,91,114,96,138,184,142,175,231,154,182,239,169,193,242, +175,196,243,175,198,245,177,199,245,143,181,234,177,199,245,176,198,245,176,198, +245,175,198,245,176,196,243,170,195,243,127,165,230,45,69,115,79,108,181,106, +139,209,118,152,229,140,172,236,145,176,237,145,176,237,146,178,238,113,153,223, +146,178,238,145,176,237,145,176,237,145,176,237,145,176,237,146,178,238,114,154, +224,67,49,65,72,49,69,120,117,124,53,37,51,96,71,93,100,70,96,148,146,152,65,46, +63,109,79,107,107,77,108,154,154,159,66,39,64,31,35,51,189,188,113,30,34,52,45, +58,52,44,44,59,58,58,62,56,57,60,54,61,64,53,48,52,52,69,52,52,48,52,52,48,52, +51,47,51,51,48,51,51,47,51,51,52,51,51,49,54,51,46,52,39,37,51,168,167,168,168, +166,168,39,41,43,51,52,51,51,50,62,51,53,51,51,52,60,51,47,51,51,47,57,51,47,57, +49,46,57,49,46,59,50,46,60,42,47,48,39,47,39,40,51,44,41,44,41,41,40,55,28,25, +44,167,166,89,28,26,40,66,39,64,110,86,114,107,85,106,152,150,156,65,38,63,107, +77,108,101,70,97,137,141,142,55,31,53,84,61,85,75,52,73,107,112,113,138,54,70, +137,58,72,137,58,72,137,58,72,137,58,72,137,58,72,137,58,72,137,58,72,137,58,72, +148,57,73,137,58,72,137,58,72,137,58,71,137,58,71,137,58,71,137,58,71,137,58,71, +137,58,71,137,58,71,137,58,71,137,58,71,137,58,71,137,58,71,148,57,73,137,58,71, +137,58,71,137,58,71,137,58,71,137,58,71,137,58,71,137,58,71,137,58,71,137,58,71, +137,58,71,137,58,71,137,58,71,137,58,71,137,58,71,137,58,71,137,58,71,137,58,71, +137,58,71,137,58,71,137,58,71,137,58,71,137,58,71,137,58,71,137,58,71,137,58,71, +137,58,71,137,58,71,137,58,71,137,58,71,137,58,71,137,58,71,137,58,71,137,58,71, +137,58,71,137,58,71,137,58,70,137,58,70,137,58,70,137,58,70,137,51,60,143,179, +241,144,176,237,144,176,237,144,176,237,144,176,237,144,176,237,144,176,237,144, +176,237,144,176,237,144,176,237,146,178,238,116,155,226,53,89,145,101,98,97,139, +140,140,138,136,137,50,87,135,86,129,158,119,153,192,134,167,220,139,171,228, +148,180,238,164,189,241,165,190,241,117,156,225,145,176,237,144,176,237,144,176, +237,144,176,237,144,176,237,145,177,237,114,154,226,46,74,125,90,129,217,131, +166,234,136,169,235,143,175,237,143,175,237,143,175,237,145,176,237,113,152,223, +145,176,237,144,176,237,144,176,237,144,176,237,149,180,238,166,191,241,143,180, +235,61,94,151,128,160,206,154,173,214,153,173,214,153,173,215,153,173,214,153, +173,214,153,171,213,127,161,208,170,190,236,172,196,242,173,196,243,172,195,241, +171,193,239,174,195,242,145,183,235,62,106,153,103,143,161,124,152,170,146,174, +220,146,177,237,144,176,237,148,180,238,165,192,241,140,176,232,152,181,238,144, +176,237,144,176,237,144,176,237,144,176,237,145,177,237,115,155,226,47,71,119, +78,107,181,98,127,192,111,138,199,124,151,206,126,153,207,126,154,207,127,153, +207,99,133,195,127,153,207,126,153,207,126,153,207,130,159,214,143,175,236,145, +177,237,113,154,223,50,89,119,100,141,192,141,172,230,144,176,237,150,181,238, +168,192,242,173,196,243,175,198,245,143,181,233,176,198,245,175,198,245,175,198, +245,175,198,245,174,198,245,176,196,243,141,178,234,49,77,125,80,109,182,100, +129,195,112,146,218,139,172,235,144,176,237,144,176,237,145,176,237,113,152,223, +145,176,237,144,176,237,144,176,237,144,176,237,144,176,237,145,176,237,114,153, +224,105,103,111,111,112,116,120,117,125,89,63,86,138,136,143,144,145,148,148, +146,153,107,77,103,153,151,155,152,150,154,154,151,158,66,39,64,31,34,47,189, +190,114,30,48,44,45,41,44,44,43,43,58,53,57,56,61,56,54,53,54,53,49,61,52,48,52, +52,48,52,52,48,58,51,47,51,51,47,59,51,47,54,51,47,51,51,47,52,51,48,61,42,41, +42,170,169,170,170,170,171,42,36,42,51,61,61,51,51,55,51,47,51,51,55,51,51,47, +51,51,47,52,51,48,52,52,51,52,46,48,47,46,42,48,41,52,46,39,37,44,40,42,40,41, +45,43,41,54,63,28,25,44,162,161,87,28,26,40,66,39,64,155,152,157,152,153,160, +152,150,154,107,77,103,150,148,154,145,143,147,137,138,144,91,65,88,124,122,128, +115,113,117,107,109,115,138,54,69,137,58,71,137,58,71,137,58,71,137,58,71,137, +58,71,137,58,71,137,58,71,137,58,71,148,56,72,137,58,71,137,58,71,137,58,71,137, +58,71,137,58,71,137,58,71,137,58,71,137,58,71,137,58,71,137,58,71,137,58,71,137, +58,71,137,58,71,148,56,72,137,58,71,137,58,71,137,58,71,137,58,71,137,58,71,137, +58,71,137,58,71,137,58,71,137,58,71,137,58,71,137,58,71,137,58,71,137,58,71,137, +58,71,137,58,71,137,58,71,137,58,71,137,58,71,137,58,71,137,58,71,137,58,71,137, +58,71,137,58,70,137,58,70,137,58,70,137,58,70,137,58,70,137,58,70,137,58,70,137, +58,70,137,58,70,137,58,70,137,58,70,137,58,70,137,58,70,137,58,70,137,58,70,137, +58,70,137,58,70,137,52,60,144,179,241,145,177,237,145,177,237,145,177,237,145, +177,237,145,177,237,145,177,237,145,177,237,145,177,237,146,178,238,114,153,224, +117,157,228,52,89,145,99,98,96,140,139,140,142,141,140,48,84,124,80,122,145,104, +140,164,103,139,163,104,140,165,139,171,228,148,180,238,165,190,241,132,171,230, +149,180,238,144,176,237,144,176,237,144,176,237,144,176,237,145,177,237,114,154, +226,48,77,129,91,131,217,137,171,235,143,175,237,144,176,237,144,176,237,144, +176,237,145,176,237,113,152,223,145,176,237,144,176,237,144,176,237,144,176,237, +144,176,237,149,180,238,134,173,232,60,93,148,128,159,206,154,173,214,153,173, +215,153,173,214,153,173,215,158,178,221,164,185,229,140,176,229,174,196,243,173, +196,243,174,198,245,175,198,245,175,198,245,176,198,245,146,184,236,64,106,164, +107,146,167,154,177,212,170,193,241,159,187,240,147,178,238,144,176,237,148,178, +238,126,164,227,172,195,243,151,181,238,144,176,237,144,176,237,144,176,237,145, +177,237,115,155,226,46,70,116,78,107,181,102,130,194,118,145,202,125,152,207, +126,154,207,126,154,207,127,153,207,99,133,195,127,153,207,126,153,207,126,153, +207,130,159,214,143,175,236,145,177,237,115,155,226,52,85,135,98,140,189,127, +161,206,142,174,233,144,176,237,150,181,238,167,192,242,175,196,243,143,181,234, +176,198,245,175,198,245,175,198,245,175,198,245,175,198,245,176,198,245,146,183, +236,58,91,147,104,134,194,112,139,199,122,150,206,133,163,219,141,172,232,144, +176,237,145,176,237,113,152,223,145,176,237,144,176,237,144,176,237,144,176,237, +144,176,237,145,176,237,114,153,224,40,23,41,43,24,41,81,57,78,30,24,42,31,26, +46,33,24,46,67,56,81,68,44,67,67,50,66,66,43,64,110,79,109,66,39,64,31,29,57, +189,187,114,30,29,48,45,57,66,44,41,50,58,53,64,56,51,64,54,50,54,53,49,59,52, +55,52,52,48,52,52,49,58,51,49,51,51,47,57,51,47,51,51,53,58,51,48,59,51,47,52, +50,45,56,42,43,41,42,37,61,50,45,49,51,49,51,51,47,51,51,47,51,51,48,55,51,47, +51,51,58,54,51,51,51,51,48,55,51,47,52,50,65,50,47,44,47,41,40,49,40,50,44,41, +40,40,41,38,46,28,39,41,165,165,88,28,28,45,66,39,64,70,44,69,66,46,72,108,77, +104,68,53,69,66,46,67,61,42,65,93,69,94,87,67,73,78,57,66,70,50,61,98,70,80,159, +78,95,157,79,96,157,79,96,157,79,96,157,79,96,157,79,96,157,79,96,157,79,96,157, +79,96,157,79,96,157,79,96,157,79,96,157,79,96,157,79,96,157,79,95,157,79,95,157, +79,95,157,79,95,157,79,95,157,79,95,157,79,95,157,79,95,157,79,95,157,79,95,157, +79,95,157,79,95,157,79,95,157,79,95,157,79,95,157,79,95,157,79,95,157,79,95,157, +79,95,157,79,95,157,79,95,156,79,95,156,79,95,156,79,95,156,79,95,156,79,95,156, +79,95,156,79,95,156,79,95,156,79,95,156,79,95,156,79,95,156,79,95,156,79,95,156, +79,95,156,79,95,156,79,95,156,79,95,156,79,95,156,79,95,156,79,95,156,79,95,156, +79,95,156,79,95,156,79,95,156,79,94,156,79,94,156,78,94,156,78,94,158,76,90,111, +157,228,115,155,226,115,155,226,115,155,226,115,155,226,115,155,226,115,155,226, +115,155,226,115,155,226,116,155,226,117,157,228,50,86,143,104,100,98,96,94,93, +140,139,140,139,139,136,47,85,107,81,121,150,99,134,155,116,150,188,136,168,223, +143,175,236,143,175,236,148,179,237,131,170,229,165,190,241,149,181,238,144,176, +237,144,176,237,144,176,237,145,177,237,115,155,226,50,80,134,91,130,217,131, +165,234,140,172,236,141,173,236,144,176,237,144,176,237,145,176,237,113,152,223, +145,176,237,144,176,237,144,176,237,144,176,237,144,176,237,145,176,237,119,158, +228,55,85,139,124,156,205,153,171,212,153,173,214,153,173,214,156,176,218,172, +195,241,176,197,244,143,181,233,175,196,243,173,196,243,173,196,243,174,198,245, +175,198,245,176,198,245,146,184,236,65,107,168,114,153,180,163,186,226,173,195, +242,171,194,243,159,187,240,147,178,238,145,176,237,115,153,223,157,185,240,171, +194,242,151,182,239,144,176,237,144,176,237,145,177,237,114,154,226,46,69,115, +82,111,183,121,149,204,125,152,207,126,154,207,126,153,207,126,154,207,127,153, +207,99,133,195,127,153,207,126,153,207,126,153,207,130,159,214,143,175,236,145, +177,237,115,155,226,51,86,131,86,129,159,128,161,207,142,175,234,144,176,237, +144,176,237,148,181,238,167,192,242,142,179,233,175,198,245,175,198,245,175,198, +245,175,198,245,175,198,245,176,198,245,146,184,236,61,94,150,123,155,205,138, +161,209,128,155,208,126,154,208,130,159,215,141,173,232,145,176,237,113,152,223, +145,176,237,144,176,237,144,176,237,144,176,237,144,176,237,145,176,237,114,153, +224,69,51,67,74,54,77,121,122,123,34,31,39,63,54,76,62,58,85,112,113,113,67,58, +68,111,91,108,110,85,108,155,153,157,66,39,64,31,29,44,189,188,114,30,33,48,45, +58,44,44,54,43,58,53,58,56,51,56,54,50,54,53,57,53,52,52,63,52,51,58,52,48,55, +51,47,51,51,47,51,51,47,51,51,49,60,51,47,51,51,47,51,51,58,59,51,47,51,51,56, +51,51,47,51,51,55,59,51,47,51,51,47,54,51,48,65,51,50,51,51,49,51,51,56,51,51, +48,65,52,53,52,52,58,52,51,50,58,46,50,48,40,39,39,41,40,56,41,39,43,28,25,45, +166,166,88,28,35,49,66,39,64,113,84,113,110,84,106,153,151,155,67,45,67,109,83, +106,104,81,102,137,139,143,85,61,71,121,88,95,111,81,87,162,147,127,162,53,70, +161,56,73,161,56,73,161,56,73,161,56,73,161,56,73,161,56,73,161,56,73,161,56,73, +161,56,73,161,56,73,161,56,73,161,56,73,161,56,73,161,55,73,161,55,73,161,55,73, +161,55,73,161,55,73,161,55,73,161,55,73,161,55,73,161,55,73,161,55,73,161,55,73, +161,55,73,161,55,73,161,55,73,161,55,73,161,55,73,161,55,73,161,55,73,161,55,73, +161,55,73,161,55,73,161,55,73,161,55,73,161,55,73,161,55,73,161,55,73,161,55,73, +161,55,73,161,55,73,161,55,73,161,55,73,161,55,73,161,55,72,161,55,72,161,55,72, +161,55,72,161,55,72,161,55,72,161,55,72,161,55,72,161,55,72,161,55,72,161,55,72, +161,55,72,161,55,72,161,55,72,161,55,72,161,55,72,160,55,72,162,54,70,41,89,147, +53,88,145,54,88,145,54,89,145,53,89,145,53,89,145,53,89,145,54,90,146,54,90,146, +53,89,145,52,89,146,104,100,98,99,98,100,140,139,140,139,138,139,137,134,133,47, +79,121,79,119,144,92,128,144,119,149,193,130,159,215,130,159,214,129,157,212, +129,157,212,106,140,203,159,185,232,171,194,242,151,181,238,144,176,237,144,176, +237,146,177,238,115,154,226,47,76,127,90,129,217,119,156,233,120,156,232,120, +157,232,136,169,235,144,176,237,145,176,237,113,152,223,145,176,237,144,176,237, +144,176,237,144,176,237,144,176,237,146,177,238,116,155,226,48,75,125,115,147, +202,151,171,213,152,171,212,153,173,214,157,177,220,171,193,239,176,198,245,143, +181,233,176,198,245,174,196,243,173,196,243,173,196,243,174,198,245,177,199,245, +146,184,236,63,106,158,103,143,161,154,178,211,171,194,239,172,195,241,171,194, +243,159,187,240,148,178,238,112,152,223,147,177,237,157,185,240,175,198,243,153, +182,239,144,176,237,146,177,238,116,155,226,49,75,122,100,132,196,128,154,208, +126,153,207,126,153,207,126,153,207,126,153,207,127,153,207,99,133,195,127,153, +207,126,153,207,126,153,207,130,159,214,143,175,236,146,177,238,115,154,225,51, +88,123,84,127,154,135,166,218,144,176,237,144,176,237,144,176,237,144,176,237, +150,180,238,134,172,231,173,195,243,174,198,245,175,198,245,175,198,245,175,198, +245,177,199,245,146,184,236,60,94,151,128,159,206,151,170,212,139,163,210,129, +155,208,127,155,209,137,168,226,145,176,237,113,152,223,145,176,237,144,176,237, +144,176,237,144,176,237,144,176,237,146,177,238,114,154,224,67,51,65,72,49,69, +120,117,124,26,20,42,62,54,72,62,52,77,109,110,115,65,37,66,109,84,108,107,76, +109,154,151,158,66,39,64,31,30,62,47,45,65,30,40,52,45,50,44,44,41,57,41,40,41, +57,57,56,54,65,54,53,49,62,52,60,54,52,49,52,52,60,52,51,49,60,51,47,51,51,59, +51,51,46,51,51,62,51,51,59,51,51,48,56,51,53,51,51,50,51,51,47,60,51,47,51,51, +47,51,51,47,52,51,57,58,51,48,58,51,60,52,51,47,54,51,57,58,52,48,52,52,49,65, +52,48,52,50,48,49,40,51,51,41,44,42,41,46,45,28,25,47,162,162,87,28,26,52,66,39, +64,110,80,107,107,77,106,152,152,157,65,38,65,107,77,110,101,70,104,137,137,142, +84,54,69,119,83,98,107,73,88,162,144,126,140,56,70,139,59,73,139,59,73,139,59, +73,149,58,74,139,59,73,139,59,73,139,59,73,139,59,73,139,59,73,139,59,73,139,59, +73,139,59,73,139,59,73,139,59,73,138,59,73,138,59,73,138,59,73,138,59,73,138,59, +73,138,59,73,138,59,73,138,59,73,138,59,73,138,59,73,138,59,73,138,59,73,138,59, +73,138,59,73,138,59,73,138,59,73,138,59,73,138,59,73,138,59,73,138,59,73,138,59, +73,138,59,73,138,59,73,138,59,73,149,58,74,138,59,73,138,59,73,138,59,73,138,59, +73,138,59,73,138,59,73,138,59,73,138,59,73,138,59,73,138,59,73,138,59,73,138,59, +73,138,59,73,138,59,73,138,59,72,138,59,72,138,59,72,138,59,72,138,59,72,138,59, +72,138,59,72,138,59,72,138,59,72,141,59,72,88,93,89,96,94,91,93,92,89,95,93,91, +97,95,92,105,102,101,100,96,94,101,97,98,100,96,94,101,99,98,104,101,101,97,94, +97,135,134,135,133,132,133,137,136,137,137,134,133,47,77,126,93,129,177,87,124, +166,127,153,206,127,154,207,127,154,207,127,154,207,128,155,208,99,133,195,132, +159,213,154,181,235,172,195,243,152,181,238,145,177,237,113,153,224,115,155,226, +46,75,125,90,130,216,88,127,214,119,155,233,117,155,231,117,155,231,140,173,236, +146,178,238,113,153,223,146,178,238,145,177,237,145,177,237,145,177,237,146,177, +238,113,153,224,116,156,226,49,74,123,105,138,199,113,146,200,151,171,213,153, +171,213,155,174,216,158,177,220,172,193,238,143,181,234,177,199,245,176,198,245, +175,196,243,174,196,243,175,197,243,143,180,234,147,184,236,64,106,164,109,148, +170,121,159,195,151,176,208,161,184,223,173,195,241,173,195,243,161,189,240,117, +154,225,146,177,237,146,177,237,154,182,239,176,198,244,154,182,239,115,153,223, +116,156,226,49,75,123,102,136,198,99,133,196,128,154,208,127,154,207,127,154, +207,127,154,207,128,155,208,99,133,195,128,155,208,127,154,207,127,154,207,131, +159,214,145,176,237,113,153,224,116,156,226,52,85,136,104,145,200,112,152,223, +146,177,238,145,177,237,145,177,237,145,176,237,146,177,237,118,156,225,166,192, +242,174,196,243,175,199,245,176,198,245,177,199,245,143,181,234,147,184,236,60, +94,151,128,160,206,126,158,205,151,170,213,140,163,210,133,159,214,142,172,232, +146,178,238,113,153,223,146,178,238,145,177,237,145,177,237,145,177,237,146,177, +238,113,153,224,115,154,224,105,104,111,111,110,117,120,121,126,57,47,67,100, +102,105,106,107,111,109,113,116,107,78,103,153,153,157,152,150,154,154,152,156, +66,39,64,31,48,43,47,45,65,30,33,62,45,47,44,44,45,44,42,53,41,57,51,64,54,57, +70,53,54,53,52,48,52,52,56,52,52,48,56,51,47,64,51,47,55,51,47,56,51,47,54,51, +62,51,51,48,51,51,47,52,51,47,51,51,49,56,51,49,64,51,47,51,51,47,51,51,53,51, +51,50,52,51,48,51,51,55,60,51,48,52,51,48,52,52,48,52,52,57,52,52,51,52,52,48, +52,40,39,47,41,43,42,41,39,43,28,25,51,170,170,90,28,27,49,66,39,64,155,154,157, +152,150,154,152,152,157,107,77,103,150,148,152,145,144,151,137,140,142,126,89, +101,175,156,138,169,150,135,162,148,126,140,55,70,139,58,72,139,58,72,139,58,72, +149,57,73,139,58,72,139,58,72,139,58,72,139,58,72,139,58,72,139,58,72,139,58,72, +139,58,72,139,58,72,139,58,72,139,58,72,139,58,72,139,58,72,139,58,72,139,58,72, +139,58,72,139,58,72,139,58,72,139,58,72,139,58,72,139,58,72,139,58,72,139,58,72, +139,58,72,139,58,72,139,58,72,139,58,72,139,58,72,139,58,72,139,58,72,139,58,72, +139,58,72,139,58,72,139,58,72,149,57,73,139,58,72,139,58,72,139,58,72,139,58,72, +139,58,72,139,58,72,138,58,72,138,58,72,138,58,72,138,58,72,138,58,72,138,58,72, +138,58,72,138,58,72,138,58,72,138,58,72,138,58,72,138,58,72,138,58,72,138,58,72, +138,58,72,138,58,72,138,58,72,140,58,72,95,100,101,100,99,100,99,98,99,100,98, +100,95,94,94,105,104,105,101,98,101,103,102,103,105,103,102,106,103,101,102,99, +98,142,140,141,135,133,133,140,139,138,141,141,141,143,141,140,48,77,127,96,131, +182,95,131,181,101,134,196,101,135,198,101,135,198,101,135,198,102,135,198,102, +136,198,102,136,199,112,146,213,128,166,230,142,179,234,124,163,229,116,155,226, +118,157,228,49,77,127,87,120,202,89,127,212,90,129,217,89,129,217,90,129,217, +112,152,225,116,155,226,116,156,226,116,155,226,115,155,226,115,155,226,115,155, +226,116,155,226,116,156,226,118,157,228,49,75,124,103,137,199,105,138,199,115, +147,202,124,156,206,128,160,207,128,161,207,133,168,216,146,183,234,146,184,236, +146,184,236,146,184,236,146,183,236,145,182,235,146,182,235,147,184,235,64,107, +155,108,147,167,116,155,183,124,163,198,134,172,215,145,183,234,146,183,236,143, +179,235,133,170,231,120,157,228,115,155,226,115,155,226,124,163,229,147,184,235, +131,168,231,121,158,228,50,76,125,103,137,199,102,136,198,102,135,198,101,135, +198,101,135,198,101,135,198,102,135,198,102,136,198,102,135,198,101,135,198,101, +135,198,103,138,201,115,154,225,116,156,226,118,157,228,53,85,140,117,156,227, +116,156,226,116,155,226,115,155,226,115,155,226,115,155,226,116,155,226,116,155, +226,121,159,228,136,174,233,143,180,235,146,183,236,146,184,236,147,184,236,148, +186,237,61,95,152,129,162,207,128,160,206,128,160,206,127,160,211,128,164,224, +119,158,228,115,155,226,116,156,226,116,155,226,115,155,226,115,155,226,115,155, +226,116,155,226,116,156,226,117,156,226,40,30,41,43,26,41,81,56,78,56,40,55,59, +45,60,61,39,59,105,74,101,68,50,67,67,46,69,66,47,64,110,80,106,66,39,64,31,29, +43,47,45,65,30,28,41,45,45,53,44,41,45,42,39,48,57,63,56,54,52,68,54,57,53,54, +48,58,53,48,52,53,53,61,52,47,57,51,47,52,51,52,51,51,47,59,51,47,57,51,47,51, +51,49,51,51,57,57,51,47,51,51,47,54,51,47,58,51,50,51,51,48,51,51,60,57,51,48, +52,51,52,54,51,54,52,51,64,59,52,48,63,52,48,72,52,57,51,52,49,60,44,43,47,41, +39,55,41,39,50,28,25,41,166,165,88,28,29,40,66,39,64,70,50,68,66,50,64,108,81, +107,68,52,72,66,44,65,61,36,64,93,68,96,57,43,61,51,34,50,44,25,47,69,50,72,159, +79,96,157,80,97,157,81,97,157,81,97,157,81,97,157,81,97,157,81,97,157,81,97,157, +81,97,157,81,97,157,81,97,157,81,97,157,81,97,157,80,97,157,80,97,157,80,97,157, +80,97,157,80,97,157,80,97,157,80,97,157,80,97,157,80,97,157,80,97,157,80,97,157, +80,97,157,80,97,157,80,97,157,80,97,157,80,97,157,80,97,157,80,97,157,80,97,157, +80,97,157,80,97,157,80,97,157,80,97,157,80,97,157,80,97,157,80,97,157,80,97,157, +80,97,157,80,97,157,80,97,157,80,97,157,80,97,157,80,97,157,80,97,157,80,97,157, +80,97,157,80,97,157,80,97,157,80,96,157,80,96,157,80,96,157,80,96,157,80,96,157, +80,96,157,80,96,157,80,96,157,80,96,157,80,96,157,80,96,157,80,96,159,80,97,95, +100,101,95,100,101,59,53,71,59,53,71,59,53,71,59,53,71,59,53,71,142,140,141,58, +98,157,72,113,177,56,94,154,49,86,143,50,85,143,50,85,143,49,85,144,51,86,144, +53,79,129,49,76,123,49,75,122,49,74,123,49,74,123,49,74,123,49,74,123,49,75,123, +49,75,123,49,75,123,50,79,130,51,84,141,58,94,153,70,109,172,56,89,149,52,84, +140,53,79,128,45,69,113,44,69,115,45,72,122,44,71,120,42,68,115,51,82,136,52,84, +139,52,84,139,52,84,139,52,84,139,52,84,139,52,84,139,52,84,139,52,84,139,53,85, +140,53,79,128,49,75,124,49,74,123,48,75,125,54,85,138,59,91,148,61,94,150,60,95, +152,62,98,157,65,104,167,66,107,172,66,107,172,66,107,172,66,107,172,65,106,170, +67,107,171,73,112,175,66,107,164,65,107,167,65,107,169,66,107,170,66,107,172,66, +107,172,67,107,171,65,105,168,59,96,157,51,85,142,51,83,139,51,83,138,55,89,147, +67,105,168,59,95,153,53,79,130,49,75,124,49,74,123,49,74,123,49,74,123,49,74, +123,49,74,123,49,74,123,49,74,123,49,74,123,49,74,123,49,74,123,49,75,124,52,83, +138,52,84,139,53,85,140,57,89,145,53,85,140,52,84,139,52,84,139,52,84,139,52,84, +139,52,84,139,52,84,139,52,84,139,51,83,139,52,86,143,61,98,159,66,106,169,67, +107,172,66,107,172,68,108,173,65,98,154,61,95,152,60,94,151,60,95,153,66,104, +167,65,104,168,60,97,158,52,86,142,51,83,139,52,84,139,52,84,139,52,84,139,52, +84,139,52,84,139,52,84,139,52,84,139,69,51,67,74,53,71,121,122,126,55,44,54,98, +73,96,103,75,99,149,150,154,67,54,66,111,82,110,110,80,106,155,152,157,66,39,64, +31,29,60,47,45,65,30,32,45,45,43,52,44,43,50,42,40,53,40,38,41,55,56,61,39,41, +40,39,37,44,38,52,38,37,43,37,37,37,36,52,53,51,51,47,62,51,47,52,51,49,51,51, +52,57,51,53,51,51,47,51,51,48,51,51,47,51,51,56,51,51,51,56,51,47,59,51,54,59, +51,54,57,51,62,51,51,61,54,51,55,62,52,49,51,52,49,55,52,48,52,52,53,69,44,43, +56,41,46,55,41,39,56,28,25,39,165,164,88,28,36,43,66,39,64,113,90,113,110,80, +113,153,154,155,67,56,70,109,86,106,104,75,104,137,139,143,56,47,59,86,68,84,78, +56,78,107,110,114,163,53,72,161,56,74,161,56,74,161,56,74,161,56,74,161,56,74, +161,56,74,161,56,74,161,56,74,161,56,74,161,56,74,161,56,74,161,56,74,161,56,74, +161,56,74,161,56,74,161,56,74,161,56,74,161,56,74,161,56,74,161,56,74,161,56,74, +161,56,74,161,56,74,161,56,74,161,56,74,161,56,74,161,56,74,161,56,74,161,56,74, +161,56,74,161,56,74,161,56,74,161,56,74,161,56,74,161,56,74,161,56,74,161,56,74, +161,56,74,161,56,74,161,56,74,161,56,74,161,56,74,161,56,74,161,56,74,161,56,74, +161,56,74,161,56,74,161,56,74,161,56,74,161,56,74,161,56,73,161,56,73,161,56,73, +161,56,73,161,56,73,161,56,73,161,56,73,161,56,73,161,56,73,161,56,73,161,56,73, +161,56,73,162,54,72,95,100,101,95,100,101,59,53,71,59,53,71,59,53,71,59,53,71, +59,53,71,140,139,140,49,85,142,127,165,231,147,185,236,124,163,229,115,155,226, +116,155,226,116,156,226,118,157,228,50,76,125,103,137,199,102,136,198,102,135, +198,101,135,198,101,135,198,101,135,198,102,135,198,102,136,198,102,136,199,108, +146,212,115,155,226,117,156,226,125,163,229,147,185,236,126,165,231,46,71,115, +79,108,180,80,109,182,86,121,204,89,127,216,91,130,217,111,151,224,116,155,226, +116,156,226,116,155,226,115,155,226,115,155,226,115,155,226,116,155,226,116,156, +226,118,157,228,49,76,124,104,137,199,102,136,198,102,135,198,104,138,199,115, +147,202,124,156,205,128,159,206,129,161,207,135,169,218,146,183,235,146,184,236, +146,184,236,146,184,236,147,183,236,147,184,236,68,107,172,148,185,237,147,184, +236,146,184,236,146,184,236,146,184,236,146,184,236,146,184,236,147,183,236,142, +179,235,132,169,232,119,157,228,115,155,226,115,155,226,123,162,229,144,181,236, +54,84,135,106,138,199,102,136,198,102,135,198,101,135,198,101,135,198,101,135, +198,102,135,198,102,136,198,102,135,198,101,135,198,101,135,198,106,142,208,116, +155,225,116,156,226,118,157,228,53,85,140,118,157,228,116,156,226,116,155,226, +115,155,226,115,155,226,115,155,226,116,155,226,116,156,226,116,155,226,115,155, +226,119,158,228,133,169,232,143,179,235,147,183,236,148,186,237,61,95,152,129, +162,207,128,160,206,130,163,209,145,183,234,146,183,236,143,180,235,134,173,232, +121,159,228,115,155,226,115,155,226,115,155,226,115,155,226,116,155,226,116,156, +226,117,156,226,67,47,67,72,49,69,120,118,122,53,34,51,96,69,96,100,70,96,148, +147,150,65,42,63,109,79,109,107,78,103,154,151,159,66,39,64,31,31,43,189,189, +115,30,28,41,45,43,45,44,45,45,42,40,54,41,39,44,40,38,40,40,45,39,38,37,39,53, +48,53,53,48,54,52,47,52,51,47,51,51,49,55,51,50,51,51,57,51,51,55,58,51,48,51, +51,47,54,51,53,51,51,47,61,51,47,51,51,47,59,51,48,51,51,55,51,51,50,51,51,47, +51,51,55,52,51,55,51,52,58,52,52,49,51,52,48,53,52,48,57,44,45,48,41,46,50,41, +41,43,28,41,39,167,166,89,28,27,40,66,39,64,110,85,114,107,80,109,152,149,154, +65,48,63,107,78,103,101,72,97,138,138,142,55,40,53,84,61,81,75,53,73,109,109, +113,141,58,70,141,61,73,141,61,73,141,61,73,141,61,73,141,61,73,141,61,73,141, +61,73,141,61,73,141,61,73,141,61,73,141,61,73,141,61,73,141,61,73,141,61,73,141, +61,73,141,61,73,141,61,73,141,61,73,141,61,73,141,61,73,141,61,73,141,61,73,141, +61,73,141,61,73,141,61,73,141,61,73,141,61,73,141,61,73,141,61,73,141,61,73,141, +61,73,141,61,73,141,61,73,141,61,73,141,61,73,141,61,73,141,61,73,141,61,73,141, +61,73,141,61,73,141,61,73,141,61,73,141,61,73,141,61,73,141,61,73,141,61,73,141, +61,73,141,61,73,141,61,73,141,61,73,141,61,73,141,61,73,141,61,73,141,61,73,141, +61,73,141,61,73,141,61,73,141,61,73,141,61,73,141,61,73,141,61,73,141,61,73,142, +58,71,95,100,101,95,100,101,136,135,136,143,142,143,138,137,138,149,148,149,137, +137,138,148,147,146,49,85,142,116,155,226,122,161,227,177,199,244,154,182,239, +145,177,237,113,153,224,116,156,226,49,76,125,102,136,198,99,133,196,128,154, +208,127,154,207,127,154,207,127,155,208,128,156,209,99,134,195,130,158,212,140, +171,229,145,176,237,145,176,237,145,177,237,122,160,226,145,183,234,46,77,108, +74,101,158,77,105,177,103,132,199,109,142,211,128,162,229,144,176,237,146,178, +238,113,153,223,146,178,238,145,177,237,145,177,237,145,177,237,146,177,238,113, +153,224,116,156,226,49,75,123,102,136,198,99,133,196,128,154,208,127,153,207, +129,155,208,140,163,210,152,171,213,127,159,207,169,189,234,176,198,245,176,198, +245,176,198,245,177,199,245,143,181,234,147,183,236,66,106,171,146,182,235,143, +180,234,177,199,245,176,198,245,176,198,245,176,198,245,177,199,245,143,181,234, +176,197,243,174,196,243,164,190,241,148,180,238,145,177,237,113,152,223,123,162, +229,61,93,148,114,146,201,103,135,198,128,154,207,127,153,207,127,154,207,127, +155,208,129,157,211,100,135,197,128,156,209,127,155,208,132,161,216,142,174,233, +146,177,238,113,153,224,116,156,226,52,84,139,115,155,226,113,153,224,146,177, +238,145,177,237,145,177,237,145,177,237,146,178,238,113,153,223,146,178,238,145, +176,237,145,176,237,148,178,238,161,188,240,140,177,233,147,183,236,60,94,151, +128,160,206,125,158,205,156,175,216,173,195,242,176,198,245,175,199,245,174,197, +243,134,171,231,150,181,238,145,176,237,145,176,237,145,177,237,146,177,238,113, +153,224,115,154,224,105,104,107,111,110,117,120,117,122,89,64,86,138,137,140, +144,143,149,148,146,150,107,77,103,153,151,157,152,150,160,154,151,159,66,39,64, +31,29,43,189,187,114,30,28,41,45,43,68,44,44,44,42,40,42,41,40,40,39,46,49,54, +52,54,54,50,52,52,48,60,52,48,57,51,60,51,51,47,54,51,47,57,51,47,51,51,47,62, +51,47,52,50,46,49,42,38,41,42,46,41,50,49,49,51,48,51,51,47,51,51,47,52,51,53, +50,51,47,61,51,48,51,51,56,51,51,58,50,52,53,66,52,61,73,52,47,69,52,62,59,43, +44,52,41,44,42,41,40,43,28,28,50,165,163,92,28,47,39,66,39,64,155,152,159,152, +150,154,152,151,154,107,87,104,150,149,152,145,143,147,140,139,143,91,73,89,124, +123,126,115,113,117,111,110,114,35,44,42,38,51,50,38,51,50,38,51,50,38,51,50,38, +51,50,38,51,50,38,51,50,38,51,50,38,51,50,38,51,50,38,51,50,38,51,50,38,51,50, +38,51,50,38,51,50,38,51,50,38,51,50,38,51,50,38,51,50,38,51,50,38,51,50,38,51, +50,38,51,50,38,51,50,38,51,50,38,51,50,38,51,50,38,51,50,38,51,50,38,51,50,38, +51,50,38,51,50,38,51,50,38,51,50,38,51,50,38,51,50,38,51,50,38,51,50,38,51,50, +38,51,50,38,51,50,38,51,50,38,51,50,38,51,50,38,51,50,38,51,50,38,51,50,38,51, +50,38,51,50,38,51,50,38,51,50,38,51,50,38,51,50,38,51,50,38,51,50,38,51,50,38, +51,50,38,51,50,38,51,50,38,51,50,38,51,50,38,51,50,35,45,44,95,100,101,95,100, +101,139,138,139,135,133,134,138,137,138,141,140,141,139,138,139,146,146,145,49, +85,142,116,155,226,145,177,237,153,182,239,175,198,243,153,182,239,145,177,237, +116,155,226,49,76,126,102,135,198,128,154,208,126,153,207,126,153,207,126,154, +207,134,163,220,134,163,220,104,139,204,138,168,226,143,175,235,144,176,237,144, +176,237,144,176,237,145,177,237,120,160,222,52,91,108,76,105,147,110,138,189, +120,147,203,121,148,204,134,164,222,144,176,236,145,176,237,113,152,223,145,176, +237,144,176,237,144,176,237,144,176,237,144,176,237,146,177,238,116,155,226,49, +74,123,102,135,198,128,154,208,126,153,207,126,153,207,126,153,207,129,155,208, +144,167,215,133,169,223,174,195,241,175,198,245,175,198,245,175,198,245,175,198, +245,177,199,245,146,184,236,66,107,172,145,183,235,175,197,243,174,196,243,175, +198,245,175,198,245,175,198,245,176,198,245,143,181,233,176,198,245,174,198,245, +172,195,243,165,190,241,149,180,238,145,177,237,115,155,226,50,78,129,124,156, +205,145,167,212,129,157,208,126,153,207,126,154,207,135,165,222,140,170,230,109, +147,216,140,170,229,140,171,230,143,174,235,144,176,237,144,176,237,146,177,238, +116,155,226,52,84,138,109,147,223,140,172,237,143,175,237,142,175,237,144,176, +237,144,176,237,145,176,237,113,152,223,145,176,237,144,176,237,144,176,237,144, +176,237,147,178,238,161,188,240,132,165,217,61,94,150,128,160,206,154,173,214, +153,173,215,166,188,232,175,198,245,175,198,245,175,198,245,140,179,233,167,192, +241,149,180,238,144,176,237,144,176,237,144,176,237,146,177,238,114,154,224,40, +23,39,43,36,41,81,58,81,56,36,54,59,35,58,61,53,59,105,76,105,68,45,66,67,48,75, +66,39,65,110,82,106,66,39,64,31,29,43,189,188,114,30,28,46,45,43,67,44,40,43,58, +57,68,57,51,57,55,50,54,53,49,53,52,48,52,52,49,61,52,48,55,51,54,60,51,57,51, +51,47,51,51,52,52,51,49,52,51,50,51,42,42,41,170,168,170,170,168,171,42,42,42, +51,47,58,51,47,51,51,47,51,51,48,62,51,56,64,51,50,51,51,48,50,51,49,65,52,47, +51,52,61,57,52,63,51,51,47,51,42,40,43,41,39,56,41,55,47,28,25,39,169,167,96,28, +27,39,66,39,64,70,46,69,66,56,64,108,76,107,68,48,69,66,50,64,62,45,70,97,70,95, +57,40,58,51,38,50,45,32,51,72,51,71,35,47,46,35,51,51,35,51,51,35,51,51,35,48, +48,35,39,39,35,48,48,35,51,51,36,51,51,35,51,51,35,51,51,35,51,51,35,48,48,35, +39,39,35,48,48,35,51,51,35,51,51,35,51,51,35,51,51,35,51,51,35,48,48,35,39,39, +35,48,48,35,51,51,35,51,51,35,51,51,35,51,51,35,51,51,35,48,48,35,39,39,35,48, +48,35,51,51,35,51,51,35,51,51,35,51,51,35,51,51,35,48,48,35,39,39,35,48,48,35, +50,50,44,48,48,46,47,47,46,47,47,47,48,47,47,48,47,46,47,47,46,47,47,46,47,47, +47,48,48,47,48,48,47,48,47,47,48,48,46,48,47,47,48,47,46,47,47,47,48,48,47,48, +48,47,48,48,47,48,48,47,48,48,47,48,48,48,48,48,48,49,49,42,43,42,95,100,101,95, +100,101,136,135,136,137,136,137,141,140,141,139,138,139,137,136,137,143,142,142, +49,85,142,115,155,226,145,176,237,144,176,237,153,182,239,175,198,243,154,182, +239,117,156,226,49,76,125,101,135,198,127,154,207,126,153,207,126,154,207,130, +159,215,143,175,236,145,175,236,113,151,222,145,176,237,144,176,237,144,176,237, +144,176,237,144,176,237,145,176,237,114,154,225,49,84,115,93,129,151,106,136, +158,116,145,185,116,146,190,132,161,216,144,176,236,145,176,237,113,152,223,145, +176,237,144,176,237,144,176,237,144,176,237,144,176,237,145,177,237,115,155,226, +49,75,123,100,135,197,127,154,207,126,153,207,126,153,207,126,153,207,126,153, +207,130,156,209,124,160,219,173,195,243,174,196,243,175,198,245,175,198,245,175, +198,245,176,198,245,146,184,236,66,107,172,146,182,236,174,196,243,173,196,243, +174,196,243,175,198,245,175,198,245,176,198,245,143,181,233,176,198,245,175,198, +245,174,198,245,172,195,243,165,190,241,149,180,238,115,155,226,48,74,123,106, +140,200,144,166,211,143,165,211,129,157,208,131,160,216,143,175,236,145,176,237, +113,152,223,145,176,237,144,176,237,144,176,237,144,176,237,144,176,237,145,177, +237,115,155,226,50,81,135,92,132,218,119,156,231,128,162,233,127,162,233,137, +170,235,144,176,237,145,176,237,113,152,223,145,176,237,144,176,237,144,176,237, +144,176,237,144,176,237,147,177,237,123,157,215,59,92,148,128,159,206,154,173, +214,153,173,214,155,175,217,168,190,236,175,198,245,176,198,245,143,180,234,175, +195,243,166,191,242,148,181,238,144,176,237,144,176,237,145,176,237,114,153,224, +69,57,72,74,53,71,121,118,127,55,34,56,98,81,102,103,75,99,149,147,155,67,42,68, +111,83,116,110,80,112,155,152,160,66,39,64,31,29,61,189,187,114,30,35,41,45,45, +56,44,60,45,58,52,63,56,53,56,54,50,55,53,49,53,52,52,52,52,52,59,52,49,53,51, +60,54,51,46,51,51,55,51,51,47,59,51,47,51,51,47,52,39,42,39,168,166,171,168,166, +171,39,34,58,51,47,51,51,47,51,51,47,51,51,48,54,51,47,51,51,47,51,51,52,69,51, +47,58,52,47,53,52,48,52,52,48,60,51,47,54,42,42,43,41,39,41,41,50,46,28,47,39, +162,161,92,28,26,39,66,39,64,113,87,109,110,79,111,153,152,155,67,45,68,109,80, +109,104,75,102,137,138,143,56,37,57,86,63,86,78,56,76,107,109,114,224,64,63,223, +67,66,223,67,66,223,66,66,222,59,59,216,206,207,222,59,59,221,66,66,220,67,65, +222,67,66,223,67,66,223,66,66,222,59,59,216,206,207,222,59,59,223,66,66,223,67, +66,223,66,66,223,67,66,223,66,66,222,59,59,216,206,207,222,59,59,223,66,66,223, +67,66,223,67,66,223,67,66,223,66,66,222,59,59,216,206,207,222,59,59,223,66,66, +223,66,66,223,67,66,223,67,66,223,66,66,222,59,59,216,206,207,221,59,59,225,66, +66,126,122,123,131,123,124,128,121,122,125,119,120,125,119,120,128,121,122,125, +119,120,130,122,123,124,117,118,124,116,117,126,120,121,124,117,118,128,120,121, +125,119,120,130,122,123,125,117,118,124,117,118,123,116,117,123,116,117,124,117, +118,121,114,115,117,111,112,113,106,107,118,111,112,95,100,101,95,100,101,138, +137,138,136,135,136,131,130,131,143,142,143,135,135,136,135,133,132,50,85,143, +115,155,226,145,177,237,144,176,237,144,176,237,153,182,239,176,198,244,129,167, +231,48,75,125,101,135,198,127,153,207,126,153,207,130,158,214,141,172,232,144, +176,237,145,176,237,113,152,223,145,176,237,144,176,237,144,176,237,144,176,237, +144,176,237,145,177,237,114,154,223,47,86,99,79,119,136,107,136,146,108,138,154, +100,134,156,126,156,207,143,175,236,145,176,237,113,152,223,145,176,237,144,176, +237,144,176,237,144,176,237,144,176,237,145,177,237,115,155,226,49,75,122,95, +131,184,125,152,203,126,153,207,126,153,207,126,153,207,126,153,207,127,153,207, +106,141,206,159,185,239,171,194,243,174,196,243,175,198,245,175,198,245,176,198, +245,146,184,236,66,107,172,146,184,236,175,198,245,174,196,243,173,196,243,174, +196,243,175,198,245,176,198,245,143,181,233,176,198,245,175,198,245,175,198,245, +174,198,245,172,195,243,165,191,241,121,158,228,48,74,123,101,135,198,129,157, +208,143,165,211,145,167,213,145,176,233,144,176,237,145,176,237,113,152,223,145, +176,237,144,176,237,144,176,237,144,176,237,144,176,237,145,177,237,115,155,226, +50,80,134,90,130,217,118,155,231,117,154,231,117,154,231,117,154,231,138,171, +236,145,176,237,113,152,223,145,176,237,144,176,237,144,176,237,144,176,237,141, +172,232,135,164,222,108,143,206,55,85,138,124,156,205,153,171,213,153,173,214, +153,173,214,159,180,223,174,197,244,176,198,245,143,181,233,175,198,245,173,196, +243,167,192,242,150,181,238,144,176,237,145,176,237,114,153,224,67,48,67,72,52, +73,120,120,122,53,38,56,96,70,95,100,74,101,148,148,150,65,47,68,109,79,105,107, +77,103,154,154,156,66,39,64,31,29,44,47,45,65,30,35,50,45,44,45,44,44,43,58,53, +57,56,52,56,54,50,57,53,61,59,52,50,54,52,52,59,52,52,53,51,50,52,51,48,57,51, +47,51,51,47,51,51,47,54,51,47,60,39,37,39,168,166,168,168,166,168,39,44,39,51, +47,51,51,59,51,51,57,55,51,47,53,51,56,51,51,50,51,51,47,54,51,47,55,52,47,59, +52,48,52,52,51,52,51,47,51,42,40,53,41,39,44,41,56,47,28,25,39,167,166,97,28,29, +40,66,39,64,110,80,107,107,75,107,152,150,157,65,38,63,107,77,103,101,70,97,135, +135,142,55,31,53,84,61,81,75,52,73,105,105,113,217,205,206,215,205,206,215,205, +206,213,205,206,213,204,205,213,201,202,211,202,203,206,197,198,205,194,195,209, +198,199,213,203,203,212,204,205,211,202,203,212,200,201,213,204,205,213,205,206, +213,204,205,213,203,204,213,204,205,213,205,206,213,204,205,213,201,202,213,204, +205,213,205,206,215,205,206,215,205,206,215,205,206,213,205,206,213,204,205,213, +201,202,213,204,205,213,204,205,213,203,204,213,204,205,212,204,205,211,202,203, +210,201,201,209,196,197,209,200,201,212,203,204,121,116,117,128,119,120,129,122, +123,122,115,116,123,117,118,129,121,122,123,117,118,127,120,121,124,117,118,123, +117,118,120,113,114,120,113,114,121,114,115,117,110,111,124,117,118,124,119,120, +122,115,116,118,111,112,120,113,114,117,110,111,117,110,111,117,110,111,115,110, +111,110,103,104,95,100,101,95,100,101,136,135,136,132,131,132,136,137,138,142, +141,142,137,136,137,139,137,138,50,85,143,115,155,226,145,177,237,144,176,237, +144,176,237,144,176,237,152,182,239,142,179,234,53,83,134,103,136,198,127,153, +207,126,154,207,137,168,226,144,176,237,144,176,237,145,176,237,113,152,223,145, +176,237,144,176,237,144,176,237,144,176,237,144,176,237,145,177,237,107,148,208, +47,91,85,78,119,143,117,147,185,139,162,205,140,163,205,138,168,222,144,176,236, +145,176,237,113,152,223,145,176,237,144,176,237,144,176,237,144,176,237,144,176, +237,145,177,237,115,155,226,49,77,121,85,123,160,119,148,193,125,152,206,126, +153,207,126,153,207,126,153,207,128,154,209,106,144,212,148,178,238,157,185,240, +169,193,242,174,196,243,174,198,245,176,198,245,146,184,236,66,107,172,146,184, +236,176,198,245,174,198,245,174,196,243,173,196,243,174,196,243,176,198,245,143, +181,233,176,198,245,175,198,245,175,198,245,175,198,245,174,198,245,174,196,243, +137,175,233,51,77,128,101,135,198,127,153,207,129,157,208,145,166,213,163,187, +239,148,180,238,145,176,237,113,152,223,145,176,237,144,176,237,144,176,237,144, +176,237,144,176,237,145,177,237,115,155,226,50,82,135,91,131,218,117,155,231, +116,153,231,116,153,231,116,153,231,136,169,235,145,176,237,113,152,223,145,176, +237,144,176,237,144,176,236,137,167,225,127,155,210,127,154,208,101,136,198,48, +75,125,115,146,202,151,170,212,152,171,213,156,176,219,168,191,236,175,198,245, +176,198,245,143,181,233,176,198,245,174,198,245,173,196,243,168,192,242,150,181, +238,145,176,237,114,153,224,105,103,112,111,109,118,120,117,124,89,63,86,138, +136,144,144,142,150,148,146,152,107,77,103,153,151,155,152,150,159,154,151,156, +66,39,64,31,29,47,47,45,65,30,28,43,45,44,46,44,43,54,57,62,72,56,51,56,54,50, +54,53,50,53,52,48,64,52,49,53,52,52,53,51,54,57,51,61,51,51,47,51,51,50,59,51, +48,57,51,47,51,39,34,39,168,167,171,167,167,167,40,39,45,51,47,51,51,55,58,51, +47,52,51,47,51,51,52,51,51,47,51,51,49,52,51,47,51,52,47,58,52,48,53,52,52,60, +50,56,63,42,43,50,41,44,41,41,38,41,28,25,39,170,167,96,28,27,51,66,39,64,155, +152,157,152,153,156,152,150,154,107,77,107,150,148,152,145,143,147,135,136,145, +91,65,91,124,122,126,115,113,117,105,106,116,222,53,53,219,54,53,219,53,53,218, +53,53,218,53,53,213,203,204,213,53,52,202,53,51,198,54,51,202,54,51,208,53,52, +210,53,52,209,53,52,207,197,197,216,53,53,218,53,53,218,53,53,213,203,204,218, +53,53,218,53,53,218,53,53,213,203,204,218,53,53,218,53,53,219,54,53,219,54,53, +219,53,53,218,53,53,218,53,53,213,203,204,218,53,53,218,53,53,212,202,203,213, +53,52,209,53,52,208,53,52,207,53,52,203,192,193,210,53,52,214,55,53,121,119,119, +128,120,120,129,121,122,121,114,115,123,117,118,127,120,121,121,114,115,120,113, +114,121,115,116,114,107,108,115,109,110,111,105,106,112,106,107,112,105,106,116, +109,110,117,110,111,119,112,113,121,114,115,122,115,116,123,114,115,123,116,117, +115,109,110,112,106,107,108,102,103,95,100,101,95,100,101,136,136,137,130,129, +130,133,132,133,135,133,134,137,136,137,148,146,146,49,85,142,115,155,226,145, +177,237,144,176,237,144,176,237,144,176,237,145,176,237,122,161,229,61,93,148, +113,145,201,128,155,207,127,154,207,140,170,229,145,176,237,145,176,237,146,178, +238,113,153,223,146,178,238,145,176,237,145,176,237,145,176,237,145,176,237,145, +177,237,109,148,210,48,87,95,84,123,157,124,151,201,128,156,206,148,171,217,162, +186,236,149,180,238,146,177,237,113,153,223,146,178,238,145,176,237,145,176,237, +145,176,237,145,176,237,146,178,238,116,155,226,49,75,124,100,133,193,127,154, +207,127,153,207,128,155,209,128,155,209,130,157,212,139,170,227,112,152,221,146, +177,238,147,177,237,157,184,239,169,194,242,176,196,243,176,199,246,146,184,236, +66,107,171,144,182,235,177,199,245,176,198,245,175,198,245,175,196,243,174,196, +243,176,197,243,143,181,234,177,199,245,176,198,245,176,198,245,176,198,245,176, +198,245,176,199,246,145,182,235,57,90,144,107,140,200,128,154,207,127,153,207, +132,160,212,164,188,239,165,190,241,149,181,238,113,152,223,146,178,238,145,176, +237,145,176,237,145,176,237,145,176,237,146,178,238,116,155,226,50,82,135,92, +131,218,118,156,233,117,153,231,117,154,231,117,154,231,140,172,236,146,178,238, +113,153,223,145,177,237,142,172,231,135,164,221,127,154,208,127,153,207,128,155, +208,102,135,198,48,74,123,103,137,199,139,162,211,152,172,215,170,191,237,175, +198,245,176,198,245,177,199,245,143,181,234,177,199,245,176,198,245,175,198,245, +175,196,243,169,193,242,155,183,239,116,154,224,40,31,39,43,36,41,81,60,78,56, +35,55,59,46,58,61,53,59,105,79,101,68,44,67,67,62,66,66,39,69,110,78,111,66,39, +64,31,40,43,47,45,65,30,29,43,45,50,46,44,53,45,57,53,63,56,51,56,54,50,54,53, +49,56,52,50,54,52,50,61,52,54,59,51,50,52,51,51,51,51,47,51,51,50,51,51,48,51, +51,47,51,40,46,50,167,166,170,159,158,159,41,36,56,51,47,51,51,47,66,51,48,50, +51,47,56,51,47,58,51,47,55,51,47,51,51,47,60,52,48,53,52,54,53,52,53,60,50,57, +57,40,39,41,41,50,42,41,39,52,28,25,40,169,167,95,28,49,56,66,39,64,70,43,78,66, +39,69,108,76,107,68,62,68,66,47,65,61,51,67,91,63,93,57,52,57,51,36,50,44,36,49, +68,46,69,215,206,207,213,204,205,213,203,204,213,204,205,213,204,205,212,201, +202,202,192,193,190,179,179,187,176,176,189,178,178,191,180,180,193,183,184,194, +184,184,199,188,189,208,199,200,212,204,205,213,204,205,213,202,203,213,202,203, +213,204,205,213,204,205,213,202,203,213,202,203,213,204,205,213,205,206,213,204, +205,213,203,204,213,204,205,213,204,205,211,201,202,211,202,203,210,201,202,205, +194,195,198,188,189,197,186,187,196,186,187,197,187,187,199,189,189,202,192,193, +206,197,197,122,116,116,126,118,119,121,114,115,123,115,116,120,113,114,122,114, +115,118,112,113,113,107,108,120,112,113,130,125,125,134,129,130,129,125,125,124, +118,119,120,114,115,123,116,117,122,115,116,121,114,115,124,116,117,118,111,112, +117,110,111,118,111,112,117,110,111,116,110,111,109,103,104,95,100,101,95,100, +101,131,130,131,125,126,127,136,135,136,141,140,141,129,128,129,138,136,137,50, +85,143,115,155,226,145,177,237,144,176,237,144,176,237,144,176,237,145,176,237, +115,155,226,51,79,131,125,156,205,110,143,199,101,134,196,110,150,220,113,152, +223,113,152,223,113,153,223,114,154,224,113,153,223,113,152,223,113,152,223,113, +152,223,113,152,223,113,153,223,115,155,225,49,79,114,76,118,136,84,122,158,92, +128,179,112,150,215,132,171,230,132,171,230,117,156,225,114,153,224,113,153,223, +113,152,223,113,152,223,113,152,223,113,152,223,113,153,223,116,156,226,49,76, +125,99,134,192,98,133,194,99,133,195,107,144,211,108,145,213,111,149,219,113, +153,223,114,154,224,113,153,223,112,152,223,114,153,223,123,161,227,137,175,232, +143,181,233,146,184,236,62,101,166,129,170,232,141,179,233,143,181,233,143,181, +233,143,181,234,143,180,232,142,179,233,145,181,234,143,181,234,143,181,233,143, +181,233,143,181,233,143,181,233,143,181,234,147,184,236,60,93,148,117,150,195, +103,137,198,98,133,195,102,137,202,110,147,212,129,168,226,132,171,230,119,157, +226,113,152,223,113,152,223,113,152,223,113,152,223,113,152,223,113,153,223,116, +156,226,50,82,135,92,132,218,88,126,213,89,127,214,89,127,213,88,126,213,110, +148,222,111,150,219,107,144,209,102,137,201,100,134,196,99,133,195,99,133,195, +99,133,195,99,133,195,102,136,198,49,74,123,102,135,198,102,134,197,118,154,216, +137,175,232,142,180,232,143,181,234,143,181,234,144,182,234,143,181,234,143,181, +233,143,181,233,143,181,234,142,180,232,138,174,232,125,162,228,69,51,67,74,56, +71,121,118,123,55,34,54,98,73,96,103,79,99,149,147,151,67,42,66,111,82,108,110, +80,106,155,153,157,66,39,64,31,29,47,47,45,65,30,28,48,45,60,57,44,53,54,56,57, +62,56,51,56,54,50,54,53,49,62,52,54,52,52,49,60,52,49,53,51,47,61,51,49,51,51, +47,58,51,56,51,51,47,67,51,55,52,40,35,41,165,163,165,145,145,146,42,37,51,51, +52,52,51,47,65,51,47,55,51,48,55,51,47,60,51,49,51,51,47,57,51,53,50,52,47,59, +52,49,60,53,51,63,49,45,51,40,39,53,41,41,49,41,45,41,28,25,39,165,162,92,28,39, +39,66,39,64,113,87,109,110,80,106,153,153,155,67,48,66,109,86,108,104,81,103, +136,138,146,56,40,55,86,68,85,78,60,77,106,109,118,221,53,53,218,53,53,213,203, +204,218,53,53,218,53,53,213,53,52,201,53,51,187,175,175,188,54,49,189,54,49,185, +174,173,190,54,50,191,54,50,197,53,50,211,54,52,216,54,53,213,53,52,216,53,53, +213,203,204,218,53,53,218,53,53,218,53,53,213,203,204,218,53,53,218,53,53,218, +53,53,212,202,203,215,53,53,209,53,52,209,53,52,208,54,52,204,54,51,198,53,51, +196,54,50,192,181,181,196,53,50,198,53,51,201,53,51,203,53,51,209,53,51,116,112, +113,121,113,114,121,115,116,127,120,121,121,114,115,124,118,119,112,107,108,121, +115,116,129,124,124,124,119,119,127,120,121,131,125,126,127,120,121,120,113,114, +123,118,119,124,118,119,113,107,108,125,118,119,121,114,115,117,110,111,111,105, +106,113,106,107,112,106,107,107,101,102,95,100,101,95,100,101,136,133,134,132, +131,132,139,138,139,138,137,138,136,136,137,140,139,138,49,85,143,115,155,226, +145,177,237,144,176,237,144,176,237,144,176,237,145,177,237,115,155,226,49,76, +127,107,140,200,150,171,212,139,164,212,146,176,235,145,176,237,145,176,237,146, +178,238,113,153,223,146,178,238,145,176,237,145,176,237,145,176,237,145,176,237, +146,178,238,116,155,226,49,75,121,84,122,157,94,129,146,122,153,197,144,175,235, +149,180,238,165,190,241,166,191,242,117,156,225,146,177,237,145,176,237,145,176, +237,145,176,237,145,176,237,146,178,238,116,155,226,49,79,123,82,121,150,118, +147,191,127,154,208,143,174,234,145,176,236,145,176,237,146,178,238,113,153,223, +146,178,238,145,176,237,145,176,237,146,177,237,155,183,239,171,195,243,144,182, +235,61,99,164,122,166,231,174,197,245,176,198,245,176,198,245,176,198,245,175, +198,245,176,197,243,142,179,233,176,197,243,175,198,245,176,198,245,176,198,245, +176,198,245,177,199,245,144,182,232,56,96,130,96,133,149,141,164,203,131,158, +208,127,154,208,127,154,208,135,163,215,162,187,237,132,171,230,150,182,238,145, +176,237,145,176,237,145,176,237,145,176,237,146,178,238,116,155,226,50,81,135, +92,131,218,121,158,233,138,170,235,140,172,236,141,173,236,145,176,236,137,167, +223,100,134,196,128,155,208,127,153,207,127,153,207,127,153,207,127,153,207,128, +155,208,102,135,198,49,74,123,102,135,198,128,155,209,142,172,230,155,183,239, +170,194,242,175,196,243,176,199,246,143,181,234,177,199,245,176,198,245,176,198, +245,176,198,245,175,198,245,175,197,243,138,175,232,67,47,69,72,51,69,120,121, +122,53,38,51,96,69,98,100,73,96,148,149,150,65,47,63,109,79,105,107,75,103,154, +151,156,66,39,64,31,42,55,189,190,114,30,28,41,45,41,44,44,41,43,41,56,54,57,51, +56,54,52,54,53,49,58,52,55,52,52,48,52,52,48,52,51,55,60,51,49,51,51,49,60,51, +47,55,51,49,51,51,48,51,40,47,41,167,167,167,159,157,160,42,37,49,51,47,64,51, +47,50,51,58,54,51,47,52,51,49,55,51,47,51,51,52,51,52,47,62,53,47,52,53,54,57, +38,37,40,39,53,39,40,45,41,41,39,41,41,38,48,28,49,39,164,161,92,28,35,51,66,39, +64,110,80,107,107,77,109,152,153,158,65,46,63,107,82,108,101,71,97,135,135,142, +55,38,53,84,65,85,75,53,73,105,105,113,215,205,206,213,204,205,213,201,202,213, +204,205,211,203,204,203,195,195,191,181,181,185,173,173,184,173,173,184,173,173, +184,170,170,184,173,173,185,175,175,189,179,179,200,191,192,201,192,193,204,196, +196,210,201,202,212,200,201,212,203,204,211,203,204,209,200,201,207,197,198,205, +196,197,203,195,195,201,191,192,198,186,186,193,183,183,190,181,181,191,182,182, +193,184,184,190,181,181,189,179,179,188,178,178,189,176,176,189,179,179,191,181, +182,193,183,184,194,184,185,197,186,186,201,189,189,118,112,112,117,112,112,113, +107,108,110,104,104,107,101,102,118,112,113,131,125,126,126,120,121,124,117,118, +118,111,112,124,118,119,127,118,119,123,115,116,123,118,119,116,110,111,114,113, +114,116,114,115,112,108,109,111,110,111,108,109,110,108,109,110,102,103,104,99, +101,102,95,100,101,95,100,101,133,132,133,137,136,137,131,130,131,140,139,140, +136,135,136,142,141,141,49,85,142,115,155,226,145,177,237,144,176,237,144,176, +237,144,176,237,145,177,237,115,155,226,49,76,126,101,135,198,133,158,208,156, +177,221,155,184,239,146,177,237,144,176,237,145,176,237,113,152,223,145,176,237, +144,176,237,144,176,237,144,176,237,144,176,237,145,177,237,115,155,226,49,76, +122,91,127,174,111,142,178,141,173,231,144,176,237,144,176,237,148,180,238,165, +190,241,132,170,230,150,181,238,144,176,237,144,176,237,144,176,237,144,176,237, +145,177,237,115,155,226,51,81,134,94,131,181,124,152,202,130,158,213,143,175, +236,144,176,237,144,176,237,145,176,237,113,152,223,145,176,237,144,176,237,144, +176,237,144,176,237,145,177,237,155,183,239,140,176,234,62,99,164,123,166,231, +171,194,244,173,196,245,173,196,245,173,196,245,175,198,245,175,198,245,143,180, +234,174,196,243,174,196,243,174,198,245,175,198,245,175,198,245,176,198,245,145, +183,235,59,95,144,112,146,178,151,171,210,147,167,212,131,158,208,126,154,207, +126,154,208,133,161,213,130,165,223,172,195,242,151,181,238,144,176,237,144,176, +237,144,176,237,145,177,237,115,155,226,51,82,136,94,134,218,139,172,236,144, +176,237,144,176,237,144,176,237,144,176,236,133,161,218,99,133,195,127,154,207, +126,153,207,126,153,207,126,153,207,126,153,207,127,154,207,101,135,198,49,75, +122,98,132,196,127,154,207,132,161,217,145,177,236,153,182,239,168,192,242,175, +196,243,143,181,234,176,198,245,175,198,245,175,198,245,175,198,245,175,198,245, +175,198,245,144,181,233,105,104,107,111,109,123,120,117,122,89,63,91,138,137, +140,144,142,155,148,146,150,107,77,109,153,151,155,152,150,156,154,151,158,66, +39,64,31,46,43,189,187,114,30,28,49,45,56,64,44,41,60,42,45,44,57,51,56,54,56, +64,53,49,53,52,54,52,52,48,52,52,48,58,51,47,51,51,51,56,51,47,51,51,52,51,51, +47,57,51,46,51,42,49,42,166,164,168,143,142,144,45,42,50,51,48,60,51,47,52,51, +47,58,50,47,51,51,47,51,51,50,51,52,49,56,37,47,46,37,36,51,39,38,38,39,37,44, +39,40,39,40,45,44,41,39,41,41,39,43,28,25,44,167,166,95,28,27,39,66,39,64,155, +153,159,152,150,154,152,150,158,107,76,111,150,152,152,145,143,153,135,138,141, +91,64,95,124,126,126,115,113,123,105,109,112,221,53,53,218,53,53,213,203,204, +217,53,53,212,53,52,203,53,51,193,54,50,189,54,50,188,54,49,188,54,49,184,172, +172,188,54,49,188,54,49,192,54,50,200,54,51,201,54,51,207,53,52,214,53,53,210, +200,201,211,53,52,205,53,51,198,53,51,193,54,50,190,54,50,188,54,49,188,54,49, +185,174,174,190,54,50,191,54,50,193,54,50,193,54,50,192,54,50,192,54,50,192,54, +50,187,176,176,192,54,50,193,54,50,194,54,50,195,54,50,193,182,183,206,53,51, +119,116,116,122,115,115,119,114,115,114,108,109,115,110,110,119,112,113,115,110, +111,125,118,119,124,117,118,119,112,113,119,112,113,120,113,114,119,112,113,119, +111,112,113,111,112,223,62,62,221,55,55,215,205,206,221,56,55,222,64,64,222,64, +64,222,65,64,224,63,63,95,100,101,95,100,101,132,131,132,125,123,124,140,139, +140,132,131,132,133,132,133,139,138,137,50,85,143,115,155,226,145,177,237,144, +176,237,144,176,237,144,176,237,145,177,237,115,155,226,50,77,127,101,135,198, +128,155,209,145,174,228,171,194,242,156,185,240,146,177,237,145,176,237,113,152, +223,145,176,237,144,176,237,144,176,237,144,176,237,144,176,237,145,177,237,115, +155,226,49,79,120,80,120,148,100,134,158,137,169,225,144,176,237,144,176,237, +144,176,237,149,180,238,134,170,230,172,195,242,151,181,238,144,176,237,144,176, +237,144,176,237,145,177,237,115,155,226,52,85,136,92,133,176,123,153,199,138, +169,228,144,176,237,144,176,237,144,176,237,145,176,237,113,152,223,145,176,237, +144,176,237,144,176,237,144,176,237,144,176,237,146,177,237,125,163,229,62,99, +160,120,163,229,156,184,242,157,185,242,155,183,242,156,183,242,169,193,244,174, +196,245,143,181,233,175,196,243,173,196,243,174,196,243,174,198,245,175,198,245, +176,198,245,146,184,236,59,95,146,98,135,152,146,167,203,145,166,204,147,167, +212,134,159,209,127,154,207,127,154,207,106,142,206,156,184,239,171,194,242,151, +181,238,144,176,237,144,176,237,145,177,237,115,155,226,52,84,139,112,152,225, +145,177,237,144,176,237,144,176,237,144,176,237,143,175,236,130,158,213,99,133, +195,127,153,207,126,153,207,126,153,207,126,153,207,126,153,207,127,154,207,100, +134,198,45,69,114,81,111,183,120,148,203,129,157,212,143,175,236,144,176,237, +150,181,238,169,193,242,142,179,233,175,198,245,175,198,245,175,198,245,175,198, +245,175,198,245,176,198,245,144,182,234,40,23,39,43,24,41,81,57,82,56,45,55,59, +36,58,61,36,59,105,75,106,68,55,67,67,52,65,66,39,74,110,79,106,66,39,64,31,39, +43,189,187,114,30,28,44,45,43,44,44,44,65,42,42,47,57,60,56,54,54,61,53,49,53, +52,48,52,52,50,52,52,48,52,51,47,54,51,47,51,51,47,51,51,47,51,51,47,51,51,60, +51,50,45,54,43,38,59,44,46,45,50,49,52,51,55,51,51,58,52,51,47,51,51,47,59,51, +52,51,51,59,51,51,47,65,52,47,59,53,61,58,38,37,38,39,38,39,39,46,42,40,44,40, +41,39,49,41,39,51,28,25,40,163,161,92,28,26,39,66,39,64,70,43,68,66,39,64,108, +77,104,32,33,61,33,30,58,32,25,48,53,46,74,57,37,67,51,31,57,44,25,44,68,46,69, +215,206,207,213,204,205,213,203,204,211,202,203,205,196,196,195,185,185,188,178, +178,185,175,175,184,174,174,184,173,173,184,172,172,184,173,173,184,173,173,186, +174,174,192,182,182,194,184,185,202,192,193,208,199,200,206,195,196,198,188,188, +190,180,180,185,174,173,183,172,172,182,172,172,183,172,172,184,173,173,186,174, +174,186,175,175,186,175,175,186,174,174,186,175,175,186,177,177,187,177,177,187, +175,175,187,175,174,187,176,176,187,177,177,188,176,176,189,178,178,191,180,180, +198,187,187,117,111,111,122,115,115,129,121,122,122,117,117,124,119,120,121,116, +117,122,116,117,119,113,114,124,118,119,120,113,114,119,112,113,122,116,117,105, +106,107,217,205,206,215,202,203,213,204,205,213,204,205,213,201,202,213,204,205, +213,204,205,213,203,204,213,204,205,215,206,207,95,100,101,95,100,101,127,127, +128,128,127,128,127,126,127,138,137,138,132,131,132,135,134,134,50,85,143,115, +155,226,145,177,237,144,176,237,144,176,237,144,176,237,145,177,237,115,155,226, +51,82,135,106,143,208,138,168,226,143,175,235,151,181,238,171,194,242,156,185, +240,147,177,237,112,152,223,145,176,237,144,176,237,144,176,237,144,176,237,144, +176,237,145,177,237,115,155,226,50,77,127,95,132,184,122,151,198,140,172,231, +144,176,237,144,176,237,144,176,237,145,176,237,116,155,225,157,185,240,171,194, +242,151,181,238,144,176,237,144,176,237,145,177,237,115,155,226,52,84,138,105, +145,203,132,165,215,143,175,235,144,176,237,144,176,237,144,176,237,145,176,237, +113,152,223,145,176,237,144,176,237,144,176,237,144,176,237,144,176,237,145,176, +237,114,154,226,49,80,135,111,154,226,152,179,239,151,181,242,152,181,242,153, +181,242,154,182,242,157,184,242,140,179,232,175,198,245,174,196,243,173,196,243, +174,196,243,174,198,245,176,198,245,145,183,234,57,96,134,92,130,140,121,147, +165,116,144,159,145,166,204,147,168,212,134,159,209,128,154,207,101,136,200,146, +176,236,156,185,240,171,194,242,151,182,239,144,176,237,145,176,237,115,155,226, +52,84,139,115,155,226,145,177,237,144,176,237,144,176,237,144,176,237,143,175, +236,132,160,216,99,133,195,127,153,207,126,153,207,126,153,207,126,153,207,126, +153,207,127,154,207,100,134,197,43,65,108,78,107,181,107,135,197,129,158,214, +143,175,236,144,176,237,144,176,237,151,181,238,135,173,231,175,197,243,174,198, +245,175,198,245,175,198,245,175,198,245,176,198,245,144,182,234,69,53,67,74,57, +71,121,118,126,55,36,55,98,77,96,103,80,99,149,147,154,67,45,67,111,82,112,110, +82,106,155,152,160,66,39,64,31,30,48,189,187,114,30,28,50,45,43,45,44,45,43,42, +48,49,57,54,64,54,52,54,53,49,58,52,48,52,52,48,52,52,48,59,51,47,58,51,56,51, +51,50,56,51,47,51,51,51,57,51,47,51,51,49,51,51,47,51,51,47,54,51,59,51,51,47, +51,51,48,51,51,47,51,51,47,51,51,53,60,51,49,52,51,47,59,51,48,54,52,51,61,53, +53,52,38,38,46,39,41,49,40,54,41,41,44,55,41,39,41,28,39,50,166,165,94,28,46,39, +66,39,64,113,88,109,110,87,108,153,151,158,37,28,52,68,61,88,66,55,79,100,106, +108,56,35,55,86,64,88,78,56,75,106,113,120,222,53,53,219,54,53,219,53,53,216,53, +53,208,53,52,194,183,184,192,54,50,190,54,50,189,54,50,189,54,50,188,54,49,189, +54,49,188,54,49,186,174,174,196,53,50,200,53,51,204,193,194,213,53,52,208,53,52, +200,53,51,192,54,50,185,173,173,187,54,49,187,54,49,188,54,49,191,54,50,193,54, +50,192,54,50,191,54,50,186,175,174,190,54,50,191,54,50,192,54,50,187,176,176, +191,54,50,190,54,50,190,54,50,186,175,175,192,54,50,195,55,51,202,59,56,116,111, +111,123,113,113,119,110,111,118,111,112,124,115,116,125,118,119,128,120,121,127, +119,120,124,118,119,125,119,120,126,120,121,117,116,117,221,62,61,219,53,53,213, +203,204,218,53,53,218,53,53,213,203,204,218,53,53,218,53,53,213,203,204,218,53, +53,221,54,54,95,100,101,95,100,101,131,131,132,133,134,135,135,133,134,135,133, +134,133,132,133,143,141,141,49,85,142,116,155,226,146,177,238,144,176,237,144, +176,237,144,176,237,146,177,238,116,155,226,52,84,139,116,154,225,146,177,238, +144,176,237,144,176,237,151,181,238,171,194,242,157,186,240,115,153,223,145,176, +237,144,176,237,144,176,237,144,176,237,144,176,237,146,177,238,116,155,226,51, +82,135,107,143,207,138,169,226,143,175,235,144,176,237,144,176,237,144,176,237, +145,176,237,112,152,223,147,177,237,156,185,240,171,194,242,151,182,239,144,176, +237,146,177,238,116,155,226,52,84,138,107,147,207,135,166,218,143,175,235,144, +176,237,144,176,237,144,176,237,145,176,237,113,152,223,145,176,237,144,176,237, +144,176,237,144,176,237,144,176,237,146,177,238,116,155,226,49,80,134,95,136, +221,145,177,239,151,179,239,151,181,242,157,184,242,159,186,243,168,192,244,142, +180,233,176,198,245,174,198,245,174,196,243,173,196,243,174,196,243,176,199,246, +145,183,235,58,95,141,100,136,155,113,140,153,116,143,158,146,168,205,151,171, +212,147,168,212,135,159,209,101,134,196,141,172,231,146,177,237,157,185,240,175, +198,243,153,182,239,145,177,237,116,155,226,52,84,139,116,155,226,146,177,238, +144,176,237,144,176,237,144,176,237,144,176,237,140,170,230,101,135,198,127,154, +207,126,153,207,126,153,207,126,153,207,126,153,207,128,154,208,101,134,198,43, +66,110,79,106,181,101,131,199,125,158,225,142,174,236,143,175,237,144,176,237, +145,176,237,118,157,226,166,192,242,173,195,243,174,198,245,175,198,245,175,198, +245,177,199,245,144,182,234,67,47,65,72,49,69,120,117,122,53,33,55,96,69,93,100, +70,96,148,146,150,65,41,67,109,79,105,107,75,103,154,154,156,66,39,64,31,35,43, +47,45,65,30,28,45,45,44,49,44,41,44,42,49,48,57,51,56,54,53,54,53,49,53,52,57, +52,52,48,59,52,48,52,51,59,52,51,50,51,51,50,51,51,51,59,51,58,57,51,52,51,51, +49,65,51,47,51,51,47,52,51,62,51,51,47,51,51,47,56,51,48,51,51,48,51,51,46,56, +51,60,54,51,47,60,51,47,59,52,59,56,52,48,53,53,56,52,45,45,45,40,38,40,41,42, +42,41,38,56,28,25,43,166,166,94,28,47,53,66,39,64,110,87,110,107,76,103,152,150, +154,38,32,46,68,57,81,64,52,78,97,101,105,55,40,53,84,61,81,75,53,73,105,105, +114,215,205,206,213,205,206,213,205,206,211,203,204,204,194,195,194,182,182,189, +178,178,186,176,176,186,175,175,186,174,174,186,175,175,187,177,177,187,176,176, +189,176,176,198,188,188,201,192,192,207,196,197,210,201,202,208,199,200,202,193, +194,197,187,188,194,181,181,192,182,182,190,181,181,188,178,178,188,179,179,190, +181,181,190,181,181,189,178,178,188,175,175,188,177,177,188,178,178,188,177,177, +187,175,175,186,175,175,185,175,175,185,174,174,186,173,172,188,178,178,195,183, +183,136,129,129,114,106,106,120,111,111,121,115,116,118,111,112,124,116,117,121, +114,115,126,120,121,124,117,118,126,118,119,127,121,122,126,120,121,146,139,140, +213,204,205,212,203,204,213,201,202,213,204,205,213,204,205,213,203,204,213,204, +205,213,204,205,213,201,202,213,204,205,215,206,207,95,100,101,95,100,101,137, +136,137,130,129,130,138,137,138,137,136,137,135,133,134,141,140,140,49,85,142, +116,156,226,113,153,224,146,177,238,145,177,237,146,177,238,113,153,224,116,156, +226,52,84,139,116,156,226,113,153,224,146,177,238,145,176,237,145,176,237,152, +181,238,172,196,243,126,164,228,147,178,237,145,176,237,145,176,237,145,177,237, +146,177,238,113,153,224,116,156,226,52,84,139,116,155,225,113,153,224,146,177, +238,145,177,237,145,177,237,145,177,237,146,178,238,113,153,223,146,177,238,147, +177,237,158,185,240,176,198,244,154,182,239,113,152,223,116,156,226,52,84,139, +115,155,224,112,152,222,146,177,238,145,177,237,145,177,237,145,177,237,146,178, +238,113,153,223,146,178,238,145,177,237,145,177,237,145,177,237,146,177,238,113, +153,224,116,156,226,49,80,133,90,129,217,91,131,218,144,176,239,154,181,239,170, +194,244,174,196,245,176,199,245,143,181,234,177,199,245,176,198,245,175,198,245, +175,196,243,175,197,243,144,180,233,147,184,236,59,95,145,98,135,153,111,146, +180,147,167,204,154,173,214,153,173,214,153,171,212,148,170,212,109,142,200,138, +169,225,145,176,237,146,177,237,154,182,239,177,199,244,122,161,227,116,155,226, +52,84,139,116,156,226,113,153,224,146,177,238,145,177,237,145,177,237,145,177, +237,146,178,238,110,149,217,135,165,221,133,162,217,133,162,218,131,159,214,128, +155,209,99,133,196,101,135,198,45,68,114,81,111,185,85,122,206,118,155,233,124, +160,232,136,169,235,144,176,237,146,178,238,113,152,223,150,181,238,166,192,241, +173,196,243,175,199,245,177,199,245,143,181,234,145,182,234,105,103,112,111,112, +113,120,117,122,89,63,86,138,136,144,144,145,146,148,146,150,107,77,103,153,151, +161,152,150,154,154,151,160,66,39,64,31,62,48,47,45,65,30,28,43,45,47,45,44,46, +44,49,54,50,56,51,71,54,60,54,53,49,53,52,48,52,52,48,52,52,57,53,51,51,51,51, +57,51,51,47,51,51,47,51,51,47,51,51,47,51,51,61,51,51,47,51,51,47,51,51,51,51, +51,47,54,51,47,57,51,47,51,51,47,52,51,60,51,51,47,64,51,47,51,51,49,61,52,47, +57,52,48,59,52,48,60,45,46,46,40,38,40,41,39,41,41,58,41,28,25,42,163,162,92,28, +27,39,66,39,64,155,152,160,152,153,156,152,150,158,75,67,79,110,113,117,107,107, +112,99,102,104,91,78,88,124,123,131,115,113,119,105,109,112,222,53,53,219,54,53, +219,53,53,217,53,53,208,53,52,195,184,185,194,54,50,191,54,50,191,54,50,188,177, +177,194,54,50,196,54,50,199,53,51,199,189,189,213,55,53,216,62,62,217,64,62,220, +64,64,221,64,63,218,61,61,215,53,52,206,196,197,206,53,52,199,53,51,195,54,50, +196,54,50,197,54,50,197,53,50,196,54,50,190,179,179,193,54,50,193,54,50,191,54, +50,190,54,50,189,54,50,188,54,49,189,54,49,187,175,175,198,54,50,135,127,127, +117,109,109,114,106,107,119,110,111,121,115,116,117,110,111,113,106,107,118,111, +112,128,120,121,120,112,113,127,120,121,125,117,118,149,139,140,145,140,141,223, +60,59,221,53,53,215,205,206,221,53,53,220,60,60,218,55,55,218,53,53,218,53,53, +213,203,204,218,53,53,221,53,53,95,100,101,95,100,101,126,125,126,130,130,131, +131,129,131,138,137,138,129,128,129,140,139,138,50,86,143,118,157,228,116,156, +226,116,155,226,115,155,226,116,155,226,116,156,226,118,157,228,53,85,140,118, +157,228,116,156,226,116,155,226,115,155,226,115,155,226,115,155,226,122,161,229, +143,179,235,129,166,230,118,156,226,115,155,226,115,155,226,116,155,226,116,156, +226,118,157,228,53,85,140,118,157,228,116,156,226,116,155,226,115,155,226,115, +155,226,115,155,226,116,155,226,116,156,226,116,155,226,115,155,226,117,155,226, +123,162,229,147,184,235,125,163,229,120,158,228,53,85,140,118,157,228,116,156, +226,116,155,226,115,155,226,115,155,226,115,155,226,116,155,226,116,156,226,116, +155,226,115,155,226,115,155,226,115,155,226,116,155,226,116,156,226,118,157,228, +51,83,136,95,135,221,90,129,217,96,136,221,126,164,230,144,181,235,146,182,236, +146,184,236,147,184,236,146,184,236,146,183,236,146,183,236,146,184,236,146,183, +235,146,182,235,147,185,236,62,96,153,125,158,200,127,159,205,128,160,206,128, +159,206,128,159,206,128,160,206,128,159,205,124,156,205,120,155,216,118,156,226, +115,155,226,115,154,226,124,163,229,147,185,236,127,165,231,52,85,141,118,157, +228,116,156,226,116,155,226,115,155,226,115,155,226,115,155,226,116,155,226,116, +156,226,116,154,225,115,154,225,115,154,225,112,151,221,103,137,200,102,136,198, +103,137,199,47,72,120,84,116,194,89,129,216,90,129,217,91,130,217,94,133,218, +112,152,225,116,155,226,116,156,226,115,155,226,121,158,228,137,173,233,143,182, +235,146,183,236,147,184,236,147,184,236,19,16,32,23,19,31,51,44,64,56,40,55,59, +38,62,61,44,60,105,79,105,68,50,67,67,54,65,66,51,64,110,89,114,66,39,64,31,37, +43,47,45,65,30,29,44,45,55,45,44,41,44,47,44,56,56,51,56,54,52,54,53,49,59,52, +49,54,52,48,52,52,48,52,51,48,50,51,48,57,51,49,56,51,47,59,51,47,58,51,47,51, +51,51,58,51,56,51,51,47,51,51,48,57,51,47,54,51,48,50,51,47,68,51,47,55,51,47, +56,51,47,57,51,47,51,51,47,52,52,47,53,52,48,53,52,54,58,45,44,48,40,40,43,41, +39,41,41,39,41,28,25,39,173,172,100,28,32,39,66,39,64,70,46,68,66,39,64,108,78, +104,68,46,67,66,53,75,61,39,61,91,67,91,57,38,56,51,41,58,44,27,44,68,49,68,215, +206,207,213,204,205,213,203,204,210,201,202,203,193,194,195,183,183,189,177,177, +187,176,176,189,178,178,192,180,181,195,183,184,198,188,188,206,194,195,132,124, +124,122,121,122,116,116,117,113,112,113,113,113,114,111,112,113,135,132,133,217, +205,206,213,200,201,207,197,198,201,189,190,197,185,185,196,184,185,197,185,185, +195,186,186,193,183,183,192,180,181,190,180,180,188,177,177,186,176,176,185,174, +174,184,172,172,183,173,172,185,174,174,189,178,178,198,186,186,140,130,130,119, +111,112,116,107,107,120,113,114,121,113,114,120,113,113,123,117,117,120,112,113, +122,116,117,150,141,142,153,144,145,148,139,140,154,143,144,154,145,146,145,140, +141,147,142,143,144,136,137,142,138,139,141,138,139,217,205,206,215,204,205,215, +204,205,215,202,203,215,204,205,216,204,205,95,100,101,95,100,101,128,126,127, +123,122,123,133,131,132,140,138,139,130,129,130,133,131,131,41,73,139,41,72,137, +41,72,137,41,72,137,41,72,137,41,72,137,41,72,137,41,72,137,41,75,140,41,72,137, +41,72,137,41,72,137,41,72,137,41,72,137,41,72,137,41,70,137,44,77,144,51,96,166, +46,85,151,41,73,139,41,72,137,41,72,137,41,72,137,41,72,137,41,75,140,41,72,137, +41,72,137,41,72,137,41,72,137,41,72,137,41,72,137,41,72,137,41,72,137,41,72,137, +41,72,137,41,71,137,41,70,136,44,78,146,53,101,171,46,86,152,41,76,142,41,72, +137,41,72,137,41,72,137,41,72,137,41,72,137,41,72,137,41,72,137,41,72,137,41,72, +137,41,72,137,41,72,137,41,72,137,41,72,137,41,72,137,41,72,137,41,75,140,40,70, +133,39,68,130,39,68,132,44,75,141,49,90,160,52,98,169,53,100,171,53,100,171,53, +100,171,53,100,171,53,100,171,53,100,171,53,100,171,52,97,168,51,97,167,49,90, +151,49,88,150,49,88,150,49,88,150,49,88,150,49,88,150,49,88,150,49,88,150,49,87, +149,48,86,148,45,81,145,41,73,139,41,71,137,41,70,136,44,78,146,53,101,171,46, +88,154,41,73,139,41,72,137,41,72,137,41,72,137,41,72,137,41,72,137,41,72,137,41, +72,137,41,72,137,41,72,137,41,72,137,41,72,136,40,67,126,40,64,121,40,64,121,40, +67,124,40,67,126,39,69,132,39,68,130,39,69,132,40,70,134,41,72,137,41,72,137,41, +72,137,41,72,137,41,71,137,42,75,142,48,90,158,52,98,169,53,100,171,53,100,171, +44,38,52,46,37,56,84,86,90,55,46,59,98,77,96,103,74,99,149,148,156,67,57,72,111, +84,113,110,85,106,155,152,157,66,39,64,31,30,46,47,45,65,30,29,43,45,50,45,44, +41,44,47,44,55,56,60,56,54,50,63,53,49,53,52,63,56,52,56,56,52,48,55,51,55,70, +51,47,68,51,50,50,51,47,52,51,47,55,51,47,65,51,52,51,51,47,51,51,49,52,51,49, +52,51,53,61,51,47,59,51,47,51,51,47,51,51,50,54,51,56,55,51,56,51,51,56,51,52, +47,59,52,48,59,52,53,60,45,41,54,40,38,61,41,43,42,41,39,41,28,25,39,172,171,97, +28,27,44,66,39,64,113,92,109,110,86,106,153,153,160,67,42,65,79,59,77,76,58,73, +98,100,104,56,35,55,86,63,84,78,58,75,106,109,116,221,53,53,218,53,53,213,203, +204,214,53,53,206,53,52,199,53,51,190,178,178,194,54,50,197,53,50,202,53,51,202, +191,192,211,53,52,132,127,128,117,110,111,123,117,118,120,112,113,120,113,114, +112,108,109,115,110,111,117,110,111,112,106,107,143,138,139,221,58,58,133,129, +130,107,98,98,108,99,99,127,119,119,205,60,58,200,60,57,196,55,51,194,54,50,188, +176,176,190,54,50,188,54,49,183,172,171,187,54,49,189,55,51,196,57,54,131,123, +122,121,110,110,123,113,113,117,108,108,123,115,115,132,123,124,139,130,131,147, +138,139,140,131,132,143,137,138,143,133,134,118,111,112,128,120,121,124,117,118, +156,146,147,121,115,116,128,120,121,121,114,115,117,110,111,123,117,118,118,113, +114,139,130,131,134,124,125,128,120,121,134,125,126,129,121,122,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +41,34,51,45,38,54,84,85,88,53,30,56,96,70,93,100,75,96,148,146,150,65,38,68,109, +82,105,107,76,103,154,151,156,66,39,64,31,33,56,47,45,65,30,32,50,45,43,51,44, +41,55,42,41,42,57,62,56,54,59,64,53,49,53,52,48,58,52,48,55,52,49,66,51,49,66, +51,57,58,51,50,52,51,48,52,51,51,54,51,47,58,51,49,52,51,48,56,51,47,52,51,47, +56,51,51,58,51,55,51,51,47,55,51,53,51,51,47,65,51,51,55,51,47,51,51,47,52,52, +49,53,52,49,62,51,48,55,44,41,45,40,48,40,41,39,40,41,39,57,28,28,39,171,170,96, +28,29,52,66,39,64,110,82,112,107,78,103,152,150,154,65,41,67,78,57,76,73,55,76, +97,97,100,55,34,56,84,61,81,75,56,78,105,105,110,215,205,206,213,204,205,213, +201,202,209,200,201,201,192,193,194,184,185,192,181,181,193,183,183,197,188,188, +202,193,193,207,196,197,217,61,60,109,108,109,121,114,115,125,119,120,119,112, +113,123,114,115,119,112,113,117,110,111,117,110,111,119,112,113,120,114,115,115, +112,113,121,115,116,117,109,109,114,105,106,117,108,108,108,103,103,129,123,123, +192,180,180,189,179,179,187,175,175,185,174,174,184,173,173,183,170,169,183,172, +172,185,174,174,121,114,114,111,101,101,115,104,104,122,112,112,123,114,115,125, +117,118,127,119,119,121,114,114,121,114,114,119,111,112,120,113,114,124,118,119, +128,122,123,125,117,118,146,137,138,149,139,140,121,114,115,124,118,119,121,114, +115,119,112,113,122,115,116,121,114,115,123,114,115,124,118,119,121,114,115,114, +108,109,101,93,94,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,71,73,75,78,79,78,84,85,88,89,63,86,138,138, +144,144,146,146,148,146,150,107,77,103,153,151,155,152,151,154,154,154,158,66, +39,64,31,29,46,189,190,105,30,32,43,45,43,45,44,41,44,42,42,48,40,51,50,55,59, +54,53,51,53,52,49,52,52,49,52,52,48,52,51,48,52,51,55,61,51,47,58,51,47,52,51, +48,60,51,56,58,50,45,54,42,36,49,42,36,52,50,46,50,51,52,51,51,57,51,51,52,51, +51,47,57,51,48,51,51,48,51,51,50,51,51,48,66,52,47,59,52,48,53,51,61,54,44,41, +46,40,39,52,41,47,59,41,39,40,28,25,39,171,169,96,28,26,40,66,39,64,155,156,157, +152,150,154,152,153,160,107,78,103,110,108,115,106,105,107,97,99,104,91,66,88, +124,122,133,115,113,117,105,107,118,221,53,53,218,53,53,213,203,204,213,53,52, +204,53,51,200,53,51,199,53,51,201,54,51,206,53,51,210,53,52,211,199,200,133,128, +129,113,109,110,117,110,111,120,113,114,123,116,117,122,115,116,122,115,116,125, +119,120,115,109,110,117,110,111,122,115,116,118,111,112,121,114,115,119,110,111, +125,117,117,125,116,117,109,100,100,110,99,98,128,119,119,199,58,54,190,55,51, +188,54,49,187,54,49,183,171,171,187,57,53,174,66,64,101,95,94,102,92,92,110,100, +100,116,108,108,119,111,111,120,111,112,120,112,113,121,113,114,124,117,118,127, +119,120,124,118,119,128,119,120,129,120,121,129,122,123,144,137,138,127,119,120, +119,112,113,123,117,118,127,119,120,123,115,116,126,120,121,129,122,123,124,118, +119,127,120,121,125,119,120,118,111,112,105,98,99,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,40,33,39,43, +27,47,81,59,80,56,36,58,59,50,58,61,41,67,105,77,104,102,72,87,101,68,86,100,65, +81,149,106,121,66,39,64,31,29,46,189,187,108,30,32,43,45,43,45,44,48,44,42,46, +50,40,40,40,55,56,54,53,51,53,52,48,54,52,48,55,52,52,52,51,49,51,51,56,56,51, +48,51,51,47,56,51,47,62,51,48,58,42,38,47,170,168,170,170,169,172,42,47,45,51, +55,55,51,48,55,51,48,54,51,52,50,51,48,55,51,57,51,51,50,51,51,48,52,52,54,63, +52,54,59,51,47,51,42,46,44,40,44,45,41,40,46,41,48,52,28,35,39,169,166,96,28,26, +48,66,39,64,105,76,85,100,65,81,146,105,125,68,45,66,66,44,68,61,36,70,91,63,94, +57,37,55,51,34,53,44,25,52,68,46,70,215,206,207,213,204,205,213,203,204,208,198, +199,199,189,190,197,186,186,197,187,188,199,191,191,201,192,193,197,186,187,204, +191,192,114,107,108,115,109,110,113,105,106,117,110,111,117,110,111,120,113,114, +119,112,113,120,112,113,124,116,117,120,113,114,118,111,112,115,109,110,120,112, +113,121,114,115,117,109,110,119,112,112,119,110,111,116,107,107,106,98,98,131, +127,128,201,189,189,185,175,175,184,173,173,183,172,171,185,173,173,123,114,114, +120,112,111,106,97,97,100,91,90,115,104,105,116,107,108,117,109,109,117,109,110, +119,112,112,120,113,114,123,117,118,124,117,118,123,117,118,125,117,118,130,123, +124,138,132,133,123,115,116,118,111,112,125,119,120,120,112,113,121,113,114,126, +118,119,126,119,120,128,119,120,122,115,116,120,113,114,118,111,112,107,99,100, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,69,53,67,74,52,72,121,121,128,55,38,53,98,76,96,103,74,99,149, +149,156,100,74,81,150,113,122,148,108,121,198,184,172,66,39,64,31,29,43,189,188, +113,30,28,43,45,44,45,44,41,65,42,40,42,57,52,60,54,55,61,53,52,52,52,48,73,52, +48,59,52,48,52,51,48,55,51,57,61,51,49,66,51,47,57,51,52,52,51,52,52,39,40,41, +168,167,168,168,166,168,39,44,39,51,61,50,51,48,55,51,52,56,51,48,65,51,53,66, +51,47,54,51,58,51,51,52,54,52,48,53,52,52,53,50,51,52,41,40,50,40,38,41,41,39, +41,41,39,41,28,25,39,171,170,99,28,26,46,66,39,64,152,112,124,148,109,121,196, +182,168,67,47,66,109,83,106,104,80,105,136,138,142,56,39,55,86,65,84,78,59,78, +106,109,113,221,53,53,218,53,53,217,53,53,209,52,51,199,52,50,188,177,178,193, +50,48,186,47,46,186,54,53,120,116,117,110,104,105,109,103,104,111,104,105,125, +119,120,129,121,122,119,112,113,121,114,115,117,110,111,117,110,111,122,115,116, +120,113,114,118,111,112,115,109,110,123,115,116,118,111,112,120,113,114,124,118, +119,121,113,114,114,108,109,119,112,113,115,108,109,136,130,131,205,53,51,193, +55,51,192,58,54,120,111,110,107,94,93,111,99,97,120,111,111,106,96,96,108,97,97, +112,102,102,115,105,105,109,100,100,117,109,109,119,111,111,127,118,119,129,121, +122,124,117,118,126,119,120,132,125,126,133,124,125,122,114,115,120,113,114,120, +113,114,118,111,112,123,118,119,126,119,120,123,117,118,124,117,118,129,122,123, +121,113,114,119,111,112,111,103,104,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,67,47,65,72,59,72,120,116, +122,53,46,51,96,69,93,100,83,100,148,145,150,98,82,79,148,110,124,144,108,118, +197,181,167,66,39,64,31,33,44,189,187,114,30,28,48,45,43,45,44,44,46,42,44,42, +57,51,56,54,50,63,53,49,59,52,48,61,52,51,53,52,51,53,51,50,51,51,51,52,51,48, +52,51,48,56,51,62,52,51,51,58,39,35,43,168,167,169,168,169,168,39,33,47,51,46, +65,51,55,58,51,48,51,51,55,50,51,48,58,51,61,58,51,49,61,51,48,52,52,48,59,52, +53,63,48,45,54,40,41,39,40,57,40,41,39,40,41,40,45,28,26,39,171,171,99,28,29,46, +66,39,64,149,113,122,144,110,121,195,179,165,65,50,63,107,77,105,101,80,103,135, +135,139,55,42,53,84,61,83,75,59,77,105,105,110,215,205,206,210,200,201,201,193, +194,191,183,184,182,174,174,182,171,171,184,176,176,197,189,189,204,194,194,120, +116,117,125,120,121,124,119,119,102,96,97,127,119,120,122,115,116,119,112,113, +122,115,116,118,111,112,124,115,116,124,115,116,117,111,112,118,111,112,117,110, +111,118,111,112,123,116,117,120,113,114,123,118,119,119,112,113,122,115,116,117, +110,111,112,108,109,113,107,108,215,203,204,205,193,194,124,117,116,108,97,96, +107,95,94,111,99,98,115,103,103,120,113,112,122,113,112,107,97,96,108,99,98,107, +98,98,114,105,105,118,109,109,123,115,116,127,118,119,124,117,118,128,120,121, +131,124,125,127,120,121,122,115,116,119,112,113,124,118,119,119,112,113,123,115, +116,126,118,119,127,118,119,127,118,119,124,118,119,122,115,116,121,114,115,108, +100,101,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,105,103,107,111,109,116,120,117,122,89,67,87,138,136, +140,144,142,148,148,146,150,145,108,119,196,181,166,196,181,171,197,183,167,66, +39,64,31,29,44,189,187,105,30,33,43,45,44,56,44,54,47,42,50,44,57,68,56,54,54, +61,53,50,54,52,49,54,52,52,53,52,49,53,51,53,60,51,47,52,51,47,52,51,47,60,51, +46,61,51,49,55,39,42,39,168,166,168,168,168,168,39,35,39,51,47,50,51,50,60,51, +48,51,51,56,51,51,50,65,51,48,65,51,47,50,51,49,51,52,56,53,52,58,61,45,43,48, +40,37,40,40,38,44,41,41,64,41,52,40,28,31,49,166,164,95,28,26,39,66,39,64,198, +184,168,196,180,166,195,183,169,107,76,106,150,152,152,145,147,149,135,137,141, +91,64,91,124,126,126,115,117,119,105,107,112,221,53,53,211,202,203,214,52,52, +210,52,52,206,52,51,203,193,193,210,53,52,214,53,52,134,128,129,118,110,111,120, +112,113,125,117,118,117,112,113,113,107,107,118,111,112,117,111,112,125,119,120, +122,115,116,123,118,119,120,113,114,122,114,115,124,115,116,121,114,115,121,114, +115,118,111,112,125,119,120,123,115,116,119,112,113,118,111,112,122,115,116,115, +109,110,114,108,109,109,103,104,109,105,106,110,103,104,113,104,104,109,99,99, +116,103,103,113,107,101,107,108,95,121,114,113,123,116,116,123,114,114,111,103, +102,110,100,100,120,111,112,113,106,107,117,110,111,121,114,115,125,118,119,127, +120,121,124,117,118,124,117,118,124,118,119,125,119,120,120,112,113,124,119,120, +124,119,120,119,112,113,121,114,115,122,115,116,122,115,116,124,117,118,115,109, +110,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,40,29,39,43,26,42,81,59,79,56,36,55,59,44,58,61,39,59,105, +77,102,68,45,67,67,43,68,66,39,65,110,78,109,66,39,64,31,29,44,189,187,107,30, +29,44,45,50,46,44,50,54,42,42,50,57,51,63,54,50,66,53,58,54,52,52,54,52,52,62, +52,53,62,51,48,62,51,55,52,51,47,52,51,47,52,51,59,57,51,51,52,39,35,39,168,166, +168,168,167,169,39,34,39,51,47,51,51,47,55,51,59,52,51,51,51,51,48,51,51,47,51, +51,53,60,51,55,51,52,48,52,51,49,51,43,41,45,39,37,47,40,38,60,41,40,40,41,44, +41,28,25,39,161,159,91,28,27,42,66,39,64,70,46,72,66,51,64,108,76,104,68,55,67, +66,41,65,61,36,60,91,63,94,57,46,56,51,31,50,45,25,44,68,46,70,215,206,206,213, +202,203,213,202,203,212,203,204,210,201,202,208,198,198,210,199,200,214,203,204, +115,109,110,121,114,115,121,114,115,120,112,113,113,107,108,108,101,102,106,100, +101,113,108,109,115,109,110,117,110,111,122,115,116,122,114,115,125,119,120,123, +115,116,120,113,114,122,114,115,119,112,113,123,117,118,125,119,120,118,111,112, +123,115,117,121,114,115,118,111,112,120,113,114,119,112,113,119,112,113,115,108, +109,121,112,113,116,107,108,116,112,107,84,129,63,64,139,29,100,117,85,116,106, +105,121,114,114,118,111,110,115,107,107,114,106,106,113,107,107,114,108,108,122, +117,117,126,117,118,125,118,119,126,119,120,127,120,121,122,115,116,121,114,115, +124,115,116,121,114,115,122,115,116,123,118,119,122,115,116,127,120,121,121,114, +115,126,119,120,113,103,105,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,70,51,68,75,55,72,121,121,123,55,34, +54,99,73,96,103,77,99,149,149,151,67,42,66,111,87,113,110,80,106,155,152,157,66, +39,64,31,29,49,189,187,105,30,32,44,45,41,56,44,54,45,52,50,52,56,51,54,54,59, +60,53,52,57,52,49,52,52,56,52,52,58,56,51,48,54,51,50,58,51,50,52,51,50,52,51, +54,56,51,54,51,39,37,39,168,167,168,168,168,169,39,34,39,51,53,57,51,47,50,51, +46,51,51,49,56,51,56,51,51,53,51,51,47,51,51,47,58,52,48,52,50,48,50,42,57,41, +39,36,48,40,43,40,41,39,42,41,39,50,28,25,52,162,163,92,28,26,48,66,39,64,113, +84,109,110,82,106,153,153,155,67,42,68,109,80,106,104,75,100,136,138,145,56,35, +57,86,63,84,78,56,75,107,109,117,221,53,53,218,53,53,213,203,204,218,53,53,218, +55,55,221,59,58,132,127,128,109,105,105,114,108,109,123,114,115,120,113,114,115, +109,110,106,100,101,126,119,120,121,116,117,101,96,97,116,109,110,114,108,109, +120,113,114,120,113,114,121,114,115,123,116,117,120,113,114,121,114,115,117,111, +112,122,115,116,124,119,119,120,115,114,121,119,116,119,112,113,121,114,115,120, +113,114,120,113,114,122,115,116,118,111,112,118,110,111,124,117,118,119,116,113, +84,138,66,60,144,27,109,114,98,116,107,108,119,109,109,121,111,112,118,111,111, +122,115,115,120,113,114,120,113,115,120,114,115,127,120,121,121,114,115,122,115, +116,123,115,116,117,111,112,119,112,113,119,112,113,120,112,113,122,114,115,121, +114,115,120,113,114,121,114,115,127,118,119,126,119,120,112,104,105,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,68,47,66,72,50,73,120,118,122,53,41,52,96,69,93,100,70,101,148,146,150,65, +50,63,109,81,105,107,75,105,154,151,159,66,39,64,31,29,58,189,187,107,30,32,44, +45,43,58,44,41,45,56,50,55,56,53,72,54,54,60,53,49,53,52,50,52,52,49,52,52,49, +52,51,49,60,51,49,52,51,49,59,51,48,59,51,62,58,51,47,51,39,40,49,168,166,169, +168,166,169,39,34,43,51,51,64,51,47,67,51,63,51,51,46,51,51,47,51,51,47,51,51, +48,56,51,49,51,52,54,52,50,47,50,42,44,58,39,46,38,40,42,50,41,39,44,41,39,40, +28,25,45,166,164,95,28,26,49,66,39,64,110,85,107,107,75,103,152,151,154,65,41, +64,107,84,106,101,71,101,135,135,139,55,34,54,85,66,84,76,52,76,106,106,110,215, +205,206,213,204,205,213,201,202,213,204,205,216,205,206,137,132,133,108,102,103, +110,105,106,107,101,102,106,99,100,108,101,102,124,120,121,121,115,115,120,113, +114,126,120,121,120,115,116,109,103,104,106,100,101,107,102,102,108,101,102,113, +107,108,114,108,109,111,105,106,121,114,115,117,110,111,121,113,114,111,110,104, +88,108,75,93,131,80,116,117,111,127,119,120,118,111,112,117,111,112,119,112,113, +120,112,113,120,113,114,124,117,119,116,121,109,66,145,43,56,149,22,110,123,102, +118,109,109,119,110,111,118,110,111,117,110,110,119,111,112,123,116,118,116,123, +107,114,122,107,123,115,117,117,110,111,118,111,112,120,112,113,115,109,110,115, +109,110,112,106,107,114,108,109,120,113,114,120,112,113,128,121,122,129,121,122, +124,117,118,123,115,116,112,104,105,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,105,103,108,112,110,114,120, +120,123,90,63,86,139,137,141,145,143,147,149,149,151,107,76,103,153,154,160,152, +150,158,154,154,156,66,39,64,31,30,46,189,187,105,30,28,43,45,43,70,44,44,50,58, +53,57,56,58,63,54,50,54,53,49,58,52,48,52,52,56,52,52,59,52,51,58,51,51,57,52, +51,50,52,51,48,65,51,48,50,51,50,51,42,47,41,170,169,170,170,168,170,42,36,49, +51,47,50,51,53,57,51,47,51,51,56,66,51,55,51,51,50,57,51,47,51,51,52,56,52,56, +52,50,52,66,42,42,54,39,39,45,40,38,41,41,46,41,41,40,55,28,25,39,167,167,95,28, +32,48,66,39,64,155,153,160,152,150,154,152,150,154,107,83,103,150,148,156,146, +144,150,135,136,141,92,70,88,125,122,131,116,114,120,106,107,113,221,53,53,218, +53,53,213,203,204,221,53,53,133,129,130,116,109,110,121,116,116,119,113,113,108, +104,105,107,103,104,123,118,119,127,121,122,120,113,114,129,121,122,122,115,116, +119,112,113,114,108,109,115,109,110,116,109,110,113,107,108,110,103,104,103,97, +98,110,104,105,120,113,114,115,110,111,115,110,110,112,111,106,85,109,74,90,127, +76,102,127,92,122,117,116,129,121,122,118,111,112,117,109,110,122,114,115,120, +112,113,116,113,112,81,113,68,61,141,37,65,147,39,117,118,109,122,114,116,120, +113,114,119,114,114,119,116,114,122,113,115,107,120,98,59,150,27,59,150,30,112, +121,104,123,114,116,113,107,108,124,118,119,117,110,111,115,110,111,115,109,110, +115,109,110,120,113,114,119,112,113,124,117,118,130,122,123,122,115,116,122,115, +116,112,104,105,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,40,26,40,43,24,50,82,59,79,56,37,55,59,40,58,62, +36,70,105,76,102,68,45,67,67,43,65,66,45,65,110,84,106,66,39,64,31,30,44,189, +189,107,30,44,43,45,43,45,44,51,43,58,53,58,56,51,56,54,59,54,53,49,53,52,48,52, +52,49,61,52,49,53,51,48,56,51,48,61,51,47,58,51,49,54,51,57,62,51,58,51,50,53, +50,42,43,41,42,55,41,50,48,50,51,58,51,51,47,51,51,60,51,51,48,51,51,50,58,51, +47,51,51,48,51,51,59,51,52,49,52,51,50,52,43,47,44,39,67,40,40,48,41,41,41,42, +41,39,41,28,25,39,165,163,92,28,26,39,66,39,64,70,44,72,66,42,64,108,81,107,68, +55,67,66,44,69,61,57,60,92,66,96,58,46,57,52,34,54,45,42,45,70,49,73,217,205, +206,215,203,204,215,202,203,217,205,206,126,119,120,122,114,115,120,113,114,123, +117,118,124,117,118,121,115,116,118,111,112,125,118,119,112,105,106,122,114,115, +121,114,115,118,111,112,124,116,117,119,112,113,123,116,117,124,116,117,118,111, +112,120,113,114,115,109,110,119,112,113,114,108,109,121,114,115,120,114,114,101, +109,93,47,95,32,60,131,39,114,117,107,124,117,119,123,114,116,115,109,110,114, +108,109,120,112,114,113,113,107,65,118,48,78,133,63,67,147,45,107,127,97,118, +111,112,121,114,114,118,124,110,99,131,86,120,119,114,85,139,71,71,147,48,84, +141,66,123,119,117,123,115,117,128,120,121,127,118,120,122,115,116,123,115,116, +122,114,115,124,118,119,120,113,114,117,110,111,128,120,121,126,118,119,126,119, +120,127,120,121,115,108,109,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,70,55,69,75,53,74,122,123,129,56,34, +54,99,78,98,103,74,101,150,151,156,67,42,65,111,83,114,110,80,108,155,152,157, +66,39,64,31,40,44,189,188,107,30,40,44,45,43,47,44,45,45,58,53,58,56,51,56,54, +53,63,53,49,56,52,51,62,52,56,61,52,49,53,51,53,55,51,48,52,51,47,52,51,56,54, +51,48,51,51,52,51,51,48,51,51,47,56,51,46,51,51,48,61,51,49,51,51,51,57,51,55, +51,51,49,54,51,47,58,51,51,51,51,48,51,51,56,55,52,56,60,51,50,53,45,44,51,40, +41,41,40,41,51,41,39,46,41,39,41,28,25,45,160,158,90,28,26,40,66,39,64,113,87, +111,110,80,113,153,152,155,67,50,65,109,86,111,104,78,106,134,132,136,57,43,56, +88,70,90,80,59,82,107,105,109,149,140,142,145,136,137,144,135,136,125,117,118, +129,122,123,120,113,114,120,113,114,119,112,113,124,116,117,119,112,113,118,111, +112,117,110,111,113,106,107,121,114,115,114,108,109,117,110,111,118,111,112,117, +110,111,118,111,112,125,118,119,122,115,116,114,108,109,110,102,103,114,108,109, +113,106,107,115,109,110,116,110,111,100,108,92,47,96,32,54,103,37,106,123,97, +110,112,103,113,112,106,116,115,111,106,117,97,105,120,96,86,117,75,40,102,18, +74,138,58,59,149,29,97,132,85,114,112,111,121,118,115,91,138,75,60,148,33,97, +131,84,65,146,39,87,139,73,65,148,41,107,131,97,106,119,98,112,116,105,120,121, +113,115,114,112,125,117,119,115,109,110,118,111,112,124,118,119,119,112,113,118, +111,112,121,114,115,127,119,120,126,119,120,113,103,105,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,68,51, +68,73,50,70,121,119,127,54,38,52,97,73,96,101,70,97,149,147,154,65,46,63,109,82, +109,107,75,103,154,154,160,66,39,64,31,30,52,189,187,108,30,46,50,45,46,47,44, +43,44,58,53,57,56,58,63,54,51,54,53,63,56,52,54,54,52,48,60,52,54,56,51,50,52, +51,59,58,51,47,58,51,47,52,51,47,51,51,48,51,51,48,51,51,47,54,51,63,52,51,48, +50,51,56,51,51,48,54,51,48,51,51,51,53,51,51,51,51,47,51,51,53,51,51,48,58,52, +53,61,52,61,54,46,51,51,40,38,54,40,38,39,41,39,46,41,52,41,28,25,40,163,161,92, +28,45,39,66,39,64,110,87,109,107,76,112,152,150,156,65,41,66,107,79,107,103,73, +99,135,132,138,56,35,57,88,64,88,81,57,78,110,107,113,121,115,114,129,121,122, +128,120,121,128,120,121,128,120,121,123,117,118,128,120,122,120,113,114,120,113, +114,120,113,114,125,118,120,117,110,112,118,111,112,123,114,115,119,112,113,115, +110,111,120,113,114,119,112,113,121,114,115,114,108,109,115,110,111,123,116,117, +119,113,114,112,105,106,111,104,105,115,108,110,112,117,105,74,121,62,47,113,26, +59,127,40,65,142,43,55,110,36,67,119,52,65,120,49,50,124,22,54,146,23,57,147,27, +47,119,23,58,147,28,59,149,30,61,146,35,75,116,63,101,119,92,55,150,20,63,148, +36,55,146,21,50,136,22,53,136,26,55,150,20,54,150,15,53,143,21,55,128,32,64,146, +43,82,139,65,121,120,116,120,113,114,118,111,112,122,115,116,124,119,121,123, +115,116,124,117,118,129,122,123,129,120,121,113,105,106,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,106,106, +108,113,112,115,122,120,124,91,64,93,139,139,141,145,144,147,149,147,151,107,77, +109,153,151,155,152,154,154,154,152,156,66,39,64,31,43,44,189,187,107,30,30,48, +45,49,47,44,55,52,58,55,57,56,62,56,54,59,54,53,49,53,52,49,61,52,49,57,52,49, +62,51,57,52,51,47,59,51,52,60,51,48,51,51,49,51,51,47,51,51,53,51,51,46,57,51, +56,56,51,47,71,51,47,51,51,56,51,51,60,57,51,52,55,51,50,60,51,48,64,51,48,51, +51,57,52,52,48,63,52,57,58,47,45,48,41,50,53,40,38,40,41,42,41,41,47,41,28,34, +40,163,163,92,28,26,39,66,39,64,155,157,157,153,152,155,152,150,156,108,77,105, +142,140,147,134,134,136,130,132,138,96,68,93,122,121,128,111,111,112,108,110, +116,128,122,123,127,120,121,126,119,121,128,121,122,129,123,125,128,122,124,128, +121,123,125,118,119,123,116,118,131,124,124,125,118,121,119,112,113,116,109,111, +120,113,114,120,113,115,110,104,106,122,115,116,111,107,108,112,107,108,109,101, +103,114,108,110,113,107,109,117,110,111,119,111,114,107,101,103,105,110,99,58, +137,34,35,110,17,42,137,14,49,149,14,48,150,14,47,132,20,42,100,23,68,127,51,40, +117,18,39,115,17,52,143,22,46,119,21,49,147,18,75,141,56,53,146,24,45,126,20,46, +142,19,106,131,96,49,137,22,35,111,14,43,132,15,47,132,20,49,150,15,52,148,20, +40,122,17,32,98,15,48,143,17,55,150,25,110,117,104,120,113,115,117,110,112,121, +114,115,125,117,118,129,123,124,122,116,117,123,116,117,122,114,117,114,105,109, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,41,24,40,44,28,43,83,58,83,57,47,56,60,37,59,62,41,61,106,76, +106,68,56,67,67,46,66,66,39,66,110,78,106,66,39,64,31,29,51,189,187,105,30,28, +43,45,46,45,44,41,50,58,53,57,56,61,56,54,64,54,53,62,59,52,48,54,52,52,60,52, +48,53,51,47,54,51,47,51,51,46,52,51,50,51,51,52,51,51,47,60,51,56,55,51,56,55, +51,52,51,51,48,51,51,47,57,51,49,51,51,48,68,51,55,52,51,55,60,51,50,52,51,48, +58,51,49,54,51,47,52,52,49,56,48,53,58,41,39,45,40,40,40,41,39,47,41,45,50,27, +44,39,160,157,90,28,26,52,66,39,64,70,44,72,66,39,64,109,85,105,68,48,72,68,52, +69,65,43,67,101,69,98,62,43,66,59,45,60,54,36,56,86,58,83,159,153,147,158,152, +146,165,157,150,158,151,146,164,157,149,158,152,144,161,152,147,156,149,143,155, +148,142,162,156,149,155,148,142,147,141,135,145,138,131,150,143,138,149,143,137, +139,133,128,147,140,134,147,141,135,141,136,130,138,131,124,141,136,130,141,136, +130,145,139,133,149,146,138,149,143,138,145,138,132,138,132,130,147,139,134,151, +143,140,149,141,136,149,141,136,152,145,141,147,140,136,151,143,139,148,141,138, +152,147,140,156,148,143,148,140,138,152,144,141,155,147,142,158,150,145,152,145, +141,149,141,138,155,148,142,150,142,139,155,147,142,160,151,148,148,139,135,160, +152,146,157,149,144,158,150,144,152,146,141,152,144,141,149,140,136,157,151,144, +151,146,140,144,138,133,155,150,141,147,141,136,154,147,141,158,152,146,151,145, +140,146,139,133,153,148,140,151,145,137,137,128,122,138,132,126,140,133,129,139, +132,125,141,134,130,145,138,132,141,134,130,145,138,132,138,130,124,131,124,118, +130,124,120,132,125,119,139,132,125,139,131,124,139,132,126,137,129,124,145,138, +132,140,133,129,133,127,120,131,124,118,129,122,116,139,133,127,134,129,122,129, +124,119,134,128,122,141,134,129,140,133,129,141,134,130,138,131,125,130,123,118, +138,131,125,133,125,120,142,136,131,145,139,133,137,128,122,153,145,139,150,143, +135,149,142,134,143,135,130,142,135,130,137,130,124,148,140,134,139,132,126,143, +138,131,142,136,130,131,124,118,129,124,119,143,135,129,129,124,119,138,131,125, +140,134,129,127,123,118,133,128,121,139,132,127,139,132,127,142,136,130,138,130, +124,133,125,120,133,125,120,148,138,133,140,133,126,144,138,132,149,143,135,75, +61,61,81,68,68,78,63,63,77,65,65,79,67,67,79,67,67,77,65,65,81,68,68,86,70,70, +88,76,76,88,74,74,86,72,72,86,70,70,87,75,75,87,72,72,80,69,69,87,75,75,87,71, +71,87,72,72,83,70,70,87,75,75,81,69,69,81,68,68,80,66,66,78,66,66,80,66,66,76, +63,63,78,66,66,82,70,70,81,69,69,88,74,74,87,75,75,81,68,68,75,61,61,78,66,66, +78,66,66,81,69,69,79,68,68,82,69,69,90,76,76,88,76,76,86,74,74,81,69,69,81,69, +69,79,68,68,82,70,70,81,69,69,78,66,66,83,69,69,77,65,65,80,66,66,80,68,68,79, +66,66,84,71,71,82,69,69,82,69,69,82,68,68,83,69,69,88,76,76,88,76,76,88,76,76, +95,82,82,93,81,81,92,80,80,71,52,70,76,56,73,123,121,125,56,51,56,100,75,99,104, +78,100,150,148,152,67,61,67,111,82,112,110,83,106,155,154,157,66,39,64,31,33,44, +189,187,105,30,28,57,45,43,45,44,43,64,58,53,63,56,51,61,54,57,54,53,61,59,52, +48,52,52,56,52,52,52,53,51,52,58,51,52,51,51,69,51,51,52,51,51,56,65,51,47,52, +51,47,58,51,47,60,51,48,51,51,50,51,51,49,51,51,47,51,51,52,56,51,51,52,51,49, +55,51,52,52,51,66,52,51,57,51,51,47,51,52,48,52,48,44,57,41,40,41,40,39,40,40, +38,40,41,39,55,27,26,40,160,158,88,28,48,41,66,39,64,113,84,109,110,81,113,154, +154,156,68,48,67,111,82,108,107,83,104,131,130,132,63,44,62,101,74,98,96,74,93, +117,116,119,156,150,143,161,155,148,166,159,152,148,144,138,161,155,148,157,151, +144,150,146,140,146,140,134,156,150,143,153,148,141,156,150,143,152,146,141,149, +143,138,150,145,139,148,143,138,147,141,135,151,145,141,147,141,137,150,145,140, +142,137,131,146,140,135,145,139,134,147,142,137,146,141,135,149,145,139,157,150, +144,144,139,133,146,140,135,150,145,139,147,141,135,149,142,137,150,145,140,144, +137,133,151,145,140,151,145,140,148,142,138,156,149,144,148,143,138,150,143,138, +155,149,142,155,149,142,149,142,138,155,149,142,154,148,141,149,144,139,166,158, +152,169,160,156,165,157,151,161,156,149,159,152,147,159,154,148,160,154,147,155, +149,143,155,149,142,148,142,138,156,151,144,147,141,137,155,149,142,157,150,144, +160,154,147,163,156,149,156,149,143,157,150,144,157,151,144,158,151,147,154,147, +141,157,151,144,146,140,137,145,140,134,149,143,138,151,145,140,147,140,134,152, +146,141,149,142,137,148,141,135,138,132,127,147,141,135,149,142,137,147,141,137, +148,142,138,155,148,142,148,145,139,151,145,140,151,145,140,146,140,134,146,141, +135,150,145,139,148,142,137,141,136,130,148,142,138,154,148,141,147,143,138,148, +142,138,145,141,135,147,141,137,160,153,148,145,141,135,148,143,138,147,140,134, +142,136,133,155,149,142,158,152,146,157,151,146,156,150,143,150,145,140,151,145, +140,151,147,141,161,155,148,155,149,142,147,142,138,146,140,135,141,138,133,143, +139,134,141,137,131,150,143,139,146,139,133,132,127,122,141,136,130,146,140,134, +140,133,129,147,140,134,151,146,140,148,142,138,144,139,134,156,149,143,135,129, +122,151,145,140,156,151,143,94,84,84,96,86,86,100,90,90,99,88,88,96,84,84,92,82, +82,97,85,85,93,84,84,101,91,91,105,94,94,104,94,94,100,89,89,102,90,90,103,93, +93,99,89,89,104,94,94,105,94,93,105,95,95,101,90,90,100,87,87,97,85,85,98,85,85, +100,87,87,92,81,81,87,75,75,92,80,80,87,75,75,95,84,84,100,88,88,98,88,88,101, +88,88,97,86,86,94,84,84,96,85,85,98,86,86,95,85,85,91,80,80,98,86,86,89,77,77, +101,88,88,99,88,88,98,87,87,97,86,86,95,84,84,96,85,85,96,85,85,92,82,82,96,86, +86,97,85,85,97,87,87,95,84,84,103,93,93,102,92,92,100,87,87,104,94,94,96,86,86, +98,87,87,104,94,94,104,92,92,105,94,93,106,95,95,105,94,94,106,93,93,108,96,96, +69,53,69,74,56,74,122,120,124,54,31,53,97,76,98,101,77,101,149,147,151,65,38,63, +109,79,105,107,76,103,154,151,158,66,39,64,31,29,44,189,187,105,30,28,43,45,43, +50,44,43,47,58,57,57,56,51,59,54,51,54,53,49,57,52,49,57,52,48,58,52,48,55,51, +59,51,51,47,60,51,46,51,51,51,51,51,47,61,51,47,52,51,47,52,51,47,51,51,46,51, +51,58,51,51,52,57,51,47,61,51,47,51,51,47,61,51,49,52,51,56,62,51,47,60,51,47, +60,51,47,51,52,52,52,48,48,48,41,38,42,40,38,54,40,45,39,41,39,49,28,25,49,160, +157,86,28,44,49,66,39,64,110,80,112,107,75,105,153,151,158,66,52,64,109,80,106, +106,81,107,133,133,136,63,49,61,103,75,100,99,75,100,124,124,127,140,128,117, +144,130,119,149,136,124,140,129,119,147,135,122,144,130,119,142,132,121,139,126, +115,137,126,115,142,132,121,144,132,120,139,128,117,132,122,112,136,126,114,127, +112,100,128,118,108,137,126,112,130,119,109,140,127,116,132,122,111,129,119,109, +136,126,114,130,120,110,140,127,116,131,121,111,137,126,113,137,126,114,130,120, +110,140,129,119,131,121,111,138,127,116,126,111,99,132,122,112,136,124,113,131, +121,111,141,129,119,134,122,111,138,127,115,132,122,112,138,127,115,138,126,115, +138,125,113,145,135,121,142,132,121,139,127,117,145,133,121,130,118,103,154,142, +128,148,135,123,150,139,127,150,139,127,149,137,125,147,135,123,141,128,118,138, +127,115,135,123,112,136,123,112,140,129,119,139,128,117,150,139,127,150,138,124, +144,130,119,140,129,119,128,116,101,136,123,112,134,122,111,146,136,122,138,127, +115,135,122,111,135,122,111,130,120,110,139,127,116,136,126,113,136,124,112,140, +127,116,127,117,108,131,121,110,132,120,109,135,123,111,132,121,110,137,126,113, +138,127,116,130,118,103,143,134,121,138,127,116,130,120,110,136,123,112,136,124, +112,133,122,110,132,121,110,140,129,119,138,127,115,136,122,112,136,124,112,132, +121,110,139,129,118,132,121,110,136,124,113,125,111,99,132,121,109,135,125,113, +137,126,115,149,136,123,144,133,122,140,128,118,144,132,120,134,123,113,140,129, +118,136,125,113,136,122,112,130,120,110,130,119,109,131,121,110,131,121,111,120, +109,92,130,120,110,126,114,104,129,119,108,130,119,109,130,120,109,128,119,108, +137,126,114,131,121,111,132,122,111,131,120,110,131,121,110,135,123,111,132,122, +112,111,101,102,114,104,104,112,102,103,112,102,103,113,102,103,111,101,103,116, +107,108,118,107,108,114,106,107,116,105,107,120,110,111,118,106,108,120,110,111, +121,110,111,118,107,108,120,110,111,120,110,111,118,108,109,185,186,187,183,183, +184,183,183,184,183,183,184,183,183,184,183,183,184,183,183,184,184,185,186,184, +185,186,184,185,186,185,185,186,185,189,190,186,190,191,186,190,191,186,190,191, +186,190,191,186,189,190,185,185,186,184,185,186,184,184,186,184,184,186,184,184, +185,184,184,186,184,185,186,185,188,189,186,190,191,186,190,191,186,190,191,188, +192,193,107,99,100,112,103,104,113,103,104,190,74,74,192,78,79,190,75,75,112, +101,102,120,110,111,116,106,107,128,116,117,123,112,113,120,110,111,122,112,113, +121,111,112,125,114,115,120,111,112,119,108,109,106,104,112,113,111,115,122,122, +126,91,65,88,140,138,145,145,143,147,149,149,153,107,77,103,153,151,155,152,152, +156,154,152,156,66,39,64,31,30,49,189,187,105,30,28,48,45,46,45,44,46,43,58,65, +63,56,64,56,54,57,54,53,68,59,52,48,52,52,50,52,52,48,53,51,51,51,51,47,51,51, +47,56,51,47,51,51,47,51,51,47,52,50,45,60,42,36,51,42,54,45,50,53,49,51,47,51, +51,47,51,51,47,51,51,48,54,51,50,51,51,48,52,51,57,52,51,48,60,51,47,52,52,62, +53,48,45,56,41,47,43,40,38,65,40,45,39,41,39,55,28,36,40,153,152,83,30,34,45,31, +34,32,155,154,162,153,151,155,153,151,160,110,80,112,133,133,136,134,134,138, +139,136,140,107,78,109,129,129,132,128,128,132,133,130,134,136,126,113,144,132, +120,145,135,122,145,133,121,149,138,125,148,136,123,141,130,120,140,129,119,140, +129,119,145,133,120,136,126,114,140,129,118,137,126,114,140,129,119,131,119,105, +131,121,111,137,124,113,127,119,109,136,125,115,130,120,110,130,120,110,128,119, +109,136,123,112,133,123,113,131,120,109,135,124,114,133,123,113,135,123,112,141, +130,119,136,124,113,145,136,122,128,114,101,138,127,115,132,122,112,136,124,114, +140,129,119,135,124,114,141,128,119,141,130,119,135,124,114,142,131,121,135,124, +114,137,126,114,145,132,121,137,126,114,143,134,122,127,116,101,141,130,121,144, +133,121,147,137,123,145,133,121,139,128,118,141,130,120,141,130,119,140,129,119, +138,127,116,138,127,116,143,131,120,134,123,114,147,136,122,151,139,126,142,132, +121,145,133,121,136,121,106,139,128,117,127,117,109,140,129,119,133,122,112,138, +127,116,137,126,114,131,121,111,132,122,112,131,121,111,131,121,111,130,119,109, +131,121,111,132,122,112,133,123,113,136,127,114,133,122,112,136,124,113,139,128, +117,128,113,101,132,122,112,133,123,113,135,123,113,140,129,117,136,126,114,133, +123,113,133,122,111,139,127,116,139,128,118,138,127,116,132,122,112,133,123,113, +136,124,113,132,122,112,138,127,114,136,121,109,141,130,120,142,131,121,136,126, +114,139,128,118,146,134,121,142,132,120,141,130,120,139,128,118,145,132,120,139, +128,118,138,127,116,136,124,114,130,120,110,137,125,115,129,119,109,122,111,95, +128,120,110,128,119,109,134,124,114,133,123,113,133,123,113,130,120,110,131,121, +111,138,127,115,132,121,110,139,128,117,129,119,109,135,124,114,139,128,119,106, +98,96,113,102,103,112,102,103,114,103,104,191,76,77,191,77,78,192,78,79,114,104, +105,121,110,111,191,76,76,118,108,109,120,109,110,192,79,79,192,78,79,191,76,76, +120,110,111,118,109,110,106,97,98,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,213,34,34,214,34,34,214,34,34,214,34,34,214,34,34,213,34,34,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,231,142, +143,213,34,34,214,34,34,214,34,34,216,34,34,111,107,108,116,104,105,190,74,75, +191,76,76,192,78,78,191,76,77,113,104,105,118,106,107,190,74,74,112,103,104,191, +76,76,113,104,105,122,112,113,122,112,113,126,114,115,129,118,119,124,113,114, +64,41,52,69,43,62,116,81,96,57,37,56,60,37,59,62,36,70,106,76,109,68,45,67,67, +49,66,66,38,64,110,79,106,66,39,64,31,35,44,189,190,105,30,28,50,45,43,45,44,47, +61,58,57,74,56,60,57,54,51,55,53,54,53,52,48,52,52,48,53,52,48,56,51,52,51,51, +47,61,51,49,51,51,47,51,51,48,51,51,47,57,42,42,42,170,168,170,170,169,171,42, +36,41,51,47,56,51,62,57,51,49,52,51,48,51,51,52,60,51,50,52,51,48,58,51,49,54, +51,47,52,52,48,56,48,50,61,41,41,53,39,44,38,40,39,40,41,38,46,28,26,44,155,153, +83,84,83,52,34,37,36,25,24,26,67,38,65,109,87,105,69,71,68,70,47,73,67,51,73, +107,75,107,68,47,72,67,52,68,65,43,67,103,71,101,137,128,115,146,134,122,147, +133,122,141,129,119,140,129,119,144,133,121,140,129,118,140,129,118,139,128,118, +140,129,119,137,126,114,140,129,120,140,131,119,143,133,122,130,118,104,133,123, +113,136,125,115,133,122,112,127,119,109,132,122,112,136,125,115,131,121,111,129, +119,109,128,119,109,129,119,109,135,123,113,135,124,114,139,129,119,140,129,119, +145,132,121,146,134,122,131,119,105,137,127,115,132,122,112,135,123,113,133,123, +113,140,129,119,138,127,116,135,124,114,140,129,119,137,126,114,138,127,116,138, +127,116,140,130,120,136,124,113,142,130,121,128,117,102,135,123,112,139,128,118, +140,129,119,149,137,125,141,130,120,148,136,124,142,132,121,140,129,119,136,124, +113,133,123,113,141,130,120,136,124,113,136,126,114,141,130,120,149,137,125,148, +137,124,133,121,107,139,128,117,127,117,109,136,127,114,135,124,114,140,129,119, +141,130,120,131,121,111,130,120,110,130,120,110,129,119,109,131,121,111,132,122, +112,131,121,111,139,128,117,136,124,113,137,126,114,140,128,119,131,121,112,123, +111,94,140,129,120,139,128,116,135,124,114,137,126,114,131,121,111,135,123,112, +133,123,113,129,121,110,140,129,119,138,127,116,130,120,110,125,114,106,136,124, +112,129,119,109,140,129,119,132,120,106,139,128,117,145,132,121,140,129,118,138, +127,116,139,128,118,142,133,122,138,127,116,135,124,114,141,130,120,146,136,123, +141,130,120,140,129,119,132,121,111,139,128,117,134,124,114,120,105,92,132,122, +112,126,113,105,134,124,114,132,122,112,139,128,117,131,121,111,133,123,113,135, +123,113,136,124,113,139,128,117,133,123,113,137,126,114,137,127,114,117,105,105, +119,106,107,115,105,106,115,105,106,191,74,75,190,74,75,191,76,77,120,110,111, +125,114,115,191,76,76,193,80,81,192,80,80,192,79,80,191,76,76,191,76,77,115,104, +105,117,105,106,100,97,98,216,34,34,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,215,34,34,216,34,34,217,36, +36,217,41,40,217,42,42,217,48,48,217,50,50,217,46,46,216,35,35,232,139,141,254, +255,255,254,255,255,254,255,255,232,139,141,215,35,35,217,40,40,217,50,50,217, +51,51,217,51,51,220,48,47,108,106,107,118,109,110,120,110,111,191,77,77,193,81, +82,121,111,112,116,106,106,192,78,79,191,75,76,191,75,75,192,78,79,110,99,100, +119,109,110,121,110,111,127,115,116,128,118,119,127,115,116,103,71,78,109,74,84, +175,156,142,56,35,55,100,74,97,104,75,100,150,148,156,67,42,66,111,83,108,110, +91,109,155,152,161,66,39,64,31,29,44,189,187,105,30,28,43,45,46,45,44,48,47,58, +53,66,56,54,63,54,50,54,53,49,53,52,48,52,52,56,52,52,48,52,51,47,54,51,47,55, +51,49,62,51,58,51,51,47,60,51,55,51,39,37,51,168,166,168,168,166,168,39,34,46, +51,47,57,51,58,51,51,47,51,51,48,54,51,47,54,51,52,52,51,66,52,51,57,51,51,47, +51,51,47,51,49,46,57,42,43,43,39,38,45,40,46,39,40,38,64,35,32,39,146,146,80, +114,114,63,33,37,36,32,43,34,113,85,113,138,126,141,69,46,68,112,83,109,110,84, +116,129,127,137,67,48,66,111,82,108,108,84,105,134,133,136,134,124,113,135,125, +115,147,135,122,145,135,122,139,128,117,146,135,124,140,129,117,141,130,120,143, +133,122,143,133,123,139,128,117,140,129,119,140,129,120,131,115,102,111,99,85, +122,108,94,133,123,113,136,124,114,140,129,118,138,127,115,133,123,113,136,124, +114,133,123,113,132,122,112,132,122,112,137,125,114,137,125,114,139,128,117,141, +130,119,138,127,115,137,122,108,111,99,87,124,112,95,137,125,116,137,127,115, +140,129,120,136,124,113,139,128,117,139,128,117,136,125,115,139,128,117,137,125, +114,141,130,121,138,127,115,134,124,112,133,122,107,111,98,86,130,118,101,139, +128,117,145,132,121,146,134,122,145,134,123,148,134,125,140,129,119,139,128,117, +137,125,114,139,128,117,141,130,120,140,129,119,146,135,124,145,134,123,146,134, +122,140,127,113,112,100,85,124,111,96,139,128,116,137,127,115,137,127,115,132, +122,113,146,134,122,136,125,115,136,125,115,130,121,110,129,120,110,134,124,114, +131,121,111,136,125,115,136,125,115,137,125,114,139,128,117,137,125,115,130,116, +103,109,96,85,131,118,103,139,129,118,134,124,114,137,127,115,136,124,114,141, +131,119,142,130,121,136,125,115,139,128,117,139,128,117,133,123,113,131,121,111, +136,125,115,132,122,112,131,118,105,110,95,85,123,111,94,141,130,120,143,134, +123,139,128,117,143,134,123,142,131,121,142,131,121,143,134,122,143,133,122,142, +131,121,143,134,121,139,128,117,133,123,113,143,131,121,127,115,101,109,96,85, +127,116,102,133,124,114,123,114,104,131,121,111,132,122,112,139,128,115,132,122, +112,136,125,115,133,123,113,139,128,117,137,125,114,143,132,122,136,124,115,111, +100,101,121,111,112,117,105,106,116,106,107,188,66,66,187,65,62,187,64,62,91,85, +80,91,82,76,187,63,61,187,65,62,187,65,62,91,84,78,90,81,75,90,82,75,90,84,78, +88,82,75,73,77,71,222,42,40,218,35,35,234,141,143,254,255,255,254,255,255,254, +255,255,254,255,255,217,35,35,218,35,35,219,40,40,218,35,35,235,146,147,235,145, +146,235,146,147,217,35,35,218,35,35,219,46,46,219,49,49,219,40,39,218,35,35,218, +35,35,218,35,35,219,40,39,219,50,50,219,51,51,219,51,51,219,51,51,219,51,51,222, +48,45,79,85,79,91,85,78,91,86,79,91,84,76,92,87,80,92,87,80,91,86,79,187,66,63, +187,66,62,187,66,62,94,87,80,93,88,82,101,92,90,125,114,115,126,114,115,124,113, +114,127,115,116,99,72,77,105,72,82,173,154,136,54,31,53,97,76,94,101,71,97,149, +147,151,65,38,63,109,79,105,107,79,109,154,151,155,66,39,64,31,29,48,189,187, +107,30,28,43,45,45,57,44,41,51,58,55,65,56,51,57,54,50,66,53,52,53,52,58,56,52, +61,69,52,59,58,51,50,60,51,49,52,51,51,51,51,49,51,51,47,51,51,52,51,39,35,45, +168,168,169,168,166,170,39,34,43,51,47,52,51,47,59,51,47,51,51,47,52,51,47,57, +51,56,62,51,47,60,51,47,60,51,47,51,51,51,51,50,48,51,42,40,42,39,45,47,39,42, +39,40,39,40,39,44,44,81,80,51,154,154,82,44,45,37,32,47,40,98,74,98,108,81,107, +69,46,68,113,84,112,111,82,109,136,135,142,66,52,64,109,81,106,107,81,108,136, +136,139,109,96,83,112,99,86,111,98,86,112,99,87,113,101,86,112,99,87,111,99,87, +111,99,85,111,99,87,111,99,85,112,99,85,113,101,86,109,96,85,112,100,86,96,85, +75,110,97,86,111,99,87,111,96,85,109,95,84,110,96,85,110,96,85,111,99,87,112, +100,85,111,99,87,111,96,85,112,100,85,112,99,87,109,96,85,110,98,86,111,98,86, +113,100,88,96,85,75,110,97,86,112,99,87,111,96,85,112,98,86,112,100,85,111,98, +86,111,99,86,111,96,85,111,99,86,108,95,84,109,96,85,111,96,85,110,96,85,112, +100,88,95,85,75,112,100,88,112,98,86,111,99,87,111,99,85,111,99,85,110,96,85, +110,98,86,112,100,85,112,100,88,110,98,86,113,101,86,112,98,86,111,99,87,112, +101,89,111,99,85,113,101,87,95,84,75,113,101,89,111,99,84,113,101,86,111,98,86, +112,99,86,113,101,86,111,98,86,111,99,87,110,97,86,110,97,86,111,97,85,110,97, +85,111,99,86,111,99,86,112,100,88,112,100,87,112,100,85,111,99,87,96,85,75,110, +97,86,110,96,85,112,100,85,111,96,85,111,96,85,112,100,87,112,102,90,112,98,86, +112,100,87,111,98,86,112,100,85,112,100,85,112,100,88,111,97,85,110,97,86,96,85, +75,111,99,87,113,101,86,113,100,86,111,98,86,113,100,86,111,99,87,113,101,86, +110,98,86,110,98,86,111,99,87,110,96,85,111,96,85,110,96,85,112,100,85,111,99, +87,96,85,75,111,99,87,111,99,87,110,97,86,109,96,84,111,99,87,110,96,85,111,96, +85,111,99,87,110,96,85,111,99,86,112,98,86,110,98,86,112,99,84,115,105,107,120, +111,112,120,109,110,123,113,114,92,85,80,103,145,211,114,159,216,120,168,218, +119,168,220,143,180,233,125,157,203,143,179,232,143,179,232,143,179,232,143,178, +233,122,156,202,126,161,219,99,139,200,224,43,35,221,50,50,220,35,35,237,144, +145,254,255,255,237,143,144,220,35,35,221,45,45,221,40,40,219,35,35,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,219,35,35,221,41,40, +221,51,51,221,52,52,221,52,52,221,52,52,221,52,52,221,52,52,221,52,52,221,52,52, +221,52,52,221,52,52,224,44,35,105,151,222,99,133,196,99,133,196,99,133,196,114, +152,223,114,152,223,114,152,223,99,134,196,99,134,196,114,153,224,114,153,224, +114,154,227,93,87,81,127,115,116,129,118,119,129,119,120,127,115,116,163,142, +122,168,149,132,173,156,140,91,65,88,140,138,142,145,144,150,149,148,154,107,77, +103,153,152,157,152,150,159,154,151,159,66,39,64,31,34,44,189,188,107,30,43,43, +45,43,46,44,52,48,41,47,41,57,54,56,54,50,65,53,49,59,52,47,52,52,63,51,52,48, +59,51,55,52,51,48,52,51,53,51,51,52,51,51,48,54,51,48,51,39,35,40,168,166,168, +168,166,170,39,50,43,51,47,51,51,47,50,51,47,52,51,47,56,51,51,51,51,48,52,51, +57,52,51,48,60,51,47,52,51,61,52,49,47,59,43,41,50,39,38,39,39,45,39,40,39,40, +40,38,43,40,43,46,147,148,78,65,65,42,36,37,35,53,55,58,69,46,68,69,46,68,69,46, +68,69,46,68,69,46,68,69,46,68,134,134,137,134,134,138,140,137,141,79,71,62,79, +71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62, +79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71, +62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79, +71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62, +79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71, +62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79, +71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62, +79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71, +62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79, +71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62, +79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71, +62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79, +71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62, +79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71, +62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,120,109,110,117,106,107,124,114, +115,123,113,114,93,87,81,97,137,208,153,182,225,157,188,228,157,189,229,166,194, +235,159,185,222,159,186,222,166,195,235,166,195,235,159,186,222,159,184,222,162, +190,229,155,182,221,227,35,35,225,42,35,225,41,35,224,35,35,224,35,35,224,35,35, +225,41,35,225,35,35,242,150,148,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,242,149,147,224,35,35,225,43,35, +225,43,35,225,43,35,225,44,35,225,48,43,225,44,35,225,43,35,225,43,35,225,43,35, +227,35,35,153,183,231,151,176,219,151,176,219,151,176,219,155,183,231,155,183, +231,155,183,231,151,176,219,151,176,219,155,183,231,155,183,231,115,153,225,94, +88,81,127,115,116,132,121,122,128,117,118,124,113,114,41,37,40,44,37,43,83,58, +80,57,39,61,60,54,59,62,52,60,106,75,102,68,47,73,67,53,65,66,42,65,110,83,111, +66,39,64,31,31,58,189,188,107,30,28,46,45,43,46,44,43,46,42,45,42,57,54,57,54, +55,54,53,49,53,52,55,52,52,49,55,52,57,58,51,57,54,51,48,59,51,47,51,51,47,57, +51,47,65,51,48,55,39,48,47,168,166,168,168,167,170,39,33,39,51,55,50,51,53,76, +51,50,57,51,47,51,51,47,51,51,48,55,51,52,52,51,47,52,51,56,52,51,47,54,50,51, +50,43,41,43,39,40,43,39,37,39,39,49,39,40,38,40,40,38,40,125,127,68,148,148,78, +61,61,41,36,40,36,38,51,42,69,46,68,106,79,105,103,78,103,111,83,110,69,46,68, +70,47,73,67,51,73,108,76,108,99,97,88,97,95,86,98,96,87,97,95,86,98,96,87,98,96, +87,98,96,87,99,97,88,99,97,88,98,96,87,98,96,87,98,96,87,98,96,87,99,97,87,98, +96,87,98,96,87,98,96,87,98,97,87,98,96,87,97,96,87,98,96,87,98,96,87,98,96,87, +98,96,87,98,96,87,98,96,87,98,96,87,98,96,87,98,96,87,98,96,87,98,96,87,99,97, +88,98,96,87,98,96,87,98,96,87,98,96,87,97,96,86,98,96,87,98,96,87,98,96,87,98, +96,87,97,96,87,97,96,86,97,95,86,98,96,87,98,96,87,98,96,87,98,96,87,98,96,87, +98,96,87,99,97,88,98,96,87,98,96,87,98,96,87,98,96,87,98,96,87,98,96,87,98,96, +87,98,96,87,99,97,87,98,96,87,98,96,87,99,97,88,99,97,88,98,96,87,98,96,87,98, +96,87,98,96,87,98,96,87,99,97,88,99,97,88,99,97,88,98,96,87,97,95,86,97,95,86, +97,95,86,98,96,87,98,96,87,97,96,87,116,116,112,97,97,92,99,96,87,98,96,87,98, +96,87,98,96,87,98,96,87,98,96,87,98,96,87,98,96,87,100,97,88,100,98,89,101,98, +89,101,98,89,101,98,89,97,96,87,100,98,89,99,97,88,101,98,88,100,97,88,98,96,87, +100,97,88,100,98,88,100,97,88,101,98,88,101,98,89,102,99,90,101,98,88,101,98,89, +101,98,88,101,98,89,101,98,89,101,98,89,101,98,89,101,98,88,100,97,88,101,98,89, +99,97,87,99,96,87,99,97,87,100,98,89,101,98,89,101,98,89,100,98,89,100,97,88, +101,98,89,99,97,88,101,98,89,99,97,87,115,105,107,124,113,114,121,111,112,125, +114,115,94,88,82,95,136,208,151,178,223,110,151,213,119,164,218,145,178,232,144, +180,232,126,158,203,126,158,203,126,158,203,126,158,203,143,180,231,136,170,219, +121,154,200,107,142,192,90,127,182,147,173,213,85,124,182,66,68,59,85,124,182, +147,173,213,84,123,180,83,122,180,82,118,178,87,121,178,99,133,182,99,132,182, +86,121,178,81,117,178,87,121,179,99,133,183,100,135,185,89,127,182,85,124,181, +85,124,182,147,174,214,86,126,183,67,69,59,86,126,183,147,174,214,85,124,182,88, +129,189,101,145,211,112,153,221,114,153,222,99,134,196,99,134,196,114,153,223, +114,153,223,114,153,223,114,153,223,114,153,223,114,153,223,155,184,231,115,155, +226,94,88,81,127,115,116,129,118,119,131,120,121,127,115,116,71,52,69,76,55,73, +123,121,125,56,42,56,100,74,97,104,76,100,150,148,152,67,51,67,81,60,80,81,59, +80,114,111,117,66,39,64,31,46,44,189,187,105,30,30,44,45,43,53,44,41,48,42,41, +42,57,52,57,54,53,54,53,54,53,52,48,52,52,49,59,52,49,52,51,49,52,51,60,55,51, +47,55,51,53,55,51,47,55,51,58,55,39,36,49,168,166,169,168,166,168,39,35,48,51, +48,51,51,50,50,51,48,51,51,55,51,51,47,51,51,53,51,51,56,52,51,47,60,51,47,57, +51,47,62,50,47,58,43,48,51,39,42,52,39,52,43,39,36,39,40,39,40,40,51,40,41,38, +41,130,130,70,95,95,54,62,64,45,36,40,36,78,52,77,100,77,99,95,74,95,112,83,110, +69,46,68,113,84,111,110,84,116,130,128,138,105,100,86,106,101,92,110,104,95,108, +102,93,107,102,92,108,103,93,107,102,93,112,107,96,113,107,98,112,107,97,112, +106,95,113,108,98,110,105,95,110,104,94,113,107,97,111,105,95,110,104,95,110, +104,94,108,103,93,106,101,92,108,103,93,110,104,95,111,106,95,109,103,94,106, +102,93,109,103,94,110,104,94,110,104,94,108,103,94,110,105,95,110,104,94,108, +103,93,108,103,93,111,106,95,108,103,93,108,103,93,107,102,93,107,102,93,106, +101,92,108,103,93,112,106,96,108,103,93,108,103,93,105,100,90,106,101,92,111, +106,95,110,104,94,113,107,97,113,107,97,112,106,96,110,104,95,110,104,94,110, +104,94,105,101,92,109,103,94,108,102,93,108,102,93,109,103,94,108,103,93,110, +105,95,113,107,97,112,106,96,113,108,98,111,106,97,110,104,95,111,106,96,110, +104,94,110,104,95,110,104,95,113,107,97,110,104,95,111,106,97,111,106,95,108, +102,93,107,102,93,106,101,92,105,100,90,107,102,93,102,98,89,126,126,124,98,98, +96,110,105,96,110,104,95,110,105,95,108,102,93,110,105,95,112,106,96,106,102,93, +111,105,96,115,107,98,115,108,98,117,110,99,116,109,99,115,108,98,115,108,98, +117,110,99,114,107,97,116,108,98,116,109,99,111,105,96,108,102,92,109,103,93, +115,108,98,120,113,103,116,108,99,116,108,98,116,109,99,118,111,101,120,112,104, +117,110,99,116,108,99,117,110,99,120,113,103,116,108,99,115,107,98,117,111,99, +113,106,97,114,106,97,115,108,100,116,108,99,116,109,99,118,109,99,116,109,99, +115,107,98,116,109,99,111,104,95,115,108,99,114,107,98,114,103,104,124,113,114, +120,110,111,123,114,115,94,89,83,96,136,209,150,178,223,99,139,208,109,153,214, +141,177,231,145,180,233,144,181,233,144,181,233,144,181,233,144,181,233,143,180, +232,136,172,221,126,157,204,118,149,195,110,139,188,150,174,213,91,124,182,75, +67,55,92,124,183,149,173,213,92,124,182,92,124,182,92,125,183,92,125,183,97,128, +184,108,138,188,108,138,187,96,128,183,91,124,182,96,127,183,107,137,187,107, +137,186,96,127,182,92,124,182,149,174,214,92,125,184,77,69,56,93,126,184,149, +174,214,92,124,182,96,129,189,107,144,211,114,152,222,114,153,223,99,134,196, +114,153,223,114,153,223,114,153,223,114,153,223,114,153,223,114,153,223,114,153, +223,155,184,231,115,155,226,95,89,82,118,109,110,123,113,114,128,117,118,121, +112,113,69,50,69,74,51,73,122,120,124,54,44,53,97,72,97,101,70,100,149,147,151, +65,53,64,80,61,77,78,56,77,113,111,114,66,39,64,31,42,44,189,187,105,30,32,50, +45,53,53,44,41,44,42,52,41,57,51,58,54,55,60,53,49,53,52,48,52,52,48,52,52,48, +59,51,57,57,51,48,52,51,48,51,51,52,51,51,48,52,51,50,58,39,37,40,168,166,168, +168,169,168,39,35,41,51,57,51,51,57,51,51,48,51,51,47,51,51,55,58,51,47,52,51, +50,60,51,47,62,51,47,52,51,47,51,51,48,51,45,47,51,38,36,41,39,51,53,39,44,39, +39,62,39,40,37,40,40,38,61,41,41,41,142,142,76,95,95,53,40,49,39,32,37,37,31,46, +40,85,68,86,93,72,93,69,46,68,113,84,112,111,81,108,136,135,142,125,116,103,127, +114,105,129,119,110,130,120,110,130,120,110,123,114,105,129,119,108,133,123,113, +136,125,114,131,122,112,130,120,110,136,124,114,136,125,114,136,125,114,136,124, +115,131,122,112,130,119,111,137,125,114,129,118,110,129,119,110,124,113,103,128, +118,108,129,119,110,129,119,110,132,123,112,137,124,113,124,114,104,132,122,111, +137,125,114,136,124,113,133,123,112,124,114,104,130,120,110,129,119,108,128,117, +108,133,124,112,132,122,111,130,120,111,127,116,107,129,119,110,129,119,110,125, +113,104,121,111,102,123,111,102,127,116,107,129,119,110,129,119,110,130,120,111, +137,125,114,130,119,111,129,118,110,132,123,112,132,122,111,130,120,111,130,119, +110,128,118,108,123,113,104,133,123,112,127,117,107,132,121,110,139,127,116,136, +124,113,132,122,111,132,122,111,140,128,115,126,115,106,133,123,112,129,119,110, +130,120,111,138,125,114,127,117,107,133,124,112,132,121,111,132,121,111,127,115, +106,127,116,107,125,115,105,122,112,103,110,104,95,132,132,132,97,97,98,128,119, +108,131,122,112,129,118,110,124,114,104,129,119,110,140,127,115,128,118,109,132, +121,111,133,122,111,137,127,115,141,130,119,139,128,116,127,117,107,130,120,111, +132,123,112,124,114,104,124,114,104,129,119,107,129,118,108,124,113,105,123,112, +102,129,119,110,132,122,111,127,117,107,132,123,112,128,118,110,136,124,113,133, +125,113,137,125,114,132,121,111,127,117,107,132,122,111,130,119,111,133,123,111, +129,118,110,130,120,110,123,113,104,123,113,103,127,116,107,123,114,104,127,115, +107,126,114,104,131,120,111,134,124,113,131,121,112,136,125,113,131,120,110,114, +106,106,123,114,113,124,113,114,125,114,115,95,89,83,96,138,209,150,178,224,96, +136,208,97,137,208,129,166,228,140,175,231,145,180,232,144,181,233,145,181,233, +145,181,233,143,179,230,137,172,221,130,163,210,125,156,202,120,150,197,155,180, +218,100,131,189,77,70,58,96,129,189,150,175,216,97,129,189,97,131,190,98,131, +191,98,132,192,98,132,191,102,135,192,113,146,195,113,146,195,101,133,190,96, +130,189,101,133,190,112,145,194,112,145,194,101,133,189,150,176,216,97,131,191, +80,73,60,97,131,191,150,176,216,97,130,189,101,135,196,110,148,215,115,154,222, +115,154,223,115,154,223,115,154,223,115,154,223,115,154,223,115,154,224,115,154, +224,115,154,224,115,154,224,156,184,231,116,156,227,97,90,83,131,119,120,130, +119,120,129,118,119,128,117,118,106,104,112,113,111,115,122,122,124,91,64,90, +140,138,145,145,143,147,149,149,151,107,76,106,112,110,115,112,111,116,113,111, +114,66,39,64,31,29,46,189,187,109,30,29,44,45,56,51,44,41,52,42,40,55,57,61,56, +54,61,54,53,50,61,52,68,52,52,57,56,52,48,52,51,50,61,51,47,57,51,47,51,51,47, +56,51,48,52,51,59,52,42,48,53,168,166,168,168,166,168,42,37,41,51,52,64,51,47, +51,51,49,51,51,47,55,51,48,51,51,50,57,51,47,54,51,47,52,51,47,51,51,49,51,51, +65,51,47,47,51,38,36,37,39,38,48,39,38,44,39,36,39,39,39,40,40,51,39,40,38,58, +41,41,41,136,136,72,127,127,68,106,107,61,35,44,36,36,40,37,66,39,64,66,39,64, +66,39,64,66,39,64,66,39,64,132,121,112,136,124,113,136,124,112,129,119,109,129, +118,109,129,118,109,131,120,111,120,112,101,134,125,113,129,118,109,129,119,110, +130,120,111,131,121,110,141,129,119,138,126,115,131,121,110,132,123,112,140,128, +117,133,122,111,129,119,109,128,118,107,130,120,110,122,112,103,126,115,105,124, +115,105,130,120,110,127,117,105,123,114,105,132,123,113,132,122,112,129,119,109, +128,118,107,131,121,110,131,121,112,128,118,107,128,118,107,128,118,107,128,118, +107,126,115,105,121,111,103,129,119,109,128,118,107,124,115,105,122,113,104,127, +117,105,132,122,112,129,119,109,123,115,105,134,122,111,133,123,112,133,122,111, +135,123,112,133,122,111,130,120,109,126,117,105,126,117,105,126,115,105,131,121, +111,131,121,110,141,131,120,138,127,115,135,123,112,133,122,111,129,119,109,129, +119,109,133,124,114,139,127,116,129,119,109,129,119,109,129,119,109,130,120,109, +130,120,110,130,120,110,129,119,109,133,123,113,123,114,105,129,119,108,122,112, +103,110,105,94,132,132,132,96,97,97,133,123,112,138,124,114,140,129,117,132,122, +111,128,119,107,133,123,112,133,123,113,136,127,114,140,129,116,140,128,118,140, +129,118,137,124,114,129,119,109,130,120,110,130,120,110,126,117,105,132,122,112, +136,125,114,128,118,107,123,114,105,129,118,107,129,119,109,129,119,109,126,115, +105,127,117,105,128,118,107,136,123,112,139,127,116,135,123,112,132,122,112,128, +118,107,130,120,110,129,119,109,128,118,107,129,119,109,130,121,111,126,115,104, +126,117,105,126,117,105,122,113,103,124,115,105,130,120,110,127,117,106,133,123, +113,128,118,107,131,120,111,133,122,111,120,109,110,125,112,113,121,110,111,121, +111,112,95,89,83,96,138,211,150,178,224,96,135,207,116,154,223,118,156,224,127, +164,227,140,176,231,146,181,232,145,182,233,145,181,233,143,180,231,140,176,226, +136,171,220,132,166,214,129,162,209,159,186,223,120,153,206,86,76,64,102,138, +201,152,178,221,103,138,202,104,139,203,104,140,204,104,140,204,104,140,204,104, +140,204,108,143,205,121,155,208,120,154,207,108,143,204,102,137,201,107,141,203, +120,154,206,120,154,206,153,179,222,103,140,204,87,77,65,103,140,204,152,178, +221,103,138,202,106,143,207,113,151,218,116,155,224,115,154,224,115,154,224,115, +154,224,115,154,224,115,154,224,115,154,224,115,154,224,115,154,224,115,154,224, +156,184,231,116,156,227,95,89,82,128,116,117,124,113,114,131,120,121,129,119, +120,41,24,43,44,38,43,83,62,80,57,39,56,60,37,63,62,54,60,106,79,102,38,32,51, +41,34,50,37,33,52,68,59,89,66,39,64,31,29,55,189,189,107,30,32,56,45,43,46,44, +46,46,42,58,42,57,56,60,54,50,54,53,50,53,52,47,52,52,50,52,52,48,52,51,47,51, +51,47,52,51,60,57,51,52,51,51,53,60,51,48,60,50,50,49,168,166,168,168,166,168, +50,50,49,51,49,54,51,63,51,51,49,55,51,49,51,51,56,51,51,48,52,51,47,58,51,47, +51,51,47,51,51,47,58,51,47,51,50,47,50,38,55,38,38,36,41,39,47,38,39,37,49,39, +37,39,39,37,39,40,38,39,40,50,41,41,38,46,72,71,57,149,149,79,144,143,77,84,83, +51,59,59,41,30,31,42,27,28,39,29,25,39,27,24,35,129,120,109,125,117,106,138,125, +115,131,120,110,132,121,112,130,120,110,121,111,103,125,115,106,129,118,108,134, +124,113,133,123,113,138,128,114,132,122,112,139,129,116,141,129,119,135,124,113, +131,121,111,132,122,111,128,119,107,134,123,114,128,119,108,131,121,111,128,118, +107,121,114,103,122,114,104,132,121,112,134,122,112,122,113,103,132,121,112,130, +120,110,132,121,112,128,118,106,129,119,107,134,122,112,130,120,110,123,114,105, +122,114,104,132,121,112,132,121,112,131,121,111,133,122,113,131,121,111,131,121, +111,120,111,102,129,119,107,130,120,110,130,120,110,130,120,110,130,120,110,132, +121,111,133,122,113,138,127,115,138,127,115,131,121,111,129,119,107,131,121,111, +129,120,108,134,123,113,131,121,111,133,123,113,137,127,116,133,122,112,135,124, +114,130,120,110,130,120,110,130,120,110,130,120,110,136,125,115,131,121,111,139, +128,115,136,125,115,133,122,112,132,121,112,133,122,112,132,121,112,129,119,107, +120,111,102,125,116,106,109,104,93,132,132,132,96,97,97,131,121,109,137,125,113, +140,128,117,133,122,113,131,121,111,133,122,112,134,123,113,136,125,114,138,127, +115,144,133,122,144,133,122,138,127,115,128,118,107,131,120,111,132,121,112,132, +121,113,128,119,107,131,120,111,126,118,107,128,119,107,129,120,108,131,121,111, +133,122,113,134,123,114,131,121,111,131,121,111,132,121,112,132,121,112,132,121, +112,131,120,111,130,120,110,137,123,113,130,120,110,134,122,114,133,122,113,130, +119,108,131,120,111,134,122,114,124,116,106,133,121,113,127,118,107,130,120,108, +133,123,114,130,119,107,131,122,112,130,119,109,127,117,109,119,108,109,125,114, +113,124,113,114,121,111,112,95,89,83,97,137,211,150,178,224,116,155,224,115,154, +224,115,154,224,117,155,224,126,163,228,140,176,232,145,181,233,145,182,233,144, +181,232,142,179,230,140,176,227,138,174,224,137,172,221,163,190,230,134,170,221, +104,95,86,113,150,215,154,181,226,109,146,213,109,147,214,110,147,214,110,147, +214,110,147,214,110,147,214,109,147,214,114,150,215,129,162,218,135,169,220,115, +152,215,108,145,212,113,150,214,127,163,218,160,188,229,113,151,217,89,81,66, +110,148,215,154,181,226,110,147,214,92,130,199,94,134,205,96,136,207,116,155, +224,115,154,224,115,154,224,115,154,224,115,154,224,115,154,224,115,154,224,115, +154,224,115,154,224,156,184,231,116,156,227,95,89,82,124,113,114,120,110,111, +127,115,116,127,115,116,71,52,70,76,57,76,123,122,127,56,37,55,100,74,99,104,79, +104,150,149,154,38,31,51,71,61,87,71,61,84,116,117,120,66,39,64,31,30,51,189, +188,107,30,32,55,45,47,57,44,43,50,42,56,42,57,51,56,54,52,60,53,57,53,52,52,59, +52,50,52,52,48,52,51,47,51,51,48,51,51,47,57,51,51,51,51,48,51,51,48,59,51,50, +52,168,166,168,168,166,168,51,59,51,51,52,57,51,49,51,51,53,55,51,47,51,51,51, +59,51,47,51,51,50,52,51,47,51,51,47,51,51,47,51,52,47,51,37,36,37,38,46,38,38, +41,38,38,36,51,39,37,38,39,37,39,39,41,54,39,42,38,40,37,54,40,52,53,40,37,41, +41,40,42,122,122,68,144,144,78,144,145,76,146,146,78,156,157,82,144,143,76,153, +153,85,131,121,111,137,125,115,137,125,115,104,93,82,109,95,84,109,95,82,107,94, +84,107,94,81,107,94,84,109,95,84,110,96,83,106,93,83,104,92,82,137,125,116,136, +124,115,135,123,114,136,123,113,130,120,110,139,129,115,107,93,80,106,92,81,110, +96,82,109,95,84,107,94,83,106,93,81,109,95,81,107,94,82,107,94,82,107,92,81,140, +130,116,139,127,114,139,127,115,131,120,110,133,122,113,136,124,114,104,91,80, +106,93,81,107,93,81,107,94,82,109,95,83,109,95,83,107,94,82,109,95,83,107,94,83, +107,93,80,136,124,114,140,130,117,138,128,116,136,124,114,138,129,115,140,129, +116,106,93,82,109,96,82,107,94,82,109,95,81,106,93,81,107,94,82,107,94,82,107, +94,82,109,95,81,106,93,82,137,125,115,139,129,115,135,123,113,139,128,114,133, +122,113,136,124,114,106,92,81,110,96,82,110,96,82,110,96,82,109,95,83,109,95,81, +107,94,82,109,95,83,109,95,81,104,91,80,131,120,112,111,105,94,132,132,132,97, +97,97,129,119,109,134,123,114,106,92,81,108,95,81,110,96,82,109,95,81,109,94,82, +109,97,84,108,94,83,108,94,83,109,96,84,106,95,83,141,129,116,137,128,115,138, +128,115,133,122,113,136,123,113,138,129,116,107,93,80,110,96,82,107,94,82,104, +92,80,109,95,83,109,95,83,107,94,82,109,94,82,110,96,82,104,92,81,138,128,116, +138,128,116,133,122,112,145,133,121,140,129,115,138,128,116,104,92,81,106,94,82, +109,96,82,107,95,81,107,94,82,107,94,82,109,94,82,107,94,82,106,92,82,105,92,82, +134,123,113,132,123,111,134,122,112,114,104,106,120,109,110,127,115,116,122,112, +113,94,88,81,97,139,211,150,178,225,116,155,224,115,154,224,115,154,224,115,154, +224,117,155,224,126,163,228,140,175,232,145,181,233,145,181,233,144,181,232,143, +180,231,142,179,230,141,178,229,165,193,233,142,178,230,116,105,96,133,169,228, +157,184,230,112,151,219,113,151,220,113,151,220,113,151,220,113,151,220,113,151, +220,113,151,220,113,151,220,116,154,221,125,161,223,139,174,227,119,156,222,111, +150,219,117,154,221,161,190,232,132,170,228,96,86,72,113,152,222,155,183,229,94, +133,204,95,134,205,96,135,207,97,136,208,116,155,225,115,154,224,115,154,224, +115,154,224,115,154,224,115,154,224,115,154,224,115,154,224,115,154,224,156,184, +231,116,156,227,95,90,83,133,122,123,123,112,113,122,112,113,130,119,120,69,48, +66,74,51,71,122,121,126,54,39,53,97,70,94,101,70,97,149,148,153,38,31,47,70,62, +84,69,58,82,114,114,118,66,39,64,31,46,46,189,189,105,30,32,45,45,44,63,44,41, +60,42,56,42,57,51,57,54,51,54,53,49,53,52,54,52,52,48,52,52,48,53,51,47,51,51, +47,56,51,53,51,51,51,52,51,53,51,51,47,51,51,58,51,168,166,168,168,166,168,51, +55,51,51,48,55,51,48,54,51,47,51,51,47,60,51,47,54,51,48,51,51,57,61,51,56,61, +51,58,51,52,47,52,52,51,55,38,37,37,38,41,48,38,49,39,38,36,37,38,40,55,39,45, +38,39,36,49,39,60,44,39,36,39,40,43,40,40,38,40,40,38,40,40,38,41,56,55,47,70, +68,48,35,32,49,59,57,45,29,32,50,26,24,33,130,120,111,137,125,115,133,122,111, +108,95,83,39,73,75,42,73,74,42,73,74,43,75,77,47,84,86,50,93,94,54,99,100,50, +100,103,108,93,83,140,131,117,137,127,116,129,121,111,136,127,115,132,122,111, +131,122,112,106,93,83,39,74,76,40,73,74,40,73,74,42,74,76,42,74,76,41,73,74,41, +73,74,37,73,75,110,95,83,129,121,111,131,122,111,131,121,110,131,121,110,132, +122,111,132,122,111,106,94,83,46,88,91,42,76,77,41,73,74,41,74,76,41,74,76,41, +73,74,40,73,74,38,73,75,106,93,83,138,128,117,135,124,114,132,122,111,137,127, +116,139,128,116,139,129,117,108,94,83,37,73,75,41,73,74,41,73,74,44,78,81,51,91, +94,55,98,99,56,100,101,50,100,103,108,93,83,137,127,115,135,124,114,131,121,111, +135,124,114,132,122,111,129,121,111,109,94,83,37,73,75,40,73,74,40,73,74,41,74, +76,41,74,76,41,73,74,40,73,74,37,73,75,106,94,83,130,121,111,114,108,97,132,132, +132,96,97,97,131,122,110,134,124,114,108,95,83,37,73,75,40,73,74,40,73,74,41,74, +76,41,74,76,40,73,74,40,73,74,37,73,75,111,97,83,134,124,114,136,126,114,137, +128,117,132,122,111,131,122,111,136,125,115,108,95,83,29,50,71,29,46,63,36,55, +77,52,79,109,41,62,87,32,50,69,29,46,64,28,48,68,106,94,82,132,123,112,130,121, +111,132,122,111,137,126,116,135,124,114,136,124,115,108,95,83,37,73,75,41,73,74, +41,73,74,42,74,76,42,74,76,41,73,74,41,73,74,38,73,75,106,95,83,129,119,108,130, +120,110,122,113,103,119,110,112,120,109,110,120,109,110,122,111,112,95,89,83,97, +138,212,150,178,224,116,155,224,115,154,224,115,154,224,115,154,224,115,154,224, +117,155,224,126,163,228,140,175,232,145,181,233,145,182,233,144,181,233,144,181, +232,144,180,232,166,195,235,144,182,234,118,107,99,142,181,234,163,190,234,120, +157,224,114,153,222,114,153,223,114,153,223,114,153,223,114,153,223,114,153,222, +114,153,222,114,153,222,117,154,222,127,164,226,141,177,230,122,161,225,113,152, +222,157,185,231,134,173,231,110,99,89,120,159,227,155,184,231,95,136,207,96,136, +207,96,136,208,97,136,208,96,136,208,116,155,225,115,154,224,115,154,224,115, +154,224,115,154,224,115,154,224,115,154,224,115,154,224,156,184,231,116,156,227, +95,89,82,128,116,117,126,114,115,118,109,110,126,114,115,106,104,113,113,114, +117,122,120,124,91,67,88,140,138,146,145,146,149,149,147,151,70,59,83,114,113, +117,112,115,121,114,114,118,66,39,64,31,33,46,189,187,105,30,28,44,45,43,46,44, +50,46,42,40,50,40,45,52,55,50,60,53,54,53,52,48,58,52,48,58,52,52,53,51,55,51, +51,47,51,51,47,55,51,47,51,51,47,51,51,47,61,51,47,51,168,166,168,168,166,168, +51,55,52,51,47,50,51,50,67,51,47,51,51,49,54,51,48,51,51,47,52,51,60,57,51,46, +51,52,69,52,37,35,37,37,36,37,38,43,42,38,36,38,38,50,40,38,50,46,38,42,36,38, +37,53,39,37,39,39,39,42,39,37,40,39,37,40,39,50,50,40,42,41,40,54,42,40,41,40, +36,43,39,40,37,42,40,59,40,40,44,40,30,29,43,132,122,112,136,124,114,138,127, +116,108,94,84,42,74,75,70,117,118,70,117,118,46,75,76,46,76,77,78,131,132,88, +148,149,56,100,100,110,94,83,140,129,119,142,132,120,139,129,119,137,127,116, +142,132,120,138,128,116,109,94,83,50,87,88,72,121,122,70,117,118,46,73,74,46,73, +74,70,117,118,70,117,118,41,72,74,111,97,85,132,122,112,138,128,117,133,122,112, +132,122,112,135,124,114,136,125,115,109,95,83,51,88,90,85,142,143,72,121,122,46, +73,74,46,73,74,70,117,118,70,117,118,42,73,74,110,95,83,137,127,116,135,124,114, +141,131,119,140,129,118,135,123,112,138,128,117,111,97,83,41,72,74,70,117,118, +70,117,118,46,73,74,50,79,80,88,147,148,94,158,160,56,99,101,111,97,83,138,128, +117,137,127,116,135,123,112,135,123,112,139,128,119,137,127,116,109,95,83,42,73, +74,70,117,118,70,117,118,46,73,74,46,73,74,70,117,118,70,117,118,42,73,74,110, +95,83,134,123,113,114,109,98,132,132,132,96,97,97,139,128,117,137,127,116,110, +94,83,42,73,74,70,117,118,70,117,118,46,73,74,46,73,74,70,117,118,70,117,118,41, +72,74,111,97,83,137,127,116,135,123,112,135,123,112,137,128,116,135,123,112,142, +132,119,108,95,83,32,49,67,59,83,109,65,91,119,52,70,92,59,80,106,67,94,122,62, +87,115,34,51,69,110,96,84,140,130,120,131,121,111,138,128,117,137,128,116,135, +124,114,136,125,115,110,96,84,42,73,74,69,117,118,69,117,118,46,73,74,46,73,74, +69,117,118,69,117,118,42,72,74,111,97,83,134,123,112,132,122,112,129,119,110, +123,112,112,122,111,112,121,110,111,127,116,117,96,90,83,96,138,211,156,184,232, +115,154,224,115,154,224,115,154,224,115,154,224,115,154,224,115,154,224,117,155, +224,126,163,228,140,175,232,145,181,233,145,182,234,145,182,233,145,181,233,166, +195,236,145,183,236,122,112,104,145,182,236,166,194,235,137,171,230,121,158,226, +115,154,224,115,154,224,115,154,224,115,154,224,115,154,224,115,154,224,115,154, +223,115,154,223,118,155,223,129,166,228,146,182,232,124,162,226,155,184,231,120, +160,228,112,103,93,135,173,232,157,186,232,96,136,208,97,137,208,97,137,209,97, +137,209,97,137,209,96,136,208,116,155,225,116,155,224,116,155,224,116,155,224, +116,155,224,116,155,224,115,154,224,156,184,231,116,156,227,97,90,83,130,119, +120,128,117,118,128,117,118,130,119,120,41,24,42,44,24,47,83,58,84,57,37,56,60, +37,62,62,36,66,106,76,108,68,45,67,67,43,65,66,46,75,110,81,112,66,39,64,31,33, +52,189,188,107,30,28,44,45,44,56,44,41,47,42,42,44,41,39,52,55,61,54,53,50,58, +52,58,66,52,51,51,52,48,59,51,55,51,51,48,56,51,55,51,51,50,51,51,47,51,51,47, +51,51,50,51,168,166,168,168,166,168,51,48,58,51,48,58,51,51,54,51,53,58,51,50, +55,51,51,54,51,60,55,51,57,51,52,51,51,37,35,45,37,40,37,52,47,52,52,56,57,38, +50,38,38,39,38,38,36,51,38,40,57,38,42,52,38,37,42,39,43,39,39,37,57,39,42,40, +39,41,40,39,37,42,39,42,49,40,37,43,29,30,39,40,38,40,40,38,40,40,37,40,30,28, +33,131,120,110,141,130,120,141,130,120,112,99,84,41,73,75,70,118,119,76,122,123, +46,74,75,46,74,75,77,123,124,78,131,132,51,92,94,111,97,85,131,123,113,139,128, +119,133,123,113,136,124,115,137,126,116,136,124,114,112,97,85,54,97,99,85,143, +145,80,129,130,46,74,75,46,74,75,76,122,123,70,118,119,41,73,75,113,100,85,139, +128,120,142,131,120,135,123,113,136,124,115,138,126,116,130,122,112,111,97,85, +42,76,78,85,143,145,92,148,150,48,77,78,46,74,75,76,122,123,70,118,119,41,73,75, +111,96,84,136,124,114,141,131,121,141,130,119,141,129,119,137,126,116,141,131, +122,112,99,86,41,73,75,70,118,119,76,122,123,46,74,75,46,74,75,84,135,136,88, +149,150,55,98,101,112,99,84,129,120,111,126,119,106,137,126,117,142,130,120,138, +127,119,137,125,116,111,96,84,45,81,83,70,119,120,76,122,123,46,74,75,46,74,75, +76,122,123,70,118,119,41,73,75,111,97,85,139,128,118,117,111,101,132,132,132,96, +97,97,133,123,114,138,127,117,111,97,85,41,73,75,70,118,119,76,122,123,46,74,75, +46,74,75,76,122,123,70,118,119,41,73,75,112,99,86,139,128,120,129,121,111,139, +127,119,139,128,120,140,131,121,141,131,121,111,96,84,31,46,64,61,86,115,79,105, +134,46,63,83,51,70,92,103,137,164,61,87,115,33,49,68,112,99,84,139,128,119,137, +126,116,133,123,113,136,124,115,133,123,113,130,121,112,112,97,85,41,73,75,70, +118,119,76,121,122,46,74,75,46,74,75,76,121,122,70,118,119,41,73,75,112,99,87, +136,125,114,137,126,115,140,128,119,120,110,111,127,114,116,126,114,115,127,116, +117,94,88,81,116,156,228,156,184,231,115,154,224,115,154,224,115,154,224,115, +154,224,115,154,224,115,154,224,115,154,224,117,155,224,126,163,228,140,175,232, +145,181,233,145,182,234,145,182,234,167,196,236,146,184,237,119,108,100,146,184, +237,167,195,236,142,180,233,137,172,231,121,158,226,115,154,224,115,154,224,115, +154,224,115,154,224,115,154,224,115,154,224,115,154,224,115,154,224,117,155,224, +124,162,227,146,183,233,159,187,233,117,156,227,99,87,73,135,174,233,162,191, +234,99,141,210,97,137,209,97,137,209,97,137,209,97,137,209,97,137,209,97,137, +209,97,137,209,97,137,209,97,137,209,97,137,209,96,136,208,116,155,224,156,184, +231,116,156,227,97,90,83,130,119,120,130,119,120,133,122,123,136,124,125,71,52, +71,76,54,73,123,121,125,56,35,55,100,75,100,104,75,100,150,148,152,67,42,66,111, +85,108,110,79,106,155,154,161,66,39,64,31,29,46,189,190,105,30,33,65,45,52,56, +44,55,45,42,46,55,41,45,42,55,50,56,53,49,61,52,48,58,52,52,59,52,48,52,51,48, +51,51,49,52,51,59,51,51,66,51,51,47,51,51,47,51,51,47,51,168,166,168,168,166, +168,51,48,51,51,58,51,51,49,51,51,46,57,51,55,62,51,47,52,51,50,61,51,58,51,51, +47,51,52,53,60,52,57,56,51,51,51,52,52,51,37,57,51,38,36,47,38,46,42,38,36,38, +38,38,48,38,37,52,38,38,40,38,41,39,39,41,39,39,41,39,39,41,39,41,42,41,41,42, +41,42,46,42,39,42,39,39,37,40,39,38,48,30,56,33,135,125,115,143,132,119,143,131, +120,111,96,85,42,73,75,70,118,119,76,122,123,47,74,75,47,74,75,76,122,123,70, +119,120,46,81,83,112,97,85,137,125,114,130,121,111,136,124,113,132,122,112,135, +123,113,139,128,117,111,97,85,57,100,103,93,158,159,94,151,152,51,80,81,47,74, +75,76,122,123,70,118,119,42,73,75,112,97,85,132,123,113,143,133,121,139,128,118, +137,126,115,140,129,119,134,123,112,111,97,85,42,73,75,73,122,123,92,148,150,57, +90,91,49,77,78,76,122,123,70,118,119,43,73,75,109,95,84,138,127,116,136,124,113, +137,126,115,142,130,119,139,128,118,143,133,121,110,95,84,42,73,75,70,118,119, +76,122,123,47,74,75,47,74,75,77,123,124,77,131,132,53,92,94,113,100,85,143,133, +122,136,124,113,135,123,113,141,130,120,133,123,113,137,125,114,112,99,86,53,92, +94,77,131,132,76,123,124,47,74,75,47,74,75,76,122,123,70,118,119,43,73,75,110, +96,84,133,123,113,115,109,98,132,132,132,96,97,97,133,123,112,143,133,121,110, +96,85,42,73,75,70,118,119,76,122,123,47,74,75,47,74,75,76,122,123,70,118,119,42, +73,75,113,100,85,136,124,113,136,124,113,140,129,119,137,126,115,141,131,120, +141,130,119,112,99,84,31,46,63,61,86,114,82,110,139,46,63,82,47,65,84,99,135, +162,71,101,129,35,52,70,109,96,84,139,128,117,138,127,116,137,126,115,142,132, +120,138,127,116,140,129,117,111,95,84,42,73,75,70,118,119,76,122,123,47,74,75, +47,74,75,76,122,123,70,118,119,42,73,75,112,99,84,139,128,117,138,127,116,137, +124,115,124,114,115,123,113,113,126,114,115,123,113,114,94,88,81,116,156,227, +156,184,231,115,154,224,115,154,224,115,154,224,115,154,224,115,154,224,115,154, +224,115,154,224,115,154,224,117,155,224,126,163,228,140,175,232,145,181,233,145, +182,234,167,196,236,146,184,237,121,113,105,146,184,237,167,196,236,145,181,234, +142,180,233,137,172,231,121,158,226,115,154,224,116,155,224,116,155,224,116,155, +224,116,155,224,115,154,224,115,154,224,115,154,224,115,154,224,124,162,227,167, +196,236,130,168,232,97,86,71,120,159,229,162,191,234,135,173,231,100,141,211,97, +137,209,97,137,209,97,137,209,97,137,209,97,137,209,97,137,209,97,137,209,97, +137,209,97,137,209,97,137,209,116,155,224,156,184,231,116,156,227,95,89,82,129, +118,119,127,115,116,127,117,118,133,122,123,69,55,66,74,54,71,122,120,124,54,36, +53,97,79,94,101,75,97,149,147,151,65,43,63,109,79,111,107,79,103,154,153,155,66, +39,64,31,29,44,189,188,105,30,29,50,45,60,46,44,41,44,42,42,48,41,61,63,39,37, +39,54,52,71,52,50,52,52,58,52,52,48,52,51,48,55,51,53,51,51,46,51,51,50,51,51, +47,57,51,55,51,51,47,61,168,166,168,168,166,168,51,53,51,51,48,55,51,58,54,51, +60,54,51,47,52,51,47,58,51,51,58,51,49,51,51,47,62,51,47,50,51,47,61,51,48,51, +51,47,51,52,47,52,38,56,37,49,51,59,52,47,51,52,51,56,52,47,55,37,36,38,47,46, +47,40,41,40,39,43,39,42,42,42,39,41,39,39,41,39,39,41,40,39,40,39,39,39,39,39, +40,43,30,26,33,139,129,118,139,129,119,148,134,125,112,100,85,42,74,76,73,118, +119,77,122,123,47,75,76,47,75,76,77,122,123,73,118,119,42,75,77,112,99,85,144, +133,120,139,128,118,137,126,115,143,131,120,130,120,111,144,134,122,112,99,85, +57,101,104,100,162,163,103,164,166,59,94,95,52,83,84,77,123,124,73,118,119,42, +74,76,112,99,85,138,125,116,138,127,116,141,132,121,133,123,113,132,122,112,136, +125,114,111,99,86,42,74,76,73,118,119,80,127,128,57,91,92,57,91,92,80,126,127, +73,118,119,42,74,76,112,99,85,140,129,119,140,129,119,137,126,115,147,136,123, +146,136,122,142,132,121,111,99,87,42,74,76,73,118,119,77,122,123,47,75,76,47,75, +76,77,122,123,74,119,120,46,82,84,112,101,89,149,138,125,141,131,120,137,126, +115,137,126,115,135,124,113,139,128,117,110,99,86,56,100,103,92,149,150,75,149, +88,47,75,76,47,75,76,77,122,123,73,118,119,42,74,76,112,99,88,134,124,114,114, +107,96,132,132,132,96,97,97,135,126,115,139,128,117,113,100,86,42,74,76,73,118, +119,77,122,123,47,75,76,47,75,76,77,122,123,73,118,119,42,74,76,113,100,86,140, +129,119,135,124,113,138,127,116,135,124,113,147,136,123,149,138,125,111,99,86, +31,46,66,68,93,122,85,113,143,46,63,84,46,63,84,86,114,143,74,101,129,42,62,87, +111,99,86,132,122,113,139,128,118,140,129,119,141,131,120,142,132,120,143,133, +121,110,99,86,42,74,76,73,118,119,77,122,123,47,75,76,47,75,76,77,122,123,73, +118,119,42,74,76,113,100,85,142,132,121,147,134,124,140,129,119,127,115,116,131, +120,120,126,114,115,130,119,120,97,90,83,116,156,227,156,184,231,115,154,224, +115,154,224,115,154,224,115,154,224,116,155,224,116,155,224,116,155,224,116,155, +224,116,155,224,117,155,224,126,163,228,140,175,232,145,181,233,167,196,236,146, +184,237,123,113,105,146,184,237,167,196,236,145,182,234,145,181,234,142,180,233, +137,172,231,100,140,210,96,136,209,96,137,209,97,137,209,96,136,208,116,155,224, +115,154,224,115,154,224,115,154,224,115,154,224,159,187,233,143,180,236,107,97, +86,119,157,227,157,186,232,135,173,231,113,158,217,101,142,211,97,137,209,97, +137,209,97,137,209,97,137,209,97,137,209,97,137,209,97,137,209,97,137,209,97, +137,209,116,155,224,156,184,231,116,156,227,95,89,82,129,118,119,128,117,118, +128,117,118,133,122,123,106,104,112,113,111,117,122,120,124,91,65,91,140,138, +145,145,143,149,149,147,151,107,77,107,153,152,160,152,150,154,154,154,159,66, +39,64,31,35,48,189,187,107,30,39,50,45,43,46,44,45,45,42,42,53,40,39,44,55,50, +55,53,58,68,52,62,52,52,49,52,52,48,52,51,47,51,51,47,51,51,49,56,51,59,69,51, +47,55,51,51,51,50,46,53,168,166,168,168,166,168,50,46,54,51,50,56,51,48,52,51, +46,51,51,47,52,51,51,52,51,50,55,51,48,51,51,49,54,51,49,51,51,56,51,51,48,51, +51,51,54,52,47,51,38,39,37,42,50,44,50,56,51,51,52,51,52,47,51,37,50,36,52,47, +56,51,48,55,50,51,51,40,43,40,40,41,40,38,42,39,39,41,39,39,41,39,39,49,40,38, +39,38,28,48,32,142,131,121,142,132,120,147,138,124,112,99,87,42,74,76,71,119, +120,77,123,124,47,75,76,47,75,76,77,123,124,69,144,77,42,74,76,110,96,85,141, +130,120,141,130,120,141,130,120,145,134,122,138,127,116,133,123,114,113,100,85, +57,101,104,97,164,165,105,169,170,63,101,102,59,94,96,85,137,138,71,120,121,42, +74,76,113,100,85,140,129,119,151,139,126,146,134,121,136,124,113,138,127,116, +136,125,115,112,99,86,42,74,76,71,119,120,77,123,124,49,78,79,57,91,92,93,150, +151,73,123,124,42,74,76,112,99,86,134,124,114,136,126,114,138,127,116,151,139, +126,145,133,121,143,133,121,114,101,86,42,74,76,71,119,120,77,123,124,47,75,76, +47,75,76,77,123,124,71,119,120,42,75,77,113,101,86,145,134,122,149,138,125,139, +128,118,143,133,121,137,126,114,146,133,121,112,100,87,57,101,104,80,159,105,81, +156,101,52,83,84,47,75,76,77,123,124,71,119,120,42,74,76,112,99,86,143,131,121, +116,109,99,132,132,132,96,97,97,136,126,116,140,129,119,112,99,86,42,74,76,71, +119,120,77,123,124,47,75,76,47,75,76,77,123,124,71,119,120,42,74,76,112,99,87, +147,135,122,141,130,121,136,124,113,136,126,114,141,130,120,146,134,122,112,100, +87,34,51,71,71,98,129,85,114,145,46,63,84,46,63,84,85,114,145,66,92,121,41,60, +85,112,97,85,141,130,120,139,128,118,141,130,120,146,133,121,146,136,123,140, +129,119,113,100,85,42,74,76,71,119,120,77,123,124,47,75,76,47,75,76,77,123,124, +71,119,120,42,74,76,113,100,85,140,129,119,140,128,119,147,134,124,127,117,118, +130,119,119,130,120,121,131,120,121,95,89,82,116,156,227,156,184,231,115,154, +224,115,154,224,115,154,224,116,155,224,96,136,208,97,137,209,97,137,209,97,137, +209,96,136,208,116,155,224,117,155,224,126,163,228,140,175,232,167,195,236,146, +184,237,123,113,105,146,184,237,167,196,236,145,182,234,145,182,234,145,181,234, +143,181,233,114,159,218,102,141,211,97,137,209,97,137,209,97,137,209,116,155, +224,115,154,224,115,154,224,115,154,224,116,155,225,150,177,224,102,146,214,119, +110,102,108,151,216,151,178,225,121,159,227,113,158,217,114,158,217,101,142,211, +97,137,209,97,137,209,97,137,209,97,137,209,97,137,209,97,137,209,97,137,209,97, +137,209,116,155,224,156,184,231,116,156,227,95,90,83,131,120,121,126,115,116, +129,118,119,132,121,122,41,24,40,44,27,43,83,58,81,57,39,56,60,37,59,62,39,60, +106,76,103,68,47,67,67,50,67,66,48,69,110,78,112,66,39,64,31,34,44,189,187,105, +30,39,46,45,44,46,44,46,43,41,54,58,57,51,56,54,50,54,53,61,56,52,49,52,52,49, +52,52,49,52,51,53,57,51,53,56,51,47,55,51,47,56,51,47,50,51,57,65,44,44,44,168, +166,168,168,166,168,44,45,44,51,47,61,51,50,57,51,55,51,51,47,65,51,56,52,51,49, +55,51,47,52,51,50,55,51,53,51,51,46,51,51,49,51,51,57,57,52,57,61,37,39,42,39, +38,39,46,43,53,51,48,58,51,55,51,52,59,62,51,57,51,51,55,59,51,48,51,51,48,51, +51,48,51,51,62,52,43,41,56,38,36,41,38,41,48,38,36,41,28,29,37,143,132,122,145, +133,121,148,139,125,112,99,87,42,74,76,69,144,77,77,123,124,47,75,76,47,75,76, +72,145,80,69,144,77,42,74,76,111,97,85,137,127,115,140,129,119,140,129,119,139, +128,118,142,131,121,141,130,120,113,100,87,57,101,104,97,164,165,106,169,171,64, +103,104,63,101,103,97,155,157,79,133,134,42,75,77,114,101,86,138,127,115,142, +132,122,141,130,120,141,130,119,141,130,121,140,129,119,112,99,86,42,74,76,71, +119,120,77,123,124,47,75,76,49,78,79,93,150,151,86,145,146,43,77,79,113,100,85, +142,131,121,136,126,114,142,132,121,151,139,126,144,133,121,147,138,124,113,100, +86,42,74,76,71,119,120,77,123,124,47,75,76,47,75,76,77,123,124,71,119,120,42,74, +76,113,101,86,145,132,121,146,137,123,141,130,120,138,127,116,138,127,116,150, +138,126,112,100,85,64,139,66,81,160,107,104,166,168,59,94,95,51,81,82,77,123, +124,69,144,77,42,74,76,112,99,86,142,131,121,116,109,99,132,132,132,96,97,97, +134,124,114,134,124,114,111,97,85,42,74,76,71,119,120,77,123,124,47,75,76,47,75, +76,77,123,124,71,119,120,42,74,76,112,102,89,145,133,121,149,137,125,138,127, +116,136,124,114,139,128,118,146,133,121,112,100,85,35,52,73,78,107,141,86,114, +145,46,63,84,46,63,84,86,114,145,72,100,132,34,51,71,114,101,86,150,139,126,145, +134,123,139,128,118,142,132,121,144,131,120,149,137,125,112,100,87,42,74,76,71, +119,120,77,123,124,47,75,76,47,75,76,77,123,124,71,119,120,42,74,76,113,99,86, +142,131,121,140,129,119,149,138,125,130,119,119,127,115,116,126,114,115,128,116, +117,95,89,82,116,156,227,156,184,231,115,154,224,115,154,224,115,154,224,116, +155,225,97,137,209,97,137,209,97,137,209,97,137,209,97,137,209,116,155,225,115, +154,224,117,155,224,126,163,228,165,193,235,145,183,236,120,113,105,146,184,237, +167,196,236,145,182,234,145,182,234,145,182,234,146,181,234,121,167,221,114,160, +218,102,141,211,97,137,209,96,137,209,116,155,224,115,154,224,115,154,224,116, +155,224,96,136,208,150,178,225,97,138,212,103,94,83,121,168,224,155,186,228,100, +141,210,101,141,211,114,158,217,114,158,217,101,142,211,97,137,209,97,137,209, +97,137,209,97,137,209,97,137,209,97,137,209,97,137,209,116,155,225,156,184,231, +116,156,227,97,90,83,131,120,121,132,121,122,128,117,118,129,118,119,71,52,69, +76,56,73,123,123,125,56,47,55,100,74,97,104,78,100,150,150,152,67,56,66,111,84, +108,110,80,120,155,152,156,66,39,64,31,30,58,189,187,105,30,34,43,45,45,55,44, +41,58,55,52,63,56,51,56,54,50,62,53,49,53,52,55,57,52,56,68,52,59,52,51,46,51, +51,47,57,51,47,51,51,58,52,51,46,51,51,65,61,41,38,40,168,166,168,168,166,168, +41,35,44,51,49,51,51,68,51,51,46,52,51,52,57,51,47,56,51,47,52,51,47,54,51,55, +62,51,47,52,51,62,59,51,47,57,51,65,51,51,46,51,52,50,59,52,46,59,44,42,44,50, +50,51,51,47,62,51,60,51,51,47,51,51,58,51,51,49,59,51,52,51,51,49,51,51,48,55, +43,41,47,52,55,66,52,47,51,52,47,51,45,53,47,142,131,121,146,137,123,149,137, +125,112,98,86,42,74,76,69,144,78,69,144,78,47,75,76,47,75,76,69,144,78,71,120, +121,42,75,76,111,97,85,137,125,114,138,127,116,133,123,113,142,131,121,137,126, +114,140,129,119,113,100,85,57,101,104,97,165,166,97,165,166,64,103,104,64,103, +104,96,163,164,90,153,154,47,84,86,111,99,86,141,130,120,138,127,116,143,133, +121,138,127,116,143,133,121,139,128,117,112,96,85,42,75,76,71,120,121,71,120, +121,47,75,76,47,75,76,74,125,126,86,146,147,51,90,92,112,99,84,136,123,114,141, +130,119,148,136,124,147,135,123,144,132,120,151,138,127,113,100,86,42,74,76,71, +120,121,71,120,121,47,75,76,47,75,76,71,120,121,71,120,121,42,74,76,112,99,87, +149,138,124,148,137,123,141,130,120,139,128,118,138,127,116,137,127,115,110,96, +85,57,101,104,81,160,107,81,160,107,63,101,102,58,92,94,71,146,82,69,144,78,42, +74,76,112,99,86,138,125,114,111,107,96,132,132,132,96,97,97,135,125,115,138,127, +115,112,97,85,42,75,76,71,120,121,71,120,121,47,75,76,47,75,76,71,120,121,71, +120,121,42,74,76,113,100,85,141,130,120,138,127,116,149,138,125,138,127,116,138, +127,116,141,130,120,111,97,85,42,62,85,79,108,142,79,108,142,47,63,85,47,63,85, +79,108,142,79,108,142,42,61,85,113,100,87,141,130,120,142,132,121,139,128,118, +140,129,119,147,134,124,141,130,120,113,98,86,42,74,76,71,120,121,71,120,121,47, +75,76,47,75,76,71,120,121,71,120,121,42,74,76,112,100,85,145,134,123,148,136, +124,140,128,119,125,114,116,127,115,116,126,114,115,127,116,117,94,88,81,116, +156,228,156,184,231,115,154,224,115,154,224,116,155,225,96,136,208,97,137,209, +97,137,209,97,137,209,97,137,209,97,137,209,96,136,208,116,155,224,115,154,224, +117,155,224,160,188,233,140,177,235,121,111,103,146,184,237,167,196,236,145,182, +234,145,182,234,145,182,234,146,182,234,121,169,222,122,168,221,114,160,218,102, +141,211,96,136,209,116,155,225,116,155,224,116,155,224,116,155,225,97,137,209, +150,178,225,97,138,212,97,88,75,103,145,214,155,186,228,114,158,217,100,141,211, +102,141,211,114,158,217,114,158,217,101,142,211,97,137,209,97,137,209,97,137, +209,97,137,209,97,137,209,97,137,209,97,137,209,150,178,224,117,157,228,95,89, +82,127,116,117,130,119,120,129,118,119,128,117,118,69,51,68,74,51,74,122,120, +124,54,42,53,97,73,96,101,71,101,149,147,151,65,51,63,109,81,105,107,75,112,154, +151,159,66,39,64,31,29,46,189,190,107,30,32,43,45,44,44,44,44,59,53,48,52,56,51, +56,54,55,54,53,55,57,52,48,56,52,49,58,52,60,55,51,58,57,51,47,51,51,48,54,51, +46,54,51,49,57,51,48,51,40,34,39,168,166,168,168,166,169,40,40,51,51,47,51,51, +58,51,51,47,51,51,49,58,51,53,52,51,48,54,51,50,60,51,47,52,51,47,58,51,47,55, +51,47,52,51,50,56,51,48,51,51,47,67,52,57,51,44,42,44,50,58,53,51,55,51,51,48, +51,51,52,51,51,48,51,51,51,64,51,59,55,51,57,54,51,48,52,44,50,55,51,46,51,51, +47,56,51,51,51,44,40,62,142,131,121,148,137,124,149,140,126,111,97,85,32,72,74, +37,71,73,58,132,46,38,73,75,39,73,75,59,133,46,38,72,73,34,72,74,111,98,83,141, +131,119,136,124,113,136,126,114,141,130,121,142,131,121,137,127,115,110,95,83, +48,100,103,52,99,100,50,97,100,52,100,103,52,100,103,50,97,100,50,96,99,41,93, +95,112,99,84,142,131,120,142,131,120,136,124,113,137,126,114,141,130,120,139, +128,117,111,98,83,34,72,74,38,71,73,38,71,73,38,73,74,38,73,74,37,71,73,38,74, +76,40,88,90,110,97,84,141,130,120,139,128,118,145,132,120,140,128,118,149,137, +125,152,139,128,111,98,83,32,71,73,36,71,72,37,71,73,38,73,74,37,73,74,35,71,72, +37,71,73,32,71,74,112,98,83,145,134,122,144,133,122,141,130,120,141,130,120,143, +133,122,142,132,122,111,98,83,45,99,101,50,97,100,62,138,64,49,99,101,49,96,99, +60,135,57,39,75,77,34,72,74,112,99,84,141,130,118,114,108,97,132,132,132,96,97, +97,138,128,116,140,129,119,110,97,84,34,72,74,38,72,73,38,72,73,40,74,75,40,74, +75,38,72,73,37,71,73,33,72,74,111,97,84,141,130,120,139,128,118,140,129,119,145, +134,122,142,133,122,141,130,120,110,97,84,33,58,84,37,58,82,36,58,82,38,59,84, +38,60,84,37,58,82,38,58,83,34,58,85,110,97,84,142,131,120,142,133,120,142,132, +121,145,134,123,141,130,120,142,131,121,111,98,85,34,72,74,37,71,73,35,70,72,37, +72,74,38,73,74,37,71,73,37,71,73,34,72,74,111,98,85,139,129,117,146,133,123,146, +133,123,128,117,118,129,118,119,129,119,120,131,120,121,98,91,84,96,138,211,156, +184,232,116,155,224,116,155,225,96,136,208,97,137,209,97,137,209,97,137,209,97, +137,209,97,137,209,97,137,209,97,137,209,116,155,225,116,155,224,116,155,224, +156,184,231,127,165,232,118,107,99,146,184,237,167,196,236,146,182,234,145,182, +234,145,182,234,146,182,234,123,171,222,122,169,222,122,169,221,116,161,218,102, +143,211,96,136,209,96,137,209,97,137,209,97,137,209,97,137,209,150,178,225,97, +139,212,97,89,75,97,138,212,152,180,226,114,158,217,114,158,217,100,141,211,102, +141,211,114,158,217,114,158,217,101,142,211,97,137,209,97,137,209,97,137,209,97, +137,209,97,137,209,97,137,209,150,178,225,97,138,212,98,91,85,130,119,120,131, +120,121,132,120,121,134,123,124,106,107,109,113,115,115,122,121,126,91,67,88, +140,141,142,145,147,147,149,148,153,107,80,103,153,151,155,152,151,156,154,151, +158,66,39,64,31,29,58,189,190,105,30,33,43,45,52,68,44,43,44,50,52,62,56,54,56, +54,50,72,53,49,61,52,48,54,52,48,52,52,48,52,51,47,51,51,47,51,51,46,51,51,63, +51,51,49,54,51,47,51,39,34,52,168,167,168,168,166,171,39,40,52,51,47,54,51,47, +51,51,47,56,51,47,52,51,47,52,51,47,52,51,47,52,51,53,51,51,51,52,51,51,58,51, +50,52,51,58,58,51,47,51,51,47,51,52,47,51,46,42,47,50,46,53,51,51,58,51,50,52, +51,52,54,51,59,58,51,47,51,51,47,52,51,47,51,51,52,51,44,42,55,51,56,51,51,49, +54,51,57,56,44,40,57,138,128,115,137,126,114,139,128,118,153,146,143,157,150, +144,152,144,139,152,144,139,150,143,140,150,144,140,142,135,131,149,144,139,150, +143,140,148,143,139,139,128,118,138,127,116,137,126,114,145,132,121,136,124,113, +133,124,113,141,134,129,142,137,131,147,141,137,152,145,140,152,145,140,151,143, +138,154,148,143,153,148,142,156,149,144,156,151,144,145,131,120,138,127,116,133, +123,113,135,123,112,136,124,113,136,126,114,147,142,137,146,140,135,151,147,141, +149,141,136,156,150,143,156,149,144,148,142,138,153,147,142,153,144,142,147,139, +134,132,122,112,138,127,116,143,133,122,138,127,116,142,132,122,141,130,120,161, +156,150,160,154,148,159,153,148,152,147,140,152,144,139,156,149,143,166,157,151, +147,140,136,161,153,149,160,154,148,138,128,115,138,127,116,142,133,122,143,133, +121,137,126,114,136,126,114,147,141,135,157,151,144,154,147,143,150,144,139,164, +156,150,158,152,145,153,146,141,156,150,143,147,141,136,149,143,140,134,123,113, +112,106,96,132,132,132,96,97,97,135,125,115,136,126,114,147,141,137,146,141,136, +150,144,140,147,140,135,140,134,129,144,137,132,143,137,132,152,145,140,151,144, +140,149,144,140,137,126,113,138,127,116,139,128,118,138,127,116,143,133,122,140, +129,119,149,143,139,151,147,140,151,144,140,154,148,142,156,149,144,148,141,135, +151,144,140,142,137,131,147,141,135,146,139,134,136,124,114,138,127,116,138,127, +116,142,133,122,138,127,116,140,129,119,147,140,135,148,139,134,154,148,143,164, +157,150,160,154,148,153,146,142,152,147,141,152,145,140,147,140,134,156,150,143, +136,126,113,138,127,116,135,124,114,123,114,114,130,119,119,124,113,114,127,116, +117,96,90,84,97,138,212,150,178,225,97,137,209,97,137,209,97,137,209,97,137,209, +97,137,209,97,137,209,97,137,209,97,137,209,97,137,209,97,137,209,97,137,209,97, +137,209,96,137,209,150,178,225,98,139,211,106,96,86,118,166,222,158,190,230,121, +171,222,147,182,234,146,182,234,122,171,222,123,171,222,123,171,222,122,171,222, +122,169,221,118,163,218,103,143,211,97,137,209,97,137,209,97,137,209,97,137,209, +150,178,225,97,139,212,96,89,75,97,138,212,150,178,225,102,142,211,114,158,217, +114,158,217,100,141,211,102,141,211,114,158,217,114,158,217,101,142,211,97,137, +209,97,137,209,84,119,183,84,119,183,97,137,209,150,178,225,97,139,212,95,89,82, +127,115,116,128,117,118,129,118,119,128,117,118,41,28,40,44,30,51,83,61,84,57, +41,56,60,42,59,62,43,70,106,78,108,68,49,67,67,53,66,66,42,64,110,78,106,66,39, +64,31,33,46,189,187,105,30,46,43,45,47,44,44,44,54,49,50,49,56,54,60,54,53,55, +53,49,56,52,48,64,52,50,52,52,60,57,51,53,51,51,47,51,51,63,51,51,46,51,51,52, +51,51,47,51,39,41,47,168,166,168,168,169,169,39,33,43,51,52,52,51,47,51,51,52, +51,51,48,54,51,52,52,51,55,62,51,47,52,51,47,64,51,52,52,51,51,56,51,47,61,51, +47,51,51,47,51,51,47,51,52,47,55,48,54,49,51,51,66,51,47,61,51,47,52,51,47,61, +51,47,52,51,50,57,51,48,55,51,47,51,51,46,51,44,61,63,51,48,51,51,48,51,51,61, +52,43,41,56,143,131,121,135,124,114,141,130,120,135,125,113,132,122,112,131,121, +111,141,128,118,133,121,111,129,119,109,135,124,114,135,124,113,136,124,113,128, +118,108,133,122,111,135,124,114,135,124,114,142,131,121,136,126,114,131,121,111, +131,120,109,131,121,110,131,120,110,130,120,110,133,123,112,131,121,111,137,126, +113,136,123,112,138,127,115,136,125,113,140,129,119,137,126,114,132,122,112,133, +123,113,132,121,110,135,124,114,136,124,113,127,118,108,137,126,113,135,124,113, +134,122,112,139,128,118,138,127,115,138,127,115,138,127,115,135,123,111,128,118, +108,135,124,114,136,126,114,137,126,114,136,126,114,139,128,118,139,127,117,144, +132,119,144,131,120,132,122,112,132,122,112,137,125,113,149,136,123,144,132,120, +139,128,118,137,126,115,140,129,118,139,128,118,139,128,118,137,126,114,137,126, +114,136,124,113,136,124,112,138,126,115,145,135,122,142,132,121,141,129,119,140, +128,117,141,130,118,138,126,115,135,123,113,132,122,112,131,121,111,113,107,97, +132,132,132,96,97,97,130,119,108,138,126,114,136,126,114,133,121,110,132,121, +111,135,124,114,127,117,108,136,126,114,138,127,116,141,129,120,140,129,119,138, +127,116,139,128,118,136,124,113,138,127,116,133,123,113,137,126,114,148,136,124, +139,128,118,138,126,115,139,128,118,140,129,119,136,123,112,138,127,116,131,121, +111,131,120,110,133,123,112,133,122,111,133,122,111,135,123,112,138,127,116,140, +129,119,140,129,120,137,126,113,137,126,113,141,130,119,138,126,115,139,127,117, +138,127,115,131,121,111,139,128,118,130,120,110,133,121,110,140,128,118,142,131, +121,135,124,114,139,128,116,122,111,112,127,115,116,124,114,115,124,113,114,95, +89,82,97,139,212,150,178,225,84,119,183,84,119,183,84,119,183,97,137,209,97,137, +209,97,137,209,97,137,209,97,137,209,97,137,209,97,137,209,97,137,209,97,137, +209,97,137,209,150,178,225,97,138,212,99,89,76,106,149,216,157,188,229,122,169, +221,121,171,222,123,171,222,123,171,222,123,171,222,107,150,195,107,150,195,106, +150,195,105,148,194,118,163,219,89,125,185,84,119,183,84,119,183,84,119,183,150, +178,225,97,139,212,96,88,74,97,139,212,150,178,225,97,137,209,102,142,211,114, +158,217,114,158,217,100,141,211,102,141,211,114,158,217,114,158,217,101,142,211, +97,137,209,84,119,183,84,119,183,97,137,209,150,178,225,97,139,212,95,89,82,125, +114,115,131,120,121,127,115,116,129,118,119,71,54,70,76,56,73,123,121,125,56,43, +60,100,77,99,104,77,100,150,148,152,67,52,72,111,82,108,110,80,106,155,152,160, +66,39,64,31,29,46,189,188,107,30,29,44,45,51,56,44,43,45,42,52,48,57,51,64,54, +50,55,53,65,54,52,48,63,52,48,52,52,50,52,51,47,57,51,50,58,51,47,57,51,47,51, +51,47,51,51,51,56,40,45,39,168,169,168,168,166,168,40,39,52,51,47,52,51,52,58, +51,47,52,51,49,52,51,47,62,51,47,56,51,52,52,51,47,61,51,47,51,51,47,52,51,48, +61,51,48,54,51,49,52,52,55,52,48,46,59,51,47,51,51,47,51,51,52,51,51,47,61,51, +47,54,51,47,58,51,47,52,51,55,59,51,52,56,51,47,52,45,42,50,51,54,51,51,49,51, +51,48,55,43,41,47,143,131,121,135,124,114,148,136,124,143,133,122,140,128,118, +133,123,113,132,122,112,137,127,115,133,123,113,132,122,112,133,122,112,136,124, +113,136,127,114,138,127,116,140,129,119,128,119,109,139,128,117,137,124,113,131, +121,111,139,128,117,132,122,112,133,123,113,136,124,114,133,123,113,131,121,111, +139,127,114,137,126,114,136,126,114,143,133,122,136,124,114,142,131,121,132,122, +112,132,122,112,139,128,117,135,124,114,136,124,113,133,123,113,138,127,114,136, +124,113,135,123,113,140,129,119,132,122,112,141,129,118,143,133,121,136,126,114, +141,130,120,142,131,121,141,130,121,148,137,124,145,131,121,145,132,121,138,127, +116,138,127,116,138,127,116,141,130,120,135,124,114,131,121,111,140,129,120,132, +122,113,145,133,120,150,138,126,140,129,119,135,124,114,138,127,116,140,129,119, +142,130,120,138,127,116,136,126,114,138,127,116,141,130,119,136,123,112,147,136, +123,140,129,119,145,134,122,139,128,118,138,127,116,145,133,121,139,128,117,115, +109,98,132,132,132,96,97,97,132,122,111,138,127,114,139,128,117,132,122,112,137, +124,114,137,125,115,130,120,110,133,123,113,137,126,114,141,130,120,129,119,109, +135,124,114,138,127,116,139,128,119,142,131,120,140,129,119,130,121,111,141,128, +119,138,127,116,145,133,121,137,126,114,137,126,114,145,133,121,141,130,120,135, +123,113,136,126,114,141,130,120,132,122,112,139,128,117,140,129,119,133,123,113, +140,129,119,135,124,114,141,130,119,140,131,120,138,127,116,138,127,116,139,128, +116,131,121,111,137,124,113,132,122,112,133,123,113,131,121,111,140,129,119,140, +128,119,137,126,114,139,128,116,121,111,112,132,121,122,124,114,115,131,119,120, +95,89,82,97,139,212,150,178,225,147,172,214,147,172,214,147,172,214,150,178,225, +150,178,225,150,178,225,147,172,214,147,172,214,150,178,225,150,178,225,150,178, +225,150,178,225,150,178,225,150,178,225,97,139,212,97,90,77,99,139,212,153,182, +226,157,188,229,159,190,230,158,191,231,159,191,231,159,191,231,153,183,219,153, +183,219,153,183,219,153,183,219,158,190,230,152,180,218,148,174,215,147,172,214, +147,172,214,150,178,225,97,139,212,96,88,74,97,139,212,150,178,225,150,178,225, +150,178,225,152,180,226,155,186,228,155,186,228,151,179,226,152,179,226,155,186, +228,155,186,228,151,180,226,147,172,214,147,172,214,150,178,225,150,178,225,97, +139,212,95,89,82,129,118,119,131,119,120,137,124,125,133,121,122,69,48,71,74,51, +71,122,122,126,54,34,53,97,70,100,101,70,97,149,149,153,65,41,63,109,80,105,107, +80,103,154,151,159,66,39,64,31,42,44,189,187,107,30,32,57,45,69,57,44,41,44,42, +55,63,57,67,57,54,50,54,53,49,59,52,48,59,52,54,52,52,48,52,51,47,51,51,48,50, +51,47,66,51,55,57,51,50,51,51,47,67,43,37,43,168,166,168,168,166,168,42,42,52, +51,47,54,51,49,51,51,59,55,51,47,51,51,48,52,51,47,60,51,47,58,51,47,51,51,47, +51,51,53,51,51,49,62,51,47,52,51,57,53,51,48,51,51,53,56,51,52,57,51,48,51,51, +47,51,51,47,50,51,50,51,51,59,52,51,49,58,51,50,52,51,47,58,51,47,56,48,49,51, +51,57,53,51,57,54,51,48,52,44,50,55,134,124,113,133,123,113,136,126,114,138,127, +116,141,129,120,137,126,114,132,122,112,126,114,105,130,120,110,126,115,106,129, +119,109,139,128,117,132,122,112,139,128,116,138,127,116,127,118,109,131,121,111, +128,119,109,129,119,109,130,120,110,129,119,109,130,120,110,135,123,113,126,114, +105,127,118,106,133,123,113,138,127,114,131,121,111,133,123,113,139,128,117,132, +122,112,128,119,109,129,119,109,130,120,110,131,121,111,135,124,114,131,121,111, +132,122,112,131,121,111,130,120,110,135,123,113,128,120,109,140,129,119,137,126, +114,133,122,112,133,123,113,138,127,116,138,127,116,138,127,116,137,126,114,130, +120,111,133,123,113,133,123,113,129,119,109,132,122,112,133,123,113,133,123,113, +139,128,118,136,126,114,141,130,120,141,130,120,138,127,116,136,124,113,135,123, +113,131,121,111,133,123,113,139,128,116,133,123,113,129,119,109,142,131,121,139, +128,118,138,127,116,140,129,119,141,130,120,142,131,121,135,124,114,131,121,112, +137,127,114,115,109,98,132,132,132,96,97,97,131,121,109,129,119,109,135,123,112, +132,122,112,132,122,112,126,114,105,129,119,109,130,120,110,138,127,116,137,126, +114,136,124,114,136,124,113,136,124,113,135,124,114,141,130,120,132,122,112,133, +123,113,132,122,112,132,122,112,135,124,114,137,126,114,136,126,114,139,128,118, +135,124,114,140,129,119,133,123,113,132,122,112,126,118,105,133,123,113,135,123, +113,136,124,113,136,124,114,131,121,111,138,127,116,137,126,114,136,124,113,138, +127,116,130,121,111,129,120,110,132,122,112,139,128,117,129,119,109,132,122,112, +135,124,114,132,122,112,131,121,111,140,129,119,120,110,111,124,113,114,122,111, +112,129,118,119,94,89,84,97,140,214,97,139,212,84,121,186,84,120,186,84,120,186, +97,138,212,97,139,212,97,139,212,84,121,186,84,121,186,97,139,212,97,139,212,97, +139,212,97,139,212,97,139,212,97,139,212,97,140,214,96,88,77,97,139,214,99,139, +212,106,149,216,119,166,222,123,171,224,123,173,225,124,173,225,124,173,225,108, +151,197,108,151,197,124,173,225,123,173,225,122,171,224,104,144,196,89,127,188, +97,138,212,97,139,212,97,140,214,95,88,77,97,140,214,97,139,212,97,139,212,97, +139,212,97,138,212,102,143,214,114,159,220,114,160,220,103,145,214,102,143,214, +114,159,220,114,160,220,88,126,188,84,120,186,97,139,212,97,139,212,97,140,214, +95,89,84,125,114,115,126,115,116,131,120,121,130,119,120,106,104,109,113,112, +115,122,120,124,91,72,88,140,138,142,145,144,147,149,147,151,107,86,104,153,151, +155,152,153,154,154,151,159,66,39,64,31,29,46,189,190,107,30,28,43,45,41,45,44, +41,59,42,52,54,57,51,62,54,50,57,53,57,53,52,50,60,52,59,56,52,48,57,51,51,70, +51,47,50,51,48,65,51,47,51,51,47,51,51,47,58,47,42,53,168,166,168,168,166,168, +46,41,47,51,49,51,51,47,51,51,47,59,51,47,51,51,60,51,51,51,52,51,47,52,51,47, +51,51,47,51,51,47,52,51,47,58,51,47,51,51,47,59,51,48,51,51,52,51,51,58,51,51, +47,51,51,52,51,51,49,67,51,58,65,51,47,51,51,51,56,51,55,58,51,47,54,51,53,51, +49,51,50,51,48,52,51,47,51,51,52,51,44,42,55,137,125,114,139,128,116,139,128, +119,136,126,114,136,126,114,145,134,122,141,130,120,139,127,115,137,125,113,129, +119,109,129,119,109,133,123,113,132,122,112,131,121,111,145,133,121,133,123,113, +133,123,113,132,122,112,133,123,113,129,119,109,132,122,112,133,123,113,140,129, +119,136,124,114,137,127,115,135,124,114,135,124,114,138,126,114,133,123,113,132, +122,112,136,124,114,132,122,112,130,120,110,136,124,115,137,124,114,133,123,113, +131,120,109,136,124,115,138,127,115,130,120,110,139,128,117,132,122,112,142,131, +121,131,121,111,126,114,105,139,128,117,131,121,111,135,123,113,141,130,120,138, +127,116,141,130,120,140,129,119,135,123,113,133,123,113,139,128,116,140,129,119, +140,129,119,140,129,119,140,129,119,138,127,116,147,136,123,145,133,120,140,129, +120,140,129,119,137,124,114,131,121,111,136,124,114,133,122,112,141,130,120,136, +126,114,137,126,114,146,134,122,139,128,118,137,126,114,139,128,119,137,126,114, +140,129,120,150,138,126,116,108,99,132,132,132,96,97,97,136,126,116,136,127,114, +135,124,114,140,129,119,133,122,112,139,128,117,139,127,116,138,127,116,140,129, +119,148,136,124,141,131,119,140,129,119,141,130,120,136,124,113,141,131,121,138, +127,116,136,124,113,140,129,119,138,127,116,138,127,116,145,132,121,138,127,116, +145,132,121,139,128,118,131,121,111,141,130,120,141,130,120,131,121,111,145,133, +121,145,132,121,145,132,121,145,133,121,130,120,110,139,128,118,136,124,114,139, +128,119,140,129,118,145,132,121,146,134,122,145,133,121,146,134,122,131,121,111, +132,122,112,138,127,116,138,127,116,135,124,114,139,127,116,126,115,115,126,115, +116,123,112,113,127,116,117,114,100,101,95,90,85,95,90,84,96,90,84,98,91,85,99, +92,86,98,91,84,95,90,83,98,91,85,96,90,83,95,90,83,96,91,85,96,90,84,96,90,83, +96,90,83,98,91,85,96,90,83,96,90,85,106,94,92,96,90,85,95,89,82,96,90,83,94,87, +81,95,88,82,97,88,83,94,87,82,97,88,83,97,88,83,95,87,82,94,86,81,95,88,82,94, +87,81,95,90,84,96,89,83,95,89,82,96,90,83,95,90,85,114,100,99,96,90,85,95,89,82, +96,90,84,95,89,83,95,89,83,95,90,84,95,89,83,95,89,83,93,87,81,96,90,83,98,90, +84,96,89,83,95,90,83,95,89,82,95,89,82,98,91,85,98,91,86,108,95,94,122,111,112, +131,120,121,131,121,122,130,119,120,41,25,40,44,27,43,83,61,80,57,40,56,60,39, +59,62,39,60,106,78,102,68,48,67,67,55,66,66,68,64,110,81,108,66,39,64,31,44,58, +189,187,107,30,31,43,45,43,61,44,41,55,47,45,48,56,51,56,54,50,54,53,50,61,52, +52,53,52,49,53,52,53,52,51,59,55,51,52,55,51,60,51,51,52,51,51,47,51,51,47,52, +51,46,60,168,166,168,168,166,168,50,50,52,51,47,51,51,53,51,51,47,60,51,55,51, +51,48,59,51,53,58,51,47,58,51,47,51,51,53,61,51,56,51,51,47,54,51,47,51,51,48, +55,51,52,51,51,58,51,51,51,51,51,47,51,51,47,56,51,50,56,51,47,50,51,47,54,51, +50,55,51,50,51,51,47,51,51,51,51,50,54,50,51,49,55,51,47,51,51,46,51,44,61,63, +133,123,113,137,126,114,141,130,119,137,125,114,141,130,121,137,127,115,137,125, +115,139,128,117,134,124,114,129,120,110,130,121,110,130,120,110,128,119,110,130, +120,110,139,128,117,135,123,113,146,134,122,137,126,114,127,115,106,126,115,105, +134,124,114,131,121,111,137,125,114,139,127,115,133,122,112,138,127,115,137,125, +114,138,127,115,146,134,122,127,117,109,133,123,113,136,124,114,132,122,112,138, +127,114,132,122,112,131,121,111,134,124,114,134,123,113,131,121,111,130,120,110, +133,123,113,132,122,112,138,127,115,134,124,114,131,121,111,137,125,114,132,122, +112,140,129,119,140,129,119,139,128,118,136,124,113,140,129,119,137,125,114,132, +122,112,139,128,117,140,129,119,132,122,112,142,131,121,142,131,121,140,129,119, +143,133,121,138,127,116,138,127,116,133,123,113,135,124,114,125,114,104,131,121, +111,131,122,112,141,130,120,146,133,122,138,127,115,142,131,122,138,127,115,143, +132,122,138,127,115,137,127,115,140,129,119,140,129,119,117,111,100,132,132,132, +96,97,97,139,127,116,137,126,114,142,131,120,142,130,120,146,134,122,140,129, +119,140,129,119,147,137,124,150,138,126,139,128,117,137,124,115,147,135,123,137, +126,114,136,126,114,146,134,122,145,134,122,139,128,118,141,131,120,135,124,115, +141,130,120,147,134,122,145,133,121,145,133,121,147,135,122,146,134,122,139,128, +117,144,134,123,137,125,114,142,131,121,141,130,121,139,128,118,148,137,124,140, +129,119,148,137,124,140,129,119,137,127,115,143,133,121,145,134,122,145,134,122, +142,131,121,139,128,117,140,129,119,146,134,122,145,133,121,146,136,123,142,133, +120,143,131,122,127,115,115,128,118,117,119,109,110,120,110,111,128,116,117,131, +119,120,124,113,113,128,116,117,129,118,119,133,121,122,137,124,125,137,125,126, +128,116,117,137,125,126,129,118,119,125,115,116,124,114,115,131,120,121,135,122, +123,133,122,123,131,120,121,130,119,120,128,116,117,130,119,120,128,116,117,122, +111,112,121,111,112,129,118,119,132,121,122,131,120,121,135,123,124,132,121,122, +130,119,120,128,116,117,125,114,115,123,112,113,124,113,113,133,120,121,131,120, +121,132,120,121,127,116,117,131,120,121,127,116,117,122,112,113,124,114,115,122, +111,112,120,110,111,121,110,111,129,116,117,132,120,121,127,116,117,127,115,116, +130,118,119,121,111,112,128,116,117,123,112,113,122,112,113,127,115,116,129,118, +119,129,119,120,126,115,116,127,115,116,127,115,116,124,114,115,71,54,73,76,54, +74,123,121,127,56,37,60,100,77,102,104,75,102,150,148,154,67,45,72,111,83,108, +110,79,106,155,152,157,66,39,64,31,31,45,189,190,105,30,28,43,45,43,61,44,41,44, +47,56,47,56,51,56,54,50,55,53,54,64,52,48,52,52,54,66,52,47,61,51,47,51,51,47, +57,51,59,51,51,50,56,51,49,51,51,47,52,51,47,57,168,166,168,168,166,168,51,47, +51,51,47,54,51,47,57,51,47,51,51,47,53,51,47,51,51,47,51,51,52,51,51,48,52,51, +48,56,51,56,52,51,47,52,51,47,52,51,58,52,51,47,56,51,48,57,51,47,57,51,47,51, +51,47,58,51,47,51,51,47,55,51,46,52,51,68,52,51,47,61,51,49,51,51,54,55,50,54, +50,51,48,60,51,49,51,51,52,57,45,41,48,135,124,113,140,129,119,140,129,119,109, +97,85,112,99,86,112,99,86,111,97,85,111,97,85,111,97,85,111,97,85,111,97,86,111, +97,85,109,96,84,134,124,114,131,121,111,127,119,109,141,130,120,139,128,117,130, +120,110,108,95,83,112,97,85,111,97,85,111,97,85,111,97,85,112,97,85,112,99,86, +111,97,85,110,97,85,110,98,84,137,127,115,131,121,111,131,121,111,133,123,113, +139,128,117,128,118,109,110,95,84,112,99,86,112,99,86,112,97,85,112,99,87,111, +97,85,111,97,85,108,94,82,104,90,79,109,95,84,132,122,112,132,122,112,140,129, +119,138,127,116,138,127,116,138,127,115,111,98,84,112,97,85,110,96,84,112,99,86, +112,99,84,111,97,85,113,100,85,113,100,85,112,100,85,109,97,85,141,130,119,138, +127,116,133,123,113,137,126,114,136,123,113,131,121,111,109,95,84,111,97,85,111, +99,86,112,99,86,113,100,87,113,100,87,112,99,86,112,99,86,113,99,86,108,95,84, +134,124,114,117,110,100,132,132,132,96,97,97,131,122,110,140,129,119,110,98,83, +111,98,86,111,99,86,112,96,85,110,96,85,112,100,87,112,99,87,113,100,87,112,100, +85,110,98,84,133,124,114,128,118,108,141,130,121,137,126,113,140,129,119,142, +131,121,109,97,85,111,98,86,114,101,86,112,100,87,112,100,87,112,100,85,112,98, +86,112,99,86,111,99,86,108,95,84,133,124,114,136,126,114,131,122,112,146,134, +122,137,126,114,133,123,114,111,98,84,110,96,85,114,101,86,111,98,86,111,98,86, +112,99,86,112,99,86,113,100,85,111,98,86,111,99,85,139,128,117,140,129,119,140, +129,118,118,108,109,127,115,116,124,114,115,120,111,112,123,112,113,118,108,109, +127,116,117,133,122,123,131,120,121,126,114,115,131,120,121,129,118,119,121,111, +112,131,120,121,128,116,117,122,113,114,125,115,116,130,119,120,127,115,116,129, +118,119,131,120,121,127,114,116,123,113,114,127,116,117,129,118,119,125,115,116, +114,104,105,131,120,121,133,121,122,128,118,119,130,119,120,127,115,116,130,119, +120,128,116,117,124,113,114,120,109,110,129,118,119,130,120,121,127,116,117,124, +113,114,127,115,116,121,111,112,129,118,119,125,114,115,127,115,116,122,111,112, +124,114,115,118,106,107,120,111,112,123,112,113,127,116,117,125,114,115,123,112, +113,130,119,120,129,118,119,125,114,115,127,116,117,127,115,116,129,118,119,130, +119,120,126,115,116,129,118,119,132,120,121,131,120,121,69,52,66,74,51,71,122, +120,124,54,35,59,97,74,94,101,70,97,149,147,151,65,42,70,109,91,105,107,75,107, +154,151,159,66,39,64,31,29,45,189,187,107,30,28,43,45,44,45,44,41,44,50,51,51, +55,61,55,54,50,54,53,53,57,52,48,63,52,48,51,52,53,59,51,48,51,51,49,54,51,47, +51,51,47,51,51,48,59,51,47,52,51,47,62,168,166,168,168,166,168,51,53,51,51,49, +51,51,47,51,51,47,53,51,47,51,51,47,51,51,47,51,51,47,52,51,52,59,51,49,56,51, +51,57,51,47,61,51,47,56,51,47,63,50,53,53,43,39,51,40,34,39,39,34,39,39,37,39, +39,34,43,39,40,53,39,33,40,42,49,41,50,48,49,51,52,54,51,47,52,51,55,52,50,49, +49,51,52,54,51,47,52,45,42,58,132,122,111,136,126,114,137,125,114,111,96,85,39, +75,77,42,75,76,43,75,76,44,76,78,44,76,78,43,75,76,43,75,76,40,75,77,112,97,85, +132,122,112,129,119,109,131,121,111,133,123,113,132,122,112,132,122,112,111,96, +84,39,62,87,42,62,85,42,62,85,43,63,87,43,63,87,43,63,87,49,72,100,50,80,113, +113,100,85,139,128,117,133,123,113,137,124,114,135,123,113,139,128,117,138,127, +115,113,100,88,42,82,85,39,71,71,33,60,60,37,67,69,42,73,75,33,59,60,32,57,58, +31,62,64,112,99,86,137,127,115,131,121,111,135,124,114,138,127,116,138,127,116, +141,130,121,111,99,86,52,101,104,46,80,81,43,76,77,43,76,78,43,76,78,42,74,76, +42,74,76,39,75,77,112,99,86,136,124,114,135,124,114,139,126,116,142,131,120,136, +126,114,134,123,113,112,99,86,39,62,87,42,62,85,42,63,86,50,74,102,56,82,114,57, +85,116,57,85,117,53,85,119,113,99,86,143,132,122,125,116,106,131,132,132,96,97, +97,131,122,110,144,134,123,112,99,87,39,75,77,42,74,76,43,75,76,43,76,78,43,76, +78,42,74,76,42,74,76,39,75,77,113,101,86,147,135,123,139,128,118,148,137,124, +145,132,120,145,134,121,149,137,125,112,98,86,39,75,77,42,74,76,42,74,76,43,76, +78,43,76,78,42,74,76,42,74,76,39,75,77,113,100,85,139,128,117,135,124,114,131, +121,111,136,124,114,137,126,114,134,124,114,112,99,86,39,75,77,45,79,81,56,100, +103,46,81,83,43,76,78,42,74,76,42,74,76,39,75,77,114,101,86,139,129,117,141,130, +119,142,131,121,85,85,85,85,85,85,87,87,87,86,86,86,86,86,86,86,86,86,92,92,92, +86,86,86,97,97,97,86,86,86,87,87,87,87,87,87,89,89,89,91,91,91,94,94,94,87,87, +87,83,83,83,94,94,94,92,92,92,89,89,89,86,86,86,89,89,89,92,92,92,91,91,91,89, +89,89,89,89,89,80,80,80,87,87,87,84,84,84,85,85,85,91,91,91,91,91,91,92,92,92, +87,87,87,87,87,87,81,81,81,84,84,84,83,83,83,86,86,86,94,94,94,87,87,87,86,86, +86,91,91,91,89,89,89,83,83,83,85,85,85,88,88,88,85,85,85,84,84,84,89,89,89,88, +88,88,94,94,94,89,89,89,89,89,89,90,90,90,87,87,87,90,90,90,89,89,89,89,89,89, +100,100,100,96,96,96,98,98,98,93,93,93,95,95,95,106,104,114,113,111,119,122,120, +124,91,67,88,140,138,147,145,143,150,149,147,151,107,80,103,153,151,155,152,152, +154,154,152,156,66,39,64,31,29,58,189,187,107,30,28,61,45,58,45,44,43,46,53,48, +51,55,51,55,54,50,65,53,57,54,52,48,53,52,49,52,52,63,52,51,52,51,51,54,51,51, +58,51,51,47,57,51,47,51,51,47,51,51,51,51,168,166,168,168,166,168,51,48,51,51, +47,51,51,55,58,51,47,52,52,48,52,51,47,51,51,47,51,50,46,51,51,47,51,51,54,57, +51,47,52,51,47,52,51,52,56,51,47,54,44,39,50,157,157,157,167,167,172,168,168, +168,168,166,171,168,166,168,168,169,168,168,170,168,170,167,171,42,46,49,51,47, +51,51,47,52,50,53,53,44,48,49,51,47,51,51,47,52,45,41,59,134,124,114,139,128, +117,140,129,120,112,99,84,42,75,76,71,120,121,71,120,121,47,75,76,47,75,76,71, +120,121,71,120,121,43,75,76,110,96,84,132,122,112,131,121,111,128,118,109,130, +120,110,134,122,112,132,122,112,110,96,84,42,62,85,79,108,142,79,108,142,47,63, +85,47,63,85,79,108,142,80,109,143,48,71,98,112,99,86,137,125,115,133,123,113, +133,123,113,131,121,111,132,122,112,136,125,115,112,99,86,47,85,87,71,122,123, +66,114,116,46,74,75,44,71,72,62,106,107,55,94,95,32,58,59,108,95,83,139,128,117, +132,122,112,135,124,114,140,129,119,139,128,119,136,125,115,112,99,86,45,79,81, +96,162,164,80,136,137,48,76,77,47,75,76,71,120,121,71,120,121,42,75,76,112,97, +85,134,124,114,128,119,109,131,121,111,138,127,114,137,124,113,131,121,111,112, +97,85,42,62,85,79,108,142,79,108,142,48,64,86,55,74,100,104,142,176,108,148,182, +57,85,117,111,97,85,137,125,114,128,119,107,131,132,132,97,97,98,124,116,105, +143,132,122,113,100,85,42,74,76,71,120,121,71,120,121,47,75,76,47,75,76,71,120, +121,71,120,121,42,74,76,112,100,87,143,133,123,138,127,116,142,132,121,141,130, +119,135,126,114,149,138,125,112,99,85,42,74,76,71,120,121,71,120,121,47,75,76, +47,75,76,71,120,121,71,120,121,42,74,76,112,99,86,136,125,115,139,128,117,132, +122,112,140,129,119,135,124,114,134,124,114,112,97,85,42,75,76,71,120,121,76, +128,130,63,101,103,50,80,81,71,120,121,71,120,121,42,74,76,112,99,87,147,137, +124,139,128,118,138,127,114,80,80,80,81,81,81,81,81,81,81,81,81,81,81,81,81,81, +81,81,81,81,81,81,81,80,80,80,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, +81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, +81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, +81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, +81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81, +81,81,81,81,81,81,81,81,81,81,81,81,82,82,82,82,82,82,82,82,82,82,82,82,82,82, +82,81,81,81,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,41,36,39,44,30,51,83, +58,82,31,25,43,39,36,41,32,31,53,67,57,84,68,45,67,67,46,66,66,39,65,110,78,106, +66,39,64,31,33,44,189,188,106,30,28,54,45,41,45,44,53,46,55,50,54,55,60,67,54, +50,54,53,49,64,52,57,53,52,48,52,52,47,52,51,49,58,51,57,51,51,48,51,51,46,51, +51,67,51,51,47,51,51,47,51,168,166,168,168,166,168,51,53,59,51,48,52,51,47,52, +51,47,51,51,47,51,51,47,51,53,49,53,49,45,49,51,47,51,51,51,58,51,47,52,51,47, +51,51,47,58,51,47,59,45,41,52,132,130,136,162,160,164,168,167,171,168,166,168, +168,166,168,168,166,170,168,170,168,170,168,171,42,36,53,51,47,51,51,52,52,48, +49,50,49,52,51,51,48,51,51,52,52,45,41,48,135,124,114,133,123,113,139,128,117, +112,96,85,42,75,77,71,119,120,77,123,124,47,75,76,47,75,76,77,123,124,71,119, +120,42,74,76,111,97,85,133,123,113,131,121,111,127,118,106,132,123,113,129,119, +109,133,123,113,111,97,85,42,61,85,78,107,141,86,114,145,46,63,84,46,63,84,86, +114,145,78,107,141,42,62,86,112,99,86,133,123,113,135,124,114,135,123,112,131, +121,111,138,127,115,132,122,112,111,97,85,47,86,88,77,133,133,83,136,136,54,87, +88,48,76,77,68,110,111,56,95,96,32,58,59,111,97,85,139,128,117,133,123,113,138, +126,114,129,119,110,137,126,114,137,125,114,112,99,86,42,74,76,76,127,128,100, +160,161,53,84,86,48,76,77,77,123,124,71,119,120,42,74,76,112,99,87,131,121,111, +130,120,110,127,118,106,128,119,109,129,118,107,132,122,112,111,97,85,42,61,85, +78,107,141,86,114,145,46,63,84,47,64,85,102,135,164,102,141,175,57,83,116,111, +97,85,140,129,118,125,116,106,131,132,132,97,97,98,126,118,107,136,124,114,112, +99,86,42,75,77,71,119,120,77,123,124,47,75,76,47,75,76,77,123,124,71,119,120,42, +74,76,114,101,86,140,129,119,135,124,114,141,130,121,138,127,116,136,126,114, +140,129,119,113,100,85,42,74,76,71,119,120,77,123,124,47,75,76,47,75,76,77,123, +124,71,119,120,42,74,76,111,97,85,137,127,115,136,124,113,136,126,114,141,130, +119,136,126,114,138,127,115,112,99,86,42,74,76,71,119,120,78,124,125,53,85,86, +61,97,99,81,130,131,71,119,120,42,74,76,114,101,86,143,133,122,142,133,120,142, +132,121,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69, +69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69, +69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69, +69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69, +69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69, +69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69, +69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69,69, +69,69,69,69,69,69,69,69,69,69,69,69,71,55,71,76,54,77,123,123,125,30,23,43,64, +59,78,64,56,85,113,113,113,67,42,66,111,82,108,110,87,111,155,152,160,66,39,64, +31,35,44,189,189,113,30,28,42,45,47,45,44,46,44,55,50,61,55,51,55,54,52,60,53, +49,59,52,48,61,52,48,56,52,46,52,51,66,54,51,47,51,51,48,59,51,51,58,51,49,59, +51,47,58,51,63,51,168,166,168,168,166,168,51,57,57,51,52,51,51,47,52,51,47,51, +51,47,51,51,47,51,51,47,51,51,46,50,51,47,51,51,50,56,51,47,51,51,49,51,51,52, +51,51,50,53,50,54,58,45,48,53,41,37,53,40,42,40,39,35,40,39,35,49,39,35,47,39, +46,50,42,40,41,50,46,49,51,47,51,51,47,51,46,52,55,51,54,51,51,47,51,51,47,51, +45,52,55,122,113,103,131,121,111,137,127,115,113,100,85,48,86,88,74,124,125,77, +123,124,47,75,76,47,75,76,77,123,124,71,119,120,42,74,76,111,97,85,133,123,113, +136,124,113,127,115,105,137,125,114,127,115,106,124,113,105,110,96,84,42,61,85, +78,107,141,85,114,145,46,63,84,46,63,84,85,114,145,78,107,141,42,61,85,112,99, +86,137,127,115,136,126,114,141,130,120,131,121,111,132,122,112,131,121,111,110, +96,84,47,86,88,77,133,133,100,161,161,61,97,99,55,88,89,72,115,116,56,95,96,31, +57,59,109,94,82,132,123,113,140,129,119,139,128,119,137,126,114,141,130,120,132, +123,113,112,97,85,42,74,76,71,119,120,81,130,131,61,97,99,53,84,86,78,125,126, +71,119,120,42,74,76,111,97,85,132,122,112,127,115,106,123,113,103,128,118,109, +127,115,106,133,123,113,111,97,85,42,62,85,79,108,142,86,115,146,47,63,85,47,63, +85,87,117,147,94,128,162,55,81,112,113,100,85,136,124,113,121,113,103,131,132, +132,97,97,98,126,118,107,133,123,113,113,99,86,48,85,88,72,121,122,77,123,124, +47,75,76,47,75,76,77,123,124,71,119,120,42,74,76,114,101,86,141,130,120,140,129, +119,146,134,122,136,124,114,135,124,114,143,132,122,112,99,84,42,74,76,71,119, +120,77,123,124,47,75,76,47,75,76,77,123,124,71,119,120,42,74,76,113,100,85,137, +125,114,138,127,114,135,124,114,142,131,120,133,123,113,137,125,114,111,97,85, +42,74,76,71,119,120,77,123,124,48,76,77,53,84,86,100,160,161,75,126,127,42,74, +76,112,99,86,138,127,115,138,127,114,133,121,110,126,14,43,134,16,46,144,18,50, +153,20,54,161,23,58,166,23,59,169,23,60,171,24,61,172,24,62,173,26,63,173,26,63, +172,27,64,172,27,64,172,27,64,172,27,64,173,26,63,173,26,63,173,24,62,173,24,62, +173,24,62,173,24,62,173,24,62,173,26,63,173,26,63,173,26,63,173,26,63,173,26,63, +172,27,64,172,27,64,172,27,64,173,26,63,173,26,63,173,24,62,173,24,62,173,24,62, +173,24,62,173,24,62,173,24,62,173,26,63,173,26,63,172,27,64,172,27,64,171,27,64, +171,27,63,170,26,63,167,26,62,165,24,60,159,23,57,150,19,53,138,17,48,128,15,44, +125,53,67,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,69, +51,69,74,55,71,122,120,129,31,25,39,62,54,78,66,56,76,108,111,118,65,46,63,109, +79,105,107,75,105,154,153,155,66,39,64,31,33,49,188,189,114,30,28,42,45,41,47, +44,55,53,56,54,70,55,51,71,54,50,57,53,49,54,52,48,53,52,48,55,52,58,52,51,47, +58,51,54,56,51,56,52,51,58,52,51,48,52,51,47,57,51,52,59,168,166,168,168,166, +168,51,55,66,51,48,51,51,57,59,51,50,51,51,48,54,51,48,52,51,47,51,51,49,51,51, +47,51,51,47,51,51,52,51,51,47,51,51,47,60,51,51,51,51,47,62,51,47,52,51,48,52, +51,48,51,51,48,51,51,58,52,51,60,52,51,49,51,51,50,52,51,51,51,51,47,56,51,47, +51,48,56,51,51,54,51,51,47,56,51,47,51,45,56,52,138,125,115,133,123,113,134,124, +114,112,97,85,55,98,100,89,146,147,84,134,135,47,76,77,47,75,76,77,123,124,73, +119,120,42,74,76,111,96,84,133,122,112,131,121,111,124,114,104,127,115,106,127, +115,106,124,114,104,107,95,82,42,61,85,79,109,141,85,114,145,46,63,84,46,63,84, +85,114,145,79,109,141,42,61,85,111,96,84,129,119,110,133,123,113,139,128,117, +132,122,112,132,122,112,134,124,114,111,97,85,45,82,84,81,136,135,106,169,171, +64,102,104,61,99,100,90,145,146,64,104,105,32,58,59,108,93,82,138,127,115,137, +126,114,139,128,119,139,128,119,138,127,116,140,129,119,112,99,86,42,74,76,73, +119,120,77,123,124,50,79,80,61,97,99,87,139,140,74,121,122,42,74,76,112,99,85, +127,115,106,126,115,105,131,121,111,129,120,109,129,121,109,132,122,112,111,97, +85,43,63,86,45,61,82,45,61,82,48,64,86,48,64,86,45,61,82,46,62,84,51,75,103,112, +97,85,134,123,112,123,114,103,131,132,132,97,97,98,123,114,104,133,123,113,112, +99,87,54,96,98,84,138,139,78,125,126,47,75,76,47,75,76,77,123,124,73,119,120,42, +74,76,113,100,85,140,129,119,136,126,114,140,129,120,145,133,121,139,128,118, +137,127,115,112,97,85,42,74,76,73,119,120,77,123,124,47,75,76,47,75,76,77,123, +124,73,119,120,42,74,76,112,97,85,132,122,112,132,122,112,130,121,110,137,124, +113,131,121,111,132,122,112,111,97,85,42,74,76,73,119,120,77,123,124,47,75,76, +48,76,77,87,139,140,95,155,156,44,77,79,113,100,85,139,128,117,140,129,119,135, +122,111,125,14,42,107,9,35,169,152,40,140,98,62,165,49,76,166,24,60,160,22,57, +154,26,57,138,15,48,140,18,49,142,16,49,154,26,57,152,22,55,162,25,59,161,25,59, +160,26,58,159,22,57,159,21,57,173,24,62,137,14,47,147,16,51,158,21,56,160,22,58, +159,22,57,159,23,57,159,23,57,165,25,60,169,29,63,175,40,71,175,45,74,176,48,78, +178,55,83,178,54,82,178,54,82,149,19,53,147,16,51,147,16,51,147,18,51,148,19,52, +149,21,53,160,26,58,160,26,58,160,25,59,160,28,58,158,27,58,156,24,57,168,53,79, +145,103,64,136,95,59,163,146,37,127,15,43,124,52,67,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,106,106,109,113,111,119,122,123,124,58,47, +70,102,103,105,106,107,113,112,113,113,107,77,103,153,151,158,152,150,156,154, +151,160,66,39,64,31,30,43,188,188,114,30,31,42,45,44,45,44,42,56,57,51,56,55,57, +55,54,50,55,53,52,60,52,61,52,52,53,52,52,48,65,51,54,50,51,57,58,51,50,50,51, +48,60,51,58,52,51,48,51,50,45,61,168,166,168,168,166,168,50,46,54,51,55,52,51, +52,51,51,48,52,51,46,64,51,47,50,51,48,62,51,47,64,51,47,55,51,55,57,51,47,58, +51,55,51,51,47,51,51,52,51,51,47,51,51,47,58,51,58,51,51,56,59,51,48,60,51,46, +52,51,51,52,51,47,59,51,47,51,51,53,51,51,49,51,51,47,64,49,51,51,51,53,51,51, +49,51,51,47,64,45,41,50,132,122,112,128,118,109,140,129,117,112,97,85,57,101, +104,96,161,162,98,156,158,53,85,86,48,76,77,77,123,124,71,119,120,42,74,76,111, +96,85,121,112,103,123,113,104,116,108,96,127,114,105,126,115,105,123,113,104, +109,95,83,42,61,85,78,107,141,85,114,145,46,63,84,46,63,84,85,114,145,78,107, +141,42,61,85,111,97,85,123,114,105,129,119,109,129,120,109,128,119,109,130,120, +110,131,121,111,111,97,85,46,83,85,84,144,144,106,169,171,64,103,104,64,102,104, +102,163,165,75,128,129,32,59,61,112,97,85,139,128,117,138,127,116,135,123,112, +135,123,112,135,124,114,137,125,115,114,101,86,42,74,76,71,119,120,77,123,124, +47,75,76,50,79,80,100,160,161,80,134,135,43,76,78,110,96,85,122,112,103,132,122, +112,127,115,105,127,118,106,127,115,106,128,116,107,111,97,85,42,62,85,79,108, +142,86,115,146,47,63,85,47,63,85,86,115,146,79,108,142,43,64,88,111,97,85,139, +128,116,121,113,102,131,132,132,97,97,98,120,112,102,129,119,110,112,97,85,57, +101,103,92,154,156,89,142,143,47,76,77,47,75,76,77,123,124,71,119,120,42,74,76, +112,99,86,137,127,115,135,124,114,135,124,114,135,123,113,140,129,119,132,123, +113,111,97,85,42,74,76,71,119,120,77,123,124,47,75,76,47,75,76,77,123,124,71, +119,120,42,74,76,111,97,85,140,129,117,136,123,112,123,113,103,129,119,109,130, +120,110,133,123,113,111,97,85,42,74,76,71,119,120,77,123,124,47,75,76,47,75,76, +79,126,127,86,145,146,51,90,92,112,99,86,136,124,114,141,130,120,136,124,111, +124,14,42,104,10,34,170,152,40,181,163,45,165,52,77,165,27,61,159,22,57,139,16, +48,163,25,60,173,31,67,174,33,68,174,36,69,154,26,57,178,69,94,126,132,140,129, +138,154,113,128,150,102,119,144,159,21,57,134,11,44,158,21,56,160,22,58,172,30, +65,173,31,66,174,31,67,173,31,67,174,32,68,174,34,69,175,37,70,174,38,71,175,41, +72,176,45,74,178,56,83,178,54,82,146,13,50,152,50,96,99,117,143,103,120,144,108, +123,147,106,116,130,179,65,90,164,32,63,174,38,71,174,38,70,173,37,70,169,36,68, +169,60,83,125,114,58,137,97,60,162,145,37,150,135,33,124,52,66,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,41,24,40,44,24,45,83,58,80,57, +37,56,60,37,59,62,36,64,106,76,102,68,45,67,67,47,65,66,49,64,110,82,106,66,39, +64,31,33,44,188,188,114,30,29,50,45,54,45,43,47,43,57,57,56,55,51,62,54,53,66, +53,55,58,52,52,52,52,52,52,52,48,63,51,61,54,51,52,50,51,49,72,51,49,50,51,48, +59,51,55,67,42,36,42,168,166,168,168,166,168,42,48,47,51,50,51,51,48,52,51,51, +58,51,59,51,51,55,51,51,47,55,51,55,52,51,47,62,51,47,64,51,50,51,51,57,51,51, +50,51,51,47,57,51,53,51,51,48,51,51,48,51,51,52,51,51,47,51,51,77,52,51,46,56, +51,47,58,51,47,51,51,47,51,51,47,51,51,49,51,50,53,52,51,49,51,51,47,51,51,49, +51,45,41,54,130,120,110,137,125,113,139,128,117,113,100,85,57,101,104,97,164, +165,105,168,169,61,98,99,55,89,90,80,128,129,71,119,120,42,74,76,112,97,85,133, +123,113,134,123,112,117,108,99,124,114,105,123,113,104,120,111,102,109,95,83,42, +62,85,112,83,106,115,88,109,46,63,84,46,63,84,86,114,145,78,107,141,42,61,85, +112,97,85,132,122,112,132,122,112,128,118,109,132,122,112,133,123,113,131,121, +111,110,96,84,52,90,92,95,160,161,106,169,171,64,103,104,64,103,104,105,169,170, +95,159,161,45,81,83,107,94,82,134,124,114,135,124,114,136,126,114,135,123,113, +136,124,114,137,125,115,112,97,85,42,74,76,71,119,120,77,123,124,47,75,76,47,75, +76,81,130,131,92,155,156,51,90,92,111,97,86,132,122,112,131,122,111,129,120,109, +128,118,109,131,122,111,129,119,110,111,96,84,42,61,85,78,107,141,86,114,145,46, +63,84,46,63,84,86,114,145,78,107,141,42,61,85,111,97,85,138,125,114,124,115,106, +131,132,132,97,97,98,116,110,99,129,120,110,112,99,87,57,101,104,97,162,164,99, +159,160,53,85,86,47,76,77,77,123,124,71,119,120,42,74,76,113,100,85,140,129,119, +136,124,114,133,123,113,135,123,112,138,127,116,138,127,115,112,99,86,42,74,76, +71,119,120,77,123,124,47,75,76,47,75,76,77,123,124,71,119,120,42,74,76,112,99, +86,134,124,114,139,128,117,133,122,112,129,119,109,124,114,105,130,120,110,112, +99,87,42,74,76,71,119,120,77,123,124,47,75,76,47,75,76,77,123,124,74,123,125,51, +90,92,112,99,86,141,130,119,139,128,118,138,125,111,124,15,43,104,10,34,138,20, +49,154,27,59,162,31,63,167,30,65,161,25,59,141,17,49,173,32,68,174,36,69,176,40, +73,178,45,77,161,33,65,180,81,103,145,149,153,145,152,162,129,139,155,147,148, +151,159,21,57,134,14,45,159,21,57,171,29,64,174,32,68,175,37,70,175,40,73,176, +40,73,176,43,75,178,45,77,178,45,77,177,43,75,175,38,71,174,33,68,173,31,66,178, +54,82,148,10,49,147,55,108,103,120,144,110,125,147,114,122,132,122,129,139,179, +76,98,169,39,70,178,46,78,177,46,77,177,46,77,173,44,75,158,35,64,160,63,85,122, +111,56,107,97,48,150,134,34,123,52,66,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,71,52,70,76,54,73,123,122,125,56,41,54,100,74,99,104,75, +100,150,149,152,67,49,65,111,85,115,110,80,112,155,152,162,66,39,64,31,35,57, +188,187,114,30,33,41,45,44,45,43,41,46,57,53,56,55,56,73,54,50,54,53,49,53,52, +47,58,52,62,52,52,48,58,51,47,51,51,58,58,51,48,50,51,48,52,51,53,54,51,52,56, +39,49,39,168,167,171,168,169,168,39,41,39,51,48,64,51,48,57,51,48,60,51,47,66, +51,48,51,51,47,56,51,47,51,51,49,56,51,48,56,51,48,51,51,47,51,51,47,62,51,47, +51,51,47,57,51,48,51,51,48,51,51,53,51,51,50,56,51,46,62,51,47,57,51,47,52,51, +47,51,51,48,51,51,46,59,51,64,51,48,53,49,51,52,51,51,46,59,51,64,51,45,50,47, +131,122,111,131,121,111,138,127,115,112,99,86,57,101,104,97,165,166,97,165,166, +64,102,104,62,100,101,87,148,149,77,131,132,42,76,77,111,97,85,133,123,113,132, +122,112,129,119,109,129,119,109,130,120,110,131,121,111,110,96,84,42,62,85,112, +84,107,112,84,107,47,63,85,47,63,85,112,84,107,112,84,107,42,62,85,112,97,85, +137,125,114,137,127,114,136,124,115,133,123,113,133,123,113,136,125,115,111,97, +85,58,103,104,97,165,166,97,165,166,64,103,104,64,103,104,97,165,166,97,165,166, +56,99,102,112,99,86,136,124,113,132,122,112,140,129,119,140,129,120,145,133,121, +142,131,122,112,99,86,42,74,76,71,120,121,71,120,121,47,75,76,47,75,76,71,120, +121,74,126,127,52,91,92,111,97,85,131,121,111,132,122,113,134,124,114,131,121, +111,137,125,113,133,123,113,111,97,85,42,62,85,79,108,142,79,108,142,47,63,85, +47,63,85,79,108,142,79,108,142,42,62,85,111,97,85,132,122,112,124,115,106,131, +132,132,97,97,98,125,116,104,137,125,115,111,97,85,59,103,104,97,165,166,96,163, +165,59,95,97,52,84,85,71,121,122,71,120,121,42,74,76,113,100,85,139,128,117,138, +127,116,145,132,121,136,124,114,135,124,114,141,130,121,109,95,84,43,75,76,71, +120,121,71,120,121,47,75,76,47,75,76,71,120,121,71,120,121,42,74,76,112,99,86, +138,127,115,139,128,119,139,127,116,138,127,115,130,120,110,128,119,107,111,97, +86,42,75,76,71,120,121,71,120,121,47,75,76,47,75,76,71,120,121,71,120,121,43,77, +79,112,99,86,137,125,114,140,129,119,129,115,102,124,15,43,106,11,35,112,112, +112,145,145,145,163,37,67,168,35,67,162,28,60,142,20,50,174,34,68,176,40,73,179, +47,78,180,53,81,169,39,70,183,89,111,154,157,159,152,157,165,161,161,161,112, +126,148,159,23,57,135,13,45,165,24,60,173,30,66,175,37,70,168,38,69,89,89,89,93, +93,93,95,95,95,175,48,77,181,54,82,179,47,78,176,40,73,175,34,68,173,29,65,178, +54,82,148,13,50,147,58,111,107,123,146,117,130,151,127,133,141,138,143,149,182, +86,108,175,48,77,180,55,84,179,54,83,178,54,82,175,53,81,171,50,77,162,75,96, +143,143,143,108,108,108,107,10,35,123,52,66,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,69,48,66,74,51,71,122,120,124,54,34,53,97,70,94,101, +70,97,149,147,151,65,41,63,109,79,112,107,75,105,154,151,159,66,39,64,31,42,47, +188,187,115,30,30,52,45,41,65,42,53,45,58,52,63,55,53,61,54,58,62,53,49,53,52, +57,53,52,47,52,52,56,53,51,52,51,51,47,51,51,47,51,51,52,58,51,48,61,51,48,65, +39,51,39,168,166,169,168,166,168,39,45,39,51,50,55,51,50,59,51,47,57,51,47,50, +51,52,59,51,47,51,51,47,51,51,53,51,51,50,51,51,48,51,51,47,51,51,47,52,51,47, +54,51,47,51,51,56,52,51,48,51,51,46,51,51,58,55,51,48,64,51,52,55,51,47,52,51, +47,61,51,56,55,51,54,51,51,60,51,45,60,56,51,56,55,51,54,51,51,60,51,45,60,56, +132,122,112,128,119,109,132,123,113,110,95,83,45,99,101,50,97,100,50,97,100,53, +100,103,53,100,103,50,96,98,47,91,93,38,83,85,109,95,83,132,123,110,140,129,119, +130,120,110,132,122,112,132,122,112,132,122,112,109,95,83,35,58,85,102,53,68, +102,53,68,39,60,84,39,60,84,102,53,67,102,53,67,34,58,84,109,94,82,130,121,111, +131,121,111,132,122,112,132,121,110,133,123,113,127,118,106,109,95,83,43,95,98, +49,97,100,52,99,100,53,100,103,53,100,103,52,99,100,52,99,100,46,99,101,110,95, +83,138,127,115,136,124,113,138,127,116,137,126,114,141,130,119,140,128,117,111, +98,82,32,71,74,36,71,73,36,71,73,38,73,75,39,73,75,37,71,73,37,71,73,35,75,77, +109,95,83,142,135,131,127,118,106,130,120,110,135,123,112,135,124,114,133,122, +110,108,94,82,34,58,84,36,57,82,36,57,82,36,58,84,37,58,84,36,57,82,36,57,82,32, +58,84,110,95,82,137,125,114,124,115,106,131,132,132,97,97,98,120,112,103,126, +115,105,109,95,83,48,100,103,53,99,101,50,97,100,52,99,101,48,92,93,41,79,81,36, +71,73,32,72,74,109,94,83,138,127,115,136,126,114,139,128,118,138,127,116,138, +127,116,141,130,120,109,94,82,33,72,74,37,71,73,37,71,73,38,73,74,38,73,74,37, +72,73,37,71,73,33,72,74,110,97,84,138,127,115,138,127,116,136,126,114,132,122, +112,131,121,111,120,111,103,111,97,82,34,72,74,39,72,74,39,72,74,39,73,75,38,73, +74,37,71,73,37,71,73,33,72,74,109,95,83,130,120,110,129,119,109,129,115,102,124, +16,44,107,12,36,105,105,105,121,121,121,166,42,70,169,40,71,164,30,62,143,21,51, +174,34,68,177,44,76,180,53,81,182,56,85,173,42,73,184,94,113,158,159,161,171, +171,171,133,143,156,113,127,149,159,24,57,136,12,46,167,26,61,174,32,68,176,39, +72,170,41,72,96,96,96,100,100,100,103,102,102,180,52,80,182,56,85,180,50,79,176, +42,74,174,33,68,173,29,65,178,54,82,148,13,50,147,57,110,148,149,152,123,135, +153,135,140,147,151,154,156,184,93,112,180,52,80,183,59,88,182,58,87,180,57,86, +176,56,84,170,53,80,163,47,74,132,132,132,109,109,109,107,11,35,123,52,66,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,106,104,112,113,113, +119,122,123,124,91,68,88,140,138,145,145,145,150,149,150,151,107,81,103,153,151, +157,152,152,154,154,151,160,66,39,64,31,30,44,188,188,115,30,28,41,45,58,43,54, +50,63,57,52,66,55,53,65,54,50,55,53,50,53,52,48,52,52,48,52,52,47,62,51,60,55, +51,49,59,51,48,54,51,53,51,51,46,51,51,46,51,39,46,39,168,168,169,168,166,171, +39,35,39,51,48,51,51,47,51,51,49,51,51,47,59,51,55,52,51,47,51,51,48,51,51,49, +51,51,47,55,51,47,51,51,47,51,51,48,51,51,59,51,51,58,57,51,67,55,51,47,51,51, +69,51,51,46,51,51,48,56,51,47,57,51,47,59,51,57,64,51,47,50,51,48,51,51,48,51, +45,41,53,51,56,51,51,48,58,51,47,58,45,54,47,137,126,116,139,128,117,141,129, +118,153,149,143,156,150,143,149,143,139,154,149,142,147,139,135,150,144,140,151, +145,141,151,147,141,154,148,143,148,142,139,138,127,116,139,127,116,133,123,113, +132,122,112,127,118,106,133,123,113,151,145,140,141,137,132,145,141,135,143,137, +132,147,142,136,144,140,135,152,145,139,156,149,143,146,140,134,149,145,140,131, +121,110,141,130,119,137,126,114,132,122,112,140,130,119,142,131,121,145,139,133, +154,148,143,158,151,145,148,141,136,142,137,131,151,144,139,144,138,134,151,145, +140,148,141,136,144,138,134,138,127,116,138,127,116,140,129,118,148,136,124,142, +132,121,140,129,119,153,147,143,160,153,148,154,148,142,158,151,145,149,141,138, +149,141,138,153,147,142,151,144,141,148,141,135,152,144,142,149,141,135,137,124, +113,131,121,111,139,128,117,132,122,112,135,124,114,141,137,131,148,144,138,159, +153,146,157,150,143,162,156,149,160,154,148,154,147,142,159,153,146,156,149,143, +155,149,144,140,128,118,126,117,107,131,132,132,97,97,98,123,114,104,132,122, +112,150,145,141,144,139,134,135,127,123,158,152,145,138,132,126,157,149,144,153, +146,141,156,149,144,156,149,144,158,152,145,136,126,113,140,130,119,138,127,116, +135,124,114,136,124,113,141,129,119,155,150,144,157,151,144,151,144,141,150,143, +139,157,150,144,153,148,142,152,142,138,148,142,138,156,149,143,149,142,140,141, +130,119,145,132,120,140,129,120,141,130,120,140,129,119,141,128,118,152,147,142, +150,143,140,144,138,132,139,133,129,150,143,136,157,149,143,149,142,138,156,149, +143,151,143,138,152,147,142,145,133,120,146,134,122,132,120,109,124,16,44,109, +13,37,107,107,107,136,136,136,168,43,73,171,42,73,165,30,63,145,21,51,173,36,69, +178,45,77,180,54,83,183,58,87,175,44,75,184,96,116,176,176,176,150,155,163,131, +140,155,151,152,153,160,24,58,136,15,46,170,28,63,174,33,68,176,42,74,171,43,74, +98,98,98,103,102,102,104,104,104,180,53,81,182,57,86,180,50,79,176,42,74,174,33, +68,172,29,64,178,54,82,148,13,50,147,58,111,111,126,148,155,156,157,144,151,162, +153,156,158,185,94,114,180,53,81,184,60,89,183,58,88,180,57,86,175,55,83,170,50, +77,161,46,72,129,129,129,126,126,126,107,10,35,122,52,66,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,41,34,40,44,37,43,83,58,83,57,37,56, +60,51,59,62,53,60,106,75,106,68,45,67,67,43,66,66,42,64,110,79,113,66,39,64,31, +29,44,188,187,113,30,42,42,47,43,48,54,60,55,57,52,58,55,65,64,54,63,58,53,49, +64,52,49,52,52,48,57,52,47,57,51,50,51,51,48,51,51,53,51,51,46,51,51,65,51,51, +66,51,39,50,39,168,167,169,168,168,168,39,35,46,51,57,52,51,61,59,51,62,51,51, +49,51,51,56,65,51,48,56,51,48,60,51,48,55,51,49,64,51,50,51,51,47,51,51,48,51, +51,56,51,51,47,57,51,58,59,51,51,51,51,46,58,51,50,51,51,47,52,51,52,54,51,47, +61,51,47,51,51,53,64,51,51,50,51,52,59,45,57,47,52,47,51,51,55,52,51,59,51,45, +47,47,131,122,110,130,120,110,135,123,113,132,122,112,138,127,115,139,128,118, +138,127,115,130,120,110,132,121,111,133,123,112,129,119,109,138,127,115,138,127, +116,139,128,119,135,124,114,131,121,111,131,121,111,128,119,109,132,122,112,133, +123,113,130,120,109,132,122,112,136,124,113,135,124,114,129,119,109,131,120,110, +129,119,109,139,127,116,139,128,118,131,121,111,131,121,111,140,129,117,136,126, +114,140,128,119,142,130,120,141,130,120,138,126,115,139,129,118,133,121,110,129, +119,109,136,124,113,131,121,110,130,119,109,132,122,111,135,124,114,133,123,113, +132,122,112,140,128,119,137,126,114,140,129,119,140,129,119,144,132,120,142,132, +119,140,129,118,140,129,118,133,122,112,133,121,110,138,127,116,135,123,113,146, +136,122,142,132,121,138,127,116,148,141,134,132,122,112,133,123,113,140,129,119, +140,129,119,135,123,111,135,122,111,136,125,113,137,126,115,144,132,119,141,129, +119,141,130,119,146,133,122,144,131,119,137,125,113,137,126,114,128,117,107,131, +132,132,97,97,98,125,117,107,136,125,114,135,124,114,129,118,108,129,119,109, +128,118,108,139,126,116,130,121,110,141,130,120,139,128,118,135,123,113,139,128, +118,140,129,120,136,124,114,138,127,116,135,124,114,140,129,119,136,124,114,138, +127,116,134,122,111,137,126,113,137,125,113,142,132,120,141,130,120,139,128,118, +144,133,120,142,132,120,138,126,115,145,133,120,141,130,120,135,124,114,135,123, +113,136,126,114,137,126,114,135,124,113,137,126,114,132,122,112,129,119,108,132, +122,111,130,120,110,131,120,110,132,121,111,129,119,109,136,126,113,142,129,119, +139,128,118,133,121,110,125,17,44,109,13,37,117,117,117,151,151,151,168,43,73, +171,42,73,165,30,63,145,21,51,174,35,69,178,45,77,181,54,82,183,58,87,174,43,74, +185,95,115,158,160,162,151,156,164,159,159,159,150,151,153,160,24,58,136,15,46, +170,28,63,174,33,68,176,42,74,171,42,73,96,96,96,101,101,101,103,102,102,180,52, +80,181,55,84,180,49,78,176,39,72,174,32,68,172,29,64,178,54,82,148,13,50,147,58, +111,110,125,148,123,135,153,164,164,164,151,154,156,184,93,112,179,52,80,183,58, +88,181,57,86,179,56,84,173,52,80,168,46,73,159,40,67,112,112,112,104,104,104, +106,10,34,122,51,66,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,71,51,69,76,56,74,123,121,128,56,35,56,100,73,97,104,77,102,150,148,155,67, +42,67,111,83,108,110,80,112,155,154,157,66,39,64,31,36,54,188,188,113,30,30,45, +47,54,48,54,54,54,57,52,68,55,52,56,54,49,55,53,52,54,52,53,53,52,57,52,52,47, +52,51,47,51,51,56,61,51,51,51,51,50,54,51,46,51,51,65,51,39,37,39,168,169,168, +168,170,168,39,34,40,51,58,52,51,47,51,51,48,51,51,48,59,51,55,60,51,54,52,51, +56,52,51,52,54,51,58,51,51,49,55,51,50,52,51,51,51,51,48,51,51,50,51,51,48,51, +51,47,51,51,49,51,51,47,54,51,47,58,51,49,52,51,47,61,51,47,54,51,48,52,51,48, +61,51,52,50,45,46,47,52,57,74,52,50,51,51,61,55,45,52,64,130,121,111,128,118, +109,132,122,112,137,126,114,141,129,120,139,128,118,139,128,118,136,124,113,137, +126,114,133,122,112,139,127,116,141,130,119,135,123,112,137,126,114,132,122,112, +131,121,111,133,123,113,130,120,110,128,118,109,129,118,107,129,119,109,131,121, +111,131,120,109,135,124,114,133,123,113,136,124,114,131,121,111,133,122,112,140, +129,119,132,122,112,137,127,114,136,126,114,131,121,111,133,122,112,133,123,113, +141,130,120,138,127,116,135,123,112,132,122,112,135,123,112,132,122,112,132,122, +112,129,119,109,130,120,110,129,119,109,131,121,111,136,124,114,138,126,114,133, +123,113,139,128,118,140,129,119,138,127,116,141,130,119,138,127,116,138,127,116, +130,121,111,136,126,114,136,126,114,131,121,111,135,124,114,135,123,113,135,124, +114,146,139,133,136,124,114,136,124,114,142,131,120,133,123,113,135,123,112,138, +127,116,143,133,121,136,126,114,142,132,121,141,130,120,139,128,118,145,132,121, +137,126,114,140,129,119,135,124,114,126,119,108,131,132,132,97,97,98,125,116, +105,133,123,113,135,123,113,129,119,109,127,115,106,121,111,102,127,118,106,136, +124,115,135,124,114,133,123,113,136,124,113,137,126,114,138,127,116,136,126,114, +135,124,114,136,124,113,136,124,113,141,129,119,135,123,112,140,129,119,136,126, +114,137,126,114,139,128,118,139,128,118,137,126,114,145,133,121,145,134,122,138, +127,116,141,130,121,139,128,118,135,123,113,133,123,113,136,126,114,137,126,114, +137,124,114,122,112,103,128,119,109,130,120,110,131,121,111,137,125,113,132,122, +112,132,122,112,133,123,113,132,121,111,132,122,112,140,129,119,136,124,111,125, +17,44,109,12,36,116,116,116,131,131,131,166,41,71,170,38,70,164,30,62,145,21,51, +174,37,70,177,44,76,180,52,80,181,55,84,171,41,72,183,91,112,152,154,157,168, +168,168,159,159,159,113,127,149,159,24,57,135,13,45,167,26,61,174,31,67,176,38, +71,169,39,70,93,93,93,96,96,96,97,97,97,176,47,77,180,52,80,178,45,77,175,37,70, +173,31,67,172,27,64,178,54,82,148,13,50,147,58,111,147,148,151,118,131,151,128, +135,142,167,167,167,182,86,108,175,46,76,181,54,83,178,53,82,177,52,79,173,47, +75,167,42,71,158,37,66,110,110,110,92,92,92,106,10,34,122,51,66,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,69,53,66,74,51,71,122,122,124, +54,40,53,97,76,94,101,71,97,149,149,151,65,48,63,109,79,105,107,75,108,154,152, +159,66,39,64,31,30,54,188,187,113,30,35,41,47,51,47,55,56,54,58,52,64,55,51,56, +54,60,63,53,50,58,52,49,61,52,56,57,51,47,51,51,47,51,51,47,51,51,47,51,51,53, +60,51,47,51,51,48,51,41,41,50,165,163,166,167,165,170,40,36,48,51,52,58,51,65, +66,51,51,58,51,48,51,51,48,50,51,56,55,51,48,50,51,48,56,51,51,51,51,48,51,51, +57,51,51,48,51,51,53,51,51,47,51,51,47,57,51,47,51,51,48,51,51,47,51,51,49,57, +51,47,52,51,56,62,51,47,60,51,47,52,51,48,65,51,58,64,45,42,46,38,35,56,37,40, +44,52,51,52,45,41,47,138,126,116,133,124,113,136,125,115,135,124,114,145,133, +121,140,129,119,141,130,120,141,130,120,139,129,119,139,128,119,138,127,116,139, +128,116,133,123,113,141,130,120,140,129,119,132,122,112,133,123,113,132,122,112, +130,120,110,137,125,114,134,123,113,127,115,106,136,124,114,137,124,113,136,124, +114,138,127,115,126,114,106,127,118,106,133,123,113,127,115,106,136,125,115,133, +123,113,128,118,109,134,124,114,130,120,110,132,122,112,132,122,112,138,127,114, +131,121,111,140,129,117,141,130,119,132,122,112,132,122,112,130,120,110,129,119, +109,133,123,113,130,120,110,130,120,110,142,131,120,133,123,113,140,129,119,136, +126,114,140,129,120,141,129,119,145,132,121,139,128,119,142,130,120,139,127,116, +132,121,111,138,127,114,136,126,114,140,129,117,150,142,136,137,126,114,142,131, +121,138,127,116,138,127,116,140,129,119,145,133,121,149,137,125,142,132,122,146, +134,121,140,129,119,137,126,114,138,127,116,138,127,116,136,124,114,136,123,112, +124,115,106,131,132,132,97,97,98,126,118,107,136,125,115,137,127,114,138,127, +114,140,129,119,133,123,113,124,114,105,134,124,114,139,128,117,139,128,117,137, +126,114,140,129,119,139,128,119,140,128,119,140,129,119,133,123,113,140,129,119, +138,127,115,138,127,115,138,127,115,138,127,115,140,129,119,146,133,122,133,124, +114,137,127,115,132,122,113,141,130,121,131,121,111,141,130,120,140,129,119,145, +133,121,141,130,119,137,126,114,139,128,117,135,124,114,134,124,114,132,122,112, +132,124,112,129,119,109,132,122,112,133,123,113,132,122,112,137,127,114,140,129, +119,136,124,113,148,136,124,139,126,112,126,16,44,107,12,36,134,134,134,125,125, +125,164,35,66,168,34,66,163,28,61,145,21,51,173,36,69,176,40,73,178,46,76,180, +49,78,164,36,67,180,82,103,165,165,165,162,162,162,132,141,156,119,132,152,160, +24,58,135,13,45,165,24,60,173,30,65,175,33,68,167,34,66,83,83,83,87,87,87,89,89, +89,170,41,72,178,45,77,176,39,72,174,32,68,172,29,64,173,26,63,178,54,82,148,10, +49,147,56,109,145,147,149,149,150,152,118,126,136,130,136,143,180,79,101,171,41, +72,179,49,78,178,48,77,176,45,76,170,41,72,165,39,69,159,63,84,117,117,117,123, +123,123,106,8,34,122,51,66,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,106,104,113,113,111,117,122,120,124,91,70,88,140,138,146,145,143, +149,149,147,151,107,83,104,153,151,155,152,151,156,154,151,156,66,39,64,31,45, +54,188,187,112,30,46,54,47,46,54,42,50,46,41,40,41,56,51,59,54,59,54,53,59,56, +52,49,61,52,48,55,51,47,58,51,47,58,51,47,51,51,47,56,51,47,56,51,51,57,51,49, +56,45,41,46,130,127,132,151,150,151,43,38,43,51,52,57,51,49,62,51,65,64,51,55, +54,51,52,65,51,54,50,51,48,68,51,48,61,51,48,51,51,56,51,51,66,59,51,49,57,51, +51,51,51,48,51,51,68,50,51,55,72,51,50,51,51,58,51,51,51,67,51,47,55,52,47,51, +52,53,56,51,56,51,51,48,58,51,47,58,44,53,45,38,48,38,38,47,38,38,37,38,28,39, +31,132,122,112,129,119,109,127,118,105,130,120,110,136,124,113,135,123,112,135, +123,113,128,118,108,135,123,113,139,128,119,135,123,112,130,120,110,132,122,112, +138,127,114,137,124,113,128,118,109,136,124,112,128,118,109,131,121,111,132,122, +112,128,118,109,128,118,109,130,120,110,131,121,111,131,120,110,132,122,112,130, +120,110,128,118,109,126,114,105,121,111,102,128,119,109,130,120,110,129,120,109, +128,118,109,130,120,110,128,119,109,128,119,109,138,127,114,132,122,112,135,124, +114,128,119,109,127,118,106,131,121,111,131,121,111,126,114,105,124,113,104,127, +118,106,128,119,109,130,120,110,133,123,113,130,120,110,133,123,113,137,126,114, +139,128,119,138,127,116,133,123,113,133,123,113,138,127,114,132,122,112,129,119, +109,131,121,111,145,138,133,133,123,113,145,138,133,147,139,133,147,139,133,136, +127,114,127,119,109,129,121,110,138,127,116,138,127,116,145,133,120,139,128,118, +135,123,113,138,127,116,132,122,112,132,122,112,137,127,115,121,113,101,131,132, +132,97,97,98,122,114,104,131,121,111,132,122,112,128,118,109,130,120,110,127, +118,106,126,115,106,122,112,103,130,120,110,135,123,112,133,123,113,133,123,113, +136,126,114,132,122,112,139,128,117,133,123,113,79,71,62,79,71,62,79,71,62,79, +71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62,79,71,62, +79,71,62,79,71,62,136,124,114,140,129,119,133,123,113,135,123,112,131,121,111, +130,120,110,130,120,110,129,119,109,130,120,110,129,119,109,129,119,109,129,119, +109,128,118,109,131,121,111,130,120,110,131,121,111,132,120,109,126,15,43,106, +11,35,142,19,49,156,27,60,164,29,64,168,30,64,162,25,60,143,20,50,174,34,68,175, +37,70,175,38,71,176,40,73,157,30,60,178,71,95,156,156,156,128,138,154,125,136, +153,117,130,151,160,24,58,134,14,45,159,21,57,171,27,64,173,31,66,175,33,68,175, +37,70,176,39,72,176,39,72,175,38,71,174,36,69,174,32,68,173,29,65,173,26,63,173, +26,63,178,53,81,147,12,49,146,55,107,100,118,143,146,148,150,152,153,153,121, +128,138,178,74,96,166,34,67,175,42,74,174,42,73,172,39,71,168,34,66,153,28,57, +160,56,79,115,106,52,103,94,45,149,133,33,122,51,66,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,41,29,42,44,34,43,83,63,81,57,36,56,60,44, +62,62,49,60,106,81,103,68,44,67,67,46,72,66,39,64,110,79,106,66,39,64,31,30,43, +188,187,115,30,28,41,45,42,59,43,62,51,41,41,42,56,51,55,54,50,55,53,50,67,52, +50,53,52,57,53,51,47,52,51,55,51,51,51,51,51,47,51,51,47,51,51,47,51,51,48,58, +50,46,54,46,41,53,45,39,50,50,50,52,51,47,51,51,50,52,51,47,54,51,53,51,51,48, +59,51,61,51,51,47,52,51,53,57,51,47,51,51,47,51,51,47,56,51,50,51,51,55,51,51, +49,55,51,52,51,51,47,57,51,60,51,51,47,51,51,47,51,52,52,58,37,36,37,37,36,37, +48,47,47,51,55,52,45,54,45,38,48,39,38,46,43,38,36,44,38,45,38,28,28,33,133,123, +113,132,122,112,136,125,115,133,123,113,136,125,115,136,124,113,140,130,120,137, +127,115,139,128,117,143,132,122,137,127,115,140,129,118,127,115,106,130,120,110, +129,119,109,124,114,104,134,123,113,129,119,109,128,118,109,132,122,112,132,122, +112,132,122,112,130,120,110,136,125,115,134,123,113,134,124,114,136,125,115,129, +120,110,130,120,110,122,113,103,128,118,109,136,124,114,132,122,112,137,127,115, +136,125,115,132,122,112,132,122,112,140,129,120,139,128,117,138,127,115,130,121, +110,124,114,105,134,124,114,134,124,114,126,116,107,127,115,106,128,119,109,134, +123,114,138,127,114,140,129,119,140,129,119,134,124,114,137,125,114,136,124,113, +141,130,120,129,121,110,130,120,110,136,125,115,133,123,113,132,122,112,138,127, +115,148,140,135,130,120,110,129,119,109,131,121,111,132,122,112,148,140,135,132, +122,112,134,124,114,140,129,120,136,125,115,146,134,121,140,129,119,140,129,119, +142,131,121,132,122,112,133,123,113,136,124,112,124,115,106,131,132,132,97,97, +98,125,117,108,132,120,110,136,125,115,129,119,110,129,119,110,133,122,112,128, +116,107,133,123,113,136,125,115,132,122,112,132,122,112,133,123,113,135,124,114, +139,128,117,134,124,114,79,71,62,84,77,70,111,97,86,111,99,87,110,97,86,112,100, +86,112,100,86,110,97,86,110,97,86,111,99,87,110,97,86,112,99,87,110,97,86,112, +99,87,84,77,70,79,71,62,138,127,115,135,123,112,132,122,112,137,125,115,131,121, +111,133,123,113,132,122,112,134,124,114,130,120,110,132,122,112,133,123,113,133, +123,113,131,121,111,123,113,104,129,119,109,125,114,103,127,15,43,106,9,34,174, +156,41,185,166,45,167,52,78,166,28,62,161,24,59,142,17,50,165,27,62,174,31,67, +174,32,68,174,33,68,151,24,55,179,61,88,105,116,129,113,127,149,113,127,149,108, +123,147,159,22,57,134,11,44,158,20,56,159,21,57,165,24,60,172,30,65,173,31,66, +173,31,66,173,31,66,173,29,65,172,29,64,172,27,64,173,26,63,173,26,63,178,53,81, +178,53,81,146,13,50,149,52,101,98,117,143,100,118,144,147,149,151,151,152,153, +178,66,91,162,30,61,173,33,68,172,33,67,171,31,67,167,29,63,167,53,78,120,109, +55,133,95,58,160,143,36,149,134,33,123,52,66,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,50,37,50,55,39,53,86,84,87,56,35,58,100,74,99, +104,75,100,150,148,152,67,42,69,111,87,112,110,80,108,155,152,157,66,39,64,31, +33,44,188,187,113,30,46,41,45,46,43,43,41,51,58,52,58,55,51,56,54,59,54,53,50, +54,52,54,60,52,48,53,51,47,62,51,47,52,51,59,57,51,47,54,51,47,51,51,47,51,51, +47,51,51,47,68,51,47,58,51,47,53,51,61,57,51,47,51,51,47,59,51,48,64,51,48,51, +51,47,51,51,47,52,51,48,52,51,52,57,51,47,55,51,53,51,51,49,51,51,47,51,51,47, +54,51,51,69,51,58,50,51,57,60,52,53,52,52,47,60,52,47,51,37,36,41,38,49,38,38, +51,42,42,50,48,40,48,40,41,50,41,40,49,44,39,41,38,39,42,52,39,37,54,28,27,31, +127,116,106,136,124,114,132,122,112,109,95,84,113,100,85,112,99,84,113,100,85, +112,99,84,112,96,85,112,99,86,112,99,86,112,97,85,109,95,84,138,127,115,134,123, +113,123,111,103,128,118,109,133,123,113,129,119,110,109,96,84,110,96,84,111,97, +85,110,96,84,111,97,85,111,97,85,111,97,85,112,97,85,111,97,85,111,98,84,119, +109,100,124,114,105,130,121,110,129,119,109,136,124,114,137,127,115,109,95,84, +109,95,84,113,100,85,113,100,85,112,99,86,111,97,86,110,96,84,111,97,85,112,97, +85,108,95,83,129,119,110,132,122,112,130,120,110,132,122,112,136,126,114,137, +124,115,111,99,86,111,99,86,112,97,85,113,100,85,112,97,85,112,97,85,113,99,86, +111,96,84,112,99,86,109,95,84,144,137,132,130,120,110,127,115,106,129,119,109, +129,119,109,129,120,110,108,94,83,111,97,85,112,99,86,112,99,86,111,96,85,112, +99,86,113,100,85,112,99,86,112,97,85,109,95,84,139,128,115,124,115,104,131,132, +132,97,97,98,119,112,103,131,121,111,110,98,85,111,97,85,110,96,84,110,96,84, +111,97,86,111,97,85,112,99,86,111,97,85,111,96,84,109,95,84,131,122,112,135,124, +114,137,127,115,79,71,62,111,99,85,121,112,102,115,106,96,114,105,96,115,106,96, +118,109,98,115,107,98,112,103,93,113,104,95,114,105,96,114,107,97,112,103,94, +118,109,97,110,97,86,79,71,62,140,130,120,132,121,110,137,127,115,110,97,85,112, +99,86,112,97,85,112,97,85,112,97,85,110,96,84,111,97,85,110,96,84,111,97,85,109, +96,85,128,119,106,134,122,112,122,111,99,127,15,43,107,9,34,175,157,40,143,101, +62,168,50,77,167,25,61,160,22,58,154,26,57,140,16,49,140,15,48,141,16,49,154,26, +57,147,19,52,159,23,57,159,23,57,159,23,57,159,23,57,159,21,57,173,24,62,133,12, +44,147,16,51,158,20,56,157,20,56,159,21,57,160,22,58,161,22,58,164,23,59,167,26, +62,169,28,64,172,32,66,176,43,74,178,53,81,178,53,81,178,53,81,146,16,50,147,16, +51,147,16,51,147,16,51,148,18,52,149,21,53,159,24,57,159,23,57,158,23,57,157,23, +56,156,21,56,153,20,55,167,50,76,142,100,62,133,93,57,160,144,36,126,14,43,124, +52,66,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,49,35, +49,53,38,54,85,84,87,54,36,53,97,71,97,101,74,103,149,147,151,65,44,63,109,79, +105,107,75,103,154,154,159,66,39,64,31,35,43,188,189,115,30,35,52,45,42,55,43, +44,43,58,52,62,56,51,55,54,51,62,53,57,62,52,50,63,52,49,59,51,47,51,51,47,56, +51,47,51,51,47,51,51,47,51,51,52,56,51,47,51,51,47,51,51,47,52,51,52,52,51,46, +51,51,59,51,51,47,51,51,53,51,51,47,51,51,47,51,51,47,61,51,47,52,51,56,61,51, +48,51,51,52,55,51,47,51,51,47,52,52,47,51,52,50,51,52,47,59,52,47,51,37,37,37, +38,37,55,38,37,46,38,36,39,38,36,38,39,40,38,39,43,49,39,47,40,44,49,44,40,47, +41,39,37,41,39,37,40,39,42,38,28,28,49,134,124,114,136,123,113,131,121,111,111, +96,84,39,75,77,42,74,76,42,74,76,43,76,78,44,77,79,46,83,84,52,94,95,52,100,103, +110,97,85,136,124,113,130,120,110,127,118,106,130,120,110,132,122,112,126,115, +106,111,97,86,54,102,104,55,97,98,50,88,89,46,79,81,44,76,78,43,75,76,42,75,76, +40,75,77,111,97,86,127,116,106,127,119,106,124,114,105,129,119,109,138,127,114, +134,124,114,110,97,85,40,75,77,42,74,76,42,74,76,43,76,78,44,76,78,43,75,76,43, +76,77,43,81,84,109,96,84,134,124,114,133,123,113,133,122,112,129,119,109,137, +126,114,149,138,125,111,96,85,53,85,119,56,83,114,52,78,107,47,69,96,43,63,87, +42,62,85,42,62,85,39,62,87,131,123,117,131,121,111,130,120,110,130,120,110,131, +121,111,133,123,113,136,125,115,111,96,84,48,91,94,54,97,99,45,79,80,43,76,78, +43,76,78,42,74,76,42,74,76,39,75,77,112,97,85,134,124,114,118,111,102,132,132, +132,97,97,98,119,112,103,132,122,112,111,97,85,40,75,77,43,76,77,47,83,84,55,96, +98,59,103,105,59,103,104,59,103,104,55,103,106,109,96,84,136,124,114,131,121, +111,132,122,112,79,71,62,110,96,86,119,110,102,114,106,95,125,115,106,120,111, +102,114,105,95,115,106,97,115,106,96,119,110,101,112,104,94,119,108,96,115,106, +97,114,105,95,111,99,87,79,71,62,137,125,115,131,121,111,132,122,112,112,97,85, +39,75,77,42,75,76,43,75,76,43,76,78,44,76,78,43,75,76,43,75,76,40,75,77,111,97, +85,132,122,112,128,118,109,128,115,104,127,7,40,132,11,44,146,13,48,157,21,55, +163,22,58,168,23,60,168,17,57,166,16,56,171,20,60,173,26,63,173,26,63,172,25,62, +169,17,58,171,17,58,173,26,63,173,24,62,173,24,62,173,24,62,173,24,62,133,12,44, +135,13,45,135,13,45,135,13,45,136,12,46,136,12,46,136,12,46,135,13,45,135,13,45, +135,13,45,135,13,45,135,13,45,135,13,45,135,13,45,134,14,45,147,16,51,173,23,61, +173,24,62,173,24,62,173,24,62,173,26,63,173,26,63,173,26,63,172,26,63,171,26,62, +170,25,62,167,23,60,162,22,58,155,20,55,146,18,51,136,16,47,127,14,43,126,49,64, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,71,71,73,77,77, +80,85,84,88,91,65,88,140,139,144,145,143,150,149,147,154,107,77,103,153,152,159, +152,150,154,154,151,156,66,39,64,31,36,57,188,187,113,30,29,41,45,43,45,43,43, +51,42,41,42,40,43,51,55,50,62,53,49,53,52,67,53,52,57,52,51,47,51,51,51,51,51, +47,51,51,47,55,51,51,51,51,48,51,51,47,55,51,48,51,51,50,60,51,47,57,51,53,52, +51,47,51,51,47,51,51,47,52,51,47,51,51,47,51,51,49,58,51,52,51,51,49,58,51,47, +51,51,47,51,51,56,51,52,47,58,37,36,40,38,51,37,38,47,42,38,37,45,38,37,38,38, +36,38,38,53,38,39,44,39,39,37,39,39,42,42,39,49,38,39,49,39,39,41,39,29,41,32, +39,39,41,39,39,42,39,37,42,28,27,31,133,123,113,133,123,113,127,118,106,110,96, +84,43,75,76,71,120,121,71,120,121,47,75,76,47,75,76,72,121,122,76,128,130,51,90, +91,111,96,84,136,124,114,129,119,109,137,125,114,139,128,117,138,127,114,134, +123,113,111,96,84,59,103,104,97,164,166,94,160,161,57,92,93,51,81,82,72,121,122, +71,120,121,42,75,76,112,99,84,133,122,112,126,114,105,126,114,105,136,125,115, +135,123,113,139,128,117,112,97,85,42,75,76,71,120,121,71,120,121,47,75,76,47,75, +76,71,120,121,71,120,121,43,75,76,111,97,85,139,128,117,136,124,113,140,129,119, +131,121,111,136,126,114,137,125,115,112,99,86,57,85,117,108,148,183,107,146,180, +59,79,107,52,70,94,79,109,143,79,108,142,42,62,85,111,97,85,137,127,115,136,126, +114,133,123,113,133,122,112,132,122,112,132,122,112,111,97,85,44,77,78,80,135, +137,92,156,157,50,79,80,47,75,76,71,120,121,71,120,121,43,75,76,111,97,85,133, +123,113,118,111,102,132,132,132,97,97,98,125,116,105,140,129,118,111,95,84,43, +75,76,71,120,121,72,121,122,52,83,84,59,94,96,96,162,164,97,165,166,59,103,104, +111,97,85,137,127,115,132,122,112,136,125,115,79,71,62,111,99,86,128,120,110, +127,118,107,123,114,104,128,117,108,123,115,106,122,114,105,118,112,102,124,115, +106,118,111,102,119,110,102,118,109,101,118,110,101,110,97,86,79,71,62,134,123, +113,130,120,110,133,122,112,111,97,85,43,75,76,71,120,121,71,120,121,47,75,76, +47,75,76,71,120,121,71,120,121,42,75,76,112,97,85,130,120,110,131,121,111,124, +113,101,244,225,225,252,226,226,248,226,226,247,226,226,247,226,226,239,220,220, +244,222,222,249,224,224,245,225,225,246,226,226,246,226,226,246,226,226,250,226, +226,248,226,226,246,226,226,175,156,162,173,24,62,171,23,61,144,15,49,162,21,58, +164,14,55,164,13,55,164,13,55,164,13,55,164,17,55,164,22,58,164,20,57,164,13,55, +164,13,55,164,13,55,164,13,55,164,18,56,164,22,58,150,19,53,140,15,48,176,88, +107,247,228,228,246,226,226,246,226,226,246,226,226,246,226,226,246,226,226,246, +226,226,246,226,226,246,226,226,246,226,226,246,226,226,246,226,226,246,226,226, +246,226,226,248,227,227,248,233,233,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,41,24,48,44,24,43,83,58,83,57,42,60,60,37,69,62,36,61,106, +76,106,68,50,72,67,50,70,66,39,64,110,81,106,66,39,64,31,29,44,188,187,113,30, +30,42,45,49,47,43,48,50,42,41,45,41,40,40,55,50,54,53,49,69,52,47,58,52,48,55, +51,47,51,51,61,51,51,50,51,51,47,52,51,56,51,51,47,56,51,48,51,51,58,52,51,52, +51,51,57,62,51,47,58,51,47,52,51,52,51,51,51,52,51,47,51,51,47,61,51,58,65,51, +55,64,51,47,51,51,47,59,51,48,55,52,47,51,37,53,37,38,36,38,38,46,50,38,37,38, +38,36,47,38,36,39,38,37,38,39,37,45,39,37,39,39,39,39,39,37,39,39,37,53,40,38, +45,40,46,40,29,29,35,40,38,40,40,38,40,40,50,50,27,43,32,133,123,113,138,127, +114,137,127,115,112,99,86,42,74,76,71,119,120,77,123,124,47,75,76,47,75,76,77, +123,124,71,119,120,43,76,78,112,97,85,132,122,112,130,120,110,131,121,111,141, +130,120,136,124,113,133,123,113,111,97,85,57,101,104,97,164,165,105,169,170,63, +101,102,59,95,97,88,141,142,73,122,123,42,74,76,111,97,85,131,121,111,130,120, +111,127,118,106,129,119,109,137,124,114,136,125,115,111,97,85,42,74,76,71,119, +120,77,123,124,47,75,76,47,75,76,77,123,124,71,119,120,42,74,76,111,97,85,136, +125,115,132,122,112,135,124,114,140,129,119,135,124,114,138,127,115,112,99,86, +57,84,117,107,147,182,118,157,184,62,85,113,58,79,106,96,127,157,79,108,142,42, +61,85,110,96,84,138,127,115,141,130,119,132,122,112,137,127,114,132,122,112,133, +122,111,110,96,84,43,74,76,72,121,122,87,139,140,61,97,99,50,79,80,77,123,124, +71,119,120,42,74,76,111,97,85,134,124,114,118,111,100,132,132,132,97,97,98,126, +118,107,141,130,120,112,99,86,42,74,76,71,119,120,77,123,124,47,76,77,52,83,84, +97,155,157,96,161,162,57,101,104,111,96,85,142,131,121,133,123,113,137,127,115, +79,71,62,110,98,86,133,123,112,123,115,106,104,66,49,93,58,42,93,58,42,93,58,42, +93,58,42,92,58,42,92,58,41,104,66,49,122,113,103,127,118,107,111,96,85,79,71,62, +143,132,121,136,124,113,139,128,117,111,97,85,42,74,76,71,119,120,77,123,124,47, +75,76,47,75,76,77,123,124,71,119,120,42,74,76,112,99,87,133,123,113,137,124,113, +128,114,101,254,255,255,255,255,255,255,255,255,255,255,255,254,255,255,247,248, +248,250,251,251,252,253,253,253,254,254,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,246,226,226,172,123,135,169,17,58,152,19,54,155,21,55,173, +21,60,147,16,51,147,16,51,147,16,51,147,16,51,147,16,51,147,16,51,147,16,51,147, +16,51,147,16,51,147,16,51,147,16,51,147,16,51,173,24,62,156,20,55,142,16,49,173, +72,94,176,160,164,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,255,255,255,255,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,71,52,70,76,54,73,123,121,125,56,35,54,100,74,99,104,75, +100,150,148,152,67,42,65,111,83,112,110,80,113,155,152,162,66,39,64,31,29,57, +188,187,113,30,31,41,45,43,70,43,50,47,42,48,42,41,41,42,55,54,58,53,49,54,52, +57,61,52,54,52,51,48,51,51,51,51,51,50,51,51,47,51,51,49,51,51,49,59,51,50,52, +51,56,51,51,48,51,51,51,58,51,48,52,51,52,62,51,47,62,51,49,52,51,48,51,51,51, +51,51,47,52,51,55,54,52,47,51,52,47,51,51,59,54,52,55,51,38,36,38,38,40,40,38, +36,40,38,36,46,38,41,39,38,36,38,39,43,50,39,45,39,39,38,39,39,37,45,40,38,40, +40,38,39,40,43,54,40,38,56,30,29,33,27,24,38,28,24,38,27,24,38,26,25,31,134,124, +114,139,128,117,139,128,117,113,100,85,42,74,76,71,119,120,77,123,124,47,75,76, +47,75,76,77,123,124,71,119,120,42,74,76,113,100,85,140,128,117,129,120,109,130, +120,110,136,126,114,145,133,121,141,130,120,113,100,85,57,101,104,97,165,166, +107,171,172,64,103,104,64,102,103,102,163,165,85,144,146,45,79,81,113,100,88, +134,124,114,129,120,109,129,119,109,132,122,112,132,122,112,136,124,114,111,97, +85,42,74,76,71,119,120,77,123,124,47,75,76,47,75,76,77,123,124,71,119,120,42,74, +76,111,97,85,131,121,111,127,117,109,136,126,114,136,126,114,139,128,118,147, +137,124,114,101,86,57,84,115,107,147,182,117,157,184,63,86,115,62,85,114,108, +145,173,88,122,156,42,62,86,110,96,84,134,123,113,139,128,117,132,122,112,139, +128,117,139,128,117,138,127,115,111,97,85,42,74,76,71,119,120,78,125,126,53,84, +86,61,97,99,81,130,131,71,119,120,42,74,76,112,99,86,136,125,115,124,116,106, +131,132,132,97,97,98,122,113,103,132,122,112,113,99,86,42,74,76,71,119,120,77, +123,124,47,75,76,47,76,77,85,137,138,89,150,152,56,100,103,112,96,85,140,131, +119,135,123,112,138,127,115,79,71,62,109,96,85,132,122,112,130,123,112,95,59,41, +104,66,49,118,73,48,118,73,48,118,73,48,118,73,48,104,66,49,94,60,42,127,119, +108,132,122,112,111,96,85,79,71,62,139,128,117,142,130,120,141,130,119,113,100, +85,42,74,76,71,119,120,77,123,124,47,75,76,47,75,76,77,123,124,71,119,120,42,74, +76,111,97,85,132,122,112,129,119,109,128,115,104,254,255,255,255,255,255,255, +255,255,255,255,255,254,255,255,248,249,249,251,252,252,253,254,254,253,254,254, +254,255,255,254,255,255,254,255,255,254,255,255,248,232,232,173,131,143,168,21, +59,156,20,55,150,19,53,172,27,64,147,16,51,142,145,148,99,117,143,100,118,143, +101,119,144,102,119,144,148,19,52,153,50,98,101,119,144,144,146,148,98,117,143, +98,117,143,99,117,142,147,16,51,163,20,57,151,18,53,160,20,57,172,63,88,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,255,255,255, +255,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,69, +51,66,74,51,74,122,121,126,54,31,57,97,73,94,101,70,102,149,148,153,65,38,68, +109,79,105,107,75,103,154,151,159,66,39,64,31,29,43,188,187,115,30,46,41,45,48, +43,43,44,44,42,42,43,40,39,41,55,50,59,53,49,53,52,53,52,52,49,52,51,48,58,51, +57,51,51,48,55,51,47,51,51,47,59,51,47,56,51,47,56,51,51,52,51,48,53,51,55,56, +51,52,52,51,48,54,51,47,52,51,47,56,51,51,51,51,47,51,51,47,51,52,50,52,37,40, +45,37,40,47,52,50,66,37,36,55,38,36,37,38,49,44,38,44,39,38,36,47,38,36,42,39, +41,39,39,38,39,39,43,41,39,45,39,40,40,40,40,38,52,40,38,43,41,38,42,121,120,68, +134,132,77,157,156,85,154,153,82,150,153,81,156,157,95,137,126,116,128,118,109, +140,129,120,112,99,86,42,74,76,73,119,120,77,123,124,47,75,76,47,75,76,77,123, +124,73,119,120,42,74,76,110,96,85,141,129,119,133,122,112,133,123,113,137,126, +114,135,124,114,140,129,119,112,99,86,59,104,106,63,101,103,63,100,103,66,106, +107,66,106,107,63,100,103,61,99,100,54,95,96,113,100,85,137,127,115,132,122,112, +128,119,109,137,127,114,136,126,114,139,128,117,112,99,86,42,74,76,73,119,120, +77,123,124,47,75,76,47,75,76,77,123,124,73,119,120,42,74,76,111,97,85,136,124, +113,138,127,116,141,129,120,136,126,114,141,130,120,150,138,126,112,100,87,57, +84,115,108,150,182,117,157,184,63,86,115,63,86,115,116,155,183,102,141,173,48, +70,98,113,100,85,137,125,115,133,123,113,127,117,109,132,122,112,133,122,111, +139,128,117,111,97,85,42,74,76,73,119,120,77,123,124,48,76,77,53,84,86,100,160, +161,78,127,128,42,74,76,112,99,86,136,125,115,123,115,104,131,132,132,97,97,98, +125,117,105,140,129,118,113,100,85,42,74,76,73,119,120,72,145,80,47,75,76,47,75, +76,78,124,125,81,133,134,53,94,97,112,97,85,137,125,114,140,129,119,136,125,115, +79,71,62,110,98,86,139,128,120,133,123,114,97,60,42,119,74,49,118,73,49,118,73, +49,118,73,49,118,73,49,119,74,49,95,61,43,129,120,108,129,120,108,110,96,85,79, +71,62,142,131,122,137,126,114,138,127,115,112,99,86,42,74,76,73,119,120,77,123, +124,47,75,76,47,75,76,77,123,124,73,119,120,42,74,76,112,99,87,127,118,106,132, +122,112,123,112,100,254,255,255,255,255,255,255,255,255,255,255,255,254,255,255, +249,250,250,251,252,252,253,254,254,254,255,255,254,255,255,254,255,255,254,255, +255,251,245,245,173,129,141,170,17,58,157,21,56,147,16,51,169,32,68,147,18,51, +102,119,144,105,121,145,148,149,152,113,127,149,109,118,131,113,122,133,156,27, +58,157,59,112,118,131,151,112,126,148,146,148,150,101,119,144,99,117,143,92,104, +121,147,16,51,162,19,56,135,13,45,175,64,89,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,255,255,255,255,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,106,104,109,113,111,115,122,120, +126,91,65,88,140,138,142,145,143,147,149,147,153,107,77,103,153,151,155,152,152, +154,154,151,156,66,39,64,31,29,48,188,187,113,30,31,41,45,60,51,43,50,47,42,41, +42,56,51,56,54,50,54,53,49,53,52,54,52,52,49,55,51,48,58,51,48,51,51,47,55,51, +47,51,51,47,52,51,47,57,51,47,65,51,46,54,47,42,52,47,43,56,50,56,52,51,47,66, +51,47,55,51,50,64,51,47,51,51,47,51,52,48,53,37,45,38,38,37,38,38,37,51,38,40, +38,38,36,38,38,36,48,38,49,38,38,35,41,38,36,43,39,39,51,39,37,42,39,38,39,40, +48,40,40,38,40,40,44,44,68,67,48,142,141,79,147,146,82,122,120,70,135,133,74,84, +84,52,28,25,39,28,31,39,26,24,31,141,129,118,132,122,112,138,127,116,112,99,85, +42,74,76,71,118,119,77,122,123,47,75,76,47,75,76,77,122,123,71,118,119,42,74,76, +111,99,87,147,135,123,139,128,118,140,129,119,139,128,119,137,126,115,139,128, +117,112,99,87,57,103,104,97,164,165,107,169,171,64,103,104,64,103,104,107,169, +171,97,164,165,56,101,103,112,99,86,143,133,121,135,124,114,132,121,111,139,128, +115,137,126,115,139,128,117,113,100,85,42,74,76,71,118,119,77,122,123,47,75,76, +47,75,76,77,122,123,71,118,119,42,74,76,112,99,86,144,133,122,140,130,121,143, +133,122,138,128,118,143,133,122,145,134,123,114,101,86,57,83,117,107,147,182, +117,157,184,63,86,115,63,86,115,117,157,184,106,146,181,54,79,111,112,99,86,138, +127,115,139,128,117,138,126,114,136,126,114,136,126,114,139,128,117,111,97,85, +42,74,76,71,119,120,77,123,124,47,75,76,48,76,77,87,139,141,96,161,162,45,79,81, +114,101,86,141,129,120,128,119,107,131,132,132,97,97,98,125,117,105,134,123,112, +112,99,86,42,74,76,69,144,77,72,145,80,47,75,76,47,75,76,77,123,124,72,120,121, +47,84,86,113,99,86,141,131,119,139,128,118,142,131,122,79,71,62,110,98,86,142, +130,121,142,131,121,97,60,42,120,74,49,119,73,49,119,73,49,119,73,49,119,73,49, +120,74,49,97,60,42,140,129,118,137,127,115,110,98,86,79,71,62,141,130,120,141, +130,120,141,130,119,113,100,87,42,74,76,71,119,120,77,123,124,47,75,76,47,75,76, +77,123,124,71,119,120,42,74,76,113,100,87,140,128,117,138,127,116,129,117,104, +254,255,255,255,255,255,255,255,255,255,255,255,254,255,255,250,251,251,252,253, +253,253,254,254,254,255,255,254,255,255,254,255,255,254,255,255,251,245,245,173, +130,142,170,20,59,158,21,56,148,18,52,148,19,52,99,110,126,109,125,147,117,130, +151,125,136,153,160,160,160,130,136,143,133,138,145,164,33,65,161,67,125,136, +145,158,129,138,154,120,132,152,147,148,151,98,108,124,95,106,123,93,104,121, +147,16,51,136,12,46,175,63,88,254,254,254,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,255,255,255,255,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,41,24,48,44,24,43,83,58,83,57,42,60,60,37, +69,62,36,61,106,76,106,102,77,89,101,76,87,100,65,81,149,109,121,66,39,64,31,29, +44,188,187,113,30,30,42,45,49,47,43,48,50,42,41,45,41,40,40,55,50,54,53,50,63, +52,51,52,52,49,60,51,59,67,51,52,50,51,55,60,51,48,62,51,48,51,51,47,51,51,48, +52,46,42,53,121,119,125,126,126,128,46,43,58,51,59,61,51,46,51,51,55,52,51,55, +52,51,47,60,52,48,54,38,37,45,38,37,48,38,40,47,38,36,39,38,43,42,38,43,44,38, +35,38,38,42,38,39,51,42,39,42,53,39,55,42,40,37,58,40,49,55,40,55,40,132,132,73, +140,138,78,143,142,79,41,39,41,39,47,51,66,39,64,66,39,64,66,39,64,66,39,64,66, +39,64,143,130,119,138,126,115,138,127,116,111,97,85,42,73,75,70,118,119,76,122, +123,47,74,75,47,74,75,76,122,123,70,118,119,42,73,75,112,99,84,143,131,120,137, +126,115,135,124,113,140,129,119,137,126,115,138,127,116,113,100,85,57,99,102,96, +162,164,104,168,169,64,101,103,64,101,103,104,168,169,96,162,164,57,100,103,112, +97,85,137,125,114,139,128,116,139,128,117,131,122,112,140,129,117,136,124,113, +112,99,84,42,73,75,70,118,119,76,122,123,47,74,75,47,74,75,76,122,123,70,118, +119,42,73,75,110,96,85,143,131,120,138,127,116,135,124,113,137,126,115,136,124, +113,142,132,121,110,97,85,56,82,115,107,147,182,118,155,183,63,86,115,63,86,115, +118,155,183,107,147,182,57,83,116,110,96,84,132,122,112,130,120,110,139,128,117, +139,128,117,136,124,113,140,129,119,111,97,85,42,74,76,71,118,119,77,122,123,47, +75,76,47,75,76,112,94,94,111,96,96,56,100,103,110,96,85,146,134,122,124,116,106, +131,132,132,97,97,98,124,116,105,132,122,112,111,97,87,42,74,76,69,144,76,72, +145,79,47,75,76,47,75,76,72,145,79,71,118,119,42,75,77,111,97,86,134,124,114, +133,122,111,141,130,119,79,71,62,109,96,85,132,123,112,140,129,118,97,60,42,120, +74,49,119,73,49,119,73,49,119,73,49,119,73,49,120,74,49,97,60,42,134,126,116, +141,130,120,110,98,86,79,71,62,134,124,114,133,123,112,138,127,116,112,99,86,42, +74,76,71,118,119,77,122,123,47,75,76,47,75,76,77,122,123,71,118,119,42,74,76, +111,99,86,131,122,113,141,130,120,130,119,106,254,255,255,255,255,255,255,255, +255,255,255,255,254,255,255,251,252,252,253,253,253,253,253,253,254,254,254,254, +254,254,254,254,254,254,254,254,172,120,132,173,26,63,156,22,56,150,20,54,173, +31,66,152,22,55,109,118,131,115,123,134,131,140,155,139,148,159,138,143,149,168, +168,168,144,148,152,167,36,68,162,73,131,148,154,163,144,151,162,131,140,155, +118,131,151,153,153,154,107,117,131,99,110,126,147,18,51,139,15,48,174,31,67, +170,60,86,253,253,253,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,255, +255,255,255,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,71,52,70,76,54,73,123,121,125,56,35,54,100,74,99,104,75,100,150,148,152,100, +68,82,150,111,126,148,108,127,198,182,173,66,39,64,31,29,57,188,187,113,30,31, +41,45,43,70,43,50,47,42,48,42,41,41,42,55,54,58,53,49,53,52,53,58,52,48,52,51, +49,50,51,56,65,51,47,51,51,48,51,51,47,58,51,47,54,51,49,52,42,47,43,154,152, +154,158,156,160,42,38,42,51,46,54,51,59,58,51,46,54,51,49,51,51,47,51,52,48,61, +37,36,45,38,44,43,38,44,39,38,36,47,38,36,37,38,36,38,38,42,38,39,38,39,39,40, +39,39,37,39,39,38,39,40,39,39,40,49,39,98,95,63,141,140,79,53,51,47,30,29,44,66, +39,64,83,63,87,94,70,95,69,46,68,112,83,110,111,81,108,133,130,136,133,122,103, +130,121,111,133,124,114,112,99,84,41,73,75,70,119,120,70,119,120,46,74,75,46,74, +75,70,119,120,70,119,120,41,74,75,109,95,84,138,127,117,135,123,113,133,122,113, +138,127,117,132,122,111,138,127,117,112,99,84,52,93,95,94,161,162,96,163,165,63, +101,103,63,101,103,96,164,165,96,164,165,56,100,103,112,99,84,138,127,116,133, +123,113,137,126,115,140,129,119,137,126,115,137,125,114,112,99,84,41,73,75,70, +119,120,70,119,120,46,74,75,46,74,75,70,119,120,70,119,120,41,73,75,110,96,85, +142,133,122,139,128,116,139,128,118,138,127,115,138,127,115,140,129,117,110,97, +85,51,77,105,104,145,180,104,147,182,63,85,114,63,85,114,104,147,182,106,147, +182,56,84,114,111,97,85,142,131,121,131,121,111,137,124,113,133,122,111,136,124, +113,140,129,119,111,96,85,41,73,75,110,91,92,110,91,92,46,74,75,46,74,75,110,91, +92,110,91,92,44,78,80,111,97,85,139,127,116,124,115,106,131,132,132,97,97,98, +124,116,105,130,120,110,111,97,85,41,73,75,69,144,77,70,119,120,46,74,75,46,74, +75,69,144,77,69,144,77,41,73,75,112,99,86,133,123,113,128,119,109,138,127,116, +79,71,62,109,96,85,130,121,110,132,124,113,97,60,42,120,74,49,119,73,49,119,73, +49,119,73,49,120,74,49,121,74,49,97,61,42,131,122,112,131,121,111,110,98,86,79, +71,62,136,124,113,132,122,112,138,127,116,111,95,84,43,73,75,70,119,120,70,119, +120,47,74,75,47,74,75,70,119,120,70,119,120,43,73,75,111,97,85,132,122,112,131, +121,111,130,118,105,254,255,255,254,255,255,254,255,255,254,255,255,255,255,255, +187,176,179,171,57,82,174,59,86,174,59,86,174,59,86,175,60,86,174,62,88,174,44, +75,155,22,56,155,22,56,173,33,68,174,36,69,157,28,59,179,74,96,180,78,100,180, +82,103,181,85,108,182,87,109,182,88,110,182,88,110,169,39,70,176,61,99,182,88, +110,181,84,107,180,79,101,179,76,98,180,78,100,178,72,95,178,64,89,147,19,52, +160,23,58,144,15,49,172,29,64,254,252,252,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,255,255,255,255,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,69,51,66,74,51,74,122,121,126,54,31,57,97,73,94,101,70, +102,149,148,153,98,64,86,148,107,120,144,103,118,197,181,170,66,39,64,31,29,43, +188,187,115,30,46,41,45,48,43,43,44,44,42,42,43,40,39,41,55,50,59,53,51,53,52, +48,52,52,52,57,51,61,51,51,48,56,51,49,51,51,47,51,51,47,51,51,50,51,51,47,50, +40,34,55,168,166,170,168,170,168,40,34,65,51,47,50,51,47,51,51,55,51,51,51,51, +51,47,57,51,47,51,52,48,55,37,36,38,38,37,39,38,39,50,38,36,58,38,37,45,38,37, +42,39,47,43,39,37,39,39,38,52,40,39,40,40,50,49,125,123,74,141,139,78,80,84,57, +41,40,47,39,38,48,100,75,101,108,82,107,115,91,111,69,46,68,110,81,113,109,82, +110,129,124,132,128,119,98,130,120,111,130,120,110,108,94,82,33,70,72,37,70,71, +37,70,71,37,71,73,38,71,73,38,70,71,37,70,71,33,70,72,108,94,82,139,129,117,138, +128,117,135,124,114,136,123,112,129,119,109,138,127,116,110,95,83,36,76,78,44, +85,87,47,93,94,52,98,100,52,99,101,50,97,99,50,97,99,45,97,100,109,94,82,136, +124,113,140,129,117,137,126,115,139,128,117,139,128,117,140,128,117,109,95,83, +32,71,73,36,70,72,36,70,72,37,72,73,37,72,73,36,70,72,36,70,72,33,71,73,109,95, +82,137,125,115,138,127,116,146,133,122,146,133,122,146,134,122,151,140,127,110, +97,83,35,63,91,45,71,100,48,76,107,52,81,112,52,81,114,49,78,110,50,78,110,45, +78,113,109,98,82,136,124,113,136,123,112,131,121,111,130,120,110,132,122,112, +139,128,116,110,98,83,33,71,73,102,60,61,102,60,61,37,72,73,37,72,73,102,60,61, +102,60,61,34,72,74,107,94,82,132,122,112,118,111,102,132,132,132,97,97,98,124, +116,105,134,124,113,109,95,83,33,71,74,59,132,46,38,71,73,38,72,74,37,72,74,58, +132,46,37,71,72,33,71,74,109,97,84,137,125,115,138,127,116,138,127,116,79,71,62, +110,98,86,132,123,112,125,115,106,97,61,43,120,74,49,119,73,49,119,73,49,120,74, +49,58,55,51,59,56,51,98,61,42,131,122,112,132,122,112,109,96,85,79,71,62,133, +123,114,136,124,113,139,127,117,110,97,82,33,71,74,37,71,72,37,71,72,38,72,74, +38,72,74,36,70,72,36,70,72,32,71,73,110,97,84,133,123,113,131,121,111,123,112, +100,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,185,169,174,157, +17,55,135,12,46,135,12,46,136,14,47,138,15,48,138,15,48,142,17,50,156,25,57,170, +31,66,174,37,70,176,44,76,163,34,66,179,52,80,179,54,83,181,56,85,182,58,87,182, +58,87,182,58,87,182,58,87,172,42,73,182,58,86,182,57,85,180,56,84,179,54,82,179, +53,80,179,52,79,178,46,77,175,39,72,149,22,54,166,26,61,133,11,44,171,29,64,253, +251,251,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,255,255,255,255,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,106,104,109, +113,111,115,122,120,126,91,65,88,140,138,142,145,143,147,149,147,153,145,104, +118,196,181,166,196,183,166,197,181,167,66,39,64,31,29,48,188,187,113,30,31,41, +45,60,51,43,50,47,42,41,42,56,51,56,54,50,54,53,55,53,52,48,63,52,49,52,51,47, +60,51,52,51,51,47,59,51,47,55,51,47,56,51,53,51,51,47,56,39,33,59,168,171,170, +168,170,169,39,33,38,51,47,56,51,47,56,51,47,52,51,58,54,51,47,52,51,58,51,51, +47,57,52,52,52,38,37,39,38,39,38,38,46,38,38,40,39,39,38,39,39,41,48,39,44,39, +40,37,40,40,39,45,67,73,48,145,143,80,149,149,84,35,34,47,55,45,63,70,47,69,99, +74,102,110,81,113,109,80,112,69,46,68,131,133,133,132,130,137,131,128,134,137, +125,114,128,118,107,127,117,105,141,135,134,152,145,140,142,137,132,142,135,131, +150,144,137,148,140,134,139,133,129,141,135,131,151,145,139,143,137,133,139,128, +116,133,123,113,127,117,105,129,120,110,130,121,111,132,122,110,152,147,140,144, +140,134,150,143,139,151,144,140,147,141,136,142,137,132,144,139,134,147,142,135, +147,142,137,143,138,134,126,116,105,131,121,111,130,120,110,126,116,105,129,119, +109,132,122,111,148,142,139,152,148,142,150,143,138,151,144,141,150,143,140,149, +142,138,152,145,140,156,150,144,146,141,135,143,135,130,132,122,111,135,123,113, +136,123,113,141,130,118,140,129,116,139,129,116,143,138,132,150,141,138,148,142, +136,150,142,139,145,140,134,139,132,125,153,147,141,143,137,132,144,138,132,144, +139,133,133,122,112,131,120,110,127,118,107,126,117,106,128,118,109,131,120,110, +143,137,132,148,141,136,151,145,139,147,140,134,152,144,141,152,144,141,150,140, +135,150,141,139,143,135,131,142,134,130,130,120,111,118,111,102,132,132,132,97, +97,98,124,116,105,130,121,111,146,140,136,148,141,134,137,131,125,143,137,132, +143,138,133,148,142,136,157,149,143,141,135,129,145,138,134,146,141,136,133,122, +112,132,122,111,137,125,116,79,71,62,109,96,85,129,120,110,130,121,111,97,61,43, +120,74,49,119,73,49,119,73,49,119,73,49,120,74,49,121,74,49,97,60,42,132,124, +113,130,120,110,108,95,84,79,71,62,132,122,112,122,111,102,132,121,111,152,147, +141,141,135,130,147,140,134,143,139,134,144,139,134,145,140,135,150,144,140,146, +141,136,152,147,141,146,140,137,133,122,112,131,120,109,126,113,100,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,187,168,173,153,16,52,135,12,45, +156,20,55,156,21,55,157,25,56,158,26,57,158,28,58,168,32,65,173,36,69,175,43,75, +178,52,80,169,39,70,181,56,85,182,57,87,183,59,88,184,59,88,179,53,81,178,53,81, +184,59,88,175,44,75,178,53,81,178,52,80,182,58,87,177,49,78,169,40,71,167,36,68, +162,34,66,157,29,59,150,24,54,166,27,61,133,13,44,170,29,63,251,249,249,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,255,255,255,255,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,41,27,43,44,24,43,83,58,80, +57,36,56,60,41,63,62,36,60,106,76,102,68,44,67,67,47,66,66,39,64,110,79,106,66, +39,64,31,29,43,188,187,113,30,42,53,45,42,46,43,43,48,42,43,42,56,50,64,54,50, +54,53,49,60,52,51,57,52,66,52,51,46,56,51,58,51,51,48,51,51,55,51,51,47,51,51, +47,51,51,51,51,39,34,46,168,166,168,168,166,170,39,37,49,51,55,51,51,52,51,51, +48,51,51,47,58,51,47,51,51,47,56,51,47,51,52,51,56,37,36,47,38,39,38,38,36,38, +38,48,38,39,37,44,39,38,39,39,37,39,40,39,40,38,48,40,108,107,62,149,148,84,46, +44,51,66,39,64,70,46,69,104,73,85,104,73,85,104,73,85,103,73,85,103,72,84,69,44, +71,66,47,79,107,77,110,140,128,117,132,121,112,134,123,114,131,120,109,138,128, +115,137,127,115,136,124,114,142,130,118,135,123,113,129,119,110,129,117,106,137, +124,114,128,118,109,138,128,114,135,123,113,130,120,110,137,125,115,137,123,114, +137,123,115,123,113,104,132,121,112,133,122,113,133,122,112,135,123,114,130,120, +108,129,120,109,134,124,113,128,117,106,135,124,114,138,128,116,137,126,116,135, +125,114,139,130,117,134,124,115,130,120,108,132,123,113,129,118,107,136,125,113, +140,130,116,133,122,113,136,127,115,129,119,109,138,129,116,135,124,114,133,123, +113,138,129,117,133,122,112,136,127,114,139,128,115,136,124,114,140,130,116,136, +122,112,143,130,121,135,121,111,135,123,113,133,122,112,135,123,113,135,123,112, +133,121,111,142,129,119,136,124,114,139,129,117,137,126,114,141,130,117,128,118, +109,122,112,105,134,122,114,136,124,114,131,120,110,138,128,115,139,129,118,142, +131,119,140,129,115,140,129,116,142,132,119,133,122,113,131,120,109,133,121,111, +123,115,104,131,132,132,97,97,98,123,113,104,131,120,110,140,127,116,135,123, +114,129,119,110,131,121,111,129,118,109,135,123,114,136,124,115,132,121,110,131, +119,109,137,126,116,136,124,115,136,124,114,137,125,116,79,71,62,110,98,86,133, +123,113,138,126,115,97,60,42,120,74,49,119,73,49,119,73,49,119,73,49,119,73,49, +120,74,49,97,60,42,132,123,113,130,121,110,110,98,86,79,71,62,130,120,110,126, +115,105,129,119,109,137,127,116,132,122,112,145,132,121,133,123,112,136,126,115, +130,119,109,132,122,110,136,124,114,133,121,110,137,126,115,137,128,115,136,124, +114,128,114,103,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,185, +167,171,152,15,52,135,13,46,169,25,62,200,178,56,189,138,78,174,68,92,174,70,93, +175,72,94,176,75,97,177,83,106,179,56,84,171,42,72,181,58,87,181,59,87,182,60, +88,182,60,88,182,60,88,182,60,88,182,60,88,174,44,75,181,59,87,181,59,87,176,52, +79,171,42,72,180,92,110,178,86,107,176,77,99,174,69,93,174,64,89,165,30,62,132, +12,44,168,30,64,244,228,228,253,253,253,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +255,255,255,255,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,71,52,73,76,54,74,123,121,131,56,47,58,100,74,103,104,75,102,150,148, +157,67,56,69,111,82,112,110,80,106,155,152,160,66,39,64,31,61,54,188,187,112,30, +28,52,45,43,46,43,43,47,42,44,57,56,50,55,54,50,54,53,49,53,52,51,52,52,47,52, +51,51,51,51,47,51,51,52,51,51,52,51,51,48,51,51,58,51,51,48,54,39,35,39,168,166, +168,168,166,168,39,35,43,51,52,51,51,58,51,51,52,51,51,49,52,51,47,60,51,52,51, +51,48,51,51,51,61,52,47,51,38,36,38,38,36,38,39,37,45,39,42,38,39,37,46,40,40, +41,39,37,40,63,64,47,155,155,85,84,84,64,66,39,64,110,82,110,99,73,100,104,73, +85,152,112,123,149,108,121,173,159,148,100,68,82,109,82,106,107,84,104,129,129, +132,134,124,112,127,117,107,124,114,104,128,118,106,133,123,114,130,120,110,130, +120,110,128,118,106,129,119,107,133,123,113,127,118,107,127,118,107,127,118,107, +132,122,112,138,127,115,136,125,115,132,122,112,131,121,111,131,121,111,128,118, +106,132,122,112,127,118,107,129,119,107,133,124,114,131,121,111,135,124,113,81, +82,84,69,70,71,69,70,71,69,70,71,69,70,71,69,70,71,69,70,71,69,70,71,69,70,71, +69,70,71,69,70,71,81,83,84,128,115,106,133,124,112,136,122,112,127,117,107,130, +119,111,132,121,112,132,121,112,138,124,114,130,119,109,131,120,111,129,119,109, +131,120,111,129,120,109,135,123,115,140,129,116,131,121,111,131,121,111,126,115, +105,129,119,107,132,122,112,132,122,112,135,124,114,138,128,114,132,122,112,138, +127,115,132,122,112,136,125,114,133,123,112,130,120,109,126,117,105,146,132,121, +140,130,120,141,130,119,135,124,113,136,127,114,133,122,112,132,121,111,130,120, +109,138,128,115,129,119,109,118,110,100,132,132,132,97,97,98,119,112,102,132, +121,109,132,121,111,130,119,107,128,117,106,130,121,109,128,117,106,136,125,115, +135,123,113,136,125,115,136,125,114,131,120,109,130,119,109,136,125,113,136,125, +115,79,71,62,111,99,85,134,123,113,134,126,116,97,60,42,120,74,49,119,73,49,119, +73,49,119,73,49,119,73,49,120,74,49,97,60,42,133,125,114,140,129,118,111,99,85, +79,71,62,131,120,111,128,118,109,130,119,110,133,122,113,135,123,113,141,130, +119,130,119,109,131,120,110,128,118,109,129,119,107,128,119,109,127,118,107,137, +124,115,131,121,110,142,131,120,122,111,99,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,182,164,169,149,15,51,134,14,46,166,29,63,172,62,86,166, +38,69,162,34,64,162,36,66,163,37,67,173,47,75,176,85,107,176,55,83,168,40,70, +177,57,85,178,57,86,178,58,86,178,57,86,177,57,85,177,56,85,177,55,84,167,41,71, +176,55,83,172,48,76,165,39,69,175,85,106,173,48,75,162,38,68,159,32,63,156,28, +58,167,31,65,172,58,84,131,13,45,165,24,59,164,18,56,251,242,242,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,255,255,255,255,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,69,48,66,74,55,71,122,122,124,54,34,53,97, +70,94,101,76,97,149,149,151,65,41,63,109,82,105,107,80,103,154,152,156,66,39,64, +31,29,44,188,187,113,30,48,45,45,43,48,43,46,49,42,41,44,56,50,55,54,50,59,53, +50,53,52,49,52,52,62,52,51,46,51,51,65,51,51,47,55,51,56,51,51,48,55,51,50,51, +51,54,51,39,45,39,168,166,168,168,166,168,39,35,56,51,48,57,51,48,51,51,48,51, +51,47,55,51,47,54,51,47,51,51,47,51,52,47,57,37,36,52,38,37,43,38,52,37,39,36, +49,39,50,53,39,37,58,40,41,51,35,35,41,111,111,66,106,105,67,32,30,38,66,39,64, +112,82,111,140,132,142,104,73,85,148,108,126,146,109,123,168,152,143,97,63,85, +105,82,104,103,82,99,131,127,133,126,117,105,129,118,109,128,117,106,131,121, +111,127,117,106,128,118,107,128,118,107,124,115,106,130,121,110,123,114,105,126, +115,105,132,121,111,124,114,105,133,124,113,129,119,109,123,115,106,129,119,109, +130,120,110,128,118,107,132,122,110,128,118,109,129,119,109,127,115,105,133,124, +113,127,115,106,133,123,114,69,70,71,87,87,87,87,87,87,87,87,87,87,87,87,87,87, +87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,87,70,70,71,123,113,105,132,121, +112,128,118,109,128,117,107,129,118,109,129,119,109,130,120,110,133,123,113,136, +122,112,129,118,109,130,120,110,140,129,117,123,114,106,127,114,106,137,128,115, +133,125,113,130,120,110,126,115,106,130,120,110,131,121,111,129,118,107,131,120, +111,133,124,113,130,119,110,117,108,99,126,115,106,128,117,107,128,117,107,132, +122,112,122,112,104,132,122,112,137,129,115,132,122,112,136,126,113,135,126,113, +132,122,113,132,121,112,128,117,106,132,121,113,130,118,107,116,108,97,132,132, +132,97,97,98,117,110,99,127,117,107,131,120,112,127,117,107,127,117,107,128,118, +108,117,108,99,134,123,113,128,117,107,129,118,107,128,118,107,134,123,114,134, +123,114,128,118,107,133,122,113,79,71,62,110,96,85,141,129,120,133,123,113,96, +58,40,104,66,49,120,72,47,119,72,47,120,72,47,119,72,47,104,66,49,97,59,40,134, +124,114,132,123,112,110,96,85,79,71,62,133,123,112,124,115,105,126,117,106,137, +125,114,126,117,106,127,118,107,129,119,107,127,118,107,129,119,107,132,122,112, +128,117,105,128,118,107,137,127,114,130,119,109,132,121,112,121,110,95,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,177,159,164,145,14,49,132, +14,45,163,29,63,163,30,63,135,19,48,15,15,15,16,16,16,17,17,17,141,21,50,167,42, +72,168,43,73,154,31,62,169,50,76,169,52,79,171,52,79,170,51,78,171,50,77,168,50, +77,169,50,76,157,33,63,168,48,74,154,32,62,166,42,72,164,36,66,134,17,47,15,15, +15,14,14,14,13,13,13,131,14,45,161,28,62,158,23,57,125,11,41,157,15,53,253,242, +242,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,255,255,255,255,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,106,109,109,113,110,115,122, +120,124,91,65,90,140,142,142,145,142,147,149,147,151,107,77,106,153,151,155,152, +150,159,154,151,156,66,39,64,31,29,57,188,187,113,30,28,42,45,42,60,43,41,48,42, +40,50,56,65,56,54,50,55,53,49,53,52,48,52,52,61,65,51,46,51,51,52,58,51,48,60, +51,48,60,51,47,52,51,48,51,51,59,51,42,54,48,170,168,170,170,170,171,42,58,46, +51,54,50,51,54,59,51,52,57,51,52,61,51,47,52,51,47,60,51,57,51,51,55,51,52,60, +58,38,35,37,38,35,53,39,39,38,39,49,39,40,37,40,40,38,49,27,32,41,163,163,85, +111,112,82,36,35,39,66,39,64,155,152,157,153,151,155,103,73,85,172,163,146,172, +159,148,169,155,144,140,108,120,124,126,125,118,117,120,123,124,126,121,114,104, +136,124,114,129,118,109,127,117,107,131,122,112,129,119,111,124,113,103,121,111, +102,124,113,103,131,122,111,127,117,107,132,121,111,123,113,104,130,120,111,126, +115,106,130,120,111,128,118,107,133,123,112,129,119,110,131,120,110,126,114,104, +127,118,107,126,114,104,128,117,107,127,115,106,130,119,108,70,70,71,86,86,86, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,86,86, +86,70,71,71,120,109,101,127,114,105,130,120,110,127,117,107,133,122,110,131,121, +111,121,113,104,133,122,110,83,114,61,132,122,112,139,127,116,137,123,113,131, +123,111,128,118,109,132,124,112,129,119,110,129,118,109,128,117,107,130,119,111, +133,123,111,132,124,114,137,124,115,141,129,117,128,117,107,126,114,104,127,115, +105,126,115,105,126,115,105,128,117,107,126,115,105,129,118,109,137,125,115,132, +122,111,143,132,122,131,122,112,132,123,113,133,123,111,124,115,105,128,117,107, +131,120,111,117,109,100,132,132,132,97,97,98,121,115,103,127,117,105,131,120, +110,131,119,111,124,115,105,121,112,103,116,105,96,131,120,111,129,119,109,134, +123,111,134,123,111,128,118,107,127,117,105,123,114,104,127,116,105,79,71,62, +111,98,86,133,124,114,143,131,121,109,97,85,109,96,85,109,98,86,112,100,86,108, +96,85,112,99,86,108,96,85,109,97,85,136,125,115,138,127,115,109,96,85,79,71,62, +129,119,110,120,111,101,128,115,105,120,112,102,123,113,104,123,113,104,130,118, +110,129,119,111,129,118,109,131,121,111,130,118,110,126,114,105,128,117,106,133, +122,112,131,121,111,123,111,100,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,170,153,157,139,13,47,126,13,43,155,27,58,143,22,51,12,12,12,49,49, +49,127,127,127,50,50,50,14,14,14,147,28,55,157,32,62,139,23,51,158,37,66,160,40, +69,161,41,70,160,40,69,160,40,67,160,39,68,158,38,67,143,26,53,157,36,65,140,24, +51,155,30,60,142,24,51,12,12,12,48,48,48,124,124,124,47,47,47,11,11,11,141,20, +49,152,21,54,117,9,38,150,14,51,253,242,242,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,255,255,255,255,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,41,23,42,44,31,58,83,62,80,57,44,56,60,36,61,62,45,81,106,80,102,68, +53,67,67,46,71,66,49,69,110,78,106,66,39,64,31,29,49,188,187,112,30,48,54,45,42, +47,43,41,43,41,45,42,56,51,56,54,61,54,53,49,60,52,48,55,52,48,62,51,53,52,51, +53,52,51,46,61,51,68,52,51,47,52,51,53,51,51,46,62,50,53,49,42,37,43,42,43,41, +50,54,49,51,47,58,51,57,52,51,52,56,51,47,67,51,47,59,51,60,51,51,46,51,51,51, +54,52,49,56,38,36,38,39,51,43,39,38,40,39,38,59,40,45,54,40,37,40,27,27,40,162, +161,84,27,35,48,66,39,64,74,49,73,67,41,65,109,78,108,103,72,84,103,71,88,98,73, +93,140,102,120,96,67,78,62,39,64,57,40,69,92,66,94,124,115,103,126,115,106,128, +118,107,127,115,106,128,119,109,128,119,109,127,115,106,120,111,102,128,115,106, +127,117,107,121,113,103,126,114,105,127,115,106,127,117,107,124,114,104,127,117, +107,130,120,107,126,114,105,129,121,110,134,124,113,126,115,105,119,111,102,129, +118,108,130,118,107,126,115,106,125,115,106,70,71,71,86,86,86,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,86,86,86,71,71,72,116,107, +97,117,109,97,122,112,102,128,118,106,128,118,106,128,120,110,122,113,103,127, +117,106,82,113,59,134,123,113,138,125,113,131,121,110,129,120,110,130,119,109, +130,120,109,130,120,109,126,115,105,124,114,103,124,114,104,127,117,106,126,115, +105,131,121,110,132,121,112,129,118,109,128,117,107,126,115,105,130,118,110,131, +122,111,124,114,104,122,113,104,126,115,105,131,121,110,130,120,109,136,123,113, +131,120,109,130,120,109,133,123,112,124,114,104,124,114,104,123,114,104,113,106, +95,132,132,132,97,97,98,120,113,102,126,115,106,132,122,109,128,118,107,126,115, +106,122,113,104,121,111,102,130,119,110,128,118,107,132,121,110,131,121,111,129, +119,109,129,119,109,129,119,107,127,116,107,91,85,79,111,99,87,140,129,120,91, +85,79,152,147,141,152,147,141,152,147,141,151,147,141,152,147,141,151,147,141, +152,147,141,152,147,141,91,85,79,143,131,121,110,98,86,91,85,79,123,114,104,120, +111,101,120,111,101,128,115,106,123,114,104,125,114,103,122,113,103,130,119,110, +124,114,104,123,114,104,122,113,103,127,117,106,131,121,110,119,109,100,128,117, +107,121,110,98,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,160, +144,148,131,12,43,116,9,38,145,20,52,133,17,46,10,10,10,117,117,117,117,117,117, +118,118,118,11,11,11,135,22,48,146,24,55,128,17,45,137,24,50,148,30,59,148,30, +59,148,30,59,148,30,58,148,28,57,147,29,57,128,18,46,145,26,56,127,16,44,144,24, +54,132,18,46,10,10,10,116,116,116,116,116,116,115,115,115,10,10,10,132,15,46, +142,17,49,109,8,35,141,12,47,253,242,242,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,255,255,255,255,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,71,52,71,76,54,78,123,124,125,56,36,55,100,74,100,104,75,106,150, +151,152,67,44,66,111,82,108,110,82,108,155,152,163,66,39,64,31,29,44,188,187, +112,30,28,57,45,42,45,43,42,49,53,48,57,55,51,55,54,54,54,53,49,67,52,53,61,52, +48,51,51,47,55,51,47,60,51,47,56,51,46,52,51,47,52,51,47,51,51,51,56,51,48,51, +51,49,51,51,54,51,51,54,57,51,48,52,51,48,62,51,47,54,51,55,59,51,47,51,51,50, +52,51,48,57,51,59,51,52,50,55,38,54,38,39,46,50,39,48,42,39,38,38,40,43,49,40, +51,40,27,25,39,163,161,84,27,26,48,66,39,64,113,84,109,110,82,111,153,152,157, +67,42,65,110,82,107,106,83,103,125,125,128,60,38,58,95,71,93,90,70,87,107,107, +110,127,115,106,123,114,105,127,116,107,83,114,60,132,122,111,130,120,108,128, +119,108,125,115,106,82,113,59,129,119,107,132,121,111,129,119,107,128,119,107, +130,120,108,124,115,106,125,115,106,127,116,107,121,111,101,127,116,107,132,121, +111,123,113,105,127,116,107,122,111,101,128,119,108,128,119,108,129,120,109,70, +71,71,86,86,86,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,86,86,86,71,72,72,107,100,91,112,102,92,122,112,103,119,111,102,118, +109,100,127,115,106,82,113,59,80,112,57,82,113,59,126,115,107,130,121,110,85, +114,62,130,120,108,132,121,111,131,121,110,130,120,108,128,118,108,120,111,102, +82,113,60,129,120,110,124,114,106,130,119,108,132,121,112,130,120,108,123,113, +105,123,114,105,128,118,108,123,113,104,128,118,108,122,112,102,129,120,110,133, +122,112,123,113,104,130,120,108,131,122,111,128,118,108,124,114,106,128,118,108, +127,116,106,128,118,108,115,108,97,132,132,133,97,98,98,119,112,102,127,115,106, +129,120,108,130,119,108,125,115,106,120,112,103,117,108,97,128,116,108,130,120, +108,129,120,108,133,122,112,132,121,112,131,121,110,127,116,107,111,99,85,110, +97,86,111,99,85,91,85,79,91,85,79,108,94,81,109,96,81,108,95,82,109,96,81,109, +96,83,109,96,81,108,92,81,107,94,81,91,85,79,91,85,79,111,99,85,111,99,87,112, +98,86,124,114,104,122,113,103,134,123,113,122,114,104,119,110,101,110,103,94, +120,112,103,127,116,107,127,116,107,127,116,107,122,112,103,131,120,110,123,115, +104,128,118,107,120,108,96,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,150,135,139,122,10,40,106,7,34,123,13,42,123,13,42,8,8,8,40,40,40,108, +108,108,40,40,40,9,9,9,125,16,44,125,16,43,125,16,43,117,15,40,126,20,45,137,22, +51,136,22,51,136,22,50,136,22,50,136,22,50,116,14,40,134,20,48,116,12,39,123,16, +42,123,14,42,8,8,8,40,40,40,107,107,107,39,39,39,8,8,8,122,13,41,120,14,41,102, +7,32,132,11,44,253,242,242,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,255,255,255, +255,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,68, +48,66,74,50,71,122,121,124,54,39,55,97,70,94,101,70,97,149,148,151,65,47,66,109, +79,110,107,75,103,154,155,156,66,39,64,31,40,43,188,187,115,30,45,41,45,41,45, +43,48,43,51,58,50,55,55,55,54,50,54,53,49,53,52,48,52,52,57,67,51,51,51,51,47, +52,51,50,52,51,55,60,51,53,55,51,48,60,51,62,58,51,48,52,51,56,51,51,60,60,51, +50,52,51,47,52,51,47,60,51,48,52,51,48,51,51,56,51,51,50,52,51,56,57,51,46,51, +52,56,51,38,36,45,39,48,38,39,44,39,39,38,39,40,38,39,41,44,55,27,25,38,162,160, +86,27,26,50,66,39,64,110,87,107,107,76,103,152,152,154,65,38,70,107,84,106,104, +83,100,128,124,130,57,33,61,90,70,89,84,67,81,106,103,108,111,98,83,112,98,86, +76,109,51,76,109,48,112,99,85,110,98,86,113,101,86,112,99,86,75,109,49,76,109, +49,110,98,86,112,98,86,112,100,88,112,100,88,76,109,49,76,109,49,112,100,88,113, +101,87,113,101,86,112,100,85,112,100,88,112,99,86,112,99,87,112,98,86,113,101, +86,113,100,88,71,71,72,86,86,86,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,86,86,86,72,72,73,94,83,75,99,87,77,101,91,81,106,92,82, +108,95,85,75,108,48,75,109,49,75,109,49,75,109,49,112,100,88,112,100,87,75,109, +49,76,109,48,113,101,86,113,99,87,112,99,87,76,109,48,75,109,49,76,109,50,112, +100,85,112,100,88,112,100,88,110,98,86,110,98,86,112,100,88,111,99,86,112,100, +88,111,99,87,112,100,85,111,99,87,111,96,85,112,100,87,112,100,85,113,101,86, +112,98,86,110,98,86,112,100,88,112,100,85,112,98,86,111,98,82,132,133,133,97,97, +97,98,99,100,107,98,85,111,96,85,111,98,86,110,98,86,112,100,88,110,97,85,111, +97,86,111,99,87,110,98,86,112,98,86,111,99,85,111,99,87,112,99,87,112,100,88, +111,99,87,110,97,86,91,85,79,79,71,62,91,85,79,152,147,141,151,147,141,151,147, +141,151,147,141,151,147,141,151,147,141,152,147,141,151,147,141,91,85,79,79,71, +62,91,85,79,111,99,87,111,99,87,111,99,87,110,95,84,111,99,86,111,99,87,111,97, +86,111,97,86,110,97,86,111,99,87,111,99,86,111,99,87,112,100,85,112,100,85,111, +96,85,112,100,87,100,85,70,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,140,127,131,117,11,39,102,8,33,102,8,33,102,8,33,99,6,31,7,7,7,7,7,7,7, +7,7,101,7,32,104,9,34,104,9,34,104,11,34,104,11,34,104,11,34,105,9,34,104,11,34, +104,9,34,104,9,34,104,9,34,104,9,34,103,9,33,102,9,33,102,8,33,102,8,33,99,7,31, +7,7,7,7,7,7,7,7,7,98,6,31,102,7,32,101,8,32,102,8,33,125,9,40,252,242,242,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,255,255,255,255,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,106,104,108,113,111,118,121,119,124, +91,68,92,139,137,141,145,143,150,149,147,151,107,81,108,153,151,155,152,154,154, +154,151,156,66,39,64,31,29,43,188,187,113,30,39,48,45,47,46,43,41,43,50,48,50, +55,51,55,54,50,54,53,61,53,52,48,52,52,48,53,51,50,51,51,47,59,51,47,65,51,47, +56,51,48,51,51,55,51,51,55,51,51,48,51,51,56,51,51,49,59,51,49,58,51,47,52,51, +47,60,51,59,52,51,54,52,51,62,51,51,54,51,51,49,51,51,55,52,52,51,56,38,39,41, +39,38,53,39,40,38,39,38,54,40,45,39,41,39,69,27,25,38,163,162,85,28,55,52,66,39, +64,154,153,156,151,149,156,151,155,153,107,85,110,129,131,130,123,121,125,124, +125,127,93,73,95,107,108,107,98,96,100,101,102,103,111,99,86,76,109,50,76,109, +51,76,109,49,76,109,49,112,100,88,112,100,88,76,109,50,76,109,49,76,109,50,76, +109,49,76,110,51,76,109,49,76,109,49,76,109,49,76,109,49,76,109,50,76,109,49, +112,100,88,112,99,87,112,99,87,112,100,88,112,99,87,112,100,88,113,101,87,115, +102,88,71,72,72,86,86,86,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,86,86,86,72,72,73,94,85,75,96,86,77,103,92,79,106,95,85,109, +96,85,75,108,49,75,109,49,76,109,49,75,108,49,75,109,49,76,109,49,76,109,50,76, +109,49,75,109,49,76,109,49,76,109,50,76,109,49,75,109,49,76,109,49,76,109,49,76, +109,49,75,108,49,76,109,49,112,100,86,111,99,87,111,99,87,112,100,86,113,101,87, +112,100,86,111,99,87,111,99,87,112,99,87,112,99,87,112,100,88,113,101,87,113, +101,87,112,100,86,112,100,86,113,100,86,132,133,133,97,97,97,99,99,99,108,99,85, +112,100,88,111,99,87,113,101,87,112,100,88,111,99,87,112,100,88,112,100,86,113, +101,87,113,101,87,113,101,87,112,102,91,113,101,87,113,101,87,112,100,88,112, +100,88,91,85,79,79,71,62,79,71,62,91,85,79,111,98,83,110,97,84,110,98,83,110,98, +83,109,97,84,109,97,84,109,97,84,110,98,83,91,85,79,79,71,62,79,71,62,91,85,79, +112,100,86,112,100,86,111,99,87,111,99,87,111,97,86,111,99,87,111,99,87,111,99, +87,110,97,86,111,99,87,111,99,87,112,100,86,111,99,87,111,99,87,112,100,86,103, +88,71,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,123,117,120, +120,9,38,121,13,41,121,13,41,120,13,41,120,13,41,120,13,41,120,13,41,121,15,41, +121,15,41,121,15,41,121,15,41,121,15,41,121,15,42,121,15,42,121,15,42,121,15,42, +121,15,42,121,15,42,121,15,41,121,15,41,120,15,41,120,15,41,120,15,41,119,15,41, +119,15,41,119,13,40,119,13,40,119,13,40,119,13,40,119,13,40,120,13,40,120,13,41, +119,7,37,249,241,241,254,255,255,254,255,255,254,255,255,254,255,255,254,255, +255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254, +255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255, +254,255,255,254,255,255,254,255,255,254,255,255,254,255,255,254,255,255 +}; // cityTexture + +#endif // guard diff --git a/src/small3dlib.h b/src/small3dlib.h new file mode 100644 index 0000000..b620295 --- /dev/null +++ b/src/small3dlib.h @@ -0,0 +1,2945 @@ +#ifndef SMALL3DLIB_H +#define SMALL3DLIB_H + +/* + Simple realtime 3D software rasterization renderer. It is fast, focused on + resource-limited computers, located in a single C header file, with no + dependencies, using only 32bit integer arithmetics. + + author: Miloslav Ciz + license: CC0 1.0 (public domain) + found at https://creativecommons.org/publicdomain/zero/1.0/ + + additional waiver of all IP + version: 0.901d + + Before including the library, define S3L_PIXEL_FUNCTION to the name of the + function you'll be using to draw single pixels (this function will be called + by the library to render the frames). Also either init S3L_resolutionX and + S3L_resolutionY or define S3L_RESOLUTION_X and S3L_RESOLUTION_Y. + + You'll also need to decide what rendering strategy and other settings you + want to use, depending on your specific usecase. You may want to use a + z-buffer (full or reduced, S3L_Z_BUFFER), sorted-drawing (S3L_SORT), or even + none of these. See the description of the options in this file. + + The rendering itself is done with S3L_drawScene, usually preceded by + S3L_newFrame (for clearing zBuffer etc.). + + The library is meant to be used in not so huge programs that use single + translation unit and so includes both declarations and implementation at once. + If you for some reason use multiple translation units (which include the + library), you'll have to handle this yourself (e.g. create a wrapper, manually + split the library into .c and .h etc.). + + -------------------- + + This work's goal is to never be encumbered by any exclusive intellectual + property rights. The work is therefore provided under CC0 1.0 + additional + WAIVER OF ALL INTELLECTUAL PROPERTY RIGHTS that waives the rest of + intellectual property rights not already waived by CC0 1.0. The WAIVER OF ALL + INTELLECTUAL PROPERTY RGHTS is as follows: + + Each contributor to this work agrees that they waive any exclusive rights, + including but not limited to copyright, patents, trademark, trade dress, + industrial design, plant varieties and trade secrets, to any and all ideas, + concepts, processes, discoveries, improvements and inventions conceived, + discovered, made, designed, researched or developed by the contributor either + solely or jointly with others, which relate to this work or result from this + work. Should any waiver of such right be judged legally invalid or + ineffective under applicable law, the contributor hereby grants to each + affected person a royalty-free, non transferable, non sublicensable, non + exclusive, irrevocable and unconditional license to this right. + + -------------------- + + CONVENTIONS: + + This library should never draw pixels outside the specified screen + boundaries, so you don't have to check this (that would cost CPU time)! + + You can safely assume that triangles are rasterized one by one and from top + down, left to right (so you can utilize e.g. various caches), and if sorting + is disabled the order of rasterization will be that specified in the scene + structure and model arrays (of course, some triangles and models may be + skipped due to culling etc.). + + Angles are in S3L_Units, a full angle (2 pi) is S3L_FRACTIONS_PER_UNITs. + + We use row vectors. + + In 3D space, a left-handed coord. system is used. One spatial unit is split + into S3L_FRACTIONS_PER_UNIT fractions (fixed point arithmetic). + + y ^ + | _ + | /| z + | / + | / + [0,0,0]-------> x + + Untransformed camera is placed at [0,0,0], looking forward along +z axis. The + projection plane is centered at [0,0,0], stretrinch from + -S3L_FRACTIONS_PER_UNIT to S3L_FRACTIONS_PER_UNIT horizontally (x), + vertical size (y) depends on the aspect ratio (S3L_RESOLUTION_X and + S3L_RESOLUTION_Y). Camera FOV is defined by focal length in S3L_Units. + + y ^ + | _ + | /| z + ____|_/__ + | |/ | + -----[0,0,0]-|-----> x + |____|____| + | + | + + Rotations use Euler angles and are generally in the extrinsic Euler angles in + ZXY order (by Z, then by X, then by Y). Positive rotation about an axis + rotates CW (clock-wise) when looking in the direction of the axis. + + Coordinates of pixels on the screen start at the top left, from [0,0]. + + There is NO subpixel accuracy (screen coordinates are only integer). + + Triangle rasterization rules are these (mostly same as OpenGL, D3D etc.): + + - Let's define: + - left side: + - not exactly horizontal, and on the left side of triangle + - exactly horizontal and above the topmost + (in other words: its normal points at least a little to the left or + completely up) + - right side: not left side + - Pixel centers are at integer coordinates and triangle for drawing are + specified with integer coordinates of pixel centers. + - A pixel is rasterized: + - if its center is inside the triangle OR + - if its center is exactly on the triangle side which is left and at the + same time is not on the side that's right (case of a triangle that's on + a single line) OR + - if its center is exactly on the triangle corner of sides neither of which + is right. + + These rules imply among others: + + - Adjacent triangles don't have any overlapping pixels, nor gaps between. + - Triangles of points that lie on a single line are NOT rasterized. + - A single "long" triangle CAN be rasterized as isolated islands of pixels. + - Transforming (e.g. mirroring, rotating by 90 degrees etc.) a result of + rasterizing triangle A is NOT generally equal to applying the same + transformation to triangle A first and then rasterizing it. Even the number + of rasterized pixels is usually different. + - If specifying a triangle with integer coordinates (which we are), then: + - The bottom-most corner (or side) of a triangle is never rasterized + (because it is connected to a right side). + - The top-most corner can only be rasterized on completely horizontal side + (otherwise it is connected to a right side). + - Vertically middle corner is rasterized if and only if it is on the left + of the triangle and at the same time is also not the bottom-most corner. +*/ + +#include <stdint.h> + +#ifdef S3L_RESOLUTION_X + #ifdef S3L_RESOLUTION_Y + #define S3L_MAX_PIXELS (S3L_RESOLUTION_X * S3L_RESOLUTION_Y) + #endif +#endif + +#ifndef S3L_RESOLUTION_X + #ifndef S3L_MAX_PIXELS + #error Dynamic resolution set (S3L_RESOLUTION_X not defined), but\ + S3L_MAX_PIXELS not defined! + #endif + + uint16_t S3L_resolutionX = 512; /**< If a static resolution is not set with + S3L_RESOLUTION_X, this variable can be + used to change X resolution at runtime, + in which case S3L_MAX_PIXELS has to be + defined (to allocate zBuffer etc.)! */ + #define S3L_RESOLUTION_X S3L_resolutionX +#endif + +#ifndef S3L_RESOLUTION_Y + #ifndef S3L_MAX_PIXELS + #error Dynamic resolution set (S3L_RESOLUTION_Y not defined), but\ + S3L_MAX_PIXELS not defined! + #endif + + uint16_t S3L_resolutionY = 512; /**< Same as S3L_resolutionX, but for Y + resolution. */ + #define S3L_RESOLUTION_Y S3L_resolutionY +#endif + +#ifndef S3L_USE_WIDER_TYPES + /** If true, the library will use wider data types which will largely supress + many rendering bugs and imprecisions happening due to overflows, but this will + also consumer more RAM and may potentially be slower on computers with smaller + native integer. */ + + #define S3L_USE_WIDER_TYPES 0 +#endif + +/** Units of measurement in 3D space. There is S3L_FRACTIONS_PER_UNIT in one +spatial unit. By dividing the unit into fractions we effectively achieve a +fixed point arithmetic. The number of fractions is a constant that serves as +1.0 in floating point arithmetic (normalization etc.). */ + +typedef +#if S3L_USE_WIDER_TYPES + int64_t +#else + int32_t +#endif + S3L_Unit; + +/** How many fractions a spatial unit is split into. This is NOT SUPPOSED TO +BE REDEFINED, so rather don't do it (otherwise things may overflow etc.). */ + +#define S3L_FRACTIONS_PER_UNIT 512 + +typedef +#if S3L_USE_WIDER_TYPES + int32_t +#else + int16_t +#endif + S3L_ScreenCoord; + +typedef +#if S3L_USE_WIDER_TYPES + uint32_t +#else + uint16_t +#endif + S3L_Index; + +#ifndef S3L_NEAR_CROSS_STRATEGY + /** Specifies how the library will handle triangles that partially cross the + near plane. These are problematic and require special handling. Possible + values: + + 0: Strictly cull any triangle crossing the near plane. This will make such + triangles disappear. This is good for performance or models viewed only + from at least small distance. + 1: Forcefully push the vertices crossing near plane in front of it. This is + a cheap technique that can be good enough for displaying simple + environments on slow devices, but texturing and geometric artifacts/warps + will appear. + 2: Geometrically correct the triangles crossing the near plane. This may + result in some triangles being subdivided into two and is a little more + expensive, but the results will be geometrically correct, even though + barycentric correction is not performed so texturing artifacts will + appear. Can be ideal with S3L_FLAT. + 3: Perform both geometrical and barycentric correction of triangle crossing + the near plane. This is significantly more expensive but results in + correct rendering. */ + + #define S3L_NEAR_CROSS_STRATEGY 0 +#endif + +#ifndef S3L_FLAT + /** If on, disables computation of per-pixel values such as barycentric + coordinates and depth -- these will still be available but will be the same + for the whole triangle. This can be used to create flat-shaded renders and + will be a lot faster. With this option on you will probably want to use + sorting instead of z-buffer. */ + + #define S3L_FLAT 0 +#endif + +#if S3L_FLAT + #define S3L_COMPUTE_DEPTH 0 + #define S3L_PERSPECTIVE_CORRECTION 0 + // don't disable z-buffer, it makes sense to use it with no sorting +#endif + +#ifndef S3L_PERSPECTIVE_CORRECTION + /** Specifies what type of perspective correction (PC) to use. Remember this + is an expensive operation! Possible values: + + 0: No perspective correction. Fastest, inaccurate from most angles. + 1: Per-pixel perspective correction, accurate but very expensive. + 2: Approximation (computing only at every S3L_PC_APPROX_LENGTHth pixel). + Quake-style approximation is used, which only computes the PC after + S3L_PC_APPROX_LENGTH pixels. This is reasonably accurate and fast. */ + + #define S3L_PERSPECTIVE_CORRECTION 0 +#endif + +#ifndef S3L_PC_APPROX_LENGTH + /** For S3L_PERSPECTIVE_CORRECTION == 2, this specifies after how many pixels + PC is recomputed. Should be a power of two to keep up the performance. + Smaller is nicer but slower. */ + + #define S3L_PC_APPROX_LENGTH 32 +#endif + +#if S3L_PERSPECTIVE_CORRECTION + #define S3L_COMPUTE_DEPTH 1 // PC inevitably computes depth, so enable it +#endif + +#ifndef S3L_COMPUTE_DEPTH + /** Whether to compute depth for each pixel (fragment). Some other options + may turn this on automatically. If you don't need depth information, turning + this off can save performance. Depth will still be accessible in + S3L_PixelInfo, but will be constant -- equal to center point depth -- over + the whole triangle. */ + #define S3L_COMPUTE_DEPTH 1 +#endif + +#ifndef S3L_Z_BUFFER + /** What type of z-buffer (depth buffer) to use for visibility determination. + Possible values: + + 0: Don't use z-buffer. This saves a lot of memory, but visibility checking + won't be pixel-accurate and has to mostly be done by other means (typically + sorting). + 1: Use full z-buffer (of S3L_Units) for visibiltiy determination. This is the + most accurate option (and also a fast one), but requires a big amount of + memory. + 2: Use reduced-size z-buffer (of bytes). This is fast and somewhat accurate, + but inaccuracies can occur and a considerable amount of memory is + needed. */ + + #define S3L_Z_BUFFER 0 +#endif + +#ifndef S3L_REDUCED_Z_BUFFER_GRANULARITY + /** For S3L_Z_BUFFER == 2 this sets the reduced z-buffer granularity. */ + + #define S3L_REDUCED_Z_BUFFER_GRANULARITY 5 +#endif + +#ifndef S3L_STENCIL_BUFFER + /** Whether to use stencil buffer for drawing -- with this a pixel that would + be resterized over an already rasterized pixel (within a frame) will be + discarded. This is mostly for front-to-back sorted drawing. */ + + #define S3L_STENCIL_BUFFER 0 +#endif + +#ifndef S3L_SORT + /** Defines how to sort triangles before drawing a frame. This can be used to + solve visibility in case z-buffer is not used, to prevent overwriting already + rasterized pixels, implement transparency etc. Note that for simplicity and + performance a relatively simple sorting is used which doesn't work completely + correctly, so mistakes can occur (even the best sorting wouldn't be able to + solve e.g. intersecting triangles). Note that sorting requires a bit of extra + memory -- an array of the triangles to sort -- the size of this array limits + the maximum number of triangles that can be drawn in a single frame + (S3L_MAX_TRIANGES_DRAWN). Possible values: + + 0: Don't sort triangles. This is fastest and doesn't use extra memory. + 1: Sort triangles from back to front. This can in most cases solve visibility + without requiring almost any extra memory compared to z-buffer. + 2: Sort triangles from front to back. This can be faster than back to front + because we prevent computing pixels that will be overwritten by nearer + ones, but we need a 1b stencil buffer for this (enable S3L_STENCIL_BUFFER), + so a bit more memory is needed. */ + + #define S3L_SORT 0 +#endif + +#ifndef S3L_MAX_TRIANGES_DRAWN + /** Maximum number of triangles that can be drawn in sorted modes. This + affects the size of the cache used for triangle sorting. */ + + #define S3L_MAX_TRIANGES_DRAWN 128 +#endif + +#ifndef S3L_NEAR + /** Distance of the near clipping plane. Points in front or EXATLY ON this + plane are considered outside the frustum. This must be >= 0. */ + + #define S3L_NEAR (S3L_FRACTIONS_PER_UNIT / 4) +#endif + +#if S3L_NEAR <= 0 +#define S3L_NEAR 1 // Can't be <= 0. +#endif + +#ifndef S3L_NORMAL_COMPUTE_MAXIMUM_AVERAGE + /** Affects the S3L_computeModelNormals function. See its description for + details. */ + + #define S3L_NORMAL_COMPUTE_MAXIMUM_AVERAGE 6 +#endif + +#ifndef S3L_FAST_LERP_QUALITY + /** Quality (scaling) of SOME (stepped) linear interpolations. 0 will most + likely be a tiny bit faster, but artifacts can occur for bigger tris, while + higher values can fix this -- in theory all higher values will have the same + speed (it is a shift value), but it mustn't be too high to prevent + overflow. */ + + #define S3L_FAST_LERP_QUALITY 11 +#endif + +/** Vector that consists of four scalars and can represent homogenous + coordinates, but is generally also used as Vec3 and Vec2 for various + purposes. */ +typedef struct +{ + S3L_Unit x; + S3L_Unit y; + S3L_Unit z; + S3L_Unit w; +} S3L_Vec4; + +#define S3L_logVec4(v)\ + printf("Vec4: %d %d %d %d\n",((v).x),((v).y),((v).z),((v).w)) + +static inline void S3L_vec4Init(S3L_Vec4 *v); +static inline void S3L_vec4Set(S3L_Vec4 *v, S3L_Unit x, S3L_Unit y, + S3L_Unit z, S3L_Unit w); +static inline void S3L_vec3Add(S3L_Vec4 *result, S3L_Vec4 added); +static inline void S3L_vec3Sub(S3L_Vec4 *result, S3L_Vec4 substracted); +S3L_Unit S3L_vec3Length(S3L_Vec4 v); + +/** Normalizes Vec3. Note that this function tries to normalize correctly + rather than quickly! If you need to normalize quickly, do it yourself in a + way that best fits your case. */ +void S3L_vec3Normalize(S3L_Vec4 *v); + +/** Like S3L_vec3Normalize, but doesn't perform any checks on the input vector, + which is faster, but can be very innacurate or overflowing. You are supposed + to provide a "nice" vector (not too big or small). */ +static inline void S3L_vec3NormalizeFast(S3L_Vec4 *v); + +S3L_Unit S3L_vec2Length(S3L_Vec4 v); +void S3L_vec3Cross(S3L_Vec4 a, S3L_Vec4 b, S3L_Vec4 *result); +static inline S3L_Unit S3L_vec3Dot(S3L_Vec4 a, S3L_Vec4 b); + +/** Computes a reflection direction (typically used e.g. for specular component + in Phong illumination). The input vectors must be normalized. The result will + be normalized as well. */ +void S3L_reflect(S3L_Vec4 toLight, S3L_Vec4 normal, S3L_Vec4 *result); + +/** Determines the winding of a triangle, returns 1 (CW, clockwise), -1 (CCW, + counterclockwise) or 0 (points lie on a single line). */ +static inline int8_t S3L_triangleWinding( + S3L_ScreenCoord x0, + S3L_ScreenCoord y0, + S3L_ScreenCoord x1, + S3L_ScreenCoord y1, + S3L_ScreenCoord x2, + S3L_ScreenCoord y2); + +typedef struct +{ + S3L_Vec4 translation; + S3L_Vec4 rotation; /**< Euler angles. Rortation is applied in this order: + 1. z = by z (roll) CW looking along z+ + 2. x = by x (pitch) CW looking along x+ + 3. y = by y (yaw) CW looking along y+ */ + S3L_Vec4 scale; +} S3L_Transform3D; + +#define S3L_logTransform3D(t)\ + printf("Transform3D: T = [%d %d %d], R = [%d %d %d], S = [%d %d %d]\n",\ + (t).translation.x,(t).translation.y,(t).translation.z,\ + (t).rotation.x,(t).rotation.y,(t).rotation.z,\ + (t).scale.x,(t).scale.y,(t).scale.z) + +static inline void S3L_transform3DInit(S3L_Transform3D *t); + +void S3L_lookAt(S3L_Vec4 pointTo, S3L_Transform3D *t); + +void S3L_transform3DSet( + S3L_Unit tx, + S3L_Unit ty, + S3L_Unit tz, + S3L_Unit rx, + S3L_Unit ry, + S3L_Unit rz, + S3L_Unit sx, + S3L_Unit sy, + S3L_Unit sz, + S3L_Transform3D *t); + +/** Converts rotation transformation to three direction vectors of given length + (any one can be NULL, in which case it won't be computed). */ +void S3L_rotationToDirections( + S3L_Vec4 rotation, + S3L_Unit length, + S3L_Vec4 *forw, + S3L_Vec4 *right, + S3L_Vec4 *up); + +/** 4x4 matrix, used mostly for 3D transforms. The indexing is this: + matrix[column][row]. */ +typedef S3L_Unit S3L_Mat4[4][4]; + +#define S3L_logMat4(m)\ + printf("Mat4:\n %d %d %d %d\n %d %d %d %d\n %d %d %d %d\n %d %d %d %d\n"\ + ,(m)[0][0],(m)[1][0],(m)[2][0],(m)[3][0],\ + (m)[0][1],(m)[1][1],(m)[2][1],(m)[3][1],\ + (m)[0][2],(m)[1][2],(m)[2][2],(m)[3][2],\ + (m)[0][3],(m)[1][3],(m)[2][3],(m)[3][3]) + +/** Initializes a 4x4 matrix to identity. */ +static inline void S3L_mat4Init(S3L_Mat4 m); + +void S3L_mat4Copy(S3L_Mat4 src, S3L_Mat4 dst); + +void S3L_mat4Transpose(S3L_Mat4 m); + +void S3L_makeTranslationMat( + S3L_Unit offsetX, + S3L_Unit offsetY, + S3L_Unit offsetZ, + S3L_Mat4 m); + +/** Makes a scaling matrix. DON'T FORGET: scale of 1.0 is set with + S3L_FRACTIONS_PER_UNIT! */ +void S3L_makeScaleMatrix( + S3L_Unit scaleX, + S3L_Unit scaleY, + S3L_Unit scaleZ, + S3L_Mat4 m); + +/** Makes a matrix for rotation in the ZXY order. */ +void S3L_makeRotationMatrixZXY( + S3L_Unit byX, + S3L_Unit byY, + S3L_Unit byZ, + S3L_Mat4 m); + +void S3L_makeWorldMatrix(S3L_Transform3D worldTransform, S3L_Mat4 m); +void S3L_makeCameraMatrix(S3L_Transform3D cameraTransform, S3L_Mat4 m); + +/** Multiplies a vector by a matrix with normalization by + S3L_FRACTIONS_PER_UNIT. Result is stored in the input vector. */ +void S3L_vec4Xmat4(S3L_Vec4 *v, S3L_Mat4 m); + +/** Same as S3L_vec4Xmat4 but faster, because this version doesn't compute the + W component of the result, which is usually not needed. */ +void S3L_vec3Xmat4(S3L_Vec4 *v, S3L_Mat4 m); + +/** Multiplies two matrices with normalization by S3L_FRACTIONS_PER_UNIT. + Result is stored in the first matrix. The result represents a transformation + that has the same effect as applying the transformation represented by m1 and + then m2 (in that order). */ +void S3L_mat4Xmat4(S3L_Mat4 m1, S3L_Mat4 m2); + +typedef struct +{ + S3L_Unit focalLength; ///< Defines the field of view (FOV). + S3L_Transform3D transform; +} S3L_Camera; + +void S3L_cameraInit(S3L_Camera *camera); + +typedef struct +{ + uint8_t backfaceCulling; /**< What backface culling to use. Possible + values: + - 0 none + - 1 clock-wise + - 2 counter clock-wise */ + int8_t visible; /**< Can be used to easily hide the model. */ +} S3L_DrawConfig; + +void S3L_drawConfigInit(S3L_DrawConfig *config); + +typedef struct +{ + const S3L_Unit *vertices; + S3L_Index vertexCount; + const S3L_Index *triangles; + S3L_Index triangleCount; + S3L_Transform3D transform; + S3L_Mat4 *customTransformMatrix; /**< This can be used to override the + transform (if != 0) with a custom + transform matrix, which is more + general. */ + S3L_DrawConfig config; +} S3L_Model3D; ///< Represents a 3D model. + +void S3L_model3DInit( + const S3L_Unit *vertices, + S3L_Index vertexCount, + const S3L_Index *triangles, + S3L_Index triangleCount, + S3L_Model3D *model); + +typedef struct +{ + S3L_Model3D *models; + S3L_Index modelCount; + S3L_Camera camera; +} S3L_Scene; ///< Represent the 3D scene to be rendered. + +void S3L_sceneInit( + S3L_Model3D *models, + S3L_Index modelCount, + S3L_Scene *scene); + +typedef struct +{ + S3L_ScreenCoord x; ///< Screen X coordinate. + S3L_ScreenCoord y; ///< Screen Y coordinate. + + S3L_Unit barycentric[3]; /**< Barycentric coords correspond to the three + vertices. These serve to locate the pixel on a + triangle and interpolate values between its + three points. Each one goes from 0 to + S3L_FRACTIONS_PER_UNIT (including), but due to + rounding error may fall outside this range (you + can use S3L_correctBarycentricCoords to fix this + for the price of some performance). The sum of + the three coordinates will always be exactly + S3L_FRACTIONS_PER_UNIT. */ + S3L_Index modelIndex; ///< Model index within the scene. + S3L_Index triangleIndex; ///< Triangle index within the model. + uint32_t triangleID; /**< Unique ID of the triangle withing the whole + scene. This can be used e.g. by a cache to + quickly find out if a triangle has changed. */ + S3L_Unit depth; ///< Depth (only if depth is turned on). + S3L_Unit previousZ; /**< Z-buffer value (not necessarily world depth in + S3L_Units!) that was in the z-buffer on the + pixels position before this pixel was + rasterized. This can be used to set the value + back, e.g. for transparency. */ + S3L_ScreenCoord triangleSize[2]; /**< Rasterized triangle width and height, + can be used e.g. for MIP mapping. */ +} S3L_PixelInfo; /**< Used to pass the info about a rasterized pixel + (fragment) to the user-defined drawing func. */ + +static inline void S3L_pixelInfoInit(S3L_PixelInfo *p); + +/** Corrects barycentric coordinates so that they exactly meet the defined + conditions (each fall into <0,S3L_FRACTIONS_PER_UNIT>, sum = + S3L_FRACTIONS_PER_UNIT). Note that doing this per-pixel can slow the program + down significantly. */ +static inline void S3L_correctBarycentricCoords(S3L_Unit barycentric[3]); + +// general helper functions +static inline S3L_Unit S3L_abs(S3L_Unit value); +static inline S3L_Unit S3L_min(S3L_Unit v1, S3L_Unit v2); +static inline S3L_Unit S3L_max(S3L_Unit v1, S3L_Unit v2); +static inline S3L_Unit S3L_clamp(S3L_Unit v, S3L_Unit v1, S3L_Unit v2); +static inline S3L_Unit S3L_wrap(S3L_Unit value, S3L_Unit mod); +static inline S3L_Unit S3L_nonZero(S3L_Unit value); +static inline S3L_Unit S3L_zeroClamp(S3L_Unit value); + +S3L_Unit S3L_sin(S3L_Unit x); +S3L_Unit S3L_asin(S3L_Unit x); +static inline S3L_Unit S3L_cos(S3L_Unit x); + +S3L_Unit S3L_vec3Length(S3L_Vec4 v); +S3L_Unit S3L_sqrt(S3L_Unit value); + +/** Projects a single point from 3D space to the screen space (pixels), which + can be useful e.g. for drawing sprites. The w component of input and result + holds the point size. If this size is 0 in the result, the sprite is outside + the view. */ +void project3DPointToScreen( + S3L_Vec4 point, + S3L_Camera camera, + S3L_Vec4 *result); + +/** Computes a normalized normal of given triangle. */ +void S3L_triangleNormal(S3L_Vec4 t0, S3L_Vec4 t1, S3L_Vec4 t2, + S3L_Vec4 *n); + +/** Helper function for retrieving per-vertex indexed values from an array, + e.g. texturing (UV) coordinates. The 'indices' array contains three indices + for each triangle, each index pointing into 'values' array, which contains + the values, each one consisting of 'numComponents' components (e.g. 2 for + UV coordinates). The three values are retrieved into 'v0', 'v1' and 'v2' + vectors (into x, y, z and w, depending on 'numComponents'). This function is + meant to be used per-triangle (typically from a cache), NOT per-pixel, as it + is not as fast as possible! */ +void S3L_getIndexedTriangleValues( + S3L_Index triangleIndex, + const S3L_Index *indices, + const S3L_Unit *values, + uint8_t numComponents, + S3L_Vec4 *v0, + S3L_Vec4 *v1, + S3L_Vec4 *v2); + +/** Computes a normalized normal for every vertex of given model (this is + relatively slow and SHOUDN'T be done each frame). The dst array must have a + sufficient size preallocated! The size is: number of model vertices * 3 * + sizeof(S3L_Unit). Note that for advanced allowing sharp edges it is not + sufficient to have per-vertex normals, but must be per-triangle. This + function doesn't support this. + + The function computes a normal for each vertex by averaging normals of + the triangles containing the vertex. The maximum number of these triangle + normals that will be averaged is set with + S3L_NORMAL_COMPUTE_MAXIMUM_AVERAGE. */ +void S3L_computeModelNormals(S3L_Model3D model, S3L_Unit *dst, + int8_t transformNormals); + +/** Interpolated between two values, v1 and v2, in the same ratio as t is to + tMax. Does NOT prevent zero division. */ +static inline S3L_Unit S3L_interpolate( + S3L_Unit v1, + S3L_Unit v2, + S3L_Unit t, + S3L_Unit tMax); + +/** Same as S3L_interpolate but with v1 == 0. Should be faster. */ +static inline S3L_Unit S3L_interpolateFrom0( + S3L_Unit v2, + S3L_Unit t, + S3L_Unit tMax); + +/** Like S3L_interpolate, but uses a parameter that goes from 0 to + S3L_FRACTIONS_PER_UNIT - 1, which can be faster. */ +static inline S3L_Unit S3L_interpolateByUnit( + S3L_Unit v1, + S3L_Unit v2, + S3L_Unit t); + +/** Same as S3L_interpolateByUnit but with v1 == 0. Should be faster. */ +static inline S3L_Unit S3L_interpolateByUnitFrom0( + S3L_Unit v2, + S3L_Unit t); + +static inline S3L_Unit S3L_distanceManhattan(S3L_Vec4 a, S3L_Vec4 b); + +/** Returns a value interpolated between the three triangle vertices based on + barycentric coordinates. */ +static inline S3L_Unit S3L_interpolateBarycentric( + S3L_Unit value0, + S3L_Unit value1, + S3L_Unit value2, + S3L_Unit barycentric[3]); + +static inline void S3L_mapProjectionPlaneToScreen( + S3L_Vec4 point, + S3L_ScreenCoord *screenX, + S3L_ScreenCoord *screenY); + +/** Draws a triangle according to given config. The vertices are specified in + Screen Space space (pixels). If perspective correction is enabled, each + vertex has to have a depth (Z position in camera space) specified in the Z + component. */ +void S3L_drawTriangle( + S3L_Vec4 point0, + S3L_Vec4 point1, + S3L_Vec4 point2, + S3L_Index modelIndex, + S3L_Index triangleIndex); + +/** This should be called before rendering each frame. The function clears + buffers and does potentially other things needed for the frame. */ +void S3L_newFrame(void); + +void S3L_zBufferClear(void); +void S3L_stencilBufferClear(void); + +/** Writes a value (not necessarily depth! depends on the format of z-buffer) + to z-buffer (if enabled). Does NOT check boundaries! */ +void S3L_zBufferWrite(S3L_ScreenCoord x, S3L_ScreenCoord y, S3L_Unit value); + +/** Reads a value (not necessarily depth! depends on the format of z-buffer) + from z-buffer (if enabled). Does NOT check boundaries! */ +S3L_Unit S3L_zBufferRead(S3L_ScreenCoord x, S3L_ScreenCoord y); + +static inline void S3L_rotate2DPoint(S3L_Unit *x, S3L_Unit *y, S3L_Unit angle); + +/** Predefined vertices of a cube to simply insert in an array. These come with + S3L_CUBE_TRIANGLES and S3L_CUBE_TEXCOORDS. */ +#define S3L_CUBE_VERTICES(m)\ + /* 0 front, bottom, right */\ + m/2, -m/2, -m/2,\ + /* 1 front, bottom, left */\ +-m/2, -m/2, -m/2,\ + /* 2 front, top, right */\ + m/2, m/2, -m/2,\ + /* 3 front, top, left */\ +-m/2, m/2, -m/2,\ + /* 4 back, bottom, right */\ + m/2, -m/2, m/2,\ + /* 5 back, bottom, left */\ +-m/2, -m/2, m/2,\ + /* 6 back, top, right */\ + m/2, m/2, m/2,\ + /* 7 back, top, left */\ +-m/2, m/2, m/2 + +#define S3L_CUBE_VERTEX_COUNT 8 + +/** Predefined triangle indices of a cube, to be used with S3L_CUBE_VERTICES + and S3L_CUBE_TEXCOORDS. */ +#define S3L_CUBE_TRIANGLES\ + 3, 0, 2, /* front */\ + 1, 0, 3,\ + 0, 4, 2, /* right */\ + 2, 4, 6,\ + 4, 5, 6, /* back */\ + 7, 6, 5,\ + 3, 7, 1, /* left */\ + 1, 7, 5,\ + 6, 3, 2, /* top */\ + 7, 3, 6,\ + 1, 4, 0, /* bottom */\ + 5, 4, 1 + +#define S3L_CUBE_TRIANGLE_COUNT 12 + +/** Predefined texture coordinates of a cube, corresponding to triangles (NOT + vertices), to be used with S3L_CUBE_VERTICES and S3L_CUBE_TRIANGLES. */ +#define S3L_CUBE_TEXCOORDS(m)\ + 0,0, m,m, m,0,\ + 0,m, m,m, 0,0,\ + m,m, m,0, 0,m,\ + 0,m, m,0, 0,0,\ + m,0, 0,0, m,m,\ + 0,m, m,m, 0,0,\ + 0,0, 0,m, m,0,\ + m,0, 0,m, m,m,\ + 0,0, m,m, m,0,\ + 0,m, m,m, 0,0,\ + m,0, 0,m, m,m,\ + 0,0, 0,m, m,0 + +//============================================================================= +// privates + +#define S3L_UNUSED(what) (void)(what) ///< helper macro for unused vars + +#define S3L_HALF_RESOLUTION_X (S3L_RESOLUTION_X >> 1) +#define S3L_HALF_RESOLUTION_Y (S3L_RESOLUTION_Y >> 1) + +#define S3L_PROJECTION_PLANE_HEIGHT\ + ((S3L_RESOLUTION_Y * S3L_FRACTIONS_PER_UNIT * 2) / S3L_RESOLUTION_X) + +#if S3L_Z_BUFFER == 1 + #define S3L_MAX_DEPTH 2147483647 + S3L_Unit S3L_zBuffer[S3L_MAX_PIXELS]; + #define S3L_zBufferFormat(depth) (depth) +#elif S3L_Z_BUFFER == 2 + #define S3L_MAX_DEPTH 255 + uint8_t S3L_zBuffer[S3L_MAX_PIXELS]; + #define S3L_zBufferFormat(depth)\ + S3L_min(255,(depth) >> S3L_REDUCED_Z_BUFFER_GRANULARITY) +#endif + +#if S3L_Z_BUFFER +static inline int8_t S3L_zTest( + S3L_ScreenCoord x, + S3L_ScreenCoord y, + S3L_Unit depth) +{ + uint32_t index = y * S3L_RESOLUTION_X + x; + + depth = S3L_zBufferFormat(depth); + +#if S3L_Z_BUFFER == 2 + #define cmp <= /* For reduced z-buffer we need equality test, because + otherwise pixels at the maximum depth (255) would never be + drawn over the background (which also has the depth of + 255). */ +#else + #define cmp < /* For normal z-buffer we leave out equality test to not waste + time by drawing over already drawn pixls. */ +#endif + + if (depth cmp S3L_zBuffer[index]) + { + S3L_zBuffer[index] = depth; + return 1; + } + +#undef cmp + + return 0; +} +#endif + +S3L_Unit S3L_zBufferRead(S3L_ScreenCoord x, S3L_ScreenCoord y) +{ +#if S3L_Z_BUFFER + return S3L_zBuffer[y * S3L_RESOLUTION_X + x]; +#else + S3L_UNUSED(x); + S3L_UNUSED(y); + + return 0; +#endif +} + +void S3L_zBufferWrite(S3L_ScreenCoord x, S3L_ScreenCoord y, S3L_Unit value) +{ +#if S3L_Z_BUFFER + S3L_zBuffer[y * S3L_RESOLUTION_X + x] = value; +#else + S3L_UNUSED(x); + S3L_UNUSED(y); + S3L_UNUSED(value); +#endif +} + +#if S3L_STENCIL_BUFFER + #define S3L_STENCIL_BUFFER_SIZE\ + ((S3L_RESOLUTION_X * S3L_RESOLUTION_Y - 1) / 8 + 1) + +uint8_t S3L_stencilBuffer[S3L_STENCIL_BUFFER_SIZE]; + +static inline int8_t S3L_stencilTest( + S3L_ScreenCoord x, + S3L_ScreenCoord y) +{ + uint32_t index = y * S3L_RESOLUTION_X + x; + uint32_t bit = (index & 0x00000007); + index = index >> 3; + + uint8_t val = S3L_stencilBuffer[index]; + + if ((val >> bit) & 0x1) + return 0; + + S3L_stencilBuffer[index] = val | (0x1 << bit); + + return 1; +} +#endif + +#define S3L_COMPUTE_LERP_DEPTH\ + (S3L_COMPUTE_DEPTH && (S3L_PERSPECTIVE_CORRECTION == 0)) + +#define S3L_SIN_TABLE_LENGTH 128 + +static const S3L_Unit S3L_sinTable[S3L_SIN_TABLE_LENGTH] = +{ + /* 511 was chosen here as a highest number that doesn't overflow during + compilation for S3L_FRACTIONS_PER_UNIT == 1024 */ + + (0*S3L_FRACTIONS_PER_UNIT)/511, (6*S3L_FRACTIONS_PER_UNIT)/511, + (12*S3L_FRACTIONS_PER_UNIT)/511, (18*S3L_FRACTIONS_PER_UNIT)/511, + (25*S3L_FRACTIONS_PER_UNIT)/511, (31*S3L_FRACTIONS_PER_UNIT)/511, + (37*S3L_FRACTIONS_PER_UNIT)/511, (43*S3L_FRACTIONS_PER_UNIT)/511, + (50*S3L_FRACTIONS_PER_UNIT)/511, (56*S3L_FRACTIONS_PER_UNIT)/511, + (62*S3L_FRACTIONS_PER_UNIT)/511, (68*S3L_FRACTIONS_PER_UNIT)/511, + (74*S3L_FRACTIONS_PER_UNIT)/511, (81*S3L_FRACTIONS_PER_UNIT)/511, + (87*S3L_FRACTIONS_PER_UNIT)/511, (93*S3L_FRACTIONS_PER_UNIT)/511, + (99*S3L_FRACTIONS_PER_UNIT)/511, (105*S3L_FRACTIONS_PER_UNIT)/511, + (111*S3L_FRACTIONS_PER_UNIT)/511, (118*S3L_FRACTIONS_PER_UNIT)/511, + (124*S3L_FRACTIONS_PER_UNIT)/511, (130*S3L_FRACTIONS_PER_UNIT)/511, + (136*S3L_FRACTIONS_PER_UNIT)/511, (142*S3L_FRACTIONS_PER_UNIT)/511, + (148*S3L_FRACTIONS_PER_UNIT)/511, (154*S3L_FRACTIONS_PER_UNIT)/511, + (160*S3L_FRACTIONS_PER_UNIT)/511, (166*S3L_FRACTIONS_PER_UNIT)/511, + (172*S3L_FRACTIONS_PER_UNIT)/511, (178*S3L_FRACTIONS_PER_UNIT)/511, + (183*S3L_FRACTIONS_PER_UNIT)/511, (189*S3L_FRACTIONS_PER_UNIT)/511, + (195*S3L_FRACTIONS_PER_UNIT)/511, (201*S3L_FRACTIONS_PER_UNIT)/511, + (207*S3L_FRACTIONS_PER_UNIT)/511, (212*S3L_FRACTIONS_PER_UNIT)/511, + (218*S3L_FRACTIONS_PER_UNIT)/511, (224*S3L_FRACTIONS_PER_UNIT)/511, + (229*S3L_FRACTIONS_PER_UNIT)/511, (235*S3L_FRACTIONS_PER_UNIT)/511, + (240*S3L_FRACTIONS_PER_UNIT)/511, (246*S3L_FRACTIONS_PER_UNIT)/511, + (251*S3L_FRACTIONS_PER_UNIT)/511, (257*S3L_FRACTIONS_PER_UNIT)/511, + (262*S3L_FRACTIONS_PER_UNIT)/511, (268*S3L_FRACTIONS_PER_UNIT)/511, + (273*S3L_FRACTIONS_PER_UNIT)/511, (278*S3L_FRACTIONS_PER_UNIT)/511, + (283*S3L_FRACTIONS_PER_UNIT)/511, (289*S3L_FRACTIONS_PER_UNIT)/511, + (294*S3L_FRACTIONS_PER_UNIT)/511, (299*S3L_FRACTIONS_PER_UNIT)/511, + (304*S3L_FRACTIONS_PER_UNIT)/511, (309*S3L_FRACTIONS_PER_UNIT)/511, + (314*S3L_FRACTIONS_PER_UNIT)/511, (319*S3L_FRACTIONS_PER_UNIT)/511, + (324*S3L_FRACTIONS_PER_UNIT)/511, (328*S3L_FRACTIONS_PER_UNIT)/511, + (333*S3L_FRACTIONS_PER_UNIT)/511, (338*S3L_FRACTIONS_PER_UNIT)/511, + (343*S3L_FRACTIONS_PER_UNIT)/511, (347*S3L_FRACTIONS_PER_UNIT)/511, + (352*S3L_FRACTIONS_PER_UNIT)/511, (356*S3L_FRACTIONS_PER_UNIT)/511, + (361*S3L_FRACTIONS_PER_UNIT)/511, (365*S3L_FRACTIONS_PER_UNIT)/511, + (370*S3L_FRACTIONS_PER_UNIT)/511, (374*S3L_FRACTIONS_PER_UNIT)/511, + (378*S3L_FRACTIONS_PER_UNIT)/511, (382*S3L_FRACTIONS_PER_UNIT)/511, + (386*S3L_FRACTIONS_PER_UNIT)/511, (391*S3L_FRACTIONS_PER_UNIT)/511, + (395*S3L_FRACTIONS_PER_UNIT)/511, (398*S3L_FRACTIONS_PER_UNIT)/511, + (402*S3L_FRACTIONS_PER_UNIT)/511, (406*S3L_FRACTIONS_PER_UNIT)/511, + (410*S3L_FRACTIONS_PER_UNIT)/511, (414*S3L_FRACTIONS_PER_UNIT)/511, + (417*S3L_FRACTIONS_PER_UNIT)/511, (421*S3L_FRACTIONS_PER_UNIT)/511, + (424*S3L_FRACTIONS_PER_UNIT)/511, (428*S3L_FRACTIONS_PER_UNIT)/511, + (431*S3L_FRACTIONS_PER_UNIT)/511, (435*S3L_FRACTIONS_PER_UNIT)/511, + (438*S3L_FRACTIONS_PER_UNIT)/511, (441*S3L_FRACTIONS_PER_UNIT)/511, + (444*S3L_FRACTIONS_PER_UNIT)/511, (447*S3L_FRACTIONS_PER_UNIT)/511, + (450*S3L_FRACTIONS_PER_UNIT)/511, (453*S3L_FRACTIONS_PER_UNIT)/511, + (456*S3L_FRACTIONS_PER_UNIT)/511, (459*S3L_FRACTIONS_PER_UNIT)/511, + (461*S3L_FRACTIONS_PER_UNIT)/511, (464*S3L_FRACTIONS_PER_UNIT)/511, + (467*S3L_FRACTIONS_PER_UNIT)/511, (469*S3L_FRACTIONS_PER_UNIT)/511, + (472*S3L_FRACTIONS_PER_UNIT)/511, (474*S3L_FRACTIONS_PER_UNIT)/511, + (476*S3L_FRACTIONS_PER_UNIT)/511, (478*S3L_FRACTIONS_PER_UNIT)/511, + (481*S3L_FRACTIONS_PER_UNIT)/511, (483*S3L_FRACTIONS_PER_UNIT)/511, + (485*S3L_FRACTIONS_PER_UNIT)/511, (487*S3L_FRACTIONS_PER_UNIT)/511, + (488*S3L_FRACTIONS_PER_UNIT)/511, (490*S3L_FRACTIONS_PER_UNIT)/511, + (492*S3L_FRACTIONS_PER_UNIT)/511, (494*S3L_FRACTIONS_PER_UNIT)/511, + (495*S3L_FRACTIONS_PER_UNIT)/511, (497*S3L_FRACTIONS_PER_UNIT)/511, + (498*S3L_FRACTIONS_PER_UNIT)/511, (499*S3L_FRACTIONS_PER_UNIT)/511, + (501*S3L_FRACTIONS_PER_UNIT)/511, (502*S3L_FRACTIONS_PER_UNIT)/511, + (503*S3L_FRACTIONS_PER_UNIT)/511, (504*S3L_FRACTIONS_PER_UNIT)/511, + (505*S3L_FRACTIONS_PER_UNIT)/511, (506*S3L_FRACTIONS_PER_UNIT)/511, + (507*S3L_FRACTIONS_PER_UNIT)/511, (507*S3L_FRACTIONS_PER_UNIT)/511, + (508*S3L_FRACTIONS_PER_UNIT)/511, (509*S3L_FRACTIONS_PER_UNIT)/511, + (509*S3L_FRACTIONS_PER_UNIT)/511, (510*S3L_FRACTIONS_PER_UNIT)/511, + (510*S3L_FRACTIONS_PER_UNIT)/511, (510*S3L_FRACTIONS_PER_UNIT)/511, + (510*S3L_FRACTIONS_PER_UNIT)/511, (510*S3L_FRACTIONS_PER_UNIT)/511 +}; + +#define S3L_SIN_TABLE_UNIT_STEP\ + (S3L_FRACTIONS_PER_UNIT / (S3L_SIN_TABLE_LENGTH * 4)) + +void S3L_vec4Init(S3L_Vec4 *v) +{ + v->x = 0; v->y = 0; v->z = 0; v->w = S3L_FRACTIONS_PER_UNIT; +} + +void S3L_vec4Set(S3L_Vec4 *v, S3L_Unit x, S3L_Unit y, S3L_Unit z, S3L_Unit w) +{ + v->x = x; + v->y = y; + v->z = z; + v->w = w; +} + +void S3L_vec3Add(S3L_Vec4 *result, S3L_Vec4 added) +{ + result->x += added.x; + result->y += added.y; + result->z += added.z; +} + +void S3L_vec3Sub(S3L_Vec4 *result, S3L_Vec4 substracted) +{ + result->x -= substracted.x; + result->y -= substracted.y; + result->z -= substracted.z; +} + +void S3L_mat4Init(S3L_Mat4 m) +{ + #define M(x,y) m[x][y] + #define S S3L_FRACTIONS_PER_UNIT + + M(0,0) = S; M(1,0) = 0; M(2,0) = 0; M(3,0) = 0; + M(0,1) = 0; M(1,1) = S; M(2,1) = 0; M(3,1) = 0; + M(0,2) = 0; M(1,2) = 0; M(2,2) = S; M(3,2) = 0; + M(0,3) = 0; M(1,3) = 0; M(2,3) = 0; M(3,3) = S; + + #undef M + #undef S +} + +void S3L_mat4Copy(S3L_Mat4 src, S3L_Mat4 dst) +{ + for (uint8_t j = 0; j < 4; ++j) + for (uint8_t i = 0; i < 4; ++i) + dst[i][j] = src[i][j]; +} + +S3L_Unit S3L_vec3Dot(S3L_Vec4 a, S3L_Vec4 b) +{ + return (a.x * b.x + a.y * b.y + a.z * b.z) / S3L_FRACTIONS_PER_UNIT; +} + +void S3L_reflect(S3L_Vec4 toLight, S3L_Vec4 normal, S3L_Vec4 *result) +{ + S3L_Unit d = 2 * S3L_vec3Dot(toLight,normal); + + result->x = (normal.x * d) / S3L_FRACTIONS_PER_UNIT - toLight.x; + result->y = (normal.y * d) / S3L_FRACTIONS_PER_UNIT - toLight.y; + result->z = (normal.z * d) / S3L_FRACTIONS_PER_UNIT - toLight.z; +} + +void S3L_vec3Cross(S3L_Vec4 a, S3L_Vec4 b, S3L_Vec4 *result) +{ + result->x = a.y * b.z - a.z * b.y; + result->y = a.z * b.x - a.x * b.z; + result->z = a.x * b.y - a.y * b.x; +} + +void S3L_triangleNormal(S3L_Vec4 t0, S3L_Vec4 t1, S3L_Vec4 t2, S3L_Vec4 *n) +{ + #define ANTI_OVERFLOW 32 + + t1.x = (t1.x - t0.x) / ANTI_OVERFLOW; + t1.y = (t1.y - t0.y) / ANTI_OVERFLOW; + t1.z = (t1.z - t0.z) / ANTI_OVERFLOW; + + t2.x = (t2.x - t0.x) / ANTI_OVERFLOW; + t2.y = (t2.y - t0.y) / ANTI_OVERFLOW; + t2.z = (t2.z - t0.z) / ANTI_OVERFLOW; + + #undef ANTI_OVERFLOW + + S3L_vec3Cross(t1,t2,n); + + S3L_vec3Normalize(n); +} + +void S3L_getIndexedTriangleValues( + S3L_Index triangleIndex, + const S3L_Index *indices, + const S3L_Unit *values, + uint8_t numComponents, + S3L_Vec4 *v0, + S3L_Vec4 *v1, + S3L_Vec4 *v2) +{ + uint32_t i0, i1; + S3L_Unit *value; + + i0 = triangleIndex * 3; + i1 = indices[i0] * numComponents; + value = (S3L_Unit *) v0; + + if (numComponents > 4) + numComponents = 4; + + for (uint8_t j = 0; j < numComponents; ++j) + { + *value = values[i1]; + i1++; + value++; + } + + i0++; + i1 = indices[i0] * numComponents; + value = (S3L_Unit *) v1; + + for (uint8_t j = 0; j < numComponents; ++j) + { + *value = values[i1]; + i1++; + value++; + } + + i0++; + i1 = indices[i0] * numComponents; + value = (S3L_Unit *) v2; + + for (uint8_t j = 0; j < numComponents; ++j) + { + *value = values[i1]; + i1++; + value++; + } +} + +void S3L_computeModelNormals(S3L_Model3D model, S3L_Unit *dst, + int8_t transformNormals) +{ + S3L_Index vPos = 0; + + S3L_Vec4 n; + + n.w = 0; + + S3L_Vec4 ns[S3L_NORMAL_COMPUTE_MAXIMUM_AVERAGE]; + S3L_Index normalCount; + + for (uint32_t i = 0; i < model.vertexCount; ++i) + { + normalCount = 0; + + for (uint32_t j = 0; j < model.triangleCount * 3; j += 3) + { + if ( + (model.triangles[j] == i) || + (model.triangles[j + 1] == i) || + (model.triangles[j + 2] == i)) + { + S3L_Vec4 t0, t1, t2; + uint32_t vIndex; + + #define getVertex(n)\ + vIndex = model.triangles[j + n] * 3;\ + t##n.x = model.vertices[vIndex];\ + vIndex++;\ + t##n.y = model.vertices[vIndex];\ + vIndex++;\ + t##n.z = model.vertices[vIndex]; + + getVertex(0) + getVertex(1) + getVertex(2) + + #undef getVertex + + S3L_triangleNormal(t0,t1,t2,&(ns[normalCount])); + + normalCount++; + + if (normalCount >= S3L_NORMAL_COMPUTE_MAXIMUM_AVERAGE) + break; + } + } + + n.x = S3L_FRACTIONS_PER_UNIT; + n.y = 0; + n.z = 0; + + if (normalCount != 0) + { + // compute average + + n.x = 0; + + for (uint8_t i = 0; i < normalCount; ++i) + { + n.x += ns[i].x; + n.y += ns[i].y; + n.z += ns[i].z; + } + + n.x /= normalCount; + n.y /= normalCount; + n.z /= normalCount; + + S3L_vec3Normalize(&n); + } + + dst[vPos] = n.x; + vPos++; + + dst[vPos] = n.y; + vPos++; + + dst[vPos] = n.z; + vPos++; + } + + S3L_Mat4 m; + + S3L_makeWorldMatrix(model.transform,m); + + if (transformNormals) + for (S3L_Index i = 0; i < model.vertexCount * 3; i += 3) + { + n.x = dst[i]; + n.y = dst[i + 1]; + n.z = dst[i + 2]; + + S3L_vec4Xmat4(&n,m); + + dst[i] = n.x; + dst[i + 1] = n.y; + dst[i + 2] = n.z; + } +} + +void S3L_vec4Xmat4(S3L_Vec4 *v, S3L_Mat4 m) +{ + S3L_Vec4 vBackup; + + vBackup.x = v->x; + vBackup.y = v->y; + vBackup.z = v->z; + vBackup.w = v->w; + + #define dotCol(col)\ + ((vBackup.x * m[col][0]) +\ + (vBackup.y * m[col][1]) +\ + (vBackup.z * m[col][2]) +\ + (vBackup.w * m[col][3])) / S3L_FRACTIONS_PER_UNIT + + v->x = dotCol(0); + v->y = dotCol(1); + v->z = dotCol(2); + v->w = dotCol(3); +} + +void S3L_vec3Xmat4(S3L_Vec4 *v, S3L_Mat4 m) +{ + S3L_Vec4 vBackup; + + #undef dotCol + #define dotCol(col)\ + (vBackup.x * m[col][0]) / S3L_FRACTIONS_PER_UNIT +\ + (vBackup.y * m[col][1]) / S3L_FRACTIONS_PER_UNIT +\ + (vBackup.z * m[col][2]) / S3L_FRACTIONS_PER_UNIT +\ + m[col][3] + + vBackup.x = v->x; + vBackup.y = v->y; + vBackup.z = v->z; + vBackup.w = v->w; + + v->x = dotCol(0); + v->y = dotCol(1); + v->z = dotCol(2); + v->w = S3L_FRACTIONS_PER_UNIT; +} + +#undef dotCol + +S3L_Unit S3L_abs(S3L_Unit value) +{ + return value * (((value >= 0) << 1) - 1); +} + +S3L_Unit S3L_min(S3L_Unit v1, S3L_Unit v2) +{ + return v1 >= v2 ? v2 : v1; +} + +S3L_Unit S3L_max(S3L_Unit v1, S3L_Unit v2) +{ + return v1 >= v2 ? v1 : v2; +} + +S3L_Unit S3L_clamp(S3L_Unit v, S3L_Unit v1, S3L_Unit v2) +{ + return v >= v1 ? (v <= v2 ? v : v2) : v1; +} + +S3L_Unit S3L_zeroClamp(S3L_Unit value) +{ + return (value * (value >= 0)); +} + +S3L_Unit S3L_wrap(S3L_Unit value, S3L_Unit mod) +{ + return value >= 0 ? (value % mod) : (mod + (value % mod) - 1); +} + +S3L_Unit S3L_nonZero(S3L_Unit value) +{ + return (value + (value == 0)); +} + +S3L_Unit S3L_interpolate(S3L_Unit v1, S3L_Unit v2, S3L_Unit t, S3L_Unit tMax) +{ + return v1 + ((v2 - v1) * t) / tMax; +} + +S3L_Unit S3L_interpolateByUnit(S3L_Unit v1, S3L_Unit v2, S3L_Unit t) +{ + return v1 + ((v2 - v1) * t) / S3L_FRACTIONS_PER_UNIT; +} + +S3L_Unit S3L_interpolateByUnitFrom0(S3L_Unit v2, S3L_Unit t) +{ + return (v2 * t) / S3L_FRACTIONS_PER_UNIT; +} + +S3L_Unit S3L_interpolateFrom0(S3L_Unit v2, S3L_Unit t, S3L_Unit tMax) +{ + return (v2 * t) / tMax; +} + +S3L_Unit S3L_distanceManhattan(S3L_Vec4 a, S3L_Vec4 b) +{ + return + S3L_abs(a.x - b.x) + + S3L_abs(a.y - b.y) + + S3L_abs(a.z - b.z); +} + +void S3L_mat4Xmat4(S3L_Mat4 m1, S3L_Mat4 m2) +{ + S3L_Mat4 mat1; + + for (uint16_t row = 0; row < 4; ++row) + for (uint16_t col = 0; col < 4; ++col) + mat1[col][row] = m1[col][row]; + + for (uint16_t row = 0; row < 4; ++row) + for (uint16_t col = 0; col < 4; ++col) + { + m1[col][row] = 0; + + for (uint16_t i = 0; i < 4; ++i) + m1[col][row] += + (mat1[i][row] * m2[col][i]) / S3L_FRACTIONS_PER_UNIT; + } +} + +S3L_Unit S3L_sin(S3L_Unit x) +{ + x = S3L_wrap(x / S3L_SIN_TABLE_UNIT_STEP,S3L_SIN_TABLE_LENGTH * 4); + int8_t positive = 1; + + if (x < S3L_SIN_TABLE_LENGTH) + { + } + else if (x < S3L_SIN_TABLE_LENGTH * 2) + { + x = S3L_SIN_TABLE_LENGTH * 2 - x - 1; + } + else if (x < S3L_SIN_TABLE_LENGTH * 3) + { + x = x - S3L_SIN_TABLE_LENGTH * 2; + positive = 0; + } + else + { + x = S3L_SIN_TABLE_LENGTH - (x - S3L_SIN_TABLE_LENGTH * 3) - 1; + positive = 0; + } + + return positive ? S3L_sinTable[x] : -1 * S3L_sinTable[x]; +} + +S3L_Unit S3L_asin(S3L_Unit x) +{ + x = S3L_clamp(x,-S3L_FRACTIONS_PER_UNIT,S3L_FRACTIONS_PER_UNIT); + + int8_t sign = 1; + + if (x < 0) + { + sign = -1; + x *= -1; + } + + int16_t low = 0; + int16_t high = S3L_SIN_TABLE_LENGTH -1; + int16_t middle; + + while (low <= high) // binary search + { + middle = (low + high) / 2; + + S3L_Unit v = S3L_sinTable[middle]; + + if (v > x) + high = middle - 1; + else if (v < x) + low = middle + 1; + else + break; + } + + middle *= S3L_SIN_TABLE_UNIT_STEP; + + return sign * middle; +} + +S3L_Unit S3L_cos(S3L_Unit x) +{ + return S3L_sin(x + S3L_FRACTIONS_PER_UNIT / 4); +} + +void S3L_correctBarycentricCoords(S3L_Unit barycentric[3]) +{ + barycentric[0] = S3L_clamp(barycentric[0],0,S3L_FRACTIONS_PER_UNIT); + barycentric[1] = S3L_clamp(barycentric[1],0,S3L_FRACTIONS_PER_UNIT); + + S3L_Unit d = S3L_FRACTIONS_PER_UNIT - barycentric[0] - barycentric[1]; + + if (d < 0) + { + barycentric[0] += d; + barycentric[2] = 0; + } + else + barycentric[2] = d; +} + +void S3L_makeTranslationMat( + S3L_Unit offsetX, + S3L_Unit offsetY, + S3L_Unit offsetZ, + S3L_Mat4 m) +{ + #define M(x,y) m[x][y] + #define S S3L_FRACTIONS_PER_UNIT + + M(0,0) = S; M(1,0) = 0; M(2,0) = 0; M(3,0) = 0; + M(0,1) = 0; M(1,1) = S; M(2,1) = 0; M(3,1) = 0; + M(0,2) = 0; M(1,2) = 0; M(2,2) = S; M(3,2) = 0; + M(0,3) = offsetX; M(1,3) = offsetY; M(2,3) = offsetZ; M(3,3) = S; + + #undef M + #undef S +} + +void S3L_makeScaleMatrix( + S3L_Unit scaleX, + S3L_Unit scaleY, + S3L_Unit scaleZ, + S3L_Mat4 m) +{ + #define M(x,y) m[x][y] + + M(0,0) = scaleX; M(1,0) = 0; M(2,0) = 0; M(3,0) = 0; + M(0,1) = 0; M(1,1) = scaleY; M(2,1) = 0; M(3,1) = 0; + M(0,2) = 0; M(1,2) = 0; M(2,2) = scaleZ; M(3,2) = 0; + M(0,3) = 0; M(1,3) = 0; M(2,3) = 0; M(3,3) = S3L_FRACTIONS_PER_UNIT; + + #undef M +} + +void S3L_makeRotationMatrixZXY( + S3L_Unit byX, + S3L_Unit byY, + S3L_Unit byZ, + S3L_Mat4 m) +{ + byX *= -1; + byY *= -1; + byZ *= -1; + + S3L_Unit sx = S3L_sin(byX); + S3L_Unit sy = S3L_sin(byY); + S3L_Unit sz = S3L_sin(byZ); + + S3L_Unit cx = S3L_cos(byX); + S3L_Unit cy = S3L_cos(byY); + S3L_Unit cz = S3L_cos(byZ); + + #define M(x,y) m[x][y] + #define S S3L_FRACTIONS_PER_UNIT + + M(0,0) = (cy * cz) / S + (sy * sx * sz) / (S * S); + M(1,0) = (cx * sz) / S; + M(2,0) = (cy * sx * sz) / (S * S) - (cz * sy) / S; + M(3,0) = 0; + + M(0,1) = (cz * sy * sx) / (S * S) - (cy * sz) / S; + M(1,1) = (cx * cz) / S; + M(2,1) = (cy * cz * sx) / (S * S) + (sy * sz) / S; + M(3,1) = 0; + + M(0,2) = (cx * sy) / S; + M(1,2) = -1 * sx; + M(2,2) = (cy * cx) / S; + M(3,2) = 0; + + M(0,3) = 0; + M(1,3) = 0; + M(2,3) = 0; + M(3,3) = S3L_FRACTIONS_PER_UNIT; + + #undef M + #undef S +} + +S3L_Unit S3L_sqrt(S3L_Unit value) +{ + int8_t sign = 1; + + if (value < 0) + { + sign = -1; + value *= -1; + } + + uint32_t result = 0; + uint32_t a = value; + uint32_t b = 1u << 30; + + while (b > a) + b >>= 2; + + while (b != 0) + { + if (a >= result + b) + { + a -= result + b; + result = result + 2 * b; + } + + b >>= 2; + result >>= 1; + } + + return result * sign; +} + +S3L_Unit S3L_vec3Length(S3L_Vec4 v) +{ + return S3L_sqrt(v.x * v.x + v.y * v.y + v.z * v.z); +} + +S3L_Unit S3L_vec2Length(S3L_Vec4 v) +{ + return S3L_sqrt(v.x * v.x + v.y * v.y); +} + +void S3L_vec3Normalize(S3L_Vec4 *v) +{ + #define SCALE 16 + #define BOTTOM_LIMIT 16 + #define UPPER_LIMIT 900 + + /* Here we try to decide if the vector is too small and would cause + inaccurate result due to very its inaccurate length. If so, we scale + it up. We can't scale up everything as big vectors overflow in length + calculations. */ + + if ( + S3L_abs(v->x) <= BOTTOM_LIMIT && + S3L_abs(v->y) <= BOTTOM_LIMIT && + S3L_abs(v->z) <= BOTTOM_LIMIT) + { + v->x *= SCALE; + v->y *= SCALE; + v->z *= SCALE; + } + else if ( + S3L_abs(v->x) > UPPER_LIMIT || + S3L_abs(v->y) > UPPER_LIMIT || + S3L_abs(v->z) > UPPER_LIMIT) + { + v->x /= SCALE; + v->y /= SCALE; + v->z /= SCALE; + } + + #undef SCALE + #undef BOTTOM_LIMIT + #undef UPPER_LIMIT + + S3L_Unit l = S3L_vec3Length(*v); + + if (l == 0) + return; + + v->x = (v->x * S3L_FRACTIONS_PER_UNIT) / l; + v->y = (v->y * S3L_FRACTIONS_PER_UNIT) / l; + v->z = (v->z * S3L_FRACTIONS_PER_UNIT) / l; +} + +void S3L_vec3NormalizeFast(S3L_Vec4 *v) +{ + S3L_Unit l = S3L_vec3Length(*v); + + if (l == 0) + return; + + v->x = (v->x * S3L_FRACTIONS_PER_UNIT) / l; + v->y = (v->y * S3L_FRACTIONS_PER_UNIT) / l; + v->z = (v->z * S3L_FRACTIONS_PER_UNIT) / l; +} + +void S3L_transform3DInit(S3L_Transform3D *t) +{ + S3L_vec4Init(&(t->translation)); + S3L_vec4Init(&(t->rotation)); + t->scale.x = S3L_FRACTIONS_PER_UNIT; + t->scale.y = S3L_FRACTIONS_PER_UNIT; + t->scale.z = S3L_FRACTIONS_PER_UNIT; + t->scale.w = 0; +} + +/** Performs perspecive division (z-divide). Does NOT check for division by + zero. */ +static inline void S3L_perspectiveDivide(S3L_Vec4 *vector, + S3L_Unit focalLength) +{ + vector->x = (vector->x * focalLength) / vector->z; + vector->y = (vector->y * focalLength) / vector->z; +} + +void project3DPointToScreen( + S3L_Vec4 point, + S3L_Camera camera, + S3L_Vec4 *result) +{ + S3L_Mat4 m; + S3L_makeCameraMatrix(camera.transform,m); + + S3L_Unit s = point.w; + + point.w = S3L_FRACTIONS_PER_UNIT; + + S3L_vec3Xmat4(&point,m); + + point.z = S3L_nonZero(point.z); + + S3L_perspectiveDivide(&point,camera.focalLength); + + S3L_ScreenCoord x, y; + + S3L_mapProjectionPlaneToScreen(point,&x,&y); + + result->x = x; + result->y = y; + result->z = point.z; + + result->w = + (point.z <= 0) ? 0 : + ( + (s * camera.focalLength * S3L_RESOLUTION_X) / + (point.z * S3L_FRACTIONS_PER_UNIT) + ); +} + +void S3L_lookAt(S3L_Vec4 pointTo, S3L_Transform3D *t) +{ + S3L_Vec4 v; + + v.x = pointTo.x - t->translation.x; + v.y = pointTo.z - t->translation.z; + + S3L_Unit dx = v.x; + S3L_Unit l = S3L_vec2Length(v); + + dx = (v.x * S3L_FRACTIONS_PER_UNIT) / S3L_nonZero(l); // normalize + + t->rotation.y = -1 * S3L_asin(dx); + + if (v.y < 0) + t->rotation.y = S3L_FRACTIONS_PER_UNIT / 2 - t->rotation.y; + + v.x = pointTo.y - t->translation.y; + v.y = l; + + l = S3L_vec2Length(v); + + dx = (v.x * S3L_FRACTIONS_PER_UNIT) / S3L_nonZero(l); + + t->rotation.x = S3L_asin(dx); +} + +void S3L_transform3DSet( + S3L_Unit tx, + S3L_Unit ty, + S3L_Unit tz, + S3L_Unit rx, + S3L_Unit ry, + S3L_Unit rz, + S3L_Unit sx, + S3L_Unit sy, + S3L_Unit sz, + S3L_Transform3D *t) +{ + t->translation.x = tx; + t->translation.y = ty; + t->translation.z = tz; + + t->rotation.x = rx; + t->rotation.y = ry; + t->rotation.z = rz; + + t->scale.x = sx; + t->scale.y = sy; + t->scale.z = sz; +} + +void S3L_cameraInit(S3L_Camera *camera) +{ + camera->focalLength = S3L_FRACTIONS_PER_UNIT; + S3L_transform3DInit(&(camera->transform)); +} + +void S3L_rotationToDirections( + S3L_Vec4 rotation, + S3L_Unit length, + S3L_Vec4 *forw, + S3L_Vec4 *right, + S3L_Vec4 *up) +{ + S3L_Mat4 m; + + S3L_makeRotationMatrixZXY(rotation.x,rotation.y,rotation.z,m); + + if (forw != 0) + { + forw->x = 0; + forw->y = 0; + forw->z = length; + S3L_vec3Xmat4(forw,m); + } + + if (right != 0) + { + right->x = length; + right->y = 0; + right->z = 0; + S3L_vec3Xmat4(right,m); + } + + if (up != 0) + { + up->x = 0; + up->y = length; + up->z = 0; + S3L_vec3Xmat4(up,m); + } +} + +void S3L_pixelInfoInit(S3L_PixelInfo *p) +{ + p->x = 0; + p->y = 0; + p->barycentric[0] = S3L_FRACTIONS_PER_UNIT; + p->barycentric[1] = 0; + p->barycentric[2] = 0; + p->modelIndex = 0; + p->triangleIndex = 0; + p->triangleID = 0; + p->depth = 0; + p->previousZ = 0; +} + +void S3L_model3DInit( + const S3L_Unit *vertices, + S3L_Index vertexCount, + const S3L_Index *triangles, + S3L_Index triangleCount, + S3L_Model3D *model) +{ + model->vertices = vertices; + model->vertexCount = vertexCount; + model->triangles = triangles; + model->triangleCount = triangleCount; + model->customTransformMatrix = 0; + + S3L_transform3DInit(&(model->transform)); + S3L_drawConfigInit(&(model->config)); +} + +void S3L_sceneInit( + S3L_Model3D *models, + S3L_Index modelCount, + S3L_Scene *scene) +{ + scene->models = models; + scene->modelCount = modelCount; + S3L_cameraInit(&(scene->camera)); +} + +void S3L_drawConfigInit(S3L_DrawConfig *config) +{ + config->backfaceCulling = 2; + config->visible = 1; +} + +#ifndef S3L_PIXEL_FUNCTION + #error Pixel rendering function (S3L_PIXEL_FUNCTION) not specified! +#endif + +static inline void S3L_PIXEL_FUNCTION(S3L_PixelInfo *pixel); // forward decl + +/** Serves to accelerate linear interpolation for performance-critical + code. Functions such as S3L_interpolate require division to compute each + interpolated value, while S3L_FastLerpState only requires a division for + the initiation and a shift for retrieving each interpolated value. + + S3L_FastLerpState stores a value and a step, both scaled (shifted by + S3L_FAST_LERP_QUALITY) to increase precision. The step is being added to the + value, which achieves the interpolation. This will only be useful for + interpolations in which we need to get the interpolated value in every step. + + BEWARE! Shifting a negative value is undefined, so handling shifting of + negative values has to be done cleverly. */ +typedef struct +{ + S3L_Unit valueScaled; + S3L_Unit stepScaled; +} S3L_FastLerpState; + +#define S3L_getFastLerpValue(state)\ + (state.valueScaled >> S3L_FAST_LERP_QUALITY) + +#define S3L_stepFastLerp(state)\ + state.valueScaled += state.stepScaled + +static inline S3L_Unit S3L_interpolateBarycentric( + S3L_Unit value0, + S3L_Unit value1, + S3L_Unit value2, + S3L_Unit barycentric[3]) +{ + return + ( + (value0 * barycentric[0]) + + (value1 * barycentric[1]) + + (value2 * barycentric[2]) + ) / S3L_FRACTIONS_PER_UNIT; +} + +void S3L_mapProjectionPlaneToScreen( + S3L_Vec4 point, + S3L_ScreenCoord *screenX, + S3L_ScreenCoord *screenY) +{ + *screenX = + S3L_HALF_RESOLUTION_X + + (point.x * S3L_HALF_RESOLUTION_X) / S3L_FRACTIONS_PER_UNIT; + + *screenY = + S3L_HALF_RESOLUTION_Y - + (point.y * S3L_HALF_RESOLUTION_X) / S3L_FRACTIONS_PER_UNIT; +} + +void S3L_zBufferClear(void) +{ +#if S3L_Z_BUFFER + for (uint32_t i = 0; i < S3L_RESOLUTION_X * S3L_RESOLUTION_Y; ++i) + S3L_zBuffer[i] = S3L_MAX_DEPTH; +#endif +} + +void S3L_stencilBufferClear(void) +{ +#if S3L_STENCIL_BUFFER + for (uint32_t i = 0; i < S3L_STENCIL_BUFFER_SIZE; ++i) + S3L_stencilBuffer[i] = 0; +#endif +} + +void S3L_newFrame(void) +{ + S3L_zBufferClear(); + S3L_stencilBufferClear(); +} + +/* + the following serves to communicate info about if the triangle has been split + and how the barycentrics should be remapped. +*/ +uint8_t _S3L_projectedTriangleState = 0; // 0 = normal, 1 = cut, 2 = split + +#if S3L_NEAR_CROSS_STRATEGY == 3 +S3L_Vec4 _S3L_triangleRemapBarycentrics[6]; +#endif + +void S3L_drawTriangle( + S3L_Vec4 point0, + S3L_Vec4 point1, + S3L_Vec4 point2, + S3L_Index modelIndex, + S3L_Index triangleIndex) +{ + S3L_PixelInfo p; + S3L_pixelInfoInit(&p); + p.modelIndex = modelIndex; + p.triangleIndex = triangleIndex; + p.triangleID = (modelIndex << 16) | triangleIndex; + + S3L_Vec4 *tPointSS, *lPointSS, *rPointSS; /* points in Screen Space (in + S3L_Units, normalized by + S3L_FRACTIONS_PER_UNIT) */ + + S3L_Unit *barycentric0; // bar. coord that gets higher from L to R + S3L_Unit *barycentric1; // bar. coord that gets higher from R to L + S3L_Unit *barycentric2; // bar. coord that gets higher from bottom up + + // sort the vertices: + + #define assignPoints(t,a,b)\ + {\ + tPointSS = &point##t;\ + barycentric2 = &(p.barycentric[t]);\ + if (S3L_triangleWinding(point##t.x,point##t.y,point##a.x,point##a.y,\ + point##b.x,point##b.y) >= 0)\ + {\ + lPointSS = &point##a; rPointSS = &point##b;\ + barycentric0 = &(p.barycentric[b]);\ + barycentric1 = &(p.barycentric[a]);\ + }\ + else\ + {\ + lPointSS = &point##b; rPointSS = &point##a;\ + barycentric0 = &(p.barycentric[a]);\ + barycentric1 = &(p.barycentric[b]);\ + }\ + } + + if (point0.y <= point1.y) + { + if (point0.y <= point2.y) + assignPoints(0,1,2) + else + assignPoints(2,0,1) + } + else + { + if (point1.y <= point2.y) + assignPoints(1,0,2) + else + assignPoints(2,0,1) + } + + #undef assignPoints + +#if S3L_FLAT + *barycentric0 = S3L_FRACTIONS_PER_UNIT / 3; + *barycentric1 = S3L_FRACTIONS_PER_UNIT / 3; + *barycentric2 = S3L_FRACTIONS_PER_UNIT - 2 * (S3L_FRACTIONS_PER_UNIT / 3); +#endif + + p.triangleSize[0] = rPointSS->x - lPointSS->x; + p.triangleSize[1] = + (rPointSS->y > lPointSS->y ? rPointSS->y : lPointSS->y) - tPointSS->y; + + // now draw the triangle line by line: + + S3L_ScreenCoord splitY; // Y of the vertically middle point of the triangle + S3L_ScreenCoord endY; // bottom Y of the whole triangle + int splitOnLeft; /* whether splitY is the y coord. of left or right + point */ + + if (rPointSS->y <= lPointSS->y) + { + splitY = rPointSS->y; + splitOnLeft = 0; + endY = lPointSS->y; + } + else + { + splitY = lPointSS->y; + splitOnLeft = 1; + endY = rPointSS->y; + } + + S3L_ScreenCoord currentY = tPointSS->y; + + /* We'll be using an algorithm similar to Bresenham line algorithm. The + specifics of this algorithm are among others: + + - drawing possibly NON-CONTINUOUS line + - NOT tracing the line exactly, but rather rasterizing one the right + side of it, according to the pixel CENTERS, INCLUDING the pixel + centers + + The principle is this: + + - Move vertically by pixels and accumulate the error (abs(dx/dy)). + - If the error is greater than one (crossed the next pixel center), keep + moving horizontally and substracting 1 from the error until it is less + than 1 again. + - To make this INTEGER ONLY, scale the case so that distance between + pixels is equal to dy (instead of 1). This way the error becomes + dx/dy * dy == dx, and we're comparing the error to (and potentially + substracting) 1 * dy == dy. */ + + int16_t + /* triangle side: + left right */ + lX, rX, // current x position on the screen + lDx, rDx, // dx (end point - start point) + lDy, rDy, // dy (end point - start point) + lInc, rInc, // direction in which to increment (1 or -1) + lErr, rErr, // current error (Bresenham) + lErrCmp, rErrCmp, // helper for deciding comparison (> vs >=) + lErrAdd, rErrAdd, // error value to add in each Bresenham cycle + lErrSub, rErrSub; // error value to substract when moving in x direction + + S3L_FastLerpState lSideFLS, rSideFLS; + +#if S3L_COMPUTE_LERP_DEPTH + S3L_FastLerpState lDepthFLS, rDepthFLS; + + #define initDepthFLS(s,p1,p2)\ + s##DepthFLS.valueScaled = p1##PointSS->z << S3L_FAST_LERP_QUALITY;\ + s##DepthFLS.stepScaled = ((p2##PointSS->z << S3L_FAST_LERP_QUALITY) -\ + s##DepthFLS.valueScaled) / (s##Dy != 0 ? s##Dy : 1); +#else + #define initDepthFLS(s,p1,p2) ; +#endif + + /* init side for the algorithm, params: + s - which side (l or r) + p1 - point from (t, l or r) + p2 - point to (t, l or r) + down - whether the side coordinate goes top-down or vice versa */ + #define initSide(s,p1,p2,down)\ + s##X = p1##PointSS->x;\ + s##Dx = p2##PointSS->x - p1##PointSS->x;\ + s##Dy = p2##PointSS->y - p1##PointSS->y;\ + initDepthFLS(s,p1,p2)\ + s##SideFLS.stepScaled = (S3L_FRACTIONS_PER_UNIT << S3L_FAST_LERP_QUALITY)\ + / (s##Dy != 0 ? s##Dy : 1);\ + s##SideFLS.valueScaled = 0;\ + if (!down)\ + {\ + s##SideFLS.valueScaled =\ + S3L_FRACTIONS_PER_UNIT << S3L_FAST_LERP_QUALITY;\ + s##SideFLS.stepScaled *= -1;\ + }\ + s##Inc = s##Dx >= 0 ? 1 : -1;\ + if (s##Dx < 0)\ + {s##Err = 0; s##ErrCmp = 0;}\ + else\ + {s##Err = s##Dy; s##ErrCmp = 1;}\ + s##ErrAdd = S3L_abs(s##Dx);\ + s##ErrSub = s##Dy != 0 ? s##Dy : 1; /* don't allow 0, could lead to an + infinite substracting loop */ + + #define stepSide(s)\ + while (s##Err - s##Dy >= s##ErrCmp)\ + {\ + s##X += s##Inc;\ + s##Err -= s##ErrSub;\ + }\ + s##Err += s##ErrAdd; + + initSide(r,t,r,1) + initSide(l,t,l,1) + +#if S3L_PERSPECTIVE_CORRECTION + /* PC is done by linearly interpolating reciprocals from which the corrected + velues can be computed. See + http://www.lysator.liu.se/~mikaelk/doc/perspectivetexture/ */ + + #if S3L_PERSPECTIVE_CORRECTION == 1 + #define Z_RECIP_NUMERATOR\ + (S3L_FRACTIONS_PER_UNIT * S3L_FRACTIONS_PER_UNIT * S3L_FRACTIONS_PER_UNIT) + #elif S3L_PERSPECTIVE_CORRECTION == 2 + #define Z_RECIP_NUMERATOR\ + (S3L_FRACTIONS_PER_UNIT * S3L_FRACTIONS_PER_UNIT) + #endif + /* ^ This numerator is a number by which we divide values for the + reciprocals. For PC == 2 it has to be lower because linear interpolation + scaling would make it overflow -- this results in lower depth precision + in bigger distance for PC == 2. */ + + S3L_Unit + tPointRecipZ, lPointRecipZ, rPointRecipZ, /* Reciprocals of the depth of + each triangle point. */ + lRecip0, lRecip1, rRecip0, rRecip1; /* Helper variables for swapping + the above after split. */ + + tPointRecipZ = Z_RECIP_NUMERATOR / S3L_nonZero(tPointSS->z); + lPointRecipZ = Z_RECIP_NUMERATOR / S3L_nonZero(lPointSS->z); + rPointRecipZ = Z_RECIP_NUMERATOR / S3L_nonZero(rPointSS->z); + + lRecip0 = tPointRecipZ; + lRecip1 = lPointRecipZ; + rRecip0 = tPointRecipZ; + rRecip1 = rPointRecipZ; + + #define manageSplitPerspective(b0,b1)\ + b1##Recip0 = b0##PointRecipZ;\ + b1##Recip1 = b1##PointRecipZ;\ + b0##Recip0 = b0##PointRecipZ;\ + b0##Recip1 = tPointRecipZ; +#else + #define manageSplitPerspective(b0,b1) ; +#endif + + // clip to the screen in y dimension: + + endY = S3L_min(endY,S3L_RESOLUTION_Y); + + /* Clipping above the screen (y < 0) can't be easily done here, will be + handled inside the loop. */ + + while (currentY < endY) /* draw the triangle from top to bottom -- the + bottom-most row is left out because, following + from the rasterization rules (see start of the + file), it is to never be rasterized. */ + { + if (currentY == splitY) // reached a vertical split of the triangle? + { + #define manageSplit(b0,b1,s0,s1)\ + S3L_Unit *tmp = barycentric##b0;\ + barycentric##b0 = barycentric##b1;\ + barycentric##b1 = tmp;\ + s0##SideFLS.valueScaled = (S3L_FRACTIONS_PER_UNIT\ + << S3L_FAST_LERP_QUALITY) - s0##SideFLS.valueScaled;\ + s0##SideFLS.stepScaled *= -1;\ + manageSplitPerspective(s0,s1) + + if (splitOnLeft) + { + initSide(l,l,r,0); + manageSplit(0,2,r,l) + } + else + { + initSide(r,r,l,0); + manageSplit(1,2,l,r) + } + } + + stepSide(r) + stepSide(l) + + if (currentY >= 0) /* clipping of pixels whose y < 0 (can't be easily done + outside the loop because of the Bresenham-like + algorithm steps) */ + { + p.y = currentY; + + // draw the horizontal line + +#if !S3L_FLAT + S3L_Unit rowLength = S3L_nonZero(rX - lX - 1); // prevent zero div + + #if S3L_PERSPECTIVE_CORRECTION + S3L_Unit lOverZ, lRecipZ, rOverZ, rRecipZ, lT, rT; + + lT = S3L_getFastLerpValue(lSideFLS); + rT = S3L_getFastLerpValue(rSideFLS); + + lOverZ = S3L_interpolateByUnitFrom0(lRecip1,lT); + lRecipZ = S3L_interpolateByUnit(lRecip0,lRecip1,lT); + + rOverZ = S3L_interpolateByUnitFrom0(rRecip1,rT); + rRecipZ = S3L_interpolateByUnit(rRecip0,rRecip1,rT); + #else + S3L_FastLerpState b0FLS, b1FLS; + + #if S3L_COMPUTE_LERP_DEPTH + S3L_FastLerpState depthFLS; + + depthFLS.valueScaled = lDepthFLS.valueScaled; + depthFLS.stepScaled = + (rDepthFLS.valueScaled - lDepthFLS.valueScaled) / rowLength; + #endif + + b0FLS.valueScaled = 0; + b1FLS.valueScaled = lSideFLS.valueScaled; + + b0FLS.stepScaled = rSideFLS.valueScaled / rowLength; + b1FLS.stepScaled = -1 * lSideFLS.valueScaled / rowLength; + #endif +#endif + + // clip to the screen in x dimension: + + S3L_ScreenCoord rXClipped = S3L_min(rX,S3L_RESOLUTION_X), + lXClipped = lX; + + if (lXClipped < 0) + { + lXClipped = 0; + +#if !S3L_PERSPECTIVE_CORRECTION && !S3L_FLAT + b0FLS.valueScaled -= lX * b0FLS.stepScaled; + b1FLS.valueScaled -= lX * b1FLS.stepScaled; + + #if S3L_COMPUTE_LERP_DEPTH + depthFLS.valueScaled -= lX * depthFLS.stepScaled; + #endif +#endif + } + +#if S3L_PERSPECTIVE_CORRECTION + S3L_ScreenCoord i = lXClipped - lX; /* helper var to save one + substraction in the inner + loop */ +#endif + +#if S3L_PERSPECTIVE_CORRECTION == 2 + S3L_FastLerpState + depthPC, // interpolates depth between row segments + b0PC, // interpolates barycentric0 between row segments + b1PC; // interpolates barycentric1 between row segments + + /* ^ These interpolate values between row segments (lines of pixels + of S3L_PC_APPROX_LENGTH length). After each row segment perspective + correction is recomputed. */ + + depthPC.valueScaled = + (Z_RECIP_NUMERATOR / + S3L_nonZero(S3L_interpolate(lRecipZ,rRecipZ,i,rowLength))) + << S3L_FAST_LERP_QUALITY; + + b0PC.valueScaled = + ( + S3L_interpolateFrom0(rOverZ,i,rowLength) + * depthPC.valueScaled + ) / (Z_RECIP_NUMERATOR / S3L_FRACTIONS_PER_UNIT); + + b1PC.valueScaled = + ( + (lOverZ - S3L_interpolateFrom0(lOverZ,i,rowLength)) + * depthPC.valueScaled + ) / (Z_RECIP_NUMERATOR / S3L_FRACTIONS_PER_UNIT); + + int8_t rowCount = S3L_PC_APPROX_LENGTH; +#endif + +#if S3L_Z_BUFFER + uint32_t zBufferIndex = p.y * S3L_RESOLUTION_X + lXClipped; +#endif + + // draw the row -- inner loop: + + for (S3L_ScreenCoord x = lXClipped; x < rXClipped; ++x) + { + int8_t testsPassed = 1; + +#if S3L_STENCIL_BUFFER + if (!S3L_stencilTest(x,p.y)) + testsPassed = 0; +#endif + p.x = x; + +#if S3L_COMPUTE_DEPTH + #if S3L_PERSPECTIVE_CORRECTION == 1 + p.depth = Z_RECIP_NUMERATOR / + S3L_nonZero(S3L_interpolate(lRecipZ,rRecipZ,i,rowLength)); + #elif S3L_PERSPECTIVE_CORRECTION == 2 + if (rowCount >= S3L_PC_APPROX_LENGTH) + { + // init the linear interpolation to the next PC correct value + + rowCount = 0; + + S3L_Unit nextI = i + S3L_PC_APPROX_LENGTH; + + if (nextI < rowLength) + { + S3L_Unit nextDepthScaled = + ( + Z_RECIP_NUMERATOR / + S3L_nonZero(S3L_interpolate(lRecipZ,rRecipZ,nextI,rowLength)) + ) << S3L_FAST_LERP_QUALITY; + + depthPC.stepScaled = + (nextDepthScaled - depthPC.valueScaled) / S3L_PC_APPROX_LENGTH; + + S3L_Unit nextValue = + ( + S3L_interpolateFrom0(rOverZ,nextI,rowLength) + * nextDepthScaled + ) / (Z_RECIP_NUMERATOR / S3L_FRACTIONS_PER_UNIT); + + b0PC.stepScaled = + (nextValue - b0PC.valueScaled) / S3L_PC_APPROX_LENGTH; + + nextValue = + ( + (lOverZ - S3L_interpolateFrom0(lOverZ,nextI,rowLength)) + * nextDepthScaled + ) / (Z_RECIP_NUMERATOR / S3L_FRACTIONS_PER_UNIT); + + b1PC.stepScaled = + (nextValue - b1PC.valueScaled) / S3L_PC_APPROX_LENGTH; + } + else + { + /* A special case where we'd be interpolating outside the triangle. + It seems like a valid approach at first, but it creates a bug + in a case when the rasaterized triangle is near screen 0 and can + actually never reach the extrapolated screen position. So we + have to clamp to the actual end of the triangle here. */ + + S3L_Unit maxI = S3L_nonZero(rowLength - i); + + S3L_Unit nextDepthScaled = + ( + Z_RECIP_NUMERATOR / + S3L_nonZero(rRecipZ) + ) << S3L_FAST_LERP_QUALITY; + + depthPC.stepScaled = + (nextDepthScaled - depthPC.valueScaled) / maxI; + + S3L_Unit nextValue = + ( + rOverZ + * nextDepthScaled + ) / (Z_RECIP_NUMERATOR / S3L_FRACTIONS_PER_UNIT); + + b0PC.stepScaled = + (nextValue - b0PC.valueScaled) / maxI; + + b1PC.stepScaled = + -1 * b1PC.valueScaled / maxI; + } + } + + p.depth = S3L_getFastLerpValue(depthPC); + #else + p.depth = S3L_getFastLerpValue(depthFLS); + S3L_stepFastLerp(depthFLS); + #endif +#else // !S3L_COMPUTE_DEPTH + p.depth = (tPointSS->z + lPointSS->z + rPointSS->z) / 3; +#endif + +#if S3L_Z_BUFFER + p.previousZ = S3L_zBuffer[zBufferIndex]; + + zBufferIndex++; + + if (!S3L_zTest(p.x,p.y,p.depth)) + testsPassed = 0; +#endif + + if (testsPassed) + { +#if !S3L_FLAT + #if S3L_PERSPECTIVE_CORRECTION == 0 + *barycentric0 = S3L_getFastLerpValue(b0FLS); + *barycentric1 = S3L_getFastLerpValue(b1FLS); + #elif S3L_PERSPECTIVE_CORRECTION == 1 + *barycentric0 = + ( + S3L_interpolateFrom0(rOverZ,i,rowLength) + * p.depth + ) / (Z_RECIP_NUMERATOR / S3L_FRACTIONS_PER_UNIT); + + *barycentric1 = + ( + (lOverZ - S3L_interpolateFrom0(lOverZ,i,rowLength)) + * p.depth + ) / (Z_RECIP_NUMERATOR / S3L_FRACTIONS_PER_UNIT); + #elif S3L_PERSPECTIVE_CORRECTION == 2 + *barycentric0 = S3L_getFastLerpValue(b0PC); + *barycentric1 = S3L_getFastLerpValue(b1PC); + #endif + + *barycentric2 = + S3L_FRACTIONS_PER_UNIT - *barycentric0 - *barycentric1; +#endif + +#if S3L_NEAR_CROSS_STRATEGY == 3 + +if (_S3L_projectedTriangleState != 0) +{ + S3L_Unit newBarycentric[3]; + + newBarycentric[0] = S3L_interpolateBarycentric( + _S3L_triangleRemapBarycentrics[0].x, + _S3L_triangleRemapBarycentrics[1].x, + _S3L_triangleRemapBarycentrics[2].x, + p.barycentric); + + newBarycentric[1] = S3L_interpolateBarycentric( + _S3L_triangleRemapBarycentrics[0].y, + _S3L_triangleRemapBarycentrics[1].y, + _S3L_triangleRemapBarycentrics[2].y, + p.barycentric); + + newBarycentric[2] = S3L_interpolateBarycentric( + _S3L_triangleRemapBarycentrics[0].z, + _S3L_triangleRemapBarycentrics[1].z, + _S3L_triangleRemapBarycentrics[2].z, + p.barycentric); + + p.barycentric[0] = newBarycentric[0]; + p.barycentric[1] = newBarycentric[1]; + p.barycentric[2] = newBarycentric[2]; +} +#endif + + S3L_PIXEL_FUNCTION(&p); + } // tests passed + +#if !S3L_FLAT + #if S3L_PERSPECTIVE_CORRECTION + i++; + #if S3L_PERSPECTIVE_CORRECTION == 2 + rowCount++; + + S3L_stepFastLerp(depthPC); + S3L_stepFastLerp(b0PC); + S3L_stepFastLerp(b1PC); + #endif + #else + S3L_stepFastLerp(b0FLS); + S3L_stepFastLerp(b1FLS); + #endif +#endif + } // inner loop + } // y clipping + +#if !S3L_FLAT + S3L_stepFastLerp(lSideFLS); + S3L_stepFastLerp(rSideFLS); + + #if S3L_COMPUTE_LERP_DEPTH + S3L_stepFastLerp(lDepthFLS); + S3L_stepFastLerp(rDepthFLS); + #endif +#endif + + ++currentY; + } // row drawing + + #undef manageSplit + #undef initPC + #undef initSide + #undef stepSide + #undef Z_RECIP_NUMERATOR +} + +void S3L_rotate2DPoint(S3L_Unit *x, S3L_Unit *y, S3L_Unit angle) +{ + if (angle < S3L_SIN_TABLE_UNIT_STEP) + return; // no visible rotation + + S3L_Unit angleSin = S3L_sin(angle); + S3L_Unit angleCos = S3L_cos(angle); + + S3L_Unit xBackup = *x; + + *x = + (angleCos * (*x)) / S3L_FRACTIONS_PER_UNIT - + (angleSin * (*y)) / S3L_FRACTIONS_PER_UNIT; + + *y = + (angleSin * xBackup) / S3L_FRACTIONS_PER_UNIT + + (angleCos * (*y)) / S3L_FRACTIONS_PER_UNIT; +} + +void S3L_makeWorldMatrix(S3L_Transform3D worldTransform, S3L_Mat4 m) +{ + S3L_makeScaleMatrix( + worldTransform.scale.x, + worldTransform.scale.y, + worldTransform.scale.z, + m); + + S3L_Mat4 t; + + S3L_makeRotationMatrixZXY( + worldTransform.rotation.x, + worldTransform.rotation.y, + worldTransform.rotation.z, + t); + + S3L_mat4Xmat4(m,t); + + S3L_makeTranslationMat( + worldTransform.translation.x, + worldTransform.translation.y, + worldTransform.translation.z, + t); + + S3L_mat4Xmat4(m,t); +} + +void S3L_mat4Transpose(S3L_Mat4 m) +{ + S3L_Unit tmp; + + for (uint8_t y = 0; y < 3; ++y) + for (uint8_t x = 1 + y; x < 4; ++x) + { + tmp = m[x][y]; + m[x][y] = m[y][x]; + m[y][x] = tmp; + } +} + +void S3L_makeCameraMatrix(S3L_Transform3D cameraTransform, S3L_Mat4 m) +{ + S3L_makeTranslationMat( + -1 * cameraTransform.translation.x, + -1 * cameraTransform.translation.y, + -1 * cameraTransform.translation.z, + m); + + S3L_Mat4 r; + + S3L_makeRotationMatrixZXY( + cameraTransform.rotation.x, + cameraTransform.rotation.y, + cameraTransform.rotation.z, + r); + + S3L_mat4Transpose(r); // transposing creates an inverse transform + + S3L_mat4Xmat4(m,r); +} + +int8_t S3L_triangleWinding( + S3L_ScreenCoord x0, + S3L_ScreenCoord y0, + S3L_ScreenCoord x1, + S3L_ScreenCoord y1, + S3L_ScreenCoord x2, + S3L_ScreenCoord y2) +{ + int32_t winding = + (y1 - y0) * (x2 - x1) - (x1 - x0) * (y2 - y1); + // ^ cross product for points with z == 0 + + return winding > 0 ? 1 : (winding < 0 ? -1 : 0); +} + +/** + Checks if given triangle (in Screen Space) is at least partially visible, + i.e. returns false if the triangle is either completely outside the frustum + (left, right, top, bottom, near) or is invisible due to backface culling. +*/ +static inline int8_t S3L_triangleIsVisible( + S3L_Vec4 p0, + S3L_Vec4 p1, + S3L_Vec4 p2, + uint8_t backfaceCulling) +{ + #define clipTest(c,cmp,v)\ + (p0.c cmp (v) && p1.c cmp (v) && p2.c cmp (v)) + + if ( // outside frustum? +#if S3L_NEAR_CROSS_STRATEGY == 0 + p0.z <= S3L_NEAR || p1.z <= S3L_NEAR || p2.z <= S3L_NEAR || + // ^ partially in front of NEAR? +#else + clipTest(z,<=,S3L_NEAR) || // completely in front of NEAR? +#endif + clipTest(x,<,0) || + clipTest(x,>=,S3L_RESOLUTION_X) || + clipTest(y,<,0) || + clipTest(y,>,S3L_RESOLUTION_Y) + ) + return 0; + + #undef clipTest + + if (backfaceCulling != 0) + { + int8_t winding = + S3L_triangleWinding(p0.x,p0.y,p1.x,p1.y,p2.x,p2.y); + + if ((backfaceCulling == 1 && winding > 0) || + (backfaceCulling == 2 && winding < 0)) + return 0; + } + + return 1; +} + +#if S3L_SORT != 0 +typedef struct +{ + uint8_t modelIndex; + S3L_Index triangleIndex; + uint16_t sortValue; +} _S3L_TriangleToSort; + +_S3L_TriangleToSort S3L_sortArray[S3L_MAX_TRIANGES_DRAWN]; +uint16_t S3L_sortArrayLength; +#endif + +void _S3L_projectVertex( + const S3L_Model3D *model, + S3L_Index triangleIndex, + uint8_t vertex, + S3L_Mat4 projectionMatrix, + S3L_Vec4 *result) +{ + uint32_t vertexIndex = model->triangles[triangleIndex * 3 + vertex] * 3; + + result->x = model->vertices[vertexIndex]; + result->y = model->vertices[vertexIndex + 1]; + result->z = model->vertices[vertexIndex + 2]; + result->w = S3L_FRACTIONS_PER_UNIT; // needed for translation + + S3L_vec3Xmat4(result,projectionMatrix); + + result->w = result->z; + /* We'll keep the non-clamped z in w for sorting. */ +} + +void _S3L_mapProjectedVertexToScreen(S3L_Vec4 *vertex, S3L_Unit focalLength) +{ + vertex->z = vertex->z >= S3L_NEAR ? vertex->z : S3L_NEAR; + /* ^ This firstly prevents zero division in the follwoing z-divide and + secondly "pushes" vertices that are in front of near a little bit forward, + which makes them behave a bit better. If all three vertices end up exactly + on NEAR, the triangle will be culled. */ + + S3L_perspectiveDivide(vertex,focalLength); + + S3L_ScreenCoord sX, sY; + + S3L_mapProjectionPlaneToScreen(*vertex,&sX,&sY); + + vertex->x = sX; + vertex->y = sY; +} + +/** + Projects a triangle to the screen. If enabled, a triangle can be potentially + subdivided into two if it crosses the near plane, in which case two projected + triangles are returned (the info about splitting or cutting the triangle is + passed in global variables, see above). +*/ +void _S3L_projectTriangle( + const S3L_Model3D *model, + S3L_Index triangleIndex, + S3L_Mat4 matrix, + uint32_t focalLength, + S3L_Vec4 transformed[6]) +{ + _S3L_projectVertex(model,triangleIndex,0,matrix,&(transformed[0])); + _S3L_projectVertex(model,triangleIndex,1,matrix,&(transformed[1])); + _S3L_projectVertex(model,triangleIndex,2,matrix,&(transformed[2])); + + _S3L_projectedTriangleState = 0; + +#if S3L_NEAR_CROSS_STRATEGY == 2 || S3L_NEAR_CROSS_STRATEGY == 3 + uint8_t infront = 0; + uint8_t behind = 0; + uint8_t infrontI[3]; + uint8_t behindI[3]; + + for (uint8_t i = 0; i < 3; ++i) + if (transformed[i].z < S3L_NEAR) + { + infrontI[infront] = i; + infront++; + } + else + { + behindI[behind] = i; + behind++; + } + +#if S3L_NEAR_CROSS_STRATEGY == 3 + for (int i = 0; i < 3; ++i) + S3L_vec4Init(&(_S3L_triangleRemapBarycentrics[i])); + + _S3L_triangleRemapBarycentrics[0].x = S3L_FRACTIONS_PER_UNIT; + _S3L_triangleRemapBarycentrics[1].y = S3L_FRACTIONS_PER_UNIT; + _S3L_triangleRemapBarycentrics[2].z = S3L_FRACTIONS_PER_UNIT; +#endif + +#define interpolateVertex \ + S3L_Unit ratio =\ + ((transformed[be].z - S3L_NEAR) * S3L_FRACTIONS_PER_UNIT) /\ + (transformed[be].z - transformed[in].z);\ + transformed[in].x = transformed[be].x - \ + ((transformed[be].x - transformed[in].x) * ratio) /\ + S3L_FRACTIONS_PER_UNIT;\ + transformed[in].y = transformed[be].y -\ + ((transformed[be].y - transformed[in].y) * ratio) /\ + S3L_FRACTIONS_PER_UNIT;\ + transformed[in].z = S3L_NEAR;\ + if (beI != 0) {\ + beI->x = (beI->x * ratio) / S3L_FRACTIONS_PER_UNIT;\ + beI->y = (beI->y * ratio) / S3L_FRACTIONS_PER_UNIT;\ + beI->z = (beI->z * ratio) / S3L_FRACTIONS_PER_UNIT;\ + ratio = S3L_FRACTIONS_PER_UNIT - ratio;\ + beI->x += (beB->x * ratio) / S3L_FRACTIONS_PER_UNIT;\ + beI->y += (beB->y * ratio) / S3L_FRACTIONS_PER_UNIT;\ + beI->z += (beB->z * ratio) / S3L_FRACTIONS_PER_UNIT; } + + if (infront == 2) + { + // shift the two vertices forward along the edge + for (uint8_t i = 0; i < 2; ++i) + { + uint8_t be = behindI[0], in = infrontI[i]; + +#if S3L_NEAR_CROSS_STRATEGY == 3 + S3L_Vec4 *beI = &(_S3L_triangleRemapBarycentrics[in]), + *beB = &(_S3L_triangleRemapBarycentrics[be]); +#else + S3L_Vec4 *beI = 0, *beB = 0; +#endif + + interpolateVertex + + _S3L_projectedTriangleState = 1; + } + } + else if (infront == 1) + { + // create another triangle and do the shifts + transformed[3] = transformed[behindI[1]]; + transformed[4] = transformed[infrontI[0]]; + transformed[5] = transformed[infrontI[0]]; + +#if S3L_NEAR_CROSS_STRATEGY == 3 + _S3L_triangleRemapBarycentrics[3] = + _S3L_triangleRemapBarycentrics[behindI[1]]; + _S3L_triangleRemapBarycentrics[4] = + _S3L_triangleRemapBarycentrics[infrontI[0]]; + _S3L_triangleRemapBarycentrics[5] = + _S3L_triangleRemapBarycentrics[infrontI[0]]; +#endif + + for (uint8_t i = 0; i < 2; ++i) + { + uint8_t be = behindI[i], in = i + 4; + +#if S3L_NEAR_CROSS_STRATEGY == 3 + S3L_Vec4 *beI = &(_S3L_triangleRemapBarycentrics[in]), + *beB = &(_S3L_triangleRemapBarycentrics[be]); +#else + S3L_Vec4 *beI = 0, *beB = 0; +#endif + + interpolateVertex + } + +#if S3L_NEAR_CROSS_STRATEGY == 3 + _S3L_triangleRemapBarycentrics[infrontI[0]] = + _S3L_triangleRemapBarycentrics[4]; +#endif + + transformed[infrontI[0]] = transformed[4]; + + _S3L_mapProjectedVertexToScreen(&transformed[3],focalLength); + _S3L_mapProjectedVertexToScreen(&transformed[4],focalLength); + _S3L_mapProjectedVertexToScreen(&transformed[5],focalLength); + + _S3L_projectedTriangleState = 2; + } + +#undef interpolateVertex +#endif // S3L_NEAR_CROSS_STRATEGY == 2 + + _S3L_mapProjectedVertexToScreen(&transformed[0],focalLength); + _S3L_mapProjectedVertexToScreen(&transformed[1],focalLength); + _S3L_mapProjectedVertexToScreen(&transformed[2],focalLength); +} + +void S3L_drawScene(S3L_Scene scene) +{ + S3L_Mat4 matFinal, matCamera; + S3L_Vec4 transformed[6]; // transformed triangle coords, for 2 triangles + + const S3L_Model3D *model; + S3L_Index modelIndex, triangleIndex; + + S3L_makeCameraMatrix(scene.camera.transform,matCamera); + +#if S3L_SORT != 0 + uint16_t previousModel = 0; + S3L_sortArrayLength = 0; +#endif + + for (modelIndex = 0; modelIndex < scene.modelCount; ++modelIndex) + { + if (!scene.models[modelIndex].config.visible) + continue; + +#if S3L_SORT != 0 + if (S3L_sortArrayLength >= S3L_MAX_TRIANGES_DRAWN) + break; + + previousModel = modelIndex; +#endif + + if (scene.models[modelIndex].customTransformMatrix == 0) + S3L_makeWorldMatrix(scene.models[modelIndex].transform,matFinal); + else + { + S3L_Mat4 *m = scene.models[modelIndex].customTransformMatrix; + + for (int8_t j = 0; j < 4; ++j) + for (int8_t i = 0; i < 4; ++i) + matFinal[i][j] = (*m)[i][j]; + } + + S3L_mat4Xmat4(matFinal,matCamera); + + S3L_Index triangleCount = scene.models[modelIndex].triangleCount; + + triangleIndex = 0; + + model = &(scene.models[modelIndex]); + + while (triangleIndex < triangleCount) + { + /* Some kind of cache could be used in theory to not project perviously + already projected vertices, but after some testing this was abandoned, + no gain was seen. */ + + _S3L_projectTriangle(model,triangleIndex,matFinal, + scene.camera.focalLength,transformed); + + if (S3L_triangleIsVisible(transformed[0],transformed[1],transformed[2], + model->config.backfaceCulling)) + { +#if S3L_SORT == 0 + // without sorting draw right away + S3L_drawTriangle(transformed[0],transformed[1],transformed[2],modelIndex, + triangleIndex); + + if (_S3L_projectedTriangleState == 2) // draw potential subtriangle + { +#if S3L_NEAR_CROSS_STRATEGY == 3 + _S3L_triangleRemapBarycentrics[0] = _S3L_triangleRemapBarycentrics[3]; + _S3L_triangleRemapBarycentrics[1] = _S3L_triangleRemapBarycentrics[4]; + _S3L_triangleRemapBarycentrics[2] = _S3L_triangleRemapBarycentrics[5]; +#endif + + S3L_drawTriangle(transformed[3],transformed[4],transformed[5], + modelIndex, triangleIndex); + } +#else + + if (S3L_sortArrayLength >= S3L_MAX_TRIANGES_DRAWN) + break; + + // with sorting add to a sort list + S3L_sortArray[S3L_sortArrayLength].modelIndex = modelIndex; + S3L_sortArray[S3L_sortArrayLength].triangleIndex = triangleIndex; + S3L_sortArray[S3L_sortArrayLength].sortValue = S3L_zeroClamp( + transformed[0].w + transformed[1].w + transformed[2].w) >> 2; + /* ^ + The w component here stores non-clamped z. + + As a simple approximation we sort by the triangle center point, + which is a mean coordinate -- we don't actually have to divide by 3 + (or anything), that is unnecessary for sorting! We shift by 2 just + as a fast operation to prevent overflow of the sum over uint_16t. */ + + S3L_sortArrayLength++; +#endif + } + + triangleIndex++; + } + } + +#if S3L_SORT != 0 + + #if S3L_SORT == 1 + #define cmp < + #else + #define cmp > + #endif + + /* Sort the triangles. We use insertion sort, because it has many advantages, + especially for smaller arrays (better than bubble sort, in-place, stable, + simple, ...). */ + + for (int16_t i = 1; i < S3L_sortArrayLength; ++i) + { + _S3L_TriangleToSort tmp = S3L_sortArray[i]; + + int16_t j = i - 1; + + while (j >= 0 && S3L_sortArray[j].sortValue cmp tmp.sortValue) + { + S3L_sortArray[j + 1] = S3L_sortArray[j]; + j--; + } + + S3L_sortArray[j + 1] = tmp; + } + + #undef cmp + + for (S3L_Index i = 0; i < S3L_sortArrayLength; ++i) // draw sorted triangles + { + modelIndex = S3L_sortArray[i].modelIndex; + triangleIndex = S3L_sortArray[i].triangleIndex; + + model = &(scene.models[modelIndex]); + + if (modelIndex != previousModel) + { + // only recompute the matrix when the model has changed + S3L_makeWorldMatrix(model->transform,matFinal); + S3L_mat4Xmat4(matFinal,matCamera); + previousModel = modelIndex; + } + + /* Here we project the points again, which is redundant and slow as they've + already been projected above, but saving the projected points would + require a lot of memory, which for small resolutions could be even + worse than z-bufer. So this seems to be the best way memory-wise. */ + + _S3L_projectTriangle(model,triangleIndex,matFinal,scene.camera.focalLength, + transformed); + + S3L_drawTriangle(transformed[0],transformed[1],transformed[2],modelIndex, + triangleIndex); + + if (_S3L_projectedTriangleState == 2) + { +#if S3L_NEAR_CROSS_STRATEGY == 3 + _S3L_triangleRemapBarycentrics[0] = _S3L_triangleRemapBarycentrics[3]; + _S3L_triangleRemapBarycentrics[1] = _S3L_triangleRemapBarycentrics[4]; + _S3L_triangleRemapBarycentrics[2] = _S3L_triangleRemapBarycentrics[5]; +#endif + + S3L_drawTriangle(transformed[3],transformed[4],transformed[5], + modelIndex, triangleIndex); + } + + } +#endif +} + +#endif // guard |