aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.clang-format212
-rw-r--r--.gitignore8
-rw-r--r--CMakeLists.txt21
-rw-r--r--src/carModel.h104
-rw-r--r--src/city.c336
-rw-r--r--src/cityModel.h958
-rw-r--r--src/cityTexture.h8890
-rw-r--r--src/small3dlib.h2945
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