# HG changeset patch # User John Tsiombikas # Date 1370460817 -10800 # Node ID 5019d031b485f97068847a9fbfba573d1cfebb76 initial commit diff -r 000000000000 -r 5019d031b485 .hgignore --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.hgignore Wed Jun 05 22:33:37 2013 +0300 @@ -0,0 +1,7 @@ +\.swp$ +\.o$ +\.d$ +build/ +project\.xcworkspace/ +\.xcuserstate$ +xcuserdata/ diff -r 000000000000 -r 5019d031b485 GPMark.xcodeproj/project.pbxproj --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/GPMark.xcodeproj/project.pbxproj Wed Jun 05 22:33:37 2013 +0300 @@ -0,0 +1,373 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 0622D506175F992A00FC2C4E /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0622D505175F992A00FC2C4E /* UIKit.framework */; }; + 0622D508175F992A00FC2C4E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0622D507175F992A00FC2C4E /* Foundation.framework */; }; + 0622D50A175F992A00FC2C4E /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0622D509175F992A00FC2C4E /* CoreGraphics.framework */; }; + 0622D523175F994C00FC2C4E /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0622D522175F994C00FC2C4E /* OpenGLES.framework */; }; + 0622D525175F99A400FC2C4E /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0622D524175F99A400FC2C4E /* QuartzCore.framework */; }; + 0696FB7C175FC8D70075F2F7 /* bitfonts.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0696FB64175FC8D60075F2F7 /* bitfonts.cpp */; }; + 0696FB7D175FC8D70075F2F7 /* blitting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0696FB66175FC8D60075F2F7 /* blitting.cpp */; }; + 0696FB7E175FC8D70075F2F7 /* bunny3d.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0696FB68175FC8D60075F2F7 /* bunny3d.cpp */; }; + 0696FB7F175FC8D70075F2F7 /* engine3d.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0696FB6A175FC8D60075F2F7 /* engine3d.cpp */; }; + 0696FB80175FC8D70075F2F7 /* env1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0696FB6C175FC8D60075F2F7 /* env1.cpp */; }; + 0696FB81175FC8D70075F2F7 /* generate3d.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0696FB6E175FC8D60075F2F7 /* generate3d.cpp */; }; + 0696FB82175FC8D70075F2F7 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0696FB70175FC8D70075F2F7 /* main.cpp */; }; + 0696FB83175FC8D70075F2F7 /* plasma.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0696FB72175FC8D70075F2F7 /* plasma.cpp */; }; + 0696FB84175FC8D70075F2F7 /* radialblur.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0696FB74175FC8D70075F2F7 /* radialblur.cpp */; }; + 0696FB85175FC8D70075F2F7 /* render3d.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0696FB76175FC8D70075F2F7 /* render3d.cpp */; }; + 0696FB86175FC8D70075F2F7 /* rotozoomer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0696FB78175FC8D70075F2F7 /* rotozoomer.cpp */; }; + 0696FB87175FC8D70075F2F7 /* sky1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0696FB7A175FC8D70075F2F7 /* sky1.cpp */; }; + 0696FB8D175FC8E80075F2F7 /* app_delegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 0696FB89175FC8E80075F2F7 /* app_delegate.m */; }; + 0696FB8E175FC8E80075F2F7 /* glview.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0696FB8B175FC8E80075F2F7 /* glview.mm */; }; + 0696FB8F175FC8E80075F2F7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 0696FB8C175FC8E80075F2F7 /* main.m */; }; + 0696FB93175FC95F0075F2F7 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 0696FB92175FC95F0075F2F7 /* Default.png */; }; + 0696FB95175FC9650075F2F7 /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 0696FB94175FC9650075F2F7 /* Default@2x.png */; }; + 0696FB97175FC96A0075F2F7 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 0696FB96175FC96A0075F2F7 /* Default-568h@2x.png */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 0622D502175F992A00FC2C4E /* GPMark.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GPMark.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 0622D505175F992A00FC2C4E /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 0622D507175F992A00FC2C4E /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 0622D509175F992A00FC2C4E /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + 0622D522175F994C00FC2C4E /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + 0622D524175F99A400FC2C4E /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; + 0696FB64175FC8D60075F2F7 /* bitfonts.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = bitfonts.cpp; path = src/bitfonts.cpp; sourceTree = SOURCE_ROOT; }; + 0696FB65175FC8D60075F2F7 /* bitfonts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = bitfonts.h; path = src/bitfonts.h; sourceTree = SOURCE_ROOT; }; + 0696FB66175FC8D60075F2F7 /* blitting.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = blitting.cpp; path = src/blitting.cpp; sourceTree = SOURCE_ROOT; }; + 0696FB67175FC8D60075F2F7 /* blitting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = blitting.h; path = src/blitting.h; sourceTree = SOURCE_ROOT; }; + 0696FB68175FC8D60075F2F7 /* bunny3d.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = bunny3d.cpp; path = src/bunny3d.cpp; sourceTree = SOURCE_ROOT; }; + 0696FB69175FC8D60075F2F7 /* bunny3d.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = bunny3d.h; path = src/bunny3d.h; sourceTree = SOURCE_ROOT; }; + 0696FB6A175FC8D60075F2F7 /* engine3d.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = engine3d.cpp; path = src/engine3d.cpp; sourceTree = SOURCE_ROOT; }; + 0696FB6B175FC8D60075F2F7 /* engine3d.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = engine3d.h; path = src/engine3d.h; sourceTree = SOURCE_ROOT; }; + 0696FB6C175FC8D60075F2F7 /* env1.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = env1.cpp; path = src/env1.cpp; sourceTree = SOURCE_ROOT; }; + 0696FB6D175FC8D60075F2F7 /* env1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = env1.h; path = src/env1.h; sourceTree = SOURCE_ROOT; }; + 0696FB6E175FC8D60075F2F7 /* generate3d.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = generate3d.cpp; path = src/generate3d.cpp; sourceTree = SOURCE_ROOT; }; + 0696FB6F175FC8D70075F2F7 /* generate3d.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = generate3d.h; path = src/generate3d.h; sourceTree = SOURCE_ROOT; }; + 0696FB70175FC8D70075F2F7 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = src/main.cpp; sourceTree = SOURCE_ROOT; }; + 0696FB71175FC8D70075F2F7 /* main.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = main.h; path = src/main.h; sourceTree = SOURCE_ROOT; }; + 0696FB72175FC8D70075F2F7 /* plasma.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = plasma.cpp; path = src/plasma.cpp; sourceTree = SOURCE_ROOT; }; + 0696FB73175FC8D70075F2F7 /* plasma.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = plasma.h; path = src/plasma.h; sourceTree = SOURCE_ROOT; }; + 0696FB74175FC8D70075F2F7 /* radialblur.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = radialblur.cpp; path = src/radialblur.cpp; sourceTree = SOURCE_ROOT; }; + 0696FB75175FC8D70075F2F7 /* radialblur.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = radialblur.h; path = src/radialblur.h; sourceTree = SOURCE_ROOT; }; + 0696FB76175FC8D70075F2F7 /* render3d.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = render3d.cpp; path = src/render3d.cpp; sourceTree = SOURCE_ROOT; }; + 0696FB77175FC8D70075F2F7 /* render3d.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = render3d.h; path = src/render3d.h; sourceTree = SOURCE_ROOT; }; + 0696FB78175FC8D70075F2F7 /* rotozoomer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = rotozoomer.cpp; path = src/rotozoomer.cpp; sourceTree = SOURCE_ROOT; }; + 0696FB79175FC8D70075F2F7 /* rotozoomer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = rotozoomer.h; path = src/rotozoomer.h; sourceTree = SOURCE_ROOT; }; + 0696FB7A175FC8D70075F2F7 /* sky1.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = sky1.cpp; path = src/sky1.cpp; sourceTree = SOURCE_ROOT; }; + 0696FB7B175FC8D70075F2F7 /* sky1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = sky1.h; path = src/sky1.h; sourceTree = SOURCE_ROOT; }; + 0696FB88175FC8E80075F2F7 /* app_delegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = app_delegate.h; path = src/ios/app_delegate.h; sourceTree = SOURCE_ROOT; }; + 0696FB89175FC8E80075F2F7 /* app_delegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = app_delegate.m; path = src/ios/app_delegate.m; sourceTree = SOURCE_ROOT; }; + 0696FB8A175FC8E80075F2F7 /* glview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = glview.h; path = src/ios/glview.h; sourceTree = SOURCE_ROOT; }; + 0696FB8B175FC8E80075F2F7 /* glview.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = glview.mm; path = src/ios/glview.mm; sourceTree = SOURCE_ROOT; }; + 0696FB8C175FC8E80075F2F7 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = src/ios/main.m; sourceTree = SOURCE_ROOT; }; + 0696FB90175FC9090075F2F7 /* GPMark-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "GPMark-Info.plist"; path = "ios/GPMark-Info.plist"; sourceTree = SOURCE_ROOT; }; + 0696FB92175FC95F0075F2F7 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = ""; }; + 0696FB94175FC9650075F2F7 /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default@2x.png"; sourceTree = ""; }; + 0696FB96175FC96A0075F2F7 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 0622D4FF175F992A00FC2C4E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 0622D525175F99A400FC2C4E /* QuartzCore.framework in Frameworks */, + 0622D523175F994C00FC2C4E /* OpenGLES.framework in Frameworks */, + 0622D506175F992A00FC2C4E /* UIKit.framework in Frameworks */, + 0622D508175F992A00FC2C4E /* Foundation.framework in Frameworks */, + 0622D50A175F992A00FC2C4E /* CoreGraphics.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 0622D4F9175F992A00FC2C4E = { + isa = PBXGroup; + children = ( + 0696FB96175FC96A0075F2F7 /* Default-568h@2x.png */, + 0696FB94175FC9650075F2F7 /* Default@2x.png */, + 0696FB92175FC95F0075F2F7 /* Default.png */, + 0622D524175F99A400FC2C4E /* QuartzCore.framework */, + 0622D522175F994C00FC2C4E /* OpenGLES.framework */, + 0622D50B175F992A00FC2C4E /* GPMark */, + 0622D504175F992A00FC2C4E /* Frameworks */, + 0622D503175F992A00FC2C4E /* Products */, + ); + sourceTree = ""; + }; + 0622D503175F992A00FC2C4E /* Products */ = { + isa = PBXGroup; + children = ( + 0622D502175F992A00FC2C4E /* GPMark.app */, + ); + name = Products; + sourceTree = ""; + }; + 0622D504175F992A00FC2C4E /* Frameworks */ = { + isa = PBXGroup; + children = ( + 0622D505175F992A00FC2C4E /* UIKit.framework */, + 0622D507175F992A00FC2C4E /* Foundation.framework */, + 0622D509175F992A00FC2C4E /* CoreGraphics.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 0622D50B175F992A00FC2C4E /* GPMark */ = { + isa = PBXGroup; + children = ( + 0622D54C175F9BEA00FC2C4E /* ios */, + 0622D526175F9A5B00FC2C4E /* src */, + 0622D50C175F992A00FC2C4E /* Supporting Files */, + ); + path = GPMark; + sourceTree = ""; + }; + 0622D50C175F992A00FC2C4E /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 0696FB90175FC9090075F2F7 /* GPMark-Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 0622D526175F9A5B00FC2C4E /* src */ = { + isa = PBXGroup; + children = ( + 0696FB64175FC8D60075F2F7 /* bitfonts.cpp */, + 0696FB65175FC8D60075F2F7 /* bitfonts.h */, + 0696FB66175FC8D60075F2F7 /* blitting.cpp */, + 0696FB67175FC8D60075F2F7 /* blitting.h */, + 0696FB68175FC8D60075F2F7 /* bunny3d.cpp */, + 0696FB69175FC8D60075F2F7 /* bunny3d.h */, + 0696FB6A175FC8D60075F2F7 /* engine3d.cpp */, + 0696FB6B175FC8D60075F2F7 /* engine3d.h */, + 0696FB6C175FC8D60075F2F7 /* env1.cpp */, + 0696FB6D175FC8D60075F2F7 /* env1.h */, + 0696FB6E175FC8D60075F2F7 /* generate3d.cpp */, + 0696FB6F175FC8D70075F2F7 /* generate3d.h */, + 0696FB70175FC8D70075F2F7 /* main.cpp */, + 0696FB71175FC8D70075F2F7 /* main.h */, + 0696FB72175FC8D70075F2F7 /* plasma.cpp */, + 0696FB73175FC8D70075F2F7 /* plasma.h */, + 0696FB74175FC8D70075F2F7 /* radialblur.cpp */, + 0696FB75175FC8D70075F2F7 /* radialblur.h */, + 0696FB76175FC8D70075F2F7 /* render3d.cpp */, + 0696FB77175FC8D70075F2F7 /* render3d.h */, + 0696FB78175FC8D70075F2F7 /* rotozoomer.cpp */, + 0696FB79175FC8D70075F2F7 /* rotozoomer.h */, + 0696FB7A175FC8D70075F2F7 /* sky1.cpp */, + 0696FB7B175FC8D70075F2F7 /* sky1.h */, + ); + name = src; + sourceTree = ""; + }; + 0622D54C175F9BEA00FC2C4E /* ios */ = { + isa = PBXGroup; + children = ( + 0696FB88175FC8E80075F2F7 /* app_delegate.h */, + 0696FB89175FC8E80075F2F7 /* app_delegate.m */, + 0696FB8A175FC8E80075F2F7 /* glview.h */, + 0696FB8B175FC8E80075F2F7 /* glview.mm */, + 0696FB8C175FC8E80075F2F7 /* main.m */, + ); + name = ios; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 0622D501175F992A00FC2C4E /* GPMark */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0622D51F175F992A00FC2C4E /* Build configuration list for PBXNativeTarget "GPMark" */; + buildPhases = ( + 0622D4FE175F992A00FC2C4E /* Sources */, + 0622D4FF175F992A00FC2C4E /* Frameworks */, + 0622D500175F992A00FC2C4E /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = GPMark; + productName = GPMark; + productReference = 0622D502175F992A00FC2C4E /* GPMark.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 0622D4FA175F992A00FC2C4E /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0460; + ORGANIZATIONNAME = Mindlapse; + }; + buildConfigurationList = 0622D4FD175F992A00FC2C4E /* Build configuration list for PBXProject "gpmark" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 0622D4F9175F992A00FC2C4E; + productRefGroup = 0622D503175F992A00FC2C4E /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 0622D501175F992A00FC2C4E /* GPMark */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 0622D500175F992A00FC2C4E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0696FB93175FC95F0075F2F7 /* Default.png in Resources */, + 0696FB95175FC9650075F2F7 /* Default@2x.png in Resources */, + 0696FB97175FC96A0075F2F7 /* Default-568h@2x.png in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 0622D4FE175F992A00FC2C4E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0696FB7C175FC8D70075F2F7 /* bitfonts.cpp in Sources */, + 0696FB7D175FC8D70075F2F7 /* blitting.cpp in Sources */, + 0696FB7E175FC8D70075F2F7 /* bunny3d.cpp in Sources */, + 0696FB7F175FC8D70075F2F7 /* engine3d.cpp in Sources */, + 0696FB80175FC8D70075F2F7 /* env1.cpp in Sources */, + 0696FB81175FC8D70075F2F7 /* generate3d.cpp in Sources */, + 0696FB82175FC8D70075F2F7 /* main.cpp in Sources */, + 0696FB83175FC8D70075F2F7 /* plasma.cpp in Sources */, + 0696FB84175FC8D70075F2F7 /* radialblur.cpp in Sources */, + 0696FB85175FC8D70075F2F7 /* render3d.cpp in Sources */, + 0696FB86175FC8D70075F2F7 /* rotozoomer.cpp in Sources */, + 0696FB87175FC8D70075F2F7 /* sky1.cpp in Sources */, + 0696FB8D175FC8E80075F2F7 /* app_delegate.m in Sources */, + 0696FB8E175FC8E80075F2F7 /* glview.mm in Sources */, + 0696FB8F175FC8E80075F2F7 /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 0622D51D175F992A00FC2C4E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 6.1; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 0622D51E175F992A00FC2C4E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 6.1; + OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 0622D520175F992A00FC2C4E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_PRECOMPILE_PREFIX_HEADER = NO; + INFOPLIST_FILE = "$(SRCROOT)/ios/GPMark-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 5.0; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + 0622D521175F992A00FC2C4E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_PRECOMPILE_PREFIX_HEADER = NO; + INFOPLIST_FILE = "$(SRCROOT)/ios/GPMark-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 5.0; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 0622D4FD175F992A00FC2C4E /* Build configuration list for PBXProject "gpmark" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0622D51D175F992A00FC2C4E /* Debug */, + 0622D51E175F992A00FC2C4E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 0622D51F175F992A00FC2C4E /* Build configuration list for PBXNativeTarget "GPMark" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0622D520175F992A00FC2C4E /* Debug */, + 0622D521175F992A00FC2C4E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 0622D4FA175F992A00FC2C4E /* Project object */; +} diff -r 000000000000 -r 5019d031b485 data/bunnybig.3do Binary file data/bunnybig.3do has changed diff -r 000000000000 -r 5019d031b485 data/draculf.bin Binary file data/draculf.bin has changed diff -r 000000000000 -r 5019d031b485 ios/Default-568h@2x.png Binary file ios/Default-568h@2x.png has changed diff -r 000000000000 -r 5019d031b485 ios/Default.png Binary file ios/Default.png has changed diff -r 000000000000 -r 5019d031b485 ios/Default@2x.png Binary file ios/Default@2x.png has changed diff -r 000000000000 -r 5019d031b485 ios/GPMark-Info.plist --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ios/GPMark-Info.plist Wed Jun 05 22:33:37 2013 +0300 @@ -0,0 +1,40 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + ${PRODUCT_NAME} + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + com.mutantstargoat.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + LSRequiresIPhoneOS + + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationLandscapeRight + + + diff -r 000000000000 -r 5019d031b485 src/bitfonts.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/bitfonts.cpp Wed Jun 05 22:33:37 2013 +0300 @@ -0,0 +1,15 @@ +unsigned char bitfonts[] = {0,0,0,0,0,0,0,0,4,12,8,24,16,0,32,0,10,18,20,0,0,0,0,0,0,20,126,40,252,80, +0,0,6,25,124,32,248,34,28,0,4,12,72,24,18,48,32,0,14,18,20,8,21,34,29,0,32,32,64,0,0,0, +0,0,16,32,96,64,64,64,32,0,4,2,2,2,6,4,8,0,8,42,28,127,28,42,8,0,0,4,12,62,24,16, +0,0,0,0,0,0,0,0,32,64,0,0,0,60,0,0,0,0,0,0,0,0,0,0,32,0,4,12,8,24,16,48, +32,0,14,17,35,77,113,66,60,0,12,28,12,8,24,16,16,0,30,50,4,24,48,96,124,0,28,50,6,4,2,98, +60,0,2,18,36,100,126,8,8,0,15,16,24,4,2,50,28,0,14,17,32,76,66,98,60,0,126,6,12,24,16,48, +32,0,56,36,24,100,66,98,60,0,14,17,17,9,2,34,28,0,0,0,16,0,0,16,0,0,0,0,16,0,16,32, +0,0,0,0,0,0,0,0,0,0,0,0,30,0,60,0,0,0,0,0,0,0,0,0,0,0,28,50,6,12,8,0, +16,0,0,0,0,0,0,0,0,0,14,27,51,63,99,65,65,0,28,18,57,38,65,65,62,0,14,25,32,96,64,98, +60,0,12,18,49,33,65,66,60,0,30,32,32,120,64,64,60,0,31,48,32,60,96,64,64,0,14,25,32,96,68,98, +60,0,17,17,50,46,100,68,68,0,8,8,24,16,48,32,32,0,2,2,2,6,68,68,56,0,16,17,54,60,120,76, +66,0,16,48,32,96,64,64,60,0,10,21,49,33,99,66,66,0,17,41,37,101,67,66,66,0,28,50,33,97,67,66, +60,0,28,50,34,36,120,64,64,0,28,50,33,97,77,66,61,0,28,50,34,36,124,70,66,0,14,25,16,12,2,70, +60,0,126,24,16,16,48,32,32,0,17,49,35,98,70,68,56,0,66,102,36,44,40,56,48,0,33,97,67,66,86,84, +40,0,67,36,24,28,36,66,66,0,34,18,22,12,12,8,24,0,31,2,4,4,8,24,62,0}; diff -r 000000000000 -r 5019d031b485 src/bitfonts.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/bitfonts.h Wed Jun 05 22:33:37 2013 +0300 @@ -0,0 +1,6 @@ +#ifndef BITFONTS_H +#define BITFONTS_H + +extern unsigned char bitfonts[]; + +#endif diff -r 000000000000 -r 5019d031b485 src/blitting.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/blitting.cpp Wed Jun 05 22:33:37 2013 +0300 @@ -0,0 +1,16 @@ +#include "main.h" + +void InitBlitting() +{ +} + +void RunBlitting(int ntime, unsigned short *vram) +{ + unsigned char cc = (ntime & 255) >> 3; + unsigned short c = (cc << 11) | ((cc << 1) << 5) | cc; + + for (int i=0; i +#include + +#include "engine3d.h" +#include "generate3d.h" +#include "render3d.h" +#include "main.h" + +point3d fpts[MAXDATA]; +point3d norms[MAXDATA]; +point3d pt_norms[MAXDATA]; +point2d spts[MAXDATA]; +point3d spls[MAXDATA]; + +unsigned short swp[MAXDATA]; + +int lightcalc = LIGHTVIEW; + +#define fp_mul 256 +#define fp_shr 8 +#define proj_shr 8 + + +vector3d CrossProduct(vector3d v1, vector3d v2) +{ + vector3d v; + v.x=v1.y*v2.z-v1.z*v2.y; + v.y=v1.z*v2.x-v1.x*v2.z; + v.z=v1.x*v2.y-v1.y*v2.x; + return v; +} + + +int DotProduct(vector3d v1, vector3d v2) +{ + return v1.x*v2.x + v1.y*v2.y + v1.z*v2.z; +} + + +vector3d Normalize(vector3d v) +{ + int d=(int)(sqrt(v.x*v.x+v.y*v.y+v.z*v.z)); + if (d!=0) + { + v.x=(v.x<pos.x * fp_mul); + int objposy = (int)(obj->pos.y * fp_mul); + int objposz = (int)(obj->pos.z * fp_mul); + + for (i=0; inpts; i++) + { + fpts[i].x += objposx; + fpts[i].y += objposy; + fpts[i].z += objposz; + } +} + +void rotate3d (object3d *obj) +{ + float cosxr = cos(obj->rot.x); float cosyr = cos(obj->rot.y); float coszr = cos(obj->rot.z); + float sinxr = sin(obj->rot.x); float sinyr = sin(obj->rot.y); float sinzr = sin(obj->rot.z); + + int xvx = (int)((cosyr * coszr) * fp_mul); int xvy = (int)((sinxr * sinyr * coszr - cosxr * sinzr) * fp_mul); int xvz = (int)((cosxr * sinyr * coszr + sinxr * sinzr) * fp_mul); + int yvx = (int)((cosyr * sinzr) * fp_mul); int yvy = (int)((cosxr * coszr + sinxr * sinyr * sinzr) * fp_mul); int yvz = (int)((-sinxr * coszr + cosxr * sinyr * sinzr) * fp_mul); + int zvx = (int)((-sinyr) * fp_mul); int zvy = (int)((sinxr * cosyr) * fp_mul); int zvz = (int)((cosxr * cosyr) * fp_mul); + + int x, y, z; + int i; + for (i=0; inpts; i++) + { + x = obj->point[i].x; + y = obj->point[i].y; + z = obj->point[i].z; + fpts[i].x = x * xvx + y * xvy + z * xvz; + fpts[i].y = x * yvx + y * yvy + z * yvz; + fpts[i].z = x * zvx + y * zvy + z * zvz; + } +} + + +void rotate3d_normals (object3d *obj) +{ + float cosxr = cos(obj->rot.x); float cosyr = cos(obj->rot.y); float coszr = cos(obj->rot.z); + float sinxr = sin(obj->rot.x); float sinyr = sin(obj->rot.y); float sinzr = sin(obj->rot.z); + + int xvx = (int)((cosyr * coszr) * fp_mul); int xvy = (int)((sinxr * sinyr * coszr - cosxr * sinzr) * fp_mul); int xvz = (int)((cosxr * sinyr * coszr + sinxr * sinzr) * fp_mul); + int yvx = (int)((cosyr * sinzr) * fp_mul); int yvy = (int)((cosxr * coszr + sinxr * sinyr * sinzr) * fp_mul); int yvz = (int)((-sinxr * coszr + cosxr * sinyr * sinzr) * fp_mul); + int zvx = (int)((-sinyr) * fp_mul); int zvy = (int)((sinxr * cosyr) * fp_mul); int zvz = (int)((cosxr * cosyr) * fp_mul); + + int x, y, z; + int i; + for (i=0; inpls; i++) + { + x = obj->normal[i].x; + y = obj->normal[i].y; + z = obj->normal[i].z; + norms[i].x = x * xvx + y * xvy + z * xvz; + norms[i].y = x * yvx + y * yvy + z * yvz; + norms[i].z = x * zvx + y * zvy + z * zvz; + } +} + + +void rotate3d_pt_normals (object3d *obj) +{ + float cosxr = cos(obj->rot.x); float cosyr = cos(obj->rot.y); float coszr = cos(obj->rot.z); + float sinxr = sin(obj->rot.x); float sinyr = sin(obj->rot.y); float sinzr = sin(obj->rot.z); + + int xvx = (int)((cosyr * coszr) * fp_mul); int xvy = (int)((sinxr * sinyr * coszr - cosxr * sinzr) * fp_mul); int xvz = (int)((cosxr * sinyr * coszr + sinxr * sinzr) * fp_mul); + int yvx = (int)((cosyr * sinzr) * fp_mul); int yvy = (int)((cosxr * coszr + sinxr * sinyr * sinzr) * fp_mul); int yvz = (int)((-sinxr * coszr + cosxr * sinyr * sinzr) * fp_mul); + int zvx = (int)((-sinyr) * fp_mul); int zvy = (int)((sinxr * cosyr) * fp_mul); int zvz = (int)((cosxr * cosyr) * fp_mul); + + int x, y, z; + int i; + for (i=0; inpts; i++) + { + x = obj->pt_normal[i].x; + y = obj->pt_normal[i].y; + z = obj->pt_normal[i].z; + pt_norms[i].x = x * xvx + y * xvy + z * xvz; + pt_norms[i].y = x * yvx + y * yvy + z * yvz; + pt_norms[i].z = x * zvx + y * zvy + z * zvz; + } +} + +void project3d (object3d *obj) +{ + int i; + int smul = 1; + + for (i=0; inpts; i++) + if (fpts[i].z > 0) + { + spts[i].x = ((fpts[i].x << proj_shr) / (fpts[i].z/smul)) + (ScreenWidth>>1); + spts[i].y = ((fpts[i].y << proj_shr) / (fpts[i].z/smul)) + (ScreenHeight>>1); + } +} + +void CalcPolyColorStatic(object3d *obj) +{ + int i, c; + for (i=0; inpls; i++) + { + c = norms[i].z>>8; + if (c<0) c=0; + if (c>255) c=255; + spls[i].c = c; + } +} + +void CalcPointColorStatic(object3d *obj) +{ + int i, c; + for (i=0; inpts; i++) + { + c = pt_norms[i].z>>8; + if (c<0) c=0; + if (c>255) c=255; + spts[i].c = c; + } +} + +void CalcPolyColorDynamic(object3d *obj) +{ + vector3d light, v; + light.x = 0; + light.y = 0; + light.z = 256; + float c; + + int i; + for (i=0; inpls; i++) + { + v.x = norms[i].x; + v.y = norms[i].y; + v.z = norms[i].z; + c = DotProduct(v,light); + spls[i].c = (int)c; + if (c<0) spls[i].c = 0; + if (spls[i].c>255) spls[i].c = 255; + } +} + +void CalcPointColorDynamic(object3d *obj) +{ + vector3d light, v; + light.x = 0; + light.y = 0; + light.z = 256; + float c; + + int i; + for (i=0; inpts; i++) + { + v.x = pt_norms[i].x; + v.y = pt_norms[i].y; + v.z = pt_norms[i].z; + c = DotProduct(v,light); + if (c<0) c = 0; + if (c>255) c = 255; + spts[i].c = (int)c; + } +} + +void CalcPointColor(object3d *obj) +{ + if (lightcalc==LIGHTVIEW) CalcPointColorStatic(obj); + if (lightcalc==LIGHTMOVE) CalcPointColorDynamic(obj); +} + +void CalcPolyColor(object3d *obj) +{ + if (lightcalc==LIGHTVIEW) CalcPolyColorStatic(obj); + if (lightcalc==LIGHTMOVE) CalcPolyColorDynamic(obj); +} + +void Calc3d(object3d *obj) +{ + rotate3d(obj); + translate3d(obj); + project3d(obj); +} + +void quicksort (int lo, int hi, int data[]) +{ + int m1 = lo; + int m2 = hi; + int temp0; + unsigned short temp1; + + int mp = data[(lo + hi)>>1]; + + while (m1<=m2) + { + while (data[m1] < mp) m1++; + while (mp < data[m2]) m2--; + + if (m1<=m2) + { + temp0 = data[m1]; data[m1] = data[m2]; data[m2] = temp0; + temp1 = swp[m1]; swp[m1] = swp[m2]; swp[m2] = temp1; + m1++; + m2--; + } + } + + if (m2>lo) quicksort(lo, m2, data); + if (m1 +#include +#include +#include "engine3d.h" +#include "generate3d.h" + +unsigned char addtimes[MAXDATA]; + +void CalcNorms(object3d *obj, int neg) +{ + vector3d v1,v2; + + obj->normal = (vector3d*)malloc(obj->npls * sizeof(vector3d)); + + int i; + for (i=0; inpls; i++) + { + v1.x = obj->point[obj->poly[i].p2].x - obj->point[obj->poly[i].p1].x; + v1.y = obj->point[obj->poly[i].p2].y - obj->point[obj->poly[i].p1].y; + v1.z = obj->point[obj->poly[i].p2].z - obj->point[obj->poly[i].p1].z; + + v2.x = obj->point[obj->poly[i].p1].x - obj->point[obj->poly[i].p0].x; + v2.y = obj->point[obj->poly[i].p1].y - obj->point[obj->poly[i].p0].y; + v2.z = obj->point[obj->poly[i].p1].z - obj->point[obj->poly[i].p0].z; + + obj->normal[i] = Normalize(CrossProduct(v1,v2)); + if (neg==1) obj->normal[i] = NegVec(obj->normal[i]); + } +} + +void CalcPtNorms(object3d *obj) +{ + obj->pt_normal = (vector3d*)malloc(obj->npts * sizeof(vector3d)); + + int i; + for (i=0; inpts; i++) + { + obj->pt_normal[i].x = 0; + obj->pt_normal[i].y = 0; + obj->pt_normal[i].z = 0; + } + + for (i=0; inpls; i++) + { + obj->pt_normal[obj->poly[i].p0].x += obj->normal[i].x; + obj->pt_normal[obj->poly[i].p0].y += obj->normal[i].y; + obj->pt_normal[obj->poly[i].p0].z += obj->normal[i].z; + obj->pt_normal[obj->poly[i].p1].x += obj->normal[i].x; + obj->pt_normal[obj->poly[i].p1].y += obj->normal[i].y; + obj->pt_normal[obj->poly[i].p1].z += obj->normal[i].z; + obj->pt_normal[obj->poly[i].p2].x += obj->normal[i].x; + obj->pt_normal[obj->poly[i].p2].y += obj->normal[i].y; + obj->pt_normal[obj->poly[i].p2].z += obj->normal[i].z; + addtimes[obj->poly[i].p0]++; + addtimes[obj->poly[i].p1]++; + addtimes[obj->poly[i].p2]++; + } + + for (i=0; inpts; i++) + { + if (addtimes[i]!=0) + { + obj->pt_normal[i].x /= addtimes[i]; + obj->pt_normal[i].y /= addtimes[i]; + obj->pt_normal[i].z /= addtimes[i]; + obj->pt_normal[i] = Normalize(obj->pt_normal[i]); + } + } +} + +void ReversePolygonOrder(object3d *obj) +{ + int i, a, b, c; + for (i=0; inpls; i++) + { + a = obj->poly[i].p0; + b = obj->poly[i].p1; + c = obj->poly[i].p2; + obj->poly[i].p0 = c; + obj->poly[i].p1 = b; + obj->poly[i].p2 = a; + } +} + + +void Load32bit3doFile(char* filename, object3d *obj, int neg, float stdiv) +{ + FILE *obj3d; + obj3d=fopen(filename,"rb"); + + obj->npts=fgetc(obj3d)+(fgetc(obj3d)<<8)+(fgetc(obj3d)<<16)+(fgetc(obj3d)<<24); + obj->nlns=fgetc(obj3d)+(fgetc(obj3d)<<8)+(fgetc(obj3d)<<16)+(fgetc(obj3d)<<24); + obj->npls=fgetc(obj3d)+(fgetc(obj3d)<<8)+(fgetc(obj3d)<<16)+(fgetc(obj3d)<<24); + + obj->point = (point3d*)malloc(obj->npts * sizeof(point3d)); + obj->line = (line2d*)malloc(obj->nlns * sizeof(line2d)); + obj->poly = (poly2d*)malloc(obj->npls * sizeof(poly2d)); + + int i; + for (i=0; inpts; i++) + { + obj->point[i].x = (int)((fgetc(obj3d)+(fgetc(obj3d)<<8)+(fgetc(obj3d)<<16)+(fgetc(obj3d)<<24) - 65536)/stdiv); + obj->point[i].y = (int)((fgetc(obj3d)+(fgetc(obj3d)<<8)+(fgetc(obj3d)<<16)+(fgetc(obj3d)<<24) - 65536)/stdiv); + obj->point[i].z = (int)((fgetc(obj3d)+(fgetc(obj3d)<<8)+(fgetc(obj3d)<<16)+(fgetc(obj3d)<<24) - 65536)/stdiv); + obj->point[i].c = 0xFFFFFF; + } + + for (i=0; inlns; i++) + { + obj->line[i].p0 = fgetc(obj3d)+(fgetc(obj3d)<<8)+(fgetc(obj3d)<<16)+(fgetc(obj3d)<<24); + obj->line[i].p1 = fgetc(obj3d)+(fgetc(obj3d)<<8)+(fgetc(obj3d)<<16)+(fgetc(obj3d)<<24); + obj->line[i].c = 0xFFFFFF; + } + + for (i=0; inpls; i++) + { + obj->poly[i].p0 = fgetc(obj3d)+(fgetc(obj3d)<<8)+(fgetc(obj3d)<<16)+(fgetc(obj3d)<<24); + obj->poly[i].p1 = fgetc(obj3d)+(fgetc(obj3d)<<8)+(fgetc(obj3d)<<16)+(fgetc(obj3d)<<24); + obj->poly[i].p2 = fgetc(obj3d)+(fgetc(obj3d)<<8)+(fgetc(obj3d)<<16)+(fgetc(obj3d)<<24); + } + + fclose(obj3d); + + CalcNorms(obj, neg); + CalcPtNorms(obj); +} diff -r 000000000000 -r 5019d031b485 src/generate3d.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/generate3d.h Wed Jun 05 22:33:37 2013 +0300 @@ -0,0 +1,12 @@ +#ifndef GENERATE3D_H +#define GENERATE3D_H + +#include "engine3d.h" + +void Load32bit3doFile(char* filename, object3d *obj, int neg, float stdiv); + +void CalcNorms(object3d *obj, int neg); +void CalcPtNorms(object3d *obj); +void ReversePolygonOrder(object3d *obj); + +#endif diff -r 000000000000 -r 5019d031b485 src/ios/app_delegate.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/ios/app_delegate.h Wed Jun 05 22:33:37 2013 +0300 @@ -0,0 +1,10 @@ +#import + +@class GLView; + +@interface AppDelegate : NSObject { + UIWindow *window; + GLView *glview; +} + +@end diff -r 000000000000 -r 5019d031b485 src/ios/app_delegate.m --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/ios/app_delegate.m Wed Jun 05 22:33:37 2013 +0300 @@ -0,0 +1,44 @@ +#import "app_delegate.h" +#import "glview.h" + +@implementation AppDelegate + +- (BOOL)application: (UIApplication*)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions +{ + window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] applicationFrame]]; + glview = [[GLView alloc] initWithFrame: window.frame]; + + [window addSubview: glview]; + [window makeKeyAndVisible]; + + window.rootViewController = [[UIViewController alloc] init]; + + [glview startAnimation]; + return YES; +} + +- (void)applicationWillResignActive: (UIApplication*)application +{ + [glview stopAnimation]; +} + +- (void)applicationDidBecomeActive: (UIApplication*)application +{ + [glview startAnimation]; +} + +- (void)applicationWillTerminate: (UIApplication*)application +{ + [glview stopAnimation]; +} + +- (void)dealloc +{ + [window.rootViewController dealloc]; + [window release]; + [glview release]; + + [super dealloc]; +} + +@end diff -r 000000000000 -r 5019d031b485 src/ios/glview.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/ios/glview.h Wed Jun 05 22:33:37 2013 +0300 @@ -0,0 +1,34 @@ +#import +#import + +#import +#import + +@interface GLView : UIView +{ +@private + int xsz, ysz; + EAGLContext *context; + + unsigned int fbo, rbuf_color, rbuf_depth; + + BOOL animating; + BOOL display_link_supported; + NSInteger anim_frame_interval; + // Use of the CADisplayLink class is the preferred method for controlling your animation timing. + // CADisplayLink will link to the main display and fire every vsync when added to a given run-loop. + // The NSTimer class is used only as fallback when running on a pre 3.1 device where CADisplayLink + // isn't available. + id display_link; + NSTimer *anim_timer; +} + +@property (readonly, nonatomic, getter=isAnimating) BOOL animating; +@property (nonatomic) NSInteger anim_frame_interval; + +- (void)startAnimation; +- (void)stopAnimation; +- (void)drawView: (id)sender; +- (void)swap_buffers; + +@end diff -r 000000000000 -r 5019d031b485 src/ios/glview.mm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/ios/glview.mm Wed Jun 05 22:33:37 2013 +0300 @@ -0,0 +1,212 @@ +#import "glview.h" +#include "game.h" +#include "screen.h" +#include "logger.h" + +static GLView *view; + +void request_redisplay() +{ + // TODO +} + +void swap_buffers() +{ + if(view) { + [view swap_buffers]; + } +} + + +@implementation GLView + +@synthesize animating; +@dynamic anim_frame_interval; + +// You must implement this method ++ (Class)layerClass +{ + return [CAEAGLLayer class]; +} + + +- (id)initWithFrame: (CGRect) frame +{ + if((self = [super initWithFrame: frame])) + { + // Get the layer + CAEAGLLayer *eaglLayer = (CAEAGLLayer*)self.layer; + + //self.contentScaleFactor = 2.0; + + eaglLayer.opaque = TRUE; + eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:FALSE], + kEAGLDrawablePropertyRetainedBacking, kEAGLColorFormatRGBA8, + kEAGLDrawablePropertyColorFormat, nil]; + + // initialize OpenGL ES context + context = [[EAGLContext alloc] initWithAPI: kEAGLRenderingAPIOpenGLES2]; + if(!context || ![EAGLContext setCurrentContext: context]) { + [self release]; + return self; + } + + // create the framebuffer + glGenFramebuffers(1, &fbo); + glBindFramebuffer(GL_FRAMEBUFFER, fbo); + + glGenRenderbuffers(1, &rbuf_color); + glBindRenderbuffer(GL_RENDERBUFFER, rbuf_color); + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, rbuf_color); + + glGenRenderbuffers(1, &rbuf_depth); + glBindRenderbuffer(GL_RENDERBUFFER, rbuf_depth); + glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, rbuf_depth); + + animating = FALSE; + display_link_supported = FALSE; + anim_frame_interval = 1; + display_link = nil; + anim_timer = nil; + + // A system version of 3.1 or greater is required to use CADisplayLink. The NSTimer + // class is used as fallback when it isn't available. + NSString *reqSysVer = @"3.1"; + NSString *currSysVer = [[UIDevice currentDevice] systemVersion]; + if([currSysVer compare: reqSysVer options: NSNumericSearch] != NSOrderedAscending) { + display_link_supported = TRUE; + } + + self.multipleTouchEnabled = 1; + + if(!game_init()) { + exit(1); + } + } + + view = self; + return self; +} + +- (void)drawView: (id)sender +{ + game_display(); +} + +- (void)swap_buffers +{ + glBindRenderbuffer(GL_RENDERBUFFER, rbuf_color); + [context presentRenderbuffer: GL_RENDERBUFFER]; +} + +- (BOOL)resize: (CAEAGLLayer*)layer +{ + glBindRenderbuffer(GL_RENDERBUFFER, rbuf_color); + [context renderbufferStorage: GL_RENDERBUFFER fromDrawable: layer]; + glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &xsz); + glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &ysz); + + glBindRenderbuffer(GL_RENDERBUFFER, rbuf_depth); + glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, xsz, ysz); + + if(glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) { + NSLog(@"resize failed, framebuffer incomplete\n"); + return FALSE; + } + assert(glGetError() == GL_NO_ERROR); + + //current_screen()->reshape(xsz, ysz); + return TRUE; +} + +- (void)layoutSubviews +{ + [self resize: (CAEAGLLayer*)self.layer]; + [self drawView:nil]; +} + +- (NSInteger)anim_frame_interval +{ + return anim_frame_interval; +} + +- (void)setAnimationFrameInterval: (NSInteger)frameInterval +{ + // Frame interval defines how many display frames must pass between each time the + // display link fires. The display link will only fire 30 times a second when the + // frame internal is two on a display that refreshes 60 times a second. The default + // frame interval setting of one will fire 60 times a second when the display refreshes + // at 60 times a second. A frame interval setting of less than one results in undefined + // behavior. + if(frameInterval >= 1) { + anim_frame_interval = frameInterval; + + if(animating) { + [self stopAnimation]; + [self startAnimation]; + } + } +} + +- (void)startAnimation +{ + if(!animating) { + if(display_link_supported) { + // CADisplayLink is API new to iPhone SDK 3.1. Compiling against earlier versions will result in a warning, but can be dismissed + // if the system version runtime check for CADisplayLink exists in -initWithCoder:. The runtime check ensures this code will + // not be called in system versions earlier than 3.1. + + display_link = [NSClassFromString(@"CADisplayLink") displayLinkWithTarget:self selector:@selector(drawView:)]; + [display_link setFrameInterval: anim_frame_interval]; + [display_link addToRunLoop: [NSRunLoop currentRunLoop] forMode: NSDefaultRunLoopMode]; + } else { + anim_timer = [NSTimer scheduledTimerWithTimeInterval: (NSTimeInterval)((1.0 / 60.0) * anim_frame_interval) + target: self selector: @selector(drawView:) userInfo: nil repeats: TRUE]; + } + + animating = TRUE; + } +} + +- (void)stopAnimation +{ + if(animating) { + if(display_link_supported) { + [display_link invalidate]; + display_link = nil; + } else { + [anim_timer invalidate]; + anim_timer = nil; + } + + animating = FALSE; + } +} + +- (void)dealloc +{ + game_cleanup(); + + if(fbo) { + glDeleteFramebuffers(1, &fbo); + fbo = 0; + } + if(rbuf_color) { + glDeleteRenderbuffers(1, &rbuf_color); + rbuf_color = 0; + } + if(rbuf_depth) { + glDeleteRenderbuffers(1, &rbuf_depth); + rbuf_depth = 0; + } + + if([EAGLContext currentContext] == context) { + [EAGLContext setCurrentContext: nil]; + } + [context release]; + context = nil; + + [super dealloc]; +} + +@end diff -r 000000000000 -r 5019d031b485 src/ios/main.m --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/ios/main.m Wed Jun 05 22:33:37 2013 +0300 @@ -0,0 +1,10 @@ +#import +#import "app_delegate.h" + +int main(int argc, char **argv) +{ + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + int retval = UIApplicationMain(argc, argv, nil, @"AppDelegate"); + [pool release]; + return retval; +} diff -r 000000000000 -r 5019d031b485 src/main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main.cpp Wed Jun 05 22:33:37 2013 +0300 @@ -0,0 +1,492 @@ +#include +#include + +#include "main.h" +#include "bitfonts.h" + +#include "blitting.h" +#include "plasma.h" +#include "rotozoomer.h" +#include "radialblur.h" +#include "bunny3d.h" +#include "render3d.h" + +#if defined ProjectCaanoo || defined ProjectWiz + #include +#endif + +#ifdef ProjectWin + #undef main +#endif + +SDL_Surface *screen = NULL; +SDL_Joystick *joy = NULL; + +int fps = 0, pframe = 0, nframe = 0, atime = 0; +int frametime = 0; +int quit = 0; +int desc_next = 0; + +int where_is = MENU; + +// ------------------------------------- + +char sbuffer[256]; +unsigned char fonts[59*64]; + +void InitFonts() +{ + int i = 0; + for (int n=0; n<59; n++) + { + for (int y=0; y<8; y++) + { + int c = bitfonts[i++]; + for (int x=0; x<8; x++) + { + fonts[(n << 6) + x + (y<<3)] = ((c >> (7 - x)) & 1) * 255; + } + } + } +} + +void DrawFontX2(int xp, int yp, int ch, unsigned short *vram) +{ + if (xp <0 || xp > 312) return; + vram += xp + yp * ScreenWidth; + for (int y=0; y<8; y++) + { + int yc = yp + y; + if ((yc>=1) && (yc 312) return; + vram += xp + yp * ScreenWidth; + for (int y=0; y<8; y++) + { + int yc = yp + y; + if ((yc>=1) && (yc96 && c<123) c-=32; + + if (!zoom) + { + if (c>31 && c<92) DrawFont(xtp, ytp, c - 32, vram); + else if (c==0) n = cn; + xtp+=8; if (xtp>ScreenWidth -8 -1) n = cn; + } + else + { + if (c>31 && c<92) DrawFontX2(xtp, ytp, c - 32, vram); + else if (c==0) n = cn; + xtp+=16; if (xtp>ScreenWidth -16 -1) n = cn; + } + } +} + +void ShowFPS(unsigned short *vram) +{ + if (SDL_GetTicks() - atime >= 1000) + { + atime = SDL_GetTicks(); + fps = nframe - pframe; + pframe = nframe; + } + sprintf(sbuffer, "FPS = %d", fps); + DrawText(8, 8, 16, false, sbuffer, vram); +} + +void ClearScreen(unsigned short *vram) +{ + memset(vram, 0, 2*ScreenSize); +} + +void speeddown(int ticks) +{ + do{}while(SDL_GetTicks() - frametime < ticks); + frametime = SDL_GetTicks(); +} + +// ------------------------------------- + +void InitEffects() +{ + InitBlitting(); + InitPlasma(); + InitRotozoomer(); + InitRadialblur(); + + initRender3D(); + InitBunny3D(); +} + +void Init() +{ + SDL_Init (SDL_INIT_VIDEO | SDL_INIT_JOYSTICK); + SDL_ShowCursor(SDL_DISABLE); + screen = SDL_SetVideoMode (ScreenWidth, ScreenHeight, 16, SDL_SWSURFACE); + + if (SDL_NumJoysticks() > 0) + joy = SDL_JoystickOpen(0); + + InitFonts(); + InitEffects(); +} + +void KeyCommands() +{ + SDL_Event event; + +#ifdef ProjectWin + while (SDL_PollEvent (&event)) + { + switch (event.type) + { + case SDL_KEYDOWN: + if (event.key.keysym.sym==SDLK_ESCAPE) + { + if (where_is==RES) + quit = 1; + else if (where_is==BENCH) + where_is = RES; + } + if (event.key.keysym.sym==SDLK_SPACE) + if (where_is==DESC) + desc_next = 1; + break; + + case SDL_QUIT: + quit = 1; + break; + + default: + break; + } + } +#else + while (SDL_PollEvent (&event)) + { + switch (event.type) + { + case SDL_JOYBUTTONDOWN: + if ( event.jbutton.button == BUTTON_HOME ) + { + if (where_is==RES) + quit = 1; + else if (where_is==BENCH) + where_is = RES; + } + + if (event.jbutton.button==BUTTON_A) + if (where_is==DESC) + desc_next = 1; + break; + } + } +#endif +} + +// ------------------------------------- + +char* test_name[NUM_TESTS]; +char* test_description[NUM_TESTS]; +int total_frames[NUM_TESTS]; +int start_frames[NUM_TESTS+1]; +float test_fps[NUM_TESTS]; + +int test_time_start; + +void InitBench() +{ + nframe = 0; + + test_name[TEST_BLITTING] = "Blitting Test"; + test_description[TEST_BLITTING] = "A simple memset blitting test. Tests how fast it is to write stuff to the video ram."; + total_frames[TEST_BLITTING] = 3000; + + test_name[TEST_PLASMA] = "Plasma"; + test_description[TEST_PLASMA] = "A lightweight demo effect. Addition of integer sine values read from small LUTs."; + total_frames[TEST_PLASMA] = 3000; + + test_name[TEST_ROTOZOOMER] = "Rotozoomer"; + test_description[TEST_ROTOZOOMER] = "Rotozoomer test 1. Zooming in and out."; + total_frames[TEST_ROTOZOOMER] = 2000; + + test_name[TEST_ROTOZOOMER_NEAR] = "Rotozoomer Near"; + test_description[TEST_ROTOZOOMER_NEAR] = "Rotozoomer test 2. Close up, optimum speed, cache does not affect."; + total_frames[TEST_ROTOZOOMER_NEAR] = 2500; + + test_name[TEST_ROTOZOOMER_FAR] = "Rotozoomer Far"; + test_description[TEST_ROTOZOOMER_FAR] = "Rotozoomer test 3. Far in the distance. Slowest version because of cache misses. Good tests for cache performance."; + total_frames[TEST_ROTOZOOMER_FAR] = 1500; + + test_name[TEST_RADIALBLUR] = "Radial Blur"; + test_description[TEST_RADIALBLUR] = "A true RGB effect with lot's of reads and huge arrays. The way this effect was written is not cache friendly and that could be also a good test for cache or memory read performance."; + total_frames[TEST_RADIALBLUR] = 500; + + test_name[TEST_BUNNY3D] = "3D Bunny"; + test_description[TEST_BUNNY3D] = "This is a massive model (69451 polygons) and a total overkill for most handhelds. Also, this is software rendering."; + total_frames[TEST_BUNNY3D] = 80; + + int sum_frames = 0; + int i = 0; + for (i=0; i>sr)<<11) | (((yp << 1)>>sg) << 5) | (yp>>sb); + } + } +} + +void SquaresScreen(int ntime, unsigned short *vram) +{ + int t = ntime >> 1; + + for (int y=0; y>3)<<11) | (((c << 1)>>2) << 5) | (c>>1); + } + } +} + +void RenderTestDescription(int test_num, int ntime, unsigned short *vram) +{ + sprintf(sbuffer, test_name[test_num]); + DrawText(8, 8, 16, true, sbuffer, vram); + + sprintf(sbuffer, test_description[test_num]); + DrawText(384 - 4 * ntime, 160, 256, false, sbuffer, vram); +} + +void DrawBar(int char_y, float percentage, unsigned short *vram) +{ + int xp = (int)((ScreenWidth - 4) * percentage); + + unsigned short cbar = (7 << 11) | (31 << 5) | 15; + + for (int y=0; y<9; y++) + { + int yi = char_y * 11 + y + 2; + for (int x=0; x<=xp; x++) + { + int xi = 2 + x; + int i = yi * ScreenWidth + xi; + *(vram + i) |= cbar; + } + } +} + +void RenderTestResults(int ntime, float res_max, unsigned short *vram) +{ + int tmaxframe = 64; + float tscale = (float)ntime / float(tmaxframe); + if (tscale > 1.0f) tscale = 1.0f; + + for (int i=0; i max) max = test_fps[i]; + } + + return max; +} + +void show_test_results(unsigned short *vram) +{ + where_is = RES; + + int tframe = 0; + + float fmax = find_max_result(); + + while (!quit) + { + SquaresScreen(tframe, vram); + RenderTestResults(tframe, fmax, vram); + SDL_Flip(screen); + speeddown(20); + KeyCommands(); + tframe++; + } +} + + +void RunBenchScript(int ntime, unsigned short *vram) +{ + for (int i=0; i<=NUM_TESTS; i++) + { + if (nframe == start_frames[i]) + { + if (i= start_frames[TEST_BLITTING] && nframe < start_frames[TEST_PLASMA]) + { + RunBlitting(ntime, vram); + } + else if (nframe >= start_frames[TEST_PLASMA] && nframe < start_frames[TEST_ROTOZOOMER]) + { + RunPlasma(ntime, vram); + } + else if (nframe >= start_frames[TEST_ROTOZOOMER] && nframe < start_frames[TEST_ROTOZOOMER_NEAR]) + { + RunRotozoomerNormal(ntime, vram); + } + else if (nframe >= start_frames[TEST_ROTOZOOMER_NEAR] && nframe < start_frames[TEST_ROTOZOOMER_FAR]) + { + RunRotozoomerNear(ntime, vram); + } + else if (nframe >= start_frames[TEST_ROTOZOOMER_FAR] && nframe < start_frames[TEST_RADIALBLUR]) + { + RunRotozoomerFar(ntime, vram); + } + else if (nframe >= start_frames[TEST_RADIALBLUR] && nframe < start_frames[TEST_BUNNY3D]) + { + RunRadialblur(ntime, vram); + } + else if (nframe >= start_frames[TEST_BUNNY3D] && nframe < start_frames[NUM_TESTS]) + { + RunBunny3D(ntime, vram); + } + else + { + show_test_results(vram); + } +} + +void RunBench() +{ + while (!quit) + { + where_is = BENCH; + KeyCommands(); + + unsigned short *vram = (unsigned short*)screen->pixels; + RunBenchScript(nframe, vram); + + ShowFPS(vram); + + SDL_Flip(screen); + nframe++; + } +} + +void BackToSystem() +{ + #if defined ProjectCaanoo || defined ProjectWiz + SDL_Quit(); + chdir("/usr/gp2x"); + execl("/usr/gp2x/gp2xmenu", "/usr/gp2x/gp2xmenu", NULL); + #endif +} + +int main (int argc, char *argv[]) +{ + Init(); + + InitBench(); + RunBench(); + + BackToSystem(); +} diff -r 000000000000 -r 5019d031b485 src/main.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main.h Wed Jun 05 22:33:37 2013 +0300 @@ -0,0 +1,34 @@ +#ifndef MAIN_H +#define MAIN_H + +//#define ProjectWin +#define ProjectCaanoo +//#define ProjectWiz + +//#define ProjectGP2X +//#define ProjectDingoo + +#define ScreenWidth 320 +#define ScreenHeight 240 +#define ScreenSize (ScreenWidth * ScreenHeight) + +#define pi 3.14151693 +#define d2r (180.0/pi) + +enum {MENU, BENCH, DESC, RES}; + +enum {TEST_BLITTING, TEST_PLASMA, TEST_ROTOZOOMER, TEST_ROTOZOOMER_NEAR, TEST_ROTOZOOMER_FAR, TEST_RADIALBLUR, TEST_BUNNY3D, NUM_TESTS}; + +#ifdef ProjectCaanoo + #define BUTTON_A 0 + #define BUTTON_HOME 6 +#endif + +#ifdef ProjectWiz + #define BUTTON_A 12 + #define BUTTON_HOME 8 +#endif + +void ClearScreen(unsigned short *vram); + +#endif diff -r 000000000000 -r 5019d031b485 src/plasma.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/plasma.cpp Wed Jun 05 22:33:37 2013 +0300 @@ -0,0 +1,41 @@ +#include +#include "main.h" + +int fsin1[4096],fsin2[4096],fsin3[4096]; +unsigned short rgb[256]; + +void InitPlasma() +{ + float l = 4.0; + for (int i=0; i<4096; i++) + { + fsin1[i] = (int)(sin(i/(l*15.0))*96.0+96.0); + fsin2[i] = (int)(sin(i/(l*20.0))*112.0+112.0); + fsin3[i] = (int)(sin(i/(l*35.0))*128.0+128.0); + } + + for (int i=0; i<64; i++) + { + rgb[i] = ((i>>1)<<11) | ((i>>1)<<5); + rgb[64+i] = ((31-(i>>2))<<11) | (((i>>1)+32)<<5) | (i>>1); + rgb[128+i] = ((16-(i>>2))<<11) | ((63-(i>>1))<<5) | 31; + rgb[192+i] = ((31-(i>>1))<<5) | (31-(i>>1)); + } +} + +void RunPlasma(int ntime, unsigned short *vram) +{ + int k1 = ntime; + int k3 = 3 * ntime; + if (k1>503) k1 = k1-(k1/503)*503; + if (k3>880) k3 = k3-(k3/880)*880; + + for (int y=0; y + +#include "main.h" +#include "sky1.h" + +unsigned char rbmp[ScreenSize]; +unsigned char gbmp[ScreenSize]; +unsigned char bbmp[ScreenSize]; + +unsigned char rbuffer[ScreenSize]; +unsigned char gbuffer[ScreenSize]; +unsigned char bbuffer[ScreenSize]; + +short radir0[ScreenSize]; +short radir1[ScreenSize]; +short radir2[ScreenSize]; + +short radir3[ScreenSize]; +short radir4[ScreenSize]; +short radir5[ScreenSize]; + +void InitRadialBitmap1() +{ + int x, y, i = 0; + unsigned short c; + for (y=0; y>11) & 31) << 3; + gbmp[i] = ((c>>5) & 63) << 2; + bbmp[i] = (c & 31) << 3; + i++; + } + } +} + +void InitRadialblur() +{ + InitRadialBitmap1(); + + float rb_shortness = 4.0f; + + int xi, yi; + int i=0; + int x, y; + for (y=0; y>1) + (yi>>1)*ScreenWidth; + radir1[i] = (xi>>2) + (yi>>2)*ScreenWidth; + radir2[i] = (xi>>3) + (yi>>3)*ScreenWidth; + i++; + } + } + + i=0; + for (y=0; y>1) + (yi>>1)*ScreenWidth; + radir4[i] = (xi>>2) + (yi>>2)*ScreenWidth; + radir5[i] = (xi>>3) + (yi>>3)*ScreenWidth; + i++; + } + } +} + + +void InitRadialBitmapCopy() +{ + int i; + unsigned int *rbuffer32 = (unsigned int*)rbuffer, *gbuffer32 = (unsigned int*)gbuffer, *bbuffer32 = (unsigned int*)bbuffer; + for (i=0; i>1)); + int dcy = (int)(sin((float)ntime/32.0f)*(ScreenHeight>>1)); + int dci = dcx + dcy*ScreenWidth; + + InitRadialBitmapCopy(); + + unsigned short *avram; + +// 1o tetarthmorio + + avram=(unsigned short*)vram + (ScreenWidth/2-1) + (ScreenHeight/2-1)*ScreenWidth + dci; + + i=(ScreenWidth/2-1) + (ScreenHeight/2-1)*ScreenWidth + dci; + ri=0; + for (int y=ScreenHeight/2-1+dcy; y>=0; y--) + { + for (int x=ScreenWidth/2-1+dcx; x>=0; x--) + { + + rbuffer[i] = (rbuffer[i] + rbuffer[i - radir0[ri]] + rbuffer[i - radir1[ri]] + rbuffer[i - radir2[ri]])>>2; + gbuffer[i] = (gbuffer[i] + gbuffer[i - radir0[ri]] + gbuffer[i - radir1[ri]] + gbuffer[i - radir2[ri]])>>2; + bbuffer[i] = (bbuffer[i] + bbuffer[i - radir0[ri]] + bbuffer[i - radir1[ri]] + bbuffer[i - radir2[ri]])>>2; + *avram-- = ((rbuffer[i]>>3)<<11) | ((gbuffer[i]>>2)<<5) | (bbuffer[i]>>3); + i--; + ri++; + } + i=i-ScreenWidth/2+dcx; + ri+=ScreenWidth/2-dcx; + avram=avram-ScreenWidth/2+dcx; + } + + +// 2 tetarthmorio + + avram=(unsigned short*)vram + ScreenWidth/2 + (ScreenHeight/2-1)*ScreenWidth + dci; + + i=ScreenWidth/2 + (ScreenHeight/2-1)*ScreenWidth + dci; + ri=0; + for (int y=ScreenHeight/2-1+dcy; y>=0; y--) + { + for (int x=ScreenWidth/2+dcx; x>2; + gbuffer[i] = (gbuffer[i] + gbuffer[i + radir3[ri]] + gbuffer[i + radir4[ri]] + gbuffer[i + radir5[ri]])>>2; + bbuffer[i] = (bbuffer[i] + bbuffer[i + radir3[ri]] + bbuffer[i + radir4[ri]] + bbuffer[i + radir5[ri]])>>2; + *avram++ = ((rbuffer[i]>>3)<<11) | ((gbuffer[i]>>2)<<5) | (bbuffer[i]>>3); + i++; + ri++; + } + i=i-3*(ScreenWidth/2)+dcx; + ri+=ScreenWidth/2+dcx; + avram=avram-3*(ScreenWidth/2)+dcx; + } + + +// 3 tetarthmorio + + avram=(unsigned short*)vram + ScreenWidth/2 + (ScreenHeight/2)*ScreenWidth + dci; + + i=ScreenWidth/2 + (ScreenHeight/2)*ScreenWidth + dci; + ri=0; + for (int y=ScreenHeight/2+dcy; y>2; + gbuffer[i] = (gbuffer[i] + gbuffer[i + radir0[ri]] + gbuffer[i + radir1[ri]] + gbuffer[i + radir2[ri]])>>2; + bbuffer[i] = (bbuffer[i] + bbuffer[i + radir0[ri]] + bbuffer[i + radir1[ri]] + bbuffer[i + radir2[ri]])>>2; + *avram++ = ((rbuffer[i]>>3)<<11) | ((gbuffer[i]>>2)<<5) | (bbuffer[i]>>3); + i++; + ri++; + } + i+=ScreenWidth/2+dcx; + ri+=ScreenWidth/2+dcx; + avram+=ScreenWidth/2+dcx; + } + + + +// 4o tetarthmorio + + avram=(unsigned short*)vram + (ScreenWidth/2-1) + (ScreenHeight/2)*ScreenWidth + dci; + + i=(ScreenWidth/2-1) + (ScreenHeight/2)*ScreenWidth + dci; + ri=0; + for (int y=ScreenHeight/2+dcy; y=0; x--) + { + rbuffer[i] = (rbuffer[i] + rbuffer[i - radir3[ri]] + rbuffer[i - radir4[ri]] + rbuffer[i - radir5[ri]])>>2; + gbuffer[i] = (gbuffer[i] + gbuffer[i - radir3[ri]] + gbuffer[i - radir4[ri]] + gbuffer[i - radir5[ri]])>>2; + bbuffer[i] = (bbuffer[i] + bbuffer[i - radir3[ri]] + bbuffer[i - radir4[ri]] + bbuffer[i - radir5[ri]])>>2; + *avram-- = ((rbuffer[i]>>3)<<11) | ((gbuffer[i]>>2)<<5) | (bbuffer[i]>>3); + i--; + ri++; + } + i+=3*(ScreenWidth/2)+dcx; + ri+=ScreenWidth/2-dcx; + avram+=3*(ScreenWidth/2)+dcx; + } +} + +void RunRadialblur(int ntime, unsigned short *vram) +{ + Radial(ntime, vram); +} diff -r 000000000000 -r 5019d031b485 src/radialblur.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/radialblur.h Wed Jun 05 22:33:37 2013 +0300 @@ -0,0 +1,7 @@ +#ifndef RADIALBLUR_H +#define RADIALBLUR_H + +void InitRadialblur(); +void RunRadialblur(int ntime, unsigned short *vram); + +#endif diff -r 000000000000 -r 5019d031b485 src/render3d.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/render3d.cpp Wed Jun 05 22:33:37 2013 +0300 @@ -0,0 +1,1785 @@ +#include +#include +#include + +#include "engine3d.h" +#include "render3d.h" +#include "main.h" + +unsigned char ball_c[256]; +unsigned int ball_p[256]; + +extern unsigned short swp[MAXDATA]; +int zdata[MAXDATA]; + +extern point3d fpts[MAXDATA]; +extern point3d norms[MAXDATA]; +extern point3d pt_norms[MAXDATA]; +extern point2d spts[MAXDATA]; +extern point3d spls[MAXDATA]; +tcord point_tc[MAXDATA]; + +unsigned int RenderMode = ENVMAP; + +unsigned int zbuffer[ScreenSize]; + +int pdiv[4096]; + +extern int prticks; +int zb = 1; + +int mlk = 8; + +void initRender3D() +{ + int fp = 16; + int i; + for (i=0; i<4096; i++) + { + if ((i-2048)!=0) + pdiv[i] = (1<=0 && point.x=0 && point.yx2) + { + n = x1; x1 = x2; x2 = n; + n = y1; y1 = y2; y2 = n; + } + + if (dx!=0) l = ((dy<>16; + y00 = y1<>fp)*ScreenWidth + x; + if (vramofs>=0 && vramofsy2) + { + n = y1; y1 = y2; y2 = n; + n = x1; x1 = x2; x2 = n; + } + + if (dy!=0) l = ((dx<>16; + x00 = x1<>fp); + if (vramofs>=0 && vramofsScreenWidth+mlk || y0<-mlk || y0>ScreenHeight+mlk) && + (x1<-mlk || x1>ScreenWidth+mlk || y1<-mlk || y1>ScreenHeight+mlk) && + (x2<-mlk || x2>ScreenWidth+mlk || y2<-mlk || y2>ScreenHeight+mlk)) return; + +//156-187 +// ===== Sort ===== + +int temp; +if (y1>16; + +int dx12 = x2 - x1; +int dy12 = y2 - y1; + + if (dy12!=0) + lx12 = ((dx12<>16; + +int dx02 = x2 - x0; +int dy02 = y2 - y0; + + if (dy02!=0) + lx02 = ((dx02<>16; + +int vramofs; +int x, y; + +int x01 = x0<>fp; + sx2 = x02>>fp; + + if (sx1>sx2) + { + temp = sx1; sx1 = sx2; sx2 = temp; + } + + yp+=ScreenWidth; + vramofs = yp + sx1; + for (x = sx1; x=0 && vramofs=0 && x>fp; + sx2 = x02>>fp; + + if (sx1>sx2) + { + temp = sx1; sx1 = sx2; sx2 = temp; + } + + yp+=ScreenWidth; + vramofs = yp + sx1; + for (x = sx1; x=0 && vramofs=0 && xScreenWidth+mlk || y0<-mlk || y0>ScreenHeight+mlk) && + (x1<-mlk || x1>ScreenWidth+mlk || y1<-mlk || y1>ScreenHeight+mlk) && + (x2<-mlk || x2>ScreenWidth+mlk || y2<-mlk || y2>ScreenHeight+mlk)) return; + +int z0 = fpts[poly.p0].z; +int z1 = fpts[poly.p1].z; +int z2 = fpts[poly.p2].z; + +// ===== Sort ===== + +int temp; +if (y1>16; + lz01 = (dz01*pdiv[dy01+2048])>>16; + } + +int dx12 = x2 - x1; +int dy12 = y2 - y1; +int dz12 = z2 - z1; + + if (dy12!=0) + { + lx12 = ((dx12<>16; + lz12 = (dz12*pdiv[dy12+2048])>>16; + } + +int dx02 = x2 - x0; +int dy02 = y2 - y0; +int dz02 = z2 - z0; + + if (dy02!=0) + { + lx02 = ((dx02<>16; + lz02 = (dz02*pdiv[dy02+2048])>>16; + } + +int vramofs; +int x, y; + +int x01 = x0<>fp; + sx2 = x02>>fp; + sz1 = z01; + sz2 = z02; + + if (sx1>sx2) + { + temp = sx1; sx1 = sx2; sx2 = temp; + temp = sz1; sz1 = sz2; sz2 = temp; + } + if (sx2!=sx1) dz = ((sz2 - sz1)*pdiv[(sx2-sx1)+2048])>>16; + + yp+=ScreenWidth; + vramofs = yp + sx1; + for (x = sx1; x=0 && vramofs=0 && x>fp; + sx2 = x02>>fp; + sz1 = z01; + sz2 = z02; + + if (sx1>sx2) + { + temp = sx1; sx1 = sx2; sx2 = temp; + temp = sz1; sz1 = sz2; sz2 = temp; + } + + if (sx2!=sx1) dz = ((sz2 - sz1)*pdiv[(sx2-sx1)+2048])>>16; + + yp+=ScreenWidth; + vramofs = yp + sx1; + for (x = sx1; x=0 && vramofs=0 && xScreenWidth+mlk || y0<-mlk || y0>ScreenHeight+mlk) && + (x1<-mlk || x1>ScreenWidth+mlk || y1<-mlk || y1>ScreenHeight+mlk) && + (x2<-mlk || x2>ScreenWidth+mlk || y2<-mlk || y2>ScreenHeight+mlk)) return; + +int c; +int c0 = spts[poly.p0].c; +int c1 = spts[poly.p1].c; +int c2 = spts[poly.p2].c; + +// ===== Sort ===== + +int temp; +if (y1>16; + lc01 = ((dc01<>16; + } + +int dx12 = x2 - x1; +int dy12 = y2 - y1; +int dc12 = c2 - c1; + + if (dy12!=0) + { + lx12 = ((dx12<>16; + lc12 = ((dc12<>16; + } + +int dx02 = x2 - x0; +int dy02 = y2 - y0; +int dc02 = c2 - c0; + + if (dy02!=0) + { + lx02 = ((dx02<>16; + lc02 = ((dc02<>16; + } + +int vramofs; +int x, y; + +int x01 = x0<>fp; + sx2 = x02>>fp; + sc1 = c01; + sc2 = c02; + + if (sx1>sx2) + { + temp = sx1; sx1 = sx2; sx2 = temp; + temp = sc1; sc1 = sc2; sc2 = temp; + } + + if (sx2!=sx1) + dc = ((sc2 - sc1)*pdiv[(sx2-sx1)+2048])>>16; + + yp+=ScreenWidth; + vramofs = yp + sx1; + for (x = sx1; x=0 && vramofs=0 && x>fp; + if (c<0) c = 0; + *(vram+vramofs)=shade[c]; + } + vramofs++; + } + x01+=lx01; + x02+=lx02; + c01+=lc01; + c02+=lc02; + } + + x01 = x1<>fp; + sx2 = x02>>fp; + sc1 = c01; + sc2 = c02; + + if (sx1>sx2) + { + temp = sx1; sx1 = sx2; sx2 = temp; + temp = sc1; sc1 = sc2; sc2 = temp; + } + + if (sx2!=sx1) + dc = ((sc2 - sc1)*pdiv[(sx2-sx1)+2048])>>16; + + yp+=ScreenWidth; + vramofs = yp + sx1; + for (x = sx1; x=0 && vramofs=0 && x>fp; + if (c<0) c = 0; + *(vram+vramofs)=shade[c]; + } + vramofs++; + } + x01+=lx12; + x02+=lx02; + c01+=lc12; + c02+=lc02; + } +} + +static inline void DrawGouraudTriangleZB (poly2d poly, unsigned short *vram, unsigned short shade[]) +{ +int x0 =spts[poly.p0].x; int y0 =spts[poly.p0].y; +int x1 =spts[poly.p1].x; int y1 =spts[poly.p1].y; +int x2 =spts[poly.p2].x; int y2 =spts[poly.p2].y; + +if ((x0<-mlk || x0>ScreenWidth+mlk || y0<-mlk || y0>ScreenHeight+mlk) && + (x1<-mlk || x1>ScreenWidth+mlk || y1<-mlk || y1>ScreenHeight+mlk) && + (x2<-mlk || x2>ScreenWidth+mlk || y2<-mlk || y2>ScreenHeight+mlk)) return; + +int c; +int c0 = spts[poly.p0].c; +int c1 = spts[poly.p1].c; +int c2 = spts[poly.p2].c; + +int z0 = fpts[poly.p0].z; +int z1 = fpts[poly.p1].z; +int z2 = fpts[poly.p2].z; + +// ===== Sort ===== + +int temp; +if (y1>16; + lc01 = ((dc01<>16; + lz01 = (dz01*pdiv[dy01+2048])>>16; + } + +int dx12 = x2 - x1; +int dy12 = y2 - y1; +int dc12 = c2 - c1; +int dz12 = z2 - z1; + + if (dy12!=0) + { + lx12 = ((dx12<>16; + lc12 = ((dc12<>16; + lz12 = (dz12*pdiv[dy12+2048])>>16; + } + +int dx02 = x2 - x0; +int dy02 = y2 - y0; +int dc02 = c2 - c0; +int dz02 = z2 - z0; + + if (dy02!=0) + { + lx02 = ((dx02<>16; + lc02 = ((dc02<>16; + lz02 = (dz02*pdiv[dy02+2048])>>16; + } + +int vramofs; +int x, y; + +int x01 = x0<>fp; + sx2 = x02>>fp; + sc1 = c01; + sc2 = c02; + sz1 = z01; + sz2 = z02; + + if (sx1>sx2) + { + temp = sx1; sx1 = sx2; sx2 = temp; + temp = sc1; sc1 = sc2; sc2 = temp; + temp = sz1; sz1 = sz2; sz2 = temp; + } + + if (sx2!=sx1) + { + dc = ((sc2 - sc1)*pdiv[(sx2-sx1)+2048])>>16; + dz = ((sz2 - sz1)*pdiv[(sx2-sx1)+2048])>>16; + } + + yp+=ScreenWidth; + vramofs = yp + sx1; + for (x = sx1; x=0 && vramofs=0 && x>fp; + if (c<0) c=0; + zbuffer[vramofs] = sz1; + *(vram+vramofs)=shade[c]; + } + vramofs++; + } + x01+=lx01; + x02+=lx02; + c01+=lc01; + c02+=lc02; + z01+=lz01; + z02+=lz02; + } + + x01 = x1<>fp; + sx2 = x02>>fp; + sc1 = c01; + sc2 = c02; + sz1 = z01; + sz2 = z02; + + if (sx1>sx2) + { + temp = sx1; sx1 = sx2; sx2 = temp; + temp = sc1; sc1 = sc2; sc2 = temp; + temp = sz1; sz1 = sz2; sz2 = temp; + } + + if (sx2!=sx1) + { + dc = ((sc2 - sc1)*pdiv[(sx2-sx1)+2048])>>16; + dz = ((sz2 - sz1)*pdiv[(sx2-sx1)+2048])>>16; + } + + yp+=ScreenWidth; + vramofs = yp + sx1; + for (x = sx1; x=0 && vramofs=0 && x>fp; + if (c<0) c=0; + zbuffer[vramofs] = sz1; + *(vram+vramofs)=shade[c]; + } + vramofs++; + } + x01+=lx12; + x02+=lx02; + c01+=lc12; + c02+=lc02; + z01+=lz12; + z02+=lz02; + } +} + +static inline void DrawTextureTriangle(poly2d poly, unsigned short *vram, int tshr, unsigned short texture[]) +{ +int x0 =spts[poly.p0].x; int y0 =spts[poly.p0].y; +int x1 =spts[poly.p1].x; int y1 =spts[poly.p1].y; +int x2 =spts[poly.p2].x; int y2 =spts[poly.p2].y; + +if ((x0<-mlk || x0>ScreenWidth+mlk || y0<-mlk || y0>ScreenHeight+mlk) && + (x1<-mlk || x1>ScreenWidth+mlk || y1<-mlk || y1>ScreenHeight+mlk) && + (x2<-mlk || x2>ScreenWidth+mlk || y2<-mlk || y2>ScreenHeight+mlk)) return; + +int c; + +int u0 = poly.tc0.u; int v0 = poly.tc0.v; +int u1 = poly.tc1.u; int v1 = poly.tc1.v; +int u2 = poly.tc2.u; int v2 = poly.tc2.v; + +// ===== Sort ===== + +int temp; +if (y1>16; + lu01 = ((du01<>16; + lv01 = ((dv01<>16; + } + +int dx12 = x2 - x1; +int dy12 = y2 - y1; +int du12 = u2 - u1; +int dv12 = v2 - v1; + + if (dy12!=0) + { + lx12 = ((dx12<>16; + lu12 = ((du12<>16; + lv12 = ((dv12<>16; + } + +int dx02 = x2 - x0; +int dy02 = y2 - y0; +int du02 = u2 - u0; +int dv02 = v2 - v0; + + if (dy02!=0) + { + lx02 = ((dx02<>16; + lu02 = ((du02<>16; + lv02 = ((dv02<>16; + } + +int vramofs; +int x, y; + +int x01 = x0<>fp; + sx2 = x02>>fp; + su1 = u01; + su2 = u02; + sv1 = v01; + sv2 = v02; + + if (sx1>sx2) + { + temp = sx1; sx1 = sx2; sx2 = temp; + temp = su1; su1 = su2; su2 = temp; + temp = sv1; sv1 = sv2; sv2 = temp; + } + + if (sx2!=sx1) + { + du = ((su2 - su1)*pdiv[(sx2-sx1)+2048])>>16; + dv = ((sv2 - sv1)*pdiv[(sx2-sx1)+2048])>>16; + } + + yp+=ScreenWidth; + vramofs = yp + sx1; + for (x = sx1; x=0 && vramofs=0 && x>fp)>>tshr) + (((sv1>>fp)>>tshr)<<(8-tshr))]; + *(vram+vramofs) = c; + } + vramofs++; + } + x01+=lx01; + x02+=lx02; + u01+=lu01; + u02+=lu02; + v01+=lv01; + v02+=lv02; + } + + x01 = x1<>fp; + sx2 = x02>>fp; + su1 = u01; + su2 = u02; + sv1 = v01; + sv2 = v02; + + if (sx1>sx2) + { + temp = sx1; sx1 = sx2; sx2 = temp; + temp = su1; su1 = su2; su2 = temp; + temp = sv1; sv1 = sv2; sv2 = temp; + } + + if (sx2!=sx1) + { + du = ((su2 - su1)*pdiv[(sx2-sx1)+2048])>>16; + dv = ((sv2 - sv1)*pdiv[(sx2-sx1)+2048])>>16; + } + + yp+=ScreenWidth; + vramofs = yp + sx1; + for (x = sx1; x=0 && vramofs=0 && x>fp)>>tshr) + (((sv1>>fp)>>tshr)<<(8-tshr))]; + *(vram+vramofs) = c; + } + vramofs++; + } + x01+=lx12; + x02+=lx02; + u01+=lu12; + u02+=lu02; + v01+=lv12; + v02+=lv02; + } +} + +static inline void DrawTextureTriangleZB(poly2d poly, unsigned short *vram, int tshr, unsigned short texture[]) +{ +int x0 =spts[poly.p0].x; int y0 =spts[poly.p0].y; +int x1 =spts[poly.p1].x; int y1 =spts[poly.p1].y; +int x2 =spts[poly.p2].x; int y2 =spts[poly.p2].y; + +if ((x0<-mlk || x0>ScreenWidth+mlk || y0<-mlk || y0>ScreenHeight+mlk) && + (x1<-mlk || x1>ScreenWidth+mlk || y1<-mlk || y1>ScreenHeight+mlk) && + (x2<-mlk || x2>ScreenWidth+mlk || y2<-mlk || y2>ScreenHeight+mlk)) return; + +int c; + +int u0 = poly.tc0.u; int v0 = poly.tc0.v; +int u1 = poly.tc1.u; int v1 = poly.tc1.v; +int u2 = poly.tc2.u; int v2 = poly.tc2.v; + +int z0 = fpts[poly.p0].z; +int z1 = fpts[poly.p1].z; +int z2 = fpts[poly.p2].z; + +// ===== Sort ===== + +int temp; +if (y1>16; + lu01 = ((du01<>16; + lv01 = ((dv01<>16; + lz01 = (dz01*pdiv[dy01+2048])>>16; + } + +int dx12 = x2 - x1; +int dy12 = y2 - y1; +int du12 = u2 - u1; +int dv12 = v2 - v1; +int dz12 = z2 - z1; + + if (dy12!=0) + { + lx12 = ((dx12<>16; + lu12 = ((du12<>16; + lv12 = ((dv12<>16; + lz12 = (dz12*pdiv[dy12+2048])>>16; + } + +int dx02 = x2 - x0; +int dy02 = y2 - y0; +int du02 = u2 - u0; +int dv02 = v2 - v0; +int dz02 = z2 - z0; + + if (dy02!=0) + { + lx02 = ((dx02<>16; + lu02 = ((du02<>16; + lv02 = ((dv02<>16; + lz02 = (dz02*pdiv[dy02+2048])>>16; + } + +int vramofs; +int x, y; + +int x01 = x0<>fp; + sx2 = x02>>fp; + su1 = u01; + su2 = u02; + sv1 = v01; + sv2 = v02; + sz1 = z01; + sz2 = z02; + + if (sx1>sx2) + { + temp = sx1; sx1 = sx2; sx2 = temp; + temp = su1; su1 = su2; su2 = temp; + temp = sv1; sv1 = sv2; sv2 = temp; + temp = sz1; sz1 = sz2; sz2 = temp; + } + + if (sx2!=sx1) + { + du = ((su2 - su1)*pdiv[(sx2-sx1)+2048])>>16; + dv = ((sv2 - sv1)*pdiv[(sx2-sx1)+2048])>>16; + dz = ((sz2 - sz1)*pdiv[(sx2-sx1)+2048])>>16; + } + + yp+=ScreenWidth; + vramofs = yp + sx1; + for (x = sx1; x=0 && vramofs=0 && x>fp)>>tshr) + (((sv1>>fp)>>tshr)<<(8-tshr))]; + *(vram+vramofs) = c; + } + vramofs++; + } + x01+=lx01; + x02+=lx02; + u01+=lu01; + u02+=lu02; + v01+=lv01; + v02+=lv02; + z01+=lz01; + z02+=lz02; + } + + x01 = x1<>fp; + sx2 = x02>>fp; + su1 = u01; + su2 = u02; + sv1 = v01; + sv2 = v02; + sz1 = z01; + sz2 = z02; + + if (sx1>sx2) + { + temp = sx1; sx1 = sx2; sx2 = temp; + temp = su1; su1 = su2; su2 = temp; + temp = sv1; sv1 = sv2; sv2 = temp; + temp = sz1; sz1 = sz2; sz2 = temp; + } + + if (sx2!=sx1) + { + du = ((su2 - su1)*pdiv[(sx2-sx1)+2048])>>16; + dv = ((sv2 - sv1)*pdiv[(sx2-sx1)+2048])>>16; + dz = ((sz2 - sz1)*pdiv[(sx2-sx1)+2048])>>16; + } + + yp+=ScreenWidth; + vramofs = yp + sx1; + for (x = sx1; x=0 && vramofs=0 && x>fp)>>tshr) + (((sv1>>fp)>>tshr)<<(8-tshr))]; + *(vram+vramofs) = c; + } + vramofs++; + } + x01+=lx12; + x02+=lx02; + u01+=lu12; + u02+=lu02; + v01+=lv12; + v02+=lv02; + z01+=lz12; + z02+=lz02; + } +} + +static inline void DrawEnvmappedTriangle(poly2d poly, unsigned short *vram, int tshr, unsigned short texture[]) +{ +int x0 =spts[poly.p0].x; int y0 =spts[poly.p0].y; +int x1 =spts[poly.p1].x; int y1 =spts[poly.p1].y; +int x2 =spts[poly.p2].x; int y2 =spts[poly.p2].y; + +if ((x0<-mlk || x0>ScreenWidth+mlk || y0<-mlk || y0>ScreenHeight+mlk) && + (x1<-mlk || x1>ScreenWidth+mlk || y1<-mlk || y1>ScreenHeight+mlk) && + (x2<-mlk || x2>ScreenWidth+mlk || y2<-mlk || y2>ScreenHeight+mlk)) return; + +int c; + +int u0 = point_tc[poly.p0].u; int v0 = point_tc[poly.p0].v; +int u1 = point_tc[poly.p1].u; int v1 = point_tc[poly.p1].v; +int u2 = point_tc[poly.p2].u; int v2 = point_tc[poly.p2].v; + +// ===== Sort ===== + +int temp; +if (y1>16; + lu01 = ((du01<>16; + lv01 = ((dv01<>16; + } + +int dx12 = x2 - x1; +int dy12 = y2 - y1; +int du12 = u2 - u1; +int dv12 = v2 - v1; + + if (dy12!=0) + { + lx12 = ((dx12<>16; + lu12 = ((du12<>16; + lv12 = ((dv12<>16; + } + +int dx02 = x2 - x0; +int dy02 = y2 - y0; +int du02 = u2 - u0; +int dv02 = v2 - v0; + + if (dy02!=0) + { + lx02 = ((dx02<>16; + lu02 = ((du02<>16; + lv02 = ((dv02<>16; + } + +int vramofs; +int x, y; + +int x01 = x0<>fp; + sx2 = x02>>fp; + su1 = u01; + su2 = u02; + sv1 = v01; + sv2 = v02; + + if (sx1>sx2) + { + temp = sx1; sx1 = sx2; sx2 = temp; + temp = su1; su1 = su2; su2 = temp; + temp = sv1; sv1 = sv2; sv2 = temp; + } + + if (sx2!=sx1) + { + du = ((su2 - su1)*pdiv[(sx2-sx1)+2048])>>16; + dv = ((sv2 - sv1)*pdiv[(sx2-sx1)+2048])>>16; + } + + yp+=ScreenWidth; + vramofs = yp + sx1; + for (x = sx1; x=0 && vramofs=0 && x>fp)>>tshr) + (((sv1>>fp)>>tshr)<<(8-tshr))]; + *(vram+vramofs) = c; + } + vramofs++; + } + x01+=lx01; + x02+=lx02; + u01+=lu01; + u02+=lu02; + v01+=lv01; + v02+=lv02; + } + + x01 = x1<>fp; + sx2 = x02>>fp; + su1 = u01; + su2 = u02; + sv1 = v01; + sv2 = v02; + + if (sx1>sx2) + { + temp = sx1; sx1 = sx2; sx2 = temp; + temp = su1; su1 = su2; su2 = temp; + temp = sv1; sv1 = sv2; sv2 = temp; + } + + if (sx2!=sx1) + { + du = ((su2 - su1)*pdiv[(sx2-sx1)+2048])>>16; + dv = ((sv2 - sv1)*pdiv[(sx2-sx1)+2048])>>16; + } + + yp+=ScreenWidth; + vramofs = yp + sx1; + for (x = sx1; x=0 && vramofs=0 && x>fp)>>tshr) + (((sv1>>fp)>>tshr)<<(8-tshr))]; + *(vram+vramofs) = c; + } + vramofs++; + } + x01+=lx12; + x02+=lx02; + u01+=lu12; + u02+=lu02; + v01+=lv12; + v02+=lv02; + } +} + + +static inline void DrawEnvmappedTriangleZB(poly2d poly, unsigned short *vram, int tshr, unsigned short texture[]) +{ +int x0 =spts[poly.p0].x; int y0 =spts[poly.p0].y; +int x1 =spts[poly.p1].x; int y1 =spts[poly.p1].y; +int x2 =spts[poly.p2].x; int y2 =spts[poly.p2].y; + +if ((x0<-mlk || x0>ScreenWidth+mlk || y0<-mlk || y0>ScreenHeight+mlk) && + (x1<-mlk || x1>ScreenWidth+mlk || y1<-mlk || y1>ScreenHeight+mlk) && + (x2<-mlk || x2>ScreenWidth+mlk || y2<-mlk || y2>ScreenHeight+mlk)) return; + +int c; + +int u0 = point_tc[poly.p0].u; int v0 = point_tc[poly.p0].v; +int u1 = point_tc[poly.p1].u; int v1 = point_tc[poly.p1].v; +int u2 = point_tc[poly.p2].u; int v2 = point_tc[poly.p2].v; + +int z0 = fpts[poly.p0].z; +int z1 = fpts[poly.p1].z; +int z2 = fpts[poly.p2].z; + +// ===== Sort ===== + +int temp; +if (y1>16; + lu01 = ((du01<>16; + lv01 = ((dv01<>16; + lz01 = (dz01*pdiv[dy01+2048])>>16; + } + +int dx12 = x2 - x1; +int dy12 = y2 - y1; +int du12 = u2 - u1; +int dv12 = v2 - v1; +int dz12 = z2 - z1; + + if (dy12!=0) + { + lx12 = ((dx12<>16; + lu12 = ((du12<>16; + lv12 = ((dv12<>16; + lz12 = (dz12*pdiv[dy12+2048])>>16; + } + +int dx02 = x2 - x0; +int dy02 = y2 - y0; +int du02 = u2 - u0; +int dv02 = v2 - v0; +int dz02 = z2 - z0; + + if (dy02!=0) + { + lx02 = ((dx02<>16; + lu02 = ((du02<>16; + lv02 = ((dv02<>16; + lz02 = (dz02*pdiv[dy02+2048])>>16; + } + +int vramofs; +int x, y; + +int x01 = x0<>fp; + sx2 = x02>>fp; + su1 = u01; + su2 = u02; + sv1 = v01; + sv2 = v02; + sz1 = z01; + sz2 = z02; + + if (sx1>sx2) + { + temp = sx1; sx1 = sx2; sx2 = temp; + temp = su1; su1 = su2; su2 = temp; + temp = sv1; sv1 = sv2; sv2 = temp; + temp = sz1; sz1 = sz2; sz2 = temp; + } + + if (sx2!=sx1) + { + du = ((su2 - su1)*pdiv[(sx2-sx1)+2048])>>16; + dv = ((sv2 - sv1)*pdiv[(sx2-sx1)+2048])>>16; + dz = ((sz2 - sz1)*pdiv[(sx2-sx1)+2048])>>16; + } + + yp+=ScreenWidth; + vramofs = yp + sx1; + for (x = sx1; x=0 && vramofs=0 && x>fp)>>tshr) + (((sv1>>fp)>>tshr)<<(8-tshr))]; + *(vram+vramofs) = c; + } + vramofs++; + } + x01+=lx01; + x02+=lx02; + u01+=lu01; + u02+=lu02; + v01+=lv01; + v02+=lv02; + z01+=lz01; + z02+=lz02; + } + + x01 = x1<>fp; + sx2 = x02>>fp; + su1 = u01; + su2 = u02; + sv1 = v01; + sv2 = v02; + sz1 = z01; + sz2 = z02; + + if (sx1>sx2) + { + temp = sx1; sx1 = sx2; sx2 = temp; + temp = su1; su1 = su2; su2 = temp; + temp = sv1; sv1 = sv2; sv2 = temp; + temp = sz1; sz1 = sz2; sz2 = temp; + } + + if (sx2!=sx1) + { + du = ((su2 - su1)*pdiv[(sx2-sx1)+2048])>>16; + dv = ((sv2 - sv1)*pdiv[(sx2-sx1)+2048])>>16; + dz = ((sz2 - sz1)*pdiv[(sx2-sx1)+2048])>>16; + } + + yp+=ScreenWidth; + vramofs = yp + sx1; + for (x = sx1; x=0 && vramofs=0 && x>fp)>>tshr) + (((sv1>>fp)>>tshr)<<(8-tshr))]; + *(vram+vramofs) = c; + } + vramofs++; + } + x01+=lx12; + x02+=lx02; + u01+=lu12; + u02+=lu02; + v01+=lv12; + v02+=lv02; + z01+=lz12; + z02+=lz02; + } +} + +void zsort(int zsortdata[], object3d *obj) +{ + int i, mz; + for (i=0; inpls; i++) + { + mz = (fpts[obj->poly[i].p0].z + fpts[obj->poly[i].p1].z + fpts[obj->poly[i].p2].z)>>2; + zsortdata[i] = -mz; + swp[i] = i; + } +} + + +inline void ClearZbuffer() +{ + memset(zbuffer, 0xFFFFFF, sizeof(unsigned int) * ScreenSize); +} + +void Render(object3d *obj, unsigned short shade[], unsigned short texture[], unsigned short texture_size, unsigned short *vram) +{ + int i, j; + int vx0, vy0, vx1, vy1, n; + int tu, tv, s; + int texshr = (int)(log(256 / texture_size)/ log(2)); + + int rmode; + if (zb==1 && RenderMode>=FLAT) rmode = RenderMode | ZBUFFER; + else rmode = RenderMode; + + switch (rmode) + { + + case POINTS: + for (i=obj->npts-1; i>=0; i--) + if (spts[i].x>=0 && spts[i].x=0 && spts[i].ynlns-1; i>=0; i--) + drawline(obj->line[i], vram); + break; + + case FLAT: + rotate3d_normals(obj); + CalcPolyColor(obj); + + zsort (zdata, obj); + quicksort(0, obj->npls - 1, zdata); + + for (i=0; inpls; i++) + { + j = swp[i]; + vx0 = spts[obj->poly[j].p0].x - spts[obj->poly[j].p1].x; + vy0 = spts[obj->poly[j].p0].y - spts[obj->poly[j].p1].y; + vx1 = spts[obj->poly[j].p2].x - spts[obj->poly[j].p1].x; + vy1 = spts[obj->poly[j].p2].y - spts[obj->poly[j].p1].y; + n = vx0 * vy1 - vx1 * vy0; + if (n<0) + { + obj->poly[j].c = spls[j].c; + DrawFlatTriangle(obj->poly[j], vram, shade); + } + } + break; + + case (FLAT | ZBUFFER): + rotate3d_normals(obj); + CalcPolyColor(obj); + + ClearZbuffer(); + for (i=obj->npls-1; i>=0; i--) + { + obj->poly[i].c = spls[i].c; + if (norms[i].z>=0) + DrawFlatTriangleZB(obj->poly[i], vram, shade); + } + break; + + case GOURAUD: + rotate3d_pt_normals(obj); + CalcPointColor(obj); + + zsort (zdata, obj); + quicksort(0, obj->npls - 1, zdata); + + for (i=0; inpls; i++) + { + j = swp[i]; + vx0 = spts[obj->poly[j].p0].x - spts[obj->poly[j].p1].x; + vy0 = spts[obj->poly[j].p0].y - spts[obj->poly[j].p1].y; + vx1 = spts[obj->poly[j].p2].x - spts[obj->poly[j].p1].x; + vy1 = spts[obj->poly[j].p2].y - spts[obj->poly[j].p1].y; + n = vx0 * vy1 - vx1 * vy0; + if (n<0) + DrawGouraudTriangle(obj->poly[j], vram, shade); + } + break; + + case (GOURAUD | ZBUFFER): + rotate3d_normals(obj); + rotate3d_pt_normals(obj); + + CalcPointColor(obj); + ClearZbuffer(); + for (i=obj->npls-1; i>=0; i--) + { + if (norms[i].z>=0) + DrawGouraudTriangleZB(obj->poly[i], vram, shade); + } + break; + + case (TEXTURE): + zsort (zdata, obj); + quicksort(0, obj->npls - 1, zdata); + + for (i=0; inpls; i++) + { + j = swp[i]; + vx0 = spts[obj->poly[j].p0].x - spts[obj->poly[j].p1].x; + vy0 = spts[obj->poly[j].p0].y - spts[obj->poly[j].p1].y; + vx1 = spts[obj->poly[j].p2].x - spts[obj->poly[j].p1].x; + vy1 = spts[obj->poly[j].p2].y - spts[obj->poly[j].p1].y; + n = vx0 * vy1 - vx1 * vy0; + if (n<0) + { + DrawTextureTriangle(obj->poly[j], vram, texshr, texture); + } + } + break; + + case (TEXTURE | ZBUFFER): + rotate3d_normals(obj); + + ClearZbuffer(); + for (i=obj->npls-1; i>=0; i--) + { + if (norms[i].z>=0) + DrawTextureTriangleZB(obj->poly[i], vram, 0, texture); + } + break; + + case (ENVMAP): + rotate3d_pt_normals(obj); + + zsort (zdata, obj); + quicksort(0, obj->npls - 1, zdata); + + for (i=0; inpts; i++) + { + tu = (pt_norms[i].x>>9) + 127; + tv = (pt_norms[i].y>>9) + 127; + point_tc[i].u = abs(tu) & 255; + point_tc[i].v = abs(tv) & 255; + } + + for (i=0; inpls; i++) + { + j = swp[i]; + vx0 = spts[obj->poly[j].p0].x - spts[obj->poly[j].p1].x; + vy0 = spts[obj->poly[j].p0].y - spts[obj->poly[j].p1].y; + vx1 = spts[obj->poly[j].p2].x - spts[obj->poly[j].p1].x; + vy1 = spts[obj->poly[j].p2].y - spts[obj->poly[j].p1].y; + n = vx0 * vy1 - vx1 * vy0; + if (n<0) + DrawEnvmappedTriangle(obj->poly[j], vram, texshr, texture); + } + break; + + case (ENVMAP | ZBUFFER): + rotate3d_normals(obj); + rotate3d_pt_normals(obj); + + ClearZbuffer(); + for (i=obj->npts-1; i>=0; i--) + { + tu = (pt_norms[i].x>>9) + 127; + tv = (pt_norms[i].y>>9) + 127; + point_tc[i].u = abs(tu) & 255; + point_tc[i].v = abs(tv) & 255; + } + + + for (i=obj->npls-1; i>=0; i--) + { + if (norms[i].z>=0) + DrawEnvmappedTriangleZB(obj->poly[i], vram, 2, texture); + } + break; + + default: + break; + } + +} diff -r 000000000000 -r 5019d031b485 src/render3d.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/render3d.h Wed Jun 05 22:33:37 2013 +0300 @@ -0,0 +1,10 @@ +#ifndef RENDER3D_H +#define RENDER3D_H + +#include "engine3d.h" + +void initRender3D(); +void Render(object3d *obj, unsigned short shade[], unsigned short texture[], unsigned short texture_size, unsigned short *vram); + +#endif + diff -r 000000000000 -r 5019d031b485 src/rotozoomer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/rotozoomer.cpp Wed Jun 05 22:33:37 2013 +0300 @@ -0,0 +1,77 @@ +#include +#include +#include "main.h" + +unsigned short draculin[128 * 128]; + +void InitRotozoomer() +{ + unsigned short dracol[256]; + + FILE *dracdata; + dracdata=fopen("draculf.bin","rb"); + + int x0=fgetc(dracdata); + int y0=fgetc(dracdata); + + int r,g,b; + for (int i=0;i<256;i++) + dracol[i]=(((fgetc(dracdata)>>1)<<11) | (fgetc(dracdata)<<5) | (fgetc(dracdata))>>1); + + for (int y=0;y>fp)&127) + (((my>>fp)&127) << 7)]; + *vram++=c; + } + } +} + +void RunRotozoomerNormal(int ntime, unsigned short *vram) +{ + float rot = sin(ntime/478.0f) * 280.0f; + float zoom = sin(ntime/227.0f)*0.75f + 0.76f; + + RunRotozoomer(rot, zoom, vram); +} + +void RunRotozoomerNear(int ntime, unsigned short *vram) +{ + float rot = sin(ntime/478.0f) * 280.0f; + float zoom = 0.05f; + + RunRotozoomer(rot, zoom, vram); +} + +void RunRotozoomerFar(int ntime, unsigned short *vram) +{ + float rot = sin(ntime/478.0f) * 280.0f; + float zoom = 8.0f; + + RunRotozoomer(rot, zoom, vram); +} diff -r 000000000000 -r 5019d031b485 src/rotozoomer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/rotozoomer.h Wed Jun 05 22:33:37 2013 +0300 @@ -0,0 +1,9 @@ +#ifndef ROTOZOOMER_H +#define ROTOZOOMER_H + +void InitRotozoomer(); +void RunRotozoomerNormal(int ntime, unsigned short *vram); +void RunRotozoomerNear(int ntime, unsigned short *vram); +void RunRotozoomerFar(int ntime, unsigned short *vram); + +#endif diff -r 000000000000 -r 5019d031b485 src/sky1.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/sky1.cpp Wed Jun 05 22:33:37 2013 +0300 @@ -0,0 +1,4096 @@ +unsigned short sky1[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2080,2048,0,0,0,0,0,32,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,32,32,32,0,0,0,0,0,0,32,32,0,0,0, +0,0,0,0,0,0,0,0,0,0,2048,2048,2080,2048,2048,2048, +2080,2080,2080,2080,32,32,32,0,32,32,2080,2080,2080,2080,2080,32, +2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,0,0,0,0,0, +0,0,0,0,0,0,32,32,32,0,0,0,0,0,0,0, +0,0,2080,2080,2080,2080,0,0,0,0,32,32,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,2048,0,0,2048,2048,2048,2048,2048, +2080,2080,2080,32,32,32,32,2080,0,0,0,32,32,32,32,32, +2048,2048,2048,2048,2048,2048,2080,2080,2080,2048,2048,2048,2048,2048,2048,2080, +2048,2048,2048,2048,2048,2048,2048,2048,2080,2080,2080,2080,2080,2080,2080,2080, +2048,2048,2048,2048,2048,2048,2048,2048,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,32,32,32,32,32,32,32,32, +2048,2048,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,32,0,0,0,0,0,0,0,0,32,32,32,32, +0,0,0,0,0,0,0,0,0,0,2048,2048,2048,2048,2048,2048, +2080,2080,2080,2080,32,32,32,0,0,0,0,32,32,2080,2080,32, +2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,0,0,0,0,0,0, +0,0,0,0,0,0,32,32,2080,32,0,0,0,0,0,0, +2048,2048,0,0,0,0,32,32,0,0,32,32,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,32,0,0,0,0,0,0,0,0,2048,2048,2048,2048,2048, +2080,2080,2080,32,32,32,32,32,32,32,32,32,2080,2080,2080,2080, +2048,2048,2048,2048,2048,2048,2048,2080,2080,2048,2048,2048,2048,2048,2048,2080, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,2080,2080,2080,2080,2080,2080,2080,2080, +0,0,2048,2048,2080,0,0,0,32,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,32, +32,0,0,0,0,0,0,0,2048,2048,2048,2048,2048,2048,2048,2048, +2080,2080,2080,2048,2048,2048,2048,2048,0,0,0,0,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,0,0,0,0,0, +0,0,0,0,0,2048,2048,2048,2048,2080,2080,2080,2080,2048,0,0, +2048,2048,0,0,0,0,0,32,0,0,32,32,0,0,0,32, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,32,32,32,0,0,0,0,0,0,0,2048,2048,2048,2048,0, +2080,2080,2048,2048,0,2048,2048,2048,0,0,0,0,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2080,2048,2048,2048,2048,2048,2048,2080,2048,2048,2048,2048,2048,2048,2048,2048, +2080,2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +0,0,0,2048,0,0,0,0,32,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,32,32,0,0,0,0,0,0,32,32, +32,32,0,0,0,0,0,2080,2080,2080,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,0,0,0,2048,2048,2048,0,0, +2048,2048,2048,2048,2048,2048,2048,2048,0,0,0,2048,2048,2048,2048,2048, +0,0,0,0,2048,2048,2048,2048,0,2048,2080,2080,2080,2048,0,0, +2048,2048,2048,0,0,0,0,0,0,32,32,32,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,32,32,32,0,0,0,0,0,0,2048,2048,2048,2048,2048,2048, +2048,2080,2048,0,0,0,2048,2048,0,0,0,0,0,0,0,0, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2080,2080,2048,2048,2048,2048,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048, +2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,0,0,0,0,0,0,0,0, +2048,2048,0,0,0,2048,2080,2080,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,2080,32,0,0,0,0,0,0,0,32, +32,32,0,0,0,0,0,2080,2080,2080,2048,2048,2048,2048,2048,2048, +2048,0,0,2048,2048,2048,2048,2048,2080,2080,2080,2080,2080,2048,0,0, +2048,2048,2048,2048,2048,2048,2048,2048,0,0,2048,2048,2048,2048,2048,2080, +2048,2048,2048,2048,2048,2048,2048,2080,0,0,2048,2080,2080,2048,0,0, +2048,2048,2048,2080,2080,2048,0,0,32,32,2080,32,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,32,32,0,0,0, +0,32,2080,2080,0,0,0,0,0,0,2048,2080,2080,2048,2048,2048, +2048,2048,2048,0,0,0,0,2048,0,0,0,0,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2080,2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,0,0,0,0,0,0,0,0, +2048,2048,0,0,0,0,2080,2080,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,2048,2080,2080,2080,2048,0,2048,2080,2080,2080, +32,32,0,0,0,0,2080,2080,2080,2080,2048,2048,2048,2048,2048,2048, +2048,0,0,0,0,2048,2048,2048,2080,2080,2080,2080,2080,2048,0,0, +0,0,0,0,0,0,0,0,2048,2048,2048,2048,2048,2048,2048,2080, +2080,2080,2080,2080,2080,2080,2080,2080,0,2048,2048,2048,2048,0,0,0, +0,2048,2048,2080,2080,2048,0,0,2080,32,2080,32,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,32,32,2080,0,0,0,32,32,0,0,0, +0,32,32,32,0,0,0,0,0,2048,2048,2080,2048,2048,2048,2048, +2048,2048,0,0,0,0,0,0,2080,2080,2080,2080,2080,2080,2080,2080, +2048,2048,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2080,2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,0,2048,2048,2080,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,2048,2048,2048,2048,2048,0,2048,2048,2048,2048,2048,2048,2048,2080, +2080,32,32,32,0,0,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2080,2080,2048,2048,2048,2048,2048,2048,2080,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,0,0,0,2080,32,32,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,32,32,32,32,32,0,0,0,0,0,0, +0,32,32,32,0,0,0,2080,0,2048,2048,2048,2048,2048,2048,2080, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2080, +2048,2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2080,2080,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,0,0,2048,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,2048,2048,2048,2048,2048,2048,0,0,0,2048,2048,2048,2048,2048, +0,32,32,32,2080,2080,2080,0,0,2048,2048,2080,2080,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,0,0,0,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2080,2080,2080,2080,2048,2048,2048,2048,2080,2080,2048,2048,2048,2048,2080,2080, +2048,2048,2048,2048,2048,0,2048,2048,0,0,2080,32,32,0,32,32, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,2113,2081,0,0,0,0,0,0, +0,32,32,32,0,0,2080,2080,0,0,2048,2048,2048,2048,2048,2080, +2048,2048,2048,2048,2048,2048,2048,2048,0,0,2048,2048,2048,2048,2048,2048, +2048,2080,2080,2080,2080,2048,2048,0,2048,2048,2048,2080,2080,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2080,2080,2048,2048,2048,2048,2048,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,0, +0,32,0,0,0,0,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,0,0,0,0,0,32,32,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,2080,32,32,32,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2080,2080,2048,2048,2048,2048,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,2048,0,2048,2048,2048,2080,2048,2048,2048,0,0,0, +0,0,0,0,0,0,0,0,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2080,2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,32,32,32,32,32, +0,0,0,0,0,0,0,0,0,0,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2080,2048,2048,2048,2048,2048,2048,2080, +2080,2080,2080,2080,2048,2048,2048,2048,2080,2080,2080,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2080,2080,2080,2080,2080,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2080,2048,2048,2048,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,2080,2080,2080,2080,2048,0,0,0, +0,0,0,0,0,0,0,0,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2080,2080,2080,2080,2048,2048,2048,2080,2080,2080,2080,2080, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,0,0,2048,2048,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,32,32,2080,2080, +32,0,0,0,0,0,0,0,0,0,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2080,2080,2080,2048,2048,2080,2080,2080, +2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2080,2080,2080,2080,2080,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2080,2080,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,32, +0,0,32,32,2080,0,0,0,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2080,2080,2080,2080,2080,2080, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32, +32,0,0,0,0,0,0,0,0,0,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2080,2080,2080,2080,2080,2080,2080,2080,2048,2048,2048,2080,2080,2080,2080,2080, +2080,2080,2080,2048,2048,2080,2080,2080,2080,2080,2080,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2080,2080,2080,2080,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,32,32,2080,2080,0,0,2080,2080,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2080,2080,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,2080,2080,0,0,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2080,2080,2080,2080,2048,2048,2048,2048,2080,2080,2080,2080, +2080,2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2080,2080,2048,2048,2048,2048,2080,2080, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,2080,2080,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2080,2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2080,2080,2080,2048,2048,2080,2080,2080, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2080,2048,2048,0,0,0,0,0,2048,2048,2048,2048,2048,2080,2080,2080, +2048,2048,2048,2048,2048,2048,2048,2048,2080,2048,2048,2048,2048,2048,2048,2080, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,0,2048,2048,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2080,2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2080,2048,2048,2048,2048,2048,2048,2080, +2048,2048,2048,2048,2048,2048,2048,2048,2080,2080,2080,2080,2080,2080,2080,2080, +2048,2048,2048,0,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2080,2080,2048,2048,2048,2048,2048,2048, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,32,32,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +4096,4096,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2080,2048,2048, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2080,2080,2080,2080,2080,2080,2048,2048,2048,2048,2048,2080,2080,2080,4160,4160, +2048,2048,2048,2048,2048,2080,2080,2080,2080,2048,2048,2048,2048,2048,2048,2048, +2080,2080,2080,2080,2080,2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2080,4128,4128, +2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2048,2048,2048,2048,2048,0,0,0,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2080,2080,2080,2080,2080,2080,2080,2048,2048,2048,2048,2048,2080, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2080,2080, +4128,4128,4128,2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2080,2080,2080,2080,2080,2080,2048,2048,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,2048,2048,2048,2048,2048,2048,0,0,0,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2048,2048, +2048,2048,2048,2048,2048,2048,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048, +2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2080,4128,4128, +2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,2048,2048,2048,2048,0,0, +2048,2080,2080,2080,2080,2080,2048,2048,2080,2080,2080,2080,2080,2080,2080,2080, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2080, +4128,4128,4128,4128,2080,2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,2048,2048,2048,0,0,0,0,0,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2080,2080,2080,2080,2080,2048,2048,2080,2080,2048,2048,2048,2048, +2048,2048,2048,2080,2080,2080,4128,4128,2048,2048,2048,2048,2048,2048,2048,2048, +4128,4128,4128,2080,2048,2048,2048,2048,2080,2048,2048,2048,2080,4128,4128,4128, +4128,4128,4128,2080,2080,2080,2080,2048,2080,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,0,2048,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,2048,2048,0,0,0, +2048,2048,2048,0,0,0,0,0,0,2048,2080,2112,2112,2112,2080,2080, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2080,2080,2080,4128,4128,4128,4128,4128,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2080,2080,2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048, +2080,2080,2080,2080,2080,2080,2080,2080,2048,2048,2048,2048,2080,2080,2080,2080, +4128,4128,4128,2080,2048,2048,2048,2048,2080,2080,2080,2080,2080,4128,4128,4128, +4128,4128,4128,4128,4128,4128,4128,4128,4128,4128,2080,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,2080,2080,2112,2112,2080,2080, +2080,2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2080,2080,4128,4128,4128,4128,4128,4128,2080,2080,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080, +2080,2080,2080,2048,2048,2048,2048,2048,2080,2080,2080,2080,2080,2080,2080,2080, +2080,2080,2080,2080,2080,4128,4128,4128,4128,2080,2080,2080,2048,2048,2048,2048, +2080,2080,2080,2080,2080,2048,2048,2048,2080,2080,2080,2048,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,2080,2080,2080, +2080,2080,2080,2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2080,2080,2080,4128,4128,4128,4128,4128,4128,2080,2080,2080,2080, +2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2080, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2080,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080, +2080,2080,2080,2048,2048,2048,2048,2048,2080,2080,2080,2080,2080,2080,2080,2080, +2080,2080,2080,2080,2080,4128,4128,4128,4128,2080,2080,2080,2080,2080,2048,2048, +2080,2080,2080,2080,2080,2080,2080,2048,2080,2080,2080,2048,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2080, +2080,2080,2080,2080,2080,2080,2048,2048,2080,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2080,2080,2080,4160,4160,4128,4128,4128,4128,4128,4128, +2080,2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,2048,2048,2048,2048,2048,2048,0,0,0,0,2048,2048,2048,2048, +0,0,0,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2080,2080,2080,2080,2080,2080,2080,2080,2048,2048,2048,2048,2080,2080,2080,2080, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2080,2080,2080,2080,2080,2080,2080,4128,2080,2080,2080,2080,2080,2080,2080,2080, +2080,2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2080,2080,2080,2112,2112,2080,2080,2080,2080,2080,2080,2080,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,4128,4128,4128,4128,4128,4128,4128,4128, +2080,2080,2080,2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,2048,2048,2048,2048,2048, +2080,2080,2080,2080,2048,2048,2048,2048,0,0,0,2048,2048,2048,2048,2080, +2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,4128, +2080,2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2048,2080,2080,2112,2112,2112,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080, +2048,2048,2048,2048,2048,2048,2048,2048,4128,4128,4128,4128,4128,4128,4128,4128, +2080,2080,2080,2080,2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2048,2048,2048,2048,2048,2048,2048,2048,2080,2080,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2080,2080,2080,2080,2080,2080,4160,4160,4160,4160, +4161,4160,4160,4128,2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2080,2080,2048,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,2080,2080,2112,2113,2080,2080,2080,2080,2080,2080,2080,2080, +2080,2080,2080,2048,2048,2048,2048,2048,2080,2080,2080,2080,2080,4160,4160,4160, +2080,4160,4160,4160,2080,2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048, +2080,2080,2080,2048,2048,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2048,2048,2048,2048,2048,2048,2048,2048,2080,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2080,2080,2080,2080,2080,2080,2080,4160,4160,4160, +4160,4160,4128,4128,2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2080,2080,2048,2048,2048,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,2080,2080,2080,2113,2113,2112,2080,2080,2080,2080,2080, +0,2048,2048,2048,2048,2080,2080,2080,2048,2048,2048,2080,2080,2080,2080,2080, +4160,4160,4160,4160,4160,4160,4160,4160,2080,2080,2080,2080,2048,2048,2048,2048, +2080,2080,2080,2080,2048,2048,2048,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,2048,2048,2048,2048,0,0,0,0,2048,2048, +2048,2080,2080,2080,2080,2080,2080,2080,2048,2080,2080,2080,2080,2080,2080,2080, +4160,4160,4160,4128,4128,2080,2080,2080,2080,2080,2080,2048,2048,2048,2048,2048, +2080,2048,2048,2048,2048,2048,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,2081,2081,2081,2080,2080,2080,2080,2080, +2048,2048,2080,2080,2080,2080,2080,2080,2080,2080,2048,2048,2080,2080,2080,2080, +2080,2080,2112,4160,4160,4160,4160,4160,2112,2112,2080,2080,2080,2080,2080,2080, +2080,2080,2080,2080,2080,2080,2080,2080,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,2048,2048, +2080,2080,2080,2080,2080,2080,2080,2080,2048,2048,2080,2080,2080,2080,2080,2080, +4128,4128,4128,4128,4128,4160,4160,4160,2080,2080,2080,2080,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,2080,2081,2113,2112, +2112,2112,2080,2080,2080,2080,2048,2048,2080,2080,2048,2048,2048,2048,2080,2080, +2048,2080,2080,2080,2080,2080,2112,2112,4160,4160,4160,2112,2080,2080,2080,2080, +2048,2048,2080,2080,2080,2080,2080,2080,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2080,2080,2080,2080,2080,2080, +2080,2080,4128,4128,4128,4128,4160,4160,4128,4128,4128,2080,2048,2048,2048,2048, +4096,4096,4096,2048,2048,2048,2048,2048,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,32,32,2080, +2112,2112,2080,2080,2080,2080,2080,2048,2080,2080,2080,2048,2048,2048,2048,2080, +2048,2048,2080,2080,2080,2080,2080,2080,4160,4160,4160,4160,2112,2080,2080,2080, +2048,2048,2048,2048,2048,2080,2080,2080,2080,32,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2048,2048,2048,0,0,0,0,0,2048,2048,2048,2048,2080,2080,2080,2048, +2080,2048,2080,4128,4128,4128,4128,4160,4160,4128,4128,4128,4128,4128,2080,2080, +4096,4096,4096,4096,2048,2048,2048,2080,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,2080,2080,2080,2080,2080,2080,2080,2080,2080,2048,2048,0,2048,2048,2048, +2048,2048,2080,2080,2080,2080,2112,2112,4160,4160,4160,4160,4160,2112,2112,2112, +2048,2048,2048,2048,2080,2080,2080,2080,2080,2080,2080,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2048,2048,2048,2048,2080,4128,4128,4128,4160,4160,4160,4160,4128,4128,4128,4128, +4096,4096,4096,4096,2048,2080,2080,2080,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,32,32,2080,0,0,0,0,0,0,0,0, +2048,2048,2080,2080,2080,2080,2080,2080,2112,2112,2112,4160,4160,4160,4160,4160, +2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2048,2048,2048,2080,2080,2080,2080,4128,4160,4160,4160,4160,4160,4160,4160,4160, +2080,4096,4096,4096,2048,2080,2080,2080,2048,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,32,32,32,32,0,0,0,0,0,0,32, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,2048,2080,2080,2080,2080,2080,2080,2080,2112,2112,2112,4160,4192, +4160,4160,4160,4128,2112,2080,2080,2080,2080,2080,2080,32,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,2080,2080,2112,2113,2113, +4161,4160,4160,4160,4160,2080,2080,2080,2080,2080,2048,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,2048,2080,2080,2080,2080,2080,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,2080,2080, +2080,2112,4160,4160,4160,4160,4192,4192,2080,2080,2080,2080,2048,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2080,2080,2080,2080,2080,2080,2080,2112,2080,2080,2080,2080,2048,0,2048,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,2048,2048,2048,2080,2080,2048,2048,2048,2048,2048,2048,2048,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,2048,2080,2048,2080,2080,2080,2080,2112,2080,2080,2080,2080,2080,2080, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,32,2080,2080,2080,2080,2080,2080,2048,32,2048,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,2048,2048,2048,2048,2048,2048,2048,2048,2080,2080,2080,2080,2048,2048, +0,0,0,0,0,0,0,0,2080,32,32,32,32,32,32,32, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,32,2048,2080,2080,2080, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,2048,2048,2048,2048,2048,2048,2048,2048,2048,2080,2080,2080,2080,2080,2080, +0,0,0,0,0,0,0,0,2048,2080,2080,2080,2080,2112,2112,2112, +2080,2080,2080,2080,2080,2080,2080,2080,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,2048,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,2080,2080, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,2048,2048,2048,2048,2048,0,0,2048,2048,2048,2048,2048,2048,2080,2080, +2048,0,2048,2048,2048,2080,2080,2080,2048,2080,2048,2080,2080,2112,4160,2112, +4160,2112,4160,2112,4160,2112,4160,2112,2048,2048,2048,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,2080,2080, +2048,2048,2048,2080,2048,2080,2048,2080,2048,2080,2048,2048,2048,0,2048,2048, +2048,2048,2048,2048,2048,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,2080,2080, +2080,2080,2080,2080,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,2048,2048,2048,2048,2048,2048,2080,2080, +2080,2080,2080,2080,2080,2080,4160,4160,2048,2048,2048,2048,2048,2048,2048,2048, +2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2048,2048,2048,0,2048,0, +2048,2048,2048,2048,2048,2048,2048,2048,2048,0,2048,0,2048,0,0,0, +2080,2080,2080,2080,2080,2080,2080,2080,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,2080,2080,2080,2080, +2080,2080,2080,2080,2080,2080,2080,2080,4160,4160,4160,2080,2080,2080,2080,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,2080,2080,2080, +2080,2080,2080,2080,0,0,0,0,0,0,0,0,0,0,0,0, +0,2080,2080,2080,2080,2080,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,2048,2048,2048,2048,2048,2048,2048,2080, +2048,2048,2080,2080,4128,4128,4160,4160,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2080,2080,2080,2080,2080,2080,2080,2048,2048,2048,2048,2048,2048,0,2048,0, +0,0,0,2080,2080,2080,2080,2112,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,2080,2048, +2080,2080,2048,2080,2080,2080,4128,4128,4160,4160,4128,4160,4128,4128,4128,4128, +2048,4096,4096,4096,4096,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,2080,2080,2080,2112, +2080,2080,2080,2080,2080,2080,2080,2080,0,0,0,0,0,0,0,0, +0,0,2080,2112,2113,2113,2080,2080,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2080,2080,4128,4128,2048,2048,2048,2080,2080,2080,2080,2080, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,4128, +4128,4128,4128,2080,2080,2080,2080,2080,2048,2048,2048,2048,2048,2048,0,0, +0,0,0,0,0,2080,2112,2113,2112,2080,2080,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2048, +2048,2048,2048,2048,2048,2080,2080,2080,2080,2080,2080,2080,2080,4128,4128,4128, +4128,4128,4128,4128,4128,4128,4128,4128,2048,2048,2048,2048,2048,2048,2048,2048, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2048,2048,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080, +2080,2080,2080,2080,2080,2080,2080,2080,2080,2048,0,0,0,0,0,0, +0,0,0,2080,2080,2080,2080,2080,2080,2080,2080,2048,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,4096,4128,4128,4128,4096,2048,2048,4096,4096,4096,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,4128,4128,4128,2048,2048,2048,2048,2048,2048,2048,2048, +2048,0,0,0,0,0,0,2080,2080,2080,2112,2112,2112,2080,2080,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,2048,2080,2080,2080, +2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2048,2048,2048, +4128,4128,4128,4128,4128,4128,4128,4128,4128,4128,4128,4128,4128,4096,4096,2048, +2048,2048,2080,2080,2080,2080,2048,0,0,0,2048,2080,2080,2080,2080,2080, +2080,2080,2080,2080,2080,2080,2080,2080,0,2048,2048,2080,2080,2080,2080,2080, +2080,2080,2080,2080,2080,2080,2080,2112,2080,2080,2048,0,0,0,0,0, +0,0,0,0,2048,2080,2080,2080,2080,2080,2080,2080,2048,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2080,4128,4128,4128,4128,4128,4096,4096,4096,4096,4096,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,0,0,0,0,0,0,0,2080,2080,2080,2112,2112,2080,2080,2080, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,2048,2048,2080,2080,2080,2080, +2080,2080,2048,2080,2048,2080,2048,2080,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,4128,4128,4128,4128,4128,4128,4128,4128,4128,4128,4128,4128, +2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080, +2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2048,2048,2048,2048, +2080,2080,2080,2080,2080,2080,4160,4160,2080,2080,2080,2048,2048,2048,0,0, +0,0,0,0,2048,2048,2048,2048,2080,2080,2080,2080,2080,2080,2080,2080, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,0,0,0, +0,0,0,2048,2048,2048,2048,2048,2048,2048,2080,2080,2080,2080,2080,2048, +2080,2080,2048,2048,2048,2080,4128,4128,4128,4128,4128,2080,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2080,4128,2080,2080,2080,2080,2048,2048,2048, +2048,2048,2048,0,0,0,0,0,2048,2048,2080,2080,2080,2080,2080,2080, +0,32,32,32,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2080,2080,2080, +2080,2080,2080,2080,2080,2080,2080,2080,2048,2048,2048,2048,2048,2048,0,0, +0,2048,2048,2048,2080,2080,4128,4128,4128,4128,4128,4128,4128,4128,4128,4128, +4128,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080, +2048,2048,2048,2080,2080,2080,2080,4160,4160,4160,4160,2080,2080,2048,2048,2048, +2048,2048,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2048,2048,2048,2048, +2048,0,0,0,0,2048,2048,2048,2080,2080,2080,2080,2080,2080,4160,2112, +2080,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2048, +2080,2080,2048,2048,2048,2048,2048,2048,2080,2048,2048,2048,2048,0,0,0, +0,0,0,0,2048,2048,2048,2080,2048,2080,2080,2080,2080,2080,2080,2080, +2080,2048,2048,2048,2048,2048,2048,2048,4128,4128,4128,4128,4128,4128,4128,2080, +2048,2080,2048,2080,2048,2080,2080,2080,4128,2080,4128,2080,2080,2080,2080,2080, +2080,2048,2048,2048,0,0,0,0,2048,2048,2048,2080,2080,2080,2080,2080, +2112,2112,2113,2112,32,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2080,2048,2048,2048,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080, +2048,2080,2048,2080,2048,2080,2048,2080,2048,2048,2048,0,0,0,0,0, +2048,2048,2048,2048,2048,2048,2048,2048,2080,4128,4128,4128,4128,4128,4128,4128, +4128,2080,2080,2080,2080,2080,2080,4160,2080,2080,2080,2080,2080,2080,2080,2080, +2048,2048,2048,2048,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2048, +2048,2048,2048,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2048,2048,2048, +2048,2048,2048,0,0,0,2048,2048,2048,2048,2048,2080,2080,2080,2080,2112, +4193,2112,2112,32,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,2048,0,0,0,2048,2048,2080,2080,2080, +2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2048,2048,2048,0,0,0, +0,0,0,0,2048,32,2080,2080,0,32,2080,2080,2080,2112,2080,2080, +2080,2080,2048,2048,2048,2048,2048,2048,2048,2048,2080,2080,2080,2080,2080,2080, +2080,2080,2080,2080,2080,2080,2080,2080,2080,2112,2080,2080,2080,2080,2080,2080, +2080,2080,2048,2048,2048,2048,0,0,0,0,2048,2048,2048,2048,2080,2080, +2112,2112,2113,2112,2112,2080,2080,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2048,2048,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080, +2048,2080,2048,0,2048,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,2048,2048,2080,2048,2080,2080,2080,2080,4096,4096,4096,2080, +4160,4160,2080,2080,2080,2080,4160,4160,2080,2080,2080,2080,2080,2080,2080,2080, +2080,2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2080,2080,2080, +2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080, +2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2080,2080,2080,2080, +4160,2112,2112,2112,2080,2080,2080,2080,2048,32,2048,2080,2080,2080,2080,2080, +2080,2080,2080,2048,2048,2048,2048,2048,0,0,2048,2048,2080,2080,2080,2080, +2048,2048,2048,2048,2048,2080,2080,2080,2080,2048,2048,2048,2048,2048,0,0, +0,0,0,0,32,32,32,32,0,32,32,32,2080,2080,2080,2112, +2112,2080,2080,2080,2080,2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2080, +2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080, +2080,2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2080,2080,2080,2112,2112,2112,2112,2112,2080,2080,2080,2080,2048,0,0,0, +2080,2080,2048,2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080, +2080,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,2080,2080,2080,2080,2080,2080,2080,2080,4096,4096,4096,2048, +4160,4160,4160,4160,4160,4160,4160,4160,2048,2048,2048,2048,2048,2080,2080,4160, +4128,4128,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2080,2080, +2080,2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2080, +2080,2080,2080,2080,2080,2080,2080,2112,2080,2080,2080,2112,4160,2112,4160,4160, +2080,2080,2080,2080,2080,2080,2080,2080,0,0,0,0,0,0,0,0, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +0,32,0,0,0,0,0,0,32,32,0,0,0,32,2080,2112, +2080,2080,2080,2080,2112,2112,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048, +0,0,0,32,32,32,32,2080,2080,2080,2080,2080,2080,2080,2080,2080, +2080,2080,2080,2080,2080,2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2080,2080,2080,2080,2080,2080,2112,2080,2112,2080,2112,2080,2112,2080,2080, +4128,4128,4128,4128,4128,2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2080,2080,2080, +2080,32,0,32,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,32,2080,2080,2080,2080,2080,2080,2080,2080,4128,4128,4128, +4160,4160,4160,4160,4160,4160,4160,4160,2048,2048,2048,2048,2048,2048,2080,2080, +2080,2080,2080,2080,2080,2080,2080,2080,2048,2080,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2080,2080,2080, +4128,2080,4128,4160,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2080,2080,2080,2080,2080,2080,2080,2112,2112, +2112,2112,2112,2080,2080,2080,2080,2080,0,0,0,0,0,0,0,0, +2048,2048,2048,2048,2048,2048,2048,2080,2048,2048,2048,2080,2048,2080,2048,2080, +0,0,0,0,0,0,0,0,32,0,0,0,0,32,2080,2112, +0,2048,2080,2080,2112,2112,2112,2112,4128,2080,2080,2080,2048,2048,2048,2048, +0,0,0,0,0,0,0,0,32,0,0,0,2080,2080,2080,2080, +2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2048,2048,2048,2048,2048, +2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2080,2080,2080,2080,4128,4128, +4160,4128,4128,4128,4128,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2080,2080,2080, +2080,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,2080,2080,2080,2080,4128,4160,4160,4160, +2080,4128,4160,4160,4160,4160,4128,2080,2048,0,0,0,0,2048,2048,2080, +4128,2080,2048,2048,2048,2080,4128,4160,4128,4128,2080,2048,2048,2048,2048,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2048,0,2048,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080, +2048,2048,2048,2048,2048,2048,2048,0,2048,0,2048,2048,2080,2080,4160,2080, +2080,2112,2112,2112,2112,2112,2112,2112,2112,2112,2080,2080,0,0,0,0, +0,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2048, +2080,4160,4160,2112,2048,2048,2048,2080,2080,2080,4128,4128,4128,4128,4096,2080, +2048,2048,2048,2048,2048,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,32,32,32,32,32,32,32,32,32,32,32,2080, +0,2080,2080,2080,2080,2080,2048,2048,2048,2048,0,0,0,0,2048,2048, +4128,4128,4128,4128,4128,4128,4128,4128,4128,4128,4128,4128,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,0,0,2080,2080,2080,2080,2080,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,2048,2048,2080,2080,2080,2080,2080,4129,4129,4160, +4160,4160,4160,4160,4160,4160,4160,4192,0,0,0,0,0,0,32,32, +2048,2048,2048,2080,4128,4128,4128,4128,4128,4128,4128,4128,4128,2080,2048,2048, +2048,2048,2048,0,0,0,0,0,0,0,0,0,0,0,0,0, +2048,2048,2048,2048,2048,2048,2048,2048,2048,0,0,0,0,2048,2080,2080, +4160,4160,2080,2080,2080,2080,2048,2048,2048,2048,0,2048,2048,2048,2048,2048, +2048,32,32,32,32,2080,2080,2080,2112,2080,2080,32,0,0,0,0, +0,0,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,0,0,0,0,0,0,0,0,0,0,0,0,0,2048, +2080,2080,4160,2080,2048,2048,2048,4128,2080,4128,4128,4128,4128,4128,4128,4128, +2048,2048,2048,2048,2048,2048,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2080,2080,2080,2080,2080,2112,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,4128,4128,4128,4128,4128, +4096,4096,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,2048,0,2048,2048,2080,2080,2081,2081,4160, +4160,4160,4160,4160,4160,4160,4192,4192,2112,2080,0,0,0,0,0,32, +2048,2048,2080,4128,4160,4160,4128,2080,4128,4128,4128,4160,4160,4128,4128,4128, +2080,2080,2080,2048,0,0,0,0,0,0,0,0,0,0,0,0, +2048,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +4160,4160,4160,4160,4160,4160,4160,4160,2080,2080,2080,2080,2080,2048,2048,0, +0,0,0,0,0,0,2048,2048,2112,2112,2112,2080,2080,2048,0,0, +0,0,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,2048,2080,2080,2048,2048,4128,4160,4128,4128,4128,4128,4128,4128,4128,4128, +4128,4128,4128,2080,2080,2080,2080,2080,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,2048,2080,2112,2112,4160,4160,4160,4128,4160,4128,4128,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2080,2080,2080,4128,4128,4128,4128,4128, +4128,4128,4128,4128,2080,2048,2048,2048,2048,2048,2048,2048,2048,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,2048,2080,2080,2080, +4128,4160,4160,4160,4160,4160,4192,4192,4192,2112,32,0,0,0,0,0, +2048,2048,2048,4128,4160,4160,4128,4128,4128,4128,4128,4128,4128,4128,4128,2080, +2080,2080,2080,2048,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2048,2048,2080,2080,4160,4160,4160,4161,4161,4160,4160,2080,2080,2080,2048,0, +0,0,0,0,0,0,0,2048,2080,2080,2112,2112,2080,2080,0,0, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,0, +2080,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,2048,2048,2048,2048,2048,4128,4160,4128,4128,4128,4128,4128,4128,4128,4128, +4160,4160,4128,4128,2080,2080,2080,2080,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,2048,2080,2080,2080,2080,4160,4160,4160,4160,4160,4128,2080,2048, +4128,4128,4128,4128,4128,4128,4128,4128,4128,4128,4128,4128,4128,4128,4128,4128, +4128,4128,4128,4128,2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2080,4160,4160,4160,4160,4160,2112,2112,2144,2112,2080,32,0,0,0,0, +0,2048,2048,2080,2080,4128,4160,4160,4128,4128,4128,4128,2080,2080,2080,2048, +2080,2048,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,2048,2048,2048,2080,2080,4160,4160,4160,2080,2080,2080,2080,2080,2048,0, +0,0,0,0,0,0,0,0,0,0,0,2080,2080,2048,0,0, +2048,2048,2080,2080,2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048,0, +2080,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,2048,2048,2048,2048,2080,4128,2080,4128,4128,4128,4128,4128,4128,4128, +2080,2080,2048,2048,2048,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,2048,2048,2048,2048,2080,2080,4160,4160,4160,4128,4128,4128, +4128,4128,4128,4128,4128,4128,4128,4128,4128,4128,4128,4128,4128,4128,4128,4128, +4128,4128,4128,2080,2048,2048,2048,2048,2048,0,0,0,0,0,0,0, +2080,2080,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2048,2048,2080,2112,4160,4160,2112,2112,2112,2112,2112,2112,2080,32,0,0, +2048,2048,2048,2048,2048,2080,4128,4160,4160,4160,4160,4160,4128,2080,2080,2080, +2048,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2048,2048,2048,2048,2080,2080,2080,2080,2080,2080,2080,4160,4160,4160,2080,2048, +0,0,0,0,0,0,0,0,0,0,0,2048,2080,2080,2080,2048, +2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2048,2048,2048,2048,0, +2080,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,2048,2048,2048,2048,2080,2048,2080,4128,4128,4128,4128,4128,4128, +2080,2080,2048,2048,2048,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,2048,2048,2048,2048,2048,2048,2048,2080,2080,4128,4128,4128,4128, +4128,4160,4128,4160,4128,4160,4128,4160,2080,4128,4128,4128,4160,4160,4160,4160, +4128,4128,4128,2048,2048,0,0,2048,0,0,0,0,0,0,0,0, +2080,2080,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,2048,2080,2080,4160,2112,4160,2112,2112,4193,4193,2112,32,0,0, +0,0,0,2048,2048,2048,2048,2080,4128,4128,4128,4128,4128,4128,2080,2080, +2048,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2080,2080,2080,2048,2048,2048,2048,2048,2080,2080,4160,4160,4160,4160,2080,2048, +2048,2048,2048,0,0,0,0,2048,2048,2048,2048,2080,2080,2080,2080,2080, +2080,2080,2080,2080,2080,2080,2080,2048,2080,2048,2048,2048,2048,2048,2048,0, +32,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,2048,2048,2080,2048,2080,2080,4128,4128,4128,4128,4128, +4160,2080,2080,2080,2080,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,2048,2080,2080,2048,2048,2048,2048,2048,2048,2048,4128,4128,4128, +4160,4160,4160,4160,4160,4160,4160,4160,4128,4128,4128,4160,4160,4160,4160,4160, +4160,4160,4128,2048,0,0,0,2048,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,2048,2080,2080,2112,2080,2112,2144,4193,2144,2112,32,0, +0,0,0,2048,2048,2048,2048,2048,2048,2080,2080,2080,4128,4128,4128,2080, +2080,2048,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2048,2048,2048,2048,2048,2048,2048,2080,2048,2048,2048,2080,2080,2080,2048,0, +2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2080,2080, +2048,2080,2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,0,0, +32,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,2080,2080,2080,2048,2048,2048,2080,4128,4128,4128,2080, +2080,2080,2080,2080,2048,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,2048,2080,2048,2048,2048,2048,2048,2048,2048,2080,4128,4160, +4128,4128,4128,4128,4128,4128,4128,4128,4160,4160,4160,4160,4160,4160,4128,4128, +4160,4161,4160,2048,0,0,0,2048,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2080,2048,0,0,0,0,0,0,2080,2080,2112,2112,2144,2112,2112,2112, +2048,0,0,0,2048,2048,2080,2048,2080,2080,2080,2048,2048,2048,2048,2048, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2048,2048,2048,2048,2048,2048,2048,2048,2080,2048,2048,2048,2080,2080,2080,2048, +2048,2080,4128,4128,4128,2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2080,2080,2080,2080,2080,2080,2080,2080,2080,2048,2048,2048,2048,2048,2048,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,2080,2048,2048,2048,2048,2048,4128,4128, +2080,2080,2080,2048,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2080, +2080,2080,4128,4128,4128,4160,4160,4160,4160,4160,4160,4160,4160,4160,4160,4160, +4160,4161,4160,2080,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2080,2080,2080,2080,2080,2080,2048,0,0,2048,2080,2080,2080,2112,2112,2112, +4161,2080,2080,2048,2048,2080,2080,2080,2048,2048,2048,2048,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2048,2048,2048,2048,2048,2048,2048,2048,2080,2080,2080,2080,2080,4160,2080,2080, +4128,4128,4128,4128,4128,4128,2080,2080,2080,2048,2048,2048,2048,2048,2048,2048, +2080,2080,2080,2080,2080,2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,2080,2048,2048,2048,2048,2080,2080,2080, +2080,2080,2080,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2080,2080,2080,4128,4128,4128,4160,4160,4160,4160,4160,4160,4160,4160,4160,4160, +4160,4161,4161,4160,2080,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,2080,2080,2080,2080,2080,2080,2048,2048,2080,2080,2080,2112, +4193,4161,2112,2080,0,0,2080,2080,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2048,2048,2048,2048,2048,2048,2048,0,2080,2080,2048,2080,2080,2080,2080,2080, +4128,4128,2080,2080,2080,2080,4128,4128,4128,4128,2080,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2080,2048,2048,2048,2080,2080,2080,2048, +2048,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,2080,2080,2080,2080,2080,2080,2080,2080, +2112,2080,32,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2080,2048,2080,2080,4128,4128,4128,4128,4128,4128,4128,4128,4160,4160,4160, +4160,4160,4160,4193,4161,2080,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,2080,2080,2112,2080,2080,2048,2048,2048,2048,2080,2080, +2080,2112,2112,2080,2048,0,2048,2080,2048,2048,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,2048,2048,2048,2048,2048,2048,2048,2048, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2048,2048,2080,2080,2080,2080,2048,2048,2048,2048,0,2048,2048,2048,2048,2048, +2080,2048,2048,2048,2048,2080,2080,2080,4160,4128,2080,2080,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2080,2048,2048,2080,2080,2080,2080,2080, +2080,2080,2048,2048,2048,0,0,0,0,0,0,0,0,0,2048,0, +0,0,0,0,0,0,0,0,2048,2080,2080,2080,4128,2080,2080,2080, +2112,2112,32,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2080,2080,2080,2080,2080,2080,4128,4128,4128,4160, +4160,2080,2112,4160,4193,2112,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,2080,2112,2080,2080,2048,2048,2048,2048,2048, +0,2080,2113,2113,2080,2080,2080,2080,2048,2048,0,0,0,0,0,0, +0,0,0,0,0,2048,2048,2048,2048,2048,2048,2048,2048,2080,2080,2080, +2048,2048,2048,2048,2048,0,0,0,0,0,0,0,0,0,0,0, +2048,2048,2080,2080,2080,2080,2080,2048,2048,2048,0,2048,2048,2048,2048,2048, +2048,2048,2048,4128,4128,2080,2048,2048,4128,4128,2080,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2080,2080,2080,2080, +2080,2080,2080,2080,2048,2048,2048,2048,2048,0,2048,2048,2048,2048,2048,2080, +0,0,0,0,0,0,0,0,0,2048,2080,2080,2080,2080,2080,2080, +2112,2112,32,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2080,4128,4128, +4160,2112,2112,2112,4193,2113,2112,2080,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,2080,2080,2080,2080,2080,2048,2048,2048, +0,0,2048,2080,2080,2048,2048,2048,0,0,0,0,0,0,0,0, +0,0,0,0,0,2048,2048,2048,2048,2048,2048,2048,2080,2080,2080,2080, +2112,2112,2112,2112,2112,2112,2112,2112,2080,2080,2048,2048,2048,2048,0,0, +2048,2048,2080,2080,4160,4160,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080, +2048,2048,4128,4128,4160,4128,4128,2048,2080,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,0,0,2048,2048,2048,2048,2048, +2080,2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2080,4128,4128,4128,4160, +2080,32,0,0,0,0,0,0,0,0,2048,2080,2080,2080,2080,2080, +2112,2080,32,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +4160,2112,2112,2112,2113,4193,4193,2145,32,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,2048,2080,2080,2080,4128,2080,2048,2048, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,2048,2048,2048,2048,2048,2048,2080,2080,2080,2080, +2112,2112,2112,2112,2112,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2048, +2048,2048,2048,2080,2080,4160,4160,4160,4160,2080,2080,2080,4160,4160,4160,2080, +2048,2048,2080,4128,4128,4128,4128,4128,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,0,2048,2048,2048,2048,2048, +2048,2048,4096,2048,4096,2048,4096,2048,4096,2048,4096,2080,4128,4128,4128,4128, +2081,33,32,0,0,0,0,0,0,0,0,2048,2080,2080,2080,2080, +2112,2080,32,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2080,2112,2112,2112,2112,2112,2145,2112,32,32,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,2048,2048,2080,2080,2048,2048, +4129,2048,2048,0,2048,2048,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,2048,2048,2048,2048,2048,2080,2080,2080,2080, +2048,2048,2048,2048,2048,2048,2048,2048,2080,2080,2080,2080,2080,2080,2080,2080, +2048,2048,2048,2048,2080,4128,4160,4160,4128,2080,2080,2080,2080,2112,2112,2080, +2048,2048,2048,2048,2048,2080,2081,2080,2080,2048,2048,2048,2048,2048,2048,2048, +2080,32,32,2080,2080,2080,2048,2048,2048,2048,2048,2048,2080,2080,2080,2080, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2080, +2080,2081,2080,0,0,0,0,0,0,0,0,2048,2048,2080,4128,4128, +2080,32,2080,32,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,0, +0,0,2080,2080,2080,2080,2080,2112,2145,2113,2080,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,2048,2048,2080,2080,2080, +4097,4096,4096,2048,2048,2048,2048,2048,2048,0,0,0,0,0,0,0, +0,1,1,1,33,2048,2048,2048,2048,2048,2048,2048,4096,4096,4096,2048, +2080,2048,2048,2048,2048,2048,2048,2048,2048,2080,2080,2048,2048,2081,0,0, +0,0,2048,4128,4096,2048,2048,2048,4096,4096,4128,2080,0,0,32,32, +0,1,1,1,1,0,1,1,66,2113,2081,2048,2048,4096,4096,2048, +64,64,64,64,0,2080,2081,0,2049,2049,2049,2049,2048,32,32,32, +32,2080,2080,2080,2080,2080,2080,2080,2048,2048,2048,2048,2080,2048,2048,2048, +2048,2080,4128,4160,2080,2048,0,0,0,0,0,2048,2048,2048,4096,2048, +4161,2113,2080,2080,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,2048,0,0,0,0,0,0,32,0,0,2080,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,0, +0,0,0,0,0,2048,2048,2080,4161,4161,4129,2080,2048,0,0,0, +2048,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,32,32,32,32,32,32,32,32,32,32,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,2080,2080, +2048,2048,2048,2048,2048,2048,0,0,0,0,0,0,0,0,0,0, +0,33,1,32,2080,2048,2048,2048,2048,2048,2048,2048,2048,4096,4096,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,4128,4128,2048,2048,2081,2049,0, +2048,4128,4096,2048,2048,4096,6144,6144,4096,2048,2048,2048,32,32,32,32, +0,0,0,0,0,1,33,65,1,1,32,2080,4128,4096,6144,4128, +2112,32,0,2209,2145,0,0,2081,1,2049,1,0,0,0,0,0, +2080,2080,2080,2112,2080,2112,4128,4160,2080,2080,2080,2080,2080,2080,2080,4128, +4096,4096,4128,4128,2080,2048,0,0,0,0,0,0,2048,2048,2048,2048, +2048,2080,2081,2081,2080,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,2048,0,0,0,0,0,0,0,0,0,0,2048,2048,2048,2048, +2080,2080,2080,2080,2080,2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048, +2048,0,0,0,0,2048,2048,2048,2080,4128,4128,2080,2048,2048,2048,0, +2048,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,32,32,32,32,32,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32, +0,32,32,32,0,0,0,0,32,32,32,32,32,32,32,32, +2080,2080,2048,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2080,2080,2048,2048,2048,4129,4129, +4128,2048,4096,10370,12483,8257,4096,4096,8225,6145,4096,2048,2081,2081,33,32, +2112,2080,32,0,0,32,32,32,64,64,2144,4192,4160,4096,4096,4096, +4096,6240,6273,2048,0,0,2177,65,0,0,0,0,2048,2048,4096,2048, +2048,2080,2080,2080,4128,4128,4128,4128,4096,2048,2048,2048,2048,2048,2048,4096, +4096,6144,4096,4096,4096,2048,2080,0,0,0,0,0,0,32,32,32, +0,0,2048,2081,2081,2080,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,2048,0,0,0,0,0,0,0,0,0,0,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,0,0,0,2048,2048,2080,2080,2080,2048,2048,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2048,2048,2048,2048,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +32,32,32,32,32,32,32,32,64,64,64,64,64,64,32,2080, +4128,4096,4096,4128,4128,4096,2048,2048,2048,2048,2048,2048,2048,2048,0,2048, +2048,2048,2048,2048,0,0,0,0,0,2080,2080,2080,2048,2048,4096,4096, +6144,10240,20772,31370,35531,29192,24934,24934,12288,10240,6144,6144,4096,4096,4096,4096, +4096,2048,4096,2048,2048,2048,2048,2048,2048,4096,4096,6144,8192,10272,12352,14432, +10240,8192,6144,6144,4128,2048,0,0,32,0,0,2048,2048,4096,6144,4096, +4096,2048,2048,2048,2048,2048,4096,4096,2048,2048,2048,2048,2048,2048,2048,2048, +4096,4096,4096,4096,2048,2080,2080,64,0,0,32,32,32,32,64,32, +0,0,0,2048,2080,2080,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,2048,2048,2048, +0,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2080,2080,2080,2048,2048, +2048,2048,0,0,0,0,0,0,0,0,0,0,0,0,0,2048, +2049,2049,2049,2049,2049,1,1,1,1,1,1,1,1,1,2049,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +32,32,32,32,32,32,32,0,2080,2080,2080,2048,4096,4096,4096,4096, +6144,6144,6144,4128,4096,4096,4096,2048,2048,2048,2080,2080,0,0,32,0, +2048,2048,2048,0,0,0,0,0,1,0,0,2080,4096,2048,4096,8192, +18464,33155,43656,43656,41543,43624,45705,43624,43656,39463,33157,26849,20544,16384,14336,12288, +16384,16416,16448,14336,10240,8192,10240,10240,10240,10240,10240,12288,18432,26816,33187,37382, +31077,20512,12288,10240,6144,4096,4160,2112,32,32,32,2048,4096,4096,6144,6144, +4096,2048,2048,2048,2048,2048,2048,2048,2048,2048,4096,4096,4128,4096,4096,2048, +2080,2080,2080,2080,2080,32,64,64,32,32,32,32,32,32,32,32, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2048,2048,2048,2048,2048,2048,2048,2080,2048,2048,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2080,2048,2048,2048,0,2048,2048,2080,2080,2080,2048,2048, +2048,2048,2048,0,0,32,0,32,0,0,0,0,0,0,2048,2048, +2048,2049,2049,1,1,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +32,32,32,0,0,0,2048,2048,2048,2048,4096,4096,4096,6144,6144,6144, +6144,6144,6144,4096,4128,4096,2080,2048,2080,2080,2080,32,32,0,0,0, +2048,2048,2048,0,0,1,1,1,33,0,0,2048,4096,4096,8192,16480, +45735,54024,56072,51847,49766,53927,53895,49702,51847,51847,51879,49799,47718,45670,45670,45703, +39364,37316,35204,30978,28832,26752,26785,28897,35204,37284,39365,43558,47719,51912,56105,56138, +51914,49834,39399,22624,10240,6144,6144,2080,32,32,32,2048,4096,4096,6144,4096, +4096,2080,2080,2080,2048,2048,2048,2048,2048,2048,2048,2048,4096,4096,2048,2048, +64,64,64,64,32,32,64,64,32,0,0,0,0,32,32,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,0, +0,0,2048,2048,2048,2048,2048,2048,2048,2048,2048,2048,2080,2080,2080,2080, +2080,2080,2080,2080,32,32,32,32,32,0,0,0,0,2048,2048,2048, +2048,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,2048,2048,2048,0, +2080,2048,2048,2048,2048,2048,2048,4096,4096,4096,4096,4096,6144,6144,6144,4096, +4096,4096,4096,4096,2080,2080,2080,2080,32,32,32,32,32,0,0,0, +2048,2048,0,0,0,1,1,1,1,0,0,2048,4096,8192,18690,35366, +53991,53828,53763,55909,60070,57989,55876,55844,53763,55844,55908,55941,55974,56006,56038,56039, +51814,51815,49734,49702,49734,49767,51880,53961,51848,53928,56040,58121,60136,60103,57990,55910, +58057,55977,56074,51978,35204,14336,8192,6144,4096,2048,2048,2048,2048,2048,2048,2048, +0,32,32,32,32,32,32,33,0,0,0,0,2048,2048,2048,0, +64,96,96,64,64,32,32,0,0,0,0,0,0,1,1,1, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,2048,2048,2048,2048,0,0, +0,0,0,0,0,0,2048,2048,2048,2048,2048,2048,2048,2080,2080,2080, +2080,2080,2080,2080,32,32,32,32,32,32,32,2080,2048,2048,2048,2048, +2048,0,32,32,32,32,0,32,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,2048,2080,2080,2080,2080,2048, +4096,4096,4096,4096,4096,4096,4096,4096,4096,4096,4096,4096,4096,4096,4096,4096, +2048,2048,2048,2080,2080,32,32,33,33,32,32,32,0,0,0,2048, +2048,2048,0,0,0,1,1,1,1,0,2048,2048,6144,12320,29190,52172, +53958,60134,62215,60102,60037,60069,62150,62150,62182,60102,60102,60102,60134,58086,58086,56006, +58087,58055,55975,56007,58056,58088,56007,55943,58088,58055,57990,57958,57957,60070,62151,64231, +62151,60039,58055,58121,54025,45735,33155,16448,8192,6144,4096,2048,0,0,0,0, +0,0,32,32,33,65,65,65,65,33,0,0,0,2048,2080,2112, +64,64,64,64,32,0,2048,2048,2048,2048,2048,2048,2048,2049,1,1, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,2048,2048,2048,2080,0,0,0,2048,2048,2048,2048,2048, +2048,2048,0,0,0,0,2048,2080,2080,2080,2048,2048,2048,2048,2080,2080, +2048,2080,2080,2080,32,32,32,32,32,32,2080,2080,2048,2048,2048,2048, +2048,2048,2080,2080,2080,2080,0,0,0,0,0,0,0,0,0,0, +0,1,0,0,0,0,0,2048,2048,2048,2048,2048,2080,2080,2048,2048, +6176,6176,6176,4096,4128,4128,4128,2080,2048,0,0,32,64,64,32,0, +32,33,33,33,1,1,33,65,65,65,32,32,32,0,2048,2048, +2048,2048,0,0,1,33,34,1,1,0,4096,4096,8192,18592,33318,39461, +47685,49668,47587,47555,49636,49668,51716,51748,53829,53861,53862,53894,53894,53926,53926,53958, +51813,53925,56006,53958,53894,51813,53861,53926,55942,55941,55941,55941,57989,60069,60101,62149, +64165,62117,62117,60102,60135,58120,54025,49962,28995,10240,6144,4096,0,32,260,33, +32,0,0,0,33,33,33,65,66,66,65,2113,2081,2080,2080,2080, +4192,4160,4096,2048,4096,4096,4096,6144,6144,6144,4096,2048,2048,2050,2082,1, +0,0,0,0,0,2080,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,2080,0,0,0,0,0,0,0,0, +32,0,0,32,32,0,0,32,0,32,0,0,0,0,32,32, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080,2080, +0,2048,0,0,0,0,0,0,32,32,0,2048,2048,4128,4128,4128, +4096,2048,2048,2048,2048,2048,2048,4096,4096,2048,2048,2048,2048,0,0,0, +0,0,0,0,0,0,2048,4096,4096,4096,4096,6144,6144,4096,4096,4096, +8192,8192,8192,6144,6144,6144,4096,2048,2048,2112,2144,64,64,64,96,2177, +0,0,1,1,33,66,66,33,33,33,32,32,2048,2048,2048,2080, +2048,2048,2080,32,33,1,1,1,0,2048,6144,8192,10240,26947,39527,39429, +41379,41314,41314,41314,43395,43395,43395,43394,43394,43394,43394,43426,43426,43459,45539,45571, +49732,51812,51812,49699,47554,45441,43360,43328,47554,51715,53860,58021,58053,60100,57988,57955, +62115,64131,62084,62085,62118,60071,58023,53928,54124,31044,8192,4096,4226,32,65,98, +32,32,65,0,0,65,65,0,1,33,2113,2112,2080,4128,4160,8256, +6144,8192,14368,18594,22755,24900,27014,29159,16546,8192,4096,4096,2048,0,0,33, +2113,2048,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,2080,2080,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,32,32,32,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,2080,2080,2080,2080,2080,2080, +2048,2048,0,0,0,0,0,0,32,2080,2048,2048,2048,2048,2048,2048, +2048,2048,2048,2048,2048,2048,2048,2048,2048,0,0,2048,0,0,0,0, +0,2081,2048,2048,2048,6176,8192,6144,6144,6144,6144,6144,6144,6144,8192,8192, +16384,16384,16384,16384,16448,16480,16512,14464,8192,6144,6144,4096,2048,2048,2048,2048, +4160,4161,2081,0,0,1,1,0,0,0,0,0,0,0,2048,2048, +2048,0,0,0,0,0,0,0,4128,4096,6144,12288,20673,33221,39494,35170, +45572,45540,45572,45572,47620,47652,47620,47620,45507,45539,45539,45507,43491,45539,45604,47652, +51812,53893,53925,55973,53893,53861,53861,53828,53796,53796,55876,57988,60037,60069,62149,62148, +62147,64163,64163,64164,64133,62086,60038,55943,56042,43592,16384,6144,4096,65,32,97, +0,2048,2048,0,0,0,0,0,0,2048,4128,6176,6176,4096,4096,8192, +26786,32996,39302,41415,39367,39366,39399,39496,39593,24867,8192,4096,4160,4225,64,32, +0,0,0,2080,0,0,0,2080,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,2080,2080,2080,0,0,0,0,0,0,0, +0,0,0,0,32,0,0,2080,0,0,0,0,32,32,32,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2048,2048,0,0,0,0,0,0,0,0,2048,2048,4096,4128,4128,4129, +2114,33,1,33,2114,2082,1,1,1,1,1,33,33,1,1,33, +2048,4096,4096,6144,8192,10240,22851,35529,29157,24899,18560,14368,14336,12288,10240,8192, +47719,47783,47816,49897,49961,49994,47978,45898,37446,29091,18592,12288,10240,10240,8192,8192, +6144,6144,4096,4096,4096,4096,2048,2048,0,0,2080,0,0,0,2048,2048, +2048,0,0,0,0,0,2048,4096,6144,6144,14368,31238,43818,47979,49994,49896, +56170,58217,58217,58217,58217,58217,58217,58217,56136,56136,56136,56136,56103,56104,56136,58184, +58087,58087,60167,60168,60168,60136,60103,60103,57990,57957,55844,55811,55843,60004,62117,62149, +62148,62147,62115,64164,64132,62053,60005,57958,51750,51913,41576,24900,6144,4096,2144,0, +8288,4096,4096,4096,4096,2048,4096,6209,4096,6144,10304,6144,6144,8192,22851,37480, +49801,53897,53865,51751,45445,41251,37122,35106,35204,33188,24898,14464,4096,0,32,2176, +0,0,2048,2048,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,2080,2080,2080,2080,0,0,0,0,0,0, +64,32,0,0,0,0,0,0,2048,0,0,0,0,0,0,32, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2048,2048,0,0,0,0,32,32,2080,2048,2048,2048,2048,2048,4096,2048, +0,0,2113,33,0,0,0,2081,0,0,0,0,0,0,0,0, +4096,10240,10240,8192,14368,26946,33220,31106,33154,31074,31074,35235,39462,41639,41672,41640, +64361,64362,64394,62346,62346,62346,60298,58217,58282,56202,54154,54154,52073,47847,39428,33154, +24832,18560,14336,10240,8192,6144,4096,6208,2048,2048,2080,2080,0,0,2048,2048, +2081,0,0,0,2048,2048,4096,4096,6144,14368,31206,48044,52205,47914,49929,54090, +51911,53958,51910,51910,51910,53958,53958,53990,56103,56136,58216,58216,58183,56103,56103,58151, +58119,60136,60136,60168,62249,62217,62185,62184,64232,64232,64232,64232,64231,64231,64231,64262, +64262,64262,64262,64262,64230,62150,62150,60103,60201,54025,56268,48011,18496,8192,6144,6144, +8192,10240,14336,20738,22852,16481,8192,8192,10240,8192,10240,18464,31140,43752,50091,56268, +58122,62185,62185,62217,64265,64329,64362,62346,58217,56235,56397,50220,33382,10304,4096,4128, +4160,2080,0,0,0,4193,2081,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,2048,2048,2048,2080,2080,2048,2048,0,0,0,0, +0,0,0,0,0,2048,2048,2048,2048,2048,2080,2048,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +2080,0,0,0,0,0,32,32,0,2048,2080,4128,4128,4096,4096,4128, +4128,4128,4128,4128,6240,8320,6208,2048,6208,4096,2048,2048,2048,0,0,2048, +8192,14336,24800,43752,54284,54219,54185,58314,56168,56168,56169,58249,58315,58347,58315,56235, +64294,64295,64295,64294,62247,62247,60198,58118,60199,60199,58151,56103,56071,56103,56136,56168, +56265,47943,41637,37412,26978,16480,8192,6144,4096,2048,2048,0,0,0,0,0, +1,1,0,2048,2048,4096,6144,8192,18593,29060,37447,39527,39429,37252,37219,37219, +39234,39234,39233,37185,37185,37185,39265,39298,41410,41411,43491,43523,43491,43491,43491,43491, +47587,47588,49668,51781,53895,58056,58056,60136,60104,60136,62184,62216,62216,62215,62183,62183, +60102,60102,60134,60134,60102,58054,58054,56006,56039,51878,49863,49928,35235,22656,20544,24768, +26816,33155,39527,45866,47980,41673,31108,20544,16384,22656,35236,45736,49961,52009,52008,54024, +60200,62215,62183,62182,64230,64230,62149,60069,62247,56038,51942,54185,52203,41703,22752,8192, +2048,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,2048,2048,2048,2080,2080,2080,2048,2048,0,0,0, +0,0,0,0,2048,2048,2048,2048,2048,2048,2048,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,32,32,0,2048,2080,4128,4096,4096,4096,6144, +8192,12320,18656,27107,37672,43979,41801,35494,27043,24929,20736,20736,20768,18720,18720,20736, +26912,43654,54219,56266,56201,58281,60296,58182,62343,62311,62311,62311,62279,60231,60264,60264, +64324,64357,64357,62309,64357,64390,64390,62310,60197,60230,60230,60230,58117,56004,56004,56036, +51842,51939,54086,54151,47911,33284,18560,6144,6144,4096,2048,0,1,33,0,0, +1,1,0,2048,2048,6144,14464,20770,29125,35333,33188,30978,33058,37220,37219,35106, +35140,33124,35204,33124,33124,33124,33124,33156,31010,33091,33123,33123,33123,33091,33122,35170, +35137,35137,37217,37218,39266,41347,43427,43459,47620,47588,45539,47587,47587,47619,49699,49700, +51748,53797,53829,53829,51748,49700,49731,49732,49764,49764,47717,45636,49830,47750,47751,49831, +49831,49896,47784,45670,45671,47817,45736,41510,41445,43525,45638,49799,53959,53926,51813,49699, +49730,49729,51810,55971,60132,64260,64228,64196,64196,62181,60101,55973,56071,56137,45637,28961, +8256,2080,0,2081,2080,0,0,2080,0,0,0,32,0,0,0,0, +0,0,0,0,0,2048,2048,2048,2048,2048,2080,2080,2048,2048,0,0, +32,32,0,0,0,0,2048,2048,4128,2048,0,0,0,32,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,32,32,2112,2080,2048,2048,2048,4096,8288,14464, +35266,49860,58345,62506,60393,58280,58280,60328,64587,62474,60393,60425,60457,58409,58409,58410, +60492,58314,58248,60328,60263,58117,58052,62180,57953,57953,57954,57954,57987,60068,62149,62213, +64421,64421,64421,64389,64422,64422,64422,64422,64455,64423,64391,64423,64424,64424,64424,64391, +64423,64487,60359,58247,56265,56331,50058,37543,14336,10240,8192,6144,6144,6144,4096,2048, +2048,2048,4096,6144,6144,12320,27012,39625,33188,37316,37284,37251,39332,39332,39267,37220, +35205,35238,37318,37318,37318,35237,35237,35237,37317,37349,37349,37317,37317,37317,37317,37316, +39396,39395,41443,41444,41444,43525,45637,47686,47685,47685,47717,49765,49797,49797,49829,51845, +53862,55942,55942,53926,53926,53925,51877,51909,53957,49796,53990,51845,53958,51846,58120,56039, +56072,53992,53992,53992,51912,49799,47719,47719,47718,47653,47588,49701,53894,58087,60167,58118, +56069,56068,58148,60229,64357,64390,64358,64358,64326,64359,64391,64392,64360,62345,62378,58380, +35561,14562,4096,2048,4128,2048,0,2048,0,0,0,2080,2048,2048,2048,0, +0,0,0,0,0,32,2080,2080,2048,2080,2080,2080,2048,2048,2048,2048, +2048,2048,2048,4096,10336,18723,25062,29256,20804,14529,8192,4096,4096,2048,2048,0, +0,0,0,0,2048,2048,2048,2048,2048,2048,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,32,0,32,32,2048,2048,4096,4096,4096,6144,14497,25061,37707,50188, +60393,64423,64390,62245,62245,64358,64358,62245,62245,62213,62213,62278,62310,62342,62342,64423, +60296,62377,64457,64424,64391,64391,64358,64293,64357,64325,64293,64293,64293,64293,64326,64326, +64358,64358,64359,64359,64359,64358,62278,62278,62247,62279,64359,64392,64392,64393,64393,64393, +62344,62376,62409,62441,62441,60394,60362,58314,56299,52106,47913,47946,50092,43818,26914,12288, +10240,8192,10240,12288,24769,37350,41510,37284,41413,43493,43525,43525,43525,43525,43525,45606, +47751,49832,51912,51912,49832,47718,45606,45573,43493,43493,43493,43493,43493,43492,41412,41379, +43460,43460,45540,45573,47653,49766,51879,53960,53992,53959,51846,49765,51878,58184,60330,62410, +64426,64425,64393,62345,62345,62345,62345,62345,62344,62345,62377,62377,64425,64426,64425,62378, +62346,62346,62378,62346,58153,56040,53927,53927,49734,49702,49734,51782,51815,53862,51814,51813, +56005,60262,64456,64456,64423,64391,64391,64391,64391,64391,62311,62311,62312,62344,62377,60361, +58476,41702,24864,12288,8192,6144,4096,4096,2048,2048,2048,2048,2048,4096,6144,4096, +0,32,32,64,32,0,32,64,2144,2080,2048,2048,4096,4096,4096,4096, +6144,8192,12288,26946,45865,56429,58477,56299,58444,54219,37446,18496,8192,6144,6144,2048, +0,0,2048,2048,4096,6144,10240,14464,18722,14496,6208,2048,32,96,96,32, +32,0,0,0,0,0,1,1,1,1,1,34,2082,1,0,0, +32,32,32,32,32,0,2048,4096,6144,6144,12288,31204,50123,58477,56363,58281, +62376,64391,64392,64392,64391,64391,64391,64424,64392,64391,64391,64391,64359,64326,62246,62246, +62279,62279,62279,64327,64327,64327,64359,64359,64326,64359,64359,64359,64326,64326,64327,64359, +58053,58053,58021,58021,58021,58021,55973,55941,55941,55974,58054,58087,58055,55942,53829,51748, +51781,51813,53893,56006,58119,60232,60232,60264,60297,60297,58282,58282,58348,56268,52010,43623, +28963,33189,37382,41575,47817,52043,54091,54025,56106,56138,56138,56138,54058,54090,54090,56170, +56138,58218,60299,60299,58218,58186,56138,56138,58218,58186,58186,56138,56138,56138,56105,56073, +58154,58154,58122,56041,53896,49734,47621,45540,45475,45475,43395,43394,45507,49733,51846,53926, +56006,55974,55974,55974,55974,55974,55974,55974,53926,53926,55974,56006,56006,55974,53926,53926, +51813,51846,53894,51878,51846,51846,51846,51846,51814,49766,49734,49702,47621,45541,45508,43427, +47652,49764,51845,51845,51845,51877,51877,51845,53958,53957,51877,51845,51845,51877,53925,51909, +54086,56297,56362,47977,33317,20737,12320,6144,6144,4096,6144,12416,18722,22882,16512,8192, +4096,0,2048,2048,2048,2048,4096,4128,2048,4096,8256,10304,10272,14432,16577,22818, +22721,31107,43655,52042,56170,58152,56006,55973,58086,60297,60395,49928,31042,14336,10240,10240, +10272,10272,10240,14336,20640,31107,41640,47946,45865,45963,37576,16608,4096,2048,2112,32, +2048,0,0,2048,2081,2081,1,33,33,1,1,1,1,0,0,0, +0,2080,4192,4160,4096,4096,6144,12288,20641,29028,41607,52041,54024,51877,56038,62312, +62247,64295,64328,64360,64327,64295,62247,62214,64327,64295,64295,64295,62214,60101,62149,62182, +60069,60102,60134,60134,60134,58054,57989,57989,60069,60069,60069,60069,60069,60069,60069,60069, +49667,49667,49635,47587,47587,47555,47555,47555,47587,47587,47587,47587,47555,47555,47555,47555, +45507,45475,45474,45474,45474,45474,45442,43361,41281,43426,43459,41379,41380,41445,43558,41510, +41576,41609,43657,43656,43559,43526,43493,45541,45541,45541,45541,43460,43460,43460,43493,43525, +41380,43428,43460,43460,43428,43428,43460,43493,45541,43461,43460,43460,43461,45541,45573,45573, +43429,45509,47622,47622,47622,45541,45509,43460,43428,43460,43428,43427,45508,45573,47621,47621, +47621,47621,47621,47621,47621,47653,47653,47653,47621,47588,47588,45540,45508,43427,43395,41346, +41379,41378,41379,39330,39330,41379,41411,41443,43492,41444,41444,41444,41444,41444,41412,41379, +41412,41380,41347,39267,39299,41379,41347,39266,39266,39234,37186,37153,37153,37186,39234,39233, +47716,51942,56168,54186,54284,50125,37480,22754,12288,18594,29158,39691,48077,48077,43785,37479, +20641,14433,12288,12288,12288,12288,10240,10240,14336,22689,31141,37447,39528,39496,41576,43656, +45672,49832,53993,56008,55910,55845,57924,60005,60005,57957,58056,60266,58284,52011,45802,45770, +45770,45770,49898,54059,58220,60300,60267,60234,58154,58186,58251,54155,41575,24769,14336,10240, +6144,2048,0,0,0,0,0,0,0,0,0,0,0,2080,4160,4128, +10272,8192,8192,8192,14336,24771,35303,43658,47818,47720,47622,47556,47523,49506,49505,49505, +51683,51716,53797,53829,53829,53797,53796,53764,55877,55909,55909,55909,53796,51683,51683,53796, +51716,51716,51684,51684,51684,51684,51684,51716,51716,51683,49635,51683,51684,51684,51683,49603, +45572,45540,45540,45508,45508,45508,45508,45508,47621,45573,45508,43427,43395,43395,43427,43428, +45508,45508,45508,45508,45508,45508,45475,45475,45508,45508,43428,41347,39268,39268,37220,37220, +33092,30979,30947,33059,37188,37188,39268,41348,39203,39202,39170,37154,37154,37155,37187,37187, +37154,37155,37187,37155,37154,37122,37154,37187,37187,37187,37155,37155,37187,39235,39267,39268, +37187,39236,39236,39235,39235,39268,39300,41348,43461,43493,43461,41380,39299,39267,37186,37121, +39235,39235,39235,39235,39235,39267,39267,39267,41381,41381,41381,41380,41348,39268,39235,37187, +37186,37186,35138,35105,35105,35105,35138,35138,37154,37154,37186,37218,39299,39331,39332,39332, +37187,37155,35042,35042,37123,37155,37123,35042,37155,37155,37155,37123,37123,37155,37155,39235, +43361,47554,45507,43427,43493,45671,43624,37318,37351,41576,43689,41608,39430,37349,39397,39430, +37350,35237,33125,33124,35205,35205,35204,35172,35172,37252,39300,41381,43461,43462,43461,45477, +47622,47589,49604,51684,55813,57893,57861,57860,59941,57925,55845,51717,47621,47654,47752,49800, +53994,53929,53864,53831,53799,53733,51620,49507,55878,60137,62315,62348,60332,56171,45671,33123, +12288,8192,6144,6144,6144,6144,6144,8224,6144,6144,6144,6144,8192,12384,14464,14432, +16384,20544,26851,33190,41577,45705,45640,45575,45510,47557,49573,49572,53700,53733,55780,51652, +51717,49669,49702,51750,51750,51782,53863,53895,51750,51750,51750,51782,51749,49637,49637,49669, +49637,47589,47589,49637,49670,51750,51782,51782,49670,49669,47589,47589,47589,47557,47557,45508, +45672,45672,45671,45671,45671,45671,45671,45671,43526,43558,45639,47720,47752,47719,45639,45607, +41381,43461,45542,45542,45510,45509,45541,45541,45541,43461,41381,41348,39268,37155,32994,30914, +35173,33060,33061,37254,39334,39269,39236,39236,41316,41348,41349,41381,41381,39333,39333,39301, +39333,39366,41446,41446,39365,39333,39333,39333,37252,37253,37253,37252,37252,37220,37220,37220, +39334,39301,37188,35075,32995,30914,32962,32994,32994,33027,35107,35107,35140,37220,37252,37220, +35140,35109,35109,35108,35108,35108,35108,35108,32995,33028,35076,35108,35108,35108,35108,35108, +37155,37155,39236,39300,41381,43461,43461,43494,45574,45574,45542,45542,45509,45509,43429,43397, +43365,43366,43366,45479,45511,45512,45512,45512,45511,45479,45479,45479,45479,45479,45479,45478, +47492,49604,49604,43363,39170,39170,41316,43462,41381,39301,37155,35010,35010,37123,39235,39268, +41381,41349,39268,39268,39268,39268,41348,43428,47622,45509,45476,45476,47557,49605,49605,47524, +45475,47588,49701,53829,53797,53797,53765,55813,51651,53797,53862,51782,47621,45541,45605,47686, +47589,47525,45411,45378,45378,47458,49539,49571,49571,51684,51717,49669,49701,51848,51912,49833, +45673,41512,37286,33060,30915,26721,24608,24608,24576,26721,30882,32995,39301,45640,47753,47753, +41544,43689,45802,47850,47785,49800,49800,53896,51783,55911,55944,55911,53798,53765,51717,49637, +49703,47655,47655,47655,47655,47655,49736,49736,47655,47623,47655,49736,49736,49703,47623,47622, +47623,47623,49736,51816,51849,51816,49736,47655,49736,49769,49769,47688,47656,47656,47656,47689, +28899,28899,28899,28931,28931,30979,30979,30979,28898,30947,33059,35140,35173,37253,37253,37253, +45641,45641,45641,45608,45576,43527,43495,43495,39269,39269,39301,39334,39301,37188,35172,37254, +30980,33061,35174,39367,39335,39334,41414,43527,39301,39301,39334,41414,41414,39366,37253,35172, +35173,37286,37318,37318,37318,35205,35173,35173,33092,35173,35205,35237,37253,35205,35205,35205, +35206,35206,35206,35173,33093,33093,33093,33125,33060,33125,35206,35238,37318,37351,39431,39399, +37287,35239,35207,35207,35207,35207,35175,35207,35207,35207,37287,37288,37288,37288,37287,37255, +35108,39269,43462,45576,47656,47689,49769,49769,49769,49769,49768,49768,49736,49704,49671,47591, +49640,49673,49705,51786,51786,51786,51786,51786,51818,51818,51786,51786,51754,51754,51754,51753, +51719,49605,47525,51718,53831,51751,49671,49638,47590,47590,47590,47623,49703,47655,45510,43397, +47623,45575,45575,45574,45510,43429,43429,45509,43364,45477,49670,53863,53864,53831,53798,51750, +51847,49831,49798,49734,49701,49701,51782,51847,53895,47589,45476,47686,49799,45605,41379,39331, +43460,45541,45574,47653,47653,45572,45539,45507,49733,45540,45572,49766,49767,45573,45606,49833, +49834,47721,47721,47721,47722,45641,45641,45641,45608,45576,45543,43462,45510,45509,43397,41316, +37285,37318,39398,41446,43493,45541,47589,47556,49637,49572,47491,47492,49637,49734,49703,47622, +45575,45608,45608,45608,43528,43495,41415,41382,39302,39269,39302,41415,43496,43496,41415,41382, +41350,39269,37156,37156,37124,35076,35076,32996,30850,30883,30883,30883,28803,28803,28835,30916, +20578,20611,20643,22691,24771,24772,24771,24771,33191,33158,31078,31045,31045,33126,35238,37319, +33094,33062,33029,33029,35109,35174,35173,35173,33060,33061,35174,39367,37319,37286,37319,41513, +37352,37352,37320,35174,30948,30915,30947,33060,37254,37286,37318,39399,39431,37351,35238,33157, +33190,35271,37384,37384,37351,35239,33158,33126,35238,35271,37352,37384,37384,37384,37384,37384, +35239,35272,35272,35304,35272,35272,35304,35304,37384,37417,37385,35272,33158,31046,28965,26853, +31047,28999,28967,28999,28967,28967,28966,28966,28934,28966,28934,28966,28934,26886,26853,26821, +33062,37222,41416,43496,43496,43464,43464,45544,41318,41350,43430,45511,45511,47591,45511,45479, +45478,43398,43398,43430,43398,43366,43366,43398,41285,41253,41253,41252,39204,39204,41252,41252, +43366,43398,47559,49671,49671,47558,47558,49639,49638,49671,49671,47591,45510,45575,47656,47689, +41382,41414,43527,43591,43559,43526,43558,45639,45671,47719,47687,45574,45509,45477,45509,45541, +41444,39364,39364,39365,41445,41446,39365,39333,41446,39333,37285,39397,39429,39396,39429,43623, +37350,37382,37381,37381,37413,37413,37445,37445,35299,37413,37380,33187,35268,39495,39463,35237, +37415,35335,35302,35302,35302,33254,33254,35303,35302,35269,35237,37317,39429,39429,39397,39397, +39398,37317,37252,39300,45573,49734,49702,47588,47556,49669,51815,49735,43494,37188,35075,33027, +30915,30948,30948,30916,28835,28803,26754,26722,33028,30980,30981,33094,35174,35174,35174,35206, +30915,30882,26689,26657,26689,26690,26690,24642,26723,24675,24675,24643,22595,22595,22595,22627, +18564,18596,20677,20709,22790,22790,22790,22757,24805,24837,26950,31111,33257,37450,39563,41643, +31079,26885,24740,24740,26853,28933,28933,26820,28900,26852,28932,33158,33158,31078,31045,33158, +33159,31079,28966,26852,26787,26787,26787,26786,24706,24738,26819,26851,26884,26884,24771,22691, +26917,28998,31110,31110,28998,26885,24804,24772,22659,24739,24739,24739,22659,22626,22626,20578, +22691,22692,22692,22692,22692,22724,24805,26918,24805,26918,28998,26950,28998,26950,28998,26950, +24806,22758,22758,22758,22758,22758,22726,22726,22726,22758,22758,24838,24839,24839,24838,24806, +26853,31014,33159,35207,33094,30981,33029,33061,35174,37222,39303,39335,41415,41415,39335,39302, +35108,33027,32995,33027,35108,35108,35140,37221,35140,35140,35140,37188,37221,37221,37253,37254, +35109,37190,39303,41383,43430,43430,43430,45510,45510,45478,43430,41350,39269,39270,37222,35173, +37286,37318,37351,37383,37350,35205,33125,33156,30979,30978,30946,30979,32995,32962,30849,28768, +26752,26752,26753,24705,24705,26786,28932,31045,28932,33126,33158,31044,28931,30979,28898,24737, +26851,24803,24835,24867,24932,24932,24931,22882,24963,24931,27044,31206,33287,33222,33223,35336, +31174,29029,24836,22755,22723,22755,24835,26916,29029,26883,24802,28963,31043,31042,31010,31010, +35172,37253,39301,41348,43396,47557,49669,49669,53896,51783,47654,45542,39301,35108,30948,30980, +24674,24674,24642,22594,22594,22626,24707,24739,24674,22626,24675,24739,26820,26820,28933,31014, +26787,28867,30980,33126,35207,33159,28965,26853,28933,26853,24772,22692,22693,22693,22661,20612, +18695,18662,16581,16549,16549,16516,16516,16483,20645,20677,22757,22790,24838,22757,22725,20644, +20644,20677,22725,22757,22757,22757,22725,22724,26918,26950,26950,26950,26949,26917,24836,24804, +24805,24805,22724,22724,22692,22691,22691,22658,24771,26949,26982,24901,22788,22788,22788,20676, +20676,22724,22724,20644,20611,20579,20579,20579,18466,18531,20579,18531,20579,20611,20579,16418, +16418,16418,16418,16450,16451,16450,16418,14338,16451,16451,16451,16451,18499,16451,16451,16451, +14371,14371,14403,16451,16451,16451,16451,14403,14403,16452,16516,18597,18597,18629,18597,18597, +16548,16515,16515,16515,16482,18563,18595,20643,20643,20643,22723,24804,24836,26917,28997,29029, +26916,24868,26948,26948,26981,29061,29061,29093,29061,29061,26981,26948,26948,24867,24835,24836, +24773,26789,26788,26755,26722,26689,24576,24576,24576,26656,24609,24609,24609,22561,22594,22594, +20578,20578,20611,22691,24804,24836,24836,24836,24804,24803,24804,26852,26884,26884,28932,28932, +31013,28900,26788,26820,24773,24741,22693,22693,24774,26822,26822,26853,28933,31013,31013,31013, +24772,22725,20644,18563,16515,16514,14466,14466,16547,16547,18595,20644,20644,22692,22628,20547, +20546,24740,24740,22659,22659,24772,28966,28966,28998,31045,31045,33093,35206,37318,39399,39366, +39269,41318,41317,41285,45413,47558,49606,47493,45412,45413,45478,45544,45609,41481,37321,35207, +28965,26917,24804,24739,24739,24772,24772,22723,22691,22659,22691,24804,26885,26917,29031,31176, +33256,35304,35336,35369,35369,35369,35337,33289,31176,27015,24903,24903,27016,27016,24903,20710, +14502,14501,14469,14469,14436,14436,14404,14404,14403,14404,16484,16484,16484,16484,16451,16451, +16451,16484,16484,16484,16484,16484,16483,14435,16516,18596,18628,20708,20708,22756,20708,20676, +20676,20677,20644,18596,18596,18595,18595,18595,20675,24901,27047,27047,24966,22854,18693,16515, +20709,22757,20709,20644,18532,18531,16483,16451,18532,18564,18564,18564,18564,20644,20645,18596, +16516,16516,14403,14403,14371,14403,16484,16516,16484,16484,16484,16484,16452,14404,14404,14404, +14436,14436,14436,14436,14436,14404,14404,14404,12323,12323,14404,14436,14436,14436,14436,14436, +12387,10339,10339,10338,12386,12419,14499,14499,14467,14467,14434,14401,14369,12321,14369,12321, +14434,14434,14434,14466,14466,14466,14466,14466,18660,18659,16579,16547,16546,14466,14434,14434, +12290,16452,20645,22758,24837,24805,24772,24739,24739,24739,24739,24772,22724,22692,20644,20644, +20644,20644,20644,20645,20677,20709,20709,20677,18564,20677,24903,29096,31177,29064,26951,26886, +24805,22660,20580,20580,20613,20614,20646,20647,20614,20614,20581,20581,20580,22628,22627,20580, +20613,18566,18565,16485,14436,14436,14436,12420,12388,12388,14404,16452,16452,18501,18469,18468, +20515,22660,22693,22660,22660,22693,24806,24773,29031,31112,33192,35272,37320,37352,37320,37255, +37223,41383,41383,41318,41317,43398,45446,43333,41253,39140,35012,32964,32998,31014,31015,28934, +31143,31175,31143,29030,24836,22756,22723,20643,24837,20675,20611,20643,20676,20644,20676,22789, +31176,31175,29095,29062,26950,24837,22756,20676,22789,20709,18629,18661,20710,20710,18661,18597, +14501,14501,14469,12421,12388,12388,12388,14436,12356,14403,14403,14403,14403,14403,14403,14403, +14436,14436,14436,14436,12388,12355,12355,12387,12388,14468,14500,16548,16548,16547,16515,16483, +14435,14468,16516,16548,18628,18693,20773,20773,24967,24999,24999,20838,20774,18726,18693,16581, +16549,18629,18597,18597,16517,18564,18565,16516,20678,18629,20678,20710,20678,20677,20710,22823, +20775,20775,20775,20743,18662,16581,16549,16549,16550,16549,16517,14469,14437,14437,14437,14437, +14437,14436,12388,12356,12356,12356,12356,12356,12355,12355,12356,12356,12356,12355,12355,10307, +10339,10340,12420,12453,14565,18727,20840,20872,18694,18661,16581,14467,12355,12322,12322,12322, +10275,10243,10243,10243,10243,10243,10243,10243,10275,10243,10243,10243,10243,10243,8194,8194, +10275,12389,16582,18662,16549,14435,14370,14338,16483,16483,16515,18596,18629,16549,14468,14436, +16452,16420,16420,16453,16453,16485,16517,16517,14404,16485,18566,20646,20646,20614,18533,16453, +18597,14469,14437,14437,14470,14502,14470,14503,16551,16518,14470,16485,16485,16485,18532,18533, +16486,16486,16454,14405,14437,12389,12389,12389,12389,12389,12357,14405,14373,16422,16454,16421, +18500,18564,20677,18597,18565,20645,20645,18565,18564,20677,22757,24837,26886,26917,26885,24772, +31013,35175,35239,35206,35174,37222,37222,37222,35174,33029,28868,24707,24740,24805,24838,26951, +24837,26949,27014,29094,31175,31208,29127,27014,27047,24901,20708,20708,20708,18628,18628,20676, +18595,20643,18595,18595,18595,18595,18595,18596,16483,16515,16515,16548,16516,14468,14468,16548, +14501,14469,12421,12420,14469,14469,14436,14436,14436,14436,14436,14436,14468,14436,16516,16516, +14468,14468,14468,12420,12420,12420,12420,12420,12420,14500,14500,14500,14500,14467,14434,12354, +14436,14436,14468,16581,16613,18726,18758,20838,20839,18726,16581,12419,12387,14500,14501,14501, +14469,16517,16549,16517,16517,16549,16549,16517,16549,16517,16549,18630,16549,16517,16549,20743, +18694,22888,25066,27147,25034,20808,16614,14469,16582,16550,14469,14469,14437,14437,14437,14437, +12356,12356,10276,10275,10275,10275,10276,10308,12356,12356,12356,10308,10276,10275,10275,10275, +10275,10275,8195,8195,10243,10275,10275,10276,12324,10243,10243,10242,10242,10242,10242,10243, +10244,10244,10244,10244,10244,10244,10244,10244,10244,10244,10244,10244,10244,10244,10244,10244, +8196,10276,10308,10308,10275,8195,10243,10243,10242,8194,10242,10275,12388,12420,12420,12356, +12292,14340,14340,12292,12292,12292,12293,12324,16486,14406,14373,12292,12292,12292,12292,12292, +10276,8228,8228,10341,10373,10374,10374,12422,12454,12454,12421,12421,14469,14469,14501,16517, +16518,16486,14438,14437,14437,12389,12389,12389,12357,12357,12325,12324,12324,14373,14373,14372, +14371,16451,16483,14435,14403,14404,14403,12323,16484,16516,18564,18564,20676,22757,24837,24837, +22691,24836,26917,26917,26884,26917,26885,26885,26853,24804,22724,20676,20644,18628,20741,22821, +24902,24869,24868,26981,29127,31240,27015,22788,22789,18628,16515,16515,16515,14467,14435,16483, +16515,16515,16515,16483,16482,16483,16483,14435,14435,16515,16548,14468,14467,14435,14436,14468, +14436,12355,12355,12355,12388,14436,12355,12355,12323,12355,12355,12356,12356,14436,14436,14404, +14403,12355,12355,12356,12356,12388,10340,10340,12388,12420,12420,14500,14500,14500,14467,14468, +14501,14469,14469,14501,14501,14533,14533,14533,12420,12420,12420,12420,14469,14501,14469,14437, +14469,14469,14469,14437,14436,14437,14436,12356,12324,10243,12324,12356,12324,10243,10243,12356, +10275,14501,20808,22953,22953,20808,16582,14469,14469,12389,12357,12324,10276,10276,10276,10276, +10276,10276,10244,8196,10244,10244,10276,10276,10276,10244,10244,8196,8195,8195,10244,10244, +14405,14373,12292,12292,12292,12292,10243,10244,12292,12292,12292,12292,12292,12292,12293,12293, +10244,10245,10245,10245,10245,10245,12293,12293,12293,12293,12293,12293,12293,12293,12293,10245, +10244,8195,8195,8195,8196,8228,10309,10341,8228,8196,8195,10276,12388,12453,14501,14469, +16486,16454,16453,14373,12293,12292,12292,10244,12325,12325,12325,12293,12293,12292,12292,10244, +8260,6212,6212,8324,10405,10437,12518,14598,12517,12485,12453,12453,12453,12453,12453,14469, +14468,16516,14469,14469,14469,14469,14469,14469,12388,12420,14468,14469,14469,14469,14468,16516, +18564,18563,18564,16515,16515,16516,16515,14435,14402,14403,14403,16450,16483,18595,20643,20675, +16482,16546,16546,16546,16514,16514,14434,14402,16515,16547,18660,18660,16579,16547,16611,18660, +24934,24869,22756,22724,22756,22756,18595,14370,18596,18596,18596,18628,16548,16548,16549,18629, +18629,16548,16548,16515,14435,14435,14435,14436,14468,14468,14468,14468,14468,14436,14436,14403, +14435,12355,12355,12355,14435,14436,14403,12355,12355,12355,12355,12356,12356,12356,12356,12355, +14403,14403,14403,12355,12356,12388,12388,10340,12421,12421,12453,14501,14501,14500,16548,14500, +14469,14469,14469,12421,12421,12420,12452,12452,12452,14468,14469,14501,16550,14502,14438,12357, +12356,12356,12356,10276,12324,12356,12324,10275,10243,10243,10276,10276,10244,10243,10243,10275, +8195,10307,12420,14501,14501,12421,12389,12389,12356,10308,10276,10276,10244,10244,10244,10244, +10244,10244,8196,8196,8196,10244,10276,10276,8196,8196,8196,8196,8196,8196,8196,10244, +10243,10243,10243,10244,10244,12292,12293,12293,10244,10244,10244,10244,10245,10244,10244,8196, +10245,10245,10245,10245,10245,10245,10245,10244,10245,10244,10245,10244,10244,10244,10244,8196, +10244,10243,8195,8195,8196,8196,6148,6148,8261,8228,8196,8196,10308,10340,12388,12356, +14470,16486,16486,14438,12357,12357,12357,12357,10244,10276,10276,10244,10244,10244,10244,8196, +10373,8292,8259,8259,8259,10307,12387,14467,14435,14435,14435,14468,16516,16549,16549,16549, +16515,16515,16515,18563,18564,18596,18596,18596,16548,18628,18628,20709,18693,20741,20741,20741, +22788,24804,22756,22756,22756,22789,20709,20676,18563,20676,22757,20676,20676,20643,20643,18562, +18627,18627,18627,18627,18628,16580,16580,16548,14435,14467,16547,16547,16514,16514,16546,18626, +18562,20643,20643,18563,16450,16483,18563,18564,14370,14403,16484,14436,14436,14436,14436,14468, +14436,14436,14436,14468,16516,16549,16549,16581,14468,14436,14436,14436,14468,14468,14436,14436, +16515,16515,16548,16548,16548,16516,16516,16548,16581,16549,16549,14468,14468,14436,14437,14436, +16516,16484,16516,16516,14469,14469,12421,12421,14501,14501,14501,14501,14468,14468,14468,14436, +12389,12389,12389,12389,12421,14469,14501,14501,14501,12388,12356,12324,12292,12292,12292,12292, +12324,10276,10276,10276,10276,12357,12357,10276,10276,12356,12357,10308,12324,12356,12357,10276, +10308,10307,10275,10275,8195,8227,10275,10275,10276,10276,10276,10276,10276,10276,10276,10276, +10245,10245,10245,10245,10245,10245,10245,10245,8197,8197,10245,10245,10245,8197,8197,8197, +10309,10309,10277,10277,8196,8196,8196,8197,10278,10278,8230,8230,8230,8197,8197,8197, +6147,6179,6147,6147,6147,6146,6147,6146,6147,6179,6147,6147,6147,6147,6147,8195, +8194,10242,10243,10244,10244,8197,8197,8197,6149,6148,8196,8195,8195,10243,10242,10242, +10243,10276,10308,10308,10308,10340,10340,10373,10405,10373,10341,8260,8260,8260,10341,10341, +12356,12324,14371,14371,16418,14337,16385,16385,20514,20514,20547,22660,24741,24774,24774,24805, +24836,24836,26884,26884,26884,26884,26852,26852,24739,24771,24804,24804,24836,24836,24868,26916, +28964,28899,28899,28932,28965,28965,26885,26885,22692,24804,26885,26885,26852,24771,24706,22626, +18497,18497,18497,18498,16418,16418,16451,18532,20677,20612,18531,18498,20546,22626,22625,20577, +20611,20644,20676,20612,18531,18563,18564,18564,18597,18597,18597,16549,16549,16549,16550,16517, +14469,14469,14469,14437,14437,14437,14437,14437,16517,14437,14436,16517,16517,16517,16517,16516, +18562,20675,22788,20708,18595,18563,18595,20708,22789,22756,20676,18563,18563,18531,18531,18531, +18530,20578,18563,18563,18563,16483,16451,14403,14403,14435,14435,14435,16483,16450,16450,14402, +14435,14436,14436,14436,12387,12387,14435,14435,14468,14436,14436,14436,14436,14405,16453,16485, +14437,12421,12388,12356,12356,12356,10276,10243,10244,10276,10276,10244,10244,12325,12325,10244, +10275,10275,10275,10275,10276,10276,10276,8195,8195,8195,8196,8196,8196,8196,8196,8196, +8229,8197,8229,8197,8197,8197,8197,8196,8197,8197,8197,8197,8197,8197,8197,8197, +6148,6148,6148,6148,6180,8229,8229,8229,8229,8229,6181,6149,6149,6181,8230,8229, +8292,8291,8291,8291,8291,8291,8291,8291,6178,6178,6210,6210,8291,8291,8291,10339, +14403,16452,16485,16485,12324,10244,10244,8196,8196,10244,10244,10243,10243,12290,12290,12290, +8194,8195,8227,8227,8227,6179,6179,8260,8260,8292,8292,8292,10341,8292,10308,10308, +16453,20581,24806,28999,31079,31014,30949,30948,35109,35109,37190,37223,39304,39336,39304,37255, +39366,39366,39366,39334,37285,37253,37221,35141,37221,37221,35173,35172,33124,33124,35205,37285, +39301,37221,37221,39334,39367,39367,37287,37286,37286,39367,39432,39399,39367,39367,37318,37286, +37318,37318,37319,35206,33094,31014,31047,33160,33160,31046,28900,28868,33028,33028,32995,28834, +28899,24771,24739,24739,26852,26885,24773,22628,22660,20580,18499,16451,16451,16484,16451,14371, +14403,14403,14404,16451,16451,16484,16484,16483,16483,16484,18532,18532,18531,18531,18531,18531, +24738,29028,35302,33221,29028,33188,41641,50125,54319,52173,45802,35269,33123,35236,37349,37317, +33091,33092,33124,33124,31077,33190,35335,37448,31142,29029,26883,24803,24803,24771,24738,20610, +16481,16513,16513,16513,16514,16513,16482,16482,16482,16450,16482,16482,14402,16483,18564,14403, +12355,10306,12355,12387,12355,10307,12323,12356,12356,12325,12325,10245,10245,10245,10245,10277, +10276,10276,10276,10276,10276,8228,8196,8196,8228,8196,8196,8196,8197,8197,8196,8196, +8229,6180,6180,6148,6180,8229,8229,8229,8229,8229,8229,8229,8229,8197,6148,6148, +6148,6148,8229,8229,8229,6149,6148,6148,6148,8229,8261,8261,10342,10342,10342,10309, +10340,12420,12452,12485,12485,12453,12453,10404,10340,10340,12420,12452,12388,10307,14500,18726, +20742,22823,22855,22823,18629,16516,16484,14404,14371,14403,14403,14403,16451,16451,14337,10241, +10243,6147,6147,6147,8195,6147,6147,8195,8195,6147,6147,8195,8196,8196,10276,12356, +18565,24806,33225,41611,45772,45739,45674,47721,47656,47656,49736,49736,51784,49736,49736,51783, +53863,53830,51750,51750,51783,51783,49670,47590,49671,49703,51783,51783,51751,49703,49703,51751, +49670,49670,49703,49735,49735,49735,49735,49768,49768,49735,49768,51848,51881,51881,51913,56074, +53896,53896,53929,53929,53929,51881,51881,51881,49833,49801,49800,49768,49736,49735,49735,49767, +45670,45670,45671,47720,47720,45608,43463,39302,32996,33029,33093,33158,33158,31110,31110,31142, +31207,31143,29029,29029,33255,35368,31142,26884,26851,26884,28964,28932,26851,26819,26819,26851, +37317,37285,39365,41478,43623,47784,47816,47784,47751,49832,49864,51912,51944,51911,49831,49798, +49863,49864,49864,47783,47783,49864,49929,52042,52010,49929,47816,45704,43623,41542,41510,39462, +33188,29059,26914,24834,26914,31108,33286,37448,33222,26948,26883,26916,24803,20578,20545,16416, +16482,16547,16548,16515,14435,12322,12290,10242,12356,12324,12325,12293,10245,10245,10245,8197, +10244,8228,8196,8228,8196,8196,8196,8196,8196,8196,8196,8196,10277,10277,10277,8229, +6180,6180,6148,6147,6148,6147,6147,6147,8196,8196,8196,8196,8196,8196,8196,8197, +8196,6148,6148,6148,6148,8196,8228,8228,8228,10309,12389,10341,10341,12389,12389,10308, +10275,12355,14468,14501,14501,14501,12421,10340,12421,10308,10307,10307,10275,12323,16549,22855, +29161,27015,22822,22757,22757,20709,18564,16451,18564,18563,18531,18531,18563,20676,20676,18596, +10275,8196,8196,10309,10309,8196,8195,8195,8196,8195,8195,6147,8195,10244,12357,14437, +16452,18499,20580,24773,30981,35174,39367,43527,45575,47623,49703,51783,51751,51751,51751,51750, +53766,53765,51685,51685,51718,53766,51718,51718,53799,53799,53766,53766,53766,55846,55846,53798, +53831,53831,53831,53831,53831,51750,51750,53831,51750,51750,51750,53831,53863,53831,53863,55976, +57991,57959,57959,55911,55879,55879,53831,53831,51750,51750,51750,51750,51750,51750,51750,49701, +49701,47652,47620,47589,47621,47590,47590,47558,47592,47624,47656,45672,45672,43591,41575,43656, +39495,41608,43656,41576,43624,43689,43657,43624,41543,43591,43624,43592,43559,41478,41446,41414, +53929,53929,53961,51848,51816,51783,53896,56009,56009,53896,53895,55976,58089,60169,62282,64427, +58152,60329,64556,64686,64718,64686,64621,64621,64588,64588,64621,64621,64621,64654,64687,64751, +64719,64686,62638,62606,62606,60526,60493,60461,60461,60494,60494,58381,56268,56269,52010,39431, +20545,20611,20611,16418,14337,16450,18564,18597,14371,12356,12356,12356,12324,10277,10276,10276, +10277,10277,10277,10276,10276,10276,10276,8228,8196,8196,8196,8196,8196,8196,8196,8195, +8227,8227,10275,10276,10276,10276,10276,10276,10244,10243,10244,10244,10244,10244,12324,10277, +10309,10276,8228,8196,8196,8196,10244,10276,10308,12389,12421,12389,12356,12356,12356,12324, +14436,14436,14468,16549,14501,14469,14469,12389,14469,12389,12389,14469,14436,12356,14468,18629, +18596,16516,16483,14370,14370,16451,18564,18596,22790,24902,24935,27015,27015,24935,22790,18629, +14437,10276,8195,8195,8195,8195,8195,8195,10244,10276,10244,8195,8195,10276,12357,12356, +14437,16452,16452,18532,22692,26853,31013,35206,39367,41415,43495,43495,45543,45543,47656,49736, +49670,49670,49670,49670,49670,49703,51751,51784,51751,49638,49605,49605,49606,51686,51686,51685, +51750,51718,51718,51718,51717,49605,51685,51718,51685,51685,53734,53766,53766,53733,53733,53733, +60006,57893,57861,55813,55814,53798,53766,53766,55944,55911,53799,51718,53798,53798,51718,49669, +49668,47620,47588,47589,49637,49670,51719,51752,51752,49704,49703,49735,47655,45574,45606,45638, +43493,47654,47687,47654,45574,47654,47687,47687,47687,49735,49768,51848,53929,53961,51881,51848, +60138,58025,55912,53832,53831,55880,55880,55879,58024,55944,55944,60105,60137,60137,60137,60169, +58119,58151,60199,58151,58119,56006,56006,55973,56038,56038,56038,56038,56038,56039,58119,58152, +58217,56136,56104,56103,56104,56136,58217,58217,58185,60331,62444,60331,60299,62476,60363,49832, +45738,41643,37417,28966,22659,20579,18499,14338,16451,14436,14436,12388,12388,10340,10373,12389, +10309,10309,12357,10309,12357,10309,12357,10309,10276,10276,10276,10276,10244,8196,10244,10243, +10243,10243,12291,12291,10242,10242,12291,12291,12291,12291,12291,12291,12291,12291,12291,12291, +10243,10244,10243,10243,10275,10275,10243,10243,10243,12323,12356,12356,14436,14469,14469,14436, +16516,16484,14403,12323,12323,12324,12324,12356,12324,10276,12324,12356,12356,12324,12323,12323, +14403,16483,16484,16451,16451,16516,20710,24903,27048,29194,33355,33387,33355,29161,24935,20710, +14469,12357,10243,8195,10244,12357,12389,12389,12357,14470,14470,12357,12357,12389,12389,10244, +12357,12356,14437,16485,18532,18499,20546,22595,26788,28836,28868,30915,30948,35109,39335,43496, +45608,47655,47688,49768,49769,49769,51850,51849,49736,49736,49704,49703,51719,51719,51718,51718, +49670,49637,49637,49637,51685,51653,51685,53766,55814,55814,55847,57895,57862,55782,55749,55717, +55716,55683,53635,55748,55814,55846,55846,53766,53767,51654,47492,47492,49605,51718,53831,53831, +51717,51749,53798,53798,53799,53799,53799,53799,53799,53799,53799,55879,55879,53831,53831,55911, +55943,55911,55878,53798,53830,55911,53831,53798,53831,53831,53831,55944,55977,58057,58057,55977, +51654,51654,53767,55847,55880,55880,53799,53799,51718,53799,53832,55912,55977,58057,55977,53863, +53894,53926,53926,53926,53926,56006,56006,56038,53925,53925,53925,53925,55973,55973,53925,53925, +51781,49700,47620,49668,49700,51813,53894,53894,53926,47588,49668,51814,51814,51813,53927,53993, +47754,47820,45772,41579,41579,39531,35338,29096,22790,20741,16581,14500,12420,10372,10372,10373, +10309,10277,10277,10277,10244,10244,10276,10276,10244,10276,10276,10276,12356,12356,14469,14469, +16517,18532,18532,16451,16387,16387,16387,16419,16387,16419,16419,16419,16419,16387,16387,16387, +14403,12323,12323,12323,12323,12355,12323,12355,14403,14404,14435,16516,20710,22855,24936,22855, +22823,22790,20678,18598,18630,18630,18631,18631,16583,16518,14438,14470,16550,18631,20743,20775, +22823,20710,18629,18629,20742,22823,22790,20710,20677,20710,20678,18629,20677,20677,18629,18597, +16485,16518,16550,18631,20744,20776,18695,16583,18695,20808,20808,16615,16615,16647,16615,12422, +12389,10309,10309,10276,10243,10242,12290,14338,12288,14336,16385,18433,18434,22595,24773,28933, +35142,37254,39367,41480,43593,45641,45673,45674,43495,45608,47689,49736,49703,49703,49671,49703, +51783,51750,51750,53798,53798,53798,55847,57927,57960,60008,60008,59976,59976,59943,59879,57798, +55683,55683,53635,55716,53669,51588,47395,43202,36896,36864,34816,36928,41154,45380,49574,51654, +53734,55782,55814,55814,55782,53702,53670,53637,53604,53604,55685,57765,59845,59845,59845,59845, +59909,57796,55715,55683,55748,55781,55748,53636,57894,55846,55846,55814,53734,53733,53734,53734, +47526,49639,51719,51752,49671,49703,51784,53897,51817,49736,47590,43397,43429,45575,47655,45575, +45606,47686,47719,47718,47686,43492,41346,39233,41379,43427,45540,47653,49733,49766,49766,49734, +51879,49799,49735,49734,49767,49767,47654,47621,49767,45573,47621,49767,49734,47621,47654,47687, +43528,41514,41514,41514,39499,39531,35370,31209,29161,27048,20839,16645,12484,10404,10404,10372, +12357,12357,12325,10277,10244,10276,10276,10276,10244,10276,10276,10243,10243,10275,12388,16516, +22758,24806,24838,24806,24806,24806,26886,26919,26919,26919,28967,28999,28999,28999,28967,26919, +24903,22823,18661,18596,16548,18564,18564,18564,16483,16483,14402,16451,18564,20709,22789,20709, +18532,18532,18532,18532,18533,16484,14404,12324,12324,12292,12292,12292,12324,14405,14405,16452, +14404,16451,16452,16484,16516,16517,16517,16516,16517,16517,16484,14404,16484,18597,18630,18630, +18630,18631,18663,18631,18631,16550,14470,12357,10276,10276,10244,6146,6146,8195,8195,6147, +8261,8261,8261,10309,10309,10244,10243,12323,12290,12290,14339,16419,16419,16419,16419,18499, +18433,22561,24675,26820,28933,31014,31013,31013,33028,35142,39335,41415,43462,43462,45510,47590, +49702,49669,49670,51718,51686,51685,51686,53766,55815,57863,57863,57863,57863,59911,59879,57830, +59910,57862,57894,59975,57927,55815,49541,45380,49574,47526,47559,49672,51817,53930,56011,55978, +55880,57896,57896,55848,57896,55848,55815,55815,59976,59943,61991,64071,64071,64006,63941,63941, +59844,59876,59876,59876,59877,59909,59942,59974,57862,57895,57895,55847,55847,53767,53799,55879, +43528,37254,32995,32995,35173,37318,37286,35173,35238,33125,33093,31045,31077,28996,28931,26819, +28931,26851,26787,26786,26786,28899,31012,33093,37351,39431,41512,41544,41511,39431,39366,37286, +37319,35173,30948,28867,30947,33093,37254,37319,37286,39399,41512,39399,39367,41512,39399,33028, +30949,28869,28836,26788,26821,26886,26918,24870,24935,22855,18694,14533,12452,10372,10404,10373, +12390,12358,12358,12358,14438,14470,14470,16550,14469,14469,14436,12356,12355,12355,14500,18629, +22757,24837,26950,29031,29063,31112,33224,33257,35305,35305,35305,35305,35305,35305,35305,33257, +31242,29161,27048,27016,27015,24935,24870,22789,18563,18563,16450,16385,16385,16450,18531,18563, +22724,22724,22693,20677,20677,18597,16484,14372,14339,12324,14372,14372,14372,12291,12290,10242, +8193,10242,12291,12291,12290,12290,14372,16485,12291,12323,14371,12323,12323,14372,14372,12324, +18598,18598,16518,14404,12292,12291,10243,10243,10276,10243,8195,8194,6146,6146,8195,8195, +4099,4100,6148,8261,8228,6147,8195,8195,14469,14437,14469,16517,16549,18630,16549,18565, +16418,16386,16386,16386,16386,18466,18466,18434,24707,26820,30981,33061,35141,37221,41382,43494, +45509,47524,47525,47525,47525,47492,47492,49573,49573,51621,51622,51653,53734,55847,57896,55815, +57960,57960,57992,60106,60138,58058,53898,51785,47657,47657,47657,47658,47690,45609,45577,45512, +47559,47559,49639,51752,53897,56010,58090,58090,60105,60072,62088,62087,64103,64038,63973,63973, +59877,59909,59942,59942,59974,59975,60008,60040,60073,58025,58026,58058,56010,55978,53898,53897, +18433,20545,20546,18465,16384,14336,16385,16450,16449,12288,14336,18563,18628,16515,14434,16482, +18532,16484,16451,16451,18532,20612,20644,22725,24806,26918,29031,28998,26885,22691,20579,20546, +18499,18434,18434,18467,20579,20580,20579,18466,20579,18466,18434,18466,20546,22659,22691,20546, +20514,20482,18434,18467,18467,16419,16419,16484,14371,12323,12323,10275,10307,10340,10372,12421, +12357,12358,14438,14470,16551,18663,18696,20776,20776,20775,18695,18662,18662,18726,22887,25000, +27015,31143,33257,33289,35369,35369,35370,35370,33224,33224,33192,31143,31111,31111,31111,31111, +29096,29128,31209,33322,33354,33322,31176,29095,29063,29095,29063,26950,24869,26982,31176,33257, +31143,29063,26950,24902,24870,22790,20677,18597,14403,14371,12290,10242,10241,12290,12290,12290, +14403,12291,10242,10242,12290,12291,10242,10242,10243,12291,12291,10243,10243,10243,12291,12291, +12291,14405,16518,16485,14405,14405,12356,12324,10243,8195,8195,8195,8195,6146,6146,6147, +6148,4100,4099,4099,4099,4099,6147,8195,8195,8195,8195,12356,14502,18727,22888,22889, +24936,22791,18565,16452,14371,14371,16386,16386,18466,18466,20514,24642,26754,30947,35141,39269, +45542,47557,47558,49638,49638,47558,47558,49638,47558,49638,49638,49638,53799,55945,56010,56009, +58090,55978,53864,47591,43398,37124,32898,28705,24577,24577,24578,24578,24578,24610,22530,22529, +22528,24576,26689,32995,39334,43527,45639,45607,49767,49734,51750,55878,60007,60007,62022,62055, +62120,60040,57959,57992,60105,58057,56009,55977,51816,49704,45576,43495,41382,37189,32963,28802, +14403,12322,12322,12322,12322,12355,12355,10307,10307,10307,10340,10340,8291,8259,8291,10372, +10309,12357,12357,12389,14438,14470,14470,14437,14404,14404,14437,16517,16517,16517,18565,16517, +16517,14437,14405,14405,14404,12356,12324,12324,12324,12324,12323,12323,12291,12291,12291,12291, +12290,12290,12290,12290,12290,12291,12291,10243,10243,10243,10243,10275,10275,10276,8227,8196, +10245,10245,10245,12325,12325,12357,14437,14469,16582,18662,18662,18662,16581,16614,18694,20806, +27015,26983,29063,29096,29095,26983,24837,22724,22723,24869,29030,26950,22723,18530,18465,18497, +18498,20644,22789,24902,24902,24869,24837,24837,24869,24869,24869,24869,24837,24837,24804,24804, +29062,26982,26949,24837,22756,20676,18564,16483,16483,16483,16548,18629,20709,20709,20709,20709, +20710,18630,18597,16485,14372,12323,12291,12323,12324,12324,10243,10243,10243,10243,12324,12324, +14405,14373,14373,14405,14405,14405,12357,12357,12357,12356,10308,10308,8228,8227,8227,8195, +6148,6180,6180,6180,6148,6147,6147,6147,6146,6147,8195,10243,8194,8194,14469,20808, +20808,20775,16549,12323,12323,12291,12290,12290,16387,16386,18466,20514,20480,20480,24674,33028, +45543,49671,49703,49671,47591,47623,47623,47623,47655,47687,47720,47688,45607,45574,45639,49833, +43462,37156,32931,30883,28802,24642,22562,22595,18434,18434,18434,18434,16386,16386,16386,14337, +16385,14336,14336,14336,18496,20608,22689,26849,26816,28896,37218,45573,51846,53927,55975,56008, +53961,51881,51881,49801,45575,37188,32995,32995,26689,24641,22561,20513,18433,18433,18433,16385, +10308,10276,8228,8228,10308,10308,8260,8260,8228,8260,8293,8325,8325,8325,8293,8325, +8261,10277,8229,10277,10309,12358,12357,12357,12325,12357,12357,12357,12357,12356,12324,12324, +12357,10309,10277,10309,10309,10341,10341,10309,10276,10276,10276,10276,10276,10276,10276,10276, +8195,10243,10243,10243,8195,8195,8195,10244,10244,10244,10244,10244,10244,10244,10244,10244, +10245,10245,10245,10245,12325,12357,14437,14437,12356,14437,14469,14468,14436,12388,14468,14468, +16548,18596,20676,20709,22789,20708,18563,16450,14336,16417,18530,18530,16450,16417,16417,16449, +14337,16418,16450,16450,16450,18498,18531,20643,22756,24837,26950,29030,29063,26982,24869,24836, +22755,22723,20675,20708,20740,22789,20741,20741,24967,27048,27113,29193,29161,29160,29161,29193, +29162,29194,29195,27114,25001,20808,18695,18662,16582,16582,16582,14502,14469,12389,12357,12357, +14405,14405,14405,14405,12357,12357,12357,12357,12389,12389,10341,10340,10309,10308,10341,10341, +10341,10308,8260,8260,8260,8260,10308,10308,8228,8195,8194,8194,10242,10242,8193,8193, +10242,12291,10243,10243,12356,14404,14372,14404,14339,14338,16418,18499,20546,22627,26884,35206, +41382,43430,43430,43430,43430,43462,41382,39301,41414,37253,35140,33059,30979,30979,31011,33092, +30947,26754,24642,22626,22627,20547,18466,16419,16451,16452,14372,14372,14372,14372,14372,14371, +14402,14434,16514,16514,16513,16481,16448,16416,20544,22592,26720,30912,39331,47719,51880,49832, +43559,37286,33093,30980,26787,22593,20513,20546,18465,16418,16418,14370,14403,12355,12323,12323, +10309,10309,10277,10277,10309,10309,10309,10277,8197,8229,10309,10342,10342,10342,10309,10309, +12390,12357,12357,12325,12357,12357,12357,12356,14437,14437,14437,14404,12356,12324,12324,12323, +10276,10276,8196,10276,10276,10308,10308,10308,10276,10276,10276,10276,10276,10276,10276,8228, +8196,6148,6148,6148,8196,8196,8196,8196,8196,8196,8196,8196,8196,10244,10244,10244, +10244,10244,10244,10244,10244,10276,12324,12356,14437,14501,16582,16582,14501,14469,14468,14468, +14436,14435,16516,16516,16548,16515,14402,12322,12289,12289,12289,14369,14369,14369,14369,14402, +14369,14370,14338,14337,14337,14337,16450,18531,18531,20676,24870,27015,29063,26982,24869,22756, +20675,18595,18563,18595,18660,20741,20741,18661,20741,22887,24999,24967,22854,20773,22821,24902, +27081,25001,24968,20775,18662,16549,14469,14469,14437,12389,12389,12389,12389,10309,10276,10276, +10244,12292,10244,10244,10244,10244,10244,10276,10276,10276,10276,10308,10309,10341,10341,10341, +10341,10340,10308,10276,10308,10308,12389,12421,12421,12421,12388,14468,18662,20774,20742,18661, +18629,16549,14436,12323,14404,12323,12291,12323,18597,18564,18564,20645,22725,24805,29031,35304, +43561,43528,43496,41448,41480,41480,37287,33125,31012,28931,26851,26850,24770,22689,22689,22722, +22658,20579,20546,20579,20612,20645,18597,16517,16549,14501,14470,14469,14469,14502,14502,16582, +14339,16419,16418,14337,16384,18433,20513,22560,24608,24576,24576,26624,37090,47623,49703,43494, +28932,22691,18530,18530,18530,16450,14402,14402,14403,12387,12388,12420,10340,10340,10308,8260, +10310,10309,10310,10310,12358,12358,12325,12325,12325,12325,12325,12325,12325,12325,12325,12325, +12356,12356,12324,12324,12356,14436,14437,14469,14436,14404,14404,14404,12323,12323,12291,10243, +12356,10276,10275,10275,10275,10276,10275,10275,10243,10243,10276,10276,10276,10276,10276,10276, +8228,6213,6181,6181,8229,6181,8229,8197,8197,8196,8196,8196,8196,8196,10244,10244, +8196,8196,8196,8196,10244,10244,10244,10276,12324,12357,12389,12421,12389,12356,12356,12356, +14501,14469,14469,16549,16549,16549,14468,14468,20774,20742,18693,20773,22854,22886,22854,20773, +22822,22822,22822,22822,22790,22790,22822,22822,22822,24903,29096,29128,29128,27015,24870,22757, +18660,18596,16547,16515,16548,16548,14467,12355,16581,18694,22854,22854,20741,20708,20708,22789, +18661,16581,14468,12323,10242,10242,10242,10243,8195,8195,8195,8195,8195,8195,8195,8195, +8195,8195,8196,8195,8196,8195,8196,8196,8196,8196,8196,8196,8228,8228,8261,10309, +10308,10308,10276,8195,10276,10276,10309,12389,14502,14501,14469,14403,14435,18629,22790,20741, +24935,24935,22855,22823,22888,22823,20743,22823,20710,18597,18597,20677,24838,26951,29096,33257, +35207,35174,33061,30981,31013,31013,26852,24706,22625,24771,26917,29062,26949,24836,22755,24836, +22724,20676,18564,16483,16516,16549,16549,14469,14534,14534,14502,12454,14502,14502,14535,16582, +24839,26919,26822,22596,22530,24610,26690,28705,28705,32898,39204,45511,51818,51850,45478,32963, +26917,20708,18595,18596,18628,16580,14500,14500,12420,12421,12421,10373,10373,8325,8325,8293, +12325,12325,12325,12325,12325,12324,12324,12324,14340,14372,14340,14339,14339,16388,16388,16387, +14339,12290,12290,12322,14371,16484,16517,18597,16516,16516,16516,16516,16516,16484,14436,14436, +14436,14436,12355,12355,12356,12356,12324,12323,12324,12324,12324,12324,12324,12324,12324,10276, +8261,8261,8261,8261,8229,8229,8229,8229,8196,8196,8196,8196,10244,10244,10244,8196, +10244,10244,10244,10244,10244,10276,10276,10276,8195,8196,8196,8196,8195,8195,8195,8195, +10276,10308,12357,12389,14469,14502,16550,16582,18662,18662,18694,22888,25033,27113,25033,24968, +22887,22888,22888,22888,22887,22855,22855,22855,24968,24968,27016,24968,22855,20709,18596,16483, +14436,14436,12388,14436,14468,14469,12356,10275,10243,12323,14435,14435,16483,16483,16483,16515, +14435,16516,16548,16549,16581,16581,14501,14469,12421,12388,10308,10276,8228,8196,8196,8195, +8196,8196,8196,8196,8196,8196,8196,8196,8196,8196,8196,8196,8196,8228,10277,10276, +10276,10276,10276,10244,10244,10276,10276,10276,12389,14437,14436,14403,16483,20676,20709,20676, +22757,24870,24903,27048,29194,27081,24968,24969,24936,20743,20678,18597,20645,20645,20677,22725, +20578,20546,18465,18465,20546,20578,20578,20546,22724,24804,28998,29063,29030,26917,24837,24837, +24837,22789,20677,18597,18597,16549,14469,12356,12389,12389,12389,12389,12389,12388,12389,14436, +20581,28870,35177,39337,43498,45578,49674,49641,51722,49641,49640,49673,51753,49673,45511,41416, +31144,24967,20709,16548,14435,14435,14436,14468,12388,12388,10340,10340,10309,10341,10341,10341, +10276,10276,12324,12324,12291,12291,14339,14371,14339,18500,18500,18467,18435,18467,20515,18467, +20677,18629,18597,16516,16484,16484,16516,16549,16549,16549,16549,16581,16582,16582,16549,16549, +14468,14468,14436,14436,14436,14436,14437,14436,12356,12356,12357,12325,12325,12325,12325,12357, +10277,8229,8229,8229,8229,8228,8228,8228,8196,8196,10276,10276,10276,10276,10244,8196, +8196,8196,8196,8196,8196,8196,8196,8196,8196,8196,8196,8196,8196,8228,10276,10276, +8196,8196,8196,10244,10276,10277,12357,12357,10276,12324,12356,16549,18695,20775,18695,18662, +16581,16549,16549,16517,14468,14468,16517,16517,16517,16516,16516,14435,14403,12322,12290,10242, +10243,10244,10276,10309,12357,12389,10309,10276,12389,12388,12356,14404,14435,16483,16483,16451, +12322,12322,12355,14435,16549,16581,16614,16646,16614,14534,12421,10308,10308,8260,8228,8196, +8196,8228,8197,8228,8229,8229,8229,8229,8229,8196,8197,8196,8196,8196,8196,8196, +10244,10244,10244,8196,8196,8196,8196,8196,10244,12292,14404,18597,24903,27016,26983,22789, +22691,22691,20643,20644,22757,18596,16483,18564,22823,20710,18597,16484,16484,16484,16451,16451, +16451,16482,18531,18563,20676,24870,26983,29031,26918,24773,22628,20579,22660,22627,20547,20547, +20579,18563,18564,18597,18629,18597,16517,14437,12324,12356,12356,12356,10276,10275,12323,14371, +22725,28967,37321,43595,47724,49772,51787,51754,49673,49673,49673,49737,45544,39270,32996,28900, +24837,20741,20709,18628,18596,16516,16548,16548,18629,16581,14469,14437,12356,12356,12356,12356, +12420,12420,12419,12387,12355,14402,16483,16483,20676,26950,29063,29031,28966,28933,26853,24772, +27016,24968,22888,20742,16549,14468,14436,14468,12388,12389,14469,14501,14469,12421,12389,12357, +14469,12389,12388,12388,12357,12389,12357,12357,12357,12358,12326,12326,12326,12326,12326,12326, +10245,10245,10245,10245,10244,10244,10244,8196,10244,10276,10276,10308,10308,10308,10308,10308, +8228,8228,8228,8228,8196,8196,8196,8196,8196,8196,8196,8196,8196,8197,8197,8197, +10245,10245,8197,8197,8196,8196,8196,10244,10244,10276,12324,12357,14437,14469,14469,14469, +14437,14437,12356,12356,12356,12356,12356,12356,10243,10243,12290,12290,12290,12323,12323,12324, +10244,10277,10277,8229,8229,8229,10277,10309,12390,12357,12356,12356,14404,14404,16452,16451, +14435,12354,10242,10242,12323,14468,14501,16582,14534,12453,12421,10340,10340,10340,8228,6180, +6148,6148,6148,8196,8197,8196,8197,8197,8197,8196,8197,8196,8196,8196,8196,8196, +8196,8196,8196,8196,8196,8196,8196,8196,10244,10243,12291,16484,20677,20677,20612,20579, +22658,22625,18497,20578,20611,18498,16418,18532,14371,14339,14371,14404,18565,20678,20710,20710, +16548,16580,16580,18660,20742,24903,26984,26983,24806,22693,22628,22596,22596,22563,22564,22596, +20547,16418,16419,18532,18532,16451,14404,14436,14436,14436,14436,14404,12323,12355,14404,16516, +16483,16514,20676,28998,35239,37319,41448,45641,43528,41415,37221,33060,28963,26883,24835,22787, +18530,20611,22724,22757,22789,22757,22757,20677,22790,22790,20710,20678,18565,18533,16453,16452, +14565,14533,14532,14500,14467,16515,18596,20676,31208,37547,43821,43788,41642,39497,35303,31111, +24935,22888,22823,18662,16549,14436,14436,14436,16517,16549,16582,16582,16582,14502,14469,12389, +12389,10308,10308,10308,10276,10276,10244,10244,10277,10277,10277,10278,10245,10245,10245,10245, +10245,10277,12293,10245,10245,10244,10244,10244,10277,10276,8228,8228,8260,10308,10341,10341, +10341,10309,10309,10309,10309,10276,10276,10276,10276,10277,8229,10277,10277,8230,8229,8197, +8197,8198,8197,8197,8197,8197,8197,10245,10245,8196,8196,8195,8195,8196,10244,10276, +10244,10276,10276,10308,10308,10276,10243,8195,10276,10276,10276,10276,10276,10276,12324,10276, +10277,10277,10277,8197,8196,8196,10277,12357,10277,12325,12356,14436,16517,18630,20710,22823, +22855,20806,20774,20774,20775,20774,18694,16646,18695,16614,14534,12453,12453,12421,8260,8196, +6148,6148,8196,8196,8196,8196,8196,8196,10276,10244,10244,8196,8196,8196,8195,8195, +10243,8196,8196,8196,10244,10244,10277,12325,14405,14372,16419,16451,18466,18434,22659,28933, +28867,30947,31013,33191,33224,26918,20612,20612,18564,18564,16484,16484,16484,16484,16452,14403, +14533,14533,14500,14468,14468,16549,18565,18500,26952,31145,37419,39467,37354,37289,37322,41547, +33192,26950,24805,22725,20612,16451,16451,18597,16516,16516,16516,14436,14403,14403,16516,18629, +16580,14434,14434,18595,22723,22658,24706,28899,33125,31077,28964,24803,24900,29158,27110,24965, +22821,24837,22757,20677,20677,20677,20677,20645,22725,20710,22758,22758,22758,20678,22726,20678, +14469,14469,14501,14501,16581,18661,22822,24935,29128,31176,33256,33256,33223,33158,28996,26884, +18531,16484,18564,18596,18532,16451,18564,22757,24870,22757,20677,20710,22791,20743,18630,14469, +14469,12388,10308,10276,10308,10308,10308,10276,12357,10277,10277,12357,12357,10277,10244,10244, +8197,8197,8197,8230,8230,8229,8262,10342,8229,8262,10342,10407,12455,12455,10406,10374, +12389,12357,12357,12357,12357,12357,12357,12324,10277,10277,10277,8229,8229,8197,8197,8197, +8197,8197,8197,8197,8197,8197,8197,8197,8229,8229,8197,8197,8197,8197,6149,8229, +6148,8196,8229,8229,8229,8229,8229,8228,8229,8228,8228,8228,8229,10309,10309,10309, +12324,14372,14404,14405,14405,14404,14404,12323,14436,16484,16516,18596,18596,18629,20709,20741, +20741,20774,20774,18694,18661,18661,16581,16581,16582,14469,12356,10275,10244,10243,10244,8195, +8195,8195,6146,8194,10243,10275,10243,10243,10242,10242,10242,12290,12290,12290,12290,12290, +10242,12291,14404,14437,14437,14437,16485,16517,20645,20580,20547,22594,26755,33028,39302,43527, +45543,49737,49802,47755,43562,39401,31079,26886,20613,18564,16484,16484,16484,16484,16452,14404, +14469,12422,12389,12357,12324,16485,20711,24904,31178,31177,35305,37386,37320,33094,33094,35207, +33192,31176,26950,20611,18563,22757,22790,20709,24968,22887,20742,18662,16581,16581,16581,16581, +18661,18629,20709,22822,22822,22757,20676,22724,22757,22789,24869,24902,24902,24902,22854,22822, +20742,20710,18629,16517,16484,16484,16452,16452,16517,16517,16517,16517,16485,14437,16485,16485, +14469,14469,14469,14436,14436,14436,16483,16483,18531,18563,20611,20578,18497,18465,20512,20545, +18564,18532,18531,18532,20612,22724,29030,33257,31144,33257,35370,33290,27016,22758,18565,14436, +16582,16614,14566,14501,12356,10275,12356,12388,12324,12324,12323,12324,12324,12324,12356,12356, +14438,12357,10245,10277,12357,12389,10309,10276,12422,12422,12454,12454,12454,12454,12422,12422, +14502,14502,14502,16550,16549,14469,12356,12324,12324,12324,10244,10244,8197,8197,8229,8229, +8229,8196,8196,8196,6148,6148,6148,6148,6148,6148,6148,6148,6148,6148,6148,6148, +6148,6148,8196,8196,8196,8196,8196,8196,8228,8196,8196,8228,8229,8261,8261,10276, +14469,16517,18598,20710,20743,22823,22855,22855,22823,22823,22854,22855,22854,22854,22822,20774, +20741,20774,20774,18662,16581,16581,16582,16581,14469,12356,10243,10243,8195,10244,10277,12324, +12356,12421,14501,14469,12356,12323,14404,16516,22823,22822,22758,20677,20644,18564,20612,20644, +18629,16549,16484,14404,14404,14436,16485,18532,22725,26919,35240,41514,45674,45673,45607,45542, +51817,47624,41318,37125,30916,28868,26853,26886,20645,18597,18565,16516,16517,16516,16484,14436, +14437,12357,10276,10244,10244,12292,14404,16484,14339,16386,18467,20547,22594,20481,22561,24707, +31111,31111,26918,22660,20612,24838,24903,24871,20742,18661,16549,14468,14436,14469,14469,14469, +14436,14436,16516,18629,18630,18629,18630,20710,18597,18629,20677,20677,20677,18596,18564,16516, +16517,14469,14437,14405,12356,12356,12356,12356,12356,12356,14405,12356,12356,12356,12356,12356, +10276,10308,12356,10308,10276,10243,10242,12290,14403,18563,20676,22724,22756,24837,29063,33256, +29096,29096,29064,29063,26951,26918,26885,26918,26917,29030,29063,26951,22725,18531,16451,16484, +12355,14436,14468,14436,12355,14403,16516,18629,22855,22823,20742,18597,16484,16484,16484,18532, +18564,18532,16451,16419,16451,16451,14371,14338,16451,16451,14403,14403,14403,14403,14435,14435, +14501,14501,16549,16581,18629,18629,16549,16516,14436,14436,14404,12356,12324,10276,10276,10276, +10244,10244,10244,10244,10244,10244,10276,10277,8196,8196,8228,8228,8228,8228,8228,8196, +10276,10243,10243,8195,10243,10243,8195,8194,10243,10243,10243,10243,10275,10276,10276,12324, +12323,14372,14436,16517,18597,18629,18630,18630,22823,20775,20775,22823,22823,20774,18661,18629, +16581,18662,16581,14501,14436,14436,12389,12388,12324,12356,12357,12357,12390,12422,12422,12390, +12389,14501,14534,14534,14501,14501,18630,20743,27081,29226,35468,37581,37581,35467,33290,29161, +22855,20742,16549,14436,14404,14436,14437,16484,20645,26919,31144,37353,41513,43561,41447,39334, +35108,32995,30980,31045,28965,22724,18531,16483,20774,18726,18726,18726,18727,18759,20807,20807, +18694,18662,18662,16582,16550,16549,14469,14436,16517,16517,18597,20677,22725,22725,24837,29031, +28999,28967,24774,20548,18467,20613,22694,20645,16452,16452,14372,12292,12324,12324,12357,12357, +12356,12324,12324,12356,14404,12356,14404,14436,14436,14436,14436,14404,14403,14371,12291,12291, +12324,12324,12292,10244,10244,10244,10244,10244,10243,10244,10244,10276,12292,10276,12324,12324, +8196,8228,10276,10308,10276,10276,10275,12323,12291,14403,16516,16516,16451,16483,20644,22789, +22790,24870,26983,29064,29063,28998,26885,24804,20578,18498,18466,16418,16418,16418,14338,14338, +14403,12322,12290,12322,16516,18628,18629,18628,20709,22757,20709,18596,18531,16451,18499,18498, +26885,28966,28998,26885,24772,22691,22724,24772,20578,18530,18498,18498,16450,16450,18498,16482, +14435,14435,14403,14403,16483,16515,16515,16515,14402,14402,14403,14403,14403,12323,12323,12323, +12290,12291,10243,10242,10242,10243,10243,10243,10243,10243,10243,10243,10243,10244,10276,12324, +12323,12323,12323,14403,14436,16516,14436,14403,14403,14371,12323,12323,14403,14403,14403,14403, +12323,12323,14404,14404,14436,14436,14404,14404,16549,16517,16517,16549,18630,18629,16549,14468, +14468,14501,14436,12356,10275,10275,10243,10243,10276,10308,10309,12389,12390,12390,12390,12422, +14502,12389,10276,10308,12388,12388,12356,12323,12290,14436,20677,22855,24935,22855,22790,20677, +20742,18662,18630,16582,16582,16549,16517,16485,18597,20678,22725,22660,24739,30981,33093,33061, +28932,28964,28997,31110,29095,24934,20806,18725,16645,16645,14565,14565,14565,16645,16678,18726, +18693,18661,18661,18629,16581,14468,14436,12356,12356,12356,14436,14436,14436,14436,16517,20677, +22726,22694,20549,16387,16387,16387,16388,14340,14340,12292,12292,12292,12292,12325,12325,12357, +12389,12356,12356,10276,10276,10243,10243,10243,12324,12324,12324,12291,12291,12291,12291,10243, +10244,10244,10244,10244,10244,8196,8195,8195,8196,10244,10244,10244,10244,10244,10276,10276, +8261,10309,10309,8261,8228,8228,10244,10276,12356,14437,14437,14436,12356,14404,16517,18629, +18596,20644,22725,24805,26918,29031,31111,31111,26885,24837,26918,29063,31209,33290,31177,27048, +24935,22822,20709,20677,20709,22789,22757,22756,24837,26983,31144,31176,31176,33257,35337,35336, +35304,37417,39497,37384,35271,33223,33223,33256,31143,31143,29063,29062,26982,26982,26950,24902, +24934,22854,22821,20741,22756,22756,22756,22724,20643,20675,22756,22789,24837,22789,22789,22757, +20677,20677,20677,20677,18597,18532,16452,16451,14339,12290,12290,12290,12290,12290,12291,14371, +16483,18531,20611,22757,24870,26983,26950,24902,22757,22724,20644,20643,20611,18563,18531,16483, +18629,18662,18662,18694,20742,20742,20742,20742,14436,14436,14404,14436,16517,16549,16517,14468, +12356,12388,10275,10243,10243,10243,10275,8195,10276,8196,8196,6147,6147,6147,8229,10309, +14567,12453,10341,12421,16647,20808,18728,18662,16550,14436,12290,10242,12290,14371,16484,18564, +16484,16549,18630,18662,18662,16582,16582,16550,18630,20743,22758,20645,22692,24805,26853,24739, +26852,29030,29062,24901,22821,22853,20774,18693,14500,14500,12419,12387,12387,12387,14467,14467, +16515,16514,16514,14434,12354,10274,10242,8194,10275,10308,10341,12389,12389,10308,10308,12356, +14372,14372,14340,14340,14340,14372,12292,12292,12292,12293,12293,10277,10277,10277,10278,10309, +10341,10341,10341,10341,12389,12389,10341,10309,10276,10276,10276,10276,12324,12324,12324,10276, +10276,10277,10277,10277,8196,8196,8196,8196,8196,8196,8196,8196,8196,8196,8196,10277, +8229,8229,8229,8196,6148,8196,8228,8228,8195,8195,8196,10276,12389,16583,20808,25001, +24936,24903,24838,22757,22725,22757,24805,24805,33257,31209,31144,26983,24838,22725,20644,20644, +27048,27048,27048,26983,24902,24870,26982,29063,31143,33289,35369,35369,35337,35336,35304,33191, +33223,35304,33224,33191,33224,33256,33224,29063,29063,29095,29096,29096,29128,29128,29128,29128, +29160,29160,31241,31241,31240,31208,31143,29062,31142,31142,33223,33255,33255,33223,31143,31143, +31176,31176,33225,33257,33257,31177,31144,29064,26919,24870,24838,22757,22725,22725,22758,22757, +26917,26917,29030,31111,31175,33256,33224,31175,31111,29062,26949,26917,24836,24804,22723,22691, +16483,16515,16516,16516,16516,16516,16516,16516,16516,16484,14404,14404,14404,14404,14372,12323, +10243,10243,10243,8194,10243,10276,10276,10275,8195,8196,10276,10309,10244,8196,8196,8196, +6146,6146,6146,8195,10308,14501,16582,16582,20775,18663,18630,16517,16516,14404,14403,14371, +12290,12355,14468,14469,14469,14469,14502,14502,16550,18663,20743,20710,20677,20645,20579,16386, +20611,26950,31176,27015,24902,22854,20741,14467,14435,14467,14468,16516,16548,18596,20677,20709, +20708,18627,16515,16482,14435,12355,10307,10275,8195,8228,10309,10341,10341,10309,10309,10309, +10244,10243,10244,12324,12357,12357,10277,10276,10277,10309,10309,10309,10310,8261,8261,8262, +8261,10341,10342,10341,10341,10342,10341,10309,10309,10309,10277,10277,10277,10245,10245,10277, +8229,8229,8229,8229,10277,8229,8197,8229,8197,8229,8197,8197,8197,8196,8196,8197, +6148,6148,6148,6148,6148,6148,6180,8229,8229,8229,8229,8229,10309,12422,14568,18728, +16549,18597,18597,18564,16451,16451,16419,14338,18531,18531,18499,16419,16419,18532,20709,24903, +20709,20709,22789,22757,22757,22789,26982,29095,31176,33289,33256,31110,28965,26884,24771,20578, +22692,22724,20644,20612,20677,22790,20677,16516,14371,14371,14404,14436,14469,14469,16550,16549, +20709,22789,24902,29063,31175,33223,33223,33190,33222,35270,35270,35238,33190,33158,31077,31078, +33159,33191,33192,35272,35304,35304,35304,35304,35305,33257,33225,33224,33224,33224,31144,31144, +31143,33191,33191,33223,33223,33223,33191,33190,33223,33190,31110,31078,29029,28997,28965,26917, +27014,24967,24935,24934,24934,24934,24902,22854,20709,20709,20677,20677,18597,18565,18532,16484, +14436,14468,14436,14436,14468,16549,16517,14469,12356,14469,18663,18695,16582,14437,12356,10276, +10309,10341,10340,10308,10275,8195,10275,12324,14437,18630,22856,22888,20775,16549,12291,10241, +10242,10242,10242,12323,12356,12356,12389,12389,12389,12389,14437,14437,14404,14403,14371,14339, +16386,20547,20579,18467,16386,16419,16451,16419,16451,18564,22725,24838,26919,28999,28999,29031, +24870,20708,16547,16515,16580,16581,14501,12388,10308,10309,10309,10309,10309,10309,10309,10341, +10308,8228,8228,10308,10341,8260,6180,8228,8261,8293,10374,8326,8325,8293,8293,8293, +8261,8293,10342,8261,8229,8229,8229,6148,8229,8229,10278,10278,10245,8197,8197,8197, +8197,8197,8197,8197,8229,8229,8229,8229,8229,8229,8229,8197,8197,6149,6149,6149, +6148,6148,6149,6149,6149,6148,6148,6148,4100,6148,6149,6148,6148,6148,6149,10277, +12324,14372,14404,12323,12291,14403,14404,14404,16452,14403,14371,14371,14371,16484,16484,16516, +18564,16451,14370,16418,18531,20644,20644,20644,20644,22724,22692,20578,20546,20578,20546,16385, +12289,14371,14404,14371,12291,12323,12324,10243,10244,10244,10244,8196,8196,8196,8196,10244, +16451,18531,20643,24805,28998,31110,33159,33190,35238,35206,35206,35206,35206,35206,35206,35206, +35206,33158,33158,33158,33159,33158,33158,33158,33126,33158,33159,33191,33191,33159,31111,31111, +31110,31110,31110,31110,31110,31110,31142,33190,31142,31110,31110,31110,31110,31110,31110,29062, +29094,29094,29094,29095,29095,29095,29095,29095,29095,29096,29128,29096,29064,26983,26951,24903, +24935,24935,24935,22855,24903,24935,22855,20774,20742,20775,20743,18662,16516,14436,14436,16549, +14502,12453,12421,12421,14469,14502,14501,14469,12356,16517,18662,18630,14436,12291,12291,12291, +10242,10242,10242,12323,12388,12421,12389,10341,12421,10341,10309,12389,12389,14469,16550,18630, +20613,22661,22693,22726,22726,22726,22725,22693,24838,26952,31145,35338,37387,37386,35274,35306, +26983,20742,16548,16581,20775,20808,18695,14502,12421,12389,12357,10244,10244,10244,12324,10308, +10308,8227,8227,10340,10340,8260,8260,8292,8292,10373,10405,10405,10373,8293,8293,8293, +8261,10309,10309,8228,8229,8261,8229,8197,8197,8197,8197,8198,8197,8197,8197,8197, +8197,8197,8197,6149,6149,6149,8197,8197,8229,8229,8229,8229,8197,6149,6149,8197, +8197,6148,6148,6148,8197,6180,6180,6148,6148,6149,6149,8229,8229,8229,8229,8228, +10244,12324,12356,14469,14469,14469,14437,14437,14436,12356,12291,12291,12323,12323,14371,12291, +14338,12290,12289,12290,12290,12289,16418,18531,16451,16450,16450,18531,20643,20611,18466,14337, +14403,14404,14404,12355,12324,12323,10244,10244,10244,8196,8196,8196,8197,8197,8229,10276, +14339,18467,20580,22692,24740,24740,26820,28900,33093,33093,33093,35174,35174,35174,35174,35174, +35206,35173,35174,35206,35206,35206,35206,33158,35207,33158,33126,33126,33159,33191,33191,33159, +31143,31110,31110,31110,31110,31110,31110,29030,31142,31110,29030,29030,31110,31110,31110,31110, +29029,29061,31141,31142,31142,31142,31143,31175,31110,31110,29063,29063,31111,31111,31143,31144, +31144,31176,31209,31209,31209,29128,29096,27015,24870,22789,20677,18596,18531,16483,16483,16484, +16549,16582,16647,18695,18727,18695,18695,18662,16549,16549,16517,16516,16516,16517,18630,20710, +18661,18661,16581,14468,12356,10275,10276,10308,10276,8228,8228,10309,12422,14535,16615,16583, +18566,24807,29065,31210,29098,26985,29097,33291,26919,24806,22693,22661,24709,24709,24709,22661, +18597,16517,14404,14437,16582,16582,14502,12356,12324,14437,16518,16517,18565,18565,16484,14404, +12323,12388,12421,14501,14469,14469,12388,12355,14468,14501,14501,14468,12356,12323,12355,12388, +10276,10276,10276,10309,10341,10309,10309,8229,10277,8229,8197,8197,8197,8197,8198,8197, +6149,6149,8197,8197,6149,6149,6149,6149,8197,8197,8229,8229,8197,8197,8197,8197, +6148,8196,8228,8228,8228,8196,8196,8196,8196,8196,8228,8228,8229,8229,8261,10277, +12389,12357,12357,12356,10308,10276,10244,10244,10243,12324,14437,14436,12323,12290,12291,14371, +16484,18565,18629,20677,18629,18597,18564,18564,18596,18564,18564,20644,22757,22822,24870,22822, +18596,18629,18662,20710,18630,16517,12323,10243,10243,10244,10244,10276,10244,10276,10244,10244, +14339,16387,18467,22660,26853,28966,33094,33126,33126,35174,35174,35174,35174,35174,35174,35174, +35206,35206,35173,33125,33093,33093,31012,30980,33125,33093,33093,31045,33094,33094,31045,31046, +31143,31143,31111,29062,31111,31111,29062,29062,29030,29030,29030,29030,29062,31111,29062,29062, +33222,33190,31141,31109,31109,31109,31109,31077,31077,31077,31110,31110,31110,31111,33159,31143, +31143,31143,31143,31176,31143,29095,29062,29030,24869,24837,22756,20643,18530,16450,16417,14337, +12323,12355,12356,14436,14436,14436,14404,14403,14371,14403,14404,16484,16516,18597,20710,20742, +24967,22887,20774,16581,12388,10275,10275,12356,8195,8195,8196,8196,10276,10309,10309,12389, +14437,14405,14404,16452,14404,16484,20710,24936,22790,22790,24838,22725,20580,20548,20580,22694, +20711,16583,14470,14437,14437,14437,12357,12324,18631,20678,20646,18532,18532,20580,20580,20580, +16484,16484,16484,16484,16452,16452,18532,18564,14338,16387,16419,16451,18499,18499,18499,18499, +16517,14437,12356,12324,12324,12324,12324,10277,10277,10277,10245,8197,8197,8197,8197,6148, +8197,8197,8197,8197,8197,8197,8197,8197,8197,8197,8229,8229,8229,8197,8229,8229, +8196,10276,10276,10276,8196,8195,10244,10276,10309,10309,10309,10309,10309,10309,10309,12356, +12389,12389,12356,10276,10276,10308,12357,12389,14501,16614,20776,20808,20775,20743,22823,22855, +27049,27049,26984,22791,20710,22791,22790,20710,22823,22823,22823,22855,24968,27049,29129,29161, +24902,26983,29095,29096,27015,22790,18564,16451,14338,14338,12290,12290,12290,12290,12290,12291, +16419,16386,16386,20547,24741,28966,33127,33127,35207,35207,35175,35174,35175,35174,35175,35174, +35206,35205,33125,33092,31012,28931,28867,26819,26787,26787,26819,26819,26787,24739,24706,24739, +24804,22756,22756,22756,22756,22756,22756,22724,26917,26950,26982,29063,29095,29095,29063,29030, +29028,31044,28964,31044,31077,33157,33190,33190,31077,31077,33157,33158,33158,33158,33158,31110, +31078,29030,31078,31078,28997,28997,28997,26949,28997,28997,26917,26916,24804,22723,20610,18530, +14402,14403,14403,14403,12322,12322,12290,12290,14371,16451,16516,18597,20677,22790,22822,24871, +27016,24935,22822,18629,14435,12323,10242,10243,8195,8195,8196,8196,8195,8195,6148,8196, +8195,8195,8227,10308,10340,10307,10307,10307,12387,14468,14500,14468,14403,14403,16484,16549, +20744,18696,18696,18696,18664,18664,18664,20711,20711,22759,22758,24774,26854,28934,28934,28934, +24773,24742,24709,22596,20483,20483,20483,22563,26756,26757,28837,28837,28804,26691,22530,20481, +18467,16419,14371,14339,14371,14371,14372,12324,12291,10244,10244,10277,10277,10277,10245,8197, +8197,8197,8197,8197,8197,8229,8197,8197,8197,8229,10277,10309,10277,10309,10310,10310, +12356,12356,12324,10275,12323,12356,14469,16549,14437,14436,14436,14404,12356,12355,12323,12323, +10243,12323,12324,12356,12389,14469,14502,16582,20776,20775,20775,22855,24968,27016,27015,24935, +29097,29097,24871,20613,18532,20678,22791,22790,18629,20678,20710,20743,22823,22855,22856,24903, +29063,29095,31175,31176,31175,29063,26982,26950,24837,24805,22724,20644,20644,22724,24805,24838, +26919,24806,22725,24773,28966,31079,33159,33127,33159,35175,35174,35142,35142,33094,33095,33126, +33158,33125,33093,31045,31045,31012,30980,28932,28900,28932,28965,28965,28932,26852,26852,26852, +20643,20611,20611,20611,20611,20611,20611,20611,18530,18530,20611,20643,20676,22724,20644,20643, +22658,22625,22625,24705,26851,28996,31077,31077,31109,33157,33157,33157,33157,31077,31077,31077, +28997,28997,28997,28997,28965,28997,28965,28997,31110,31110,31110,31142,31110,29062,29029,26981, +22821,22789,20709,20677,18628,18596,18596,18596,20677,22757,22790,24870,24870,24870,24903,24903, +24870,24902,24870,22790,18629,16516,14404,14403,12323,12323,10243,8195,8195,8195,8195,6147, +8228,6147,4098,4098,6146,6145,6145,4097,6145,6144,6145,8193,8194,10274,10274,10243, +6146,8195,10244,10244,12324,12324,12324,14372,16452,18533,22758,29032,33225,35305,35240,33127, +33096,33064,33096,35177,37289,39370,39402,41482,41483,43563,45643,45643,43530,41352,37158,32997, +26788,24772,24773,22725,22693,18564,16419,14339,12291,12291,12291,12324,12356,12357,12325,10276, +8196,8196,8196,8196,8196,10277,10277,8196,8196,8196,10277,10277,8196,8196,8196,10277, +14403,12323,12323,14403,16517,18630,20710,20710,20677,20709,20709,20709,20709,20709,20709,20709, +22790,22823,22855,22888,24968,25001,25001,24969,25001,24968,24935,24935,27015,29095,29063,26950, +24805,26918,26918,24805,24806,24871,24871,22758,16451,16452,16484,16517,16517,16549,18630,20677, +24837,26884,26917,28998,29062,31111,31143,31143,31143,31143,31111,29030,29030,31111,31143,31144, +31176,29096,29063,29031,29031,31079,31078,33126,33094,33094,33093,31046,31046,31046,31046,31046, +31077,31077,31077,31077,33158,31110,31078,31078,31110,33191,33191,33191,31110,31078,31078,29030, +26982,26950,26950,24902,26950,26950,26950,26950,26950,26950,26950,26950,26982,26982,26982,26982, +24804,24771,24739,24771,26884,28964,28997,28997,31110,31110,31077,31077,28997,28997,28997,28997, +31078,28997,28998,28997,28998,29030,29030,31110,31110,31110,31142,31142,31143,31143,31142,29095, +29063,27015,26982,26982,26982,26982,26982,26982,26983,26983,26983,26982,26950,26918,26918,26950, +26950,26983,27015,27015,26983,24902,22822,20742,16549,14436,10243,10243,10243,10243,8195,6147, +8260,8260,6179,6179,8227,8258,8226,6146,8226,6145,6145,6145,8194,8194,6146,6146, +8194,8195,10243,10243,10243,10243,12291,12291,12290,14371,20613,24871,29064,31112,28998,26886, +24709,24677,24709,26822,31015,35208,37289,37289,39369,41450,43562,43562,45610,43530,45578,43562, +39401,39433,37385,37353,33192,28998,24773,20612,20612,18532,16452,14403,12323,12323,10243,10243, +10244,10244,8196,10244,10244,10244,10244,10244,10276,10277,12325,12325,10277,10276,10276,10277, +12290,12290,14371,18564,20742,22822,22822,22757,22789,22789,24902,26983,29063,29095,29095,29095, +24870,22822,24870,22822,22822,20710,18629,18596,16516,20644,22757,24837,24804,24771,24771,24771, +26852,26885,28966,28966,26918,28999,24870,22725,18531,16483,16451,14371,14371,14403,14436,16516, +16450,18530,20643,22756,24837,26950,26950,28998,26917,28998,29030,31079,31111,31111,31078,29030, +26982,26982,26982,26950,26949,26917,28965,28965,31045,31045,31013,31013,31013,31045,31045,31045, +28965,28964,28965,28997,28997,29030,28997,28997,28997,29030,29030,29030,28998,28998,26950,26950, +29095,29063,29063,29063,29063,29095,29095,29063,29063,29030,26982,26950,26982,26982,26982,29030, +31111,29030,28998,29030,29030,31110,31110,29062,31110,29062,29029,28997,28997,26949,26948,28997, +28997,28998,28997,28997,28998,29030,29030,29062,29062,29062,29062,29030,29030,29030,26981,26981, +26949,26949,26950,26982,29030,29062,29062,29063,29063,29063,29063,29030,26950,26918,26918,26950, +29031,26983,26983,26983,26983,26983,26983,27016,22790,18629,14436,12356,14437,14437,12356,10276, +8195,10308,12389,12421,14533,14533,14500,12420,12387,12452,14533,12452,10340,10308,12388,12453, +16549,14468,12355,12323,12355,14436,14468,16517,16516,14404,16451,18532,18564,18531,20579,20579, +20612,18500,18435,18434,18467,20547,22595,22595,22595,24643,26723,26723,26723,30916,35110,37255, +41448,41480,41480,41513,39465,39433,35304,33224,29031,26951,22790,20677,18564,14436,14403,12323, +10243,10244,10244,10243,10243,10243,10244,10276,12292,12324,12324,12324,12324,12324,12324,12324, +18596,18596,20677,22822,24903,26983,26950,24869,22724,22756,24837,26949,29030,29030,28997,26949, +26917,24869,24869,22789,22757,20676,20676,20676,20644,22756,26917,26949,28996,28996,31044,31044, +28932,28900,26852,26852,26852,24772,22692,20612,20611,18531,16451,14371,14371,14371,14403,14403, +16516,16548,18628,20709,20709,20709,20709,20677,22757,22757,24838,26918,26951,26951,26950,26950, +24902,26949,26949,26949,26949,28997,28997,28997,28964,28996,28996,31045,28997,28997,28997,28965, +26916,26884,26884,26917,26917,26949,26949,26917,26949,26950,26949,26950,26950,26950,26950,26950, +26950,26949,26917,26917,26949,26950,26950,26949,26950,26949,26917,24837,24869,26917,26917,26917, +26918,26918,26918,26918,26918,26918,26950,26949,26950,26949,26949,26949,26949,26949,26917,26917, +26917,26917,26917,26885,26917,26917,26918,26950,26950,26950,26982,26950,26949,24901,24901,24869, +24836,26916,26917,26949,28997,28997,26949,26949,29030,29030,29030,28998,26949,26917,26950,28998, +26918,26918,26918,26918,26918,24870,24870,24902,24903,22790,20710,18662,18662,18663,18662,16550, +16518,16486,14373,12291,14372,18597,20710,20742,18597,18662,20742,18662,18630,16582,18663,20776, +22855,20774,20741,18661,18694,20775,20807,20840,20775,18630,16516,14436,14403,14403,16451,16516, +16516,14468,14435,14402,12322,14370,14402,16450,16417,16417,18465,18497,20578,22691,26852,30980, +35108,37156,37221,39334,41448,41512,41513,39497,33192,31143,29063,26983,22854,22822,20742,18662, +16550,16582,16582,16518,14437,12356,14437,14469,12324,12356,14405,14437,14437,14437,14437,14437, +31144,29096,29095,29063,29063,29095,31143,31143,28998,29030,31110,31143,31110,29030,28965,26884, +24836,24836,22756,22756,22756,24837,24870,26950,29063,26950,26917,26917,31077,31109,31077,31044, +31013,28965,31013,31078,31078,28998,26917,26885,22692,22724,22724,22757,22789,22790,22790,20742, +22822,22790,22790,20741,20709,20677,18596,18596,18596,18596,18596,18596,20676,20709,22790,22822, +22821,22820,24868,24868,26949,26949,26949,26948,28997,28997,29029,29029,29029,28997,28997,26917, +26949,26949,26949,29030,29030,29030,29030,29030,26950,26917,24869,24869,26950,26950,26950,24902, +26949,26917,26917,26917,26917,26949,26949,26917,26950,26917,24869,24869,24869,24869,24869,24869, +24870,24870,24870,24870,24870,24869,24870,24869,24869,24869,24901,24901,26949,24901,26949,24869, +24869,24870,24870,24869,24869,24869,24869,24869,22789,22789,24869,24901,24901,24869,24869,24868, +24869,26917,26949,26981,26982,26949,26949,24869,24836,26917,26917,26917,26885,26885,26885,26917, +24869,24869,26950,26950,26950,26950,24870,22790,22790,22790,22790,22823,22855,22856,22856,20775, +22759,22759,22727,22759,22823,24904,22823,20677,22823,22791,20710,20710,20743,20743,20711,20710, +22822,22822,22854,22854,22854,20806,20774,20775,22855,20774,20742,20742,20710,18629,20709,20774, +22952,25032,25032,22887,18661,16515,14434,14434,16482,18563,20676,24869,27014,29095,31175,33190, +33093,35141,37253,37286,37319,37319,35238,33158,28997,29030,29030,29063,29095,29095,29063,27016, +26984,27016,27016,24904,22790,20710,20710,22823,24903,24936,24936,27016,27016,27017,27049,27049, +31078,31078,31078,31110,31110,31110,31110,31078,31110,31110,31110,33191,33191,33191,31110,29030, +26950,24869,24837,22724,22724,22756,24837,24869,29030,29063,31111,31143,31111,28998,26885,24804, +26916,26916,28997,28997,28997,31078,31110,31143,31111,31111,29063,29063,29095,29063,27015,26982, +28998,28998,28998,29030,26950,24870,22789,22756,20676,20708,20709,18628,16547,16547,18628,20741, +18595,18595,18627,22788,24901,24901,24901,26949,26949,26949,29030,29030,29030,29030,28998,26950, +26982,26950,26950,26950,26950,26950,26950,26950,24869,24869,24901,24901,26949,26950,26950,26950, +26982,26950,26918,26950,26950,26950,26950,26982,26950,26917,24869,24837,24837,24869,24869,24869, +24870,24902,24870,24870,24902,24902,24902,24902,24869,24869,24869,24869,24868,24868,24836,24836, +22821,22821,22821,22789,22789,22789,22821,22853,24902,24902,22821,22821,22789,22789,22821,22821, +24902,24869,22789,24837,24869,24869,22789,22756,22789,22789,24869,24902,24870,24870,24869,24869, +22789,22789,22821,22822,24902,24902,24902,24903,22822,22790,20742,20742,22823,22823,22823,22791, +22823,22822,22822,22822,22822,22822,22822,20774,20774,22822,22822,22823,24871,22823,24871,22823, +22822,22822,22822,22822,22822,22854,22854,24902,22822,22822,22822,22789,22789,22789,24869,24870, +26983,26983,26983,24934,24902,24869,22789,22756,22724,22724,22724,22724,22724,22724,22724,22724, +22691,22658,20578,20578,22691,26884,28997,31078,28997,28997,28997,31045,28997,31045,31045,31078, +31111,31111,31111,31111,31111,31111,31111,31111,33224,33192,33192,33192,33192,33192,33191,31111, +33126,33126,33126,33158,33158,33126,33126,31078,31078,31078,28998,29030,31078,29030,28998,28997, +29063,29062,29030,26982,26950,26917,24837,24804,24837,26885,26918,28998,28998,28998,28998,28998, +26917,26949,29029,29062,31110,31110,31110,31110,31111,31110,31078,31078,31078,31111,31111,31111, +28965,28965,28965,28965,28997,26917,26885,24837,22756,22789,22821,20741,20740,18692,20773,20773, +20741,20740,20741,22821,24902,24901,24901,24901,26950,26982,26982,26982,28998,26950,26917,26917, +26950,26950,26950,26950,26982,26982,26950,24902,24902,24901,24901,24869,24901,24901,24901,26950, +26950,26950,26950,26982,26950,26950,26950,26950,26950,26950,24869,24869,24869,24902,24902,24902, +22822,22822,22822,22822,22822,24870,22789,22789,22789,24836,24837,24869,24868,26949,26949,24901, +24902,22854,22854,22853,22821,22821,22789,22789,22821,22821,22789,22788,22788,22788,22788,22788, +22789,22757,20709,22757,22789,22789,20709,20676,20676,20709,22757,22789,22789,22822,22789,22821, +22821,22821,22821,22821,22822,22822,22822,22822,24903,22854,22822,22822,24903,24903,24903,24870, +24838,24870,22822,22822,22822,20774,20773,20773,20773,20773,22822,22822,22822,22822,24838,22790, +24902,24902,24903,24903,24902,24902,24870,24870,24837,24870,24870,24870,24869,24869,26917,26950, +26918,26950,26950,26950,26950,24870,24869,24869,24837,24837,24805,22789,24805,22757,24805,22757, +22756,22756,20676,22756,24869,29030,31143,33223,33223,33190,33190,33157,33125,33125,35205,35238, +33126,33125,33126,33125,31045,31045,31045,31045,33126,33158,33126,33125,33126,33125,33093,31045, +31045,31045,31045,31045,31045,31045,31046,31046,33158,31078,31078,29030,29030,29030,29030,29030, +26917,26949,28997,29029,28997,26917,26884,24804,28998,26950,26917,26917,26917,26917,28966,28998, +28997,29029,29030,29030,28997,28965,28965,28933,28933,28933,28933,28933,28965,28965,28965,28965, +33126,33126,33126,33126,33126,31078,31078,29030,26885,24869,24869,24902,24902,24902,24902,24902, +22821,22788,22821,24869,24901,24869,26949,26982,26950,26949,26949,26949,26917,26885,26884,24837, +26917,26918,26950,28998,26982,26950,26950,24869,24869,24869,24836,22788,22789,24837,24837,24869, +24869,24837,24869,24870,24870,24869,24837,24869,24902,24870,24869,24869,24902,24902,24869,24869, +24870,24870,24870,24870,24870,24870,22789,22789,24869,24869,22789,22789,22788,22788,24836,22788, +22821,22821,22822,24902,24902,24901,24901,24901,24869,24869,24869,24869,24869,24868,24868,24869, +22789,22757,22757,22789,22789,22789,22757,20709,20676,20676,20676,20676,20676,20676,20676,20708, +20741,22789,22821,22821,22822,22822,22854,22822,24902,24902,22822,22822,24902,24903,24902,24870, +24870,24870,22822,22821,22821,20773,20773,20773,20774,22854,22854,22854,24902,24902,24870,22822, +22822,22822,24902,24902,22822,22790,22789,22757,22789,24869,24902,26950,26950,26950,26918,26918, +24869,24869,24869,24869,24870,24902,26950,26982,26982,26982,26982,26982,26950,26982,26950,26950, +27015,26983,26983,29063,29095,31176,33224,33256,33158,33190,35239,35239,35238,35206,35206,35206, +35206,35206,33158,33157,33126,33125,33125,33125,35238,35238,35206,35206,33158,33125,33125,33125, +33159,33158,33158,33158,33159,33191,33191,33191,33159,31111,31110,31110,31110,31110,31110,31110, +29062,29030,29030,29030,29030,29030,31110,31110,31143,31111,29030,28965,26885,26885,26885,26885, +26917,26917,28965,28965,28933,28901,28901,28901,28901,30981,31013,33094,33094,31046,31013,31013, +33094,33094,33094,33126,33094,31046,31013,28965,28965,28966,26917,26918,28998,28998,26950,26950, +24869,26917,26949,26982,26949,26917,26949,29030,28998,28997,26917,26917,26885,26885,26885,26884, +26917,26917,26917,28997,28998,28998,26950,26917,26917,24837,24836,22756,22756,22756,22756,22789, +24902,24902,24902,24902,26950,24902,24902,26950,24837,24837,24837,24837,24869,24869,24837,22757, +22789,22789,22757,22757,22757,22789,22789,22789,24869,22789,22789,22757,22756,20676,20676,20676, +20708,22788,22789,24869,24902,24902,24901,24869,24902,24901,26949,26949,26949,26949,26949,24901, +22789,22789,22822,24870,24902,24902,22822,22789,18596,18563,18563,16483,16450,16418,16418,16418, +18563,18595,18596,18628,20676,20708,20709,22789,22789,22789,20709,20709,22789,22789,22789,20709, +22757,22757,22789,22789,20741,20741,20741,20741,22854,22854,22854,22886,24902,22854,22822,22790, +20709,20709,22789,20709,20709,20709,22757,22757,24837,24869,24902,26950,26950,24902,24869,24869, +24869,24869,24869,24869,24869,24902,26950,26982,26982,26982,26982,26982,26982,26982,26982,26983, +26982,26950,26950,26918,26917,26885,26853,26852,26852,28933,31046,33158,35206,33126,33093,33093, +33158,33158,33158,33158,33158,35238,35238,35238,35271,35270,35238,35238,33158,33157,33158,33158, +33159,31110,31078,31078,31078,31111,31111,31111,28998,29030,29030,29030,29030,29030,29030,29030, +31142,31110,31110,29029,29030,29030,29030,31110,29030,29030,28998,28997,28966,28966,28998,28998, +26885,26885,26885,28933,28933,31014,33127,35207,37287,37288,37288,37288,37288,37287,37287,37287, +33126,35174,35174,35206,35207,35174,33094,31014,31046,31013,28933,28933,28965,28966,28965,28933, +28998,31046,31078,31110,31078,28965,26885,28965,28997,28997,28965,26917,28965,26917,26917,28965, +28965,28965,28965,28965,28965,28998,28998,28997,28998,26917,24869,24837,22757,22756,22756,22757, +22757,20676,20677,20709,22757,22757,22789,24869,22789,22789,24837,24837,24869,24869,24837,22756, +20676,20644,20612,20611,20612,20644,20676,22757,22757,22789,22789,22790,22822,22822,22822,22822, +22789,22789,22789,24869,24869,24869,22789,22789,24869,24869,26917,26949,26949,26949,26949,26917, +22789,22789,22822,24870,24902,24902,24870,22822,24935,24902,24870,22822,22789,22789,22789,22789, +20677,20677,20677,20677,20676,20709,22757,22757,20676,20676,20676,20676,20676,20676,20676,20676, +20644,20644,20676,20676,20709,20709,20708,20740,20741,20773,20773,20773,20773,20741,20708,20676, +20709,22757,22757,20709,20709,22789,22822,24902,24902,24902,26950,26950,26950,26950,24902,24902, +24902,24902,24902,24902,24902,24934,26982,26983,24902,24902,24902,24902,24902,24902,24902,24902, +24870,24870,24838,24837,24773,22692,22659,22627,24772,26853,28965,31046,31078,33126,33094,33094, +31045,31077,31077,31077,33126,33157,33158,33158,33126,33157,33126,31077,31045,31045,31045,31077, +28998,28966,28966,26917,26885,26885,26885,26885,26917,26917,28997,26949,26949,26917,26917,26917, +26884,26917,26949,28997,28997,28997,26949,26949,26949,26950,28998,28998,29030,29031,29031,29031, +29031,28999,28999,28998,28998,31047,35208,35240,35240,35207,35142,33061,30981,33061,33094,35206, +35206,35206,35207,35239,37288,37288,35239,35207,31046,31013,28933,28933,28933,30981,30981,28933, +28933,28965,31045,33126,31078,28965,28933,28933,28997,28997,28965,28997,28997,28997,29030,29030, +31045,31013,28965,28965,28965,31045,28998,28998,26950,26918,26917,24837,22757,22724,20676,20644, +16483,16483,16483,18563,18596,18596,20644,20676,24869,24837,24869,24869,24870,24869,24869,24837, +22724,22724,22692,20644,22692,22725,22790,24870,24870,22822,22822,22822,22822,22854,22855,22822, +20709,22757,22757,22789,24870,24870,24870,24902,24870,24869,24869,24869,24869,24869,24869,24869, +24869,22822,24870,24870,24870,24870,24870,24870,22789,22789,22789,22789,22789,22822,24870,24902, +26983,24935,24902,24870,24838,22789,22789,22789,22757,22757,20708,20708,20708,22756,22756,22756, +22725,22757,22757,22789,22789,22789,22789,20741,20741,20741,20741,20741,20740,20708,18660,18660, +20741,22790,22789,22757,22757,22790,24903,27015,27015,27015,26982,26982,26982,26982,26982,24902, +24902,24902,24902,24934,24935,27015,27015,27015,24934,24934,24934,24934,24934,24934,24934,24902, +24903,26951,26983,26983,26951,26950,26950,28998,28998,29030,28998,31046,31046,31078,33159,33191, +31110,31110,31110,31110,31110,31110,31110,31110,31078,31078,31078,28997,28965,28965,28997,31078, +29031,29031,29031,29030,28998,28998,26950,26950,26917,26917,26917,26917,24836,24836,24836,24869, +22756,24836,24869,26950,26982,26982,26950,24870,24869,24870,24870,24870,24870,24870,24870,24870, +26951,26951,26951,26918,26886,28966,31047,31047,31014,30981,28868,26787,26755,26755,28868,28900, +28965,28965,28933,28965,31045,31046,33094,33094,31014,31014,31013,31013,31013,31013,31013,30981, +28868,28900,30980,31045,33094,31046,31013,31045,31013,31045,28997,28998,31078,31078,29030,31078, +31013,31013,31013,31013,31046,31046,31046,28998,26918,26918,26950,24870,22790,20677,20612,18563, +16516,16516,18596,20709,20741,22789,22789,22822,24870,24837,24869,24869,26918,26918,26917,24837, +24837,24837,24805,24837,24837,24870,24903,26951,24935,24903,22790,20710,18629,18597,16581,18629, +18597,18596,18596,18629,20677,22790,24871,24903,24870,24870,24870,24870,24870,24870,24870,24870, +24870,24870,24870,24870,22822,24870,24870,24902,22822,22822,22822,24870,24902,24902,24935,24935, +24870,24870,22790,22757,22757,22757,22757,22757,24869,24869,22821,22821,22821,22821,24869,24869, +24870,24870,24870,24870,24870,22822,22822,22822,20773,20773,20773,20773,20773,20773,20773,20773, +20741,22790,22789,20709,20709,22757,24870,24935,24935,24902,24902,24902,24902,24902,24902,24902, +22821,22822,24902,24935,24967,24935,24934,24902,24935,24935,24935,24934,24934,24902,22854,22854, +22790,22822,24870,24902,24903,26951,27015,29064,29096,29096,29063,29063,29031,29063,31143,33224, +31143,31143,31111,29063,29030,29030,29030,29030,29030,29030,29030,29030,26950,26950,29030,29063, +26950,26950,29030,29031,29031,29031,29030,26982,26950,26949,24869,24836,22756,22756,24804,24836, +20676,20676,22756,22756,20676,20676,20644,18596,20677,20677,20677,20677,20677,20677,20677,20677, +18597,18597,20677,20677,22725,24805,26886,28966,31015,31014,31014,28933,28901,28900,28900,28933, +28965,26917,26852,26852,26852,28933,28965,28997,31046,31046,31078,33126,33126,33094,33094,33094, +33062,33029,31013,33094,35174,33126,33094,31046,31046,31046,31046,31078,31078,31079,31079,31078, +28965,31013,31045,31046,31078,31078,28998,28998,29031,29031,26983,26983,24903,22758,20645,18564, +14403,14435,16548,20709,20742,20741,20741,22789,22790,22789,22789,24837,24837,24837,24837,24805, +24804,24805,24805,24837,24837,24837,24838,24838,24870,20742,18597,16484,14403,12323,14403,14404, +14436,14404,14403,14371,14404,16484,18565,18597,22823,22823,22790,20742,22790,22790,22790,22822, +22822,22822,22789,22789,22789,22789,22822,24870,22822,22822,22822,22822,22789,22789,22789,22789, +24838,24838,24838,24838,24870,24870,24903,26983,24870,24902,24902,24902,24902,24902,24902,24934, +24870,24870,24870,24870,22822,22789,22789,22789,20773,20773,20773,20773,20773,22853,22885,22886, +20741,22790,22790,22789,20709,20709,22790,24870,22790,22789,22789,22789,22822,22821,22789,22789, +20741,22821,22854,24934,24934,22854,22821,20741,20773,20773,20741,20741,20708,18660,18628,18628, +20741,20742,22822,22822,22822,22854,24935,27016,26983,27015,29096,29095,29095,29063,27015,27015, +26951,24902,24902,24870,24870,22789,24837,22789,24870,24902,26950,24902,24870,24870,24902,26983, +22757,24870,26982,27015,27015,26982,26982,26982,26950,24902,24869,24837,24837,24869,26949,26982, +27015,24935,22854,20742,18661,16548,14435,12323,14403,12323,12323,12356,14404,14436,12356,12324, +12323,12355,14403,14404,16452,18564,22725,24838,24838,26918,26918,26885,26885,26917,26917,26917, +24837,24869,24869,24869,24869,26950,29030,31111,29030,29030,31078,33159,33191,33159,33159,33159, +37320,37287,35207,35207,35207,33127,33094,31014,28966,26885,26853,26885,26885,24805,26917,28998, +28998,31014,31046,28998,31046,29031,29031,29064,29031,26983,26951,24903,22823,22823,22791,22823, +18662,18661,18661,18661,18661,20709,20709,20709,20709,22757,22757,24837,24869,26918,26950,28998, +28998,28998,28966,26918,26918,26886,24838,24838,24903,22823,20710,16517,14403,12323,12323,12324, +14437,14437,14437,14437,14437,14469,16550,18630,18630,18630,18630,18662,20711,20711,20743,20742, +22822,22822,22822,22789,22789,22789,22757,22757,22757,22757,22789,22789,22789,22789,22757,22757, +22758,22757,22757,24838,24838,22757,22789,24870,22822,22822,22822,22821,22789,22821,22789,22821, +20677,20612,18531,18531,18564,20644,20709,20709,20709,22854,24934,22854,20773,20805,20805,20773, +20741,20709,20677,20677,20709,22789,22789,22789,22822,22822,22790,22789,22789,22789,22821,22822, +22822,22854,22854,22822,20773,20741,20741,20773,20741,20741,20741,20709,20709,20709,20709,20709, +20774,20774,20741,20742,20774,22854,22887,22919,20774,20806,22822,22821,22821,22821,20741,18628, +18629,18596,16516,16516,16483,16483,16484,16516,18596,18597,18629,18629,20677,20710,22790,22823, +20644,20676,22757,22789,22789,24869,24902,24902,24902,26982,26982,26950,24901,24901,24901,24901, +22822,20774,18694,18661,18629,16549,14468,14468,14469,14437,12356,10276,10244,8195,8195,8195, +8195,10275,10275,10275,12323,14403,16484,18597,22758,24838,24838,22757,22757,22757,24837,22789, +24902,24902,22821,22821,24870,24902,26950,26918,26950,26918,26885,26885,26918,28966,28998,31078, +33127,33094,31014,31014,31014,31014,28934,28901,26853,24773,24805,26918,26951,26951,29031,29064, +26886,26885,26853,24805,24773,22725,22725,20677,22726,20678,20678,18630,18630,18630,18630,18662, +20775,20775,20775,20807,22855,22855,22855,22822,24903,24902,24902,26950,26918,26918,26918,26918, +28966,28933,26885,26853,26853,26885,24838,24870,24871,24871,22758,18597,16484,14403,14372,14404, +10276,10276,12324,12324,12324,12324,12324,12324,12356,14404,14405,14437,16517,16550,18662,20710, +22822,24870,24870,24870,24870,22789,22789,22757,22789,22789,22789,22789,22789,22789,22789,22789, +24870,22790,22790,24838,24838,22757,22790,22822,24870,22822,22822,22789,20741,20741,20741,20741, +18596,18564,16484,16419,16418,16451,18531,18564,18563,20677,20741,20741,20741,20773,22853,22822, +24871,22823,22790,22790,22822,22822,22790,22790,22757,22789,20709,20709,22789,20741,22789,22821, +22821,22821,22821,20773,20741,20709,20709,20741,20741,20741,20741,20741,20773,22821,22821,22822, +20774,20774,20774,20806,20806,20806,18693,18661,16612,18660,18660,16580,16580,16612,16580,14499, +14468,14436,14436,14436,14436,14468,16517,16549,16549,16549,16549,16516,14468,14468,16549,16549, +20709,20709,20709,22789,22790,22821,22789,22789,22821,24901,26982,27014,27014,26982,26950,24902, +22822,20774,18661,16581,16549,14469,14469,12389,10275,10276,10276,10276,10276,10309,12422,12454, +10308,10340,12388,12388,12388,14436,16517,18597,18629,20710,20710,20677,18597,18629,20677,18629, +18661,16548,16515,16515,16515,16515,16483,16450,18563,18531,18531,20612,22692,22725,24805,26885, +26853,26821,26821,26821,26853,26821,24741,22660,26886,24806,24773,24806,22758,22725,20613,20612, +20580,18532,18532,18499,16419,14338,14338,12290,14371,12323,12323,12324,12356,12356,14437,12389, +16614,16614,18694,18727,20807,20807,22823,22823,22822,24870,24870,24870,26918,26918,26918,26918, +28966,28966,28933,26853,24773,24740,22660,20612,18531,18532,18500,16451,14339,12290,12290,10242, +10243,10244,10277,12324,10276,10276,10244,10244,10244,10243,10243,10243,10243,10243,12324,14403, +18564,18596,20676,22789,22822,22822,22789,22789,22789,22789,22789,22789,22789,22789,22789,22789, +24870,24838,24838,24870,24838,22790,22790,22822,22855,22822,20742,20709,18661,18629,18661,18661, +20710,20710,20710,18629,18597,18597,20677,22790,20677,22757,22790,22789,20741,20741,20773,20741, +22790,22790,22758,22758,22790,22790,20709,20709,20741,20741,20741,20741,20741,20741,20741,20773, +20741,20741,22822,20741,20741,20741,20741,20741,20741,20741,20741,20741,22822,22822,22822,22822, +20774,20774,20774,20806,20774,18725,18661,16580,16580,16580,16580,14499,14499,14499,14467,12387, +14436,14436,14436,14468,14469,16581,16582,18662,18694,18694,18662,16581,16549,14501,16549,16549, +22855,22855,22855,24935,24935,24935,22854,22822,24902,24902,26982,27015,27046,27014,26982,24934, +24967,22887,20775,18694,18662,16581,16549,14469,12389,12389,12421,12389,10309,10341,12390,12454, +12454,12454,14502,14502,14501,14502,16550,16582,16549,18630,18630,18630,18630,18662,18630,16549, +16516,14436,12323,12323,14371,14371,14371,14338,12289,14337,16418,18564,20645,20677,20645,22693, +24741,24741,24773,24773,24806,24773,22692,20580,16387,16387,14338,14339,14339,14339,12290,12290, +12291,12290,12291,12291,10242,10242,10242,8194,8194,8194,8194,8195,8195,8195,10244,10276, +10340,12388,12421,14533,16614,18694,20742,20742,22790,22790,24870,24870,26918,26918,28998,28998, +31046,31046,31046,28966,26885,24740,20579,18466,18467,18499,18532,18532,18532,18532,18532,16484, +12356,12357,14437,14437,14437,14469,14469,14469,14469,14437,12356,12323,12291,12291,12291,12291, +16450,16483,18563,20676,22757,22789,22789,22789,22789,22789,22789,22789,22789,22789,22789,22789, +24870,24870,22790,22822,22822,22822,22822,22823,22823,20742,18630,16549,16549,16517,16517,16517, +18630,18630,18630,18630,18597,20645,20646,20678,22790,24870,24871,22822,22790,20741,20741,20741, +22790,22790,22790,22823,22822,22822,22790,22790,22822,22822,22822,22822,22822,22822,22821,22821, +20741,20741,22822,22822,22822,22822,22822,22854,22822,22822,22822,22822,22822,22822,22790,22822, +20741,20741,18661,18661,20741,20774,20806,22886,20806,20806,20774,18693,18661,16613,16612,16548, +16581,16581,16581,16613,18662,18694,20775,20807,20807,20807,20807,20807,20775,20775,20742,20775, +20742,20742,20742,20742,22855,24935,24935,24934,27015,27015,27014,24966,24934,24934,24933,24934, +24967,24935,24935,22887,22887,22887,20807,20775,16549,16582,16582,14502,12389,10309,10309,10309, +10309,10341,10341,12357,12357,12357,12357,14405,14437,16518,16550,16550,16550,16550,14502,14437, +12356,12323,12291,12323,12323,12291,14339,14404,16452,16452,18565,20678,22758,22726,20645,20645, +22725,22693,20613,20645,22725,22726,22726,20678,16452,16420,14339,14339,14340,14340,12291,12291, +10243,10243,10244,10244,10244,8196,8196,8196,8195,8195,8195,6147,8195,6148,8196,8196, +8228,10308,10308,12420,14501,16614,18694,20774,22823,22822,24870,26918,26918,26918,26918,28966, +28966,31014,28966,28966,28966,26853,24772,22692,22692,22724,22725,24805,24838,24870,24870,24871, +18597,16550,16549,16549,16549,18629,18662,20743,20742,20710,20710,20742,20710,20710,20710,20710, +20676,20676,20709,22757,22789,22789,22789,22789,24870,24870,22822,22822,22822,22822,24870,24870, +24902,24870,22822,22822,22822,22823,22823,20743,20710,18629,16517,14436,14404,14405,12356,12356, +14469,14437,16485,16517,18565,18565,18533,18500,22726,22726,22758,22758,22790,22790,22790,22822, +22790,24839,22823,24871,22823,22822,22822,22790,22822,22822,22822,22854,22854,22854,22854,22854, +22790,22822,24902,24903,24902,22854,24902,24903,24870,22854,24870,22822,22822,22822,22822,22822, +22790,22789,20709,20709,20741,22854,24935,27048,27048,27048,24967,22887,22886,22887,22886,22854, +22854,22854,22822,22854,22855,22855,22887,22887,22855,22887,24935,24967,24935,22887,22855,22855, +20710,18661,16549,16516,16548,18629,20741,20741,22854,22854,22821,22821,22821,24901,24933,24934, +24934,24934,24934,24935,24967,24967,24935,22887,18694,18694,18695,18695,16582,14502,14469,12389, +10276,10276,10244,10244,10244,10244,10244,10244,12292,12325,12325,12325,12325,12357,10276,10244, +10244,10243,12291,14372,14372,12292,14372,16453,18598,18565,18533,18598,20646,20678,22726,22758, +18597,18532,16419,14339,16420,16485,18598,20678,20679,18598,16518,14405,14373,14373,12293,10244, +10277,8229,8197,8196,8196,6148,6148,6148,6148,6148,6148,6148,6148,6148,6148,6148, +8228,8227,8227,10308,12388,14469,16581,18629,18597,20645,20677,22725,24805,24805,26885,26885, +31014,28933,26853,26820,26821,26853,26853,26853,24773,24773,24773,24805,24838,24838,24838,24838, +20677,18629,18629,18597,18597,18629,20709,22790,22822,24870,24903,24935,24935,24935,24903,24902, +22822,22822,22789,22789,22822,22822,24870,24870,24902,24870,24870,22822,22822,24870,24870,24902, +24870,24902,22822,22822,22822,22823,20742,18630,16517,14437,12356,12324,12324,12324,10244,10244, +12324,12324,12356,14437,18598,18598,20646,20613,22726,20646,20645,22725,22726,20709,22758,22790, +22790,22791,22790,22790,22790,22790,22790,22790,20742,20741,20774,22822,22854,22854,22886,22854, +22822,22822,24903,24903,24902,22822,22822,22822,22790,22790,22790,22790,22790,22790,22790,22790, +24838,24870,24870,24870,24870,24902,26951,26983,26983,24935,24935,24902,24935,24967,24967,24935, +24967,24967,27015,24967,24934,24934,24934,24934,24902,24934,27015,24967,24935,24934,24902,22854, +22855,20775,20742,18661,18629,18628,18661,20709,20741,20741,20741,22821,22821,24901,24933,24934, +26982,26981,24901,24934,24934,24934,24902,22854,27081,27049,25000,22920,20807,18662,16549,14437, +14437,12390,12357,12325,12293,12292,12292,12292,10244,10244,10244,10244,10244,10245,10245,10244, +14373,14373,16454,18599,20712,18599,18566,18599,18566,16453,16388,16420,18501,18533,20646,22759, +16484,14403,12291,12290,12291,14339,14372,14372,14372,14405,14373,12292,12292,12293,12293,10245, +8229,6181,6149,6149,6149,6149,6149,6181,6181,6181,6181,6181,6181,6181,6181,8261, +10341,10340,10308,10308,10308,12356,12388,14435,14403,16451,18531,20612,22724,24805,24805,26885, +31047,28934,26853,26820,26820,26820,24740,24740,26885,26885,26853,26885,26886,26885,24805,22757, +20644,20676,20677,20709,20709,22757,22757,22789,24869,24870,24902,26950,26950,24870,24869,24837, +24869,22822,22822,22789,22822,22822,22822,24870,20709,20709,20676,20676,20676,20676,20709,20709, +20708,20709,20709,20709,20742,22790,20710,16549,14404,12324,10244,10244,10244,10244,10244,8196, +6147,8195,8195,10243,14372,16453,18533,20614,22694,20613,20581,20613,20613,18532,18532,20612, +22726,22758,22790,22790,22790,22790,22823,22855,20742,20742,20741,20741,20741,20774,20774,22822, +20741,22790,24870,24902,24870,24870,22822,22822,22790,22790,22790,22790,22790,22790,22790,24838, +26918,28966,28999,28999,28998,26918,26918,26950,26918,26950,24902,24870,24902,24935,24935,24902, +27014,27014,27014,27014,26982,26982,26982,26982,26982,27014,27014,27014,26982,24901,24901,24901, +22888,24968,25001,25000,24968,24935,22855,22887,24935,24935,24935,24967,24967,24934,24902,24901, +27014,26982,26982,26982,26982,27015,27047,27015,24935,24935,24935,24935,24967,24935,24903,22822, +18597,18533,16453,16420,14340,14340,14340,14340,14340,12292,12292,12292,12293,14438,16518,16518, +16453,16421,18566,22792,24905,22792,20647,18598,18566,16453,14340,14340,14340,14372,16453,18566, +16517,16485,14404,14404,14404,12324,10243,10242,20711,20711,20679,16518,14405,14372,14340,10244, +8197,6149,6149,6149,6181,8261,10342,10342,10309,10309,10309,10341,10341,12389,12421,12421, +14534,14501,14501,14468,14436,14435,14403,14403,20644,20644,22724,24804,24805,26885,26885,28933, +31046,31014,31014,31014,31014,28934,26821,24740,26853,24805,24805,24805,24805,24805,24772,22692, +18531,20644,22757,24870,24870,24870,24838,24837,24837,24869,24870,26950,26950,26950,26950,26950, +26950,26950,24870,24870,24837,22757,22757,22757,18531,18531,16451,16451,16451,16483,16483,16483, +16483,16516,18596,18629,20710,20742,18630,16517,12324,10243,10243,10243,10243,10244,10243,8195, +8195,8195,8195,8195,10243,10243,14340,16421,18534,16421,16388,16420,14372,14339,14371,14372, +14339,14339,16419,16452,16452,16516,18597,20710,22823,22822,20742,20742,18661,18693,18693,20741, +20677,22757,22790,24870,24870,24870,24903,24903,24903,24903,24903,24903,24903,24871,22823,24870, +26918,26918,28966,28966,26918,26918,28998,29031,29031,29031,29031,26983,26983,26983,26983,26950, +26982,26982,26982,26982,26982,27014,27014,27014,26982,27014,26982,26981,24901,24901,26949,26981, +24903,24903,22855,22855,22855,22855,22855,22855,24903,24903,22854,22854,22822,22822,22822,22822, +22886,22854,22853,20773,22821,22853,22853,22853,22821,22756,20643,20643,24804,26884,26884,24772, +26788,26822,28934,28902,24773,22661,22629,22661,24839,22759,20646,18565,18533,16485,14404,14372, +18532,18565,18533,16452,16452,16485,14372,12291,14340,12292,12292,12292,12325,14405,14437,14438, +12292,14373,14373,12291,10243,12291,12291,12291,18565,20645,22758,24839,24871,24838,20612,14371, +8195,6149,6180,8228,8196,10244,10244,12324,14405,16517,20645,20645,20645,22725,24806,24838, +24838,22790,22757,22757,20644,20611,20611,20676,22724,24772,26884,28965,28965,28932,28932,30981, +35143,33063,33063,33095,33127,33160,31079,31047,31079,29031,28999,26918,26886,26854,24805,24805, +24838,24838,24870,24870,24870,24838,22757,20677,20677,22758,22790,24838,24839,24871,26952,29032, +29032,31079,29031,28999,28999,26951,26919,26918,20644,20645,20644,18564,16451,14402,16451,16483, +14436,12356,12323,12355,14436,16549,16581,18629,16549,16549,18597,16517,16484,14371,12290,10242, +10243,8195,8195,8195,10244,8196,10244,8196,10245,10245,10244,10244,8196,8196,8196,10243, +10243,12291,12292,12291,10243,10243,12291,12292,16517,16582,18662,18694,18662,18662,18694,20774, +24870,24838,24838,24838,22758,24838,24871,24936,22823,22791,22791,22791,22791,22824,22856,24904, +24903,24902,24870,26918,26918,26918,26918,28966,26886,26918,28998,26950,26918,26918,26950,26982, +26982,26982,26950,26982,26982,26982,24902,24869,26950,24902,24902,24902,24902,24902,24902,24902, +26983,26951,24903,24903,24871,24871,22822,22822,22822,22822,22822,22822,22822,22790,22790,20742, +20774,20774,20774,20774,20806,22854,22853,22853,22788,22788,24836,26917,31077,31077,31045,31013, +37288,37288,37256,35176,33095,33095,31079,31112,31080,28999,24806,22726,22726,20645,18565,18564, +20612,20677,22758,22758,22790,22823,24872,22824,16452,14404,12324,12292,10244,10244,10244,10244, +12325,14438,16518,16518,16486,16485,16485,16452,14339,16452,22725,24870,26951,24838,24773,20645, +12389,10341,10277,8196,10243,12323,14372,14404,20678,24806,26918,28966,28966,31079,33160,33160, +28967,28967,28999,29031,28999,26918,26917,26917,26917,28965,28997,31078,33126,33126,35174,37255, +35176,35143,33031,30982,30982,28934,26854,24805,28967,26919,26918,24838,24806,24773,22693,22693, +20645,20645,20677,20710,22758,22758,20678,20646,18565,18565,18565,18565,18565,20646,20646,22726, +24774,24773,26821,26854,26854,24806,24838,24838,24838,24871,24871,22790,20677,18596,16516,16517, +14469,12389,12356,12356,14437,16582,18630,18662,20775,22823,22822,22822,22790,22757,20677,18597, +12356,10276,10243,8195,8195,8196,8196,8197,8196,8197,8197,8196,8197,8196,8196,8196, +10245,12293,12325,12325,12292,10244,12324,12324,12324,12356,12356,14437,14469,14501,14501,16549, +20677,20645,18564,18531,16419,14339,14339,14371,16484,16484,16485,16485,16517,18598,18663,20743, +22822,22854,24870,24870,24870,24838,26885,26885,26918,26918,26918,26918,24870,24870,24870,24902, +27015,26983,24934,26983,27015,27015,24934,24934,24902,24902,24902,24902,24934,24934,26983,26983, +24871,24871,24871,22822,22822,22790,22790,22790,22790,22790,22790,22790,22790,22790,20774,20774, +20742,20742,22822,22822,22822,22822,22821,22821,22724,24869,29062,33223,35271,35239,35207,35207, +37256,35175,33095,30982,30949,30982,31047,33128,31112,29032,26919,26919,26951,26919,24838,22758, +22790,24838,24839,24871,22791,22791,22823,24904,20711,18631,16550,14470,14437,14437,12357,12325, +12325,14406,16519,18632,18631,18598,16485,16485,14372,18565,24871,29064,26984,22758,22725,22758, +18663,14534,12421,12388,14437,16517,16517,18565,22758,26918,28999,31079,31047,33127,33095,31047, +28935,26887,26919,28999,29031,29031,28999,29031,29031,31079,31079,33159,33127,33094,33062,33094, +33095,30983,28870,26789,24709,22660,22628,20580,20613,20612,20613,20612,18532,18532,18500,18500, +16484,16484,18564,18597,20645,20645,18597,18565,18533,16452,14339,14339,14340,16420,16420,16420, +18500,20547,20580,20580,20612,20645,20645,20645,22758,22790,22823,22823,20743,20710,18629,16549, +16550,14469,12389,12389,14469,16549,16582,18630,18662,20710,20710,22790,24871,24903,24871,22822, +18695,16614,14469,10308,10244,8196,8196,8196,8196,8196,8196,8196,8196,8195,8195,8195, +10277,12325,12358,12357,12325,10277,12325,12357,10276,10244,10244,12356,12421,14469,12389,12356, +14404,14403,12323,12291,12290,10242,10242,10242,10243,10243,10243,10243,10276,12357,14437,14469, +16516,18628,20709,22790,22790,24870,24870,26919,26951,26951,26983,26951,24903,24902,24903,24935, +24935,24934,22854,22854,22854,22854,22854,22854,20741,20741,20773,22821,22822,22854,22854,22886, +22790,22790,22790,22790,22790,22790,22790,20742,22790,22790,22790,22790,22790,22822,22822,22822, +20742,22790,22790,22790,22790,22790,22822,24869,24837,26950,31143,33224,35240,35207,33127,35207, +35175,33095,33062,28901,26821,26821,28934,31047,31079,28999,28999,29031,29032,29031,24838,22725, +24871,22790,22758,22758,20677,18565,18565,18630,20743,20678,16550,16517,14437,14437,12357,12325, +12293,12292,14373,16519,16551,14405,14372,14372,14372,16485,20711,22823,20678,14371,14338,16452, +18663,16583,16550,16582,18663,20743,20711,22758,22725,26919,31112,33160,33159,33127,31014,28901, +24774,22661,22629,22661,22693,22725,24806,26886,26886,26886,28999,31079,31047,28934,28869,26789, +28870,24709,22596,20516,18435,18435,18467,16419,14339,14339,14339,14339,14339,14339,14339,14371, +16484,16484,16484,16484,16484,16484,16484,16452,16485,16452,14372,14340,14340,14340,14340,14339, +16419,16419,16419,16451,16451,16452,16452,16452,14372,16484,18565,18597,18598,18630,18630,18630, +16582,16582,16550,16582,16582,16582,18630,16582,18629,18597,18597,20677,20710,22790,22790,20710, +22856,20808,18695,16582,14470,12357,10244,10244,10244,10244,10245,10244,10244,10244,10244,10244, +10276,10277,12357,12357,12357,10277,10277,10309,12357,10277,10276,10277,12389,12389,12357,10276, +10276,10275,10243,10276,10308,12356,10276,10276,8195,8195,8195,8195,8195,8228,10308,12356, +12323,12355,16516,18629,20709,22790,24871,24903,26984,26984,26984,26984,24935,24935,22855,22887, +22854,20773,20773,20741,20741,20741,20741,18693,18660,18660,18661,18693,20741,20741,20773,20773, +22790,22790,22790,22790,22790,22790,22790,22822,20742,20742,20742,20742,20742,20774,20774,22790, +22790,22790,22790,22790,22790,24870,24903,26983,29064,31112,31111,31079,31047,31014,31014,31015, +31015,33095,33127,31047,28934,26853,28966,31079,29031,28967,26918,26918,26918,24870,24805,20645, +22790,20677,18597,20645,20645,18565,18565,18597,18598,16517,14437,14404,14372,12324,10244,10243, +12292,10244,10244,12325,12357,12292,12292,12324,12324,12324,16485,18598,16485,12291,10242,12324, +16550,14469,16517,18598,20743,22823,24904,24871,22725,26886,28999,31079,31014,28934,28901,26789, +22629,18468,18436,18468,18468,18500,20548,20613,20548,20580,22693,26854,28935,28902,26789,26789, +24709,22629,20516,16387,14339,14338,14339,12291,12290,12291,12291,12291,12291,12291,14340,14340, +14404,14404,14404,14404,12324,12323,12291,12291,14405,14405,14405,14404,12324,12292,12292,12324, +14404,14372,14372,14371,12323,12291,12291,12291,12291,12291,12292,12324,14404,14437,16550,16583, +16583,16615,18663,18695,18695,18695,18663,18662,20743,20711,20710,20710,20710,20742,20710,20710, +20742,18694,18695,18695,18663,16583,16550,14470,14438,14438,14470,16550,16551,16550,16550,16550, +12389,12390,12390,12389,10309,10309,10277,10277,10277,10277,8196,8196,8197,10277,10277,10277, +10341,8261,8260,8260,8260,8260,8228,6147,8195,8195,6147,6147,6147,8195,8228,10275, +10275,12355,14436,14468,16549,18629,20710,22791,22823,22855,22855,24903,22855,22854,20774,20742, +20774,20773,18725,18693,18693,18693,18693,18693,20773,20773,18725,20773,20773,20773,20774,20806, +22790,22790,22790,22790,22790,22790,20742,20742,20742,20742,20742,20742,20742,20742,20742,20742, +22758,22758,22758,20710,22758,22791,24936,29064,29097,29064,26919,26886,26854,26821,26822,26822, +24741,26854,26887,26886,24806,24741,24773,24773,24838,22725,20644,20612,20644,22725,22790,24838, +22790,20710,20645,18597,18597,16485,16452,14404,16485,14372,12324,14372,14404,14405,12356,12324, +10244,10244,10243,10244,10244,10244,10244,12292,12357,12325,12357,14437,12357,10244,10244,12325, +12389,12356,12324,14405,16518,20679,22791,24871,24838,26919,26886,24806,24740,22660,22627,22596, +18436,16388,16388,16388,16420,14340,14339,14339,16388,16387,18435,20548,22661,22661,24709,24742, +22662,20582,18501,16388,14339,12291,12291,10243,10243,10243,10243,10243,10243,10244,10244,10243, +10243,10243,10243,10243,10243,10243,10243,10243,10243,10244,10244,10244,10243,10243,10244,10244, +12356,12324,12324,12324,10243,10243,10243,10243,12292,10244,10243,10243,10244,10244,12325,14405, +12357,14437,14470,16582,16583,16582,16550,16550,16550,18630,18630,18630,20710,20710,20743,20775, +20742,18694,18694,20743,18695,18695,18696,18696,18664,18663,18663,18696,20711,18663,18663,18663, +16583,14535,14502,12422,12389,10309,10276,10244,10244,10276,10277,10277,10245,10277,12325,12390, +10374,10374,10341,8293,8261,8260,6180,6148,6147,6147,8195,8195,8195,8227,10275,10308, +10275,12323,12356,14468,16549,18662,20743,22823,22823,22823,22823,22855,22855,20806,20774,18693, +18693,18693,18693,18693,18693,18725,20774,20806,20806,20806,20806,20806,20774,20806,20774,20806, +22758,22758,22758,22790,20742,20742,20742,20742,20742,20742,20742,20742,20742,20741,20741,20710, +20710,20678,20678,18597,18597,18629,20742,22823,22790,22758,22726,22693,22661,22628,22628,20580, +20549,20613,20614,20646,20645,18565,18532,18500,16452,16420,14371,14339,16419,18532,20677,20742, +20710,20742,20710,18597,18565,16517,14404,12323,14372,12291,12291,12291,12324,14404,12324,12292, +10244,10244,10244,8195,8195,8195,10244,10244,10244,8196,8196,8196,8196,8196,6147,8195, +10244,10244,10244,10244,12324,14405,16485,18565,22791,24839,24839,22726,20580,20548,18467,18468, +12291,12292,12292,14341,12292,10243,10243,12291,14340,12291,12291,14339,14340,16388,16388,16420, +18502,16454,16453,14373,12292,10244,10244,10244,8196,8196,8196,8196,8196,8196,8196,8196, +8195,8195,8195,8195,8195,8195,10244,10244,8196,8196,8196,8196,8196,10244,10244,10276, +10309,10308,10308,10308,10276,8196,8196,8196,10244,10244,8196,8196,8196,10244,10244,10244, +8196,10244,10276,12324,12325,12325,12325,12324,12324,12324,14404,14404,14436,14437,16549,18630, +18662,18662,18662,18662,18662,18663,18663,18663,20744,20711,18663,18663,18662,18630,18630,16582, +18662,16614,14502,14469,12356,12356,10276,10244,10244,12325,12357,12357,12357,12357,14406,12390, +10342,10374,10374,10342,10341,10341,10341,10341,10276,10276,10276,10276,12356,14436,14469,16549, +14436,14436,14468,16581,20775,22888,22888,22887,22855,22822,22822,22854,22854,22854,22854,20774, +18693,20774,20774,20774,20774,20774,20774,20774,20807,20806,20774,20774,20742,20774,20742,20774, +22758,22758,22790,22790,22822,22822,22855,22855,22822,22822,22822,20774,20742,20742,20741,20742, +18662,18630,18629,16517,14436,14436,14469,16549,14404,16484,16517,18565,18532,16420,16387,16388, +14372,12292,12292,14372,14405,14404,12292,10243,12291,12291,12291,12291,10243,12291,12324,14404, +14436,18630,20711,18663,20711,20743,20775,20743,18662,16550,16517,14436,14437,14404,12292,10243, +10244,12357,12357,10244,8196,8196,8196,8196,8196,8197,8197,6148,6148,8197,8197,6148, +8196,8196,10245,10277,10244,10244,10244,10244,12292,14372,16485,16485,16452,14340,14339,12291, +10244,10244,10244,10244,8196,8195,8196,10276,10244,10243,10243,10244,12292,12292,12292,12292, +12292,12293,12325,12325,12325,10277,10309,10309,8197,8197,8197,8197,8197,8197,8197,8197, +8196,8196,8196,8196,8196,8196,10277,10309,12422,10341,10277,10309,12390,12422,12422,12454, +10341,10341,10341,8261,8260,8228,8196,6148,8196,8196,8196,8197,10245,10245,8197,8196, +8196,8196,10244,10244,8196,8195,8196,8195,12324,12356,12356,10276,10243,8194,10243,10275, +12355,12387,14468,16549,16549,16550,16550,16550,16518,16550,16550,18598,18630,18662,20742,20743, +16581,16549,14468,12355,12323,12323,12291,12291,10243,12291,12324,12324,14373,12292,12292,10244, +10277,10309,10309,10309,10276,10276,12324,12356,16517,16517,16517,16517,18597,18629,20710,20742, +18662,18662,18694,20775,24936,25000,24968,24935,22854,22822,22822,20773,22822,22854,22854,22854, +22854,22855,22887,22887,22855,20774,20774,20774,22822,20774,20742,20742,20742,20742,20742,20742, +20709,20742,22822,22855,24935,22855,22822,20742,20742,20742,20774,20774,20774,20774,20774,18694, +18694,16614,14533,14469,12420,12388,10308,10307,10275,12356,14469,16549,16549,16517,16517,16518, +12325,10277,10245,8196,8196,8196,8196,8195,8196,8195,8195,8195,8195,8195,8195,8195, +10244,12324,12356,14469,16550,16582,18663,18663,20743,20743,20743,18663,16582,16550,16517,16518, +16615,16616,16583,14503,12390,10309,8197,6148,6148,6149,6149,6149,6148,6148,6149,6149, +6149,6149,8197,8197,8197,8197,8196,8196,8196,8196,10244,10244,10244,10244,10244,10244, +8196,8196,8196,8196,6148,6148,6148,6148,6148,6148,8196,8196,8196,8196,10244,10244, +10244,10245,10245,8197,8197,8229,8230,8262,8229,6181,6149,6149,6149,6149,8197,8197, +8229,10309,10342,10342,12422,12422,12455,12487,12455,12454,12422,10374,10342,12422,12422,12454, +10406,10406,10374,8293,8261,8261,8229,6149,8229,8197,8197,8197,10245,10278,10278,10245, +10245,10244,8196,8196,8196,8196,8196,8195,6147,8195,8195,8195,8196,10276,10276,10308, +10275,10275,10242,10243,10243,10243,12324,12357,10243,12292,12324,14404,16485,16517,18630,18662, +20742,20742,20741,18629,16548,18597,18597,16516,18565,16484,16452,18565,18598,18533,16420,14340, +16485,14405,12324,12292,12292,14372,16485,20678,22823,24871,24871,24870,26983,29032,29031,24902, +24903,24936,24936,24935,24935,24935,22854,22822,22822,22854,24902,24902,24869,24901,24934,27015, +24903,22823,22822,22822,22823,22823,22823,22822,22823,22822,22790,22790,22790,22790,22790,22790, +20742,20742,22790,22822,22822,22822,20742,20709,20709,20741,20742,20742,20742,20741,18693,18693, +16581,14533,12453,12452,12420,10372,10372,10340,10372,12421,12453,14501,14469,12389,12389,12389, +8229,8197,6149,6149,6149,6149,6149,6149,6148,6148,6148,6148,6148,6148,6148,6148, +8195,8195,10244,10276,12357,12389,14437,14469,14470,16550,16550,16582,16582,16582,18663,18695, +16583,14503,14503,12390,10310,10277,8229,8197,6148,6148,6149,6149,4101,4101,4101,6149, +6149,6149,6149,6149,6149,6149,6149,6149,6149,8197,8197,8197,8197,8197,8197,8197, +6149,6149,6149,6149,6149,4100,4100,4100,4100,4100,6148,6148,6148,8196,8197,8197, +8197,8197,8197,8197,6149,6149,6149,6149,6149,6149,6149,4101,6149,6149,6149,6149, +6148,6148,8197,6149,8197,8229,8229,8261,8229,8229,8229,8261,10309,10342,10374,10374, +10374,8326,8326,8326,8293,8261,8229,8229,8262,8262,10310,10310,10310,10310,10310,10310, +10277,10245,10245,8196,8196,8196,6147,6147,8196,8196,8196,8196,8228,8228,10309,10308, +10340,12356,10276,10275,10243,10243,10243,10243,10243,10243,10243,10243,12291,14436,18629,20710, +20741,22822,22854,22822,22822,22822,22822,22790,20678,20678,20678,24839,24872,24839,22694,20613, +16453,16453,16453,18533,18533,18565,20645,22758,26919,26919,28999,29031,31111,31111,31079,26918, +26983,24936,24903,22822,22790,22822,22822,22822,24902,24934,27014,27014,26982,24901,24901,24869, +24870,22790,22758,22790,22790,22790,22758,22757,22790,22790,22758,22790,24838,22790,22790,22790, +22822,22822,20742,20742,20742,20742,20741,20709,20742,20742,20774,20774,20774,20774,20741,18694, +14533,14533,12485,12485,12485,12485,10405,10405,10372,10373,10373,10373,10341,10276,8228,8228, +6149,4101,4101,4101,6149,6149,6149,4101,4101,4101,4101,4101,4101,4101,4101,6149, +6148,8196,8196,8196,10276,10277,10277,10277,14502,14502,14502,14502,14502,16550,16550,16582, +12422,10342,10310,8229,8197,6148,8197,6149,6148,6148,6149,4101,4100,4100,4101,6149, +4101,4101,4101,4101,4101,4101,4101,6149,6149,6149,6149,6149,6149,6149,6149,6149, +6149,6149,6181,6181,6181,4133,4133,4133,4133,4133,4100,4100,4100,4100,6148,6148, +6148,6148,6148,6148,6148,4100,4101,4101,4101,4101,4101,4101,4101,6149,6149,6149, +6149,6149,6149,6149,6148,6148,6148,6149,6148,6148,6180,8229,8261,10341,10374,10374, +8293,8325,8326,8326,8293,8293,8261,8261,8229,8261,10310,10310,10310,10310,10310,10310, +10310,10309,10277,10277,8197,8196,6148,6148,6148,6148,6148,6148,6148,6148,6180,6180, +10308,10308,10308,10308,10276,8196,8196,8195,10244,10244,10243,10243,10243,12356,16517,18629, +18628,20709,20741,22822,22822,22822,22822,22790,22758,22726,22758,24839,24872,24839,24839,24807, +20614,20646,22726,22759,24807,22726,22726,24774,26854,26886,28999,31047,31079,31047,28933,24740, +20645,20710,22791,22823,22822,22854,22822,20741,22821,22853,24902,24902,24901,24901,24901,24869, +26983,26951,24903,24903,24903,24903,24871,24870,24838,22790,24838,24870,24871,24870,24870,24838, +24903,22855,22822,20742,20742,20742,20742,20742,20742,20742,20774,20774,20774,20774,20774,18726, +16678,16678,14630,14598,14598,12518,12485,10437,8324,8324,8293,8292,8260,8228,8228,8228, +6181,6182,6182,6182,6182,6182,4101,4101,4102,4101,4101,4101,4101,4101,4101,4101, +6181,8229,8229,8229,8229,8229,10277,10309,14503,14502,14502,14502,14469,12389,12357,12357, +10309,8229,8197,6148,6148,6148,6148,6149,6149,6149,6181,6181,6149,4101,6149,6181, +6149,6149,6149,4101,4101,4101,6149,6149,4101,4101,4101,4101,6149,6149,6182,6182, +8229,8261,8261,8262,6213,6213,6213,6213,4133,4133,4133,4100,4100,4100,6148,6149, +6148,6148,6148,6148,6148,4100,4101,4101,4101,4101,4101,4101,4101,6149,6150,6149, +8230,8229,8261,8261,8229,6181,6181,6181,6181,6181,8229,8261,8293,8293,10374,10374, +8325,8325,10373,10374,10373,10341,8293,8261,6180,8229,8261,8229,8229,8229,10277,10277, +10310,10310,10310,10310,8261,8229,6149,6148,4100,4100,4100,4100,4100,4100,4100,4100, +6148,6180,8228,8260,8261,10309,10309,10277,10309,12389,12390,14470,14469,14469,14469,14469, +14436,16516,16516,16516,16516,18564,18564,18564,18565,18532,18532,18532,18532,18533,20645,22726, +20646,20646,22726,22759,22759,22726,22693,22693,24806,26886,26919,28966,28934,26853,24708,20547, +16387,16452,18597,20710,22791,22887,24935,22854,22886,22854,22854,22821,24869,24901,26982,26982, +24870,24870,24870,24870,24870,24870,24870,24870,24838,22790,22790,22790,24870,24870,24870,24838, +24903,22855,22822,22822,22822,22822,22822,22822,18661,20741,20741,20742,20774,20774,20774,18726, +18791,18791,18759,16710,14630,14598,12518,12485,10405,10405,10373,10341,10341,10341,10341,10341, +10342,10374,10375,10375,10375,8294,6182,6149,6149,6149,4101,4101,4101,4101,4101,4101, +6149,6149,6149,6149,6149,8229,8229,8229,10309,10309,12389,12389,12389,12357,10276,10244, +8229,8229,6149,6149,6149,6148,6148,6149,6181,6181,8229,8261,6181,6181,6181,6181, +6181,8229,6181,6181,6149,6149,6181,6181,6181,6181,6181,6214,8294,8295,8294,8262, +8262,8262,8262,8294,8294,8294,8294,8294,4133,6181,6149,6149,6149,6181,8229,8229, +8197,8197,6149,6148,6148,4100,4100,4100,4100,4100,4101,4101,4101,6149,6149,6150, +6181,6181,8229,8262,8262,8261,6181,6148,6180,6180,6180,6180,8261,8293,8293,8325, +10373,10406,10406,10406,10406,10373,8293,8261,8228,8229,8261,8229,8229,8197,8229,8229, +8229,8229,8229,8229,8261,6181,6181,6181,4101,4101,4100,4100,2052,2052,2052,2052, +4099,4099,4100,6148,6181,8229,8262,10310,10342,12422,14503,14535,14535,14534,14502,14501, +14469,14436,12356,12323,12323,14404,14436,16485,14404,14372,14371,14371,14371,14371,16452,18565, +16452,16420,16452,18532,18565,20613,20645,22726,24838,24839,24838,24838,24773,22693,20580,18467, +16420,14372,14340,12324,14437,18662,22888,25001,25033,25000,25000,24967,24935,24935,26983,26983, +24902,24902,24902,24902,24902,24902,24902,24902,24902,22822,22789,22789,22789,22789,22822,22821, +22855,22855,22822,22822,22854,22854,22822,20774,20742,20742,20774,20774,20774,20774,20774,20806, +18759,18759,16678,16678,14598,14598,12517,12485,10405,10405,10373,10341,10341,10341,10341,10341, +10341,10341,10342,10374,10374,10342,8261,6181,6149,4101,4101,4101,4101,4101,4101,4101, +4101,4101,4101,4101,4101,6149,6149,6149,6148,6148,8196,10276,10309,10276,8196,8195, +6148,6149,6149,6149,6149,6148,6148,6148,8229,8261,8294,8294,8261,8261,8261,8261, +6180,8229,8261,8229,6180,6148,6148,6148,6181,6181,6181,8294,8326,8327,8326,8294, +8229,10309,10277,10310,8262,8262,8262,8294,8262,8261,6181,6149,6148,6148,6148,6148, +6148,6148,6148,6148,4100,4100,4100,4100,4100,4100,4100,4101,4101,6149,6149,6149, +6149,6181,6181,8262,8262,8262,6181,6181,6180,6180,6180,6212,8261,8293,10374,10406, +12486,12486,12486,12454,12454,10374,10341,10341,8260,8260,8260,8229,8228,8196,8196,8229, +6148,6148,6149,6149,6149,6149,4101,4101,4100,2052,2052,2052,2052,2052,4,2052, +2052,2052,2052,4100,4100,4101,6149,6149,8229,8230,10310,10342,12422,12454,14502,14534, +14502,12421,12357,12357,12357,14437,14470,16582,14437,14437,16485,16517,16517,16485,16452,16453, +16452,14372,12291,14372,14372,16452,16484,18565,20710,20710,20678,18597,18532,16484,16419,14339, +14340,12293,10244,10243,10244,12389,16582,16614,18727,20840,22952,25033,25000,24968,24935,24935, +24967,24967,24967,24967,24934,24934,24934,24935,24967,24934,22854,22854,22854,22854,22886,22886, +24935,24903,22855,22854,22854,22854,22854,20774,22854,20806,20806,20806,20806,20806,20806,20806, +18726,18694,16645,14565,14533,12485,12453,12453,10373,10341,10309,8261,10309,10309,10309,10277, +10276,8228,8196,8228,8228,8228,8228,6148,6148,6148,6148,4100,4101,4100,4101,4101, +4102,4102,4101,4101,4101,4101,4101,6149,6149,6148,6148,8196,8196,8196,8195,6147, +6148,4101,6149,6149,6149,6149,6149,6149,8262,8294,10374,10374,10374,10374,10374,10373, +10309,10341,12421,10341,10308,8228,8228,8228,8228,6180,6180,8261,8293,8326,8293,8261, +10277,10245,10277,10277,10277,10309,10309,8261,10342,10310,8229,8197,8197,8197,8197,8197, +8229,8229,8261,8229,6180,6148,4100,4100,4100,4100,4100,4100,6149,6149,6181,8229, +8294,8262,8262,8262,8294,8294,8294,8261,8261,8261,8261,8260,8293,10373,12486,12519, +14566,14534,14534,12486,12486,12454,12454,12421,10341,10309,10309,8261,8228,8228,8228,8196, +6149,6149,6149,4101,4101,4101,4101,4101,2052,2052,4,4,4,4,4,4, +2052,2052,2052,2052,2052,2052,4101,4101,4101,6149,6149,6148,8196,8229,10309,10341, +10342,10310,10309,10342,12422,12390,12422,14503,14470,14470,16550,18631,18631,16550,14437,14405, +14469,12356,12324,12324,12324,12324,12356,12356,14469,16517,16517,14404,12323,12291,12291,10243, +8196,10245,10245,10245,8197,10277,8228,8196,10308,12421,16647,18727,20775,20775,20775,22855, +20806,20838,22886,20838,20805,20805,22886,22886,24999,24999,24999,22951,24999,24999,24999,22951, +27016,26983,24903,22822,22822,22822,22822,22854,22854,22854,20774,20774,20773,20773,20773,20773, +20741,18661,18628,16548,14468,12420,12420,10340,10340,10308,10308,10308,10341,10341,10341,10309, +10308,8227,8195,6146,6147,6147,6147,6148,6148,6148,6149,6148,6148,4100,4100,4101, +4101,2054,2053,2053,2053,4101,4101,4100,6149,6148,6148,6148,6148,8196,6148,6148, +6149,6149,6149,6181,6181,8261,8261,8261,10342,10374,10406,12486,12486,12486,12486,12486, +14501,16549,16582,16582,14501,12389,12389,12389,12356,10308,10275,10276,10308,12388,10340,10308, +12292,12292,12324,12324,12325,12325,10277,10277,10276,10277,10277,10309,12390,14503,16584,16616, +18696,16648,16616,14535,10374,8261,6180,6148,4100,4132,4132,4132,6181,6213,6214,8261, +10375,10342,8262,8262,10342,10374,10374,10374,8293,8261,8260,8260,8293,10373,12454,12486, +14566,14534,14534,14534,14534,14502,14502,14502,12454,12422,12421,12389,12389,10341,10309,8228, +8229,6181,6149,4100,4100,4100,4100,2052,2052,2052,2052,2052,4,4,5,2053, +2052,2052,2052,2052,2053,2053,4101,4101,2052,4100,4100,4100,4100,4100,4100,4100, +6148,6148,6149,8261,10342,8261,8261,10309,12422,12390,12422,14503,16551,14470,14437,12357, +10277,10244,8196,10244,10276,10276,10276,10276,12357,12357,12357,10276,10243,10243,10243,8195, +8197,8197,8197,6148,6148,6149,6149,6148,6147,8260,12422,14502,14502,14501,16582,18694, +20806,20806,22886,22918,22918,22919,22951,25032,22918,22918,22951,24999,25031,24999,24999,22918, +28999,28999,28999,28999,29031,26983,26950,24902,24902,24902,22854,20773,18692,18692,18725,22853, +22789,22757,22757,20709,20709,18661,16580,14500,14532,14533,14565,14533,14533,12453,12453,12421, +10341,10309,10277,8228,8228,8196,6148,6148,6148,6149,6181,6181,6181,6149,6149,6149, +4101,2085,4101,2053,2052,2052,4101,6181,6213,6181,6181,6180,6180,6180,6180,6148, +6148,6180,6181,8261,8293,10341,10373,10373,12486,12518,14599,14599,14566,14566,14599,16647, +18694,22822,22823,20677,18564,16484,16484,16451,18532,16483,16451,14370,16483,18596,18596,18564, +16452,14372,14371,14404,16517,16550,16549,14469,14437,14469,16550,14502,14470,16550,16583,18696, +20809,18664,16519,12357,12389,12454,12454,10374,8260,6212,6212,4164,4196,4229,6310,8390, +14535,14470,12389,10341,10341,12422,12422,10374,10341,10341,10341,10341,12389,12454,14502,14535, +14502,14502,16550,14502,16582,16582,16582,14534,14502,14502,14502,14470,14469,12421,12421,12389, +10341,8293,8261,6181,6149,6149,4100,4101,4100,4100,2052,2052,2053,2053,2053,2052, +4101,4101,4101,4101,2053,2053,2053,2053,2053,2053,2052,2052,2052,2052,2052,2052, +2052,2052,4100,4100,4100,6181,6181,6181,6148,8229,8261,10342,10342,10342,12422,12390, +10277,8229,8197,8197,8197,8229,10277,10309,8197,10277,10309,10309,10309,10277,8196,8196, +6149,6149,6149,6149,6149,6149,6149,6149,6149,6149,6149,6149,6148,6148,8229,10276, +16549,20774,22887,22887,20806,22887,20838,20806,22886,22886,22918,24967,24967,24967,24966,24966, +24805,26885,28998,26950,26918,24869,24837,24869,24902,24934,24934,24902,24901,22853,24934,27014, +31176,31144,29031,26951,24902,22822,20741,18661,18693,16645,14565,14533,14533,12453,10340,10308, +8228,8229,8229,10309,10309,10342,10374,10374,8262,8262,8262,8261,6181,6181,6149,4101, +2052,2053,4133,4133,4101,4133,6213,6246,8326,6246,8293,8293,8294,8294,8293,8293, +8293,8325,10373,10373,10373,10373,10373,10373,10373,10373,12421,12453,10373,12420,12453,14501, +20742,24902,26983,26951,24871,24871,24871,24838,24806,24805,22725,20644,22724,22757,22757,20677, +20677,20645,18597,18597,18630,18597,16484,14371,20775,20743,18663,18630,16518,14437,12324,12292, +14373,14341,12292,12292,12325,12390,14470,12422,10341,8293,8325,6245,6277,6277,6309,8357, +12422,14470,14470,12422,14502,14534,12486,12486,12486,12486,12454,12454,14502,14502,14502,16550, +16550,16550,16550,14502,16550,16550,16550,16582,14502,14502,14502,14502,14501,14469,14469,14502, +12422,10374,10342,8293,8261,6181,6148,6149,6149,6149,4101,4101,4101,4133,4101,4101, +4101,4101,4101,4101,4101,4101,2053,2053,2053,2053,2053,2053,5,5,5,4, +2052,2051,2052,2052,4100,4100,4100,4100,4100,4100,6149,6181,8229,8229,8229,8197, +8197,8197,8197,6149,6149,8197,8197,8197,8229,8197,8197,8197,8197,8196,8196,6148, +6148,6149,6149,6181,6181,6149,6149,6149,4100,4100,6148,4100,4100,4100,6148,8196, +14501,20742,22887,22887,22919,25000,25032,22919,24999,22919,22886,22821,20773,22821,22821,24901, +24935,27047,29128,29128,27015,26983,26983,29063,26950,29030,29031,31111,31079,31079,31111,33192, +31145,29065,26984,24903,22855,22855,20807,20807,18759,18695,16614,16614,16615,14566,14502,12389, +10341,10341,10341,10341,10341,10341,10341,10342,8261,8261,8261,8229,6181,6181,6181,6181, +4101,4133,6214,6214,6214,6246,8327,10439,10407,10407,10407,10406,10439,10439,12487,12487, +10406,10406,10406,10406,10406,10374,10373,10373,12421,12421,12453,12453,14501,14501,14501,14500, +20742,24871,26984,26984,26984,26984,26984,26952,26952,26952,26952,26951,26951,26983,26983,24903, +22823,22823,22823,22823,22791,20678,16485,14371,14372,14372,14404,14437,16517,16485,14372,12292, +12292,12292,12292,12292,12324,12357,12389,12389,12389,12421,12422,12421,10373,10341,10341,10341, +10308,12357,14470,14502,14502,14534,12486,12486,12486,12454,12454,12422,12422,12422,14470,14470, +14470,14469,14469,14437,14437,14469,14469,14470,14437,12421,12421,12421,14469,14469,14469,12422, +12454,12454,12454,10406,10374,10342,8261,8261,8261,6181,6181,6181,6181,6181,6149,4101, +4101,4101,4101,4101,4101,4101,4101,4101,2053,2053,2053,2053,2053,5,5,4, +2052,2051,2052,2052,2052,2052,4100,4100,4100,4100,4100,6149,6148,4100,4100,4100, +6149,6149,6149,6148,6149,6149,8197,8229,8229,8196,6148,6148,6148,8196,8196,6148, +6148,6148,8197,8229,8196,6148,6147,6147,6148,8196,8228,8196,6148,8196,8228,8228, +16549,18694,20807,20806,20806,20807,20807,20774,20838,20806,20774,20741,20741,22821,24870,24902, +22919,24967,24967,24935,22854,24902,24903,26951,26951,28999,31080,33128,33128,33128,33096,33096, +24807,22759,20678,18597,18597,18630,18662,16615,16614,14534,14534,14535,16615,16616,14567,14535, +14535,12454,12454,10374,10309,8261,8228,8228,8261,8261,8261,8229,6181,6181,6181,6181, +6181,6246,6246,8326,8326,8326,10407,10471,10407,10406,10406,10438,12487,12519,12519,12487, +10406,10406,10406,10374,10374,10373,12421,12421,14501,14534,16614,18727,18727,18726,18662,16581, +20742,22790,22791,22791,22790,22758,22726,20646,20646,22726,22759,22758,22758,22759,22791,20710, +22791,22791,22791,22791,20743,20710,18565,16453,14372,14372,14404,16485,18566,16518,16453,12324, +14405,14438,14438,14405,12325,12325,12325,12324,14437,14470,16518,16550,14470,14437,12357,12325, +10276,10309,12421,12454,12454,12454,12454,12454,12454,12454,12454,12454,12422,12422,12422,14470, +14470,14469,14469,14470,14470,14469,14469,14469,12389,12389,12389,12389,12389,12421,12421,12421, +12454,12454,12454,12454,12454,12454,10406,10374,10374,10342,8294,8261,8262,6213,6181,6149, +6182,6149,6150,4101,4101,4101,4101,4101,2053,2053,2053,2053,2053,2053,2053,4, +2052,2052,2052,2052,2052,2052,4100,4100,4100,4100,4101,4101,4101,4100,4100,4100, +6148,6148,6148,6148,6149,8229,8229,8261,8261,8228,8196,8196,8229,8261,8228,8228, +10309,10341,10341,10341,10341,10308,10308,8228,10308,10308,10340,10340,12421,12421,12453,14501, +16581,18662,18694,16613,16581,16581,16581,16580,18693,18694,22854,22887,24935,24935,24903,24902, +22854,20741,18661,18628,20677,22757,24838,24838,26886,28935,28967,30983,30983,28870,28838,26790, +20614,18566,16485,14372,12324,12324,12324,10309,10309,10309,10341,10342,12390,12390,12391,12422, +12422,12422,12422,10341,10341,10341,8293,8293,10374,10342,8294,8261,8261,6181,6181,6181, +6213,6246,8294,8326,8294,8294,8326,8358,8326,8294,8294,10374,10374,10406,10406,10406, +10374,10374,10374,10374,10374,12422,12454,14502,14534,16582,18662,18726,20807,20775,20774,20742, +20742,20678,18630,18597,18565,18533,18500,16452,18533,20614,18566,18566,18533,18566,16518,16517, +16485,14404,14404,14371,14372,14339,14339,12291,16453,16453,16485,16485,16453,14373,14340,12292, +12324,14437,14437,12324,12292,12324,14372,14372,16453,16486,18566,18566,18534,16421,16388,12292, +12324,10309,12389,12421,10341,10373,10374,10406,12486,12486,12486,12486,14535,14535,14535,14535, +14502,14502,14535,16583,16583,14535,14534,14502,14502,14502,14502,14502,14502,14502,14502,14502, +12454,12454,12454,12454,12454,12454,12486,12487,12487,12487,12455,10406,10374,10374,8294,8261, +8262,6182,6182,6149,4101,4101,4101,4101,2053,2052,2053,2052,2053,2052,2052,2052, +2052,2052,2052,2052,2052,2052,2052,2052,2052,4100,4101,4101,4101,4101,4101,4101, +6148,6148,6148,6148,6180,8261,8261,8261,8261,8261,8261,10309,10341,10341,10341,10308, +10308,12356,12356,12356,12356,12356,12388,12388,12388,12420,14501,14533,16581,16614,16646,18726, +18662,18662,18662,16581,16581,16613,18694,18694,18694,20774,22887,24967,24935,24903,22790,22757, +22790,20677,18596,18564,20645,22758,22758,22758,22693,22693,22693,22661,22629,22596,20516,18468, +16453,14405,12325,10244,10244,8196,8196,8196,8196,8197,8197,8197,8197,8197,8197,8197, +10309,10309,10309,10309,10341,10341,10341,10341,8261,8261,8261,8229,6181,8261,8261,8261, +6213,8293,8326,8293,8293,6213,6213,8293,8293,8261,8261,8293,8293,8325,10341,8293, +10374,10374,10374,10342,12422,12454,14534,14534,16582,16581,16581,18629,18661,20741,22822,22822, +18629,18597,16516,18564,18565,18532,18500,18501,16420,18501,16453,16421,16453,16486,16518,16486, +16485,14405,14372,12291,10243,12291,12291,14340,14340,14372,16453,14373,14340,12291,14340,14340, +12292,12324,12324,12292,12291,12292,14340,14340,16485,18534,18534,20582,18501,16389,16388,14340, +10244,8228,8228,8228,8228,8260,8293,10373,10374,10373,10374,10373,10374,12422,12422,12422, +12454,12454,14535,14535,14567,14535,14535,14534,14535,14534,14535,14534,14535,14534,14502,14502, +14534,14534,12454,12454,12454,12454,12454,12486,14535,12487,12486,12454,12454,10374,10341,8261, +8262,8262,6181,6181,4101,4100,4101,4100,4101,4100,2052,2052,2052,2052,2052,2052, +4100,4100,4100,2052,2052,2052,2052,2052,2052,2052,2052,2052,4100,4100,4101,4100, +4100,6148,6148,6180,6180,8228,8260,8260,8260,8260,10341,10341,10341,10341,10308,10308, +10308,12355,12355,12355,12388,12420,14500,14501,14533,16613,16646,18726,18726,18758,20839,20839, +20807,20775,18727,18694,18694,18726,18727,20807,18694,20774,20774,22822,22790,22790,22758,22726, +22661,22661,22629,22661,22661,20613,20580,18500,16452,16452,16452,14403,14403,14371,12323,12291, +10243,10244,10276,10276,10244,8196,8228,8261,8229,8229,8229,8197,8197,8197,8197,8197, +10308,10308,10308,10308,10341,10341,10373,10374,8261,8260,8260,8261,8261,8261,8293,8293, +8293,8326,10406,10406,10374,10374,10374,10373,10374,10373,10373,10373,10373,10374,10373,10373, +10407,10374,10342,10341,10341,12389,12422,14469,14469,16549,16549,18597,18596,18629,20709,22790, +18596,16484,16484,18564,20645,20645,20613,20613,18468,16388,14339,12291,14340,14341,14373,12293, +18631,16582,16550,16517,14437,14437,16517,18566,18598,18599,18599,18534,16421,14340,14340,14340, +14372,12356,12356,12292,12291,12292,12292,12291,16453,16453,18533,18533,18501,16420,16388,14340, +10276,8228,6148,6147,6148,6148,6180,6180,6180,6180,6180,6180,6148,8228,8229,8261, +10341,10341,10373,10373,12422,12422,12422,12454,12454,12454,14502,14502,14502,14502,12454,12454, +14502,14502,12454,12454,12454,12454,12454,12454,12454,12422,12422,12454,12454,12422,10341,10309, +8261,8229,6181,6149,6149,4100,6149,4101,4101,4100,4101,4100,4100,4100,4100,4100, +4101,4101,4101,4101,4101,4101,4101,4101,4133,4133,4101,4101,4101,4100,4100,4100, +4099,6179,6180,8260,8292,10340,10341,10373,10373,12453,12486,14534,14533,12453,14501,14501, +18694,18694,18694,18726,18727,20775,20807,20807,18726,20806,20807,20839,20839,20839,22887,22919, +22888,20807,20807,20807,20807,18727,18694,18694,18662,18662,18662,20677,20678,20678,22758,22758, +24742,26822,26855,26855,24774,20613,18500,14371,14371,12323,12323,10275,10275,10307,8259,10308, +10308,12356,12389,12389,10309,10308,8261,10309,8261,8228,8196,8228,10309,12390,12358,10309, +10341,10341,10373,12421,12454,12486,12519,14567,12519,12487,10406,10374,8325,8293,8293,8293, +10406,12486,12519,14567,12519,12487,12487,12519,12519,12486,12486,12486,12486,12486,12486,12486, +10407,10375,8294,8261,8229,8228,10276,12324,12324,14436,16549,18597,18597,18564,18564,20644, +18596,18563,18564,22725,24806,24774,24741,22693,26887,24774,20581,16388,14340,14341,14341,12292, +10244,10244,12324,10244,10244,10244,12292,14373,14373,14405,16486,16486,16453,16421,16453,16454, +14340,14372,14372,12324,12324,14372,12324,12292,14372,14372,16453,16453,16453,16453,16453,14437, +10341,8261,6148,6148,6148,4100,4100,4099,4132,4132,4100,6148,6148,6180,8261,8261, +10341,8293,8293,8261,8293,10342,10374,12454,12455,12455,12455,12455,12455,12455,14503,14502, +12421,12421,12454,14502,14534,14534,14502,14502,12421,12421,12454,12454,12454,12454,12454,10374, +8229,6181,6149,6148,6149,6148,6149,6181,6149,6180,6181,4132,4133,4132,4133,4133, +4101,4101,6149,6181,6182,8262,8294,8294,8326,8326,8294,6213,6213,6181,6181,6180, +6147,6179,8260,10340,12453,12485,14566,14566,16679,18759,20840,20840,18727,18727,18759,20839, +20840,20840,22888,20840,20839,20839,20807,20807,20807,20839,22887,22887,20839,20839,20838,20807, +20807,20775,20807,22888,22888,20807,18727,18694,18694,18662,20710,20710,20678,20678,22726,22726, +24807,26887,26888,26920,24839,20646,16485,14404,10243,8194,8195,10307,8292,8259,8292,10405, +12453,14501,14534,14534,12486,12485,12453,12485,12486,12454,12453,12454,12454,14502,14502,14534, +12454,12486,14566,14567,14567,14599,14599,14632,14599,14632,14632,14600,14599,12551,12519,12487, +14631,14599,14599,14599,14599,14599,14599,14599,14599,14631,16680,14631,14599,14599,12486,10373, +8294,6181,6149,8229,8228,8195,8196,12356,16550,14469,16517,18597,20710,20678,20645,20645, +22725,22757,20644,20612,24773,26853,26886,31048,31080,29000,26920,22694,18501,14340,12292,12292, +10244,8196,10244,8196,10244,10244,10244,10244,10244,10244,10244,12292,12292,12292,14341,14373, +14372,14372,14405,14405,14405,12324,10243,8195,10243,10244,10243,10243,10276,10308,10308,8228, +8228,6181,6180,6180,4100,4100,2051,2051,4100,4100,4100,4100,4100,6148,6148,6180, +6180,6180,6180,6180,6181,8261,8261,8261,8261,10342,10342,10342,10309,10309,10342,10342, +8260,10341,10373,12454,12454,12454,12453,12453,12454,12454,14502,14502,12454,12454,12421,12422, +12422,10374,10342,8293,8261,8261,8294,8294,8294,8293,8261,6213,6181,6213,6213,6213, +6181,6181,6149,8229,8262,10342,10375,10407,12487,12487,12487,12454,10341,8260,8260,8293, +10308,12421,14565,16646,16678,16679,18727,18759,20807,20807,20775,20775,20807,20807,22855,20807, +20775,20775,20775,20807,20807,18726,18726,20775,20775,20807,20839,22887,22919,22920,22920,22887, +24969,24936,22855,22855,22888,22888,22888,22888,20775,22855,22855,22823,22791,22791,22759,22726, +18597,20645,18598,18630,18598,16549,16549,14501,14469,12388,10340,10340,10340,10405,12486,14599, +14533,14566,16646,16646,14599,14598,14598,14599,12518,14566,14566,14598,16647,16647,16647,16647, +16679,16712,18760,16712,16679,14599,14567,14567,14599,14599,14600,14632,14632,14632,14632,14600, +14567,16647,18760,16712,16712,16712,18760,18792,16647,16679,16680,14599,14599,14599,14534,12454, +8294,6181,6148,6148,6148,6148,10309,14534,20808,20744,20711,20743,22823,22791,20711,22758, +24838,24870,24805,24805,26918,28967,28934,28967,28934,26887,24806,20613,16420,14340,12291,10244, +8196,8196,8196,8196,8196,8196,8196,8196,10244,10244,10244,12325,12357,14405,14438,16486, +18599,18599,18599,18631,16550,14437,12357,10276,8195,8195,6147,6147,6147,6179,6179,4099, +4099,4100,4100,4100,4100,4100,2052,2051,2052,2051,2052,4099,4100,4100,4100,6148, +4100,4100,4100,4100,4100,4100,6149,6181,6149,6148,6149,6148,6148,6148,6149,8196, +8228,8260,10341,10373,10373,10373,10373,12421,12454,12454,12453,12453,12453,12453,12453,12454, +12454,12454,10406,10406,10374,10406,12455,12454,10374,10374,10342,8293,8293,8293,8293,8293, +8261,8229,8261,10309,10342,12422,12455,12454,12454,12454,12454,12454,12454,12454,14534,14566, +16646,18726,18726,18726,18726,20775,20807,22887,22855,20774,20774,20742,22790,22790,22790,22790, +20743,18662,18662,18662,18662,18662,20742,22855,20775,20807,20807,20774,20774,22855,22887,22887, +24936,24904,24904,24936,24968,22888,22855,20742,20743,22823,22856,24936,24936,24872,24871,24872, +12419,10339,10307,10307,10307,12420,14501,16614,14469,16582,18663,18695,18696,20776,20809,20808, +18760,18791,18792,18791,16711,16711,16679,14631,14630,14631,16711,16711,18759,18759,18759,18727, +18760,18760,16712,16679,14598,12486,12485,10405,8292,10340,10373,10373,10405,10405,10406,12454, +14566,16679,20840,20873,20873,20872,20873,20873,18760,16712,16647,14566,12486,12454,10373,8293, +8261,6181,6148,6148,6148,6147,10309,14535,18728,16615,16550,16550,18630,18598,18598,18630, +22791,22823,22758,24838,28999,28966,26821,24773,22660,22660,20580,18500,14340,12291,10243,10244, +6148,6148,6148,6148,6148,6148,6148,6148,8196,8196,8196,8228,10309,10309,12389,12390, +12292,12292,12325,12325,12325,10244,8196,6147,6147,4099,4099,4098,2051,4131,4131,2051, +2051,2051,2052,2051,2052,2052,2052,2052,2052,2052,2052,2052,4100,4100,4100,4100, +2052,2052,2052,2052,2052,4100,4100,4100,4100,4100,4100,6148,4100,4100,6148,6148, +6148,6180,8260,8293,10341,10341,10373,10373,10373,10373,10373,10341,12421,12421,12421,12453, +12454,12454,12422,10406,12422,10406,12422,10406,10374,10406,10374,10374,10374,10373,10374,10341, +10341,10341,12389,12421,12422,12454,14502,14534,14502,14469,14469,14469,14501,16582,18662,18662, +18694,20775,22855,22887,22855,22823,22790,20709,20709,22725,20677,20644,20612,20612,22660,20644, +20678,20710,20743,22823,22855,22823,22790,22822,20742,22822,22855,22822,22790,22822,22822,22822, +20645,20645,20645,20677,20710,20677,18597,16516,16516,16516,18597,20710,20678,18533,18532,20613, +10404,10371,8291,8259,10339,12452,14566,18695,16582,20776,22889,22857,22792,22825,22825,20776, +20808,20840,20840,18792,18759,16679,16679,14631,16711,16711,16711,16743,18792,18791,18760,18760, +16711,16679,16679,14566,12485,10373,10340,8292,8260,8260,8292,8292,8293,8325,10373,10373, +12420,14533,16646,18727,18727,16679,16646,16614,16647,14566,14534,10373,10340,10308,8260,6179, +6180,6181,6181,6181,6148,6148,8196,10309,10341,10277,10244,10244,10244,12324,12324,12357, +18598,20678,20646,20646,24806,22725,22660,22660,20547,18499,18500,16420,12324,10243,8196,8196, +6148,4100,4100,4100,4100,4100,4100,6148,4099,4100,6148,6147,6148,6147,6148,8196, +8195,8195,8195,8195,8195,6147,6147,6147,4099,4099,4099,2050,2051,4131,2083,2051, +2051,2052,2052,2052,2052,2052,4,4,4,2052,2052,2084,4100,4100,4100,4100, +2052,2052,2052,2052,2052,2052,4100,4100,4100,4100,4101,6149,6149,6149,6149,8229, +6148,6180,8260,8261,8293,10341,10373,10373,10373,10341,10341,10341,10341,12421,12421,12421, +10373,10373,10374,10374,10374,10373,10341,10341,10374,10373,10374,10374,10374,10373,10373,10341, +12422,12421,12421,12421,12421,14469,14501,16549,16549,16549,16517,16516,18597,18629,20710,20710, +20742,22790,22822,24870,24870,24838,22757,22693,20580,20612,22660,22660,22627,22627,22627,22660, +20580,18532,20612,20645,20645,20612,18532,18499,16451,18564,20644,20644,20644,20611,18563,18531, +20547,18467,16386,16386,14338,14338,14338,14338,14338,14338,14339,14371,14371,14339,14339,14339, +14532,12452,12419,10339,12420,14500,16614,18695,20776,22856,22824,18566,14373,16421,18535,18599, +16550,16550,16582,16614,14566,14566,14598,14598,14599,14598,14599,16679,16711,18759,18792,18792, +18824,18792,16679,14566,12485,12453,10373,10372,10372,10372,8292,8292,8292,8292,8292,8292, +12452,14501,16581,16646,18727,18727,16646,14534,12420,12420,10340,8227,8227,10308,10308,8260, +6180,4132,6180,6181,6181,6148,6148,6148,8196,6148,6148,8196,8196,8196,8196,10244, +12357,14438,14437,14405,16485,18500,18500,20613,18532,18532,16485,14405,12324,8228,8196,6148, +4101,4100,4100,4100,4100,4100,4100,4100,4100,4100,4100,4099,4099,4099,4099,4099, +6148,8196,8196,8196,6147,6147,4099,4099,4099,4099,4099,4099,4099,4099,4099,2051, +2052,2052,2052,2052,2052,4,4,4,4,4,2052,2052,2052,4100,2052,2052, +2052,2052,2052,2052,2052,2052,2052,4100,2052,4100,4101,4101,6149,6149,6182,8262, +6213,8261,8293,8261,8261,8260,8261,8293,10341,10373,10373,10373,10373,10373,10373,10341, +10373,10373,10374,12421,12422,12421,10373,10373,10341,10373,10373,12421,12422,12421,12422,12421, +12421,14469,14469,12420,14436,14468,16549,18629,18597,20677,22790,22789,22790,24870,26951,26983, +29031,26918,22725,22692,22692,24773,26853,26886,24740,26821,28901,30982,30982,30982,30982,30982, +28934,24773,22628,22595,20547,22627,22660,24740,22659,24772,26853,24772,24772,24772,24740,24740, +26821,24709,22595,18434,16386,16386,14338,14338,14338,16419,14371,14338,16451,18597,18565,16452, +12323,12323,12322,12322,12323,14403,14404,14404,16518,16550,16486,12292,10243,10243,12292,14373, +12324,12324,12356,12356,10308,10340,10341,10373,10373,10405,12453,12453,14534,14599,16679,16679, +16679,16678,14598,14598,14598,14630,14631,14631,10405,10373,8292,8292,8260,8260,8260,8260, +16614,16613,16614,18726,20807,20839,18727,16646,12420,12421,12388,10340,10340,12421,10373,10341, +8293,6213,4132,6180,6181,6181,6181,6148,6149,6149,6149,6149,8197,6149,6148,8197, +6148,10245,10245,10244,12292,12291,14340,16485,16485,16453,14405,10277,8229,6181,4101,4101, +4133,4101,4101,4101,4101,4100,4100,4100,2052,2052,2052,2051,2051,2051,2051,2051, +4099,4099,4100,4099,4099,4099,4099,6148,6180,6180,6148,6147,6147,6147,4099,2050, +2051,3,2052,4,4,4,4,4,4,4,4,4,2052,2052,2052,2052, +2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,4101,4101,6149,6149,8230,8262, +8326,8326,8293,8261,6213,6180,6180,6212,8261,8293,10341,10373,10373,10373,10341,10341, +10373,10373,12454,12454,12454,12454,12454,12454,12421,12421,12422,12422,12454,12454,12454,14501, +14469,14501,14501,16549,16548,18629,20709,22790,22790,24903,26983,26950,26918,28998,29031,29031, +28999,26886,24741,24740,24741,26821,26821,26821,31014,33095,35208,37288,37289,37256,39304,37289, +39434,37321,35208,35207,35207,35208,35240,35240,37320,37320,35240,35207,35207,35272,37320,37320, +35241,35208,31047,28935,26854,24773,20612,18531,18531,16484,16419,14370,16451,18564,18565,16452, +20515,20516,20548,20580,20581,18533,18501,16452,14404,12324,12292,10276,10276,10244,8196,10244, +12325,12293,12325,12325,10244,8196,8228,8228,10309,10341,10341,10341,10373,12454,12454,12486, +12485,12485,14565,14598,16711,16743,16744,16744,14631,14599,12518,12486,10437,12485,12486,12486, +16613,16581,16581,16581,16613,16646,16646,16614,16614,16646,16614,14534,14534,14566,14534,12453, +8358,8326,6277,6245,6245,8294,8294,8262,6181,6181,6149,6181,6149,6149,6149,6149, +4101,6150,8198,8197,10245,10244,10244,12292,14405,12325,10277,8229,6149,4101,2053,2053, +4133,4133,4101,4101,2053,2052,2052,2052,2052,2052,4,3,3,35,35,35, +2051,2051,4100,4100,4100,4100,8229,8261,10342,10342,10278,10245,10245,10245,10245,8196, +4100,2052,2052,2052,4,4,4,4,4,4,4,4,4,2052,2052,2052, +2052,5,4,4,4,2052,2052,2052,2053,4101,4101,4101,6149,6149,6182,8262, +8326,8294,6246,6245,6213,6213,8293,8293,8325,10373,10373,10405,12454,12486,12486,12486, +14534,14534,14534,14534,12486,12486,12454,12454,12454,12454,12454,12454,14502,14534,14534,14566, +16581,18661,18694,20774,20742,20741,22822,24902,26983,29063,29063,26918,26885,28966,28966,28933, +26788,26788,26789,26821,28934,28902,28837,26724,33030,35110,35143,37159,35111,35078,35078,37158, +37191,35142,35175,37288,39368,39368,37255,37255,37287,37287,37254,37254,37287,39367,39400,39336, +37256,35208,33128,33128,31080,28999,26918,24838,22757,20644,18564,18596,18564,16451,16419,18532, +33064,33096,33128,33129,33129,31081,26952,26920,22791,16485,12291,10243,12356,12356,10308,10308, +12324,12325,12325,12325,12324,12357,12357,12389,12389,12421,12421,12421,12421,12421,12389,12388, +14533,14566,14566,16679,16711,16711,14631,14599,16712,16679,14599,14567,14566,14567,14599,16647, +18727,18726,18694,18661,16613,18662,18662,18694,18694,18695,18727,18695,18727,18727,18695,16614, +12453,12486,12486,10438,10374,10374,8294,8293,8261,6213,6181,8261,8229,6181,6181,8262, +6182,8263,8262,8230,12358,12325,10244,10244,12357,12357,10277,8229,6181,4166,4166,4166, +4133,4133,4132,2084,2052,2052,2052,2084,2084,2084,2084,36,36,36,35,35, +4,2052,2084,2052,2051,4099,4100,6181,12455,12423,14439,14406,14406,14439,14407,12358, +6149,4133,4133,2052,2052,4,4,3,36,4,4,4,4,4,2052,2052, +2084,5,4,4,4,4,4,2052,2053,2053,4101,4101,4101,4101,6182,6214, +6214,6246,6245,6245,8293,8326,10438,12519,12519,12519,12519,12519,14599,16679,16712,18792, +16712,16680,16679,14599,14567,14534,12486,14502,14502,14534,14502,14501,14502,14534,16614,16614, +18726,20807,22887,22919,22887,22854,24902,24902,26983,29031,28998,26885,26885,31046,31078,28966, +26789,24708,24740,26821,28934,31015,30982,28869,26788,28836,28804,26724,26691,24578,26659,26691, +26723,24643,26723,28836,30949,30981,30981,30981,33029,33029,33062,35142,37223,37255,35142,33029, +28868,28869,28869,30949,31014,33095,31047,31047,31079,26886,28934,31080,28967,22660,22660,28999, +35176,35144,33063,31015,31015,31015,28999,28999,26919,24839,22758,20678,20677,18662,18630,16581, +16582,16550,16550,16582,18630,18663,18662,18662,20743,18662,18629,18629,18629,18629,18662,18694, +16679,18760,16679,16679,18792,16679,14566,14566,14534,14534,14502,14470,12421,14437,14470,14470, +14501,16549,16549,16516,16516,16516,18597,20678,22758,20677,20709,22790,22823,22855,22822,22855, +18693,18694,16646,16614,14501,12421,10373,10341,10341,10373,10373,10405,10406,10373,10373,10373, +8357,8358,10406,10374,10341,10341,12357,12357,16551,14471,10310,8229,6149,6181,6214,6214, +6244,4164,4131,4131,4131,2083,2083,2051,4164,2084,2052,2052,2084,2084,4,4, +2084,36,2084,4,2052,4132,6213,8294,12455,12423,12391,12391,12358,12326,12294,10245, +8197,6148,6149,4100,4100,2052,2051,2051,3,3,3,3,3,3,3,3, +4,4,4,4,4,4,4,4,4,4,2052,2052,2085,2085,2085,4133, +4133,4165,6213,6246,8326,10439,12519,12551,12551,12551,12518,12518,14566,14598,14598,14598, +12518,12518,12486,12486,12486,12486,12453,12486,12453,12453,12453,14534,14534,16647,18727,18759, +20807,22854,22887,22887,24903,22855,22822,22790,24838,22725,22693,22725,24805,24806,26919,31080, +31080,28935,26822,26822,28967,28999,28967,26854,24741,22693,22660,20547,18434,16386,18434,18434, +18467,18500,18500,20548,20581,22693,24741,24773,24741,26821,26789,26789,26757,28837,28837,26756, +24642,24674,26722,26722,28771,30884,35045,37126,39206,39207,39239,39239,39239,39239,39239,39239, +28902,28869,26789,26789,26789,24741,24773,24773,24806,22758,22758,22790,22823,24903,24936,24968, +20840,20840,20807,20808,22888,22888,24969,24969,22856,22823,22855,22855,20774,20742,18661,18694, +18727,18760,16679,16711,18792,16679,14566,12486,12454,12421,12357,10308,12325,12357,14405,14437, +14436,14468,16549,16549,18597,20645,22758,24871,24871,24806,22758,24838,24870,24902,24902,24902, +22854,22854,20774,18694,16614,16614,14566,14566,12518,12518,14599,14631,16679,16679,16646,14598, +12582,12550,12518,10405,10373,12421,14470,14502,16551,14471,12390,10310,10310,8294,10374,10406, +10438,8357,8324,6244,6244,6244,6212,4164,4132,2084,2052,2052,2052,2084,2084,2052, +4,36,36,2052,2052,2052,4100,6149,8229,8229,8197,8197,8197,8197,8196,8196, +6148,4100,4100,4100,2052,2052,2051,2051,3,3,3,3,3,3,3,3, +4,4,4,4,4,4,4,4,4,4,4,4,4,2084,2085,2085, +4133,4165,6213,6246,8326,8358,10438,10438,10405,10406,12486,12518,12518,12518,12486,12486, +12486,12486,12486,12518,14566,14567,14567,14566,14534,12453,12453,14534,16614,18695,18727,18727, +20774,20774,20774,22822,20742,20742,20710,20677,20677,20677,20645,22725,22693,22693,22693,24806, +24839,24806,22694,22693,22693,22726,20645,20613,18500,18564,20645,18597,18532,16419,14339,14339, +12324,12324,12324,14372,14372,16452,16452,18500,20581,20613,20581,20548,22596,22629,24709,24676, +24707,26787,28868,30948,33029,37158,37158,39174,41255,41287,43368,43367,41255,39174,39174,39206, +22661,22628,20548,20548,20548,20580,18532,18532,18533,16485,16517,18598,20743,20808,22889,22921, +22953,22921,20840,20808,20775,20775,22856,22824,22824,22856,22888,24968,22888,20775,18694,18727, +16646,14566,12453,12453,12486,12518,12518,14566,14534,12454,12389,12389,14470,16551,18631,18663, +18663,18695,20743,20743,20743,22791,24904,26984,24871,22758,22758,22758,22823,22822,22822,22822, +24903,22854,20774,18662,18662,16646,16647,16647,14599,14599,16679,16711,16711,16711,16679,16679, +14662,14630,14598,14566,14534,16582,18631,18663,16551,16551,16551,14470,12390,10374,10406,12486, +12486,10437,10405,8325,8325,8293,6212,6212,6245,6213,4165,4133,4133,4133,4133,4133, +2052,2052,2052,4100,2052,2052,4100,4100,4100,4100,4100,4100,4100,4100,6148,4100, +2052,2052,2052,2052,2052,2052,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +2052,2052,4100,4133,4133,6213,6213,6213,6180,8260,8293,10373,10405,12453,12453,12454, +12518,12519,14599,14599,14599,14567,14566,14534,14566,14534,12421,14501,14566,16647,16614,16582, +18662,18661,18662,18661,18662,18661,20677,20677,18565,18597,20677,22725,20645,18532,18500,18500, +18533,18533,18533,16452,16420,14371,14372,14372,12291,14372,16484,16517,14436,12323,12291,10243, +10243,10243,10243,10243,10243,12291,12291,12291,14339,14339,16387,16387,18468,20581,22694,24741, +26821,28901,30982,33095,35176,37224,35111,32998,32933,32998,32998,32998,30885,28804,28804,28837, +16452,16420,16420,14339,14340,14372,14372,14372,12292,12292,12324,12324,12357,14470,14502,14534, +18695,16614,14501,14469,14437,14436,14404,14404,16517,16549,18662,18695,18663,16582,16614,16647, +14566,12486,12485,12486,12518,14598,14599,14599,14599,14534,12454,14502,16615,18696,20777,20777, +20776,20808,20776,20776,22824,22824,24904,24904,22759,20678,20645,20678,22758,22790,22791,22823, +22855,22822,18694,18662,16614,16614,14566,14534,14567,14567,14567,14566,14566,14534,14566,14566, +14565,14597,16678,18726,18694,18695,20743,20743,20711,20711,18695,16583,14502,12454,12486,12487, +12486,10406,10374,10373,10374,10373,8293,8293,10407,10407,8326,8294,6214,6181,4133,4101, +4100,4100,4101,4101,4101,4100,4100,4100,4101,4100,4100,2052,2052,4100,4100,4101, +5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,2052,2052,2052,4100,4100,4100,4099,4100,4099,4099,6147,6180,8293,10405,12486, +12519,12519,12519,12519,12518,12486,12486,12486,12486,12453,12421,12421,14501,14501,14501,14469, +16581,16581,16581,16581,18662,18662,20742,20743,20710,22791,22823,22791,20678,16452,14339,14338, +12292,12324,12324,12292,10243,10243,10243,10243,10243,10243,10244,10244,10243,8195,8195,8195, +8195,8195,8195,8195,8195,8195,8195,10243,10242,10243,12291,12291,14372,16485,18597,20646, +24741,26822,28903,28935,30983,28903,26757,24644,20483,20483,20515,20515,18435,18434,16386,18467, +10244,10244,10243,10243,10244,10244,10244,10244,10244,8196,8196,8196,8196,8196,8229,10277, +10276,10275,8195,8195,10243,10243,10243,10243,10243,10243,10244,10276,10276,10276,10341,12453, +12453,12453,14599,16711,14598,12518,12486,8292,12454,10373,10341,10341,14470,14502,16551,14470, +14437,14437,14469,16518,18598,18630,20711,22759,20646,18565,16485,18597,20678,20711,20743,22823, +22823,22823,20775,18695,18695,16614,14534,14534,14567,14567,14566,14534,12453,14501,14534,14533, +14501,16581,16613,18662,18662,18662,20710,20710,18630,20711,18695,16615,14534,14534,14566,14599, +14567,14567,12487,12487,12487,12487,12487,12455,12487,12455,10375,8294,8262,6182,6149,4101, +6149,6149,6149,6149,4101,4101,4101,4133,6213,4133,4133,2053,2052,2052,2052,2085, +37,37,37,37,37,5,5,5,5,5,5,5,5,5,2053,5, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +2052,2052,2053,2052,2052,4100,4100,2052,4100,4100,4100,6148,6180,8261,10374,10406, +10406,10406,10374,10406,10406,12454,12486,14534,12454,12454,14502,12453,12453,12421,12421,14501, +14501,14533,16549,16581,16582,18662,20743,20775,22856,22888,24904,22824,20678,16517,14372,12292, +10244,10244,8196,8196,8196,8196,8196,8196,8196,6148,6148,6147,6147,6147,6147,6148, +4099,4099,4099,4099,6147,6147,6147,6147,8195,8195,8195,10243,10243,12323,12324,14372, +20549,22630,22662,22630,20549,20517,18436,16387,14339,14339,12291,12291,12291,12323,10275,10275, +8196,8196,8196,8196,8196,8196,8196,8196,8197,8197,8197,8197,8197,8197,8229,8229, +8228,8196,8195,8195,8195,8195,8196,8195,10244,8196,8196,8196,6147,6147,8196,8293, +12453,10405,14599,14631,12485,12485,12518,10405,10373,10308,8228,8196,10244,10244,10244,10244, +10243,10243,10244,10244,12292,14372,14405,16453,14405,14340,14340,14404,16517,16550,16550,18630, +20743,20743,20775,20775,18695,16582,14534,14502,14535,14567,14567,14534,14534,14534,14534,16614, +16581,16581,16549,16549,16516,16516,16517,18597,14404,14436,14469,14469,12421,12453,12486,12519, +14600,14600,14567,14568,14568,12488,12487,12455,10375,8294,8262,8230,6182,6149,6149,4101, +4101,4101,6149,4101,4100,4101,4133,4133,4133,2085,2053,2052,4,4,4,4, +37,37,37,37,5,5,5,5,5,5,5,5,5,2053,2053,5, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,2053,2053,2052,2052,2052,2052,2052,4100,4100,6181,6213,8293,8294,10342,8294, +8326,8325,8293,8293,8293,10373,10406,12454,12454,14534,14567,14534,14502,12453,14534,14534, +14534,14534,14502,14502,14502,16582,16582,16582,16550,16550,16582,16550,16550,18598,16550,16518, +12390,10309,8197,6148,6148,6148,6148,6148,6148,6148,6149,6181,8229,8229,8229,6181, +6212,6212,6212,6180,6180,6147,6147,6147,6147,6147,6147,8195,8195,8195,8195,10243, +14340,16389,18469,16389,14340,14340,12292,12292,12292,10244,8195,8196,8228,8260,6212,6179, +6148,6148,6148,6148,6181,6181,6181,6149,6149,6149,6149,8197,8197,8197,8229,8261, +10341,10309,8228,8196,8195,8195,8195,6147,10277,8196,8196,8196,6148,6148,6148,8228, +12486,12485,16744,18825,14598,14631,18825,16744,10373,10341,8260,8196,8196,8196,10244,10244, +10244,10244,10244,10244,10244,10244,10244,10244,10244,10243,10243,10244,12292,12324,12324,12356, +14437,16549,16582,16582,14502,14469,12421,12422,14502,14534,16615,16583,14502,14502,14502,14502, +16582,16582,16549,14468,14404,12324,12324,14372,10243,10243,10243,8227,8228,8260,8292,8293, +10406,10374,10374,10374,10374,10374,8294,8262,6181,6149,6149,4101,4101,4101,4101,4101, +4100,4101,4101,4101,2052,2053,2053,2053,2052,2052,2052,4,4,4,4,4, +2053,2053,2053,2053,2053,2053,2053,2053,5,5,5,5,5,5,5,5, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,2052,2053,2053,2053,4101,4133,6213,8262,8294,8262,8262,8261, +8326,8325,8293,8293,8261,8293,8293,10341,10406,12454,14535,14534,14502,12454,14534,14534, +14502,14534,12453,12453,12421,12421,12421,12421,12356,12356,12356,12356,14437,16550,16582,16583, +12454,10374,8294,8261,8229,8261,8261,8261,8261,8294,8294,10374,10374,10374,10374,8326, +8358,8358,8326,8325,6245,6245,6213,6212,6147,4099,4099,6147,6148,6147,6148,8228, +10244,12292,12292,10244,10244,10244,10244,8196,8196,6148,6147,4099,4100,4100,4099,2051, +4100,4100,4100,4100,6148,6181,6181,6149,6148,6149,8229,8197,8196,8196,8197,8229, +10341,10309,8196,8195,8195,8196,8196,8196,8196,6147,6148,6148,6149,6149,6148,6148, +6147,8259,16744,20970,14631,12518,12551,10373,10341,10308,8228,8195,8195,8196,10244,12325, +12293,10244,10244,10244,10244,10244,10244,10244,10244,8195,8195,8196,10244,10244,8196,8196, +8195,10276,12389,12421,12389,10309,12389,12421,12422,14502,16615,16615,14534,12422,12389,12389, +14502,16550,16550,14469,14405,12324,10244,8195,10276,8196,8196,6148,6148,6180,6180,4132, +6181,6180,6181,6181,6213,6213,6181,6149,4101,4101,4101,4101,4101,4101,4101,2052, +2052,2052,2053,2053,2052,2052,2052,2052,2052,2052,2052,2053,2053,2053,2053,4101, +4100,4100,4100,4100,4100,4100,4100,2052,2052,2052,2052,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +5,5,5,2053,2053,2053,2053,4133,6214,6214,6182,6181,6181,6181,6182,6213, +6213,6213,6213,8293,8293,8294,10374,10374,10374,10374,10374,12422,12454,12454,12454,12454, +12454,12453,12454,12421,12421,12389,10341,10341,14535,14534,12421,12389,12389,14502,14502,12422, +12487,12487,10374,8294,8294,10342,10406,12487,12487,12455,10406,10406,10406,10407,10407,10439, +10406,8358,8358,8358,8326,8326,8293,8293,6181,6148,4099,4100,4099,4099,4099,6148, +6148,8196,8196,8196,8196,8197,8196,4099,4099,4100,4100,4100,2051,2051,4132,4132, +4100,4100,4100,4100,4100,4100,6148,6148,6148,6148,8196,8197,8229,8229,8196,8196, +8228,8228,8196,8196,8196,8196,8196,8196,10277,10277,8197,6148,6148,6149,6149,6148, +8260,10340,10405,12486,14598,14598,12518,12518,12454,10373,8260,8195,8196,10244,12357,14438, +12325,12357,12325,10244,8196,10244,10245,10244,8196,8196,8196,8196,8196,8196,8196,8196, +8196,8196,8196,8196,10276,10309,10309,10309,12422,12389,12389,12389,12389,12389,12389,12422, +10277,10277,10277,10309,10277,10277,8196,8196,8196,8196,6148,6148,4100,4100,4100,4100, +4133,4132,4100,2052,2052,2052,4100,4100,4101,4100,4100,2052,2052,2052,2052,2052, +2052,2084,2052,4,4,4,2052,2053,2052,2052,4101,4101,6149,6149,6149,6149, +12358,14406,12325,8195,6147,6147,6148,4099,4100,2052,2051,3,3,4,4,3, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +5,5,5,5,2053,2053,2053,2053,4101,4101,4101,4101,4101,4101,6181,6181, +6213,6213,8294,8326,10406,10374,10374,10374,10407,10406,10406,12454,12422,12422,12422,12422, +10341,10341,10341,10308,8261,8260,10309,10341,10341,10373,12422,12454,14502,14534,14534,12486, +12486,10406,10374,10374,10374,10374,10374,10374,10374,10374,10374,10374,10406,12454,12454,12487, +10407,10407,10407,10407,10407,10374,10374,8294,8261,6181,6148,4100,6148,6148,6148,6148, +6148,4100,4100,4100,4100,4100,4100,4100,4100,4100,4100,4100,6148,6180,6180,6180, +4100,4100,4100,4100,4100,6148,6148,6148,8196,8196,8196,6147,8196,8195,8196,8196, +6148,8196,8228,8228,8197,8196,8196,8196,12390,12390,12390,8229,8197,8229,10342,10374, +10340,10340,10373,12486,14631,16712,18792,18825,16712,16680,16615,14534,14470,14470,14470,14438, +16519,16519,14438,10277,10245,8197,8196,6148,6148,6148,6148,6148,6148,6148,6148,6148, +6148,6148,8196,8261,12390,12422,14502,14502,12422,12389,10309,10309,10277,10309,12389,12422, +10277,10277,8229,8197,8197,8197,6149,6149,4100,4100,4100,4100,4100,4101,4101,2052, +2052,2052,2052,2052,2052,2052,4100,4100,2052,2052,2052,2052,2052,2052,2052,2052, +4,36,36,4,2052,2052,2053,4100,4100,4100,6149,6149,6149,8197,8197,8196, +14341,16453,16454,14373,14373,14437,10341,8228,6180,4132,2051,3,3,3,3,3, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +5,5,5,5,2053,2053,2053,2053,2053,4101,4101,4101,4101,6150,6182,6214, +4101,4133,4133,6213,6213,6213,6213,6213,8294,8293,10342,10374,10374,12422,12455,12455, +10341,10341,10341,8293,8293,8293,8293,8293,10341,10341,10373,10374,12454,12454,12486,12486, +12454,10405,10373,10373,10373,10373,12422,10373,10373,12421,12422,12421,12422,12454,12454,12486, +12487,12487,12455,10407,10375,10374,10342,8294,8294,8262,6181,6149,6149,6148,6148,4100, +4100,4100,4100,2052,4100,4100,4100,4100,4100,4100,4100,6148,6148,6148,6148,8196, +4100,4100,4100,4100,4100,6148,6147,6147,8228,8228,10277,10276,8196,8196,8196,8196, +8196,8196,8229,8229,8197,10277,10277,12357,14503,14503,14470,10309,8196,10309,12422,12486, +12453,12485,14534,14598,16679,16744,18825,18825,16680,16680,16615,16583,16583,16551,16551,16583, +16551,16551,14471,12358,10277,8197,8196,6148,6148,6148,6148,6148,6149,6149,6149,6149, +6149,6181,8261,10342,12455,14535,14535,14535,12422,12422,12390,12390,12390,10309,10309,10310, +8229,8197,6149,6149,6149,6149,6149,6149,4100,4100,4100,4100,2052,2052,2052,2052, +2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,4100,4100,4100,4100,4100,4100, +4,4,4,2084,2084,2084,4133,4100,6149,6149,8229,8230,10278,10278,10278,12293, +16421,18501,18566,18566,18566,16550,14502,12421,8260,6212,2083,2083,35,35,35,3, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,5,5,5,5,2053,2053,2053,2053,4101,4101,4101,4102,4134,6182,6182, +4101,2052,2052,4100,4101,4100,4101,6149,6181,6181,8261,8262,10342,10374,12455,12487, +10374,10374,10374,10373,10373,10373,10374,10374,10374,10374,10374,10374,10374,10374,10374,10374, +12421,10373,10341,10340,10341,10341,10341,10340,10341,10341,12389,12421,12421,12453,14502,12454, +12454,12422,10374,10342,10310,8261,8230,8229,8262,8262,8262,8230,6181,6149,6149,6149, +4100,2084,2052,2084,2051,2051,2051,2052,4100,4100,6148,6148,6148,8196,8196,8196, +4100,4100,4100,4100,4100,4100,6148,6147,6148,8261,12422,12422,12389,10277,8196,8196, +10309,8261,8229,8196,8196,10277,14470,16583,16583,16583,14470,12356,10276,12356,14469,14501, +14501,14533,14534,14566,14599,14599,14599,14567,16647,14567,12422,12357,12324,12292,12325,12325, +12357,12358,12358,10277,10277,8229,8229,6149,6148,6149,4101,6149,6149,6181,6149,6149, +6182,6214,6214,8294,10374,12455,12422,12422,12422,12422,14535,14535,14503,12390,8229,6148, +8197,6149,6149,6149,6149,6149,6149,6149,4101,4100,4100,4100,4100,4100,4101,2052, +2052,2052,2052,2052,2052,2052,4100,4100,4101,6180,6181,6181,6181,6181,6148,4132, +4132,4132,4133,4165,6213,6213,6181,6181,6149,8197,8229,10277,10278,12358,12391,14438, +16486,18533,16485,14405,14405,14437,12422,10373,8260,6212,4132,2083,3,35,35,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,5,5,5,5,2053,2053,2053,2053,4101,4101,4101,4102,4102,4134, +4101,4101,4101,2052,4100,4101,4101,4100,4101,6149,6181,8229,8262,10342,10342,10374, +10374,10374,10373,10373,10373,10373,10374,10374,10406,10406,10406,10406,10374,10374,10374,10374, +12454,10405,10373,10341,10341,10341,10308,10308,10341,10341,12389,12389,12421,12421,12422,12422, +10342,10342,10310,8229,8229,8229,8229,8262,8230,8262,8294,8262,8262,6182,6182,6214, +2084,2084,2052,2052,4,4,2052,2052,2052,4100,4100,6148,6148,6148,8196,8196, +4100,4100,4100,4100,4100,4100,4100,4100,4099,6148,10309,10342,10309,8228,8196,6148, +10342,10310,8229,8229,10245,12357,16551,18664,20744,20711,18598,16517,16517,18630,18630,16582, +14501,12453,12421,12421,12421,12453,12421,12421,10309,10308,10276,10244,12292,12325,14373,14406, +10244,10244,10244,8197,8197,8197,6181,6181,4101,4101,4133,4133,4101,4133,6149,4133, +4134,4134,4134,6214,8262,8261,8229,8196,10277,10341,12422,12454,12422,10310,8197,6148, +6149,6149,6149,6149,6149,6149,6149,6149,6148,6148,6149,6149,6149,6149,6149,6181, +4100,4099,4100,4099,4100,4099,4100,6148,8229,8229,8261,8261,10309,10309,8261,8261, +8294,8293,8294,8294,10342,10342,8262,8261,8196,6148,8196,8196,8197,10277,10310,12390, +14437,14437,12356,10244,8195,8196,8228,6180,6180,4132,2052,3,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,5,4,5,5,2053,2053,2053,2053,2053,2053,4101,4101,4101,4101, +4101,2053,2053,2053,4101,4101,4101,4100,4101,4100,6149,6181,8229,8262,8294,8294, +8293,8261,8261,8261,8261,8261,8293,8293,10374,10374,10406,10406,10406,10438,12486,12486, +12486,12454,10406,10406,10406,10374,10373,10341,10373,12422,12422,12422,12422,12422,12422,12422, +12422,10374,10342,10309,8261,8261,8294,10374,8229,8262,8294,8294,6214,6182,6214,6214, +2052,2052,2052,2052,4,4,4,4,2052,2052,2052,4100,4100,4100,6148,6148, +2053,2053,2053,2053,2053,4101,4101,4100,4100,4100,6149,6149,6148,6148,6148,6149, +8229,8261,10309,10309,12357,12389,16518,18631,22824,20743,20678,18630,20710,22823,22855,20775, +20775,16647,14501,12388,10308,10340,12389,12389,8195,10276,12357,16518,18599,18599,18599,18599, +12293,10244,10244,8196,8196,6148,4100,4100,4100,4100,4101,4101,4101,4101,4101,4101, +2053,2053,2053,4101,4101,6148,6148,6147,6147,8196,8196,8196,8197,8197,6149,6149, +6148,6148,8197,8229,8229,8229,8229,6149,8262,8261,8261,8229,8229,8196,8197,8196, +6147,6148,6148,6148,6148,6148,6148,8196,8196,8228,10277,10309,12357,12389,12390,12390, +12358,10309,10277,10309,10309,10309,10277,8228,8229,8196,8196,6148,6148,8196,8197,8229, +8228,8228,6180,6147,6147,4099,4099,2051,4100,2052,2052,2052,4,2052,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053, +2053,2053,2053,2053,2053,2053,2053,2052,4100,4101,6149,6181,8229,8262,8294,10342, +8261,8261,8260,8260,8261,8293,8293,10341,12486,12486,12486,12486,10438,10406,10406,10374, +10406,10374,8326,10374,10374,10374,10374,10374,10374,10406,12454,12454,12454,12422,12422,12422, +12455,12455,10406,10342,8261,8261,8294,8294,8294,8294,8294,6246,6214,4133,4101,4101, +2053,2053,2053,2052,4,4,4,4,4,4,2052,2052,2052,2052,4101,4101, +2054,2053,2053,2053,2053,2053,2053,2053,4101,4101,4101,4100,4101,4101,6149,6181, +6148,8229,10309,10309,10277,12325,14405,16517,20679,20678,18597,18564,18597,20709,22789,20710, +20775,18695,14534,12421,12388,10308,10308,10308,14470,14502,16583,18631,18599,16486,14373,12292, +12293,10244,8196,8196,6148,4099,4100,4100,4100,2052,2053,2052,2052,2052,2053,2053, +2053,5,5,2053,4100,4100,4100,4099,6147,6147,6147,6147,6148,6148,6148,6149, +6148,8196,8196,8196,8228,8196,8196,6148,12390,12389,10341,10309,10276,10244,8196,8196, +8196,10277,10309,10309,10277,8196,8196,10244,8196,10244,10244,10244,12325,12325,12357,14405, +12325,12292,10244,10244,10244,10244,10244,8195,8196,8196,8196,6148,6148,6147,6148,4100, +2051,2051,2051,2084,2084,2052,2052,2052,2052,2052,2052,2052,2053,2053,2053,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053, +2053,2053,2053,2053,2053,2053,4101,4101,4101,6149,6181,6182,8262,8294,10342,10342, +10341,10341,8293,8293,10341,10373,10374,10406,12519,12551,12551,12519,12519,10438,10406,8325, +10406,8326,8326,8326,8326,8326,8294,8294,8294,10342,10374,10374,12423,10374,10374,10374, +10374,10406,10374,8293,6213,6181,6213,6246,6246,6246,6213,4165,4133,2085,2052,2052, +4101,4101,2053,2053,2053,5,5,5,5,5,5,5,5,2053,2053,2053, +2053,2053,2053,2053,2053,2053,2053,2053,4101,4101,4101,4101,4102,4133,4101,4101, +6149,6149,8197,8196,8196,10244,12325,14437,16485,16485,14404,14339,12290,14371,16452,16484, +14437,12421,12389,12389,12389,10309,10276,8196,10244,10277,12357,14438,14438,14438,14406,12326, +10245,8196,6148,6148,6148,4099,4100,4133,4132,4133,2053,2053,2052,2052,2052,2052, +2085,2053,2053,2052,2052,4100,4100,4099,6148,6148,6148,6148,6148,6148,4100,4100, +6148,8196,8196,8196,8196,8196,8196,6147,10276,10276,10276,10276,10277,12324,12324,12325, +14405,14438,16551,16551,12390,10277,10244,8196,8196,8196,8196,10244,10244,10244,12292,12292, +12293,12292,10244,10244,10244,10244,10244,8196,6147,6147,6148,6148,4099,4099,2051,2051, +3,3,3,4,4,4,2052,2085,4,4,4,2053,2053,2053,2053,5, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,2053,2053,2052,2053,2053,2053,2053,2053,2053,2053, +2053,2053,2053,2053,2053,4101,4133,6182,6214,6214,6214,8262,8262,8294,10342,10342, +10341,10341,8293,8293,10373,10373,10374,10406,12486,12519,12519,14599,14600,12551,12519,12519, +12519,10439,10439,10407,10407,8326,8294,8262,6213,8262,8262,8294,10342,10342,8294,8294, +8293,10374,10374,8294,8261,6213,6213,8326,6246,4165,4133,4133,4133,2085,2053,2052, +2053,2053,2053,2053,2053,5,5,5,37,37,37,37,37,2053,2053,2053, +2053,2052,2052,2052,2053,4101,4101,4134,4101,4101,2053,2053,4101,4101,4101,4101, +6149,6149,6149,6148,6148,8197,10309,12390,14470,14438,14438,12357,12325,12292,12292,10244, +8229,8229,8229,8229,8228,8196,8196,8196,8196,8196,8196,8196,8197,6149,6149,6149, +6149,6149,6149,6148,4100,4100,4100,4100,2052,2052,2052,2052,2052,2052,2052,2052, +2053,2053,2053,2053,4101,4100,4100,4100,4100,4100,4100,4100,4100,4100,4100,4100, +6148,6148,6148,8229,6148,6147,6147,6147,6147,8195,8196,10244,10244,10244,10244,12292, +18501,20582,20614,18566,14405,10244,8196,8196,6148,6148,6148,6148,8196,8196,8196,8195, +10276,10244,10244,8196,10244,10244,10244,8196,8196,6147,6147,4099,2051,2051,3,2052, +4,2052,2052,2052,2052,2052,4,4,4,4,4,5,5,5,5,5, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,5,2053,2053,2085,2085,2085,2053,2053,2085,4134,4134, +4102,4102,4101,4134,6214,6214,6214,6214,6213,8294,8326,10374,8326,8326,10374,10374, +10374,10341,8293,8293,8293,10341,10374,10374,10341,10373,10406,12486,12519,12551,14600,14600, +12519,12519,12487,12487,10406,10374,8326,8294,6181,6213,8294,8294,10375,10375,10407,10407, +12487,12455,10407,10407,10374,8294,8294,6214,6181,4133,4101,2053,2053,2053,2053,2053, +2053,2053,2053,2053,5,4,4,4,2053,2053,2053,2053,2052,2052,2053,4133, +4133,4133,4133,4133,6214,6213,4133,4101,4101,4101,4101,4101,4101,4101,4102,4102, +6149,6149,6149,6149,6149,8197,8229,10310,10310,10310,10278,10277,10245,10245,10244,8197, +6149,6149,6149,8197,8197,8196,8196,8196,8196,6148,6148,6148,6148,4100,6149,6149, +6149,6149,4101,4101,4101,4101,4101,4101,2052,2052,2052,2052,2052,2052,2052,2052, +2052,2053,2053,2053,4101,4101,4101,4100,4100,4100,4100,4100,4100,4100,4100,4100, +6181,6149,8229,8229,8229,6148,6148,8196,8196,8196,10244,10244,10244,12292,12325,14340, +16388,18436,18469,16420,12292,8196,6148,6148,4099,4099,4100,6180,10309,10309,10309,10277, +10341,10341,10309,10277,10277,12325,10245,10244,12325,10277,8197,6148,4100,2051,3,3, +2052,2052,2052,2052,2052,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,5,5,5,2053,2053,2053,2053,2053,4133,4134,4134, +6214,6214,6214,6247,8295,8295,6246,6213,6181,6213,8294,8326,8326,8325,10373,10374, +10341,10341,8293,8293,8293,8293,10374,10374,10374,10374,10406,10406,10406,10406,10406,10406, +10406,10406,10374,10341,8293,8293,8261,8261,6181,6213,8293,8294,8326,8327,8359,10407, +10374,10374,10374,10374,8294,8294,6214,6213,4133,4133,4101,4101,2053,2053,2053,2053, +2053,4,5,5,2053,2053,2053,2053,4133,4133,4165,4165,4133,4133,4133,4165, +6246,6246,6246,8327,8327,6246,6182,4101,4101,4101,4101,2053,2053,4101,4101,4101, +4101,6149,6181,6149,6149,6149,6149,8197,8197,8197,8197,8197,8196,8196,8196,8196, +6148,6148,6148,8196,8196,8196,8196,8196,8196,8196,8196,6148,6148,4100,6148,6149, +4101,4101,4101,4101,4101,4101,4101,2053,2053,2085,2053,2052,2052,2052,2052,2052, +2053,2053,2053,2053,4101,4101,4101,4101,4100,4100,4100,4100,4101,4101,4101,6148, +6148,6148,8196,8229,8197,8196,8196,10244,8196,10244,10244,10244,10244,12292,12292,12292, +14340,14339,14339,12291,10244,8196,6148,4100,4100,4100,6180,8293,12454,14502,14470,12389, +10309,10309,12357,12389,14438,14405,14373,12325,12325,10277,10277,8229,6180,4132,4132,4132, +2052,2052,2052,2052,2052,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,2052,2052,2052,2052,2053,2053,4133,4133,4134, +6247,6247,6247,8295,8327,8327,8327,8294,6213,8293,8326,8326,8326,8325,10373,10374, +10374,10374,10341,10341,10341,10341,10341,10341,10374,10374,10374,10341,10341,10341,10374,10374, +10374,10341,8293,8261,8261,8261,8261,8261,8261,8261,8294,8294,8294,8294,8326,8326, +8294,8294,8294,8294,8262,6213,6213,6181,4133,4101,4101,4101,4101,4101,2053,2053, +2053,2052,2052,2052,2052,2053,4133,4133,6214,6213,6214,6213,6213,6213,6213,6213, +8327,8326,8327,8327,8327,8326,6214,6182,4134,4101,4101,2053,2053,2053,2053,4101, +4101,4101,6149,6149,6149,6148,6148,6148,6148,6148,6148,8196,8196,8196,8196,8196, +8196,8196,8196,8196,8196,8196,10244,10276,10244,10244,8196,8196,8196,8197,6149,6148, +4101,4101,4101,4101,4101,4101,4101,2053,4133,2085,2053,2052,2052,2052,2052,2052, +2052,2052,2053,2053,4101,4101,4100,4100,4100,4100,4100,4101,4101,4101,4101,6149, +6148,6148,8196,10245,10277,10244,10245,12325,12325,12325,12325,14373,12293,12293,12293,14340, +14372,14340,12292,10244,10244,8196,6148,4100,4099,4099,4099,6148,8228,10276,10244,8195, +8195,10244,12292,14405,16486,16486,16486,14406,12293,10245,10245,8229,8229,6181,6213,6213, +4133,4133,4101,2053,2053,2052,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,2052,2053,2052,2052,2052,2052,2052,2052,2052,4101,4101, +4133,4133,6182,6214,6246,8326,8327,8359,8326,10406,10406,10406,10406,10406,10373,10373, +10374,10374,10374,10374,10374,10374,10374,10341,8293,8293,8261,8261,8293,8293,10374,10374, +10406,10374,8293,8261,8261,8261,8293,8294,8294,8294,8294,8294,6214,6213,6213,6213, +8262,8261,8261,8261,6181,6181,6181,6149,4101,4101,4101,4101,4101,4101,4101,4101, +2053,2053,2052,2052,2052,4133,4133,6213,6214,6246,6246,8294,8294,8294,8294,8293, +8359,8326,6246,6214,6214,6246,6246,6246,6214,6214,4134,4101,4101,4101,4101,4101, +4101,4100,4101,4101,4100,4100,4100,6148,6148,6148,6148,6148,6148,6148,6148,8196, +8196,8196,8196,8195,10244,10244,12357,14437,12357,12325,12325,12325,12357,10310,10245,6148, +4101,4133,4133,4101,4101,4101,4101,4133,4133,2052,4100,2052,2052,2052,2052,2052, +2052,2052,2052,2052,2052,2052,2052,2052,4100,4100,4100,4101,4101,4101,4101,6149, +8196,8196,10244,12357,12358,12358,12390,14470,16583,18631,18631,18599,16518,16518,16518,16518, +14405,12325,10244,8196,8197,6180,6148,4100,4100,4099,4099,6147,8195,8195,8195,8194, +8195,8195,10244,14373,16453,16486,16486,16486,14406,14405,12325,10277,8228,6148,6148,4100, +4133,4133,4133,4133,2053,2053,2052,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +2052,2052,2052,2052,2053,2084,4133,4133,2052,2052,2052,2052,2052,2052,2052,2052, +4100,2052,4100,4100,4133,6213,8326,8358,10406,10406,10406,10438,10438,10406,10406,10406, +10406,10406,10406,10406,10406,10374,10374,10374,8261,8228,6180,8228,8261,8293,10374,10406, +12487,10406,10374,8293,8261,8261,8294,8294,8261,8261,6214,6214,6214,6214,6213,6213, +8262,8262,8229,6181,6181,6149,4101,4100,4101,4101,4101,4101,4101,4101,4133,4133, +4133,4133,4133,4101,4133,4133,6213,6245,8326,8326,8326,10406,10406,10406,10406,10406, +8327,8294,6213,6181,6181,6214,6246,8294,6214,6182,4134,4101,4101,4101,4101,4101, +4101,2052,4100,4100,4100,4100,4100,6149,4100,6148,6148,6148,6148,6148,6148,6148, +6148,8195,8195,8195,10244,14405,16518,18598,16550,16518,14438,14470,14470,14470,12357,10277, +6213,6213,4133,4133,4133,4101,4101,6149,4101,4101,4101,4101,4100,4100,4100,2052, +2052,2052,2052,2052,2052,2052,2052,2052,4100,4100,4100,4100,4101,4101,4101,6148, +8196,8196,10244,10277,12357,12357,12390,14470,16583,16583,16583,16551,16518,16486,14437,14438, +12325,10245,8196,6148,6148,4100,2052,2051,4100,4100,6148,8196,10244,10244,12292,12292, +10243,10243,10244,12292,14373,14405,14405,14405,14406,14406,12357,10277,8229,8196,6148,4100, +4133,4133,2053,2053,2053,2052,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2052, +2052,2052,2052,2084,4133,4165,4165,6213,4133,4133,4100,4100,2052,2052,2052,2052, +4100,4100,4100,2052,4100,4132,6213,6245,8326,8325,8325,10406,10406,10438,10406,10406, +10374,10374,10374,10374,10374,10374,10374,10374,8261,8228,6180,6180,8261,8293,10341,10374, +10406,10374,10341,8261,8261,8261,8261,8261,6181,6181,6214,8294,8294,8294,8294,8294, +8294,8262,6213,6181,6149,6149,4101,4100,6149,4101,4101,4101,4101,4134,6214,6214, +4133,4133,6181,6213,6213,8294,8326,8326,8326,8325,8326,10406,10406,10438,10406,10406, +8294,8294,6213,6213,6213,6214,6214,6214,4101,6149,6149,6149,4101,4101,4101,4101, +4101,4101,4101,4101,4100,4100,4101,4101,4100,4100,6149,6149,8229,8197,6148,6148, +8195,8196,10244,10244,14373,16486,18598,18631,20679,20679,18631,16550,16518,14438,14438,12390, +10342,8261,6181,6181,6148,6148,6149,6149,6149,6149,6181,6181,6149,6149,4100,4100, +2052,2052,2052,4100,4100,2052,2052,2052,4100,4100,4100,4100,4100,4100,4100,4100, +6148,6147,6148,8196,8196,8196,8228,10309,10309,12357,12357,12324,10244,10244,10243,8196, +6148,6148,6148,4100,4100,2052,2052,2051,2051,4099,6148,8196,10244,12324,12324,14372, +12324,10244,10244,10244,10244,12292,12292,12292,12292,10277,10277,10277,8229,6180,6180,6180, +4100,2053,2053,2053,2052,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,2052,2052,2053,2052, +2052,2052,2052,4132,4133,4165,6213,6245,6246,6245,6213,4133,4133,4100,4100,4100, +4133,4165,4165,4133,4132,4132,6213,6245,8325,8325,8325,8325,10406,10406,10405,10406, +10341,8293,8293,8293,8293,8293,10341,10374,8293,8261,8261,8261,8261,8293,8293,10341, +10374,10374,10342,8261,8261,8261,6181,6181,6213,8262,8294,8326,8327,8327,8327,8294, +8262,6214,6213,6181,6181,6149,6149,6149,6181,6149,4101,4101,4133,6214,6246,8327, +6246,6245,8293,8293,8294,8326,10374,10406,8326,8325,10374,10374,10406,10406,10373,8293, +6214,6213,6213,8294,8262,6214,6181,6181,4101,6149,6182,6182,6214,6182,6182,4134, +4101,4133,4133,4133,4101,4101,4101,4101,4100,4100,6181,8262,8262,8262,6149,6148, +8196,10244,12325,14405,16486,16518,18598,18598,20711,22792,20711,18598,16486,14405,16486,16551, +12390,10341,8229,8196,8196,8196,8196,8197,8196,8197,8197,8229,8197,8197,6149,4100, +4100,4100,4100,4101,4101,4100,4100,2052,4100,4100,4100,4100,4100,4100,4100,4100, +4100,4099,4099,6148,6147,4099,6147,6148,8228,8228,8228,8195,8195,6147,6147,6147, +4099,4100,4100,2052,2052,2052,2052,2052,2052,6181,10342,12454,14502,14502,16550,16583, +10309,10276,8195,8195,8195,8195,8195,8195,8196,8196,8228,8228,6180,6148,4100,4100, +2052,2053,2053,2052,2052,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,2052,2052,2053,2052, +2052,2052,4100,4132,4133,6213,6245,6245,8326,8326,6246,6245,6213,6181,6181,6213, +6213,6245,6245,6245,6245,6213,6245,6245,8358,8325,8325,8325,10405,10405,10373,10373, +8261,8261,8261,8261,8261,8261,8293,8293,10341,10341,8293,8293,8293,10341,10374,10374, +10374,10374,10374,10342,8294,8261,8261,8261,8294,8326,10375,10407,10407,8327,8294,6246, +8262,6214,6213,6181,6181,6181,6181,6181,6181,6149,4101,4101,4133,6214,8294,8327, +8326,8326,8326,8326,8326,8326,10374,10374,10406,10406,10406,10406,12454,12454,10373,8293, +8294,8294,8294,8294,8294,8294,8262,6214,6149,6181,6181,6181,6182,6182,6149,4101, +4133,4133,4101,4101,4101,4101,4101,4101,4100,4100,6149,6181,8229,8262,8262,10310, +8197,12293,14406,16518,18599,18598,16485,16453,18566,18598,16453,16453,14340,12292,14437,14437, +14502,12422,12357,10245,10244,8196,10244,10244,12293,14439,16519,16519,14439,12391,10278,8197, +6181,6181,4133,4101,4101,4101,4101,4101,2052,4100,4101,4101,4101,2052,2052,2052, +2051,2051,2051,2051,2051,2051,4099,4099,4099,4099,4099,4099,4099,4099,4099,4099, +2051,2052,2052,2052,2052,2052,2053,2052,4100,4133,6213,8293,12389,12389,14437,12389, +10341,8260,6180,6147,6147,4099,6147,6147,6148,4099,4100,4100,2051,2051,2051,2052, +2052,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +2052,2052,2052,2052,2052,2052,2052,2052,2053,2053,2053,2052,2052,2052,2052,2052, +2084,2084,4132,4132,4133,4165,6213,6213,6245,6246,8326,8326,8326,8326,10406,10407, +10471,10439,8358,6277,6245,6245,8325,8325,10406,8325,8293,8293,8325,10405,10373,10373, +8293,8261,8261,8228,8261,8261,8293,8293,10374,10374,10406,12454,12487,12487,12487,12454, +12487,12455,10407,10407,10374,10374,8262,8229,8294,8294,8327,10407,10407,8327,8294,6246, +6246,6246,6246,6246,6214,6181,6149,4101,6214,6214,6213,6213,6213,6214,8262,8294, +8326,8326,8326,8326,10374,10374,10374,8325,10373,10406,12454,10406,10374,10405,10373,10341, +6213,6213,6214,8294,8294,8294,8294,8294,6181,6181,6181,6181,6149,4101,4101,4101, +4101,2053,4101,4101,4101,4101,4101,4101,4100,4100,6149,6149,6181,8229,8262,8230, +8197,10245,12357,14438,16518,16518,16485,16485,16517,18566,14372,14372,12292,12292,16518,16518, +14470,16551,16518,14406,14341,12293,12292,12292,16455,18568,18568,16487,14407,12326,10246,8197, +8230,6214,6181,4133,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,2052,2052, +2052,2052,2052,2052,2052,2051,2051,2051,2051,2051,2051,2051,2051,2051,2051,2051, +2052,2052,2052,4,4,4,4,2052,2052,2052,4100,6180,8228,8228,10244,8228, +6180,4132,4099,4099,2051,2051,2051,4099,2051,2051,2052,2052,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2053, +2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2052,2052,2053,2052, +2052,2052,2084,4132,4133,4133,4165,6213,4100,4133,6213,8294,8359,10439,12520,12552, +12584,12552,10471,8358,8358,8326,8358,8358,8358,8325,8326,8325,8325,8325,10374,10406, +10374,8293,8293,8261,8293,8293,10341,10341,10374,10374,10406,10406,12454,12454,10406,10406, +12487,10407,10374,10374,8294,8294,8262,8261,6181,6214,8294,8295,8295,8294,6246,6246, +6214,6214,6214,6214,6214,6182,6181,6181,8294,8294,8294,8294,8294,8294,8294,8294, +8294,8293,8293,8293,8293,8293,8293,8325,8293,10373,10373,10373,10373,10373,10373,10341, +8261,8293,8294,8294,8294,8326,8326,8326,6181,6181,6181,6149,4101,4101,4101,4101, +4101,4101,4101,4101,4101,4101,4101,4100,4100,4101,6149,6149,6149,8229,8229,8229, +8197,8197,10245,12325,14405,14438,16485,16453,18566,18598,14372,14404,14372,12292,14437,14405, +14405,18631,20712,18567,16454,16422,16389,14341,18535,18535,16487,14374,12294,12294,10245,8197, +8230,6214,6182,6181,6181,4101,4101,4100,4101,4101,4101,4101,4101,4101,2052,2052, +2052,4,4,4,4,4,4,4,2052,2052,2052,2051,2051,2051,2051,2051, +2084,2084,2052,2052,2053,4,5,4,4,2052,2052,4100,4100,4099,6147,4099, +2051,2051,2051,2051,2051,2051,3,2052,3,3,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,2053,2053, +2053,2053,4133,4133,4133,4133,4133,2085,2085,2085,2053,2053,2053,2053,2053,2052, +2052,2052,2052,2084,4133,4133,4133,4133,4133,4133,6213,6213,6246,8326,10439,10472, +10471,10471,10439,8358,8293,6245,8326,8326,8326,8326,10374,8326,8293,8293,10374,10406, +10374,10374,10374,10374,10374,10374,10374,10374,10374,10406,10406,10406,10406,10406,10406,10406, +10407,10374,8294,8262,8262,8262,8262,8262,6181,6181,6182,6214,6214,6214,6214,6182, +4101,4133,4134,6182,6214,6214,6181,6181,6213,6213,6213,8262,8262,8262,8262,8262, +6213,6213,6213,6213,6213,8293,8293,8293,8293,8325,10373,10373,10373,10374,10374,10373, +10406,10406,10374,10374,10374,8326,8326,8326,8262,6214,6181,6149,4101,4101,4101,4101, +4101,4101,4101,4101,4101,4101,4101,4101,4101,6149,6149,6149,6149,6149,6149,8197, +6149,8196,8197,10245,10277,12325,12324,12324,14405,16517,14405,16550,16518,14405,14437,12324, +14405,20679,22792,20647,18534,20583,18502,16389,16422,16422,14341,12293,10245,8197,8197,8229, +6181,6181,6181,6181,6181,4101,4101,4101,4101,4101,4101,4101,2052,2052,2052,2052, +2053,5,2053,4,2052,4,2052,4,4,4,4,36,36,2084,2084,2084, +2052,2052,2052,2052,2052,4,5,5,5,4,2052,2052,2052,2051,4099,2051, +3,3,3,3,4,4,4,4,3,3,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2053, +2085,4133,4166,4166,4166,4166,4133,2085,4133,2085,2085,2053,2053,2053,2053,2053, +2052,2052,2052,2052,2052,2052,2053,2052,4133,4133,4133,4133,4133,6213,6246,8326, +6245,8326,8326,6245,6213,6180,6213,8293,8294,8326,8294,8294,8294,8293,8294,10374, +10374,10374,10374,10374,10374,10406,10374,10374,10406,10406,10406,10406,10406,10406,10406,10374, +10374,8294,8262,8262,8262,8262,8262,8229,6182,6182,6181,6181,6149,4101,4101,4101, +4101,4101,4101,4133,6182,6182,6181,6181,6149,6181,6181,6213,6213,6213,8229,6181, +6181,6181,6181,6180,6213,6213,8261,8261,8293,10373,10374,10374,10374,12454,12454,10406, +10407,10407,10406,10374,10374,8294,8294,8294,8294,8262,8229,6181,6149,6149,6149,6149, +4101,4102,4102,4102,4101,4101,4101,4101,6149,6149,6149,6149,8197,8197,8197,8197, +6148,6149,8197,10245,10277,10244,10244,10243,10243,12292,12292,16550,16583,14437,16518,14437, +14405,20711,22792,20647,18534,20615,20647,18534,14341,12293,10244,10244,8196,6148,6148,6149, +4101,4101,6149,6149,6149,4101,4101,4101,4101,4101,4101,4101,2052,2052,2052,2052, +2053,2053,2053,2053,2053,2053,2053,2052,4,4,2052,2052,2052,2084,2084,2084, +2052,2052,2052,4,4,4,5,5,5,5,5,4,2052,2052,2052,2052, +4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +2053,4133,4166,6246,6246,6246,6246,4166,4133,4133,4133,4133,2053,2053,2053,2052, +4,4,2052,2052,2052,2052,2053,2052,2052,2052,2053,2052,2053,4101,6214,6246, +6213,6246,6278,6245,6181,4132,6213,6245,8326,8294,8262,8294,8294,8294,8294,8294, +10342,8293,8293,10341,10374,10374,10374,10374,10374,10374,10374,10374,10374,10374,10374,10342, +8262,8262,8262,8262,8262,8262,6181,6149,6182,6181,6182,6149,4101,4101,4101,4101, +4101,4101,4101,4101,4101,4133,4133,4133,6149,6181,6181,6213,8261,8261,8229,8261, +6213,6213,6213,6213,6213,6213,6213,8261,8293,8326,10374,10374,10406,12486,12486,10438, +10374,10374,8294,8293,8261,8261,8261,8261,8294,8262,8262,8262,6181,6181,6181,6182, +6182,4134,6182,4134,6150,6150,6149,6149,6149,6149,6149,6149,8197,8197,8197,6149, +6149,6149,8229,10310,10310,10277,10244,8195,10243,10243,10243,14437,14437,12356,14470,14470, +16485,18631,20711,18566,16453,18566,20615,18567,14341,12292,10244,8196,6148,4100,4100,4100, +4100,4100,4101,4101,4101,4101,4101,4101,4133,4133,4101,4101,2053,2053,2053,2053, +2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2052,2052,2052,2052,2052, +2051,2051,2051,4,4,4,4,5,5,5,5,4,4,4,4,2052, +4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5, +5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +2052,2053,4133,6246,6279,6279,8359,8359,4166,4166,4166,4133,4133,2053,2052,2052, +4,4,4,4,4,4,4,4,2052,2052,2052,2052,2052,2053,4133,4133, +6213,6245,6246,6245,6213,4132,4133,6181,8294,8294,6213,8262,8294,8326,8294,8262, +8261,8261,8261,8261,8261,8293,8293,8293,8293,10341,10374,10374,10374,10374,8293,8293, +8261,8262,8262,8262,8262,8262,6181,6149,6149,6149,6149,4101,4101,4101,4101,4101, +4101,4101,4101,4101,4101,4101,4101,4101,4100,4101,6149,6181,6181,6181,6181,6181, +6213,6213,6246,6246,6246,6245,8293,8293,8294,8326,8326,8293,10374,10406,10406,10406, +10374,8294,8293,8261,8261,8261,8261,8261,8262,8262,8262,8262,8262,8262,8230,6182, +6182,6182,6182,6182,6150,6150,6149,6149,6149,6149,6149,6149,8197,6149,8197,6149, +6149,6182,8262,8262,10342,10309,8196,8195,10244,12324,10243,12389,12357,10243,12357,12357, +14437,16517,16517,14404,14372,14373,16453,16454,14373,10244,8196,8196,6148,4100,2052,2052, +4100,4100,4100,4100,4101,4101,4101,4101,4133,4133,4101,4101,2053,2053,2053,2053, +4101,4101,4102,4101,4101,4101,4101,4101,2053,2053,2053,2053,2053,2052,2053,2052, +2051,2051,2051,2052,2052,4,4,5,5,5,5,5,5,4,4,4, +4,2052,2052,4,4,4,4,4,5,5,5,5,5,5,5,5, +5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +2052,2052,2053,4166,6246,6279,8359,8359,6246,6246,6246,4166,4133,4133,2053,2052, +5,5,5,5,5,4,4,4,2053,2053,2053,2053,2053,2052,2053,2053, +4133,4133,4133,4133,4133,4133,4133,4133,6213,6213,6213,6214,8262,8262,8262,8229, +8229,6180,6148,6148,6180,8261,8261,8261,10341,10374,10406,10406,10406,10406,10374,10342, +8262,8262,8262,8261,8262,8262,6182,6181,6149,6149,6149,6149,6150,4101,4101,4101, +4101,4101,4101,4101,4101,4101,4101,4101,4100,4100,4100,6148,6148,6148,6148,6181, +6246,6246,8326,8326,8326,8326,8326,8326,8294,8326,8326,8293,8294,10374,10406,8326, +10407,10406,10374,8294,8294,8261,8261,8261,8229,8261,8262,8262,8262,8262,8230,6182, +6182,6182,6182,6182,6150,6149,4101,6149,6149,6149,6149,6149,6149,6149,6149,6149, +6150,6150,8230,8262,10310,10309,10244,8196,8195,10244,10244,14469,14437,10243,12324,12357, +12389,12356,12324,12292,10243,10243,12292,12325,12357,10244,8196,6148,6148,4100,2052,4133, +4101,4101,4101,4100,4101,4101,4101,4101,4101,4101,4101,4101,2053,2052,2053,2053, +4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,2053,2053,2053,2052, +4100,4132,4100,2052,2052,4,4,4,5,5,5,5,5,4,4,4, +2052,2052,4,4,5,5,5,5,5,5,5,5,5,5,5,5, +5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2052, +2052,2052,2053,4101,4133,6214,6246,6246,6279,6279,6246,6246,4166,4133,4101,2053, +5,5,5,5,4,4,4,4,4,4,5,5,2053,2052,2053,2053, +2052,2052,4100,4133,6213,6213,6213,6213,4101,4133,6181,6181,6149,4101,6181,6181, +6181,6148,6148,6148,6148,6180,6181,8229,10374,10406,12487,12519,12519,12487,10406,10374, +10342,8294,8261,8229,8229,8229,8230,6182,6149,6149,6181,6181,6150,4101,4101,4101, +4101,4101,4101,4101,4101,4101,4101,4133,4101,4101,6149,6149,6149,6181,8261,6213, +6246,6278,8326,8359,10439,10439,10407,8359,8294,8326,8326,8294,8294,8326,10374,8326, +10438,10406,8325,6213,6181,6213,8294,8326,8294,8294,8295,8294,8294,8262,6182,6182, +6182,6182,4134,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,6149,6149,6149, +6149,6150,8230,10310,8230,8197,8196,8196,10244,12324,14405,14437,16485,14405,12291,10243, +8227,8228,8228,8196,8196,8196,8196,8196,8197,8197,8197,8197,6149,6148,4100,4101, +4101,4101,4101,4101,4101,2053,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4100,4100,4100,4100,4101, +4101,4101,4101,4101,4101,2053,2052,2052,2052,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +2052,2053,4101,4101,4101,4101,4133,4133,4133,6214,6246,6214,4134,4101,4101,4133, +5,5,5,5,5,5,5,5,5,5,2053,2053,2053,2053,2053,2053, +2052,2052,2053,4133,4133,4133,4133,2053,2053,2053,2053,2053,2053,2053,4101,4101, +6149,6149,4101,4100,4100,4100,6148,6181,10374,10374,10374,10374,10406,10406,10406,10406, +8294,8294,8294,8294,8262,6213,6181,6181,6182,6181,6149,6149,4101,4101,4101,4101, +4101,4101,4101,4101,6149,4101,4101,4101,4101,4101,4101,4101,4101,4101,4133,4133, +6246,6278,8326,6278,6246,6245,6246,8294,6214,6213,6181,6181,6181,8262,8294,8326, +10438,10438,8326,8293,6213,6213,8261,8294,8294,8294,8262,8262,8230,6182,6150,6150, +6150,4102,4102,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +6149,6150,8230,8230,8230,8197,8197,8196,10245,10244,12292,14373,16485,16453,14340,10243, +8195,6147,6147,8196,8196,8196,8196,8196,8196,8197,10278,8229,8197,6149,6149,4101, +4101,4101,4101,4101,2053,2053,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +4101,4101,4101,4101,4101,4101,4100,4100,4101,4101,4101,4100,4101,4101,4101,4101, +4101,4101,4101,4101,4101,2053,2052,2052,2052,2052,2052,2052,2052,2052,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +2052,2053,4101,4101,4101,4101,4101,4101,4101,6182,6214,6214,4133,4101,4101,2053, +5,5,5,5,5,5,5,5,5,5,2053,2053,2053,2053,2053,2053, +2053,2053,2053,2085,2085,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053, +4101,4101,4101,4101,4101,4100,4101,6149,6213,8261,8293,10373,10374,10405,10406,10406, +8294,8294,8294,8262,6213,6181,6181,6149,6149,6149,6149,6149,4101,4101,6149,6149, +6149,6149,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4133, +4133,4164,4165,4133,4132,4132,4133,4133,6181,6181,6181,6213,6214,8294,8295,8327, +10438,10438,8326,8293,6213,6213,6213,8294,8262,6214,6182,6181,6149,6149,6149,4101, +4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +6149,6150,6150,6150,8198,8197,8197,8197,10277,10244,12292,14373,16485,16485,16421,12292, +10276,8195,8195,8195,8195,8196,8196,8196,8196,10245,10310,10310,8230,6149,6149,4100, +4101,4101,4101,4101,4101,2052,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +4101,4101,4101,4101,4100,4100,4100,4100,4101,4101,4101,4101,4101,4101,4101,4133, +4101,4101,4101,4101,2053,2053,2052,2052,2053,2053,2053,2052,2052,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +2052,2052,2053,2053,4101,4101,4101,4101,4101,4133,6182,4134,4101,4101,4101,2053, +5,5,5,5,5,5,5,5,5,5,5,5,2053,2053,2053,2053, +2053,2053,2053,2053,2053,2053,2053,2052,2052,2052,2052,2052,2052,2052,2052,2052, +4101,4101,4101,4101,4101,4101,4100,4100,4100,6180,6213,8293,10374,10406,10406,10406, +8294,8294,8294,8262,6213,6181,6181,6149,4101,4101,4101,4101,6149,6149,6149,6149, +6149,6149,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +4100,4100,4100,4100,4100,4100,4100,4133,4100,6181,6213,8262,8262,8294,10342,10375, +10406,10406,8326,8293,6213,6213,6213,8261,6214,6181,6181,6149,6149,6149,6149,4101, +4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +4101,4101,6149,6149,6149,6149,8197,8197,12325,12325,12325,14406,16518,18566,16485,14405, +14437,12356,10243,10243,8195,8195,10243,10244,10244,10245,10310,10310,8230,6149,6149,4100, +4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +2052,2052,2052,2052,2052,2052,2052,2052,2053,2053,2052,2053,2053,2053,4133,4133, +2053,4101,4101,4101,2053,2053,2052,2052,2053,2053,2053,2053,2053,2052,2052,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +2052,2052,2052,2053,2053,2053,2053,2053,2053,2053,4133,4133,2053,2053,2053,2053, +5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,2053, +2052,2052,2053,2053,2053,2053,2052,2052,2052,2052,2052,2052,2052,2052,2052,2053, +2053,2053,2053,2053,2053,4101,4101,4100,4100,4100,6181,6245,8325,8326,10406,10406, +8294,8294,8294,8294,8262,6213,6181,6181,4101,4101,4101,4101,4101,6149,6149,6149, +8230,6150,6149,4101,6149,6149,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +4101,4100,4101,4101,4100,4100,4133,6213,4100,6181,6213,8261,6213,8261,8294,10374, +8325,8325,8326,8293,8261,6213,6213,8261,8262,6181,6149,4101,4101,4101,4101,4101, +4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +4101,4101,4101,4101,4101,6149,8197,8197,10245,12357,14438,16518,16518,16485,16453,16453, +16452,16484,16452,14372,12291,12291,12291,10244,10244,10245,10277,10277,8197,6149,6149,6149, +4101,4101,4101,4101,4101,4101,4101,4100,4100,4100,4100,4101,4101,4101,4101,4101, +2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2085, +2053,2053,2053,2053,2052,2053,2053,2053,2053,2053,2053,2053,2053,2052,2052,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,2052,2052,2052,2053,2053,2053,2053,2052,2053,2053,2053,2053,2052,2052,4, +5,5,5,5,4,4,4,4,4,4,4,4,4,5,5,5, +2052,2052,2052,2052,2052,2052,4,4,2052,2052,2052,4,4,4,4,2052, +2053,2053,2053,2053,2053,2053,2053,4101,4101,4100,4101,4133,6213,6213,8293,8326, +8294,8294,8294,8262,6213,6213,6181,6181,6149,4101,4101,4101,4101,4101,6149,6149, +8230,6150,6149,6149,6149,6149,6149,4101,4101,4101,4101,4101,4101,4101,4101,4101, +4101,4101,4101,4101,4101,4101,6181,6213,6181,6181,6213,6213,6181,8261,8293,8294, +10373,8325,8326,8326,8293,8293,8261,8261,6214,6213,6181,6149,4101,4101,4101,4101, +4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +4101,4101,4101,4101,4101,6149,6149,8197,8196,12325,14438,16518,16454,14373,14373,16453, +14339,16452,20613,20646,18566,16453,14340,12292,12292,10244,10245,8197,8197,6149,6149,6149, +6149,6149,6149,6149,6181,6181,6149,6149,6149,6149,4101,4101,4101,4101,4101,4101, +2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052, +2052,2052,2052,2052,2052,2052,2053,2053,2053,2053,2053,2053,2053,2052,2052,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,2052,4,2053,2053,2052,4,2052,4,2052,4,4,4, +5,5,5,5,4,4,4,4,4,4,4,4,4,4,5,5, +4,2052,2052,2052,2052,2052,2052,2052,2053,2053,2052,2052,4,4,4,4, +5,2053,2053,2053,2053,2053,2053,2053,4101,2052,2052,2052,4100,4133,6181,6213, +6214,6213,6213,6181,6181,6181,6181,6181,6149,6149,4101,4101,4101,4101,4101,4101, +6149,6149,4101,4101,6149,6149,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +4101,4101,4101,4101,4101,4133,6213,8294,8294,8261,8261,6213,8261,8293,8293,8293, +10374,10406,10406,10406,10374,8293,8261,8261,6213,6181,6181,6149,4101,4101,4101,4101, +4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +2053,2053,2053,4101,4101,4101,6149,8197,8196,10245,12357,14405,14373,14341,14341,16421, +16420,18500,20613,22726,22759,20646,18501,14340,12292,12292,10245,8197,8197,6149,6149,6149, +6149,6149,6149,8229,8230,8230,8229,6149,6149,6149,6149,6148,6148,6148,6148,4100, +4100,4100,4100,4100,4100,4100,4100,4100,4101,4100,4100,4100,4100,4100,4100,4100, +2052,2052,2052,2052,2052,2052,2053,2053,2053,2053,2053,2053,2053,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,2053,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,2053,2053,2053,2053,2053,2053,4,4,4,4,4, +5,5,2053,2053,2053,2053,2053,2053,2053,2052,2052,2052,2052,2052,4101,4133, +6181,6181,6149,6149,6149,6149,6149,6149,4101,4101,4101,4101,4101,4101,4101,6149, +6149,6149,4101,4101,6149,6149,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +4102,4102,4102,4102,6181,6182,8294,8326,10375,8294,8294,8293,10374,10406,10373,10341, +12454,12486,12487,10406,10374,8294,8294,8261,6181,6181,6181,6149,4101,4101,4101,4101, +4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +2053,2085,2085,4101,4101,4101,6149,8197,8197,8197,10245,12293,12293,14373,14373,16421, +20613,20580,20581,22694,24807,22727,18533,14340,12291,12292,10244,10245,8197,6149,6149,6149, +6149,8197,8197,8229,8262,10310,8230,8229,6149,6149,6149,6148,6148,6148,6148,6148, +4100,4100,4100,4100,4100,4101,4101,4101,6149,6149,4101,4100,4100,4100,4100,4100, +2052,2052,2052,2052,2052,2052,2053,2053,2052,2052,2052,4,4,4,4,2053, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,5,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,2053,2053,2085,2053,2053,2053,2053,4,4,4,4, +5,5,5,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,4101,4101,4101, +6149,6149,6149,4100,4100,6149,6149,6181,4101,4101,4101,4101,4101,4101,6149,6149, +6149,6149,4101,6149,6181,6181,6149,4101,4101,4101,4101,4101,4101,4101,4101,4101, +4101,4102,4102,4101,6150,6182,8294,8326,10407,10374,10374,10406,12487,12519,10406,10373, +12454,12487,12487,10374,10342,10374,10374,8294,8294,8262,6214,6181,6149,4101,4101,4101, +4134,4102,4102,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +2053,2053,2053,2053,4101,4101,4100,6148,6149,8196,8196,10244,10245,12293,12293,14340, +18500,22694,22726,22662,22694,22759,20647,16421,12292,12292,10244,10245,8197,8229,8229,8229, +6148,6148,6149,8229,8229,8197,8197,8196,8197,8197,8197,8197,6148,6148,6148,6149, +6148,6148,6148,6148,6149,6149,8197,8197,8197,8197,8197,8197,6149,6148,6148,4100, +2052,2052,2052,2052,2052,2053,2052,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,2053,2053,4,4,4,4,4,5, +5,5,5,5,5,5,2053,2053,2053,2053,2053,2053,2053,2053,2053,4101, +6149,6181,6181,6181,6181,6149,6181,6181,6149,6149,6149,4101,4101,4101,4101,4101, +6149,6149,6149,6149,6149,6149,4101,4101,4101,4101,4100,4100,4100,4101,4101,4133, +4102,4102,4101,6150,6182,6182,8262,8326,10375,10406,10407,12486,12486,12486,12454,12454, +12486,12487,12454,10374,8294,10374,10374,8294,8294,8294,8262,6214,6214,6182,6182,4134, +4102,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +2053,2053,2053,2053,4101,4101,4100,6148,6149,6149,8197,8197,10245,10245,12293,12292, +16420,18532,18501,16420,16452,20614,20646,16486,12292,12292,10245,10245,8197,8229,8229,8229, +8197,8196,8196,8197,8197,8197,8196,8197,8196,8197,10245,10277,8197,8197,8197,8197, +8197,8197,8197,8197,8197,8197,8197,8197,8197,8197,8197,8197,8197,8196,6148,6148, +4100,2052,2052,2052,2052,2052,2052,4,4,4,4,4,4,4,4,4, +2052,2052,2052,2052,2052,2052,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,2053,4,4,4,4,4,2053,2053, +5,5,5,5,5,5,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053, +6181,6181,6213,6213,6181,6181,6181,6181,6149,6149,6149,6149,4101,4101,4101,4101, +6149,6149,6149,6149,6181,6181,6149,6149,4101,4101,4101,4101,4101,4101,4101,4133, +4101,4101,4101,6150,6182,6182,8262,8294,10342,10374,10374,12454,12487,12519,12519,12519, +12422,10374,10374,8261,8261,8261,8261,6181,8262,8262,8262,6214,6214,6214,6182,4134, +4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +2053,2053,2053,2053,4101,4101,4101,6148,6148,6148,8197,8197,8197,10245,10245,10244, +12292,12291,12291,12291,12292,14373,16485,16486,12293,12325,10277,10277,8229,8229,6149,8197, +8197,8196,6148,8196,8196,8196,8196,10245,8197,10277,10309,12358,12358,10310,10309,10309, +10277,10245,10245,10245,8197,10245,10245,10245,10245,10245,10245,10245,10245,8196,8196,6148, +4100,2052,2052,2052,2052,2052,2052,4,4,4,4,4,4,4,4,4, +2052,2052,2052,2052,2052,2052,2052,2052,2052,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,5,2085,2053, +2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,4101, +6181,6213,8262,6213,6213,6181,6181,6181,6181,6181,6149,6149,4101,4101,4101,4101, +6149,6148,6149,6181,6181,6181,6181,6181,4133,4133,4133,4133,4133,4133,4133,4133, +4101,4101,6150,6149,6182,6182,8262,8262,8261,8261,8261,8293,10342,10374,10406,12454, +10341,10341,10341,8261,8261,8229,6181,6148,6181,6181,6214,6214,6214,6182,4134,4134, +4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +2053,2053,2053,4101,4101,4101,4101,4101,4100,6148,6149,8197,8197,8197,8197,8196, +10244,8195,8195,10244,10244,10244,10244,12292,12325,10277,12357,10309,10277,8229,8229,8197, +8196,8196,8196,8196,10245,10245,10245,10277,12358,12358,12390,12390,12390,12358,12358,12358, +12326,10278,10245,10245,10245,10245,10245,10245,10245,10245,10245,10245,10245,10245,8196,8197, +4101,2053,2052,2052,2052,2052,2052,4,4,4,4,4,4,4,4,4, +2052,4100,4100,2052,2052,2052,2052,2052,2052,2052,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,2053,4,4,4,4,4,4,2053, +2052,2052,2052,2052,2052,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5, +2053,2053,2085,2085,2086,2085,2053,2053,2053,2053,2053,2053,2053,4101,4102,4134, +6213,6213,8262,8262,8262,6213,6181,6181,6182,6181,6149,6149,4101,4101,4101,4101, +6148,6148,6149,6181,6181,6181,6181,6181,6181,6181,6181,6213,4133,4133,4133,4133, +6149,6181,6181,6181,6182,8262,8262,8229,8229,6181,6181,6148,6180,8229,8261,8261, +10341,10341,10342,10374,10342,8261,6181,6148,6149,6149,4133,4133,4133,4133,4133,4101, +4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +2053,2053,2053,4101,4101,4101,4101,4101,4100,4100,6149,6149,6149,6149,6149,6148, +6148,6147,6148,8228,8196,8195,8195,8196,10244,10277,10309,10309,8261,8229,8229,8261, +10244,10244,10244,12325,12358,12358,12357,12358,14471,14470,14438,12358,12357,12357,12325,12325, +12326,10278,10245,10245,10245,8197,10245,8197,10245,8197,10245,8197,10245,8197,8197,8197, +4101,2053,4,4,4,2052,4,4,4,4,4,4,4,4,4,2052, +2052,4100,4100,4100,4100,4100,4100,2052,2052,2052,2052,2052,2052,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,2053,2053,2052,4,2052,4,2053,2053, +2052,2052,2052,2052,2052,2052,2052,2052,2052,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,2053,2085,4133,4166,4133,2053,2053,2053,2053,2053,2053,4101,4101,4134,6182, +6213,6213,8262,8262,8262,6213,6181,6181,6181,6181,6149,6149,4101,4101,4101,4101, +6148,6148,6149,6149,6181,6181,6181,6181,6213,6213,6213,6213,6213,6213,6213,6213, +6181,6213,6181,6181,8262,8294,8294,8229,8261,8229,6149,6148,6148,6148,8197,8197, +8228,8228,10309,10342,10342,8229,6148,4100,6149,4101,4101,4133,4133,4133,4101,4101, +4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +4101,4101,4101,4101,4101,4101,4101,4101,4100,4100,4100,6148,6148,6148,6148,4100, +4100,2051,4099,4100,4100,4099,6148,8196,8196,8196,10277,8229,8228,8228,8229,10309, +10277,10245,12325,14438,14438,14438,14406,14406,16519,14438,12358,12325,12293,10245,10245,10244, +10245,10245,8197,8197,8197,8196,8196,8196,8196,8196,8196,8196,8197,8197,8197,6149, +4133,2053,2052,4,4,2052,4,4,4,4,4,4,4,4,4,2052, +4100,4100,6148,6149,6149,6149,4100,4100,4100,4100,2052,2052,2052,2052,2052,2052, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,2053,2053,2052,2052,2052,2052,2053,2052, +2052,4100,4100,4100,4100,2052,2052,2052,2052,2052,2052,4,4,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5, +4,2052,2053,4133,4133,4133,2053,2052,2053,2053,4101,4101,4101,4101,4101,4133, +6213,6213,6213,8262,8262,6213,6181,6149,6181,6149,6149,4101,4101,4101,4101,4101, +6148,6148,4100,6149,6149,6181,6181,6181,6213,6213,6246,6246,8326,8326,8326,8326, +8294,8294,8262,6181,8229,8294,8294,6181,6181,6149,6149,6148,6148,6148,6149,8197, +8196,6147,8196,8229,8229,6148,6148,4100,6149,4101,4101,4101,4101,4101,4101,4101, +4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +4101,4101,4101,4101,4101,4101,4101,4101,4100,4100,4100,4100,4100,4100,4100,4100, +2052,2052,2052,2052,2051,4100,6148,6148,6148,6148,8196,8196,6148,6148,8228,10276, +10244,10244,12293,12357,14406,12357,12325,12325,14406,12325,12293,10244,10244,10244,10244,8196, +8196,6148,6148,6148,6148,6148,6148,6148,6148,6148,6148,6148,6148,6148,6148,6181, +4133,2085,2052,4,4,2052,4,4,4,4,4,4,4,4,4,2052, +4100,6148,6149,8229,8261,6181,6149,6149,4101,4100,4100,2052,2052,2052,2052,2052, +4,4,4,4,4,5,5,2085,4,4,4,4,4,4,4,4, +4,2052,2052,2052,2052,2052,2052,2052,2053,2053,2053,2052,2052,2053,2053,2052, +4101,4100,4101,4101,4101,4100,2052,2052,2052,2052,2052,2052,2052,4,4,4, +4,4,4,4,4,4,4,4,4,4,4,4,5,37,2085,2085, +2052,2052,2053,2053,2053,4101,4133,4133,4101,4133,4133,6182,6182,4133,4101,4101, +6181,6181,6181,6213,6213,6181,6149,4100,6149,6149,4101,4101,4101,4101,4101,4101, +6148,6148,4100,6149,6149,6149,4101,4100,6181,6213,6246,8326,8359,8359,8359,10407, +8326,10374,8294,6181,6181,8294,8261,6148,6149,6148,6148,6148,6148,6148,6149,6148, +6148,6148,6148,6149,6181,6148,4100,6181,4101,4101,4101,2052,2053,2053,2053,2053, +2053,2053,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +4101,4101,4101,4101,4101,4101,4101,4101,4100,4100,2052,2052,2052,2052,2052,2052, +4,2085,2085,2052,2052,2052,4100,4099,4100,6148,6148,6148,4099,6147,6148,8228, +10244,10244,10244,10245,10277,10244,8196,8196,10277,10244,8196,8196,10244,8196,8196,6147, +6147,4100,6148,6148,6148,6148,4100,4099,6148,6148,6148,6148,6148,6148,6148,6180, +4133,2085,2052,4,4,2052,4,4,4,4,4,4,4,4,4,2052, +4100,6148,8229,8261,10310,8261,8229,6149,6149,6148,4100,4100,2051,2051,2052,2052, +4,4,4,4,2053,2053,2085,2085,2053,2053,2053,4,4,4,4,4, +2052,2052,2052,4101,4101,4101,4101,4101,4100,2052,2052,2052,2052,2052,2052,2052, +4100,4100,6180,6181,4101,4100,4100,2052,2052,2052,2052,2052,2052,2052,2052,4, +4,4,4,4,4,4,4,4,4,4,4,36,2085,2117,2118,4197, +4165,4133,2084,2052,2052,4133,4165,6214,6214,6246,6246,6246,6214,6214,6181,4101, +6181,6181,6181,6213,6214,6181,4101,4100,4101,4101,4101,4101,4101,4101,4101,4101, +4100,4100,4101,4100,4101,4100,4100,4100,6181,6213,6246,8326,8359,10439,10439,10439, +10407,10407,8294,6181,6149,8261,6181,4100,6149,6149,6149,6149,6149,6149,6149,6148, +4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,2053,2053, +2053,2053,2053,2053,2053,2053,2053,2053,4101,4101,4101,4101,4101,4101,4100,4100, +4101,4101,4101,4101,4101,4101,4101,4101,2053,2053,2053,2052,2052,4,4,4, +2052,2052,2052,2052,2052,2052,2052,2052,2052,4100,4100,4100,6148,6148,6148,6148, +8196,8196,8196,8196,8196,6148,6149,6149,6148,6148,6148,6148,6148,6148,6148,6148, +4100,4100,4100,4100,4100,4100,4100,4100,4100,4100,4100,4100,4100,4100,4100,4100, +2084,2052,2052,4,4,4,4,4,4,4,4,4,4,4,4,4, +4100,6148,8229,8261,10309,10277,10245,10277,8197,8196,6148,4099,4099,4099,2051,2052, +2052,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2052, +4100,4100,4101,4101,6149,6149,6149,6149,8229,6149,6148,4100,4100,2052,2052,2052, +4099,4099,4099,4100,4100,4099,4099,2051,2052,2052,2052,2052,2052,2052,2052,2052, +2052,4,4,2052,4,4,4,4,4,4,4,36,37,2149,2150,4230, +4230,4229,4197,4197,4197,4230,6278,6246,6278,6278,6246,8327,8327,6246,4133,2052, +4101,4133,4133,6214,6214,4133,4133,4101,4101,4101,4101,4101,4101,4101,4101,4101, +4101,4101,4101,4101,4101,6149,6149,6149,4101,6181,6214,8294,8327,10407,10408,10440, +10407,10375,8262,8230,6149,6149,6149,6149,4101,4101,4101,4101,4101,4101,4101,4101, +4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,2053,2053, +2053,2053,2053,2053,2053,2053,2053,2053,4101,4101,4101,4133,4133,4101,4133,4101, +4101,4101,4101,4101,4101,4101,4101,2053,2053,2053,2053,4,4,4,4,4, +2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,4100,4100,6148,6148,6148, +6148,6148,6148,6148,6149,6149,6149,4133,4100,4100,4100,4100,4100,4100,4100,4100, +4100,4100,4100,4100,4100,4100,4100,4100,4100,4100,4100,4100,2052,2052,2052,2052, +2052,2052,2052,4,3,3,3,3,4,4,4,4,4,4,4,2052, +4100,6180,8261,8261,10277,10277,10245,12293,10244,8196,8196,6147,6147,4099,2051,2051, +4100,4101,4101,4101,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2052, +4100,4100,4100,4100,6149,6149,8197,8197,8197,8197,6148,6148,4100,4100,4100,4100, +6147,6147,6147,6147,6148,6147,4100,4099,4100,4100,4100,4100,2052,2052,2052,2052, +2052,2052,2052,2052,2052,2052,2052,4,4,4,4,4,2084,2117,2149,4197, +6375,6342,4262,4230,6310,6310,8391,8391,8359,6278,6246,6246,6246,6214,4133,4101, +2053,2053,4133,4133,4133,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +4101,4101,4101,4101,4101,4101,4101,4101,6181,6181,6181,6214,8262,8294,8327,10375, +8295,8262,8230,6150,6149,6149,6149,4101,4101,4101,4101,4101,4101,4101,4101,4101, +4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,2053, +2053,2053,2053,2053,2053,2053,2053,2053,2053,4101,4133,6181,6181,6181,6181,6181, +6149,4101,4101,4101,4101,4101,4101,2053,2053,2053,2053,4,4,4,4,4, +2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,4100,4100,4100,6148,6148, +6148,6148,6148,6148,6148,4100,4100,4100,4100,4100,4100,4100,4100,4100,4100,4100, +4100,4100,4100,4100,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052, +2052,2052,2052,2052,3,3,3,3,3,3,4,4,4,4,4,2052, +4100,6148,6180,8229,10277,10277,10245,10245,10244,10244,8196,8196,6148,6148,4099,4100, +4100,4101,4101,2052,2052,2052,2052,2052,2053,2052,2052,2052,2052,2052,2052,2052, +2052,4100,4100,4100,6148,6149,6149,8197,8197,6149,6149,6148,4100,6181,4133,6181, +6148,6148,6148,6148,6148,6148,6148,6148,6148,4100,4100,4100,4100,4100,4100,4100, +2052,2052,2052,2052,2052,2052,2052,4,2052,4,4,4,2052,2084,2117,4165, +6342,6310,4229,4197,4197,6278,8359,8391,6278,6246,4165,4133,4133,4133,4133,4101, +2052,2052,2053,2053,2053,2053,4101,2053,4101,4101,4101,4101,4101,4101,4101,4101, +4101,4101,4101,4101,4101,4101,4101,4101,6181,6181,4101,4101,6149,6181,6214,8262, +6149,6149,6149,6149,6149,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,2053,2053,4101,4101,4101, +2053,2053,2053,2053,2053,2053,4101,4101,4101,4133,6214,6214,6214,6214,6181,6181, +6181,6149,6149,4101,4101,4101,2053,2053,2053,2053,2053,4,4,4,4,4, +2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,4100,4100,4100,6148,6149, +6149,6148,6148,6148,6148,4100,4100,4100,2052,2052,2052,2052,2052,2052,4100,2052, +2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052, +2052,2052,2052,2052,4,3,3,3,3,3,4,4,2052,2052,2052,2052, +4099,4099,6148,8196,8196,10244,10244,10244,10244,10244,10244,8228,8228,6180,6180,4100, +4100,4101,4101,4101,2052,2052,2052,2052,2053,2053,2053,2052,2052,2052,2052,2052, +2052,2052,4100,4100,4100,6149,6149,6149,6181,6149,6149,6149,4101,4133,4133,6181, +8196,8196,8196,8195,8196,8196,8196,8196,6148,6148,6148,6148,6148,6148,4100,4100, +2052,2052,2052,2052,2052,2052,2052,2051,2052,2052,2052,2052,2052,2052,2052,2084, +4165,4164,2084,2052,2084,4132,4165,4197,6246,4165,4133,2052,2053,2053,2053,2053, +2053,2053,2052,2052,2053,2053,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,6149, +4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,2053,2053, +2053,2053,2053,2053,2053,4101,4101,4101,4101,4101,2053,2053,2053,2053,4101,4101, +2053,2053,2053,2053,2053,4101,4101,4101,6182,6182,6214,8262,8262,6214,6181,6149, +6181,4133,4133,4101,4101,4101,2053,2053,2053,2053,2053,4,4,4,4,4, +2053,2053,2052,2052,2052,2052,2052,2052,2052,2052,4100,4100,4100,6149,8229,8262, +8197,8197,6148,4100,4100,4100,4100,2052,2052,2052,2052,2052,2052,2052,2052,2052, +2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,4100,2052, +2052,2052,2052,2052,2052,2052,2052,2052,3,3,2052,4,2052,2052,2052,2052, +4100,4099,6148,8196,8196,10244,10244,10244,10244,10244,10277,10277,8229,8228,6180,6180, +4100,4100,4100,4100,4100,4100,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052, +2052,2052,2052,4100,4100,4101,6149,6149,6149,6149,4101,4100,4100,4100,4132,4132, +6148,8195,8195,8195,8195,8196,8196,8196,8196,8196,8196,6148,6148,6148,6148,4100, +4100,2052,2052,2052,2052,2052,2052,2052,2052,2052,2051,2051,2051,2052,2052,4100, +2052,2051,2052,2052,2051,2052,2052,2052,4133,2052,2052,2052,2052,2052,2052,2052, +2053,2052,2052,2052,2052,2053,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +4101,4101,4101,4101,4101,4101,2052,2052,2053,2053,2053,2053,2053,2053,2053,2053, +2053,2053,2053,2053,2053,2053,2053,2053,4101,4101,2053,2053,2053,2053,4101,4101, +4101,4101,4101,4101,4101,4101,4101,6149,6214,6214,8262,8262,8262,6181,6181,6149, +4133,4101,4101,4101,4101,2053,2053,2052,2053,2053,2053,2052,4,4,4,4, +2053,2053,2052,2052,2052,2052,2052,2052,2052,2052,4100,4100,4100,6149,8261,8294, +8197,8197,6148,4100,4100,4100,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052, +2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,4100,4100, +2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052, +6148,6148,6148,8196,8196,10245,10245,10245,10244,10244,10277,10277,8229,8228,6180,6148, +4100,4100,4100,4100,4100,4100,4100,4133,2052,2052,2052,2052,2052,2084,2084,2052, +2052,2052,2052,4100,4100,4100,4101,4101,4100,4100,4100,4100,4100,2052,2052,4100, +6147,6147,6147,8195,8195,8195,8196,8196,8196,6148,6148,6148,6148,6148,6148,4100, +4100,4100,4100,4132,4100,4132,4133,6180,4100,4100,4100,4099,4100,4099,4100,4100, +2051,2051,2052,2051,2051,2051,2051,2052,2052,2052,2052,2052,2052,2052,4,2052, +2052,2052,2052,2052,2052,2052,2053,4101,4101,4101,4101,4101,4101,4101,4101,6149, +4101,4101,4101,4101,4101,4101,4101,4101,4100,4100,4101,4101,4101,4101,4101,4101, +4101,4101,4101,4101,4101,2053,2052,2052,2052,2053,2053,2053,2053,2053,2053,2052, +2052,2052,2052,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,4101, +4101,4101,4101,4101,4101,6149,6181,6181,6214,8262,8262,6214,6213,6181,6149,6149, +4101,4101,4101,4101,4101,2053,2052,2052,2053,2053,2053,2052,2052,4,4,2052, +2053,2053,2053,2053,2053,2052,4,4,2052,2052,4100,4100,4100,4101,6181,8294, +8229,8197,6149,4100,4100,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2084, +36,36,36,2052,4,2052,2052,2052,2052,2052,2052,2052,4100,4100,4100,4100, +2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,4100, +6180,6148,6148,6148,8196,10245,10277,10245,10244,10244,10244,8196,8196,8196,6148,6148, +4100,4100,4100,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2084,2084,2084, +2052,2052,2052,2052,4100,4100,4100,4100,2052,2052,2052,2052,2052,2052,2052,2051, +4099,6147,6147,6148,6148,6148,6148,6147,6148,6148,6148,6148,6148,6148,6147,4099, +4100,4100,4100,4100,4132,6180,6181,6213,6148,6148,6148,6148,4100,6147,6148,4099, +4099,4099,4100,2051,2051,2051,2051,2052,2052,2052,2052,2052,4,4,2052,2052, +2052,4100,4100,4100,4101,4101,4101,4101,6181,6149,6149,6149,6149,6149,6149,6149, +6149,6149,6149,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +4101,4101,4101,4101,2053,2053,2052,2052,2052,2052,2053,2053,2053,2053,2052,4, +2052,2052,2052,2052,2052,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,4101, +4101,4101,4101,4101,6149,6149,6181,6181,6214,6214,6182,6182,6181,6181,6181,6149, +4101,4101,4101,2053,2053,2053,2052,2052,2053,2053,2053,2052,2052,2052,2052,2052, +2053,2053,2053,2053,2053,2053,4,4,2053,2053,2053,2052,2052,4100,6181,8262, +8230,8229,6149,4100,4100,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2084, +2052,36,36,4,4,2052,2052,2052,2052,2052,2052,2052,4100,4100,4100,4100, +2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,4100, +6148,6148,6147,6148,8196,8196,10245,10244,8196,8196,8196,8196,8196,8196,6148,6148, +4100,4100,4100,2052,2052,2051,2052,2051,2052,2052,2052,2052,4100,2084,4132,4132, +2052,2052,2052,2052,2052,2052,4100,2084,2052,2052,2052,2052,2052,2052,2052,2051, +4099,4099,6147,6148,6148,6148,6147,4099,6147,4099,4100,4100,4100,4099,4099,4099, +4099,4099,4099,4100,6148,6180,6181,8229,8229,8229,8196,6148,6148,6148,6148,6148, +6148,6148,4100,4100,2051,2051,2052,4100,2052,2052,2052,2052,4,4,2085,2085, +4101,4101,4133,4133,4133,4133,4101,4101,6181,6181,6181,6149,6149,6181,6181,6181, +6181,6181,6181,6149,4101,4101,4101,4101,4101,4101,4100,4100,4100,4100,4100,4101, +4101,2053,2053,2053,2053,2053,2053,2053,2052,2052,2053,2053,2053,2053,4,4, +4,4,4,4,4,4,2052,2052,2052,2052,2053,2053,2052,2053,4101,4101, +4101,4101,6149,6181,6213,6213,6213,6213,8294,6213,6181,6149,4101,4101,4101,4101, +4101,4101,4101,4101,4101,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053, +2053,2053,2053,2053,2053,2053,2053,2053,2053,2052,2053,2053,4101,4101,4101,4101, +6149,6149,6149,4101,4101,4100,2052,2052,2052,2052,2053,2053,2053,2052,2052,2052, +2084,2084,2052,2052,4,2052,2052,2052,2051,2052,2052,4100,4100,4100,4100,4100, +2052,2052,2052,2052,2052,2052,2052,2052,4100,4100,4100,4100,4100,4100,4100,4100, +4100,6148,6148,6148,6148,8196,8196,8196,8196,8196,8196,8196,8196,8196,8196,8196, +6148,6148,4100,4099,2051,2051,2051,4099,4100,2051,4100,4100,4100,4100,4100,4100, +2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052, +4100,4100,4100,4100,4099,4100,4099,4099,4099,2051,4099,2051,4099,4099,4099,4099, +4099,4099,4099,4099,4099,6148,6180,6180,8229,8228,8228,8196,8196,8196,8196,8196, +6181,6181,6181,6180,4100,4100,2052,2052,2051,2052,2052,2052,2085,2085,2085,2085, +4133,4133,4133,4133,6181,6213,6214,6214,6213,6214,8262,8262,8262,8262,8262,6213, +6214,6214,6182,6181,6181,4101,4101,4101,4100,4100,4100,4100,4100,4100,4100,4100, +4101,2053,2053,2053,2053,2053,2053,2053,2052,4,4,4,4,4,4,4, +4,4,4,4,4,4,2052,2052,2052,2052,2053,2053,2052,2053,4101,4101, +4101,6149,6181,8262,8294,8294,8262,6214,8262,6181,6149,4101,4101,4101,4101,4101, +4101,4101,4101,4101,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053, +2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2085,2053,4101,4101,4101, +6149,4101,4101,4101,4101,2052,2052,2053,2085,2085,4133,4133,4133,4133,4101,4101, +2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,4100,4100,4100,4100,4100,4100, +2052,2052,2052,2052,2052,4100,4100,4100,4100,4100,4100,4100,4100,4100,4100,4100, +4100,4100,6148,6148,6148,6148,6148,8196,8196,8196,8196,8196,8196,8196,8196,8228, +8229,6180,6148,6148,4100,4099,4099,4099,4100,4100,4100,4100,4100,4100,4100,4100, +2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052, +2052,2052,2051,2051,2051,2051,2051,2051,2051,2051,2051,2051,2051,2051,2051,2051, +4099,4099,4099,4099,4099,6147,6148,6148,8228,8228,8196,8196,8196,8196,8196,8196, +6148,6180,6181,6181,6180,4132,4100,4100,4100,4100,4133,2085,4133,4165,4133,4133, +4165,4133,6181,6213,6213,6214,8294,8294,6214,6214,8262,8262,8262,8262,8262,8262, +8262,8262,6214,6182,6181,4101,4101,4101,4101,4101,4101,4100,4100,4100,4100,4100, +2053,2053,2053,2053,2053,2053,2053,2052,2052,4,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,2052,2052,2053,2053,2053,2053,4101,4101, +6181,6181,8294,8326,10375,8326,8294,8294,6214,6181,4101,4100,4101,4101,4101,4101, +4101,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053, +2053,2053,2053,2053,2053,2053,2053,5,5,2053,2053,2053,2053,4101,4101,4101, +4101,4101,4101,4101,4101,4101,2053,2053,2053,4101,4101,4101,4101,6149,6149,4101, +4100,4100,4100,4100,4100,4100,4100,4100,2052,4100,4100,4100,4100,4100,4100,4100, +2052,2052,2052,2084,4100,4100,4100,4100,4100,4100,4100,4100,4100,6148,4100,4100, +4100,4099,4100,4100,6148,6148,6148,6148,6147,6147,6147,6147,6148,6148,8196,8228, +8196,8228,8229,8229,8228,8196,6148,6147,6148,6148,6148,6148,4099,4099,4099,4100, +4100,2052,2052,2052,2052,2052,2052,2052,4,2052,2052,2052,2052,2052,2052,2052, +2052,2052,2052,3,2051,2051,2051,2051,2051,2051,2051,2051,2051,2051,2051,2051, +4099,4098,4099,4099,4099,6147,6147,6147,8196,8196,8196,8196,8196,8196,8196,8196, +6148,4100,6180,6181,6181,6213,6213,6213,4133,4165,6213,4165,4166,4165,4165,4133, +6213,6213,6213,6246,8294,8294,8294,8294,6213,6213,8261,8261,8262,8294,10342,10375, +8294,8294,8262,6214,6181,4101,4101,4101,4101,4101,4101,4101,4101,4100,4100,4100, +2053,2053,4101,2053,2053,2053,2053,2052,2052,2052,4,4,4,4,4,4, +4,4,4,4,4,4,4,4,2052,2052,2053,2053,2053,4101,4101,4101, +6213,8294,10374,10407,10439,10407,8326,8294,6181,4133,4100,4100,4101,4101,4101,2052, +2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053, +2053,2053,2053,2053,2053,2053,2053,5,5,5,2053,2053,2053,2053,4101,4101, +4101,4101,4101,2053,2053,4101,2053,4101,4101,4101,4101,6149,6149,6149,6149,6149, +6149,6181,6181,6181,4101,4100,4100,4100,4100,4100,4100,4100,4100,4100,4100,2052, +2052,2052,2084,2084,4132,4100,4100,4100,4100,4100,6149,6149,6149,6148,6148,6148, +4100,4099,4099,4099,4100,4100,4100,4100,4099,4099,4099,4099,6147,6148,8196,8196, +8196,8196,8228,10277,10309,10277,8228,8228,8196,8196,6148,6148,6148,6148,6147,4100, +4100,4100,2052,2052,2052,2052,2052,2052,4,2052,2052,2052,2052,2052,4100,2052, +2051,3,3,3,2051,2051,2051,2051,2051,2051,2051,2051,2051,2051,2051,4099, +4099,6147,6147,6147,6147,6147,6147,6147,6147,6147,6147,6147,6147,6147,6147,6148, +4099,4100,4132,4133,6213,6213,6213,6213,6213,6213,6246,8326,6246,6246,6246,6246, +6246,8294,8294,8294,8294,6214,6213,6181,6181,6181,6181,6181,8261,8294,10342,10375, +8294,8294,6214,6214,6181,6149,4101,4101,4101,4101,4101,4101,4101,4101,4100,4100, +4101,4101,4101,4133,4133,4133,2053,2052,2053,2052,2052,4,4,4,4,4, +4,4,4,4,4,4,4,2052,2052,2052,2053,2053,2053,4101,4101,4133, +6213,8326,10439,12519,12519,10439,8326,6246,4133,4132,4100,2052,2052,2052,2053,2052, +2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053, +2053,4101,2053,2053,2053,2053,2053,5,5,5,2053,2053,2053,2053,2053,2053, +2053,2053,2053,2053,2053,2053,4101,4101,4133,6181,6149,6150,8198,8198,10246,10278, +8197,6181,6149,6149,6149,6149,6148,4100,4100,4100,4100,4100,4100,4100,2052,2052, +2052,2052,2084,2084,4132,4100,4100,4100,4100,6149,6149,6149,6149,6149,6148,6148, +4100,2051,2051,2051,4099,4099,4099,4099,4099,4099,4099,4099,4099,6147,6148,8196, +8196,8196,8196,10276,10276,10276,10276,10276,10276,8228,8228,8196,8196,8196,6148,6148, +4100,4100,4100,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,4100,4100,4100, +2052,2052,2052,2051,2051,2052,2051,2051,4099,4099,4099,4099,4099,4099,4099,6147, +6147,6147,6147,6147,6147,6147,6147,6147,6147,6147,6147,6147,6147,6147,6147,4099, +4099,4100,4132,4132,4133,4165,4133,4133,6214,6214,8294,8359,8359,8327,8327,10439, +10375,8327,8326,8326,8294,6213,6181,6149,6149,6149,6149,6149,6181,8261,8262,8294, +6214,6214,6182,6181,6181,6181,6149,6149,4101,4101,4101,4101,4101,4101,4101,4101, +4101,4101,4133,4134,4133,4133,4101,2053,2053,2052,2052,2052,2052,4,2052,2052, +4,4,4,4,4,4,4,4,2052,2052,2053,2053,4101,4101,4101,4133, +6245,8325,10406,10439,10439,8358,6246,6213,4132,2052,2052,2052,2052,2052,2052,2052, +2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053, +4101,4101,2054,2053,2053,2053,2053,5,5,5,2053,2053,2053,2053,2053,2052, +2053,2052,2052,2052,2053,2053,2053,4101,4101,6149,6149,8197,8198,10246,10246,10278, +8197,8197,8197,8197,6149,6149,6149,6181,4100,4100,4100,4100,4100,2052,2052,2052, +2052,2052,2052,4100,4100,4100,4100,4100,4100,6149,6149,6149,6149,6149,6148,6148, +2051,2051,2051,2051,2051,2051,2051,2051,4099,4099,4099,4099,4099,6147,6148,8196, +10244,10244,10244,10244,10244,10244,10244,8196,10276,10276,10276,8228,8196,8196,8196,8196, +6148,4100,4100,4100,2052,2052,2052,2052,2052,2052,2052,2052,4100,4100,4100,4100, +2052,2052,2052,2052,2052,2052,4100,4100,4100,4100,4099,6147,6147,6147,6147,6147, +8228,8228,8196,8195,8195,8195,8195,8228,6147,6147,6147,6147,6147,6147,6147,4099, +4100,4132,4132,4132,4132,4132,4133,4133,6213,6213,8294,10407,10407,10375,10375,12488, +10407,10407,8326,8294,6214,6181,6149,4100,6149,6149,6148,6149,6149,6181,6181,8229, +6149,6181,6181,6181,6149,6149,6149,6149,4101,4101,4101,4101,4101,4101,4101,4101, +4101,4101,4133,4133,4133,4133,4101,4101,2053,2053,2052,2052,2052,2052,2052,2052, +36,36,4,4,4,4,4,4,2052,2052,2053,2053,4101,4101,4101,4133, +6213,6245,8358,8358,8358,6245,4165,4100,2052,2052,2052,2052,2052,4,4,4, +2052,2052,2052,2052,2052,2053,2053,2053,2053,2053,2053,2053,2053,4101,4101,4101, +4102,4102,2054,2054,2053,2053,2053,5,5,5,5,2053,2053,2053,2052,2052, +2053,2052,2052,2052,2052,2053,2053,4101,4101,6149,6149,8197,8197,10246,12294,12294, +10278,10245,8197,8197,8197,6149,6149,6149,4100,4100,4100,4100,4100,2052,2052,2052, +2052,2052,2052,4100,4100,4100,4100,4100,4100,6148,6149,6149,8197,6149,6148,6148, +2051,2051,2051,2051,2051,2051,2051,2051,2051,2051,4099,4099,6148,6148,6148,8196, +10244,10244,10244,10244,10244,10244,10244,10244,10244,10244,10244,8196,8196,8196,8196,8196, +6148,6148,4100,4100,2052,2052,2052,2052,2052,2052,2052,2052,4100,4100,4100,4100, +4100,4100,4100,4100,4100,4100,6148,6148,6148,6148,6148,6148,6148,8196,8195,8228, +10276,10276,10276,8228,8228,8228,8228,8228,6147,6147,6179,6179,6147,6147,4099,4099, +4132,4132,4132,4132,4132,4132,4100,4100,4101,4101,6213,8327,8295,8230,8262,10375, +8294,8294,6214,6213,6181,6181,6149,6149,6149,6149,6148,6148,6148,6148,6148,6148, +4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,6149, +4101,4101,4101,4101,4101,4101,4101,4101,2053,2053,2052,2052,2052,2052,2052,2052, +4,4,4,4,4,4,2052,2052,2052,2052,2053,2053,4101,4101,4101,6181, +6181,6213,8294,8326,6278,6213,4100,2052,2052,2052,4,4,4,4,4,4, +2052,2052,2053,2053,2053,2053,2053,2052,2053,2053,2053,2053,2053,2053,4101,4101, +4101,4101,4101,2053,2053,2053,2053,5,5,5,5,2053,2053,2052,2052,2052, +2053,2052,2052,2052,2052,2052,2052,4100,6149,6149,8197,8197,10245,12294,12294,12326, +14406,12358,10245,8196,6148,6148,6148,4100,4100,4100,4100,2052,2052,2052,2052,2052, +2052,2052,4100,4100,4100,4100,4100,4100,6148,6148,6148,8197,8197,6148,6148,4100, +2052,2052,2052,3,2051,2051,2051,2051,2051,2051,4100,4100,6148,6180,6180,8228, +8196,10244,10244,10244,10244,10244,10244,10244,10244,8196,8196,8196,8196,8196,8196,8196, +6148,6149,4100,4100,4100,2052,2052,2052,2052,2052,2052,2052,4100,4100,4100,4100, +4100,4100,4100,4100,4100,4100,6148,6148,6148,6148,6148,8196,8196,8196,8228,8196, +10276,10276,10276,10276,10244,8196,8196,8228,6147,6147,6179,6179,6147,4099,4099,2051, +4132,4132,4133,4133,4133,4133,4101,4101,4100,2052,4101,6214,6182,4101,4101,6181, +6181,6149,4101,4101,4100,4101,6149,6149,6149,6149,6149,6149,6149,4100,4100,4100, +4100,4100,4101,4100,4101,4100,4101,4100,4101,4100,4101,4101,4101,4133,6149,4133, +4101,4101,4101,4101,4101,4101,4101,4101,2052,2053,2052,2052,2052,2052,2052,2052, +2052,2053,4133,2053,2053,4133,2053,4,2052,2053,4101,4101,4101,4133,4133,4101, +4101,4133,6214,6214,6214,4133,4101,2052,2052,2052,4,4,4,4,4,4, +2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2052,2053,2053,2053, +4133,4133,4133,4133,2053,2053,2053,2052,4,4,5,5,4,4,4,4, +2053,2053,2052,2052,2052,2052,4100,4100,4100,6149,8196,8196,10245,12293,14406,16486, +16518,14438,12325,10244,8196,6148,4100,4100,4101,4101,2053,2052,2052,2052,2052,2052, +2052,4100,4100,6148,6148,6148,6148,8196,8196,8196,8196,8196,8196,6148,6148,4100, +2052,36,4,4,4,4,2052,2052,2051,2051,2052,4099,4100,6148,6180,6180, +8228,8228,8196,8196,8196,8196,8196,6147,6148,6148,8196,6148,6148,6147,6148,6147, +4100,4100,4100,4100,2052,2052,2051,2051,2051,2051,2051,2051,2051,2051,2051,2051, +4100,4100,4100,4100,4100,4100,4100,6148,6147,6147,6147,6147,8195,8196,8196,10244, +10244,12292,12292,12292,12292,12292,12324,10276,10244,10276,8228,8228,6180,4099,4099,4099, +4100,4101,4133,4133,4133,4133,4101,4100,4101,4101,4101,4101,4101,4101,4101,4101, +4101,4101,4101,4101,4101,4101,4101,4101,4101,6149,6149,6149,4101,4101,4101,4101, +4100,4100,4100,4100,4100,4100,4100,4100,4100,4100,4100,2052,4100,4100,4100,4100, +2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2053,2053,2053,2053, +4101,4133,4133,4101,4101,4133,4101,4101,4101,4101,4133,4133,4133,4133,4101,4101, +4101,4101,4134,4134,4134,4101,2053,2053,2053,2053,5,5,4,4,4,5, +2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2052,2053,2053,2053, +4101,4165,4165,4133,2053,2053,2052,2052,2052,2052,5,5,4,4,5,5, +2053,2053,2052,2052,2052,2052,2052,4100,4100,6148,6148,8196,10244,12325,14438,16518, +16550,14470,12357,10244,8196,6148,6148,4101,4101,4101,2053,2053,2052,2052,2052,2052, +4100,4100,6148,6149,8197,8197,8197,10245,8196,8196,8196,8196,8196,6148,6147,4100, +2052,5,4,4,4,4,2052,2052,2051,2052,2051,4100,4100,4100,6148,6148, +8196,8196,8196,8196,8196,6148,6148,6148,6148,6148,6148,6148,6148,4099,6147,4099, +4100,4100,4100,2052,2052,2051,2051,2051,2051,2051,2051,2051,2051,2051,2051,2051, +2052,2052,2051,2051,2051,4100,4099,4100,6148,6147,6147,6147,8195,8196,8196,10244, +12292,12292,12292,12292,12292,12292,12292,12292,10244,10244,8228,8228,6148,4099,4099,4099, +6149,4101,6149,6149,6149,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +4100,4100,4100,4100,4100,4100,4100,4100,4100,4100,4100,2052,2052,4100,4100,4100, +2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2053,2053,2053,2053,2053,2053, +4166,6214,4166,4101,4101,4133,4166,6214,6214,6214,6214,6214,6214,4133,4101,4101, +4101,4101,4101,4101,4101,4101,2053,2053,2053,2053,2053,2053,5,5,5,5, +2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2052,2052,2053,2053,2053, +4101,4165,6246,4165,4101,2052,2052,2052,2052,2052,5,5,5,4,5,5, +2053,4,4,4,2052,2052,2052,2052,4100,4100,6148,8196,8197,10277,12390,14470, +16551,14470,12357,8196,8196,6148,6149,6149,4101,4101,2053,2052,2052,2052,2052,2052, +4100,6148,6148,8229,8229,10277,10277,10277,8196,8196,8196,8196,6148,6148,6147,4100, +2052,4,4,4,4,4,2052,2052,2051,2051,2051,2051,4099,4100,4100,6148, +6148,6148,6148,6148,6148,6148,6148,6147,6147,4099,6147,4099,4099,4099,4099,4099, +4100,2052,2052,2052,2052,2051,2051,2051,2051,2051,2051,3,3,3,3,3, +3,3,2051,2051,2051,2051,4099,4099,6148,6148,6148,6148,6148,8196,8196,8196, +10244,10244,10244,10244,10244,10244,10244,10244,10244,8196,8196,8196,6147,6147,4099,4099, +6181,6149,6149,6149,6149,6149,6149,6181,6181,4133,4133,4133,4101,4101,4101,4101, +4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +4100,4100,4100,4100,4100,4100,4100,4100,4100,4100,4100,4100,4100,4100,4100,2052, +2052,2052,2052,2052,2052,2052,2052,2052,2053,2053,4133,4133,4133,4133,4133,4133, +6214,6246,6214,4166,4134,6214,6246,6247,6246,6246,6247,6246,6214,4133,4101,2053, +4101,4101,4101,4101,2053,2053,2053,2053,2053,2053,5,5,5,5,5,5, +2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2052,2052,2052,2053,2053,2053, +4100,6213,6246,6213,4101,2052,2052,2052,2052,2052,2053,5,5,5,5,4, +2053,4,4,4,2052,2052,2052,2052,2052,4100,6148,6149,8197,10277,12358,12390, +14470,12390,10309,8228,8197,6149,6149,6149,4101,4101,4101,2052,2052,2052,4100,4100, +6148,6148,6148,8196,8229,10277,10277,10245,8196,8196,8196,8196,6148,6148,4099,4100, +4,4,4,4,4,4,2052,2052,2051,2051,2051,2051,4099,4099,4100,4100, +6147,6148,6148,6148,6148,6147,6147,4099,4099,4099,4099,4099,4099,4099,4099,2051, +2052,2052,2052,2052,2051,2051,2051,2051,3,3,3,3,3,3,3,3, +3,3,3,2051,2051,2051,2051,4100,4100,4100,6147,6147,6148,6148,6148,8196, +8196,8196,8196,8196,8196,8196,8196,8196,8196,8196,8196,8196,6148,6147,6147,6147, +8229,6149,6149,6148,6149,6149,6149,6149,6181,6181,6181,6181,6149,4101,4101,4101, +6149,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +4100,2052,4100,4100,4100,4100,4100,4100,4100,4101,4133,4133,4133,4133,4101,4100, +2052,2052,2052,2052,2052,2052,2053,2052,2052,2053,4133,4133,4166,4166,6246,6246, +8327,8327,8327,8327,8327,8327,8327,8359,6247,6247,6247,6246,6214,4133,4101,2052, +4101,4101,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,5,5,5,5, +2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2052,2052,2052,2052,2053,2053, +4133,6246,8326,6214,4101,2052,2052,2052,2052,2052,2053,2053,5,5,5,5, +5,4,4,4,4,2052,2052,2052,2052,4100,4100,6148,6149,8197,8197,10278, +10309,10309,10277,8229,8229,6149,6149,4101,4101,4101,4100,4100,4100,4100,6149,6148, +8196,8196,8196,8196,8196,10245,10244,8196,8196,8196,6148,6148,4099,4099,4099,2051, +4,4,4,4,4,4,2052,2052,2052,2051,2051,2051,2051,2051,4099,4099, +4099,4100,4100,4100,4100,4100,4100,4099,4100,4100,4100,4100,4100,4100,4099,2051, +2052,2052,2052,2051,2051,3,2051,3,3,3,3,3,3,3,3,3, +4,4,3,3,3,2052,2052,2052,4100,4100,4099,4099,4099,6147,6147,6147, +6180,6147,6147,6147,6147,6147,6147,8195,8195,8196,8196,8228,8196,8196,6148,6148, +8196,8196,8196,8196,8196,8196,6148,6148,8229,8229,8229,6181,6149,6149,6149,6149, +6149,6149,6149,6149,6149,6149,6149,6149,4101,4101,4101,4101,4101,4101,4101,4101, +2052,2052,4100,4100,4101,4101,4101,4133,4133,6181,6181,6214,6214,6181,6181,4133, +4101,2053,2053,2053,2053,2052,2053,2053,2052,2053,4133,4166,4166,6246,6278,8359, +10440,8359,8359,10440,10440,8392,8359,8359,6246,6246,6214,6214,4133,4101,2053,2053, +2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053, +2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2052,2053,2052,2053,4133,4133, +6246,8326,8327,6214,4133,4101,2052,2052,2053,2052,2053,2053,2053,5,5,5, +4,4,4,4,4,2052,2052,2052,2053,2053,4101,4101,4101,6149,6149,8197, +8196,8196,8196,8196,6149,6149,6149,4100,6149,4101,4100,6148,6148,8197,8229,10277, +10277,10244,10244,8196,10244,10245,10244,8196,8196,6148,6148,4099,4099,2051,2051,2051, +4,4,4,4,2052,2052,2052,2052,2052,2052,2052,2052,2051,2051,4099,4099, +4099,4099,4100,4100,4100,4100,4099,4099,4100,4100,4100,4100,4100,2051,2051,2051, +2051,2051,2051,3,3,3,3,3,3,3,3,3,3,3,3,3, +4,4,3,3,4,2052,2084,2052,2052,4099,4099,4099,4099,4099,4099,4099, +4131,4131,4099,4099,4099,4099,6147,6147,8195,8196,8196,8196,8196,8196,8196,8196, +8196,8196,8196,8196,8196,8196,8196,6148,8229,8229,8229,8229,6148,6148,6148,6149, +6149,6149,6149,6181,6181,6181,6182,6182,6149,6149,6149,6149,4101,4101,4101,4101, +2052,2052,4100,4101,4101,4101,4133,4133,6181,6181,6181,6181,6181,6181,6181,4134, +4101,2053,2053,2053,2053,2053,2053,2053,2053,2053,4133,4133,4133,4166,6278,8359, +8392,6279,6246,8359,8392,8359,6279,6279,4166,4133,4133,4133,2053,2053,2053,2053, +2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053, +4134,4102,4101,4101,4101,4101,4101,4101,2053,2053,4101,4101,4101,4133,4165,6213, +8359,10407,8327,6214,4133,4101,4101,2052,2053,2053,2053,2053,2053,2053,2053,5, +4,4,4,4,4,5,2085,2053,2053,2053,4101,4101,4101,4101,6149,6149, +6148,6148,6148,6148,6149,6149,6149,6148,6148,6148,6148,6148,8196,10277,12357,12357, +12357,12325,10244,10244,10244,10244,10244,8196,8196,6148,6148,4099,4099,2051,2051,2051, +2052,2052,2052,2052,2052,2052,2052,4100,4100,4100,4100,2052,2052,2052,4100,4100, +4099,4100,4100,4100,4100,2051,2051,2051,2051,2051,2051,2051,2051,2051,2051,2051, +2051,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, +3,3,3,4,3,2052,2084,2084,2052,2052,2051,2051,2051,2051,2051,2051, +2051,2083,2051,2051,4099,4099,4099,6147,6147,8195,8196,8196,8196,8196,8196,8196, +8196,8196,8196,8196,8196,8196,8196,8196,8196,8229,8229,8229,6148,6148,6148,6149, +6149,4133,4133,4133,6182,6182,6182,6214,6182,6182,6182,6182,4133,4101,4101,4101, +4101,4101,4101,4101,4101,4101,6149,6149,6181,6181,6149,6149,6149,6149,6181,4134, +4102,4102,4102,4101,2053,2053,2053,2053,2053,4101,4101,4101,2052,4133,6246,8327, +6279,4166,4133,4166,6246,6246,4166,4133,4133,2053,2053,2053,2053,2053,2053,2053, +2053,2053,2053,2053,2053,2053,2053,2052,2053,2053,2053,2053,2085,2085,4133,4133, +4134,4134,4134,4102,4101,4101,4101,4101,4101,4101,4101,4133,4133,6214,6246,6246, +10439,10439,8359,6214,4133,4133,4101,2052,2053,2053,2053,2053,2053,2053,2053,2053, +2052,4,4,4,4,5,2085,2053,2053,2053,4101,4101,4101,4101,6149,6149, +6148,6147,6147,6148,6148,6149,6149,8197,6148,6148,8196,8196,10244,12325,14405,16486, +14405,12292,10244,10243,10244,10244,10244,8196,6148,6148,4100,4099,2051,2051,2051,2052, +2051,2051,2052,2052,2052,4100,4100,4132,4132,4132,4100,4100,4100,4100,4100,4100, +4100,4100,4100,4100,4100,2051,2051,2051,2051,2051,2051,2051,2051,2051,3,3, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, +3,3,3,3,4,4,2084,2084,2084,2052,2051,2051,2051,2051,2051,2051, +35,35,3,3,2051,4099,4099,4099,6147,6147,8195,8196,8196,8196,8196,8196, +10244,8196,8195,8195,8195,8195,8196,8196,8196,8228,8228,8228,8196,6148,6148,6149, +6149,4101,4133,4133,6182,6214,6214,6214,6214,6214,6214,6182,4133,4101,4101,4101, +4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101, +4102,4102,4102,4102,4101,2053,2053,4101,2053,4101,2053,2052,2052,2052,4165,6246, +2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053, +2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,4101,4134,4134,4166,4166, +4166,6182,4134,4134,4101,4101,4101,4101,4133,4133,4133,6213,6213,6213,8326,10472, +12585,12520,8327,6214,4133,4101,4101,4101,4101,4101,2053,2053,2053,2053,2053,2053, +2052,4,2053,2053,2085,2085,2052,2052,2052,2052,4100,4101,6149,6149,6149,6148, +8196,6147,8196,6148,8196,10277,6148,8197,10245,10244,8195,12293,14405,14340,16453,16453, +16453,16421,14340,12291,10243,10244,10244,8196,6147,6147,4099,4099,4099,2051,2051,2052, +4100,4100,4100,4100,4100,4132,6180,6180,4100,4100,4100,4100,4100,4100,4100,4100, +4100,4100,4100,4100,4100,2052,2052,2051,2051,2051,2051,3,3,3,3,3, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, +4,4,4,4,4,4,4,3,3,3,3,2051,2051,2051,2051,2051, +35,35,35,3,2051,2051,4099,4099,6147,6147,8195,8196,8196,8196,10244,10244, +8195,8195,8195,8195,8195,8195,8195,8195,8196,8196,8196,8228,8196,8196,6147,6148, +4100,4101,4101,4101,4101,4133,4133,4133,6214,6214,4134,4101,4101,4101,2053,4101, +4101,6181,8294,8294,6182,4101,4101,4101,6181,4101,4100,4100,4100,4101,4101,4101, +4101,4101,4101,2053,2053,4101,4101,2053,2053,2053,4101,4101,4100,4101,4101,4101, +2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2052,2052,2052, +2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,4133,4134,4166,6214,6246, +6182,6182,4134,4134,4101,4101,4101,4101,4133,4133,6213,6246,6246,6246,8359,12552, +14633,12520,8359,6246,6181,4133,4133,4133,4101,4101,4101,2053,2053,2053,2053,2053, +2053,4,2053,2053,2053,2052,2052,2052,2052,4100,4100,4100,6148,6149,8197,8197, +8196,6147,8196,8196,10277,10309,10245,10277,12358,14373,12292,16453,16453,14339,16420,16388, +16388,16389,14340,12291,12292,12292,10244,8196,8196,6147,6148,4099,4100,4100,4100,4100, +6148,6148,6148,6148,6148,6148,6180,6180,6148,6148,4100,4100,4100,4100,4100,4100, +4100,4100,4100,4100,2052,2052,2052,2052,2052,2051,3,3,3,3,3,3, +3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3, +4,4,4,4,4,4,4,4,3,3,3,3,2051,2051,2051,3, +35,35,2,2,2051,2051,4099,4099,6147,6147,8196,8196,8196,8196,8196,8196, +8195,8195,8195,8195,8195,8195,8195,8195,8196,8196,8196,8228,8228,8228,6148,6148, +4100,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,2053,2053, +4101,6181,8294,8294,6214,6149,4101,6149,8262,6181,6149,4101,6149,6181,6181,6181, +4101,4134,4134,4101,4101,4133,4133,4101,4101,4101,4101,4101,4100,4100,4100,4100, +2053,2053,2053,2053,2053,2052,2052,2052,2053,2052,2052,2052,2052,2052,2052,2052, +2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,4101,4133,4134,6214,6246,6247, +4134,4134,4133,4133,4101,4101,4101,4101,4133,4133,6213,8326,8326,8359,10472,12585, +12552,10439,8326,6213,4133,4101,4101,4101,4101,4101,4101,4101,4101,2053,2053,2053, +2053,2053,2053,2053,2052,2052,2052,2052,4100,4100,4100,6148,8196,10244,10277,12325, +10276,10244,12357,12390,14438,14470,12325,14405,14406,16486,16453,20646,20613,16387,18467,18435, +18436,16388,16388,14339,12292,12292,12292,10244,8196,8196,6148,6148,6148,4100,4100,4100, +6148,6148,6148,6148,6148,6148,6180,8228,6148,6148,6148,6148,6148,4100,4100,4100, +4100,4100,4100,4100,2084,2052,2052,2052,2052,2052,4,4,3,3,3,3, +3,2051,2051,3,3,3,3,3,3,3,3,3,3,3,3,3, +4,4,4,4,4,4,4,4,3,3,3,3,3,3,2051,3, +35,3,2,2,2051,4099,4099,6147,6147,6148,8196,8196,8196,8196,8196,8195, +8195,8195,8195,8195,8195,8195,8228,8228,6147,6148,8228,8228,8228,8228,6180,6180, +4101,4101,4101,4101,4101,4101,4101,4101,2053,2053,2053,2053,2053,4101,4101,4101, +4101,6181,8294,8294,6213,6181,6181,6181,8262,6213,6181,6181,6181,6181,6181,6213, +4133,6213,6214,6213,4133,6213,6214,4133,4101,4101,4101,2053,2053,2053,2053,4101, +2053,2053,2053,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,4, +5,5,5,5,2053,2053,2053,2053,2053,2053,4101,4101,4134,4166,6214,6214, +4134,4134,4101,4101,4101,4101,4101,4101,4101,4133,6214,8326,8326,8359,10472,12552, +10407,8327,6214,6181,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,2053,2053, +2053,2053,2053,2053,2052,2052,2052,4100,4100,6148,6148,8196,10244,12325,14405,16486, +14405,12325,16518,16518,16550,16518,14373,14405,14372,18566,20614,24774,22693,20515,22595,22596, +20484,18437,16388,14339,12291,12292,12292,10276,10276,8196,8196,6148,6148,6148,6148,6148, +8196,8196,8196,8196,8196,8196,8196,8228,8196,6148,6148,6148,6148,6148,6148,4100, +4100,4100,4100,4100,4100,2084,2052,2052,2052,2052,2052,4,3,3,3,3, +2051,2051,2051,2051,2051,3,2051,3,3,3,3,3,3,3,3,3, +4,4,4,4,4,4,4,4,3,3,3,3,3,3,2051,2051, +2083,2051,2051,2050,2051,4099,6147,6148,6148,6148,8196,8196,8196,6148,6147,6147, +8195,6147,6147,6147,6147,8227,6179,6180,6148,6148,6180,6180,6180,6180,6180,6180, +4100,4101,4101,4101,4101,4101,4101,4101,2053,2053,2053,4101,4101,4101,4133,4133, +4100,6181,8262,8261,6213,6181,6213,8261,8294,8294,8262,6213,6213,6213,8262,8293, +6213,6277,8326,6245,6213,6245,6213,6213,4101,4101,4101,4101,2053,2053,2053,2053, +2053,2053,2053,2052,2052,2052,2052,4,2052,2052,2052,4,4,4,4,4, +4,4,5,5,5,2053,2053,2053,2053,2053,4101,4101,4101,4101,4134,4134, +4101,4101,4101,4101,4101,4101,4101,4101,4101,4133,6213,6246,8294,8326,8358,8359, +8326,8294,6181,6149,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,4101,2053, +2053,2053,2053,2052,2052,2052,4100,4100,6147,8196,10276,12357,14405,16485,18566,18598, +16485,14372,16486,16486,18566,18566,14372,16453,16420,20613,22726,26887,24773,22627,24708,24708, +22597,20549,18437,14339,12291,12291,12324,12324,10276,10244,8196,8196,6148,6148,6148,8196, +10244,10244,10244,10244,10244,10244,10244,8196,8196,8196,8196,6148,6148,6148,6148,4100, +4100,4100,4100,2052,4100,4100,4100,2084,2052,2052,2052,2052,2052,4,4,4, +2051,2051,2051,2051,2051,3,2051,3,2051,3,3,3,3,3,3,3, +4,4,4,4,4,4,4,4,4,4,3,3,2052,2052,2051,2051, +2051,2051,2051,2051,4099,6147,6147,6180,6148,6148,6148,6148,6147,6147,6147,6147, +6147,6147,6147,6147,6147,6147,6180,6180,6180,6180,6180,6180,4100,4100,4100,4100, +4100,2053,4101,4101,4101,4133,4133,4133,4101,4101,4101,4101,4101,4133,4133,4133, +4100,6180,8261,8261,8261,8261,8294,8294,10407,10374,10374,10374,10374,10374,10374,10406, +10406,10438,10438,8357,8325,8325,6245,6213,4133,4133,4101,4101,4101,4101,4101,4101, +2053,2053,2053,2053,2053,2052,2052,2052,2053,2052,2052,2052,2052,4,4,4, +4,5,5,2053,2053,2053,2053,2053,2053,2053,4101,4101,4101,4101,4101,4101, +4101,4101,4101,4101,4101,4101,4101,4101,4101,6181,6213,6213,6213,6246,6246,6245, +6213,6181,4101,4100,4101,4101,4100,4100,4101,4101,4101,4101,4101,2053,2053,2053, +2053,2053,2053,2053,2052,4100,4100,6148,8196,10276,14437,16518,18566,20646,20646,22694, +16453,14339,14340,16420,16453,18566,16421,18501,18500,24774,24806,28967,26821,24675,26756,24708, +24677,22630,20517,16388,14339,12291,12292,12324,12324,10244,8196,8196,8196,8196,8197,10244, +10244,12292,12292,12292,12293,10244,10244,10244,8196,8196,8196,8196,6148,6148,6148,6148, +4100,4100,4100,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052, +2051,2051,2051,2051,2051,2051,2051,2051,2051,2051,2051,3,3,3,3,3, +4,4,4,4,4,4,4,4,4,4,3,2052,2052,2052,2052,2051, +2051,4099,4099,4099,4099,6147,6147,6148,6147,6147,6147,6147,6147,4099,4099,4099, +6147,6147,4099,4099,4099,4099,4099,4131,4099,4131,4099,4099,4099,4099,2051,2052, +2052,2053,2053,4101,4101,4133,4133,4133,4101,4101,4101,4101,4101,4133,4133,4133, +6181,6180,8261,8293,8293,8293,10374,10374,12487,12487,12487,12487,10407,10406,12487,12519, +12550,12550,10470,10437,8389,10438,8358,8326,6213,6213,4133,4101,4101,4101,4101,4101, +2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2052,2052,2052, +5,5,5,5,2053,2053,2053,2053,2053,2053,4101,4101,4101,4101,4101,4101, +4101,4101,4101,4101,4101,4101,4101,4101,4133,6213,6213,4133,4133,6213,6213,6181, +4101,4100,4100,4100,4100,4100,2052,2052,4101,4101,4101,4101,2053,2053,2053,2053, +2053,2053,2053,2053,2052,4100,4100,6148,10276,12357,16517,18598,20613,20613,22661,22694, +20581,14339,14339,14339,16421,20614,18501,18501,20581,24806,26854,28934,26788,24675,26755,24675, +24677,22630,22597,18468,16388,14340,14340,12324,12325,10276,10244,8196,8196,10244,10245,10245, +12292,14340,14373,14373,14373,12325,10244,10244,8196,8196,8196,8196,6148,6148,6148,6148, +4100,4100,4100,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052, +2051,2051,2051,2051,2051,2051,2051,2051,2051,2051,2051,2051,2051,2051,2051,4, +4,4,4,4,4,4,4,4,3,3,2052,2052,2052,2052,2052,2052, +4099,4099,6147,6147,6147,6147,6147,6147,6147,6147,6147,4099,4099,4099,2051,2051, +4099,4099,4099,4099,4099,4099,4099,4099,4099,4099,4099,2051,2051,2051,2051,2052, +2052,2053,4101,4101,4101,4101,4101,4133,4101,4101,4133,4133,4133,4134,4166,6213, +8293,8293,8293,8325,10374,10374,10406,10406,12519,12519,12519,12519,12519,12519,12519,12551, +14663,12582,10470,10437,10470,10502,10470,8358,6245,6213,6181,4101,4101,4101,4101,4101, +2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053,2053, +5,5,5,2053,2053,2053,2053,2053,2053,2053,4101,4101,4101,4101,4102,4134, +4101,4101,4101,4101,4133,4133,4133,4133,6181,6213,6213,4133,4132,6213,6213,4133, +6149,4100,4100,4100,4101,4101,4101,4101,4101,4101,4101,4101,2053,2053,2053,2053, +2054,2053,2053,2053,2052,4100,6148,6148,10277,14405,16517,18565,18533,20580,20580,22629, +22726,16388,14339,14339,16420,20614,18501,20581,20581,24774,24773,26821,24708,22562,26723,24643, +24645,24678,22630,20549,16388,14372,14340,12292,12325,10277,10245,10244,10244,10245,10245,12293, +12293,14341,14373,14405,14373,12325,10244,10244,8196,8196,8196,8196,8196,6148,6148,6148, +4100,4100,4100,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052, +2052,4100,2052,2052,2052,2052,2052,2052,2052,2052,2052,2052,2051,2051,2051,2052, +4,4,4,4,4,4,4,4,3,3,3,2052,2051,2052,2052,2051, +4099,6147,6147,6148,6148,6147,6147,6147,6147,6147,4099,4099,4099,2051,2051,2051, +4099,4099,4099,4099,2051,2051,2051,2051,2051,2051,2051,2051,2051,2052,2052,2052, +4101,4101,4101,4101,4101,4101,4101,4101,4133,4133,4133,4134,6214,6214,6246,6246, +8326,10374,10374,10374,10374,10406,10406,10406,14600,14632,14632,14632,14632,14632,14632,14664, +14663,12581,10469,8389,10470,12551,12551,10438,6245,6246,6181,4101,4101,4101,4101,4101}; diff -r 000000000000 -r 5019d031b485 src/sky1.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/sky1.h Wed Jun 05 22:33:37 2013 +0300 @@ -0,0 +1,6 @@ +#ifndef SKY1_H +#define SKY1_H + +extern unsigned short sky1[]; + +#endif