From 8dbecb654e43fa52303311c7a83ed1b49d19b404 Mon Sep 17 00:00:00 2001 From: Vincent Liu <5900509+onecent1101@users.noreply.github.com> Date: Thu, 9 Sep 2021 13:28:52 -0700 Subject: [PATCH 01/20] [SPEC-7868] Update AWS Gems cmake target with correct runtime dependencies (#3991) Signed-off-by: onecent1101 --- Gems/AWSClientAuth/Code/CMakeLists.txt | 45 ++++++++++++++----- Gems/AWSCore/Code/CMakeLists.txt | 34 +++++++++++--- .../Code/AWSGameLiftClient/CMakeLists.txt | 19 ++++++-- Gems/AWSMetrics/Code/CMakeLists.txt | 37 ++++++++++++--- 4 files changed, 110 insertions(+), 25 deletions(-) diff --git a/Gems/AWSClientAuth/Code/CMakeLists.txt b/Gems/AWSClientAuth/Code/CMakeLists.txt index 514b1ab79e..bd8b174b65 100644 --- a/Gems/AWSClientAuth/Code/CMakeLists.txt +++ b/Gems/AWSClientAuth/Code/CMakeLists.txt @@ -26,9 +26,6 @@ ly_add_target( Gem::HttpRequestor 3rdParty::AWSNativeSDK::AWSClientAuth 3rdParty::AWSNativeSDK::Core - RUNTIME_DEPENDENCIES - Gem::AWSCore - Gem::HttpRequestor ) ly_add_target( @@ -48,17 +45,45 @@ ly_add_target( 3rdParty::AWSNativeSDK::Core PUBLIC Gem::AWSClientAuth.Static - RUNTIME_DEPENDENCIES - Gem::AWSCore - Gem::HttpRequestor ) # Load the "Gem::AWSClientAuth" module in all types of applications. -ly_create_alias(NAME AWSClientAuth.Servers NAMESPACE Gem TARGETS Gem::AWSClientAuth) -ly_create_alias(NAME AWSClientAuth.Clients NAMESPACE Gem TARGETS Gem::AWSClientAuth) +ly_create_alias( + NAME AWSClientAuth.Servers + NAMESPACE Gem + TARGETS + Gem::AWSClientAuth + Gem::AWSCore.Servers + Gem::HttpRequestor.Servers +) + +ly_create_alias( + NAME AWSClientAuth.Clients + NAMESPACE Gem + TARGETS + Gem::AWSClientAuth + Gem::AWSCore.Clients + Gem::HttpRequestor.Clients +) + if (PAL_TRAIT_BUILD_HOST_TOOLS) - ly_create_alias(NAME AWSClientAuth.Tools NAMESPACE Gem TARGETS Gem::AWSClientAuth) - ly_create_alias(NAME AWSClientAuth.Builders NAMESPACE Gem TARGETS Gem::AWSClientAuth) + ly_create_alias( + NAME AWSClientAuth.Tools + NAMESPACE Gem + TARGETS + Gem::AWSClientAuth + Gem::AWSCore.Tools + Gem::HttpRequestor.Tools + ) + + ly_create_alias( + NAME AWSClientAuth.Builders + NAMESPACE Gem + TARGETS + Gem::AWSClientAuth + Gem::AWSCore.Builders + Gem::HttpRequestor.Builders + ) endif() ################################################################################ diff --git a/Gems/AWSCore/Code/CMakeLists.txt b/Gems/AWSCore/Code/CMakeLists.txt index 5fdefa9f9e..808436b7fd 100644 --- a/Gems/AWSCore/Code/CMakeLists.txt +++ b/Gems/AWSCore/Code/CMakeLists.txt @@ -45,8 +45,19 @@ ly_add_target( ) # clients and servers will use the above Gem::AWSCore module. -ly_create_alias(NAME AWSCore.Servers NAMESPACE Gem TARGETS Gem::AWSCore) -ly_create_alias(NAME AWSCore.Clients NAMESPACE Gem TARGETS Gem::AWSCore) +ly_create_alias( + NAME AWSCore.Servers + NAMESPACE Gem + TARGETS + Gem::AWSCore +) + +ly_create_alias( + NAME AWSCore.Clients + NAMESPACE Gem + TARGETS + Gem::AWSCore +) if (PAL_TRAIT_BUILD_HOST_TOOLS) ly_add_target( @@ -84,8 +95,6 @@ if (PAL_TRAIT_BUILD_HOST_TOOLS) PRIVATE AZ::AzCore Gem::AWSCore.Editor.Static - RUNTIME_DEPENDENCIES - Gem::AWSCore ) # This target is not a real gem module @@ -106,8 +115,21 @@ if (PAL_TRAIT_BUILD_HOST_TOOLS) ly_add_dependencies(AWSCore.Editor AWSCore.ResourceMappingTool) # Builders and Tools (such as the Editor use AWSCore.Editor) use the .Editor module above. - ly_create_alias(NAME AWSCore.Tools NAMESPACE Gem TARGETS Gem::AWSCore.Editor) - ly_create_alias(NAME AWSCore.Builders NAMESPACE Gem TARGETS Gem::AWSCore.Editor) + ly_create_alias( + NAME AWSCore.Tools + NAMESPACE Gem + TARGETS + Gem::AWSCore + Gem::AWSCore.Editor + ) + + ly_create_alias( + NAME AWSCore.Builders + NAMESPACE Gem + TARGETS + Gem::AWSCore + Gem::AWSCore.Editor + ) endif() diff --git a/Gems/AWSGameLift/Code/AWSGameLiftClient/CMakeLists.txt b/Gems/AWSGameLift/Code/AWSGameLiftClient/CMakeLists.txt index a2e7a5b2e1..3eb5eafab0 100644 --- a/Gems/AWSGameLift/Code/AWSGameLiftClient/CMakeLists.txt +++ b/Gems/AWSGameLift/Code/AWSGameLiftClient/CMakeLists.txt @@ -45,13 +45,26 @@ ly_add_target( PUBLIC Gem::AWSGameLift.Client.Static RUNTIME_DEPENDENCIES - Gem::AWSCore + Gem::AWSCore.Clients ) # Load the "Gem::AWSGameLift" module in all types of applications. if (PAL_TRAIT_BUILD_HOST_TOOLS) - ly_create_alias(NAME AWSGameLift.Tools NAMESPACE Gem TARGETS Gem::AWSGameLift.Clients) - ly_create_alias(NAME AWSGameLift.Builders NAMESPACE Gem TARGETS Gem::AWSGameLift.Clients) + ly_create_alias( + NAME AWSGameLift.Tools + NAMESPACE Gem + TARGETS + Gem::AWSCore.Tools + Gem::AWSGameLift.Clients + ) + + ly_create_alias( + NAME AWSGameLift.Builders + NAMESPACE Gem + TARGETS + Gem::AWSCore.Builders + Gem::AWSGameLift.Clients + ) endif() ################################################################################ diff --git a/Gems/AWSMetrics/Code/CMakeLists.txt b/Gems/AWSMetrics/Code/CMakeLists.txt index 2bba967bb7..2e78ee8c42 100644 --- a/Gems/AWSMetrics/Code/CMakeLists.txt +++ b/Gems/AWSMetrics/Code/CMakeLists.txt @@ -40,16 +40,41 @@ ly_add_target( AZ::AzCore AZ::AzFramework Gem::AWSMetrics.Static - RUNTIME_DEPENDENCIES - Gem::AWSCore ) # Load the "Gem::AWSMetrics" module in all types of applications. -ly_create_alias(NAME AWSMetrics.Servers NAMESPACE Gem TARGETS Gem::AWSMetrics) -ly_create_alias(NAME AWSMetrics.Clients NAMESPACE Gem TARGETS Gem::AWSMetrics) +ly_create_alias( + NAME AWSMetrics.Servers + NAMESPACE Gem + TARGETS + Gem::AWSCore.Servers + Gem::AWSMetrics +) + +ly_create_alias( + NAME AWSMetrics.Clients + NAMESPACE Gem + TARGETS + Gem::AWSCore.Clients + Gem::AWSMetrics +) + if (PAL_TRAIT_BUILD_HOST_TOOLS) - ly_create_alias(NAME AWSMetrics.Tools NAMESPACE Gem TARGETS Gem::AWSMetrics) - ly_create_alias(NAME AWSMetrics.Builders NAMESPACE Gem TARGETS Gem::AWSMetrics) + ly_create_alias( + NAME AWSMetrics.Tools + NAMESPACE Gem + TARGETS + Gem::AWSCore.Tools + Gem::AWSMetrics + ) + + ly_create_alias( + NAME AWSMetrics.Builders + NAMESPACE Gem + TARGETS + Gem::AWSCore.Builders + Gem::AWSMetrics + ) endif() ################################################################################ From 10900fee388651ab0d81ee5d06082ee90d02a08b Mon Sep 17 00:00:00 2001 From: moudgils <47460854+moudgils@users.noreply.github.com> Date: Thu, 9 Sep 2021 14:30:35 -0700 Subject: [PATCH 02/20] =?UTF-8?q?Disable=20PSO=20caching=20if=20Renderdoc?= =?UTF-8?q?=20or=20Pix=20dlls=20are=20loaded=20as=20they=20confl=E2=80=A6?= =?UTF-8?q?=20(#3976)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Disable PSO caching if Renderdoc or Pix dlls are loaded as they conflict with dx12 api * Add support for command line param --enablePixGPU which manually loads the pix gpu capture dll - This will allow pix to attach to a running process if the enablePixGPU is enabled - Support for enabling/disabling gpu markers based on enablePixGPU Signed-off-by: moudgils --- Gems/Atom/RHI/Code/CMakeLists.txt | 1 + Gems/Atom/RHI/Code/Include/Atom/RHI/Factory.h | 111 +++++++++--------- .../platform_private_android_files.cmake | 11 ++ .../Unimplemented/Empty_Unimplemented.cpp | 21 ++++ .../Linux/platform_private_linux_files.cmake | 11 ++ .../Mac/platform_private_mac_files.cmake | 11 ++ .../Windows/Atom_RHI_Traits_Windows.h | 1 + .../Platform/Windows/RHI/Factory_windows.cpp | 59 ++++++++++ .../platform_private_windows_files.cmake | 11 ++ .../iOS/platform_private_ios_files.cmake | 11 ++ Gems/Atom/RHI/Code/Source/RHI/Factory.cpp | 70 ++++++++++- .../RHI/DX12/Code/Source/RHI/CommandList.cpp | 16 ++- .../DX12/Code/Source/RHI/PipelineLibrary.cpp | 24 ++-- Gems/Atom/RHI/DX12/Code/Source/RHI/Scope.cpp | 11 +- 14 files changed, 294 insertions(+), 75 deletions(-) create mode 100644 Gems/Atom/RHI/Code/Source/Platform/Android/platform_private_android_files.cmake create mode 100644 Gems/Atom/RHI/Code/Source/Platform/Common/Unimplemented/Empty_Unimplemented.cpp create mode 100644 Gems/Atom/RHI/Code/Source/Platform/Linux/platform_private_linux_files.cmake create mode 100644 Gems/Atom/RHI/Code/Source/Platform/Mac/platform_private_mac_files.cmake create mode 100644 Gems/Atom/RHI/Code/Source/Platform/Windows/RHI/Factory_windows.cpp create mode 100644 Gems/Atom/RHI/Code/Source/Platform/Windows/platform_private_windows_files.cmake create mode 100644 Gems/Atom/RHI/Code/Source/Platform/iOS/platform_private_ios_files.cmake diff --git a/Gems/Atom/RHI/Code/CMakeLists.txt b/Gems/Atom/RHI/Code/CMakeLists.txt index 879fc7d2ce..843eeb6364 100644 --- a/Gems/Atom/RHI/Code/CMakeLists.txt +++ b/Gems/Atom/RHI/Code/CMakeLists.txt @@ -42,6 +42,7 @@ ly_add_target( FILES_CMAKE atom_rhi_public_files.cmake ${pal_source_dir}/platform_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake + ${pal_source_dir}/platform_private_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake INCLUDE_DIRECTORIES PRIVATE Source diff --git a/Gems/Atom/RHI/Code/Include/Atom/RHI/Factory.h b/Gems/Atom/RHI/Code/Include/Atom/RHI/Factory.h index e0f03df9d7..992cc0e79a 100644 --- a/Gems/Atom/RHI/Code/Include/Atom/RHI/Factory.h +++ b/Gems/Atom/RHI/Code/Include/Atom/RHI/Factory.h @@ -50,24 +50,21 @@ namespace AZ class RayTracingPipelineState; class RayTracingShaderTable; - /* Priority of a Factory. The lower the number the higher the priority. - * Used when there's multiple factories available and the user hasn't define - * a priority. - */ + //! Priority of a Factory. The lower the number the higher the priority. + //! Used when there's multiple factories available and the user hasn't define + //! a priority. using APIPriority = uint32_t; static const APIPriority APITopPriority = 1; static const APIPriority APILowPriority = 10; static const APIPriority APIMiddlePriority = (APILowPriority - APITopPriority) / 2; - /** - * The factory is an interface for creating RHI data structures. The platform system should - * register itself with the factory by calling Register, and unregister on shutdown with - * Unregister. - * - * A call to Get will return the active instance. In the event that it's unclear whether - * a platform instance exists, you must call IsReady to determine whether it's safe to - * call Get. Calling Get without a registered platform will result in an assert. - */ + //! The factory is an interface for creating RHI data structures. The platform system should + //! register itself with the factory by calling Register, and unregister on shutdown with + //! Unregister. + //! + //! A call to Get will return the active instance. In the event that it's unclear whether + //! a platform instance exists, you must call IsReady to determine whether it's safe to + //! call Get. Calling Get without a registered platform will result in an assert. class Factory { public: @@ -79,78 +76,78 @@ namespace AZ // Note that you have to delete these for safety reasons, you will trip a static_assert if you do not AZ_DISABLE_COPY_MOVE(Factory); - /// Returns the component service name CRC used by the platform RHI system component. + //! Returns the component service name CRC used by the platform RHI system component. static uint32_t GetComponentService(); - /// Returns the component service name CRC used by the Factory manager component. + //! Returns the component service name CRC used by the Factory manager component. static uint32_t GetManagerComponentService(); - /// Returns the component service name CRC used by the platform RHI system component. + //! Returns the component service name CRC used by the platform RHI system component. static uint32_t GetPlatformService(); - /// Registers the global factory instance. + //! Registers the global factory instance. static void Register(Factory* instance); - /// Unregisters the global factory instance. + //! Unregisters the global factory instance. static void Unregister(Factory* instance); - /// Returns whether the factory is initialized and active in this module. + //! Returns whether the factory is initialized and active in this module. static bool IsReady(); - /// Access the global factory instance. + //! Access the global factory instance. static Factory& Get(); #if defined(USE_RENDERDOC) - /// Access the RenderDoc API pointer if available. - /// The availability of the render doc API at runtime depends on the following: - /// - You must not be building a packaged game/product (LY_MONOLITHIC_GAME not enabled in CMake) - /// - A valid renderdoc installation was found, either by auto-discovery, or by supplying ATOM_RENDERDOC_PATH as an environment variable - /// - The module loaded successfully at runtime, and the API function pointer was retrieved successfully + //! Access the RenderDoc API pointer if available. + //! The availability of the render doc API at runtime depends on the following: + //! - You must not be building a packaged game/product (LY_MONOLITHIC_GAME not enabled in CMake) + //! - A valid renderdoc installation was found, either by auto-discovery, or by supplying ATOM_RENDERDOC_PATH as an environment variable + //! - The module loaded successfully at runtime, and the API function pointer was retrieved successfully static RENDERDOC_API_1_1_2* GetRenderDocAPI(); #endif + + //! Returns true if RenderDoc dll is loaded + static bool IsRenderDocModuleLoaded(); - /// Returns the name of the Factory. + //! Returns true if Pix dll is loaded + static bool IsPixModuleLoaded(); + + //! Returns the name of the Factory. virtual Name GetName() = 0; - /// Returns the APIType of the factory. + //! Returns the APIType of the factory. virtual APIType GetType() = 0; - /// Returns the default priority of the factory in case there's no priorities set in the FactoryManager. + //! Returns the default priority of the factory in case there's no priorities set in the FactoryManager. virtual APIPriority GetDefaultPriority() = 0; - /** - * Purpose: The API Unique Index will be encoded in the 2 Most Significant Bits of a ShaderVariantAsset ProductSubId (a 32bits integer). - * Returns a number in the range [0..3]. - * In theory any given AssetBuilderSdk::PlatformInfo can support several RHI::APITypes. - * In reality "pc" only supports DX12 & Vulkan. - * "ios" supports only Metal. - * "mac" supports only Metal. - * "android" supports only Vulkan. - * So, for all practical purposes, a single PlatformInfo won't support more than 2 ShaderPlatformInterfaces, but for the sake of - * hedging our bets into the future We assume no more than 4 ShaderPlatformInterfaces will ever be supported for any given PlatformInfo. - * REMARK: It is the responsibility of the Factory subclass to return a unique number between 0...3. - * For example DX12 can return 0, while Vulkan should return 1 (Satisfies "pc", "android" and "linux"). - * Metal can return 0 because it is the only ShaderPlatformInterface for "ios", "mac" and "appletv". - * See AZ::RHI::Limits::APIType::PerPlatformApiUniqueIndexMax. - */ + //! Purpose: The API Unique Index will be encoded in the 2 Most Significant Bits of a ShaderVariantAsset ProductSubId (a 32bits integer). + //! Returns a number in the range [0..3]. + //! In theory any given AssetBuilderSdk::PlatformInfo can support several RHI::APITypes. + //! In reality "pc" only supports DX12 & Vulkan. + //! "ios" supports only Metal. + //! "mac" supports only Metal. + //! "android" supports only Vulkan. + //! So, for all practical purposes, a single PlatformInfo won't support more than 2 ShaderPlatformInterfaces, but for the sake of + //! hedging our bets into the future We assume no more than 4 ShaderPlatformInterfaces will ever be supported for any given PlatformInfo. + //! REMARK: It is the responsibility of the Factory subclass to return a unique number between 0...3. + //! For example DX12 can return 0, while Vulkan should return 1 (Satisfies "pc", "android" and "linux"). + //! Metal can return 0 because it is the only ShaderPlatformInterface for "ios", "mac" and "appletv". + //! See AZ::RHI::Limits::APIType::PerPlatformApiUniqueIndexMax. virtual uint32_t GetAPIUniqueIndex() const = 0; - /** - * Collects the set of physical devices on the system and returns a list of them. Physical - * devices represent the hardware attached to the system. Physical devices can be grouped - * into nodes for linked setups (e.g. SLI / Crossfire). They can also represent software - * reference implementations. Check the PhysicalDeviceType on the descriptor to inspect - * this information. - */ + //! Collects the set of physical devices on the system and returns a list of them. Physical + //! devices represent the hardware attached to the system. Physical devices can be grouped + //! into nodes for linked setups (e.g. SLI / Crossfire). They can also represent software + //! reference implementations. Check the PhysicalDeviceType on the descriptor to inspect + //! this information. virtual PhysicalDeviceList EnumeratePhysicalDevices() = 0; - /** - * Factory Creation Methods: - * - * Returns the platform-specific derived variant of the RHI type. All instances are created - * in an uninitialized state; the operation simply allocates the memory for the appropriate - * platform type and returns the pointer. - */ + //! Factory Creation Methods: + //! + //! Returns the platform-specific derived variant of the RHI type. All instances are created + //! in an uninitialized state; the operation simply allocates the memory for the appropriate + //! platform type and returns the pointer. virtual Ptr CreateBuffer() = 0; diff --git a/Gems/Atom/RHI/Code/Source/Platform/Android/platform_private_android_files.cmake b/Gems/Atom/RHI/Code/Source/Platform/Android/platform_private_android_files.cmake new file mode 100644 index 0000000000..6c7f8f46f1 --- /dev/null +++ b/Gems/Atom/RHI/Code/Source/Platform/Android/platform_private_android_files.cmake @@ -0,0 +1,11 @@ +# +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# + +set(FILES + ../Common/Unimplemented/Empty_Unimplemented.cpp +) diff --git a/Gems/Atom/RHI/Code/Source/Platform/Common/Unimplemented/Empty_Unimplemented.cpp b/Gems/Atom/RHI/Code/Source/Platform/Common/Unimplemented/Empty_Unimplemented.cpp new file mode 100644 index 0000000000..4152be0696 --- /dev/null +++ b/Gems/Atom/RHI/Code/Source/Platform/Common/Unimplemented/Empty_Unimplemented.cpp @@ -0,0 +1,21 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ +#include + +namespace AZ::RHI::Platform +{ + bool IsPixDllInjected([[maybe_unused]] const char* dllName) + { + return false; + } + + AZStd::wstring GetLatestWinPixGpuCapturerPath() + { + return L""; + } +} diff --git a/Gems/Atom/RHI/Code/Source/Platform/Linux/platform_private_linux_files.cmake b/Gems/Atom/RHI/Code/Source/Platform/Linux/platform_private_linux_files.cmake new file mode 100644 index 0000000000..6c7f8f46f1 --- /dev/null +++ b/Gems/Atom/RHI/Code/Source/Platform/Linux/platform_private_linux_files.cmake @@ -0,0 +1,11 @@ +# +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# + +set(FILES + ../Common/Unimplemented/Empty_Unimplemented.cpp +) diff --git a/Gems/Atom/RHI/Code/Source/Platform/Mac/platform_private_mac_files.cmake b/Gems/Atom/RHI/Code/Source/Platform/Mac/platform_private_mac_files.cmake new file mode 100644 index 0000000000..6c7f8f46f1 --- /dev/null +++ b/Gems/Atom/RHI/Code/Source/Platform/Mac/platform_private_mac_files.cmake @@ -0,0 +1,11 @@ +# +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# + +set(FILES + ../Common/Unimplemented/Empty_Unimplemented.cpp +) diff --git a/Gems/Atom/RHI/Code/Source/Platform/Windows/Atom_RHI_Traits_Windows.h b/Gems/Atom/RHI/Code/Source/Platform/Windows/Atom_RHI_Traits_Windows.h index 82358784a3..9ca1afb5c7 100644 --- a/Gems/Atom/RHI/Code/Source/Platform/Windows/Atom_RHI_Traits_Windows.h +++ b/Gems/Atom/RHI/Code/Source/Platform/Windows/Atom_RHI_Traits_Windows.h @@ -8,3 +8,4 @@ #pragma once #define AZ_TRAIT_RENDERDOC_MODULE "renderdoc.dll" +#define AZ_TRAIT_PIX_MODULE "WinPixGpuCapturer.dll" diff --git a/Gems/Atom/RHI/Code/Source/Platform/Windows/RHI/Factory_windows.cpp b/Gems/Atom/RHI/Code/Source/Platform/Windows/RHI/Factory_windows.cpp new file mode 100644 index 0000000000..808575c7e8 --- /dev/null +++ b/Gems/Atom/RHI/Code/Source/Platform/Windows/RHI/Factory_windows.cpp @@ -0,0 +1,59 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#include +#include +#include +#include + +namespace AZ::RHI::Platform +{ + bool IsPixDllInjected(const char* dllName) + { + bool isDllLoaded = false; + + wchar_t fileNameW[256]; + size_t numCharsConverted; + errno_t wcharResult = mbstowcs_s(&numCharsConverted, fileNameW, dllName, AZ_ARRAY_SIZE(fileNameW) - 1); + if (wcharResult == 0) + { + isDllLoaded = NULL != GetModuleHandleW(fileNameW); + } + return isDllLoaded; + } + + AZStd::wstring GetLatestWinPixGpuCapturerPath() + { + LPWSTR programFilesPath = nullptr; + SHGetKnownFolderPath(FOLDERID_ProgramFiles, KF_FLAG_DEFAULT, NULL, &programFilesPath); + + std::filesystem::path pixInstallationPath = programFilesPath; + pixInstallationPath /= "Microsoft PIX"; + + std::wstring newestVersionFound; + + for (auto const& directory_entry : std::filesystem::directory_iterator(pixInstallationPath)) + { + if (directory_entry.is_directory()) + { + if (newestVersionFound.empty() || newestVersionFound < directory_entry.path().filename().c_str()) + { + newestVersionFound = directory_entry.path().filename().c_str(); + } + } + } + + if (newestVersionFound.empty()) + { + return L""; + } + + std::wstring finalPath = pixInstallationPath / newestVersionFound / L"WinPixGpuCapturer.dll"; + return AZStd::wstring(finalPath.c_str()); + } +} diff --git a/Gems/Atom/RHI/Code/Source/Platform/Windows/platform_private_windows_files.cmake b/Gems/Atom/RHI/Code/Source/Platform/Windows/platform_private_windows_files.cmake new file mode 100644 index 0000000000..ac0a5526ea --- /dev/null +++ b/Gems/Atom/RHI/Code/Source/Platform/Windows/platform_private_windows_files.cmake @@ -0,0 +1,11 @@ +# +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# + +set(FILES + RHI/Factory_windows.cpp +) diff --git a/Gems/Atom/RHI/Code/Source/Platform/iOS/platform_private_ios_files.cmake b/Gems/Atom/RHI/Code/Source/Platform/iOS/platform_private_ios_files.cmake new file mode 100644 index 0000000000..6c7f8f46f1 --- /dev/null +++ b/Gems/Atom/RHI/Code/Source/Platform/iOS/platform_private_ios_files.cmake @@ -0,0 +1,11 @@ +# +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# + +set(FILES + ../Common/Unimplemented/Empty_Unimplemented.cpp +) diff --git a/Gems/Atom/RHI/Code/Source/RHI/Factory.cpp b/Gems/Atom/RHI/Code/Source/RHI/Factory.cpp index 3162a71e34..48b64c17c0 100644 --- a/Gems/Atom/RHI/Code/Source/RHI/Factory.cpp +++ b/Gems/Atom/RHI/Code/Source/RHI/Factory.cpp @@ -11,20 +11,33 @@ #include #include -#if defined(USE_RENDERDOC) +#if defined(USE_RENDERDOC) || defined(USE_PIX) #include #include #include - -static AZStd::unique_ptr s_renderDocModule; -static RENDERDOC_API_1_1_2* s_renderDocApi = nullptr; #endif +#if defined(USE_RENDERDOC) +static AZStd::unique_ptr s_renderDocModule; +static RENDERDOC_API_1_1_2* s_renderDocApi = nullptr; +static bool s_isRenderDocDllLoaded = false; +#endif + +#if defined(USE_PIX) +static AZStd::unique_ptr s_pixModule; +static bool s_isPixGpuCaptureDllLoaded = false; +#endif namespace AZ { namespace RHI { + namespace Platform + { + bool IsPixDllInjected(const char* dllName); + AZStd::wstring GetLatestWinPixGpuCapturerPath(); + } + uint32_t Factory::GetComponentService() { return AZ_CRC("RHIService", 0x45d8e053); @@ -53,6 +66,7 @@ namespace AZ { if (s_renderDocModule->Load(false)) { + s_isRenderDocDllLoaded = true; pRENDERDOC_GetAPI renderDocGetAPI = s_renderDocModule->GetFunction("RENDERDOC_GetAPI"); if (renderDocGetAPI) { @@ -78,8 +92,30 @@ namespace AZ } } } -#endif // defined(USE_RENDERDOC) +#endif +#if defined(USE_PIX) + // If GPU capture is requested, we need to load the pix library as early as possible (before device queries/factories are made) + bool enablePixGPU = RHI::QueryCommandLineOption("enablePixGPU"); + if (enablePixGPU && AZ_TRAIT_PIX_MODULE && !s_pixModule) + { + //Get the path to the latest pix install directory + AZStd::wstring pixGpuDllPath = Platform::GetLatestWinPixGpuCapturerPath(); + AZStd::string dllPath; + AZStd::to_string(dllPath, pixGpuDllPath); + s_pixModule = DynamicModuleHandle::Create(dllPath.c_str()); + if (s_pixModule) + { + if (!s_pixModule->Load(false)) + { + AZ_Printf("RHISystem", "Pix capture requested but module failed to load.\n"); + } + } + } + + //Pix dll can still be injected even if we do not pass in enablePixGPU. This can be done if we launch the app from Pix. + s_isPixGpuCaptureDllLoaded = Platform::IsPixDllInjected(AZ_TRAIT_PIX_MODULE); +#endif } void Factory::Register(Factory* instance) @@ -116,6 +152,12 @@ namespace AZ { s_renderDocModule->Unload(); } +#endif +#if defined(USE_PIX) + if (s_pixModule) + { + s_pixModule->Unload(); + } #endif } @@ -137,5 +179,23 @@ namespace AZ return s_renderDocApi; } #endif + + bool Factory::IsRenderDocModuleLoaded() + { +#if defined(USE_RENDERDOC) + return s_isRenderDocDllLoaded; +#else + return false; +#endif + } + + bool Factory::IsPixModuleLoaded() + { +#if defined(USE_PIX) + return s_isPixGpuCaptureDllLoaded; +#else + return false; +#endif + } } } diff --git a/Gems/Atom/RHI/DX12/Code/Source/RHI/CommandList.cpp b/Gems/Atom/RHI/DX12/Code/Source/RHI/CommandList.cpp index a38de024d5..1ee35c513a 100644 --- a/Gems/Atom/RHI/DX12/Code/Source/RHI/CommandList.cpp +++ b/Gems/Atom/RHI/DX12/Code/Source/RHI/CommandList.cpp @@ -41,6 +41,8 @@ #define DX12_COMMANDLIST_TIMER_DETAIL(id) #endif +#define PIX_MARKER_CMDLIST_COL 0xFF0000FF + namespace AZ { namespace DX12 @@ -94,16 +96,22 @@ namespace AZ { SetName(name); - PIXBeginEvent(0xFF0000FF, name.GetCStr()); - PIXBeginEvent(GetCommandList(), 0xFF0000FF, name.GetCStr()); + PIXBeginEvent(PIX_MARKER_CMDLIST_COL, name.GetCStr()); + if (RHI::Factory::Get().IsPixModuleLoaded() || RHI::Factory::Get().IsRenderDocModuleLoaded()) + { + PIXBeginEvent(GetCommandList(), PIX_MARKER_CMDLIST_COL, name.GetCStr()); + } } void CommandList::Close() { FlushBarriers(); - - PIXEndEvent(GetCommandList()); PIXEndEvent(); + if (RHI::Factory::Get().IsPixModuleLoaded() || RHI::Factory::Get().IsRenderDocModuleLoaded()) + { + PIXEndEvent(GetCommandList()); + } + CommandListBase::Close(); } diff --git a/Gems/Atom/RHI/DX12/Code/Source/RHI/PipelineLibrary.cpp b/Gems/Atom/RHI/DX12/Code/Source/RHI/PipelineLibrary.cpp index d0a9ef0c07..182edb1298 100644 --- a/Gems/Atom/RHI/DX12/Code/Source/RHI/PipelineLibrary.cpp +++ b/Gems/Atom/RHI/DX12/Code/Source/RHI/PipelineLibrary.cpp @@ -7,6 +7,7 @@ */ #include #include +#include namespace AZ { @@ -46,7 +47,16 @@ namespace AZ #if defined (AZ_DX12_USE_PIPELINE_LIBRARY) AZStd::array_view bytes; - if (serializedData) + + bool shouldCreateLibFromSerializedData = true; + if (RHI::Factory::Get().IsRenderDocModuleLoaded() || RHI::Factory::Get().IsPixModuleLoaded()) + { + // CreatePipelineLibrary api does not function properly if Renderdoc or Pix is enabled + shouldCreateLibFromSerializedData = false; + } + + + if (serializedData && shouldCreateLibFromSerializedData) { bytes = serializedData->GetData(); } @@ -205,10 +215,11 @@ namespace AZ RHI::ResultCode PipelineLibrary::MergeIntoInternal([[maybe_unused]] AZStd::array_view pipelineLibraries) { -#if defined(USE_PIX) || defined(USE_RENDERDOC) - // StorePipeline api does not function properly if Pix or RenderDoc is enabled - return RHI::ResultCode::Fail; -#else + if (RHI::Factory::Get().IsRenderDocModuleLoaded() || RHI::Factory::Get().IsPixModuleLoaded()) + { + // StorePipeline api does not function properly if RenderDoc or Pix is enabled + return RHI::ResultCode::Fail; + } #if defined (AZ_DX12_USE_PIPELINE_LIBRARY) AZStd::lock_guard lock(m_mutex); @@ -226,8 +237,7 @@ namespace AZ } } #endif - return RHI::ResultCode::Success; -#endif + return RHI::ResultCode::Success; } RHI::ConstPtr PipelineLibrary::GetSerializedDataInternal() const diff --git a/Gems/Atom/RHI/DX12/Code/Source/RHI/Scope.cpp b/Gems/Atom/RHI/DX12/Code/Source/RHI/Scope.cpp index 80e41434b9..cea072954a 100644 --- a/Gems/Atom/RHI/DX12/Code/Source/RHI/Scope.cpp +++ b/Gems/Atom/RHI/DX12/Code/Source/RHI/Scope.cpp @@ -18,6 +18,7 @@ #include #include #include +#include #include #include @@ -309,8 +310,11 @@ namespace AZ commandList.GetValidator().BeginScope(*this); PIXBeginEvent(0xFFFF00FF, GetId().GetCStr()); - PIXBeginEvent(commandList.GetCommandList(), 0xFFFF00FF, GetId().GetCStr()); + if (RHI::Factory::Get().IsPixModuleLoaded() || RHI::Factory::Get().IsRenderDocModuleLoaded()) + { + PIXBeginEvent(commandList.GetCommandList(), 0xFFFF00FF, GetId().GetCStr()); + } commandList.SetAftermathEventMarker(GetId().GetCStr()); @@ -424,7 +428,10 @@ namespace AZ } } - PIXEndEvent(commandList.GetCommandList()); + if (RHI::Factory::Get().IsPixModuleLoaded() || RHI::Factory::Get().IsRenderDocModuleLoaded()) + { + PIXEndEvent(commandList.GetCommandList()); + } PIXEndEvent(); commandList.GetValidator().EndScope(); From e3d007319d4efadcbee33188e8da77f31af4f6b4 Mon Sep 17 00:00:00 2001 From: chcurran <82187351+carlitosan@users.noreply.github.com> Date: Thu, 9 Sep 2021 14:37:08 -0700 Subject: [PATCH 03/20] remove false error from deserializing BC nodes Signed-off-by: chcurran <82187351+carlitosan@users.noreply.github.com> --- .../Libraries/Core/EBusEventHandler.cpp | 2 +- .../ScriptCanvas/Libraries/Core/Method.cpp | 42 +++++++++++-------- 2 files changed, 26 insertions(+), 18 deletions(-) diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/EBusEventHandler.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/EBusEventHandler.cpp index 4e2d740656..a2ccfd46f2 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/EBusEventHandler.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/EBusEventHandler.cpp @@ -610,7 +610,7 @@ namespace ScriptCanvas void EBusEventHandler::OnDeserialize() { AZStd::lock_guard lock(m_mutex); - if (!m_ebus) + if (!m_ebus && !m_ebusName.empty()) { CreateHandler(m_ebusName); } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/Method.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/Method.cpp index 793224fd86..7e3f5f7d24 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/Method.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Libraries/Core/Method.cpp @@ -769,27 +769,30 @@ namespace ScriptCanvas { AZStd::lock_guard lock(m_mutex); - m_warnOnMissingFunction = true; - const AZ::BehaviorClass* bcClass{}; - const AZ::BehaviorMethod* method{}; - EventType eventType; + if (!m_lookupName.empty() || !m_className.empty()) + { + m_warnOnMissingFunction = true; + const AZ::BehaviorClass* bcClass{}; + const AZ::BehaviorMethod* method{}; + EventType eventType; - if (GetBehaviorContextClassMethod(m_lookupName, bcClass, method, eventType)) - { - m_eventType = eventType; - ConfigureMethod(*method, bcClass); - } - else - { - if (!m_method) + if (GetBehaviorContextClassMethod(m_lookupName, bcClass, method, eventType)) { - AZ_Warning("ScriptCanvas", !m_warnOnMissingFunction, "method node failed to deserialize properly"); + m_eventType = eventType; + ConfigureMethod(*method, bcClass); + } + else + { + if (!m_method) + { + AZ_Warning("ScriptCanvas", !m_warnOnMissingFunction, "method node failed to deserialize properly"); + } } - } - if (m_resultSlotIDs.empty()) - { - m_resultSlotIDs.emplace_back(SlotId{}); + if (m_resultSlotIDs.empty()) + { + m_resultSlotIDs.emplace_back(SlotId{}); + } } Node::OnDeserialize(); @@ -798,6 +801,11 @@ namespace ScriptCanvas #if defined(OBJECT_STREAM_EDITOR_ASSET_LOADING_SUPPORT_ENABLED)//// void Method::OnWriteEnd() { + if (m_lookupName.empty() && m_className.empty()) + { + return; + } + OnDeserialize(); } #endif//defined(OBJECT_STREAM_EDITOR_ASSET_LOADING_SUPPORT_ENABLED) From 7f7d3d9c1c1e52b685cc4e16e6375da130e98500 Mon Sep 17 00:00:00 2001 From: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> Date: Thu, 9 Sep 2021 16:09:55 -0700 Subject: [PATCH 04/20] Creates destination directory if it doesnt exists, `file(ARCHIVE_CREATE` will fail if the directory is not there Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> --- cmake/Projects.cmake | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cmake/Projects.cmake b/cmake/Projects.cmake index e70c8a4b14..7f2ac6a4fd 100644 --- a/cmake/Projects.cmake +++ b/cmake/Projects.cmake @@ -149,8 +149,9 @@ foreach(project ${LY_PROJECTS}) if("${CMAKE_INSTALL_CONFIG_NAME}" MATCHES "^([Rr][Ee][Ll][Ee][Aa][Ss][Ee])$") set(install_output_folder "${CMAKE_INSTALL_PREFIX}/@runtime_output_directory@/@PAL_PLATFORM_NAME@/${CMAKE_INSTALL_CONFIG_NAME}") message(STATUS "Generating ${install_output_folder}/Engine.pak from @full_directory_path@/Cache") - file(ARCHIVE_CREATE OUTPUT ${install_output_folder}/Engine.pak - PATHS @full_directory_path@/Cache + file(MAKE_DIRECTORY "${install_output_folder}") + file(ARCHIVE_CREATE OUTPUT "${install_output_folder}/Engine.pak" + PATHS "@full_directory_path@/Cache" FORMAT zip ) message(STATUS "${install_output_folder}/Engine.pak generated") From 0445ec395619324e88f56c0c2e02eb5cc08da4d8 Mon Sep 17 00:00:00 2001 From: Chris Burel Date: Thu, 9 Sep 2021 16:13:23 -0700 Subject: [PATCH 05/20] Remove references to unsupported "xlib" windowing system support (#4028) Support for X clients is provided by xcb instead. Signed-off-by: Chris Burel --- .../Linux/AzFramework/Application/Application_Linux.cpp | 3 --- .../Linux/AzFramework/Windowing/NativeWindow_Linux.cpp | 3 --- .../AzFramework/Platform/Linux/platform_linux.cmake | 6 +----- .../Vulkan/3rdParty/Platform/Linux/glad_vulkan_linux.cmake | 4 ---- .../Code/Source/Platform/Linux/RHI/WSISurface_Linux.cpp | 3 --- cmake/Platform/Linux/PAL_linux.cmake | 5 +++-- 6 files changed, 4 insertions(+), 20 deletions(-) diff --git a/Code/Framework/AzFramework/Platform/Linux/AzFramework/Application/Application_Linux.cpp b/Code/Framework/AzFramework/Platform/Linux/AzFramework/Application/Application_Linux.cpp index 5cc147b038..59602fe788 100644 --- a/Code/Framework/AzFramework/Platform/Linux/AzFramework/Application/Application_Linux.cpp +++ b/Code/Framework/AzFramework/Platform/Linux/AzFramework/Application/Application_Linux.cpp @@ -21,9 +21,6 @@ namespace AzFramework #elif PAL_TRAIT_LINUX_WINDOW_MANAGER_WAYLAND #error "Linux Window Manager Wayland not supported." return nullptr; -#elif PAL_TRAIT_LINUX_WINDOW_MANAGER_XLIB - #error "Linux Window Manager XLIB not supported." - return nullptr; #else #error "Linux Window Manager not recognized." return nullptr; diff --git a/Code/Framework/AzFramework/Platform/Linux/AzFramework/Windowing/NativeWindow_Linux.cpp b/Code/Framework/AzFramework/Platform/Linux/AzFramework/Windowing/NativeWindow_Linux.cpp index 436be28ee6..2950f8dcfc 100644 --- a/Code/Framework/AzFramework/Platform/Linux/AzFramework/Windowing/NativeWindow_Linux.cpp +++ b/Code/Framework/AzFramework/Platform/Linux/AzFramework/Windowing/NativeWindow_Linux.cpp @@ -17,9 +17,6 @@ namespace AzFramework #elif PAL_TRAIT_LINUX_WINDOW_MANAGER_WAYLAND #error "Linux Window Manager Wayland not supported." return nullptr; -#elif PAL_TRAIT_LINUX_WINDOW_MANAGER_XLIB - #error "Linux Window Manager XLIB not supported." - return nullptr; #else #error "Linux Window Manager not recognized." return nullptr; diff --git a/Code/Framework/AzFramework/Platform/Linux/platform_linux.cmake b/Code/Framework/AzFramework/Platform/Linux/platform_linux.cmake index c79c5f1dff..4480f86c1d 100644 --- a/Code/Framework/AzFramework/Platform/Linux/platform_linux.cmake +++ b/Code/Framework/AzFramework/Platform/Linux/platform_linux.cmake @@ -7,7 +7,7 @@ # # Based on the linux window manager trait, perform the appropriate additional build configurations -# Only 'xcb', 'wayland', and 'xlib' are recognized +# Only 'xcb' and 'wayland' are recognized if (${PAL_TRAIT_LINUX_WINDOW_MANAGER} STREQUAL "xcb") find_library(XCB_LIBRARY xcb) @@ -23,10 +23,6 @@ elseif(PAL_TRAIT_LINUX_WINDOW_MANAGER STREQUAL "wayland") set(LY_COMPILE_DEFINITIONS PUBLIC PAL_TRAIT_LINUX_WINDOW_MANAGER_WAYLAND) -elseif(PAL_TRAIT_LINUX_WINDOW_MANAGER STREQUAL "xlib") - - set(LY_COMPILE_DEFINITIONS PUBLIC PAL_TRAIT_LINUX_WINDOW_MANAGER_XLIB) - else() message(FATAL_ERROR, "Linux Window Manager ${PAL_TRAIT_LINUX_WINDOW_MANAGER} is not recognized") diff --git a/Gems/Atom/RHI/Vulkan/3rdParty/Platform/Linux/glad_vulkan_linux.cmake b/Gems/Atom/RHI/Vulkan/3rdParty/Platform/Linux/glad_vulkan_linux.cmake index 1936c5b911..c89bbcb3f2 100644 --- a/Gems/Atom/RHI/Vulkan/3rdParty/Platform/Linux/glad_vulkan_linux.cmake +++ b/Gems/Atom/RHI/Vulkan/3rdParty/Platform/Linux/glad_vulkan_linux.cmake @@ -14,10 +14,6 @@ elseif(PAL_TRAIT_LINUX_WINDOW_MANAGER STREQUAL "wayland") set(GLAD_VULKAN_COMPILE_DEFINITIONS VK_USE_PLATFORM_WAYLAND_KHR ) -elseif(PAL_TRAIT_LINUX_WINDOW_MANAGER STREQUAL "xlib") - set(GLAD_VULKAN_COMPILE_DEFINITIONS - VK_USE_PLATFORM_XLIB_KHR - ) else() message(FATAL_ERROR, "Linux Window Manager ${PAL_TRAIT_LINUX_WINDOW_MANAGER} is not recognized") endif() diff --git a/Gems/Atom/RHI/Vulkan/Code/Source/Platform/Linux/RHI/WSISurface_Linux.cpp b/Gems/Atom/RHI/Vulkan/Code/Source/Platform/Linux/RHI/WSISurface_Linux.cpp index 98e91519ea..a818599b0d 100644 --- a/Gems/Atom/RHI/Vulkan/Code/Source/Platform/Linux/RHI/WSISurface_Linux.cpp +++ b/Gems/Atom/RHI/Vulkan/Code/Source/Platform/Linux/RHI/WSISurface_Linux.cpp @@ -41,9 +41,6 @@ namespace AZ #elif PAL_TRAIT_LINUX_WINDOW_MANAGER_WAYLAND #error "Linux Window Manager Wayland not supported." return RHI::ResultCode::Unimplemented; -#elif PAL_TRAIT_LINUX_WINDOW_MANAGER_XLIB - #error "Linux Window Manager XLIB not supported." - return RHI::ResultCode::Unimplemented; #else #error "Linux Window Manager not recognized." return RHI::ResultCode::Unimplemented; diff --git a/cmake/Platform/Linux/PAL_linux.cmake b/cmake/Platform/Linux/PAL_linux.cmake index 528bb5794c..c088163dca 100644 --- a/cmake/Platform/Linux/PAL_linux.cmake +++ b/cmake/Platform/Linux/PAL_linux.cmake @@ -41,5 +41,6 @@ set(LY_ASSET_DEPLOY_ASSET_TYPE "pc" CACHE STRING "Set the asset type for deploym ly_set(LY_PYTHON_CMD ${CMAKE_CURRENT_SOURCE_DIR}/python/python.sh) # Set the default window manager that applications should be using on Linux -# Note: Only ("xcb", "wayland", or "xlib" should be considered) -set(PAL_TRAIT_LINUX_WINDOW_MANAGER "xcb" CACHE STRING "Sets the Window Manager type to use when configuring Linux (xcb, wayland, or xlib)") +# Note: Only ("xcb" or "wayland" should be considered) +set(PAL_TRAIT_LINUX_WINDOW_MANAGER "xcb" CACHE STRING "Sets the Window Manager type to use when configuring Linux") +set_property(CACHE PAL_TRAIT_LINUX_WINDOW_MANAGER PROPERTY STRINGS xcb wayland) From cf4cb2750a0e5692fc35aaa4b27df62b064c402b Mon Sep 17 00:00:00 2001 From: Steve Pham <82231385+spham-amzn@users.noreply.github.com> Date: Thu, 9 Sep 2021 16:27:39 -0700 Subject: [PATCH 06/20] Adding missing pragma header guards to _xcb.h header files (#4029) Signed-off-by: Steve Pham --- .../Linux/AzFramework/Application/Application_Linux_xcb.h | 1 + .../Linux/AzFramework/Windowing/NativeWindow_Linux_xcb.h | 1 + 2 files changed, 2 insertions(+) diff --git a/Code/Framework/AzFramework/Platform/Linux/AzFramework/Application/Application_Linux_xcb.h b/Code/Framework/AzFramework/Platform/Linux/AzFramework/Application/Application_Linux_xcb.h index 55daedb4dd..fbd7f165d3 100644 --- a/Code/Framework/AzFramework/Platform/Linux/AzFramework/Application/Application_Linux_xcb.h +++ b/Code/Framework/AzFramework/Platform/Linux/AzFramework/Application/Application_Linux_xcb.h @@ -5,6 +5,7 @@ * SPDX-License-Identifier: Apache-2.0 OR MIT * */ +#pragma once #include #include diff --git a/Code/Framework/AzFramework/Platform/Linux/AzFramework/Windowing/NativeWindow_Linux_xcb.h b/Code/Framework/AzFramework/Platform/Linux/AzFramework/Windowing/NativeWindow_Linux_xcb.h index 73e255bab0..40181395e4 100644 --- a/Code/Framework/AzFramework/Platform/Linux/AzFramework/Windowing/NativeWindow_Linux_xcb.h +++ b/Code/Framework/AzFramework/Platform/Linux/AzFramework/Windowing/NativeWindow_Linux_xcb.h @@ -5,6 +5,7 @@ * SPDX-License-Identifier: Apache-2.0 OR MIT * */ +#pragma once #include #include From 3a4937456a507c52a726e32be3057936ad00618b Mon Sep 17 00:00:00 2001 From: Artur K <96597+nemerle@users.noreply.github.com> Date: Fri, 10 Sep 2021 02:08:33 +0200 Subject: [PATCH 07/20] Build time reduction: AzStdOnDemandReflection (#3111) * Move a few specializations from AzStdOnDemandReflection.inl to cpp file This reduces compilation time and produced profile/debug file sizes. The specializations for string and string_view are only implemented for 'char' type, since others are not used anywhere. Extracted `Reflect` method from `ClientAuthAWSCredentials` to a cpp file. Signed-off-by: nemerle <96597+nemerle@users.noreply.github.com> * Windows build fixes. Signed-off-by: nemerle <96597+nemerle@users.noreply.github.com> * Added missing license. Signed-off-by: nemerle <96597+nemerle@users.noreply.github.com> * Fix missing spaces in template argument lists Signed-off-by: nemerle <96597+nemerle@users.noreply.github.com> * Clang format on ClientAuthAWSCredentials.cpp Signed-off-by: nemerle <96597+nemerle@users.noreply.github.com> * Merge upstream development and fix linux build. Signed-off-by: nemerle <96597+nemerle@users.noreply.github.com> --- .../AzCore/AzCore/Asset/AssetSerializer.h | 1 + .../AzCore/RTTI/AzStdOnDemandReflection.inl | 225 ++++-------------- ...AzStdOnDemandReflectionSpecializations.cpp | 208 ++++++++++++++++ .../Settings/SettingsRegistryScriptUtils.cpp | 1 + .../AzCore/AzCore/azcore_files.cmake | 1 + .../SettingsRegistryScriptUtilsTests.cpp | 9 +- .../Terrain/TerrainDataRequestBus.cpp | 1 + .../SceneCore/Events/ExportProductList.cpp | 1 + .../Authorization/ClientAuthAWSCredentials.h | 31 +-- .../ClientAuthAWSCredentials.cpp | 50 ++++ .../Code/awsclientauth_files.cmake | 1 + ...adiusWeightModifierComponentController.cpp | 1 + .../Code/Source/Asset/BlastChunksAsset.cpp | 1 + .../Code/Source/PythonReflectionComponent.cpp | 1 + .../Code/Source/PythonUtility.cpp | 5 +- .../Code/Source/Shape/ShapeComponent.cpp | 5 +- .../Code/Source/TerrainSystem/TerrainSystem.h | 3 +- .../Code/Source/WhiteBoxToolApiReflection.cpp | 1 + 18 files changed, 332 insertions(+), 214 deletions(-) create mode 100644 Code/Framework/AzCore/AzCore/RTTI/AzStdOnDemandReflectionSpecializations.cpp create mode 100644 Gems/AWSClientAuth/Code/Source/Authorization/ClientAuthAWSCredentials.cpp diff --git a/Code/Framework/AzCore/AzCore/Asset/AssetSerializer.h b/Code/Framework/AzCore/AzCore/Asset/AssetSerializer.h index f2ac6ea459..a9e7f5f02a 100644 --- a/Code/Framework/AzCore/AzCore/Asset/AssetSerializer.h +++ b/Code/Framework/AzCore/AzCore/Asset/AssetSerializer.h @@ -10,6 +10,7 @@ #include #include +#include namespace AZ { struct Uuid; diff --git a/Code/Framework/AzCore/AzCore/RTTI/AzStdOnDemandReflection.inl b/Code/Framework/AzCore/AzCore/RTTI/AzStdOnDemandReflection.inl index 690bbb0b04..bba79e36f7 100644 --- a/Code/Framework/AzCore/AzCore/RTTI/AzStdOnDemandReflection.inl +++ b/Code/Framework/AzCore/AzCore/RTTI/AzStdOnDemandReflection.inl @@ -7,18 +7,17 @@ */ #pragma once -#include #include #include #include -#include -#include -#include -#include -#include +#include #include #include -#include + +#ifndef AZ_USE_CUSTOM_SCRIPT_BIND +struct lua_State; +struct lua_Debug; +#endif // AZ_USE_CUSTOM_SCRIPT_BIND // forward declare specialized types namespace AZStd @@ -59,6 +58,26 @@ namespace AZ class BehaviorContext; class ScriptDataContext; + namespace OnDemandLuaFunctions + { + inline void AnyToLua(lua_State* lua, BehaviorValueParameter& param); + } + namespace ScriptCanvasOnDemandReflection + { + template + struct OnDemandPrettyName; + template + struct OnDemandToolTip; + template + struct OnDemandCategoryName; + } + namespace CommonOnDemandReflections + { + void ReflectCommonString(ReflectContext* context); + void ReflectCommonStringView(ReflectContext* context); + void ReflectStdAny(ReflectContext* context); + void ReflectVoidOutcome(ReflectContext* context); + } /// OnDemand reflection for AZStd::basic_string template struct OnDemandReflection< AZStd::basic_string > @@ -66,108 +85,16 @@ namespace AZ using ContainerType = AZStd::basic_string; using SizeType = typename ContainerType::size_type; using ValueType = typename ContainerType::value_type; - + static void Reflect(ReflectContext* context) { - if (BehaviorContext* behaviorContext = azrtti_cast(context)) + constexpr bool is_string = AZStd::is_same_v && AZStd::is_same_v> + && AZStd::is_same_v; + if constexpr(is_string) { - behaviorContext->Class() - ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All) - ->Attribute(AZ::Script::Attributes::Storage, AZ::Script::Attributes::StorageType::Value) - ->template Constructor() - ->Attribute(AZ::Script::Attributes::ConstructorOverride, &OnDemandLuaFunctions::ConstructBasicString) - ->Attribute(AZ::Script::Attributes::ReaderWriterOverride, ScriptContext::CustomReaderWriter(&OnDemandLuaFunctions::StringTypeToLua, &OnDemandLuaFunctions::StringTypeFromLua)) - ->template WrappingMember(&ContainerType::c_str) - ->Method("c_str", &ContainerType::c_str) - ->Method("Length", [](ContainerType* thisPtr) { return aznumeric_cast(thisPtr->length()); }) - ->Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::Length) - ->Method("Equal", [](const ContainerType& lhs, const ContainerType& rhs) - { - return lhs == rhs; - }) - ->Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::Equal) - ->Method("Find", [](ContainerType* thisPtr, const ContainerType& stringToFind, const int& startPos) - { - return aznumeric_cast(thisPtr->find(stringToFind, startPos)); - }) - ->Method("Substring", [](ContainerType* thisPtr, const int& pos, const int& len) - { - return thisPtr->substr(pos, len); - }) - ->Method("Replace", [](ContainerType* thisPtr, const ContainerType& stringToReplace, const ContainerType& replacementString) - { - SizeType startPos = 0; - while ((startPos = thisPtr->find(stringToReplace, startPos)) != ContainerType::npos && !stringToReplace.empty()) - { - thisPtr->replace(startPos, stringToReplace.length(), replacementString); - startPos += replacementString.length(); - } - - return *thisPtr; - }) - ->Method("ReplaceByIndex", [](ContainerType* thisPtr, const int& beginIndex, const int& endIndex, const ContainerType& replacementString) - { - thisPtr->replace(beginIndex, endIndex - beginIndex + 1, replacementString); - return *thisPtr; - }) - ->Method("Add", [](ContainerType* thisPtr, const ContainerType& addend) - { - return *thisPtr + addend; - }) - ->Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::Concat) - ->Method("TrimLeft", [](ContainerType* thisPtr) - { - auto wsfront = AZStd::find_if_not(thisPtr->begin(), thisPtr->end(), [](char c) {return AZStd::is_space(c);}); - thisPtr->erase(thisPtr->begin(), wsfront); - return *thisPtr; - }) - ->Method("TrimRight", [](ContainerType* thisPtr) - { - auto wsend = AZStd::find_if_not(thisPtr->rbegin(), thisPtr->rend(), [](char c) {return AZStd::is_space(c);}); - thisPtr->erase(wsend.base(), thisPtr->end()); - return *thisPtr; - }) - ->Method("ToLower", [](ContainerType* thisPtr) - { - ContainerType toLowerString; - for (auto itr = thisPtr->begin(); itr < thisPtr->end(); itr++) - { - toLowerString.push_back(static_cast(tolower(*itr))); - } - return toLowerString; - }) - ->Method("ToUpper", [](ContainerType* thisPtr) - { - ContainerType toUpperString; - for (auto itr = thisPtr->begin(); itr < thisPtr->end(); itr++) - { - toUpperString.push_back(static_cast(toupper(*itr))); - } - return toUpperString; - }) - ->Method("Join", [](AZStd::vector* stringsToJoinPtr, const ContainerType& joinStr) - { - ContainerType joinString; - for (auto& stringToJoin : *stringsToJoinPtr) - { - joinString.append(stringToJoin).append(joinStr); - } - //Cut off the last join str - if (!stringsToJoinPtr->empty()) - { - joinString = joinString.substr(0, joinString.length() - joinStr.length()); - } - return joinString; - }) - - ->Method("Split", [](ContainerType* thisPtr, const ContainerType& splitter) - { - AZStd::vector splitStringList; - AZStd::tokenize(*thisPtr, splitter, splitStringList); - return splitStringList; - }) - ; + CommonOnDemandReflections::ReflectCommonString(context); } + static_assert (is_string, "Unspecialized basic_string<> template reflection requested."); } }; @@ -181,44 +108,9 @@ namespace AZ static void Reflect(ReflectContext* context) { - if (BehaviorContext* behaviorContext = azrtti_cast(context)) - { - behaviorContext->Class() - ->Attribute(AZ::Script::Attributes::Category, "Core") - ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All) - ->Attribute(AZ::Script::Attributes::Storage, AZ::Script::Attributes::StorageType::Value) - ->template Constructor() - ->Attribute(AZ::Script::Attributes::ConstructorOverride, &OnDemandLuaFunctions::ConstructStringView) - ->Attribute(AZ::Script::Attributes::ReaderWriterOverride, ScriptContext::CustomReaderWriter(&OnDemandLuaFunctions::StringTypeToLua, &OnDemandLuaFunctions::StringTypeFromLua)) - ->Method("ToString", [](const ContainerType& stringView) { return static_cast(stringView).c_str(); }, { { { "Reference", "String view object being converted to string" } } }) - ->Attribute(AZ::Script::Attributes::ToolTip, "Converts string_view to string") - ->Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::ToString) - ->template WrappingMember(&ContainerType::data) - ->Method("data", &ContainerType::data) - ->Attribute(AZ::Script::Attributes::ToolTip, "Returns reference to raw string data") - ->Method("length", [](ContainerType* thisPtr) { return aznumeric_cast(thisPtr->length()); }, { { { "This", "Reference to the object the method is being performed on" } } }) - ->Attribute(AZ::Script::Attributes::ToolTip, "Returns length of string view") - ->Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::Length) - ->Method("size", [](ContainerType* thisPtr) { return aznumeric_cast(thisPtr->size()); }, { { { "This", "Reference to the object the method is being performed on" }} }) - ->Attribute(AZ::Script::Attributes::ToolTip, "Returns length of string view") - ->Method("find", [](ContainerType* thisPtr, ContainerType stringToFind, int startPos) - { - return aznumeric_cast(thisPtr->find(stringToFind, startPos)); - }, { { { "This", "Reference to the object the method is being performed on" }, { "View", "View to search " }, { "Position", "Index in view to start search" }} }) - ->Attribute(AZ::Script::Attributes::ToolTip, "Searches for supplied string within this string") - ->Method("substr", [](ContainerType* thisPtr, int pos, int len) - { - return thisPtr->substr(pos, len); - }, { {{"This", "Reference to the object the method is being performed on"}, {"Position", "Index in view that indicates the beginning of the sub string"}, {"Count", "Length of characters that sub string view occupies" }} }) - ->Attribute(AZ::Script::Attributes::ToolTip, "Creates a sub view of this string view. The string data is not actually modified") - ->Method("remove_prefix", [](ContainerType* thisPtr, int n) {thisPtr->remove_prefix(n); }, - { { { "This", "Reference to the object the method is being performed on" }, { "Count", "Number of characters to remove from start of view" }} }) - ->Attribute(AZ::Script::Attributes::ToolTip, "Moves the supplied number of characters from the beginning of this sub view") - ->Method("remove_suffix", [](ContainerType* thisPtr, int n) {thisPtr->remove_suffix(n); }, - { { { "This", "Reference to the object the method is being performed on" } ,{ "Count", "Number of characters to remove from end of view" }} }) - ->Attribute(AZ::Script::Attributes::ToolTip, "Moves the supplied number of characters from the end of this sub view") - ; - } + constexpr bool is_common = AZStd::is_same_v && AZStd::is_same_v>; + static_assert (is_common, "Unspecialized basic_string_view<> template reflection requested."); + CommonOnDemandReflections::ReflectCommonStringView(context); } }; @@ -228,7 +120,7 @@ namespace AZ { using ContainerType = AZStd::intrusive_ptr; - // TODO: Count reflection types for a proper un-reflect + // TODO: Count reflection types for a proper un-reflect static void CustomConstructor(ContainerType* thisPtr, ScriptDataContext& dc) { @@ -276,7 +168,7 @@ namespace AZ { using ContainerType = AZStd::shared_ptr; - // TODO: Count reflection types for a proper un-reflect + // TODO: Count reflection types for a proper un-reflect static void CustomConstructor(ContainerType* thisPtr, ScriptDataContext& dc) { @@ -435,7 +327,7 @@ namespace AZ thisPtr[uindex] = value; } - + static bool EraseCheck_VM(ContainerType& thisPtr, AZ::u64 index) { if (index < thisPtr.size()) @@ -448,7 +340,7 @@ namespace AZ return false; } } - + static ContainerType& ErasePost_VM(ContainerType& thisPtr, AZ::u64 /*index*/) { return thisPtr; @@ -604,7 +496,7 @@ namespace AZ return AZ::Failure(AZStd::string::format("Index out of bounds: %zu (size: %zu)", index, thisContainer.size())); } } - + static AZ::Outcome Replace(ContainerType& thisContainer, size_t index, T& value) { if (index >= 0 && index < thisContainer.size()) @@ -634,7 +526,7 @@ namespace AZ ->Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::Length) ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All) ->Attribute(AZ::Script::Attributes::Deprecated, true) - + ->Method(k_accessElementName, &At, {{ {}, { "Index", "The index to read from", nullptr, BehaviorParameter::Traits::TR_INDEX }}}) ->Method(k_sizeName, [](ContainerType*) { return aznumeric_cast(N); }) ->Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::Length) @@ -743,27 +635,8 @@ namespace AZ template<> // in case someone has an issue with bool struct OnDemandReflection> { - using OutcomeType = AZ::Outcome; - - static void Reflect(ReflectContext* context) - { - if (BehaviorContext* behaviorContext = azrtti_cast(context)) - { - // note we can reflect iterator types and support iterators, as of know we want to keep it simple - behaviorContext->Class() - ->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Common) - ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All) - ->Attribute(AZ::ScriptCanvasAttributes::AllowInternalCreation, true) - ->Attribute(AZ::ScriptCanvasAttributes::PrettyName, &ScriptCanvasOnDemandReflection::OnDemandPrettyName::Get) - ->Attribute(AZ::Script::Attributes::ToolTip, &ScriptCanvasOnDemandReflection::OnDemandToolTip::Get) - ->Attribute(AZ::Script::Attributes::Category, &ScriptCanvasOnDemandReflection::OnDemandCategoryName::Get) - ->Attribute(AZ::ScriptCanvasAttributes::AllowInternalCreation, AttributeIsValid::IfPresent) - ->Attribute(AZ::ScriptCanvasAttributes::VariableCreationForbidden, AttributeIsValid::IfPresent) - ->Method("Failure", []() -> OutcomeType { return AZ::Failure(); }) - ->Method("Success", []() -> OutcomeType { return AZ::Success(); }) - ->Method("IsSuccess", &OutcomeType::IsSuccess) - ; - } + static void Reflect(ReflectContext* context) { + CommonOnDemandReflections::ReflectVoidOutcome(context); } }; @@ -1179,16 +1052,8 @@ namespace AZ template <> struct OnDemandReflection { - static void Reflect(ReflectContext* context) - { - if (BehaviorContext* behaviorContext = azrtti_cast(context)) - { - behaviorContext->Class() - ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All) - ->Attribute(Script::Attributes::Ignore, true) // Don't reflect any type to script (there should never be an any instance in script) - ->Attribute(Script::Attributes::ReaderWriterOverride, ScriptContext::CustomReaderWriter(&AZ::OnDemandLuaFunctions::AnyToLua, &OnDemandLuaFunctions::AnyFromLua)) - ; - } + static void Reflect(ReflectContext* context) { + CommonOnDemandReflections::ReflectStdAny(context); } }; diff --git a/Code/Framework/AzCore/AzCore/RTTI/AzStdOnDemandReflectionSpecializations.cpp b/Code/Framework/AzCore/AzCore/RTTI/AzStdOnDemandReflectionSpecializations.cpp new file mode 100644 index 0000000000..c42e32cd42 --- /dev/null +++ b/Code/Framework/AzCore/AzCore/RTTI/AzStdOnDemandReflectionSpecializations.cpp @@ -0,0 +1,208 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +namespace AZ::CommonOnDemandReflections +{ + void ReflectCommonString(ReflectContext* context) + { + using ContainerType = AZStd::string; + using SizeType = typename ContainerType::size_type; + using ValueType = typename ContainerType::value_type; + if (BehaviorContext* behaviorContext = azrtti_cast(context)) + { + behaviorContext->Class() + ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All) + ->Attribute(AZ::Script::Attributes::Storage, AZ::Script::Attributes::StorageType::Value) + ->template Constructor() + ->Attribute(AZ::Script::Attributes::ConstructorOverride, &OnDemandLuaFunctions::ConstructBasicString) + ->Attribute(AZ::Script::Attributes::ReaderWriterOverride, ScriptContext::CustomReaderWriter(&OnDemandLuaFunctions::StringTypeToLua, &OnDemandLuaFunctions::StringTypeFromLua)) + ->template WrappingMember(&ContainerType::c_str) + ->Method("c_str", &ContainerType::c_str) + ->Method("Length", [](ContainerType* thisPtr) { return aznumeric_cast(thisPtr->length()); }) + ->Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::Length) + ->Method("Equal", [](const ContainerType& lhs, const ContainerType& rhs) + { + return lhs == rhs; + }) + ->Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::Equal) + ->Method("Find", [](ContainerType* thisPtr, const ContainerType& stringToFind, const int& startPos) + { + return aznumeric_cast(thisPtr->find(stringToFind, startPos)); + }) + ->Method("Substring", [](ContainerType* thisPtr, const int& pos, const int& len) + { + return thisPtr->substr(pos, len); + }) + ->Method("Replace", [](ContainerType* thisPtr, const ContainerType& stringToReplace, const ContainerType& replacementString) + { + SizeType startPos = 0; + while ((startPos = thisPtr->find(stringToReplace, startPos)) != ContainerType::npos && !stringToReplace.empty()) + { + thisPtr->replace(startPos, stringToReplace.length(), replacementString); + startPos += replacementString.length(); + } + + return *thisPtr; + }) + ->Method("ReplaceByIndex", [](ContainerType* thisPtr, const int& beginIndex, const int& endIndex, const ContainerType& replacementString) + { + thisPtr->replace(beginIndex, endIndex - beginIndex + 1, replacementString); + return *thisPtr; + }) + ->Method("Add", [](ContainerType* thisPtr, const ContainerType& addend) + { + return *thisPtr + addend; + }) + ->Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::Concat) + ->Method("TrimLeft", [](ContainerType* thisPtr) + { + auto wsfront = AZStd::find_if_not(thisPtr->begin(), thisPtr->end(), [](char c) {return AZStd::is_space(c);}); + thisPtr->erase(thisPtr->begin(), wsfront); + return *thisPtr; + }) + ->Method("TrimRight", [](ContainerType* thisPtr) + { + auto wsend = AZStd::find_if_not(thisPtr->rbegin(), thisPtr->rend(), [](char c) {return AZStd::is_space(c);}); + thisPtr->erase(wsend.base(), thisPtr->end()); + return *thisPtr; + }) + ->Method("ToLower", [](ContainerType* thisPtr) + { + ContainerType toLowerString; + for (auto itr = thisPtr->begin(); itr < thisPtr->end(); itr++) + { + toLowerString.push_back(static_cast(tolower(*itr))); + } + return toLowerString; + }) + ->Method("ToUpper", [](ContainerType* thisPtr) + { + ContainerType toUpperString; + for (auto itr = thisPtr->begin(); itr < thisPtr->end(); itr++) + { + toUpperString.push_back(static_cast(toupper(*itr))); + } + return toUpperString; + }) + ->Method("Join", [](AZStd::vector* stringsToJoinPtr, const ContainerType& joinStr) + { + ContainerType joinString; + for (auto& stringToJoin : *stringsToJoinPtr) + { + joinString.append(stringToJoin).append(joinStr); + } + //Cut off the last join str + if (!stringsToJoinPtr->empty()) + { + joinString = joinString.substr(0, joinString.length() - joinStr.length()); + } + return joinString; + }) + + ->Method("Split", [](ContainerType* thisPtr, const ContainerType& splitter) + { + AZStd::vector splitStringList; + AZStd::tokenize(*thisPtr, splitter, splitStringList); + return splitStringList; + }) + ; + } + } + void ReflectCommonStringView(ReflectContext* context) + { + using ContainerType = AZStd::string_view; + + if (BehaviorContext* behaviorContext = azrtti_cast(context)) + { + behaviorContext->Class() + ->Attribute(AZ::Script::Attributes::Category, "Core") + ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All) + ->Attribute(AZ::Script::Attributes::Storage, AZ::Script::Attributes::StorageType::Value) + ->template Constructor() + ->Attribute(AZ::Script::Attributes::ConstructorOverride, &OnDemandLuaFunctions::ConstructStringView) + ->Attribute(AZ::Script::Attributes::ReaderWriterOverride, ScriptContext::CustomReaderWriter(&OnDemandLuaFunctions::StringTypeToLua, &OnDemandLuaFunctions::StringTypeFromLua)) + ->Method("ToString", [](const ContainerType& stringView) { return static_cast(stringView).c_str(); }, { { { "Reference", "String view object being converted to string" } } }) + ->Attribute(AZ::Script::Attributes::ToolTip, "Converts string_view to string") + ->Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::ToString) + ->template WrappingMember(&ContainerType::data) + ->Method("data", &ContainerType::data) + ->Attribute(AZ::Script::Attributes::ToolTip, "Returns reference to raw string data") + ->Method("length", [](ContainerType* thisPtr) { return aznumeric_cast(thisPtr->length()); }, { { { "This", "Reference to the object the method is being performed on" } } }) + ->Attribute(AZ::Script::Attributes::ToolTip, "Returns length of string view") + ->Attribute(AZ::Script::Attributes::Operator, AZ::Script::Attributes::OperatorType::Length) + ->Method("size", [](ContainerType* thisPtr) { return aznumeric_cast(thisPtr->size()); }, { { { "This", "Reference to the object the method is being performed on" }} }) + ->Attribute(AZ::Script::Attributes::ToolTip, "Returns length of string view") + ->Method("find", [](ContainerType* thisPtr, ContainerType stringToFind, int startPos) + { + return aznumeric_cast(thisPtr->find(stringToFind, startPos)); + }, { { { "This", "Reference to the object the method is being performed on" }, { "View", "View to search " }, { "Position", "Index in view to start search" }} }) + ->Attribute(AZ::Script::Attributes::ToolTip, "Searches for supplied string within this string") + ->Method("substr", [](ContainerType* thisPtr, int pos, int len) + { + return thisPtr->substr(pos, len); + }, { {{"This", "Reference to the object the method is being performed on"}, {"Position", "Index in view that indicates the beginning of the sub string"}, {"Count", "Length of characters that sub string view occupies" }} }) + ->Attribute(AZ::Script::Attributes::ToolTip, "Creates a sub view of this string view. The string data is not actually modified") + ->Method("remove_prefix", [](ContainerType* thisPtr, int n) {thisPtr->remove_prefix(n); }, + { { { "This", "Reference to the object the method is being performed on" }, { "Count", "Number of characters to remove from start of view" }} }) + ->Attribute(AZ::Script::Attributes::ToolTip, "Moves the supplied number of characters from the beginning of this sub view") + ->Method("remove_suffix", [](ContainerType* thisPtr, int n) {thisPtr->remove_suffix(n); }, + { { { "This", "Reference to the object the method is being performed on" } ,{ "Count", "Number of characters to remove from end of view" }} }) + ->Attribute(AZ::Script::Attributes::ToolTip, "Moves the supplied number of characters from the end of this sub view") + ; + } + } + + + void ReflectVoidOutcome(ReflectContext* context) + { + using OutcomeType = AZ::Outcome; + + if (BehaviorContext* behaviorContext = azrtti_cast(context)) + { + // note we can reflect iterator types and support iterators, as of know we want to keep it simple + behaviorContext->Class() + ->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Common) + ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All) + ->Attribute(AZ::ScriptCanvasAttributes::AllowInternalCreation, true) + ->Attribute(AZ::ScriptCanvasAttributes::PrettyName, &ScriptCanvasOnDemandReflection::OnDemandPrettyName::Get) + ->Attribute(AZ::Script::Attributes::ToolTip, &ScriptCanvasOnDemandReflection::OnDemandToolTip::Get) + ->Attribute(AZ::Script::Attributes::Category, &ScriptCanvasOnDemandReflection::OnDemandCategoryName::Get) + ->Attribute(AZ::ScriptCanvasAttributes::AllowInternalCreation, AttributeIsValid::IfPresent) + ->Attribute(AZ::ScriptCanvasAttributes::VariableCreationForbidden, AttributeIsValid::IfPresent) + ->Method("Failure", []() -> OutcomeType { return AZ::Failure(); }) + ->Method("Success", []() -> OutcomeType { return AZ::Success(); }) + ->Method("IsSuccess", &OutcomeType::IsSuccess) + ; + } + } + + void ReflectStdAny(ReflectContext* context) + { + if (BehaviorContext* behaviorContext = azrtti_cast(context)) + { + behaviorContext->Class() + ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::All) + ->Attribute( + Script::Attributes::Ignore, true) // Don't reflect any type to script (there should never be an any instance in script) + ->Attribute( + Script::Attributes::ReaderWriterOverride, + ScriptContext::CustomReaderWriter(&AZ::OnDemandLuaFunctions::AnyToLua, &OnDemandLuaFunctions::AnyFromLua)); + } + } + +} // namespace AZ diff --git a/Code/Framework/AzCore/AzCore/Settings/SettingsRegistryScriptUtils.cpp b/Code/Framework/AzCore/AzCore/Settings/SettingsRegistryScriptUtils.cpp index abaab425d3..c32591874b 100644 --- a/Code/Framework/AzCore/AzCore/Settings/SettingsRegistryScriptUtils.cpp +++ b/Code/Framework/AzCore/AzCore/Settings/SettingsRegistryScriptUtils.cpp @@ -6,6 +6,7 @@ * */ +#include #include #include #include diff --git a/Code/Framework/AzCore/AzCore/azcore_files.cmake b/Code/Framework/AzCore/AzCore/azcore_files.cmake index c2ee439645..b2ef586053 100644 --- a/Code/Framework/AzCore/AzCore/azcore_files.cmake +++ b/Code/Framework/AzCore/AzCore/azcore_files.cmake @@ -440,6 +440,7 @@ set(FILES RTTI/AttributeReader.h RTTI/AzStdOnDemandPrettyName.inl RTTI/AzStdOnDemandReflection.inl + RTTI/AzStdOnDemandReflectionSpecializations.cpp RTTI/AzStdOnDemandReflectionLuaFunctions.inl RTTI/BehaviorContext.cpp RTTI/BehaviorContext.h diff --git a/Code/Framework/AzCore/Tests/Settings/SettingsRegistryScriptUtilsTests.cpp b/Code/Framework/AzCore/Tests/Settings/SettingsRegistryScriptUtilsTests.cpp index 111b4a027a..0fc491ac34 100644 --- a/Code/Framework/AzCore/Tests/Settings/SettingsRegistryScriptUtilsTests.cpp +++ b/Code/Framework/AzCore/Tests/Settings/SettingsRegistryScriptUtilsTests.cpp @@ -10,11 +10,12 @@ #include #include #include +#include namespace SettingsRegistryScriptUtilsTests { static constexpr const char* SettingsRegistryScriptClassName = "SettingsRegistryInterface"; - + class SettingsRegistryBehaviorContextFixture : public UnitTest::ScopedAllocatorSetupFixture @@ -77,7 +78,7 @@ namespace SettingsRegistryScriptUtilsTests // so the invoking the getter on global Settings Registry should succeed, but return nullptr EXPECT_TRUE(globalSettingsRegistryGetter->InvokeResult(settingsRegistryObject)); EXPECT_EQ(nullptr, settingsRegistryObject.m_settingsRegistry); - + // Register the Settings Registry stored on the fixture with the SettingsRegistry Interface AZ::SettingsRegistry::Register(m_registry.get()); EXPECT_TRUE(globalSettingsRegistryGetter->InvokeResult(settingsRegistryObject)); @@ -227,7 +228,7 @@ namespace SettingsRegistryScriptUtilsTests R"( "intIndex": -55)" "\n" R"( })" "\n" R"(])"; - + // Populate the settings registry to match the expected json values m_registry->Set("/TestObject/boolValue", false); m_registry->Set("/TestObject/intValue", aznumeric_cast(17)); @@ -562,4 +563,4 @@ namespace SettingsRegistryScriptUtilsTests SettingsRegistryBehaviorContextParams{ "/TestObject/stringValue", AZStd::string_view{"Hello World"}, "GetString", "SetString" } ) ); -} +} diff --git a/Code/Framework/AzFramework/AzFramework/Terrain/TerrainDataRequestBus.cpp b/Code/Framework/AzFramework/AzFramework/Terrain/TerrainDataRequestBus.cpp index 59a49a48e1..947d3821ab 100644 --- a/Code/Framework/AzFramework/AzFramework/Terrain/TerrainDataRequestBus.cpp +++ b/Code/Framework/AzFramework/AzFramework/Terrain/TerrainDataRequestBus.cpp @@ -7,6 +7,7 @@ */ #include "TerrainDataRequestBus.h" +#include namespace AzFramework { diff --git a/Code/Tools/SceneAPI/SceneCore/Events/ExportProductList.cpp b/Code/Tools/SceneAPI/SceneCore/Events/ExportProductList.cpp index d8a4cf1991..2392ed8219 100644 --- a/Code/Tools/SceneAPI/SceneCore/Events/ExportProductList.cpp +++ b/Code/Tools/SceneAPI/SceneCore/Events/ExportProductList.cpp @@ -8,6 +8,7 @@ #include #include +#include #include namespace AZ diff --git a/Gems/AWSClientAuth/Code/Include/Public/Authorization/ClientAuthAWSCredentials.h b/Gems/AWSClientAuth/Code/Include/Public/Authorization/ClientAuthAWSCredentials.h index ba08534d91..9a838be556 100644 --- a/Gems/AWSClientAuth/Code/Include/Public/Authorization/ClientAuthAWSCredentials.h +++ b/Gems/AWSClientAuth/Code/Include/Public/Authorization/ClientAuthAWSCredentials.h @@ -8,11 +8,15 @@ #pragma once -#include #include #include +namespace AZ +{ + class ReflectContext; +} + namespace AWSClientAuth { //! Client auth AWS Credentials object for serialization. @@ -54,31 +58,8 @@ namespace AWSClientAuth return m_sessionToken; } - static void Reflect(AZ::ReflectContext* context) - { - auto serializeContext = azrtti_cast(context); - if (serializeContext) - { - serializeContext->Class() - ->Field("AWSAccessKeyId", &ClientAuthAWSCredentials::m_accessKeyId) - ->Field("AWSSecretKey", &ClientAuthAWSCredentials::m_secretKey) - ->Field("AWSSessionToken", &ClientAuthAWSCredentials::m_sessionToken); - } + static void Reflect(AZ::ReflectContext* context); - AZ::BehaviorContext* behaviorContext = azrtti_cast(context); - if (behaviorContext) - { - behaviorContext->Class() - ->Attribute(AZ::Script::Attributes::Category, "AWSClientAuth") - ->Attribute(AZ::Script::Attributes::Storage, AZ::Script::Attributes::StorageType::Value) - ->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Common) - ->Constructor() - ->Constructor() - ->Property("AWSAccessKeyId", BehaviorValueGetter(&ClientAuthAWSCredentials::m_accessKeyId), BehaviorValueSetter(&ClientAuthAWSCredentials::m_accessKeyId)) - ->Property("AWSSecretKey", BehaviorValueGetter(&ClientAuthAWSCredentials::m_secretKey), BehaviorValueSetter(&ClientAuthAWSCredentials::m_secretKey)) - ->Property("AWSSessionToken", BehaviorValueGetter(&ClientAuthAWSCredentials::m_sessionToken), BehaviorValueSetter(&ClientAuthAWSCredentials::m_sessionToken)); - } - } private: AZStd::string m_accessKeyId; diff --git a/Gems/AWSClientAuth/Code/Source/Authorization/ClientAuthAWSCredentials.cpp b/Gems/AWSClientAuth/Code/Source/Authorization/ClientAuthAWSCredentials.cpp new file mode 100644 index 0000000000..764c67a4a6 --- /dev/null +++ b/Gems/AWSClientAuth/Code/Source/Authorization/ClientAuthAWSCredentials.cpp @@ -0,0 +1,50 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#include + +#include +#include +#include +#include +#include + +namespace AWSClientAuth +{ + void ClientAuthAWSCredentials::Reflect(AZ::ReflectContext* context) + { + auto serializeContext = azrtti_cast(context); + if (serializeContext) + { + serializeContext->Class() + ->Field("AWSAccessKeyId", &ClientAuthAWSCredentials::m_accessKeyId) + ->Field("AWSSecretKey", &ClientAuthAWSCredentials::m_secretKey) + ->Field("AWSSessionToken", &ClientAuthAWSCredentials::m_sessionToken); + } + + AZ::BehaviorContext* behaviorContext = azrtti_cast(context); + if (behaviorContext) + { + behaviorContext->Class() + ->Attribute(AZ::Script::Attributes::Category, "AWSClientAuth") + ->Attribute(AZ::Script::Attributes::Storage, AZ::Script::Attributes::StorageType::Value) + ->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Common) + ->Constructor() + ->Constructor() + ->Property( + "AWSAccessKeyId", BehaviorValueGetter(&ClientAuthAWSCredentials::m_accessKeyId), + BehaviorValueSetter(&ClientAuthAWSCredentials::m_accessKeyId)) + ->Property( + "AWSSecretKey", BehaviorValueGetter(&ClientAuthAWSCredentials::m_secretKey), + BehaviorValueSetter(&ClientAuthAWSCredentials::m_secretKey)) + ->Property( + "AWSSessionToken", BehaviorValueGetter(&ClientAuthAWSCredentials::m_sessionToken), + BehaviorValueSetter(&ClientAuthAWSCredentials::m_sessionToken)); + } + } +} // namespace AWSClientAuth diff --git a/Gems/AWSClientAuth/Code/awsclientauth_files.cmake b/Gems/AWSClientAuth/Code/awsclientauth_files.cmake index ad679fe13a..bd4c971377 100644 --- a/Gems/AWSClientAuth/Code/awsclientauth_files.cmake +++ b/Gems/AWSClientAuth/Code/awsclientauth_files.cmake @@ -42,6 +42,7 @@ set(FILES Source/Authentication/LWAAuthenticationProvider.cpp Source/Authentication/GoogleAuthenticationProvider.cpp + Source/Authorization/ClientAuthAWSCredentials.cpp Source/Authorization/AWSCognitoAuthorizationController.cpp Source/Authorization/AWSClientAuthPersistentCognitoIdentityProvider.cpp diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/PostProcess/RadiusWeightModifier/RadiusWeightModifierComponentController.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/PostProcess/RadiusWeightModifier/RadiusWeightModifierComponentController.cpp index c2d7176436..434fc81e8f 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/PostProcess/RadiusWeightModifier/RadiusWeightModifierComponentController.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/PostProcess/RadiusWeightModifier/RadiusWeightModifierComponentController.cpp @@ -8,6 +8,7 @@ #include #include +#include namespace AZ { diff --git a/Gems/Blast/Code/Source/Asset/BlastChunksAsset.cpp b/Gems/Blast/Code/Source/Asset/BlastChunksAsset.cpp index 1d0ce15241..2a1ae5eb04 100644 --- a/Gems/Blast/Code/Source/Asset/BlastChunksAsset.cpp +++ b/Gems/Blast/Code/Source/Asset/BlastChunksAsset.cpp @@ -7,6 +7,7 @@ #include #include +#include namespace Blast { diff --git a/Gems/EditorPythonBindings/Code/Source/PythonReflectionComponent.cpp b/Gems/EditorPythonBindings/Code/Source/PythonReflectionComponent.cpp index 38e00e73ed..4ca40a5bab 100644 --- a/Gems/EditorPythonBindings/Code/Source/PythonReflectionComponent.cpp +++ b/Gems/EditorPythonBindings/Code/Source/PythonReflectionComponent.cpp @@ -23,6 +23,7 @@ #include #include #include +#include #include #include diff --git a/Gems/EditorPythonBindings/Code/Source/PythonUtility.cpp b/Gems/EditorPythonBindings/Code/Source/PythonUtility.cpp index bc1a7d45a3..d324c6c14b 100644 --- a/Gems/EditorPythonBindings/Code/Source/PythonUtility.cpp +++ b/Gems/EditorPythonBindings/Code/Source/PythonUtility.cpp @@ -13,6 +13,7 @@ #include #include +#include #include #include #include @@ -276,7 +277,7 @@ namespace EditorPythonBindings } return false; } - + bool AllocateBehaviorValueParameter(const AZ::BehaviorMethod* behaviorMethod, AZ::BehaviorValueParameter& result, Convert::StackVariableAllocator& stackVariableAllocator) { if (const AZ::BehaviorParameter* resultType = behaviorMethod->GetResult()) @@ -390,7 +391,7 @@ namespace EditorPythonBindings cleanUp(); } } - + void StackVariableAllocator::StoreVariableDeleter(VariableDeleter&& deleter) { m_cleanUpItems.emplace_back(deleter); diff --git a/Gems/LmbrCentral/Code/Source/Shape/ShapeComponent.cpp b/Gems/LmbrCentral/Code/Source/Shape/ShapeComponent.cpp index 522493e1b4..9599b3f6e7 100644 --- a/Gems/LmbrCentral/Code/Source/Shape/ShapeComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Shape/ShapeComponent.cpp @@ -7,6 +7,7 @@ */ #include +#include #include namespace LmbrCentral @@ -23,7 +24,7 @@ namespace LmbrCentral Call(FN_OnShapeChanged, changeReason); } }; - + void ShapeComponentGeneric::Reflect(AZ::ReflectContext* context) { AZ::BehaviorContext* behaviorContext = azrtti_cast(context); @@ -41,7 +42,7 @@ namespace LmbrCentral behaviorContext->Enum<(int)ShapeComponentNotifications::ShapeChangeReasons::TransformChanged>("ShapeChangeReasons_TransformChanged") ->Enum<(int)LmbrCentral::ShapeComponentNotifications::ShapeChangeReasons::ShapeChanged>("ShapeChangeReasons_ShapeChanged"); - + behaviorContext->EBus("ShapeComponentNotificationsBus") ->Handler() ; diff --git a/Gems/Terrain/Code/Source/TerrainSystem/TerrainSystem.h b/Gems/Terrain/Code/Source/TerrainSystem/TerrainSystem.h index 0239170640..a75685fb12 100644 --- a/Gems/Terrain/Code/Source/TerrainSystem/TerrainSystem.h +++ b/Gems/Terrain/Code/Source/TerrainSystem/TerrainSystem.h @@ -13,6 +13,7 @@ #include #include #include +#include #include #include @@ -41,7 +42,7 @@ namespace Terrain /////////////////////////////////////////// // TerrainSystemServiceRequestBus::Handler Impl - + void SetWorldBounds(const AZ::Aabb& worldBounds) override; void SetHeightQueryResolution(AZ::Vector2 queryResolution) override; diff --git a/Gems/WhiteBox/Code/Source/WhiteBoxToolApiReflection.cpp b/Gems/WhiteBox/Code/Source/WhiteBoxToolApiReflection.cpp index f1b015b359..9c954e628c 100644 --- a/Gems/WhiteBox/Code/Source/WhiteBoxToolApiReflection.cpp +++ b/Gems/WhiteBox/Code/Source/WhiteBoxToolApiReflection.cpp @@ -10,6 +10,7 @@ #include "WhiteBoxToolApiReflection.h" #include +#include #include #include #include From 0505f200e55e67175aabced45bc18bd8c170ba07 Mon Sep 17 00:00:00 2001 From: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com> Date: Fri, 10 Sep 2021 09:11:06 -0500 Subject: [PATCH 08/20] Remove extra/bad profile markers (#4031) Many of these are just extra noise in the profile, but the one in Archive.cpp could also cause PIX to crash. Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com> --- .../Framework/AzFramework/AzFramework/Archive/Archive.cpp | 3 --- .../Visibility/EntityVisibilityBoundsUnionSystem.cpp | 8 -------- .../ViewportSelection/EditorVisibleEntityDataCache.cpp | 2 -- .../Common/Code/Source/Mesh/MeshFeatureProcessor.cpp | 7 ------- Gems/Atom/RHI/Code/Source/RHI/FrameScheduler.cpp | 1 - Gems/Atom/RHI/Code/Source/RHI/PipelineStateCache.cpp | 2 -- Gems/Atom/RPI/Code/Source/RPI.Public/MeshDrawPacket.cpp | 4 ---- Gems/Atom/RPI/Code/Source/RPI.Public/Model/ModelLod.cpp | 4 ---- Gems/Atom/RPI/Code/Source/RPI.Public/Pass/RasterPass.cpp | 2 -- Gems/Atom/RPI/Code/Source/RPI.Public/Shader/Shader.cpp | 4 ---- .../Atom/RPI/Code/Source/RPI.Reflect/Model/ModelAsset.cpp | 2 -- .../RPI/Code/Source/RPI.Reflect/Shader/ShaderAsset.cpp | 4 ---- .../Source/RPI.Reflect/Shader/ShaderVariantTreeAsset.cpp | 2 -- .../Code/Source/SurfaceData/SurfaceDataMeshComponent.cpp | 2 -- .../Source/Components/SurfaceDataColliderComponent.cpp | 2 -- .../Code/Source/SurfaceDataSystemComponent.cpp | 2 -- 16 files changed, 51 deletions(-) diff --git a/Code/Framework/AzFramework/AzFramework/Archive/Archive.cpp b/Code/Framework/AzFramework/AzFramework/Archive/Archive.cpp index ce0cc23a4e..e125cc1df6 100644 --- a/Code/Framework/AzFramework/AzFramework/Archive/Archive.cpp +++ b/Code/Framework/AzFramework/AzFramework/Archive/Archive.cpp @@ -689,9 +689,6 @@ namespace AZ::IO return AZ::IO::InvalidHandle; } - AZ_PROFILE_SCOPE(Game, "File: %.*s Archive: %p", - aznumeric_cast(pName.size()), pName.data(), this); - SAutoCollectFileAccessTime accessTime(this); AZ::IO::HandleType fileHandle = AZ::IO::InvalidHandle; diff --git a/Code/Framework/AzFramework/AzFramework/Visibility/EntityVisibilityBoundsUnionSystem.cpp b/Code/Framework/AzFramework/AzFramework/Visibility/EntityVisibilityBoundsUnionSystem.cpp index 4a6b29b95c..826570fee5 100644 --- a/Code/Framework/AzFramework/AzFramework/Visibility/EntityVisibilityBoundsUnionSystem.cpp +++ b/Code/Framework/AzFramework/AzFramework/Visibility/EntityVisibilityBoundsUnionSystem.cpp @@ -45,8 +45,6 @@ namespace AzFramework void EntityVisibilityBoundsUnionSystem::OnEntityActivated(AZ::Entity* entity) { - AZ_PROFILE_FUNCTION(AzFramework); - // ignore any entity that might activate which does not have a TransformComponent if (entity->GetTransform() == nullptr) { @@ -68,8 +66,6 @@ namespace AzFramework void EntityVisibilityBoundsUnionSystem::OnEntityDeactivated(AZ::Entity* entity) { - AZ_PROFILE_FUNCTION(AzFramework); - // ignore any entity that might deactivate which does not have a TransformComponent if (entity->GetTransform() == nullptr) { @@ -89,8 +85,6 @@ namespace AzFramework void EntityVisibilityBoundsUnionSystem::UpdateVisibilitySystem(AZ::Entity* entity, EntityVisibilityBoundsUnionInstance& instance) { - AZ_PROFILE_FUNCTION(AzFramework); - if (const auto& localEntityBoundsUnions = instance.m_localEntityBoundsUnion; localEntityBoundsUnions.IsValid()) { // note: worldEntityBounds will not be a 'tight-fit' Aabb but that of a transformed local aabb @@ -155,8 +149,6 @@ namespace AzFramework void EntityVisibilityBoundsUnionSystem::OnTransformUpdated(AZ::Entity* entity) { - AZ_PROFILE_FUNCTION(AzFramework); - // update the world transform of the visibility bounds union if (auto instance_it = m_entityVisibilityBoundsUnionInstanceMapping.find(entity); instance_it != m_entityVisibilityBoundsUnionInstanceMapping.end()) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorVisibleEntityDataCache.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorVisibleEntityDataCache.cpp index 5da827244f..babc6f972c 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorVisibleEntityDataCache.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorVisibleEntityDataCache.cpp @@ -312,8 +312,6 @@ namespace AzToolsFramework void EditorVisibleEntityDataCache::OnTransformChanged(const AZ::Transform& /*local*/, const AZ::Transform& world) { - AZ_PROFILE_FUNCTION(AzToolsFramework); - const AZ::EntityId entityId = *AZ::TransformNotificationBus::GetCurrentBusId(); if (AZStd::optional entityIndex = GetVisibleEntityIndexFromId(entityId)) diff --git a/Gems/Atom/Feature/Common/Code/Source/Mesh/MeshFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/Mesh/MeshFeatureProcessor.cpp index 67702a8176..8ab324cdf7 100644 --- a/Gems/Atom/Feature/Common/Code/Source/Mesh/MeshFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/Mesh/MeshFeatureProcessor.cpp @@ -479,8 +479,6 @@ namespace AZ : m_modelAsset(modelAsset) , m_parent(parent) { - AZ_PROFILE_FUNCTION(AzRender); - if (!m_modelAsset.GetId().IsValid()) { AZ_Error("MeshDataInstance::MeshLoader", false, "Invalid model asset Id."); @@ -508,7 +506,6 @@ namespace AZ //! AssetBus::Handler overrides... void MeshDataInstance::MeshLoader::OnAssetReady(Data::Asset asset) { - AZ_PROFILE_FUNCTION(AzRender); Data::Asset modelAsset = asset; // Assign the fully loaded asset back to the mesh handle to not only hold asset id, but the actual data as well. @@ -580,8 +577,6 @@ namespace AZ void MeshDataInstance::Init(Data::Instance model) { - AZ_PROFILE_FUNCTION(AzRender); - m_model = model; const size_t modelLodCount = m_model->GetLodCount(); m_drawPacketListsByLod.resize(modelLodCount); @@ -612,8 +607,6 @@ namespace AZ void MeshDataInstance::BuildDrawPacketList(size_t modelLodIndex) { - AZ_PROFILE_FUNCTION(AzRender); - RPI::ModelLod& modelLod = *m_model->GetLods()[modelLodIndex]; const size_t meshCount = modelLod.GetMeshes().size(); diff --git a/Gems/Atom/RHI/Code/Source/RHI/FrameScheduler.cpp b/Gems/Atom/RHI/Code/Source/RHI/FrameScheduler.cpp index 0b8c6ad9ce..fe69f56856 100644 --- a/Gems/Atom/RHI/Code/Source/RHI/FrameScheduler.cpp +++ b/Gems/Atom/RHI/Code/Source/RHI/FrameScheduler.cpp @@ -417,7 +417,6 @@ namespace AZ void FrameScheduler::ExecuteContextInternal(FrameGraphExecuteGroup& group, uint32_t index) { - AZ_PROFILE_FUNCTION(RHI); FrameGraphExecuteContext* executeContext = group.BeginContext(index); { diff --git a/Gems/Atom/RHI/Code/Source/RHI/PipelineStateCache.cpp b/Gems/Atom/RHI/Code/Source/RHI/PipelineStateCache.cpp index a2a2736106..6e98456933 100644 --- a/Gems/Atom/RHI/Code/Source/RHI/PipelineStateCache.cpp +++ b/Gems/Atom/RHI/Code/Source/RHI/PipelineStateCache.cpp @@ -278,8 +278,6 @@ namespace AZ const PipelineState* PipelineStateCache::AcquirePipelineState(PipelineLibraryHandle handle, const PipelineStateDescriptor& descriptor) { - AZ_PROFILE_FUNCTION(RHI); - if (handle.IsNull()) { return nullptr; diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/MeshDrawPacket.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/MeshDrawPacket.cpp index 0e4c8ec15a..49b093d4be 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/MeshDrawPacket.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/MeshDrawPacket.cpp @@ -124,7 +124,6 @@ namespace AZ bool MeshDrawPacket::DoUpdate(const Scene& parentScene) { - AZ_PROFILE_FUNCTION(RPI); const ModelLod::Mesh& mesh = m_modelLod->GetMeshes()[m_modelLodMeshIndex]; if (!m_material) @@ -155,8 +154,6 @@ namespace AZ auto appendShader = [&](const ShaderCollection::Item& shaderItem) { - AZ_PROFILE_SCOPE(RPI, "appendShader()"); - // Skip the shader item without creating the shader instance // if the mesh is not going to be rendered based on the draw tag RHI::RHISystemInterface* rhiSystem = RHI::RHISystemInterface::Get(); @@ -256,7 +253,6 @@ namespace AZ Data::Instance drawSrg; if (drawSrgLayout) { - AZ_PROFILE_SCOPE(RPI, "create drawSrg"); // If the DrawSrg exists we must create and bind it, otherwise the CommandList will fail validation for SRG being null drawSrg = RPI::ShaderResourceGroup::Create(shader->GetAsset(), shader->GetSupervariantIndex(), drawSrgLayout->GetName()); diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Model/ModelLod.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Model/ModelLod.cpp index 04fa004228..7850aa6da2 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Model/ModelLod.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Model/ModelLod.cpp @@ -264,8 +264,6 @@ namespace AZ const MaterialModelUvOverrideMap& materialModelUvMap, const MaterialUvNameMap& materialUvNameMap) const { - AZ_PROFILE_FUNCTION(RPI); - streamBufferViewsOut.clear(); RHI::InputStreamLayoutBuilder layoutBuilder; @@ -366,8 +364,6 @@ namespace AZ const MaterialModelUvOverrideMap& materialModelUvMap, const MaterialUvNameMap& materialUvNameMap) const { - AZ_PROFILE_FUNCTION(RPI); - const Mesh& mesh = m_meshes[meshIndex]; auto defaultUv = FindDefaultUvStream(meshIndex, materialUvNameMap); diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/RasterPass.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/RasterPass.cpp index 51cbc82f2b..4c923d4a1a 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/RasterPass.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/RasterPass.cpp @@ -230,8 +230,6 @@ namespace AZ void RasterPass::BuildCommandListInternal(const RHI::FrameGraphExecuteContext& context) { - AZ_PROFILE_FUNCTION(RPI); - RHI::CommandList* commandList = context.GetCommandList(); const RHI::DrawListView drawListViewPartition = RHI::GetDrawListPartition(m_drawListView, context.GetCommandListIndex(), context.GetCommandListCount()); diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/Shader.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/Shader.cpp index e602e3e91b..51dd9c36d3 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/Shader.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/Shader.cpp @@ -299,7 +299,6 @@ namespace AZ const ShaderVariant& Shader::GetVariant(const ShaderVariantId& shaderVariantId) { - AZ_PROFILE_FUNCTION(RPI); Data::Asset shaderVariantAsset = m_asset->GetVariant(shaderVariantId, m_supervariantIndex); if (!shaderVariantAsset || shaderVariantAsset->IsRootVariant()) { @@ -316,15 +315,12 @@ namespace AZ ShaderVariantSearchResult Shader::FindVariantStableId(const ShaderVariantId& shaderVariantId) const { - AZ_PROFILE_FUNCTION(RPI); ShaderVariantSearchResult variantSearchResult = m_asset->FindVariantStableId(shaderVariantId); return variantSearchResult; } const ShaderVariant& Shader::GetVariant(ShaderVariantStableId shaderVariantStableId) { - AZ_PROFILE_FUNCTION(RPI); - if (!shaderVariantStableId.IsValid() || shaderVariantStableId == ShaderAsset::RootShaderVariantStableId) { return m_rootVariant; diff --git a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Model/ModelAsset.cpp b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Model/ModelAsset.cpp index 8230c57e15..8e2d1bdd7e 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Model/ModelAsset.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Model/ModelAsset.cpp @@ -96,8 +96,6 @@ namespace AZ const AZ::Vector3& rayStart, const AZ::Vector3& rayDir, bool allowBruteForce, float& distanceNormalized, AZ::Vector3& normal) const { - AZ_PROFILE_FUNCTION(RPI); - if (!m_modelTriangleCount) { // [GFX TODO][ATOM-4343 Bake mesh spatial information during AP processing] diff --git a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderAsset.cpp b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderAsset.cpp index 616aa44299..49ef457311 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderAsset.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderAsset.cpp @@ -172,8 +172,6 @@ namespace AZ Data::Asset ShaderAsset::GetVariant( const ShaderVariantId& shaderVariantId, SupervariantIndex supervariantIndex) { - AZ_PROFILE_FUNCTION(RPI); - auto variantFinder = AZ::Interface::Get(); AZ_Assert(variantFinder, "The IShaderVariantFinder doesn't exist"); @@ -189,8 +187,6 @@ namespace AZ ShaderVariantSearchResult ShaderAsset::FindVariantStableId(const ShaderVariantId& shaderVariantId) { - AZ_PROFILE_FUNCTION(RPI); - uint32_t dynamicOptionCount = aznumeric_cast(GetShaderOptionGroupLayout()->GetShaderOptions().size()); ShaderVariantSearchResult variantSearchResult{RootShaderVariantStableId, dynamicOptionCount }; diff --git a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderVariantTreeAsset.cpp b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderVariantTreeAsset.cpp index f17a144adb..4565e3ce25 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderVariantTreeAsset.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderVariantTreeAsset.cpp @@ -72,8 +72,6 @@ namespace AZ ShaderVariantSearchResult ShaderVariantTreeAsset::FindVariantStableId(const ShaderOptionGroupLayout* shaderOptionGroupLayout, const ShaderVariantId& shaderVariantId) const { - AZ_PROFILE_FUNCTION(RPI); - struct NodeToVisit { uint32_t m_branchCount; // Number of static branches diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SurfaceData/SurfaceDataMeshComponent.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SurfaceData/SurfaceDataMeshComponent.cpp index be4d5186c8..cbb30e6cd8 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SurfaceData/SurfaceDataMeshComponent.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SurfaceData/SurfaceDataMeshComponent.cpp @@ -147,8 +147,6 @@ namespace SurfaceData bool SurfaceDataMeshComponent::DoRayTrace(const AZ::Vector3& inPosition, AZ::Vector3& outPosition, AZ::Vector3& outNormal) const { - AZ_PROFILE_FUNCTION(Entity); - AZStd::lock_guard lock(m_cacheMutex); // test AABB as first pass to claim the point diff --git a/Gems/SurfaceData/Code/Source/Components/SurfaceDataColliderComponent.cpp b/Gems/SurfaceData/Code/Source/Components/SurfaceDataColliderComponent.cpp index eef9179194..31bf4e7028 100644 --- a/Gems/SurfaceData/Code/Source/Components/SurfaceDataColliderComponent.cpp +++ b/Gems/SurfaceData/Code/Source/Components/SurfaceDataColliderComponent.cpp @@ -184,8 +184,6 @@ namespace SurfaceData bool SurfaceDataColliderComponent::DoRayTrace(const AZ::Vector3& inPosition, bool queryPointOnly, AZ::Vector3& outPosition, AZ::Vector3& outNormal) const { - AZ_PROFILE_FUNCTION(Entity); - AZStd::lock_guard lock(m_cacheMutex); // test AABB as first pass to claim the point diff --git a/Gems/SurfaceData/Code/Source/SurfaceDataSystemComponent.cpp b/Gems/SurfaceData/Code/Source/SurfaceDataSystemComponent.cpp index 7638b6720e..9038d2f082 100644 --- a/Gems/SurfaceData/Code/Source/SurfaceDataSystemComponent.cpp +++ b/Gems/SurfaceData/Code/Source/SurfaceDataSystemComponent.cpp @@ -229,8 +229,6 @@ namespace SurfaceData void SurfaceDataSystemComponent::GetSurfacePointsFromRegion(const AZ::Aabb& inRegion, const AZ::Vector2 stepSize, const SurfaceTagVector& desiredTags, SurfacePointListPerPosition& surfacePointListPerPosition) const { - AZ_PROFILE_FUNCTION(Entity); - AZStd::lock_guard registrationLock(m_registrationMutex); surfacePointListPerPosition.clear(); From e638f27572841755335e335ecca03ce4c6da23d7 Mon Sep 17 00:00:00 2001 From: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com> Date: Fri, 10 Sep 2021 10:02:17 -0500 Subject: [PATCH 09/20] Fixed PathView `MakeRelativeTo` and `Append` functions path segment comparisons (#3628) * Fixed PathView `MakeRelativeTo` and `Append` functions path segment comparisons when using the Windows path separator of '\' The PathSegment comparisons were case-sensitive in both those functions and now use `Internal::ComparePathSegments` function to perform the appropriate case comparison based on the path separator value of the Path class Reverted the LocalFileIO::CheckInvalidWrite function back to not lowercasing the assets alias and input path before invoking `PathView::IsRelativeTo` Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com> * Simplified the LocalFileIO::ConvertToAliasBuffer logic Fix for the ArchiveTest `IResourceList_Add_AbsolutePath_RemovesAndReplacesWithAlias` and `TestArchiveViaFileIO` test Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com> * Added a PathIterable structure stores a non-heap container of normalized path segments of an input path. Moved the PathParser logic to a PathParser.inl file Removed dependency of the PathView::IsRelativeTo logic on FixedMaxPath There is no longer a 1024 character limit when determining if a path is relative to a base Added a GetNormalPathParts and AppendNormalPathParts to function and removed LexicallyNormalInplace to share the logic for creating a normalized path between IsRelativeTo and LexicallyNormal Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com> * Clang PathIterable.inl build fix Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com> * Fixed Normalize and Relative Path functions initialize the result paths With the correct path separator for the paths being transformed Ported over the Custom Path Root Separator logic to the PathParser.inl Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com> * Updated he Shader Preprocessor include path gather. It now uses AZ::IO::Path for the path operations and checks if the path exist before adding it to the list of include paths. Finally the set logic has been removed for a simpler find_if check to see if the include path already since in the project include paths This fixes the Asset Processing issues with shader includes due to the Path.inl changes Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com> * Fixed tail recursion call to AppendNormalPathParts to supply a PathView with the same path separator as the parent call Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com> * Adding reference qualifier overloads to the Path class Native function Removed the conversion operators from the Path class for converting to a string_type&/const string_type& Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com> --- Code/Framework/AzCore/AzCore/IO/Path/Path.h | 25 +- Code/Framework/AzCore/AzCore/IO/Path/Path.inl | 908 +++--------------- .../AzCore/AzCore/IO/Path/PathIterable.inl | 162 ++++ .../AzCore/AzCore/IO/Path/PathParser.inl | 706 ++++++++++++++ .../AzCore/AzCore/azcore_files.cmake | 2 + .../AzCore/Tests/IO/Path/PathTests.cpp | 22 +- .../AzFramework/Archive/Archive.cpp | 6 +- .../AzFramework/AzFramework/Archive/Archive.h | 2 +- .../AzFramework/Archive/IArchive.h | 2 +- .../AzFramework/IO/LocalFileIO.cpp | 31 +- .../AzFramework/Tests/ArchiveTests.cpp | 13 +- Code/Legacy/CryCommon/Mocks/ICryPakMock.h | 2 +- .../Editor/CommonFiles/Preprocessor.cpp | 132 ++- 13 files changed, 1132 insertions(+), 881 deletions(-) create mode 100644 Code/Framework/AzCore/AzCore/IO/Path/PathIterable.inl create mode 100644 Code/Framework/AzCore/AzCore/IO/Path/PathParser.inl diff --git a/Code/Framework/AzCore/AzCore/IO/Path/Path.h b/Code/Framework/AzCore/AzCore/IO/Path/Path.h index 36640e821d..c0c4b1c974 100644 --- a/Code/Framework/AzCore/AzCore/IO/Path/Path.h +++ b/Code/Framework/AzCore/AzCore/IO/Path/Path.h @@ -256,8 +256,22 @@ namespace AZ::IO template static constexpr void MakeRelativeTo(PathResultType& pathResult, const AZ::IO::PathView& path, const AZ::IO::PathView& base); - template - static constexpr void LexicallyNormalInplace(PathResultType& pathResult, const AZ::IO::PathView& path); + + struct PathIterable; + //! Returns a structure that provides a view of the path parts which can be used for iteration + //! Only the path parts that correspond to creating an normalized path is returned + //! This function is useful for returning a "view" into a normalized path without the need + //! to allocate memory for the heap + static constexpr PathIterable GetNormalPathParts(const AZ::IO::PathView& path) noexcept; + // joins the input path to the Path Iterable structure using similiar logic to Path::Append + // If the input path is absolute it will replace the current PathIterable otherwise + // the input path will be appended to the Path Iterable structure + // For example a PathIterable with parts = ['C:', '/', 'foo'] + // If the path input = 'bar', then the new PathIterable parts = [C:', '/', 'foo', 'bar'] + // If the path input = 'C:/bar', then the new PathIterable parts = [C:', '/', 'bar'] + // If the path input = 'C:bar', then the new PathIterable parts = [C:', '/', 'foo', 'bar' ] + // If the path input = 'D:bar', then the new PathIterable parts = [D:, 'bar' ] + static constexpr void AppendNormalPathParts(PathIterable& pathIterableResult, const AZ::IO::PathView& path) noexcept; constexpr int compare_string_view(AZStd::string_view other) const; constexpr AZStd::string_view root_name_view() const; @@ -442,14 +456,15 @@ namespace AZ::IO constexpr void swap(BasicPath& rhs) noexcept; // native format observers - constexpr const string_type& Native() const noexcept; + constexpr const string_type& Native() const& noexcept; + constexpr const string_type&& Native() const&& noexcept; constexpr const value_type* c_str() const noexcept; constexpr explicit operator string_type() const; // Adds support for retrieving a modifiable copy of the underlying string // Any modifications to the string invalidates existing PathIterators - constexpr string_type& Native() noexcept; - constexpr explicit operator string_type&() noexcept; + constexpr string_type& Native() & noexcept; + constexpr string_type&& Native() && noexcept; //! The string and wstring functions cannot be constexpr until AZStd::basic_string is made constexpr. //! This cannot occur until C++20 as operator new/delete cannot be used within constexpr functions diff --git a/Code/Framework/AzCore/AzCore/IO/Path/Path.inl b/Code/Framework/AzCore/AzCore/IO/Path/Path.inl index 6354324136..40cbf6f46b 100644 --- a/Code/Framework/AzCore/AzCore/IO/Path/Path.inl +++ b/Code/Framework/AzCore/AzCore/IO/Path/Path.inl @@ -8,10 +8,10 @@ #pragma once -#include #include #include -#include + +#include // extern instantiations of Path templates to prevent implicit instantiations namespace AZ::IO @@ -56,702 +56,6 @@ namespace AZ::IO const PathIterator& rhs); } -namespace AZ::IO::Internal -{ - constexpr bool IsSeparator(const char elem) - { - return elem == '/' || elem == '\\'; - } - template >> - static constexpr bool HasDrivePrefix(InputIt first, EndIt last) - { - size_t prefixSize = AZStd::distance(first, last); - if (prefixSize < 2 || *AZStd::next(first, 1) != ':') - { - // Drive prefix must be at least two characters and have a colon for the second character - return false; - } - - constexpr size_t ValidDrivePrefixRange = 26; - // Uppercase the drive letter by bitwise and'ing out the the 2^5 bit - unsigned char driveLetter = static_cast(*first); - - driveLetter &= 0b1101'1111; - // normalize the character value in the range of A-Z -> 0-25 - driveLetter -= 'A'; - return driveLetter < ValidDrivePrefixRange; - } - - static constexpr bool HasDrivePrefix(AZStd::string_view prefix) - { - return HasDrivePrefix(prefix.begin(), prefix.end()); - } - - //! Returns an iterator past the end of the consumed root name - //! Windows root names can have include drive letter within them - template - constexpr auto ConsumeRootName(InputIt entryBeginIter, InputIt entryEndIter, const char preferredSeparator) - -> AZStd::enable_if_t, InputIt> - { - if (preferredSeparator == PosixPathSeparator) - { - // If the preferred separator is forward slash the parser is in posix path - // parsing mode, which doesn't have a root name, - // unless we're on a posix platform that uses a custom path root separator - #if defined(AZ_TRAIT_CUSTOM_PATH_ROOT_SEPARATOR) - const AZStd::string_view path{ entryBeginIter, entryEndIter }; - const auto positionOfPathSeparator = path.find(AZ_TRAIT_CUSTOM_PATH_ROOT_SEPARATOR); - if (positionOfPathSeparator == AZStd::string_view::npos) - { - return entryBeginIter; - } - const AZStd::string_view rootName{ path.substr(0, positionOfPathSeparator + 1) }; - return AZStd::next(entryBeginIter, rootName.size()); - #else - return entryBeginIter; - #endif - } - else - { - // Information for GetRootName has been gathered from Microsoft header - // Below are examples of paths and what there root-name will return - // "/" - returns "" - // "foo/" - returns "" - // "C:DriveRelative" - returns "C:" - // "C:\\DriveAbsolute" - returns "C:" - // "C://DriveAbsolute" - returns "C:" - // "\\server\share" - returns "\\server" - // The following paths are based on the UNC specification to work with paths longer than the 260 character path limit - // https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file?redirectedfrom=MSDN#maximum-path-length-limitation - // \\?\device - returns "\\?" - // \??\device - returns "\??" - // \\.\device - returns "\\." - - - AZStd::string_view path{ entryBeginIter, entryEndIter }; - - if (path.size() < 2) - { - // A root name is either or a network path - // therefore it has a least two characters - return entryBeginIter; - } - - if (HasDrivePrefix(path)) - { - // If the path has a drive prefix, then it has a root name of - return AZStd::next(entryBeginIter, 2); - } - - if (!Internal::IsSeparator(path[0])) - { - // At this point all other root names start with a path separator - return entryBeginIter; - } - - // Check if the path has the form of "\\?\, "\??\" or "\\.\" - const bool pathInUncForm = path.size() >= 4 && Internal::IsSeparator(path[3]) - && (path.size() == 4 || !Internal::IsSeparator(path[4])); - if (pathInUncForm) - { - // \\?\<0 or more> or \\.\$ - const bool slashQuestionMark = Internal::IsSeparator(path[1]) && (path[2] == '?' || path[2] == '.'); - // \??\<0 or more> - const bool questionMarkTwice = path[1] == '?' && path[2] == '?'; - if (slashQuestionMark || questionMarkTwice) - { - // Return the root value root slash - i.e "\\?" - return AZStd::next(entryBeginIter, 3); - } - } - - if (path.size() >= 3 && Internal::IsSeparator(path[1]) && !Internal::IsSeparator(path[2])) - { - // Find the next path separator for network paths that have the form of \\server\share - constexpr AZStd::string_view PathSeparators = { "/\\" }; - size_t nextPathSeparatorOffset = path.find_first_of(PathSeparators, 3); - return AZStd::next(entryBeginIter, nextPathSeparatorOffset != AZStd::string_view::npos ? nextPathSeparatorOffset : path.size()); - } - - return entryBeginIter; - } - } - - //! Returns an iterator past the end of the consumed path separator(s) - template - constexpr InputIt ConsumeSeparator(InputIt entryBeginIter, InputIt entryEndIter) noexcept - { - return AZStd::find_if_not(entryBeginIter, entryEndIter, [](const char elem) { return Internal::IsSeparator(elem); }); - } - - //! Returns an iterator past the end of the consumed filename - template - constexpr InputIt ConsumeName(InputIt entryBeginIter, InputIt entryEndIter) noexcept - { - return AZStd::find_if(entryBeginIter, entryEndIter, [](const char elem) { return Internal::IsSeparator(elem); }); - } - - //! Check if a path is absolute on a OS basis - //! If the preferred separator is '/' just checks if the path starts with a '/ - //! Otherwise a check for a Windows absolute path occurs - //! Windows absolute paths can include a RootName - template >> - static constexpr bool IsAbsolute(InputIt first, EndIt last, const char preferredSeparator) - { - // If the preferred separator is a forward slash - // than an absolute path is simply one that starts with a forward slash, - // unless we're on a posix platform that uses a custom path root separator - if (preferredSeparator == PosixPathSeparator) - { - #if defined(AZ_TRAIT_CUSTOM_PATH_ROOT_SEPARATOR) - const AZStd::string_view path{ first, last }; - return path.find(AZ_TRAIT_CUSTOM_PATH_ROOT_SEPARATOR) != AZStd::string_view::npos; - #else - const size_t pathSize = AZStd::distance(first, last); - return pathSize > 0 && IsSeparator(*first); - #endif - } - else - { - if (Internal::HasDrivePrefix(first, last)) - { - // If a windows path ends starts with C:foo it is a root relative path - // A path is absolute root absolute on windows if it starts with - const size_t pathSize = AZStd::distance(first, last); - return pathSize > 2 && Internal::IsSeparator(*AZStd::next(first, 2)); - } - - return first != ConsumeRootName(first, last, preferredSeparator); - } - } - static constexpr bool IsAbsolute(AZStd::string_view pathView, const char preferredSeparator) - { - // Uses the template preferred to branch on the absolute path check - // logic - return IsAbsolute(pathView.begin(), pathView.end(), preferredSeparator); - } - - // Compares path segments using either Posix or Windows path rules based on the path separator in use - // Posix paths perform a case-sensitive comparison, while Windows paths perform a case-insensitive comparison - static int ComparePathSegment(AZStd::string_view left, AZStd::string_view right, char pathSeparator) - { - const size_t maxCharsToCompare = (AZStd::min)(left.size(), right.size()); - - int charCompareResult = pathSeparator == PosixPathSeparator - ? strncmp(left.data(), right.data(), maxCharsToCompare) - : azstrnicmp(left.data(), right.data(), maxCharsToCompare); - return charCompareResult == 0 - ? static_cast(aznumeric_cast(left.size()) - aznumeric_cast(right.size())) - : charCompareResult; - } -} - -//! PathParser implementation -//! For internal use only -namespace AZ::IO::parser -{ - using parser_path_type = PathView; - using string_view_pair = AZStd::pair; - using PosPtr = const typename parser_path_type::value_type*; - - enum ParserState : uint8_t - { - // Zero is a special sentinel value used by default constructed iterators. - PS_BeforeBegin = PathIterator::BeforeBegin, - PS_InRootName = PathIterator::InRootName, - PS_InRootDir = PathIterator::InRootDir, - PS_InFilenames = PathIterator::InFilenames, - PS_AtEnd = PathIterator::AtEnd - }; - - struct PathParser - { - AZStd::string_view m_path_view; - AZStd::string_view m_path_raw_entry; - ParserState m_parser_state{}; - const char m_preferred_separator{ AZ_TRAIT_OS_PATH_SEPARATOR }; - - constexpr PathParser(AZStd::string_view path, ParserState state, const char preferredSeparator) noexcept - : m_path_view(path) - , m_parser_state(state) - , m_preferred_separator(preferredSeparator) - { - } - - constexpr PathParser(AZStd::string_view path, AZStd::string_view entry, ParserState state, const char preferredSeparator) noexcept - : m_path_view(path) - , m_path_raw_entry(entry) - , m_parser_state(static_cast(state)) - , m_preferred_separator(preferredSeparator) - { - } - - constexpr static PathParser CreateBegin(AZStd::string_view path, const char preferredSeparator) noexcept - { - PathParser pathParser(path, PS_BeforeBegin, preferredSeparator); - pathParser.Increment(); - return pathParser; - } - - constexpr static PathParser CreateEnd(AZStd::string_view path, const char preferredSeparator) noexcept - { - PathParser pathParser(path, PS_AtEnd, preferredSeparator); - return pathParser; - } - - constexpr PosPtr Peek() const noexcept - { - auto tokenEnd = getNextTokenStartPos(); - auto End = m_path_view.end(); - return tokenEnd == End ? nullptr : tokenEnd; - } - - constexpr void Increment() noexcept - { - const PosPtr pathEnd = m_path_view.end(); - const PosPtr currentPathEntry = getNextTokenStartPos(); - if (currentPathEntry == pathEnd) - { - return MakeState(PS_AtEnd); - } - - switch (m_parser_state) - { - case PS_BeforeBegin: - { - /* - * First the determine if the path contains only a root-name such as "C:" or is a filename such as "foo" - * root-relative path(Windows only) - C:foo - * root-absolute path - C:\foo - * root-absolute path - /foo - * relative path - foo - * - * Try to consume the root-name then the root directory to determine if path entry - * being parsed is a root-name or filename - * The State transitions from BeforeBegin are - * "C:", "\\server\", "\\?\", "\??\", "\\.\" -> Root Name - * "/", "\" -> Root Directory - * "path/foo", "foo" -> Filename - */ - auto rootNameEnd = Internal::ConsumeRootName(currentPathEntry, pathEnd, m_preferred_separator); - if (currentPathEntry != rootNameEnd) - { - // Transition to the Root Name state - return MakeState(PS_InRootName, currentPathEntry, rootNameEnd); - } - [[fallthrough]]; - } - case PS_InRootName: - { - auto rootDirEnd = Internal::ConsumeSeparator(currentPathEntry, pathEnd); - if (currentPathEntry != rootDirEnd) - { - // Transition to Root Directory state - return MakeState(PS_InRootDir, currentPathEntry, rootDirEnd); - } - [[fallthrough]]; - } - case PS_InRootDir: - { - auto filenameEnd = Internal::ConsumeName(currentPathEntry, pathEnd); - if (currentPathEntry != filenameEnd) - { - return MakeState(PS_InFilenames, currentPathEntry, filenameEnd); - } - [[fallthrough]]; - } - case PS_InFilenames: - { - auto separatorEnd = Internal::ConsumeSeparator(currentPathEntry, pathEnd); - if (separatorEnd != pathEnd) - { - // find the end of the current filename entry - auto filenameEnd = Internal::ConsumeName(separatorEnd, pathEnd); - return MakeState(PS_InFilenames, separatorEnd, filenameEnd); - } - // If after consuming the separator that path entry is at the end iterator - // move the path state to AtEnd - return MakeState(PS_AtEnd); - } - case PS_AtEnd: - AZ_Assert(false, "Path Parser cannot be incremented when it is in the AtEnd state"); - } - } - - constexpr void Decrement() noexcept - { - auto pathStart = m_path_view.begin(); - auto currentPathEntry = getCurrentTokenStartPos(); - - if (currentPathEntry == pathStart) - { - // we're decrementing the begin - return MakeState(PS_BeforeBegin); - } - switch (m_parser_state) - { - case PS_AtEnd: - { - /* - * First the determine if the path contains only a root-name such as "C:" or is a filename such as "foo" - * root-relative path(Windows only) - C:foo - * root-absolute path - C:\foo - * root-absolute path - /foo - * relative path - foo - * Try to consume the root-name then the root directory to determine if path entry - * being parsed is a root-name or filename - * The State transitions from AtEnd are - * "/path/foo/", "foo/", "C:foo\", "C:\foo\" -> Trailing Separator - * "/path/foo", "foo", "C:foo", "C:\foo" -> Filename - * "/", "C:\" or "\\server\" -> Root Directory - * "C:", "\\server", "\\?", "\??", "\\." -> Root Name - */ - auto rootNameEnd = Internal::ConsumeRootName(pathStart, currentPathEntry, m_preferred_separator); - if (pathStart != rootNameEnd && currentPathEntry == rootNameEnd) - { - // Transition to the Root Name state - return MakeState(PS_InRootName, pathStart, currentPathEntry); - } - - auto rootDirEnd = Internal::ConsumeSeparator(rootNameEnd, currentPathEntry); - if (rootNameEnd != rootDirEnd && currentPathEntry == rootDirEnd) - { - // Transition to Root Directory state - return MakeState(PS_InRootDir, rootNameEnd, currentPathEntry); - } - - auto filenameEnd = currentPathEntry; - if (Internal::IsSeparator(*(filenameEnd - 1))) - { - // The last character a path separator that isn't root directory - // consume all the preceding path separators - filenameEnd = Internal::ConsumeSeparator(AZStd::make_reverse_iterator(filenameEnd), - AZStd::make_reverse_iterator(rootDirEnd)).base(); - } - - // The previous state will be Filename, so the beginning of the filename is searched found - auto filenameBegin = Internal::ConsumeName(AZStd::make_reverse_iterator(filenameEnd), - AZStd::make_reverse_iterator(rootDirEnd)).base(); - return MakeState(PS_InFilenames, filenameBegin, filenameEnd); - } - case PS_InFilenames: - { - /* The State transitions from Filename are - * "/path/foo" -> Filename - * ^ - * "C:\foo" -> Root Directory - * ^ - * "C:foo" -> Root Name - * ^ - * "foo" -> This case has been taken care of by the current path entry != path start check - * ^ - */ - auto rootNameEnd = Internal::ConsumeRootName(pathStart, currentPathEntry, m_preferred_separator); - if (pathStart != rootNameEnd && currentPathEntry == rootNameEnd) - { - // Transition to the Root Name state - return MakeState(PS_InRootName, pathStart, rootNameEnd); - } - - auto rootDirEnd = Internal::ConsumeSeparator(rootNameEnd, currentPathEntry); - if (rootNameEnd != rootDirEnd && currentPathEntry == rootDirEnd) - { - // Transition to Root Directory state - return MakeState(PS_InRootDir, rootNameEnd, rootDirEnd); - } - // The previous state will be Filename again, so first the end of that filename is found - // proceeded by finding the beginning of that filename - auto filenameEnd = Internal::ConsumeSeparator(AZStd::make_reverse_iterator(currentPathEntry), - AZStd::make_reverse_iterator(rootDirEnd)).base(); - auto filenameBegin = Internal::ConsumeName(AZStd::make_reverse_iterator(filenameEnd), - AZStd::make_reverse_iterator(rootDirEnd)).base(); - return MakeState(PS_InFilenames, filenameBegin, filenameEnd); - } - case PS_InRootDir: - { - /* The State transitions from Root Directory are - * "C:\" "\\server\", "\\?\", "\??\", "\\.\" -> Root Name - * ^ ^ ^ ^ ^ - * "/" -> This case has been taken care of by the current path entry != path start check - * ^ - */ - return MakeState(PS_InRootName, pathStart, currentPathEntry); - } - case PS_InRootName: - // The only valid state transition from Root Name is BeforeBegin - return MakeState(PS_BeforeBegin); - case PS_BeforeBegin: - AZ_Assert(false, "Path Parser cannot be decremented when it is in the BeforeBegin State"); - } - } - - //! Return a view of the current element in the path processor state - constexpr AZStd::string_view operator*() const noexcept - { - switch (m_parser_state) - { - case PS_BeforeBegin: - [[fallthrough]]; - case PS_AtEnd: - [[fallthrough]]; - case PS_InRootDir: - return m_preferred_separator == '/' ? "/" : "\\"; - case PS_InRootName: - case PS_InFilenames: - return m_path_raw_entry; - default: - AZ_Assert(false, "Path Parser is in an invalid state"); - } - return {}; - } - - constexpr explicit operator bool() const noexcept - { - return m_parser_state != PS_BeforeBegin && m_parser_state != PS_AtEnd; - } - - constexpr PathParser& operator++() noexcept - { - Increment(); - return *this; - } - - constexpr PathParser& operator--() noexcept - { - Decrement(); - return *this; - } - - constexpr bool AtEnd() const noexcept - { - return m_parser_state == PS_AtEnd; - } - - constexpr bool InRootDir() const noexcept - { - return m_parser_state == PS_InRootDir; - } - - constexpr bool InRootName() const noexcept - { - return m_parser_state == PS_InRootName; - } - - constexpr bool InRootPath() const noexcept - { - return InRootName() || InRootDir(); - } - - private: - constexpr void MakeState(ParserState newState, typename AZStd::string_view::iterator start, typename AZStd::string_view::iterator end) noexcept - { - m_parser_state = newState; - m_path_raw_entry = AZStd::string_view(start, end); - } - constexpr void MakeState(ParserState newState) noexcept - { - m_parser_state = newState; - m_path_raw_entry = {}; - } - - //! Return a pointer to the first character after the currently lexed element. - constexpr typename AZStd::string_view::iterator getNextTokenStartPos() const noexcept - { - switch (m_parser_state) - { - case PS_BeforeBegin: - return m_path_view.begin(); - case PS_InRootName: - case PS_InRootDir: - case PS_InFilenames: - return m_path_raw_entry.end(); - case PS_AtEnd: - return m_path_view.end(); - default: - AZ_Assert(false, "Path Parser is in an invalid state"); - } - return m_path_view.end(); - } - - //! Return a pointer to the first character in the currently lexed element. - constexpr typename AZStd::string_view::iterator getCurrentTokenStartPos() const noexcept - { - switch (m_parser_state) - { - case PS_BeforeBegin: - case PS_InRootName: - return m_path_view.begin(); - case PS_InRootDir: - case PS_InFilenames: - return m_path_raw_entry.begin(); - case PS_AtEnd: - return m_path_view.end(); - default: - AZ_Assert(false, "Path Parser is in an invalid state"); - } - return m_path_view.end(); - } - }; - - constexpr string_view_pair SeparateFilename(const AZStd::string_view& srcView) - { - if (srcView == "." || srcView == ".." || srcView.empty()) - { - return string_view_pair{ srcView, "" }; - } - auto pos = srcView.find_last_of('.'); - if (pos == AZStd::string_view::npos || pos == 0) - { - return string_view_pair{ srcView, AZStd::string_view{} }; - } - return string_view_pair{ srcView.substr(0, pos), srcView.substr(pos) }; - } - - - // path part consumption - constexpr bool ConsumeRootName(PathParser* pathParser) - { - static_assert(PS_BeforeBegin == 1 && PS_InRootName == 2, - "PathParser must be in state before begin or in the root name in order to consume the root name"); - while (pathParser->m_parser_state <= PS_InRootName) - { - ++(*pathParser); - } - return pathParser->m_parser_state == PS_AtEnd; - } - constexpr bool ConsumeRootDir(PathParser* pathParser) - { - static_assert(PS_BeforeBegin == 1 && PS_InRootName == 2 && PS_InRootDir == 3, - "PathParser must be in state before begin, in the root name or in the root directory in order to consume the root directory"); - while (pathParser->m_parser_state <= PS_InRootDir) - { - ++(*pathParser); - } - return pathParser->m_parser_state == PS_AtEnd; - } - - // path.comparisons - constexpr int CompareRootName(PathParser* lhsPathParser, PathParser* rhsPathParser) - { - if (!lhsPathParser->InRootName() && !rhsPathParser->InRootName()) - { - return 0; - } - - auto GetRootName = [](PathParser* pathParser) constexpr -> AZStd::string_view - { - return pathParser->InRootName() ? **pathParser : ""; - }; - int res = Internal::ComparePathSegment(GetRootName(lhsPathParser), GetRootName(rhsPathParser), lhsPathParser->m_preferred_separator); - ConsumeRootName(lhsPathParser); - ConsumeRootName(rhsPathParser); - return res; - } - constexpr int CompareRootDir(PathParser* lhsPathParser, PathParser* rhsPathParser) - { - if (!lhsPathParser->InRootDir() && rhsPathParser->InRootDir()) - { - return -1; - } - else if (lhsPathParser->InRootDir() && !rhsPathParser->InRootDir()) - { - return 1; - } - else - { - ConsumeRootDir(lhsPathParser); - ConsumeRootDir(rhsPathParser); - return 0; - } - } - constexpr int CompareRelative(PathParser* lhsPathParserPtr, PathParser* rhsPathParserPtr) - { - auto& lhsPathParser = *lhsPathParserPtr; - auto& rhsPathParser = *rhsPathParserPtr; - - while (lhsPathParser && rhsPathParser) - { - if (int res = Internal::ComparePathSegment(*lhsPathParser, *rhsPathParser, lhsPathParser.m_preferred_separator); - res != 0) - { - return res; - } - ++lhsPathParser; - ++rhsPathParser; - } - return 0; - } - constexpr int CompareEndState(PathParser* lhsPathParser, PathParser* rhsPathParser) - { - if (lhsPathParser->AtEnd() && !rhsPathParser->AtEnd()) - { - return -1; - } - else if (!lhsPathParser->AtEnd() && rhsPathParser->AtEnd()) - { - return 1; - } - return 0; - } - - enum class PathPartKind : uint8_t - { - PK_None, - PK_RootName, - PK_RootSep, - PK_Filename, - PK_Dot, - PK_DotDot, - }; - - constexpr PathPartKind ClassifyPathPart(const PathParser& parser) - { - // Check each parser state to determine the PathPartKind - if (parser.m_parser_state == PS_InRootDir) - { - return PathPartKind::PK_RootSep; - } - if (parser.m_parser_state == PS_InRootName) - { - return PathPartKind::PK_RootName; - } - - // Fallback to checking parser pathEntry view value - // to determine if the special "." or ".." values are being used - AZStd::string_view pathPart = *parser; - if (pathPart == ".") - { - return PathPartKind::PK_Dot; - } - if (pathPart == "..") - { - return PathPartKind::PK_DotDot; - } - - // Return PathPartKind of Filename if the parser state doesn't match - // the states of InRootDir or InRootName and the filename - // isn't made up of the special directory values of "." and ".." - return PathPartKind::PK_Filename; - } - - constexpr int DetermineLexicalElementCount(PathParser pathParser) - { - int count = 0; - for (; pathParser; ++pathParser) - { - auto pathElement = *pathParser; - if (pathElement == "..") - { - --count; - } - else if (pathElement != "." && pathElement != "") - { - ++count; - } - } - return count; - } -} //! PathView implementation namespace AZ::IO @@ -1183,7 +487,8 @@ namespace AZ::IO }; if (pathParser.InRootName() && pathParserBase.InRootName()) { - if (*pathParser != *pathParserBase) + if (int res = Internal::ComparePathSegment(*pathParser, *pathParserBase, pathParser.m_preferred_separator); + res != 0) { pathResult.m_path = AZStd::string_view{}; return; @@ -1213,7 +518,8 @@ namespace AZ::IO // Find the first mismatching element auto pathParser = parser::PathParser::CreateBegin(path.m_path, path.m_preferred_separator); auto pathParserBase = parser::PathParser::CreateBegin(base.m_path, base.m_preferred_separator); - while (pathParser && pathParserBase && pathParser.m_parser_state == pathParserBase.m_parser_state && *pathParser == *pathParserBase) + while (pathParser && pathParserBase && pathParser.m_parser_state == pathParserBase.m_parser_state && + Internal::ComparePathSegment(*pathParser, *pathParserBase, pathParser.m_preferred_separator) == 0) { ++pathParser; ++pathParserBase; @@ -1255,66 +561,92 @@ namespace AZ::IO } } - template - constexpr void PathView::LexicallyNormalInplace(PathResultType& pathResult, const AZ::IO::PathView& path) + constexpr auto PathView::AppendNormalPathParts(PathIterable& pathIterable, const AZ::IO::PathView& path) noexcept -> void { if (path.m_path.empty()) { - pathResult = path; return; } - using PartKindPair = AZStd::pair; - // Max number of path parts supported when normalizing a path - constexpr size_t MaxPathParts = 64; - AZStd::array pathParts{}; - size_t currentPartSize = 0; - - // Track the total size of the parts as we collect them. This allows the - // resulting path to reserve the correct amount of memory. - size_t newPathSize = 0; - auto AddPart = [&newPathSize, &pathParts, ¤tPartSize](parser::PathPartKind pathKind, AZStd::string_view parserPathPart) constexpr - { - newPathSize += parserPathPart.size(); - pathParts[currentPartSize++] = { parserPathPart, pathKind }; - }; - auto LastPartKind = [&pathParts, ¤tPartSize]() constexpr - { - if (currentPartSize == 0) - { - return parser::PathPartKind::PK_None; - } - return pathParts[currentPartSize - 1].second; - }; - // Build a stack containing the remaining elements of the path, popping off // elements which occur before a '..' entry. for (auto pathParser = parser::PathParser::CreateBegin(path.m_path, path.m_preferred_separator); pathParser; ++pathParser) { - parser::PathPartKind Kind = parser::ClassifyPathPart(pathParser); - switch (Kind) + switch (const parser::PathPartKind Kind = parser::ClassifyPathPart(pathParser); Kind) { case parser::PathPartKind::PK_RootName: - case parser::PathPartKind::PK_Filename: - [[fallthrough]]; + { + // Root Name normalization is a bit tricky. + // A path of C:/foo/C:bar = C:/foo/bar and a path of C:foo/C:bar = C:foo/bar + // A path of C:/foo/C: = C:/foo + // A path of C:/foo/C:/bar = C:/bar + // Also a path of C:/foo/C: = C:/foo, but C:/foo/C:/ = C:/ + // A path of C:foo/D:bar = D:bar + // The pathIterable only stores the Root Name at the front + if (const auto [firstPartView, firstPartKind] = !pathIterable.empty() ? pathIterable.front() : PathIterable::PartKindPair{}; + firstPartKind != parser::PathPartKind::PK_RootName || firstPartView != *pathParser) + { + // The root name has changed or this is the first time a root name has been seen, + // discard the accumulated path parts + pathIterable.clear(); + pathIterable.emplace_back(*pathParser, Kind); + } + break; + } case parser::PathPartKind::PK_RootSep: { - // Add all non-dot and non-dot-dot elements to the stack of elements. - AddPart(Kind, *pathParser); + // If a root directory has been found, discard the accumulated path parts so far + // but not before storing of the first path part in case it is a Root Name + const auto [firstPartView, firstPartKind] = !pathIterable.empty() ? pathIterable.front() : PathIterable::PartKindPair{}; + pathIterable.clear(); + + if (firstPartKind == parser::PathPartKind::PK_RootName) + { + pathIterable.emplace_back(firstPartView, firstPartKind); + } + pathIterable.emplace_back(*pathParser, Kind); + break; + } + case parser::PathPartKind::PK_Filename: + { + // Special Case: The "filename" starts with a root name + // i.e D:/foo/C:/baz + // ^ + // The result should be C:/baz + // In this case restart path parsing at this element into the same PathIterable + // using tail recursion + AZStd::string_view filenameView{ *pathParser }; + if (auto filenameParser = parser::PathParser::CreateBegin(filenameView, pathParser.m_preferred_separator); + filenameParser && parser::ClassifyPathPart(filenameParser) == parser::PathPartKind::PK_RootName) + { + AZ::IO::PathView fileNamePath{ AZStd::string_view{ filenameView.begin(), path.m_path.end() }, + pathParser.m_preferred_separator }; + AppendNormalPathParts(pathIterable, fileNamePath); + return; + } + else + { + // Normal Case: The "filename" does not start with a root name + // Add all non-dot and non-dot-dot elements to the stack of elements. + pathIterable.emplace_back(*pathParser, Kind); + } break; } case parser::PathPartKind::PK_DotDot: { // Only push a ".." element if there are no elements preceding the "..", // or if the preceding element is itself "..". - auto lastPartKind = LastPartKind(); - if (lastPartKind == parser::PathPartKind::PK_Filename) + + if (const auto lastPartKind = !pathIterable.empty() ? pathIterable.back().second : parser::PathPartKind::PK_None; + lastPartKind == parser::PathPartKind::PK_Filename) { - newPathSize -= pathParts[--currentPartSize].first.size(); + // Due to the previous path part being a filename, the and the ".." cancels each other + // So remove the filename from the normalized path + pathIterable.pop_back(); } else if (lastPartKind != parser::PathPartKind::PK_RootSep) { - AddPart(parser::PathPartKind::PK_DotDot, ".."); + pathIterable.emplace_back("..", parser::PathPartKind::PK_DotDot); } break; } @@ -1324,21 +656,13 @@ namespace AZ::IO AZ_Assert(false, "Path Parser is in an invalid state"); } } - //! If the path is empty, add a dot. - if (currentPartSize == 0) - { - pathResult.m_path = AZStd::string_view{ "." }; - return; - } - - pathResult = PathResultType(path.m_preferred_separator); - pathResult.m_path.reserve(currentPartSize + newPathSize); - for (size_t partIndex = 0; partIndex < currentPartSize; ++partIndex) - { - auto& pathPart = pathParts[partIndex]; - pathResult /= pathPart.first; - } + } + constexpr auto PathView::GetNormalPathParts(const AZ::IO::PathView& path) noexcept -> PathIterable + { + PathIterable pathIterable; + AppendNormalPathParts(pathIterable, path); + return pathIterable; } } @@ -1573,12 +897,22 @@ namespace AZ::IO // Check if the other path has a root name and // that the root name doesn't match the current path root name // The scenario where this would occur was if the current path object had a path of - // "C:"foo and the other path object had a path "F:bar". + // "C:foo" and the other path object had a path "F:bar". // As the root names are different the other path replaces current path in it's entirety auto postRootNameIter = Internal::ConsumeRootName(m_path.begin(), m_path.end(), m_preferred_separator); auto otherPostRootNameIter = Internal::ConsumeRootName(first, last, m_preferred_separator); AZStd::string_view rootNameView{ m_path.begin(), postRootNameIter }; - if (first != otherPostRootNameIter && !AZStd::equal(rootNameView.begin(), rootNameView.end(), first, otherPostRootNameIter)) + + // The RootName can only ever be two characters long which is ":" + auto ToLower = [](const char element) constexpr -> char + { + return element >= 'A' && element <= 'Z' ? (element - 'A') + 'a' : element; + }; + auto compareRootName = [ToLower = AZStd::move(ToLower), path_separator = m_preferred_separator](const char lhs, const char rhs) constexpr + { + return path_separator == PosixPathSeparator ? lhs == rhs : ToLower(lhs) == ToLower(rhs); + }; + if (first != otherPostRootNameIter && !AZStd::equal(rootNameView.begin(), rootNameView.end(), first, otherPostRootNameIter, compareRootName)) { m_path.assign(first, last); return *this; @@ -1708,15 +1042,26 @@ namespace AZ::IO // native format observers template - constexpr auto BasicPath::Native() const noexcept -> const string_type& + constexpr auto BasicPath::Native() const & noexcept -> const string_type& + { + return m_path; + } + template + constexpr auto BasicPath::Native() const && noexcept -> const string_type&& + { + return AZStd::move(m_path); + } + + template + constexpr auto BasicPath::Native() & noexcept -> string_type& { return m_path; } template - constexpr auto BasicPath::Native() noexcept -> string_type& + constexpr auto BasicPath::Native() && noexcept -> string_type&& { - return m_path; + return AZStd::move(m_path); } template @@ -1726,13 +1071,7 @@ namespace AZ::IO } template - constexpr BasicPath::operator string_type() const - { - return m_path; - } - - template - constexpr BasicPath::operator string_type&() noexcept + constexpr BasicPath::operator string_type() const { return m_path; } @@ -1887,15 +1226,19 @@ namespace AZ::IO template constexpr auto BasicPath::LexicallyNormal() const -> BasicPath { - BasicPath pathResult; - static_cast(*this).LexicallyNormalInplace(pathResult, *this); + BasicPath pathResult(m_preferred_separator); + PathView::PathIterable pathIterable = PathView::GetNormalPathParts(*this); + for ([[maybe_unused]] auto [pathPartView, pathPartKind] : pathIterable) + { + pathResult /= pathPartView; + } return pathResult; } template constexpr auto BasicPath::LexicallyRelative(const PathView& base) const -> BasicPath { - BasicPath pathResult; + BasicPath pathResult(m_preferred_separator); static_cast(*this).MakeRelativeTo(pathResult, *this, base); return pathResult; } @@ -1984,20 +1327,45 @@ namespace AZ::IO { [[nodiscard]] constexpr bool PathView::IsRelativeTo(const PathView& base) const { - auto relativePath = LexicallyRelative(base); - return !relativePath.empty() && !relativePath.Native().starts_with(".."); + // PathView::LexicallyRelative is not being used as it returns a FixedMaxPath + // which has a limitation that it requires the relative path to fit within + // an AZ::IO::MaxPathLength buffer + auto ComparePathPart = [pathSeparator = m_preferred_separator]( + const PathIterable::PartKindPair& left, const PathIterable::PartKindPair& right) -> bool + { + return Internal::ComparePathSegment(left.first, right.first, pathSeparator) == 0; + }; + + const PathIterable thisPathParts = GetNormalPathParts(*this); + const PathIterable basePathParts = GetNormalPathParts(base); + [[maybe_unused]] auto [thisPathIter, basePathIter] = AZStd::mismatch(thisPathParts.begin(), thisPathParts.end(), + basePathParts.begin(), basePathParts.end(), ComparePathPart); + // Check if the entire base path has been consumed. If not, *this path cannot be relative to it + if (basePathIter != basePathParts.end()) + { + return false; + } + + // If the base path isn't empty and has been fully consumed, then *this path is relative + // Also if the base path is empty, then any relative path is relative to an empty path('.') + return !basePathParts.empty() || !thisPathParts.IsAbsolute(); } constexpr FixedMaxPath PathView::LexicallyNormal() const { - FixedMaxPath pathResult; - LexicallyNormalInplace(pathResult, *this); + FixedMaxPath pathResult(m_preferred_separator); + PathIterable pathIterable = GetNormalPathParts(*this); + for ([[maybe_unused]] auto [pathPartView, pathPartKind] : pathIterable) + { + pathResult /= pathPartView; + } + return pathResult; } constexpr FixedMaxPath PathView::LexicallyRelative(const PathView& base) const { - FixedMaxPath pathResult; + FixedMaxPath pathResult(m_preferred_separator); MakeRelativeTo(pathResult, *this, base); return pathResult; } diff --git a/Code/Framework/AzCore/AzCore/IO/Path/PathIterable.inl b/Code/Framework/AzCore/AzCore/IO/Path/PathIterable.inl new file mode 100644 index 0000000000..a1faa29b31 --- /dev/null +++ b/Code/Framework/AzCore/AzCore/IO/Path/PathIterable.inl @@ -0,0 +1,162 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#pragma once + +#include +#include + +namespace AZ::IO +{ + struct PathView::PathIterable + { + inline static constexpr size_t MaxPathParts = 64; + using PartKindPair = AZStd::pair; + using PartKindArray = AZStd::array; + constexpr PathIterable() = default; + + [[nodiscard]] constexpr bool empty() const noexcept; + constexpr auto size() const noexcept-> size_t; + constexpr auto begin() noexcept-> PartKindArray::iterator; + constexpr auto begin() const noexcept -> PartKindArray::const_iterator; + constexpr auto cbegin() const noexcept -> PartKindArray::const_iterator; + constexpr auto end() noexcept -> PartKindArray::iterator; + constexpr auto end() const noexcept -> PartKindArray::const_iterator; + constexpr auto cend() const noexcept -> PartKindArray::const_iterator; + constexpr auto rbegin() noexcept -> PartKindArray::reverse_iterator; + constexpr auto rbegin() const noexcept -> PartKindArray::const_reverse_iterator; + constexpr auto crbegin() const noexcept -> PartKindArray::const_reverse_iterator; + constexpr auto rend() noexcept -> PartKindArray::reverse_iterator; + constexpr auto rend() const noexcept -> PartKindArray::const_reverse_iterator; + constexpr auto crend() const noexcept -> PartKindArray::const_reverse_iterator; + + [[nodiscard]] constexpr bool IsAbsolute() const noexcept; + + private: + template + constexpr PartKindPair& emplace_back(Args&&... args) noexcept; + constexpr void pop_back() noexcept; + constexpr const PartKindPair& back() const noexcept; + constexpr PartKindPair& back() noexcept; + + constexpr const PartKindPair& front() const noexcept; + constexpr PartKindPair& front() noexcept; + + constexpr void clear() noexcept; + + friend constexpr auto PathView::GetNormalPathParts(const AZ::IO::PathView&) noexcept -> PathIterable; + friend constexpr auto PathView::AppendNormalPathParts(PathIterable& pathIterable, const AZ::IO::PathView&) noexcept -> void; + PartKindArray m_parts{}; + size_t m_size{}; + }; + + // public + [[nodiscard]] constexpr auto PathView::PathIterable::empty() const noexcept -> bool + { + return m_size == 0; + } + constexpr auto PathView::PathIterable::size() const noexcept -> size_t + { + return m_size; + } + + constexpr auto PathView::PathIterable::begin() noexcept -> PartKindArray::iterator + { + return m_parts.begin(); + } + constexpr auto PathView::PathIterable::begin() const noexcept -> PartKindArray::const_iterator + { + return m_parts.begin(); + } + constexpr auto PathView::PathIterable::cbegin() const noexcept -> PartKindArray::const_iterator + { + return begin(); + } + constexpr auto PathView::PathIterable::end() noexcept -> PartKindArray::iterator + { + return begin() + size(); + } + constexpr auto PathView::PathIterable::end() const noexcept -> PartKindArray::const_iterator + { + return begin() + size(); + } + constexpr auto PathView::PathIterable::cend() const noexcept -> PartKindArray::const_iterator + { + return end(); + } + constexpr auto PathView::PathIterable::rbegin() noexcept -> PartKindArray::reverse_iterator + { + return PartKindArray::reverse_iterator(begin() + size()); + } + constexpr auto PathView::PathIterable::rbegin() const noexcept -> PartKindArray::const_reverse_iterator + { + return PartKindArray::const_reverse_iterator(begin() + size()); + } + constexpr auto PathView::PathIterable::crbegin() const noexcept -> PartKindArray::const_reverse_iterator + { + return rbegin(); + } + constexpr auto PathView::PathIterable::rend() noexcept -> PartKindArray::reverse_iterator + { + return PartKindArray::reverse_iterator(begin()); + } + constexpr auto PathView::PathIterable::rend() const noexcept -> PartKindArray::const_reverse_iterator + { + return PartKindArray::const_reverse_iterator(begin()); + } + constexpr auto PathView::PathIterable::crend() const noexcept -> PartKindArray::const_reverse_iterator + { + return rend(); + } + + [[nodiscard]] constexpr auto PathView::PathIterable::IsAbsolute() const noexcept -> bool + { + return !empty() && (front().second == parser::PathPartKind::PK_RootSep + || (size() > 1 && front().second == parser::PathPartKind::PK_RootName && m_parts[1].second == parser::PathPartKind::PK_RootSep)); + } + + // private + template + constexpr auto PathView::PathIterable::emplace_back(Args&&... args) noexcept -> PartKindPair& + { + AZ_Assert(m_size < MaxPathParts, "PathIterable cannot be made out of a path with more than %zu parts", MaxPathParts); + m_parts[m_size++] = PartKindPair{ AZStd::forward(args)... }; + return back(); + } + constexpr auto PathView::PathIterable::pop_back() noexcept -> void + { + AZ_Assert(m_size > 0, "Cannot pop_back() from a PathIterable with 0 parts"); + --m_size; + } + constexpr auto PathView::PathIterable::back() const noexcept -> const PartKindPair& + { + AZ_Assert(!empty(), "back() was invoked on PathIterable with 0 parts"); + return m_parts[m_size - 1]; + } + constexpr auto PathView::PathIterable::back() noexcept -> PartKindPair& + { + AZ_Assert(!empty(), "back() was invoked on PathIterable with 0 parts"); + return m_parts[m_size - 1]; + } + + constexpr auto PathView::PathIterable::front() const noexcept -> const PartKindPair& + { + AZ_Assert(!empty(), "front() was invoked on PathIterable with 0 parts"); + return m_parts[0]; + } + constexpr auto PathView::PathIterable::front() noexcept -> PartKindPair& + { + AZ_Assert(!empty(), "front() was invoked on PathIterable with 0 parts"); + return m_parts[0]; + } + + constexpr auto PathView::PathIterable::clear() noexcept -> void + { + m_size = 0; + } +} diff --git a/Code/Framework/AzCore/AzCore/IO/Path/PathParser.inl b/Code/Framework/AzCore/AzCore/IO/Path/PathParser.inl new file mode 100644 index 0000000000..3ab2c4376c --- /dev/null +++ b/Code/Framework/AzCore/AzCore/IO/Path/PathParser.inl @@ -0,0 +1,706 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#pragma once + +#include +#include + +namespace AZ::IO::Internal +{ + constexpr bool IsSeparator(const char elem) + { + return elem == '/' || elem == '\\'; + } + template >> + static constexpr bool HasDrivePrefix(InputIt first, EndIt last) + { + size_t prefixSize = AZStd::distance(first, last); + if (prefixSize < 2 || *AZStd::next(first, 1) != ':') + { + // Drive prefix must be at least two characters and have a colon for the second character + return false; + } + + constexpr size_t ValidDrivePrefixRange = 26; + // Uppercase the drive letter by bitwise and'ing out the the 2^5 bit + unsigned char driveLetter = static_cast(*first); + + driveLetter &= 0b1101'1111; + // normalize the character value in the range of A-Z -> 0-25 + driveLetter -= 'A'; + return driveLetter < ValidDrivePrefixRange; + } + + static constexpr bool HasDrivePrefix(AZStd::string_view prefix) + { + return HasDrivePrefix(prefix.begin(), prefix.end()); + } + + //! Returns an iterator past the end of the consumed root name + //! Windows root names can have include drive letter within them + template + constexpr auto ConsumeRootName(InputIt entryBeginIter, InputIt entryEndIter, const char preferredSeparator) + -> AZStd::enable_if_t, InputIt> + { + if (preferredSeparator == PosixPathSeparator) + { + // If the preferred separator is forward slash the parser is in posix path + // parsing mode, which doesn't have a root name, + // unless we're on a posix platform that uses a custom path root separator +#if defined(AZ_TRAIT_CUSTOM_PATH_ROOT_SEPARATOR) + const AZStd::string_view path{ entryBeginIter, entryEndIter }; + const auto positionOfPathSeparator = path.find(AZ_TRAIT_CUSTOM_PATH_ROOT_SEPARATOR); + if (positionOfPathSeparator != AZStd::string_view::npos) + { + return AZStd::next(entryBeginIter, positionOfPathSeparator + 1); + } +#endif + return entryBeginIter; + } + else + { + // Information for GetRootName has been gathered from Microsoft header + // Below are examples of paths and what there root-name will return + // "/" - returns "" + // "foo/" - returns "" + // "C:DriveRelative" - returns "C:" + // "C:\\DriveAbsolute" - returns "C:" + // "C://DriveAbsolute" - returns "C:" + // "\\server\share" - returns "\\server" + // The following paths are based on the UNC specification to work with paths longer than the 260 character path limit + // https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file?redirectedfrom=MSDN#maximum-path-length-limitation + // \\?\device - returns "\\?" + // \??\device - returns "\??" + // \\.\device - returns "\\." + + + AZStd::string_view path{ entryBeginIter, entryEndIter }; + + if (path.size() < 2) + { + // A root name is either or a network path + // therefore it has a least two characters + return entryBeginIter; + } + + if (HasDrivePrefix(path)) + { + // If the path has a drive prefix, then it has a root name of + return AZStd::next(entryBeginIter, 2); + } + + if (!Internal::IsSeparator(path[0])) + { + // At this point all other root names start with a path separator + return entryBeginIter; + } + + // Check if the path has the form of "\\?\, "\??\" or "\\.\" + const bool pathInUncForm = path.size() >= 4 && Internal::IsSeparator(path[3]) + && (path.size() == 4 || !Internal::IsSeparator(path[4])); + if (pathInUncForm) + { + // \\?\<0 or more> or \\.\$ + const bool slashQuestionMark = Internal::IsSeparator(path[1]) && (path[2] == '?' || path[2] == '.'); + // \??\<0 or more> + const bool questionMarkTwice = path[1] == '?' && path[2] == '?'; + if (slashQuestionMark || questionMarkTwice) + { + // Return the root value root slash - i.e "\\?" + return AZStd::next(entryBeginIter, 3); + } + } + + if (path.size() >= 3 && Internal::IsSeparator(path[1]) && !Internal::IsSeparator(path[2])) + { + // Find the next path separator for network paths that have the form of \\server\share + constexpr AZStd::string_view PathSeparators = { "/\\" }; + size_t nextPathSeparatorOffset = path.find_first_of(PathSeparators, 3); + return AZStd::next(entryBeginIter, nextPathSeparatorOffset != AZStd::string_view::npos ? nextPathSeparatorOffset : path.size()); + } + + return entryBeginIter; + } + } + + //! Returns an iterator past the end of the consumed path separator(s) + template + constexpr InputIt ConsumeSeparator(InputIt entryBeginIter, InputIt entryEndIter) noexcept + { + return AZStd::find_if_not(entryBeginIter, entryEndIter, [](const char elem) { return Internal::IsSeparator(elem); }); + } + + //! Returns an iterator past the end of the consumed filename + template + constexpr InputIt ConsumeName(InputIt entryBeginIter, InputIt entryEndIter) noexcept + { + return AZStd::find_if(entryBeginIter, entryEndIter, [](const char elem) { return Internal::IsSeparator(elem); }); + } + + //! Check if a path is absolute on a OS basis + //! If the preferred separator is '/' just checks if the path starts with a '/ + //! Otherwise a check for a Windows absolute path occurs + //! Windows absolute paths can include a RootName + template >> + static constexpr bool IsAbsolute(InputIt first, EndIt last, const char preferredSeparator) + { + size_t pathSize = AZStd::distance(first, last); + + // If the preferred separator is a forward slash + // than an absolute path is simply one that starts with a forward slash, + // unless we're on a posix platform that uses a custom path root separator + if (preferredSeparator == PosixPathSeparator) + { +#if defined(AZ_TRAIT_CUSTOM_PATH_ROOT_SEPARATOR) + const AZStd::string_view path{ first, last }; + return path.find(AZ_TRAIT_CUSTOM_PATH_ROOT_SEPARATOR) != AZStd::string_view::npos; +#else + return pathSize > 0 && IsSeparator(*first); +#endif + } + else + { + if (Internal::HasDrivePrefix(first, last)) + { + // If a windows path ends starts with C:foo it is a root relative path + // A path is absolute root absolute on windows if it starts with + return pathSize > 2 && Internal::IsSeparator(*AZStd::next(first, 2)); + } + + return first != ConsumeRootName(first, last, preferredSeparator); + } + } + static constexpr bool IsAbsolute(AZStd::string_view pathView, const char preferredSeparator) + { + // Uses the template preferred to branch on the absolute path check + // logic + return IsAbsolute(pathView.begin(), pathView.end(), preferredSeparator); + } + + // Compares path segments using either Posix or Windows path rules based on the path separator in use + // Posix paths perform a case-sensitive comparison, while Windows paths perform a case-insensitive comparison + static int ComparePathSegment(AZStd::string_view left, AZStd::string_view right, char pathSeparator) + { + const size_t maxCharsToCompare = (AZStd::min)(left.size(), right.size()); + + int charCompareResult = pathSeparator == PosixPathSeparator + ? maxCharsToCompare ? strncmp(left.data(), right.data(), maxCharsToCompare) : 0 + : maxCharsToCompare ? azstrnicmp(left.data(), right.data(), maxCharsToCompare) : 0; + return charCompareResult == 0 + ? static_cast(aznumeric_cast(left.size()) - aznumeric_cast(right.size())) + : charCompareResult; + } +} + +//! PathParser implementation +//! For internal use only +namespace AZ::IO::parser +{ + using parser_path_type = PathView; + using string_view_pair = AZStd::pair; + using PosPtr = const typename parser_path_type::value_type*; + + enum ParserState : uint8_t + { + // Zero is a special sentinel value used by default constructed iterators. + PS_BeforeBegin = PathIterator::BeforeBegin, + PS_InRootName = PathIterator::InRootName, + PS_InRootDir = PathIterator::InRootDir, + PS_InFilenames = PathIterator::InFilenames, + PS_AtEnd = PathIterator::AtEnd + }; + + struct PathParser + { + AZStd::string_view m_path_view; + AZStd::string_view m_path_raw_entry; + ParserState m_parser_state{}; + const char m_preferred_separator{ AZ_TRAIT_OS_PATH_SEPARATOR }; + + constexpr PathParser(AZStd::string_view path, ParserState state, const char preferredSeparator) noexcept + : m_path_view(path) + , m_parser_state(state) + , m_preferred_separator(preferredSeparator) + { + } + + constexpr PathParser(AZStd::string_view path, AZStd::string_view entry, ParserState state, const char preferredSeparator) noexcept + : m_path_view(path) + , m_path_raw_entry(entry) + , m_parser_state(static_cast(state)) + , m_preferred_separator(preferredSeparator) + { + } + + constexpr static PathParser CreateBegin(AZStd::string_view path, const char preferredSeparator) noexcept + { + PathParser pathParser(path, PS_BeforeBegin, preferredSeparator); + pathParser.Increment(); + return pathParser; + } + + constexpr static PathParser CreateEnd(AZStd::string_view path, const char preferredSeparator) noexcept + { + PathParser pathParser(path, PS_AtEnd, preferredSeparator); + return pathParser; + } + + constexpr PosPtr Peek() const noexcept + { + auto tokenEnd = getNextTokenStartPos(); + auto End = m_path_view.end(); + return tokenEnd == End ? nullptr : tokenEnd; + } + + constexpr void Increment() noexcept + { + const PosPtr pathEnd = m_path_view.end(); + const PosPtr currentPathEntry = getNextTokenStartPos(); + if (currentPathEntry == pathEnd) + { + return MakeState(PS_AtEnd); + } + + switch (m_parser_state) + { + case PS_BeforeBegin: + { + /* + * First the determine if the path contains only a root-name such as "C:" or is a filename such as "foo" + * root-relative path(Windows only) - C:foo + * root-absolute path - C:\foo + * root-absolute path - /foo + * relative path - foo + * + * Try to consume the root-name then the root directory to determine if path entry + * being parsed is a root-name or filename + * The State transitions from BeforeBegin are + * "C:", "\\server\", "\\?\", "\??\", "\\.\" -> Root Name + * "/", "\" -> Root Directory + * "path/foo", "foo" -> Filename + */ + auto rootNameEnd = Internal::ConsumeRootName(currentPathEntry, pathEnd, m_preferred_separator); + if (currentPathEntry != rootNameEnd) + { + // Transition to the Root Name state + return MakeState(PS_InRootName, currentPathEntry, rootNameEnd); + } + [[fallthrough]]; + } + case PS_InRootName: + { + auto rootDirEnd = Internal::ConsumeSeparator(currentPathEntry, pathEnd); + if (currentPathEntry != rootDirEnd) + { + // Transition to Root Directory state + return MakeState(PS_InRootDir, currentPathEntry, rootDirEnd); + } + [[fallthrough]]; + } + case PS_InRootDir: + { + auto filenameEnd = Internal::ConsumeName(currentPathEntry, pathEnd); + if (currentPathEntry != filenameEnd) + { + return MakeState(PS_InFilenames, currentPathEntry, filenameEnd); + } + [[fallthrough]]; + } + case PS_InFilenames: + { + auto separatorEnd = Internal::ConsumeSeparator(currentPathEntry, pathEnd); + if (separatorEnd != pathEnd) + { + // find the end of the current filename entry + auto filenameEnd = Internal::ConsumeName(separatorEnd, pathEnd); + return MakeState(PS_InFilenames, separatorEnd, filenameEnd); + } + // If after consuming the separator that path entry is at the end iterator + // move the path state to AtEnd + return MakeState(PS_AtEnd); + } + case PS_AtEnd: + AZ_Assert(false, "Path Parser cannot be incremented when it is in the AtEnd state"); + } + } + + constexpr void Decrement() noexcept + { + auto pathStart = m_path_view.begin(); + auto currentPathEntry = getCurrentTokenStartPos(); + + if (currentPathEntry == pathStart) + { + // we're decrementing the begin + return MakeState(PS_BeforeBegin); + } + switch (m_parser_state) + { + case PS_AtEnd: + { + /* + * First the determine if the path contains only a root-name such as "C:" or is a filename such as "foo" + * root-relative path(Windows only) - C:foo + * root-absolute path - C:\foo + * root-absolute path - /foo + * relative path - foo + * Try to consume the root-name then the root directory to determine if path entry + * being parsed is a root-name or filename + * The State transitions from AtEnd are + * "/path/foo/", "foo/", "C:foo\", "C:\foo\" -> Trailing Separator + * "/path/foo", "foo", "C:foo", "C:\foo" -> Filename + * "/", "C:\" or "\\server\" -> Root Directory + * "C:", "\\server", "\\?", "\??", "\\." -> Root Name + */ + auto rootNameEnd = Internal::ConsumeRootName(pathStart, currentPathEntry, m_preferred_separator); + if (pathStart != rootNameEnd && currentPathEntry == rootNameEnd) + { + // Transition to the Root Name state + return MakeState(PS_InRootName, pathStart, currentPathEntry); + } + + auto rootDirEnd = Internal::ConsumeSeparator(rootNameEnd, currentPathEntry); + if (rootNameEnd != rootDirEnd && currentPathEntry == rootDirEnd) + { + // Transition to Root Directory state + return MakeState(PS_InRootDir, rootNameEnd, currentPathEntry); + } + + auto filenameEnd = currentPathEntry; + if (Internal::IsSeparator(*(filenameEnd - 1))) + { + // The last character a path separator that isn't root directory + // consume all the preceding path separators + filenameEnd = Internal::ConsumeSeparator(AZStd::make_reverse_iterator(filenameEnd), + AZStd::make_reverse_iterator(rootDirEnd)).base(); + } + + // The previous state will be Filename, so the beginning of the filename is searched found + auto filenameBegin = Internal::ConsumeName(AZStd::make_reverse_iterator(filenameEnd), + AZStd::make_reverse_iterator(rootDirEnd)).base(); + return MakeState(PS_InFilenames, filenameBegin, filenameEnd); + } + case PS_InFilenames: + { + /* The State transitions from Filename are + * "/path/foo" -> Filename + * ^ + * "C:\foo" -> Root Directory + * ^ + * "C:foo" -> Root Name + * ^ + * "foo" -> This case has been taken care of by the current path entry != path start check + * ^ + */ + auto rootNameEnd = Internal::ConsumeRootName(pathStart, currentPathEntry, m_preferred_separator); + if (pathStart != rootNameEnd && currentPathEntry == rootNameEnd) + { + // Transition to the Root Name state + return MakeState(PS_InRootName, pathStart, rootNameEnd); + } + + auto rootDirEnd = Internal::ConsumeSeparator(rootNameEnd, currentPathEntry); + if (rootNameEnd != rootDirEnd && currentPathEntry == rootDirEnd) + { + // Transition to Root Directory state + return MakeState(PS_InRootDir, rootNameEnd, rootDirEnd); + } + // The previous state will be Filename again, so first the end of that filename is found + // proceeded by finding the beginning of that filename + auto filenameEnd = Internal::ConsumeSeparator(AZStd::make_reverse_iterator(currentPathEntry), + AZStd::make_reverse_iterator(rootDirEnd)).base(); + auto filenameBegin = Internal::ConsumeName(AZStd::make_reverse_iterator(filenameEnd), + AZStd::make_reverse_iterator(rootDirEnd)).base(); + return MakeState(PS_InFilenames, filenameBegin, filenameEnd); + } + case PS_InRootDir: + { + /* The State transitions from Root Directory are + * "C:\" "\\server\", "\\?\", "\??\", "\\.\" -> Root Name + * ^ ^ ^ ^ ^ + * "/" -> This case has been taken care of by the current path entry != path start check + * ^ + */ + return MakeState(PS_InRootName, pathStart, currentPathEntry); + } + case PS_InRootName: + // The only valid state transition from Root Name is BeforeBegin + return MakeState(PS_BeforeBegin); + case PS_BeforeBegin: + AZ_Assert(false, "Path Parser cannot be decremented when it is in the BeforeBegin State"); + } + } + + //! Return a view of the current element in the path processor state + constexpr AZStd::string_view operator*() const noexcept + { + switch (m_parser_state) + { + case PS_BeforeBegin: + [[fallthrough]]; + case PS_AtEnd: + [[fallthrough]]; + case PS_InRootDir: + return m_preferred_separator == '/' ? "/" : "\\"; + case PS_InRootName: + case PS_InFilenames: + return m_path_raw_entry; + default: + AZ_Assert(false, "Path Parser is in an invalid state"); + } + return {}; + } + + constexpr explicit operator bool() const noexcept + { + return m_parser_state != PS_BeforeBegin && m_parser_state != PS_AtEnd; + } + + constexpr PathParser& operator++() noexcept + { + Increment(); + return *this; + } + + constexpr PathParser& operator--() noexcept + { + Decrement(); + return *this; + } + + constexpr bool AtEnd() const noexcept + { + return m_parser_state == PS_AtEnd; + } + + constexpr bool InRootDir() const noexcept + { + return m_parser_state == PS_InRootDir; + } + + constexpr bool InRootName() const noexcept + { + return m_parser_state == PS_InRootName; + } + + constexpr bool InRootPath() const noexcept + { + return InRootName() || InRootDir(); + } + + private: + constexpr void MakeState(ParserState newState, typename AZStd::string_view::iterator start, typename AZStd::string_view::iterator end) noexcept + { + m_parser_state = newState; + m_path_raw_entry = AZStd::string_view(start, end); + } + constexpr void MakeState(ParserState newState) noexcept + { + m_parser_state = newState; + m_path_raw_entry = {}; + } + + //! Return a pointer to the first character after the currently lexed element. + constexpr typename AZStd::string_view::iterator getNextTokenStartPos() const noexcept + { + switch (m_parser_state) + { + case PS_BeforeBegin: + return m_path_view.begin(); + case PS_InRootName: + case PS_InRootDir: + case PS_InFilenames: + return m_path_raw_entry.end(); + case PS_AtEnd: + return m_path_view.end(); + default: + AZ_Assert(false, "Path Parser is in an invalid state"); + } + return m_path_view.end(); + } + + //! Return a pointer to the first character in the currently lexed element. + constexpr typename AZStd::string_view::iterator getCurrentTokenStartPos() const noexcept + { + switch (m_parser_state) + { + case PS_BeforeBegin: + case PS_InRootName: + return m_path_view.begin(); + case PS_InRootDir: + case PS_InFilenames: + return m_path_raw_entry.begin(); + case PS_AtEnd: + return m_path_view.end(); + default: + AZ_Assert(false, "Path Parser is in an invalid state"); + } + return m_path_view.end(); + } + }; + + constexpr string_view_pair SeparateFilename(const AZStd::string_view& srcView) + { + if (srcView == "." || srcView == ".." || srcView.empty()) + { + return string_view_pair{ srcView, "" }; + } + auto pos = srcView.find_last_of('.'); + if (pos == AZStd::string_view::npos || pos == 0) + { + return string_view_pair{ srcView, AZStd::string_view{} }; + } + return string_view_pair{ srcView.substr(0, pos), srcView.substr(pos) }; + } + + + // path part consumption + constexpr bool ConsumeRootName(PathParser* pathParser) + { + static_assert(PS_BeforeBegin == 1 && PS_InRootName == 2, + "PathParser must be in state before begin or in the root name in order to consume the root name"); + while (pathParser->m_parser_state <= PS_InRootName) + { + ++(*pathParser); + } + return pathParser->m_parser_state == PS_AtEnd; + } + constexpr bool ConsumeRootDir(PathParser* pathParser) + { + static_assert(PS_BeforeBegin == 1 && PS_InRootName == 2 && PS_InRootDir == 3, + "PathParser must be in state before begin, in the root name or in the root directory in order to consume the root directory"); + while (pathParser->m_parser_state <= PS_InRootDir) + { + ++(*pathParser); + } + return pathParser->m_parser_state == PS_AtEnd; + } + + // path.comparisons + constexpr int CompareRootName(PathParser* lhsPathParser, PathParser* rhsPathParser) + { + if (!lhsPathParser->InRootName() && !rhsPathParser->InRootName()) + { + return 0; + } + + auto GetRootName = [](PathParser* pathParser) constexpr -> AZStd::string_view + { + return pathParser->InRootName() ? **pathParser : ""; + }; + int res = Internal::ComparePathSegment(GetRootName(lhsPathParser), GetRootName(rhsPathParser), lhsPathParser->m_preferred_separator); + ConsumeRootName(lhsPathParser); + ConsumeRootName(rhsPathParser); + return res; + } + constexpr int CompareRootDir(PathParser* lhsPathParser, PathParser* rhsPathParser) + { + if (!lhsPathParser->InRootDir() && rhsPathParser->InRootDir()) + { + return -1; + } + else if (lhsPathParser->InRootDir() && !rhsPathParser->InRootDir()) + { + return 1; + } + else + { + ConsumeRootDir(lhsPathParser); + ConsumeRootDir(rhsPathParser); + return 0; + } + } + constexpr int CompareRelative(PathParser* lhsPathParserPtr, PathParser* rhsPathParserPtr) + { + auto& lhsPathParser = *lhsPathParserPtr; + auto& rhsPathParser = *rhsPathParserPtr; + + while (lhsPathParser && rhsPathParser) + { + if (int res = Internal::ComparePathSegment(*lhsPathParser, *rhsPathParser, lhsPathParser.m_preferred_separator); + res != 0) + { + return res; + } + ++lhsPathParser; + ++rhsPathParser; + } + return 0; + } + constexpr int CompareEndState(PathParser* lhsPathParser, PathParser* rhsPathParser) + { + if (lhsPathParser->AtEnd() && !rhsPathParser->AtEnd()) + { + return -1; + } + else if (!lhsPathParser->AtEnd() && rhsPathParser->AtEnd()) + { + return 1; + } + return 0; + } + + constexpr int DetermineLexicalElementCount(PathParser pathParser) + { + int count = 0; + for (; pathParser; ++pathParser) + { + auto pathElement = *pathParser; + if (pathElement == "..") + { + --count; + } + else if (pathElement != "." && pathElement != "") + { + ++count; + } + } + return count; + } + + enum class PathPartKind : uint8_t + { + PK_None, + PK_RootName, + PK_RootSep, + PK_Filename, + PK_Dot, + PK_DotDot, + }; + + constexpr PathPartKind ClassifyPathPart(const PathParser& parser) + { + // Check each parser state to determine the PathPartKind + if (parser.m_parser_state == PS_InRootDir) + { + return PathPartKind::PK_RootSep; + } + if (parser.m_parser_state == PS_InRootName) + { + return PathPartKind::PK_RootName; + } + + // Fallback to checking parser pathEntry view value + // to determine if the special "." or ".." values are being used + AZStd::string_view pathPart = *parser; + if (pathPart == ".") + { + return PathPartKind::PK_Dot; + } + if (pathPart == "..") + { + return PathPartKind::PK_DotDot; + } + + // Return PathPartKind of PK_ilename if the parser state doesn't match + // the states of InRootDir or InRootName and the filename + // isn't made up of the special directory values of "." and ".." + return PathPartKind::PK_Filename; + } +} diff --git a/Code/Framework/AzCore/AzCore/azcore_files.cmake b/Code/Framework/AzCore/AzCore/azcore_files.cmake index b2ef586053..a41107e539 100644 --- a/Code/Framework/AzCore/AzCore/azcore_files.cmake +++ b/Code/Framework/AzCore/AzCore/azcore_files.cmake @@ -176,6 +176,8 @@ set(FILES IO/Path/Path.cpp IO/Path/Path.h IO/Path/Path.inl + IO/Path/PathIterable.inl + IO/Path/PathParser.inl IO/Path/Path_fwd.h IO/SystemFile.cpp IO/SystemFile.h diff --git a/Code/Framework/AzCore/Tests/IO/Path/PathTests.cpp b/Code/Framework/AzCore/Tests/IO/Path/PathTests.cpp index 2fca03bc59..dbdb4fee78 100644 --- a/Code/Framework/AzCore/Tests/IO/Path/PathTests.cpp +++ b/Code/Framework/AzCore/Tests/IO/Path/PathTests.cpp @@ -56,7 +56,7 @@ namespace UnitTest } - // filesystem::path::is_absolute test + // PathView::IsAbsolute test TEST_F(PathFixture, IsAbsolute_ReturnsTrue) { using fixed_max_path = AZ::IO::FixedMaxPath; @@ -88,7 +88,7 @@ namespace UnitTest static_assert(IsAbsolute()); } - // filesystem::path::is_relative test + // PathView::isRelative test TEST_F(PathFixture, IsRelative_ReturnsTrue) { using fixed_max_path = AZ::IO::FixedMaxPath; @@ -573,7 +573,16 @@ namespace UnitTest PathLexicallyNormalParams{ '/', "foo/./bar/..", "foo" }, PathLexicallyNormalParams{ '/', "foo/.///bar/../", "foo" }, PathLexicallyNormalParams{ '/', R"(/foo\./bar\..\)", "/foo" }, - PathLexicallyNormalParams{ '\\', R"(C:/O3DE/dev/Cache\game/../pc)", R"(C:\O3DE\dev\Cache\pc)" } + PathLexicallyNormalParams{ '/', R"(/..)", "/" }, + PathLexicallyNormalParams{ '\\', R"(C:/O3DE/dev/Cache\game/../pc)", R"(C:\O3DE\dev\Cache\pc)" }, + PathLexicallyNormalParams{ '\\', R"(C:/foo/C:bar)", R"(C:\foo\bar)" }, + PathLexicallyNormalParams{ '\\', R"(C:foo/C:bar)", R"(C:foo\bar)" }, + PathLexicallyNormalParams{ '\\', R"(C:/foo/C:/bar)", R"(C:\bar)" }, + PathLexicallyNormalParams{ '\\', R"(C:/foo/C:)", R"(C:\foo)" }, + PathLexicallyNormalParams{ '\\', R"(C:/foo/C:/)", R"(C:\)" }, + PathLexicallyNormalParams{ '\\', R"(C:/foo/D:bar)", R"(D:bar)" }, + PathLexicallyNormalParams{ '\\', R"(..)", R"(..)" }, + PathLexicallyNormalParams{ '\\', R"(foo/../../bar)", R"(..\bar)" } ) ); @@ -641,7 +650,12 @@ namespace UnitTest PathViewLexicallyProximateParams{ '\\', "C:\\a\\b", "C:\\a\\d\\c", "..\\..\\b", false }, PathViewLexicallyProximateParams{ '\\', "C:a\\b", "C:\\a\\b", "C:a\\b", false }, PathViewLexicallyProximateParams{ '\\', "C:\\a\\b", "C:a\\b", "C:\\a\\b", false }, - PathViewLexicallyProximateParams{ '\\', "E:\\a\\b", "F:\\a\\b", "E:\\a\\b", false } + PathViewLexicallyProximateParams{ '\\', "E:\\a\\b", "F:\\a\\b", "E:\\a\\b", false }, + PathViewLexicallyProximateParams{ '\\', "D:/o3de/proJECT/cache/asset.txt", "d:\\o3de\\Project\\Cache", "asset.txt", true }, + PathViewLexicallyProximateParams{ '\\', "D:/o3de/proJECT/cache/pc/..", "d:\\o3de\\Project\\Cache", "pc\\..", true }, + PathViewLexicallyProximateParams{ '\\', "D:/o3de/proJECT/cache/pc/asset.txt/..", "d:\\o3de\\Project\\Cache\\", "pc\\asset.txt\\..", true }, + PathViewLexicallyProximateParams{ '\\', "D:/o3de/proJECT/cache\\", "D:\\o3de\\Project\\Cache/", ".", true }, + PathViewLexicallyProximateParams{ '\\', "D:/o3de/proJECT/cache/../foo", "D:\\o3de\\Project\\Cache", "..\\foo", false } ) ); diff --git a/Code/Framework/AzFramework/AzFramework/Archive/Archive.cpp b/Code/Framework/AzFramework/AzFramework/Archive/Archive.cpp index e125cc1df6..012d713cf5 100644 --- a/Code/Framework/AzFramework/AzFramework/Archive/Archive.cpp +++ b/Code/Framework/AzFramework/AzFramework/Archive/Archive.cpp @@ -1912,7 +1912,7 @@ namespace AZ::IO return m_pFileEntry->nFileDataOffset; } - bool Archive::MakeDir(AZStd::string_view szPathIn, [[maybe_unused]] bool bGamePathMapping) + bool Archive::MakeDir(AZStd::string_view szPathIn) { AZ::IO::StackString pathStr{ szPathIn }; // Determine if there is a period ('.') after the last slash to determine if the path contains a file. @@ -2327,7 +2327,9 @@ namespace AZ::IO // we only want to record ASSET access // assets are identified as things which start with no alias, or with the @assets@ alias auto assetPath = AZ::IO::FileIOBase::GetInstance()->ConvertToAlias(szFilename); - if (assetPath && assetPath->Native().starts_with("@assets@")) + if (assetPath && (assetPath->Native().starts_with("@assets@") + || assetPath->Native().starts_with("@root@") + || assetPath->Native().starts_with("@projectplatformcache@"))) { IResourceList* pList = GetResourceList(m_eRecordFileOpenList); diff --git a/Code/Framework/AzFramework/AzFramework/Archive/Archive.h b/Code/Framework/AzFramework/AzFramework/Archive/Archive.h index bd10387d17..ec964f7fa3 100644 --- a/Code/Framework/AzFramework/AzFramework/Archive/Archive.h +++ b/Code/Framework/AzFramework/AzFramework/Archive/Archive.h @@ -249,7 +249,7 @@ namespace AZ::IO IArchive::SignedFileSize GetFileSizeOnDisk(AZStd::string_view filename) override; // creates a directory - bool MakeDir(AZStd::string_view szPath, bool bGamePathMapping = false) override; + bool MakeDir(AZStd::string_view szPath) override; // compresses the raw data into raw data. The buffer for compressed data itself with the heap passed. Uses method 8 (deflate) // returns one of the Z_* errors (Z_OK upon success) diff --git a/Code/Framework/AzFramework/AzFramework/Archive/IArchive.h b/Code/Framework/AzFramework/AzFramework/Archive/IArchive.h index 14a810e2cf..5ac417564a 100644 --- a/Code/Framework/AzFramework/AzFramework/Archive/IArchive.h +++ b/Code/Framework/AzFramework/AzFramework/Archive/IArchive.h @@ -335,7 +335,7 @@ namespace AZ::IO virtual IArchive::SignedFileSize GetFileSizeOnDisk(AZStd::string_view filename) = 0; // creates a directory - virtual bool MakeDir(AZStd::string_view szPath, bool bGamePathMapping = false) = 0; + virtual bool MakeDir(AZStd::string_view szPath) = 0; // open the physical archive file - creates if it doesn't exist // returns NULL if it's invalid or can't open the file diff --git a/Code/Framework/AzFramework/AzFramework/IO/LocalFileIO.cpp b/Code/Framework/AzFramework/AzFramework/IO/LocalFileIO.cpp index 55e4f06db0..50190ac7d5 100644 --- a/Code/Framework/AzFramework/AzFramework/IO/LocalFileIO.cpp +++ b/Code/Framework/AzFramework/AzFramework/IO/LocalFileIO.cpp @@ -287,11 +287,8 @@ namespace AZ const char* assetAliasPath = GetAlias("@assets@"); if (path && assetAliasPath) { - AZStd::string assetsAlias(assetAliasPath); - AZStd::string pathString = path; - AZStd::to_lower(assetsAlias.begin(), assetsAlias.end()); - AZStd::to_lower(pathString.begin(), pathString.end()); - if (AZ::IO::PathView(pathString.c_str()).IsRelativeTo(assetsAlias.c_str())) + const AZ::IO::PathView pathView(path); + if (pathView.IsRelativeTo(assetAliasPath)) { AZ_Error("FileIO", false, "You may not alter data inside the asset cache. Please check the call stack and consider writing into the source asset folder instead.\n" "Attempted write location: %s", path); @@ -587,26 +584,11 @@ namespace AZ // strings that are shorter than the alias's mapped path without checking. if ((longestMatch == 0) || (resolvedAlias.size() > longestMatch) && (resolvedAlias.size() <= bufStringLength)) { - // custom strcmp that ignores slash directions - constexpr AZStd::string_view pathSeparators{ "/\\" }; - bool allMatch = AZStd::equal(resolvedAlias.begin(), resolvedAlias.end(), inBuffer.begin(), - [&pathSeparators](const char lhs, const char rhs) + // Check if the input path is relative to the alias value + if (AZ::IO::PathView(inBuffer).IsRelativeTo(AZ::IO::PathView(resolvedAlias))) { - const bool lhsIsSeparator = pathSeparators.find_first_of(lhs) != AZStd::string_view::npos; - const bool rhsIsSeparator = pathSeparators.find_first_of(lhs) != AZStd::string_view::npos; - return (lhsIsSeparator && rhsIsSeparator) || tolower(lhs) == tolower(rhs); - }); - - if (allMatch) - { - // Either the resolvedAlias path must match the path exactly or the path must have a path separator character - // right after the resolved alias - if (const size_t matchLen = resolvedAlias.size(); - matchLen == bufStringLength || (pathSeparators.find_first_of(inBuffer[matchLen]) != AZStd::string_view::npos)) - { - longestMatch = matchLen; - longestAlias = alias; - } + longestMatch = resolvedAlias.size(); + longestAlias = alias; } } } @@ -712,6 +694,7 @@ namespace AZ const char* assetAliasPath = GetAlias("@assets@"); const char* rootAliasPath = GetAlias("@root@"); const char* projectPlatformCacheAliasPath = GetAlias("@projectplatformcache@"); + const bool lowercasePath = (assetAliasPath != nullptr && AZ::StringFunc::StartsWith(resolvedPath, assetAliasPath)) || (rootAliasPath != nullptr && AZ::StringFunc::StartsWith(resolvedPath, rootAliasPath)) || (projectPlatformCacheAliasPath != nullptr && AZ::StringFunc::StartsWith(resolvedPath, projectPlatformCacheAliasPath)); diff --git a/Code/Framework/AzFramework/Tests/ArchiveTests.cpp b/Code/Framework/AzFramework/Tests/ArchiveTests.cpp index 6a359e714c..f3764a5e96 100644 --- a/Code/Framework/AzFramework/Tests/ArchiveTests.cpp +++ b/Code/Framework/AzFramework/Tests/ArchiveTests.cpp @@ -608,6 +608,9 @@ namespace UnitTest archive->ClosePack(genericArchiveFileName); cpfio.Remove(genericArchiveFileName); + // create the asset alias directory + cpfio.CreatePath("@assets@"); + // create generic file HandleType normalFileHandle; @@ -848,13 +851,17 @@ namespace UnitTest const char *assetsPath = ioBase->GetAlias("@assets@"); ASSERT_NE(nullptr, assetsPath); - AZStd::string stringToAdd = AZStd::string::format("%s/textures/test.dds", assetsPath); + auto stringToAdd = AZ::IO::Path(assetsPath) / "textures" / "test.dds"; reslist->Clear(); - reslist->Add(stringToAdd.c_str()); + reslist->Add(stringToAdd.Native()); // it normalizes the string, so the slashes flip and everything is lowercased. - EXPECT_STREQ(reslist->GetFirst(), "@assets@/textures/test.dds"); + AZ::IO::FixedMaxPath resolvedAddedPath; + AZ::IO::FixedMaxPath resolvedResourcePath; + EXPECT_TRUE(ioBase->ReplaceAlias(resolvedAddedPath, "@assets@/textures/test.dds")); + EXPECT_TRUE(ioBase->ReplaceAlias(resolvedResourcePath, reslist->GetFirst())); + EXPECT_EQ(resolvedAddedPath, resolvedResourcePath); reslist->Clear(); } diff --git a/Code/Legacy/CryCommon/Mocks/ICryPakMock.h b/Code/Legacy/CryCommon/Mocks/ICryPakMock.h index 94ffbf6f6d..ab3b3875af 100644 --- a/Code/Legacy/CryCommon/Mocks/ICryPakMock.h +++ b/Code/Legacy/CryCommon/Mocks/ICryPakMock.h @@ -70,7 +70,7 @@ struct CryPakMock MOCK_METHOD2(IsFileExist, bool(AZStd::string_view sFilename, EFileSearchLocation)); MOCK_METHOD1(IsFolder, bool(AZStd::string_view sPath)); MOCK_METHOD1(GetFileSizeOnDisk, AZ::IO::IArchive::SignedFileSize(AZStd::string_view filename)); - MOCK_METHOD2(MakeDir, bool(AZStd::string_view szPath, bool bGamePathMapping)); + MOCK_METHOD1(MakeDir, bool(AZStd::string_view szPath)); MOCK_METHOD4(OpenArchive, AZStd::intrusive_ptr (AZStd::string_view szPath, AZStd::string_view bindRoot, uint32_t nFlags, AZStd::intrusive_ptr pData)); MOCK_METHOD1(GetFileArchivePath, const char* (AZ::IO::HandleType f)); MOCK_METHOD5(RawCompress, int(const void* pUncompressed, size_t* pDestSize, void* pCompressed, size_t nSrcSize, int nLevel)); diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/CommonFiles/Preprocessor.cpp b/Gems/Atom/Asset/Shader/Code/Source/Editor/CommonFiles/Preprocessor.cpp index fe1fd99f4e..1a97032864 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/CommonFiles/Preprocessor.cpp +++ b/Gems/Atom/Asset/Shader/Code/Source/Editor/CommonFiles/Preprocessor.cpp @@ -14,11 +14,11 @@ #include #include #include +#include #include #include #include -#include #include #include @@ -56,7 +56,7 @@ namespace AZ m_predefinedMacros.begin(), m_predefinedMacros.end(), [&](const AZStd::string& predefinedMacro) { // Haystack, needle, bCaseSensitive - if (!AzFramework::StringFunc::StartsWith(predefinedMacro, macroName, true)) + if (!AZ::StringFunc::StartsWith(predefinedMacro, macroName, true)) { return false; } @@ -117,11 +117,11 @@ namespace AZ char localBuffer[DefaultFprintfBufferSize]; va_list args; - + va_start(args, format); int count = azvsnprintf(localBuffer, DefaultFprintfBufferSize, format, args); va_end(args); - + char* result = localBuffer; // @result will be bound to @biggerData in case @localBuffer is not big enough. @@ -134,7 +134,7 @@ namespace AZ count++; // vsnprintf returns a size that doesn't include the null character. biggerData.reset(new char[count]); result = &biggerData[0]; - + // Remark: for MacOS & Linux it is important to call va_start again before // each call to azvsnprintf. Not required for Windows. va_start(args, format); @@ -149,7 +149,7 @@ namespace AZ // https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/vsnprintf-vsnprintf-vsnprintf-l-vsnwprintf-vsnwprintf-l?view=msvc-160 // In particular: "If the number of characters to write is greater than count, // these functions return -1 indicating that output has been truncated." - + // There wasn't enough space in the local store. // Remark: for MacOS & Linux it is important to call va_start again before // each call to azvsnprintf. Not required for Windows. @@ -157,10 +157,10 @@ namespace AZ count = azvscprintf(format, args); count += 1; // vscprintf returns a size that doesn't include the null character. va_end(args); - + biggerData.reset(new char[count]); result = &biggerData[0]; - + va_start(args, format); count = azvsnprintf(result, count, format, args); va_end(args); @@ -191,7 +191,7 @@ namespace AZ // definitions for the linker AZStd::mutex McppBinder::s_mcppExclusiveProtection; - McppBinder* McppBinder::s_currentInstance = nullptr; + McppBinder* McppBinder::s_currentInstance = nullptr; // McppBinder ends /////////////////////////////////////////////////////////////////////// @@ -204,7 +204,7 @@ namespace AZ // create the argc/argv const char* processName = "builder"; - const char* inputPath = fullPath.c_str(); + const char* inputPath = fullPath.c_str(); // let's create the equivalent of that expression but in dynamic form: //const char* argv[] = { processName, szInPath, "-C", "-+", "-D macro1"..., "-I path"..., NULL }; AZStd::vector< const char* > argv; @@ -230,7 +230,7 @@ namespace AZ argv.push_back(nullptr); // usual argv terminator // output the command line: AZStd::string stringifiedCommandLine; - AzFramework::StringFunc::Join(stringifiedCommandLine, argv.begin(), argv.end() - 1, " "); + AZ::StringFunc::Join(stringifiedCommandLine, argv.begin(), argv.end() - 1, " "); AZ_TracePrintf("Preprocessor", "%s", stringifiedCommandLine.c_str()); // when we don't specify an -o outfile, mcpp uses stdout. // the trick is that since we hijacked putc & puts, stdout will not be written. @@ -238,17 +238,12 @@ namespace AZ return result; } - static void VerifySameFolder(const AZStd::string& path1, const AZStd::string& path2) + static void VerifySameFolder([[maybe_unused]] AZStd::string_view path1, [[maybe_unused]] AZStd::string_view path2) { - AZStd::string folder1, folder2; - AzFramework::StringFunc::Path::GetFolderPath(path1.c_str(), folder1); - AzFramework::StringFunc::Path::GetFolderPath(path2.c_str(), folder2); - AzFramework::StringFunc::Path::Normalize(folder1); - AzFramework::StringFunc::Path::Normalize(folder2); AZ_Warning("Preprocessing", - folder1 == folder2, - "The preprocessed file %s is in a different folder than its origin %s. Watch for #include problems with relative paths.", - path1.c_str(), path2.c_str() + AZ::IO::PathView(path1).ParentPath().LexicallyNormal() == AZ::IO::PathView(path2).ParentPath().LexicallyNormal(), + "The preprocessed file %.*s is in a different folder than its origin %.*s. Watch for #include problems with relative paths.", + AZ_STRING_ARG(path1), AZ_STRING_ARG(path2) ); } @@ -260,7 +255,7 @@ namespace AZ // containing file names, to match the ORIGINAL source, and not the actual source in use by azslc. // That gymnastic is better for error messages anyway, so instead of making the SRG layout builder more intelligent, // we'll fake the origin of the file, by setting the original source as a filename - // note that it is not possible to build a file in a different folder and fake it to a file eslewhere because relative includes will fail. + // note that it is not possible to build a file in a different folder and fake it to a file elsewhere because relative includes will fail. void MutateLineDirectivesFileOrigin( AZStd::string& sourceCode, AZStd::string newFileOrigin) @@ -272,11 +267,11 @@ namespace AZ // we will use that as the information of the source path to mutate. if (sourceCode.starts_with("#line")) { - auto firstQuote = sourceCode.find('"'); - auto secondQuote = sourceCode.find('"', firstQuote + 1); + auto firstQuote = sourceCode.find('"'); + auto secondQuote = firstQuote != AZStd::string::npos ? sourceCode.find('"', firstQuote + 1) : AZStd::string::npos; auto originalFile = sourceCode.substr(firstQuote + 1, secondQuote - firstQuote - 1); // start +1, count -1 because we don't want the quotes included. VerifySameFolder(originalFile, newFileOrigin); - [[maybe_unused]] bool didReplace = AzFramework::StringFunc::Replace(sourceCode, originalFile.c_str(), newFileOrigin.c_str(), true /*case sensitive*/); + [[maybe_unused]] bool didReplace = AZ::StringFunc::Replace(sourceCode, originalFile.c_str(), newFileOrigin.c_str(), true /*case sensitive*/); AZ_Assert(didReplace, "Failed to replace %s for %s in preprocessed source.", originalFile.c_str(), newFileOrigin.c_str()); } else @@ -285,26 +280,6 @@ namespace AZ } } - namespace - { - template< typename Container1, typename Container2 > - void TransferContent(Container1& destination, Container2&& source) - { - destination.insert(AZStd::end(destination), - AZStd::make_move_iterator(AZStd::begin(source)), - AZStd::make_move_iterator(AZStd::end(source))); - } - - void DeleteFromSet(const AZStd::string& string, AZStd::set& set) - { - auto iter = set.find(string); - if (iter != set.end()) - { - set.erase(iter); - } - } - } - // populate options with scan folders and contents of parsing shader_global_build_options.json void InitializePreprocessorOptions( PreprocessorOptions& options, [[maybe_unused]] const char* builderName, const char* optionalIncludeFolder) @@ -315,44 +290,61 @@ namespace AZ bool success = true; AZStd::vector scanFoldersVector; AzToolsFramework::AssetSystemRequestBus::BroadcastResult(success, - &AzToolsFramework::AssetSystemRequestBus::Events::GetScanFolders, - scanFoldersVector); + &AzToolsFramework::AssetSystemRequestBus::Events::GetScanFolders, + scanFoldersVector); AZ_Warning(builderName, success, "Preprocessor option: Could not acquire a list of scan folders from the database."); - // we transfer to a set, to order the folders, uniquify them, and ensure deterministic build behavior - AZStd::set scanFoldersSet; // Add the project path to list of include paths - AZ::IO::FixedMaxPathString projectPath = AZ::Utils::GetProjectPath(); - scanFoldersSet.emplace(projectPath.c_str(), projectPath.size()); + AZ::IO::FixedMaxPath projectPath = AZ::Utils::GetProjectPath(); + auto FindPath = [](AZ::IO::PathView searchPath) + { + return [searchPath](AZStd::string_view includePathView) + { + return searchPath == AZ::IO::PathView(includePathView); + }; + }; + if (auto it = AZStd::find_if(options.m_projectIncludePaths.begin(), options.m_projectIncludePaths.end(), FindPath(projectPath)); + it == options.m_projectIncludePaths.end()) + { + options.m_projectIncludePaths.emplace_back(projectPath.c_str(), projectPath.Native().size()); + } if (optionalIncludeFolder) { - scanFoldersSet.emplace(optionalIncludeFolder, strnlen(optionalIncludeFolder, AZ::IO::MaxPathLength)); + if (auto it = AZStd::find_if(options.m_projectIncludePaths.begin(), options.m_projectIncludePaths.end(), FindPath(optionalIncludeFolder)); + it == options.m_projectIncludePaths.end()) + { + if (AZ::IO::SystemFile::Exists(optionalIncludeFolder)) + { + options.m_projectIncludePaths.emplace_back(AZStd::move(AZ::IO::Path(optionalIncludeFolder).LexicallyNormal().Native())); + } + } } // but while we transfer to the set, we're going to keep only folders where +/ShaderLib exists - for (AZStd::string folder : scanFoldersVector) + for (AZ::IO::Path shaderScanFolder : scanFoldersVector) { - AzFramework::StringFunc::Path::Join(folder.c_str(), "ShaderLib", folder); - if (AZ::IO::SystemFile::Exists(folder.c_str())) + shaderScanFolder /= "ShaderLib"; + if (auto it = AZStd::find_if(options.m_projectIncludePaths.begin(), options.m_projectIncludePaths.end(), FindPath(shaderScanFolder)); + it == options.m_projectIncludePaths.end()) { - scanFoldersSet.emplace(std::move(folder)); + // the folders constructed this fashion constitute the base of automatic include search paths + if (AZ::IO::SystemFile::Exists(shaderScanFolder.c_str())) + { + options.m_projectIncludePaths.emplace_back(AZStd::move(shaderScanFolder.LexicallyNormal().Native())); + } } - } // the folders constructed this fashion constitute the base of automatic include search paths - - // get the engine root: - AZ::IO::FixedMaxPath engineRoot = AZ::Utils::GetEnginePath(); - - // add optional additional options - for (AZStd::string& path : options.m_projectIncludePaths) - { - path = (engineRoot / path).String(); - DeleteFromSet(path, scanFoldersSet); // no need to add a path two times. } - // back-insert the default paths (after the config-read paths we just read) - TransferContent(/*to:*/options.m_projectIncludePaths, /*from:*/scanFoldersSet); + // finally the /Gems fallback - AZStd::string gemsFolder; - AzFramework::StringFunc::Path::Join(engineRoot.c_str(), "Gems", gemsFolder); - options.m_projectIncludePaths.push_back(gemsFolder); + AZ::IO::Path engineGemsFolder(AZStd::string_view{ AZ::Utils::GetEnginePath() }); + engineGemsFolder /= "Gems"; + if (auto it = AZStd::find_if(options.m_projectIncludePaths.begin(), options.m_projectIncludePaths.end(), FindPath(engineGemsFolder)); + it == options.m_projectIncludePaths.end()) + { + if (AZ::IO::SystemFile::Exists(engineGemsFolder.c_str())) + { + options.m_projectIncludePaths.emplace_back(AZStd::move(engineGemsFolder.Native())); + } + } } } // namespace ShaderBuilder From d366620818760060093e1108904bdcb22a8f5308 Mon Sep 17 00:00:00 2001 From: bosnichd Date: Fri, 10 Sep 2021 09:08:07 -0600 Subject: [PATCH 10/20] More PAL related changes required for restricted platforms. (#4037) Signed-off-by: bosnichd --- .../WinAPI/AzCore/std/parallel/internal/thread_WinAPI.cpp | 6 ++---- .../Windows/AzCore/std/parallel/internal/thread_Windows.cpp | 3 ++- .../Code/Source/Platform/Windows/RHI/Device_Windows.cpp | 5 +++++ Gems/Atom/RHI/DX12/Code/Source/RHI/Device.cpp | 5 ----- Gems/Atom/RHI/DX12/Code/Source/RHI/PipelineLibrary.cpp | 4 ++++ 5 files changed, 13 insertions(+), 10 deletions(-) diff --git a/Code/Framework/AzCore/Platform/Common/WinAPI/AzCore/std/parallel/internal/thread_WinAPI.cpp b/Code/Framework/AzCore/Platform/Common/WinAPI/AzCore/std/parallel/internal/thread_WinAPI.cpp index dfe265aaa5..c84b4ecd98 100644 --- a/Code/Framework/AzCore/Platform/Common/WinAPI/AzCore/std/parallel/internal/thread_WinAPI.cpp +++ b/Code/Framework/AzCore/Platform/Common/WinAPI/AzCore/std/parallel/internal/thread_WinAPI.cpp @@ -15,7 +15,7 @@ namespace AZStd { namespace Platform { - void PostThreadRun(); + unsigned __stdcall PostThreadRun(); HANDLE CreateThread(unsigned stackSize, unsigned (__stdcall* threadRunFunction)(void*), AZStd::Internal::thread_info* ti, unsigned int* id); unsigned HardwareConcurrency(); void SetThreadName(HANDLE hThread, const char* threadName); @@ -40,9 +40,7 @@ namespace AZStd ThreadEventBus::Broadcast(&ThreadEventBus::Events::OnThreadExit, this_thread::get_id()); // goes to client listeners ThreadDrillerEventBus::Broadcast(&ThreadDrillerEventBus::Events::OnThreadExit, this_thread::get_id()); // goes to the profiler. - Platform::PostThreadRun(); - - return 0; + return Platform::PostThreadRun(); } /** diff --git a/Code/Framework/AzCore/Platform/Windows/AzCore/std/parallel/internal/thread_Windows.cpp b/Code/Framework/AzCore/Platform/Windows/AzCore/std/parallel/internal/thread_Windows.cpp index 246181334a..fd6e81e536 100644 --- a/Code/Framework/AzCore/Platform/Windows/AzCore/std/parallel/internal/thread_Windows.cpp +++ b/Code/Framework/AzCore/Platform/Windows/AzCore/std/parallel/internal/thread_Windows.cpp @@ -16,9 +16,10 @@ namespace AZStd { namespace Platform { - void PostThreadRun() + unsigned __stdcall PostThreadRun() { _endthreadex(0); + return 0; } HANDLE CreateThread(unsigned stackSize, unsigned (__stdcall* threadRunFunction)(void*), AZStd::Internal::thread_info* ti, unsigned int* id) diff --git a/Gems/Atom/RHI/DX12/Code/Source/Platform/Windows/RHI/Device_Windows.cpp b/Gems/Atom/RHI/DX12/Code/Source/Platform/Windows/RHI/Device_Windows.cpp index 51272f3488..cb2b8d4ef8 100644 --- a/Gems/Atom/RHI/DX12/Code/Source/Platform/Windows/RHI/Device_Windows.cpp +++ b/Gems/Atom/RHI/DX12/Code/Source/Platform/Windows/RHI/Device_Windows.cpp @@ -325,5 +325,10 @@ namespace AZ return formatsList; } + + void Device::BeginFrameInternal() + { + m_commandQueueContext.Begin(); + } } } diff --git a/Gems/Atom/RHI/DX12/Code/Source/RHI/Device.cpp b/Gems/Atom/RHI/DX12/Code/Source/RHI/Device.cpp index 371aa20a84..82e4aba57c 100644 --- a/Gems/Atom/RHI/DX12/Code/Source/RHI/Device.cpp +++ b/Gems/Atom/RHI/DX12/Code/Source/RHI/Device.cpp @@ -189,11 +189,6 @@ namespace AZ m_commandQueueContext.UpdateCpuTimingStatistics(cpuTimingStatistics); } - void Device::BeginFrameInternal() - { - m_commandQueueContext.Begin(); - } - void Device::EndFrameInternal() { AZ_TRACE_METHOD(); diff --git a/Gems/Atom/RHI/DX12/Code/Source/RHI/PipelineLibrary.cpp b/Gems/Atom/RHI/DX12/Code/Source/RHI/PipelineLibrary.cpp index 182edb1298..66b3f9623a 100644 --- a/Gems/Atom/RHI/DX12/Code/Source/RHI/PipelineLibrary.cpp +++ b/Gems/Atom/RHI/DX12/Code/Source/RHI/PipelineLibrary.cpp @@ -262,7 +262,11 @@ namespace AZ bool PipelineLibrary::IsMergeRequired() const { +#if defined (AZ_DX12_USE_PIPELINE_LIBRARY) return !m_pipelineStates.empty(); +#else + return false; +#endif } } } From 81749ac31870eee58ecd860d4d2556b4014a6625 Mon Sep 17 00:00:00 2001 From: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> Date: Fri, 10 Sep 2021 08:41:19 -0700 Subject: [PATCH 11/20] Improves numeric_cast compilation (#3995) * Improves numeric_cast compilation: before: 872s after: 824s (5.5% reduction) Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> --- .../AzCore/AzCore/Casting/numeric_cast.h | 102 ++++-------------- .../AzCore/Casting/numeric_cast_internal.h | 81 ++++++++++++++ .../Serialization/Json/CastingHelpers.h | 8 +- .../AzCore/AzCore/azcore_files.cmake | 1 + .../Components/FancyDocking.cpp | 1 + .../Components/Widgets/GradientSlider.cpp | 2 +- 6 files changed, 106 insertions(+), 89 deletions(-) create mode 100644 Code/Framework/AzCore/AzCore/Casting/numeric_cast_internal.h diff --git a/Code/Framework/AzCore/AzCore/Casting/numeric_cast.h b/Code/Framework/AzCore/AzCore/Casting/numeric_cast.h index 4cfe3a3d8d..c31a2e2f32 100644 --- a/Code/Framework/AzCore/AzCore/Casting/numeric_cast.h +++ b/Code/Framework/AzCore/AzCore/Casting/numeric_cast.h @@ -8,14 +8,25 @@ #pragma once +// This is disabled by default because it puts in costly runtime checking of casted values. +// You can either change it here to enable it across the engine, or use push/pop_macro to enable per file/feature. +// Note that if using push/pop_macro, you may get some of the functions not inline and the definition coming from +// another compilation unit, in such case, you will have to push/pop_macro on that compilation unit as well. +// #define AZ_NUMERICCAST_ENABLED 1 + +#if !AZ_NUMERICCAST_ENABLED + +#define aznumeric_cast static_cast + +#else + +#include #include #include #include #include #include -#include #include -#include #include #include #include @@ -28,7 +39,7 @@ // enabled. // // Because we can't do partial function specialization, I'm using enable_if to chop up the implementation into one of these -// implementations. If none of these fit, then we will get a compile error because it is an unknown conversionr. +// implementations. If none of these fit, then we will get a compile error because it is an unknown conversion. // //-------------------------------------------- // TYPE <- TYPE DigitLoss @@ -51,85 +62,7 @@ // (K) Floating Floating Y */ -// This is disabled by default because it puts in costly runtime checking of casted values. -// You can either change it here to enable it across the engine, or use push/pop_macro to enable per file/feature. -// Note that if using push/pop_macro, you may get some of the functions not inline and the definition coming from -// another compilation unit, in such case, you will have to push/pop_macro on that compilation unit as well. -// #define AZ_NUMERICCAST_ENABLED 1 - -#if AZ_NUMERICCAST_ENABLED #define AZ_NUMERIC_ASSERT(expr, ...) AZ_Assert(expr, __VA_ARGS__) -#else -#define AZ_NUMERIC_ASSERT(expr, ...) void(0) -#endif - -#pragma push_macro("max") -#undef max - -namespace NumericCastInternal -{ - template - inline constexpr typename AZStd::enable_if< - !AZStd::is_integral::value || !AZStd::is_floating_point::value - , bool> ::type UnderflowsToType(const FromType& value) - { - return (value < static_cast(std::numeric_limits::lowest())); - } - - template - inline constexpr typename AZStd::enable_if< - AZStd::is_integral::value && AZStd::is_floating_point::value - , bool> ::type UnderflowsToType(const FromType& value) - { - return (static_cast(value) < std::numeric_limits::lowest()); - } - - template - inline constexpr typename AZStd::enable_if< - !AZStd::is_integral::value || !AZStd::is_floating_point::value - , bool> ::type OverflowsToType(const FromType& value) - { - return (value > static_cast(std::numeric_limits::max())); - } - - template - inline constexpr typename AZStd::enable_if< - AZStd::is_integral::value && AZStd::is_floating_point::value - , bool> ::type OverflowsToType(const FromType& value) - { - return (static_cast(value) > std::numeric_limits::max()); - } - - template - inline constexpr typename AZStd::enable_if< - AZStd::is_integral::value && AZStd::is_integral::value - && std::numeric_limits::digits <= std::numeric_limits::digits - && AZStd::is_signed::value && AZStd::is_unsigned::value - , bool> ::type FitsInToType(const FromType& value) - { - return !NumericCastInternal::UnderflowsToType(value); - } - - template - inline constexpr typename AZStd::enable_if< - AZStd::is_integral::value && AZStd::is_integral::value - && (std::numeric_limits::digits > std::numeric_limits::digits) - && AZStd::is_unsigned::value - , bool> ::type FitsInToType(const FromType& value) - { - return !NumericCastInternal::OverflowsToType(value); - } - - template - inline constexpr typename AZStd::enable_if< - (!AZStd::is_integral::value || !AZStd::is_integral::value) - || ((std::numeric_limits::digits <= std::numeric_limits::digits) && (AZStd::is_unsigned::value || AZStd::is_signed::value)) - || ((std::numeric_limits::digits > std::numeric_limits::digits) && AZStd::is_signed::value) - , bool> ::type FitsInToType(const FromType& value) - { - return !NumericCastInternal::OverflowsToType(value) && !NumericCastInternal::UnderflowsToType(value); - } -} // namespace AZ // INTEGER -> INTEGER // (A) Not losing digits or risking sign loss @@ -276,8 +209,10 @@ inline constexpr auto aznumeric_cast(FromType&& value) -> return static_cast(value); } +#endif + // This is a helper class that lets us induce the destination type of a numeric cast -// It should never be directly used by anything other than azlossy_caster. +// It should never be directly used by anything other than aznumeric_caster. namespace AZ { template @@ -295,7 +230,7 @@ namespace AZ FromType m_value; }; -} +} // namespace AZ // This is the primary function we should use when doing numeric casting, since it induces the // type we need to cast to from the code rather than requiring an explicit coupling in the source. @@ -305,4 +240,3 @@ inline constexpr AZ::NumericCasted aznumeric_caster(FromType value) return AZ::NumericCasted(value); } -#pragma pop_macro("max") diff --git a/Code/Framework/AzCore/AzCore/Casting/numeric_cast_internal.h b/Code/Framework/AzCore/AzCore/Casting/numeric_cast_internal.h new file mode 100644 index 0000000000..ee2f91e95a --- /dev/null +++ b/Code/Framework/AzCore/AzCore/Casting/numeric_cast_internal.h @@ -0,0 +1,81 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project. + * For complete copyright and license terms please see the LICENSE at the root of this distribution. + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#pragma once + +#include +#include +#include +#include +#include +#include + +namespace NumericCastInternal +{ + template + inline constexpr typename AZStd::enable_if::value || !AZStd::is_floating_point::value, bool>::type + UnderflowsToType(const FromType& value) + { + return (value < static_cast(std::numeric_limits::lowest())); + } + + template + inline constexpr typename AZStd::enable_if::value && AZStd::is_floating_point::value, bool>::type + UnderflowsToType(const FromType& value) + { + return (static_cast(value) < std::numeric_limits::lowest()); + } + + template + inline constexpr typename AZStd::enable_if::value || !AZStd::is_floating_point::value, bool>::type + OverflowsToType(const FromType& value) + { + return (value > static_cast(std::numeric_limits::max())); + } + + template + inline constexpr typename AZStd::enable_if::value && AZStd::is_floating_point::value, bool>::type + OverflowsToType(const FromType& value) + { + return (static_cast(value) > std::numeric_limits::max()); + } + + template + inline constexpr typename AZStd::enable_if< + AZStd::is_integral::value && AZStd::is_integral::value && + std::numeric_limits::digits <= std::numeric_limits::digits && AZStd::is_signed::value && + AZStd::is_unsigned::value, + bool>::type + FitsInToType(const FromType& value) + { + return !NumericCastInternal::UnderflowsToType(value); + } + + template + inline constexpr typename AZStd::enable_if< + AZStd::is_integral::value && AZStd::is_integral::value && + (std::numeric_limits::digits > std::numeric_limits::digits) && AZStd::is_unsigned::value, + bool>::type + FitsInToType(const FromType& value) + { + return !NumericCastInternal::OverflowsToType(value); + } + + template + inline constexpr typename AZStd::enable_if< + (!AZStd::is_integral::value || !AZStd::is_integral::value) || + ((std::numeric_limits::digits <= std::numeric_limits::digits) && + (AZStd::is_unsigned::value || AZStd::is_signed::value)) || + ((std::numeric_limits::digits > std::numeric_limits::digits) && AZStd::is_signed::value), + bool>::type + FitsInToType(const FromType& value) + { + return !NumericCastInternal::OverflowsToType(value) && !NumericCastInternal::UnderflowsToType(value); + } + +} diff --git a/Code/Framework/AzCore/AzCore/Serialization/Json/CastingHelpers.h b/Code/Framework/AzCore/AzCore/Serialization/Json/CastingHelpers.h index 36b0426a2d..bcd1a84d03 100644 --- a/Code/Framework/AzCore/AzCore/Serialization/Json/CastingHelpers.h +++ b/Code/Framework/AzCore/AzCore/Serialization/Json/CastingHelpers.h @@ -8,14 +8,14 @@ #pragma once -#include +#include #include #include #include namespace AZ { - //! A helper function to casts between numeric types, and consider the data which is being converted comse from user data. + //! A helper function to casts between numeric types, and consider the data which is being converted comes from user data. //! If a conversion from FromType to ToType will not cause overflow or underflow, the result is stored in result, and the function returns Success //! Otherwise, the target is left untouched. template @@ -24,9 +24,9 @@ namespace AZ { using namespace JsonSerializationResult; - if (NumericCastInternal::FitsInToType(value)) + if (NumericCastInternal::template FitsInToType(value)) { - result = aznumeric_cast(value); + result = static_cast(value); return reporting("Successfully cast number.", ResultCode(Tasks::Convert, Outcomes::Success), path); } else diff --git a/Code/Framework/AzCore/AzCore/azcore_files.cmake b/Code/Framework/AzCore/AzCore/azcore_files.cmake index a41107e539..6c498c3335 100644 --- a/Code/Framework/AzCore/AzCore/azcore_files.cmake +++ b/Code/Framework/AzCore/AzCore/azcore_files.cmake @@ -35,6 +35,7 @@ set(FILES Asset/AssetInternal/WeakAsset.h Casting/lossy_cast.h Casting/numeric_cast.h + Casting/numeric_cast_internal.h Component/Component.cpp Component/Component.h Component/ComponentApplication.cpp diff --git a/Code/Framework/AzQtComponents/AzQtComponents/Components/FancyDocking.cpp b/Code/Framework/AzQtComponents/AzQtComponents/Components/FancyDocking.cpp index 4ced4ea635..d73ebbec28 100644 --- a/Code/Framework/AzQtComponents/AzQtComponents/Components/FancyDocking.cpp +++ b/Code/Framework/AzQtComponents/AzQtComponents/Components/FancyDocking.cpp @@ -9,6 +9,7 @@ #include #include +#include #include #include diff --git a/Code/Framework/AzQtComponents/AzQtComponents/Components/Widgets/GradientSlider.cpp b/Code/Framework/AzQtComponents/AzQtComponents/Components/Widgets/GradientSlider.cpp index 1ffff57ade..920ff17eac 100644 --- a/Code/Framework/AzQtComponents/AzQtComponents/Components/Widgets/GradientSlider.cpp +++ b/Code/Framework/AzQtComponents/AzQtComponents/Components/Widgets/GradientSlider.cpp @@ -114,7 +114,7 @@ void GradientSlider::mouseMoveEvent(QMouseEvent* event) { int intValue = Slider::valueFromPosition(this, event->pos(), width(), height(), rect().bottom()); - qreal value = (aznumeric_cast(intValue - minimum()) / aznumeric_cast(maximum() - minimum())); + qreal value = (aznumeric_cast(intValue - minimum()) / aznumeric_cast(maximum() - minimum())); const QString toolTipText = m_toolTipFunction(value); From 280796e1f4c916934c62dbdd0bb65d8717da1e2f Mon Sep 17 00:00:00 2001 From: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com> Date: Fri, 10 Sep 2021 11:59:20 -0500 Subject: [PATCH 12/20] Fix GHI 4041 Terrain Shader Crash (#4050) The terrain feature processor was crashing due to an invalid shader name. The shader name has been fixed, but the feature processor has also been hardened so that it no longer crashes if a shader fails to load. Also, while testing, this inadvertently exposed a second crash in EntitySerializer that occurs when components don't serialize in correctly. Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com> --- .../AzCore/AzCore/Component/EntitySerializer.cpp | 5 +++-- .../TerrainRenderer/TerrainFeatureProcessor.cpp | 14 +++++++++++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/Code/Framework/AzCore/AzCore/Component/EntitySerializer.cpp b/Code/Framework/AzCore/AzCore/Component/EntitySerializer.cpp index 803daf1373..1dd685f763 100644 --- a/Code/Framework/AzCore/AzCore/Component/EntitySerializer.cpp +++ b/Code/Framework/AzCore/AzCore/Component/EntitySerializer.cpp @@ -84,8 +84,9 @@ namespace AZ static TypeId genericComponentWrapperTypeId("{68D358CA-89B9-4730-8BA6-E181DEA28FDE}"); for (auto& [componentKey, component] : componentMap) { - // if underlying type is genericComponentWrapperTypeId, the template is null and the component should not be addded - if (component->GetUnderlyingComponentType() != genericComponentWrapperTypeId) + // if the component didn't serialize (i.e. is null) or the underlying type is genericComponentWrapperTypeId, the + // template is null and the component should not be addded + if (component && (component->GetUnderlyingComponentType() != genericComponentWrapperTypeId)) { entityInstance->m_components.emplace_back(component); } diff --git a/Gems/Terrain/Code/Source/TerrainRenderer/TerrainFeatureProcessor.cpp b/Gems/Terrain/Code/Source/TerrainRenderer/TerrainFeatureProcessor.cpp index f0743cfb52..511b206b84 100644 --- a/Gems/Terrain/Code/Source/TerrainRenderer/TerrainFeatureProcessor.cpp +++ b/Gems/Terrain/Code/Source/TerrainRenderer/TerrainFeatureProcessor.cpp @@ -66,7 +66,13 @@ namespace Terrain } void TerrainFeatureProcessor::ConfigurePipelineState(ShaderState& shaderState, bool assertOnFail) - { + { + if (shaderState.m_shader == nullptr) + { + AZ_Assert(shaderState.m_shader || !assertOnFail, "Terrain shader failed to load correctly."); + return; + } + bool success = GetParentScene()->ConfigurePipelineState(shaderState.m_shader->GetDrawListTag(), shaderState.m_pipelineStateDescriptor); AZ_Assert(success || !assertOnFail, "Couldn't configure the pipeline state."); if (success) @@ -110,7 +116,7 @@ namespace Terrain }; LoadShader("Shaders/Terrain/Terrain.azshader", m_shaderStates[ShaderType::Forward]); - LoadShader("Shaders/Terrain/Terrain_DepthPass_WithPS.azshader", m_shaderStates[ShaderType::Depth]); + LoadShader("Shaders/Terrain/Terrain_DepthPass.azshader", m_shaderStates[ShaderType::Depth]); // Forward and depth shader use same srg layout. AZ::RHI::Ptr perObjectSrgLayout = @@ -248,7 +254,9 @@ namespace Terrain { AZ_PROFILE_FUNCTION(AzRender); - if (m_shaderStates[ShaderType::Forward].m_shader->GetDrawListTag().IsNull() || + if ((m_shaderStates[ShaderType::Forward].m_shader == nullptr) || + (m_shaderStates[ShaderType::Depth].m_shader == nullptr) || + m_shaderStates[ShaderType::Forward].m_shader->GetDrawListTag().IsNull() || m_shaderStates[ShaderType::Depth].m_shader->GetDrawListTag().IsNull()) { return; From d9cbc97ec07909e6ddb6687e0c22da07cc6bbdb6 Mon Sep 17 00:00:00 2001 From: Qing Tao <55564570+VickyAtAZ@users.noreply.github.com> Date: Fri, 10 Sep 2021 10:38:16 -0700 Subject: [PATCH 13/20] ATOM-16063 Remove SetShaderResourceGroupCallback in scene and update scene srg handling (#3969) ATOM-16273 Compiling SceneSRG before updating it can cause a gpu crash Changes include: 1. Removed Scene::SetShaderResourceGroupCallback() function and clean up code which use this function. 2. Moved SceneTimeSrg.azsli to RPI's DefaultSceneSrg folder and setup the constants in RPI::Scene 3. Add AZ::Event for Scene's update srg event which features and update scene srg at proper place 4. UpdateTransformServcie FP to use PrepareSceneSrg event handler. 5. Clean up shaders and srgs used in project templates. Signed-off-by: Qing Tao --- AutomatedTesting/Shaders/CommonVS.azsli | 51 ------------------ .../Code/Source/BootstrapSystemComponent.cpp | 33 +----------- .../Code/Source/BootstrapSystemComponent.h | 3 -- .../ShaderResourceGroups/SceneSrgAll.azsli | 2 +- .../Shaders/PostProcessing/EyeAdaptation.azsl | 4 +- .../PostProcessing/EyeAdaptationUtil.azsli | 3 +- .../atom_feature_common_asset_files.cmake | 1 - .../TransformServiceFeatureProcessor.h | 15 +++--- .../ExposureControlRenderProxy.cpp | 12 ++--- .../Source/PostProcessing/EyeAdaptationPass.h | 1 + .../TransformServiceFeatureProcessor.cpp | 25 ++++----- .../DefaultSceneSrg.azsli} | 1 - .../RPI/Code/Include/Atom/RPI.Public/Scene.h | 23 +++++--- .../Code/Include/Atom/RPI.Public/SceneBus.h | 1 - .../RPI.Public/Pass/AttachmentReadback.cpp | 6 +-- .../RPI/Code/Source/RPI.Public/RPISystem.cpp | 2 +- .../Atom/RPI/Code/Source/RPI.Public/Scene.cpp | 47 ++++++++++------- .../Viewport/MaterialViewportRenderer.cpp | 20 +------ .../Viewport/MaterialViewportRenderer.h | 2 - .../Rendering/ThumbnailRendererData.h | 2 - .../ThumbnailRendererSteps/CaptureStep.cpp | 5 +- .../ThumbnailRendererSteps/InitializeStep.cpp | 28 ---------- .../Template/ShaderLib/scenesrg.srgi | 3 +- .../Template/Shaders/CommonVS.azsli | 52 ------------------- .../ShaderResourceGroups/SceneSrg.azsli | 20 ------- Templates/DefaultProject/template.json | 12 ----- .../Template/ShaderLib/scenesrg.srgi | 3 +- .../Template/Shaders/CommonVS.azsli | 52 ------------------- .../ShaderResourceGroups/SceneSrg.azsli | 20 ------- Templates/MinimalProject/template.json | 12 ----- 30 files changed, 80 insertions(+), 381 deletions(-) delete mode 100644 AutomatedTesting/Shaders/CommonVS.azsli rename Gems/Atom/{Feature/Common/Assets/ShaderResourceGroups/SceneTimeSrg.azsli => RPI/Assets/ShaderLib/Atom/RPI/ShaderResourceGroups/DefaultSceneSrg.azsli} (94%) delete mode 100644 Templates/DefaultProject/Template/Shaders/CommonVS.azsli delete mode 100644 Templates/DefaultProject/Template/Shaders/ShaderResourceGroups/SceneSrg.azsli delete mode 100644 Templates/MinimalProject/Template/Shaders/CommonVS.azsli delete mode 100644 Templates/MinimalProject/Template/Shaders/ShaderResourceGroups/SceneSrg.azsli diff --git a/AutomatedTesting/Shaders/CommonVS.azsli b/AutomatedTesting/Shaders/CommonVS.azsli deleted file mode 100644 index 3d46871b59..0000000000 --- a/AutomatedTesting/Shaders/CommonVS.azsli +++ /dev/null @@ -1,51 +0,0 @@ - -/* - * Copyright (c) Contributors to the Open 3D Engine Project. - * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - -#pragma once - -#include -#include -#include - -struct VertexInput -{ - float3 m_position : POSITION; - float3 m_normal : NORMAL; - float4 m_tangent : TANGENT; - float3 m_bitangent : BITANGENT; - float2 m_uv : UV0; -}; - -struct VertexOutput -{ - float4 m_position : SV_Position; - float3 m_normal : NORMAL; - float3 m_tangent : TANGENT; - float3 m_bitangent : BITANGENT; - float2 m_uv : UV0; - float3 m_view : VIEW; -}; - -VertexOutput CommonVS(VertexInput input) -{ - float4x4 objectToWorld = ObjectSrg::GetWorldMatrix(); - float3x3 objectToWorldIT = ObjectSrg::GetWorldMatrixInverseTranspose(); - - VertexOutput output; - float3 worldPosition = mul(objectToWorld, float4(input.m_position, 1)).xyz; - output.m_position = mul(ViewSrg::m_viewProjectionMatrix, float4(worldPosition, 1.0)); - - output.m_uv = input.m_uv; - - output.m_view = worldPosition - ViewSrg::m_worldPosition; - - ConstructTBN(input.m_normal, input.m_tangent, input.m_bitangent, objectToWorld, objectToWorldIT, output.m_normal, output.m_tangent, output.m_bitangent); - - return output; -} diff --git a/Gems/Atom/Bootstrap/Code/Source/BootstrapSystemComponent.cpp b/Gems/Atom/Bootstrap/Code/Source/BootstrapSystemComponent.cpp index 11758138e0..d837988cfb 100644 --- a/Gems/Atom/Bootstrap/Code/Source/BootstrapSystemComponent.cpp +++ b/Gems/Atom/Bootstrap/Code/Source/BootstrapSystemComponent.cpp @@ -253,34 +253,6 @@ namespace AZ RPI::SceneDescriptor sceneDesc; AZ::RPI::ScenePtr atomScene = RPI::Scene::CreateScene(sceneDesc); atomScene->EnableAllFeatureProcessors(); - - // Setup scene srg modification callback. - RPI::ShaderResourceGroupCallback callback = [this](RPI::ShaderResourceGroup* srg) - { - if (srg == nullptr) - { - return; - } - bool needCompile = false; - RHI::ShaderInputConstantIndex timeIndex = srg->FindShaderInputConstantIndex(Name{ "m_time" }); - if (timeIndex.IsValid()) - { - srg->SetConstant(timeIndex, m_simulateTime); - needCompile = true; - } - RHI::ShaderInputConstantIndex deltaTimeIndex = srg->FindShaderInputConstantIndex(Name{ "m_deltaTime" }); - if (deltaTimeIndex.IsValid()) - { - srg->SetConstant(deltaTimeIndex, m_deltaTime); - needCompile = true; - } - - if (needCompile) - { - srg->Compile(); - } - }; - atomScene->SetShaderResourceGroupCallback(callback); atomScene->Activate(); // Register scene to RPI system so it will be processed/rendered per tick @@ -408,11 +380,8 @@ namespace AZ m_renderPipelineId = ""; } - void BootstrapSystemComponent::OnTick(float deltaTime, [[maybe_unused]] ScriptTimePoint time) + void BootstrapSystemComponent::OnTick([[maybe_unused]] float deltaTime, [[maybe_unused]] ScriptTimePoint time) { - m_simulateTime += deltaTime; - m_deltaTime = deltaTime; - // Temp: When running in the launcher without the legacy renderer // we need to call RenderTick on the viewport context each frame. if (m_viewportContext) diff --git a/Gems/Atom/Bootstrap/Code/Source/BootstrapSystemComponent.h b/Gems/Atom/Bootstrap/Code/Source/BootstrapSystemComponent.h index bd5d417b8f..566d19b1a4 100644 --- a/Gems/Atom/Bootstrap/Code/Source/BootstrapSystemComponent.h +++ b/Gems/Atom/Bootstrap/Code/Source/BootstrapSystemComponent.h @@ -105,9 +105,6 @@ namespace AZ RPI::ScenePtr m_defaultScene = nullptr; AZStd::shared_ptr m_defaultFrameworkScene = nullptr; - float m_simulateTime = 0; - float m_deltaTime = 0.016f; - bool m_isAssetCatalogLoaded = false; // The id of the render pipeline created by this component diff --git a/Gems/Atom/Feature/Common/Assets/ShaderResourceGroups/SceneSrgAll.azsli b/Gems/Atom/Feature/Common/Assets/ShaderResourceGroups/SceneSrgAll.azsli index 96ed740f98..421178bb01 100644 --- a/Gems/Atom/Feature/Common/Assets/ShaderResourceGroups/SceneSrgAll.azsli +++ b/Gems/Atom/Feature/Common/Assets/ShaderResourceGroups/SceneSrgAll.azsli @@ -11,6 +11,6 @@ // Please review README.md to understand how this file is used in SceneSrg.azsrg generation #ifdef AZ_COLLECTING_PARTIAL_SRGS -#include +#include #include #endif diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/EyeAdaptation.azsl b/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/EyeAdaptation.azsl index ce10eb9b91..1844144401 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/EyeAdaptation.azsl +++ b/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/EyeAdaptation.azsl @@ -78,10 +78,12 @@ void MainCS(uint3 dispatch_id : SV_DispatchThreadID) const float speed = exposureDifference > 0.0 ? ViewSrg::m_exposureControl.m_speedUp : ViewSrg::m_exposureControl.m_speedDown; // Update the adjustment for this frame based on the frame deltaTime and speed - float exposureAdjustment = exposureDifference * SceneSrg::m_deltaTime * speed; + float deltaTime = clamp(SceneSrg::m_time - PassSrg::m_eyeAdaptationData[0].m_setValueTime, 0.0f, 1.0f); + float exposureAdjustment = exposureDifference * deltaTime * speed; float newExposureLog2 = previousFrameExposureLog2 + exposureAdjustment; // Store the linear exposure so it can be used by the look modification transform later. // newExposureLog2 is negated because m_exposureValue is used to correct for a given exposure. PassSrg::m_eyeAdaptationData[0].m_exposureValue = pow(2.0f, -newExposureLog2); + PassSrg::m_eyeAdaptationData[0].m_setValueTime = SceneSrg::m_time; } diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/EyeAdaptationUtil.azsli b/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/EyeAdaptationUtil.azsli index 54e96122ac..fb75e1079c 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/EyeAdaptationUtil.azsli +++ b/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/EyeAdaptationUtil.azsli @@ -8,5 +8,6 @@ struct EyeAdaptation { - float m_exposureValue; // current frame's exposure value in stops (logarithmic space) + float m_exposureValue; // current frame's exposure value in stops (logarithmic space) + float m_setValueTime; // the time when the m_exposureValue was set }; diff --git a/Gems/Atom/Feature/Common/Assets/atom_feature_common_asset_files.cmake b/Gems/Atom/Feature/Common/Assets/atom_feature_common_asset_files.cmake index 75181517a4..e43498c55d 100644 --- a/Gems/Atom/Feature/Common/Assets/atom_feature_common_asset_files.cmake +++ b/Gems/Atom/Feature/Common/Assets/atom_feature_common_asset_files.cmake @@ -289,7 +289,6 @@ set(FILES ShaderLib/Atom/Features/Vertex/VertexHelper.azsli ShaderResourceGroups/SceneSrg.azsli ShaderResourceGroups/SceneSrgAll.azsli - ShaderResourceGroups/SceneTimeSrg.azsli ShaderResourceGroups/ViewSrg.azsli ShaderResourceGroups/ViewSrgAll.azsli ShaderResourceGroups/CoreLights/SceneSrg.azsli diff --git a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/TransformService/TransformServiceFeatureProcessor.h b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/TransformService/TransformServiceFeatureProcessor.h index 6482871234..936fc88fa6 100644 --- a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/TransformService/TransformServiceFeatureProcessor.h +++ b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/TransformService/TransformServiceFeatureProcessor.h @@ -12,6 +12,7 @@ #include #include #include +#include #include namespace AZ @@ -36,8 +37,6 @@ namespace AZ void Activate() override; //! Releases GPU resources. void Deactivate() override; - //! Binds buffers - void Render(const FeatureProcessor::RenderPacket& packet) override; // RPI::SceneNotificationBus overrides ... void OnBeginPrepareRender() override; @@ -68,11 +67,13 @@ namespace AZ // Prepare GPU buffers for object transformation matrices // Create the buffers if they don't exist. Otherwise, resize them if they are not large enough for the matrices void PrepareBuffers(); - - Data::Instance m_sceneSrg; - RHI::ShaderInputBufferIndex m_objectToWorldBufferIndex; - RHI::ShaderInputBufferIndex m_objectToWorldInverseTransposeBufferIndex; - RHI::ShaderInputBufferIndex m_objectToWorldHistoryBufferIndex; + + void UpdateSceneSrg(RPI::ShaderResourceGroup *sceneSrg); + + RPI::Scene::PrepareSceneSrgEvent::Handler m_updateSceneSrgHandler; + RHI::ShaderInputNameIndex m_objectToWorldBufferIndex = "m_objectToWorldBuffer"; + RHI::ShaderInputNameIndex m_objectToWorldInverseTransposeBufferIndex = "m_objectToWorldInverseTransposeBuffer"; + RHI::ShaderInputNameIndex m_objectToWorldHistoryBufferIndex = "m_objectToWorldHistoryBuffer"; // Stores transforms that are uploaded to a GPU buffer. Used slots have float12(matrix3x4) values, empty slots // have a uint32_t that points to the next empty slot like a linked list. m_firstAvailableMeshTransformIndex stores the first diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/ExposureControlRenderProxy.cpp b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/ExposureControlRenderProxy.cpp index 1d345a2432..924af4ab98 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/ExposureControlRenderProxy.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/ExposureControlRenderProxy.cpp @@ -36,8 +36,6 @@ namespace AZ m_viewPtr = view; m_viewSrg = view->GetShaderResourceGroup(); - m_exposureControlBufferInputIndex = m_viewSrg->FindShaderInputBufferIndex(Name("m_exposureControl")); - m_eyeAdaptationBuffer.Init(m_viewSrg, idNumber); } @@ -109,14 +107,10 @@ namespace AZ m_eyeAdaptationBuffer.UpdateSrg(); - if (m_exposureControlBufferInputIndex.IsValid()) + m_viewSrg->SetBufferView(m_exposureControlBufferInputIndex, m_buffer->GetBufferView()); + if (m_viewPtr) { - m_viewSrg->SetBufferView(m_exposureControlBufferInputIndex, m_buffer->GetBufferView()); - - if (m_viewPtr) - { - m_viewPtr->InvalidateSrg(); - } + m_viewPtr->InvalidateSrg(); } } diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/EyeAdaptationPass.h b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/EyeAdaptationPass.h index 0d045a0f78..bec3af2934 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/EyeAdaptationPass.h +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/EyeAdaptationPass.h @@ -52,6 +52,7 @@ namespace AZ struct ExposureCalculationData { float m_exposureValue = 1.0f; + float m_setValueTime = 0; }; void BuildInternal() override; diff --git a/Gems/Atom/Feature/Common/Code/Source/TransformService/TransformServiceFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/TransformService/TransformServiceFeatureProcessor.cpp index 7a76e1b7e0..6f9c0dc73a 100644 --- a/Gems/Atom/Feature/Common/Code/Source/TransformService/TransformServiceFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/TransformService/TransformServiceFeatureProcessor.cpp @@ -36,11 +36,8 @@ namespace AZ void TransformServiceFeatureProcessor::Activate() { - m_sceneSrg = GetParentScene()->GetShaderResourceGroup(); - - m_objectToWorldBufferIndex = m_sceneSrg->FindShaderInputBufferIndex(Name{"m_objectToWorldBuffer"}); - m_objectToWorldInverseTransposeBufferIndex = m_sceneSrg->FindShaderInputBufferIndex(Name{"m_objectToWorldInverseTransposeBuffer"}); - m_objectToWorldHistoryBufferIndex = m_sceneSrg->FindShaderInputBufferIndex(Name{"m_objectToWorldHistoryBuffer"}); + m_updateSceneSrgHandler = RPI::Scene::PrepareSceneSrgEvent::Handler([this](RPI::ShaderResourceGroup *sceneSrg) { this->UpdateSceneSrg(sceneSrg); }); + GetParentScene()->ConnectEvent(m_updateSceneSrgHandler); m_deviceBufferNeedsUpdate = true; m_objectToWorldTransforms.reserve(BufferReserveCount); @@ -62,9 +59,14 @@ namespace AZ m_firstAvailableTransformIndex = NoAvailableTransformIndices; + m_objectToWorldBufferIndex.Reset(); + m_objectToWorldInverseTransposeBufferIndex.Reset(); + m_objectToWorldHistoryBufferIndex.Reset(); + m_isWriteable = false; RPI::SceneNotificationBus::Handler::BusDisconnect(); + m_updateSceneSrgHandler.Disconnect(); } void TransformServiceFeatureProcessor::PrepareBuffers() @@ -131,16 +133,11 @@ namespace AZ } } - void TransformServiceFeatureProcessor::Render([[maybe_unused]] const FeatureProcessor::RenderPacket& packet) + void TransformServiceFeatureProcessor::UpdateSceneSrg(RPI::ShaderResourceGroup *sceneSrg) { - AZ_ATOM_PROFILE_FUNCTION("RPI", "TransformServiceFeatureProcessor: Render"); - AZ_UNUSED(packet); - - AZ_Assert(!m_isWriteable, "Must be called between OnBeginPrepareRender() and OnEndPrepareRender()"); - - m_sceneSrg->SetBufferView(m_objectToWorldBufferIndex, m_objectToWorldBuffer->GetBufferView()); - m_sceneSrg->SetBufferView(m_objectToWorldInverseTransposeBufferIndex, m_objectToWorldInverseTransposeBuffer->GetBufferView()); - m_sceneSrg->SetBufferView(m_objectToWorldHistoryBufferIndex, m_objectToWorldHistoryBuffer->GetBufferView()); + sceneSrg->SetBufferView(m_objectToWorldBufferIndex, m_objectToWorldBuffer->GetBufferView()); + sceneSrg->SetBufferView(m_objectToWorldInverseTransposeBufferIndex, m_objectToWorldInverseTransposeBuffer->GetBufferView()); + sceneSrg->SetBufferView(m_objectToWorldHistoryBufferIndex, m_objectToWorldHistoryBuffer->GetBufferView()); } void TransformServiceFeatureProcessor::OnBeginPrepareRender() diff --git a/Gems/Atom/Feature/Common/Assets/ShaderResourceGroups/SceneTimeSrg.azsli b/Gems/Atom/RPI/Assets/ShaderLib/Atom/RPI/ShaderResourceGroups/DefaultSceneSrg.azsli similarity index 94% rename from Gems/Atom/Feature/Common/Assets/ShaderResourceGroups/SceneTimeSrg.azsli rename to Gems/Atom/RPI/Assets/ShaderLib/Atom/RPI/ShaderResourceGroups/DefaultSceneSrg.azsli index c89fc6b4c4..f9428b3125 100644 --- a/Gems/Atom/Feature/Common/Assets/ShaderResourceGroups/SceneTimeSrg.azsli +++ b/Gems/Atom/RPI/Assets/ShaderLib/Atom/RPI/ShaderResourceGroups/DefaultSceneSrg.azsli @@ -13,6 +13,5 @@ partial ShaderResourceGroup SceneSrg { float m_time; - float m_deltaTime; } diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Scene.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Scene.h index fa918ae033..b1c6aac92d 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Scene.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Scene.h @@ -129,10 +129,6 @@ namespace AZ void RemoveRenderPipeline(const RenderPipelineId& pipelineId); - //! Set a callback function to set values for scene's srg. - //! The callback function is usually defined by the one who create the scene since it knows how the layout look like. - void SetShaderResourceGroupCallback(ShaderResourceGroupCallback callback); - const RHI::ShaderResourceGroup* GetRHIShaderResourceGroup() const; Data::Instance GetShaderResourceGroup() const; @@ -166,9 +162,13 @@ namespace AZ RenderPipelinePtr FindRenderPipelineForWindow(AzFramework::NativeWindowHandle windowHandle); + using PrepareSceneSrgEvent = AZ::Event; + //! Connect a handler to listen to the event that the Scene is ready to update and compile its scene srg + //! User should use this event to update the part scene srg they know of + void ConnectEvent(PrepareSceneSrgEvent::Handler& handler); + protected: // SceneFinder overrides... - Scene* FindSelf(); void OnSceneNotifictaionHandlerConnected(SceneNotification* handler); // Cpu simulation which runs all active FeatureProcessor Simulate() functions. @@ -183,7 +183,7 @@ namespace AZ // Function called when the current frame is finished rendering. void OnFrameEnd(); - // Update and compile view srgs + // Update and compile scene and view srgs // This is called after PassSystem's FramePrepare so passes can still modify view srgs in its FramePrepareIntenal function before they are submitted to command list void UpdateSrgs(); @@ -200,6 +200,10 @@ namespace AZ // Add a created feature processor to this scene void AddFeatureProcessor(FeatureProcessorPtr fp); + // Send out event to PrepareSceneSrgEvent::Handlers so they can update scene srg as needed + // This happens in UpdateSrgs() + void PrepareSceneSrg(); + // List of feature processors that are active for this scene AZStd::vector m_featureProcessors; @@ -215,9 +219,10 @@ namespace AZ AZ::RPI::FeatureProcessor::SimulatePacket m_simulatePacket; AZ::RPI::FeatureProcessor::RenderPacket m_renderPacket; - // Scene's srg and its set function + // Scene's srg Data::Instance m_srg; - ShaderResourceGroupCallback m_srgCallback; + // Event to for prepare scene srg + PrepareSceneSrgEvent m_prepareSrgEvent; // The uuid to identify this scene. SceneId m_id; @@ -234,6 +239,8 @@ namespace AZ // Registry which allocates draw filter tag for RenderPipeline RHI::Ptr m_drawFilterTagRegistry; + + float m_simulationTime; }; // --- Template functions --- diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/SceneBus.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/SceneBus.h index 4222f634cc..ca531d2de6 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/SceneBus.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/SceneBus.h @@ -80,7 +80,6 @@ namespace AZ static const AZ::EBusAddressPolicy AddressPolicy = AZ::EBusAddressPolicy::ById; using BusIdType = SceneId; - virtual Scene* FindSelf() = 0; virtual void OnSceneNotifictaionHandlerConnected(SceneNotification* handler) = 0; }; diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/AttachmentReadback.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/AttachmentReadback.cpp index 146c37fe1b..c19ae565d0 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/AttachmentReadback.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/AttachmentReadback.cpp @@ -308,10 +308,10 @@ namespace AZ // The fix is to clear the buffer outside of the callback. for (int32_t i = 0; i < RHI::Limits::Device::FrameCountMax; i++) { - if (m_isReadbackComplete[m_readbackBufferCurrentIndex]) + if (m_isReadbackComplete[i]) { - m_isReadbackComplete[m_readbackBufferCurrentIndex] = false; - m_readbackBufferArray[m_readbackBufferCurrentIndex] = nullptr; + m_isReadbackComplete[i] = false; + m_readbackBufferArray[i] = nullptr; } } // Loop the triple buffer index and cache the current index to the callback. diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/RPISystem.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/RPISystem.cpp index 66c4f6d20a..500bf21628 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/RPISystem.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/RPISystem.cpp @@ -293,7 +293,7 @@ namespace AZ // scope producers only can be added to the frame when frame started which cleans up previous scope producers. m_passSystem.FrameUpdate(frameGraphBuilder); - // Update View Srgs + // Update Scene and View Srgs for (auto& scenePtr : m_scenes) { scenePtr->UpdateSrgs(); diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Scene.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Scene.cpp index 761ce20ee8..0b0481b960 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Scene.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Scene.cpp @@ -352,6 +352,8 @@ namespace AZ { AZ_ATOM_PROFILE_FUNCTION("RPI", "Scene: Simulate"); + m_simulationTime = tickInfo.m_currentGameTime; + // If previous simulation job wasn't done, wait for it to finish. WaitAndCleanCompletionJob(m_simulationCompletion); @@ -395,6 +397,29 @@ namespace AZ } } + void Scene::ConnectEvent(PrepareSceneSrgEvent::Handler& handler) + { + handler.Connect(m_prepareSrgEvent); + } + + void Scene::PrepareSceneSrg() + { + if (m_srg) + { + // Set value for constants defined in SceneTimeSrg.azsli + RHI::ShaderInputConstantIndex timeIndex = m_srg->FindShaderInputConstantIndex(Name{ "m_time" }); + if (timeIndex.IsValid()) + { + m_srg->SetConstant(timeIndex, m_simulationTime); + } + + // signal any handlers to update values for their partial scene srg + m_prepareSrgEvent.Signal(m_srg.get()); + + m_srg->Compile(); + } + } + void Scene::PrepareRender(const TickTimeInfo& tickInfo, RHI::JobPolicy jobPolicy) { AZ_ATOM_PROFILE_FUNCTION("RPI", "Scene: PrepareRender"); @@ -407,16 +432,6 @@ namespace AZ SceneNotificationBus::Event(GetId(), &SceneNotification::OnBeginPrepareRender); - { - AZ_PROFILE_SCOPE(RPI, "m_srgCallback"); - AZ_ATOM_PROFILE_TIME_GROUP_REGION("RPI", "ShaderResourceGroupCallback: SrgCallback"); - // Set values for scene srg - if (m_srg && m_srgCallback) - { - m_srgCallback(m_srg.get()); - } - } - // Get active pipelines which need to be rendered and notify them frame started AZStd::vector activePipelines; { @@ -587,17 +602,14 @@ namespace AZ void Scene::UpdateSrgs() { + PrepareSceneSrg(); + for (auto& view : m_renderPacket.m_views) { view->UpdateSrg(); } } - void Scene::SetShaderResourceGroupCallback(ShaderResourceGroupCallback callback) - { - m_srgCallback = callback; - } - const RHI::ShaderResourceGroup* Scene::GetRHIShaderResourceGroup() const { if (m_srg.get()) @@ -641,11 +653,6 @@ namespace AZ return m_pipelines; } - Scene* Scene::FindSelf() - { - return this; - } - void Scene::OnSceneNotifictaionHandlerConnected(SceneNotification* handler) { for (auto renderPipeline : m_pipelines) diff --git a/Gems/Atom/Tools/MaterialEditor/Code/Source/Viewport/MaterialViewportRenderer.cpp b/Gems/Atom/Tools/MaterialEditor/Code/Source/Viewport/MaterialViewportRenderer.cpp index f98cdce91b..36498d6d08 100644 --- a/Gems/Atom/Tools/MaterialEditor/Code/Source/Viewport/MaterialViewportRenderer.cpp +++ b/Gems/Atom/Tools/MaterialEditor/Code/Source/Viewport/MaterialViewportRenderer.cpp @@ -70,22 +70,6 @@ namespace MaterialEditor m_scene = AZ::RPI::Scene::CreateScene(sceneDesc); m_scene->EnableAllFeatureProcessors(); - // Setup scene srg modification callback. - AZ::RPI::ShaderResourceGroupCallback callback = [this](AZ::RPI::ShaderResourceGroup* srg) - { - if (srg == nullptr) - { - return; - } - AZ::RHI::ShaderInputConstantIndex timeIndex = srg->FindShaderInputConstantIndex(AZ::Name{ "m_time" }); - if (timeIndex.IsValid()) - { - srg->SetConstant(timeIndex, m_simulateTime); - srg->Compile(); - } - }; - m_scene->SetShaderResourceGroupCallback(callback); - // Bind m_defaultScene to the GameEntityContext's AzFramework::Scene auto sceneSystem = AzFramework::SceneSystemInterface::Get(); AZ_Assert(sceneSystem, "MaterialViewportRenderer was unable to get the scene system during construction."); @@ -448,14 +432,12 @@ namespace MaterialEditor } } - void MaterialViewportRenderer::OnTick(float deltaTime, [[maybe_unused]] AZ::ScriptTimePoint time) + void MaterialViewportRenderer::OnTick([[maybe_unused]] float deltaTime, [[maybe_unused]] AZ::ScriptTimePoint time) { m_renderPipeline->AddToRenderTickOnce(); PerformanceMonitorRequestBus::Broadcast(&PerformanceMonitorRequestBus::Handler::GatherMetrics); - m_simulateTime += deltaTime; - if (m_shadowCatcherMaterial) { // Compile the m_shadowCatcherMaterial in OnTick because changes can only be compiled once per frame. diff --git a/Gems/Atom/Tools/MaterialEditor/Code/Source/Viewport/MaterialViewportRenderer.h b/Gems/Atom/Tools/MaterialEditor/Code/Source/Viewport/MaterialViewportRenderer.h index 240d66fd43..8a3e0ca4ff 100644 --- a/Gems/Atom/Tools/MaterialEditor/Code/Source/Viewport/MaterialViewportRenderer.h +++ b/Gems/Atom/Tools/MaterialEditor/Code/Source/Viewport/MaterialViewportRenderer.h @@ -114,8 +114,6 @@ namespace MaterialEditor AZ::Entity* m_iblEntity = nullptr; AZ::Render::SkyBoxFeatureProcessorInterface* m_skyboxFeatureProcessor = nullptr; - float m_simulateTime = 0; - AZStd::shared_ptr m_viewportController; }; } // namespace MaterialEditor diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Thumbnails/Rendering/ThumbnailRendererData.h b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Thumbnails/Rendering/ThumbnailRendererData.h index 4ced050fc1..c471cf90d7 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Thumbnails/Rendering/ThumbnailRendererData.h +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Thumbnails/Rendering/ThumbnailRendererData.h @@ -46,8 +46,6 @@ namespace AZ RPI::ViewPtr m_view = nullptr; Entity* m_modelEntity = nullptr; - double m_simulateTime = 0.0f; - float m_deltaTime = 0.0f; int m_thumbnailSize = 512; //! Incoming thumbnail requests are appended to this queue and processed one at a time in OnTick function. diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Thumbnails/Rendering/ThumbnailRendererSteps/CaptureStep.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Thumbnails/Rendering/ThumbnailRendererSteps/CaptureStep.cpp index 9a425ddeb4..f728d56bbc 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Thumbnails/Rendering/ThumbnailRendererSteps/CaptureStep.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Thumbnails/Rendering/ThumbnailRendererSteps/CaptureStep.cpp @@ -81,11 +81,8 @@ namespace AZ m_context->GetData()->m_view->SetCameraTransform(Matrix3x4::CreateFromTransform(cameraTransform)); } - void CaptureStep::OnTick(float deltaTime, ScriptTimePoint time) + void CaptureStep::OnTick([[maybe_unused]] float deltaTime, [[maybe_unused]] ScriptTimePoint time) { - m_context->GetData()->m_deltaTime = deltaTime; - m_context->GetData()->m_simulateTime = time.GetSeconds(); - if (m_readyToCapture && m_ticksToCapture-- <= 0) { m_context->GetData()->m_renderPipeline->AddToRenderTickOnce(); diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Thumbnails/Rendering/ThumbnailRendererSteps/InitializeStep.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Thumbnails/Rendering/ThumbnailRendererSteps/InitializeStep.cpp index 4851d8f792..46eb0937bd 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Thumbnails/Rendering/ThumbnailRendererSteps/InitializeStep.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Thumbnails/Rendering/ThumbnailRendererSteps/InitializeStep.cpp @@ -72,34 +72,6 @@ namespace AZ data->m_scene = RPI::Scene::CreateScene(sceneDesc); - // Setup scene srg modification callback (to push per-frame values to the shaders) - RPI::ShaderResourceGroupCallback callback = [data](RPI::ShaderResourceGroup* srg) - { - if (srg == nullptr) - { - return; - } - bool needCompile = false; - RHI::ShaderInputConstantIndex timeIndex = srg->FindShaderInputConstantIndex(Name{ "m_time" }); - if (timeIndex.IsValid()) - { - srg->SetConstant(timeIndex, aznumeric_cast(data->m_simulateTime)); - needCompile = true; - } - RHI::ShaderInputConstantIndex deltaTimeIndex = srg->FindShaderInputConstantIndex(Name{ "m_deltaTime" }); - if (deltaTimeIndex.IsValid()) - { - srg->SetConstant(deltaTimeIndex, data->m_deltaTime); - needCompile = true; - } - - if (needCompile) - { - srg->Compile(); - } - }; - data->m_scene->SetShaderResourceGroupCallback(callback); - // Bind m_defaultScene to the GameEntityContext's AzFramework::Scene auto* sceneSystem = AzFramework::SceneSystemInterface::Get(); AZ_Assert(sceneSystem, "Thumbnail system failed to get scene system implementation."); diff --git a/Templates/DefaultProject/Template/ShaderLib/scenesrg.srgi b/Templates/DefaultProject/Template/ShaderLib/scenesrg.srgi index 38335bfc26..c5024b86ad 100644 --- a/Templates/DefaultProject/Template/ShaderLib/scenesrg.srgi +++ b/Templates/DefaultProject/Template/ShaderLib/scenesrg.srgi @@ -22,6 +22,5 @@ partial ShaderResourceGroup SceneSrg : SRG_PerScene }; #define AZ_COLLECTING_PARTIAL_SRGS -#include -#include +#include #undef AZ_COLLECTING_PARTIAL_SRGS diff --git a/Templates/DefaultProject/Template/Shaders/CommonVS.azsli b/Templates/DefaultProject/Template/Shaders/CommonVS.azsli deleted file mode 100644 index 4c20d85b88..0000000000 --- a/Templates/DefaultProject/Template/Shaders/CommonVS.azsli +++ /dev/null @@ -1,52 +0,0 @@ -// {BEGIN_LICENSE} -/* - * Copyright (c) Contributors to the Open 3D Engine Project. - * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ -// {END_LICENSE} - -#pragma once - -#include -#include -#include - -struct VertexInput -{ - float3 m_position : POSITION; - float3 m_normal : NORMAL; - float4 m_tangent : TANGENT; - float3 m_bitangent : BITANGENT; - float2 m_uv : UV0; -}; - -struct VertexOutput -{ - float4 m_position : SV_Position; - float3 m_normal : NORMAL; - float3 m_tangent : TANGENT; - float3 m_bitangent : BITANGENT; - float2 m_uv : UV0; - float3 m_view : VIEW; -}; - -VertexOutput CommonVS(VertexInput input) -{ - float4x4 objectToWorld = ObjectSrg::GetWorldMatrix(); - float3x3 objectToWorldIT = ObjectSrg::GetWorldMatrixInverseTranspose(); - - VertexOutput output; - float3 worldPosition = mul(objectToWorld, float4(input.m_position, 1)).xyz; - output.m_position = mul(ViewSrg::m_viewProjectionMatrix, float4(worldPosition, 1.0)); - - output.m_uv = input.m_uv; - - output.m_view = worldPosition - ViewSrg::m_worldPosition; - - ConstructTBN(input.m_normal, input.m_tangent, input.m_bitangent, objectToWorld, objectToWorldIT, output.m_normal, output.m_tangent, output.m_bitangent); - - return output; -} diff --git a/Templates/DefaultProject/Template/Shaders/ShaderResourceGroups/SceneSrg.azsli b/Templates/DefaultProject/Template/Shaders/ShaderResourceGroups/SceneSrg.azsli deleted file mode 100644 index f6422f8b2f..0000000000 --- a/Templates/DefaultProject/Template/Shaders/ShaderResourceGroups/SceneSrg.azsli +++ /dev/null @@ -1,20 +0,0 @@ -// {BEGIN_LICENSE} -/* - * Copyright (c) Contributors to the Open 3D Engine Project. - * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ -// {END_LICENSE} - -#ifndef AZ_COLLECTING_PARTIAL_SRGS -#error Do not include this file directly. Include the main .srgi file instead. -#endif - -partial ShaderResourceGroup SceneSrg -{ - float m_time; - float m_deltaTime; -} - diff --git a/Templates/DefaultProject/template.json b/Templates/DefaultProject/template.json index 6cf861a2ef..1e84ea8424 100644 --- a/Templates/DefaultProject/template.json +++ b/Templates/DefaultProject/template.json @@ -504,18 +504,6 @@ "isTemplated": true, "isOptional": false }, - { - "file": "Shaders/CommonVS.azsli", - "origin": "Shaders/CommonVS.azsli", - "isTemplated": true, - "isOptional": false - }, - { - "file": "Shaders/ShaderResourceGroups/SceneSrg.azsli", - "origin": "Shaders/ShaderResourceGroups/SceneSrg.azsli", - "isTemplated": true, - "isOptional": false - }, { "file": "autoexec.cfg", "origin": "autoexec.cfg", diff --git a/Templates/MinimalProject/Template/ShaderLib/scenesrg.srgi b/Templates/MinimalProject/Template/ShaderLib/scenesrg.srgi index 38335bfc26..c5024b86ad 100644 --- a/Templates/MinimalProject/Template/ShaderLib/scenesrg.srgi +++ b/Templates/MinimalProject/Template/ShaderLib/scenesrg.srgi @@ -22,6 +22,5 @@ partial ShaderResourceGroup SceneSrg : SRG_PerScene }; #define AZ_COLLECTING_PARTIAL_SRGS -#include -#include +#include #undef AZ_COLLECTING_PARTIAL_SRGS diff --git a/Templates/MinimalProject/Template/Shaders/CommonVS.azsli b/Templates/MinimalProject/Template/Shaders/CommonVS.azsli deleted file mode 100644 index 4c20d85b88..0000000000 --- a/Templates/MinimalProject/Template/Shaders/CommonVS.azsli +++ /dev/null @@ -1,52 +0,0 @@ -// {BEGIN_LICENSE} -/* - * Copyright (c) Contributors to the Open 3D Engine Project. - * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ -// {END_LICENSE} - -#pragma once - -#include -#include -#include - -struct VertexInput -{ - float3 m_position : POSITION; - float3 m_normal : NORMAL; - float4 m_tangent : TANGENT; - float3 m_bitangent : BITANGENT; - float2 m_uv : UV0; -}; - -struct VertexOutput -{ - float4 m_position : SV_Position; - float3 m_normal : NORMAL; - float3 m_tangent : TANGENT; - float3 m_bitangent : BITANGENT; - float2 m_uv : UV0; - float3 m_view : VIEW; -}; - -VertexOutput CommonVS(VertexInput input) -{ - float4x4 objectToWorld = ObjectSrg::GetWorldMatrix(); - float3x3 objectToWorldIT = ObjectSrg::GetWorldMatrixInverseTranspose(); - - VertexOutput output; - float3 worldPosition = mul(objectToWorld, float4(input.m_position, 1)).xyz; - output.m_position = mul(ViewSrg::m_viewProjectionMatrix, float4(worldPosition, 1.0)); - - output.m_uv = input.m_uv; - - output.m_view = worldPosition - ViewSrg::m_worldPosition; - - ConstructTBN(input.m_normal, input.m_tangent, input.m_bitangent, objectToWorld, objectToWorldIT, output.m_normal, output.m_tangent, output.m_bitangent); - - return output; -} diff --git a/Templates/MinimalProject/Template/Shaders/ShaderResourceGroups/SceneSrg.azsli b/Templates/MinimalProject/Template/Shaders/ShaderResourceGroups/SceneSrg.azsli deleted file mode 100644 index f6422f8b2f..0000000000 --- a/Templates/MinimalProject/Template/Shaders/ShaderResourceGroups/SceneSrg.azsli +++ /dev/null @@ -1,20 +0,0 @@ -// {BEGIN_LICENSE} -/* - * Copyright (c) Contributors to the Open 3D Engine Project. - * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ -// {END_LICENSE} - -#ifndef AZ_COLLECTING_PARTIAL_SRGS -#error Do not include this file directly. Include the main .srgi file instead. -#endif - -partial ShaderResourceGroup SceneSrg -{ - float m_time; - float m_deltaTime; -} - diff --git a/Templates/MinimalProject/template.json b/Templates/MinimalProject/template.json index 9d9ef730c1..21608e9204 100644 --- a/Templates/MinimalProject/template.json +++ b/Templates/MinimalProject/template.json @@ -490,18 +490,6 @@ "isTemplated": true, "isOptional": false }, - { - "file": "Shaders/CommonVS.azsli", - "origin": "Shaders/CommonVS.azsli", - "isTemplated": true, - "isOptional": false - }, - { - "file": "Shaders/ShaderResourceGroups/SceneSrg.azsli", - "origin": "Shaders/ShaderResourceGroups/SceneSrg.azsli", - "isTemplated": true, - "isOptional": false - }, { "file": "autoexec.cfg", "origin": "autoexec.cfg", From 5909e471e648b57ed3e111f50b62e3ad2af214b4 Mon Sep 17 00:00:00 2001 From: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> Date: Fri, 10 Sep 2021 10:39:42 -0700 Subject: [PATCH 14/20] Limits configuration types a project sees when using an engine SDK (#4033) Signed-off-by: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> --- cmake/ConfigurationTypes.cmake | 14 ++++++++++++ cmake/Configurations.cmake | 21 +++++++++++++----- cmake/Platform/Common/Install_common.cmake | 22 +++++++++++++++++-- .../install/ConfigurationType_config.cmake.in | 11 ++++++++++ cmake/install/ConfigurationTypes.cmake | 22 +++++++++++++++++++ 5 files changed, 82 insertions(+), 8 deletions(-) create mode 100644 cmake/ConfigurationTypes.cmake create mode 100644 cmake/install/ConfigurationType_config.cmake.in create mode 100644 cmake/install/ConfigurationTypes.cmake diff --git a/cmake/ConfigurationTypes.cmake b/cmake/ConfigurationTypes.cmake new file mode 100644 index 0000000000..fe9c2daa51 --- /dev/null +++ b/cmake/ConfigurationTypes.cmake @@ -0,0 +1,14 @@ +# +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# + +include_guard(GLOBAL) + +# By default, CMAKE_CONFIGURATION_TYPES = LY_CONFIGURATION_TYPES, but in installed SDKs, this +# file will be replaced with cmake/install/ConfigurationTypes.cmake and discover configurations +# that are available from the SDK +set(CMAKE_CONFIGURATION_TYPES ${LY_CONFIGURATION_TYPES} CACHE STRING "" FORCE) diff --git a/cmake/Configurations.cmake b/cmake/Configurations.cmake index 693cc23c7d..51dee2f07b 100644 --- a/cmake/Configurations.cmake +++ b/cmake/Configurations.cmake @@ -8,6 +8,17 @@ include_guard(GLOBAL) +# LY_CONFIGURATION_TYPES defines all the configuration types that O3DE supports +# We dont set CMAKE_CONFIGURATION_TYPES directly because we want to be able to configure which +# configuration types are supported in an SDK installation. SDK installations will fill a +# CMAKE_CONFIGURATION_TYPES based on the configurations that were generated during the install process. +# ly_append_configurations_options depends on LY_CONFIGURATION_TYPES being +# set in order to successfully parse the arguments. Even for non-multi-config +# generators, it needs to be set. +set(LY_CONFIGURATION_TYPES "debug;profile;release" CACHE STRING "" FORCE) + +include(cmake/ConfigurationTypes.cmake) + #! ly_append_configurations_options: adds options to the different configurations (debug, profile, release, etc) # # \arg:DEFINES @@ -43,7 +54,9 @@ function(ly_append_configurations_options) ) foreach(arg IN LISTS multiArgs) list(APPEND multiValueArgs ${arg}) - foreach(conf IN LISTS CMAKE_CONFIGURATION_TYPES) + # we parse the parameters based on all configuration types so unknown configurations + # are not passed as values to other parameters + foreach(conf IN LISTS LY_CONFIGURATION_TYPES) string(TOUPPER ${conf} UCONF) list(APPEND multiValueArgs ${arg}_${UCONF}) endforeach() @@ -96,6 +109,7 @@ function(ly_append_configurations_options) set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${LINK_STR}" PARENT_SCOPE) endif() + # We only iterate for the actual configuration types foreach(conf IN LISTS CMAKE_CONFIGURATION_TYPES) string(TOUPPER ${conf} UCONF) @@ -143,11 +157,6 @@ endfunction() set(CMAKE_CXX_STANDARD 17 CACHE STRING "C++ Standard to target") ly_set(CMAKE_CXX_STANDARD_REQUIRED ON) -# ly_append_configurations_options depends on CMAKE_CONFIGURATION_TYPES being -# set in order to successfully parse the arguments. Even for non-multi-config -# generators, it needs to be set. -set(CMAKE_CONFIGURATION_TYPES "debug;profile;release" CACHE STRING "" FORCE) - get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) if(NOT _isMultiConfig) # No reason set CMAKE_BUILD_TYPE if it's a multiconfig generator. diff --git a/cmake/Platform/Common/Install_common.cmake b/cmake/Platform/Common/Install_common.cmake index 9a0fbbd872..86f46a6e0b 100644 --- a/cmake/Platform/Common/Install_common.cmake +++ b/cmake/Platform/Common/Install_common.cmake @@ -350,8 +350,26 @@ function(ly_setup_cmake_install) DESTINATION . COMPONENT ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME} PATTERN "__pycache__" EXCLUDE - REGEX "Findo3de.cmake" EXCLUDE - REGEX "Platform\/.*\/BuiltInPackages_.*\.cmake" EXCLUDE + PATTERN "Findo3de.cmake" EXCLUDE + PATTERN "ConfigurationTypes.cmake" EXCLUDE + REGEX "3rdParty/Platform\/.*\/BuiltInPackages_.*\.cmake" EXCLUDE + ) + # Connect configuration types + install(FILES "${LY_ROOT_FOLDER}/cmake/install/ConfigurationTypes.cmake" + DESTINATION cmake + COMPONENT ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME} + ) + # Inject code that will generate each ConfigurationType_.cmake file + set(install_configuration_type_template [=[ + configure_file(@LY_ROOT_FOLDER@/cmake/install/ConfigurationType_config.cmake.in + ${CMAKE_INSTALL_PREFIX}/cmake/ConfigurationTypes_${CMAKE_INSTALL_CONFIG_NAME}.cmake + @ONLY + ) + message(STATUS "Generated ${CMAKE_INSTALL_PREFIX}/cmake/ConfigurationTypes_${CMAKE_INSTALL_CONFIG_NAME}.cmake") + ]=]) + string(CONFIGURE "${install_configuration_type_template}" install_configuration_type @ONLY) + install(CODE "${install_configuration_type}" + COMPONENT ${CMAKE_INSTALL_DEFAULT_COMPONENT_NAME} ) # Transform the LY_EXTERNAL_SUBDIRS list into a json array diff --git a/cmake/install/ConfigurationType_config.cmake.in b/cmake/install/ConfigurationType_config.cmake.in new file mode 100644 index 0000000000..074e034899 --- /dev/null +++ b/cmake/install/ConfigurationType_config.cmake.in @@ -0,0 +1,11 @@ +# +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# + +include_guard(GLOBAL) + +list(APPEND CMAKE_CONFIGURATION_TYPES @CMAKE_INSTALL_CONFIG_NAME@) diff --git a/cmake/install/ConfigurationTypes.cmake b/cmake/install/ConfigurationTypes.cmake new file mode 100644 index 0000000000..709f3e71ab --- /dev/null +++ b/cmake/install/ConfigurationTypes.cmake @@ -0,0 +1,22 @@ +# +# Copyright (c) Contributors to the Open 3D Engine Project. +# For complete copyright and license terms please see the LICENSE at the root of this distribution. +# +# SPDX-License-Identifier: Apache-2.0 OR MIT +# +# + +include_guard(GLOBAL) + + +# In SDK builds CMAKE_CONFIGURATION_TYPES will be filled by entries generated per configuration build. +# At install time we generate `cmake/ConfigurationTypes_.cmake` files that append the configuration +# to CMAKE_CONFIGURATION_TYPES +set(CMAKE_CONFIGURATION_TYPES "" CACHE STRING "" FORCE) + +# For the SDK case, we want to only define the confiuguration types that have been added to the SDK +file(GLOB configuration_type_files "cmake/ConfigurationTypes_*.cmake") +foreach(configuration_type_file ${configuration_type_files}) + include(${configuration_type_file}) +endforeach() +ly_set(CMAKE_CONFIGURATION_TYPES ${CMAKE_CONFIGURATION_TYPES}) # propagate to parent \ No newline at end of file From 43355e47cacd3218b76be66236a4ba6f67e56572 Mon Sep 17 00:00:00 2001 From: Jonny Galloway Date: Fri, 10 Sep 2021 14:00:36 -0500 Subject: [PATCH 15/20] minor bug fixes based on finding defects while using (#4035) Signed-off-by: Jonny Gallowy --- .../ColorGrading/exr_to_3dl_azasset.py | 4 +- .../ColorGrading/from_3dl_to_azasset.py | 3 - .../test-grade_inv-Log2-48nits_32_LUT.azasset | 65543 ++++++++-------- .../cmdline/CMD_ColorGradingTools.bat | 24 +- .../Tools/ColorGrading/cmdline/Env_Core.bat | 3 - .../cmdline/User_Env.bat.template | 2 +- 6 files changed, 32790 insertions(+), 32789 deletions(-) diff --git a/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/exr_to_3dl_azasset.py b/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/exr_to_3dl_azasset.py index 6c2aa1d5bb..a3aae9cb94 100644 --- a/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/exr_to_3dl_azasset.py +++ b/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/exr_to_3dl_azasset.py @@ -113,7 +113,9 @@ if __name__ == '__main__': lut_intervals, lut_values = generate_lut_values(image_spec, image_buffer) write_3DL(args.o, image_spec.height, lut_intervals, lut_values) - write_azasset(args.o, image_spec.height, lut_intervals, lut_values) + + # write_azasset(file_path, lut_intervals, lut_values, azasset_json=AZASSET_LUT) + write_azasset(args.o, lut_intervals, lut_values) # example from command line # python % DCCSI_COLORGRADING_SCRIPTS %\lut_helper.py - -i C: \Depot\o3de\Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\linear_32_LUT.exr - -op pre - grading - -shaper Log2 - 48nits - -o C: \Depot\o3de\Gems\Atom\Feature\Common\Tools\ColorGrading\Resources\LUTs\base_Log2-48nits_32_LUT.exr diff --git a/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/from_3dl_to_azasset.py b/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/from_3dl_to_azasset.py index ba37994e63..da9e5f9d34 100644 --- a/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/from_3dl_to_azasset.py +++ b/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/from_3dl_to_azasset.py @@ -31,11 +31,8 @@ if ColorGrading.initialize.start(): sys.exit(1) # ------------------------------------------------------------------------ - -# ------------------------------------------------------------------------ from ColorGrading import AZASSET_LUT - # ------------------------------------------------------------------------ def find_first_line(alist): for lno, line in enumerate(alist): diff --git a/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Nuke/HDR/Test_Grade/test-grade_inv-Log2-48nits_32_LUT.azasset b/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Nuke/HDR/Test_Grade/test-grade_inv-Log2-48nits_32_LUT.azasset index a91e9d0c1a..bd1ccbf572 100644 --- a/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Nuke/HDR/Test_Grade/test-grade_inv-Log2-48nits_32_LUT.azasset +++ b/Gems/Atom/Feature/Common/Tools/ColorGrading/Resources/TestData/Nuke/HDR/Test_Grade/test-grade_inv-Log2-48nits_32_LUT.azasset @@ -4,32777 +4,32774 @@ "ClassName": "LookupTableAsset", "ClassData": { "Name": "LookupTable", - "Intervals": [ - 0, 33, 66, 99, 132, 165, 198, 231, 264, 297, 330, 363, 396, 429, 462, 495, 528, 561, 594, 627, 660, 693, 726, 759, 792, 825, 858, 891, 924, 957, 990, 1023], - "Values": [ - 0, 0, 0, - 0, 0, 0, - 0, 15, 0, - 0, 104, 0, - 0, 201, 0, - 0, 305, 0, - 0, 415, 0, - 0, 530, 0, - 0, 649, 0, - 0, 771, 0, - 0, 895, 0, - 0, 1022, 0, - 0, 1149, 0, - 0, 1278, 0, - 0, 1408, 0, - 0, 1538, 0, - 0, 1668, 0, - 0, 1799, 0, - 0, 1931, 0, - 0, 2062, 0, - 0, 2194, 0, - 0, 2326, 0, - 0, 2457, 0, - 0, 2589, 0, - 0, 2721, 0, - 0, 2853, 0, - 0, 2985, 0, - 0, 3117, 0, - 0, 3249, 0, - 0, 3381, 0, - 0, 3514, 0, - 0, 3646, 0, - 130, 0, 20, - 28, 0, 0, - 0, 33, 0, - 0, 119, 0, - 0, 213, 0, - 0, 315, 0, - 0, 423, 0, - 0, 536, 0, - 0, 654, 0, - 0, 775, 0, - 0, 898, 0, - 0, 1024, 0, - 0, 1151, 0, - 0, 1279, 0, - 0, 1408, 0, - 0, 1538, 0, - 0, 1669, 0, - 0, 1800, 0, - 0, 1931, 0, - 0, 2062, 0, - 0, 2194, 0, - 0, 2326, 0, - 0, 2458, 0, - 0, 2589, 0, - 0, 2721, 0, - 0, 2853, 0, - 0, 2985, 0, - 0, 3117, 0, - 0, 3249, 0, - 0, 3381, 0, - 0, 3514, 0, - 0, 3646, 0, - 342, 0, 170, - 280, 0, 102, - 183, 56, 0, - 7, 139, 0, - 0, 229, 0, - 0, 328, 0, - 0, 433, 0, - 0, 544, 0, - 0, 660, 0, - 0, 779, 0, - 0, 902, 0, - 0, 1026, 0, - 0, 1153, 0, - 0, 1281, 0, - 0, 1410, 0, - 0, 1539, 0, - 0, 1670, 0, - 0, 1800, 0, - 0, 1931, 0, - 0, 2063, 0, - 0, 2194, 0, - 0, 2326, 0, - 0, 2458, 0, - 0, 2589, 0, - 0, 2721, 0, - 0, 2853, 0, - 0, 2985, 0, - 0, 3117, 0, - 0, 3249, 0, - 0, 3381, 0, - 0, 3514, 0, - 0, 3646, 0, - 526, 0, 315, - 486, 18, 266, - 426, 86, 192, - 331, 163, 68, - 163, 250, 0, - 0, 344, 0, - 0, 446, 0, - 0, 555, 0, - 0, 668, 0, - 0, 785, 0, - 0, 906, 0, - 0, 1030, 0, - 0, 1156, 0, - 0, 1283, 0, - 0, 1411, 0, - 0, 1540, 0, - 0, 1670, 0, - 0, 1801, 0, - 0, 1932, 0, - 0, 2063, 0, - 0, 2194, 0, - 0, 2326, 0, - 0, 2458, 0, - 0, 2590, 0, - 0, 2722, 0, - 0, 2853, 0, - 0, 2985, 0, - 0, 3117, 0, - 0, 3249, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 693, 8, 457, - 666, 60, 422, - 626, 123, 370, - 568, 195, 290, - 475, 276, 155, - 312, 366, 0, - 0, 463, 0, - 0, 568, 0, - 0, 678, 0, - 0, 794, 0, - 0, 913, 0, - 0, 1035, 0, - 0, 1159, 0, - 0, 1285, 0, - 0, 1413, 0, - 0, 1542, 0, - 0, 1672, 0, - 0, 1802, 0, - 0, 1932, 0, - 0, 2064, 0, - 0, 2195, 0, - 0, 2326, 0, - 0, 2458, 0, - 0, 2590, 0, - 0, 2722, 0, - 0, 2854, 0, - 0, 2985, 0, - 0, 3117, 0, - 0, 3249, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 850, 65, 596, - 831, 112, 570, - 804, 168, 534, - 765, 233, 479, - 707, 308, 395, - 616, 393, 250, - 457, 485, 0, - 82, 585, 0, - 0, 692, 0, - 0, 804, 0, - 0, 921, 0, - 0, 1041, 0, - 0, 1164, 0, - 0, 1289, 0, - 0, 1416, 0, - 0, 1544, 0, - 0, 1673, 0, - 0, 1803, 0, - 0, 1933, 0, - 0, 2064, 0, - 0, 2195, 0, - 0, 2327, 0, - 0, 2458, 0, - 0, 2590, 0, - 0, 2722, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 999, 131, 733, - 986, 172, 714, - 967, 222, 688, - 940, 280, 650, - 901, 348, 594, - 844, 426, 505, - 755, 513, 352, - 598, 608, 3, - 235, 710, 0, - 0, 818, 0, - 0, 932, 0, - 0, 1049, 0, - 0, 1170, 0, - 0, 1294, 0, - 0, 1420, 0, - 0, 1547, 0, - 0, 1675, 0, - 0, 1805, 0, - 0, 1935, 0, - 0, 2065, 0, - 0, 2196, 0, - 0, 2327, 0, - 0, 2459, 0, - 0, 2590, 0, - 0, 2722, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1144, 207, 869, - 1134, 242, 855, - 1121, 285, 836, - 1102, 336, 809, - 1075, 397, 770, - 1037, 468, 712, - 980, 547, 621, - 892, 636, 461, - 737, 732, 82, - 382, 836, 0, - 0, 946, 0, - 0, 1060, 0, - 0, 1179, 0, - 0, 1300, 0, - 0, 1424, 0, - 0, 1550, 0, - 0, 1678, 0, - 0, 1807, 0, - 0, 1936, 0, - 0, 2066, 0, - 0, 2197, 0, - 0, 2328, 0, - 0, 2459, 0, - 0, 2591, 0, - 0, 2722, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1286, 293, 1004, - 1278, 322, 994, - 1268, 358, 980, - 1255, 402, 960, - 1236, 455, 932, - 1210, 518, 893, - 1172, 590, 833, - 1115, 671, 740, - 1027, 761, 574, - 874, 859, 170, - 525, 964, 0, - 0, 1074, 0, - 0, 1190, 0, - 0, 1309, 0, - 0, 1431, 0, - 0, 1555, 0, - 0, 1682, 0, - 0, 1809, 0, - 0, 1938, 0, - 0, 2068, 0, - 0, 2198, 0, - 0, 2329, 0, - 0, 2460, 0, - 0, 2591, 0, - 0, 2723, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1424, 386, 1138, - 1419, 410, 1131, - 1412, 440, 1120, - 1402, 477, 1106, - 1389, 523, 1086, - 1370, 577, 1058, - 1343, 641, 1018, - 1306, 714, 958, - 1250, 797, 862, - 1162, 888, 692, - 1010, 987, 267, - 665, 1093, 0, - 0, 1204, 0, - 0, 1320, 0, - 0, 1439, 0, - 0, 1562, 0, - 0, 1687, 0, - 0, 1813, 0, - 0, 1941, 0, - 0, 2070, 0, - 0, 2200, 0, - 0, 2330, 0, - 0, 2461, 0, - 0, 2592, 0, - 0, 2723, 0, - 0, 2855, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1562, 487, 1272, - 1558, 506, 1266, - 1552, 531, 1258, - 1545, 561, 1248, - 1535, 599, 1234, - 1522, 646, 1213, - 1503, 701, 1185, - 1477, 766, 1144, - 1439, 840, 1084, - 1383, 924, 987, - 1296, 1016, 813, - 1145, 1116, 370, - 802, 1222, 0, - 0, 1334, 0, - 0, 1450, 0, - 0, 1570, 0, - 0, 1693, 0, - 0, 1818, 0, - 0, 1945, 0, - 0, 2073, 0, - 0, 2202, 0, - 0, 2331, 0, - 0, 2462, 0, - 0, 2593, 0, - 0, 2724, 0, - 0, 2855, 0, - 0, 2987, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1697, 595, 1405, - 1695, 610, 1401, - 1691, 629, 1395, - 1685, 654, 1387, - 1678, 685, 1377, - 1668, 724, 1362, - 1655, 771, 1342, - 1636, 827, 1314, - 1610, 893, 1273, - 1572, 968, 1211, - 1517, 1053, 1113, - 1430, 1145, 937, - 1279, 1246, 479, - 939, 1352, 0, - 0, 1465, 0, - 0, 1581, 0, - 0, 1701, 0, - 0, 1824, 0, - 0, 1950, 0, - 0, 2076, 0, - 0, 2204, 0, - 0, 2334, 0, - 0, 2463, 0, - 0, 2594, 0, - 0, 2725, 0, - 0, 2856, 0, - 0, 2987, 0, - 0, 3119, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1832, 707, 1538, - 1830, 719, 1535, - 1827, 735, 1531, - 1823, 755, 1525, - 1818, 780, 1517, - 1811, 811, 1507, - 1801, 851, 1492, - 1788, 898, 1472, - 1769, 955, 1443, - 1743, 1021, 1402, - 1705, 1097, 1340, - 1650, 1182, 1241, - 1563, 1275, 1062, - 1412, 1376, 594, - 1074, 1483, 0, - 0, 1596, 0, - 0, 1712, 0, - 0, 1833, 0, - 0, 1956, 0, - 0, 2081, 0, - 0, 2208, 0, - 0, 2336, 0, - 0, 2466, 0, - 0, 2595, 0, - 0, 2726, 0, - 0, 2857, 0, - 0, 2988, 0, - 0, 3119, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3514, 0, - 0, 3646, 0, - 1966, 824, 1671, - 1965, 834, 1668, - 1963, 846, 1665, - 1960, 861, 1661, - 1956, 881, 1655, - 1951, 907, 1647, - 1943, 939, 1637, - 1934, 978, 1622, - 1920, 1026, 1602, - 1902, 1084, 1573, - 1875, 1150, 1531, - 1838, 1227, 1469, - 1782, 1312, 1370, - 1696, 1406, 1190, - 1545, 1507, 712, - 1209, 1614, 0, - 0, 1727, 0, - 0, 1844, 0, - 0, 1964, 0, - 0, 2088, 0, - 0, 2213, 0, - 0, 2340, 0, - 0, 2468, 0, - 0, 2597, 0, - 0, 2727, 0, - 0, 2858, 0, - 0, 2989, 0, - 0, 3120, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3646, 0, - 2100, 945, 1803, - 2099, 952, 1802, - 2097, 961, 1799, - 2095, 973, 1796, - 2092, 989, 1792, - 2088, 1009, 1786, - 2083, 1035, 1778, - 2076, 1067, 1768, - 2066, 1107, 1753, - 2053, 1156, 1732, - 2034, 1213, 1703, - 2008, 1280, 1662, - 1970, 1357, 1599, - 1915, 1442, 1499, - 1828, 1536, 1318, - 1678, 1638, 834, - 1342, 1745, 0, - 0, 1858, 0, - 0, 1976, 0, - 0, 2096, 0, - 0, 2220, 0, - 0, 2345, 0, - 0, 2472, 0, - 0, 2600, 0, - 0, 2730, 0, - 0, 2859, 0, - 0, 2990, 0, - 0, 3121, 0, - 0, 3252, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3647, 0, - 2233, 1068, 1936, - 2232, 1074, 1935, - 2231, 1081, 1933, - 2230, 1090, 1930, - 2227, 1102, 1927, - 2225, 1118, 1923, - 2221, 1139, 1917, - 2215, 1164, 1909, - 2208, 1197, 1899, - 2198, 1237, 1884, - 2185, 1286, 1863, - 2166, 1343, 1834, - 2140, 1411, 1793, - 2103, 1488, 1730, - 2047, 1573, 1629, - 1961, 1668, 1447, - 1811, 1769, 958, - 1476, 1877, 0, - 0, 1990, 0, - 0, 2107, 0, - 0, 2228, 0, - 0, 2351, 0, - 0, 2477, 0, - 0, 2604, 0, - 0, 2732, 0, - 0, 2862, 0, - 0, 2991, 0, - 0, 3122, 0, - 0, 3253, 0, - 0, 3384, 0, - 0, 3515, 0, - 0, 3647, 0, - 2366, 1194, 2068, - 2366, 1198, 2067, - 2365, 1203, 2066, - 2364, 1210, 2064, - 2362, 1220, 2062, - 2360, 1232, 2059, - 2357, 1248, 2054, - 2353, 1268, 2049, - 2348, 1294, 2041, - 2340, 1327, 2030, - 2331, 1367, 2015, - 2317, 1416, 1995, - 2299, 1474, 1966, - 2273, 1542, 1924, - 2235, 1619, 1861, - 2180, 1705, 1760, - 2093, 1799, 1577, - 1944, 1901, 1084, - 1609, 2009, 0, - 0, 2122, 0, - 0, 2239, 0, - 0, 2360, 0, - 0, 2483, 0, - 0, 2609, 0, - 0, 2736, 0, - 0, 2864, 0, - 0, 2994, 0, - 0, 3124, 0, - 0, 3254, 0, - 0, 3385, 0, - 0, 3516, 0, - 0, 3648, 0, - 2499, 1321, 2200, - 2499, 1324, 2200, - 2498, 1328, 2199, - 2497, 1333, 2197, - 2496, 1340, 2196, - 2494, 1350, 2193, - 2492, 1362, 2190, - 2489, 1378, 2186, - 2485, 1399, 2180, - 2480, 1425, 2172, - 2473, 1458, 2161, - 2463, 1498, 2147, - 2450, 1547, 2126, - 2431, 1605, 2097, - 2405, 1673, 2055, - 2367, 1750, 1992, - 2312, 1836, 1891, - 2226, 1931, 1708, - 2076, 2032, 1211, - 1742, 2140, 0, - 0, 2254, 0, - 0, 2371, 0, - 0, 2492, 0, - 0, 2615, 0, - 0, 2741, 0, - 0, 2868, 0, - 0, 2996, 0, - 0, 3126, 0, - 0, 3256, 0, - 0, 3386, 0, - 0, 3517, 0, - 0, 3648, 0, - 2632, 1449, 2333, - 2631, 1451, 2332, - 2631, 1454, 2331, - 2630, 1458, 2330, - 2629, 1464, 2329, - 2628, 1471, 2327, - 2626, 1481, 2325, - 2624, 1493, 2322, - 2621, 1509, 2318, - 2617, 1530, 2312, - 2612, 1556, 2304, - 2605, 1589, 2293, - 2595, 1629, 2278, - 2582, 1678, 2258, - 2563, 1736, 2229, - 2537, 1804, 2187, - 2500, 1881, 2123, - 2444, 1968, 2023, - 2358, 2062, 1839, - 2208, 2164, 1340, - 1874, 2272, 0, - 0, 2385, 0, - 0, 2503, 0, - 0, 2624, 0, - 0, 2747, 0, - 0, 2873, 0, - 0, 3000, 0, - 0, 3128, 0, - 0, 3258, 0, - 0, 3388, 0, - 0, 3518, 0, - 0, 3649, 0, - 2764, 1578, 2465, - 2764, 1580, 2465, - 2763, 1582, 2464, - 2763, 1585, 2463, - 2762, 1589, 2462, - 2761, 1595, 2461, - 2760, 1602, 2459, - 2759, 1612, 2457, - 2756, 1624, 2454, - 2753, 1640, 2449, - 2750, 1661, 2444, - 2744, 1687, 2436, - 2737, 1720, 2425, - 2727, 1760, 2410, - 2714, 1809, 2389, - 2695, 1868, 2360, - 2669, 1936, 2318, - 2632, 2013, 2255, - 2577, 2099, 2154, - 2490, 2194, 1970, - 2341, 2296, 1469, - 2007, 2404, 0, - 0, 2517, 0, - 0, 2635, 0, - 0, 2756, 0, - 0, 2879, 0, - 0, 3005, 0, - 0, 3132, 0, - 0, 3260, 0, - 0, 3390, 0, - 0, 3520, 0, - 0, 3650, 0, - 2896, 1708, 2597, - 2896, 1709, 2597, - 2896, 1711, 2596, - 2896, 1713, 2596, - 2895, 1716, 2595, - 2894, 1721, 2594, - 2893, 1726, 2593, - 2892, 1733, 2591, - 2891, 1743, 2589, - 2889, 1755, 2586, - 2886, 1771, 2581, - 2882, 1792, 2575, - 2876, 1818, 2568, - 2869, 1851, 2557, - 2859, 1892, 2542, - 2846, 1941, 2521, - 2828, 1999, 2492, - 2801, 2067, 2450, - 2764, 2145, 2387, - 2709, 2231, 2286, - 2622, 2326, 2101, - 2473, 2428, 1599, - 2139, 2536, 0, - 0, 2649, 0, - 0, 2767, 0, - 0, 2888, 0, - 0, 3011, 0, - 0, 3137, 0, - 0, 3264, 0, - 0, 3393, 0, - 0, 3522, 0, - 0, 3652, 0, - 3029, 1838, 2729, - 3029, 1839, 2729, - 3028, 1841, 2729, - 3028, 1842, 2728, - 3028, 1845, 2728, - 3027, 1848, 2727, - 3027, 1852, 2726, - 3026, 1858, 2725, - 3024, 1865, 2723, - 3023, 1874, 2721, - 3021, 1887, 2717, - 3018, 1903, 2713, - 3014, 1924, 2707, - 3009, 1950, 2699, - 3001, 1983, 2689, - 2992, 2024, 2674, - 2978, 2073, 2653, - 2960, 2131, 2624, - 2934, 2199, 2582, - 2896, 2277, 2519, - 2841, 2363, 2418, - 2755, 2458, 2233, - 2605, 2560, 1730, - 2272, 2668, 0, - 0, 2781, 0, - 0, 2899, 0, - 0, 3020, 0, - 0, 3143, 0, - 0, 3269, 0, - 0, 3396, 0, - 0, 3525, 0, - 0, 3654, 0, - 3161, 1969, 2861, - 3161, 1970, 2861, - 3161, 1971, 2861, - 3160, 1972, 2861, - 3160, 1974, 2860, - 3160, 1976, 2860, - 3159, 1980, 2859, - 3159, 1984, 2858, - 3158, 1989, 2857, - 3157, 1996, 2855, - 3155, 2006, 2853, - 3153, 2018, 2849, - 3150, 2035, 2845, - 3146, 2055, 2839, - 3141, 2082, 2831, - 3134, 2115, 2821, - 3124, 2155, 2806, - 3110, 2205, 2785, - 3092, 2263, 2756, - 3066, 2331, 2714, - 3028, 2409, 2651, - 2973, 2495, 2549, - 2887, 2590, 2365, - 2737, 2692, 1861, - 2404, 2800, 0, - 0, 2913, 0, - 0, 3031, 0, - 0, 3152, 0, - 0, 3276, 0, - 0, 3401, 0, - 0, 3528, 0, - 0, 3657, 0, - 3293, 2100, 2994, - 3293, 2101, 2993, - 3293, 2102, 2993, - 3293, 2103, 2993, - 3293, 2104, 2993, - 3292, 2106, 2992, - 3292, 2108, 2992, - 3291, 2111, 2991, - 3291, 2115, 2990, - 3290, 2121, 2989, - 3289, 2128, 2987, - 3287, 2138, 2985, - 3285, 2150, 2981, - 3282, 2166, 2977, - 3278, 2187, 2971, - 3273, 2213, 2963, - 3266, 2246, 2953, - 3256, 2287, 2938, - 3242, 2336, 2917, - 3224, 2395, 2888, - 3198, 2463, 2846, - 3161, 2541, 2783, - 3105, 2627, 2681, - 3019, 2722, 2497, - 2870, 2824, 1992, - 2536, 2932, 0, - 0, 3046, 0, - 0, 3163, 0, - 0, 3284, 0, - 0, 3408, 0, - 0, 3533, 0, - 0, 3660, 0, - 3425, 2232, 3126, - 3425, 2232, 3126, - 3425, 2233, 3125, - 3425, 2233, 3125, - 3425, 2234, 3125, - 3425, 2236, 3125, - 3424, 2238, 3124, - 3424, 2240, 3124, - 3424, 2243, 3123, - 3423, 2247, 3122, - 3422, 2253, 3121, - 3421, 2260, 3119, - 3419, 2270, 3117, - 3417, 2282, 3113, - 3414, 2298, 3109, - 3410, 2319, 3103, - 3405, 2345, 3095, - 3398, 2378, 3085, - 3388, 2419, 3070, - 3375, 2468, 3049, - 3356, 2527, 3020, - 3330, 2595, 2978, - 3293, 2673, 2915, - 3237, 2759, 2813, - 3151, 2854, 2629, - 3002, 2956, 2124, - 2668, 3064, 0, - 0, 3178, 0, - 0, 3295, 0, - 0, 3416, 0, - 0, 3540, 0, - 0, 3665, 0, - 3557, 2363, 3258, - 3557, 2364, 3258, - 3557, 2364, 3258, - 3557, 2365, 3258, - 3557, 2365, 3257, - 3557, 2366, 3257, - 3557, 2368, 3257, - 3557, 2370, 3256, - 3556, 2372, 3256, - 3556, 2375, 3255, - 3555, 2379, 3254, - 3554, 2385, 3253, - 3553, 2392, 3251, - 3551, 2402, 3249, - 3549, 2414, 3245, - 3546, 2430, 3241, - 3542, 2451, 3235, - 3537, 2477, 3227, - 3530, 2510, 3217, - 3520, 2551, 3202, - 3507, 2600, 3181, - 3488, 2659, 3152, - 3462, 2727, 3110, - 3425, 2805, 3047, - 3369, 2891, 2945, - 3283, 2986, 2760, - 3134, 3088, 2255, - 2800, 3196, 0, - 0, 3310, 0, - 0, 3427, 0, - 0, 3548, 0, - 0, 3672, 0, - 3690, 2495, 3390, - 3690, 2495, 3390, - 3690, 2496, 3390, - 3689, 2496, 3390, - 3689, 2497, 3390, - 3689, 2497, 3389, - 3689, 2498, 3389, - 3689, 2500, 3389, - 3689, 2501, 3388, - 3688, 2504, 3388, - 3688, 2507, 3387, - 3687, 2511, 3386, - 3686, 2517, 3385, - 3685, 2524, 3383, - 3683, 2534, 3381, - 3681, 2546, 3378, - 3678, 2562, 3373, - 3674, 2583, 3367, - 3669, 2609, 3360, - 3662, 2642, 3349, - 3652, 2683, 3334, - 3639, 2732, 3313, - 3620, 2791, 3284, - 3594, 2859, 3242, - 3557, 2937, 3179, - 3502, 3023, 3077, - 3415, 3118, 2892, - 3266, 3220, 2387, - 2933, 3328, 0, - 0, 3442, 0, - 0, 3559, 0, - 0, 3680, 0, - 3822, 2627, 3522, - 3822, 2627, 3522, - 3822, 2627, 3522, - 3822, 2628, 3522, - 3822, 2628, 3522, - 3822, 2629, 3522, - 3821, 2629, 3521, - 3821, 2630, 3521, - 3821, 2632, 3521, - 3821, 2633, 3521, - 3820, 2636, 3520, - 3820, 2639, 3519, - 3819, 2643, 3518, - 3818, 2649, 3517, - 3817, 2656, 3515, - 3816, 2666, 3513, - 3813, 2678, 3510, - 3810, 2694, 3505, - 3807, 2715, 3499, - 3801, 2741, 3492, - 3794, 2774, 3481, - 3784, 2815, 3466, - 3771, 2864, 3445, - 3752, 2923, 3416, - 3726, 2991, 3374, - 3689, 3069, 3311, - 3634, 3155, 3209, - 3547, 3250, 3024, - 3398, 3352, 2519, - 3065, 3460, 0, - 0, 3574, 0, - 0, 3691, 0, - 3954, 2759, 3654, - 3954, 2759, 3654, - 3954, 2759, 3654, - 3954, 2759, 3654, - 3954, 2760, 3654, - 3954, 2760, 3654, - 3954, 2761, 3654, - 3953, 2761, 3654, - 3953, 2762, 3653, - 3953, 2764, 3653, - 3953, 2765, 3653, - 3952, 2768, 3652, - 3952, 2771, 3651, - 3951, 2775, 3650, - 3950, 2781, 3649, - 3949, 2788, 3647, - 3948, 2798, 3645, - 3945, 2810, 3642, - 3943, 2826, 3637, - 3939, 2847, 3632, - 3933, 2873, 3624, - 3926, 2906, 3613, - 3916, 2947, 3598, - 3903, 2996, 3577, - 3884, 3055, 3548, - 3858, 3123, 3506, - 3821, 3201, 3443, - 3766, 3287, 3341, - 3679, 3382, 3156, - 3530, 3484, 2651, - 3197, 3592, 0, - 0, 3706, 0, - 4086, 2891, 3786, - 4086, 2891, 3786, - 4086, 2891, 3786, - 4086, 2891, 3786, - 4086, 2891, 3786, - 4086, 2892, 3786, - 4086, 2892, 3786, - 4086, 2893, 3786, - 4086, 2893, 3786, - 4085, 2894, 3785, - 4085, 2896, 3785, - 4085, 2897, 3785, - 4085, 2900, 3784, - 4084, 2903, 3783, - 4083, 2907, 3782, - 4083, 2913, 3781, - 4081, 2920, 3779, - 4080, 2930, 3777, - 4078, 2942, 3774, - 4075, 2958, 3769, - 4071, 2979, 3764, - 4065, 3005, 3756, - 4058, 3038, 3745, - 4049, 3079, 3730, - 4035, 3128, 3709, - 4017, 3187, 3680, - 3991, 3255, 3638, - 3953, 3333, 3575, - 3898, 3419, 3473, - 3812, 3514, 3289, - 3662, 3616, 2783, - 3329, 3725, 0, - 4095, 3023, 3918, - 4095, 3023, 3918, - 4095, 3023, 3918, - 4095, 3023, 3918, - 4095, 3023, 3918, - 4095, 3023, 3918, - 4095, 3024, 3918, - 4095, 3024, 3918, - 4095, 3025, 3918, - 4095, 3025, 3918, - 4095, 3026, 3917, - 4095, 3028, 3917, - 4095, 3030, 3917, - 4095, 3032, 3916, - 4095, 3035, 3915, - 4095, 3039, 3915, - 4095, 3045, 3913, - 4095, 3052, 3911, - 4095, 3062, 3909, - 4095, 3074, 3906, - 4095, 3090, 3902, - 4095, 3111, 3896, - 4095, 3137, 3888, - 4095, 3170, 3877, - 4095, 3211, 3862, - 4095, 3261, 3842, - 4095, 3319, 3812, - 4095, 3387, 3770, - 4085, 3465, 3707, - 4030, 3551, 3605, - 3944, 3646, 3421, - 3794, 3748, 2915, - 4095, 3155, 4050, - 4095, 3155, 4050, - 4095, 3155, 4050, - 4095, 3155, 4050, - 4095, 3155, 4050, - 4095, 3155, 4050, - 4095, 3155, 4050, - 4095, 3156, 4050, - 4095, 3156, 4050, - 4095, 3157, 4050, - 4095, 3157, 4050, - 4095, 3158, 4050, - 4095, 3160, 4049, - 4095, 3162, 4049, - 4095, 3164, 4048, - 4095, 3167, 4048, - 4095, 3171, 4047, - 4095, 3177, 4045, - 4095, 3184, 4044, - 4095, 3194, 4041, - 4095, 3206, 4038, - 4095, 3222, 4034, - 4095, 3243, 4028, - 4095, 3270, 4020, - 4095, 3303, 4009, - 4095, 3343, 3994, - 4095, 3393, 3974, - 4095, 3451, 3944, - 4095, 3519, 3902, - 4095, 3597, 3839, - 4095, 3684, 3738, - 4076, 3778, 3553, - 0, 0, 0, - 0, 0, 0, - 0, 49, 0, - 0, 132, 0, - 0, 224, 0, - 0, 324, 0, - 0, 430, 0, - 0, 542, 0, - 0, 658, 0, - 0, 778, 0, - 0, 901, 0, - 0, 1025, 0, - 0, 1152, 0, - 0, 1280, 0, - 0, 1409, 0, - 0, 1539, 0, - 0, 1669, 0, - 0, 1800, 0, - 0, 1931, 0, - 0, 2063, 0, - 0, 2194, 0, - 0, 2326, 0, - 0, 2458, 0, - 0, 2589, 0, - 0, 2721, 0, - 0, 2853, 0, - 0, 2985, 0, - 0, 3117, 0, - 0, 3249, 0, - 0, 3381, 0, - 0, 3514, 0, - 0, 3646, 0, - 104, 0, 80, - 0, 0, 0, - 0, 66, 0, - 0, 147, 0, - 0, 236, 0, - 0, 333, 0, - 0, 438, 0, - 0, 548, 0, - 0, 662, 0, - 0, 781, 0, - 0, 903, 0, - 0, 1028, 0, - 0, 1154, 0, - 0, 1281, 0, - 0, 1410, 0, - 0, 1540, 0, - 0, 1670, 0, - 0, 1800, 0, - 0, 1931, 0, - 0, 2063, 0, - 0, 2194, 0, - 0, 2326, 0, - 0, 2458, 0, - 0, 2590, 0, - 0, 2721, 0, - 0, 2853, 0, - 0, 2985, 0, - 0, 3117, 0, - 0, 3249, 0, - 0, 3381, 0, - 0, 3514, 0, - 0, 3646, 0, - 326, 0, 214, - 262, 20, 152, - 160, 88, 54, - 0, 165, 0, - 0, 251, 0, - 0, 346, 0, - 0, 447, 0, - 0, 555, 0, - 0, 668, 0, - 0, 786, 0, - 0, 907, 0, - 0, 1030, 0, - 0, 1156, 0, - 0, 1283, 0, - 0, 1411, 0, - 0, 1540, 0, - 0, 1670, 0, - 0, 1801, 0, - 0, 1932, 0, - 0, 2063, 0, - 0, 2194, 0, - 0, 2326, 0, - 0, 2458, 0, - 0, 2590, 0, - 0, 2722, 0, - 0, 2853, 0, - 0, 2985, 0, - 0, 3117, 0, - 0, 3249, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 515, 0, 347, - 474, 52, 302, - 413, 116, 234, - 315, 188, 122, - 139, 271, 0, - 0, 361, 0, - 0, 460, 0, - 0, 565, 0, - 0, 676, 0, - 0, 792, 0, - 0, 911, 0, - 0, 1034, 0, - 0, 1158, 0, - 0, 1285, 0, - 0, 1413, 0, - 0, 1542, 0, - 0, 1671, 0, - 0, 1802, 0, - 0, 1932, 0, - 0, 2063, 0, - 0, 2195, 0, - 0, 2326, 0, - 0, 2458, 0, - 0, 2590, 0, - 0, 2722, 0, - 0, 2854, 0, - 0, 2985, 0, - 0, 3117, 0, - 0, 3249, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 686, 42, 481, - 658, 92, 447, - 618, 150, 399, - 558, 218, 324, - 463, 295, 200, - 295, 382, 0, - 0, 477, 0, - 0, 579, 0, - 0, 687, 0, - 0, 800, 0, - 0, 918, 0, - 0, 1039, 0, - 0, 1162, 0, - 0, 1288, 0, - 0, 1415, 0, - 0, 1543, 0, - 0, 1673, 0, - 0, 1802, 0, - 0, 1933, 0, - 0, 2064, 0, - 0, 2195, 0, - 0, 2327, 0, - 0, 2458, 0, - 0, 2590, 0, - 0, 2722, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 844, 96, 614, - 825, 140, 589, - 798, 192, 554, - 758, 255, 502, - 700, 327, 422, - 607, 408, 287, - 444, 498, 4, - 53, 596, 0, - 0, 700, 0, - 0, 811, 0, - 0, 926, 0, - 0, 1045, 0, - 0, 1167, 0, - 0, 1291, 0, - 0, 1418, 0, - 0, 1545, 0, - 0, 1674, 0, - 0, 1804, 0, - 0, 1934, 0, - 0, 2065, 0, - 0, 2196, 0, - 0, 2327, 0, - 0, 2458, 0, - 0, 2590, 0, - 0, 2722, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 996, 158, 746, - 982, 197, 728, - 963, 244, 702, - 936, 300, 666, - 897, 365, 611, - 839, 440, 527, - 748, 525, 382, - 589, 617, 65, - 214, 718, 0, - 0, 824, 0, - 0, 936, 0, - 0, 1053, 0, - 0, 1173, 0, - 0, 1296, 0, - 0, 1421, 0, - 0, 1548, 0, - 0, 1676, 0, - 0, 1805, 0, - 0, 1935, 0, - 0, 2065, 0, - 0, 2196, 0, - 0, 2327, 0, - 0, 2459, 0, - 0, 2590, 0, - 0, 2722, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1141, 230, 879, - 1131, 263, 865, - 1118, 304, 846, - 1099, 354, 820, - 1072, 412, 782, - 1034, 481, 726, - 976, 558, 638, - 887, 645, 484, - 730, 740, 135, - 367, 842, 0, - 0, 950, 0, - 0, 1064, 0, - 0, 1181, 0, - 0, 1302, 0, - 0, 1426, 0, - 0, 1552, 0, - 0, 1679, 0, - 0, 1807, 0, - 0, 1937, 0, - 0, 2067, 0, - 0, 2197, 0, - 0, 2328, 0, - 0, 2459, 0, - 0, 2591, 0, - 0, 2722, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1284, 312, 1011, - 1276, 340, 1001, - 1266, 374, 987, - 1253, 417, 968, - 1234, 468, 941, - 1207, 529, 902, - 1169, 600, 844, - 1112, 679, 753, - 1024, 768, 593, - 869, 865, 214, - 514, 968, 0, - 0, 1078, 0, - 0, 1192, 0, - 0, 1311, 0, - 0, 1432, 0, - 0, 1557, 0, - 0, 1683, 0, - 0, 1810, 0, - 0, 1939, 0, - 0, 2068, 0, - 0, 2198, 0, - 0, 2329, 0, - 0, 2460, 0, - 0, 2591, 0, - 0, 2723, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1423, 402, 1144, - 1418, 425, 1136, - 1410, 454, 1126, - 1401, 490, 1112, - 1387, 534, 1092, - 1368, 587, 1064, - 1342, 650, 1025, - 1304, 722, 966, - 1247, 803, 872, - 1159, 893, 706, - 1006, 991, 302, - 657, 1096, 0, - 0, 1206, 0, - 0, 1322, 0, - 0, 1441, 0, - 0, 1563, 0, - 0, 1687, 0, - 0, 1814, 0, - 0, 1941, 0, - 0, 2070, 0, - 0, 2200, 0, - 0, 2330, 0, - 0, 2461, 0, - 0, 2592, 0, - 0, 2723, 0, - 0, 2855, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1561, 500, 1276, - 1557, 518, 1270, - 1551, 542, 1263, - 1544, 572, 1252, - 1534, 609, 1238, - 1521, 655, 1218, - 1502, 709, 1190, - 1476, 773, 1150, - 1438, 846, 1090, - 1382, 929, 994, - 1294, 1020, 824, - 1142, 1119, 399, - 797, 1225, 0, - 0, 1336, 0, - 0, 1452, 0, - 0, 1571, 0, - 0, 1694, 0, - 0, 1819, 0, - 0, 1945, 0, - 0, 2073, 0, - 0, 2202, 0, - 0, 2332, 0, - 0, 2462, 0, - 0, 2593, 0, - 0, 2724, 0, - 0, 2855, 0, - 0, 2987, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1697, 605, 1408, - 1694, 619, 1404, - 1690, 639, 1398, - 1684, 663, 1391, - 1677, 694, 1380, - 1667, 732, 1366, - 1654, 778, 1346, - 1635, 833, 1317, - 1609, 898, 1277, - 1571, 973, 1216, - 1515, 1056, 1119, - 1428, 1148, 945, - 1277, 1248, 502, - 935, 1354, 0, - 0, 1466, 0, - 0, 1582, 0, - 0, 1702, 0, - 0, 1825, 0, - 0, 1950, 0, - 0, 2077, 0, - 0, 2205, 0, - 0, 2334, 0, - 0, 2464, 0, - 0, 2594, 0, - 0, 2725, 0, - 0, 2856, 0, - 0, 2987, 0, - 0, 3119, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1832, 715, 1540, - 1830, 727, 1537, - 1827, 742, 1533, - 1823, 761, 1527, - 1817, 786, 1519, - 1810, 818, 1509, - 1800, 856, 1494, - 1787, 903, 1474, - 1768, 959, 1446, - 1742, 1025, 1405, - 1704, 1100, 1343, - 1649, 1185, 1245, - 1562, 1277, 1069, - 1411, 1378, 612, - 1071, 1484, 0, - 0, 1597, 0, - 0, 1713, 0, - 0, 1833, 0, - 0, 1956, 0, - 0, 2082, 0, - 0, 2208, 0, - 0, 2337, 0, - 0, 2466, 0, - 0, 2596, 0, - 0, 2726, 0, - 0, 2857, 0, - 0, 2988, 0, - 0, 3119, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3514, 0, - 0, 3646, 0, - 1966, 830, 1672, - 1964, 840, 1670, - 1962, 851, 1667, - 1959, 867, 1663, - 1955, 887, 1657, - 1950, 912, 1649, - 1943, 943, 1639, - 1933, 983, 1624, - 1920, 1030, 1604, - 1901, 1087, 1575, - 1875, 1153, 1534, - 1837, 1229, 1472, - 1782, 1314, 1373, - 1695, 1407, 1194, - 1544, 1508, 726, - 1206, 1615, 0, - 0, 1728, 0, - 0, 1845, 0, - 0, 1965, 0, - 0, 2088, 0, - 0, 2213, 0, - 0, 2340, 0, - 0, 2468, 0, - 0, 2598, 0, - 0, 2728, 0, - 0, 2858, 0, - 0, 2989, 0, - 0, 3120, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3646, 0, - 2100, 950, 1805, - 2099, 957, 1803, - 2097, 966, 1801, - 2095, 978, 1797, - 2092, 993, 1793, - 2088, 1013, 1787, - 2083, 1039, 1780, - 2075, 1071, 1769, - 2066, 1110, 1754, - 2052, 1159, 1734, - 2034, 1216, 1705, - 2007, 1282, 1663, - 1970, 1359, 1601, - 1914, 1444, 1502, - 1828, 1538, 1322, - 1678, 1639, 844, - 1341, 1746, 0, - 0, 1859, 0, - 0, 1976, 0, - 0, 2097, 0, - 0, 2220, 0, - 0, 2345, 0, - 0, 2472, 0, - 0, 2600, 0, - 0, 2730, 0, - 0, 2860, 0, - 0, 2990, 0, - 0, 3121, 0, - 0, 3252, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3647, 0, - 2233, 1072, 1937, - 2232, 1077, 1935, - 2231, 1084, 1934, - 2229, 1093, 1931, - 2227, 1106, 1928, - 2224, 1121, 1924, - 2220, 1142, 1918, - 2215, 1167, 1910, - 2208, 1200, 1900, - 2198, 1239, 1885, - 2185, 1288, 1864, - 2166, 1345, 1836, - 2140, 1412, 1794, - 2103, 1489, 1731, - 2047, 1575, 1631, - 1960, 1669, 1450, - 1810, 1770, 966, - 1475, 1878, 0, - 0, 1990, 0, - 0, 2108, 0, - 0, 2228, 0, - 0, 2352, 0, - 0, 2477, 0, - 0, 2604, 0, - 0, 2732, 0, - 0, 2862, 0, - 0, 2992, 0, - 0, 3122, 0, - 0, 3253, 0, - 0, 3384, 0, - 0, 3515, 0, - 0, 3647, 0, - 2366, 1196, 2069, - 2365, 1200, 2068, - 2365, 1206, 2067, - 2363, 1213, 2065, - 2362, 1222, 2063, - 2360, 1234, 2059, - 2357, 1250, 2055, - 2353, 1271, 2049, - 2347, 1297, 2041, - 2340, 1329, 2031, - 2330, 1369, 2016, - 2317, 1418, 1995, - 2298, 1475, 1966, - 2272, 1543, 1925, - 2235, 1620, 1862, - 2180, 1706, 1762, - 2093, 1800, 1579, - 1943, 1901, 1090, - 1608, 2009, 0, - 0, 2122, 0, - 0, 2239, 0, - 0, 2360, 0, - 0, 2483, 0, - 0, 2609, 0, - 0, 2736, 0, - 0, 2864, 0, - 0, 2994, 0, - 0, 3124, 0, - 0, 3254, 0, - 0, 3385, 0, - 0, 3516, 0, - 0, 3648, 0, - 2499, 1323, 2201, - 2498, 1326, 2200, - 2498, 1330, 2199, - 2497, 1335, 2198, - 2496, 1342, 2196, - 2494, 1352, 2194, - 2492, 1364, 2191, - 2489, 1380, 2186, - 2485, 1400, 2181, - 2480, 1426, 2173, - 2473, 1459, 2162, - 2463, 1499, 2147, - 2449, 1548, 2127, - 2431, 1606, 2098, - 2405, 1674, 2056, - 2367, 1751, 1993, - 2312, 1837, 1892, - 2225, 1931, 1709, - 2076, 2033, 1216, - 1741, 2141, 0, - 0, 2254, 0, - 0, 2371, 0, - 0, 2492, 0, - 0, 2615, 0, - 0, 2741, 0, - 0, 2868, 0, - 0, 2996, 0, - 0, 3126, 0, - 0, 3256, 0, - 0, 3386, 0, - 0, 3517, 0, - 0, 3648, 0, - 2631, 1450, 2333, - 2631, 1453, 2333, - 2631, 1456, 2332, - 2630, 1460, 2331, - 2629, 1465, 2330, - 2628, 1473, 2328, - 2626, 1482, 2325, - 2624, 1494, 2322, - 2621, 1510, 2318, - 2617, 1531, 2312, - 2612, 1557, 2304, - 2605, 1590, 2294, - 2595, 1630, 2279, - 2582, 1679, 2258, - 2563, 1737, 2229, - 2537, 1805, 2187, - 2500, 1882, 2124, - 2444, 1968, 2023, - 2358, 2063, 1840, - 2208, 2164, 1343, - 1874, 2272, 0, - 0, 2386, 0, - 0, 2503, 0, - 0, 2624, 0, - 0, 2747, 0, - 0, 2873, 0, - 0, 3000, 0, - 0, 3128, 0, - 0, 3258, 0, - 0, 3388, 0, - 0, 3518, 0, - 0, 3649, 0, - 2764, 1579, 2465, - 2764, 1581, 2465, - 2763, 1583, 2464, - 2763, 1586, 2464, - 2762, 1590, 2463, - 2761, 1596, 2461, - 2760, 1603, 2460, - 2758, 1613, 2457, - 2756, 1625, 2454, - 2753, 1641, 2450, - 2749, 1662, 2444, - 2744, 1688, 2436, - 2737, 1721, 2425, - 2727, 1761, 2410, - 2714, 1810, 2390, - 2695, 1868, 2361, - 2669, 1936, 2319, - 2632, 2013, 2256, - 2576, 2100, 2155, - 2490, 2194, 1971, - 2341, 2296, 1472, - 2006, 2404, 0, - 0, 2518, 0, - 0, 2635, 0, - 0, 2756, 0, - 0, 2879, 0, - 0, 3005, 0, - 0, 3132, 0, - 0, 3261, 0, - 0, 3390, 0, - 0, 3520, 0, - 0, 3650, 0, - 2896, 1709, 2597, - 2896, 1710, 2597, - 2896, 1712, 2597, - 2895, 1714, 2596, - 2895, 1717, 2595, - 2894, 1721, 2594, - 2893, 1727, 2593, - 2892, 1734, 2591, - 2891, 1744, 2589, - 2888, 1756, 2586, - 2886, 1772, 2581, - 2882, 1793, 2576, - 2876, 1819, 2568, - 2869, 1852, 2557, - 2859, 1892, 2542, - 2846, 1942, 2522, - 2827, 2000, 2492, - 2801, 2068, 2450, - 2764, 2145, 2387, - 2709, 2232, 2286, - 2622, 2326, 2102, - 2473, 2428, 1601, - 2139, 2536, 0, - 0, 2650, 0, - 0, 2767, 0, - 0, 2888, 0, - 0, 3011, 0, - 0, 3137, 0, - 0, 3264, 0, - 0, 3393, 0, - 0, 3522, 0, - 0, 3652, 0, - 3029, 1839, 2729, - 3029, 1840, 2729, - 3028, 1841, 2729, - 3028, 1843, 2729, - 3028, 1845, 2728, - 3027, 1849, 2727, - 3026, 1853, 2726, - 3026, 1858, 2725, - 3024, 1865, 2723, - 3023, 1875, 2721, - 3021, 1887, 2718, - 3018, 1904, 2713, - 3014, 1924, 2708, - 3009, 1950, 2700, - 3001, 1983, 2689, - 2992, 2024, 2674, - 2978, 2073, 2653, - 2960, 2132, 2624, - 2934, 2199, 2582, - 2896, 2277, 2519, - 2841, 2363, 2418, - 2754, 2458, 2234, - 2605, 2560, 1732, - 2271, 2668, 0, - 0, 2781, 0, - 0, 2899, 0, - 0, 3020, 0, - 0, 3144, 0, - 0, 3269, 0, - 0, 3396, 0, - 0, 3525, 0, - 0, 3654, 0, - 3161, 1970, 2862, - 3161, 1970, 2861, - 3161, 1971, 2861, - 3160, 1973, 2861, - 3160, 1975, 2860, - 3160, 1977, 2860, - 3159, 1980, 2859, - 3159, 1984, 2858, - 3158, 1990, 2857, - 3157, 1997, 2855, - 3155, 2006, 2853, - 3153, 2019, 2850, - 3150, 2035, 2845, - 3146, 2056, 2839, - 3141, 2082, 2832, - 3133, 2115, 2821, - 3124, 2156, 2806, - 3110, 2205, 2785, - 3092, 2263, 2756, - 3066, 2331, 2714, - 3028, 2409, 2651, - 2973, 2495, 2550, - 2887, 2590, 2365, - 2737, 2692, 1862, - 2404, 2800, 0, - 0, 2914, 0, - 0, 3031, 0, - 0, 3152, 0, - 0, 3276, 0, - 0, 3401, 0, - 0, 3528, 0, - 0, 3657, 0, - 3293, 2101, 2994, - 3293, 2101, 2994, - 3293, 2102, 2993, - 3293, 2103, 2993, - 3293, 2104, 2993, - 3292, 2106, 2992, - 3292, 2109, 2992, - 3291, 2112, 2991, - 3291, 2116, 2990, - 3290, 2121, 2989, - 3289, 2129, 2987, - 3287, 2138, 2985, - 3285, 2151, 2982, - 3282, 2167, 2977, - 3278, 2187, 2971, - 3273, 2214, 2963, - 3266, 2247, 2953, - 3256, 2287, 2938, - 3242, 2337, 2917, - 3224, 2395, 2888, - 3198, 2463, 2846, - 3160, 2541, 2783, - 3105, 2627, 2681, - 3019, 2722, 2497, - 2870, 2824, 1993, - 2536, 2932, 0, - 0, 3046, 0, - 0, 3163, 0, - 0, 3284, 0, - 0, 3408, 0, - 0, 3533, 0, - 0, 3660, 0, - 3425, 2232, 3126, - 3425, 2232, 3126, - 3425, 2233, 3126, - 3425, 2234, 3125, - 3425, 2235, 3125, - 3425, 2236, 3125, - 3424, 2238, 3124, - 3424, 2240, 3124, - 3424, 2243, 3123, - 3423, 2248, 3122, - 3422, 2253, 3121, - 3421, 2260, 3119, - 3419, 2270, 3117, - 3417, 2282, 3114, - 3414, 2299, 3109, - 3410, 2319, 3103, - 3405, 2346, 3095, - 3398, 2379, 3085, - 3388, 2419, 3070, - 3375, 2469, 3049, - 3356, 2527, 3020, - 3330, 2595, 2978, - 3293, 2673, 2915, - 3237, 2759, 2813, - 3151, 2854, 2629, - 3002, 2956, 2124, - 2668, 3064, 0, - 0, 3178, 0, - 0, 3295, 0, - 0, 3416, 0, - 0, 3540, 0, - 0, 3665, 0, - 3557, 2364, 3258, - 3557, 2364, 3258, - 3557, 2364, 3258, - 3557, 2365, 3258, - 3557, 2366, 3257, - 3557, 2367, 3257, - 3557, 2368, 3257, - 3557, 2370, 3256, - 3556, 2372, 3256, - 3556, 2375, 3255, - 3555, 2379, 3254, - 3554, 2385, 3253, - 3553, 2392, 3251, - 3551, 2402, 3249, - 3549, 2414, 3246, - 3546, 2430, 3241, - 3542, 2451, 3235, - 3537, 2477, 3228, - 3530, 2510, 3217, - 3520, 2551, 3202, - 3507, 2600, 3181, - 3488, 2659, 3152, - 3462, 2727, 3110, - 3425, 2805, 3047, - 3369, 2891, 2945, - 3283, 2986, 2761, - 3134, 3088, 2256, - 2800, 3196, 0, - 0, 3310, 0, - 0, 3427, 0, - 0, 3548, 0, - 0, 3672, 0, - 3690, 2495, 3390, - 3690, 2495, 3390, - 3690, 2496, 3390, - 3689, 2496, 3390, - 3689, 2497, 3390, - 3689, 2497, 3389, - 3689, 2498, 3389, - 3689, 2500, 3389, - 3689, 2502, 3389, - 3688, 2504, 3388, - 3688, 2507, 3387, - 3687, 2511, 3386, - 3686, 2517, 3385, - 3685, 2524, 3383, - 3683, 2534, 3381, - 3681, 2546, 3378, - 3678, 2562, 3373, - 3674, 2583, 3367, - 3669, 2609, 3360, - 3662, 2642, 3349, - 3652, 2683, 3334, - 3639, 2732, 3313, - 3620, 2791, 3284, - 3594, 2859, 3242, - 3557, 2937, 3179, - 3502, 3023, 3077, - 3415, 3118, 2893, - 3266, 3220, 2387, - 2933, 3328, 0, - 0, 3442, 0, - 0, 3559, 0, - 0, 3680, 0, - 3822, 2627, 3522, - 3822, 2627, 3522, - 3822, 2627, 3522, - 3822, 2628, 3522, - 3822, 2628, 3522, - 3821, 2629, 3522, - 3821, 2629, 3522, - 3821, 2630, 3521, - 3821, 2632, 3521, - 3821, 2634, 3521, - 3820, 2636, 3520, - 3820, 2639, 3519, - 3819, 2643, 3518, - 3818, 2649, 3517, - 3817, 2656, 3515, - 3815, 2666, 3513, - 3813, 2678, 3510, - 3810, 2694, 3505, - 3807, 2715, 3500, - 3801, 2741, 3492, - 3794, 2774, 3481, - 3784, 2815, 3466, - 3771, 2864, 3445, - 3752, 2923, 3416, - 3726, 2991, 3374, - 3689, 3069, 3311, - 3634, 3155, 3209, - 3547, 3250, 3025, - 3398, 3352, 2519, - 3065, 3460, 0, - 0, 3574, 0, - 0, 3691, 0, - 3954, 2759, 3654, - 3954, 2759, 3654, - 3954, 2759, 3654, - 3954, 2759, 3654, - 3954, 2760, 3654, - 3954, 2760, 3654, - 3954, 2761, 3654, - 3953, 2761, 3654, - 3953, 2762, 3653, - 3953, 2764, 3653, - 3953, 2766, 3653, - 3952, 2768, 3652, - 3952, 2771, 3651, - 3951, 2775, 3650, - 3950, 2781, 3649, - 3949, 2788, 3647, - 3948, 2798, 3645, - 3945, 2810, 3642, - 3943, 2826, 3637, - 3939, 2847, 3632, - 3933, 2873, 3624, - 3926, 2906, 3613, - 3916, 2947, 3598, - 3903, 2996, 3577, - 3884, 3055, 3548, - 3858, 3123, 3506, - 3821, 3201, 3443, - 3766, 3287, 3341, - 3679, 3382, 3157, - 3530, 3484, 2651, - 3197, 3592, 0, - 0, 3706, 0, - 4086, 2891, 3786, - 4086, 2891, 3786, - 4086, 2891, 3786, - 4086, 2891, 3786, - 4086, 2891, 3786, - 4086, 2892, 3786, - 4086, 2892, 3786, - 4086, 2893, 3786, - 4086, 2893, 3786, - 4085, 2894, 3785, - 4085, 2896, 3785, - 4085, 2898, 3785, - 4085, 2900, 3784, - 4084, 2903, 3783, - 4083, 2907, 3782, - 4083, 2913, 3781, - 4081, 2920, 3779, - 4080, 2930, 3777, - 4078, 2942, 3774, - 4075, 2958, 3769, - 4071, 2979, 3764, - 4065, 3005, 3756, - 4058, 3038, 3745, - 4049, 3079, 3730, - 4035, 3129, 3709, - 4017, 3187, 3680, - 3991, 3255, 3638, - 3953, 3333, 3575, - 3898, 3419, 3473, - 3811, 3514, 3289, - 3662, 3616, 2783, - 3329, 3725, 0, - 4095, 3023, 3918, - 4095, 3023, 3918, - 4095, 3023, 3918, - 4095, 3023, 3918, - 4095, 3023, 3918, - 4095, 3023, 3918, - 4095, 3024, 3918, - 4095, 3024, 3918, - 4095, 3025, 3918, - 4095, 3025, 3918, - 4095, 3026, 3918, - 4095, 3028, 3917, - 4095, 3030, 3917, - 4095, 3032, 3916, - 4095, 3035, 3916, - 4095, 3039, 3915, - 4095, 3045, 3913, - 4095, 3052, 3911, - 4095, 3062, 3909, - 4095, 3074, 3906, - 4095, 3090, 3902, - 4095, 3111, 3896, - 4095, 3137, 3888, - 4095, 3171, 3877, - 4095, 3211, 3862, - 4095, 3261, 3842, - 4095, 3319, 3812, - 4095, 3387, 3770, - 4085, 3465, 3707, - 4030, 3551, 3605, - 3944, 3646, 3421, - 3794, 3748, 2915, - 4095, 3155, 4050, - 4095, 3155, 4050, - 4095, 3155, 4050, - 4095, 3155, 4050, - 4095, 3155, 4050, - 4095, 3155, 4050, - 4095, 3155, 4050, - 4095, 3156, 4050, - 4095, 3156, 4050, - 4095, 3157, 4050, - 4095, 3158, 4050, - 4095, 3159, 4050, - 4095, 3160, 4049, - 4095, 3162, 4049, - 4095, 3164, 4048, - 4095, 3167, 4048, - 4095, 3171, 4047, - 4095, 3177, 4045, - 4095, 3184, 4044, - 4095, 3194, 4041, - 4095, 3206, 4038, - 4095, 3222, 4034, - 4095, 3243, 4028, - 4095, 3270, 4020, - 4095, 3303, 4009, - 4095, 3343, 3994, - 4095, 3393, 3974, - 4095, 3451, 3944, - 4095, 3519, 3902, - 4095, 3597, 3839, - 4095, 3684, 3738, - 4076, 3778, 3553, - 0, 0, 36, - 0, 24, 0, - 0, 91, 0, - 0, 168, 0, - 0, 254, 0, - 0, 348, 0, - 0, 449, 0, - 0, 557, 0, - 0, 669, 0, - 0, 787, 0, - 0, 907, 0, - 0, 1031, 0, - 0, 1156, 0, - 0, 1283, 0, - 0, 1411, 0, - 0, 1541, 0, - 0, 1671, 0, - 0, 1801, 0, - 0, 1932, 0, - 0, 2063, 0, - 0, 2195, 0, - 0, 2326, 0, - 0, 2458, 0, - 0, 2590, 0, - 0, 2722, 0, - 0, 2853, 0, - 0, 2985, 0, - 0, 3117, 0, - 0, 3249, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 67, 0, 149, - 0, 42, 77, - 0, 107, 0, - 0, 181, 0, - 0, 264, 0, - 0, 356, 0, - 0, 456, 0, - 0, 562, 0, - 0, 674, 0, - 0, 790, 0, - 0, 910, 0, - 0, 1033, 0, - 0, 1158, 0, - 0, 1284, 0, - 0, 1412, 0, - 0, 1541, 0, - 0, 1671, 0, - 0, 1801, 0, - 0, 1932, 0, - 0, 2063, 0, - 0, 2195, 0, - 0, 2326, 0, - 0, 2458, 0, - 0, 2590, 0, - 0, 2722, 0, - 0, 2853, 0, - 0, 2985, 0, - 0, 3117, 0, - 0, 3249, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 303, 13, 267, - 236, 65, 212, - 127, 127, 127, - 0, 198, 0, - 0, 279, 0, - 0, 368, 0, - 0, 465, 0, - 0, 570, 0, - 0, 680, 0, - 0, 795, 0, - 0, 913, 0, - 0, 1035, 0, - 0, 1160, 0, - 0, 1286, 0, - 0, 1413, 0, - 0, 1542, 0, - 0, 1672, 0, - 0, 1802, 0, - 0, 1933, 0, - 0, 2064, 0, - 0, 2195, 0, - 0, 2326, 0, - 0, 2458, 0, - 0, 2590, 0, - 0, 2722, 0, - 0, 2854, 0, - 0, 2985, 0, - 0, 3117, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 500, 45, 387, - 458, 94, 346, - 394, 152, 284, - 292, 220, 186, - 105, 297, 8, - 0, 383, 0, - 0, 478, 0, - 0, 579, 0, - 0, 687, 0, - 0, 801, 0, - 0, 918, 0, - 0, 1039, 0, - 0, 1162, 0, - 0, 1288, 0, - 0, 1415, 0, - 0, 1543, 0, - 0, 1673, 0, - 0, 1803, 0, - 0, 1933, 0, - 0, 2064, 0, - 0, 2195, 0, - 0, 2327, 0, - 0, 2458, 0, - 0, 2590, 0, - 0, 2722, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 676, 85, 511, - 647, 130, 480, - 606, 184, 434, - 545, 248, 366, - 447, 321, 254, - 271, 403, 43, - 0, 494, 0, - 0, 592, 0, - 0, 697, 0, - 0, 808, 0, - 0, 924, 0, - 0, 1044, 0, - 0, 1166, 0, - 0, 1291, 0, - 0, 1417, 0, - 0, 1545, 0, - 0, 1674, 0, - 0, 1803, 0, - 0, 1934, 0, - 0, 2064, 0, - 0, 2196, 0, - 0, 2327, 0, - 0, 2458, 0, - 0, 2590, 0, - 0, 2722, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 837, 134, 636, - 818, 175, 613, - 790, 224, 579, - 750, 282, 531, - 690, 350, 456, - 596, 428, 332, - 427, 514, 85, - 12, 609, 0, - 0, 711, 0, - 0, 819, 0, - 0, 932, 0, - 0, 1050, 0, - 0, 1171, 0, - 0, 1294, 0, - 0, 1420, 0, - 0, 1547, 0, - 0, 1675, 0, - 0, 1805, 0, - 0, 1935, 0, - 0, 2065, 0, - 0, 2196, 0, - 0, 2327, 0, - 0, 2459, 0, - 0, 2590, 0, - 0, 2722, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 991, 192, 763, - 977, 228, 746, - 957, 272, 721, - 930, 325, 686, - 891, 387, 634, - 832, 459, 554, - 740, 540, 419, - 577, 630, 136, - 186, 728, 0, - 0, 832, 0, - 0, 943, 0, - 0, 1058, 0, - 0, 1177, 0, - 0, 1299, 0, - 0, 1423, 0, - 0, 1550, 0, - 0, 1677, 0, - 0, 1806, 0, - 0, 1936, 0, - 0, 2066, 0, - 0, 2197, 0, - 0, 2328, 0, - 0, 2459, 0, - 0, 2591, 0, - 0, 2722, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1138, 259, 892, - 1128, 290, 878, - 1114, 329, 860, - 1095, 376, 834, - 1068, 432, 798, - 1029, 497, 743, - 971, 572, 659, - 880, 657, 514, - 721, 749, 197, - 347, 850, 0, - 0, 956, 0, - 0, 1068, 0, - 0, 1185, 0, - 0, 1305, 0, - 0, 1428, 0, - 0, 1553, 0, - 0, 1680, 0, - 0, 1808, 0, - 0, 1937, 0, - 0, 2067, 0, - 0, 2198, 0, - 0, 2328, 0, - 0, 2460, 0, - 0, 2591, 0, - 0, 2722, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1281, 336, 1021, - 1274, 362, 1011, - 1264, 395, 997, - 1250, 436, 978, - 1231, 486, 952, - 1204, 544, 914, - 1166, 613, 858, - 1109, 690, 770, - 1019, 777, 616, - 862, 872, 267, - 499, 974, 0, - 0, 1082, 0, - 0, 1196, 0, - 0, 1314, 0, - 0, 1435, 0, - 0, 1558, 0, - 0, 1684, 0, - 0, 1811, 0, - 0, 1939, 0, - 0, 2069, 0, - 0, 2199, 0, - 0, 2329, 0, - 0, 2460, 0, - 0, 2591, 0, - 0, 2723, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1421, 422, 1151, - 1416, 444, 1143, - 1408, 472, 1133, - 1398, 506, 1119, - 1385, 549, 1100, - 1366, 601, 1073, - 1339, 661, 1034, - 1301, 732, 976, - 1245, 811, 885, - 1156, 900, 725, - 1001, 997, 346, - 646, 1100, 0, - 0, 1210, 0, - 0, 1324, 0, - 0, 1443, 0, - 0, 1565, 0, - 0, 1689, 0, - 0, 1815, 0, - 0, 1942, 0, - 0, 2071, 0, - 0, 2200, 0, - 0, 2330, 0, - 0, 2461, 0, - 0, 2592, 0, - 0, 2723, 0, - 0, 2855, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1559, 516, 1281, - 1555, 534, 1276, - 1550, 557, 1268, - 1543, 586, 1258, - 1533, 622, 1244, - 1519, 666, 1224, - 1500, 719, 1197, - 1474, 782, 1157, - 1436, 854, 1098, - 1380, 935, 1004, - 1291, 1025, 838, - 1138, 1123, 434, - 789, 1228, 0, - 0, 1339, 0, - 0, 1454, 0, - 0, 1573, 0, - 0, 1695, 0, - 0, 1820, 0, - 0, 1946, 0, - 0, 2074, 0, - 0, 2202, 0, - 0, 2332, 0, - 0, 2462, 0, - 0, 2593, 0, - 0, 2724, 0, - 0, 2855, 0, - 0, 2987, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1696, 617, 1412, - 1693, 632, 1408, - 1689, 651, 1402, - 1683, 674, 1395, - 1676, 704, 1384, - 1666, 741, 1370, - 1653, 787, 1350, - 1634, 841, 1322, - 1608, 905, 1282, - 1570, 978, 1222, - 1514, 1061, 1126, - 1426, 1152, 956, - 1274, 1251, 531, - 929, 1357, 0, - 0, 1468, 0, - 0, 1584, 0, - 0, 1703, 0, - 0, 1826, 0, - 0, 1951, 0, - 0, 2077, 0, - 0, 2205, 0, - 0, 2334, 0, - 0, 2464, 0, - 0, 2594, 0, - 0, 2725, 0, - 0, 2856, 0, - 0, 2987, 0, - 0, 3119, 0, - 0, 3251, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1831, 725, 1543, - 1829, 737, 1540, - 1826, 752, 1536, - 1822, 771, 1530, - 1817, 795, 1523, - 1809, 826, 1512, - 1800, 864, 1498, - 1786, 910, 1478, - 1767, 965, 1449, - 1741, 1030, 1409, - 1703, 1105, 1348, - 1648, 1188, 1251, - 1560, 1280, 1077, - 1409, 1380, 634, - 1067, 1486, 0, - 0, 1598, 0, - 0, 1714, 0, - 0, 1834, 0, - 0, 1957, 0, - 0, 2082, 0, - 0, 2209, 0, - 0, 2337, 0, - 0, 2466, 0, - 0, 2596, 0, - 0, 2726, 0, - 0, 2857, 0, - 0, 2988, 0, - 0, 3119, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3514, 0, - 0, 3646, 0, - 1965, 838, 1675, - 1964, 847, 1672, - 1962, 859, 1669, - 1959, 874, 1665, - 1955, 894, 1659, - 1949, 918, 1652, - 1942, 950, 1641, - 1932, 988, 1626, - 1919, 1035, 1606, - 1900, 1092, 1578, - 1874, 1157, 1537, - 1837, 1232, 1475, - 1781, 1317, 1377, - 1694, 1409, 1201, - 1543, 1510, 744, - 1203, 1617, 0, - 0, 1729, 0, - 0, 1845, 0, - 0, 1966, 0, - 0, 2089, 0, - 0, 2214, 0, - 0, 2341, 0, - 0, 2469, 0, - 0, 2598, 0, - 0, 2728, 0, - 0, 2858, 0, - 0, 2989, 0, - 0, 3120, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3646, 0, - 2099, 956, 1806, - 2098, 963, 1805, - 2097, 972, 1802, - 2094, 983, 1799, - 2091, 999, 1795, - 2087, 1019, 1789, - 2082, 1044, 1781, - 2075, 1076, 1771, - 2065, 1115, 1756, - 2052, 1162, 1736, - 2033, 1219, 1707, - 2007, 1285, 1666, - 1969, 1361, 1604, - 1914, 1446, 1505, - 1827, 1539, 1326, - 1676, 1640, 858, - 1338, 1747, 0, - 0, 1860, 0, - 0, 1977, 0, - 0, 2097, 0, - 0, 2220, 0, - 0, 2345, 0, - 0, 2472, 0, - 0, 2601, 0, - 0, 2730, 0, - 0, 2860, 0, - 0, 2990, 0, - 0, 3121, 0, - 0, 3252, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3647, 0, - 2233, 1076, 1938, - 2232, 1082, 1937, - 2231, 1089, 1935, - 2229, 1098, 1933, - 2227, 1110, 1929, - 2224, 1125, 1925, - 2220, 1146, 1919, - 2215, 1171, 1912, - 2208, 1203, 1901, - 2198, 1243, 1886, - 2184, 1291, 1866, - 2166, 1348, 1837, - 2140, 1415, 1796, - 2102, 1491, 1733, - 2047, 1576, 1634, - 1960, 1670, 1454, - 1810, 1771, 976, - 1473, 1878, 0, - 0, 1991, 0, - 0, 2108, 0, - 0, 2229, 0, - 0, 2352, 0, - 0, 2477, 0, - 0, 2604, 0, - 0, 2732, 0, - 0, 2862, 0, - 0, 2992, 0, - 0, 3122, 0, - 0, 3253, 0, - 0, 3384, 0, - 0, 3516, 0, - 0, 3647, 0, - 2366, 1200, 2070, - 2365, 1204, 2069, - 2364, 1209, 2068, - 2363, 1216, 2066, - 2361, 1226, 2063, - 2359, 1238, 2060, - 2356, 1253, 2056, - 2352, 1274, 2050, - 2347, 1299, 2042, - 2340, 1332, 2032, - 2330, 1371, 2017, - 2317, 1420, 1997, - 2298, 1477, 1968, - 2272, 1544, 1926, - 2235, 1621, 1863, - 2179, 1707, 1763, - 2092, 1801, 1582, - 1943, 1902, 1098, - 1607, 2010, 0, - 0, 2123, 0, - 0, 2240, 0, - 0, 2360, 0, - 0, 2484, 0, - 0, 2609, 0, - 0, 2736, 0, - 0, 2864, 0, - 0, 2994, 0, - 0, 3124, 0, - 0, 3254, 0, - 0, 3385, 0, - 0, 3516, 0, - 0, 3648, 0, - 2499, 1325, 2202, - 2498, 1328, 2201, - 2498, 1332, 2200, - 2497, 1338, 2199, - 2495, 1345, 2197, - 2494, 1354, 2195, - 2492, 1367, 2191, - 2489, 1382, 2187, - 2485, 1403, 2181, - 2480, 1429, 2174, - 2472, 1461, 2163, - 2463, 1501, 2148, - 2449, 1550, 2128, - 2431, 1608, 2099, - 2404, 1675, 2057, - 2367, 1752, 1994, - 2312, 1838, 1894, - 2225, 1932, 1711, - 2075, 2033, 1222, - 1740, 2141, 0, - 0, 2254, 0, - 0, 2371, 0, - 0, 2492, 0, - 0, 2616, 0, - 0, 2741, 0, - 0, 2868, 0, - 0, 2996, 0, - 0, 3126, 0, - 0, 3256, 0, - 0, 3386, 0, - 0, 3517, 0, - 0, 3648, 0, - 2631, 1452, 2334, - 2631, 1455, 2333, - 2630, 1458, 2332, - 2630, 1462, 2331, - 2629, 1467, 2330, - 2628, 1474, 2328, - 2626, 1484, 2326, - 2624, 1496, 2323, - 2621, 1512, 2319, - 2617, 1533, 2313, - 2612, 1559, 2305, - 2605, 1591, 2294, - 2595, 1631, 2279, - 2581, 1680, 2259, - 2563, 1738, 2230, - 2537, 1806, 2188, - 2499, 1883, 2125, - 2444, 1969, 2024, - 2357, 2063, 1842, - 2208, 2165, 1348, - 1873, 2273, 0, - 0, 2386, 0, - 0, 2503, 0, - 0, 2624, 0, - 0, 2748, 0, - 0, 2873, 0, - 0, 3000, 0, - 0, 3129, 0, - 0, 3258, 0, - 0, 3388, 0, - 0, 3518, 0, - 0, 3649, 0, - 2764, 1581, 2466, - 2764, 1582, 2465, - 2763, 1585, 2465, - 2763, 1588, 2464, - 2762, 1592, 2463, - 2761, 1597, 2462, - 2760, 1605, 2460, - 2758, 1614, 2458, - 2756, 1626, 2454, - 2753, 1642, 2450, - 2749, 1663, 2444, - 2744, 1689, 2436, - 2737, 1722, 2426, - 2727, 1762, 2411, - 2714, 1811, 2390, - 2695, 1869, 2361, - 2669, 1937, 2319, - 2632, 2014, 2256, - 2576, 2100, 2155, - 2490, 2195, 1972, - 2340, 2297, 1475, - 2006, 2405, 0, - 0, 2518, 0, - 0, 2635, 0, - 0, 2756, 0, - 0, 2880, 0, - 0, 3005, 0, - 0, 3132, 0, - 0, 3261, 0, - 0, 3390, 0, - 0, 3520, 0, - 0, 3650, 0, - 2896, 1710, 2598, - 2896, 1711, 2597, - 2896, 1713, 2597, - 2895, 1715, 2596, - 2895, 1718, 2596, - 2894, 1723, 2595, - 2893, 1728, 2593, - 2892, 1735, 2592, - 2891, 1745, 2589, - 2888, 1757, 2586, - 2885, 1773, 2582, - 2882, 1794, 2576, - 2876, 1820, 2568, - 2869, 1853, 2557, - 2859, 1893, 2542, - 2846, 1942, 2522, - 2827, 2001, 2493, - 2801, 2068, 2451, - 2764, 2146, 2388, - 2709, 2232, 2287, - 2622, 2326, 2103, - 2473, 2428, 1604, - 2139, 2536, 0, - 0, 2650, 0, - 0, 2767, 0, - 0, 2888, 0, - 0, 3012, 0, - 0, 3137, 0, - 0, 3264, 0, - 0, 3393, 0, - 0, 3522, 0, - 0, 3652, 0, - 3029, 1840, 2730, - 3028, 1841, 2729, - 3028, 1842, 2729, - 3028, 1844, 2729, - 3028, 1846, 2728, - 3027, 1849, 2727, - 3026, 1854, 2726, - 3026, 1859, 2725, - 3024, 1866, 2723, - 3023, 1876, 2721, - 3021, 1888, 2718, - 3018, 1904, 2714, - 3014, 1925, 2708, - 3008, 1951, 2700, - 3001, 1984, 2689, - 2992, 2025, 2674, - 2978, 2074, 2654, - 2960, 2132, 2625, - 2933, 2200, 2582, - 2896, 2277, 2519, - 2841, 2364, 2418, - 2754, 2458, 2234, - 2605, 2560, 1733, - 2271, 2668, 0, - 0, 2782, 0, - 0, 2899, 0, - 0, 3020, 0, - 0, 3144, 0, - 0, 3269, 0, - 0, 3396, 0, - 0, 3525, 0, - 0, 3654, 0, - 3161, 1970, 2862, - 3161, 1971, 2862, - 3161, 1972, 2861, - 3160, 1973, 2861, - 3160, 1975, 2861, - 3160, 1978, 2860, - 3159, 1981, 2859, - 3159, 1985, 2858, - 3158, 1990, 2857, - 3156, 1998, 2855, - 3155, 2007, 2853, - 3153, 2020, 2850, - 3150, 2036, 2845, - 3146, 2056, 2840, - 3141, 2083, 2832, - 3133, 2115, 2821, - 3124, 2156, 2806, - 3110, 2205, 2785, - 3092, 2264, 2756, - 3066, 2332, 2714, - 3028, 2409, 2651, - 2973, 2495, 2550, - 2887, 2590, 2366, - 2737, 2692, 1864, - 2403, 2800, 0, - 0, 2914, 0, - 0, 3031, 0, - 0, 3152, 0, - 0, 3276, 0, - 0, 3401, 0, - 0, 3528, 0, - 0, 3657, 0, - 3293, 2101, 2994, - 3293, 2102, 2994, - 3293, 2103, 2993, - 3293, 2104, 2993, - 3293, 2105, 2993, - 3292, 2107, 2993, - 3292, 2109, 2992, - 3291, 2112, 2991, - 3291, 2116, 2990, - 3290, 2122, 2989, - 3289, 2129, 2987, - 3287, 2139, 2985, - 3285, 2151, 2982, - 3282, 2167, 2977, - 3278, 2188, 2972, - 3273, 2214, 2964, - 3266, 2247, 2953, - 3256, 2288, 2938, - 3242, 2337, 2917, - 3224, 2395, 2888, - 3198, 2463, 2846, - 3160, 2541, 2783, - 3105, 2627, 2682, - 3019, 2722, 2497, - 2869, 2824, 1994, - 2536, 2932, 0, - 0, 3046, 0, - 0, 3163, 0, - 0, 3284, 0, - 0, 3408, 0, - 0, 3533, 0, - 0, 3660, 0, - 3425, 2232, 3126, - 3425, 2233, 3126, - 3425, 2233, 3126, - 3425, 2234, 3125, - 3425, 2235, 3125, - 3425, 2236, 3125, - 3424, 2238, 3125, - 3424, 2241, 3124, - 3424, 2244, 3123, - 3423, 2248, 3122, - 3422, 2253, 3121, - 3421, 2261, 3119, - 3419, 2270, 3117, - 3417, 2283, 3114, - 3414, 2299, 3109, - 3410, 2320, 3103, - 3405, 2346, 3096, - 3398, 2379, 3085, - 3388, 2420, 3070, - 3375, 2469, 3049, - 3356, 2527, 3020, - 3330, 2595, 2978, - 3293, 2673, 2915, - 3237, 2759, 2814, - 3151, 2854, 2629, - 3002, 2956, 2125, - 2668, 3064, 0, - 0, 3178, 0, - 0, 3295, 0, - 0, 3416, 0, - 0, 3540, 0, - 0, 3665, 0, - 3557, 2364, 3258, - 3557, 2364, 3258, - 3557, 2365, 3258, - 3557, 2365, 3258, - 3557, 2366, 3257, - 3557, 2367, 3257, - 3557, 2368, 3257, - 3557, 2370, 3257, - 3556, 2372, 3256, - 3556, 2375, 3255, - 3555, 2380, 3254, - 3554, 2385, 3253, - 3553, 2392, 3251, - 3551, 2402, 3249, - 3549, 2414, 3246, - 3546, 2431, 3241, - 3542, 2451, 3235, - 3537, 2478, 3228, - 3530, 2511, 3217, - 3520, 2551, 3202, - 3507, 2601, 3181, - 3488, 2659, 3152, - 3462, 2727, 3110, - 3425, 2805, 3047, - 3369, 2891, 2945, - 3283, 2986, 2761, - 3134, 3088, 2256, - 2800, 3196, 0, - 0, 3310, 0, - 0, 3427, 0, - 0, 3548, 0, - 0, 3672, 0, - 3690, 2495, 3390, - 3690, 2496, 3390, - 3690, 2496, 3390, - 3689, 2496, 3390, - 3689, 2497, 3390, - 3689, 2498, 3389, - 3689, 2499, 3389, - 3689, 2500, 3389, - 3689, 2502, 3389, - 3688, 2504, 3388, - 3688, 2507, 3387, - 3687, 2511, 3386, - 3686, 2517, 3385, - 3685, 2524, 3383, - 3683, 2534, 3381, - 3681, 2546, 3378, - 3678, 2562, 3373, - 3674, 2583, 3368, - 3669, 2610, 3360, - 3662, 2643, 3349, - 3652, 2683, 3334, - 3639, 2733, 3313, - 3620, 2791, 3284, - 3594, 2859, 3242, - 3557, 2937, 3179, - 3502, 3023, 3077, - 3415, 3118, 2893, - 3266, 3220, 2388, - 2932, 3328, 0, - 0, 3442, 0, - 0, 3559, 0, - 0, 3680, 0, - 3822, 2627, 3522, - 3822, 2627, 3522, - 3822, 2628, 3522, - 3822, 2628, 3522, - 3822, 2628, 3522, - 3821, 2629, 3522, - 3821, 2630, 3522, - 3821, 2631, 3521, - 3821, 2632, 3521, - 3821, 2634, 3521, - 3820, 2636, 3520, - 3820, 2639, 3519, - 3819, 2643, 3518, - 3818, 2649, 3517, - 3817, 2656, 3515, - 3815, 2666, 3513, - 3813, 2678, 3510, - 3810, 2694, 3505, - 3807, 2715, 3500, - 3801, 2742, 3492, - 3794, 2775, 3481, - 3784, 2815, 3466, - 3771, 2865, 3445, - 3752, 2923, 3416, - 3726, 2991, 3374, - 3689, 3069, 3311, - 3634, 3155, 3209, - 3547, 3250, 3025, - 3398, 3352, 2520, - 3065, 3460, 0, - 0, 3574, 0, - 0, 3691, 0, - 3954, 2759, 3654, - 3954, 2759, 3654, - 3954, 2759, 3654, - 3954, 2759, 3654, - 3954, 2760, 3654, - 3954, 2760, 3654, - 3954, 2761, 3654, - 3953, 2762, 3654, - 3953, 2763, 3653, - 3953, 2764, 3653, - 3953, 2766, 3653, - 3952, 2768, 3652, - 3952, 2771, 3651, - 3951, 2775, 3650, - 3950, 2781, 3649, - 3949, 2788, 3647, - 3948, 2798, 3645, - 3945, 2810, 3642, - 3943, 2826, 3637, - 3939, 2847, 3632, - 3933, 2873, 3624, - 3926, 2907, 3613, - 3916, 2947, 3598, - 3903, 2997, 3577, - 3884, 3055, 3548, - 3858, 3123, 3506, - 3821, 3201, 3443, - 3766, 3287, 3341, - 3679, 3382, 3157, - 3530, 3484, 2651, - 3197, 3592, 0, - 0, 3706, 0, - 4086, 2891, 3786, - 4086, 2891, 3786, - 4086, 2891, 3786, - 4086, 2891, 3786, - 4086, 2891, 3786, - 4086, 2892, 3786, - 4086, 2892, 3786, - 4086, 2893, 3786, - 4086, 2894, 3786, - 4085, 2895, 3785, - 4085, 2896, 3785, - 4085, 2898, 3785, - 4085, 2900, 3784, - 4084, 2903, 3783, - 4083, 2907, 3782, - 4083, 2913, 3781, - 4081, 2920, 3779, - 4080, 2930, 3777, - 4078, 2942, 3774, - 4075, 2958, 3770, - 4071, 2979, 3764, - 4065, 3005, 3756, - 4058, 3039, 3745, - 4049, 3079, 3730, - 4035, 3129, 3709, - 4017, 3187, 3680, - 3991, 3255, 3638, - 3953, 3333, 3575, - 3898, 3419, 3473, - 3811, 3514, 3289, - 3662, 3616, 2783, - 3329, 3725, 0, - 4095, 3023, 3918, - 4095, 3023, 3918, - 4095, 3023, 3918, - 4095, 3023, 3918, - 4095, 3023, 3918, - 4095, 3023, 3918, - 4095, 3024, 3918, - 4095, 3024, 3918, - 4095, 3025, 3918, - 4095, 3026, 3918, - 4095, 3027, 3918, - 4095, 3028, 3917, - 4095, 3030, 3917, - 4095, 3032, 3916, - 4095, 3035, 3916, - 4095, 3039, 3915, - 4095, 3045, 3913, - 4095, 3052, 3911, - 4095, 3062, 3909, - 4095, 3074, 3906, - 4095, 3090, 3902, - 4095, 3111, 3896, - 4095, 3138, 3888, - 4095, 3171, 3877, - 4095, 3211, 3862, - 4095, 3261, 3842, - 4095, 3319, 3812, - 4095, 3387, 3770, - 4085, 3465, 3707, - 4030, 3551, 3606, - 3944, 3646, 3421, - 3794, 3748, 2915, - 4095, 3155, 4050, - 4095, 3155, 4050, - 4095, 3155, 4050, - 4095, 3155, 4050, - 4095, 3155, 4050, - 4095, 3155, 4050, - 4095, 3156, 4050, - 4095, 3156, 4050, - 4095, 3156, 4050, - 4095, 3157, 4050, - 4095, 3158, 4050, - 4095, 3159, 4050, - 4095, 3160, 4049, - 4095, 3162, 4049, - 4095, 3164, 4048, - 4095, 3167, 4048, - 4095, 3171, 4047, - 4095, 3177, 4045, - 4095, 3184, 4044, - 4095, 3194, 4041, - 4095, 3206, 4038, - 4095, 3222, 4034, - 4095, 3243, 4028, - 4095, 3270, 4020, - 4095, 3303, 4009, - 4095, 3343, 3994, - 4095, 3393, 3974, - 4095, 3451, 3944, - 4095, 3519, 3902, - 4095, 3597, 3839, - 4095, 3684, 3738, - 4076, 3778, 3553, - 0, 33, 135, - 0, 83, 61, - 0, 142, 0, - 0, 211, 0, - 0, 290, 0, - 0, 377, 0, - 0, 473, 0, - 0, 576, 0, - 0, 684, 0, - 0, 798, 0, - 0, 916, 0, - 0, 1037, 0, - 0, 1161, 0, - 0, 1287, 0, - 0, 1414, 0, - 0, 1543, 0, - 0, 1672, 0, - 0, 1802, 0, - 0, 1933, 0, - 0, 2064, 0, - 0, 2195, 0, - 0, 2327, 0, - 0, 2458, 0, - 0, 2590, 0, - 0, 2722, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 11, 50, 228, - 0, 99, 168, - 0, 156, 74, - 0, 223, 0, - 0, 300, 0, - 0, 386, 0, - 0, 480, 0, - 0, 581, 0, - 0, 689, 0, - 0, 802, 0, - 0, 919, 0, - 0, 1039, 0, - 0, 1163, 0, - 0, 1288, 0, - 0, 1415, 0, - 0, 1543, 0, - 0, 1673, 0, - 0, 1803, 0, - 0, 1933, 0, - 0, 2064, 0, - 0, 2195, 0, - 0, 2327, 0, - 0, 2458, 0, - 0, 2590, 0, - 0, 2722, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 271, 73, 329, - 199, 119, 281, - 79, 174, 209, - 0, 239, 91, - 0, 313, 0, - 0, 397, 0, - 0, 489, 0, - 0, 588, 0, - 0, 694, 0, - 0, 806, 0, - 0, 922, 0, - 0, 1042, 0, - 0, 1165, 0, - 0, 1290, 0, - 0, 1416, 0, - 0, 1544, 0, - 0, 1673, 0, - 0, 1803, 0, - 0, 1934, 0, - 0, 2064, 0, - 0, 2195, 0, - 0, 2327, 0, - 0, 2458, 0, - 0, 2590, 0, - 0, 2722, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 480, 102, 436, - 435, 145, 399, - 368, 197, 344, - 259, 259, 259, - 54, 330, 113, - 0, 411, 0, - 0, 500, 0, - 0, 597, 0, - 0, 702, 0, - 0, 812, 0, - 0, 927, 0, - 0, 1045, 0, - 0, 1167, 0, - 0, 1292, 0, - 0, 1418, 0, - 0, 1546, 0, - 0, 1674, 0, - 0, 1804, 0, - 0, 1934, 0, - 0, 2065, 0, - 0, 2196, 0, - 0, 2327, 0, - 0, 2458, 0, - 0, 2590, 0, - 0, 2722, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 662, 137, 548, - 632, 177, 519, - 590, 226, 478, - 526, 284, 416, - 424, 352, 318, - 237, 429, 140, - 0, 515, 0, - 0, 610, 0, - 0, 711, 0, - 0, 819, 0, - 0, 933, 0, - 0, 1050, 0, - 0, 1171, 0, - 0, 1294, 0, - 0, 1420, 0, - 0, 1547, 0, - 0, 1675, 0, - 0, 1805, 0, - 0, 1935, 0, - 0, 2065, 0, - 0, 2196, 0, - 0, 2327, 0, - 0, 2459, 0, - 0, 2590, 0, - 0, 2722, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 828, 181, 665, - 808, 217, 643, - 779, 262, 612, - 738, 316, 566, - 677, 380, 498, - 579, 453, 386, - 403, 535, 175, - 0, 626, 0, - 0, 724, 0, - 0, 830, 0, - 0, 941, 0, - 0, 1056, 0, - 0, 1176, 0, - 0, 1298, 0, - 0, 1423, 0, - 0, 1549, 0, - 0, 1677, 0, - 0, 1806, 0, - 0, 1936, 0, - 0, 2066, 0, - 0, 2197, 0, - 0, 2328, 0, - 0, 2459, 0, - 0, 2590, 0, - 0, 2722, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 984, 233, 785, - 970, 266, 768, - 950, 307, 745, - 922, 356, 712, - 882, 414, 663, - 822, 482, 588, - 728, 560, 464, - 559, 646, 217, - 144, 741, 0, - 0, 843, 0, - 0, 951, 0, - 0, 1064, 0, - 0, 1182, 0, - 0, 1303, 0, - 0, 1426, 0, - 0, 1552, 0, - 0, 1679, 0, - 0, 1807, 0, - 0, 1937, 0, - 0, 2067, 0, - 0, 2197, 0, - 0, 2328, 0, - 0, 2459, 0, - 0, 2591, 0, - 0, 2722, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1133, 295, 908, - 1123, 324, 895, - 1109, 360, 878, - 1089, 404, 853, - 1062, 457, 818, - 1023, 519, 766, - 964, 591, 686, - 872, 672, 551, - 709, 762, 268, - 318, 860, 0, - 0, 964, 0, - 0, 1075, 0, - 0, 1190, 0, - 0, 1309, 0, - 0, 1431, 0, - 0, 1555, 0, - 0, 1682, 0, - 0, 1809, 0, - 0, 1938, 0, - 0, 2068, 0, - 0, 2198, 0, - 0, 2329, 0, - 0, 2460, 0, - 0, 2591, 0, - 0, 2723, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1277, 366, 1033, - 1270, 391, 1024, - 1260, 422, 1010, - 1246, 461, 992, - 1227, 508, 967, - 1200, 564, 930, - 1161, 629, 876, - 1103, 705, 791, - 1013, 789, 646, - 853, 882, 329, - 479, 982, 0, - 0, 1088, 0, - 0, 1201, 0, - 0, 1317, 0, - 0, 1437, 0, - 0, 1560, 0, - 0, 1685, 0, - 0, 1812, 0, - 0, 1940, 0, - 0, 2069, 0, - 0, 2199, 0, - 0, 2330, 0, - 0, 2460, 0, - 0, 2592, 0, - 0, 2723, 0, - 0, 2855, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1418, 447, 1160, - 1413, 468, 1153, - 1406, 494, 1143, - 1396, 528, 1129, - 1382, 568, 1111, - 1363, 618, 1084, - 1336, 677, 1046, - 1298, 745, 990, - 1241, 822, 902, - 1151, 909, 748, - 994, 1004, 399, - 631, 1106, 0, - 0, 1214, 0, - 0, 1328, 0, - 0, 1446, 0, - 0, 1567, 0, - 0, 1690, 0, - 0, 1816, 0, - 0, 1943, 0, - 0, 2072, 0, - 0, 2201, 0, - 0, 2331, 0, - 0, 2461, 0, - 0, 2592, 0, - 0, 2724, 0, - 0, 2855, 0, - 0, 2987, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1557, 537, 1288, - 1553, 554, 1283, - 1548, 576, 1275, - 1540, 604, 1265, - 1531, 639, 1251, - 1517, 681, 1232, - 1498, 733, 1205, - 1471, 793, 1166, - 1433, 864, 1108, - 1377, 944, 1017, - 1288, 1032, 857, - 1133, 1129, 478, - 778, 1232, 0, - 0, 1342, 0, - 0, 1456, 0, - 0, 1575, 0, - 0, 1697, 0, - 0, 1821, 0, - 0, 1947, 0, - 0, 2074, 0, - 0, 2203, 0, - 0, 2332, 0, - 0, 2463, 0, - 0, 2593, 0, - 0, 2724, 0, - 0, 2855, 0, - 0, 2987, 0, - 0, 3119, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1694, 634, 1417, - 1691, 648, 1413, - 1687, 666, 1408, - 1682, 689, 1400, - 1675, 718, 1390, - 1665, 754, 1376, - 1651, 798, 1356, - 1632, 851, 1329, - 1606, 914, 1289, - 1568, 986, 1230, - 1512, 1067, 1136, - 1424, 1157, 970, - 1270, 1255, 567, - 921, 1360, 0, - 0, 1471, 0, - 0, 1586, 0, - 0, 1705, 0, - 0, 1827, 0, - 0, 1952, 0, - 0, 2078, 0, - 0, 2206, 0, - 0, 2334, 0, - 0, 2464, 0, - 0, 2594, 0, - 0, 2725, 0, - 0, 2856, 0, - 0, 2987, 0, - 0, 3119, 0, - 0, 3251, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1830, 738, 1547, - 1828, 750, 1544, - 1825, 764, 1540, - 1821, 783, 1534, - 1815, 806, 1527, - 1808, 836, 1516, - 1798, 873, 1502, - 1785, 919, 1482, - 1766, 973, 1454, - 1740, 1037, 1414, - 1702, 1110, 1354, - 1646, 1193, 1258, - 1558, 1284, 1088, - 1406, 1383, 663, - 1061, 1489, 0, - 0, 1600, 0, - 0, 1716, 0, - 0, 1836, 0, - 0, 1958, 0, - 0, 2083, 0, - 0, 2209, 0, - 0, 2337, 0, - 0, 2466, 0, - 0, 2596, 0, - 0, 2726, 0, - 0, 2857, 0, - 0, 2988, 0, - 0, 3119, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3514, 0, - 0, 3646, 0, - 1965, 849, 1678, - 1963, 857, 1675, - 1961, 869, 1672, - 1958, 884, 1668, - 1954, 903, 1662, - 1949, 927, 1655, - 1941, 958, 1644, - 1932, 996, 1630, - 1918, 1042, 1610, - 1899, 1097, 1582, - 1873, 1162, 1541, - 1835, 1237, 1480, - 1780, 1320, 1383, - 1692, 1412, 1209, - 1541, 1512, 766, - 1199, 1618, 0, - 0, 1730, 0, - 0, 1847, 0, - 0, 1966, 0, - 0, 2089, 0, - 0, 2214, 0, - 0, 2341, 0, - 0, 2469, 0, - 0, 2598, 0, - 0, 2728, 0, - 0, 2858, 0, - 0, 2989, 0, - 0, 3120, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3646, 0, - 2099, 964, 1809, - 2098, 970, 1807, - 2096, 979, 1804, - 2094, 991, 1801, - 2091, 1006, 1797, - 2087, 1026, 1791, - 2082, 1051, 1784, - 2074, 1082, 1773, - 2065, 1120, 1759, - 2051, 1167, 1738, - 2032, 1224, 1710, - 2006, 1289, 1669, - 1969, 1364, 1607, - 1913, 1449, 1509, - 1826, 1542, 1333, - 1675, 1642, 876, - 1335, 1749, 0, - 0, 1861, 0, - 0, 1978, 0, - 0, 2098, 0, - 0, 2221, 0, - 0, 2346, 0, - 0, 2473, 0, - 0, 2601, 0, - 0, 2730, 0, - 0, 2860, 0, - 0, 2990, 0, - 0, 3121, 0, - 0, 3252, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3647, 0, - 2232, 1083, 1940, - 2231, 1088, 1938, - 2230, 1095, 1937, - 2229, 1104, 1934, - 2226, 1116, 1931, - 2224, 1131, 1927, - 2220, 1151, 1921, - 2214, 1176, 1913, - 2207, 1208, 1903, - 2197, 1247, 1888, - 2184, 1294, 1868, - 2165, 1351, 1839, - 2139, 1417, 1798, - 2101, 1493, 1736, - 2046, 1578, 1637, - 1959, 1671, 1459, - 1809, 1772, 990, - 1470, 1879, 0, - 0, 1992, 0, - 0, 2109, 0, - 0, 2229, 0, - 0, 2352, 0, - 0, 2478, 0, - 0, 2604, 0, - 0, 2733, 0, - 0, 2862, 0, - 0, 2992, 0, - 0, 3122, 0, - 0, 3253, 0, - 0, 3384, 0, - 0, 3516, 0, - 0, 3647, 0, - 2366, 1204, 2071, - 2365, 1208, 2070, - 2364, 1214, 2069, - 2363, 1221, 2067, - 2361, 1230, 2065, - 2359, 1242, 2062, - 2356, 1258, 2057, - 2352, 1278, 2052, - 2347, 1303, 2044, - 2340, 1335, 2033, - 2330, 1375, 2018, - 2316, 1423, 1998, - 2298, 1480, 1969, - 2272, 1547, 1928, - 2234, 1623, 1865, - 2179, 1708, 1766, - 2092, 1802, 1586, - 1942, 1903, 1108, - 1605, 2010, 0, - 0, 2123, 0, - 0, 2240, 0, - 0, 2361, 0, - 0, 2484, 0, - 0, 2609, 0, - 0, 2736, 0, - 0, 2865, 0, - 0, 2994, 0, - 0, 3124, 0, - 0, 3254, 0, - 0, 3385, 0, - 0, 3516, 0, - 0, 3648, 0, - 2498, 1329, 2203, - 2498, 1332, 2202, - 2497, 1336, 2201, - 2496, 1341, 2200, - 2495, 1348, 2198, - 2494, 1358, 2196, - 2491, 1370, 2192, - 2488, 1385, 2188, - 2485, 1406, 2182, - 2479, 1431, 2175, - 2472, 1464, 2164, - 2462, 1504, 2149, - 2449, 1552, 2129, - 2430, 1609, 2100, - 2404, 1677, 2058, - 2367, 1753, 1995, - 2311, 1839, 1896, - 2225, 1933, 1714, - 2075, 2034, 1230, - 1739, 2142, 0, - 0, 2255, 0, - 0, 2372, 0, - 0, 2492, 0, - 0, 2616, 0, - 0, 2741, 0, - 0, 2868, 0, - 0, 2997, 0, - 0, 3126, 0, - 0, 3256, 0, - 0, 3386, 0, - 0, 3517, 0, - 0, 3648, 0, - 2631, 1455, 2334, - 2631, 1457, 2334, - 2630, 1460, 2333, - 2630, 1464, 2332, - 2629, 1470, 2331, - 2628, 1477, 2329, - 2626, 1486, 2327, - 2624, 1499, 2324, - 2621, 1514, 2319, - 2617, 1535, 2313, - 2612, 1561, 2306, - 2604, 1593, 2295, - 2595, 1633, 2280, - 2581, 1682, 2260, - 2563, 1740, 2231, - 2537, 1807, 2189, - 2499, 1884, 2126, - 2444, 1970, 2026, - 2357, 2064, 1844, - 2207, 2165, 1354, - 1872, 2273, 0, - 0, 2386, 0, - 0, 2504, 0, - 0, 2624, 0, - 0, 2748, 0, - 0, 2873, 0, - 0, 3000, 0, - 0, 3129, 0, - 0, 3258, 0, - 0, 3388, 0, - 0, 3518, 0, - 0, 3649, 0, - 2764, 1583, 2466, - 2763, 1584, 2466, - 2763, 1587, 2465, - 2763, 1590, 2464, - 2762, 1594, 2464, - 2761, 1599, 2462, - 2760, 1607, 2460, - 2758, 1616, 2458, - 2756, 1628, 2455, - 2753, 1644, 2451, - 2749, 1665, 2445, - 2744, 1691, 2437, - 2737, 1723, 2426, - 2727, 1764, 2411, - 2714, 1812, 2391, - 2695, 1870, 2362, - 2669, 1938, 2320, - 2631, 2015, 2257, - 2576, 2101, 2156, - 2490, 2195, 1974, - 2340, 2297, 1480, - 2005, 2405, 0, - 0, 2518, 0, - 0, 2635, 0, - 0, 2756, 0, - 0, 2880, 0, - 0, 3005, 0, - 0, 3132, 0, - 0, 3261, 0, - 0, 3390, 0, - 0, 3520, 0, - 0, 3650, 0, - 2896, 1711, 2598, - 2896, 1713, 2598, - 2896, 1714, 2597, - 2895, 1717, 2597, - 2895, 1720, 2596, - 2894, 1724, 2595, - 2893, 1730, 2594, - 2892, 1737, 2592, - 2890, 1746, 2590, - 2888, 1759, 2586, - 2885, 1775, 2582, - 2881, 1795, 2576, - 2876, 1821, 2568, - 2869, 1854, 2558, - 2859, 1894, 2543, - 2846, 1943, 2522, - 2827, 2001, 2493, - 2801, 2069, 2451, - 2764, 2146, 2388, - 2708, 2232, 2288, - 2622, 2327, 2104, - 2472, 2429, 1608, - 2138, 2537, 0, - 0, 2650, 0, - 0, 2767, 0, - 0, 2888, 0, - 0, 3012, 0, - 0, 3137, 0, - 0, 3264, 0, - 0, 3393, 0, - 0, 3522, 0, - 0, 3652, 0, - 3029, 1841, 2730, - 3028, 1842, 2730, - 3028, 1843, 2729, - 3028, 1845, 2729, - 3028, 1847, 2728, - 3027, 1851, 2728, - 3026, 1855, 2727, - 3025, 1860, 2725, - 3024, 1867, 2724, - 3023, 1877, 2721, - 3020, 1889, 2718, - 3018, 1905, 2714, - 3014, 1926, 2708, - 3008, 1952, 2700, - 3001, 1985, 2689, - 2991, 2025, 2675, - 2978, 2074, 2654, - 2959, 2133, 2625, - 2933, 2200, 2583, - 2896, 2278, 2520, - 2841, 2364, 2419, - 2754, 2459, 2235, - 2605, 2560, 1736, - 2271, 2668, 0, - 0, 2782, 0, - 0, 2899, 0, - 0, 3020, 0, - 0, 3144, 0, - 0, 3269, 0, - 0, 3396, 0, - 0, 3525, 0, - 0, 3654, 0, - 3161, 1971, 2862, - 3161, 1972, 2862, - 3161, 1973, 2862, - 3160, 1974, 2861, - 3160, 1976, 2861, - 3160, 1978, 2860, - 3159, 1981, 2860, - 3159, 1986, 2859, - 3158, 1991, 2857, - 3156, 1998, 2856, - 3155, 2008, 2853, - 3153, 2020, 2850, - 3150, 2036, 2846, - 3146, 2057, 2840, - 3141, 2083, 2832, - 3133, 2116, 2821, - 3124, 2157, 2806, - 3110, 2206, 2786, - 3092, 2264, 2757, - 3066, 2332, 2715, - 3028, 2409, 2651, - 2973, 2496, 2550, - 2886, 2590, 2366, - 2737, 2692, 1866, - 2403, 2800, 0, - 0, 2914, 0, - 0, 3031, 0, - 0, 3152, 0, - 0, 3276, 0, - 0, 3401, 0, - 0, 3528, 0, - 0, 3657, 0, - 3293, 2102, 2994, - 3293, 2102, 2994, - 3293, 2103, 2994, - 3293, 2104, 2993, - 3292, 2105, 2993, - 3292, 2107, 2993, - 3292, 2110, 2992, - 3291, 2113, 2991, - 3291, 2117, 2990, - 3290, 2122, 2989, - 3289, 2130, 2987, - 3287, 2139, 2985, - 3285, 2152, 2982, - 3282, 2168, 2978, - 3278, 2188, 2972, - 3273, 2215, 2964, - 3266, 2248, 2953, - 3256, 2288, 2938, - 3242, 2337, 2918, - 3224, 2396, 2888, - 3198, 2464, 2846, - 3160, 2541, 2783, - 3105, 2628, 2682, - 3019, 2722, 2498, - 2869, 2824, 1996, - 2536, 2932, 0, - 0, 3046, 0, - 0, 3163, 0, - 0, 3284, 0, - 0, 3408, 0, - 0, 3533, 0, - 0, 3660, 0, - 3425, 2233, 3126, - 3425, 2233, 3126, - 3425, 2234, 3126, - 3425, 2235, 3126, - 3425, 2236, 3125, - 3425, 2237, 3125, - 3424, 2239, 3125, - 3424, 2241, 3124, - 3423, 2244, 3123, - 3423, 2248, 3122, - 3422, 2254, 3121, - 3421, 2261, 3119, - 3419, 2271, 3117, - 3417, 2283, 3114, - 3414, 2299, 3109, - 3410, 2320, 3104, - 3405, 2346, 3096, - 3398, 2379, 3085, - 3388, 2420, 3070, - 3375, 2469, 3049, - 3356, 2527, 3020, - 3330, 2595, 2978, - 3293, 2673, 2915, - 3237, 2759, 2814, - 3151, 2854, 2629, - 3002, 2956, 2126, - 2668, 3064, 0, - 0, 3178, 0, - 0, 3295, 0, - 0, 3416, 0, - 0, 3540, 0, - 0, 3665, 0, - 3557, 2364, 3258, - 3557, 2365, 3258, - 3557, 2365, 3258, - 3557, 2365, 3258, - 3557, 2366, 3258, - 3557, 2367, 3257, - 3557, 2369, 3257, - 3556, 2370, 3257, - 3556, 2373, 3256, - 3556, 2376, 3255, - 3555, 2380, 3254, - 3554, 2386, 3253, - 3553, 2393, 3251, - 3551, 2402, 3249, - 3549, 2415, 3246, - 3546, 2431, 3241, - 3542, 2452, 3236, - 3537, 2478, 3228, - 3530, 2511, 3217, - 3520, 2552, 3202, - 3507, 2601, 3181, - 3488, 2659, 3152, - 3462, 2727, 3110, - 3425, 2805, 3047, - 3369, 2891, 2946, - 3283, 2986, 2761, - 3134, 3088, 2257, - 2800, 3196, 0, - 0, 3310, 0, - 0, 3427, 0, - 0, 3548, 0, - 0, 3672, 0, - 3690, 2496, 3390, - 3690, 2496, 3390, - 3690, 2496, 3390, - 3689, 2497, 3390, - 3689, 2497, 3390, - 3689, 2498, 3390, - 3689, 2499, 3389, - 3689, 2500, 3389, - 3689, 2502, 3389, - 3688, 2504, 3388, - 3688, 2508, 3387, - 3687, 2512, 3386, - 3686, 2517, 3385, - 3685, 2525, 3383, - 3683, 2534, 3381, - 3681, 2547, 3378, - 3678, 2563, 3373, - 3674, 2583, 3368, - 3669, 2610, 3360, - 3662, 2643, 3349, - 3652, 2683, 3334, - 3639, 2733, 3313, - 3620, 2791, 3284, - 3594, 2859, 3242, - 3557, 2937, 3179, - 3501, 3023, 3078, - 3415, 3118, 2893, - 3266, 3220, 2389, - 2932, 3328, 0, - 0, 3442, 0, - 0, 3559, 0, - 0, 3680, 0, - 3822, 2627, 3522, - 3822, 2628, 3522, - 3822, 2628, 3522, - 3822, 2628, 3522, - 3822, 2628, 3522, - 3821, 2629, 3522, - 3821, 2630, 3522, - 3821, 2631, 3521, - 3821, 2632, 3521, - 3821, 2634, 3521, - 3820, 2636, 3520, - 3820, 2639, 3519, - 3819, 2644, 3518, - 3818, 2649, 3517, - 3817, 2656, 3515, - 3815, 2666, 3513, - 3813, 2678, 3510, - 3810, 2695, 3505, - 3806, 2715, 3500, - 3801, 2742, 3492, - 3794, 2775, 3481, - 3784, 2815, 3466, - 3771, 2865, 3445, - 3752, 2923, 3416, - 3726, 2991, 3374, - 3689, 3069, 3311, - 3634, 3155, 3210, - 3547, 3250, 3025, - 3398, 3352, 2520, - 3065, 3460, 0, - 0, 3574, 0, - 0, 3691, 0, - 3954, 2759, 3654, - 3954, 2759, 3654, - 3954, 2759, 3654, - 3954, 2760, 3654, - 3954, 2760, 3654, - 3954, 2760, 3654, - 3954, 2761, 3654, - 3953, 2762, 3654, - 3953, 2763, 3653, - 3953, 2764, 3653, - 3953, 2766, 3653, - 3952, 2768, 3652, - 3952, 2771, 3651, - 3951, 2775, 3650, - 3950, 2781, 3649, - 3949, 2788, 3647, - 3948, 2798, 3645, - 3945, 2810, 3642, - 3943, 2826, 3637, - 3939, 2847, 3632, - 3933, 2874, 3624, - 3926, 2907, 3613, - 3916, 2947, 3598, - 3903, 2997, 3577, - 3884, 3055, 3548, - 3858, 3123, 3506, - 3821, 3201, 3443, - 3766, 3287, 3342, - 3679, 3382, 3157, - 3530, 3484, 2652, - 3197, 3593, 0, - 0, 3706, 0, - 4086, 2891, 3786, - 4086, 2891, 3786, - 4086, 2891, 3786, - 4086, 2891, 3786, - 4086, 2892, 3786, - 4086, 2892, 3786, - 4086, 2892, 3786, - 4086, 2893, 3786, - 4086, 2894, 3786, - 4085, 2895, 3785, - 4085, 2896, 3785, - 4085, 2898, 3785, - 4085, 2900, 3784, - 4084, 2903, 3783, - 4083, 2907, 3782, - 4082, 2913, 3781, - 4081, 2920, 3779, - 4080, 2930, 3777, - 4078, 2942, 3774, - 4075, 2958, 3770, - 4071, 2979, 3764, - 4065, 3006, 3756, - 4058, 3039, 3745, - 4048, 3079, 3730, - 4035, 3129, 3710, - 4017, 3187, 3680, - 3990, 3255, 3638, - 3953, 3333, 3575, - 3898, 3419, 3474, - 3811, 3514, 3289, - 3662, 3616, 2783, - 3329, 3725, 0, - 4095, 3023, 3918, - 4095, 3023, 3918, - 4095, 3023, 3918, - 4095, 3023, 3918, - 4095, 3023, 3918, - 4095, 3024, 3918, - 4095, 3024, 3918, - 4095, 3024, 3918, - 4095, 3025, 3918, - 4095, 3026, 3918, - 4095, 3027, 3918, - 4095, 3028, 3917, - 4095, 3030, 3917, - 4095, 3032, 3916, - 4095, 3035, 3916, - 4095, 3039, 3915, - 4095, 3045, 3913, - 4095, 3052, 3911, - 4095, 3062, 3909, - 4095, 3074, 3906, - 4095, 3090, 3902, - 4095, 3111, 3896, - 4095, 3138, 3888, - 4095, 3171, 3877, - 4095, 3211, 3862, - 4095, 3261, 3842, - 4095, 3319, 3812, - 4095, 3387, 3770, - 4085, 3465, 3707, - 4030, 3552, 3606, - 3944, 3646, 3421, - 3794, 3748, 2915, - 4095, 3155, 4050, - 4095, 3155, 4050, - 4095, 3155, 4050, - 4095, 3155, 4050, - 4095, 3155, 4050, - 4095, 3155, 4050, - 4095, 3156, 4050, - 4095, 3156, 4050, - 4095, 3156, 4050, - 4095, 3157, 4050, - 4095, 3158, 4050, - 4095, 3159, 4050, - 4095, 3160, 4049, - 4095, 3162, 4049, - 4095, 3164, 4048, - 4095, 3167, 4048, - 4095, 3171, 4047, - 4095, 3177, 4045, - 4095, 3184, 4044, - 4095, 3194, 4041, - 4095, 3206, 4038, - 4095, 3222, 4034, - 4095, 3243, 4028, - 4095, 3270, 4020, - 4095, 3303, 4009, - 4095, 3343, 3994, - 4095, 3393, 3974, - 4095, 3451, 3944, - 4095, 3519, 3902, - 4095, 3597, 3839, - 4095, 3684, 3738, - 4076, 3778, 3553, - 0, 108, 241, - 0, 151, 183, - 0, 203, 91, - 0, 264, 0, - 0, 334, 0, - 0, 414, 0, - 0, 503, 0, - 0, 600, 0, - 0, 704, 0, - 0, 813, 0, - 0, 928, 0, - 0, 1046, 0, - 0, 1168, 0, - 0, 1292, 0, - 0, 1418, 0, - 0, 1546, 0, - 0, 1674, 0, - 0, 1804, 0, - 0, 1934, 0, - 0, 2065, 0, - 0, 2196, 0, - 0, 2327, 0, - 0, 2459, 0, - 0, 2590, 0, - 0, 2722, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 0, 123, 316, - 0, 165, 267, - 0, 215, 193, - 0, 274, 69, - 0, 343, 0, - 0, 422, 0, - 0, 509, 0, - 0, 605, 0, - 0, 708, 0, - 0, 816, 0, - 0, 930, 0, - 0, 1048, 0, - 0, 1170, 0, - 0, 1293, 0, - 0, 1419, 0, - 0, 1546, 0, - 0, 1675, 0, - 0, 1804, 0, - 0, 1934, 0, - 0, 2065, 0, - 0, 2196, 0, - 0, 2327, 0, - 0, 2459, 0, - 0, 2590, 0, - 0, 2722, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 225, 143, 400, - 144, 182, 360, - 6, 231, 300, - 0, 288, 206, - 0, 355, 37, - 0, 432, 0, - 0, 518, 0, - 0, 612, 0, - 0, 713, 0, - 0, 821, 0, - 0, 934, 0, - 0, 1051, 0, - 0, 1171, 0, - 0, 1295, 0, - 0, 1420, 0, - 0, 1547, 0, - 0, 1676, 0, - 0, 1805, 0, - 0, 1935, 0, - 0, 2065, 0, - 0, 2196, 0, - 0, 2327, 0, - 0, 2459, 0, - 0, 2590, 0, - 0, 2722, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 451, 167, 493, - 403, 205, 461, - 331, 251, 413, - 211, 306, 341, - 0, 371, 223, - 0, 445, 0, - 0, 529, 0, - 0, 621, 0, - 0, 720, 0, - 0, 826, 0, - 0, 938, 0, - 0, 1054, 0, - 0, 1174, 0, - 0, 1297, 0, - 0, 1422, 0, - 0, 1548, 0, - 0, 1676, 0, - 0, 1805, 0, - 0, 1935, 0, - 0, 2066, 0, - 0, 2196, 0, - 0, 2328, 0, - 0, 2459, 0, - 0, 2590, 0, - 0, 2722, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 643, 198, 593, - 612, 234, 568, - 567, 277, 531, - 500, 329, 476, - 391, 391, 391, - 186, 462, 245, - 0, 543, 0, - 0, 632, 0, - 0, 730, 0, - 0, 834, 0, - 0, 944, 0, - 0, 1059, 0, - 0, 1178, 0, - 0, 1299, 0, - 0, 1424, 0, - 0, 1550, 0, - 0, 1678, 0, - 0, 1806, 0, - 0, 1936, 0, - 0, 2066, 0, - 0, 2197, 0, - 0, 2328, 0, - 0, 2459, 0, - 0, 2591, 0, - 0, 2722, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 815, 237, 700, - 794, 269, 680, - 765, 310, 651, - 722, 358, 610, - 658, 417, 548, - 556, 484, 450, - 369, 561, 272, - 0, 647, 0, - 0, 742, 0, - 0, 844, 0, - 0, 952, 0, - 0, 1065, 0, - 0, 1182, 0, - 0, 1303, 0, - 0, 1426, 0, - 0, 1552, 0, - 0, 1679, 0, - 0, 1808, 0, - 0, 1937, 0, - 0, 2067, 0, - 0, 2197, 0, - 0, 2328, 0, - 0, 2459, 0, - 0, 2591, 0, - 0, 2722, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 974, 283, 813, - 960, 313, 797, - 940, 350, 775, - 911, 395, 744, - 870, 448, 699, - 809, 512, 630, - 711, 585, 518, - 535, 667, 307, - 81, 758, 0, - 0, 856, 0, - 0, 962, 0, - 0, 1073, 0, - 0, 1188, 0, - 0, 1308, 0, - 0, 1430, 0, - 0, 1555, 0, - 0, 1681, 0, - 0, 1809, 0, - 0, 1938, 0, - 0, 2068, 0, - 0, 2198, 0, - 0, 2329, 0, - 0, 2460, 0, - 0, 2591, 0, - 0, 2723, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1126, 339, 929, - 1116, 365, 917, - 1102, 398, 900, - 1082, 439, 877, - 1054, 488, 844, - 1014, 546, 795, - 954, 614, 720, - 860, 692, 596, - 691, 778, 349, - 276, 873, 0, - 0, 975, 0, - 0, 1083, 0, - 0, 1196, 0, - 0, 1314, 0, - 0, 1435, 0, - 0, 1558, 0, - 0, 1684, 0, - 0, 1811, 0, - 0, 1939, 0, - 0, 2069, 0, - 0, 2199, 0, - 0, 2329, 0, - 0, 2460, 0, - 0, 2591, 0, - 0, 2723, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1272, 404, 1049, - 1265, 427, 1040, - 1255, 456, 1027, - 1241, 492, 1010, - 1221, 536, 985, - 1194, 589, 950, - 1155, 651, 898, - 1096, 723, 818, - 1004, 804, 683, - 841, 894, 400, - 450, 992, 0, - 0, 1096, 0, - 0, 1207, 0, - 0, 1322, 0, - 0, 1441, 0, - 0, 1563, 0, - 0, 1688, 0, - 0, 1814, 0, - 0, 1942, 0, - 0, 2070, 0, - 0, 2200, 0, - 0, 2330, 0, - 0, 2461, 0, - 0, 2592, 0, - 0, 2723, 0, - 0, 2855, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1415, 479, 1172, - 1409, 499, 1165, - 1402, 523, 1156, - 1392, 554, 1143, - 1378, 593, 1124, - 1359, 640, 1099, - 1332, 696, 1062, - 1293, 762, 1008, - 1235, 837, 923, - 1145, 921, 778, - 985, 1014, 461, - 611, 1114, 0, - 0, 1221, 0, - 0, 1333, 0, - 0, 1449, 0, - 0, 1569, 0, - 0, 1692, 0, - 0, 1817, 0, - 0, 1944, 0, - 0, 2072, 0, - 0, 2202, 0, - 0, 2331, 0, - 0, 2462, 0, - 0, 2593, 0, - 0, 2724, 0, - 0, 2855, 0, - 0, 2987, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1555, 563, 1298, - 1551, 579, 1292, - 1545, 600, 1285, - 1538, 627, 1275, - 1528, 660, 1262, - 1514, 701, 1243, - 1495, 750, 1216, - 1468, 809, 1178, - 1430, 877, 1122, - 1373, 955, 1034, - 1283, 1041, 880, - 1127, 1136, 531, - 763, 1238, 0, - 0, 1347, 0, - 0, 1460, 0, - 0, 1578, 0, - 0, 1699, 0, - 0, 1822, 0, - 0, 1948, 0, - 0, 2075, 0, - 0, 2204, 0, - 0, 2333, 0, - 0, 2463, 0, - 0, 2593, 0, - 0, 2724, 0, - 0, 2856, 0, - 0, 2987, 0, - 0, 3119, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1692, 656, 1424, - 1689, 669, 1420, - 1685, 686, 1415, - 1680, 708, 1408, - 1673, 736, 1397, - 1663, 771, 1384, - 1649, 813, 1364, - 1630, 865, 1337, - 1604, 926, 1298, - 1565, 996, 1240, - 1509, 1076, 1149, - 1420, 1164, 989, - 1265, 1261, 610, - 910, 1365, 0, - 0, 1474, 0, - 0, 1589, 0, - 0, 1707, 0, - 0, 1829, 0, - 0, 1953, 0, - 0, 2079, 0, - 0, 2206, 0, - 0, 2335, 0, - 0, 2464, 0, - 0, 2595, 0, - 0, 2725, 0, - 0, 2856, 0, - 0, 2988, 0, - 0, 3119, 0, - 0, 3251, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1828, 756, 1553, - 1826, 766, 1550, - 1823, 780, 1545, - 1819, 798, 1540, - 1814, 821, 1532, - 1807, 850, 1522, - 1797, 886, 1508, - 1783, 930, 1488, - 1764, 983, 1461, - 1738, 1046, 1421, - 1700, 1118, 1362, - 1644, 1199, 1268, - 1556, 1289, 1103, - 1402, 1387, 699, - 1053, 1492, 0, - 0, 1603, 0, - 0, 1718, 0, - 0, 1837, 0, - 0, 1959, 0, - 0, 2084, 0, - 0, 2210, 0, - 0, 2338, 0, - 0, 2467, 0, - 0, 2596, 0, - 0, 2726, 0, - 0, 2857, 0, - 0, 2988, 0, - 0, 3120, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3514, 0, - 0, 3646, 0, - 1964, 862, 1682, - 1962, 871, 1679, - 1960, 882, 1676, - 1957, 896, 1672, - 1953, 915, 1667, - 1948, 938, 1659, - 1940, 968, 1649, - 1930, 1006, 1634, - 1917, 1051, 1614, - 1898, 1105, 1586, - 1872, 1169, 1546, - 1834, 1243, 1486, - 1778, 1325, 1391, - 1690, 1416, 1220, - 1538, 1515, 795, - 1193, 1621, 0, - 0, 1732, 0, - 0, 1848, 0, - 0, 1968, 0, - 0, 2090, 0, - 0, 2215, 0, - 0, 2341, 0, - 0, 2469, 0, - 0, 2598, 0, - 0, 2728, 0, - 0, 2858, 0, - 0, 2989, 0, - 0, 3120, 0, - 0, 3252, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3646, 0, - 2098, 974, 1812, - 2097, 981, 1810, - 2095, 989, 1808, - 2093, 1001, 1804, - 2090, 1016, 1800, - 2086, 1035, 1795, - 2081, 1059, 1787, - 2074, 1090, 1776, - 2064, 1128, 1762, - 2050, 1174, 1742, - 2032, 1230, 1714, - 2005, 1294, 1673, - 1968, 1369, 1612, - 1912, 1452, 1515, - 1824, 1545, 1341, - 1673, 1644, 898, - 1331, 1751, 0, - 0, 1862, 0, - 0, 1979, 0, - 0, 2099, 0, - 0, 2221, 0, - 0, 2346, 0, - 0, 2473, 0, - 0, 2601, 0, - 0, 2730, 0, - 0, 2860, 0, - 0, 2990, 0, - 0, 3121, 0, - 0, 3252, 0, - 0, 3384, 0, - 0, 3515, 0, - 0, 3647, 0, - 2232, 1091, 1942, - 2231, 1096, 1941, - 2230, 1103, 1939, - 2228, 1111, 1937, - 2226, 1123, 1933, - 2223, 1138, 1929, - 2219, 1158, 1924, - 2214, 1183, 1916, - 2206, 1214, 1905, - 2197, 1253, 1891, - 2183, 1300, 1870, - 2165, 1356, 1842, - 2138, 1421, 1801, - 2101, 1497, 1739, - 2045, 1581, 1641, - 1958, 1674, 1465, - 1807, 1774, 1008, - 1467, 1881, 0, - 0, 1993, 0, - 0, 2110, 0, - 0, 2230, 0, - 0, 2353, 0, - 0, 2478, 0, - 0, 2605, 0, - 0, 2733, 0, - 0, 2862, 0, - 0, 2992, 0, - 0, 3122, 0, - 0, 3253, 0, - 0, 3384, 0, - 0, 3516, 0, - 0, 3647, 0, - 2365, 1211, 2073, - 2364, 1215, 2072, - 2364, 1220, 2071, - 2362, 1227, 2069, - 2361, 1236, 2066, - 2359, 1248, 2063, - 2356, 1263, 2059, - 2352, 1283, 2053, - 2346, 1308, 2046, - 2339, 1340, 2035, - 2329, 1379, 2020, - 2316, 1427, 2000, - 2297, 1483, 1971, - 2271, 1550, 1930, - 2234, 1625, 1868, - 2178, 1710, 1769, - 2091, 1804, 1591, - 1941, 1904, 1122, - 1603, 2011, 0, - 0, 2124, 0, - 0, 2241, 0, - 0, 2361, 0, - 0, 2484, 0, - 0, 2610, 0, - 0, 2737, 0, - 0, 2865, 0, - 0, 2994, 0, - 0, 3124, 0, - 0, 3254, 0, - 0, 3385, 0, - 0, 3516, 0, - 0, 3648, 0, - 2498, 1334, 2204, - 2498, 1337, 2203, - 2497, 1341, 2202, - 2496, 1346, 2201, - 2495, 1353, 2199, - 2493, 1362, 2197, - 2491, 1374, 2194, - 2488, 1390, 2189, - 2484, 1410, 2184, - 2479, 1435, 2176, - 2472, 1467, 2165, - 2462, 1507, 2150, - 2449, 1555, 2130, - 2430, 1612, 2101, - 2404, 1679, 2060, - 2366, 1755, 1997, - 2311, 1840, 1898, - 2224, 1934, 1718, - 2074, 2035, 1241, - 1737, 2142, 0, - 0, 2255, 0, - 0, 2372, 0, - 0, 2493, 0, - 0, 2616, 0, - 0, 2741, 0, - 0, 2868, 0, - 0, 2997, 0, - 0, 3126, 0, - 0, 3256, 0, - 0, 3386, 0, - 0, 3517, 0, - 0, 3648, 0, - 2631, 1459, 2335, - 2631, 1461, 2335, - 2630, 1464, 2334, - 2629, 1468, 2333, - 2628, 1473, 2332, - 2627, 1480, 2330, - 2626, 1490, 2328, - 2624, 1502, 2324, - 2621, 1518, 2320, - 2617, 1538, 2314, - 2611, 1564, 2307, - 2604, 1596, 2296, - 2594, 1636, 2281, - 2581, 1684, 2261, - 2562, 1742, 2232, - 2536, 1809, 2190, - 2499, 1885, 2128, - 2443, 1971, 2028, - 2357, 2065, 1846, - 2207, 2166, 1362, - 1871, 2274, 0, - 0, 2387, 0, - 0, 2504, 0, - 0, 2625, 0, - 0, 2748, 0, - 0, 2873, 0, - 0, 3000, 0, - 0, 3129, 0, - 0, 3258, 0, - 0, 3388, 0, - 0, 3518, 0, - 0, 3649, 0, - 2764, 1585, 2467, - 2763, 1587, 2466, - 2763, 1589, 2466, - 2762, 1593, 2465, - 2762, 1597, 2464, - 2761, 1602, 2463, - 2760, 1609, 2461, - 2758, 1618, 2459, - 2756, 1631, 2456, - 2753, 1647, 2451, - 2749, 1667, 2446, - 2744, 1693, 2438, - 2737, 1725, 2427, - 2727, 1765, 2412, - 2713, 1814, 2392, - 2695, 1872, 2363, - 2669, 1939, 2321, - 2631, 2016, 2258, - 2576, 2102, 2158, - 2489, 2196, 1976, - 2340, 2297, 1486, - 2004, 2405, 0, - 0, 2518, 0, - 0, 2636, 0, - 0, 2756, 0, - 0, 2880, 0, - 0, 3005, 0, - 0, 3132, 0, - 0, 3261, 0, - 0, 3390, 0, - 0, 3520, 0, - 0, 3650, 0, - 2896, 1713, 2599, - 2896, 1715, 2598, - 2896, 1717, 2598, - 2895, 1719, 2597, - 2895, 1722, 2597, - 2894, 1726, 2596, - 2893, 1731, 2594, - 2892, 1739, 2593, - 2890, 1748, 2590, - 2888, 1760, 2587, - 2885, 1776, 2583, - 2881, 1797, 2577, - 2876, 1823, 2569, - 2869, 1855, 2558, - 2859, 1896, 2544, - 2846, 1944, 2523, - 2827, 2002, 2494, - 2801, 2070, 2452, - 2764, 2147, 2389, - 2708, 2233, 2289, - 2622, 2327, 2106, - 2472, 2429, 1612, - 2137, 2537, 0, - 0, 2650, 0, - 0, 2767, 0, - 0, 2888, 0, - 0, 3012, 0, - 0, 3137, 0, - 0, 3264, 0, - 0, 3393, 0, - 0, 3522, 0, - 0, 3652, 0, - 3028, 1843, 2730, - 3028, 1844, 2730, - 3028, 1845, 2730, - 3028, 1847, 2729, - 3027, 1849, 2729, - 3027, 1852, 2728, - 3026, 1856, 2727, - 3025, 1862, 2726, - 3024, 1869, 2724, - 3023, 1878, 2722, - 3020, 1891, 2719, - 3017, 1907, 2714, - 3014, 1927, 2708, - 3008, 1953, 2701, - 3001, 1986, 2690, - 2991, 2026, 2675, - 2978, 2075, 2654, - 2959, 2133, 2625, - 2933, 2201, 2583, - 2896, 2278, 2520, - 2840, 2364, 2420, - 2754, 2459, 2236, - 2605, 2561, 1740, - 2270, 2669, 0, - 0, 2782, 0, - 0, 2899, 0, - 0, 3020, 0, - 0, 3144, 0, - 0, 3269, 0, - 0, 3396, 0, - 0, 3525, 0, - 0, 3654, 0, - 3161, 1972, 2862, - 3161, 1973, 2862, - 3160, 1974, 2862, - 3160, 1975, 2862, - 3160, 1977, 2861, - 3160, 1980, 2861, - 3159, 1983, 2860, - 3158, 1987, 2859, - 3158, 1992, 2858, - 3156, 1999, 2856, - 3155, 2009, 2853, - 3153, 2021, 2850, - 3150, 2037, 2846, - 3146, 2058, 2840, - 3140, 2084, 2832, - 3133, 2117, 2821, - 3124, 2157, 2807, - 3110, 2206, 2786, - 3092, 2265, 2757, - 3065, 2333, 2715, - 3028, 2410, 2652, - 2973, 2496, 2551, - 2886, 2591, 2367, - 2737, 2692, 1868, - 2403, 2801, 0, - 0, 2914, 0, - 0, 3031, 0, - 0, 3152, 0, - 0, 3276, 0, - 0, 3401, 0, - 0, 3528, 0, - 0, 3657, 0, - 3293, 2103, 2994, - 3293, 2103, 2994, - 3293, 2104, 2994, - 3293, 2105, 2994, - 3292, 2106, 2993, - 3292, 2108, 2993, - 3292, 2110, 2992, - 3291, 2114, 2992, - 3291, 2118, 2991, - 3290, 2123, 2989, - 3289, 2130, 2988, - 3287, 2140, 2985, - 3285, 2152, 2982, - 3282, 2168, 2978, - 3278, 2189, 2972, - 3273, 2215, 2964, - 3265, 2248, 2953, - 3256, 2289, 2938, - 3242, 2338, 2918, - 3224, 2396, 2889, - 3198, 2464, 2847, - 3160, 2541, 2784, - 3105, 2628, 2682, - 3019, 2722, 2498, - 2869, 2824, 1998, - 2535, 2932, 0, - 0, 3046, 0, - 0, 3163, 0, - 0, 3284, 0, - 0, 3408, 0, - 0, 3533, 0, - 0, 3660, 0, - 3425, 2234, 3126, - 3425, 2234, 3126, - 3425, 2235, 3126, - 3425, 2235, 3126, - 3425, 2236, 3126, - 3425, 2238, 3125, - 3424, 2239, 3125, - 3424, 2242, 3124, - 3423, 2245, 3124, - 3423, 2249, 3123, - 3422, 2255, 3121, - 3421, 2262, 3119, - 3419, 2271, 3117, - 3417, 2284, 3114, - 3414, 2300, 3110, - 3410, 2320, 3104, - 3405, 2347, 3096, - 3398, 2380, 3085, - 3388, 2420, 3070, - 3374, 2469, 3050, - 3356, 2528, 3021, - 3330, 2596, 2978, - 3292, 2673, 2915, - 3237, 2760, 2814, - 3151, 2854, 2630, - 3001, 2956, 2128, - 2668, 3064, 0, - 0, 3178, 0, - 0, 3295, 0, - 0, 3416, 0, - 0, 3540, 0, - 0, 3665, 0, - 3557, 2365, 3258, - 3557, 2365, 3258, - 3557, 2365, 3258, - 3557, 2366, 3258, - 3557, 2367, 3258, - 3557, 2368, 3257, - 3557, 2369, 3257, - 3556, 2371, 3257, - 3556, 2373, 3256, - 3556, 2376, 3255, - 3555, 2380, 3254, - 3554, 2386, 3253, - 3553, 2393, 3251, - 3551, 2403, 3249, - 3549, 2415, 3246, - 3546, 2431, 3242, - 3542, 2452, 3236, - 3537, 2478, 3228, - 3530, 2511, 3217, - 3520, 2552, 3202, - 3507, 2601, 3182, - 3488, 2660, 3152, - 3462, 2728, 3110, - 3425, 2805, 3047, - 3369, 2892, 2946, - 3283, 2986, 2761, - 3134, 3088, 2258, - 2800, 3196, 0, - 0, 3310, 0, - 0, 3427, 0, - 0, 3548, 0, - 0, 3672, 0, - 3690, 2496, 3390, - 3690, 2496, 3390, - 3689, 2497, 3390, - 3689, 2497, 3390, - 3689, 2498, 3390, - 3689, 2498, 3390, - 3689, 2499, 3389, - 3689, 2501, 3389, - 3689, 2502, 3389, - 3688, 2505, 3388, - 3688, 2508, 3387, - 3687, 2512, 3386, - 3686, 2518, 3385, - 3685, 2525, 3383, - 3683, 2534, 3381, - 3681, 2547, 3378, - 3678, 2563, 3374, - 3674, 2584, 3368, - 3669, 2610, 3360, - 3662, 2643, 3349, - 3652, 2684, 3334, - 3639, 2733, 3314, - 3620, 2791, 3284, - 3594, 2859, 3242, - 3557, 2937, 3179, - 3501, 3023, 3078, - 3415, 3118, 2893, - 3266, 3220, 2389, - 2932, 3328, 0, - 0, 3442, 0, - 0, 3559, 0, - 0, 3680, 0, - 3822, 2628, 3522, - 3822, 2628, 3522, - 3822, 2628, 3522, - 3822, 2628, 3522, - 3822, 2629, 3522, - 3821, 2629, 3522, - 3821, 2630, 3522, - 3821, 2631, 3521, - 3821, 2632, 3521, - 3821, 2634, 3521, - 3820, 2637, 3520, - 3820, 2640, 3519, - 3819, 2644, 3518, - 3818, 2649, 3517, - 3817, 2657, 3515, - 3815, 2666, 3513, - 3813, 2679, 3510, - 3810, 2695, 3506, - 3806, 2716, 3500, - 3801, 2742, 3492, - 3794, 2775, 3481, - 3784, 2816, 3466, - 3771, 2865, 3446, - 3752, 2923, 3416, - 3726, 2991, 3374, - 3689, 3069, 3311, - 3634, 3155, 3210, - 3547, 3250, 3025, - 3398, 3352, 2521, - 3064, 3460, 0, - 0, 3574, 0, - 0, 3691, 0, - 3954, 2759, 3654, - 3954, 2759, 3654, - 3954, 2760, 3654, - 3954, 2760, 3654, - 3954, 2760, 3654, - 3954, 2761, 3654, - 3954, 2761, 3654, - 3953, 2762, 3654, - 3953, 2763, 3653, - 3953, 2764, 3653, - 3953, 2766, 3653, - 3952, 2768, 3652, - 3952, 2772, 3651, - 3951, 2776, 3650, - 3950, 2781, 3649, - 3949, 2788, 3647, - 3948, 2798, 3645, - 3945, 2811, 3642, - 3943, 2827, 3638, - 3939, 2847, 3632, - 3933, 2874, 3624, - 3926, 2907, 3613, - 3916, 2947, 3598, - 3903, 2997, 3578, - 3884, 3055, 3548, - 3858, 3123, 3506, - 3821, 3201, 3443, - 3766, 3287, 3342, - 3679, 3382, 3157, - 3530, 3484, 2652, - 3197, 3593, 0, - 0, 3706, 0, - 4086, 2891, 3786, - 4086, 2891, 3786, - 4086, 2891, 3786, - 4086, 2891, 3786, - 4086, 2892, 3786, - 4086, 2892, 3786, - 4086, 2892, 3786, - 4086, 2893, 3786, - 4086, 2894, 3786, - 4085, 2895, 3786, - 4085, 2896, 3785, - 4085, 2898, 3785, - 4085, 2900, 3784, - 4084, 2903, 3784, - 4083, 2908, 3783, - 4082, 2913, 3781, - 4081, 2920, 3779, - 4080, 2930, 3777, - 4078, 2942, 3774, - 4075, 2959, 3770, - 4071, 2979, 3764, - 4065, 3006, 3756, - 4058, 3039, 3745, - 4048, 3079, 3730, - 4035, 3129, 3710, - 4017, 3187, 3680, - 3990, 3255, 3638, - 3953, 3333, 3575, - 3898, 3420, 3474, - 3811, 3514, 3289, - 3662, 3616, 2784, - 3329, 3725, 0, - 4095, 3023, 3918, - 4095, 3023, 3918, - 4095, 3023, 3918, - 4095, 3023, 3918, - 4095, 3023, 3918, - 4095, 3024, 3918, - 4095, 3024, 3918, - 4095, 3024, 3918, - 4095, 3025, 3918, - 4095, 3026, 3918, - 4095, 3027, 3918, - 4095, 3028, 3917, - 4095, 3030, 3917, - 4095, 3032, 3916, - 4095, 3035, 3916, - 4095, 3040, 3915, - 4095, 3045, 3913, - 4095, 3052, 3912, - 4095, 3062, 3909, - 4095, 3074, 3906, - 4095, 3091, 3902, - 4095, 3111, 3896, - 4095, 3138, 3888, - 4095, 3171, 3877, - 4095, 3211, 3862, - 4095, 3261, 3842, - 4095, 3319, 3812, - 4095, 3387, 3770, - 4085, 3465, 3707, - 4030, 3552, 3606, - 3944, 3646, 3421, - 3794, 3748, 2916, - 4095, 3155, 4051, - 4095, 3155, 4050, - 4095, 3155, 4050, - 4095, 3155, 4050, - 4095, 3155, 4050, - 4095, 3155, 4050, - 4095, 3156, 4050, - 4095, 3156, 4050, - 4095, 3156, 4050, - 4095, 3157, 4050, - 4095, 3158, 4050, - 4095, 3159, 4050, - 4095, 3160, 4049, - 4095, 3162, 4049, - 4095, 3164, 4048, - 4095, 3167, 4048, - 4095, 3172, 4047, - 4095, 3177, 4045, - 4095, 3184, 4044, - 4095, 3194, 4041, - 4095, 3206, 4038, - 4095, 3223, 4034, - 4095, 3243, 4028, - 4095, 3270, 4020, - 4095, 3303, 4009, - 4095, 3343, 3994, - 4095, 3393, 3974, - 4095, 3451, 3945, - 4095, 3519, 3902, - 4095, 3597, 3839, - 4095, 3684, 3738, - 4076, 3778, 3553, - 0, 193, 352, - 0, 229, 307, - 0, 273, 239, - 0, 326, 129, - 0, 388, 0, - 0, 459, 0, - 0, 540, 0, - 0, 630, 0, - 0, 728, 0, - 0, 833, 0, - 0, 943, 0, - 0, 1058, 0, - 0, 1177, 0, - 0, 1299, 0, - 0, 1423, 0, - 0, 1550, 0, - 0, 1677, 0, - 0, 1806, 0, - 0, 1936, 0, - 0, 2066, 0, - 0, 2197, 0, - 0, 2328, 0, - 0, 2459, 0, - 0, 2591, 0, - 0, 2722, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 0, 205, 412, - 0, 240, 373, - 0, 283, 315, - 0, 335, 223, - 0, 396, 62, - 0, 466, 0, - 0, 546, 0, - 0, 635, 0, - 0, 732, 0, - 0, 836, 0, - 0, 945, 0, - 0, 1060, 0, - 0, 1178, 0, - 0, 1300, 0, - 0, 1424, 0, - 0, 1550, 0, - 0, 1678, 0, - 0, 1807, 0, - 0, 1936, 0, - 0, 2066, 0, - 0, 2197, 0, - 0, 2328, 0, - 0, 2459, 0, - 0, 2591, 0, - 0, 2722, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 154, 222, 481, - 58, 255, 448, - 0, 297, 399, - 0, 347, 325, - 0, 407, 201, - 0, 476, 0, - 0, 554, 0, - 0, 641, 0, - 0, 737, 0, - 0, 840, 0, - 0, 949, 0, - 0, 1062, 0, - 0, 1180, 0, - 0, 1302, 0, - 0, 1425, 0, - 0, 1551, 0, - 0, 1679, 0, - 0, 1807, 0, - 0, 1936, 0, - 0, 2066, 0, - 0, 2197, 0, - 0, 2328, 0, - 0, 2459, 0, - 0, 2591, 0, - 0, 2722, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 409, 242, 560, - 357, 275, 532, - 276, 315, 492, - 138, 363, 433, - 0, 420, 338, - 0, 488, 170, - 0, 564, 0, - 0, 650, 0, - 0, 744, 0, - 0, 845, 0, - 0, 953, 0, - 0, 1066, 0, - 0, 1183, 0, - 0, 1304, 0, - 0, 1427, 0, - 0, 1552, 0, - 0, 1679, 0, - 0, 1808, 0, - 0, 1937, 0, - 0, 2067, 0, - 0, 2197, 0, - 0, 2328, 0, - 0, 2459, 0, - 0, 2591, 0, - 0, 2722, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 616, 269, 648, - 583, 299, 625, - 535, 337, 593, - 463, 383, 546, - 343, 438, 474, - 109, 503, 355, - 0, 577, 124, - 0, 661, 0, - 0, 753, 0, - 0, 852, 0, - 0, 958, 0, - 0, 1070, 0, - 0, 1186, 0, - 0, 1306, 0, - 0, 1429, 0, - 0, 1554, 0, - 0, 1681, 0, - 0, 1809, 0, - 0, 1938, 0, - 0, 2067, 0, - 0, 2198, 0, - 0, 2328, 0, - 0, 2460, 0, - 0, 2591, 0, - 0, 2723, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 796, 302, 744, - 775, 330, 726, - 744, 366, 700, - 700, 409, 663, - 632, 461, 608, - 523, 523, 523, - 318, 594, 377, - 0, 675, 54, - 0, 764, 0, - 0, 862, 0, - 0, 966, 0, - 0, 1076, 0, - 0, 1191, 0, - 0, 1310, 0, - 0, 1432, 0, - 0, 1556, 0, - 0, 1682, 0, - 0, 1810, 0, - 0, 1938, 0, - 0, 2068, 0, - 0, 2198, 0, - 0, 2329, 0, - 0, 2460, 0, - 0, 2591, 0, - 0, 2723, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 962, 343, 847, - 947, 369, 832, - 926, 401, 812, - 897, 442, 784, - 854, 490, 742, - 790, 549, 680, - 688, 616, 582, - 501, 693, 404, - 0, 780, 0, - 0, 874, 0, - 0, 976, 0, - 0, 1084, 0, - 0, 1197, 0, - 0, 1314, 0, - 0, 1435, 0, - 0, 1559, 0, - 0, 1684, 0, - 0, 1811, 0, - 0, 1940, 0, - 0, 2069, 0, - 0, 2199, 0, - 0, 2329, 0, - 0, 2460, 0, - 0, 2591, 0, - 0, 2723, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1117, 392, 956, - 1107, 415, 945, - 1092, 445, 929, - 1072, 482, 907, - 1043, 527, 876, - 1002, 581, 831, - 941, 644, 762, - 843, 717, 650, - 667, 799, 439, - 213, 890, 0, - 0, 988, 0, - 0, 1094, 0, - 0, 1205, 0, - 0, 1320, 0, - 0, 1440, 0, - 0, 1562, 0, - 0, 1687, 0, - 0, 1813, 0, - 0, 1941, 0, - 0, 2070, 0, - 0, 2200, 0, - 0, 2330, 0, - 0, 2461, 0, - 0, 2592, 0, - 0, 2723, 0, - 0, 2855, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1266, 450, 1070, - 1258, 471, 1061, - 1248, 497, 1049, - 1234, 530, 1032, - 1214, 571, 1009, - 1186, 620, 976, - 1146, 678, 927, - 1086, 746, 852, - 992, 824, 728, - 824, 910, 481, - 408, 1005, 0, - 0, 1107, 0, - 0, 1215, 0, - 0, 1328, 0, - 0, 1446, 0, - 0, 1567, 0, - 0, 1690, 0, - 0, 1816, 0, - 0, 1943, 0, - 0, 2072, 0, - 0, 2201, 0, - 0, 2331, 0, - 0, 2461, 0, - 0, 2592, 0, - 0, 2724, 0, - 0, 2855, 0, - 0, 2987, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1410, 519, 1188, - 1405, 536, 1182, - 1397, 559, 1172, - 1387, 588, 1160, - 1373, 624, 1142, - 1353, 668, 1117, - 1326, 721, 1082, - 1287, 783, 1030, - 1228, 855, 950, - 1136, 936, 815, - 973, 1026, 532, - 582, 1124, 0, - 0, 1229, 0, - 0, 1339, 0, - 0, 1454, 0, - 0, 1573, 0, - 0, 1695, 0, - 0, 1820, 0, - 0, 1946, 0, - 0, 2074, 0, - 0, 2202, 0, - 0, 2332, 0, - 0, 2462, 0, - 0, 2593, 0, - 0, 2724, 0, - 0, 2855, 0, - 0, 2987, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1551, 596, 1310, - 1547, 611, 1305, - 1542, 631, 1297, - 1534, 655, 1288, - 1524, 687, 1275, - 1510, 725, 1256, - 1491, 772, 1231, - 1464, 828, 1194, - 1425, 894, 1140, - 1367, 969, 1055, - 1277, 1053, 910, - 1117, 1146, 593, - 743, 1246, 0, - 0, 1353, 0, - 0, 1465, 0, - 0, 1581, 0, - 0, 1702, 0, - 0, 1824, 0, - 0, 1950, 0, - 0, 2076, 0, - 0, 2205, 0, - 0, 2334, 0, - 0, 2463, 0, - 0, 2594, 0, - 0, 2725, 0, - 0, 2856, 0, - 0, 2987, 0, - 0, 3119, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1690, 683, 1434, - 1687, 695, 1430, - 1683, 711, 1424, - 1677, 732, 1417, - 1670, 759, 1407, - 1660, 792, 1394, - 1646, 833, 1375, - 1627, 882, 1348, - 1600, 941, 1310, - 1562, 1009, 1254, - 1505, 1087, 1166, - 1415, 1173, 1013, - 1259, 1268, 663, - 895, 1370, 0, - 0, 1479, 0, - 0, 1592, 0, - 0, 1710, 0, - 0, 1831, 0, - 0, 1954, 0, - 0, 2080, 0, - 0, 2207, 0, - 0, 2336, 0, - 0, 2465, 0, - 0, 2595, 0, - 0, 2726, 0, - 0, 2856, 0, - 0, 2988, 0, - 0, 3119, 0, - 0, 3251, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1826, 777, 1560, - 1824, 788, 1557, - 1821, 801, 1552, - 1817, 818, 1547, - 1812, 840, 1540, - 1805, 868, 1530, - 1795, 903, 1516, - 1781, 945, 1496, - 1762, 997, 1469, - 1736, 1058, 1430, - 1697, 1128, 1372, - 1641, 1208, 1281, - 1552, 1296, 1121, - 1397, 1393, 742, - 1042, 1497, 0, - 0, 1606, 0, - 0, 1721, 0, - 0, 1839, 0, - 0, 1961, 0, - 0, 2085, 0, - 0, 2211, 0, - 0, 2338, 0, - 0, 2467, 0, - 0, 2597, 0, - 0, 2727, 0, - 0, 2857, 0, - 0, 2988, 0, - 0, 3120, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3514, 0, - 0, 3646, 0, - 1962, 880, 1687, - 1961, 888, 1685, - 1958, 898, 1682, - 1955, 912, 1678, - 1951, 930, 1672, - 1946, 953, 1664, - 1939, 982, 1654, - 1929, 1018, 1640, - 1915, 1062, 1620, - 1897, 1116, 1593, - 1870, 1178, 1553, - 1832, 1250, 1494, - 1776, 1331, 1400, - 1688, 1422, 1235, - 1534, 1520, 831, - 1185, 1624, 0, - 0, 1735, 0, - 0, 1850, 0, - 0, 1969, 0, - 0, 2091, 0, - 0, 2216, 0, - 0, 2342, 0, - 0, 2470, 0, - 0, 2599, 0, - 0, 2728, 0, - 0, 2859, 0, - 0, 2989, 0, - 0, 3120, 0, - 0, 3252, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3647, 0, - 2097, 988, 1815, - 2096, 994, 1814, - 2094, 1003, 1811, - 2092, 1014, 1808, - 2089, 1028, 1804, - 2085, 1047, 1799, - 2080, 1071, 1791, - 2072, 1100, 1781, - 2063, 1138, 1766, - 2049, 1183, 1746, - 2030, 1237, 1719, - 2004, 1301, 1678, - 1966, 1375, 1618, - 1910, 1457, 1523, - 1822, 1548, 1352, - 1670, 1647, 927, - 1325, 1753, 0, - 0, 1864, 0, - 0, 1980, 0, - 0, 2100, 0, - 0, 2222, 0, - 0, 2347, 0, - 0, 2474, 0, - 0, 2601, 0, - 0, 2730, 0, - 0, 2860, 0, - 0, 2990, 0, - 0, 3121, 0, - 0, 3252, 0, - 0, 3384, 0, - 0, 3515, 0, - 0, 3647, 0, - 2231, 1101, 1945, - 2230, 1106, 1944, - 2229, 1113, 1942, - 2227, 1122, 1940, - 2225, 1133, 1936, - 2222, 1148, 1932, - 2218, 1167, 1927, - 2213, 1191, 1919, - 2206, 1222, 1908, - 2196, 1260, 1894, - 2182, 1306, 1874, - 2164, 1362, 1846, - 2137, 1427, 1805, - 2100, 1501, 1744, - 2044, 1585, 1647, - 1956, 1677, 1473, - 1805, 1776, 1031, - 1463, 1883, 0, - 0, 1994, 0, - 0, 2111, 0, - 0, 2231, 0, - 0, 2353, 0, - 0, 2478, 0, - 0, 2605, 0, - 0, 2733, 0, - 0, 2862, 0, - 0, 2992, 0, - 0, 3122, 0, - 0, 3253, 0, - 0, 3384, 0, - 0, 3516, 0, - 0, 3647, 0, - 2364, 1219, 2075, - 2364, 1223, 2074, - 2363, 1228, 2073, - 2362, 1235, 2071, - 2360, 1244, 2069, - 2358, 1255, 2066, - 2355, 1270, 2061, - 2351, 1290, 2056, - 2346, 1315, 2048, - 2339, 1346, 2037, - 2329, 1385, 2023, - 2315, 1432, 2003, - 2297, 1488, 1974, - 2270, 1553, 1933, - 2233, 1629, 1871, - 2177, 1713, 1773, - 2090, 1806, 1597, - 1939, 1906, 1140, - 1599, 2013, 0, - 0, 2125, 0, - 0, 2242, 0, - 0, 2362, 0, - 0, 2485, 0, - 0, 2610, 0, - 0, 2737, 0, - 0, 2865, 0, - 0, 2994, 0, - 0, 3124, 0, - 0, 3254, 0, - 0, 3385, 0, - 0, 3516, 0, - 0, 3648, 0, - 2498, 1340, 2206, - 2497, 1343, 2205, - 2497, 1347, 2204, - 2496, 1352, 2203, - 2494, 1359, 2201, - 2493, 1368, 2199, - 2491, 1380, 2195, - 2488, 1395, 2191, - 2484, 1415, 2185, - 2478, 1440, 2178, - 2471, 1472, 2167, - 2461, 1511, 2152, - 2448, 1559, 2132, - 2429, 1615, 2103, - 2403, 1682, 2062, - 2366, 1757, 2000, - 2310, 1842, 1901, - 2223, 1936, 1723, - 2073, 2036, 1254, - 1735, 2144, 0, - 0, 2256, 0, - 0, 2373, 0, - 0, 2493, 0, - 0, 2616, 0, - 0, 2742, 0, - 0, 2869, 0, - 0, 2997, 0, - 0, 3126, 0, - 0, 3256, 0, - 0, 3386, 0, - 0, 3517, 0, - 0, 3648, 0, - 2631, 1463, 2337, - 2630, 1466, 2336, - 2630, 1469, 2335, - 2629, 1473, 2334, - 2628, 1478, 2333, - 2627, 1485, 2331, - 2625, 1494, 2329, - 2623, 1506, 2326, - 2620, 1522, 2322, - 2616, 1542, 2316, - 2611, 1567, 2308, - 2604, 1599, 2297, - 2594, 1639, 2283, - 2581, 1687, 2262, - 2562, 1744, 2233, - 2536, 1811, 2192, - 2498, 1887, 2130, - 2443, 1972, 2030, - 2356, 2066, 1850, - 2206, 2167, 1373, - 1869, 2275, 0, - 0, 2387, 0, - 0, 2504, 0, - 0, 2625, 0, - 0, 2748, 0, - 0, 2874, 0, - 0, 3001, 0, - 0, 3129, 0, - 0, 3258, 0, - 0, 3388, 0, - 0, 3518, 0, - 0, 3649, 0, - 2763, 1589, 2468, - 2763, 1591, 2467, - 2763, 1593, 2467, - 2762, 1596, 2466, - 2761, 1600, 2465, - 2761, 1605, 2464, - 2759, 1613, 2462, - 2758, 1622, 2460, - 2756, 1634, 2457, - 2753, 1650, 2452, - 2749, 1670, 2447, - 2743, 1696, 2439, - 2736, 1728, 2428, - 2727, 1768, 2413, - 2713, 1816, 2393, - 2694, 1874, 2364, - 2668, 1941, 2322, - 2631, 2017, 2260, - 2575, 2103, 2160, - 2489, 2197, 1978, - 2339, 2298, 1494, - 2003, 2406, 0, - 0, 2519, 0, - 0, 2636, 0, - 0, 2757, 0, - 0, 2880, 0, - 0, 3005, 0, - 0, 3132, 0, - 0, 3261, 0, - 0, 3390, 0, - 0, 3520, 0, - 0, 3650, 0, - 2896, 1716, 2599, - 2896, 1717, 2599, - 2895, 1719, 2599, - 2895, 1722, 2598, - 2894, 1725, 2597, - 2894, 1729, 2596, - 2893, 1734, 2595, - 2892, 1741, 2593, - 2890, 1751, 2591, - 2888, 1763, 2588, - 2885, 1779, 2583, - 2881, 1799, 2578, - 2876, 1825, 2570, - 2869, 1857, 2559, - 2859, 1897, 2544, - 2845, 1946, 2524, - 2827, 2004, 2495, - 2801, 2071, 2453, - 2763, 2148, 2390, - 2708, 2234, 2290, - 2621, 2328, 2108, - 2472, 2430, 1618, - 2136, 2537, 0, - 0, 2650, 0, - 0, 2768, 0, - 0, 2888, 0, - 0, 3012, 0, - 0, 3137, 0, - 0, 3264, 0, - 0, 3393, 0, - 0, 3522, 0, - 0, 3652, 0, - 3028, 1845, 2731, - 3028, 1846, 2731, - 3028, 1847, 2730, - 3028, 1849, 2730, - 3027, 1851, 2729, - 3027, 1854, 2729, - 3026, 1858, 2728, - 3025, 1864, 2726, - 3024, 1871, 2725, - 3022, 1880, 2722, - 3020, 1892, 2719, - 3017, 1908, 2715, - 3013, 1929, 2709, - 3008, 1955, 2701, - 3001, 1987, 2690, - 2991, 2028, 2676, - 2978, 2076, 2655, - 2959, 2134, 2626, - 2933, 2202, 2584, - 2896, 2279, 2521, - 2840, 2365, 2421, - 2754, 2459, 2238, - 2604, 2561, 1744, - 2269, 2669, 0, - 0, 2782, 0, - 0, 2900, 0, - 0, 3020, 0, - 0, 3144, 0, - 0, 3269, 0, - 0, 3396, 0, - 0, 3525, 0, - 0, 3654, 0, - 3161, 1974, 2863, - 3161, 1975, 2862, - 3160, 1976, 2862, - 3160, 1977, 2862, - 3160, 1979, 2862, - 3160, 1981, 2861, - 3159, 1984, 2860, - 3158, 1988, 2859, - 3157, 1994, 2858, - 3156, 2001, 2856, - 3155, 2010, 2854, - 3152, 2023, 2851, - 3150, 2039, 2846, - 3146, 2059, 2841, - 3140, 2085, 2833, - 3133, 2118, 2822, - 3123, 2158, 2807, - 3110, 2207, 2787, - 3091, 2266, 2758, - 3065, 2333, 2716, - 3028, 2410, 2653, - 2973, 2497, 2552, - 2886, 2591, 2368, - 2737, 2693, 1872, - 2402, 2801, 0, - 0, 2914, 0, - 0, 3031, 0, - 0, 3152, 0, - 0, 3276, 0, - 0, 3401, 0, - 0, 3528, 0, - 0, 3657, 0, - 3293, 2104, 2994, - 3293, 2104, 2994, - 3293, 2105, 2994, - 3293, 2106, 2994, - 3292, 2107, 2994, - 3292, 2109, 2993, - 3292, 2112, 2993, - 3291, 2115, 2992, - 3291, 2119, 2991, - 3290, 2124, 2990, - 3288, 2132, 2988, - 3287, 2141, 2986, - 3285, 2153, 2982, - 3282, 2169, 2978, - 3278, 2190, 2972, - 3273, 2216, 2964, - 3265, 2249, 2954, - 3256, 2290, 2939, - 3242, 2339, 2918, - 3224, 2397, 2889, - 3198, 2465, 2847, - 3160, 2542, 2784, - 3105, 2628, 2683, - 3018, 2723, 2499, - 2869, 2825, 2000, - 2535, 2933, 0, - 0, 3046, 0, - 0, 3163, 0, - 0, 3284, 0, - 0, 3408, 0, - 0, 3533, 0, - 0, 3661, 0, - 3425, 2234, 3126, - 3425, 2235, 3126, - 3425, 2235, 3126, - 3425, 2236, 3126, - 3425, 2237, 3126, - 3425, 2238, 3125, - 3424, 2240, 3125, - 3424, 2243, 3124, - 3423, 2246, 3124, - 3423, 2250, 3123, - 3422, 2255, 3121, - 3421, 2263, 3120, - 3419, 2272, 3117, - 3417, 2284, 3114, - 3414, 2301, 3110, - 3410, 2321, 3104, - 3405, 2347, 3096, - 3398, 2380, 3085, - 3388, 2421, 3071, - 3374, 2470, 3050, - 3356, 2528, 3021, - 3330, 2596, 2979, - 3292, 2674, 2916, - 3237, 2760, 2815, - 3151, 2855, 2631, - 3001, 2956, 2130, - 2667, 3065, 0, - 0, 3178, 0, - 0, 3295, 0, - 0, 3416, 0, - 0, 3540, 0, - 0, 3665, 0, - 3557, 2365, 3258, - 3557, 2366, 3258, - 3557, 2366, 3258, - 3557, 2367, 3258, - 3557, 2367, 3258, - 3557, 2368, 3258, - 3557, 2370, 3257, - 3556, 2371, 3257, - 3556, 2374, 3256, - 3556, 2377, 3256, - 3555, 2381, 3255, - 3554, 2387, 3253, - 3553, 2394, 3252, - 3551, 2403, 3249, - 3549, 2416, 3246, - 3546, 2432, 3242, - 3542, 2453, 3236, - 3537, 2479, 3228, - 3530, 2512, 3217, - 3520, 2552, 3202, - 3507, 2602, 3182, - 3488, 2660, 3153, - 3462, 2728, 3111, - 3425, 2805, 3047, - 3369, 2892, 2946, - 3283, 2986, 2762, - 3134, 3088, 2260, - 2800, 3197, 0, - 0, 3310, 0, - 0, 3427, 0, - 0, 3548, 0, - 0, 3672, 0, - 3690, 2497, 3390, - 3690, 2497, 3390, - 3689, 2497, 3390, - 3689, 2498, 3390, - 3689, 2498, 3390, - 3689, 2499, 3390, - 3689, 2500, 3390, - 3689, 2501, 3389, - 3689, 2503, 3389, - 3688, 2505, 3388, - 3688, 2508, 3388, - 3687, 2513, 3387, - 3686, 2518, 3385, - 3685, 2525, 3384, - 3683, 2535, 3381, - 3681, 2547, 3378, - 3678, 2563, 3374, - 3674, 2584, 3368, - 3669, 2610, 3360, - 3662, 2643, 3349, - 3652, 2684, 3334, - 3639, 2733, 3314, - 3620, 2792, 3285, - 3594, 2860, 3242, - 3557, 2937, 3179, - 3501, 3024, 3078, - 3415, 3118, 2894, - 3266, 3220, 2391, - 2932, 3329, 0, - 0, 3442, 0, - 0, 3559, 0, - 0, 3680, 0, - 3822, 2628, 3522, - 3822, 2628, 3522, - 3822, 2628, 3522, - 3822, 2629, 3522, - 3822, 2629, 3522, - 3821, 2630, 3522, - 3821, 2630, 3522, - 3821, 2631, 3522, - 3821, 2633, 3521, - 3821, 2635, 3521, - 3820, 2637, 3520, - 3820, 2640, 3520, - 3819, 2644, 3519, - 3818, 2650, 3517, - 3817, 2657, 3515, - 3815, 2667, 3513, - 3813, 2679, 3510, - 3810, 2695, 3506, - 3806, 2716, 3500, - 3801, 2742, 3492, - 3794, 2775, 3481, - 3784, 2816, 3466, - 3771, 2865, 3446, - 3752, 2924, 3416, - 3726, 2992, 3374, - 3689, 3069, 3311, - 3634, 3156, 3210, - 3547, 3250, 3025, - 3398, 3352, 2521, - 3064, 3461, 0, - 0, 3574, 0, - 0, 3692, 0, - 3954, 2760, 3654, - 3954, 2760, 3654, - 3954, 2760, 3654, - 3954, 2760, 3654, - 3954, 2760, 3654, - 3954, 2761, 3654, - 3954, 2761, 3654, - 3953, 2762, 3654, - 3953, 2763, 3654, - 3953, 2764, 3653, - 3953, 2766, 3653, - 3952, 2769, 3652, - 3952, 2772, 3652, - 3951, 2776, 3651, - 3950, 2781, 3649, - 3949, 2789, 3647, - 3948, 2798, 3645, - 3945, 2811, 3642, - 3942, 2827, 3638, - 3939, 2848, 3632, - 3933, 2874, 3624, - 3926, 2907, 3613, - 3916, 2948, 3598, - 3903, 2997, 3578, - 3884, 3055, 3548, - 3858, 3123, 3506, - 3821, 3201, 3443, - 3766, 3288, 3342, - 3679, 3382, 3157, - 3530, 3484, 2653, - 3197, 3593, 0, - 0, 3706, 0, - 4086, 2891, 3786, - 4086, 2891, 3786, - 4086, 2892, 3786, - 4086, 2892, 3786, - 4086, 2892, 3786, - 4086, 2892, 3786, - 4086, 2893, 3786, - 4086, 2893, 3786, - 4086, 2894, 3786, - 4085, 2895, 3786, - 4085, 2896, 3785, - 4085, 2898, 3785, - 4085, 2900, 3784, - 4084, 2904, 3784, - 4083, 2908, 3783, - 4082, 2913, 3781, - 4081, 2921, 3780, - 4080, 2930, 3777, - 4078, 2943, 3774, - 4075, 2959, 3770, - 4071, 2980, 3764, - 4065, 3006, 3756, - 4058, 3039, 3745, - 4048, 3080, 3730, - 4035, 3129, 3710, - 4017, 3187, 3680, - 3990, 3255, 3638, - 3953, 3333, 3575, - 3898, 3420, 3474, - 3811, 3514, 3289, - 3662, 3616, 2784, - 3329, 3725, 0, - 4095, 3023, 3918, - 4095, 3023, 3918, - 4095, 3023, 3918, - 4095, 3023, 3918, - 4095, 3024, 3918, - 4095, 3024, 3918, - 4095, 3024, 3918, - 4095, 3025, 3918, - 4095, 3025, 3918, - 4095, 3026, 3918, - 4095, 3027, 3918, - 4095, 3028, 3917, - 4095, 3030, 3917, - 4095, 3032, 3916, - 4095, 3036, 3916, - 4095, 3040, 3915, - 4095, 3045, 3913, - 4095, 3052, 3912, - 4095, 3062, 3909, - 4095, 3075, 3906, - 4095, 3091, 3902, - 4095, 3111, 3896, - 4095, 3138, 3888, - 4095, 3171, 3877, - 4095, 3212, 3862, - 4095, 3261, 3842, - 4095, 3319, 3813, - 4095, 3387, 3770, - 4085, 3465, 3707, - 4030, 3552, 3606, - 3944, 3646, 3421, - 3794, 3748, 2916, - 4095, 3155, 4051, - 4095, 3155, 4051, - 4095, 3155, 4051, - 4095, 3155, 4050, - 4095, 3155, 4050, - 4095, 3156, 4050, - 4095, 3156, 4050, - 4095, 3156, 4050, - 4095, 3157, 4050, - 4095, 3157, 4050, - 4095, 3158, 4050, - 4095, 3159, 4050, - 4095, 3160, 4049, - 4095, 3162, 4049, - 4095, 3164, 4048, - 4095, 3167, 4048, - 4095, 3172, 4047, - 4095, 3177, 4045, - 4095, 3184, 4044, - 4095, 3194, 4041, - 4095, 3206, 4038, - 4095, 3223, 4034, - 4095, 3243, 4028, - 4095, 3270, 4020, - 4095, 3303, 4009, - 4095, 3344, 3994, - 4095, 3393, 3974, - 4095, 3451, 3945, - 4095, 3520, 3902, - 4095, 3597, 3839, - 4095, 3684, 3738, - 4076, 3778, 3553, - 0, 286, 468, - 0, 316, 433, - 0, 352, 383, - 0, 397, 305, - 0, 450, 175, - 0, 514, 0, - 0, 586, 0, - 0, 668, 0, - 0, 759, 0, - 0, 857, 0, - 0, 962, 0, - 0, 1073, 0, - 0, 1189, 0, - 0, 1308, 0, - 0, 1430, 0, - 0, 1555, 0, - 0, 1681, 0, - 0, 1809, 0, - 0, 1938, 0, - 0, 2068, 0, - 0, 2198, 0, - 0, 2329, 0, - 0, 2460, 0, - 0, 2591, 0, - 0, 2723, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 0, 296, 515, - 0, 325, 484, - 0, 361, 439, - 0, 405, 371, - 0, 458, 261, - 0, 520, 54, - 0, 592, 0, - 0, 673, 0, - 0, 762, 0, - 0, 860, 0, - 0, 965, 0, - 0, 1075, 0, - 0, 1190, 0, - 0, 1309, 0, - 0, 1431, 0, - 0, 1556, 0, - 0, 1682, 0, - 0, 1810, 0, - 0, 1938, 0, - 0, 2068, 0, - 0, 2198, 0, - 0, 2329, 0, - 0, 2460, 0, - 0, 2591, 0, - 0, 2723, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 38, 310, 571, - 0, 338, 544, - 0, 372, 505, - 0, 415, 447, - 0, 467, 355, - 0, 528, 195, - 0, 599, 0, - 0, 678, 0, - 0, 767, 0, - 0, 864, 0, - 0, 968, 0, - 0, 1077, 0, - 0, 1192, 0, - 0, 1311, 0, - 0, 1432, 0, - 0, 1556, 0, - 0, 1682, 0, - 0, 1810, 0, - 0, 1939, 0, - 0, 2068, 0, - 0, 2198, 0, - 0, 2329, 0, - 0, 2460, 0, - 0, 2591, 0, - 0, 2723, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 347, 327, 637, - 286, 354, 613, - 190, 387, 580, - 17, 429, 531, - 0, 479, 457, - 0, 539, 333, - 0, 608, 87, - 0, 686, 0, - 0, 774, 0, - 0, 869, 0, - 0, 972, 0, - 0, 1081, 0, - 0, 1194, 0, - 0, 1312, 0, - 0, 1434, 0, - 0, 1558, 0, - 0, 1683, 0, - 0, 1811, 0, - 0, 1939, 0, - 0, 2069, 0, - 0, 2199, 0, - 0, 2329, 0, - 0, 2460, 0, - 0, 2591, 0, - 0, 2723, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 577, 349, 712, - 541, 375, 692, - 489, 407, 664, - 408, 447, 624, - 270, 495, 565, - 0, 553, 470, - 0, 620, 302, - 0, 696, 0, - 0, 782, 0, - 0, 876, 0, - 0, 977, 0, - 0, 1085, 0, - 0, 1198, 0, - 0, 1315, 0, - 0, 1436, 0, - 0, 1559, 0, - 0, 1684, 0, - 0, 1812, 0, - 0, 1940, 0, - 0, 2069, 0, - 0, 2199, 0, - 0, 2329, 0, - 0, 2460, 0, - 0, 2591, 0, - 0, 2723, 0, - 0, 2854, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 771, 377, 796, - 748, 401, 780, - 715, 431, 757, - 668, 469, 725, - 595, 515, 678, - 475, 571, 606, - 241, 635, 487, - 0, 709, 256, - 0, 793, 0, - 0, 885, 0, - 0, 984, 0, - 0, 1091, 0, - 0, 1202, 0, - 0, 1318, 0, - 0, 1438, 0, - 0, 1561, 0, - 0, 1686, 0, - 0, 1813, 0, - 0, 1941, 0, - 0, 2070, 0, - 0, 2199, 0, - 0, 2330, 0, - 0, 2461, 0, - 0, 2592, 0, - 0, 2723, 0, - 0, 2855, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 944, 411, 889, - 928, 434, 876, - 907, 462, 858, - 876, 498, 832, - 832, 541, 795, - 764, 594, 740, - 655, 655, 655, - 450, 726, 509, - 0, 807, 186, - 0, 896, 0, - 0, 994, 0, - 0, 1098, 0, - 0, 1208, 0, - 0, 1323, 0, - 0, 1442, 0, - 0, 1564, 0, - 0, 1688, 0, - 0, 1814, 0, - 0, 1942, 0, - 0, 2071, 0, - 0, 2200, 0, - 0, 2330, 0, - 0, 2461, 0, - 0, 2592, 0, - 0, 2723, 0, - 0, 2855, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1105, 454, 990, - 1094, 475, 979, - 1079, 501, 965, - 1058, 533, 944, - 1029, 574, 916, - 986, 623, 874, - 922, 681, 813, - 820, 748, 714, - 633, 825, 536, - 113, 912, 73, - 0, 1006, 0, - 0, 1108, 0, - 0, 1216, 0, - 0, 1329, 0, - 0, 1446, 0, - 0, 1567, 0, - 0, 1691, 0, - 0, 1816, 0, - 0, 1943, 0, - 0, 2072, 0, - 0, 2201, 0, - 0, 2331, 0, - 0, 2461, 0, - 0, 2592, 0, - 0, 2724, 0, - 0, 2855, 0, - 0, 2987, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1257, 506, 1097, - 1249, 524, 1088, - 1239, 547, 1077, - 1224, 577, 1061, - 1204, 614, 1039, - 1175, 659, 1008, - 1134, 713, 963, - 1073, 776, 894, - 975, 849, 783, - 799, 931, 571, - 345, 1022, 0, - 0, 1121, 0, - 0, 1226, 0, - 0, 1337, 0, - 0, 1452, 0, - 0, 1572, 0, - 0, 1694, 0, - 0, 1819, 0, - 0, 1945, 0, - 0, 2073, 0, - 0, 2202, 0, - 0, 2332, 0, - 0, 2462, 0, - 0, 2593, 0, - 0, 2724, 0, - 0, 2855, 0, - 0, 2987, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1404, 566, 1209, - 1398, 582, 1202, - 1390, 603, 1193, - 1380, 629, 1181, - 1366, 662, 1165, - 1346, 703, 1141, - 1318, 752, 1108, - 1278, 811, 1059, - 1218, 878, 984, - 1124, 956, 860, - 956, 1042, 613, - 540, 1137, 0, - 0, 1239, 0, - 0, 1347, 0, - 0, 1461, 0, - 0, 1578, 0, - 0, 1699, 0, - 0, 1823, 0, - 0, 1948, 0, - 0, 2075, 0, - 0, 2204, 0, - 0, 2333, 0, - 0, 2463, 0, - 0, 2593, 0, - 0, 2724, 0, - 0, 2856, 0, - 0, 2987, 0, - 0, 3119, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1546, 637, 1325, - 1542, 651, 1320, - 1537, 668, 1314, - 1529, 691, 1304, - 1519, 720, 1292, - 1505, 756, 1274, - 1486, 800, 1249, - 1458, 853, 1214, - 1419, 915, 1162, - 1360, 987, 1082, - 1268, 1068, 947, - 1105, 1158, 665, - 714, 1256, 0, - 0, 1361, 0, - 0, 1471, 0, - 0, 1586, 0, - 0, 1705, 0, - 0, 1827, 0, - 0, 1952, 0, - 0, 2078, 0, - 0, 2206, 0, - 0, 2335, 0, - 0, 2464, 0, - 0, 2594, 0, - 0, 2725, 0, - 0, 2856, 0, - 0, 2987, 0, - 0, 3119, 0, - 0, 3251, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1686, 717, 1446, - 1683, 728, 1442, - 1679, 743, 1437, - 1674, 763, 1430, - 1666, 787, 1420, - 1656, 819, 1407, - 1642, 857, 1388, - 1623, 904, 1363, - 1596, 960, 1326, - 1557, 1026, 1272, - 1500, 1101, 1187, - 1409, 1185, 1042, - 1250, 1278, 725, - 875, 1378, 0, - 0, 1485, 0, - 0, 1597, 0, - 0, 1713, 0, - 0, 1834, 0, - 0, 1957, 0, - 0, 2082, 0, - 0, 2209, 0, - 0, 2337, 0, - 0, 2466, 0, - 0, 2596, 0, - 0, 2726, 0, - 0, 2857, 0, - 0, 2988, 0, - 0, 3119, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3514, 0, - 0, 3646, 0, - 1824, 805, 1569, - 1822, 815, 1566, - 1819, 827, 1562, - 1815, 843, 1556, - 1809, 864, 1549, - 1802, 891, 1539, - 1792, 924, 1526, - 1778, 965, 1507, - 1759, 1014, 1480, - 1732, 1073, 1442, - 1694, 1141, 1386, - 1637, 1219, 1298, - 1547, 1305, 1145, - 1391, 1400, 795, - 1028, 1502, 0, - 0, 1611, 0, - 0, 1724, 0, - 0, 1842, 0, - 0, 1963, 0, - 0, 2087, 0, - 0, 2212, 0, - 0, 2339, 0, - 0, 2468, 0, - 0, 2597, 0, - 0, 2727, 0, - 0, 2858, 0, - 0, 2989, 0, - 0, 3120, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3646, 0, - 1960, 902, 1694, - 1959, 910, 1692, - 1956, 920, 1689, - 1953, 933, 1685, - 1949, 950, 1679, - 1944, 972, 1672, - 1937, 1000, 1662, - 1927, 1035, 1648, - 1913, 1077, 1628, - 1894, 1129, 1601, - 1868, 1190, 1562, - 1830, 1260, 1505, - 1773, 1340, 1413, - 1684, 1428, 1253, - 1530, 1525, 875, - 1174, 1629, 0, - 0, 1738, 0, - 0, 1853, 0, - 0, 1971, 0, - 0, 2093, 0, - 0, 2217, 0, - 0, 2343, 0, - 0, 2471, 0, - 0, 2599, 0, - 0, 2729, 0, - 0, 2859, 0, - 0, 2989, 0, - 0, 3120, 0, - 0, 3252, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3647, 0, - 2095, 1005, 1821, - 2094, 1012, 1819, - 2093, 1020, 1817, - 2090, 1030, 1814, - 2087, 1044, 1810, - 2084, 1062, 1804, - 2078, 1085, 1797, - 2071, 1114, 1786, - 2061, 1150, 1772, - 2047, 1195, 1753, - 2029, 1248, 1725, - 2002, 1310, 1685, - 1964, 1382, 1626, - 1908, 1464, 1533, - 1820, 1554, 1367, - 1667, 1652, 963, - 1317, 1756, 0, - 0, 1867, 0, - 0, 1982, 0, - 0, 2101, 0, - 0, 2223, 0, - 0, 2348, 0, - 0, 2474, 0, - 0, 2602, 0, - 0, 2731, 0, - 0, 2860, 0, - 0, 2991, 0, - 0, 3121, 0, - 0, 3252, 0, - 0, 3384, 0, - 0, 3515, 0, - 0, 3647, 0, - 2230, 1115, 1949, - 2229, 1120, 1948, - 2228, 1126, 1946, - 2226, 1135, 1944, - 2224, 1146, 1941, - 2221, 1160, 1936, - 2217, 1179, 1931, - 2212, 1203, 1923, - 2205, 1233, 1913, - 2195, 1270, 1898, - 2181, 1315, 1879, - 2162, 1369, 1851, - 2136, 1433, 1810, - 2098, 1507, 1750, - 2042, 1589, 1655, - 1955, 1681, 1484, - 1802, 1780, 1059, - 1457, 1885, 0, - 0, 1996, 0, - 0, 2112, 0, - 0, 2232, 0, - 0, 2354, 0, - 0, 2479, 0, - 0, 2606, 0, - 0, 2734, 0, - 0, 2862, 0, - 0, 2992, 0, - 0, 3123, 0, - 0, 3253, 0, - 0, 3384, 0, - 0, 3516, 0, - 0, 3647, 0, - 2364, 1229, 2078, - 2363, 1233, 2077, - 2362, 1238, 2076, - 2361, 1245, 2074, - 2359, 1254, 2072, - 2357, 1265, 2069, - 2354, 1280, 2064, - 2350, 1299, 2059, - 2345, 1323, 2051, - 2338, 1354, 2041, - 2328, 1392, 2026, - 2314, 1438, 2006, - 2296, 1494, 1978, - 2269, 1559, 1937, - 2232, 1633, 1876, - 2176, 1717, 1779, - 2089, 1809, 1606, - 1937, 1908, 1163, - 1595, 2015, 0, - 0, 2127, 0, - 0, 2243, 0, - 0, 2363, 0, - 0, 2486, 0, - 0, 2611, 0, - 0, 2737, 0, - 0, 2865, 0, - 0, 2994, 0, - 0, 3124, 0, - 0, 3254, 0, - 0, 3385, 0, - 0, 3516, 0, - 0, 3648, 0, - 2497, 1348, 2208, - 2497, 1351, 2207, - 2496, 1355, 2206, - 2495, 1360, 2205, - 2494, 1367, 2203, - 2492, 1376, 2201, - 2490, 1387, 2198, - 2487, 1402, 2193, - 2483, 1422, 2188, - 2478, 1447, 2180, - 2471, 1478, 2169, - 2461, 1517, 2155, - 2447, 1564, 2135, - 2429, 1620, 2106, - 2402, 1686, 2065, - 2365, 1761, 2004, - 2309, 1845, 1906, - 2222, 1938, 1729, - 2071, 2038, 1272, - 1731, 2145, 0, - 0, 2257, 0, - 0, 2374, 0, - 0, 2494, 0, - 0, 2617, 0, - 0, 2742, 0, - 0, 2869, 0, - 0, 2997, 0, - 0, 3126, 0, - 0, 3256, 0, - 0, 3386, 0, - 0, 3517, 0, - 0, 3648, 0, - 2630, 1470, 2338, - 2630, 1472, 2338, - 2629, 1475, 2337, - 2629, 1479, 2336, - 2628, 1484, 2335, - 2627, 1491, 2333, - 2625, 1500, 2331, - 2623, 1512, 2327, - 2620, 1527, 2323, - 2616, 1547, 2317, - 2611, 1572, 2310, - 2603, 1604, 2299, - 2594, 1643, 2284, - 2580, 1691, 2264, - 2561, 1748, 2236, - 2535, 1814, 2194, - 2498, 1890, 2132, - 2442, 1974, 2033, - 2355, 2068, 1855, - 2205, 2168, 1386, - 1867, 2276, 0, - 0, 2388, 0, - 0, 2505, 0, - 0, 2625, 0, - 0, 2749, 0, - 0, 2874, 0, - 0, 3001, 0, - 0, 3129, 0, - 0, 3258, 0, - 0, 3388, 0, - 0, 3518, 0, - 0, 3649, 0, - 2763, 1594, 2469, - 2763, 1595, 2469, - 2762, 1598, 2468, - 2762, 1601, 2467, - 2761, 1605, 2466, - 2760, 1610, 2465, - 2759, 1617, 2463, - 2757, 1626, 2461, - 2755, 1638, 2458, - 2752, 1654, 2454, - 2748, 1674, 2448, - 2743, 1699, 2440, - 2736, 1731, 2429, - 2726, 1771, 2415, - 2713, 1819, 2394, - 2694, 1876, 2366, - 2668, 1943, 2324, - 2630, 2019, 2262, - 2575, 2104, 2162, - 2488, 2198, 1982, - 2338, 2299, 1505, - 2001, 2407, 0, - 0, 2519, 0, - 0, 2637, 0, - 0, 2757, 0, - 0, 2880, 0, - 0, 3006, 0, - 0, 3133, 0, - 0, 3261, 0, - 0, 3390, 0, - 0, 3520, 0, - 0, 3650, 0, - 2896, 1720, 2600, - 2895, 1721, 2600, - 2895, 1723, 2600, - 2895, 1725, 2599, - 2894, 1728, 2598, - 2894, 1732, 2597, - 2893, 1738, 2596, - 2891, 1745, 2594, - 2890, 1754, 2592, - 2888, 1766, 2589, - 2885, 1782, 2584, - 2881, 1802, 2579, - 2876, 1828, 2571, - 2868, 1860, 2560, - 2859, 1900, 2545, - 2845, 1948, 2525, - 2827, 2006, 2496, - 2800, 2073, 2454, - 2763, 2149, 2392, - 2708, 2235, 2292, - 2621, 2329, 2111, - 2471, 2430, 1626, - 2135, 2538, 0, - 0, 2651, 0, - 0, 2768, 0, - 0, 2889, 0, - 0, 3012, 0, - 0, 3138, 0, - 0, 3265, 0, - 0, 3393, 0, - 0, 3522, 0, - 0, 3652, 0, - 3028, 1847, 2732, - 3028, 1848, 2731, - 3028, 1850, 2731, - 3027, 1851, 2731, - 3027, 1854, 2730, - 3027, 1857, 2729, - 3026, 1861, 2728, - 3025, 1866, 2727, - 3024, 1873, 2725, - 3022, 1883, 2723, - 3020, 1895, 2720, - 3017, 1911, 2716, - 3013, 1931, 2710, - 3008, 1957, 2702, - 3001, 1989, 2691, - 2991, 2030, 2676, - 2978, 2078, 2656, - 2959, 2136, 2627, - 2933, 2203, 2585, - 2895, 2280, 2522, - 2840, 2366, 2422, - 2753, 2460, 2240, - 2604, 2562, 1750, - 2268, 2670, 0, - 0, 2783, 0, - 0, 2900, 0, - 0, 3021, 0, - 0, 3144, 0, - 0, 3269, 0, - 0, 3397, 0, - 0, 3525, 0, - 0, 3654, 0, - 3160, 1976, 2863, - 3160, 1977, 2863, - 3160, 1978, 2863, - 3160, 1979, 2862, - 3160, 1981, 2862, - 3159, 1983, 2862, - 3159, 1986, 2861, - 3158, 1990, 2860, - 3157, 1996, 2858, - 3156, 2003, 2857, - 3154, 2012, 2854, - 3152, 2025, 2851, - 3149, 2040, 2847, - 3146, 2061, 2841, - 3140, 2087, 2833, - 3133, 2120, 2822, - 3123, 2160, 2808, - 3110, 2209, 2787, - 3091, 2267, 2758, - 3065, 2334, 2716, - 3028, 2411, 2653, - 2972, 2497, 2553, - 2886, 2592, 2370, - 2736, 2693, 1876, - 2401, 2801, 0, - 0, 2914, 0, - 0, 3032, 0, - 0, 3152, 0, - 0, 3276, 0, - 0, 3401, 0, - 0, 3529, 0, - 0, 3657, 0, - 3293, 2105, 2995, - 3293, 2106, 2995, - 3293, 2107, 2995, - 3292, 2108, 2994, - 3292, 2109, 2994, - 3292, 2111, 2994, - 3292, 2113, 2993, - 3291, 2116, 2992, - 3290, 2120, 2991, - 3290, 2126, 2990, - 3288, 2133, 2988, - 3287, 2142, 2986, - 3285, 2155, 2983, - 3282, 2171, 2978, - 3278, 2191, 2973, - 3272, 2217, 2965, - 3265, 2250, 2954, - 3256, 2291, 2939, - 3242, 2339, 2919, - 3224, 2398, 2890, - 3197, 2465, 2848, - 3160, 2542, 2785, - 3105, 2629, 2684, - 3018, 2723, 2500, - 2869, 2825, 2004, - 2534, 2933, 0, - 0, 3046, 0, - 0, 3164, 0, - 0, 3284, 0, - 0, 3408, 0, - 0, 3533, 0, - 0, 3661, 0, - 3425, 2236, 3127, - 3425, 2236, 3127, - 3425, 2237, 3126, - 3425, 2237, 3126, - 3425, 2238, 3126, - 3424, 2240, 3126, - 3424, 2241, 3125, - 3424, 2244, 3125, - 3423, 2247, 3124, - 3423, 2251, 3123, - 3422, 2256, 3122, - 3421, 2264, 3120, - 3419, 2273, 3118, - 3417, 2286, 3114, - 3414, 2302, 3110, - 3410, 2322, 3104, - 3405, 2348, 3096, - 3397, 2381, 3086, - 3388, 2422, 3071, - 3374, 2471, 3050, - 3356, 2529, 3021, - 3330, 2597, 2979, - 3292, 2674, 2916, - 3237, 2760, 2815, - 3150, 2855, 2631, - 3001, 2957, 2132, - 2667, 3065, 0, - 0, 3178, 0, - 0, 3296, 0, - 0, 3416, 0, - 0, 3540, 0, - 0, 3665, 0, - 3557, 2366, 3259, - 3557, 2367, 3258, - 3557, 2367, 3258, - 3557, 2367, 3258, - 3557, 2368, 3258, - 3557, 2369, 3258, - 3557, 2371, 3258, - 3556, 2372, 3257, - 3556, 2375, 3257, - 3555, 2378, 3256, - 3555, 2382, 3255, - 3554, 2387, 3254, - 3553, 2395, 3252, - 3551, 2404, 3249, - 3549, 2417, 3246, - 3546, 2433, 3242, - 3542, 2453, 3236, - 3537, 2480, 3228, - 3530, 2512, 3217, - 3520, 2553, 3203, - 3506, 2602, 3182, - 3488, 2660, 3153, - 3462, 2728, 3111, - 3424, 2806, 3048, - 3369, 2892, 2947, - 3283, 2987, 2763, - 3133, 3089, 2262, - 2799, 3197, 0, - 0, 3310, 0, - 0, 3428, 0, - 0, 3548, 0, - 0, 3672, 0, - 3689, 2497, 3390, - 3689, 2497, 3390, - 3689, 2498, 3390, - 3689, 2498, 3390, - 3689, 2499, 3390, - 3689, 2499, 3390, - 3689, 2500, 3390, - 3689, 2502, 3389, - 3688, 2504, 3389, - 3688, 2506, 3388, - 3688, 2509, 3388, - 3687, 2513, 3387, - 3686, 2519, 3385, - 3685, 2526, 3384, - 3683, 2535, 3381, - 3681, 2548, 3378, - 3678, 2564, 3374, - 3674, 2585, 3368, - 3669, 2611, 3360, - 3662, 2644, 3349, - 3652, 2684, 3334, - 3639, 2734, 3314, - 3620, 2792, 3285, - 3594, 2860, 3243, - 3557, 2937, 3179, - 3501, 3024, 3078, - 3415, 3119, 2894, - 3266, 3220, 2392, - 2932, 3329, 0, - 0, 3442, 0, - 0, 3560, 0, - 0, 3680, 0, - 3822, 2628, 3522, - 3822, 2629, 3522, - 3822, 2629, 3522, - 3822, 2629, 3522, - 3821, 2630, 3522, - 3821, 2630, 3522, - 3821, 2631, 3522, - 3821, 2632, 3522, - 3821, 2633, 3521, - 3821, 2635, 3521, - 3820, 2637, 3520, - 3820, 2641, 3520, - 3819, 2645, 3519, - 3818, 2650, 3517, - 3817, 2657, 3516, - 3815, 2667, 3513, - 3813, 2679, 3510, - 3810, 2696, 3506, - 3806, 2716, 3500, - 3801, 2743, 3492, - 3794, 2775, 3481, - 3784, 2816, 3466, - 3771, 2865, 3446, - 3752, 2924, 3417, - 3726, 2992, 3375, - 3689, 3069, 3311, - 3633, 3156, 3210, - 3547, 3250, 3026, - 3398, 3352, 2523, - 3064, 3461, 0, - 0, 3574, 0, - 0, 3692, 0, - 3954, 2760, 3654, - 3954, 2760, 3654, - 3954, 2760, 3654, - 3954, 2760, 3654, - 3954, 2761, 3654, - 3954, 2761, 3654, - 3954, 2762, 3654, - 3953, 2763, 3654, - 3953, 2764, 3654, - 3953, 2765, 3653, - 3953, 2767, 3653, - 3952, 2769, 3652, - 3952, 2772, 3652, - 3951, 2776, 3651, - 3950, 2782, 3649, - 3949, 2789, 3648, - 3948, 2799, 3645, - 3945, 2811, 3642, - 3942, 2827, 3638, - 3939, 2848, 3632, - 3933, 2874, 3624, - 3926, 2907, 3613, - 3916, 2948, 3598, - 3903, 2997, 3578, - 3884, 3056, 3549, - 3858, 3124, 3506, - 3821, 3201, 3443, - 3766, 3288, 3342, - 3679, 3382, 3157, - 3530, 3484, 2654, - 3196, 3593, 0, - 0, 3706, 0, - 4086, 2892, 3786, - 4086, 2892, 3786, - 4086, 2892, 3786, - 4086, 2892, 3786, - 4086, 2892, 3786, - 4086, 2893, 3786, - 4086, 2893, 3786, - 4086, 2894, 3786, - 4086, 2894, 3786, - 4085, 2895, 3786, - 4085, 2897, 3785, - 4085, 2898, 3785, - 4085, 2901, 3784, - 4084, 2904, 3784, - 4083, 2908, 3783, - 4082, 2914, 3781, - 4081, 2921, 3780, - 4080, 2930, 3777, - 4077, 2943, 3774, - 4075, 2959, 3770, - 4071, 2980, 3764, - 4065, 3006, 3756, - 4058, 3039, 3745, - 4048, 3080, 3730, - 4035, 3129, 3710, - 4017, 3188, 3681, - 3990, 3256, 3638, - 3953, 3333, 3575, - 3898, 3420, 3474, - 3811, 3514, 3289, - 3662, 3616, 2785, - 3329, 3725, 0, - 4095, 3023, 3919, - 4095, 3023, 3918, - 4095, 3023, 3918, - 4095, 3024, 3918, - 4095, 3024, 3918, - 4095, 3024, 3918, - 4095, 3024, 3918, - 4095, 3025, 3918, - 4095, 3025, 3918, - 4095, 3026, 3918, - 4095, 3027, 3918, - 4095, 3028, 3917, - 4095, 3030, 3917, - 4095, 3033, 3916, - 4095, 3036, 3916, - 4095, 3040, 3915, - 4095, 3045, 3913, - 4095, 3053, 3912, - 4095, 3062, 3909, - 4095, 3075, 3906, - 4095, 3091, 3902, - 4095, 3112, 3896, - 4095, 3138, 3888, - 4095, 3171, 3877, - 4095, 3212, 3862, - 4095, 3261, 3842, - 4095, 3319, 3813, - 4095, 3388, 3770, - 4085, 3465, 3707, - 4030, 3552, 3606, - 3944, 3646, 3421, - 3794, 3748, 2916, - 4095, 3155, 4051, - 4095, 3155, 4051, - 4095, 3155, 4051, - 4095, 3155, 4051, - 4095, 3156, 4050, - 4095, 3156, 4050, - 4095, 3156, 4050, - 4095, 3156, 4050, - 4095, 3157, 4050, - 4095, 3157, 4050, - 4095, 3158, 4050, - 4095, 3159, 4050, - 4095, 3160, 4049, - 4095, 3162, 4049, - 4095, 3164, 4048, - 4095, 3168, 4048, - 4095, 3172, 4047, - 4095, 3177, 4045, - 4095, 3185, 4044, - 4095, 3194, 4041, - 4095, 3207, 4038, - 4095, 3223, 4034, - 4095, 3244, 4028, - 4095, 3270, 4020, - 4095, 3303, 4009, - 4095, 3344, 3994, - 4095, 3393, 3974, - 4095, 3451, 3945, - 4095, 3520, 3902, - 4095, 3597, 3839, - 4095, 3684, 3738, - 4076, 3778, 3553, - 0, 387, 587, - 0, 410, 561, - 0, 440, 523, - 0, 477, 468, - 0, 523, 381, - 0, 577, 231, - 0, 641, 0, - 0, 714, 0, - 0, 797, 0, - 0, 888, 0, - 0, 987, 0, - 0, 1093, 0, - 0, 1204, 0, - 0, 1320, 0, - 0, 1439, 0, - 0, 1562, 0, - 0, 1687, 0, - 0, 1813, 0, - 0, 1941, 0, - 0, 2070, 0, - 0, 2200, 0, - 0, 2330, 0, - 0, 2461, 0, - 0, 2592, 0, - 0, 2723, 0, - 0, 2855, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 0, 395, 624, - 0, 418, 600, - 0, 448, 565, - 0, 484, 515, - 0, 529, 437, - 0, 583, 307, - 0, 646, 42, - 0, 718, 0, - 0, 800, 0, - 0, 891, 0, - 0, 989, 0, - 0, 1094, 0, - 0, 1205, 0, - 0, 1321, 0, - 0, 1440, 0, - 0, 1562, 0, - 0, 1687, 0, - 0, 1813, 0, - 0, 1941, 0, - 0, 2070, 0, - 0, 2200, 0, - 0, 2330, 0, - 0, 2461, 0, - 0, 2592, 0, - 0, 2723, 0, - 0, 2855, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 0, 406, 669, - 0, 428, 647, - 0, 457, 616, - 0, 493, 571, - 0, 537, 503, - 0, 590, 393, - 0, 652, 186, - 0, 724, 0, - 0, 805, 0, - 0, 894, 0, - 0, 992, 0, - 0, 1097, 0, - 0, 1207, 0, - 0, 1322, 0, - 0, 1441, 0, - 0, 1563, 0, - 0, 1688, 0, - 0, 1814, 0, - 0, 1942, 0, - 0, 2070, 0, - 0, 2200, 0, - 0, 2330, 0, - 0, 2461, 0, - 0, 2592, 0, - 0, 2723, 0, - 0, 2855, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 247, 420, 722, - 170, 442, 703, - 41, 470, 676, - 0, 505, 637, - 0, 547, 579, - 0, 599, 487, - 0, 660, 327, - 0, 731, 0, - 0, 811, 0, - 0, 899, 0, - 0, 996, 0, - 0, 1100, 0, - 0, 1210, 0, - 0, 1324, 0, - 0, 1443, 0, - 0, 1564, 0, - 0, 1688, 0, - 0, 1815, 0, - 0, 1942, 0, - 0, 2071, 0, - 0, 2200, 0, - 0, 2330, 0, - 0, 2461, 0, - 0, 2592, 0, - 0, 2723, 0, - 0, 2855, 0, - 0, 2986, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 519, 438, 786, - 479, 459, 769, - 418, 486, 745, - 322, 520, 712, - 149, 561, 663, - 0, 611, 589, - 0, 671, 465, - 0, 740, 219, - 0, 818, 0, - 0, 906, 0, - 0, 1001, 0, - 0, 1104, 0, - 0, 1213, 0, - 0, 1327, 0, - 0, 1445, 0, - 0, 1566, 0, - 0, 1690, 0, - 0, 1815, 0, - 0, 1943, 0, - 0, 2071, 0, - 0, 2201, 0, - 0, 2331, 0, - 0, 2461, 0, - 0, 2592, 0, - 0, 2723, 0, - 0, 2855, 0, - 0, 2987, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 734, 461, 858, - 709, 481, 844, - 673, 507, 824, - 621, 539, 797, - 540, 579, 756, - 402, 627, 697, - 110, 685, 602, - 0, 752, 434, - 0, 828, 18, - 0, 914, 0, - 0, 1008, 0, - 0, 1109, 0, - 0, 1217, 0, - 0, 1330, 0, - 0, 1447, 0, - 0, 1568, 0, - 0, 1691, 0, - 0, 1817, 0, - 0, 1944, 0, - 0, 2072, 0, - 0, 2201, 0, - 0, 2331, 0, - 0, 2462, 0, - 0, 2592, 0, - 0, 2724, 0, - 0, 2855, 0, - 0, 2987, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 919, 490, 940, - 903, 509, 929, - 880, 533, 912, - 847, 563, 889, - 800, 601, 857, - 727, 647, 810, - 607, 703, 738, - 373, 767, 619, - 0, 842, 388, - 0, 925, 0, - 0, 1017, 0, - 0, 1116, 0, - 0, 1223, 0, - 0, 1334, 0, - 0, 1451, 0, - 0, 1570, 0, - 0, 1693, 0, - 0, 1818, 0, - 0, 1945, 0, - 0, 2073, 0, - 0, 2202, 0, - 0, 2332, 0, - 0, 2462, 0, - 0, 2593, 0, - 0, 2724, 0, - 0, 2855, 0, - 0, 2987, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1087, 526, 1031, - 1076, 544, 1021, - 1061, 566, 1008, - 1039, 594, 990, - 1008, 630, 964, - 964, 673, 927, - 896, 726, 872, - 787, 787, 787, - 582, 859, 641, - 0, 939, 318, - 0, 1029, 0, - 0, 1126, 0, - 0, 1230, 0, - 0, 1340, 0, - 0, 1455, 0, - 0, 1574, 0, - 0, 1696, 0, - 0, 1820, 0, - 0, 1946, 0, - 0, 2074, 0, - 0, 2203, 0, - 0, 2332, 0, - 0, 2462, 0, - 0, 2593, 0, - 0, 2724, 0, - 0, 2855, 0, - 0, 2987, 0, - 0, 3119, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1245, 570, 1130, - 1237, 586, 1122, - 1226, 607, 1111, - 1211, 633, 1097, - 1190, 665, 1076, - 1161, 706, 1048, - 1118, 755, 1006, - 1055, 813, 945, - 952, 880, 846, - 765, 958, 669, - 245, 1044, 205, - 0, 1138, 0, - 0, 1240, 0, - 0, 1348, 0, - 0, 1461, 0, - 0, 1578, 0, - 0, 1699, 0, - 0, 1823, 0, - 0, 1948, 0, - 0, 2075, 0, - 0, 2204, 0, - 0, 2333, 0, - 0, 2463, 0, - 0, 2594, 0, - 0, 2724, 0, - 0, 2856, 0, - 0, 2987, 0, - 0, 3119, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1395, 623, 1235, - 1389, 638, 1229, - 1381, 656, 1220, - 1371, 679, 1209, - 1356, 709, 1193, - 1336, 746, 1171, - 1308, 791, 1140, - 1267, 845, 1095, - 1205, 908, 1026, - 1107, 981, 915, - 932, 1063, 703, - 477, 1154, 0, - 0, 1253, 0, - 0, 1358, 0, - 0, 1469, 0, - 0, 1585, 0, - 0, 1704, 0, - 0, 1826, 0, - 0, 1951, 0, - 0, 2077, 0, - 0, 2205, 0, - 0, 2334, 0, - 0, 2464, 0, - 0, 2594, 0, - 0, 2725, 0, - 0, 2856, 0, - 0, 2987, 0, - 0, 3119, 0, - 0, 3251, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1540, 686, 1346, - 1536, 698, 1341, - 1530, 715, 1334, - 1522, 735, 1326, - 1512, 762, 1313, - 1498, 794, 1297, - 1478, 835, 1273, - 1450, 884, 1240, - 1410, 943, 1191, - 1351, 1011, 1116, - 1256, 1088, 993, - 1088, 1174, 745, - 672, 1269, 0, - 0, 1371, 0, - 0, 1479, 0, - 0, 1593, 0, - 0, 1710, 0, - 0, 1831, 0, - 0, 1955, 0, - 0, 2080, 0, - 0, 2207, 0, - 0, 2336, 0, - 0, 2465, 0, - 0, 2595, 0, - 0, 2726, 0, - 0, 2857, 0, - 0, 2988, 0, - 0, 3119, 0, - 0, 3251, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1681, 758, 1461, - 1678, 769, 1458, - 1674, 783, 1453, - 1669, 801, 1446, - 1661, 823, 1436, - 1651, 852, 1424, - 1637, 888, 1406, - 1618, 932, 1381, - 1590, 985, 1346, - 1551, 1047, 1295, - 1492, 1119, 1215, - 1400, 1200, 1079, - 1237, 1290, 797, - 846, 1388, 0, - 0, 1493, 0, - 0, 1603, 0, - 0, 1718, 0, - 0, 1837, 0, - 0, 1959, 0, - 0, 2084, 0, - 0, 2210, 0, - 0, 2338, 0, - 0, 2467, 0, - 0, 2596, 0, - 0, 2726, 0, - 0, 2857, 0, - 0, 2988, 0, - 0, 3120, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3514, 0, - 0, 3646, 0, - 1820, 840, 1581, - 1818, 849, 1578, - 1815, 860, 1574, - 1811, 875, 1569, - 1806, 895, 1562, - 1798, 920, 1552, - 1788, 951, 1539, - 1774, 989, 1521, - 1755, 1036, 1495, - 1728, 1092, 1458, - 1689, 1158, 1404, - 1632, 1233, 1319, - 1541, 1317, 1174, - 1382, 1410, 857, - 1007, 1510, 0, - 0, 1617, 0, - 0, 1729, 0, - 0, 1846, 0, - 0, 1966, 0, - 0, 2089, 0, - 0, 2214, 0, - 0, 2341, 0, - 0, 2469, 0, - 0, 2598, 0, - 0, 2728, 0, - 0, 2858, 0, - 0, 2989, 0, - 0, 3120, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3646, 0, - 1958, 930, 1703, - 1956, 937, 1701, - 1954, 947, 1698, - 1951, 959, 1694, - 1947, 976, 1689, - 1941, 996, 1681, - 1934, 1023, 1671, - 1924, 1056, 1658, - 1910, 1097, 1639, - 1891, 1146, 1613, - 1865, 1205, 1575, - 1826, 1273, 1518, - 1769, 1351, 1430, - 1679, 1437, 1277, - 1523, 1532, 927, - 1160, 1635, 0, - 0, 1743, 0, - 0, 1856, 0, - 0, 1974, 0, - 0, 2095, 0, - 0, 2219, 0, - 0, 2344, 0, - 0, 2471, 0, - 0, 2600, 0, - 0, 2729, 0, - 0, 2859, 0, - 0, 2990, 0, - 0, 3121, 0, - 0, 3252, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3647, 0, - 2094, 1028, 1828, - 2092, 1034, 1826, - 2091, 1042, 1824, - 2088, 1052, 1821, - 2086, 1065, 1817, - 2082, 1082, 1811, - 2076, 1104, 1804, - 2069, 1132, 1794, - 2059, 1167, 1780, - 2045, 1210, 1761, - 2026, 1261, 1733, - 2000, 1322, 1695, - 1962, 1392, 1637, - 1905, 1472, 1545, - 1816, 1561, 1385, - 1662, 1657, 1007, - 1307, 1761, 0, - 0, 1870, 0, - 0, 1985, 0, - 0, 2103, 0, - 0, 2225, 0, - 0, 2349, 0, - 0, 2475, 0, - 0, 2603, 0, - 0, 2731, 0, - 0, 2861, 0, - 0, 2991, 0, - 0, 3122, 0, - 0, 3253, 0, - 0, 3384, 0, - 0, 3515, 0, - 0, 3647, 0, - 2228, 1133, 1954, - 2228, 1138, 1953, - 2226, 1144, 1951, - 2225, 1152, 1949, - 2223, 1163, 1946, - 2220, 1176, 1942, - 2216, 1194, 1936, - 2210, 1217, 1929, - 2203, 1246, 1918, - 2193, 1282, 1904, - 2180, 1327, 1885, - 2161, 1380, 1857, - 2134, 1442, 1817, - 2096, 1514, 1758, - 2040, 1596, 1665, - 1952, 1686, 1499, - 1799, 1784, 1095, - 1449, 1888, 0, - 0, 1999, 0, - 0, 2114, 0, - 0, 2233, 0, - 0, 2356, 0, - 0, 2480, 0, - 0, 2606, 0, - 0, 2734, 0, - 0, 2863, 0, - 0, 2992, 0, - 0, 3123, 0, - 0, 3253, 0, - 0, 3384, 0, - 0, 3516, 0, - 0, 3647, 0, - 2363, 1243, 2082, - 2362, 1247, 2081, - 2361, 1252, 2080, - 2360, 1258, 2078, - 2358, 1267, 2076, - 2356, 1278, 2073, - 2353, 1292, 2068, - 2349, 1311, 2063, - 2344, 1335, 2055, - 2337, 1365, 2045, - 2327, 1402, 2031, - 2313, 1447, 2011, - 2294, 1502, 1983, - 2268, 1565, 1942, - 2230, 1639, 1882, - 2174, 1721, 1787, - 2087, 1813, 1617, - 1934, 1912, 1191, - 1589, 2017, 0, - 0, 2129, 0, - 0, 2244, 0, - 0, 2364, 0, - 0, 2486, 0, - 0, 2611, 0, - 0, 2738, 0, - 0, 2866, 0, - 0, 2995, 0, - 0, 3124, 0, - 0, 3255, 0, - 0, 3385, 0, - 0, 3516, 0, - 0, 3648, 0, - 2496, 1359, 2211, - 2496, 1362, 2210, - 2495, 1365, 2209, - 2494, 1370, 2208, - 2493, 1377, 2206, - 2491, 1386, 2204, - 2489, 1397, 2201, - 2486, 1412, 2196, - 2482, 1431, 2191, - 2477, 1455, 2183, - 2470, 1486, 2173, - 2460, 1524, 2158, - 2446, 1570, 2138, - 2428, 1626, 2110, - 2402, 1691, 2069, - 2364, 1765, 2008, - 2308, 1849, 1911, - 2221, 1941, 1738, - 2069, 2041, 1295, - 1727, 2147, 0, - 0, 2259, 0, - 0, 2375, 0, - 0, 2495, 0, - 0, 2618, 0, - 0, 2743, 0, - 0, 2869, 0, - 0, 2997, 0, - 0, 3126, 0, - 0, 3256, 0, - 0, 3387, 0, - 0, 3517, 0, - 0, 3648, 0, - 2630, 1478, 2340, - 2629, 1480, 2340, - 2629, 1483, 2339, - 2628, 1487, 2338, - 2627, 1492, 2337, - 2626, 1499, 2335, - 2624, 1508, 2333, - 2622, 1519, 2330, - 2619, 1535, 2326, - 2615, 1554, 2320, - 2610, 1579, 2312, - 2603, 1610, 2302, - 2593, 1649, 2287, - 2579, 1696, 2267, - 2561, 1752, 2238, - 2535, 1818, 2197, - 2497, 1893, 2136, - 2441, 1977, 2038, - 2354, 2070, 1861, - 2203, 2170, 1404, - 1864, 2277, 0, - 0, 2389, 0, - 0, 2506, 0, - 0, 2626, 0, - 0, 2749, 0, - 0, 2874, 0, - 0, 3001, 0, - 0, 3129, 0, - 0, 3258, 0, - 0, 3388, 0, - 0, 3519, 0, - 0, 3649, 0, - 2763, 1600, 2471, - 2762, 1602, 2470, - 2762, 1604, 2470, - 2761, 1607, 2469, - 2761, 1611, 2468, - 2760, 1616, 2467, - 2759, 1623, 2465, - 2757, 1632, 2463, - 2755, 1644, 2460, - 2752, 1659, 2455, - 2748, 1679, 2450, - 2743, 1704, 2442, - 2735, 1736, 2431, - 2726, 1775, 2417, - 2712, 1823, 2396, - 2694, 1880, 2368, - 2667, 1946, 2326, - 2630, 2022, 2264, - 2574, 2107, 2165, - 2487, 2200, 1987, - 2337, 2301, 1518, - 1999, 2408, 0, - 0, 2520, 0, - 0, 2637, 0, - 0, 2758, 0, - 0, 2881, 0, - 0, 3006, 0, - 0, 3133, 0, - 0, 3261, 0, - 0, 3390, 0, - 0, 3520, 0, - 0, 3651, 0, - 2895, 1725, 2601, - 2895, 1726, 2601, - 2895, 1728, 2601, - 2894, 1730, 2600, - 2894, 1733, 2599, - 2893, 1737, 2599, - 2892, 1742, 2597, - 2891, 1749, 2595, - 2890, 1758, 2593, - 2887, 1770, 2590, - 2884, 1786, 2586, - 2881, 1806, 2580, - 2875, 1832, 2572, - 2868, 1864, 2561, - 2858, 1903, 2547, - 2845, 1951, 2526, - 2826, 2008, 2498, - 2800, 2075, 2456, - 2763, 2151, 2394, - 2707, 2237, 2294, - 2620, 2330, 2114, - 2470, 2431, 1637, - 2133, 2539, 0, - 0, 2652, 0, - 0, 2769, 0, - 0, 2889, 0, - 0, 3012, 0, - 0, 3138, 0, - 0, 3265, 0, - 0, 3393, 0, - 0, 3522, 0, - 0, 3652, 0, - 3028, 1851, 2733, - 3028, 1852, 2732, - 3027, 1853, 2732, - 3027, 1855, 2732, - 3027, 1857, 2731, - 3026, 1860, 2730, - 3026, 1864, 2729, - 3025, 1870, 2728, - 3024, 1877, 2726, - 3022, 1886, 2724, - 3020, 1898, 2721, - 3017, 1914, 2717, - 3013, 1934, 2711, - 3008, 1960, 2703, - 3000, 1992, 2692, - 2991, 2032, 2677, - 2977, 2080, 2657, - 2959, 2138, 2628, - 2933, 2205, 2586, - 2895, 2282, 2524, - 2840, 2367, 2424, - 2753, 2461, 2243, - 2603, 2562, 1758, - 2267, 2670, 0, - 0, 2783, 0, - 0, 2900, 0, - 0, 3021, 0, - 0, 3144, 0, - 0, 3270, 0, - 0, 3397, 0, - 0, 3525, 0, - 0, 3654, 0, - 3160, 1979, 2864, - 3160, 1979, 2864, - 3160, 1980, 2863, - 3160, 1982, 2863, - 3160, 1983, 2863, - 3159, 1986, 2862, - 3159, 1989, 2861, - 3158, 1993, 2861, - 3157, 1998, 2859, - 3156, 2005, 2857, - 3154, 2015, 2855, - 3152, 2027, 2852, - 3149, 2043, 2848, - 3145, 2063, 2842, - 3140, 2089, 2834, - 3133, 2122, 2823, - 3123, 2162, 2809, - 3110, 2210, 2788, - 3091, 2268, 2759, - 3065, 2335, 2717, - 3028, 2412, 2654, - 2972, 2498, 2554, - 2886, 2592, 2372, - 2736, 2694, 1882, - 2401, 2802, 0, - 0, 2915, 0, - 0, 3032, 0, - 0, 3153, 0, - 0, 3276, 0, - 0, 3402, 0, - 0, 3529, 0, - 0, 3657, 0, - 3293, 2107, 2995, - 3293, 2108, 2995, - 3292, 2109, 2995, - 3292, 2110, 2995, - 3292, 2111, 2995, - 3292, 2113, 2994, - 3291, 2115, 2994, - 3291, 2118, 2993, - 3290, 2122, 2992, - 3289, 2128, 2991, - 3288, 2135, 2989, - 3287, 2144, 2986, - 3284, 2157, 2983, - 3282, 2173, 2979, - 3278, 2193, 2973, - 3272, 2219, 2965, - 3265, 2252, 2955, - 3255, 2292, 2940, - 3242, 2341, 2919, - 3223, 2399, 2890, - 3197, 2466, 2848, - 3160, 2543, 2785, - 3104, 2629, 2685, - 3018, 2724, 2502, - 2868, 2825, 2008, - 2534, 2933, 0, - 0, 3046, 0, - 0, 3164, 0, - 0, 3285, 0, - 0, 3408, 0, - 0, 3534, 0, - 0, 3661, 0, - 3425, 2237, 3127, - 3425, 2238, 3127, - 3425, 2238, 3127, - 3425, 2239, 3127, - 3425, 2240, 3126, - 3424, 2241, 3126, - 3424, 2243, 3126, - 3424, 2245, 3125, - 3423, 2248, 3124, - 3423, 2252, 3123, - 3422, 2258, 3122, - 3420, 2265, 3120, - 3419, 2275, 3118, - 3417, 2287, 3115, - 3414, 2303, 3111, - 3410, 2323, 3105, - 3405, 2350, 3097, - 3397, 2382, 3086, - 3388, 2423, 3071, - 3374, 2472, 3051, - 3356, 2530, 3022, - 3330, 2597, 2980, - 3292, 2675, 2917, - 3237, 2761, 2816, - 3150, 2855, 2633, - 3001, 2957, 2136, - 2666, 3065, 0, - 0, 3178, 0, - 0, 3296, 0, - 0, 3417, 0, - 0, 3540, 0, - 0, 3666, 0, - 3557, 2367, 3259, - 3557, 2368, 3259, - 3557, 2368, 3259, - 3557, 2369, 3259, - 3557, 2369, 3258, - 3557, 2370, 3258, - 3557, 2372, 3258, - 3556, 2373, 3257, - 3556, 2376, 3257, - 3555, 2379, 3256, - 3555, 2383, 3255, - 3554, 2389, 3254, - 3553, 2396, 3252, - 3551, 2405, 3250, - 3549, 2418, 3247, - 3546, 2434, 3242, - 3542, 2454, 3236, - 3537, 2480, 3229, - 3530, 2513, 3218, - 3520, 2554, 3203, - 3506, 2603, 3182, - 3488, 2661, 3153, - 3462, 2729, 3111, - 3424, 2806, 3048, - 3369, 2892, 2947, - 3283, 2987, 2763, - 3133, 3089, 2264, - 2799, 3197, 0, - 0, 3310, 0, - 0, 3428, 0, - 0, 3548, 0, - 0, 3672, 0, - 3689, 2498, 3391, - 3689, 2498, 3391, - 3689, 2499, 3391, - 3689, 2499, 3390, - 3689, 2500, 3390, - 3689, 2500, 3390, - 3689, 2501, 3390, - 3689, 2503, 3390, - 3688, 2504, 3389, - 3688, 2507, 3389, - 3688, 2510, 3388, - 3687, 2514, 3387, - 3686, 2520, 3386, - 3685, 2527, 3384, - 3683, 2536, 3382, - 3681, 2549, 3378, - 3678, 2565, 3374, - 3674, 2585, 3368, - 3669, 2612, 3360, - 3662, 2644, 3350, - 3652, 2685, 3335, - 3639, 2734, 3314, - 3620, 2792, 3285, - 3594, 2860, 3243, - 3557, 2938, 3180, - 3501, 3024, 3079, - 3415, 3119, 2895, - 3265, 3221, 2394, - 2932, 3329, 0, - 0, 3442, 0, - 0, 3560, 0, - 0, 3681, 0, - 3822, 2629, 3523, - 3822, 2629, 3523, - 3822, 2630, 3523, - 3822, 2630, 3522, - 3821, 2630, 3522, - 3821, 2631, 3522, - 3821, 2632, 3522, - 3821, 2633, 3522, - 3821, 2634, 3522, - 3821, 2636, 3521, - 3820, 2638, 3521, - 3820, 2641, 3520, - 3819, 2645, 3519, - 3818, 2651, 3518, - 3817, 2658, 3516, - 3815, 2668, 3513, - 3813, 2680, 3510, - 3810, 2696, 3506, - 3806, 2717, 3500, - 3801, 2743, 3492, - 3794, 2776, 3481, - 3784, 2817, 3467, - 3771, 2866, 3446, - 3752, 2924, 3417, - 3726, 2992, 3375, - 3689, 3069, 3312, - 3633, 3156, 3210, - 3547, 3251, 3026, - 3398, 3353, 2524, - 3064, 3461, 0, - 0, 3574, 0, - 0, 3692, 0, - 3954, 2760, 3655, - 3954, 2761, 3655, - 3954, 2761, 3654, - 3954, 2761, 3654, - 3954, 2761, 3654, - 3954, 2762, 3654, - 3953, 2762, 3654, - 3953, 2763, 3654, - 3953, 2764, 3654, - 3953, 2765, 3653, - 3953, 2767, 3653, - 3952, 2769, 3652, - 3952, 2773, 3652, - 3951, 2777, 3651, - 3950, 2782, 3649, - 3949, 2790, 3648, - 3947, 2799, 3645, - 3945, 2812, 3642, - 3942, 2828, 3638, - 3939, 2848, 3632, - 3933, 2875, 3624, - 3926, 2908, 3613, - 3916, 2948, 3598, - 3903, 2997, 3578, - 3884, 3056, 3549, - 3858, 3124, 3507, - 3821, 3201, 3443, - 3766, 3288, 3342, - 3679, 3383, 3158, - 3530, 3485, 2655, - 3196, 3593, 0, - 0, 3706, 0, - 4086, 2892, 3787, - 4086, 2892, 3787, - 4086, 2892, 3787, - 4086, 2892, 3786, - 4086, 2893, 3786, - 4086, 2893, 3786, - 4086, 2893, 3786, - 4086, 2894, 3786, - 4086, 2895, 3786, - 4085, 2896, 3786, - 4085, 2897, 3785, - 4085, 2899, 3785, - 4084, 2901, 3784, - 4084, 2904, 3784, - 4083, 2908, 3783, - 4082, 2914, 3781, - 4081, 2921, 3780, - 4080, 2931, 3777, - 4077, 2943, 3774, - 4075, 2959, 3770, - 4071, 2980, 3764, - 4065, 3006, 3756, - 4058, 3039, 3745, - 4048, 3080, 3730, - 4035, 3129, 3710, - 4016, 3188, 3681, - 3990, 3256, 3639, - 3953, 3333, 3575, - 3898, 3420, 3474, - 3811, 3515, 3289, - 3662, 3617, 2786, - 3329, 3725, 0, - 4095, 3024, 3919, - 4095, 3024, 3919, - 4095, 3024, 3919, - 4095, 3024, 3919, - 4095, 3024, 3918, - 4095, 3024, 3918, - 4095, 3025, 3918, - 4095, 3025, 3918, - 4095, 3026, 3918, - 4095, 3026, 3918, - 4095, 3027, 3918, - 4095, 3029, 3917, - 4095, 3030, 3917, - 4095, 3033, 3916, - 4095, 3036, 3916, - 4095, 3040, 3915, - 4095, 3046, 3913, - 4095, 3053, 3912, - 4095, 3062, 3909, - 4095, 3075, 3906, - 4095, 3091, 3902, - 4095, 3112, 3896, - 4095, 3138, 3888, - 4095, 3171, 3877, - 4095, 3212, 3862, - 4095, 3261, 3842, - 4095, 3320, 3813, - 4095, 3388, 3771, - 4085, 3465, 3707, - 4030, 3552, 3606, - 3943, 3647, 3421, - 3794, 3749, 2917, - 4095, 3155, 4051, - 4095, 3155, 4051, - 4095, 3155, 4051, - 4095, 3156, 4051, - 4095, 3156, 4051, - 4095, 3156, 4051, - 4095, 3156, 4050, - 4095, 3156, 4050, - 4095, 3157, 4050, - 4095, 3157, 4050, - 4095, 3158, 4050, - 4095, 3159, 4050, - 4095, 3161, 4049, - 4095, 3162, 4049, - 4095, 3165, 4048, - 4095, 3168, 4048, - 4095, 3172, 4047, - 4095, 3177, 4045, - 4095, 3185, 4044, - 4095, 3194, 4041, - 4095, 3207, 4038, - 4095, 3223, 4034, - 4095, 3244, 4028, - 4095, 3270, 4020, - 4095, 3303, 4009, - 4095, 3344, 3994, - 4095, 3393, 3974, - 4095, 3452, 3945, - 4095, 3520, 3903, - 4095, 3597, 3839, - 4095, 3684, 3738, - 4076, 3779, 3553, - 0, 494, 709, - 0, 513, 690, - 0, 537, 662, - 0, 567, 621, - 0, 604, 561, - 0, 650, 466, - 0, 705, 295, - 0, 770, 0, - 0, 843, 0, - 0, 927, 0, - 0, 1018, 0, - 0, 1118, 0, - 0, 1223, 0, - 0, 1335, 0, - 0, 1451, 0, - 0, 1571, 0, - 0, 1693, 0, - 0, 1818, 0, - 0, 1945, 0, - 0, 2073, 0, - 0, 2202, 0, - 0, 2332, 0, - 0, 2462, 0, - 0, 2593, 0, - 0, 2724, 0, - 0, 2855, 0, - 0, 2987, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 0, 500, 738, - 0, 519, 719, - 0, 543, 693, - 0, 572, 655, - 0, 610, 600, - 0, 655, 513, - 0, 709, 363, - 0, 773, 25, - 0, 846, 0, - 0, 929, 0, - 0, 1020, 0, - 0, 1119, 0, - 0, 1225, 0, - 0, 1336, 0, - 0, 1452, 0, - 0, 1571, 0, - 0, 1694, 0, - 0, 1819, 0, - 0, 1945, 0, - 0, 2073, 0, - 0, 2202, 0, - 0, 2332, 0, - 0, 2462, 0, - 0, 2593, 0, - 0, 2724, 0, - 0, 2855, 0, - 0, 2987, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 0, 509, 773, - 0, 527, 756, - 0, 550, 732, - 0, 580, 697, - 0, 616, 647, - 0, 661, 569, - 0, 715, 440, - 0, 778, 174, - 0, 850, 0, - 0, 932, 0, - 0, 1023, 0, - 0, 1121, 0, - 0, 1227, 0, - 0, 1337, 0, - 0, 1453, 0, - 0, 1572, 0, - 0, 1694, 0, - 0, 1819, 0, - 0, 1946, 0, - 0, 2073, 0, - 0, 2202, 0, - 0, 2332, 0, - 0, 2462, 0, - 0, 2593, 0, - 0, 2724, 0, - 0, 2855, 0, - 0, 2987, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 66, 520, 816, - 0, 538, 801, - 0, 561, 779, - 0, 589, 748, - 0, 625, 703, - 0, 669, 635, - 0, 722, 525, - 0, 784, 318, - 0, 856, 0, - 0, 937, 0, - 0, 1027, 0, - 0, 1124, 0, - 0, 1229, 0, - 0, 1339, 0, - 0, 1454, 0, - 0, 1573, 0, - 0, 1695, 0, - 0, 1820, 0, - 0, 1946, 0, - 0, 2074, 0, - 0, 2202, 0, - 0, 2332, 0, - 0, 2462, 0, - 0, 2593, 0, - 0, 2724, 0, - 0, 2855, 0, - 0, 2987, 0, - 0, 3118, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 429, 534, 868, - 379, 552, 854, - 302, 574, 835, - 173, 602, 808, - 0, 637, 769, - 0, 680, 711, - 0, 731, 620, - 0, 792, 459, - 0, 863, 78, - 0, 943, 0, - 0, 1031, 0, - 0, 1128, 0, - 0, 1232, 0, - 0, 1342, 0, - 0, 1456, 0, - 0, 1575, 0, - 0, 1696, 0, - 0, 1821, 0, - 0, 1947, 0, - 0, 2074, 0, - 0, 2203, 0, - 0, 2332, 0, - 0, 2463, 0, - 0, 2593, 0, - 0, 2724, 0, - 0, 2855, 0, - 0, 2987, 0, - 0, 3119, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 680, 553, 930, - 652, 570, 918, - 611, 591, 901, - 550, 618, 878, - 454, 652, 844, - 281, 693, 796, - 0, 743, 721, - 0, 803, 597, - 0, 872, 351, - 0, 950, 0, - 0, 1038, 0, - 0, 1133, 0, - 0, 1236, 0, - 0, 1345, 0, - 0, 1459, 0, - 0, 1577, 0, - 0, 1698, 0, - 0, 1822, 0, - 0, 1948, 0, - 0, 2075, 0, - 0, 2203, 0, - 0, 2333, 0, - 0, 2463, 0, - 0, 2593, 0, - 0, 2724, 0, - 0, 2856, 0, - 0, 2987, 0, - 0, 3119, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 884, 577, 1001, - 866, 593, 990, - 841, 613, 976, - 806, 639, 956, - 753, 671, 929, - 672, 711, 889, - 534, 759, 829, - 243, 817, 734, - 0, 884, 566, - 0, 960, 150, - 0, 1046, 0, - 0, 1140, 0, - 0, 1241, 0, - 0, 1349, 0, - 0, 1462, 0, - 0, 1579, 0, - 0, 1700, 0, - 0, 1823, 0, - 0, 1949, 0, - 0, 2076, 0, - 0, 2204, 0, - 0, 2333, 0, - 0, 2463, 0, - 0, 2594, 0, - 0, 2725, 0, - 0, 2856, 0, - 0, 2987, 0, - 0, 3119, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1063, 607, 1081, - 1051, 622, 1072, - 1035, 641, 1061, - 1012, 665, 1044, - 979, 696, 1022, - 932, 733, 989, - 859, 780, 942, - 739, 835, 870, - 505, 899, 751, - 0, 974, 520, - 0, 1057, 0, - 0, 1149, 0, - 0, 1249, 0, - 0, 1355, 0, - 0, 1466, 0, - 0, 1583, 0, - 0, 1702, 0, - 0, 1825, 0, - 0, 1950, 0, - 0, 2077, 0, - 0, 2205, 0, - 0, 2334, 0, - 0, 2464, 0, - 0, 2594, 0, - 0, 2725, 0, - 0, 2856, 0, - 0, 2987, 0, - 0, 3119, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1228, 644, 1170, - 1219, 658, 1163, - 1208, 676, 1153, - 1193, 698, 1140, - 1171, 727, 1122, - 1140, 762, 1096, - 1096, 805, 1059, - 1029, 858, 1005, - 919, 919, 919, - 715, 991, 773, - 63, 1071, 450, - 0, 1161, 0, - 0, 1258, 0, - 0, 1362, 0, - 0, 1472, 0, - 0, 1587, 0, - 0, 1706, 0, - 0, 1828, 0, - 0, 1952, 0, - 0, 2078, 0, - 0, 2206, 0, - 0, 2335, 0, - 0, 2464, 0, - 0, 2594, 0, - 0, 2725, 0, - 0, 2856, 0, - 0, 2987, 0, - 0, 3119, 0, - 0, 3251, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1383, 690, 1267, - 1377, 702, 1262, - 1369, 718, 1254, - 1358, 739, 1243, - 1343, 765, 1229, - 1322, 798, 1208, - 1293, 838, 1180, - 1250, 887, 1139, - 1187, 945, 1077, - 1084, 1013, 978, - 897, 1090, 801, - 377, 1176, 337, - 0, 1270, 0, - 0, 1372, 0, - 0, 1480, 0, - 0, 1593, 0, - 0, 1711, 0, - 0, 1831, 0, - 0, 1955, 0, - 0, 2080, 0, - 0, 2208, 0, - 0, 2336, 0, - 0, 2465, 0, - 0, 2595, 0, - 0, 2726, 0, - 0, 2857, 0, - 0, 2988, 0, - 0, 3119, 0, - 0, 3251, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1531, 745, 1371, - 1527, 756, 1367, - 1521, 770, 1361, - 1513, 788, 1352, - 1503, 812, 1341, - 1488, 841, 1325, - 1468, 878, 1303, - 1440, 923, 1272, - 1399, 977, 1227, - 1337, 1040, 1158, - 1239, 1113, 1047, - 1064, 1195, 835, - 609, 1286, 120, - 0, 1385, 0, - 0, 1490, 0, - 0, 1601, 0, - 0, 1717, 0, - 0, 1836, 0, - 0, 1958, 0, - 0, 2083, 0, - 0, 2210, 0, - 0, 2337, 0, - 0, 2466, 0, - 0, 2596, 0, - 0, 2726, 0, - 0, 2857, 0, - 0, 2988, 0, - 0, 3119, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3514, 0, - 0, 3646, 0, - 1675, 809, 1481, - 1672, 818, 1478, - 1668, 831, 1473, - 1662, 847, 1466, - 1655, 867, 1458, - 1644, 894, 1445, - 1630, 927, 1429, - 1610, 967, 1405, - 1582, 1016, 1372, - 1542, 1075, 1323, - 1483, 1143, 1249, - 1388, 1220, 1125, - 1220, 1307, 878, - 804, 1401, 0, - 0, 1503, 0, - 0, 1611, 0, - 0, 1725, 0, - 0, 1842, 0, - 0, 1963, 0, - 0, 2087, 0, - 0, 2212, 0, - 0, 2340, 0, - 0, 2468, 0, - 0, 2597, 0, - 0, 2727, 0, - 0, 2858, 0, - 0, 2989, 0, - 0, 3120, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3646, 0, - 1816, 882, 1596, - 1813, 890, 1593, - 1810, 901, 1590, - 1806, 915, 1585, - 1801, 933, 1578, - 1793, 955, 1569, - 1783, 984, 1556, - 1769, 1020, 1538, - 1750, 1064, 1514, - 1722, 1117, 1478, - 1683, 1179, 1427, - 1625, 1251, 1347, - 1532, 1333, 1212, - 1369, 1422, 929, - 978, 1520, 0, - 0, 1625, 0, - 0, 1735, 0, - 0, 1850, 0, - 0, 1969, 0, - 0, 2092, 0, - 0, 2216, 0, - 0, 2342, 0, - 0, 2470, 0, - 0, 2599, 0, - 0, 2728, 0, - 0, 2859, 0, - 0, 2989, 0, - 0, 3120, 0, - 0, 3252, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3647, 0, - 1954, 965, 1715, - 1952, 972, 1713, - 1950, 981, 1710, - 1947, 992, 1706, - 1943, 1007, 1701, - 1938, 1027, 1694, - 1930, 1052, 1684, - 1920, 1083, 1671, - 1906, 1121, 1653, - 1887, 1168, 1627, - 1860, 1224, 1590, - 1821, 1290, 1536, - 1764, 1365, 1452, - 1673, 1449, 1307, - 1514, 1542, 989, - 1139, 1642, 0, - 0, 1749, 0, - 0, 1861, 0, - 0, 1978, 0, - 0, 2098, 0, - 0, 2221, 0, - 0, 2346, 0, - 0, 2473, 0, - 0, 2601, 0, - 0, 2730, 0, - 0, 2860, 0, - 0, 2990, 0, - 0, 3121, 0, - 0, 3252, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3647, 0, - 2091, 1056, 1837, - 2090, 1062, 1835, - 2088, 1069, 1833, - 2086, 1079, 1830, - 2083, 1091, 1826, - 2079, 1108, 1821, - 2073, 1129, 1813, - 2066, 1155, 1803, - 2056, 1188, 1790, - 2042, 1229, 1771, - 2023, 1278, 1745, - 1997, 1337, 1707, - 1958, 1405, 1650, - 1901, 1483, 1562, - 1812, 1570, 1409, - 1655, 1664, 1059, - 1292, 1767, 0, - 0, 1875, 0, - 0, 1988, 0, - 0, 2106, 0, - 0, 2227, 0, - 0, 2351, 0, - 0, 2476, 0, - 0, 2604, 0, - 0, 2732, 0, - 0, 2861, 0, - 0, 2991, 0, - 0, 3122, 0, - 0, 3253, 0, - 0, 3384, 0, - 0, 3515, 0, - 0, 3647, 0, - 2227, 1156, 1961, - 2226, 1160, 1960, - 2224, 1166, 1958, - 2223, 1174, 1956, - 2221, 1184, 1953, - 2218, 1197, 1949, - 2214, 1214, 1943, - 2208, 1236, 1936, - 2201, 1264, 1926, - 2191, 1299, 1912, - 2177, 1342, 1893, - 2158, 1393, 1866, - 2132, 1454, 1827, - 2094, 1524, 1769, - 2037, 1604, 1678, - 1948, 1693, 1517, - 1794, 1789, 1139, - 1439, 1893, 0, - 0, 2002, 0, - 0, 2117, 0, - 0, 2235, 0, - 0, 2357, 0, - 0, 2481, 0, - 0, 2607, 0, - 0, 2735, 0, - 0, 2863, 0, - 0, 2993, 0, - 0, 3123, 0, - 0, 3254, 0, - 0, 3385, 0, - 0, 3516, 0, - 0, 3647, 0, - 2361, 1261, 2087, - 2361, 1265, 2086, - 2360, 1270, 2085, - 2358, 1276, 2083, - 2357, 1284, 2081, - 2355, 1295, 2078, - 2352, 1309, 2074, - 2348, 1327, 2068, - 2342, 1349, 2061, - 2335, 1378, 2050, - 2325, 1415, 2036, - 2312, 1459, 2017, - 2293, 1512, 1989, - 2266, 1574, 1949, - 2228, 1646, 1890, - 2172, 1728, 1797, - 2084, 1818, 1631, - 1931, 1916, 1227, - 1581, 2021, 0, - 0, 2131, 0, - 0, 2246, 0, - 0, 2365, 0, - 0, 2488, 0, - 0, 2612, 0, - 0, 2738, 0, - 0, 2866, 0, - 0, 2995, 0, - 0, 3125, 0, - 0, 3255, 0, - 0, 3386, 0, - 0, 3517, 0, - 0, 3648, 0, - 2495, 1373, 2215, - 2495, 1376, 2214, - 2494, 1379, 2213, - 2493, 1384, 2212, - 2492, 1391, 2210, - 2490, 1399, 2208, - 2488, 1410, 2205, - 2485, 1424, 2201, - 2481, 1443, 2195, - 2476, 1467, 2187, - 2469, 1497, 2177, - 2459, 1534, 2163, - 2445, 1579, 2143, - 2427, 1634, 2115, - 2400, 1698, 2074, - 2362, 1771, 2014, - 2306, 1854, 1919, - 2219, 1945, 1749, - 2066, 2044, 1323, - 1721, 2149, 0, - 0, 2261, 0, - 0, 2376, 0, - 0, 2496, 0, - 0, 2619, 0, - 0, 2743, 0, - 0, 2870, 0, - 0, 2998, 0, - 0, 3127, 0, - 0, 3256, 0, - 0, 3387, 0, - 0, 3517, 0, - 0, 3649, 0, - 2629, 1489, 2343, - 2628, 1491, 2343, - 2628, 1494, 2342, - 2627, 1497, 2341, - 2626, 1503, 2340, - 2625, 1509, 2338, - 2623, 1518, 2336, - 2621, 1529, 2333, - 2618, 1544, 2329, - 2614, 1563, 2323, - 2609, 1588, 2315, - 2602, 1618, 2305, - 2592, 1656, 2290, - 2579, 1703, 2270, - 2560, 1758, 2242, - 2534, 1823, 2201, - 2496, 1897, 2140, - 2440, 1981, 2043, - 2353, 2073, 1870, - 2201, 2173, 1427, - 1859, 2279, 0, - 0, 2391, 0, - 0, 2507, 0, - 0, 2627, 0, - 0, 2750, 0, - 0, 2875, 0, - 0, 3001, 0, - 0, 3129, 0, - 0, 3258, 0, - 0, 3388, 0, - 0, 3519, 0, - 0, 3649, 0, - 2762, 1608, 2473, - 2762, 1610, 2473, - 2761, 1612, 2472, - 2761, 1615, 2471, - 2760, 1619, 2470, - 2759, 1624, 2469, - 2758, 1631, 2467, - 2756, 1640, 2465, - 2754, 1652, 2462, - 2751, 1667, 2458, - 2747, 1686, 2452, - 2742, 1711, 2444, - 2735, 1742, 2434, - 2725, 1781, 2419, - 2712, 1828, 2399, - 2693, 1884, 2370, - 2667, 1950, 2329, - 2629, 2025, 2268, - 2573, 2109, 2170, - 2486, 2202, 1993, - 2335, 2302, 1536, - 1996, 2409, 0, - 0, 2521, 0, - 0, 2638, 0, - 0, 2758, 0, - 0, 2881, 0, - 0, 3006, 0, - 0, 3133, 0, - 0, 3261, 0, - 0, 3390, 0, - 0, 3520, 0, - 0, 3651, 0, - 2895, 1731, 2603, - 2895, 1732, 2603, - 2894, 1734, 2602, - 2894, 1736, 2602, - 2893, 1739, 2601, - 2893, 1743, 2600, - 2892, 1748, 2599, - 2891, 1755, 2597, - 2889, 1764, 2595, - 2887, 1776, 2592, - 2884, 1791, 2587, - 2880, 1811, 2582, - 2875, 1836, 2574, - 2868, 1868, 2563, - 2858, 1907, 2549, - 2844, 1955, 2528, - 2826, 2012, 2500, - 2800, 2078, 2458, - 2762, 2154, 2396, - 2706, 2239, 2298, - 2619, 2332, 2119, - 2469, 2433, 1651, - 2131, 2540, 0, - 0, 2652, 0, - 0, 2769, 0, - 0, 2890, 0, - 0, 3013, 0, - 0, 3138, 0, - 0, 3265, 0, - 0, 3393, 0, - 0, 3522, 0, - 0, 3652, 0, - 3028, 1856, 2734, - 3027, 1857, 2734, - 3027, 1858, 2733, - 3027, 1860, 2733, - 3027, 1862, 2732, - 3026, 1865, 2732, - 3025, 1869, 2731, - 3024, 1874, 2729, - 3023, 1881, 2728, - 3022, 1890, 2725, - 3019, 1902, 2722, - 3017, 1918, 2718, - 3013, 1938, 2712, - 3007, 1964, 2704, - 3000, 1996, 2694, - 2990, 2035, 2679, - 2977, 2083, 2658, - 2958, 2140, 2630, - 2932, 2207, 2588, - 2895, 2283, 2526, - 2839, 2369, 2426, - 2752, 2462, 2246, - 2602, 2563, 1769, - 2265, 2671, 0, - 0, 2784, 0, - 0, 2901, 0, - 0, 3021, 0, - 0, 3144, 0, - 0, 3270, 0, - 0, 3397, 0, - 0, 3525, 0, - 0, 3654, 0, - 3160, 1982, 2865, - 3160, 1983, 2865, - 3160, 1984, 2864, - 3160, 1985, 2864, - 3159, 1987, 2864, - 3159, 1989, 2863, - 3158, 1992, 2862, - 3158, 1996, 2861, - 3157, 2002, 2860, - 3156, 2009, 2858, - 3154, 2018, 2856, - 3152, 2030, 2853, - 3149, 2046, 2849, - 3145, 2066, 2843, - 3140, 2092, 2835, - 3133, 2124, 2824, - 3123, 2164, 2810, - 3109, 2212, 2789, - 3091, 2270, 2760, - 3065, 2337, 2719, - 3027, 2414, 2656, - 2972, 2499, 2556, - 2885, 2593, 2375, - 2735, 2695, 1890, - 2399, 2802, 0, - 0, 2915, 0, - 0, 3032, 0, - 0, 3153, 0, - 0, 3276, 0, - 0, 3402, 0, - 0, 3529, 0, - 0, 3657, 0, - 3292, 2110, 2996, - 3292, 2111, 2996, - 3292, 2111, 2996, - 3292, 2112, 2996, - 3292, 2114, 2995, - 3292, 2116, 2995, - 3291, 2118, 2994, - 3291, 2121, 2994, - 3290, 2125, 2993, - 3289, 2130, 2991, - 3288, 2138, 2990, - 3286, 2147, 2987, - 3284, 2159, 2984, - 3281, 2175, 2980, - 3277, 2195, 2974, - 3272, 2221, 2966, - 3265, 2254, 2955, - 3255, 2294, 2941, - 3242, 2342, 2920, - 3223, 2400, 2891, - 3197, 2467, 2849, - 3160, 2544, 2787, - 3104, 2630, 2686, - 3018, 2724, 2504, - 2868, 2826, 2015, - 2533, 2934, 0, - 0, 3047, 0, - 0, 3164, 0, - 0, 3285, 0, - 0, 3408, 0, - 0, 3534, 0, - 0, 3661, 0, - 3425, 2239, 3128, - 3425, 2240, 3127, - 3425, 2240, 3127, - 3425, 2241, 3127, - 3424, 2242, 3127, - 3424, 2243, 3127, - 3424, 2245, 3126, - 3424, 2247, 3126, - 3423, 2250, 3125, - 3422, 2254, 3124, - 3421, 2260, 3123, - 3420, 2267, 3121, - 3419, 2276, 3119, - 3417, 2289, 3115, - 3414, 2305, 3111, - 3410, 2325, 3105, - 3404, 2351, 3097, - 3397, 2384, 3087, - 3387, 2424, 3072, - 3374, 2473, 3051, - 3355, 2531, 3022, - 3329, 2598, 2980, - 3292, 2675, 2918, - 3237, 2761, 2817, - 3150, 2856, 2634, - 3000, 2957, 2141, - 2666, 3065, 0, - 0, 3178, 0, - 0, 3296, 0, - 0, 3417, 0, - 0, 3540, 0, - 0, 3666, 0, - 3557, 2369, 3259, - 3557, 2369, 3259, - 3557, 2370, 3259, - 3557, 2370, 3259, - 3557, 2371, 3259, - 3557, 2372, 3259, - 3556, 2373, 3258, - 3556, 2375, 3258, - 3556, 2377, 3257, - 3555, 2380, 3257, - 3555, 2385, 3256, - 3554, 2390, 3254, - 3553, 2397, 3252, - 3551, 2407, 3250, - 3549, 2419, 3247, - 3546, 2435, 3243, - 3542, 2456, 3237, - 3537, 2482, 3229, - 3529, 2514, 3218, - 3520, 2555, 3203, - 3506, 2604, 3183, - 3488, 2662, 3154, - 3462, 2729, 3112, - 3424, 2807, 3049, - 3369, 2893, 2948, - 3282, 2987, 2765, - 3133, 3089, 2268, - 2799, 3197, 0, - 0, 3310, 0, - 0, 3428, 0, - 0, 3549, 0, - 0, 3672, 0, - 3689, 2499, 3391, - 3689, 2499, 3391, - 3689, 2500, 3391, - 3689, 2500, 3391, - 3689, 2501, 3391, - 3689, 2501, 3390, - 3689, 2502, 3390, - 3689, 2504, 3390, - 3688, 2506, 3390, - 3688, 2508, 3389, - 3687, 2511, 3388, - 3687, 2515, 3387, - 3686, 2521, 3386, - 3685, 2528, 3384, - 3683, 2537, 3382, - 3681, 2550, 3379, - 3678, 2566, 3374, - 3674, 2586, 3369, - 3669, 2613, 3361, - 3662, 2645, 3350, - 3652, 2686, 3335, - 3639, 2735, 3314, - 3620, 2793, 3285, - 3594, 2861, 3243, - 3556, 2938, 3180, - 3501, 3024, 3079, - 3415, 3119, 2896, - 3265, 3221, 2397, - 2931, 3329, 0, - 0, 3442, 0, - 0, 3560, 0, - 0, 3681, 0, - 3822, 2630, 3523, - 3822, 2630, 3523, - 3821, 2630, 3523, - 3821, 2631, 3523, - 3821, 2631, 3523, - 3821, 2632, 3522, - 3821, 2632, 3522, - 3821, 2633, 3522, - 3821, 2635, 3522, - 3821, 2637, 3521, - 3820, 2639, 3521, - 3820, 2642, 3520, - 3819, 2646, 3519, - 3818, 2652, 3518, - 3817, 2659, 3516, - 3815, 2668, 3514, - 3813, 2681, 3510, - 3810, 2697, 3506, - 3806, 2717, 3500, - 3801, 2744, 3492, - 3794, 2777, 3482, - 3784, 2817, 3467, - 3771, 2866, 3446, - 3752, 2925, 3417, - 3726, 2992, 3375, - 3689, 3070, 3312, - 3633, 3156, 3211, - 3547, 3251, 3027, - 3398, 3353, 2526, - 3064, 3461, 0, - 0, 3574, 0, - 0, 3692, 0, - 3954, 2761, 3655, - 3954, 2761, 3655, - 3954, 2761, 3655, - 3954, 2762, 3655, - 3954, 2762, 3655, - 3954, 2762, 3654, - 3953, 2763, 3654, - 3953, 2764, 3654, - 3953, 2765, 3654, - 3953, 2766, 3654, - 3953, 2768, 3653, - 3952, 2770, 3653, - 3952, 2773, 3652, - 3951, 2777, 3651, - 3950, 2783, 3650, - 3949, 2790, 3648, - 3947, 2800, 3645, - 3945, 2812, 3642, - 3942, 2828, 3638, - 3938, 2849, 3632, - 3933, 2875, 3624, - 3926, 2908, 3614, - 3916, 2949, 3599, - 3903, 2998, 3578, - 3884, 3056, 3549, - 3858, 3124, 3507, - 3821, 3202, 3444, - 3766, 3288, 3343, - 3679, 3383, 3158, - 3530, 3485, 2656, - 3196, 3593, 0, - 0, 3706, 0, - 4086, 2892, 3787, - 4086, 2893, 3787, - 4086, 2893, 3787, - 4086, 2893, 3787, - 4086, 2893, 3787, - 4086, 2893, 3786, - 4086, 2894, 3786, - 4086, 2894, 3786, - 4085, 2895, 3786, - 4085, 2896, 3786, - 4085, 2897, 3786, - 4085, 2899, 3785, - 4084, 2902, 3785, - 4084, 2905, 3784, - 4083, 2909, 3783, - 4082, 2914, 3782, - 4081, 2922, 3780, - 4080, 2931, 3777, - 4077, 2944, 3774, - 4075, 2960, 3770, - 4071, 2980, 3764, - 4065, 3007, 3756, - 4058, 3040, 3745, - 4048, 3080, 3731, - 4035, 3130, 3710, - 4016, 3188, 3681, - 3990, 3256, 3639, - 3953, 3333, 3575, - 3898, 3420, 3474, - 3811, 3515, 3290, - 3662, 3617, 2787, - 3328, 3725, 0, - 4095, 3024, 3919, - 4095, 3024, 3919, - 4095, 3024, 3919, - 4095, 3024, 3919, - 4095, 3024, 3919, - 4095, 3025, 3919, - 4095, 3025, 3918, - 4095, 3025, 3918, - 4095, 3026, 3918, - 4095, 3027, 3918, - 4095, 3028, 3918, - 4095, 3029, 3918, - 4095, 3031, 3917, - 4095, 3033, 3917, - 4095, 3036, 3916, - 4095, 3040, 3915, - 4095, 3046, 3914, - 4095, 3053, 3912, - 4095, 3063, 3909, - 4095, 3075, 3906, - 4095, 3091, 3902, - 4095, 3112, 3896, - 4095, 3138, 3888, - 4095, 3171, 3877, - 4095, 3212, 3863, - 4095, 3261, 3842, - 4095, 3320, 3813, - 4095, 3388, 3771, - 4085, 3465, 3707, - 4030, 3552, 3606, - 3943, 3647, 3422, - 3794, 3749, 2918, - 4095, 3156, 4051, - 4095, 3156, 4051, - 4095, 3156, 4051, - 4095, 3156, 4051, - 4095, 3156, 4051, - 4095, 3156, 4051, - 4095, 3156, 4051, - 4095, 3157, 4050, - 4095, 3157, 4050, - 4095, 3158, 4050, - 4095, 3158, 4050, - 4095, 3159, 4050, - 4095, 3161, 4050, - 4095, 3163, 4049, - 4095, 3165, 4049, - 4095, 3168, 4048, - 4095, 3172, 4047, - 4095, 3178, 4046, - 4095, 3185, 4044, - 4095, 3195, 4041, - 4095, 3207, 4038, - 4095, 3223, 4034, - 4095, 3244, 4028, - 4095, 3270, 4020, - 4095, 3303, 4009, - 4095, 3344, 3995, - 4095, 3393, 3974, - 4095, 3452, 3945, - 4095, 3520, 3903, - 4095, 3597, 3839, - 4095, 3684, 3738, - 4076, 3779, 3553, - 0, 606, 834, - 0, 621, 819, - 0, 640, 798, - 0, 664, 769, - 0, 695, 726, - 0, 733, 662, - 0, 779, 559, - 0, 834, 370, - 0, 899, 0, - 0, 973, 0, - 0, 1057, 0, - 0, 1149, 0, - 0, 1248, 0, - 0, 1355, 0, - 0, 1466, 0, - 0, 1583, 0, - 0, 1702, 0, - 0, 1825, 0, - 0, 1950, 0, - 0, 2077, 0, - 0, 2205, 0, - 0, 2334, 0, - 0, 2464, 0, - 0, 2594, 0, - 0, 2725, 0, - 0, 2856, 0, - 0, 2987, 0, - 0, 3119, 0, - 0, 3250, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 0, 611, 856, - 0, 626, 842, - 0, 645, 822, - 0, 669, 794, - 0, 699, 753, - 0, 737, 693, - 0, 782, 598, - 0, 837, 427, - 0, 902, 2, - 0, 976, 0, - 0, 1059, 0, - 0, 1150, 0, - 0, 1250, 0, - 0, 1356, 0, - 0, 1467, 0, - 0, 1583, 0, - 0, 1703, 0, - 0, 1825, 0, - 0, 1950, 0, - 0, 2077, 0, - 0, 2205, 0, - 0, 2334, 0, - 0, 2464, 0, - 0, 2594, 0, - 0, 2725, 0, - 0, 2856, 0, - 0, 2987, 0, - 0, 3119, 0, - 0, 3251, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 0, 618, 883, - 0, 632, 870, - 0, 651, 851, - 0, 675, 825, - 0, 705, 788, - 0, 742, 732, - 0, 787, 645, - 0, 841, 495, - 0, 905, 157, - 0, 979, 0, - 0, 1061, 0, - 0, 1152, 0, - 0, 1251, 0, - 0, 1357, 0, - 0, 1468, 0, - 0, 1584, 0, - 0, 1703, 0, - 0, 1826, 0, - 0, 1951, 0, - 0, 2077, 0, - 0, 2205, 0, - 0, 2334, 0, - 0, 2464, 0, - 0, 2594, 0, - 0, 2725, 0, - 0, 2856, 0, - 0, 2987, 0, - 0, 3119, 0, - 0, 3251, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 0, 627, 918, - 0, 641, 905, - 0, 659, 888, - 0, 682, 864, - 0, 712, 829, - 0, 748, 779, - 0, 793, 702, - 0, 847, 572, - 0, 910, 306, - 0, 983, 0, - 0, 1064, 0, - 0, 1155, 0, - 0, 1253, 0, - 0, 1359, 0, - 0, 1469, 0, - 0, 1585, 0, - 0, 1704, 0, - 0, 1827, 0, - 0, 1951, 0, - 0, 2078, 0, - 0, 2205, 0, - 0, 2334, 0, - 0, 2464, 0, - 0, 2594, 0, - 0, 2725, 0, - 0, 2856, 0, - 0, 2987, 0, - 0, 3119, 0, - 0, 3251, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 271, 638, 960, - 198, 652, 948, - 78, 670, 933, - 0, 693, 911, - 0, 721, 880, - 0, 757, 835, - 0, 801, 768, - 0, 854, 657, - 0, 916, 450, - 0, 988, 0, - 0, 1069, 0, - 0, 1159, 0, - 0, 1256, 0, - 0, 1361, 0, - 0, 1471, 0, - 0, 1586, 0, - 0, 1705, 0, - 0, 1827, 0, - 0, 1952, 0, - 0, 2078, 0, - 0, 2206, 0, - 0, 2335, 0, - 0, 2464, 0, - 0, 2594, 0, - 0, 2725, 0, - 0, 2856, 0, - 0, 2987, 0, - 0, 3119, 0, - 0, 3251, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 595, 653, 1011, - 561, 667, 1000, - 511, 684, 986, - 434, 706, 967, - 305, 734, 940, - 43, 769, 901, - 0, 812, 843, - 0, 863, 752, - 0, 924, 591, - 0, 995, 210, - 0, 1075, 0, - 0, 1164, 0, - 0, 1260, 0, - 0, 1364, 0, - 0, 1474, 0, - 0, 1588, 0, - 0, 1707, 0, - 0, 1829, 0, - 0, 1953, 0, - 0, 2079, 0, - 0, 2206, 0, - 0, 2335, 0, - 0, 2464, 0, - 0, 2595, 0, - 0, 2725, 0, - 0, 2856, 0, - 0, 2988, 0, - 0, 3119, 0, - 0, 3251, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 832, 672, 1071, - 812, 685, 1062, - 784, 702, 1050, - 743, 723, 1033, - 682, 750, 1010, - 586, 784, 976, - 413, 825, 928, - 0, 875, 853, - 0, 935, 729, - 0, 1004, 483, - 0, 1082, 0, - 0, 1170, 0, - 0, 1265, 0, - 0, 1368, 0, - 0, 1477, 0, - 0, 1591, 0, - 0, 1709, 0, - 0, 1830, 0, - 0, 1954, 0, - 0, 2080, 0, - 0, 2207, 0, - 0, 2335, 0, - 0, 2465, 0, - 0, 2595, 0, - 0, 2725, 0, - 0, 2856, 0, - 0, 2988, 0, - 0, 3119, 0, - 0, 3251, 0, - 0, 3382, 0, - 0, 3514, 0, - 0, 3646, 0, - 1029, 697, 1140, - 1016, 709, 1133, - 998, 725, 1122, - 973, 745, 1108, - 938, 771, 1089, - 885, 803, 1061, - 804, 843, 1021, - 666, 891, 961, - 375, 949, 866, - 0, 1016, 698, - 0, 1093, 282, - 0, 1178, 0, - 0, 1272, 0, - 0, 1374, 0, - 0, 1481, 0, - 0, 1594, 0, - 0, 1711, 0, - 0, 1832, 0, - 0, 1955, 0, - 0, 2081, 0, - 0, 2208, 0, - 0, 2336, 0, - 0, 2465, 0, - 0, 2595, 0, - 0, 2726, 0, - 0, 2857, 0, - 0, 2988, 0, - 0, 3119, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3514, 0, - 0, 3646, 0, - 1204, 728, 1220, - 1195, 739, 1213, - 1183, 754, 1205, - 1167, 773, 1193, - 1144, 797, 1176, - 1111, 828, 1154, - 1064, 866, 1121, - 991, 912, 1074, - 872, 967, 1002, - 637, 1032, 883, - 0, 1106, 652, - 0, 1189, 0, - 0, 1281, 0, - 0, 1381, 0, - 0, 1487, 0, - 0, 1599, 0, - 0, 1715, 0, - 0, 1835, 0, - 0, 1957, 0, - 0, 2082, 0, - 0, 2209, 0, - 0, 2337, 0, - 0, 2466, 0, - 0, 2596, 0, - 0, 2726, 0, - 0, 2857, 0, - 0, 2988, 0, - 0, 3119, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3514, 0, - 0, 3646, 0, - 1366, 766, 1308, - 1360, 777, 1302, - 1352, 790, 1295, - 1340, 808, 1286, - 1325, 830, 1272, - 1303, 859, 1254, - 1272, 894, 1228, - 1228, 938, 1191, - 1161, 990, 1137, - 1052, 1052, 1052, - 847, 1123, 905, - 195, 1203, 583, - 0, 1293, 0, - 0, 1390, 0, - 0, 1494, 0, - 0, 1604, 0, - 0, 1719, 0, - 0, 1838, 0, - 0, 1960, 0, - 0, 2084, 0, - 0, 2210, 0, - 0, 2338, 0, - 0, 2467, 0, - 0, 2596, 0, - 0, 2727, 0, - 0, 2857, 0, - 0, 2988, 0, - 0, 3120, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3514, 0, - 0, 3646, 0, - 1519, 813, 1404, - 1515, 822, 1399, - 1509, 834, 1394, - 1501, 850, 1386, - 1490, 871, 1375, - 1475, 897, 1361, - 1454, 930, 1341, - 1425, 970, 1312, - 1383, 1019, 1271, - 1319, 1077, 1209, - 1216, 1145, 1110, - 1029, 1222, 933, - 509, 1308, 469, - 0, 1402, 0, - 0, 1504, 0, - 0, 1612, 0, - 0, 1725, 0, - 0, 1843, 0, - 0, 1963, 0, - 0, 2087, 0, - 0, 2213, 0, - 0, 2340, 0, - 0, 2468, 0, - 0, 2597, 0, - 0, 2727, 0, - 0, 2858, 0, - 0, 2989, 0, - 0, 3120, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3646, 0, - 1666, 868, 1507, - 1663, 877, 1504, - 1659, 888, 1499, - 1653, 902, 1493, - 1645, 920, 1484, - 1635, 944, 1473, - 1620, 973, 1457, - 1600, 1010, 1435, - 1572, 1055, 1404, - 1531, 1109, 1359, - 1469, 1172, 1290, - 1372, 1245, 1179, - 1196, 1327, 967, - 741, 1418, 252, - 0, 1517, 0, - 0, 1622, 0, - 0, 1733, 0, - 0, 1849, 0, - 0, 1968, 0, - 0, 2091, 0, - 0, 2215, 0, - 0, 2342, 0, - 0, 2470, 0, - 0, 2598, 0, - 0, 2728, 0, - 0, 2858, 0, - 0, 2989, 0, - 0, 3120, 0, - 0, 3252, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3647, 0, - 1809, 933, 1616, - 1807, 941, 1613, - 1804, 950, 1610, - 1800, 963, 1605, - 1794, 979, 1599, - 1787, 999, 1590, - 1776, 1026, 1578, - 1762, 1059, 1561, - 1742, 1099, 1537, - 1715, 1148, 1504, - 1675, 1207, 1455, - 1615, 1275, 1381, - 1520, 1352, 1257, - 1352, 1439, 1010, - 936, 1533, 0, - 0, 1635, 0, - 0, 1743, 0, - 0, 1857, 0, - 0, 1974, 0, - 0, 2095, 0, - 0, 2219, 0, - 0, 2344, 0, - 0, 2472, 0, - 0, 2600, 0, - 0, 2729, 0, - 0, 2859, 0, - 0, 2990, 0, - 0, 3121, 0, - 0, 3252, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3647, 0, - 1949, 1008, 1730, - 1948, 1014, 1728, - 1946, 1022, 1725, - 1943, 1033, 1722, - 1938, 1047, 1717, - 1933, 1065, 1710, - 1925, 1088, 1701, - 1915, 1116, 1688, - 1901, 1152, 1670, - 1882, 1196, 1646, - 1855, 1249, 1610, - 1815, 1312, 1559, - 1757, 1383, 1479, - 1664, 1465, 1344, - 1501, 1555, 1061, - 1110, 1652, 0, - 0, 1757, 0, - 0, 1867, 0, - 0, 1983, 0, - 0, 2102, 0, - 0, 2224, 0, - 0, 2348, 0, - 0, 2474, 0, - 0, 2602, 0, - 0, 2731, 0, - 0, 2860, 0, - 0, 2991, 0, - 0, 3121, 0, - 0, 3252, 0, - 0, 3384, 0, - 0, 3515, 0, - 0, 3647, 0, - 2087, 1092, 1849, - 2086, 1097, 1847, - 2085, 1104, 1845, - 2082, 1113, 1842, - 2079, 1124, 1838, - 2075, 1140, 1833, - 2070, 1159, 1826, - 2062, 1184, 1816, - 2052, 1215, 1803, - 2039, 1254, 1785, - 2019, 1300, 1759, - 1992, 1357, 1722, - 1954, 1422, 1668, - 1896, 1497, 1584, - 1805, 1581, 1439, - 1646, 1674, 1121, - 1271, 1774, 0, - 0, 1881, 0, - 0, 1993, 0, - 0, 2110, 0, - 0, 2230, 0, - 0, 2353, 0, - 0, 2478, 0, - 0, 2605, 0, - 0, 2733, 0, - 0, 2862, 0, - 0, 2992, 0, - 0, 3122, 0, - 0, 3253, 0, - 0, 3384, 0, - 0, 3516, 0, - 0, 3647, 0, - 2224, 1184, 1970, - 2223, 1189, 1969, - 2222, 1194, 1967, - 2220, 1201, 1965, - 2218, 1211, 1962, - 2215, 1224, 1958, - 2211, 1240, 1953, - 2206, 1261, 1945, - 2198, 1287, 1936, - 2188, 1320, 1922, - 2175, 1361, 1903, - 2156, 1410, 1877, - 2129, 1469, 1839, - 2090, 1537, 1782, - 2033, 1615, 1694, - 1944, 1702, 1541, - 1787, 1797, 1191, - 1424, 1899, 0, - 0, 2007, 0, - 0, 2121, 0, - 0, 2238, 0, - 0, 2359, 0, - 0, 2483, 0, - 0, 2608, 0, - 0, 2736, 0, - 0, 2864, 0, - 0, 2993, 0, - 0, 3123, 0, - 0, 3254, 0, - 0, 3385, 0, - 0, 3516, 0, - 0, 3648, 0, - 2359, 1284, 2094, - 2359, 1288, 2093, - 2358, 1292, 2092, - 2357, 1298, 2090, - 2355, 1306, 2088, - 2353, 1316, 2085, - 2350, 1329, 2081, - 2346, 1346, 2075, - 2340, 1368, 2068, - 2333, 1396, 2058, - 2323, 1431, 2044, - 2309, 1474, 2025, - 2291, 1525, 1998, - 2264, 1586, 1959, - 2226, 1656, 1901, - 2169, 1736, 1810, - 2080, 1825, 1649, - 1926, 1921, 1271, - 1571, 2025, 0, - 0, 2135, 0, - 0, 2249, 0, - 0, 2368, 0, - 0, 2489, 0, - 0, 2613, 0, - 0, 2739, 0, - 0, 2867, 0, - 0, 2995, 0, - 0, 3125, 0, - 0, 3255, 0, - 0, 3386, 0, - 0, 3517, 0, - 0, 3648, 0, - 2494, 1391, 2220, - 2493, 1393, 2219, - 2493, 1397, 2218, - 2492, 1402, 2217, - 2491, 1408, 2215, - 2489, 1416, 2213, - 2487, 1427, 2210, - 2484, 1441, 2206, - 2480, 1459, 2200, - 2474, 1482, 2193, - 2467, 1511, 2183, - 2457, 1547, 2168, - 2444, 1591, 2149, - 2425, 1644, 2121, - 2398, 1706, 2082, - 2361, 1779, 2022, - 2304, 1860, 1929, - 2216, 1950, 1763, - 2063, 2048, 1359, - 1714, 2153, 0, - 0, 2263, 0, - 0, 2378, 0, - 0, 2498, 0, - 0, 2620, 0, - 0, 2744, 0, - 0, 2871, 0, - 0, 2998, 0, - 0, 3127, 0, - 0, 3257, 0, - 0, 3387, 0, - 0, 3518, 0, - 0, 3649, 0, - 2628, 1503, 2347, - 2627, 1505, 2347, - 2627, 1508, 2346, - 2626, 1511, 2345, - 2625, 1516, 2344, - 2624, 1523, 2342, - 2622, 1531, 2340, - 2620, 1542, 2337, - 2617, 1557, 2333, - 2613, 1575, 2327, - 2608, 1599, 2319, - 2601, 1629, 2309, - 2591, 1666, 2295, - 2577, 1711, 2275, - 2559, 1766, 2247, - 2532, 1830, 2207, - 2495, 1903, 2146, - 2438, 1986, 2051, - 2351, 2077, 1881, - 2199, 2176, 1456, - 1853, 2281, 0, - 0, 2393, 0, - 0, 2509, 0, - 0, 2628, 0, - 0, 2751, 0, - 0, 2875, 0, - 0, 3002, 0, - 0, 3130, 0, - 0, 3259, 0, - 0, 3388, 0, - 0, 3519, 0, - 0, 3650, 0, - 2761, 1619, 2476, - 2761, 1621, 2476, - 2760, 1623, 2475, - 2760, 1626, 2474, - 2759, 1630, 2473, - 2758, 1635, 2472, - 2757, 1641, 2470, - 2756, 1650, 2468, - 2753, 1661, 2465, - 2750, 1676, 2461, - 2747, 1695, 2455, - 2741, 1720, 2447, - 2734, 1750, 2437, - 2724, 1788, 2422, - 2711, 1835, 2402, - 2692, 1890, 2374, - 2666, 1955, 2333, - 2628, 2029, 2272, - 2572, 2113, 2176, - 2485, 2205, 2002, - 2333, 2305, 1559, - 1991, 2411, 0, - 0, 2523, 0, - 0, 2639, 0, - 0, 2759, 0, - 0, 2882, 0, - 0, 3007, 0, - 0, 3134, 0, - 0, 3262, 0, - 0, 3391, 0, - 0, 3520, 0, - 0, 3651, 0, - 2894, 1739, 2605, - 2894, 1740, 2605, - 2894, 1742, 2605, - 2893, 1744, 2604, - 2893, 1747, 2603, - 2892, 1751, 2602, - 2891, 1756, 2601, - 2890, 1763, 2599, - 2888, 1772, 2597, - 2886, 1784, 2594, - 2883, 1799, 2590, - 2879, 1818, 2584, - 2874, 1843, 2576, - 2867, 1874, 2566, - 2857, 1913, 2551, - 2844, 1960, 2531, - 2825, 2016, 2502, - 2799, 2082, 2461, - 2761, 2157, 2400, - 2705, 2241, 2302, - 2618, 2334, 2125, - 2468, 2434, 1668, - 2128, 2541, 0, - 0, 2653, 0, - 0, 2770, 0, - 0, 2890, 0, - 0, 3013, 0, - 0, 3138, 0, - 0, 3265, 0, - 0, 3393, 0, - 0, 3522, 0, - 0, 3652, 0, - 3027, 1862, 2735, - 3027, 1863, 2735, - 3027, 1864, 2735, - 3026, 1866, 2735, - 3026, 1868, 2734, - 3026, 1871, 2733, - 3025, 1875, 2732, - 3024, 1880, 2731, - 3023, 1887, 2729, - 3021, 1896, 2727, - 3019, 1908, 2724, - 3016, 1924, 2720, - 3012, 1943, 2714, - 3007, 1969, 2706, - 3000, 2000, 2695, - 2990, 2039, 2681, - 2976, 2087, 2660, - 2958, 2144, 2632, - 2932, 2210, 2590, - 2894, 2286, 2528, - 2838, 2371, 2430, - 2752, 2464, 2251, - 2601, 2565, 1783, - 2263, 2672, 0, - 0, 2784, 0, - 0, 2901, 0, - 0, 3022, 0, - 0, 3145, 0, - 0, 3270, 0, - 0, 3397, 0, - 0, 3525, 0, - 0, 3654, 0, - 3160, 1987, 2866, - 3160, 1988, 2866, - 3159, 1989, 2866, - 3159, 1990, 2865, - 3159, 1992, 2865, - 3159, 1994, 2864, - 3158, 1997, 2864, - 3157, 2001, 2863, - 3157, 2006, 2861, - 3155, 2013, 2860, - 3154, 2023, 2857, - 3152, 2035, 2854, - 3149, 2050, 2850, - 3145, 2070, 2844, - 3139, 2096, 2836, - 3132, 2128, 2826, - 3122, 2167, 2811, - 3109, 2215, 2791, - 3090, 2272, 2762, - 3064, 2339, 2720, - 3027, 2415, 2658, - 2971, 2501, 2558, - 2884, 2594, 2378, - 2734, 2696, 1901, - 2397, 2803, 0, - 0, 2916, 0, - 0, 3033, 0, - 0, 3153, 0, - 0, 3277, 0, - 0, 3402, 0, - 0, 3529, 0, - 0, 3657, 0, - 3292, 2114, 2997, - 3292, 2114, 2997, - 3292, 2115, 2997, - 3292, 2116, 2997, - 3292, 2117, 2996, - 3291, 2119, 2996, - 3291, 2121, 2995, - 3291, 2124, 2995, - 3290, 2128, 2994, - 3289, 2134, 2992, - 3288, 2141, 2990, - 3286, 2150, 2988, - 3284, 2162, 2985, - 3281, 2178, 2981, - 3277, 2198, 2975, - 3272, 2224, 2967, - 3265, 2256, 2956, - 3255, 2296, 2942, - 3241, 2344, 2921, - 3223, 2402, 2892, - 3197, 2469, 2851, - 3159, 2546, 2788, - 3104, 2631, 2688, - 3017, 2725, 2507, - 2867, 2827, 2023, - 2531, 2934, 0, - 0, 3047, 0, - 0, 3164, 0, - 0, 3285, 0, - 0, 3408, 0, - 0, 3534, 0, - 0, 3661, 0, - 3425, 2242, 3128, - 3425, 2242, 3128, - 3425, 2243, 3128, - 3424, 2244, 3128, - 3424, 2245, 3128, - 3424, 2246, 3127, - 3424, 2248, 3127, - 3423, 2250, 3126, - 3423, 2253, 3126, - 3422, 2257, 3125, - 3421, 2262, 3123, - 3420, 2270, 3122, - 3418, 2279, 3119, - 3416, 2291, 3116, - 3413, 2307, 3112, - 3410, 2327, 3106, - 3404, 2353, 3098, - 3397, 2386, 3087, - 3387, 2426, 3073, - 3374, 2474, 3052, - 3355, 2532, 3023, - 3329, 2600, 2981, - 3292, 2676, 2919, - 3236, 2762, 2818, - 3150, 2856, 2636, - 3000, 2958, 2147, - 2665, 3066, 0, - 0, 3179, 0, - 0, 3296, 0, - 0, 3417, 0, - 0, 3540, 0, - 0, 3666, 0, - 3557, 2371, 3260, - 3557, 2371, 3260, - 3557, 2372, 3260, - 3557, 2372, 3259, - 3557, 2373, 3259, - 3557, 2374, 3259, - 3556, 2375, 3259, - 3556, 2377, 3258, - 3556, 2379, 3258, - 3555, 2382, 3257, - 3554, 2387, 3256, - 3554, 2392, 3255, - 3552, 2399, 3253, - 3551, 2409, 3251, - 3549, 2421, 3247, - 3546, 2437, 3243, - 3542, 2457, 3237, - 3537, 2483, 3230, - 3529, 2516, 3219, - 3520, 2556, 3204, - 3506, 2605, 3183, - 3488, 2663, 3154, - 3461, 2730, 3113, - 3424, 2807, 3050, - 3369, 2894, 2949, - 3282, 2988, 2766, - 3133, 3090, 2273, - 2798, 3197, 0, - 0, 3311, 0, - 0, 3428, 0, - 0, 3549, 0, - 0, 3672, 0, - 3689, 2501, 3391, - 3689, 2501, 3391, - 3689, 2501, 3391, - 3689, 2502, 3391, - 3689, 2502, 3391, - 3689, 2503, 3391, - 3689, 2504, 3391, - 3689, 2505, 3390, - 3688, 2507, 3390, - 3688, 2509, 3389, - 3687, 2513, 3389, - 3687, 2517, 3388, - 3686, 2522, 3386, - 3685, 2529, 3385, - 3683, 2539, 3382, - 3681, 2551, 3379, - 3678, 2567, 3375, - 3674, 2588, 3369, - 3669, 2614, 3361, - 3662, 2646, 3350, - 3652, 2687, 3336, - 3638, 2736, 3315, - 3620, 2794, 3286, - 3594, 2862, 3244, - 3556, 2939, 3181, - 3501, 3025, 3080, - 3414, 3119, 2897, - 3265, 3221, 2400, - 2931, 3329, 0, - 0, 3442, 0, - 0, 3560, 0, - 0, 3681, 0, - 3821, 2631, 3523, - 3821, 2631, 3523, - 3821, 2632, 3523, - 3821, 2632, 3523, - 3821, 2632, 3523, - 3821, 2633, 3523, - 3821, 2634, 3523, - 3821, 2635, 3522, - 3821, 2636, 3522, - 3820, 2638, 3522, - 3820, 2640, 3521, - 3820, 2643, 3520, - 3819, 2647, 3519, - 3818, 2653, 3518, - 3817, 2660, 3516, - 3815, 2669, 3514, - 3813, 2682, 3511, - 3810, 2698, 3506, - 3806, 2718, 3501, - 3801, 2745, 3493, - 3794, 2777, 3482, - 3784, 2818, 3467, - 3771, 2867, 3447, - 3752, 2925, 3418, - 3726, 2993, 3375, - 3689, 3070, 3312, - 3633, 3157, 3211, - 3547, 3251, 3028, - 3397, 3353, 2529, - 3063, 3461, 0, - 0, 3574, 0, - 0, 3692, 0, - 3954, 2762, 3655, - 3954, 2762, 3655, - 3954, 2762, 3655, - 3954, 2762, 3655, - 3954, 2763, 3655, - 3953, 2763, 3655, - 3953, 2764, 3655, - 3953, 2765, 3654, - 3953, 2766, 3654, - 3953, 2767, 3654, - 3953, 2769, 3653, - 3952, 2771, 3653, - 3952, 2774, 3652, - 3951, 2778, 3651, - 3950, 2784, 3650, - 3949, 2791, 3648, - 3947, 2800, 3646, - 3945, 2813, 3643, - 3942, 2829, 3638, - 3938, 2850, 3632, - 3933, 2876, 3625, - 3926, 2909, 3614, - 3916, 2949, 3599, - 3903, 2998, 3578, - 3884, 3057, 3549, - 3858, 3125, 3507, - 3821, 3202, 3444, - 3765, 3288, 3343, - 3679, 3383, 3159, - 3530, 3485, 2658, - 3196, 3593, 0, - 0, 3706, 0, - 4086, 2893, 3787, - 4086, 2893, 3787, - 4086, 2893, 3787, - 4086, 2893, 3787, - 4086, 2894, 3787, - 4086, 2894, 3787, - 4086, 2894, 3787, - 4086, 2895, 3786, - 4085, 2896, 3786, - 4085, 2897, 3786, - 4085, 2898, 3786, - 4085, 2900, 3785, - 4084, 2902, 3785, - 4084, 2905, 3784, - 4083, 2909, 3783, - 4082, 2915, 3782, - 4081, 2922, 3780, - 4080, 2932, 3778, - 4077, 2944, 3774, - 4074, 2960, 3770, - 4071, 2981, 3764, - 4065, 3007, 3756, - 4058, 3040, 3746, - 4048, 3081, 3731, - 4035, 3130, 3710, - 4016, 3188, 3681, - 3990, 3256, 3639, - 3953, 3334, 3576, - 3898, 3420, 3475, - 3811, 3515, 3290, - 3662, 3617, 2788, - 3328, 3725, 0, - 4095, 3024, 3919, - 4095, 3025, 3919, - 4095, 3025, 3919, - 4095, 3025, 3919, - 4095, 3025, 3919, - 4095, 3025, 3919, - 4095, 3025, 3919, - 4095, 3026, 3918, - 4095, 3026, 3918, - 4095, 3027, 3918, - 4095, 3028, 3918, - 4095, 3030, 3918, - 4095, 3031, 3917, - 4095, 3034, 3917, - 4095, 3037, 3916, - 4095, 3041, 3915, - 4095, 3046, 3914, - 4095, 3054, 3912, - 4095, 3063, 3910, - 4095, 3076, 3906, - 4095, 3092, 3902, - 4095, 3113, 3896, - 4095, 3139, 3888, - 4095, 3172, 3878, - 4095, 3212, 3863, - 4095, 3262, 3842, - 4095, 3320, 3813, - 4095, 3388, 3771, - 4085, 3466, 3708, - 4030, 3552, 3606, - 3943, 3647, 3422, - 3794, 3749, 2919, - 4095, 3156, 4051, - 4095, 3156, 4051, - 4095, 3156, 4051, - 4095, 3156, 4051, - 4095, 3156, 4051, - 4095, 3157, 4051, - 4095, 3157, 4051, - 4095, 3157, 4051, - 4095, 3158, 4050, - 4095, 3158, 4050, - 4095, 3159, 4050, - 4095, 3160, 4050, - 4095, 3161, 4050, - 4095, 3163, 4049, - 4095, 3165, 4049, - 4095, 3168, 4048, - 4095, 3173, 4047, - 4095, 3178, 4046, - 4095, 3185, 4044, - 4095, 3195, 4041, - 4095, 3207, 4038, - 4095, 3224, 4034, - 4095, 3244, 4028, - 4095, 3271, 4020, - 4095, 3304, 4009, - 4095, 3344, 3995, - 4095, 3393, 3974, - 4095, 3452, 3945, - 4095, 3520, 3903, - 4095, 3597, 3839, - 4095, 3684, 3738, - 4076, 3779, 3554, - 0, 723, 961, - 0, 734, 949, - 0, 749, 934, - 0, 769, 912, - 0, 793, 881, - 0, 824, 837, - 0, 862, 769, - 0, 908, 660, - 0, 964, 453, - 0, 1029, 0, - 0, 1104, 0, - 0, 1187, 0, - 0, 1280, 0, - 0, 1380, 0, - 0, 1486, 0, - 0, 1598, 0, - 0, 1714, 0, - 0, 1834, 0, - 0, 1957, 0, - 0, 2082, 0, - 0, 2209, 0, - 0, 2337, 0, - 0, 2466, 0, - 0, 2596, 0, - 0, 2726, 0, - 0, 2857, 0, - 0, 2988, 0, - 0, 3119, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3514, 0, - 0, 3646, 0, - 0, 727, 977, - 0, 738, 966, - 0, 753, 951, - 0, 772, 930, - 0, 796, 901, - 0, 827, 858, - 0, 865, 794, - 0, 911, 691, - 0, 966, 502, - 0, 1031, 0, - 0, 1105, 0, - 0, 1189, 0, - 0, 1281, 0, - 0, 1380, 0, - 0, 1487, 0, - 0, 1598, 0, - 0, 1715, 0, - 0, 1835, 0, - 0, 1957, 0, - 0, 2082, 0, - 0, 2209, 0, - 0, 2337, 0, - 0, 2466, 0, - 0, 2596, 0, - 0, 2726, 0, - 0, 2857, 0, - 0, 2988, 0, - 0, 3119, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3514, 0, - 0, 3646, 0, - 0, 732, 998, - 0, 743, 988, - 0, 758, 974, - 0, 777, 954, - 0, 801, 926, - 0, 831, 886, - 0, 869, 825, - 0, 915, 730, - 0, 969, 560, - 0, 1034, 134, - 0, 1108, 0, - 0, 1191, 0, - 0, 1282, 0, - 0, 1382, 0, - 0, 1488, 0, - 0, 1599, 0, - 0, 1715, 0, - 0, 1835, 0, - 0, 1958, 0, - 0, 2082, 0, - 0, 2209, 0, - 0, 2337, 0, - 0, 2466, 0, - 0, 2596, 0, - 0, 2726, 0, - 0, 2857, 0, - 0, 2988, 0, - 0, 3119, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3514, 0, - 0, 3646, 0, - 0, 739, 1025, - 0, 750, 1015, - 0, 764, 1002, - 0, 783, 983, - 0, 807, 957, - 0, 837, 920, - 0, 874, 864, - 0, 919, 777, - 0, 973, 627, - 0, 1037, 289, - 0, 1111, 0, - 0, 1193, 0, - 0, 1284, 0, - 0, 1383, 0, - 0, 1489, 0, - 0, 1600, 0, - 0, 1716, 0, - 0, 1836, 0, - 0, 1958, 0, - 0, 2083, 0, - 0, 2209, 0, - 0, 2337, 0, - 0, 2466, 0, - 0, 2596, 0, - 0, 2726, 0, - 0, 2857, 0, - 0, 2988, 0, - 0, 3119, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3514, 0, - 0, 3646, 0, - 0, 748, 1059, - 0, 759, 1050, - 0, 773, 1037, - 0, 791, 1020, - 0, 815, 996, - 0, 844, 962, - 0, 880, 911, - 0, 925, 834, - 0, 979, 704, - 0, 1042, 438, - 0, 1115, 0, - 0, 1197, 0, - 0, 1287, 0, - 0, 1386, 0, - 0, 1491, 0, - 0, 1602, 0, - 0, 1717, 0, - 0, 1836, 0, - 0, 1959, 0, - 0, 2083, 0, - 0, 2210, 0, - 0, 2338, 0, - 0, 2466, 0, - 0, 2596, 0, - 0, 2726, 0, - 0, 2857, 0, - 0, 2988, 0, - 0, 3119, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3514, 0, - 0, 3646, 0, - 450, 760, 1100, - 403, 770, 1092, - 330, 784, 1080, - 210, 802, 1065, - 0, 825, 1043, - 0, 853, 1012, - 0, 889, 967, - 0, 933, 900, - 0, 986, 790, - 0, 1048, 582, - 0, 1120, 0, - 0, 1201, 0, - 0, 1291, 0, - 0, 1388, 0, - 0, 1493, 0, - 0, 1603, 0, - 0, 1718, 0, - 0, 1837, 0, - 0, 1960, 0, - 0, 2084, 0, - 0, 2210, 0, - 0, 2338, 0, - 0, 2467, 0, - 0, 2596, 0, - 0, 2726, 0, - 0, 2857, 0, - 0, 2988, 0, - 0, 3120, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3514, 0, - 0, 3646, 0, - 751, 775, 1150, - 727, 785, 1143, - 693, 799, 1132, - 643, 816, 1119, - 566, 838, 1099, - 437, 866, 1072, - 175, 901, 1033, - 0, 944, 975, - 0, 995, 884, - 0, 1056, 723, - 0, 1127, 342, - 0, 1207, 0, - 0, 1296, 0, - 0, 1392, 0, - 0, 1496, 0, - 0, 1606, 0, - 0, 1720, 0, - 0, 1839, 0, - 0, 1961, 0, - 0, 2085, 0, - 0, 2211, 0, - 0, 2338, 0, - 0, 2467, 0, - 0, 2597, 0, - 0, 2727, 0, - 0, 2857, 0, - 0, 2988, 0, - 0, 3120, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3514, 0, - 0, 3646, 0, - 978, 795, 1209, - 964, 805, 1203, - 944, 817, 1194, - 916, 834, 1182, - 875, 855, 1165, - 814, 882, 1142, - 718, 916, 1108, - 545, 957, 1060, - 108, 1008, 985, - 0, 1067, 862, - 0, 1136, 615, - 0, 1215, 0, - 0, 1302, 0, - 0, 1397, 0, - 0, 1500, 0, - 0, 1609, 0, - 0, 1723, 0, - 0, 1841, 0, - 0, 1962, 0, - 0, 2086, 0, - 0, 2212, 0, - 0, 2339, 0, - 0, 2468, 0, - 0, 2597, 0, - 0, 2727, 0, - 0, 2858, 0, - 0, 2988, 0, - 0, 3120, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3646, 0, - 1170, 820, 1278, - 1161, 829, 1273, - 1148, 841, 1265, - 1130, 857, 1255, - 1105, 877, 1240, - 1070, 903, 1221, - 1017, 935, 1193, - 936, 975, 1153, - 798, 1023, 1093, - 507, 1081, 998, - 0, 1148, 830, - 0, 1225, 414, - 0, 1310, 0, - 0, 1404, 0, - 0, 1506, 0, - 0, 1613, 0, - 0, 1726, 0, - 0, 1843, 0, - 0, 1964, 0, - 0, 2087, 0, - 0, 2213, 0, - 0, 2340, 0, - 0, 2468, 0, - 0, 2597, 0, - 0, 2727, 0, - 0, 2858, 0, - 0, 2989, 0, - 0, 3120, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3646, 0, - 1343, 851, 1356, - 1336, 860, 1352, - 1327, 871, 1345, - 1316, 886, 1337, - 1299, 905, 1325, - 1276, 929, 1308, - 1244, 960, 1286, - 1196, 998, 1253, - 1123, 1044, 1206, - 1004, 1099, 1134, - 769, 1164, 1015, - 0, 1238, 784, - 0, 1321, 0, - 0, 1413, 0, - 0, 1513, 0, - 0, 1619, 0, - 0, 1731, 0, - 0, 1847, 0, - 0, 1967, 0, - 0, 2089, 0, - 0, 2214, 0, - 0, 2341, 0, - 0, 2469, 0, - 0, 2598, 0, - 0, 2728, 0, - 0, 2858, 0, - 0, 2989, 0, - 0, 3120, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3646, 0, - 1502, 890, 1444, - 1498, 898, 1440, - 1492, 909, 1434, - 1484, 922, 1427, - 1472, 940, 1418, - 1457, 962, 1404, - 1435, 991, 1386, - 1405, 1026, 1360, - 1360, 1070, 1323, - 1293, 1122, 1269, - 1184, 1184, 1184, - 979, 1255, 1037, - 327, 1335, 715, - 0, 1425, 0, - 0, 1522, 0, - 0, 1626, 0, - 0, 1736, 0, - 0, 1851, 0, - 0, 1970, 0, - 0, 2092, 0, - 0, 2216, 0, - 0, 2343, 0, - 0, 2470, 0, - 0, 2599, 0, - 0, 2728, 0, - 0, 2859, 0, - 0, 2989, 0, - 0, 3120, 0, - 0, 3252, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3647, 0, - 1654, 938, 1539, - 1651, 945, 1536, - 1647, 954, 1532, - 1641, 967, 1526, - 1633, 982, 1518, - 1622, 1003, 1507, - 1607, 1029, 1493, - 1586, 1062, 1473, - 1557, 1102, 1444, - 1515, 1151, 1403, - 1451, 1209, 1341, - 1349, 1277, 1243, - 1161, 1354, 1065, - 641, 1440, 601, - 0, 1534, 0, - 0, 1636, 0, - 0, 1744, 0, - 0, 1857, 0, - 0, 1975, 0, - 0, 2096, 0, - 0, 2219, 0, - 0, 2345, 0, - 0, 2472, 0, - 0, 2600, 0, - 0, 2729, 0, - 0, 2859, 0, - 0, 2990, 0, - 0, 3121, 0, - 0, 3252, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3647, 0, - 1801, 994, 1642, - 1798, 1000, 1639, - 1795, 1009, 1636, - 1791, 1020, 1631, - 1785, 1034, 1625, - 1778, 1052, 1617, - 1767, 1076, 1605, - 1752, 1105, 1589, - 1732, 1142, 1567, - 1704, 1187, 1536, - 1663, 1241, 1491, - 1601, 1304, 1423, - 1504, 1377, 1311, - 1328, 1459, 1099, - 874, 1550, 384, - 0, 1649, 0, - 0, 1754, 0, - 0, 1865, 0, - 0, 1981, 0, - 0, 2100, 0, - 0, 2223, 0, - 0, 2347, 0, - 0, 2474, 0, - 0, 2602, 0, - 0, 2731, 0, - 0, 2860, 0, - 0, 2990, 0, - 0, 3121, 0, - 0, 3252, 0, - 0, 3384, 0, - 0, 3515, 0, - 0, 3647, 0, - 1943, 1060, 1750, - 1941, 1066, 1748, - 1939, 1073, 1746, - 1936, 1082, 1742, - 1932, 1095, 1737, - 1926, 1111, 1731, - 1919, 1132, 1722, - 1908, 1158, 1710, - 1894, 1191, 1693, - 1874, 1231, 1670, - 1847, 1281, 1636, - 1807, 1339, 1587, - 1747, 1407, 1513, - 1652, 1484, 1389, - 1484, 1571, 1142, - 1068, 1665, 0, - 0, 1767, 0, - 0, 1876, 0, - 0, 1989, 0, - 0, 2106, 0, - 0, 2227, 0, - 0, 2351, 0, - 0, 2477, 0, - 0, 2604, 0, - 0, 2732, 0, - 0, 2861, 0, - 0, 2991, 0, - 0, 3122, 0, - 0, 3253, 0, - 0, 3384, 0, - 0, 3515, 0, - 0, 3647, 0, - 2083, 1136, 1864, - 2082, 1140, 1862, - 2080, 1146, 1860, - 2078, 1155, 1858, - 2075, 1165, 1854, - 2071, 1179, 1849, - 2065, 1197, 1842, - 2058, 1220, 1833, - 2047, 1249, 1820, - 2033, 1284, 1802, - 2014, 1328, 1778, - 1987, 1381, 1743, - 1947, 1444, 1691, - 1889, 1516, 1611, - 1796, 1597, 1476, - 1633, 1687, 1193, - 1242, 1784, 0, - 0, 1889, 0, - 0, 1999, 0, - 0, 2115, 0, - 0, 2234, 0, - 0, 2356, 0, - 0, 2480, 0, - 0, 2606, 0, - 0, 2734, 0, - 0, 2863, 0, - 0, 2993, 0, - 0, 3123, 0, - 0, 3253, 0, - 0, 3385, 0, - 0, 3516, 0, - 0, 3647, 0, - 2221, 1220, 1982, - 2220, 1224, 1981, - 2218, 1229, 1979, - 2217, 1236, 1977, - 2214, 1245, 1974, - 2211, 1257, 1970, - 2207, 1272, 1965, - 2202, 1291, 1958, - 2195, 1316, 1948, - 2185, 1347, 1935, - 2171, 1386, 1917, - 2151, 1433, 1891, - 2124, 1489, 1854, - 2086, 1554, 1800, - 2028, 1629, 1716, - 1937, 1713, 1571, - 1778, 1806, 1253, - 1403, 1906, 0, - 0, 2013, 0, - 0, 2125, 0, - 0, 2242, 0, - 0, 2362, 0, - 0, 2485, 0, - 0, 2610, 0, - 0, 2737, 0, - 0, 2865, 0, - 0, 2994, 0, - 0, 3124, 0, - 0, 3254, 0, - 0, 3385, 0, - 0, 3516, 0, - 0, 3648, 0, - 2357, 1313, 2103, - 2356, 1316, 2102, - 2355, 1321, 2101, - 2354, 1326, 2099, - 2352, 1334, 2097, - 2350, 1343, 2094, - 2347, 1356, 2090, - 2343, 1372, 2085, - 2338, 1393, 2078, - 2330, 1419, 2068, - 2320, 1452, 2054, - 2307, 1493, 2035, - 2288, 1543, 2009, - 2261, 1601, 1971, - 2222, 1669, 1915, - 2165, 1747, 1826, - 2076, 1834, 1673, - 1919, 1929, 1323, - 1556, 2031, 0, - 0, 2139, 0, - 0, 2253, 0, - 0, 2370, 0, - 0, 2491, 0, - 0, 2615, 0, - 0, 2741, 0, - 0, 2868, 0, - 0, 2996, 0, - 0, 3126, 0, - 0, 3256, 0, - 0, 3386, 0, - 0, 3517, 0, - 0, 3648, 0, - 2492, 1414, 2227, - 2491, 1416, 2226, - 2491, 1420, 2225, - 2490, 1424, 2224, - 2489, 1430, 2222, - 2487, 1438, 2220, - 2485, 1448, 2217, - 2482, 1461, 2213, - 2478, 1479, 2208, - 2472, 1501, 2200, - 2465, 1528, 2190, - 2455, 1563, 2176, - 2442, 1606, 2157, - 2423, 1657, 2130, - 2396, 1718, 2091, - 2358, 1788, 2033, - 2301, 1868, 1942, - 2213, 1957, 1782, - 2058, 2053, 1403, - 1703, 2157, 0, - 0, 2267, 0, - 0, 2381, 0, - 0, 2500, 0, - 0, 2621, 0, - 0, 2745, 0, - 0, 2871, 0, - 0, 2999, 0, - 0, 3128, 0, - 0, 3257, 0, - 0, 3387, 0, - 0, 3518, 0, - 0, 3649, 0, - 2626, 1521, 2353, - 2626, 1523, 2352, - 2625, 1526, 2351, - 2625, 1529, 2350, - 2624, 1534, 2349, - 2623, 1540, 2347, - 2621, 1548, 2345, - 2619, 1559, 2342, - 2616, 1573, 2338, - 2612, 1591, 2332, - 2607, 1614, 2325, - 2599, 1643, 2315, - 2589, 1679, 2301, - 2576, 1723, 2281, - 2557, 1776, 2253, - 2531, 1839, 2214, - 2493, 1911, 2154, - 2436, 1992, 2061, - 2348, 2082, 1895, - 2195, 2180, 1491, - 1846, 2285, 0, - 0, 2395, 0, - 0, 2511, 0, - 0, 2630, 0, - 0, 2752, 0, - 0, 2876, 0, - 0, 3003, 0, - 0, 3130, 0, - 0, 3259, 0, - 0, 3389, 0, - 0, 3519, 0, - 0, 3650, 0, - 2760, 1633, 2480, - 2760, 1635, 2479, - 2759, 1637, 2479, - 2759, 1640, 2478, - 2758, 1643, 2477, - 2757, 1648, 2476, - 2756, 1655, 2474, - 2755, 1663, 2472, - 2752, 1674, 2469, - 2749, 1689, 2465, - 2745, 1707, 2459, - 2740, 1731, 2451, - 2733, 1761, 2441, - 2723, 1798, 2427, - 2710, 1843, 2407, - 2691, 1898, 2379, - 2664, 1962, 2339, - 2627, 2035, 2278, - 2571, 2118, 2183, - 2483, 2209, 2013, - 2331, 2308, 1588, - 1986, 2414, 0, - 0, 2525, 0, - 0, 2641, 0, - 0, 2760, 0, - 0, 2883, 0, - 0, 3007, 0, - 0, 3134, 0, - 0, 3262, 0, - 0, 3391, 0, - 0, 3521, 0, - 0, 3651, 0, - 2893, 1750, 2608, - 2893, 1751, 2608, - 2893, 1753, 2608, - 2893, 1755, 2607, - 2892, 1758, 2606, - 2891, 1762, 2605, - 2891, 1767, 2604, - 2889, 1773, 2602, - 2888, 1782, 2600, - 2886, 1793, 2597, - 2883, 1808, 2593, - 2879, 1827, 2587, - 2873, 1852, 2579, - 2866, 1882, 2569, - 2856, 1920, 2554, - 2843, 1967, 2534, - 2824, 2022, 2506, - 2798, 2087, 2465, - 2760, 2161, 2404, - 2704, 2245, 2308, - 2617, 2337, 2134, - 2465, 2437, 1691, - 2123, 2543, 0, - 0, 2655, 0, - 0, 2771, 0, - 0, 2891, 0, - 0, 3014, 0, - 0, 3139, 0, - 0, 3266, 0, - 0, 3394, 0, - 0, 3523, 0, - 0, 3652, 0, - 3026, 1870, 2738, - 3026, 1871, 2737, - 3026, 1873, 2737, - 3026, 1874, 2737, - 3025, 1876, 2736, - 3025, 1879, 2735, - 3024, 1883, 2735, - 3023, 1888, 2733, - 3022, 1895, 2732, - 3021, 1904, 2729, - 3018, 1916, 2726, - 3015, 1931, 2722, - 3012, 1950, 2716, - 3006, 1975, 2708, - 2999, 2006, 2698, - 2989, 2045, 2683, - 2976, 2092, 2663, - 2957, 2148, 2635, - 2931, 2214, 2593, - 2893, 2289, 2532, - 2838, 2373, 2434, - 2750, 2466, 2258, - 2600, 2567, 1800, - 2260, 2673, 0, - 0, 2786, 0, - 0, 2902, 0, - 0, 3022, 0, - 0, 3145, 0, - 0, 3270, 0, - 0, 3397, 0, - 0, 3525, 0, - 0, 3655, 0, - 3159, 1993, 2868, - 3159, 1994, 2868, - 3159, 1995, 2867, - 3159, 1996, 2867, - 3159, 1998, 2867, - 3158, 2000, 2866, - 3158, 2003, 2865, - 3157, 2007, 2864, - 3156, 2012, 2863, - 3155, 2019, 2861, - 3153, 2028, 2859, - 3151, 2040, 2856, - 3148, 2056, 2852, - 3144, 2075, 2846, - 3139, 2101, 2838, - 3132, 2132, 2827, - 3122, 2172, 2813, - 3109, 2219, 2793, - 3090, 2276, 2764, - 3064, 2342, 2723, - 3026, 2418, 2661, - 2971, 2503, 2562, - 2884, 2596, 2383, - 2733, 2697, 1915, - 2395, 2804, 0, - 0, 2917, 0, - 0, 3033, 0, - 0, 3154, 0, - 0, 3277, 0, - 0, 3402, 0, - 0, 3529, 0, - 0, 3657, 0, - 3292, 2119, 2998, - 3292, 2119, 2998, - 3292, 2120, 2998, - 3292, 2121, 2998, - 3291, 2122, 2997, - 3291, 2124, 2997, - 3291, 2126, 2997, - 3290, 2129, 2996, - 3290, 2133, 2995, - 3289, 2138, 2994, - 3287, 2145, 2992, - 3286, 2155, 2989, - 3284, 2167, 2986, - 3281, 2182, 2982, - 3277, 2202, 2976, - 3272, 2228, 2968, - 3264, 2260, 2958, - 3255, 2299, 2943, - 3241, 2347, 2923, - 3222, 2405, 2894, - 3196, 2471, 2852, - 3159, 2548, 2790, - 3103, 2633, 2691, - 3017, 2727, 2510, - 2866, 2828, 2033, - 2530, 2935, 0, - 0, 3048, 0, - 0, 3165, 0, - 0, 3285, 0, - 0, 3409, 0, - 0, 3534, 0, - 0, 3661, 0, - 3424, 2246, 3129, - 3424, 2246, 3129, - 3424, 2246, 3129, - 3424, 2247, 3129, - 3424, 2248, 3129, - 3424, 2249, 3128, - 3424, 2251, 3128, - 3423, 2253, 3127, - 3423, 2257, 3127, - 3422, 2261, 3126, - 3421, 2266, 3124, - 3420, 2273, 3123, - 3418, 2282, 3120, - 3416, 2294, 3117, - 3413, 2310, 3113, - 3409, 2330, 3107, - 3404, 2356, 3099, - 3397, 2388, 3088, - 3387, 2428, 3074, - 3374, 2477, 3053, - 3355, 2534, 3024, - 3329, 2601, 2983, - 3291, 2678, 2920, - 3236, 2763, 2820, - 3149, 2857, 2639, - 2999, 2959, 2155, - 2663, 3066, 0, - 0, 3179, 0, - 0, 3297, 0, - 0, 3417, 0, - 0, 3540, 0, - 0, 3666, 0, - 3557, 2374, 3260, - 3557, 2374, 3260, - 3557, 2374, 3260, - 3557, 2375, 3260, - 3556, 2376, 3260, - 3556, 2377, 3260, - 3556, 2378, 3259, - 3556, 2380, 3259, - 3555, 2382, 3259, - 3555, 2385, 3258, - 3554, 2389, 3257, - 3553, 2395, 3255, - 3552, 2402, 3254, - 3551, 2411, 3251, - 3548, 2423, 3248, - 3546, 2439, 3244, - 3542, 2459, 3238, - 3536, 2485, 3230, - 3529, 2518, 3220, - 3519, 2558, 3205, - 3506, 2607, 3184, - 3487, 2664, 3155, - 3461, 2732, 3114, - 3424, 2808, 3051, - 3368, 2894, 2950, - 3282, 2989, 2768, - 3132, 3090, 2279, - 2797, 3198, 0, - 0, 3311, 0, - 0, 3428, 0, - 0, 3549, 0, - 0, 3672, 0, - 3689, 2503, 3392, - 3689, 2503, 3392, - 3689, 2503, 3392, - 3689, 2504, 3392, - 3689, 2504, 3392, - 3689, 2505, 3391, - 3689, 2506, 3391, - 3688, 2507, 3391, - 3688, 2509, 3390, - 3688, 2511, 3390, - 3687, 2515, 3389, - 3687, 2519, 3388, - 3686, 2524, 3387, - 3684, 2531, 3385, - 3683, 2541, 3383, - 3681, 2553, 3380, - 3678, 2569, 3375, - 3674, 2589, 3369, - 3669, 2615, 3362, - 3661, 2648, 3351, - 3652, 2688, 3336, - 3638, 2737, 3316, - 3620, 2795, 3287, - 3594, 2863, 3245, - 3556, 2940, 3182, - 3501, 3026, 3081, - 3414, 3120, 2898, - 3265, 3222, 2405, - 2930, 3330, 0, - 0, 3443, 0, - 0, 3560, 0, - 0, 3681, 0, - 3821, 2633, 3524, - 3821, 2633, 3523, - 3821, 2633, 3523, - 3821, 2633, 3523, - 3821, 2634, 3523, - 3821, 2634, 3523, - 3821, 2635, 3523, - 3821, 2636, 3523, - 3821, 2637, 3522, - 3820, 2639, 3522, - 3820, 2642, 3521, - 3819, 2645, 3521, - 3819, 2649, 3520, - 3818, 2654, 3518, - 3817, 2661, 3517, - 3815, 2671, 3514, - 3813, 2683, 3511, - 3810, 2699, 3507, - 3806, 2720, 3501, - 3801, 2746, 3493, - 3794, 2779, 3482, - 3784, 2819, 3468, - 3770, 2868, 3447, - 3752, 2926, 3418, - 3726, 2994, 3376, - 3688, 3071, 3313, - 3633, 3157, 3212, - 3547, 3252, 3029, - 3397, 3353, 2532, - 3063, 3461, 0, - 0, 3575, 0, - 0, 3692, 0, - 3954, 2763, 3655, - 3954, 2763, 3655, - 3954, 2763, 3655, - 3954, 2764, 3655, - 3953, 2764, 3655, - 3953, 2764, 3655, - 3953, 2765, 3655, - 3953, 2766, 3655, - 3953, 2767, 3654, - 3953, 2768, 3654, - 3953, 2770, 3654, - 3952, 2772, 3653, - 3952, 2775, 3652, - 3951, 2779, 3651, - 3950, 2785, 3650, - 3949, 2792, 3648, - 3947, 2802, 3646, - 3945, 2814, 3643, - 3942, 2830, 3639, - 3938, 2851, 3633, - 3933, 2877, 3625, - 3926, 2910, 3614, - 3916, 2950, 3599, - 3903, 2999, 3579, - 3884, 3057, 3550, - 3858, 3125, 3508, - 3821, 3202, 3444, - 3765, 3289, 3344, - 3679, 3383, 3160, - 3529, 3485, 2661, - 3195, 3593, 0, - 0, 3706, 0, - 4086, 2894, 3787, - 4086, 2894, 3787, - 4086, 2894, 3787, - 4086, 2894, 3787, - 4086, 2895, 3787, - 4086, 2895, 3787, - 4086, 2895, 3787, - 4085, 2896, 3787, - 4085, 2897, 3786, - 4085, 2898, 3786, - 4085, 2899, 3786, - 4085, 2901, 3786, - 4084, 2903, 3785, - 4084, 2906, 3784, - 4083, 2910, 3783, - 4082, 2916, 3782, - 4081, 2923, 3780, - 4079, 2933, 3778, - 4077, 2945, 3775, - 4074, 2961, 3770, - 4071, 2982, 3765, - 4065, 3008, 3757, - 4058, 3041, 3746, - 4048, 3081, 3731, - 4035, 3130, 3710, - 4016, 3189, 3681, - 3990, 3257, 3639, - 3953, 3334, 3576, - 3898, 3420, 3475, - 3811, 3515, 3291, - 3662, 3617, 2790, - 3328, 3725, 0, - 4095, 3025, 3919, - 4095, 3025, 3919, - 4095, 3025, 3919, - 4095, 3025, 3919, - 4095, 3026, 3919, - 4095, 3026, 3919, - 4095, 3026, 3919, - 4095, 3027, 3919, - 4095, 3027, 3919, - 4095, 3028, 3918, - 4095, 3029, 3918, - 4095, 3030, 3918, - 4095, 3032, 3917, - 4095, 3034, 3917, - 4095, 3037, 3916, - 4095, 3042, 3915, - 4095, 3047, 3914, - 4095, 3054, 3912, - 4095, 3064, 3910, - 4095, 3076, 3906, - 4095, 3092, 3902, - 4095, 3113, 3896, - 4095, 3139, 3888, - 4095, 3172, 3878, - 4095, 3213, 3863, - 4095, 3262, 3842, - 4095, 3320, 3813, - 4095, 3388, 3771, - 4085, 3466, 3708, - 4030, 3552, 3607, - 3943, 3647, 3422, - 3794, 3749, 2920, - 4095, 3156, 4051, - 4095, 3157, 4051, - 4095, 3157, 4051, - 4095, 3157, 4051, - 4095, 3157, 4051, - 4095, 3157, 4051, - 4095, 3157, 4051, - 4095, 3158, 4051, - 4095, 3158, 4051, - 4095, 3159, 4050, - 4095, 3159, 4050, - 4095, 3160, 4050, - 4095, 3162, 4050, - 4095, 3163, 4049, - 4095, 3166, 4049, - 4095, 3169, 4048, - 4095, 3173, 4047, - 4095, 3179, 4046, - 4095, 3186, 4044, - 4095, 3195, 4042, - 4095, 3208, 4038, - 4095, 3224, 4034, - 4095, 3245, 4028, - 4095, 3271, 4020, - 4095, 3304, 4010, - 4095, 3345, 3995, - 4095, 3394, 3974, - 4095, 3452, 3945, - 4095, 3520, 3903, - 4095, 3598, 3840, - 4095, 3684, 3738, - 4075, 3779, 3554, - 0, 843, 1089, - 0, 852, 1080, - 0, 864, 1068, - 0, 879, 1052, - 0, 898, 1030, - 0, 923, 998, - 0, 954, 952, - 0, 992, 882, - 0, 1039, 767, - 0, 1094, 545, - 0, 1160, 0, - 0, 1234, 0, - 0, 1318, 0, - 0, 1411, 0, - 0, 1511, 0, - 0, 1617, 0, - 0, 1729, 0, - 0, 1846, 0, - 0, 1966, 0, - 0, 2089, 0, - 0, 2214, 0, - 0, 2341, 0, - 0, 2469, 0, - 0, 2598, 0, - 0, 2728, 0, - 0, 2858, 0, - 0, 2989, 0, - 0, 3120, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3646, 0, - 0, 846, 1101, - 0, 855, 1093, - 0, 867, 1082, - 0, 881, 1066, - 0, 901, 1044, - 0, 925, 1013, - 0, 956, 969, - 0, 994, 901, - 0, 1041, 792, - 0, 1096, 585, - 0, 1161, 0, - 0, 1236, 0, - 0, 1319, 0, - 0, 1412, 0, - 0, 1512, 0, - 0, 1618, 0, - 0, 1730, 0, - 0, 1846, 0, - 0, 1966, 0, - 0, 2089, 0, - 0, 2214, 0, - 0, 2341, 0, - 0, 2469, 0, - 0, 2598, 0, - 0, 2728, 0, - 0, 2858, 0, - 0, 2989, 0, - 0, 3120, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3646, 0, - 0, 850, 1117, - 0, 859, 1109, - 0, 870, 1098, - 0, 885, 1083, - 0, 904, 1063, - 0, 928, 1033, - 0, 959, 990, - 0, 997, 926, - 0, 1043, 823, - 0, 1098, 634, - 0, 1163, 101, - 0, 1237, 0, - 0, 1321, 0, - 0, 1413, 0, - 0, 1513, 0, - 0, 1619, 0, - 0, 1730, 0, - 0, 1847, 0, - 0, 1967, 0, - 0, 2089, 0, - 0, 2214, 0, - 0, 2341, 0, - 0, 2469, 0, - 0, 2598, 0, - 0, 2728, 0, - 0, 2858, 0, - 0, 2989, 0, - 0, 3120, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3646, 0, - 0, 856, 1138, - 0, 864, 1130, - 0, 875, 1120, - 0, 890, 1106, - 0, 909, 1086, - 0, 933, 1058, - 0, 963, 1018, - 0, 1001, 957, - 0, 1047, 862, - 0, 1101, 692, - 0, 1166, 266, - 0, 1240, 0, - 0, 1323, 0, - 0, 1414, 0, - 0, 1514, 0, - 0, 1620, 0, - 0, 1731, 0, - 0, 1847, 0, - 0, 1967, 0, - 0, 2090, 0, - 0, 2215, 0, - 0, 2341, 0, - 0, 2469, 0, - 0, 2598, 0, - 0, 2728, 0, - 0, 2858, 0, - 0, 2989, 0, - 0, 3120, 0, - 0, 3251, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3646, 0, - 0, 863, 1164, - 0, 871, 1157, - 0, 882, 1147, - 0, 897, 1134, - 0, 915, 1115, - 0, 939, 1089, - 0, 969, 1052, - 0, 1006, 996, - 0, 1051, 909, - 0, 1106, 759, - 0, 1169, 421, - 0, 1243, 0, - 0, 1325, 0, - 0, 1417, 0, - 0, 1515, 0, - 0, 1621, 0, - 0, 1732, 0, - 0, 1848, 0, - 0, 1968, 0, - 0, 2090, 0, - 0, 2215, 0, - 0, 2341, 0, - 0, 2469, 0, - 0, 2598, 0, - 0, 2728, 0, - 0, 2858, 0, - 0, 2989, 0, - 0, 3120, 0, - 0, 3252, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3646, 0, - 133, 872, 1198, - 32, 880, 1191, - 0, 891, 1182, - 0, 905, 1169, - 0, 923, 1152, - 0, 947, 1128, - 0, 976, 1094, - 0, 1013, 1043, - 0, 1057, 966, - 0, 1111, 836, - 0, 1174, 570, - 0, 1247, 0, - 0, 1329, 0, - 0, 1419, 0, - 0, 1518, 0, - 0, 1623, 0, - 0, 1734, 0, - 0, 1849, 0, - 0, 1968, 0, - 0, 2091, 0, - 0, 2215, 0, - 0, 2342, 0, - 0, 2470, 0, - 0, 2599, 0, - 0, 2728, 0, - 0, 2858, 0, - 0, 2989, 0, - 0, 3120, 0, - 0, 3252, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3647, 0, - 615, 884, 1238, - 582, 892, 1232, - 535, 902, 1224, - 462, 916, 1213, - 342, 934, 1197, - 107, 957, 1175, - 0, 986, 1144, - 0, 1021, 1100, - 0, 1065, 1032, - 0, 1118, 922, - 0, 1180, 714, - 0, 1252, 39, - 0, 1333, 0, - 0, 1423, 0, - 0, 1521, 0, - 0, 1625, 0, - 0, 1735, 0, - 0, 1851, 0, - 0, 1970, 0, - 0, 2092, 0, - 0, 2216, 0, - 0, 2342, 0, - 0, 2470, 0, - 0, 2599, 0, - 0, 2728, 0, - 0, 2859, 0, - 0, 2989, 0, - 0, 3120, 0, - 0, 3252, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3647, 0, - 901, 899, 1288, - 883, 907, 1282, - 859, 917, 1275, - 825, 931, 1265, - 775, 948, 1251, - 698, 970, 1231, - 569, 998, 1204, - 307, 1033, 1165, - 0, 1076, 1107, - 0, 1127, 1016, - 0, 1188, 855, - 0, 1259, 474, - 0, 1339, 0, - 0, 1428, 0, - 0, 1524, 0, - 0, 1628, 0, - 0, 1738, 0, - 0, 1852, 0, - 0, 1971, 0, - 0, 2093, 0, - 0, 2217, 0, - 0, 2343, 0, - 0, 2470, 0, - 0, 2599, 0, - 0, 2729, 0, - 0, 2859, 0, - 0, 2989, 0, - 0, 3120, 0, - 0, 3252, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3647, 0, - 1121, 919, 1346, - 1110, 927, 1341, - 1096, 937, 1335, - 1076, 949, 1326, - 1048, 966, 1314, - 1007, 987, 1297, - 947, 1014, 1274, - 850, 1048, 1241, - 677, 1089, 1192, - 240, 1140, 1117, - 0, 1199, 994, - 0, 1268, 747, - 0, 1347, 0, - 0, 1434, 0, - 0, 1530, 0, - 0, 1632, 0, - 0, 1741, 0, - 0, 1855, 0, - 0, 1973, 0, - 0, 2094, 0, - 0, 2218, 0, - 0, 2344, 0, - 0, 2471, 0, - 0, 2600, 0, - 0, 2729, 0, - 0, 2859, 0, - 0, 2990, 0, - 0, 3121, 0, - 0, 3252, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3647, 0, - 1309, 945, 1414, - 1302, 952, 1410, - 1293, 961, 1405, - 1280, 973, 1397, - 1262, 989, 1387, - 1237, 1009, 1372, - 1202, 1035, 1353, - 1149, 1067, 1325, - 1068, 1107, 1285, - 930, 1156, 1225, - 639, 1213, 1130, - 0, 1280, 962, - 0, 1357, 546, - 0, 1442, 0, - 0, 1536, 0, - 0, 1638, 0, - 0, 1745, 0, - 0, 1858, 0, - 0, 1976, 0, - 0, 2096, 0, - 0, 2220, 0, - 0, 2345, 0, - 0, 2472, 0, - 0, 2600, 0, - 0, 2729, 0, - 0, 2859, 0, - 0, 2990, 0, - 0, 3121, 0, - 0, 3252, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3647, 0, - 1479, 977, 1492, - 1475, 983, 1488, - 1468, 992, 1484, - 1460, 1003, 1477, - 1448, 1018, 1469, - 1431, 1037, 1457, - 1408, 1061, 1441, - 1376, 1092, 1418, - 1328, 1130, 1385, - 1255, 1176, 1338, - 1136, 1231, 1266, - 901, 1296, 1148, - 0, 1370, 916, - 0, 1453, 0, - 0, 1545, 0, - 0, 1645, 0, - 0, 1751, 0, - 0, 1863, 0, - 0, 1979, 0, - 0, 2099, 0, - 0, 2221, 0, - 0, 2346, 0, - 0, 2473, 0, - 0, 2601, 0, - 0, 2730, 0, - 0, 2860, 0, - 0, 2990, 0, - 0, 3121, 0, - 0, 3252, 0, - 0, 3384, 0, - 0, 3515, 0, - 0, 3647, 0, - 1638, 1016, 1579, - 1635, 1022, 1576, - 1630, 1030, 1572, - 1624, 1041, 1567, - 1616, 1054, 1559, - 1604, 1072, 1550, - 1589, 1094, 1537, - 1567, 1123, 1518, - 1537, 1158, 1492, - 1492, 1202, 1455, - 1425, 1254, 1401, - 1316, 1316, 1316, - 1111, 1387, 1169, - 459, 1468, 847, - 0, 1557, 0, - 0, 1654, 0, - 0, 1758, 0, - 0, 1869, 0, - 0, 1983, 0, - 0, 2102, 0, - 0, 2224, 0, - 0, 2348, 0, - 0, 2475, 0, - 0, 2602, 0, - 0, 2731, 0, - 0, 2861, 0, - 0, 2991, 0, - 0, 3121, 0, - 0, 3252, 0, - 0, 3384, 0, - 0, 3515, 0, - 0, 3647, 0, - 1789, 1064, 1673, - 1786, 1070, 1671, - 1783, 1077, 1668, - 1779, 1086, 1664, - 1773, 1099, 1658, - 1765, 1115, 1650, - 1754, 1135, 1640, - 1739, 1161, 1625, - 1719, 1194, 1605, - 1689, 1234, 1576, - 1647, 1283, 1535, - 1583, 1341, 1473, - 1481, 1409, 1375, - 1293, 1486, 1197, - 773, 1572, 733, - 0, 1667, 0, - 0, 1768, 0, - 0, 1876, 0, - 0, 1989, 0, - 0, 2107, 0, - 0, 2228, 0, - 0, 2351, 0, - 0, 2477, 0, - 0, 2604, 0, - 0, 2732, 0, - 0, 2861, 0, - 0, 2991, 0, - 0, 3122, 0, - 0, 3253, 0, - 0, 3384, 0, - 0, 3515, 0, - 0, 3647, 0, - 1934, 1121, 1775, - 1933, 1126, 1774, - 1930, 1133, 1771, - 1927, 1141, 1768, - 1923, 1152, 1763, - 1917, 1166, 1757, - 1910, 1184, 1749, - 1899, 1208, 1737, - 1885, 1237, 1721, - 1864, 1274, 1700, - 1836, 1319, 1668, - 1795, 1373, 1623, - 1734, 1436, 1555, - 1636, 1509, 1443, - 1460, 1592, 1231, - 1006, 1682, 516, - 0, 1781, 0, - 0, 1886, 0, - 0, 1997, 0, - 0, 2113, 0, - 0, 2232, 0, - 0, 2355, 0, - 0, 2479, 0, - 0, 2606, 0, - 0, 2734, 0, - 0, 2863, 0, - 0, 2992, 0, - 0, 3123, 0, - 0, 3253, 0, - 0, 3384, 0, - 0, 3516, 0, - 0, 3647, 0, - 2076, 1188, 1884, - 2075, 1192, 1882, - 2074, 1198, 1880, - 2071, 1205, 1878, - 2068, 1214, 1874, - 2064, 1227, 1869, - 2058, 1243, 1863, - 2051, 1264, 1854, - 2041, 1290, 1842, - 2026, 1323, 1825, - 2007, 1363, 1802, - 1979, 1413, 1768, - 1939, 1471, 1720, - 1879, 1539, 1645, - 1784, 1616, 1521, - 1616, 1703, 1274, - 1200, 1798, 0, - 0, 1899, 0, - 0, 2008, 0, - 0, 2121, 0, - 0, 2239, 0, - 0, 2359, 0, - 0, 2483, 0, - 0, 2609, 0, - 0, 2736, 0, - 0, 2864, 0, - 0, 2993, 0, - 0, 3123, 0, - 0, 3254, 0, - 0, 3385, 0, - 0, 3516, 0, - 0, 3648, 0, - 2216, 1264, 1997, - 2215, 1268, 1996, - 2214, 1272, 1995, - 2212, 1279, 1992, - 2210, 1287, 1990, - 2207, 1297, 1986, - 2203, 1311, 1981, - 2197, 1329, 1974, - 2190, 1352, 1965, - 2179, 1381, 1952, - 2165, 1417, 1935, - 2146, 1461, 1910, - 2119, 1513, 1875, - 2079, 1576, 1823, - 2021, 1648, 1743, - 1928, 1729, 1608, - 1765, 1819, 1325, - 1374, 1916, 0, - 0, 2021, 0, - 0, 2132, 0, - 0, 2247, 0, - 0, 2366, 0, - 0, 2488, 0, - 0, 2612, 0, - 0, 2739, 0, - 0, 2866, 0, - 0, 2995, 0, - 0, 3125, 0, - 0, 3255, 0, - 0, 3386, 0, - 0, 3517, 0, - 0, 3648, 0, - 2353, 1349, 2115, - 2353, 1352, 2114, - 2352, 1356, 2113, - 2350, 1361, 2111, - 2349, 1368, 2109, - 2347, 1377, 2106, - 2344, 1389, 2102, - 2340, 1404, 2097, - 2334, 1423, 2090, - 2327, 1448, 2080, - 2317, 1479, 2067, - 2303, 1518, 2049, - 2284, 1565, 2023, - 2257, 1621, 1987, - 2218, 1686, 1932, - 2160, 1761, 1848, - 2069, 1846, 1703, - 1910, 1938, 1386, - 1535, 2039, 0, - 0, 2145, 0, - 0, 2257, 0, - 0, 2374, 0, - 0, 2494, 0, - 0, 2617, 0, - 0, 2742, 0, - 0, 2869, 0, - 0, 2997, 0, - 0, 3126, 0, - 0, 3256, 0, - 0, 3386, 0, - 0, 3517, 0, - 0, 3648, 0, - 2489, 1443, 2236, - 2489, 1445, 2235, - 2488, 1449, 2234, - 2487, 1453, 2233, - 2486, 1458, 2231, - 2484, 1466, 2229, - 2482, 1475, 2226, - 2479, 1488, 2222, - 2475, 1504, 2217, - 2470, 1525, 2210, - 2462, 1551, 2200, - 2452, 1584, 2186, - 2439, 1625, 2167, - 2420, 1675, 2141, - 2393, 1733, 2103, - 2355, 1802, 2047, - 2297, 1879, 1958, - 2208, 1966, 1805, - 2051, 2061, 1456, - 1688, 2163, 0, - 0, 2271, 0, - 0, 2385, 0, - 0, 2502, 0, - 0, 2623, 0, - 0, 2747, 0, - 0, 2873, 0, - 0, 3000, 0, - 0, 3128, 0, - 0, 3258, 0, - 0, 3388, 0, - 0, 3518, 0, - 0, 3649, 0, - 2624, 1544, 2359, - 2624, 1546, 2359, - 2624, 1549, 2358, - 2623, 1552, 2357, - 2622, 1556, 2356, - 2621, 1562, 2354, - 2619, 1570, 2352, - 2617, 1580, 2349, - 2614, 1593, 2345, - 2610, 1611, 2340, - 2605, 1633, 2332, - 2597, 1661, 2322, - 2587, 1695, 2308, - 2574, 1738, 2289, - 2555, 1789, 2262, - 2528, 1850, 2223, - 2490, 1921, 2165, - 2433, 2000, 2074, - 2345, 2089, 1914, - 2190, 2186, 1535, - 1835, 2289, 0, - 0, 2399, 0, - 0, 2513, 0, - 0, 2632, 0, - 0, 2753, 0, - 0, 2877, 0, - 0, 3004, 0, - 0, 3131, 0, - 0, 3260, 0, - 0, 3389, 0, - 0, 3519, 0, - 0, 3650, 0, - 2759, 1651, 2485, - 2758, 1653, 2485, - 2758, 1655, 2484, - 2758, 1658, 2483, - 2757, 1661, 2482, - 2756, 1666, 2481, - 2755, 1672, 2480, - 2753, 1680, 2477, - 2751, 1691, 2474, - 2748, 1705, 2470, - 2744, 1723, 2465, - 2739, 1746, 2457, - 2731, 1775, 2447, - 2721, 1811, 2433, - 2708, 1855, 2413, - 2689, 1908, 2385, - 2663, 1971, 2346, - 2625, 2043, 2287, - 2568, 2124, 2193, - 2480, 2214, 2027, - 2327, 2312, 1623, - 1978, 2417, 0, - 0, 2527, 0, - 0, 2643, 0, - 0, 2762, 0, - 0, 2884, 0, - 0, 3008, 0, - 0, 3135, 0, - 0, 3262, 0, - 0, 3391, 0, - 0, 3521, 0, - 0, 3651, 0, - 2892, 1764, 2612, - 2892, 1765, 2612, - 2892, 1767, 2612, - 2892, 1769, 2611, - 2891, 1772, 2610, - 2890, 1775, 2609, - 2889, 1780, 2608, - 2888, 1787, 2606, - 2887, 1795, 2604, - 2884, 1806, 2601, - 2882, 1821, 2597, - 2878, 1839, 2591, - 2872, 1863, 2584, - 2865, 1893, 2573, - 2855, 1930, 2559, - 2842, 1976, 2539, - 2823, 2030, 2511, - 2797, 2094, 2471, - 2759, 2167, 2411, - 2703, 2250, 2315, - 2615, 2341, 2145, - 2463, 2440, 1720, - 2118, 2546, 0, - 0, 2657, 0, - 0, 2773, 0, - 0, 2892, 0, - 0, 3015, 0, - 0, 3140, 0, - 0, 3266, 0, - 0, 3394, 0, - 0, 3523, 0, - 0, 3653, 0, - 3026, 1881, 2741, - 3026, 1882, 2740, - 3025, 1883, 2740, - 3025, 1885, 2740, - 3025, 1887, 2739, - 3024, 1890, 2738, - 3024, 1894, 2737, - 3023, 1899, 2736, - 3021, 1905, 2734, - 3020, 1914, 2732, - 3018, 1926, 2729, - 3015, 1940, 2725, - 3011, 1960, 2719, - 3005, 1984, 2712, - 2998, 2015, 2701, - 2988, 2053, 2687, - 2975, 2099, 2667, - 2956, 2154, 2638, - 2930, 2219, 2598, - 2892, 2294, 2537, - 2836, 2377, 2440, - 2749, 2469, 2266, - 2598, 2569, 1823, - 2256, 2675, 0, - 0, 2787, 0, - 0, 2903, 0, - 0, 3023, 0, - 0, 3146, 0, - 0, 3271, 0, - 0, 3398, 0, - 0, 3526, 0, - 0, 3655, 0, - 3159, 2002, 2870, - 3159, 2002, 2870, - 3158, 2003, 2870, - 3158, 2005, 2869, - 3158, 2006, 2869, - 3158, 2008, 2868, - 3157, 2011, 2868, - 3156, 2015, 2867, - 3156, 2020, 2865, - 3154, 2027, 2864, - 3153, 2036, 2861, - 3151, 2048, 2858, - 3148, 2063, 2854, - 3144, 2082, 2848, - 3138, 2107, 2840, - 3131, 2139, 2830, - 3121, 2177, 2815, - 3108, 2224, 2795, - 3089, 2280, 2767, - 3063, 2346, 2726, - 3025, 2421, 2664, - 2970, 2506, 2566, - 2883, 2598, 2390, - 2732, 2699, 1933, - 2392, 2805, 0, - 0, 2918, 0, - 0, 3034, 0, - 0, 3154, 0, - 0, 3277, 0, - 0, 3403, 0, - 0, 3529, 0, - 0, 3658, 0, - 3291, 2125, 3000, - 3291, 2125, 3000, - 3291, 2126, 3000, - 3291, 2127, 2999, - 3291, 2128, 2999, - 3291, 2130, 2999, - 3290, 2132, 2998, - 3290, 2135, 2997, - 3289, 2139, 2996, - 3288, 2145, 2995, - 3287, 2151, 2993, - 3285, 2161, 2991, - 3283, 2172, 2988, - 3280, 2188, 2984, - 3276, 2208, 2978, - 3271, 2233, 2970, - 3264, 2264, 2960, - 3254, 2304, 2945, - 3241, 2351, 2925, - 3222, 2408, 2896, - 3196, 2474, 2855, - 3158, 2550, 2793, - 3103, 2635, 2694, - 3016, 2728, 2515, - 2865, 2829, 2047, - 2527, 2936, 0, - 0, 3049, 0, - 0, 3166, 0, - 0, 3286, 0, - 0, 3409, 0, - 0, 3534, 0, - 0, 3661, 0, - 3424, 2250, 3130, - 3424, 2251, 3130, - 3424, 2251, 3130, - 3424, 2252, 3130, - 3424, 2253, 3130, - 3423, 2254, 3130, - 3423, 2256, 3129, - 3423, 2258, 3129, - 3422, 2261, 3128, - 3422, 2265, 3127, - 3421, 2271, 3126, - 3420, 2278, 3124, - 3418, 2287, 3122, - 3416, 2299, 3118, - 3413, 2314, 3114, - 3409, 2334, 3108, - 3404, 2360, 3101, - 3396, 2392, 3090, - 3387, 2431, 3075, - 3373, 2479, 3055, - 3355, 2537, 3026, - 3328, 2603, 2984, - 3291, 2680, 2922, - 3235, 2765, 2823, - 3149, 2859, 2643, - 2999, 2960, 2165, - 2662, 3067, 0, - 0, 3180, 0, - 0, 3297, 0, - 0, 3418, 0, - 0, 3541, 0, - 0, 3666, 0, - 3557, 2377, 3261, - 3557, 2378, 3261, - 3556, 2378, 3261, - 3556, 2379, 3261, - 3556, 2379, 3261, - 3556, 2380, 3261, - 3556, 2382, 3260, - 3556, 2383, 3260, - 3555, 2386, 3259, - 3555, 2389, 3259, - 3554, 2393, 3258, - 3553, 2398, 3256, - 3552, 2405, 3255, - 3550, 2414, 3252, - 3548, 2427, 3249, - 3545, 2442, 3245, - 3541, 2462, 3239, - 3536, 2488, 3231, - 3529, 2520, 3221, - 3519, 2560, 3206, - 3506, 2609, 3185, - 3487, 2666, 3157, - 3461, 2733, 3115, - 3423, 2810, 3052, - 3368, 2896, 2952, - 3281, 2989, 2771, - 3131, 3091, 2287, - 2795, 3198, 0, - 0, 3311, 0, - 0, 3429, 0, - 0, 3549, 0, - 0, 3673, 0, - 3689, 2506, 3393, - 3689, 2506, 3393, - 3689, 2506, 3392, - 3689, 2506, 3392, - 3689, 2507, 3392, - 3689, 2508, 3392, - 3688, 2509, 3392, - 3688, 2510, 3392, - 3688, 2512, 3391, - 3688, 2514, 3391, - 3687, 2517, 3390, - 3686, 2521, 3389, - 3686, 2527, 3388, - 3684, 2534, 3386, - 3683, 2543, 3383, - 3681, 2555, 3380, - 3678, 2571, 3376, - 3674, 2592, 3370, - 3668, 2617, 3362, - 3661, 2650, 3352, - 3651, 2690, 3337, - 3638, 2739, 3316, - 3619, 2796, 3287, - 3593, 2864, 3246, - 3556, 2941, 3183, - 3500, 3026, 3083, - 3414, 3121, 2900, - 3264, 3222, 2411, - 2929, 3330, 0, - 0, 3443, 0, - 0, 3560, 0, - 0, 3681, 0, - 3821, 2635, 3524, - 3821, 2635, 3524, - 3821, 2635, 3524, - 3821, 2635, 3524, - 3821, 2636, 3524, - 3821, 2636, 3524, - 3821, 2637, 3523, - 3821, 2638, 3523, - 3821, 2639, 3523, - 3820, 2641, 3523, - 3820, 2644, 3522, - 3819, 2647, 3521, - 3819, 2651, 3520, - 3818, 2656, 3519, - 3817, 2663, 3517, - 3815, 2673, 3515, - 3813, 2685, 3512, - 3810, 2701, 3507, - 3806, 2721, 3502, - 3801, 2747, 3494, - 3794, 2780, 3483, - 3784, 2820, 3468, - 3770, 2869, 3448, - 3752, 2927, 3419, - 3726, 2995, 3377, - 3688, 3072, 3314, - 3633, 3158, 3213, - 3546, 3252, 3030, - 3397, 3354, 2537, - 3062, 3462, 0, - 0, 3575, 0, - 0, 3692, 0, - 3953, 2765, 3656, - 3953, 2765, 3656, - 3953, 2765, 3656, - 3953, 2765, 3656, - 3953, 2765, 3655, - 3953, 2766, 3655, - 3953, 2766, 3655, - 3953, 2767, 3655, - 3953, 2768, 3655, - 3953, 2770, 3655, - 3952, 2771, 3654, - 3952, 2774, 3654, - 3952, 2777, 3653, - 3951, 2781, 3652, - 3950, 2786, 3651, - 3949, 2793, 3649, - 3947, 2803, 3646, - 3945, 2815, 3643, - 3942, 2831, 3639, - 3938, 2852, 3633, - 3933, 2878, 3625, - 3926, 2911, 3615, - 3916, 2951, 3600, - 3903, 3000, 3579, - 3884, 3058, 3550, - 3858, 3126, 3508, - 3821, 3203, 3445, - 3765, 3289, 3344, - 3679, 3384, 3161, - 3529, 3485, 2664, - 3195, 3593, 0, - 0, 3707, 0, - 4086, 2895, 3787, - 4086, 2895, 3787, - 4086, 2895, 3787, - 4086, 2896, 3787, - 4086, 2896, 3787, - 4086, 2896, 3787, - 4086, 2896, 3787, - 4085, 2897, 3787, - 4085, 2898, 3787, - 4085, 2899, 3787, - 4085, 2900, 3786, - 4085, 2902, 3786, - 4084, 2904, 3785, - 4084, 2907, 3785, - 4083, 2911, 3784, - 4082, 2917, 3782, - 4081, 2924, 3780, - 4079, 2934, 3778, - 4077, 2946, 3775, - 4074, 2962, 3771, - 4070, 2983, 3765, - 4065, 3009, 3757, - 4058, 3042, 3746, - 4048, 3082, 3731, - 4035, 3131, 3711, - 4016, 3189, 3682, - 3990, 3257, 3640, - 3953, 3334, 3577, - 3897, 3421, 3476, - 3811, 3515, 3292, - 3662, 3617, 2793, - 3327, 3725, 0, - 4095, 3026, 3919, - 4095, 3026, 3919, - 4095, 3026, 3919, - 4095, 3026, 3919, - 4095, 3026, 3919, - 4095, 3027, 3919, - 4095, 3027, 3919, - 4095, 3027, 3919, - 4095, 3028, 3919, - 4095, 3029, 3919, - 4095, 3030, 3918, - 4095, 3031, 3918, - 4095, 3033, 3918, - 4095, 3035, 3917, - 4095, 3038, 3916, - 4095, 3042, 3915, - 4095, 3048, 3914, - 4095, 3055, 3912, - 4095, 3065, 3910, - 4095, 3077, 3907, - 4095, 3093, 3902, - 4095, 3114, 3897, - 4095, 3140, 3889, - 4095, 3173, 3878, - 4095, 3213, 3863, - 4095, 3263, 3843, - 4095, 3321, 3813, - 4095, 3389, 3771, - 4085, 3466, 3708, - 4030, 3552, 3607, - 3943, 3647, 3423, - 3794, 3749, 2922, - 4095, 3157, 4051, - 4095, 3157, 4051, - 4095, 3157, 4051, - 4095, 3157, 4051, - 4095, 3157, 4051, - 4095, 3158, 4051, - 4095, 3158, 4051, - 4095, 3158, 4051, - 4095, 3159, 4051, - 4095, 3159, 4051, - 4095, 3160, 4050, - 4095, 3161, 4050, - 4095, 3162, 4050, - 4095, 3164, 4049, - 4095, 3166, 4049, - 4095, 3170, 4048, - 4095, 3174, 4047, - 4095, 3179, 4046, - 4095, 3186, 4044, - 4095, 3196, 4042, - 4095, 3208, 4039, - 4095, 3224, 4034, - 4095, 3245, 4028, - 4095, 3271, 4021, - 4095, 3304, 4010, - 4095, 3345, 3995, - 4095, 3394, 3974, - 4095, 3453, 3945, - 4095, 3520, 3903, - 4095, 3598, 3840, - 4095, 3684, 3739, - 4075, 3779, 3555, - 0, 966, 1218, - 0, 973, 1211, - 0, 982, 1202, - 0, 994, 1191, - 0, 1009, 1174, - 0, 1028, 1151, - 0, 1053, 1119, - 0, 1084, 1071, - 0, 1122, 999, - 0, 1169, 879, - 0, 1225, 645, - 0, 1291, 0, - 0, 1366, 0, - 0, 1450, 0, - 0, 1542, 0, - 0, 1643, 0, - 0, 1749, 0, - 0, 1861, 0, - 0, 1978, 0, - 0, 2098, 0, - 0, 2221, 0, - 0, 2346, 0, - 0, 2473, 0, - 0, 2601, 0, - 0, 2730, 0, - 0, 2860, 0, - 0, 2990, 0, - 0, 3121, 0, - 0, 3252, 0, - 0, 3383, 0, - 0, 3515, 0, - 0, 3647, 0, - 0, 969, 1227, - 0, 975, 1221, - 0, 984, 1212, - 0, 996, 1201, - 0, 1011, 1185, - 0, 1030, 1162, - 0, 1055, 1130, - 0, 1086, 1084, - 0, 1124, 1014, - 0, 1171, 899, - 0, 1226, 677, - 0, 1292, 0, - 0, 1367, 0, - 0, 1451, 0, - 0, 1543, 0, - 0, 1643, 0, - 0, 1750, 0, - 0, 1862, 0, - 0, 1978, 0, - 0, 2098, 0, - 0, 2221, 0, - 0, 2346, 0, - 0, 2473, 0, - 0, 2601, 0, - 0, 2730, 0, - 0, 2860, 0, - 0, 2990, 0, - 0, 3121, 0, - 0, 3252, 0, - 0, 3384, 0, - 0, 3515, 0, - 0, 3647, 0, - 0, 972, 1239, - 0, 978, 1233, - 0, 987, 1225, - 0, 999, 1214, - 0, 1014, 1198, - 0, 1033, 1176, - 0, 1057, 1146, - 0, 1088, 1101, - 0, 1126, 1033, - 0, 1173, 924, - 0, 1228, 717, - 0, 1293, 53, - 0, 1368, 0, - 0, 1452, 0, - 0, 1544, 0, - 0, 1644, 0, - 0, 1750, 0, - 0, 1862, 0, - 0, 1978, 0, - 0, 2098, 0, - 0, 2221, 0, - 0, 2346, 0, - 0, 2473, 0, - 0, 2601, 0, - 0, 2730, 0, - 0, 2860, 0, - 0, 2990, 0, - 0, 3121, 0, - 0, 3252, 0, - 0, 3384, 0, - 0, 3515, 0, - 0, 3647, 0, - 0, 976, 1255, - 0, 982, 1249, - 0, 991, 1241, - 0, 1002, 1230, - 0, 1017, 1215, - 0, 1036, 1195, - 0, 1061, 1165, - 0, 1091, 1122, - 0, 1129, 1058, - 0, 1175, 955, - 0, 1231, 766, - 0, 1295, 233, - 0, 1370, 0, - 0, 1453, 0, - 0, 1545, 0, - 0, 1645, 0, - 0, 1751, 0, - 0, 1863, 0, - 0, 1979, 0, - 0, 2099, 0, - 0, 2221, 0, - 0, 2346, 0, - 0, 2473, 0, - 0, 2601, 0, - 0, 2730, 0, - 0, 2860, 0, - 0, 2990, 0, - 0, 3121, 0, - 0, 3252, 0, - 0, 3384, 0, - 0, 3515, 0, - 0, 3647, 0, - 0, 981, 1276, - 0, 988, 1270, - 0, 996, 1263, - 0, 1008, 1252, - 0, 1022, 1238, - 0, 1041, 1218, - 0, 1065, 1190, - 0, 1095, 1150, - 0, 1133, 1090, - 0, 1179, 994, - 0, 1234, 824, - 0, 1298, 398, - 0, 1372, 0, - 0, 1455, 0, - 0, 1547, 0, - 0, 1646, 0, - 0, 1752, 0, - 0, 1863, 0, - 0, 1979, 0, - 0, 2099, 0, - 0, 2222, 0, - 0, 2347, 0, - 0, 2473, 0, - 0, 2601, 0, - 0, 2730, 0, - 0, 2860, 0, - 0, 2990, 0, - 0, 3121, 0, - 0, 3252, 0, - 0, 3384, 0, - 0, 3515, 0, - 0, 3647, 0, - 0, 988, 1302, - 0, 995, 1297, - 0, 1003, 1289, - 0, 1014, 1280, - 0, 1029, 1266, - 0, 1047, 1247, - 0, 1071, 1221, - 0, 1101, 1184, - 0, 1138, 1128, - 0, 1183, 1041, - 0, 1238, 891, - 0, 1301, 553, - 0, 1375, 0, - 0, 1457, 0, - 0, 1549, 0, - 0, 1648, 0, - 0, 1753, 0, - 0, 1864, 0, - 0, 1980, 0, - 0, 2100, 0, - 0, 2222, 0, - 0, 2347, 0, - 0, 2474, 0, - 0, 2601, 0, - 0, 2730, 0, - 0, 2860, 0, - 0, 2990, 0, - 0, 3121, 0, - 0, 3252, 0, - 0, 3384, 0, - 0, 3515, 0, - 0, 3647, 0, - 329, 998, 1335, - 265, 1004, 1330, - 164, 1012, 1323, - 0, 1023, 1314, - 0, 1037, 1301, - 0, 1055, 1284, - 0, 1079, 1260, - 0, 1108, 1226, - 0, 1145, 1175, - 0, 1189, 1098, - 0, 1243, 968, - 0, 1306, 702, - 0, 1379, 0, - 0, 1461, 0, - 0, 1551, 0, - 0, 1650, 0, - 0, 1755, 0, - 0, 1866, 0, - 0, 1981, 0, - 0, 2101, 0, - 0, 2223, 0, - 0, 2347, 0, - 0, 2474, 0, - 0, 2602, 0, - 0, 2731, 0, - 0, 2860, 0, - 0, 2991, 0, - 0, 3121, 0, - 0, 3252, 0, - 0, 3384, 0, - 0, 3515, 0, - 0, 3647, 0, - 770, 1010, 1375, - 747, 1016, 1370, - 715, 1024, 1364, - 667, 1035, 1356, - 594, 1048, 1345, - 474, 1066, 1329, - 239, 1089, 1307, - 0, 1118, 1276, - 0, 1154, 1232, - 0, 1197, 1164, - 0, 1250, 1054, - 0, 1312, 846, - 0, 1384, 171, - 0, 1465, 0, - 0, 1555, 0, - 0, 1653, 0, - 0, 1757, 0, - 0, 1868, 0, - 0, 1983, 0, - 0, 2102, 0, - 0, 2224, 0, - 0, 2348, 0, - 0, 2474, 0, - 0, 2602, 0, - 0, 2731, 0, - 0, 2860, 0, - 0, 2991, 0, - 0, 3121, 0, - 0, 3252, 0, - 0, 3384, 0, - 0, 3515, 0, - 0, 3647, 0, - 1045, 1025, 1424, - 1033, 1031, 1420, - 1016, 1039, 1414, - 992, 1049, 1407, - 957, 1063, 1397, - 907, 1080, 1383, - 830, 1102, 1364, - 702, 1130, 1336, - 440, 1165, 1297, - 0, 1208, 1239, - 0, 1260, 1148, - 0, 1321, 987, - 0, 1391, 606, - 0, 1471, 0, - 0, 1560, 0, - 0, 1657, 0, - 0, 1760, 0, - 0, 1870, 0, - 0, 1985, 0, - 0, 2103, 0, - 0, 2225, 0, - 0, 2349, 0, - 0, 2475, 0, - 0, 2603, 0, - 0, 2731, 0, - 0, 2861, 0, - 0, 2991, 0, - 0, 3122, 0, - 0, 3253, 0, - 0, 3384, 0, - 0, 3515, 0, - 0, 3647, 0, - 1261, 1046, 1482, - 1253, 1051, 1478, - 1242, 1059, 1473, - 1228, 1069, 1467, - 1208, 1082, 1458, - 1180, 1098, 1446, - 1139, 1119, 1429, - 1079, 1146, 1406, - 982, 1180, 1373, - 810, 1222, 1324, - 372, 1272, 1249, - 0, 1331, 1126, - 0, 1400, 879, - 0, 1479, 0, - 0, 1566, 0, - 0, 1662, 0, - 0, 1764, 0, - 0, 1873, 0, - 0, 1987, 0, - 0, 2105, 0, - 0, 2226, 0, - 0, 2350, 0, - 0, 2476, 0, - 0, 2603, 0, - 0, 2732, 0, - 0, 2861, 0, - 0, 2991, 0, - 0, 3122, 0, - 0, 3253, 0, - 0, 3384, 0, - 0, 3515, 0, - 0, 3647, 0, - 1446, 1072, 1550, - 1441, 1077, 1546, - 1434, 1084, 1542, - 1425, 1093, 1537, - 1412, 1105, 1529, - 1394, 1121, 1519, - 1370, 1141, 1505, - 1334, 1167, 1485, - 1282, 1199, 1457, - 1200, 1239, 1417, - 1063, 1288, 1357, - 771, 1345, 1263, - 0, 1412, 1094, - 0, 1489, 678, - 0, 1575, 0, - 0, 1668, 0, - 0, 1770, 0, - 0, 1877, 0, - 0, 1990, 0, - 0, 2108, 0, - 0, 2228, 0, - 0, 2352, 0, - 0, 2477, 0, - 0, 2604, 0, - 0, 2732, 0, - 0, 2862, 0, - 0, 2992, 0, - 0, 3122, 0, - 0, 3253, 0, - 0, 3384, 0, - 0, 3515, 0, - 0, 3647, 0, - 1615, 1104, 1627, - 1611, 1109, 1624, - 1607, 1115, 1621, - 1600, 1124, 1616, - 1592, 1135, 1609, - 1580, 1150, 1601, - 1563, 1169, 1589, - 1540, 1193, 1573, - 1508, 1224, 1550, - 1460, 1262, 1518, - 1388, 1308, 1470, - 1268, 1363, 1398, - 1033, 1428, 1280, - 0, 1502, 1048, - 0, 1585, 57, - 0, 1677, 0, - 0, 1777, 0, - 0, 1883, 0, - 0, 1995, 0, - 0, 2111, 0, - 0, 2231, 0, - 0, 2354, 0, - 0, 2479, 0, - 0, 2605, 0, - 0, 2733, 0, - 0, 2862, 0, - 0, 2992, 0, - 0, 3122, 0, - 0, 3253, 0, - 0, 3384, 0, - 0, 3516, 0, - 0, 3647, 0, - 1772, 1144, 1713, - 1770, 1148, 1711, - 1767, 1154, 1708, - 1762, 1162, 1704, - 1756, 1173, 1699, - 1748, 1186, 1692, - 1737, 1204, 1682, - 1721, 1226, 1669, - 1699, 1255, 1650, - 1669, 1290, 1624, - 1624, 1334, 1588, - 1557, 1386, 1533, - 1448, 1448, 1448, - 1243, 1519, 1301, - 591, 1600, 979, - 0, 1689, 0, - 0, 1786, 0, - 0, 1891, 0, - 0, 2001, 0, - 0, 2116, 0, - 0, 2234, 0, - 0, 2356, 0, - 0, 2481, 0, - 0, 2607, 0, - 0, 2734, 0, - 0, 2863, 0, - 0, 2993, 0, - 0, 3123, 0, - 0, 3254, 0, - 0, 3385, 0, - 0, 3516, 0, - 0, 3647, 0, - 1923, 1192, 1807, - 1921, 1196, 1805, - 1919, 1202, 1803, - 1915, 1209, 1800, - 1911, 1218, 1796, - 1905, 1231, 1790, - 1897, 1247, 1782, - 1886, 1267, 1772, - 1871, 1293, 1757, - 1851, 1326, 1737, - 1821, 1366, 1708, - 1779, 1415, 1667, - 1715, 1473, 1605, - 1613, 1541, 1507, - 1426, 1618, 1329, - 905, 1704, 865, - 0, 1799, 0, - 0, 1900, 0, - 0, 2008, 0, - 0, 2122, 0, - 0, 2239, 0, - 0, 2360, 0, - 0, 2483, 0, - 0, 2609, 0, - 0, 2736, 0, - 0, 2864, 0, - 0, 2994, 0, - 0, 3124, 0, - 0, 3254, 0, - 0, 3385, 0, - 0, 3516, 0, - 0, 3648, 0, - 2068, 1250, 1909, - 2067, 1253, 1908, - 2065, 1258, 1906, - 2063, 1265, 1903, - 2059, 1273, 1900, - 2055, 1284, 1895, - 2049, 1298, 1889, - 2042, 1317, 1881, - 2031, 1340, 1869, - 2017, 1370, 1854, - 1997, 1406, 1832, - 1968, 1451, 1801, - 1927, 1505, 1755, - 1866, 1569, 1687, - 1768, 1641, 1575, - 1592, 1724, 1364, - 1138, 1815, 648, - 0, 1913, 0, - 0, 2018, 0, - 0, 2129, 0, - 0, 2245, 0, - 0, 2364, 0, - 0, 2487, 0, - 0, 2612, 0, - 0, 2738, 0, - 0, 2866, 0, - 0, 2995, 0, - 0, 3124, 0, - 0, 3255, 0, - 0, 3385, 0, - 0, 3516, 0, - 0, 3648, 0, - 2210, 1317, 2017, - 2209, 1320, 2016, - 2207, 1324, 2014, - 2206, 1330, 2012, - 2203, 1337, 2010, - 2200, 1347, 2006, - 2196, 1359, 2001, - 2191, 1375, 1995, - 2183, 1396, 1986, - 2173, 1422, 1974, - 2158, 1455, 1957, - 2139, 1496, 1934, - 2111, 1545, 1900, - 2071, 1603, 1852, - 2011, 1671, 1777, - 1916, 1749, 1653, - 1748, 1835, 1406, - 1333, 1930, 0, - 0, 2032, 0, - 0, 2140, 0, - 0, 2253, 0, - 0, 2371, 0, - 0, 2492, 0, - 0, 2615, 0, - 0, 2741, 0, - 0, 2868, 0, - 0, 2996, 0, - 0, 3126, 0, - 0, 3256, 0, - 0, 3386, 0, - 0, 3517, 0, - 0, 3648, 0, - 2349, 1394, 2130, - 2348, 1396, 2129, - 2347, 1400, 2128, - 2346, 1404, 2127, - 2344, 1411, 2125, - 2342, 1419, 2122, - 2339, 1429, 2118, - 2335, 1443, 2113, - 2329, 1461, 2106, - 2322, 1484, 2097, - 2312, 1513, 2084, - 2298, 1549, 2067, - 2278, 1593, 2042, - 2251, 1646, 2007, - 2211, 1708, 1955, - 2153, 1780, 1875, - 2061, 1861, 1740, - 1898, 1951, 1457, - 1507, 2049, 0, - 0, 2153, 0, - 0, 2264, 0, - 0, 2379, 0, - 0, 2498, 0, - 0, 2620, 0, - 0, 2744, 0, - 0, 2871, 0, - 0, 2998, 0, - 0, 3127, 0, - 0, 3257, 0, - 0, 3387, 0, - 0, 3518, 0, - 0, 3649, 0, - 2486, 1479, 2248, - 2485, 1482, 2247, - 2485, 1484, 2246, - 2484, 1488, 2245, - 2483, 1493, 2243, - 2481, 1500, 2241, - 2479, 1509, 2238, - 2476, 1521, 2234, - 2472, 1536, 2229, - 2466, 1555, 2222, - 2459, 1580, 2213, - 2449, 1611, 2199, - 2435, 1650, 2181, - 2416, 1697, 2155, - 2389, 1753, 2119, - 2350, 1818, 2064, - 2292, 1893, 1980, - 2201, 1978, 1835, - 2042, 2070, 1518, - 1668, 2171, 0, - 0, 2277, 0, - 0, 2389, 0, - 0, 2506, 0, - 0, 2626, 0, - 0, 2749, 0, - 0, 2874, 0, - 0, 3001, 0, - 0, 3129, 0, - 0, 3258, 0, - 0, 3388, 0, - 0, 3519, 0, - 0, 3649, 0, - 2622, 1573, 2368, - 2621, 1575, 2368, - 2621, 1578, 2367, - 2620, 1581, 2366, - 2619, 1585, 2365, - 2618, 1590, 2363, - 2616, 1598, 2361, - 2614, 1607, 2358, - 2611, 1620, 2354, - 2607, 1636, 2349, - 2602, 1657, 2342, - 2595, 1683, 2332, - 2585, 1716, 2318, - 2571, 1757, 2299, - 2552, 1807, 2273, - 2525, 1865, 2235, - 2487, 1934, 2179, - 2430, 2011, 2091, - 2340, 2098, 1937, - 2183, 2193, 1588, - 1820, 2295, 0, - 0, 2403, 0, - 0, 2517, 0, - 0, 2634, 0, - 0, 2755, 0, - 0, 2879, 0, - 0, 3005, 0, - 0, 3132, 0, - 0, 3260, 0, - 0, 3390, 0, - 0, 3520, 0, - 0, 3650, 0, - 2757, 1675, 2492, - 2756, 1676, 2491, - 2756, 1678, 2491, - 2756, 1681, 2490, - 2755, 1684, 2489, - 2754, 1688, 2488, - 2753, 1694, 2486, - 2751, 1702, 2484, - 2749, 1712, 2481, - 2746, 1726, 2477, - 2742, 1743, 2472, - 2737, 1765, 2464, - 2729, 1793, 2454, - 2719, 1827, 2440, - 2706, 1870, 2421, - 2687, 1922, 2394, - 2660, 1982, 2355, - 2622, 2053, 2297, - 2566, 2132, 2206, - 2477, 2221, 2046, - 2322, 2318, 1667, - 1967, 2421, 0, - 0, 2531, 0, - 0, 2645, 0, - 0, 2764, 0, - 0, 2885, 0, - 0, 3010, 0, - 0, 3136, 0, - 0, 3263, 0, - 0, 3392, 0, - 0, 3521, 0, - 0, 3651, 0, - 2891, 1782, 2617, - 2891, 1784, 2617, - 2890, 1785, 2617, - 2890, 1787, 2616, - 2890, 1790, 2615, - 2889, 1793, 2615, - 2888, 1798, 2613, - 2887, 1804, 2612, - 2885, 1812, 2609, - 2883, 1823, 2606, - 2880, 1837, 2602, - 2876, 1855, 2597, - 2871, 1878, 2589, - 2863, 1907, 2579, - 2854, 1943, 2565, - 2840, 1987, 2545, - 2821, 2040, 2518, - 2795, 2103, 2478, - 2757, 2175, 2419, - 2701, 2256, 2325, - 2612, 2346, 2159, - 2459, 2444, 1755, - 2110, 2549, 0, - 0, 2659, 0, - 0, 2775, 0, - 0, 2894, 0, - 0, 3016, 0, - 0, 3140, 0, - 0, 3267, 0, - 0, 3395, 0, - 0, 3523, 0, - 0, 3653, 0, - 3025, 1895, 2745, - 3024, 1896, 2744, - 3024, 1897, 2744, - 3024, 1899, 2744, - 3024, 1901, 2743, - 3023, 1904, 2742, - 3022, 1908, 2741, - 3022, 1912, 2740, - 3020, 1919, 2738, - 3019, 1927, 2736, - 3017, 1938, 2733, - 3014, 1953, 2729, - 3010, 1971, 2723, - 3004, 1995, 2716, - 2997, 2025, 2705, - 2987, 2062, 2691, - 2974, 2108, 2671, - 2955, 2162, 2643, - 2929, 2226, 2603, - 2891, 2299, 2543, - 2835, 2382, 2447, - 2747, 2473, 2277, - 2595, 2572, 1852, - 2250, 2678, 0, - 0, 2789, 0, - 0, 2905, 0, - 0, 3024, 0, - 0, 3147, 0, - 0, 3272, 0, - 0, 3398, 0, - 0, 3526, 0, - 0, 3655, 0, - 3158, 2013, 2873, - 3158, 2013, 2873, - 3158, 2014, 2872, - 3157, 2015, 2872, - 3157, 2017, 2872, - 3157, 2019, 2871, - 3156, 2022, 2871, - 3156, 2026, 2870, - 3155, 2031, 2868, - 3154, 2038, 2867, - 3152, 2046, 2864, - 3150, 2058, 2861, - 3147, 2073, 2857, - 3143, 2092, 2851, - 3138, 2116, 2844, - 3130, 2147, 2833, - 3120, 2185, 2819, - 3107, 2231, 2799, - 3088, 2286, 2770, - 3062, 2351, 2730, - 3024, 2426, 2669, - 2968, 2509, 2572, - 2881, 2601, 2398, - 2730, 2701, 1955, - 2388, 2807, 0, - 0, 2919, 0, - 0, 3035, 0, - 0, 3155, 0, - 0, 3278, 0, - 0, 3403, 0, - 0, 3530, 0, - 0, 3658, 0, - 3291, 2133, 3002, - 3291, 2134, 3002, - 3291, 2135, 3002, - 3291, 2135, 3002, - 3290, 2137, 3001, - 3290, 2138, 3001, - 3290, 2141, 3000, - 3289, 2143, 3000, - 3288, 2147, 2999, - 3288, 2153, 2997, - 3286, 2159, 2996, - 3285, 2168, 2993, - 3283, 2180, 2990, - 3280, 2195, 2986, - 3276, 2215, 2980, - 3270, 2239, 2973, - 3263, 2271, 2962, - 3253, 2309, 2947, - 3240, 2356, 2927, - 3221, 2412, 2899, - 3195, 2478, 2858, - 3157, 2553, 2796, - 3102, 2638, 2698, - 3015, 2730, 2522, - 2864, 2831, 2065, - 2524, 2938, 0, - 0, 3050, 0, - 0, 3166, 0, - 0, 3287, 0, - 0, 3410, 0, - 0, 3535, 0, - 0, 3662, 0, - 3424, 2257, 3132, - 3424, 2257, 3132, - 3423, 2258, 3132, - 3423, 2258, 3132, - 3423, 2259, 3132, - 3423, 2261, 3131, - 3423, 2262, 3131, - 3422, 2264, 3130, - 3422, 2267, 3130, - 3421, 2271, 3129, - 3420, 2277, 3127, - 3419, 2284, 3126, - 3417, 2293, 3123, - 3415, 2304, 3120, - 3412, 2320, 3116, - 3408, 2340, 3110, - 3403, 2365, 3102, - 3396, 2397, 3092, - 3386, 2436, 3077, - 3373, 2483, 3057, - 3354, 2540, 3028, - 3328, 2606, 2987, - 3290, 2682, 2925, - 3235, 2767, 2826, - 3148, 2860, 2647, - 2997, 2961, 2179, - 2659, 3068, 0, - 0, 3181, 0, - 0, 3298, 0, - 0, 3418, 0, - 0, 3541, 0, - 0, 3666, 0, - 3556, 2382, 3263, - 3556, 2382, 3263, - 3556, 2383, 3262, - 3556, 2383, 3262, - 3556, 2384, 3262, - 3556, 2385, 3262, - 3556, 2386, 3262, - 3555, 2388, 3261, - 3555, 2390, 3261, - 3554, 2393, 3260, - 3554, 2397, 3259, - 3553, 2403, 3258, - 3552, 2410, 3256, - 3550, 2419, 3254, - 3548, 2431, 3250, - 3545, 2446, 3246, - 3541, 2466, 3240, - 3536, 2492, 3233, - 3529, 2524, 3222, - 3519, 2564, 3207, - 3505, 2612, 3187, - 3487, 2669, 3158, - 3461, 2736, 3117, - 3423, 2812, 3054, - 3368, 2897, 2955, - 3281, 2991, 2775, - 3131, 3092, 2297, - 2794, 3199, 0, - 0, 3312, 0, - 0, 3429, 0, - 0, 3550, 0, - 0, 3673, 0, - 3689, 2509, 3394, - 3689, 2509, 3393, - 3689, 2510, 3393, - 3689, 2510, 3393, - 3688, 2511, 3393, - 3688, 2511, 3393, - 3688, 2512, 3393, - 3688, 2514, 3392, - 3688, 2515, 3392, - 3687, 2518, 3392, - 3687, 2521, 3391, - 3686, 2525, 3390, - 3685, 2530, 3389, - 3684, 2537, 3387, - 3682, 2546, 3384, - 3680, 2559, 3381, - 3677, 2574, 3377, - 3673, 2595, 3371, - 3668, 2620, 3363, - 3661, 2653, 3353, - 3651, 2692, 3338, - 3638, 2741, 3318, - 3619, 2798, 3289, - 3593, 2865, 3247, - 3556, 2942, 3184, - 3500, 3028, 3084, - 3413, 3122, 2903, - 3264, 3223, 2419, - 2928, 3331, 0, - 0, 3443, 0, - 0, 3561, 0, - 0, 3681, 0, - 3821, 2637, 3525, - 3821, 2638, 3525, - 3821, 2638, 3525, - 3821, 2638, 3525, - 3821, 2639, 3524, - 3821, 2639, 3524, - 3821, 2640, 3524, - 3821, 2641, 3524, - 3820, 2642, 3524, - 3820, 2644, 3523, - 3820, 2646, 3523, - 3819, 2649, 3522, - 3818, 2653, 3521, - 3818, 2659, 3520, - 3816, 2666, 3518, - 3815, 2675, 3516, - 3813, 2687, 3512, - 3810, 2703, 3508, - 3806, 2724, 3502, - 3801, 2750, 3494, - 3793, 2782, 3484, - 3784, 2822, 3469, - 3770, 2871, 3448, - 3752, 2929, 3420, - 3725, 2996, 3378, - 3688, 3073, 3315, - 3633, 3159, 3215, - 3546, 3253, 3032, - 3396, 3354, 2543, - 3061, 3462, 0, - 0, 3575, 0, - 0, 3692, 0, - 3953, 2767, 3656, - 3953, 2767, 3656, - 3953, 2767, 3656, - 3953, 2767, 3656, - 3953, 2768, 3656, - 3953, 2768, 3656, - 3953, 2769, 3656, - 3953, 2769, 3656, - 3953, 2770, 3655, - 3953, 2772, 3655, - 3952, 2773, 3655, - 3952, 2776, 3654, - 3951, 2779, 3653, - 3951, 2783, 3652, - 3950, 2788, 3651, - 3949, 2795, 3649, - 3947, 2805, 3647, - 3945, 2817, 3644, - 3942, 2833, 3639, - 3938, 2854, 3634, - 3933, 2880, 3626, - 3926, 2912, 3615, - 3916, 2952, 3600, - 3902, 3001, 3580, - 3884, 3059, 3551, - 3858, 3127, 3509, - 3820, 3204, 3446, - 3765, 3290, 3345, - 3678, 3384, 3162, - 3529, 3486, 2669, - 3194, 3594, 0, - 0, 3707, 0, - 4086, 2897, 3788, - 4086, 2897, 3788, - 4086, 2897, 3788, - 4086, 2897, 3788, - 4086, 2897, 3788, - 4085, 2898, 3788, - 4085, 2898, 3787, - 4085, 2899, 3787, - 4085, 2899, 3787, - 4085, 2900, 3787, - 4085, 2902, 3787, - 4085, 2903, 3786, - 4084, 2906, 3786, - 4084, 2909, 3785, - 4083, 2913, 3784, - 4082, 2918, 3783, - 4081, 2926, 3781, - 4079, 2935, 3779, - 4077, 2947, 3775, - 4074, 2963, 3771, - 4070, 2984, 3765, - 4065, 3010, 3757, - 4058, 3043, 3747, - 4048, 3083, 3732, - 4035, 3132, 3711, - 4016, 3190, 3682, - 3990, 3258, 3640, - 3953, 3335, 3577, - 3897, 3421, 3476, - 3811, 3516, 3293, - 3661, 3617, 2796, - 3327, 3725, 0, - 4095, 3027, 3919, - 4095, 3027, 3919, - 4095, 3027, 3919, - 4095, 3027, 3919, - 4095, 3028, 3919, - 4095, 3028, 3919, - 4095, 3028, 3919, - 4095, 3029, 3919, - 4095, 3029, 3919, - 4095, 3030, 3919, - 4095, 3031, 3919, - 4095, 3032, 3918, - 4095, 3034, 3918, - 4095, 3036, 3917, - 4095, 3039, 3917, - 4095, 3044, 3916, - 4095, 3049, 3914, - 4095, 3056, 3913, - 4095, 3066, 3910, - 4095, 3078, 3907, - 4095, 3094, 3903, - 4095, 3115, 3897, - 4095, 3141, 3889, - 4095, 3174, 3878, - 4095, 3214, 3863, - 4095, 3263, 3843, - 4095, 3321, 3814, - 4095, 3389, 3772, - 4085, 3467, 3709, - 4030, 3553, 3608, - 3943, 3647, 3424, - 3794, 3749, 2925, - 4095, 3158, 4051, - 4095, 3158, 4051, - 4095, 3158, 4051, - 4095, 3158, 4051, - 4095, 3158, 4051, - 4095, 3159, 4051, - 4095, 3159, 4051, - 4095, 3159, 4051, - 4095, 3160, 4051, - 4095, 3160, 4051, - 4095, 3161, 4051, - 4095, 3162, 4050, - 4095, 3163, 4050, - 4095, 3165, 4050, - 4095, 3167, 4049, - 4095, 3170, 4048, - 4095, 3175, 4047, - 4095, 3180, 4046, - 4095, 3187, 4044, - 4095, 3197, 4042, - 4095, 3209, 4039, - 4095, 3225, 4035, - 4095, 3246, 4029, - 4095, 3272, 4021, - 4095, 3305, 4010, - 4095, 3346, 3995, - 4095, 3395, 3975, - 4095, 3453, 3946, - 4095, 3521, 3903, - 4095, 3598, 3840, - 4095, 3685, 3739, - 4075, 3779, 3555, - 0, 1092, 1347, - 0, 1097, 1342, - 0, 1104, 1336, - 0, 1112, 1327, - 0, 1124, 1315, - 0, 1139, 1298, - 0, 1159, 1275, - 0, 1183, 1242, - 0, 1215, 1193, - 0, 1253, 1119, - 0, 1300, 996, - 0, 1356, 751, - 0, 1422, 0, - 0, 1497, 0, - 0, 1581, 0, - 0, 1674, 0, - 0, 1774, 0, - 0, 1881, 0, - 0, 1993, 0, - 0, 2110, 0, - 0, 2230, 0, - 0, 2353, 0, - 0, 2478, 0, - 0, 2605, 0, - 0, 2733, 0, - 0, 2862, 0, - 0, 2992, 0, - 0, 3122, 0, - 0, 3253, 0, - 0, 3384, 0, - 0, 3516, 0, - 0, 3647, 0, - 0, 1093, 1354, - 0, 1098, 1350, - 0, 1105, 1343, - 0, 1114, 1335, - 0, 1126, 1323, - 0, 1141, 1306, - 0, 1160, 1283, - 0, 1185, 1251, - 0, 1216, 1203, - 0, 1254, 1131, - 0, 1301, 1011, - 0, 1357, 777, - 0, 1423, 0, - 0, 1498, 0, - 0, 1582, 0, - 0, 1674, 0, - 0, 1775, 0, - 0, 1881, 0, - 0, 1993, 0, - 0, 2110, 0, - 0, 2230, 0, - 0, 2353, 0, - 0, 2478, 0, - 0, 2605, 0, - 0, 2733, 0, - 0, 2862, 0, - 0, 2992, 0, - 0, 3122, 0, - 0, 3253, 0, - 0, 3384, 0, - 0, 3516, 0, - 0, 3647, 0, - 0, 1096, 1364, - 0, 1101, 1359, - 0, 1107, 1353, - 0, 1116, 1344, - 0, 1128, 1333, - 0, 1143, 1317, - 0, 1162, 1294, - 0, 1187, 1262, - 0, 1218, 1216, - 0, 1256, 1146, - 0, 1303, 1031, - 0, 1359, 809, - 0, 1424, 0, - 0, 1499, 0, - 0, 1583, 0, - 0, 1675, 0, - 0, 1775, 0, - 0, 1882, 0, - 0, 1994, 0, - 0, 2110, 0, - 0, 2230, 0, - 0, 2353, 0, - 0, 2478, 0, - 0, 2605, 0, - 0, 2733, 0, - 0, 2862, 0, - 0, 2992, 0, - 0, 3122, 0, - 0, 3253, 0, - 0, 3384, 0, - 0, 3516, 0, - 0, 3647, 0, - 0, 1099, 1376, - 0, 1104, 1371, - 0, 1110, 1365, - 0, 1119, 1357, - 0, 1131, 1346, - 0, 1146, 1330, - 0, 1165, 1308, - 0, 1189, 1278, - 0, 1220, 1233, - 0, 1258, 1165, - 0, 1305, 1056, - 0, 1360, 850, - 0, 1425, 185, - 0, 1500, 0, - 0, 1584, 0, - 0, 1676, 0, - 0, 1776, 0, - 0, 1882, 0, - 0, 1994, 0, - 0, 2110, 0, - 0, 2230, 0, - 0, 2353, 0, - 0, 2478, 0, - 0, 2605, 0, - 0, 2733, 0, - 0, 2862, 0, - 0, 2992, 0, - 0, 3122, 0, - 0, 3253, 0, - 0, 3384, 0, - 0, 3516, 0, - 0, 3647, 0, - 0, 1103, 1392, - 0, 1108, 1387, - 0, 1114, 1381, - 0, 1123, 1373, - 0, 1135, 1363, - 0, 1149, 1348, - 0, 1168, 1327, - 0, 1193, 1297, - 0, 1223, 1255, - 0, 1261, 1190, - 0, 1307, 1087, - 0, 1363, 898, - 0, 1427, 365, - 0, 1502, 0, - 0, 1585, 0, - 0, 1677, 0, - 0, 1777, 0, - 0, 1883, 0, - 0, 1995, 0, - 0, 2111, 0, - 0, 2231, 0, - 0, 2354, 0, - 0, 2479, 0, - 0, 2605, 0, - 0, 2733, 0, - 0, 2862, 0, - 0, 2992, 0, - 0, 3122, 0, - 0, 3253, 0, - 0, 3384, 0, - 0, 3516, 0, - 0, 3647, 0, - 0, 1108, 1412, - 0, 1113, 1408, - 0, 1120, 1402, - 0, 1128, 1395, - 0, 1140, 1384, - 0, 1154, 1370, - 0, 1173, 1350, - 0, 1197, 1322, - 0, 1227, 1282, - 0, 1265, 1222, - 0, 1311, 1126, - 0, 1366, 956, - 0, 1430, 530, - 0, 1504, 0, - 0, 1587, 0, - 0, 1679, 0, - 0, 1778, 0, - 0, 1884, 0, - 0, 1995, 0, - 0, 2112, 0, - 0, 2231, 0, - 0, 2354, 0, - 0, 2479, 0, - 0, 2605, 0, - 0, 2733, 0, - 0, 2862, 0, - 0, 2992, 0, - 0, 3122, 0, - 0, 3253, 0, - 0, 3384, 0, - 0, 3516, 0, - 0, 3647, 0, - 0, 1115, 1438, - 0, 1120, 1434, - 0, 1127, 1429, - 0, 1135, 1421, - 0, 1146, 1412, - 0, 1161, 1398, - 0, 1179, 1380, - 0, 1203, 1353, - 0, 1233, 1316, - 0, 1270, 1260, - 0, 1315, 1173, - 0, 1370, 1023, - 0, 1434, 686, - 0, 1507, 0, - 0, 1590, 0, - 0, 1681, 0, - 0, 1780, 0, - 0, 1885, 0, - 0, 1996, 0, - 0, 2112, 0, - 0, 2232, 0, - 0, 2354, 0, - 0, 2479, 0, - 0, 2606, 0, - 0, 2734, 0, - 0, 2862, 0, - 0, 2992, 0, - 0, 3123, 0, - 0, 3253, 0, - 0, 3384, 0, - 0, 3516, 0, - 0, 3647, 0, - 503, 1125, 1470, - 461, 1130, 1467, - 397, 1136, 1462, - 296, 1144, 1455, - 111, 1155, 1446, - 0, 1169, 1433, - 0, 1188, 1416, - 0, 1211, 1392, - 0, 1240, 1358, - 0, 1277, 1307, - 0, 1322, 1230, - 0, 1375, 1100, - 0, 1438, 834, - 0, 1511, 0, - 0, 1593, 0, - 0, 1683, 0, - 0, 1782, 0, - 0, 1887, 0, - 0, 1998, 0, - 0, 2113, 0, - 0, 2233, 0, - 0, 2355, 0, - 0, 2480, 0, - 0, 2606, 0, - 0, 2734, 0, - 0, 2863, 0, - 0, 2992, 0, - 0, 3123, 0, - 0, 3253, 0, - 0, 3384, 0, - 0, 3516, 0, - 0, 3647, 0, - 919, 1137, 1510, - 902, 1142, 1507, - 879, 1148, 1502, - 847, 1156, 1496, - 799, 1167, 1488, - 726, 1180, 1477, - 606, 1198, 1461, - 371, 1221, 1439, - 0, 1250, 1409, - 0, 1286, 1364, - 0, 1330, 1296, - 0, 1382, 1186, - 0, 1444, 978, - 0, 1516, 303, - 0, 1597, 0, - 0, 1687, 0, - 0, 1785, 0, - 0, 1889, 0, - 0, 2000, 0, - 0, 2115, 0, - 0, 2234, 0, - 0, 2356, 0, - 0, 2480, 0, - 0, 2606, 0, - 0, 2734, 0, - 0, 2863, 0, - 0, 2993, 0, - 0, 3123, 0, - 0, 3253, 0, - 0, 3385, 0, - 0, 3516, 0, - 0, 3647, 0, - 1186, 1153, 1559, - 1177, 1158, 1556, - 1165, 1164, 1552, - 1148, 1171, 1546, - 1124, 1182, 1539, - 1090, 1195, 1529, - 1039, 1212, 1515, - 962, 1234, 1496, - 834, 1262, 1468, - 572, 1297, 1429, - 0, 1340, 1371, - 0, 1392, 1280, - 0, 1453, 1119, - 0, 1523, 738, - 0, 1603, 0, - 0, 1692, 0, - 0, 1789, 0, - 0, 1892, 0, - 0, 2002, 0, - 0, 2117, 0, - 0, 2235, 0, - 0, 2357, 0, - 0, 2481, 0, - 0, 2607, 0, - 0, 2735, 0, - 0, 2863, 0, - 0, 2993, 0, - 0, 3123, 0, - 0, 3254, 0, - 0, 3385, 0, - 0, 3516, 0, - 0, 3647, 0, - 1398, 1174, 1617, - 1393, 1178, 1614, - 1385, 1184, 1610, - 1375, 1191, 1606, - 1360, 1201, 1599, - 1340, 1214, 1590, - 1312, 1230, 1578, - 1271, 1251, 1561, - 1211, 1278, 1538, - 1114, 1312, 1505, - 942, 1354, 1456, - 504, 1404, 1382, - 0, 1463, 1258, - 0, 1532, 1012, - 0, 1611, 0, - 0, 1698, 0, - 0, 1794, 0, - 0, 1896, 0, - 0, 2005, 0, - 0, 2119, 0, - 0, 2237, 0, - 0, 2358, 0, - 0, 2482, 0, - 0, 2608, 0, - 0, 2735, 0, - 0, 2864, 0, - 0, 2993, 0, - 0, 3123, 0, - 0, 3254, 0, - 0, 3385, 0, - 0, 3516, 0, - 0, 3647, 0, - 1582, 1200, 1684, - 1579, 1204, 1682, - 1573, 1209, 1679, - 1567, 1216, 1674, - 1557, 1225, 1669, - 1544, 1237, 1661, - 1527, 1253, 1651, - 1502, 1273, 1637, - 1466, 1299, 1617, - 1414, 1331, 1589, - 1332, 1371, 1549, - 1195, 1420, 1489, - 903, 1477, 1395, - 0, 1544, 1226, - 0, 1621, 810, - 0, 1707, 0, - 0, 1801, 0, - 0, 1902, 0, - 0, 2010, 0, - 0, 2123, 0, - 0, 2240, 0, - 0, 2360, 0, - 0, 2484, 0, - 0, 2609, 0, - 0, 2736, 0, - 0, 2864, 0, - 0, 2994, 0, - 0, 3124, 0, - 0, 3254, 0, - 0, 3385, 0, - 0, 3516, 0, - 0, 3648, 0, - 1750, 1232, 1761, - 1747, 1236, 1759, - 1744, 1241, 1756, - 1739, 1248, 1753, - 1732, 1256, 1748, - 1724, 1268, 1742, - 1712, 1282, 1733, - 1695, 1301, 1721, - 1672, 1326, 1705, - 1640, 1356, 1682, - 1592, 1394, 1650, - 1520, 1440, 1602, - 1400, 1495, 1530, - 1165, 1560, 1412, - 102, 1634, 1180, - 0, 1718, 189, - 0, 1809, 0, - 0, 1909, 0, - 0, 2015, 0, - 0, 2127, 0, - 0, 2243, 0, - 0, 2363, 0, - 0, 2486, 0, - 0, 2611, 0, - 0, 2737, 0, - 0, 2865, 0, - 0, 2994, 0, - 0, 3124, 0, - 0, 3254, 0, - 0, 3385, 0, - 0, 3516, 0, - 0, 3648, 0, - 1906, 1272, 1846, - 1905, 1276, 1845, - 1902, 1280, 1843, - 1899, 1286, 1840, - 1894, 1294, 1836, - 1888, 1305, 1831, - 1880, 1319, 1824, - 1869, 1336, 1814, - 1853, 1359, 1801, - 1831, 1387, 1782, - 1801, 1422, 1757, - 1756, 1466, 1720, - 1689, 1518, 1665, - 1580, 1580, 1580, - 1375, 1651, 1434, - 723, 1732, 1111, - 0, 1821, 0, - 0, 1918, 0, - 0, 2023, 0, - 0, 2133, 0, - 0, 2248, 0, - 0, 2366, 0, - 0, 2488, 0, - 0, 2613, 0, - 0, 2739, 0, - 0, 2866, 0, - 0, 2995, 0, - 0, 3125, 0, - 0, 3255, 0, - 0, 3386, 0, - 0, 3517, 0, - 0, 3648, 0, - 2056, 1321, 1941, - 2055, 1324, 1939, - 2053, 1328, 1938, - 2051, 1334, 1935, - 2047, 1341, 1932, - 2043, 1350, 1928, - 2037, 1363, 1922, - 2029, 1379, 1914, - 2018, 1399, 1904, - 2003, 1425, 1889, - 1983, 1458, 1869, - 1953, 1498, 1840, - 1911, 1547, 1799, - 1847, 1605, 1737, - 1745, 1673, 1639, - 1558, 1750, 1461, - 1037, 1836, 997, - 0, 1931, 0, - 0, 2032, 0, - 0, 2140, 0, - 0, 2254, 0, - 0, 2371, 0, - 0, 2492, 0, - 0, 2615, 0, - 0, 2741, 0, - 0, 2868, 0, - 0, 2996, 0, - 0, 3126, 0, - 0, 3256, 0, - 0, 3386, 0, - 0, 3517, 0, - 0, 3648, 0, - 2201, 1379, 2042, - 2200, 1382, 2041, - 2199, 1386, 2040, - 2197, 1390, 2038, - 2195, 1397, 2035, - 2191, 1405, 2032, - 2187, 1416, 2027, - 2182, 1430, 2021, - 2174, 1449, 2013, - 2163, 1472, 2001, - 2149, 1502, 1986, - 2129, 1538, 1964, - 2100, 1583, 1933, - 2059, 1637, 1887, - 1998, 1701, 1819, - 1900, 1774, 1707, - 1724, 1856, 1496, - 1270, 1947, 780, - 0, 2045, 0, - 0, 2151, 0, - 0, 2262, 0, - 0, 2377, 0, - 0, 2497, 0, - 0, 2619, 0, - 0, 2744, 0, - 0, 2870, 0, - 0, 2998, 0, - 0, 3127, 0, - 0, 3256, 0, - 0, 3387, 0, - 0, 3518, 0, - 0, 3649, 0, - 2342, 1447, 2150, - 2342, 1449, 2149, - 2341, 1452, 2148, - 2339, 1456, 2146, - 2338, 1462, 2145, - 2335, 1469, 2142, - 2332, 1479, 2138, - 2328, 1491, 2133, - 2323, 1507, 2127, - 2315, 1528, 2118, - 2305, 1554, 2106, - 2290, 1587, 2089, - 2271, 1628, 2066, - 2243, 1677, 2032, - 2203, 1735, 1984, - 2143, 1803, 1909, - 2049, 1881, 1785, - 1880, 1967, 1538, - 1465, 2062, 3, - 0, 2164, 0, - 0, 2272, 0, - 0, 2385, 0, - 0, 2503, 0, - 0, 2624, 0, - 0, 2747, 0, - 0, 2873, 0, - 0, 3000, 0, - 0, 3128, 0, - 0, 3258, 0, - 0, 3388, 0, - 0, 3518, 0, - 0, 3649, 0, - 2481, 1524, 2263, - 2481, 1526, 2262, - 2480, 1528, 2261, - 2479, 1532, 2260, - 2478, 1537, 2259, - 2476, 1543, 2257, - 2474, 1551, 2254, - 2471, 1561, 2250, - 2467, 1575, 2245, - 2461, 1593, 2238, - 2454, 1616, 2229, - 2444, 1645, 2216, - 2430, 1681, 2199, - 2410, 1725, 2174, - 2383, 1778, 2139, - 2344, 1840, 2087, - 2285, 1912, 2007, - 2193, 1993, 1872, - 2030, 2083, 1589, - 1639, 2181, 0, - 0, 2285, 0, - 0, 2396, 0, - 0, 2511, 0, - 0, 2630, 0, - 0, 2752, 0, - 0, 2876, 0, - 0, 3003, 0, - 0, 3130, 0, - 0, 3259, 0, - 0, 3389, 0, - 0, 3519, 0, - 0, 3650, 0, - 2618, 1610, 2380, - 2618, 1611, 2380, - 2617, 1614, 2379, - 2617, 1617, 2378, - 2616, 1620, 2377, - 2615, 1626, 2375, - 2613, 1632, 2373, - 2611, 1641, 2370, - 2608, 1653, 2367, - 2604, 1668, 2361, - 2598, 1687, 2354, - 2591, 1712, 2345, - 2581, 1743, 2331, - 2567, 1782, 2313, - 2548, 1829, 2287, - 2521, 1885, 2251, - 2482, 1950, 2197, - 2424, 2026, 2112, - 2333, 2110, 1967, - 2174, 2202, 1650, - 1800, 2303, 0, - 0, 2409, 0, - 0, 2522, 0, - 0, 2638, 0, - 0, 2758, 0, - 0, 2881, 0, - 0, 3006, 0, - 0, 3133, 0, - 0, 3261, 0, - 0, 3390, 0, - 0, 3520, 0, - 0, 3651, 0, - 2754, 1704, 2501, - 2754, 1705, 2500, - 2754, 1707, 2500, - 2753, 1710, 2499, - 2752, 1713, 2498, - 2751, 1717, 2497, - 2750, 1723, 2496, - 2749, 1730, 2493, - 2746, 1739, 2490, - 2743, 1752, 2486, - 2739, 1768, 2481, - 2734, 1789, 2474, - 2727, 1815, 2464, - 2717, 1849, 2450, - 2703, 1889, 2432, - 2684, 1939, 2405, - 2657, 1997, 2367, - 2619, 2066, 2311, - 2562, 2143, 2223, - 2472, 2230, 2069, - 2315, 2325, 1720, - 1952, 2427, 0, - 0, 2535, 0, - 0, 2649, 0, - 0, 2767, 0, - 0, 2888, 0, - 0, 3011, 0, - 0, 3137, 0, - 0, 3264, 0, - 0, 3392, 0, - 0, 3522, 0, - 0, 3652, 0, - 2889, 1806, 2624, - 2889, 1807, 2624, - 2889, 1808, 2624, - 2888, 1810, 2623, - 2888, 1813, 2622, - 2887, 1816, 2621, - 2886, 1821, 2620, - 2885, 1826, 2619, - 2883, 1834, 2616, - 2881, 1844, 2613, - 2878, 1858, 2609, - 2874, 1875, 2604, - 2869, 1897, 2596, - 2861, 1925, 2586, - 2852, 1959, 2572, - 2838, 2002, 2553, - 2819, 2054, 2526, - 2792, 2114, 2487, - 2754, 2185, 2429, - 2698, 2265, 2338, - 2609, 2353, 2178, - 2454, 2450, 1799, - 2099, 2553, 0, - 0, 2663, 0, - 0, 2777, 0, - 0, 2896, 0, - 0, 3018, 0, - 0, 3142, 0, - 0, 3268, 0, - 0, 3395, 0, - 0, 3524, 0, - 0, 3653, 0, - 3023, 1914, 2750, - 3023, 1915, 2749, - 3023, 1916, 2749, - 3023, 1917, 2749, - 3022, 1919, 2748, - 3022, 1922, 2748, - 3021, 1925, 2747, - 3020, 1930, 2745, - 3019, 1936, 2744, - 3017, 1944, 2741, - 3015, 1955, 2738, - 3012, 1969, 2734, - 3008, 1987, 2729, - 3003, 2010, 2721, - 2996, 2039, 2711, - 2986, 2075, 2697, - 2972, 2119, 2677, - 2953, 2172, 2650, - 2927, 2235, 2610, - 2889, 2307, 2551, - 2833, 2388, 2457, - 2744, 2478, 2291, - 2591, 2576, 1888, - 2242, 2681, 0, - 0, 2792, 0, - 0, 2907, 0, - 0, 3026, 0, - 0, 3148, 0, - 0, 3273, 0, - 0, 3399, 0, - 0, 3527, 0, - 0, 3655, 0, - 3157, 2027, 2877, - 3157, 2028, 2877, - 3157, 2028, 2876, - 3156, 2030, 2876, - 3156, 2031, 2876, - 3156, 2033, 2875, - 3155, 2036, 2874, - 3155, 2040, 2874, - 3154, 2045, 2872, - 3152, 2051, 2871, - 3151, 2059, 2868, - 3149, 2071, 2865, - 3146, 2085, 2861, - 3142, 2104, 2855, - 3136, 2127, 2848, - 3129, 2157, 2837, - 3119, 2194, 2823, - 3106, 2240, 2803, - 3087, 2294, 2775, - 3061, 2358, 2735, - 3023, 2431, 2675, - 2967, 2514, 2579, - 2879, 2605, 2409, - 2727, 2704, 1984, - 2382, 2810, 0, - 0, 2921, 0, - 0, 3037, 0, - 0, 3157, 0, - 0, 3279, 0, - 0, 3404, 0, - 0, 3530, 0, - 0, 3658, 0, - 3290, 2144, 3005, - 3290, 2145, 3005, - 3290, 2145, 3005, - 3290, 2146, 3005, - 3290, 2148, 3004, - 3289, 2149, 3004, - 3289, 2151, 3003, - 3288, 2154, 3003, - 3288, 2158, 3002, - 3287, 2163, 3000, - 3286, 2170, 2999, - 3284, 2178, 2996, - 3282, 2190, 2993, - 3279, 2205, 2989, - 3275, 2224, 2983, - 3270, 2248, 2976, - 3262, 2279, 2965, - 3253, 2317, 2951, - 3239, 2363, 2931, - 3220, 2418, 2902, - 3194, 2483, 2862, - 3156, 2558, 2801, - 3101, 2641, 2704, - 3013, 2733, 2530, - 2862, 2833, 2087, - 2520, 2939, 0, - 0, 3051, 0, - 0, 3168, 0, - 0, 3287, 0, - 0, 3410, 0, - 0, 3535, 0, - 0, 3662, 0, - 3423, 2265, 3134, - 3423, 2265, 3134, - 3423, 2266, 3134, - 3423, 2267, 3134, - 3423, 2268, 3134, - 3422, 2269, 3133, - 3422, 2270, 3133, - 3422, 2273, 3132, - 3421, 2276, 3132, - 3421, 2279, 3131, - 3420, 2285, 3130, - 3418, 2291, 3128, - 3417, 2300, 3125, - 3415, 2312, 3122, - 3412, 2327, 3118, - 3408, 2347, 3112, - 3403, 2371, 3105, - 3395, 2403, 3094, - 3386, 2441, 3080, - 3372, 2488, 3059, - 3353, 2545, 3031, - 3327, 2610, 2990, - 3290, 2685, 2928, - 3234, 2770, 2830, - 3147, 2863, 2654, - 2996, 2963, 2197, - 2656, 3070, 0, - 0, 3182, 0, - 0, 3298, 0, - 0, 3419, 0, - 0, 3542, 0, - 0, 3667, 0, - 3556, 2388, 3264, - 3556, 2389, 3264, - 3556, 2389, 3264, - 3556, 2390, 3264, - 3555, 2390, 3264, - 3555, 2391, 3264, - 3555, 2393, 3263, - 3555, 2394, 3263, - 3554, 2397, 3262, - 3554, 2400, 3262, - 3553, 2403, 3261, - 3552, 2409, 3259, - 3551, 2416, 3258, - 3550, 2425, 3255, - 3547, 2437, 3252, - 3544, 2452, 3248, - 3541, 2472, 3242, - 3535, 2497, 3234, - 3528, 2529, 3224, - 3518, 2568, 3209, - 3505, 2615, 3189, - 3486, 2672, 3160, - 3460, 2738, 3119, - 3422, 2814, 3057, - 3367, 2899, 2958, - 3280, 2992, 2780, - 3130, 3093, 2311, - 2791, 3200, 0, - 0, 3313, 0, - 0, 3430, 0, - 0, 3550, 0, - 0, 3673, 0, - 3688, 2514, 3395, - 3688, 2514, 3395, - 3688, 2515, 3395, - 3688, 2515, 3395, - 3688, 2515, 3394, - 3688, 2516, 3394, - 3688, 2517, 3394, - 3688, 2518, 3394, - 3687, 2520, 3393, - 3687, 2522, 3393, - 3686, 2525, 3392, - 3686, 2529, 3391, - 3685, 2535, 3390, - 3684, 2542, 3388, - 3682, 2551, 3386, - 3680, 2563, 3383, - 3677, 2579, 3378, - 3673, 2599, 3373, - 3668, 2624, 3365, - 3661, 2656, 3354, - 3651, 2696, 3339, - 3637, 2744, 3319, - 3619, 2801, 3290, - 3593, 2868, 3249, - 3555, 2944, 3186, - 3500, 3029, 3087, - 3413, 3123, 2907, - 3263, 3224, 2429, - 2926, 3331, 0, - 0, 3444, 0, - 0, 3561, 0, - 0, 3682, 0, - 3821, 2641, 3526, - 3821, 2641, 3526, - 3821, 2641, 3526, - 3821, 2642, 3526, - 3821, 2642, 3525, - 3821, 2643, 3525, - 3820, 2643, 3525, - 3820, 2644, 3525, - 3820, 2646, 3525, - 3820, 2647, 3524, - 3819, 2650, 3524, - 3819, 2653, 3523, - 3818, 2657, 3522, - 3817, 2662, 3521, - 3816, 2669, 3519, - 3815, 2679, 3517, - 3812, 2691, 3513, - 3809, 2706, 3509, - 3806, 2727, 3503, - 3800, 2752, 3495, - 3793, 2785, 3485, - 3783, 2825, 3470, - 3770, 2873, 3450, - 3751, 2930, 3421, - 3725, 2998, 3379, - 3688, 3074, 3316, - 3632, 3160, 3216, - 3546, 3254, 3035, - 3396, 3355, 2551, - 3060, 3463, 0, - 0, 3576, 0, - 0, 3693, 0, - 3953, 2769, 3657, - 3953, 2770, 3657, - 3953, 2770, 3657, - 3953, 2770, 3657, - 3953, 2770, 3657, - 3953, 2771, 3657, - 3953, 2771, 3656, - 3953, 2772, 3656, - 3953, 2773, 3656, - 3952, 2774, 3656, - 3952, 2776, 3655, - 3952, 2778, 3655, - 3951, 2781, 3654, - 3951, 2785, 3653, - 3950, 2791, 3652, - 3948, 2798, 3650, - 3947, 2807, 3648, - 3945, 2820, 3644, - 3942, 2835, 3640, - 3938, 2856, 3634, - 3933, 2882, 3627, - 3925, 2914, 3616, - 3916, 2954, 3601, - 3902, 3003, 3581, - 3884, 3061, 3552, - 3858, 3128, 3510, - 3820, 3205, 3447, - 3765, 3291, 3347, - 3678, 3385, 3165, - 3528, 3486, 2675, - 3193, 3594, 0, - 0, 3707, 0, - 4085, 2899, 3788, - 4085, 2899, 3788, - 4085, 2899, 3788, - 4085, 2899, 3788, - 4085, 2899, 3788, - 4085, 2900, 3788, - 4085, 2900, 3788, - 4085, 2901, 3788, - 4085, 2901, 3788, - 4085, 2902, 3787, - 4085, 2904, 3787, - 4084, 2905, 3787, - 4084, 2908, 3786, - 4084, 2911, 3785, - 4083, 2915, 3784, - 4082, 2920, 3783, - 4081, 2928, 3781, - 4079, 2937, 3779, - 4077, 2949, 3776, - 4074, 2965, 3772, - 4070, 2986, 3766, - 4065, 3012, 3758, - 4058, 3044, 3747, - 4048, 3084, 3732, - 4035, 3133, 3712, - 4016, 3191, 3683, - 3990, 3259, 3641, - 3952, 3336, 3578, - 3897, 3422, 3477, - 3811, 3516, 3295, - 3661, 3618, 2801, - 3326, 3726, 0, - 4095, 3029, 3920, - 4095, 3029, 3920, - 4095, 3029, 3920, - 4095, 3029, 3920, - 4095, 3029, 3920, - 4095, 3029, 3920, - 4095, 3030, 3920, - 4095, 3030, 3920, - 4095, 3031, 3919, - 4095, 3031, 3919, - 4095, 3032, 3919, - 4095, 3034, 3919, - 4095, 3035, 3918, - 4095, 3038, 3918, - 4095, 3041, 3917, - 4095, 3045, 3916, - 4095, 3050, 3915, - 4095, 3058, 3913, - 4095, 3067, 3911, - 4095, 3079, 3907, - 4095, 3095, 3903, - 4095, 3116, 3897, - 4095, 3142, 3889, - 4095, 3175, 3879, - 4095, 3215, 3864, - 4095, 3264, 3843, - 4095, 3322, 3814, - 4095, 3390, 3772, - 4085, 3467, 3709, - 4029, 3553, 3609, - 3943, 3648, 3425, - 3793, 3750, 2928, - 4095, 3159, 4052, - 4095, 3159, 4052, - 4095, 3159, 4052, - 4095, 3159, 4052, - 4095, 3160, 4052, - 4095, 3160, 4051, - 4095, 3160, 4051, - 4095, 3160, 4051, - 4095, 3161, 4051, - 4095, 3161, 4051, - 4095, 3162, 4051, - 4095, 3163, 4051, - 4095, 3164, 4050, - 4095, 3166, 4050, - 4095, 3168, 4049, - 4095, 3171, 4049, - 4095, 3176, 4048, - 4095, 3181, 4046, - 4095, 3188, 4045, - 4095, 3198, 4042, - 4095, 3210, 4039, - 4095, 3226, 4035, - 4095, 3247, 4029, - 4095, 3273, 4021, - 4095, 3306, 4010, - 4095, 3346, 3996, - 4095, 3395, 3975, - 4095, 3454, 3946, - 4095, 3521, 3904, - 4095, 3599, 3841, - 4095, 3685, 3740, - 4075, 3780, 3556, - 0, 1218, 1478, - 0, 1222, 1474, - 0, 1228, 1469, - 0, 1234, 1463, - 0, 1243, 1454, - 0, 1255, 1441, - 0, 1270, 1424, - 0, 1290, 1401, - 0, 1314, 1367, - 0, 1346, 1318, - 0, 1384, 1242, - 0, 1431, 1116, - 0, 1488, 863, - 0, 1553, 0, - 0, 1629, 0, - 0, 1713, 0, - 0, 1806, 0, - 0, 1906, 0, - 0, 2013, 0, - 0, 2125, 0, - 0, 2242, 0, - 0, 2362, 0, - 0, 2485, 0, - 0, 2610, 0, - 0, 2737, 0, - 0, 2865, 0, - 0, 2994, 0, - 0, 3124, 0, - 0, 3254, 0, - 0, 3385, 0, - 0, 3516, 0, - 0, 3648, 0, - 0, 1220, 1483, - 0, 1224, 1479, - 0, 1229, 1475, - 0, 1236, 1468, - 0, 1245, 1459, - 0, 1256, 1447, - 0, 1271, 1430, - 0, 1291, 1407, - 0, 1316, 1374, - 0, 1347, 1325, - 0, 1385, 1251, - 0, 1432, 1128, - 0, 1488, 883, - 0, 1554, 0, - 0, 1629, 0, - 0, 1713, 0, - 0, 1806, 0, - 0, 1906, 0, - 0, 2013, 0, - 0, 2125, 0, - 0, 2242, 0, - 0, 2362, 0, - 0, 2485, 0, - 0, 2610, 0, - 0, 2737, 0, - 0, 2865, 0, - 0, 2994, 0, - 0, 3124, 0, - 0, 3254, 0, - 0, 3385, 0, - 0, 3516, 0, - 0, 3648, 0, - 0, 1222, 1490, - 0, 1225, 1486, - 0, 1231, 1482, - 0, 1237, 1475, - 0, 1246, 1467, - 0, 1258, 1455, - 0, 1273, 1438, - 0, 1292, 1415, - 0, 1317, 1383, - 0, 1348, 1335, - 0, 1387, 1263, - 0, 1433, 1143, - 0, 1489, 909, - 0, 1555, 0, - 0, 1630, 0, - 0, 1714, 0, - 0, 1807, 0, - 0, 1907, 0, - 0, 2013, 0, - 0, 2125, 0, - 0, 2242, 0, - 0, 2362, 0, - 0, 2485, 0, - 0, 2610, 0, - 0, 2737, 0, - 0, 2865, 0, - 0, 2994, 0, - 0, 3124, 0, - 0, 3254, 0, - 0, 3385, 0, - 0, 3516, 0, - 0, 3648, 0, - 0, 1224, 1499, - 0, 1228, 1496, - 0, 1233, 1491, - 0, 1240, 1485, - 0, 1248, 1476, - 0, 1260, 1465, - 0, 1275, 1449, - 0, 1294, 1426, - 0, 1319, 1395, - 0, 1350, 1348, - 0, 1388, 1278, - 0, 1435, 1163, - 0, 1491, 942, - 0, 1556, 111, - 0, 1631, 0, - 0, 1715, 0, - 0, 1807, 0, - 0, 1907, 0, - 0, 2014, 0, - 0, 2126, 0, - 0, 2242, 0, - 0, 2362, 0, - 0, 2485, 0, - 0, 2610, 0, - 0, 2737, 0, - 0, 2865, 0, - 0, 2994, 0, - 0, 3124, 0, - 0, 3254, 0, - 0, 3385, 0, - 0, 3516, 0, - 0, 3648, 0, - 0, 1227, 1511, - 0, 1231, 1508, - 0, 1236, 1503, - 0, 1243, 1497, - 0, 1251, 1489, - 0, 1263, 1478, - 0, 1278, 1462, - 0, 1297, 1441, - 0, 1321, 1410, - 0, 1352, 1365, - 0, 1390, 1298, - 0, 1437, 1188, - 0, 1492, 982, - 0, 1557, 317, - 0, 1632, 0, - 0, 1716, 0, - 0, 1808, 0, - 0, 1908, 0, - 0, 2014, 0, - 0, 2126, 0, - 0, 2243, 0, - 0, 2363, 0, - 0, 2485, 0, - 0, 2610, 0, - 0, 2737, 0, - 0, 2865, 0, - 0, 2994, 0, - 0, 3124, 0, - 0, 3254, 0, - 0, 3385, 0, - 0, 3516, 0, - 0, 3648, 0, - 0, 1231, 1527, - 0, 1235, 1524, - 0, 1240, 1519, - 0, 1247, 1514, - 0, 1255, 1506, - 0, 1267, 1495, - 0, 1281, 1480, - 0, 1300, 1459, - 0, 1325, 1429, - 0, 1355, 1387, - 0, 1393, 1322, - 0, 1439, 1219, - 0, 1495, 1030, - 0, 1559, 497, - 0, 1634, 0, - 0, 1717, 0, - 0, 1809, 0, - 0, 1909, 0, - 0, 2015, 0, - 0, 2127, 0, - 0, 2243, 0, - 0, 2363, 0, - 0, 2486, 0, - 0, 2611, 0, - 0, 2737, 0, - 0, 2865, 0, - 0, 2994, 0, - 0, 3124, 0, - 0, 3254, 0, - 0, 3385, 0, - 0, 3516, 0, - 0, 3648, 0, - 0, 1237, 1547, - 0, 1240, 1544, - 0, 1245, 1540, - 0, 1252, 1534, - 0, 1260, 1527, - 0, 1272, 1516, - 0, 1286, 1502, - 0, 1305, 1482, - 0, 1329, 1454, - 0, 1360, 1414, - 0, 1397, 1354, - 0, 1443, 1258, - 0, 1498, 1088, - 0, 1562, 662, - 0, 1636, 0, - 0, 1719, 0, - 0, 1811, 0, - 0, 1910, 0, - 0, 2016, 0, - 0, 2128, 0, - 0, 2244, 0, - 0, 2363, 0, - 0, 2486, 0, - 0, 2611, 0, - 0, 2737, 0, - 0, 2865, 0, - 0, 2994, 0, - 0, 3124, 0, - 0, 3255, 0, - 0, 3385, 0, - 0, 3516, 0, - 0, 3648, 0, - 0, 1244, 1573, - 0, 1248, 1570, - 0, 1252, 1566, - 0, 1259, 1561, - 0, 1267, 1554, - 0, 1278, 1544, - 0, 1293, 1530, - 0, 1311, 1512, - 0, 1335, 1486, - 0, 1365, 1448, - 0, 1402, 1392, - 0, 1448, 1306, - 0, 1502, 1155, - 0, 1566, 818, - 0, 1639, 0, - 0, 1722, 0, - 0, 1813, 0, - 0, 1912, 0, - 0, 2017, 0, - 0, 2129, 0, - 0, 2244, 0, - 0, 2364, 0, - 0, 2486, 0, - 0, 2611, 0, - 0, 2738, 0, - 0, 2866, 0, - 0, 2995, 0, - 0, 3124, 0, - 0, 3255, 0, - 0, 3385, 0, - 0, 3516, 0, - 0, 3648, 0, - 664, 1253, 1605, - 635, 1257, 1602, - 593, 1262, 1599, - 530, 1268, 1594, - 428, 1276, 1587, - 243, 1287, 1578, - 0, 1301, 1566, - 0, 1320, 1548, - 0, 1343, 1524, - 0, 1372, 1490, - 0, 1409, 1440, - 0, 1454, 1362, - 0, 1507, 1232, - 0, 1570, 966, - 0, 1643, 0, - 0, 1725, 0, - 0, 1816, 0, - 0, 1914, 0, - 0, 2019, 0, - 0, 2130, 0, - 0, 2245, 0, - 0, 2365, 0, - 0, 2487, 0, - 0, 2612, 0, - 0, 2738, 0, - 0, 2866, 0, - 0, 2995, 0, - 0, 3124, 0, - 0, 3255, 0, - 0, 3385, 0, - 0, 3517, 0, - 0, 3648, 0, - 1063, 1266, 1645, - 1051, 1269, 1642, - 1034, 1274, 1639, - 1011, 1280, 1635, - 979, 1288, 1628, - 931, 1299, 1620, - 858, 1313, 1609, - 738, 1330, 1593, - 503, 1353, 1571, - 0, 1382, 1541, - 0, 1418, 1496, - 0, 1462, 1428, - 0, 1514, 1318, - 0, 1577, 1110, - 0, 1648, 435, - 0, 1729, 0, - 0, 1819, 0, - 0, 1917, 0, - 0, 2021, 0, - 0, 2132, 0, - 0, 2247, 0, - 0, 2366, 0, - 0, 2488, 0, - 0, 2612, 0, - 0, 2739, 0, - 0, 2866, 0, - 0, 2995, 0, - 0, 3125, 0, - 0, 3255, 0, - 0, 3386, 0, - 0, 3517, 0, - 0, 3648, 0, - 1325, 1282, 1693, - 1318, 1285, 1691, - 1309, 1290, 1688, - 1297, 1296, 1684, - 1280, 1303, 1678, - 1256, 1314, 1671, - 1222, 1327, 1661, - 1172, 1344, 1647, - 1095, 1366, 1628, - 966, 1394, 1601, - 704, 1429, 1562, - 0, 1472, 1503, - 0, 1524, 1412, - 0, 1585, 1251, - 0, 1655, 870, - 0, 1735, 0, - 0, 1824, 0, - 0, 1921, 0, - 0, 2024, 0, - 0, 2134, 0, - 0, 2249, 0, - 0, 2367, 0, - 0, 2489, 0, - 0, 2613, 0, - 0, 2739, 0, - 0, 2867, 0, - 0, 2995, 0, - 0, 3125, 0, - 0, 3255, 0, - 0, 3386, 0, - 0, 3517, 0, - 0, 3648, 0, - 1535, 1302, 1751, - 1530, 1306, 1749, - 1525, 1310, 1746, - 1517, 1316, 1742, - 1507, 1323, 1738, - 1492, 1333, 1731, - 1472, 1346, 1722, - 1444, 1362, 1710, - 1404, 1384, 1693, - 1343, 1411, 1670, - 1246, 1444, 1637, - 1074, 1486, 1588, - 636, 1536, 1514, - 0, 1595, 1390, - 0, 1664, 1144, - 0, 1743, 0, - 0, 1830, 0, - 0, 1926, 0, - 0, 2029, 0, - 0, 2137, 0, - 0, 2251, 0, - 0, 2369, 0, - 0, 2490, 0, - 0, 2614, 0, - 0, 2740, 0, - 0, 2867, 0, - 0, 2996, 0, - 0, 3125, 0, - 0, 3255, 0, - 0, 3386, 0, - 0, 3517, 0, - 0, 3648, 0, - 1717, 1329, 1818, - 1714, 1332, 1816, - 1711, 1336, 1814, - 1706, 1341, 1811, - 1699, 1348, 1806, - 1689, 1357, 1801, - 1676, 1370, 1793, - 1659, 1385, 1783, - 1634, 1406, 1769, - 1598, 1431, 1749, - 1546, 1464, 1721, - 1465, 1503, 1681, - 1327, 1552, 1621, - 1035, 1609, 1527, - 0, 1676, 1358, - 0, 1753, 942, - 0, 1839, 0, - 0, 1933, 0, - 0, 2034, 0, - 0, 2142, 0, - 0, 2255, 0, - 0, 2372, 0, - 0, 2492, 0, - 0, 2616, 0, - 0, 2741, 0, - 0, 2868, 0, - 0, 2997, 0, - 0, 3126, 0, - 0, 3256, 0, - 0, 3386, 0, - 0, 3517, 0, - 0, 3648, 0, - 1884, 1361, 1894, - 1882, 1364, 1893, - 1879, 1368, 1891, - 1876, 1373, 1888, - 1871, 1380, 1885, - 1865, 1388, 1880, - 1856, 1400, 1874, - 1844, 1414, 1865, - 1827, 1433, 1853, - 1805, 1458, 1837, - 1772, 1488, 1814, - 1724, 1526, 1782, - 1652, 1572, 1734, - 1532, 1627, 1662, - 1297, 1692, 1544, - 234, 1766, 1313, - 0, 1850, 322, - 0, 1942, 0, - 0, 2041, 0, - 0, 2147, 0, - 0, 2259, 0, - 0, 2375, 0, - 0, 2495, 0, - 0, 2618, 0, - 0, 2743, 0, - 0, 2869, 0, - 0, 2997, 0, - 0, 3126, 0, - 0, 3256, 0, - 0, 3387, 0, - 0, 3517, 0, - 0, 3648, 0, - 2040, 1402, 1980, - 2038, 1405, 1979, - 2037, 1408, 1977, - 2034, 1413, 1975, - 2031, 1419, 1972, - 2026, 1427, 1968, - 2020, 1437, 1963, - 2012, 1451, 1956, - 2001, 1468, 1946, - 1985, 1491, 1933, - 1964, 1519, 1914, - 1933, 1555, 1889, - 1888, 1598, 1852, - 1821, 1650, 1797, - 1712, 1712, 1712, - 1507, 1783, 1566, - 855, 1864, 1243, - 0, 1953, 0, - 0, 2051, 0, - 0, 2155, 0, - 0, 2265, 0, - 0, 2380, 0, - 0, 2499, 0, - 0, 2620, 0, - 0, 2745, 0, - 0, 2871, 0, - 0, 2999, 0, - 0, 3127, 0, - 0, 3257, 0, - 0, 3387, 0, - 0, 3518, 0, - 0, 3649, 0, - 2189, 1451, 2074, - 2188, 1453, 2073, - 2187, 1456, 2071, - 2185, 1461, 2070, - 2183, 1466, 2067, - 2180, 1473, 2064, - 2175, 1483, 2060, - 2169, 1495, 2054, - 2161, 1511, 2046, - 2151, 1531, 2036, - 2136, 1557, 2021, - 2115, 1590, 2001, - 2085, 1630, 1972, - 2043, 1679, 1931, - 1979, 1737, 1869, - 1877, 1805, 1771, - 1690, 1882, 1593, - 1170, 1968, 1129, - 0, 2063, 0, - 0, 2165, 0, - 0, 2273, 0, - 0, 2386, 0, - 0, 2503, 0, - 0, 2624, 0, - 0, 2747, 0, - 0, 2873, 0, - 0, 3000, 0, - 0, 3128, 0, - 0, 3258, 0, - 0, 3388, 0, - 0, 3518, 0, - 0, 3649, 0, - 2334, 1509, 2175, - 2333, 1511, 2174, - 2332, 1514, 2173, - 2331, 1518, 2172, - 2329, 1522, 2170, - 2327, 1529, 2167, - 2324, 1537, 2164, - 2319, 1548, 2159, - 2314, 1562, 2153, - 2306, 1581, 2145, - 2295, 1604, 2134, - 2281, 1634, 2118, - 2261, 1671, 2096, - 2232, 1716, 2065, - 2191, 1769, 2019, - 2130, 1833, 1951, - 2032, 1906, 1839, - 1856, 1988, 1628, - 1402, 2079, 912, - 0, 2177, 0, - 0, 2283, 0, - 0, 2394, 0, - 0, 2509, 0, - 0, 2629, 0, - 0, 2751, 0, - 0, 2876, 0, - 0, 3002, 0, - 0, 3130, 0, - 0, 3259, 0, - 0, 3389, 0, - 0, 3519, 0, - 0, 3650, 0, - 2475, 1577, 2283, - 2474, 1579, 2282, - 2474, 1581, 2281, - 2473, 1584, 2280, - 2472, 1588, 2279, - 2470, 1594, 2277, - 2468, 1601, 2274, - 2464, 1611, 2270, - 2460, 1623, 2266, - 2455, 1639, 2259, - 2447, 1660, 2250, - 2437, 1686, 2238, - 2423, 1719, 2221, - 2403, 1760, 2198, - 2375, 1809, 2165, - 2335, 1867, 2116, - 2275, 1935, 2041, - 2181, 2013, 1917, - 2012, 2099, 1670, - 1597, 2194, 135, - 0, 2296, 0, - 0, 2404, 0, - 0, 2517, 0, - 0, 2635, 0, - 0, 2756, 0, - 0, 2879, 0, - 0, 3005, 0, - 0, 3132, 0, - 0, 3260, 0, - 0, 3390, 0, - 0, 3520, 0, - 0, 3650, 0, - 2614, 1654, 2395, - 2613, 1656, 2395, - 2613, 1658, 2394, - 2612, 1660, 2393, - 2611, 1664, 2392, - 2610, 1669, 2391, - 2608, 1675, 2389, - 2606, 1683, 2386, - 2603, 1694, 2382, - 2599, 1707, 2377, - 2593, 1725, 2370, - 2586, 1748, 2361, - 2576, 1777, 2348, - 2562, 1813, 2331, - 2542, 1857, 2306, - 2515, 1910, 2271, - 2476, 1972, 2219, - 2417, 2044, 2139, - 2325, 2125, 2004, - 2162, 2215, 1721, - 1771, 2313, 0, - 0, 2417, 0, - 0, 2528, 0, - 0, 2643, 0, - 0, 2762, 0, - 0, 2884, 0, - 0, 3009, 0, - 0, 3135, 0, - 0, 3263, 0, - 0, 3391, 0, - 0, 3521, 0, - 0, 3651, 0, - 2751, 1741, 2513, - 2750, 1742, 2512, - 2750, 1744, 2512, - 2750, 1746, 2511, - 2749, 1749, 2510, - 2748, 1753, 2509, - 2747, 1758, 2507, - 2745, 1764, 2505, - 2743, 1773, 2502, - 2740, 1785, 2499, - 2736, 1800, 2493, - 2730, 1819, 2486, - 2723, 1844, 2477, - 2713, 1875, 2464, - 2699, 1914, 2445, - 2680, 1961, 2420, - 2653, 2017, 2383, - 2614, 2083, 2329, - 2556, 2158, 2244, - 2466, 2242, 2099, - 2306, 2335, 1782, - 1932, 2435, 0, - 0, 2542, 0, - 0, 2654, 0, - 0, 2770, 0, - 0, 2890, 0, - 0, 3013, 0, - 0, 3138, 0, - 0, 3265, 0, - 0, 3393, 0, - 0, 3522, 0, - 0, 3652, 0, - 2887, 1835, 2633, - 2886, 1836, 2633, - 2886, 1838, 2633, - 2886, 1839, 2632, - 2885, 1842, 2631, - 2884, 1845, 2630, - 2884, 1849, 2629, - 2882, 1855, 2628, - 2881, 1862, 2625, - 2878, 1872, 2623, - 2875, 1884, 2619, - 2871, 1900, 2613, - 2866, 1921, 2606, - 2859, 1948, 2596, - 2849, 1981, 2582, - 2835, 2021, 2564, - 2816, 2071, 2537, - 2789, 2130, 2499, - 2751, 2198, 2443, - 2694, 2275, 2355, - 2604, 2362, 2201, - 2447, 2457, 1852, - 2084, 2559, 0, - 0, 2668, 0, - 0, 2781, 0, - 0, 2899, 0, - 0, 3020, 0, - 0, 3143, 0, - 0, 3269, 0, - 0, 3396, 0, - 0, 3525, 0, - 0, 3654, 0, - 3021, 1937, 2757, - 3021, 1938, 2756, - 3021, 1939, 2756, - 3021, 1940, 2756, - 3020, 1942, 2755, - 3020, 1945, 2754, - 3019, 1948, 2754, - 3018, 1953, 2752, - 3017, 1959, 2751, - 3015, 1966, 2748, - 3013, 1977, 2745, - 3010, 1990, 2741, - 3006, 2007, 2736, - 3001, 2029, 2728, - 2994, 2057, 2718, - 2984, 2092, 2705, - 2970, 2134, 2685, - 2951, 2186, 2658, - 2924, 2247, 2619, - 2886, 2317, 2561, - 2830, 2397, 2470, - 2741, 2485, 2310, - 2586, 2582, 1931, - 2231, 2685, 0, - 0, 2795, 0, - 0, 2910, 0, - 0, 3028, 0, - 0, 3150, 0, - 0, 3274, 0, - 0, 3400, 0, - 0, 3527, 0, - 0, 3656, 0, - 3155, 2045, 2882, - 3155, 2046, 2882, - 3155, 2047, 2882, - 3155, 2048, 2881, - 3155, 2049, 2881, - 3154, 2051, 2880, - 3154, 2054, 2880, - 3153, 2057, 2879, - 3152, 2062, 2877, - 3151, 2068, 2876, - 3149, 2077, 2874, - 3147, 2087, 2870, - 3144, 2101, 2866, - 3140, 2119, 2861, - 3135, 2142, 2853, - 3128, 2171, 2843, - 3118, 2207, 2829, - 3104, 2251, 2809, - 3085, 2304, 2782, - 3059, 2367, 2742, - 3021, 2439, 2683, - 2965, 2520, 2589, - 2877, 2610, 2423, - 2723, 2708, 2020, - 2374, 2813, 0, - 0, 2924, 0, - 0, 3039, 0, - 0, 3158, 0, - 0, 3280, 0, - 0, 3405, 0, - 0, 3531, 0, - 0, 3659, 0, - 3289, 2158, 3009, - 3289, 2159, 3009, - 3289, 2160, 3009, - 3289, 2160, 3009, - 3288, 2162, 3008, - 3288, 2163, 3008, - 3288, 2165, 3007, - 3287, 2168, 3007, - 3287, 2172, 3006, - 3286, 2177, 3004, - 3285, 2183, 3003, - 3283, 2192, 3000, - 3281, 2203, 2997, - 3278, 2217, 2993, - 3274, 2236, 2988, - 3269, 2259, 2980, - 3261, 2289, 2969, - 3251, 2326, 2955, - 3238, 2372, 2935, - 3219, 2426, 2907, - 3193, 2490, 2867, - 3155, 2563, 2807, - 3099, 2646, 2711, - 3011, 2737, 2541, - 2859, 2836, 2116, - 2514, 2942, 0, - 0, 3053, 0, - 0, 3169, 0, - 0, 3289, 0, - 0, 3411, 0, - 0, 3536, 0, - 0, 3662, 0, - 3422, 2276, 3137, - 3422, 2276, 3137, - 3422, 2277, 3137, - 3422, 2278, 3137, - 3422, 2278, 3137, - 3422, 2280, 3136, - 3421, 2281, 3136, - 3421, 2283, 3135, - 3420, 2286, 3135, - 3420, 2290, 3134, - 3419, 2295, 3133, - 3418, 2302, 3131, - 3416, 2310, 3128, - 3414, 2322, 3125, - 3411, 2337, 3121, - 3407, 2356, 3115, - 3402, 2380, 3108, - 3394, 2411, 3097, - 3385, 2449, 3083, - 3371, 2495, 3063, - 3352, 2551, 3035, - 3326, 2615, 2994, - 3289, 2690, 2933, - 3233, 2773, 2836, - 3145, 2866, 2662, - 2994, 2965, 2219, - 2652, 3072, 0, - 0, 3183, 0, - 0, 3300, 0, - 0, 3420, 0, - 0, 3542, 0, - 0, 3667, 0, - 3555, 2397, 3267, - 3555, 2397, 3266, - 3555, 2398, 3266, - 3555, 2398, 3266, - 3555, 2399, 3266, - 3555, 2400, 3266, - 3555, 2401, 3266, - 3554, 2403, 3265, - 3554, 2405, 3265, - 3553, 2408, 3264, - 3553, 2412, 3263, - 3552, 2417, 3262, - 3551, 2423, 3260, - 3549, 2432, 3258, - 3547, 2444, 3254, - 3544, 2459, 3250, - 3540, 2479, 3245, - 3535, 2504, 3237, - 3527, 2535, 3226, - 3518, 2573, 3212, - 3504, 2621, 3191, - 3485, 2677, 3163, - 3459, 2742, 3122, - 3422, 2818, 3060, - 3366, 2902, 2962, - 3279, 2995, 2786, - 3128, 3095, 2329, - 2788, 3202, 0, - 0, 3314, 0, - 0, 3431, 0, - 0, 3551, 0, - 0, 3674, 0, - 3688, 2520, 3396, - 3688, 2521, 3396, - 3688, 2521, 3396, - 3688, 2521, 3396, - 3688, 2522, 3396, - 3688, 2522, 3396, - 3687, 2523, 3396, - 3687, 2525, 3395, - 3687, 2526, 3395, - 3687, 2529, 3394, - 3686, 2532, 3394, - 3685, 2536, 3393, - 3684, 2541, 3391, - 3683, 2548, 3390, - 3682, 2557, 3387, - 3679, 2569, 3384, - 3677, 2584, 3380, - 3673, 2604, 3374, - 3667, 2629, 3366, - 3660, 2661, 3356, - 3650, 2700, 3341, - 3637, 2748, 3321, - 3618, 2804, 3292, - 3592, 2871, 3251, - 3555, 2946, 3189, - 3499, 3031, 3090, - 3412, 3125, 2912, - 3262, 3225, 2443, - 2923, 3332, 0, - 0, 3445, 0, - 0, 3562, 0, - 0, 3682, 0, - 3820, 2646, 3527, - 3820, 2646, 3527, - 3820, 2646, 3527, - 3820, 2647, 3527, - 3820, 2647, 3527, - 3820, 2648, 3527, - 3820, 2648, 3526, - 3820, 2649, 3526, - 3820, 2651, 3526, - 3819, 2652, 3525, - 3819, 2654, 3525, - 3819, 2658, 3524, - 3818, 2662, 3523, - 3817, 2667, 3522, - 3816, 2674, 3520, - 3814, 2683, 3518, - 3812, 2695, 3515, - 3809, 2711, 3510, - 3805, 2731, 3505, - 3800, 2756, 3497, - 3793, 2788, 3486, - 3783, 2828, 3471, - 3769, 2876, 3451, - 3751, 2933, 3422, - 3725, 3000, 3381, - 3687, 3076, 3318, - 3632, 3161, 3219, - 3545, 3255, 3039, - 3395, 3356, 2562, - 3058, 3463, 0, - 0, 3576, 0, - 0, 3693, 0, - 3953, 2773, 3658, - 3953, 2773, 3658, - 3953, 2773, 3658, - 3953, 2774, 3658, - 3953, 2774, 3658, - 3953, 2774, 3658, - 3953, 2775, 3657, - 3953, 2776, 3657, - 3952, 2777, 3657, - 3952, 2778, 3657, - 3952, 2780, 3656, - 3952, 2782, 3656, - 3951, 2785, 3655, - 3950, 2789, 3654, - 3949, 2794, 3653, - 3948, 2801, 3651, - 3947, 2811, 3649, - 3944, 2823, 3645, - 3942, 2839, 3641, - 3938, 2859, 3635, - 3932, 2885, 3628, - 3925, 2917, 3617, - 3915, 2957, 3602, - 3902, 3005, 3582, - 3883, 3063, 3553, - 3857, 3130, 3511, - 3820, 3206, 3449, - 3764, 3292, 3349, - 3678, 3386, 3167, - 3528, 3487, 2683, - 3192, 3595, 0, - 0, 3708, 0, - 4085, 2901, 3789, - 4085, 2902, 3789, - 4085, 2902, 3789, - 4085, 2902, 3789, - 4085, 2902, 3789, - 4085, 2902, 3789, - 4085, 2903, 3789, - 4085, 2903, 3789, - 4085, 2904, 3788, - 4085, 2905, 3788, - 4085, 2906, 3788, - 4084, 2908, 3787, - 4084, 2910, 3787, - 4083, 2913, 3786, - 4083, 2918, 3785, - 4082, 2923, 3784, - 4081, 2930, 3782, - 4079, 2939, 3780, - 4077, 2952, 3777, - 4074, 2968, 3772, - 4070, 2988, 3767, - 4065, 3014, 3759, - 4058, 3046, 3748, - 4048, 3086, 3733, - 4034, 3135, 3713, - 4016, 3193, 3684, - 3990, 3260, 3642, - 3952, 3337, 3579, - 3897, 3423, 3479, - 3810, 3517, 3297, - 3660, 3618, 2807, - 3325, 3726, 0, - 4095, 3031, 3920, - 4095, 3031, 3920, - 4095, 3031, 3920, - 4095, 3031, 3920, - 4095, 3031, 3920, - 4095, 3031, 3920, - 4095, 3032, 3920, - 4095, 3032, 3920, - 4095, 3033, 3920, - 4095, 3033, 3920, - 4095, 3034, 3920, - 4095, 3036, 3919, - 4095, 3037, 3919, - 4095, 3040, 3918, - 4095, 3043, 3918, - 4095, 3047, 3917, - 4095, 3052, 3915, - 4095, 3060, 3914, - 4095, 3069, 3911, - 4095, 3081, 3908, - 4095, 3097, 3904, - 4095, 3118, 3898, - 4095, 3144, 3890, - 4095, 3176, 3879, - 4095, 3217, 3864, - 4095, 3265, 3844, - 4095, 3323, 3815, - 4095, 3391, 3773, - 4085, 3468, 3710, - 4029, 3554, 3610, - 3943, 3648, 3427, - 3793, 3750, 2933, - 4095, 3161, 4052, - 4095, 3161, 4052, - 4095, 3161, 4052, - 4095, 3161, 4052, - 4095, 3161, 4052, - 4095, 3161, 4052, - 4095, 3161, 4052, - 4095, 3162, 4052, - 4095, 3162, 4052, - 4095, 3163, 4052, - 4095, 3163, 4051, - 4095, 3164, 4051, - 4095, 3166, 4051, - 4095, 3168, 4050, - 4095, 3170, 4050, - 4095, 3173, 4049, - 4095, 3177, 4048, - 4095, 3183, 4047, - 4095, 3190, 4045, - 4095, 3199, 4043, - 4095, 3212, 4040, - 4095, 3228, 4035, - 4095, 3248, 4029, - 4095, 3274, 4022, - 4095, 3307, 4011, - 4095, 3347, 3996, - 4095, 3396, 3975, - 4095, 3454, 3946, - 4095, 3522, 3904, - 4095, 3599, 3841, - 4095, 3685, 3741, - 4075, 3780, 3557, - 0, 1347, 1608, - 0, 1350, 1606, - 0, 1354, 1602, - 0, 1359, 1597, - 0, 1365, 1590, - 0, 1374, 1581, - 0, 1386, 1569, - 0, 1401, 1552, - 0, 1421, 1528, - 0, 1446, 1494, - 0, 1477, 1444, - 0, 1516, 1367, - 0, 1563, 1239, - 0, 1619, 979, - 0, 1685, 0, - 0, 1760, 0, - 0, 1845, 0, - 0, 1938, 0, - 0, 2038, 0, - 0, 2145, 0, - 0, 2257, 0, - 0, 2374, 0, - 0, 2494, 0, - 0, 2617, 0, - 0, 2742, 0, - 0, 2869, 0, - 0, 2997, 0, - 0, 3126, 0, - 0, 3256, 0, - 0, 3386, 0, - 0, 3517, 0, - 0, 3648, 0, - 0, 1348, 1612, - 0, 1351, 1610, - 0, 1354, 1606, - 0, 1360, 1601, - 0, 1366, 1595, - 0, 1375, 1586, - 0, 1387, 1573, - 0, 1402, 1557, - 0, 1422, 1533, - 0, 1447, 1499, - 0, 1478, 1450, - 0, 1516, 1374, - 0, 1564, 1248, - 0, 1620, 995, - 0, 1685, 0, - 0, 1761, 0, - 0, 1845, 0, - 0, 1938, 0, - 0, 2038, 0, - 0, 2145, 0, - 0, 2257, 0, - 0, 2374, 0, - 0, 2494, 0, - 0, 2617, 0, - 0, 2742, 0, - 0, 2869, 0, - 0, 2997, 0, - 0, 3126, 0, - 0, 3256, 0, - 0, 3386, 0, - 0, 3517, 0, - 0, 3648, 0, - 0, 1349, 1618, - 0, 1352, 1615, - 0, 1356, 1611, - 0, 1361, 1607, - 0, 1368, 1600, - 0, 1377, 1591, - 0, 1388, 1579, - 0, 1403, 1563, - 0, 1423, 1539, - 0, 1448, 1506, - 0, 1479, 1457, - 0, 1517, 1383, - 0, 1564, 1260, - 0, 1620, 1015, - 0, 1686, 0, - 0, 1761, 0, - 0, 1845, 0, - 0, 1938, 0, - 0, 2038, 0, - 0, 2145, 0, - 0, 2257, 0, - 0, 2374, 0, - 0, 2494, 0, - 0, 2617, 0, - 0, 2742, 0, - 0, 2869, 0, - 0, 2997, 0, - 0, 3126, 0, - 0, 3256, 0, - 0, 3386, 0, - 0, 3517, 0, - 0, 3648, 0, - 0, 1351, 1625, - 0, 1354, 1622, - 0, 1358, 1619, - 0, 1363, 1614, - 0, 1369, 1607, - 0, 1378, 1599, - 0, 1390, 1587, - 0, 1405, 1570, - 0, 1424, 1548, - 0, 1449, 1515, - 0, 1480, 1467, - 0, 1519, 1395, - 0, 1565, 1275, - 0, 1621, 1041, - 0, 1687, 0, - 0, 1762, 0, - 0, 1846, 0, - 0, 1939, 0, - 0, 2039, 0, - 0, 2145, 0, - 0, 2258, 0, - 0, 2374, 0, - 0, 2494, 0, - 0, 2617, 0, - 0, 2742, 0, - 0, 2869, 0, - 0, 2997, 0, - 0, 3126, 0, - 0, 3256, 0, - 0, 3386, 0, - 0, 3517, 0, - 0, 3648, 0, - 0, 1353, 1634, - 0, 1356, 1631, - 0, 1360, 1628, - 0, 1365, 1623, - 0, 1372, 1617, - 0, 1381, 1608, - 0, 1392, 1597, - 0, 1407, 1581, - 0, 1426, 1558, - 0, 1451, 1527, - 0, 1482, 1480, - 0, 1520, 1410, - 0, 1567, 1295, - 0, 1623, 1074, - 0, 1688, 244, - 0, 1763, 0, - 0, 1847, 0, - 0, 1939, 0, - 0, 2039, 0, - 0, 2146, 0, - 0, 2258, 0, - 0, 2374, 0, - 0, 2494, 0, - 0, 2617, 0, - 0, 2742, 0, - 0, 2869, 0, - 0, 2997, 0, - 0, 3126, 0, - 0, 3256, 0, - 0, 3386, 0, - 0, 3517, 0, - 0, 3648, 0, - 0, 1356, 1646, - 0, 1359, 1643, - 0, 1363, 1640, - 0, 1368, 1636, - 0, 1375, 1629, - 0, 1383, 1621, - 0, 1395, 1610, - 0, 1410, 1594, - 0, 1429, 1573, - 0, 1453, 1542, - 0, 1484, 1497, - 0, 1522, 1430, - 0, 1569, 1320, - 0, 1624, 1114, - 0, 1690, 449, - 0, 1764, 0, - 0, 1848, 0, - 0, 1940, 0, - 0, 2040, 0, - 0, 2146, 0, - 0, 2258, 0, - 0, 2375, 0, - 0, 2495, 0, - 0, 2617, 0, - 0, 2742, 0, - 0, 2869, 0, - 0, 2997, 0, - 0, 3126, 0, - 0, 3256, 0, - 0, 3387, 0, - 0, 3517, 0, - 0, 3648, 0, - 0, 1360, 1662, - 0, 1363, 1659, - 0, 1367, 1656, - 0, 1372, 1652, - 0, 1379, 1646, - 0, 1387, 1638, - 0, 1399, 1627, - 0, 1414, 1612, - 0, 1433, 1591, - 0, 1457, 1561, - 0, 1487, 1519, - 0, 1525, 1455, - 0, 1572, 1351, - 0, 1627, 1162, - 0, 1692, 629, - 0, 1766, 0, - 0, 1849, 0, - 0, 1941, 0, - 0, 2041, 0, - 0, 2147, 0, - 0, 2259, 0, - 0, 2375, 0, - 0, 2495, 0, - 0, 2618, 0, - 0, 2743, 0, - 0, 2869, 0, - 0, 2997, 0, - 0, 3126, 0, - 0, 3256, 0, - 0, 3387, 0, - 0, 3517, 0, - 0, 3648, 0, - 0, 1366, 1682, - 0, 1369, 1679, - 0, 1373, 1676, - 0, 1377, 1672, - 0, 1384, 1666, - 0, 1393, 1659, - 0, 1404, 1648, - 0, 1418, 1634, - 0, 1437, 1614, - 0, 1461, 1586, - 0, 1492, 1546, - 0, 1529, 1486, - 0, 1575, 1390, - 0, 1630, 1220, - 0, 1694, 795, - 0, 1768, 0, - 0, 1851, 0, - 0, 1943, 0, - 0, 2042, 0, - 0, 2148, 0, - 0, 2260, 0, - 0, 2376, 0, - 0, 2495, 0, - 0, 2618, 0, - 0, 2743, 0, - 0, 2870, 0, - 0, 2998, 0, - 0, 3127, 0, - 0, 3256, 0, - 0, 3387, 0, - 0, 3517, 0, - 0, 3649, 0, - 0, 1373, 1707, - 0, 1376, 1705, - 0, 1380, 1702, - 0, 1385, 1698, - 0, 1391, 1693, - 0, 1399, 1686, - 0, 1411, 1676, - 0, 1425, 1662, - 0, 1444, 1644, - 0, 1467, 1618, - 0, 1497, 1580, - 0, 1534, 1525, - 0, 1580, 1438, - 0, 1634, 1287, - 0, 1698, 950, - 0, 1771, 0, - 0, 1854, 0, - 0, 1945, 0, - 0, 2044, 0, - 0, 2149, 0, - 0, 2261, 0, - 0, 2377, 0, - 0, 2496, 0, - 0, 2619, 0, - 0, 2743, 0, - 0, 2870, 0, - 0, 2998, 0, - 0, 3127, 0, - 0, 3256, 0, - 0, 3387, 0, - 0, 3517, 0, - 0, 3649, 0, - 817, 1383, 1739, - 796, 1385, 1737, - 767, 1389, 1734, - 725, 1394, 1731, - 662, 1400, 1726, - 560, 1408, 1719, - 375, 1419, 1710, - 0, 1433, 1698, - 0, 1452, 1680, - 0, 1475, 1656, - 0, 1504, 1622, - 0, 1541, 1572, - 0, 1586, 1494, - 0, 1639, 1364, - 0, 1702, 1098, - 0, 1775, 0, - 0, 1857, 0, - 0, 1948, 0, - 0, 2046, 0, - 0, 2151, 0, - 0, 2262, 0, - 0, 2378, 0, - 0, 2497, 0, - 0, 2619, 0, - 0, 2744, 0, - 0, 2870, 0, - 0, 2998, 0, - 0, 3127, 0, - 0, 3257, 0, - 0, 3387, 0, - 0, 3518, 0, - 0, 3649, 0, - 1204, 1395, 1779, - 1195, 1398, 1777, - 1183, 1401, 1775, - 1166, 1406, 1771, - 1143, 1412, 1767, - 1111, 1420, 1761, - 1063, 1431, 1752, - 990, 1445, 1741, - 870, 1462, 1725, - 635, 1485, 1704, - 0, 1514, 1673, - 0, 1550, 1628, - 0, 1594, 1560, - 0, 1646, 1450, - 0, 1709, 1243, - 0, 1780, 567, - 0, 1861, 0, - 0, 1951, 0, - 0, 2049, 0, - 0, 2154, 0, - 0, 2264, 0, - 0, 2379, 0, - 0, 2498, 0, - 0, 2620, 0, - 0, 2744, 0, - 0, 2871, 0, - 0, 2998, 0, - 0, 3127, 0, - 0, 3257, 0, - 0, 3387, 0, - 0, 3518, 0, - 0, 3649, 0, - 1462, 1411, 1827, - 1457, 1414, 1825, - 1450, 1417, 1823, - 1441, 1422, 1820, - 1429, 1428, 1816, - 1412, 1436, 1811, - 1388, 1446, 1803, - 1354, 1459, 1793, - 1304, 1476, 1779, - 1227, 1498, 1760, - 1098, 1526, 1733, - 836, 1561, 1694, - 0, 1604, 1636, - 0, 1656, 1544, - 0, 1717, 1383, - 0, 1787, 1003, - 0, 1867, 0, - 0, 1956, 0, - 0, 2053, 0, - 0, 2157, 0, - 0, 2266, 0, - 0, 2381, 0, - 0, 2499, 0, - 0, 2621, 0, - 0, 2745, 0, - 0, 2871, 0, - 0, 2999, 0, - 0, 3128, 0, - 0, 3257, 0, - 0, 3387, 0, - 0, 3518, 0, - 0, 3649, 0, - 1670, 1432, 1884, - 1667, 1435, 1883, - 1663, 1438, 1881, - 1657, 1442, 1878, - 1649, 1448, 1875, - 1639, 1455, 1870, - 1624, 1465, 1863, - 1604, 1478, 1854, - 1576, 1494, 1842, - 1536, 1516, 1826, - 1475, 1543, 1802, - 1378, 1576, 1769, - 1206, 1618, 1720, - 769, 1668, 1646, - 0, 1728, 1522, - 0, 1797, 1276, - 0, 1875, 0, - 0, 1962, 0, - 0, 2058, 0, - 0, 2161, 0, - 0, 2270, 0, - 0, 2383, 0, - 0, 2501, 0, - 0, 2623, 0, - 0, 2746, 0, - 0, 2872, 0, - 0, 3000, 0, - 0, 3128, 0, - 0, 3257, 0, - 0, 3387, 0, - 0, 3518, 0, - 0, 3649, 0, - 1851, 1458, 1951, - 1849, 1461, 1950, - 1847, 1464, 1948, - 1843, 1468, 1946, - 1838, 1473, 1943, - 1831, 1480, 1939, - 1821, 1490, 1933, - 1809, 1502, 1925, - 1791, 1517, 1915, - 1766, 1538, 1901, - 1730, 1563, 1881, - 1678, 1596, 1853, - 1597, 1636, 1813, - 1459, 1684, 1753, - 1167, 1741, 1659, - 0, 1809, 1491, - 0, 1885, 1074, - 0, 1971, 0, - 0, 2065, 0, - 0, 2166, 0, - 0, 2274, 0, - 0, 2387, 0, - 0, 2504, 0, - 0, 2625, 0, - 0, 2748, 0, - 0, 2873, 0, - 0, 3000, 0, - 0, 3129, 0, - 0, 3258, 0, - 0, 3388, 0, - 0, 3518, 0, - 0, 3649, 0, - 2017, 1491, 2027, - 2016, 1494, 2026, - 2014, 1496, 2025, - 2011, 1500, 2023, - 2008, 1505, 2020, - 2003, 1512, 2017, - 1997, 1520, 2012, - 1988, 1532, 2006, - 1976, 1547, 1997, - 1960, 1566, 1985, - 1937, 1590, 1969, - 1904, 1620, 1946, - 1856, 1658, 1914, - 1784, 1704, 1867, - 1664, 1759, 1794, - 1430, 1824, 1676, - 367, 1898, 1445, - 0, 1982, 454, - 0, 2074, 0, - 0, 2173, 0, - 0, 2279, 0, - 0, 2391, 0, - 0, 2507, 0, - 0, 2627, 0, - 0, 2750, 0, - 0, 2875, 0, - 0, 3002, 0, - 0, 3130, 0, - 0, 3259, 0, - 0, 3388, 0, - 0, 3519, 0, - 0, 3649, 0, - 2173, 1532, 2113, - 2172, 1534, 2112, - 2171, 1537, 2111, - 2169, 1540, 2109, - 2166, 1545, 2107, - 2163, 1551, 2104, - 2158, 1559, 2100, - 2152, 1569, 2095, - 2144, 1583, 2088, - 2133, 1600, 2078, - 2117, 1623, 2065, - 2096, 1651, 2047, - 2065, 1687, 2021, - 2021, 1730, 1984, - 1953, 1782, 1929, - 1844, 1844, 1844, - 1639, 1915, 1698, - 988, 1996, 1375, - 0, 2085, 0, - 0, 2183, 0, - 0, 2287, 0, - 0, 2397, 0, - 0, 2512, 0, - 0, 2631, 0, - 0, 2753, 0, - 0, 2877, 0, - 0, 3003, 0, - 0, 3131, 0, - 0, 3259, 0, - 0, 3389, 0, - 0, 3519, 0, - 0, 3650, 0, - 2322, 1581, 2206, - 2321, 1583, 2206, - 2320, 1585, 2205, - 2319, 1588, 2204, - 2317, 1593, 2202, - 2315, 1598, 2199, - 2312, 1605, 2196, - 2307, 1615, 2192, - 2301, 1627, 2186, - 2293, 1643, 2179, - 2283, 1663, 2168, - 2268, 1690, 2153, - 2247, 1722, 2133, - 2218, 1763, 2105, - 2175, 1811, 2063, - 2111, 1870, 2001, - 2009, 1937, 1903, - 1822, 2014, 1725, - 1302, 2100, 1261, - 0, 2195, 0, - 0, 2297, 0, - 0, 2405, 0, - 0, 2518, 0, - 0, 2635, 0, - 0, 2756, 0, - 0, 2880, 0, - 0, 3005, 0, - 0, 3132, 0, - 0, 3261, 0, - 0, 3390, 0, - 0, 3520, 0, - 0, 3650, 0, - 2466, 1640, 2308, - 2466, 1641, 2307, - 2465, 1643, 2306, - 2464, 1646, 2305, - 2463, 1650, 2304, - 2461, 1655, 2302, - 2459, 1661, 2299, - 2456, 1669, 2296, - 2451, 1680, 2292, - 2446, 1694, 2285, - 2438, 1713, 2277, - 2427, 1736, 2266, - 2413, 1766, 2250, - 2393, 1803, 2228, - 2364, 1848, 2197, - 2323, 1902, 2152, - 2262, 1965, 2083, - 2164, 2038, 1971, - 1988, 2120, 1760, - 1534, 2211, 1044, - 0, 2309, 0, - 0, 2415, 0, - 0, 2526, 0, - 0, 2641, 0, - 0, 2761, 0, - 0, 2883, 0, - 0, 3008, 0, - 0, 3134, 0, - 0, 3262, 0, - 0, 3391, 0, - 0, 3521, 0, - 0, 3651, 0, - 2607, 1708, 2415, - 2607, 1709, 2415, - 2607, 1711, 2414, - 2606, 1713, 2413, - 2605, 1716, 2412, - 2604, 1721, 2411, - 2602, 1726, 2409, - 2600, 1733, 2406, - 2597, 1743, 2402, - 2592, 1755, 2398, - 2587, 1771, 2391, - 2579, 1792, 2382, - 2569, 1818, 2370, - 2555, 1851, 2353, - 2535, 1892, 2330, - 2507, 1941, 2297, - 2467, 1999, 2248, - 2407, 2067, 2173, - 2313, 2145, 2049, - 2144, 2231, 1802, - 1729, 2326, 267, - 0, 2428, 0, - 0, 2536, 0, - 0, 2649, 0, - 0, 2767, 0, - 0, 2888, 0, - 0, 3011, 0, - 0, 3137, 0, - 0, 3264, 0, - 0, 3393, 0, - 0, 3522, 0, - 0, 3652, 0, - 2746, 1785, 2528, - 2746, 1786, 2528, - 2745, 1788, 2527, - 2745, 1790, 2526, - 2744, 1793, 2526, - 2743, 1796, 2524, - 2742, 1801, 2523, - 2740, 1807, 2521, - 2738, 1815, 2518, - 2735, 1826, 2514, - 2731, 1839, 2509, - 2726, 1857, 2502, - 2718, 1880, 2493, - 2708, 1909, 2480, - 2694, 1945, 2463, - 2674, 1989, 2438, - 2647, 2042, 2403, - 2608, 2104, 2351, - 2549, 2176, 2271, - 2457, 2257, 2136, - 2294, 2347, 1853, - 1903, 2445, 0, - 0, 2549, 0, - 0, 2660, 0, - 0, 2775, 0, - 0, 2894, 0, - 0, 3016, 0, - 0, 3141, 0, - 0, 3267, 0, - 0, 3395, 0, - 0, 3523, 0, - 0, 3653, 0, - 2883, 1872, 2645, - 2883, 1873, 2645, - 2883, 1874, 2644, - 2882, 1876, 2644, - 2882, 1878, 2643, - 2881, 1881, 2642, - 2880, 1885, 2641, - 2879, 1890, 2640, - 2877, 1897, 2637, - 2875, 1905, 2635, - 2872, 1917, 2631, - 2868, 1932, 2625, - 2862, 1952, 2618, - 2855, 1976, 2609, - 2845, 2008, 2596, - 2831, 2046, 2577, - 2812, 2093, 2552, - 2785, 2149, 2515, - 2746, 2215, 2461, - 2688, 2290, 2376, - 2598, 2374, 2231, - 2438, 2467, 1914, - 2064, 2567, 0, - 0, 2674, 0, - 0, 2786, 0, - 0, 2902, 0, - 0, 3022, 0, - 0, 3145, 0, - 0, 3271, 0, - 0, 3397, 0, - 0, 3525, 0, - 0, 3655, 0, - 3019, 1967, 2766, - 3019, 1967, 2765, - 3018, 1968, 2765, - 3018, 1970, 2765, - 3018, 1971, 2764, - 3017, 1974, 2763, - 3017, 1977, 2763, - 3016, 1981, 2761, - 3014, 1987, 2760, - 3013, 1994, 2758, - 3011, 2004, 2755, - 3008, 2016, 2751, - 3004, 2032, 2745, - 2998, 2053, 2738, - 2991, 2080, 2728, - 2981, 2113, 2715, - 2967, 2154, 2696, - 2948, 2203, 2669, - 2921, 2262, 2631, - 2883, 2330, 2575, - 2826, 2408, 2487, - 2736, 2494, 2334, - 2580, 2589, 1984, - 2216, 2691, 0, - 0, 2800, 0, - 0, 2913, 0, - 0, 3031, 0, - 0, 3152, 0, - 0, 3275, 0, - 0, 3401, 0, - 0, 3528, 0, - 0, 3657, 0, - 3154, 2069, 2889, - 3153, 2069, 2889, - 3153, 2070, 2888, - 3153, 2071, 2888, - 3153, 2072, 2888, - 3152, 2074, 2887, - 3152, 2077, 2887, - 3151, 2080, 2886, - 3150, 2085, 2884, - 3149, 2091, 2883, - 3147, 2098, 2881, - 3145, 2109, 2878, - 3142, 2122, 2873, - 3138, 2139, 2868, - 3133, 2161, 2861, - 3126, 2189, 2850, - 3116, 2224, 2837, - 3102, 2266, 2817, - 3083, 2318, 2790, - 3057, 2379, 2751, - 3018, 2449, 2693, - 2962, 2529, 2602, - 2873, 2617, 2442, - 2718, 2714, 2063, - 2363, 2818, 0, - 0, 2927, 0, - 0, 3042, 0, - 0, 3160, 0, - 0, 3282, 0, - 0, 3406, 0, - 0, 3532, 0, - 0, 3659, 0, - 3288, 2177, 3014, - 3288, 2177, 3014, - 3287, 2178, 3014, - 3287, 2179, 3014, - 3287, 2180, 3013, - 3287, 2181, 3013, - 3286, 2183, 3012, - 3286, 2186, 3012, - 3285, 2190, 3011, - 3284, 2194, 3010, - 3283, 2200, 3008, - 3281, 2209, 3006, - 3279, 2219, 3003, - 3276, 2233, 2998, - 3272, 2251, 2993, - 3267, 2274, 2985, - 3260, 2303, 2975, - 3250, 2339, 2961, - 3236, 2383, 2941, - 3217, 2437, 2914, - 3191, 2499, 2874, - 3153, 2571, 2815, - 3097, 2652, 2721, - 3009, 2743, 2556, - 2855, 2840, 2152, - 2506, 2945, 0, - 0, 3056, 0, - 0, 3171, 0, - 0, 3290, 0, - 0, 3412, 0, - 0, 3537, 0, - 0, 3663, 0, - 3421, 2290, 3141, - 3421, 2291, 3141, - 3421, 2291, 3141, - 3421, 2292, 3141, - 3421, 2293, 3141, - 3421, 2294, 3140, - 3420, 2295, 3140, - 3420, 2297, 3139, - 3419, 2300, 3139, - 3419, 2304, 3138, - 3418, 2309, 3136, - 3417, 2315, 3135, - 3415, 2324, 3132, - 3413, 2335, 3129, - 3410, 2349, 3125, - 3406, 2368, 3120, - 3401, 2392, 3112, - 3393, 2421, 3102, - 3384, 2459, 3087, - 3370, 2504, 3067, - 3351, 2558, 3039, - 3325, 2622, 2999, - 3287, 2696, 2939, - 3231, 2778, 2844, - 3143, 2869, 2673, - 2991, 2968, 2248, - 2646, 3074, 0, - 0, 3185, 0, - 0, 3301, 0, - 0, 3421, 0, - 0, 3543, 0, - 0, 3668, 0, - 3554, 2408, 3269, - 3554, 2408, 3269, - 3554, 2408, 3269, - 3554, 2409, 3269, - 3554, 2410, 3269, - 3554, 2411, 3269, - 3554, 2412, 3268, - 3553, 2413, 3268, - 3553, 2416, 3268, - 3553, 2418, 3267, - 3552, 2422, 3266, - 3551, 2427, 3265, - 3550, 2434, 3263, - 3548, 2443, 3261, - 3546, 2454, 3257, - 3543, 2469, 3253, - 3539, 2488, 3248, - 3534, 2512, 3240, - 3527, 2543, 3229, - 3517, 2581, 3215, - 3503, 2627, 3195, - 3485, 2683, 3167, - 3458, 2747, 3126, - 3421, 2822, 3065, - 3365, 2905, 2968, - 3277, 2998, 2794, - 3126, 3097, 2352, - 2784, 3204, 0, - 0, 3315, 0, - 0, 3432, 0, - 0, 3552, 0, - 0, 3674, 0, - 3687, 2529, 3399, - 3687, 2529, 3399, - 3687, 2529, 3399, - 3687, 2530, 3398, - 3687, 2530, 3398, - 3687, 2531, 3398, - 3687, 2532, 3398, - 3687, 2533, 3398, - 3686, 2535, 3397, - 3686, 2537, 3397, - 3685, 2540, 3396, - 3685, 2544, 3395, - 3684, 2549, 3394, - 3683, 2556, 3392, - 3681, 2565, 3390, - 3679, 2576, 3387, - 3676, 2591, 3382, - 3672, 2611, 3377, - 3667, 2636, 3369, - 3660, 2667, 3358, - 3650, 2706, 3344, - 3636, 2753, 3324, - 3618, 2809, 3295, - 3591, 2874, 3254, - 3554, 2950, 3192, - 3498, 3034, 3094, - 3411, 3127, 2918, - 3260, 3227, 2461, - 2920, 3334, 0, - 0, 3446, 0, - 0, 3563, 0, - 0, 3683, 0, - 3820, 2652, 3529, - 3820, 2652, 3529, - 3820, 2653, 3528, - 3820, 2653, 3528, - 3820, 2653, 3528, - 3820, 2654, 3528, - 3820, 2655, 3528, - 3820, 2656, 3528, - 3819, 2657, 3528, - 3819, 2658, 3527, - 3819, 2661, 3527, - 3818, 2664, 3526, - 3817, 2668, 3525, - 3817, 2673, 3524, - 3815, 2680, 3522, - 3814, 2689, 3519, - 3812, 2701, 3516, - 3809, 2716, 3512, - 3805, 2736, 3506, - 3799, 2761, 3499, - 3792, 2793, 3488, - 3782, 2832, 3473, - 3769, 2880, 3453, - 3750, 2936, 3424, - 3724, 3003, 3383, - 3687, 3078, 3321, - 3631, 3163, 3222, - 3544, 3257, 3044, - 3394, 3357, 2575, - 3056, 3465, 0, - 0, 3577, 0, - 0, 3694, 0, - 3953, 2778, 3659, - 3953, 2778, 3659, - 3953, 2778, 3659, - 3953, 2778, 3659, - 3952, 2779, 3659, - 3952, 2779, 3659, - 3952, 2780, 3659, - 3952, 2780, 3658, - 3952, 2781, 3658, - 3952, 2783, 3658, - 3952, 2784, 3658, - 3951, 2787, 3657, - 3951, 2790, 3656, - 3950, 2794, 3655, - 3949, 2799, 3654, - 3948, 2806, 3652, - 3946, 2815, 3650, - 3944, 2827, 3647, - 3941, 2843, 3642, - 3937, 2863, 3637, - 3932, 2888, 3629, - 3925, 2920, 3618, - 3915, 2960, 3604, - 3902, 3008, 3583, - 3883, 3065, 3554, - 3857, 3132, 3513, - 3819, 3208, 3450, - 3764, 3293, 3351, - 3677, 3387, 3171, - 3527, 3488, 2694, - 3190, 3596, 0, - 0, 3708, 0, - 4085, 2905, 3790, - 4085, 2905, 3790, - 4085, 2905, 3790, - 4085, 2905, 3790, - 4085, 2906, 3790, - 4085, 2906, 3790, - 4085, 2906, 3790, - 4085, 2907, 3789, - 4085, 2908, 3789, - 4084, 2909, 3789, - 4084, 2910, 3789, - 4084, 2912, 3788, - 4084, 2914, 3788, - 4083, 2917, 3787, - 4082, 2921, 3786, - 4082, 2926, 3785, - 4080, 2933, 3783, - 4079, 2943, 3781, - 4077, 2955, 3778, - 4074, 2971, 3773, - 4070, 2991, 3768, - 4064, 3017, 3760, - 4057, 3049, 3749, - 4047, 3089, 3734, - 4034, 3137, 3714, - 4015, 3195, 3685, - 3989, 3262, 3643, - 3952, 3338, 3581, - 3896, 3424, 3481, - 3810, 3518, 3299, - 3660, 3619, 2815, - 3324, 3727, 0, - 4095, 3033, 3921, - 4095, 3034, 3921, - 4095, 3034, 3921, - 4095, 3034, 3921, - 4095, 3034, 3921, - 4095, 3034, 3921, - 4095, 3034, 3921, - 4095, 3035, 3921, - 4095, 3035, 3921, - 4095, 3036, 3920, - 4095, 3037, 3920, - 4095, 3038, 3920, - 4095, 3040, 3920, - 4095, 3042, 3919, - 4095, 3046, 3918, - 4095, 3050, 3917, - 4095, 3055, 3916, - 4095, 3062, 3914, - 4095, 3072, 3912, - 4095, 3084, 3909, - 4095, 3100, 3904, - 4095, 3120, 3899, - 4095, 3146, 3891, - 4095, 3178, 3880, - 4095, 3218, 3865, - 4095, 3267, 3845, - 4095, 3325, 3816, - 4095, 3392, 3774, - 4084, 3469, 3711, - 4029, 3555, 3611, - 3942, 3649, 3429, - 3793, 3751, 2939, - 4095, 3163, 4053, - 4095, 3163, 4052, - 4095, 3163, 4052, - 4095, 3163, 4052, - 4095, 3163, 4052, - 4095, 3163, 4052, - 4095, 3164, 4052, - 4095, 3164, 4052, - 4095, 3164, 4052, - 4095, 3165, 4052, - 4095, 3166, 4052, - 4095, 3167, 4052, - 4095, 3168, 4051, - 4095, 3170, 4051, - 4095, 3172, 4050, - 4095, 3175, 4050, - 4095, 3179, 4049, - 4095, 3185, 4047, - 4095, 3192, 4046, - 4095, 3201, 4043, - 4095, 3213, 4040, - 4095, 3229, 4036, - 4095, 3250, 4030, - 4095, 3276, 4022, - 4095, 3308, 4011, - 4095, 3349, 3997, - 4095, 3397, 3976, - 4095, 3455, 3947, - 4095, 3523, 3905, - 4095, 3600, 3842, - 4095, 3686, 3742, - 4075, 3780, 3559, - 0, 1476, 1739, - 0, 1478, 1737, - 0, 1481, 1735, - 0, 1485, 1731, - 0, 1490, 1726, - 0, 1497, 1719, - 0, 1506, 1710, - 0, 1518, 1698, - 0, 1533, 1681, - 0, 1552, 1657, - 0, 1577, 1622, - 0, 1609, 1572, - 0, 1647, 1494, - 0, 1695, 1365, - 0, 1751, 1099, - 0, 1817, 0, - 0, 1892, 0, - 0, 1976, 0, - 0, 2069, 0, - 0, 2170, 0, - 0, 2277, 0, - 0, 2389, 0, - 0, 2506, 0, - 0, 2626, 0, - 0, 2749, 0, - 0, 2874, 0, - 0, 3001, 0, - 0, 3129, 0, - 0, 3258, 0, - 0, 3388, 0, - 0, 3518, 0, - 0, 3649, 0, - 0, 1477, 1742, - 0, 1479, 1740, - 0, 1482, 1738, - 0, 1486, 1734, - 0, 1491, 1729, - 0, 1498, 1723, - 0, 1507, 1713, - 0, 1518, 1701, - 0, 1533, 1684, - 0, 1553, 1660, - 0, 1578, 1626, - 0, 1609, 1576, - 0, 1648, 1500, - 0, 1695, 1371, - 0, 1751, 1111, - 0, 1817, 0, - 0, 1892, 0, - 0, 1977, 0, - 0, 2070, 0, - 0, 2170, 0, - 0, 2277, 0, - 0, 2389, 0, - 0, 2506, 0, - 0, 2626, 0, - 0, 2749, 0, - 0, 2874, 0, - 0, 3001, 0, - 0, 3129, 0, - 0, 3258, 0, - 0, 3388, 0, - 0, 3519, 0, - 0, 3649, 0, - 0, 1478, 1746, - 0, 1480, 1744, - 0, 1483, 1742, - 0, 1487, 1738, - 0, 1492, 1733, - 0, 1499, 1727, - 0, 1507, 1718, - 0, 1519, 1706, - 0, 1534, 1689, - 0, 1554, 1665, - 0, 1579, 1631, - 0, 1610, 1582, - 0, 1649, 1506, - 0, 1696, 1380, - 0, 1752, 1127, - 0, 1818, 0, - 0, 1893, 0, - 0, 1977, 0, - 0, 2070, 0, - 0, 2170, 0, - 0, 2277, 0, - 0, 2389, 0, - 0, 2506, 0, - 0, 2626, 0, - 0, 2749, 0, - 0, 2874, 0, - 0, 3001, 0, - 0, 3129, 0, - 0, 3258, 0, - 0, 3388, 0, - 0, 3519, 0, - 0, 3649, 0, - 0, 1479, 1752, - 0, 1481, 1750, - 0, 1484, 1747, - 0, 1488, 1744, - 0, 1493, 1739, - 0, 1500, 1732, - 0, 1509, 1723, - 0, 1520, 1711, - 0, 1535, 1695, - 0, 1555, 1671, - 0, 1580, 1638, - 0, 1611, 1590, - 0, 1650, 1515, - 0, 1696, 1392, - 0, 1753, 1147, - 0, 1818, 0, - 0, 1893, 0, - 0, 1978, 0, - 0, 2070, 0, - 0, 2171, 0, - 0, 2277, 0, - 0, 2389, 0, - 0, 2506, 0, - 0, 2626, 0, - 0, 2749, 0, - 0, 2874, 0, - 0, 3001, 0, - 0, 3129, 0, - 0, 3258, 0, - 0, 3388, 0, - 0, 3519, 0, - 0, 3649, 0, - 0, 1481, 1759, - 0, 1483, 1757, - 0, 1486, 1754, - 0, 1490, 1751, - 0, 1495, 1746, - 0, 1502, 1740, - 0, 1510, 1731, - 0, 1522, 1719, - 0, 1537, 1703, - 0, 1556, 1680, - 0, 1581, 1647, - 0, 1612, 1600, - 0, 1651, 1527, - 0, 1698, 1407, - 0, 1754, 1173, - 0, 1819, 122, - 0, 1894, 0, - 0, 1978, 0, - 0, 2071, 0, - 0, 2171, 0, - 0, 2278, 0, - 0, 2390, 0, - 0, 2506, 0, - 0, 2626, 0, - 0, 2749, 0, - 0, 2874, 0, - 0, 3001, 0, - 0, 3129, 0, - 0, 3258, 0, - 0, 3388, 0, - 0, 3519, 0, - 0, 3649, 0, - 0, 1483, 1768, - 0, 1485, 1766, - 0, 1488, 1763, - 0, 1492, 1760, - 0, 1497, 1755, - 0, 1504, 1749, - 0, 1513, 1741, - 0, 1524, 1729, - 0, 1539, 1713, - 0, 1558, 1691, - 0, 1583, 1659, - 0, 1614, 1612, - 0, 1652, 1542, - 0, 1699, 1427, - 0, 1755, 1206, - 0, 1820, 376, - 0, 1895, 0, - 0, 1979, 0, - 0, 2071, 0, - 0, 2171, 0, - 0, 2278, 0, - 0, 2390, 0, - 0, 2506, 0, - 0, 2626, 0, - 0, 2749, 0, - 0, 2874, 0, - 0, 3001, 0, - 0, 3129, 0, - 0, 3258, 0, - 0, 3388, 0, - 0, 3519, 0, - 0, 3649, 0, - 0, 1486, 1780, - 0, 1488, 1778, - 0, 1491, 1776, - 0, 1495, 1772, - 0, 1500, 1768, - 0, 1507, 1762, - 0, 1516, 1753, - 0, 1527, 1742, - 0, 1542, 1726, - 0, 1561, 1705, - 0, 1586, 1674, - 0, 1616, 1629, - 0, 1655, 1562, - 0, 1701, 1452, - 0, 1757, 1246, - 0, 1822, 581, - 0, 1896, 0, - 0, 1980, 0, - 0, 2072, 0, - 0, 2172, 0, - 0, 2279, 0, - 0, 2390, 0, - 0, 2507, 0, - 0, 2627, 0, - 0, 2750, 0, - 0, 2875, 0, - 0, 3001, 0, - 0, 3129, 0, - 0, 3258, 0, - 0, 3388, 0, - 0, 3519, 0, - 0, 3649, 0, - 0, 1490, 1795, - 0, 1493, 1794, - 0, 1495, 1791, - 0, 1499, 1788, - 0, 1504, 1784, - 0, 1511, 1778, - 0, 1519, 1770, - 0, 1531, 1759, - 0, 1546, 1744, - 0, 1565, 1723, - 0, 1589, 1694, - 0, 1620, 1651, - 0, 1657, 1587, - 0, 1704, 1484, - 0, 1759, 1294, - 0, 1824, 762, - 0, 1898, 0, - 0, 1981, 0, - 0, 2073, 0, - 0, 2173, 0, - 0, 2279, 0, - 0, 2391, 0, - 0, 2507, 0, - 0, 2627, 0, - 0, 2750, 0, - 0, 2875, 0, - 0, 3001, 0, - 0, 3129, 0, - 0, 3259, 0, - 0, 3388, 0, - 0, 3519, 0, - 0, 3649, 0, - 0, 1496, 1815, - 0, 1498, 1814, - 0, 1501, 1811, - 0, 1505, 1808, - 0, 1510, 1804, - 0, 1516, 1799, - 0, 1525, 1791, - 0, 1536, 1781, - 0, 1551, 1766, - 0, 1569, 1746, - 0, 1593, 1718, - 0, 1624, 1678, - 0, 1661, 1618, - 0, 1707, 1522, - 0, 1762, 1352, - 0, 1826, 927, - 0, 1900, 0, - 0, 1983, 0, - 0, 2075, 0, - 0, 2174, 0, - 0, 2280, 0, - 0, 2392, 0, - 0, 2508, 0, - 0, 2628, 0, - 0, 2750, 0, - 0, 2875, 0, - 0, 3002, 0, - 0, 3130, 0, - 0, 3259, 0, - 0, 3388, 0, - 0, 3519, 0, - 0, 3649, 0, - 0, 1503, 1841, - 0, 1505, 1839, - 0, 1508, 1837, - 0, 1512, 1834, - 0, 1517, 1830, - 0, 1523, 1825, - 0, 1532, 1818, - 0, 1543, 1808, - 0, 1557, 1795, - 0, 1576, 1776, - 0, 1599, 1750, - 0, 1629, 1712, - 0, 1666, 1657, - 0, 1712, 1570, - 0, 1766, 1419, - 0, 1830, 1082, - 0, 1903, 0, - 0, 1986, 0, - 0, 2077, 0, - 0, 2176, 0, - 0, 2282, 0, - 0, 2393, 0, - 0, 2509, 0, - 0, 2628, 0, - 0, 2751, 0, - 0, 2875, 0, - 0, 3002, 0, - 0, 3130, 0, - 0, 3259, 0, - 0, 3388, 0, - 0, 3519, 0, - 0, 3650, 0, - 964, 1513, 1873, - 949, 1515, 1871, - 928, 1518, 1869, - 899, 1521, 1867, - 857, 1526, 1863, - 794, 1532, 1858, - 692, 1541, 1851, - 507, 1551, 1842, - 0, 1566, 1830, - 0, 1584, 1813, - 0, 1607, 1788, - 0, 1637, 1754, - 0, 1673, 1704, - 0, 1718, 1626, - 0, 1771, 1496, - 0, 1835, 1231, - 0, 1907, 0, - 0, 1989, 0, - 0, 2080, 0, - 0, 2178, 0, - 0, 2283, 0, - 0, 2394, 0, - 0, 2510, 0, - 0, 2629, 0, - 0, 2751, 0, - 0, 2876, 0, - 0, 3002, 0, - 0, 3130, 0, - 0, 3259, 0, - 0, 3389, 0, - 0, 3519, 0, - 0, 3650, 0, - 1342, 1525, 1912, - 1336, 1527, 1911, - 1327, 1530, 1909, - 1315, 1533, 1907, - 1299, 1538, 1903, - 1276, 1544, 1899, - 1243, 1552, 1893, - 1195, 1563, 1884, - 1123, 1577, 1873, - 1003, 1595, 1857, - 767, 1617, 1836, - 0, 1646, 1805, - 0, 1682, 1760, - 0, 1726, 1692, - 0, 1779, 1582, - 0, 1841, 1375, - 0, 1912, 699, - 0, 1994, 0, - 0, 2083, 0, - 0, 2181, 0, - 0, 2286, 0, - 0, 2396, 0, - 0, 2511, 0, - 0, 2630, 0, - 0, 2752, 0, - 0, 2877, 0, - 0, 3003, 0, - 0, 3130, 0, - 0, 3259, 0, - 0, 3389, 0, - 0, 3519, 0, - 0, 3650, 0, - 1598, 1542, 1960, - 1594, 1543, 1959, - 1589, 1546, 1957, - 1582, 1549, 1955, - 1573, 1554, 1952, - 1561, 1560, 1948, - 1544, 1568, 1943, - 1520, 1578, 1935, - 1486, 1591, 1925, - 1436, 1608, 1911, - 1359, 1631, 1892, - 1230, 1659, 1865, - 968, 1693, 1826, - 0, 1736, 1768, - 0, 1788, 1676, - 0, 1849, 1516, - 0, 1919, 1135, - 0, 1999, 0, - 0, 2088, 0, - 0, 2185, 0, - 0, 2289, 0, - 0, 2398, 0, - 0, 2513, 0, - 0, 2632, 0, - 0, 2753, 0, - 0, 2877, 0, - 0, 3003, 0, - 0, 3131, 0, - 0, 3260, 0, - 0, 3389, 0, - 0, 3519, 0, - 0, 3650, 0, - 1804, 1562, 2017, - 1802, 1564, 2016, - 1799, 1567, 2015, - 1795, 1570, 2013, - 1789, 1574, 2010, - 1781, 1580, 2007, - 1771, 1587, 2002, - 1756, 1597, 1995, - 1737, 1610, 1987, - 1708, 1626, 1974, - 1668, 1648, 1958, - 1607, 1675, 1934, - 1511, 1708, 1901, - 1338, 1750, 1852, - 901, 1800, 1778, - 0, 1860, 1654, - 0, 1929, 1408, - 0, 2007, 0, - 0, 2095, 0, - 0, 2190, 0, - 0, 2293, 0, - 0, 2402, 0, - 0, 2515, 0, - 0, 2633, 0, - 0, 2755, 0, - 0, 2878, 0, - 0, 3004, 0, - 0, 3132, 0, - 0, 3260, 0, - 0, 3389, 0, - 0, 3520, 0, - 0, 3650, 0, - 1985, 1589, 2084, - 1983, 1591, 2083, - 1981, 1593, 2082, - 1979, 1596, 2080, - 1975, 1600, 2078, - 1970, 1605, 2075, - 1963, 1612, 2071, - 1953, 1622, 2065, - 1941, 1634, 2058, - 1923, 1650, 2047, - 1898, 1670, 2033, - 1862, 1695, 2013, - 1810, 1728, 1985, - 1729, 1768, 1945, - 1591, 1816, 1886, - 1299, 1874, 1791, - 0, 1941, 1623, - 0, 2017, 1207, - 0, 2103, 0, - 0, 2197, 0, - 0, 2298, 0, - 0, 2406, 0, - 0, 2519, 0, - 0, 2636, 0, - 0, 2757, 0, - 0, 2880, 0, - 0, 3005, 0, - 0, 3132, 0, - 0, 3261, 0, - 0, 3390, 0, - 0, 3520, 0, - 0, 3650, 0, - 2150, 1622, 2160, - 2149, 1623, 2159, - 2148, 1626, 2158, - 2146, 1628, 2157, - 2143, 1632, 2155, - 2140, 1637, 2152, - 2135, 1644, 2149, - 2129, 1653, 2144, - 2120, 1664, 2138, - 2108, 1679, 2129, - 2092, 1698, 2117, - 2069, 1722, 2101, - 2036, 1752, 2078, - 1989, 1790, 2046, - 1916, 1836, 1999, - 1796, 1892, 1927, - 1562, 1956, 1808, - 499, 2030, 1577, - 0, 2114, 586, - 0, 2206, 0, - 0, 2305, 0, - 0, 2412, 0, - 0, 2523, 0, - 0, 2639, 0, - 0, 2759, 0, - 0, 2882, 0, - 0, 3007, 0, - 0, 3134, 0, - 0, 3262, 0, - 0, 3391, 0, - 0, 3520, 0, - 0, 3651, 0, - 2306, 1663, 2246, - 2305, 1664, 2245, - 2304, 1666, 2244, - 2303, 1669, 2243, - 2301, 1672, 2241, - 2298, 1677, 2239, - 2295, 1683, 2236, - 2291, 1691, 2232, - 2284, 1701, 2227, - 2276, 1715, 2220, - 2265, 1732, 2210, - 2249, 1755, 2197, - 2228, 1783, 2179, - 2197, 1819, 2153, - 2153, 1862, 2116, - 2085, 1915, 2061, - 1976, 1976, 1976, - 1771, 2047, 1830, - 1120, 2128, 1507, - 0, 2217, 0, - 0, 2315, 0, - 0, 2419, 0, - 0, 2529, 0, - 0, 2644, 0, - 0, 2763, 0, - 0, 2885, 0, - 0, 3009, 0, - 0, 3135, 0, - 0, 3263, 0, - 0, 3392, 0, - 0, 3521, 0, - 0, 3651, 0, - 2455, 1712, 2339, - 2454, 1713, 2339, - 2453, 1715, 2338, - 2452, 1717, 2337, - 2451, 1721, 2336, - 2449, 1725, 2334, - 2447, 1730, 2332, - 2444, 1737, 2328, - 2439, 1747, 2324, - 2434, 1759, 2318, - 2426, 1775, 2311, - 2415, 1796, 2300, - 2400, 1822, 2285, - 2379, 1854, 2265, - 2350, 1895, 2237, - 2307, 1944, 2195, - 2243, 2002, 2134, - 2141, 2069, 2035, - 1954, 2146, 1857, - 1434, 2233, 1394, - 0, 2327, 0, - 0, 2429, 0, - 0, 2537, 0, - 0, 2650, 0, - 0, 2767, 0, - 0, 2888, 0, - 0, 3012, 0, - 0, 3137, 0, - 0, 3264, 0, - 0, 3393, 0, - 0, 3522, 0, - 0, 3652, 0, - 2599, 1771, 2440, - 2598, 1772, 2440, - 2598, 1773, 2439, - 2597, 1775, 2438, - 2596, 1778, 2437, - 2595, 1782, 2436, - 2593, 1787, 2434, - 2591, 1793, 2432, - 2588, 1801, 2428, - 2584, 1812, 2424, - 2578, 1827, 2418, - 2570, 1845, 2409, - 2560, 1868, 2398, - 2545, 1898, 2382, - 2525, 1935, 2360, - 2496, 1980, 2329, - 2455, 2034, 2284, - 2394, 2097, 2215, - 2296, 2170, 2104, - 2120, 2252, 1892, - 1666, 2343, 1176, - 0, 2441, 0, - 0, 2547, 0, - 0, 2658, 0, - 0, 2773, 0, - 0, 2893, 0, - 0, 3015, 0, - 0, 3140, 0, - 0, 3266, 0, - 0, 3394, 0, - 0, 3523, 0, - 0, 3653, 0, - 2740, 1839, 2548, - 2740, 1840, 2547, - 2739, 1841, 2547, - 2739, 1843, 2546, - 2738, 1845, 2545, - 2737, 1848, 2544, - 2736, 1853, 2543, - 2734, 1858, 2541, - 2732, 1865, 2538, - 2729, 1875, 2535, - 2725, 1887, 2530, - 2719, 1903, 2523, - 2711, 1924, 2514, - 2701, 1950, 2502, - 2687, 1983, 2486, - 2667, 2024, 2462, - 2639, 2073, 2429, - 2599, 2132, 2380, - 2539, 2199, 2305, - 2445, 2277, 2181, - 2277, 2363, 1934, - 1861, 2458, 400, - 0, 2560, 0, - 0, 2668, 0, - 0, 2781, 0, - 0, 2899, 0, - 0, 3020, 0, - 0, 3144, 0, - 0, 3269, 0, - 0, 3396, 0, - 0, 3525, 0, - 0, 3654, 0, - 2878, 1917, 2660, - 2878, 1917, 2660, - 2878, 1919, 2660, - 2878, 1920, 2659, - 2877, 1922, 2659, - 2876, 1925, 2658, - 2875, 1928, 2657, - 2874, 1933, 2655, - 2872, 1939, 2653, - 2870, 1947, 2650, - 2867, 1958, 2646, - 2863, 1972, 2641, - 2858, 1989, 2635, - 2850, 2012, 2625, - 2840, 2041, 2613, - 2826, 2077, 2595, - 2807, 2121, 2570, - 2779, 2174, 2535, - 2740, 2236, 2483, - 2681, 2308, 2403, - 2589, 2389, 2268, - 2426, 2479, 1986, - 2035, 2577, 0, - 0, 2682, 0, - 0, 2792, 0, - 0, 2907, 0, - 0, 3026, 0, - 0, 3148, 0, - 0, 3273, 0, - 0, 3399, 0, - 0, 3527, 0, - 0, 3656, 0, - 3015, 2003, 2777, - 3015, 2004, 2777, - 3015, 2005, 2777, - 3015, 2006, 2776, - 3014, 2008, 2776, - 3014, 2010, 2775, - 3013, 2013, 2774, - 3012, 2017, 2773, - 3011, 2022, 2772, - 3009, 2029, 2770, - 3007, 2038, 2767, - 3004, 2049, 2763, - 3000, 2064, 2758, - 2995, 2084, 2751, - 2987, 2108, 2741, - 2977, 2140, 2728, - 2963, 2178, 2709, - 2944, 2225, 2684, - 2917, 2281, 2647, - 2878, 2347, 2593, - 2821, 2422, 2508, - 2730, 2506, 2363, - 2570, 2599, 2046, - 2196, 2699, 0, - 0, 2806, 0, - 0, 2918, 0, - 0, 3034, 0, - 0, 3155, 0, - 0, 3278, 0, - 0, 3403, 0, - 0, 3529, 0, - 0, 3658, 0, - 3151, 2098, 2898, - 3151, 2099, 2898, - 3151, 2099, 2897, - 3150, 2100, 2897, - 3150, 2102, 2897, - 3150, 2104, 2896, - 3149, 2106, 2896, - 3149, 2109, 2895, - 3148, 2113, 2893, - 3147, 2119, 2892, - 3145, 2126, 2890, - 3143, 2136, 2887, - 3140, 2148, 2883, - 3136, 2164, 2877, - 3130, 2185, 2870, - 3123, 2212, 2860, - 3113, 2245, 2847, - 3099, 2286, 2828, - 3080, 2335, 2801, - 3053, 2394, 2763, - 3015, 2462, 2707, - 2958, 2540, 2619, - 2868, 2626, 2466, - 2712, 2721, 2116, - 2349, 2823, 0, - 0, 2932, 0, - 0, 3045, 0, - 0, 3163, 0, - 0, 3284, 0, - 0, 3407, 0, - 0, 3533, 0, - 0, 3660, 0, - 3286, 2200, 3021, - 3286, 2201, 3021, - 3286, 2201, 3021, - 3285, 2202, 3021, - 3285, 2203, 3020, - 3285, 2205, 3020, - 3284, 2206, 3019, - 3284, 2209, 3019, - 3283, 2212, 3018, - 3282, 2217, 3016, - 3281, 2223, 3015, - 3280, 2231, 3013, - 3277, 2241, 3010, - 3274, 2254, 3006, - 3270, 2271, 3000, - 3265, 2293, 2993, - 3258, 2321, 2983, - 3248, 2356, 2969, - 3234, 2398, 2949, - 3215, 2450, 2922, - 3189, 2511, 2883, - 3151, 2581, 2825, - 3094, 2661, 2734, - 3005, 2749, 2574, - 2850, 2846, 2196, - 2495, 2950, 0, - 0, 3059, 0, - 0, 3174, 0, - 0, 3292, 0, - 0, 3414, 0, - 0, 3538, 0, - 0, 3664, 0, - 3420, 2309, 3146, - 3420, 2309, 3146, - 3420, 2309, 3146, - 3420, 2310, 3146, - 3419, 2311, 3146, - 3419, 2312, 3145, - 3419, 2313, 3145, - 3418, 2315, 3145, - 3418, 2318, 3144, - 3417, 2322, 3143, - 3416, 2326, 3142, - 3415, 2333, 3140, - 3414, 2341, 3138, - 3411, 2351, 3135, - 3408, 2365, 3131, - 3404, 2383, 3125, - 3399, 2406, 3117, - 3392, 2435, 3107, - 3382, 2471, 3093, - 3368, 2516, 3074, - 3350, 2569, 3046, - 3323, 2631, 3006, - 3285, 2703, 2947, - 3229, 2785, 2853, - 3141, 2875, 2688, - 2988, 2973, 2284, - 2638, 3077, 0, - 0, 3188, 0, - 0, 3303, 0, - 0, 3422, 0, - 0, 3544, 0, - 0, 3669, 0, - 3553, 2422, 3273, - 3553, 2422, 3273, - 3553, 2423, 3273, - 3553, 2423, 3273, - 3553, 2424, 3273, - 3553, 2425, 3273, - 3553, 2426, 3272, - 3552, 2427, 3272, - 3552, 2430, 3271, - 3552, 2432, 3271, - 3551, 2436, 3270, - 3550, 2441, 3269, - 3549, 2447, 3267, - 3547, 2456, 3265, - 3545, 2467, 3261, - 3542, 2481, 3257, - 3538, 2500, 3252, - 3533, 2524, 3244, - 3525, 2554, 3234, - 3516, 2591, 3219, - 3502, 2636, 3200, - 3483, 2690, 3172, - 3457, 2754, 3131, - 3419, 2828, 3071, - 3363, 2910, 2976, - 3275, 3002, 2805, - 3123, 3100, 2380, - 2778, 3206, 0, - 0, 3317, 0, - 0, 3433, 0, - 0, 3553, 0, - 0, 3675, 0, - 3687, 2540, 3402, - 3687, 2540, 3402, - 3686, 2540, 3401, - 3686, 2541, 3401, - 3686, 2541, 3401, - 3686, 2542, 3401, - 3686, 2543, 3401, - 3686, 2544, 3401, - 3686, 2545, 3400, - 3685, 2548, 3400, - 3685, 2550, 3399, - 3684, 2554, 3398, - 3683, 2559, 3397, - 3682, 2566, 3395, - 3680, 2575, 3393, - 3678, 2586, 3390, - 3675, 2601, 3385, - 3671, 2620, 3380, - 3666, 2644, 3372, - 3659, 2675, 3362, - 3649, 2713, 3347, - 3635, 2759, 3327, - 3617, 2815, 3299, - 3590, 2880, 3258, - 3553, 2954, 3197, - 3497, 3038, 3100, - 3410, 3130, 2926, - 3258, 3229, 2484, - 2916, 3336, 0, - 0, 3448, 0, - 0, 3564, 0, - 0, 3684, 0, - 3819, 2661, 3531, - 3819, 2661, 3531, - 3819, 2661, 3531, - 3819, 2661, 3531, - 3819, 2662, 3531, - 3819, 2662, 3530, - 3819, 2663, 3530, - 3819, 2664, 3530, - 3819, 2665, 3530, - 3818, 2667, 3529, - 3818, 2669, 3529, - 3818, 2672, 3528, - 3817, 2676, 3527, - 3816, 2681, 3526, - 3815, 2688, 3524, - 3813, 2697, 3522, - 3811, 2708, 3519, - 3808, 2723, 3514, - 3804, 2743, 3509, - 3799, 2768, 3501, - 3792, 2799, 3490, - 3782, 2838, 3476, - 3768, 2885, 3456, - 3750, 2941, 3427, - 3723, 3007, 3386, - 3686, 3082, 3325, - 3630, 3166, 3227, - 3543, 3259, 3050, - 3392, 3359, 2593, - 3052, 3466, 0, - 0, 3578, 0, - 0, 3695, 0, - 3952, 2784, 3661, - 3952, 2784, 3661, - 3952, 2785, 3661, - 3952, 2785, 3661, - 3952, 2785, 3661, - 3952, 2785, 3660, - 3952, 2786, 3660, - 3952, 2787, 3660, - 3952, 2788, 3660, - 3951, 2789, 3660, - 3951, 2791, 3659, - 3951, 2793, 3659, - 3950, 2796, 3658, - 3950, 2800, 3657, - 3949, 2805, 3656, - 3947, 2812, 3654, - 3946, 2821, 3652, - 3944, 2833, 3648, - 3941, 2848, 3644, - 3937, 2868, 3638, - 3932, 2893, 3631, - 3924, 2925, 3620, - 3915, 2964, 3605, - 3901, 3012, 3585, - 3882, 3068, 3556, - 3856, 3135, 3515, - 3819, 3211, 3453, - 3763, 3295, 3354, - 3676, 3389, 3176, - 3526, 3489, 2707, - 3188, 3597, 0, - 0, 3709, 0, - 4085, 2910, 3791, - 4085, 2910, 3791, - 4085, 2910, 3791, - 4085, 2910, 3791, - 4085, 2911, 3791, - 4085, 2911, 3791, - 4085, 2911, 3791, - 4084, 2912, 3791, - 4084, 2912, 3791, - 4084, 2913, 3790, - 4084, 2915, 3790, - 4084, 2916, 3790, - 4083, 2919, 3789, - 4083, 2922, 3788, - 4082, 2926, 3787, - 4081, 2931, 3786, - 4080, 2938, 3784, - 4078, 2947, 3782, - 4076, 2959, 3779, - 4073, 2975, 3775, - 4069, 2995, 3769, - 4064, 3020, 3761, - 4057, 3052, 3750, - 4047, 3092, 3736, - 4034, 3140, 3715, - 4015, 3197, 3686, - 3989, 3264, 3645, - 3951, 3340, 3583, - 3896, 3425, 3483, - 3809, 3519, 3303, - 3659, 3620, 2826, - 3322, 3728, 0, - 4095, 3037, 3922, - 4095, 3037, 3922, - 4095, 3037, 3922, - 4095, 3037, 3922, - 4095, 3038, 3922, - 4095, 3038, 3922, - 4095, 3038, 3922, - 4095, 3039, 3922, - 4095, 3039, 3922, - 4095, 3040, 3921, - 4095, 3041, 3921, - 4095, 3042, 3921, - 4095, 3044, 3920, - 4095, 3046, 3920, - 4095, 3049, 3919, - 4095, 3053, 3918, - 4095, 3059, 3917, - 4095, 3066, 3915, - 4095, 3075, 3913, - 4095, 3087, 3910, - 4095, 3103, 3905, - 4095, 3123, 3900, - 4095, 3149, 3892, - 4095, 3181, 3881, - 4095, 3221, 3866, - 4095, 3269, 3846, - 4095, 3327, 3817, - 4095, 3394, 3775, - 4084, 3470, 3713, - 4029, 3556, 3613, - 3942, 3650, 3432, - 3792, 3751, 2947, - 4095, 3166, 4053, - 4095, 3166, 4053, - 4095, 3166, 4053, - 4095, 3166, 4053, - 4095, 3166, 4053, - 4095, 3166, 4053, - 4095, 3166, 4053, - 4095, 3167, 4053, - 4095, 3167, 4053, - 4095, 3168, 4053, - 4095, 3168, 4053, - 4095, 3169, 4052, - 4095, 3171, 4052, - 4095, 3172, 4052, - 4095, 3175, 4051, - 4095, 3178, 4050, - 4095, 3182, 4049, - 4095, 3187, 4048, - 4095, 3194, 4046, - 4095, 3204, 4044, - 4095, 3216, 4041, - 4095, 3232, 4037, - 4095, 3252, 4031, - 4095, 3278, 4023, - 4095, 3310, 4012, - 4095, 3350, 3997, - 4095, 3399, 3977, - 4095, 3457, 3948, - 4095, 3524, 3906, - 4095, 3601, 3843, - 4095, 3687, 3743, - 4074, 3781, 3561, - 0, 1606, 1871, - 0, 1607, 1869, - 0, 1610, 1867, - 0, 1612, 1864, - 0, 1616, 1861, - 0, 1622, 1856, - 0, 1628, 1849, - 0, 1637, 1840, - 0, 1649, 1827, - 0, 1664, 1810, - 0, 1684, 1786, - 0, 1709, 1751, - 0, 1740, 1701, - 0, 1779, 1623, - 0, 1826, 1491, - 0, 1883, 1222, - 0, 1949, 0, - 0, 2024, 0, - 0, 2108, 0, - 0, 2201, 0, - 0, 2302, 0, - 0, 2409, 0, - 0, 2521, 0, - 0, 2638, 0, - 0, 2758, 0, - 0, 2881, 0, - 0, 3006, 0, - 0, 3133, 0, - 0, 3261, 0, - 0, 3390, 0, - 0, 3520, 0, - 0, 3651, 0, - 0, 1606, 1873, - 0, 1608, 1871, - 0, 1610, 1869, - 0, 1613, 1867, - 0, 1617, 1863, - 0, 1622, 1858, - 0, 1629, 1851, - 0, 1638, 1842, - 0, 1650, 1830, - 0, 1665, 1813, - 0, 1684, 1789, - 0, 1709, 1754, - 0, 1741, 1704, - 0, 1779, 1626, - 0, 1827, 1497, - 0, 1883, 1231, - 0, 1949, 0, - 0, 2024, 0, - 0, 2109, 0, - 0, 2202, 0, - 0, 2302, 0, - 0, 2409, 0, - 0, 2521, 0, - 0, 2638, 0, - 0, 2758, 0, - 0, 2881, 0, - 0, 3006, 0, - 0, 3133, 0, - 0, 3261, 0, - 0, 3390, 0, - 0, 3520, 0, - 0, 3651, 0, - 0, 1607, 1876, - 0, 1609, 1874, - 0, 1611, 1872, - 0, 1614, 1870, - 0, 1618, 1866, - 0, 1623, 1861, - 0, 1630, 1855, - 0, 1639, 1846, - 0, 1650, 1833, - 0, 1666, 1816, - 0, 1685, 1792, - 0, 1710, 1758, - 0, 1741, 1708, - 0, 1780, 1632, - 0, 1827, 1503, - 0, 1883, 1243, - 0, 1949, 0, - 0, 2024, 0, - 0, 2109, 0, - 0, 2202, 0, - 0, 2302, 0, - 0, 2409, 0, - 0, 2521, 0, - 0, 2638, 0, - 0, 2758, 0, - 0, 2881, 0, - 0, 3006, 0, - 0, 3133, 0, - 0, 3261, 0, - 0, 3390, 0, - 0, 3520, 0, - 0, 3651, 0, - 0, 1608, 1880, - 0, 1610, 1878, - 0, 1612, 1876, - 0, 1615, 1874, - 0, 1619, 1870, - 0, 1624, 1865, - 0, 1631, 1859, - 0, 1640, 1850, - 0, 1651, 1838, - 0, 1666, 1821, - 0, 1686, 1797, - 0, 1711, 1763, - 0, 1742, 1714, - 0, 1781, 1638, - 0, 1828, 1512, - 0, 1884, 1259, - 0, 1950, 0, - 0, 2025, 0, - 0, 2109, 0, - 0, 2202, 0, - 0, 2302, 0, - 0, 2409, 0, - 0, 2521, 0, - 0, 2638, 0, - 0, 2758, 0, - 0, 2881, 0, - 0, 3006, 0, - 0, 3133, 0, - 0, 3261, 0, - 0, 3390, 0, - 0, 3520, 0, - 0, 3651, 0, - 0, 1609, 1885, - 0, 1611, 1884, - 0, 1613, 1882, - 0, 1616, 1879, - 0, 1620, 1876, - 0, 1625, 1871, - 0, 1632, 1864, - 0, 1641, 1855, - 0, 1652, 1843, - 0, 1668, 1827, - 0, 1687, 1803, - 0, 1712, 1770, - 0, 1743, 1722, - 0, 1782, 1647, - 0, 1829, 1524, - 0, 1885, 1280, - 0, 1950, 0, - 0, 2025, 0, - 0, 2110, 0, - 0, 2202, 0, - 0, 2303, 0, - 0, 2409, 0, - 0, 2522, 0, - 0, 2638, 0, - 0, 2758, 0, - 0, 2881, 0, - 0, 3006, 0, - 0, 3133, 0, - 0, 3261, 0, - 0, 3390, 0, - 0, 3520, 0, - 0, 3651, 0, - 0, 1611, 1892, - 0, 1613, 1891, - 0, 1615, 1889, - 0, 1618, 1886, - 0, 1622, 1883, - 0, 1627, 1878, - 0, 1634, 1872, - 0, 1642, 1863, - 0, 1654, 1851, - 0, 1669, 1835, - 0, 1689, 1812, - 0, 1713, 1779, - 0, 1744, 1732, - 0, 1783, 1659, - 0, 1830, 1540, - 0, 1886, 1305, - 0, 1951, 254, - 0, 2026, 0, - 0, 2110, 0, - 0, 2203, 0, - 0, 2303, 0, - 0, 2410, 0, - 0, 2522, 0, - 0, 2638, 0, - 0, 2758, 0, - 0, 2881, 0, - 0, 3006, 0, - 0, 3133, 0, - 0, 3261, 0, - 0, 3390, 0, - 0, 3520, 0, - 0, 3651, 0, - 0, 1614, 1901, - 0, 1615, 1900, - 0, 1617, 1898, - 0, 1620, 1896, - 0, 1624, 1892, - 0, 1629, 1887, - 0, 1636, 1881, - 0, 1645, 1873, - 0, 1656, 1861, - 0, 1671, 1845, - 0, 1691, 1823, - 0, 1715, 1791, - 0, 1746, 1745, - 0, 1784, 1674, - 0, 1831, 1559, - 0, 1887, 1338, - 0, 1952, 508, - 0, 2027, 0, - 0, 2111, 0, - 0, 2203, 0, - 0, 2304, 0, - 0, 2410, 0, - 0, 2522, 0, - 0, 2639, 0, - 0, 2759, 0, - 0, 2881, 0, - 0, 3007, 0, - 0, 3133, 0, - 0, 3261, 0, - 0, 3390, 0, - 0, 3520, 0, - 0, 3651, 0, - 0, 1617, 1913, - 0, 1618, 1912, - 0, 1620, 1910, - 0, 1623, 1908, - 0, 1627, 1904, - 0, 1632, 1900, - 0, 1639, 1894, - 0, 1648, 1885, - 0, 1659, 1874, - 0, 1674, 1859, - 0, 1693, 1837, - 0, 1718, 1806, - 0, 1748, 1761, - 0, 1787, 1694, - 0, 1833, 1584, - 0, 1889, 1378, - 0, 1954, 713, - 0, 2028, 0, - 0, 2112, 0, - 0, 2204, 0, - 0, 2304, 0, - 0, 2411, 0, - 0, 2522, 0, - 0, 2639, 0, - 0, 2759, 0, - 0, 2882, 0, - 0, 3007, 0, - 0, 3133, 0, - 0, 3261, 0, - 0, 3391, 0, - 0, 3520, 0, - 0, 3651, 0, - 0, 1621, 1929, - 0, 1622, 1928, - 0, 1625, 1926, - 0, 1627, 1923, - 0, 1631, 1920, - 0, 1636, 1916, - 0, 1643, 1910, - 0, 1652, 1902, - 0, 1663, 1891, - 0, 1678, 1876, - 0, 1697, 1855, - 0, 1721, 1826, - 0, 1752, 1783, - 0, 1790, 1719, - 0, 1836, 1616, - 0, 1891, 1426, - 0, 1956, 894, - 0, 2030, 0, - 0, 2113, 0, - 0, 2206, 0, - 0, 2305, 0, - 0, 2411, 0, - 0, 2523, 0, - 0, 2639, 0, - 0, 2759, 0, - 0, 2882, 0, - 0, 3007, 0, - 0, 3134, 0, - 0, 3262, 0, - 0, 3391, 0, - 0, 3520, 0, - 0, 3651, 0, - 0, 1626, 1949, - 0, 1628, 1948, - 0, 1630, 1946, - 0, 1633, 1944, - 0, 1637, 1940, - 0, 1642, 1936, - 0, 1648, 1931, - 0, 1657, 1923, - 0, 1668, 1913, - 0, 1683, 1898, - 0, 1701, 1878, - 0, 1726, 1851, - 0, 1756, 1810, - 0, 1793, 1750, - 0, 1839, 1655, - 0, 1894, 1484, - 0, 1958, 1059, - 0, 2032, 0, - 0, 2115, 0, - 0, 2207, 0, - 0, 2306, 0, - 0, 2412, 0, - 0, 2524, 0, - 0, 2640, 0, - 0, 2760, 0, - 0, 2882, 0, - 0, 3007, 0, - 0, 3134, 0, - 0, 3262, 0, - 0, 3391, 0, - 0, 3520, 0, - 0, 3651, 0, - 0, 1634, 1974, - 0, 1635, 1973, - 0, 1637, 1971, - 0, 1640, 1969, - 0, 1644, 1966, - 0, 1649, 1962, - 0, 1655, 1957, - 0, 1664, 1950, - 0, 1675, 1940, - 0, 1689, 1927, - 0, 1708, 1908, - 0, 1731, 1882, - 0, 1761, 1844, - 0, 1798, 1789, - 0, 1844, 1702, - 0, 1898, 1552, - 0, 1962, 1214, - 0, 2035, 0, - 0, 2118, 0, - 0, 2209, 0, - 0, 2308, 0, - 0, 2414, 0, - 0, 2525, 0, - 0, 2641, 0, - 0, 2760, 0, - 0, 2883, 0, - 0, 3008, 0, - 0, 3134, 0, - 0, 3262, 0, - 0, 3391, 0, - 0, 3521, 0, - 0, 3651, 0, - 1107, 1643, 2006, - 1096, 1645, 2005, - 1081, 1647, 2003, - 1061, 1650, 2001, - 1031, 1653, 1999, - 989, 1658, 1995, - 926, 1664, 1990, - 824, 1673, 1983, - 639, 1684, 1974, - 132, 1698, 1962, - 0, 1716, 1945, - 0, 1739, 1921, - 0, 1769, 1886, - 0, 1805, 1836, - 0, 1850, 1758, - 0, 1904, 1628, - 0, 1967, 1363, - 0, 2039, 0, - 0, 2121, 0, - 0, 2212, 0, - 0, 2310, 0, - 0, 2415, 0, - 0, 2526, 0, - 0, 2642, 0, - 0, 2761, 0, - 0, 2883, 0, - 0, 3008, 0, - 0, 3134, 0, - 0, 3262, 0, - 0, 3391, 0, - 0, 3521, 0, - 0, 3651, 0, - 1479, 1656, 2045, - 1474, 1657, 2044, - 1468, 1659, 2043, - 1459, 1662, 2041, - 1447, 1666, 2039, - 1431, 1670, 2035, - 1408, 1676, 2031, - 1375, 1684, 2025, - 1327, 1695, 2016, - 1255, 1709, 2005, - 1135, 1727, 1989, - 899, 1749, 1968, - 0, 1778, 1937, - 0, 1814, 1892, - 0, 1858, 1824, - 0, 1911, 1714, - 0, 1973, 1507, - 0, 2045, 831, - 0, 2126, 0, - 0, 2215, 0, - 0, 2313, 0, - 0, 2418, 0, - 0, 2528, 0, - 0, 2643, 0, - 0, 2762, 0, - 0, 2884, 0, - 0, 3009, 0, - 0, 3135, 0, - 0, 3263, 0, - 0, 3391, 0, - 0, 3521, 0, - 0, 3651, 0, - 1732, 1672, 2093, - 1730, 1674, 2092, - 1726, 1676, 2091, - 1721, 1678, 2089, - 1715, 1681, 2087, - 1706, 1686, 2084, - 1693, 1692, 2080, - 1676, 1700, 2075, - 1652, 1710, 2067, - 1618, 1723, 2057, - 1568, 1741, 2043, - 1491, 1763, 2024, - 1362, 1791, 1997, - 1100, 1826, 1958, - 0, 1868, 1900, - 0, 1920, 1808, - 0, 1981, 1648, - 0, 2052, 1267, - 0, 2132, 0, - 0, 2220, 0, - 0, 2317, 0, - 0, 2421, 0, - 0, 2530, 0, - 0, 2645, 0, - 0, 2764, 0, - 0, 2885, 0, - 0, 3009, 0, - 0, 3136, 0, - 0, 3263, 0, - 0, 3392, 0, - 0, 3521, 0, - 0, 3651, 0, - 1938, 1693, 2150, - 1936, 1694, 2150, - 1934, 1696, 2148, - 1931, 1699, 2147, - 1927, 1702, 2145, - 1921, 1706, 2142, - 1913, 1712, 2139, - 1903, 1719, 2134, - 1889, 1729, 2127, - 1869, 1742, 2119, - 1840, 1759, 2106, - 1800, 1780, 2090, - 1739, 1807, 2066, - 1643, 1841, 2033, - 1470, 1882, 1984, - 1033, 1932, 1910, - 0, 1992, 1786, - 0, 2061, 1540, - 0, 2139, 54, - 0, 2227, 0, - 0, 2322, 0, - 0, 2425, 0, - 0, 2534, 0, - 0, 2648, 0, - 0, 2766, 0, - 0, 2887, 0, - 0, 3011, 0, - 0, 3136, 0, - 0, 3264, 0, - 0, 3392, 0, - 0, 3522, 0, - 0, 3652, 0, - 2118, 1720, 2217, - 2117, 1721, 2216, - 2116, 1723, 2215, - 2113, 1725, 2214, - 2111, 1728, 2212, - 2107, 1732, 2210, - 2102, 1737, 2207, - 2095, 1744, 2203, - 2086, 1754, 2197, - 2073, 1766, 2190, - 2055, 1782, 2179, - 2030, 1802, 2165, - 1994, 1828, 2145, - 1942, 1860, 2118, - 1861, 1900, 2077, - 1723, 1948, 2018, - 1431, 2006, 1923, - 0, 2073, 1755, - 0, 2149, 1339, - 0, 2235, 0, - 0, 2329, 0, - 0, 2430, 0, - 0, 2538, 0, - 0, 2651, 0, - 0, 2768, 0, - 0, 2889, 0, - 0, 3012, 0, - 0, 3138, 0, - 0, 3265, 0, - 0, 3393, 0, - 0, 3522, 0, - 0, 3652, 0, - 2283, 1753, 2293, - 2282, 1754, 2292, - 2281, 1756, 2292, - 2280, 1758, 2290, - 2278, 1761, 2289, - 2275, 1764, 2287, - 2272, 1769, 2285, - 2267, 1776, 2281, - 2261, 1785, 2276, - 2252, 1796, 2270, - 2240, 1811, 2261, - 2224, 1830, 2249, - 2201, 1854, 2233, - 2168, 1884, 2210, - 2121, 1922, 2178, - 2048, 1968, 2131, - 1928, 2024, 2059, - 1694, 2088, 1940, - 631, 2163, 1709, - 0, 2246, 718, - 0, 2338, 0, - 0, 2437, 0, - 0, 2544, 0, - 0, 2655, 0, - 0, 2772, 0, - 0, 2891, 0, - 0, 3014, 0, - 0, 3139, 0, - 0, 3266, 0, - 0, 3394, 0, - 0, 3523, 0, - 0, 3653, 0, - 2439, 1794, 2378, - 2438, 1795, 2378, - 2437, 1796, 2377, - 2436, 1798, 2376, - 2435, 1801, 2375, - 2433, 1804, 2373, - 2430, 1809, 2371, - 2427, 1815, 2368, - 2423, 1823, 2364, - 2417, 1833, 2359, - 2408, 1847, 2352, - 2397, 1864, 2342, - 2382, 1887, 2329, - 2360, 1915, 2311, - 2329, 1951, 2285, - 2285, 1994, 2248, - 2217, 2047, 2193, - 2108, 2108, 2108, - 1903, 2180, 1962, - 1252, 2260, 1639, - 0, 2350, 0, - 0, 2447, 0, - 0, 2551, 0, - 0, 2661, 0, - 0, 2776, 0, - 0, 2895, 0, - 0, 3017, 0, - 0, 3141, 0, - 0, 3267, 0, - 0, 3395, 0, - 0, 3524, 0, - 0, 3653, 0, - 2587, 1843, 2472, - 2587, 1844, 2471, - 2586, 1845, 2471, - 2585, 1847, 2470, - 2584, 1850, 2469, - 2583, 1853, 2468, - 2581, 1857, 2466, - 2579, 1862, 2464, - 2576, 1869, 2460, - 2571, 1879, 2456, - 2566, 1891, 2451, - 2558, 1907, 2443, - 2547, 1928, 2432, - 2532, 1954, 2418, - 2511, 1986, 2397, - 2482, 2027, 2369, - 2439, 2076, 2327, - 2375, 2134, 2266, - 2273, 2201, 2167, - 2086, 2279, 1990, - 1566, 2365, 1526, - 0, 2459, 0, - 0, 2561, 0, - 0, 2669, 0, - 0, 2782, 0, - 0, 2899, 0, - 0, 3020, 0, - 0, 3144, 0, - 0, 3269, 0, - 0, 3396, 0, - 0, 3525, 0, - 0, 3654, 0, - 2731, 1902, 2573, - 2731, 1903, 2572, - 2731, 1904, 2572, - 2730, 1906, 2571, - 2729, 1908, 2570, - 2728, 1910, 2569, - 2727, 1914, 2568, - 2725, 1919, 2566, - 2723, 1925, 2564, - 2720, 1933, 2560, - 2716, 1944, 2556, - 2710, 1959, 2550, - 2702, 1977, 2541, - 2692, 2000, 2530, - 2677, 2030, 2514, - 2657, 2067, 2492, - 2629, 2112, 2461, - 2588, 2166, 2416, - 2526, 2229, 2347, - 2428, 2302, 2236, - 2252, 2384, 2024, - 1798, 2475, 1309, - 0, 2574, 0, - 0, 2679, 0, - 0, 2790, 0, - 0, 2906, 0, - 0, 3025, 0, - 0, 3147, 0, - 0, 3272, 0, - 0, 3398, 0, - 0, 3526, 0, - 0, 3655, 0, - 2872, 1970, 2680, - 2872, 1971, 2680, - 2872, 1972, 2679, - 2871, 1973, 2679, - 2871, 1975, 2678, - 2870, 1977, 2677, - 2869, 1981, 2676, - 2868, 1985, 2675, - 2866, 1990, 2673, - 2864, 1998, 2670, - 2861, 2007, 2667, - 2857, 2019, 2662, - 2851, 2036, 2655, - 2843, 2056, 2646, - 2833, 2083, 2634, - 2819, 2115, 2618, - 2799, 2156, 2594, - 2771, 2205, 2561, - 2731, 2264, 2512, - 2672, 2332, 2437, - 2577, 2409, 2314, - 2409, 2495, 2066, - 1993, 2590, 532, - 0, 2692, 0, - 0, 2800, 0, - 0, 2914, 0, - 0, 3031, 0, - 0, 3152, 0, - 0, 3276, 0, - 0, 3401, 0, - 0, 3528, 0, - 0, 3657, 0, - 3011, 2048, 2793, - 3011, 2049, 2792, - 3010, 2050, 2792, - 3010, 2051, 2792, - 3010, 2052, 2791, - 3009, 2054, 2791, - 3008, 2057, 2790, - 3007, 2060, 2789, - 3006, 2065, 2787, - 3005, 2071, 2785, - 3002, 2079, 2782, - 2999, 2090, 2779, - 2995, 2104, 2774, - 2990, 2122, 2767, - 2982, 2144, 2757, - 2972, 2173, 2745, - 2958, 2209, 2727, - 2939, 2253, 2702, - 2911, 2306, 2667, - 2872, 2368, 2616, - 2813, 2440, 2536, - 2721, 2521, 2400, - 2558, 2611, 2118, - 2167, 2709, 0, - 0, 2814, 0, - 0, 2924, 0, - 0, 3039, 0, - 0, 3158, 0, - 0, 3280, 0, - 0, 3405, 0, - 0, 3531, 0, - 0, 3659, 0, - 3148, 2135, 2910, - 3147, 2135, 2909, - 3147, 2136, 2909, - 3147, 2137, 2909, - 3147, 2138, 2909, - 3146, 2140, 2908, - 3146, 2142, 2907, - 3145, 2145, 2907, - 3144, 2149, 2905, - 3143, 2154, 2904, - 3141, 2161, 2902, - 3139, 2170, 2899, - 3136, 2181, 2895, - 3132, 2196, 2890, - 3127, 2216, 2883, - 3119, 2241, 2873, - 3109, 2272, 2860, - 3095, 2310, 2842, - 3076, 2357, 2816, - 3049, 2413, 2779, - 3010, 2479, 2725, - 2953, 2554, 2640, - 2862, 2638, 2495, - 2703, 2731, 2178, - 2328, 2831, 0, - 0, 2938, 0, - 0, 3050, 0, - 0, 3167, 0, - 0, 3287, 0, - 0, 3410, 0, - 0, 3535, 0, - 0, 3662, 0, - 3283, 2230, 3030, - 3283, 2230, 3030, - 3283, 2231, 3030, - 3283, 2232, 3030, - 3283, 2233, 3029, - 3282, 2234, 3029, - 3282, 2236, 3028, - 3281, 2238, 3028, - 3281, 2241, 3027, - 3280, 2245, 3026, - 3279, 2251, 3024, - 3277, 2258, 3022, - 3275, 2268, 3019, - 3272, 2280, 3015, - 3268, 2297, 3010, - 3262, 2317, 3002, - 3255, 2344, 2992, - 3245, 2377, 2979, - 3231, 2418, 2960, - 3212, 2467, 2933, - 3186, 2526, 2896, - 3147, 2594, 2839, - 3090, 2672, 2751, - 3000, 2758, 2598, - 2844, 2853, 2248, - 2481, 2955, 0, - 0, 3064, 0, - 0, 3177, 0, - 0, 3295, 0, - 0, 3416, 0, - 0, 3540, 0, - 0, 3665, 0, - 3418, 2332, 3153, - 3418, 2332, 3153, - 3418, 2333, 3153, - 3418, 2333, 3153, - 3417, 2334, 3153, - 3417, 2335, 3152, - 3417, 2337, 3152, - 3417, 2339, 3151, - 3416, 2341, 3151, - 3415, 2344, 3150, - 3414, 2349, 3149, - 3413, 2355, 3147, - 3412, 2363, 3145, - 3409, 2373, 3142, - 3406, 2386, 3138, - 3403, 2403, 3132, - 3397, 2425, 3125, - 3390, 2453, 3115, - 3380, 2488, 3101, - 3366, 2531, 3082, - 3347, 2582, 3054, - 3321, 2643, 3016, - 3283, 2713, 2958, - 3226, 2793, 2866, - 3137, 2882, 2706, - 2983, 2978, 2328, - 2627, 3082, 0, - 0, 3191, 0, - 0, 3306, 0, - 0, 3424, 0, - 0, 3546, 0, - 0, 3670, 0, - 3552, 2440, 3279, - 3552, 2441, 3278, - 3552, 2441, 3278, - 3552, 2441, 3278, - 3552, 2442, 3278, - 3551, 2443, 3278, - 3551, 2444, 3278, - 3551, 2446, 3277, - 3551, 2448, 3277, - 3550, 2450, 3276, - 3549, 2454, 3275, - 3549, 2458, 3274, - 3547, 2465, 3272, - 3546, 2473, 3270, - 3543, 2484, 3267, - 3541, 2497, 3263, - 3537, 2515, 3257, - 3531, 2538, 3250, - 3524, 2567, 3239, - 3514, 2603, 3225, - 3500, 2648, 3206, - 3482, 2701, 3178, - 3455, 2763, 3138, - 3417, 2835, 3079, - 3361, 2917, 2986, - 3273, 3007, 2820, - 3120, 3105, 2416, - 2770, 3209, 0, - 0, 3320, 0, - 0, 3435, 0, - 0, 3554, 0, - 0, 3676, 0, - 3685, 2554, 3406, - 3685, 2554, 3405, - 3685, 2554, 3405, - 3685, 2555, 3405, - 3685, 2555, 3405, - 3685, 2556, 3405, - 3685, 2557, 3405, - 3685, 2558, 3405, - 3684, 2560, 3404, - 3684, 2562, 3404, - 3684, 2564, 3403, - 3683, 2568, 3402, - 3682, 2573, 3401, - 3681, 2579, 3399, - 3679, 2588, 3397, - 3677, 2599, 3394, - 3674, 2613, 3389, - 3670, 2632, 3384, - 3665, 2656, 3376, - 3658, 2686, 3366, - 3648, 2723, 3351, - 3634, 2768, 3332, - 3615, 2823, 3304, - 3589, 2886, 3263, - 3551, 2960, 3203, - 3495, 3042, 3108, - 3408, 3134, 2938, - 3255, 3233, 2512, - 2910, 3338, 0, - 0, 3449, 0, - 0, 3565, 0, - 0, 3685, 0, - 3819, 2672, 3534, - 3819, 2672, 3534, - 3819, 2672, 3534, - 3819, 2672, 3534, - 3818, 2673, 3533, - 3818, 2673, 3533, - 3818, 2674, 3533, - 3818, 2675, 3533, - 3818, 2676, 3533, - 3818, 2678, 3532, - 3817, 2680, 3532, - 3817, 2683, 3531, - 3816, 2686, 3530, - 3815, 2691, 3529, - 3814, 2698, 3527, - 3812, 2707, 3525, - 3810, 2718, 3522, - 3807, 2733, 3517, - 3803, 2752, 3512, - 3798, 2776, 3504, - 3791, 2807, 3494, - 3781, 2845, 3479, - 3767, 2891, 3459, - 3749, 2947, 3431, - 3722, 3012, 3390, - 3685, 3086, 3329, - 3629, 3170, 3232, - 3542, 3262, 3059, - 3390, 3362, 2616, - 3048, 3468, 0, - 0, 3580, 0, - 0, 3696, 0, - 3952, 2793, 3663, - 3952, 2793, 3663, - 3952, 2793, 3663, - 3951, 2793, 3663, - 3951, 2793, 3663, - 3951, 2794, 3663, - 3951, 2794, 3663, - 3951, 2795, 3662, - 3951, 2796, 3662, - 3951, 2797, 3662, - 3951, 2799, 3661, - 3950, 2801, 3661, - 3950, 2804, 3660, - 3949, 2808, 3659, - 3948, 2813, 3658, - 3947, 2820, 3656, - 3945, 2829, 3654, - 3943, 2840, 3651, - 3940, 2856, 3646, - 3936, 2875, 3641, - 3931, 2900, 3633, - 3924, 2931, 3622, - 3914, 2970, 3608, - 3900, 3017, 3588, - 3882, 3073, 3559, - 3856, 3139, 3518, - 3818, 3214, 3457, - 3762, 3298, 3359, - 3675, 3391, 3182, - 3524, 3491, 2725, - 3184, 3598, 0, - 0, 3710, 0, - 4084, 2916, 3793, - 4084, 2916, 3793, - 4084, 2916, 3793, - 4084, 2917, 3793, - 4084, 2917, 3793, - 4084, 2917, 3793, - 4084, 2918, 3793, - 4084, 2918, 3792, - 4084, 2919, 3792, - 4084, 2920, 3792, - 4083, 2921, 3792, - 4083, 2923, 3791, - 4083, 2925, 3791, - 4082, 2928, 3790, - 4082, 2932, 3789, - 4081, 2937, 3788, - 4080, 2944, 3786, - 4078, 2953, 3784, - 4076, 2965, 3781, - 4073, 2980, 3776, - 4069, 3000, 3771, - 4064, 3025, 3763, - 4056, 3057, 3752, - 4047, 3096, 3738, - 4033, 3144, 3717, - 4015, 3201, 3689, - 3988, 3267, 3647, - 3951, 3343, 3585, - 3895, 3428, 3486, - 3808, 3521, 3308, - 3658, 3622, 2839, - 3320, 3729, 0, - 4095, 3042, 3923, - 4095, 3042, 3923, - 4095, 3042, 3923, - 4095, 3042, 3923, - 4095, 3042, 3923, - 4095, 3043, 3923, - 4095, 3043, 3923, - 4095, 3043, 3923, - 4095, 3044, 3923, - 4095, 3045, 3923, - 4095, 3046, 3922, - 4095, 3047, 3922, - 4095, 3049, 3922, - 4095, 3051, 3921, - 4095, 3054, 3920, - 4095, 3058, 3919, - 4095, 3063, 3918, - 4095, 3070, 3916, - 4095, 3079, 3914, - 4095, 3091, 3911, - 4095, 3107, 3907, - 4095, 3127, 3901, - 4095, 3152, 3893, - 4095, 3184, 3882, - 4095, 3224, 3868, - 4095, 3272, 3847, - 4095, 3329, 3819, - 4095, 3396, 3777, - 4084, 3472, 3715, - 4028, 3558, 3615, - 3941, 3651, 3435, - 3791, 3752, 2958, - 4095, 3169, 4054, - 4095, 3169, 4054, - 4095, 3169, 4054, - 4095, 3169, 4054, - 4095, 3169, 4054, - 4095, 3170, 4054, - 4095, 3170, 4054, - 4095, 3170, 4054, - 4095, 3171, 4054, - 4095, 3171, 4054, - 4095, 3172, 4054, - 4095, 3173, 4053, - 4095, 3174, 4053, - 4095, 3176, 4053, - 4095, 3178, 4052, - 4095, 3181, 4051, - 4095, 3185, 4050, - 4095, 3191, 4049, - 4095, 3198, 4047, - 4095, 3207, 4045, - 4095, 3219, 4042, - 4095, 3235, 4037, - 4095, 3255, 4032, - 4095, 3281, 4024, - 4095, 3313, 4013, - 4095, 3353, 3998, - 4095, 3401, 3978, - 4095, 3459, 3949, - 4095, 3526, 3907, - 4095, 3602, 3845, - 4095, 3688, 3745, - 4074, 3782, 3564, - 0, 1736, 2002, - 0, 1737, 2001, - 0, 1739, 2000, - 0, 1741, 1998, - 0, 1744, 1995, - 0, 1748, 1991, - 0, 1753, 1986, - 0, 1760, 1979, - 0, 1769, 1970, - 0, 1781, 1958, - 0, 1796, 1940, - 0, 1816, 1916, - 0, 1841, 1881, - 0, 1872, 1830, - 0, 1911, 1752, - 0, 1958, 1620, - 0, 2015, 1347, - 0, 2080, 0, - 0, 2156, 0, - 0, 2240, 0, - 0, 2333, 0, - 0, 2434, 0, - 0, 2541, 0, - 0, 2653, 0, - 0, 2770, 0, - 0, 2890, 0, - 0, 3013, 0, - 0, 3138, 0, - 0, 3265, 0, - 0, 3393, 0, - 0, 3522, 0, - 0, 3652, 0, - 0, 1737, 2004, - 0, 1738, 2003, - 0, 1739, 2001, - 0, 1742, 1999, - 0, 1745, 1997, - 0, 1749, 1993, - 0, 1754, 1988, - 0, 1761, 1981, - 0, 1769, 1972, - 0, 1781, 1960, - 0, 1796, 1942, - 0, 1816, 1918, - 0, 1841, 1883, - 0, 1872, 1833, - 0, 1911, 1755, - 0, 1958, 1624, - 0, 2015, 1354, - 0, 2081, 0, - 0, 2156, 0, - 0, 2241, 0, - 0, 2333, 0, - 0, 2434, 0, - 0, 2541, 0, - 0, 2653, 0, - 0, 2770, 0, - 0, 2890, 0, - 0, 3013, 0, - 0, 3138, 0, - 0, 3265, 0, - 0, 3393, 0, - 0, 3522, 0, - 0, 3652, 0, - 0, 1737, 2006, - 0, 1738, 2005, - 0, 1740, 2004, - 0, 1742, 2002, - 0, 1745, 1999, - 0, 1749, 1995, - 0, 1754, 1990, - 0, 1761, 1984, - 0, 1770, 1974, - 0, 1782, 1962, - 0, 1797, 1945, - 0, 1817, 1921, - 0, 1841, 1886, - 0, 1873, 1836, - 0, 1912, 1759, - 0, 1959, 1629, - 0, 2015, 1363, - 0, 2081, 0, - 0, 2156, 0, - 0, 2241, 0, - 0, 2334, 0, - 0, 2434, 0, - 0, 2541, 0, - 0, 2653, 0, - 0, 2770, 0, - 0, 2890, 0, - 0, 3013, 0, - 0, 3138, 0, - 0, 3265, 0, - 0, 3393, 0, - 0, 3522, 0, - 0, 3652, 0, - 0, 1738, 2009, - 0, 1739, 2008, - 0, 1741, 2007, - 0, 1743, 2005, - 0, 1746, 2002, - 0, 1750, 1998, - 0, 1755, 1993, - 0, 1762, 1987, - 0, 1771, 1978, - 0, 1782, 1965, - 0, 1798, 1948, - 0, 1817, 1924, - 0, 1842, 1890, - 0, 1873, 1840, - 0, 1912, 1764, - 0, 1959, 1636, - 0, 2015, 1375, - 0, 2081, 0, - 0, 2157, 0, - 0, 2241, 0, - 0, 2334, 0, - 0, 2434, 0, - 0, 2541, 0, - 0, 2653, 0, - 0, 2770, 0, - 0, 2890, 0, - 0, 3013, 0, - 0, 3138, 0, - 0, 3265, 0, - 0, 3393, 0, - 0, 3522, 0, - 0, 3652, 0, - 0, 1739, 2013, - 0, 1740, 2012, - 0, 1742, 2011, - 0, 1744, 2009, - 0, 1747, 2006, - 0, 1751, 2002, - 0, 1756, 1997, - 0, 1763, 1991, - 0, 1772, 1982, - 0, 1783, 1970, - 0, 1798, 1953, - 0, 1818, 1929, - 0, 1843, 1895, - 0, 1874, 1846, - 0, 1913, 1771, - 0, 1960, 1645, - 0, 2016, 1391, - 0, 2082, 0, - 0, 2157, 0, - 0, 2241, 0, - 0, 2334, 0, - 0, 2434, 0, - 0, 2541, 0, - 0, 2653, 0, - 0, 2770, 0, - 0, 2890, 0, - 0, 3013, 0, - 0, 3138, 0, - 0, 3265, 0, - 0, 3393, 0, - 0, 3522, 0, - 0, 3652, 0, - 0, 1740, 2018, - 0, 1741, 2017, - 0, 1743, 2016, - 0, 1745, 2014, - 0, 1748, 2011, - 0, 1752, 2008, - 0, 1757, 2003, - 0, 1764, 1996, - 0, 1773, 1988, - 0, 1785, 1975, - 0, 1800, 1959, - 0, 1819, 1935, - 0, 1844, 1902, - 0, 1875, 1854, - 0, 1914, 1779, - 0, 1961, 1656, - 0, 2017, 1412, - 0, 2082, 13, - 0, 2157, 0, - 0, 2242, 0, - 0, 2334, 0, - 0, 2435, 0, - 0, 2541, 0, - 0, 2654, 0, - 0, 2770, 0, - 0, 2890, 0, - 0, 3013, 0, - 0, 3138, 0, - 0, 3265, 0, - 0, 3393, 0, - 0, 3522, 0, - 0, 3652, 0, - 0, 1742, 2025, - 0, 1743, 2024, - 0, 1745, 2023, - 0, 1747, 2021, - 0, 1750, 2018, - 0, 1754, 2015, - 0, 1759, 2010, - 0, 1766, 2004, - 0, 1775, 1995, - 0, 1786, 1983, - 0, 1801, 1967, - 0, 1821, 1944, - 0, 1845, 1911, - 0, 1876, 1864, - 0, 1915, 1791, - 0, 1962, 1672, - 0, 2018, 1438, - 0, 2083, 386, - 0, 2158, 0, - 0, 2242, 0, - 0, 2335, 0, - 0, 2435, 0, - 0, 2542, 0, - 0, 2654, 0, - 0, 2770, 0, - 0, 2890, 0, - 0, 3013, 0, - 0, 3139, 0, - 0, 3265, 0, - 0, 3393, 0, - 0, 3523, 0, - 0, 3652, 0, - 0, 1744, 2035, - 0, 1746, 2033, - 0, 1747, 2032, - 0, 1749, 2030, - 0, 1752, 2028, - 0, 1756, 2024, - 0, 1761, 2020, - 0, 1768, 2013, - 0, 1777, 2005, - 0, 1788, 1993, - 0, 1803, 1977, - 0, 1823, 1955, - 0, 1847, 1923, - 0, 1878, 1877, - 0, 1917, 1806, - 0, 1963, 1691, - 0, 2019, 1470, - 0, 2084, 640, - 0, 2159, 0, - 0, 2243, 0, - 0, 2336, 0, - 0, 2436, 0, - 0, 2542, 0, - 0, 2654, 0, - 0, 2771, 0, - 0, 2891, 0, - 0, 3014, 0, - 0, 3139, 0, - 0, 3265, 0, - 0, 3393, 0, - 0, 3523, 0, - 0, 3652, 0, - 0, 1748, 2046, - 0, 1749, 2045, - 0, 1750, 2044, - 0, 1753, 2042, - 0, 1755, 2040, - 0, 1759, 2036, - 0, 1764, 2032, - 0, 1771, 2026, - 0, 1780, 2018, - 0, 1791, 2006, - 0, 1806, 1991, - 0, 1825, 1969, - 0, 1850, 1938, - 0, 1881, 1893, - 0, 1919, 1826, - 0, 1965, 1716, - 0, 2021, 1510, - 0, 2086, 846, - 0, 2160, 0, - 0, 2244, 0, - 0, 2336, 0, - 0, 2436, 0, - 0, 2543, 0, - 0, 2655, 0, - 0, 2771, 0, - 0, 2891, 0, - 0, 3014, 0, - 0, 3139, 0, - 0, 3266, 0, - 0, 3394, 0, - 0, 3523, 0, - 0, 3652, 0, - 0, 1752, 2062, - 0, 1753, 2061, - 0, 1755, 2060, - 0, 1757, 2058, - 0, 1760, 2055, - 0, 1763, 2052, - 0, 1768, 2048, - 0, 1775, 2042, - 0, 1784, 2034, - 0, 1795, 2023, - 0, 1810, 2008, - 0, 1829, 1987, - 0, 1853, 1958, - 0, 1884, 1915, - 0, 1922, 1851, - 0, 1968, 1748, - 0, 2023, 1559, - 0, 2088, 1026, - 0, 2162, 0, - 0, 2246, 0, - 0, 2338, 0, - 0, 2437, 0, - 0, 2543, 0, - 0, 2655, 0, - 0, 2771, 0, - 0, 2891, 0, - 0, 3014, 0, - 0, 3139, 0, - 0, 3266, 0, - 0, 3394, 0, - 0, 3523, 0, - 0, 3652, 0, - 0, 1757, 2082, - 0, 1759, 2081, - 0, 1760, 2080, - 0, 1762, 2078, - 0, 1765, 2076, - 0, 1769, 2073, - 0, 1774, 2068, - 0, 1780, 2063, - 0, 1789, 2055, - 0, 1800, 2045, - 0, 1815, 2030, - 0, 1834, 2011, - 0, 1858, 1983, - 0, 1888, 1942, - 0, 1925, 1882, - 0, 1971, 1787, - 0, 2026, 1616, - 0, 2090, 1191, - 0, 2164, 0, - 0, 2247, 0, - 0, 2339, 0, - 0, 2438, 0, - 0, 2544, 0, - 0, 2656, 0, - 0, 2772, 0, - 0, 2892, 0, - 0, 3014, 0, - 0, 3139, 0, - 0, 3266, 0, - 0, 3394, 0, - 0, 3523, 0, - 0, 3653, 0, - 30, 1765, 2107, - 0, 1766, 2106, - 0, 1767, 2105, - 0, 1770, 2103, - 0, 1772, 2101, - 0, 1776, 2098, - 0, 1781, 2094, - 0, 1787, 2089, - 0, 1796, 2082, - 0, 1807, 2072, - 0, 1821, 2059, - 0, 1840, 2040, - 0, 1864, 2014, - 0, 1893, 1976, - 0, 1931, 1921, - 0, 1976, 1834, - 0, 2030, 1684, - 0, 2094, 1346, - 0, 2167, 0, - 0, 2250, 0, - 0, 2341, 0, - 0, 2440, 0, - 0, 2546, 0, - 0, 2657, 0, - 0, 2773, 0, - 0, 2892, 0, - 0, 3015, 0, - 0, 3140, 0, - 0, 3266, 0, - 0, 3394, 0, - 0, 3523, 0, - 0, 3653, 0, - 1247, 1774, 2139, - 1239, 1775, 2138, - 1228, 1777, 2137, - 1213, 1779, 2136, - 1193, 1782, 2133, - 1163, 1785, 2131, - 1121, 1790, 2127, - 1058, 1796, 2122, - 956, 1805, 2116, - 771, 1816, 2106, - 265, 1830, 2094, - 0, 1848, 2077, - 0, 1871, 2053, - 0, 1901, 2018, - 0, 1937, 1968, - 0, 1982, 1890, - 0, 2036, 1760, - 0, 2099, 1495, - 0, 2171, 0, - 0, 2253, 0, - 0, 2344, 0, - 0, 2442, 0, - 0, 2547, 0, - 0, 2658, 0, - 0, 2774, 0, - 0, 2893, 0, - 0, 3015, 0, - 0, 3140, 0, - 0, 3267, 0, - 0, 3394, 0, - 0, 3523, 0, - 0, 3653, 0, - 1614, 1787, 2178, - 1611, 1788, 2178, - 1606, 1790, 2177, - 1600, 1792, 2175, - 1591, 1794, 2173, - 1579, 1798, 2171, - 1563, 1802, 2167, - 1540, 1808, 2163, - 1507, 1817, 2157, - 1459, 1827, 2149, - 1387, 1841, 2137, - 1267, 1859, 2122, - 1031, 1881, 2100, - 0, 1910, 2069, - 0, 1946, 2024, - 0, 1990, 1956, - 0, 2043, 1846, - 0, 2105, 1639, - 0, 2177, 963, - 0, 2258, 0, - 0, 2348, 0, - 0, 2445, 0, - 0, 2550, 0, - 0, 2660, 0, - 0, 2775, 0, - 0, 2894, 0, - 0, 3016, 0, - 0, 3141, 0, - 0, 3267, 0, - 0, 3395, 0, - 0, 3523, 0, - 0, 3653, 0, - 1867, 1803, 2226, - 1865, 1804, 2225, - 1862, 1806, 2224, - 1858, 1808, 2223, - 1853, 1810, 2222, - 1847, 1814, 2219, - 1838, 1818, 2216, - 1825, 1824, 2212, - 1808, 1832, 2207, - 1784, 1842, 2199, - 1750, 1855, 2189, - 1700, 1873, 2175, - 1623, 1895, 2156, - 1494, 1923, 2129, - 1232, 1958, 2090, - 0, 2000, 2032, - 0, 2052, 1940, - 0, 2113, 1780, - 0, 2184, 1399, - 0, 2264, 0, - 0, 2352, 0, - 0, 2449, 0, - 0, 2553, 0, - 0, 2663, 0, - 0, 2777, 0, - 0, 2896, 0, - 0, 3017, 0, - 0, 3142, 0, - 0, 3268, 0, - 0, 3395, 0, - 0, 3524, 0, - 0, 3653, 0, - 2071, 1824, 2283, - 2070, 1825, 2282, - 2068, 1827, 2282, - 2066, 1828, 2281, - 2063, 1831, 2279, - 2059, 1834, 2277, - 2053, 1838, 2274, - 2046, 1844, 2271, - 2035, 1851, 2266, - 2021, 1861, 2260, - 2001, 1874, 2251, - 1973, 1891, 2239, - 1932, 1912, 2222, - 1871, 1939, 2198, - 1775, 1973, 2165, - 1602, 2014, 2117, - 1165, 2064, 2042, - 0, 2124, 1918, - 0, 2193, 1672, - 0, 2271, 186, - 0, 2359, 0, - 0, 2454, 0, - 0, 2557, 0, - 0, 2666, 0, - 0, 2780, 0, - 0, 2898, 0, - 0, 3019, 0, - 0, 3143, 0, - 0, 3268, 0, - 0, 3396, 0, - 0, 3524, 0, - 0, 3654, 0, - 2251, 1851, 2350, - 2250, 1852, 2349, - 2249, 1853, 2348, - 2248, 1855, 2347, - 2246, 1857, 2346, - 2243, 1860, 2344, - 2239, 1864, 2342, - 2234, 1869, 2339, - 2227, 1877, 2335, - 2218, 1886, 2329, - 2205, 1898, 2322, - 2187, 1914, 2311, - 2162, 1934, 2297, - 2127, 1960, 2277, - 2074, 1992, 2250, - 1993, 2032, 2210, - 1855, 2080, 2150, - 1563, 2138, 2055, - 0, 2205, 1887, - 0, 2281, 1471, - 0, 2367, 0, - 0, 2461, 0, - 0, 2562, 0, - 0, 2670, 0, - 0, 2783, 0, - 0, 2900, 0, - 0, 3021, 0, - 0, 3144, 0, - 0, 3270, 0, - 0, 3397, 0, - 0, 3525, 0, - 0, 3654, 0, - 2416, 1884, 2425, - 2415, 1885, 2425, - 2415, 1886, 2424, - 2413, 1888, 2424, - 2412, 1890, 2423, - 2410, 1893, 2421, - 2408, 1896, 2419, - 2404, 1901, 2417, - 2399, 1908, 2413, - 2393, 1917, 2408, - 2384, 1928, 2402, - 2372, 1943, 2393, - 2356, 1962, 2382, - 2333, 1986, 2365, - 2300, 2017, 2342, - 2253, 2054, 2310, - 2180, 2101, 2263, - 2060, 2156, 2191, - 1826, 2220, 2072, - 763, 2295, 1841, - 0, 2378, 850, - 0, 2470, 0, - 0, 2570, 0, - 0, 2676, 0, - 0, 2787, 0, - 0, 2904, 0, - 0, 3023, 0, - 0, 3146, 0, - 0, 3271, 0, - 0, 3398, 0, - 0, 3526, 0, - 0, 3655, 0, - 2571, 1925, 2511, - 2571, 1926, 2510, - 2570, 1927, 2510, - 2569, 1928, 2509, - 2568, 1930, 2508, - 2567, 1933, 2507, - 2565, 1936, 2505, - 2563, 1941, 2503, - 2559, 1947, 2500, - 2555, 1955, 2496, - 2549, 1965, 2491, - 2540, 1979, 2484, - 2529, 1997, 2474, - 2514, 2019, 2461, - 2492, 2048, 2443, - 2461, 2083, 2417, - 2417, 2126, 2380, - 2350, 2179, 2326, - 2240, 2240, 2240, - 2036, 2312, 2094, - 1384, 2392, 1771, - 0, 2482, 0, - 0, 2579, 0, - 0, 2683, 0, - 0, 2793, 0, - 0, 2908, 0, - 0, 3027, 0, - 0, 3149, 0, - 0, 3273, 0, - 0, 3399, 0, - 0, 3527, 0, - 0, 3656, 0, - 2720, 1975, 2604, - 2719, 1975, 2604, - 2719, 1976, 2603, - 2718, 1978, 2603, - 2718, 1979, 2602, - 2717, 1982, 2601, - 2715, 1985, 2600, - 2713, 1989, 2598, - 2711, 1994, 2596, - 2708, 2002, 2593, - 2704, 2011, 2588, - 2698, 2023, 2583, - 2690, 2039, 2575, - 2679, 2060, 2564, - 2664, 2086, 2550, - 2643, 2119, 2529, - 2614, 2159, 2501, - 2571, 2208, 2460, - 2508, 2266, 2398, - 2405, 2333, 2299, - 2218, 2411, 2122, - 1698, 2497, 1658, - 0, 2591, 0, - 0, 2693, 0, - 0, 2801, 0, - 0, 2914, 0, - 0, 3032, 0, - 0, 3152, 0, - 0, 3276, 0, - 0, 3401, 0, - 0, 3529, 0, - 0, 3657, 0, - 2864, 2033, 2705, - 2863, 2034, 2705, - 2863, 2035, 2704, - 2863, 2036, 2704, - 2862, 2038, 2703, - 2861, 2040, 2703, - 2860, 2042, 2702, - 2859, 2046, 2700, - 2857, 2051, 2698, - 2855, 2057, 2696, - 2852, 2066, 2692, - 2848, 2076, 2688, - 2842, 2091, 2682, - 2834, 2109, 2673, - 2824, 2133, 2662, - 2809, 2162, 2646, - 2789, 2199, 2624, - 2761, 2244, 2593, - 2720, 2298, 2548, - 2658, 2361, 2479, - 2560, 2434, 2368, - 2385, 2516, 2156, - 1930, 2607, 1441, - 0, 2706, 0, - 0, 2811, 0, - 0, 2922, 0, - 0, 3038, 0, - 0, 3157, 0, - 0, 3279, 0, - 0, 3404, 0, - 0, 3531, 0, - 0, 3658, 0, - 3004, 2102, 2812, - 3004, 2102, 2812, - 3004, 2103, 2812, - 3004, 2104, 2811, - 3003, 2105, 2811, - 3003, 2107, 2810, - 3002, 2110, 2810, - 3001, 2113, 2808, - 3000, 2117, 2807, - 2998, 2122, 2805, - 2996, 2130, 2802, - 2993, 2139, 2799, - 2989, 2152, 2794, - 2983, 2168, 2787, - 2976, 2188, 2779, - 2965, 2215, 2766, - 2951, 2248, 2750, - 2931, 2288, 2726, - 2903, 2337, 2693, - 2863, 2396, 2644, - 2804, 2464, 2570, - 2709, 2541, 2446, - 2541, 2628, 2199, - 2125, 2722, 664, - 0, 2824, 0, - 0, 2932, 0, - 0, 3046, 0, - 0, 3163, 0, - 0, 3284, 0, - 0, 3408, 0, - 0, 3533, 0, - 0, 3660, 0, - 3143, 2180, 2925, - 3143, 2180, 2925, - 3143, 2181, 2924, - 3142, 2182, 2924, - 3142, 2183, 2924, - 3142, 2184, 2923, - 3141, 2186, 2923, - 3141, 2189, 2922, - 3140, 2192, 2921, - 3138, 2197, 2919, - 3137, 2203, 2917, - 3134, 2211, 2914, - 3131, 2222, 2911, - 3127, 2236, 2906, - 3122, 2254, 2899, - 3114, 2276, 2890, - 3104, 2305, 2877, - 3090, 2341, 2859, - 3071, 2385, 2835, - 3043, 2438, 2799, - 3004, 2500, 2748, - 2945, 2572, 2668, - 2853, 2653, 2532, - 2690, 2743, 2250, - 2299, 2841, 0, - 0, 2946, 0, - 0, 3056, 0, - 0, 3171, 0, - 0, 3290, 0, - 0, 3412, 0, - 0, 3537, 0, - 0, 3663, 0, - 3280, 2267, 3042, - 3280, 2267, 3042, - 3280, 2267, 3041, - 3279, 2268, 3041, - 3279, 2269, 3041, - 3279, 2270, 3041, - 3278, 2272, 3040, - 3278, 2274, 3039, - 3277, 2277, 3039, - 3276, 2281, 3037, - 3275, 2286, 3036, - 3273, 2293, 3034, - 3271, 2302, 3031, - 3268, 2313, 3027, - 3264, 2328, 3022, - 3259, 2348, 3015, - 3251, 2373, 3005, - 3241, 2404, 2992, - 3227, 2442, 2974, - 3208, 2489, 2948, - 3181, 2545, 2911, - 3142, 2611, 2857, - 3085, 2686, 2773, - 2994, 2770, 2628, - 2835, 2863, 2310, - 2460, 2963, 0, - 0, 3070, 0, - 0, 3182, 0, - 0, 3299, 0, - 0, 3419, 0, - 0, 3542, 0, - 0, 3667, 0, - 3415, 2362, 3162, - 3415, 2362, 3162, - 3415, 2362, 3162, - 3415, 2363, 3162, - 3415, 2364, 3162, - 3415, 2365, 3161, - 3414, 2366, 3161, - 3414, 2368, 3160, - 3414, 2370, 3160, - 3413, 2373, 3159, - 3412, 2377, 3158, - 3411, 2383, 3156, - 3409, 2390, 3154, - 3407, 2400, 3151, - 3404, 2412, 3147, - 3400, 2429, 3142, - 3394, 2449, 3134, - 3387, 2476, 3124, - 3377, 2509, 3111, - 3363, 2550, 3092, - 3344, 2599, 3066, - 3318, 2658, 3028, - 3279, 2726, 2971, - 3222, 2804, 2883, - 3132, 2891, 2730, - 2976, 2985, 2380, - 2613, 3088, 0, - 0, 3196, 0, - 0, 3309, 0, - 0, 3427, 0, - 0, 3548, 0, - 0, 3672, 0, - 3550, 2464, 3285, - 3550, 2464, 3285, - 3550, 2464, 3285, - 3550, 2465, 3285, - 3550, 2465, 3285, - 3550, 2466, 3285, - 3549, 2467, 3284, - 3549, 2469, 3284, - 3549, 2471, 3284, - 3548, 2473, 3283, - 3548, 2477, 3282, - 3547, 2481, 3281, - 3545, 2487, 3279, - 3544, 2495, 3277, - 3542, 2505, 3274, - 3539, 2518, 3270, - 3535, 2535, 3264, - 3529, 2557, 3257, - 3522, 2585, 3247, - 3512, 2620, 3233, - 3498, 2663, 3214, - 3479, 2714, 3187, - 3453, 2775, 3148, - 3415, 2845, 3090, - 3358, 2925, 2999, - 3269, 3014, 2838, - 3115, 3110, 2460, - 2760, 3214, 0, - 0, 3323, 0, - 0, 3438, 0, - 0, 3556, 0, - 0, 3678, 0, - 3684, 2572, 3411, - 3684, 2572, 3411, - 3684, 2573, 3411, - 3684, 2573, 3410, - 3684, 2574, 3410, - 3684, 2574, 3410, - 3684, 2575, 3410, - 3683, 2576, 3410, - 3683, 2578, 3409, - 3683, 2580, 3409, - 3682, 2582, 3408, - 3682, 2586, 3407, - 3681, 2591, 3406, - 3679, 2597, 3404, - 3678, 2605, 3402, - 3676, 2616, 3399, - 3673, 2630, 3395, - 3669, 2647, 3389, - 3663, 2670, 3382, - 3656, 2699, 3371, - 3646, 2736, 3357, - 3633, 2780, 3338, - 3614, 2833, 3310, - 3587, 2895, 3270, - 3549, 2967, 3211, - 3493, 3049, 3118, - 3405, 3139, 2952, - 3252, 3237, 2548, - 2902, 3342, 0, - 0, 3452, 0, - 0, 3567, 0, - 0, 3686, 0, - 3818, 2686, 3538, - 3818, 2686, 3538, - 3818, 2686, 3538, - 3818, 2686, 3537, - 3817, 2687, 3537, - 3817, 2687, 3537, - 3817, 2688, 3537, - 3817, 2689, 3537, - 3817, 2690, 3537, - 3817, 2692, 3536, - 3816, 2694, 3536, - 3816, 2696, 3535, - 3815, 2700, 3534, - 3814, 2705, 3533, - 3813, 2711, 3531, - 3811, 2720, 3529, - 3809, 2731, 3526, - 3806, 2745, 3522, - 3802, 2764, 3516, - 3797, 2788, 3508, - 3790, 2818, 3498, - 3780, 2855, 3484, - 3766, 2900, 3464, - 3748, 2955, 3436, - 3721, 3018, 3395, - 3683, 3092, 3335, - 3627, 3174, 3240, - 3540, 3266, 3070, - 3387, 3365, 2644, - 3042, 3470, 0, - 0, 3582, 0, - 0, 3697, 0, - 3951, 2804, 3666, - 3951, 2804, 3666, - 3951, 2804, 3666, - 3951, 2804, 3666, - 3951, 2804, 3666, - 3951, 2805, 3666, - 3951, 2805, 3665, - 3950, 2806, 3665, - 3950, 2807, 3665, - 3950, 2808, 3665, - 3950, 2810, 3664, - 3949, 2812, 3664, - 3949, 2815, 3663, - 3948, 2818, 3662, - 3947, 2823, 3661, - 3946, 2830, 3659, - 3944, 2839, 3657, - 3942, 2850, 3654, - 3939, 2865, 3650, - 3935, 2884, 3644, - 3930, 2909, 3636, - 3923, 2939, 3626, - 3913, 2977, 3611, - 3900, 3024, 3591, - 3881, 3079, 3563, - 3855, 3144, 3522, - 3817, 3218, 3461, - 3761, 3302, 3364, - 3674, 3394, 3191, - 3522, 3494, 2748, - 3180, 3600, 0, - 0, 3712, 0, - 4084, 2925, 3795, - 4084, 2925, 3795, - 4084, 2925, 3795, - 4084, 2925, 3795, - 4084, 2925, 3795, - 4084, 2926, 3795, - 4083, 2926, 3795, - 4083, 2926, 3795, - 4083, 2927, 3794, - 4083, 2928, 3794, - 4083, 2929, 3794, - 4083, 2931, 3794, - 4082, 2933, 3793, - 4082, 2936, 3792, - 4081, 2940, 3791, - 4080, 2945, 3790, - 4079, 2952, 3788, - 4077, 2961, 3786, - 4075, 2972, 3783, - 4072, 2988, 3779, - 4068, 3007, 3773, - 4063, 3032, 3765, - 4056, 3063, 3755, - 4046, 3102, 3740, - 4033, 3149, 3720, - 4014, 3205, 3691, - 3988, 3271, 3650, - 3950, 3346, 3589, - 3894, 3430, 3491, - 3807, 3523, 3314, - 3656, 3623, 2857, - 3317, 3730, 0, - 4095, 3048, 3925, - 4095, 3048, 3925, - 4095, 3048, 3925, - 4095, 3049, 3925, - 4095, 3049, 3925, - 4095, 3049, 3925, - 4095, 3049, 3925, - 4095, 3050, 3925, - 4095, 3050, 3924, - 4095, 3051, 3924, - 4095, 3052, 3924, - 4095, 3053, 3924, - 4095, 3055, 3923, - 4095, 3057, 3923, - 4095, 3060, 3922, - 4095, 3064, 3921, - 4095, 3069, 3920, - 4095, 3076, 3918, - 4095, 3085, 3916, - 4095, 3097, 3913, - 4095, 3112, 3908, - 4095, 3132, 3903, - 4095, 3157, 3895, - 4095, 3189, 3884, - 4095, 3228, 3870, - 4095, 3276, 3849, - 4095, 3333, 3821, - 4095, 3399, 3779, - 4083, 3475, 3717, - 4027, 3560, 3619, - 3940, 3653, 3440, - 3790, 3754, 2972, - 4095, 3174, 4055, - 4095, 3174, 4055, - 4095, 3174, 4055, - 4095, 3174, 4055, - 4095, 3174, 4055, - 4095, 3174, 4055, - 4095, 3175, 4055, - 4095, 3175, 4055, - 4095, 3175, 4055, - 4095, 3176, 4055, - 4095, 3177, 4055, - 4095, 3178, 4055, - 4095, 3179, 4054, - 4095, 3181, 4054, - 4095, 3183, 4053, - 4095, 3186, 4053, - 4095, 3190, 4052, - 4095, 3195, 4050, - 4095, 3202, 4049, - 4095, 3211, 4046, - 4095, 3223, 4043, - 4095, 3239, 4039, - 4095, 3259, 4033, - 4095, 3285, 4025, - 4095, 3317, 4015, - 4095, 3356, 4000, - 4095, 3404, 3979, - 4095, 3461, 3951, - 4095, 3528, 3909, - 4095, 3604, 3847, - 4095, 3690, 3747, - 4073, 3783, 3567, - 0, 1867, 2134, - 0, 1868, 2133, - 0, 1869, 2132, - 0, 1871, 2130, - 0, 1873, 2128, - 0, 1876, 2126, - 0, 1880, 2122, - 0, 1885, 2117, - 0, 1892, 2110, - 0, 1901, 2101, - 0, 1913, 2088, - 0, 1928, 2071, - 0, 1948, 2047, - 0, 1973, 2012, - 0, 2004, 1961, - 0, 2043, 1882, - 0, 2090, 1749, - 0, 2146, 1473, - 0, 2212, 0, - 0, 2288, 0, - 0, 2372, 0, - 0, 2465, 0, - 0, 2566, 0, - 0, 2673, 0, - 0, 2785, 0, - 0, 2902, 0, - 0, 3022, 0, - 0, 3145, 0, - 0, 3270, 0, - 0, 3397, 0, - 0, 3525, 0, - 0, 3654, 0, - 0, 1867, 2135, - 0, 1868, 2134, - 0, 1869, 2133, - 0, 1871, 2132, - 0, 1873, 2130, - 0, 1876, 2127, - 0, 1880, 2123, - 0, 1885, 2118, - 0, 1892, 2112, - 0, 1901, 2102, - 0, 1913, 2090, - 0, 1928, 2072, - 0, 1948, 2048, - 0, 1973, 2013, - 0, 2004, 1962, - 0, 2043, 1884, - 0, 2090, 1752, - 0, 2147, 1479, - 0, 2213, 0, - 0, 2288, 0, - 0, 2372, 0, - 0, 2465, 0, - 0, 2566, 0, - 0, 2673, 0, - 0, 2785, 0, - 0, 2902, 0, - 0, 3022, 0, - 0, 3145, 0, - 0, 3270, 0, - 0, 3397, 0, - 0, 3525, 0, - 0, 3654, 0, - 0, 1868, 2137, - 0, 1869, 2136, - 0, 1870, 2135, - 0, 1872, 2133, - 0, 1874, 2131, - 0, 1877, 2129, - 0, 1881, 2125, - 0, 1886, 2120, - 0, 1893, 2113, - 0, 1902, 2104, - 0, 1913, 2092, - 0, 1929, 2074, - 0, 1948, 2050, - 0, 1973, 2016, - 0, 2004, 1965, - 0, 2043, 1887, - 0, 2091, 1756, - 0, 2147, 1486, - 0, 2213, 0, - 0, 2288, 0, - 0, 2373, 0, - 0, 2466, 0, - 0, 2566, 0, - 0, 2673, 0, - 0, 2785, 0, - 0, 2902, 0, - 0, 3022, 0, - 0, 3145, 0, - 0, 3270, 0, - 0, 3397, 0, - 0, 3525, 0, - 0, 3655, 0, - 0, 1868, 2139, - 0, 1869, 2138, - 0, 1870, 2137, - 0, 1872, 2136, - 0, 1874, 2134, - 0, 1877, 2131, - 0, 1881, 2127, - 0, 1886, 2122, - 0, 1893, 2116, - 0, 1902, 2107, - 0, 1914, 2094, - 0, 1929, 2077, - 0, 1949, 2053, - 0, 1974, 2019, - 0, 2005, 1968, - 0, 2044, 1891, - 0, 2091, 1761, - 0, 2147, 1495, - 0, 2213, 0, - 0, 2288, 0, - 0, 2373, 0, - 0, 2466, 0, - 0, 2566, 0, - 0, 2673, 0, - 0, 2785, 0, - 0, 2902, 0, - 0, 3022, 0, - 0, 3145, 0, - 0, 3270, 0, - 0, 3397, 0, - 0, 3525, 0, - 0, 3655, 0, - 0, 1869, 2142, - 0, 1870, 2141, - 0, 1871, 2140, - 0, 1873, 2139, - 0, 1875, 2137, - 0, 1878, 2134, - 0, 1882, 2130, - 0, 1887, 2125, - 0, 1894, 2119, - 0, 1903, 2110, - 0, 1915, 2097, - 0, 1930, 2080, - 0, 1949, 2056, - 0, 1974, 2022, - 0, 2005, 1973, - 0, 2044, 1896, - 0, 2091, 1768, - 0, 2148, 1508, - 0, 2213, 0, - 0, 2289, 0, - 0, 2373, 0, - 0, 2466, 0, - 0, 2566, 0, - 0, 2673, 0, - 0, 2785, 0, - 0, 2902, 0, - 0, 3022, 0, - 0, 3145, 0, - 0, 3270, 0, - 0, 3397, 0, - 0, 3525, 0, - 0, 3655, 0, - 0, 1870, 2146, - 0, 1871, 2145, - 0, 1872, 2144, - 0, 1874, 2143, - 0, 1876, 2141, - 0, 1879, 2138, - 0, 1883, 2134, - 0, 1888, 2130, - 0, 1895, 2123, - 0, 1904, 2114, - 0, 1915, 2102, - 0, 1931, 2085, - 0, 1950, 2061, - 0, 1975, 2028, - 0, 2006, 1978, - 0, 2045, 1903, - 0, 2092, 1777, - 0, 2148, 1523, - 0, 2214, 0, - 0, 2289, 0, - 0, 2373, 0, - 0, 2466, 0, - 0, 2567, 0, - 0, 2673, 0, - 0, 2786, 0, - 0, 2902, 0, - 0, 3022, 0, - 0, 3145, 0, - 0, 3270, 0, - 0, 3397, 0, - 0, 3525, 0, - 0, 3655, 0, - 0, 1871, 2151, - 0, 1872, 2151, - 0, 1874, 2149, - 0, 1875, 2148, - 0, 1877, 2146, - 0, 1880, 2143, - 0, 1884, 2140, - 0, 1889, 2135, - 0, 1896, 2129, - 0, 1905, 2120, - 0, 1917, 2108, - 0, 1932, 2091, - 0, 1951, 2068, - 0, 1976, 2034, - 0, 2007, 1986, - 0, 2046, 1912, - 0, 2093, 1788, - 0, 2149, 1544, - 0, 2214, 145, - 0, 2290, 0, - 0, 2374, 0, - 0, 2467, 0, - 0, 2567, 0, - 0, 2674, 0, - 0, 2786, 0, - 0, 2902, 0, - 0, 3022, 0, - 0, 3145, 0, - 0, 3271, 0, - 0, 3397, 0, - 0, 3525, 0, - 0, 3655, 0, - 0, 1873, 2158, - 0, 1874, 2157, - 0, 1875, 2156, - 0, 1877, 2155, - 0, 1879, 2153, - 0, 1882, 2150, - 0, 1886, 2147, - 0, 1891, 2142, - 0, 1898, 2136, - 0, 1907, 2127, - 0, 1918, 2115, - 0, 1933, 2099, - 0, 1953, 2076, - 0, 1977, 2043, - 0, 2009, 1996, - 0, 2047, 1923, - 0, 2094, 1804, - 0, 2150, 1570, - 0, 2215, 518, - 0, 2290, 0, - 0, 2374, 0, - 0, 2467, 0, - 0, 2567, 0, - 0, 2674, 0, - 0, 2786, 0, - 0, 2902, 0, - 0, 3023, 0, - 0, 3146, 0, - 0, 3271, 0, - 0, 3397, 0, - 0, 3526, 0, - 0, 3655, 0, - 0, 1876, 2167, - 0, 1876, 2167, - 0, 1878, 2166, - 0, 1879, 2164, - 0, 1882, 2162, - 0, 1884, 2160, - 0, 1888, 2156, - 0, 1893, 2152, - 0, 1900, 2145, - 0, 1909, 2137, - 0, 1920, 2125, - 0, 1935, 2109, - 0, 1955, 2087, - 0, 1979, 2055, - 0, 2010, 2009, - 0, 2049, 1938, - 0, 2095, 1823, - 0, 2151, 1602, - 0, 2216, 772, - 0, 2291, 0, - 0, 2375, 0, - 0, 2468, 0, - 0, 2568, 0, - 0, 2674, 0, - 0, 2786, 0, - 0, 2903, 0, - 0, 3023, 0, - 0, 3146, 0, - 0, 3271, 0, - 0, 3398, 0, - 0, 3526, 0, - 0, 3655, 0, - 0, 1879, 2179, - 0, 1880, 2179, - 0, 1881, 2178, - 0, 1883, 2176, - 0, 1885, 2174, - 0, 1888, 2172, - 0, 1891, 2168, - 0, 1896, 2164, - 0, 1903, 2158, - 0, 1912, 2150, - 0, 1923, 2138, - 0, 1938, 2123, - 0, 1957, 2101, - 0, 1982, 2070, - 0, 2013, 2026, - 0, 2051, 1958, - 0, 2097, 1848, - 0, 2153, 1642, - 0, 2218, 978, - 0, 2293, 0, - 0, 2376, 0, - 0, 2469, 0, - 0, 2568, 0, - 0, 2675, 0, - 0, 2787, 0, - 0, 2903, 0, - 0, 3023, 0, - 0, 3146, 0, - 0, 3271, 0, - 0, 3398, 0, - 0, 3526, 0, - 0, 3655, 0, - 0, 1883, 2195, - 0, 1884, 2194, - 0, 1885, 2193, - 0, 1887, 2192, - 0, 1889, 2190, - 0, 1892, 2188, - 0, 1895, 2184, - 0, 1900, 2180, - 0, 1907, 2174, - 0, 1916, 2166, - 0, 1927, 2155, - 0, 1942, 2140, - 0, 1961, 2119, - 0, 1985, 2090, - 0, 2016, 2047, - 0, 2054, 1983, - 0, 2100, 1880, - 0, 2155, 1691, - 0, 2220, 1158, - 0, 2294, 0, - 0, 2378, 0, - 0, 2470, 0, - 0, 2569, 0, - 0, 2676, 0, - 0, 2787, 0, - 0, 2904, 0, - 0, 3023, 0, - 0, 3146, 0, - 0, 3271, 0, - 0, 3398, 0, - 0, 3526, 0, - 0, 3655, 0, - 0, 1889, 2215, - 0, 1889, 2214, - 0, 1891, 2213, - 0, 1892, 2212, - 0, 1894, 2210, - 0, 1897, 2208, - 0, 1901, 2205, - 0, 1906, 2200, - 0, 1912, 2195, - 0, 1921, 2187, - 0, 1932, 2177, - 0, 1947, 2163, - 0, 1966, 2143, - 0, 1990, 2115, - 0, 2020, 2074, - 0, 2058, 2014, - 0, 2103, 1919, - 0, 2158, 1748, - 0, 2223, 1323, - 0, 2296, 0, - 0, 2380, 0, - 0, 2471, 0, - 0, 2571, 0, - 0, 2677, 0, - 0, 2788, 0, - 0, 2904, 0, - 0, 3024, 0, - 0, 3146, 0, - 0, 3271, 0, - 0, 3398, 0, - 0, 3526, 0, - 0, 3655, 0, - 241, 1896, 2240, - 162, 1897, 2239, - 31, 1898, 2238, - 0, 1900, 2237, - 0, 1902, 2236, - 0, 1904, 2233, - 0, 1908, 2230, - 0, 1913, 2227, - 0, 1919, 2221, - 0, 1928, 2214, - 0, 1939, 2204, - 0, 1953, 2191, - 0, 1972, 2172, - 0, 1996, 2146, - 0, 2026, 2108, - 0, 2063, 2053, - 0, 2108, 1966, - 0, 2162, 1816, - 0, 2226, 1478, - 0, 2299, 0, - 0, 2382, 0, - 0, 2473, 0, - 0, 2572, 0, - 0, 2678, 0, - 0, 2789, 0, - 0, 2905, 0, - 0, 3024, 0, - 0, 3147, 0, - 0, 3272, 0, - 0, 3398, 0, - 0, 3526, 0, - 0, 3655, 0, - 1385, 1906, 2272, - 1379, 1906, 2271, - 1371, 1908, 2270, - 1360, 1909, 2269, - 1345, 1911, 2268, - 1325, 1914, 2266, - 1296, 1917, 2263, - 1253, 1922, 2259, - 1190, 1929, 2254, - 1089, 1937, 2248, - 903, 1948, 2239, - 397, 1962, 2226, - 0, 1980, 2209, - 0, 2003, 2185, - 0, 2033, 2150, - 0, 2069, 2100, - 0, 2114, 2023, - 0, 2168, 1893, - 0, 2231, 1627, - 0, 2303, 0, - 0, 2385, 0, - 0, 2476, 0, - 0, 2574, 0, - 0, 2680, 0, - 0, 2790, 0, - 0, 2906, 0, - 0, 3025, 0, - 0, 3148, 0, - 0, 3272, 0, - 0, 3399, 0, - 0, 3526, 0, - 0, 3655, 0, - 1749, 1918, 2311, - 1747, 1919, 2310, - 1743, 1920, 2310, - 1738, 1922, 2309, - 1732, 1924, 2307, - 1723, 1926, 2305, - 1711, 1930, 2303, - 1695, 1934, 2300, - 1672, 1941, 2295, - 1639, 1949, 2289, - 1592, 1959, 2281, - 1519, 1973, 2269, - 1399, 1991, 2254, - 1164, 2014, 2232, - 83, 2042, 2201, - 0, 2078, 2156, - 0, 2122, 2088, - 0, 2175, 1978, - 0, 2237, 1771, - 0, 2309, 1096, - 0, 2390, 0, - 0, 2480, 0, - 0, 2577, 0, - 0, 2682, 0, - 0, 2792, 0, - 0, 2907, 0, - 0, 3026, 0, - 0, 3148, 0, - 0, 3273, 0, - 0, 3399, 0, - 0, 3527, 0, - 0, 3656, 0, - 2000, 1935, 2359, - 1999, 1935, 2358, - 1997, 1936, 2358, - 1994, 1938, 2357, - 1990, 1940, 2355, - 1985, 1942, 2354, - 1979, 1946, 2351, - 1970, 1950, 2348, - 1957, 1956, 2344, - 1940, 1964, 2339, - 1916, 1974, 2331, - 1882, 1988, 2321, - 1832, 2005, 2307, - 1755, 2027, 2288, - 1626, 2055, 2261, - 1364, 2090, 2222, - 0, 2133, 2164, - 0, 2184, 2073, - 0, 2245, 1912, - 0, 2316, 1531, - 0, 2396, 0, - 0, 2484, 0, - 0, 2581, 0, - 0, 2685, 0, - 0, 2795, 0, - 0, 2909, 0, - 0, 3028, 0, - 0, 3149, 0, - 0, 3274, 0, - 0, 3400, 0, - 0, 3527, 0, - 0, 3656, 0, - 2205, 1955, 2416, - 2204, 1956, 2415, - 2202, 1957, 2415, - 2201, 1959, 2414, - 2198, 1960, 2413, - 2195, 1963, 2411, - 2191, 1966, 2409, - 2185, 1970, 2407, - 2178, 1976, 2403, - 2167, 1984, 2398, - 2153, 1993, 2392, - 2133, 2006, 2383, - 2105, 2023, 2371, - 2064, 2044, 2354, - 2003, 2071, 2331, - 1907, 2105, 2297, - 1734, 2146, 2249, - 1297, 2196, 2174, - 0, 2256, 2050, - 0, 2325, 1804, - 0, 2403, 318, - 0, 2491, 0, - 0, 2586, 0, - 0, 2689, 0, - 0, 2798, 0, - 0, 2912, 0, - 0, 3030, 0, - 0, 3151, 0, - 0, 3275, 0, - 0, 3401, 0, - 0, 3528, 0, - 0, 3656, 0, - 2384, 1982, 2482, - 2383, 1983, 2482, - 2382, 1984, 2481, - 2381, 1985, 2480, - 2380, 1987, 2479, - 2378, 1989, 2478, - 2375, 1992, 2476, - 2371, 1996, 2474, - 2366, 2002, 2471, - 2359, 2009, 2467, - 2350, 2018, 2461, - 2337, 2030, 2454, - 2319, 2046, 2443, - 2294, 2066, 2429, - 2259, 2092, 2410, - 2206, 2124, 2382, - 2125, 2164, 2342, - 1987, 2212, 2282, - 1696, 2270, 2187, - 0, 2337, 2019, - 0, 2414, 1603, - 0, 2499, 0, - 0, 2593, 0, - 0, 2694, 0, - 0, 2802, 0, - 0, 2915, 0, - 0, 3032, 0, - 0, 3153, 0, - 0, 3276, 0, - 0, 3402, 0, - 0, 3529, 0, - 0, 3657, 0, - 2549, 2015, 2558, - 2548, 2016, 2558, - 2547, 2017, 2557, - 2547, 2018, 2557, - 2546, 2020, 2556, - 2544, 2022, 2555, - 2542, 2025, 2553, - 2540, 2029, 2551, - 2536, 2034, 2549, - 2531, 2040, 2545, - 2525, 2049, 2541, - 2516, 2060, 2534, - 2504, 2075, 2526, - 2488, 2094, 2514, - 2465, 2118, 2497, - 2432, 2149, 2475, - 2385, 2187, 2442, - 2312, 2233, 2395, - 2192, 2288, 2323, - 1958, 2352, 2204, - 895, 2427, 1973, - 0, 2510, 982, - 0, 2602, 0, - 0, 2702, 0, - 0, 2808, 0, - 0, 2919, 0, - 0, 3036, 0, - 0, 3156, 0, - 0, 3278, 0, - 0, 3403, 0, - 0, 3530, 0, - 0, 3658, 0, - 2703, 2056, 2643, - 2703, 2057, 2643, - 2703, 2058, 2642, - 2702, 2059, 2642, - 2701, 2060, 2641, - 2700, 2062, 2640, - 2699, 2065, 2639, - 2697, 2068, 2637, - 2695, 2073, 2635, - 2691, 2079, 2632, - 2687, 2087, 2629, - 2681, 2097, 2623, - 2673, 2111, 2616, - 2661, 2129, 2607, - 2646, 2151, 2593, - 2624, 2180, 2575, - 2593, 2215, 2549, - 2549, 2259, 2512, - 2482, 2311, 2458, - 2373, 2373, 2373, - 2168, 2444, 2226, - 1516, 2524, 1903, - 0, 2614, 0, - 0, 2711, 0, - 0, 2815, 0, - 0, 2925, 0, - 0, 3040, 0, - 0, 3159, 0, - 0, 3281, 0, - 0, 3405, 0, - 0, 3531, 0, - 0, 3659, 0, - 2852, 2106, 2736, - 2852, 2107, 2736, - 2851, 2107, 2736, - 2851, 2108, 2735, - 2850, 2110, 2735, - 2850, 2111, 2734, - 2849, 2114, 2733, - 2847, 2117, 2732, - 2846, 2121, 2730, - 2843, 2126, 2728, - 2840, 2134, 2725, - 2836, 2143, 2720, - 2830, 2155, 2715, - 2822, 2171, 2707, - 2811, 2192, 2696, - 2796, 2218, 2682, - 2775, 2251, 2662, - 2746, 2291, 2633, - 2703, 2340, 2592, - 2640, 2398, 2530, - 2537, 2466, 2431, - 2350, 2543, 2254, - 1830, 2629, 1790, - 0, 2723, 0, - 0, 2825, 0, - 0, 2933, 0, - 0, 3046, 0, - 0, 3164, 0, - 0, 3284, 0, - 0, 3408, 0, - 0, 3533, 0, - 0, 3661, 0, - 2996, 2165, 2837, - 2996, 2165, 2837, - 2995, 2166, 2837, - 2995, 2167, 2836, - 2995, 2168, 2836, - 2994, 2170, 2835, - 2994, 2172, 2835, - 2993, 2174, 2834, - 2991, 2178, 2832, - 2990, 2183, 2830, - 2987, 2189, 2828, - 2984, 2198, 2825, - 2980, 2209, 2820, - 2974, 2223, 2814, - 2966, 2241, 2805, - 2956, 2265, 2794, - 2941, 2294, 2778, - 2921, 2331, 2756, - 2893, 2376, 2725, - 2852, 2430, 2680, - 2790, 2493, 2611, - 2693, 2566, 2500, - 2517, 2648, 2288, - 2062, 2739, 1573, - 0, 2838, 0, - 0, 2943, 0, - 0, 3054, 0, - 0, 3170, 0, - 0, 3289, 0, - 0, 3412, 0, - 0, 3536, 0, - 0, 3663, 0, - 3137, 2233, 2944, - 3136, 2234, 2944, - 3136, 2234, 2944, - 3136, 2235, 2944, - 3136, 2236, 2944, - 3135, 2238, 2943, - 3135, 2239, 2942, - 3134, 2242, 2942, - 3133, 2245, 2941, - 3132, 2249, 2939, - 3130, 2254, 2937, - 3128, 2262, 2934, - 3125, 2271, 2931, - 3121, 2284, 2926, - 3115, 2300, 2920, - 3108, 2320, 2911, - 3097, 2347, 2899, - 3083, 2380, 2882, - 3063, 2420, 2858, - 3036, 2469, 2825, - 2996, 2528, 2776, - 2936, 2596, 2702, - 2841, 2673, 2578, - 2673, 2760, 2331, - 2257, 2854, 796, - 0, 2956, 0, - 0, 3064, 0, - 0, 3178, 0, - 0, 3295, 0, - 0, 3416, 0, - 0, 3540, 0, - 0, 3665, 0, - 3275, 2311, 3057, - 3275, 2312, 3057, - 3275, 2312, 3057, - 3275, 2313, 3057, - 3275, 2314, 3056, - 3274, 2315, 3056, - 3274, 2316, 3055, - 3273, 2318, 3055, - 3273, 2321, 3054, - 3272, 2324, 3053, - 3270, 2329, 3051, - 3269, 2335, 3049, - 3267, 2343, 3046, - 3263, 2354, 3043, - 3259, 2368, 3038, - 3254, 2386, 3031, - 3246, 2409, 3022, - 3236, 2437, 3009, - 3222, 2473, 2991, - 3203, 2517, 2967, - 3175, 2570, 2931, - 3136, 2633, 2880, - 3078, 2704, 2800, - 2985, 2786, 2665, - 2822, 2875, 2382, - 2431, 2973, 0, - 0, 3078, 0, - 0, 3188, 0, - 0, 3303, 0, - 0, 3422, 0, - 0, 3545, 0, - 0, 3669, 0, - 3412, 2398, 3174, - 3412, 2399, 3174, - 3412, 2399, 3174, - 3412, 2400, 3174, - 3411, 2400, 3173, - 3411, 2401, 3173, - 3411, 2402, 3173, - 3411, 2404, 3172, - 3410, 2406, 3172, - 3409, 2409, 3171, - 3408, 2413, 3170, - 3407, 2418, 3168, - 3406, 2425, 3166, - 3403, 2434, 3163, - 3400, 2445, 3159, - 3396, 2461, 3154, - 3391, 2480, 3147, - 3383, 2505, 3137, - 3373, 2536, 3124, - 3360, 2574, 3106, - 3340, 2621, 3080, - 3313, 2677, 3043, - 3275, 2743, 2989, - 3217, 2818, 2905, - 3126, 2902, 2760, - 2967, 2995, 2442, - 2592, 3095, 0, - 0, 3202, 0, - 0, 3314, 0, - 0, 3431, 0, - 0, 3551, 0, - 0, 3674, 0, - 3547, 2493, 3294, - 3547, 2494, 3294, - 3547, 2494, 3294, - 3547, 2494, 3294, - 3547, 2495, 3294, - 3547, 2496, 3294, - 3547, 2497, 3293, - 3547, 2498, 3293, - 3546, 2500, 3293, - 3546, 2502, 3292, - 3545, 2505, 3291, - 3544, 2510, 3290, - 3543, 2515, 3288, - 3541, 2522, 3286, - 3539, 2532, 3283, - 3536, 2545, 3279, - 3532, 2561, 3274, - 3527, 2582, 3266, - 3519, 2608, 3257, - 3509, 2641, 3243, - 3496, 2682, 3224, - 3476, 2731, 3198, - 3450, 2790, 3160, - 3411, 2858, 3103, - 3354, 2936, 3015, - 3265, 3023, 2862, - 3108, 3118, 2512, - 2745, 3220, 0, - 0, 3328, 0, - 0, 3442, 0, - 0, 3559, 0, - 0, 3680, 0, - 3682, 2596, 3418, - 3682, 2596, 3417, - 3682, 2596, 3417, - 3682, 2597, 3417, - 3682, 2597, 3417, - 3682, 2598, 3417, - 3682, 2598, 3417, - 3681, 2599, 3417, - 3681, 2601, 3416, - 3681, 2603, 3416, - 3680, 2605, 3415, - 3680, 2609, 3414, - 3679, 2613, 3413, - 3677, 2619, 3411, - 3676, 2627, 3409, - 3674, 2637, 3406, - 3671, 2650, 3402, - 3667, 2667, 3396, - 3661, 2689, 3389, - 3654, 2717, 3379, - 3644, 2752, 3365, - 3630, 2795, 3346, - 3612, 2846, 3319, - 3585, 2907, 3280, - 3547, 2977, 3222, - 3490, 3057, 3131, - 3401, 3146, 2970, - 3247, 3242, 2592, - 2892, 3346, 0, - 0, 3456, 0, - 0, 3570, 0, - 0, 3689, 0, - 3816, 2704, 3543, - 3816, 2704, 3543, - 3816, 2705, 3543, - 3816, 2705, 3543, - 3816, 2705, 3543, - 3816, 2706, 3542, - 3816, 2706, 3542, - 3816, 2707, 3542, - 3815, 2708, 3542, - 3815, 2710, 3541, - 3815, 2712, 3541, - 3814, 2714, 3540, - 3814, 2718, 3539, - 3813, 2723, 3538, - 3811, 2729, 3536, - 3810, 2737, 3534, - 3808, 2748, 3531, - 3805, 2762, 3527, - 3801, 2780, 3521, - 3795, 2803, 3514, - 3788, 2832, 3504, - 3778, 2868, 3489, - 3765, 2912, 3470, - 3746, 2965, 3442, - 3719, 3027, 3403, - 3681, 3099, 3343, - 3625, 3181, 3250, - 3537, 3271, 3084, - 3384, 3369, 2680, - 3034, 3474, 0, - 0, 3584, 0, - 0, 3699, 0, - 3950, 2818, 3670, - 3950, 2818, 3670, - 3950, 2818, 3670, - 3950, 2818, 3670, - 3950, 2819, 3670, - 3950, 2819, 3669, - 3949, 2819, 3669, - 3949, 2820, 3669, - 3949, 2821, 3669, - 3949, 2822, 3669, - 3949, 2824, 3668, - 3948, 2826, 3668, - 3948, 2829, 3667, - 3947, 2832, 3666, - 3946, 2837, 3665, - 3945, 2844, 3663, - 3943, 2852, 3661, - 3941, 2863, 3658, - 3938, 2878, 3654, - 3934, 2896, 3648, - 3929, 2920, 3640, - 3922, 2950, 3630, - 3912, 2987, 3616, - 3898, 3032, 3596, - 3880, 3087, 3568, - 3853, 3151, 3528, - 3815, 3224, 3467, - 3759, 3307, 3372, - 3672, 3398, 3202, - 3520, 3497, 2776, - 3174, 3602, 0, - 0, 3714, 0, - 4083, 2936, 3798, - 4083, 2936, 3798, - 4083, 2936, 3798, - 4083, 2936, 3798, - 4083, 2936, 3798, - 4083, 2936, 3798, - 4083, 2937, 3798, - 4083, 2937, 3798, - 4082, 2938, 3797, - 4082, 2939, 3797, - 4082, 2940, 3797, - 4082, 2942, 3796, - 4081, 2944, 3796, - 4081, 2947, 3795, - 4080, 2951, 3794, - 4079, 2956, 3793, - 4078, 2962, 3791, - 4077, 2971, 3789, - 4074, 2982, 3786, - 4071, 2997, 3782, - 4068, 3016, 3776, - 4062, 3041, 3768, - 4055, 3071, 3758, - 4045, 3109, 3743, - 4032, 3156, 3723, - 4013, 3211, 3695, - 3987, 3276, 3654, - 3949, 3350, 3593, - 3893, 3434, 3496, - 3806, 3526, 3323, - 3654, 3626, 2880, - 3312, 3732, 0, - 4095, 3057, 3927, - 4095, 3057, 3927, - 4095, 3057, 3927, - 4095, 3057, 3927, - 4095, 3057, 3927, - 4095, 3057, 3927, - 4095, 3058, 3927, - 4095, 3058, 3927, - 4095, 3059, 3927, - 4095, 3059, 3927, - 4095, 3060, 3926, - 4095, 3061, 3926, - 4095, 3063, 3926, - 4095, 3065, 3925, - 4095, 3068, 3924, - 4095, 3072, 3923, - 4095, 3077, 3922, - 4095, 3084, 3920, - 4095, 3093, 3918, - 4095, 3105, 3915, - 4095, 3120, 3911, - 4095, 3139, 3905, - 4095, 3164, 3897, - 4095, 3195, 3887, - 4095, 3234, 3872, - 4095, 3281, 3852, - 4095, 3337, 3823, - 4095, 3403, 3782, - 4082, 3478, 3721, - 4026, 3562, 3623, - 3939, 3655, 3446, - 3788, 3755, 2989, - 4095, 3180, 4057, - 4095, 3180, 4057, - 4095, 3180, 4057, - 4095, 3181, 4057, - 4095, 3181, 4057, - 4095, 3181, 4057, - 4095, 3181, 4057, - 4095, 3181, 4057, - 4095, 3182, 4057, - 4095, 3182, 4057, - 4095, 3183, 4056, - 4095, 3184, 4056, - 4095, 3185, 4056, - 4095, 3187, 4055, - 4095, 3189, 4055, - 4095, 3192, 4054, - 4095, 3196, 4053, - 4095, 3201, 4052, - 4095, 3208, 4050, - 4095, 3217, 4048, - 4095, 3229, 4045, - 4095, 3245, 4040, - 4095, 3264, 4035, - 4095, 3290, 4027, - 4095, 3321, 4016, - 4095, 3360, 4002, - 4095, 3408, 3981, - 4095, 3465, 3953, - 4095, 3531, 3911, - 4095, 3607, 3849, - 4095, 3692, 3751, - 4073, 3785, 3572, - 0, 1998, 2266, - 0, 1999, 2265, - 0, 2000, 2264, - 0, 2001, 2263, - 0, 2003, 2262, - 0, 2005, 2260, - 0, 2008, 2257, - 0, 2012, 2253, - 0, 2017, 2248, - 0, 2024, 2241, - 0, 2033, 2232, - 0, 2045, 2219, - 0, 2060, 2202, - 0, 2079, 2177, - 0, 2104, 2143, - 0, 2136, 2091, - 0, 2175, 2012, - 0, 2222, 1879, - 0, 2278, 1601, - 0, 2344, 0, - 0, 2420, 0, - 0, 2504, 0, - 0, 2597, 0, - 0, 2698, 0, - 0, 2805, 0, - 0, 2917, 0, - 0, 3034, 0, - 0, 3154, 0, - 0, 3277, 0, - 0, 3402, 0, - 0, 3529, 0, - 0, 3657, 0, - 0, 1998, 2267, - 0, 1999, 2266, - 0, 2000, 2265, - 0, 2001, 2264, - 0, 2003, 2263, - 0, 2005, 2260, - 0, 2008, 2258, - 0, 2012, 2254, - 0, 2017, 2249, - 0, 2024, 2242, - 0, 2033, 2233, - 0, 2045, 2220, - 0, 2060, 2203, - 0, 2080, 2179, - 0, 2105, 2144, - 0, 2136, 2093, - 0, 2175, 2014, - 0, 2222, 1881, - 0, 2279, 1606, - 0, 2344, 0, - 0, 2420, 0, - 0, 2504, 0, - 0, 2597, 0, - 0, 2698, 0, - 0, 2805, 0, - 0, 2917, 0, - 0, 3034, 0, - 0, 3154, 0, - 0, 3277, 0, - 0, 3402, 0, - 0, 3529, 0, - 0, 3657, 0, - 0, 1999, 2268, - 0, 1999, 2267, - 0, 2000, 2266, - 0, 2002, 2265, - 0, 2003, 2264, - 0, 2005, 2262, - 0, 2008, 2259, - 0, 2012, 2255, - 0, 2017, 2250, - 0, 2024, 2244, - 0, 2033, 2234, - 0, 2045, 2222, - 0, 2060, 2204, - 0, 2080, 2180, - 0, 2105, 2145, - 0, 2136, 2095, - 0, 2175, 2016, - 0, 2222, 1884, - 0, 2279, 1611, - 0, 2345, 0, - 0, 2420, 0, - 0, 2505, 0, - 0, 2598, 0, - 0, 2698, 0, - 0, 2805, 0, - 0, 2917, 0, - 0, 3034, 0, - 0, 3154, 0, - 0, 3277, 0, - 0, 3402, 0, - 0, 3529, 0, - 0, 3657, 0, - 0, 1999, 2270, - 0, 2000, 2269, - 0, 2001, 2268, - 0, 2002, 2267, - 0, 2004, 2265, - 0, 2006, 2263, - 0, 2009, 2261, - 0, 2013, 2257, - 0, 2018, 2252, - 0, 2025, 2245, - 0, 2034, 2236, - 0, 2045, 2224, - 0, 2061, 2206, - 0, 2080, 2182, - 0, 2105, 2148, - 0, 2137, 2097, - 0, 2175, 2019, - 0, 2223, 1888, - 0, 2279, 1618, - 0, 2345, 0, - 0, 2420, 0, - 0, 2505, 0, - 0, 2598, 0, - 0, 2698, 0, - 0, 2805, 0, - 0, 2917, 0, - 0, 3034, 0, - 0, 3154, 0, - 0, 3277, 0, - 0, 3402, 0, - 0, 3529, 0, - 0, 3657, 0, - 0, 2000, 2272, - 0, 2000, 2271, - 0, 2001, 2270, - 0, 2003, 2269, - 0, 2004, 2268, - 0, 2006, 2266, - 0, 2009, 2263, - 0, 2013, 2259, - 0, 2018, 2254, - 0, 2025, 2248, - 0, 2034, 2239, - 0, 2046, 2226, - 0, 2061, 2209, - 0, 2081, 2185, - 0, 2106, 2151, - 0, 2137, 2100, - 0, 2176, 2023, - 0, 2223, 1893, - 0, 2279, 1627, - 0, 2345, 0, - 0, 2420, 0, - 0, 2505, 0, - 0, 2598, 0, - 0, 2698, 0, - 0, 2805, 0, - 0, 2917, 0, - 0, 3034, 0, - 0, 3154, 0, - 0, 3277, 0, - 0, 3402, 0, - 0, 3529, 0, - 0, 3657, 0, - 0, 2000, 2275, - 0, 2001, 2274, - 0, 2002, 2273, - 0, 2003, 2272, - 0, 2005, 2271, - 0, 2007, 2269, - 0, 2010, 2266, - 0, 2014, 2262, - 0, 2019, 2258, - 0, 2026, 2251, - 0, 2035, 2242, - 0, 2047, 2230, - 0, 2062, 2212, - 0, 2081, 2189, - 0, 2106, 2155, - 0, 2138, 2105, - 0, 2176, 2028, - 0, 2223, 1900, - 0, 2280, 1640, - 0, 2345, 0, - 0, 2421, 0, - 0, 2505, 0, - 0, 2598, 0, - 0, 2698, 0, - 0, 2805, 0, - 0, 2917, 0, - 0, 3034, 0, - 0, 3154, 0, - 0, 3277, 0, - 0, 3403, 0, - 0, 3529, 0, - 0, 3658, 0, - 0, 2001, 2279, - 0, 2002, 2278, - 0, 2003, 2277, - 0, 2004, 2276, - 0, 2006, 2275, - 0, 2008, 2273, - 0, 2011, 2270, - 0, 2015, 2267, - 0, 2020, 2262, - 0, 2027, 2255, - 0, 2036, 2246, - 0, 2048, 2234, - 0, 2063, 2217, - 0, 2082, 2193, - 0, 2107, 2160, - 0, 2138, 2110, - 0, 2177, 2035, - 0, 2224, 1909, - 0, 2280, 1655, - 0, 2346, 0, - 0, 2421, 0, - 0, 2505, 0, - 0, 2598, 0, - 0, 2699, 0, - 0, 2805, 0, - 0, 2918, 0, - 0, 3034, 0, - 0, 3154, 0, - 0, 3277, 0, - 0, 3403, 0, - 0, 3529, 0, - 0, 3658, 0, - 0, 2003, 2284, - 0, 2003, 2283, - 0, 2004, 2283, - 0, 2006, 2282, - 0, 2007, 2280, - 0, 2009, 2278, - 0, 2012, 2275, - 0, 2016, 2272, - 0, 2021, 2267, - 0, 2028, 2261, - 0, 2037, 2252, - 0, 2049, 2240, - 0, 2064, 2223, - 0, 2083, 2200, - 0, 2108, 2166, - 0, 2139, 2118, - 0, 2178, 2044, - 0, 2225, 1921, - 0, 2281, 1676, - 0, 2347, 277, - 0, 2422, 0, - 0, 2506, 0, - 0, 2599, 0, - 0, 2699, 0, - 0, 2806, 0, - 0, 2918, 0, - 0, 3034, 0, - 0, 3155, 0, - 0, 3278, 0, - 0, 3403, 0, - 0, 3529, 0, - 0, 3658, 0, - 0, 2005, 2291, - 0, 2005, 2290, - 0, 2006, 2290, - 0, 2007, 2288, - 0, 2009, 2287, - 0, 2011, 2285, - 0, 2014, 2283, - 0, 2018, 2279, - 0, 2023, 2274, - 0, 2030, 2268, - 0, 2039, 2259, - 0, 2050, 2247, - 0, 2065, 2231, - 0, 2085, 2208, - 0, 2110, 2175, - 0, 2141, 2128, - 0, 2179, 2055, - 0, 2226, 1936, - 0, 2282, 1702, - 0, 2347, 650, - 0, 2422, 0, - 0, 2507, 0, - 0, 2599, 0, - 0, 2699, 0, - 0, 2806, 0, - 0, 2918, 0, - 0, 3035, 0, - 0, 3155, 0, - 0, 3278, 0, - 0, 3403, 0, - 0, 3530, 0, - 0, 3658, 0, - 0, 2007, 2300, - 0, 2008, 2299, - 0, 2009, 2299, - 0, 2010, 2298, - 0, 2011, 2296, - 0, 2014, 2294, - 0, 2017, 2292, - 0, 2020, 2288, - 0, 2025, 2284, - 0, 2032, 2277, - 0, 2041, 2269, - 0, 2053, 2257, - 0, 2068, 2241, - 0, 2087, 2219, - 0, 2111, 2187, - 0, 2142, 2141, - 0, 2181, 2071, - 0, 2227, 1955, - 0, 2283, 1734, - 0, 2349, 904, - 0, 2423, 0, - 0, 2507, 0, - 0, 2600, 0, - 0, 2700, 0, - 0, 2806, 0, - 0, 2918, 0, - 0, 3035, 0, - 0, 3155, 0, - 0, 3278, 0, - 0, 3403, 0, - 0, 3530, 0, - 0, 3658, 0, - 0, 2010, 2312, - 0, 2011, 2311, - 0, 2012, 2311, - 0, 2013, 2310, - 0, 2015, 2308, - 0, 2017, 2306, - 0, 2020, 2304, - 0, 2023, 2301, - 0, 2029, 2296, - 0, 2035, 2290, - 0, 2044, 2282, - 0, 2055, 2270, - 0, 2070, 2255, - 0, 2090, 2233, - 0, 2114, 2202, - 0, 2145, 2158, - 0, 2183, 2090, - 0, 2229, 1980, - 0, 2285, 1774, - 0, 2350, 1110, - 0, 2425, 0, - 0, 2508, 0, - 0, 2601, 0, - 0, 2700, 0, - 0, 2807, 0, - 0, 2919, 0, - 0, 3035, 0, - 0, 3155, 0, - 0, 3278, 0, - 0, 3403, 0, - 0, 3530, 0, - 0, 3658, 0, - 0, 2014, 2327, - 0, 2015, 2327, - 0, 2016, 2326, - 0, 2017, 2325, - 0, 2019, 2324, - 0, 2021, 2322, - 0, 2024, 2320, - 0, 2028, 2316, - 0, 2033, 2312, - 0, 2039, 2306, - 0, 2048, 2298, - 0, 2059, 2287, - 0, 2074, 2272, - 0, 2093, 2251, - 0, 2117, 2222, - 0, 2148, 2179, - 0, 2186, 2115, - 0, 2232, 2012, - 0, 2287, 1823, - 0, 2352, 1290, - 0, 2426, 0, - 0, 2510, 0, - 0, 2602, 0, - 0, 2701, 0, - 0, 2808, 0, - 0, 2919, 0, - 0, 3036, 0, - 0, 3155, 0, - 0, 3278, 0, - 0, 3403, 0, - 0, 3530, 0, - 0, 3658, 0, - 0, 2020, 2347, - 0, 2021, 2347, - 0, 2022, 2346, - 0, 2023, 2345, - 0, 2024, 2344, - 0, 2026, 2342, - 0, 2029, 2340, - 0, 2033, 2337, - 0, 2038, 2333, - 0, 2044, 2327, - 0, 2053, 2319, - 0, 2064, 2309, - 0, 2079, 2295, - 0, 2098, 2275, - 0, 2122, 2247, - 0, 2152, 2206, - 0, 2190, 2146, - 0, 2235, 2051, - 0, 2290, 1881, - 0, 2355, 1455, - 0, 2429, 0, - 0, 2512, 0, - 0, 2603, 0, - 0, 2703, 0, - 0, 2809, 0, - 0, 2920, 0, - 0, 3036, 0, - 0, 3156, 0, - 0, 3279, 0, - 0, 3403, 0, - 0, 3530, 0, - 0, 3658, 0, - 423, 2027, 2373, - 373, 2028, 2372, - 295, 2029, 2371, - 163, 2030, 2370, - 0, 2032, 2369, - 0, 2034, 2368, - 0, 2036, 2365, - 0, 2040, 2363, - 0, 2045, 2359, - 0, 2051, 2353, - 0, 2060, 2346, - 0, 2071, 2336, - 0, 2085, 2323, - 0, 2104, 2304, - 0, 2128, 2278, - 0, 2158, 2241, - 0, 2195, 2185, - 0, 2240, 2098, - 0, 2294, 1948, - 0, 2358, 1610, - 0, 2432, 0, - 0, 2514, 0, - 0, 2605, 0, - 0, 2704, 0, - 0, 2810, 0, - 0, 2921, 0, - 0, 3037, 0, - 0, 3157, 0, - 0, 3279, 0, - 0, 3404, 0, - 0, 3530, 0, - 0, 3658, 0, - 1521, 2037, 2404, - 1517, 2038, 2404, - 1511, 2039, 2403, - 1503, 2040, 2402, - 1492, 2041, 2401, - 1477, 2043, 2400, - 1457, 2046, 2398, - 1428, 2050, 2395, - 1385, 2054, 2391, - 1322, 2061, 2386, - 1221, 2069, 2380, - 1036, 2080, 2371, - 529, 2094, 2358, - 0, 2112, 2341, - 0, 2135, 2317, - 0, 2165, 2283, - 0, 2201, 2232, - 0, 2246, 2155, - 0, 2300, 2025, - 0, 2363, 1759, - 0, 2436, 0, - 0, 2518, 0, - 0, 2608, 0, - 0, 2707, 0, - 0, 2812, 0, - 0, 2923, 0, - 0, 3038, 0, - 0, 3157, 0, - 0, 3280, 0, - 0, 3404, 0, - 0, 3531, 0, - 0, 3659, 0, - 1883, 2050, 2444, - 1881, 2050, 2443, - 1879, 2051, 2443, - 1875, 2052, 2442, - 1870, 2054, 2441, - 1864, 2056, 2439, - 1855, 2058, 2437, - 1843, 2062, 2435, - 1827, 2066, 2432, - 1804, 2073, 2427, - 1771, 2081, 2421, - 1724, 2091, 2413, - 1651, 2105, 2401, - 1531, 2123, 2386, - 1296, 2146, 2364, - 216, 2174, 2333, - 0, 2210, 2288, - 0, 2254, 2221, - 0, 2307, 2111, - 0, 2369, 1903, - 0, 2441, 1228, - 0, 2522, 0, - 0, 2612, 0, - 0, 2709, 0, - 0, 2814, 0, - 0, 2924, 0, - 0, 3039, 0, - 0, 3158, 0, - 0, 3280, 0, - 0, 3405, 0, - 0, 3531, 0, - 0, 3659, 0, - 2133, 2066, 2491, - 2132, 2067, 2491, - 2131, 2067, 2490, - 2129, 2068, 2490, - 2126, 2070, 2489, - 2122, 2072, 2487, - 2118, 2074, 2486, - 2111, 2078, 2484, - 2102, 2082, 2481, - 2089, 2088, 2476, - 2072, 2096, 2471, - 2048, 2106, 2464, - 2014, 2120, 2453, - 1964, 2137, 2440, - 1887, 2159, 2420, - 1758, 2187, 2393, - 1496, 2222, 2354, - 0, 2265, 2296, - 0, 2316, 2205, - 0, 2377, 2044, - 0, 2448, 1663, - 0, 2528, 0, - 0, 2617, 0, - 0, 2713, 0, - 0, 2817, 0, - 0, 2927, 0, - 0, 3041, 0, - 0, 3160, 0, - 0, 3282, 0, - 0, 3406, 0, - 0, 3532, 0, - 0, 3659, 0, - 2337, 2087, 2548, - 2337, 2088, 2548, - 2336, 2088, 2547, - 2334, 2089, 2547, - 2333, 2091, 2546, - 2330, 2093, 2545, - 2327, 2095, 2543, - 2323, 2098, 2541, - 2317, 2103, 2539, - 2310, 2108, 2535, - 2299, 2116, 2530, - 2285, 2126, 2524, - 2265, 2138, 2515, - 2237, 2155, 2503, - 2196, 2176, 2486, - 2135, 2203, 2463, - 2039, 2237, 2429, - 1866, 2278, 2381, - 1429, 2329, 2306, - 0, 2388, 2182, - 0, 2457, 1936, - 0, 2536, 450, - 0, 2623, 0, - 0, 2718, 0, - 0, 2821, 0, - 0, 2930, 0, - 0, 3044, 0, - 0, 3162, 0, - 0, 3283, 0, - 0, 3407, 0, - 0, 3533, 0, - 0, 3660, 0, - 2517, 2114, 2614, - 2516, 2114, 2614, - 2515, 2115, 2614, - 2515, 2116, 2613, - 2513, 2117, 2612, - 2512, 2119, 2612, - 2510, 2121, 2610, - 2507, 2124, 2609, - 2503, 2128, 2606, - 2498, 2134, 2603, - 2491, 2141, 2599, - 2482, 2150, 2593, - 2469, 2162, 2586, - 2451, 2178, 2576, - 2426, 2198, 2561, - 2391, 2224, 2542, - 2338, 2256, 2514, - 2257, 2296, 2474, - 2119, 2344, 2414, - 1828, 2402, 2319, - 0, 2469, 2151, - 0, 2546, 1735, - 0, 2631, 0, - 0, 2725, 0, - 0, 2827, 0, - 0, 2934, 0, - 0, 3047, 0, - 0, 3164, 0, - 0, 3285, 0, - 0, 3408, 0, - 0, 3534, 0, - 0, 3661, 0, - 2681, 2147, 2690, - 2681, 2147, 2690, - 2680, 2148, 2690, - 2680, 2149, 2689, - 2679, 2150, 2689, - 2678, 2152, 2688, - 2676, 2154, 2687, - 2674, 2157, 2685, - 2672, 2161, 2683, - 2668, 2166, 2681, - 2663, 2172, 2677, - 2657, 2181, 2673, - 2648, 2192, 2666, - 2636, 2207, 2658, - 2620, 2226, 2646, - 2597, 2250, 2629, - 2565, 2281, 2607, - 2517, 2319, 2574, - 2444, 2365, 2527, - 2325, 2420, 2455, - 2090, 2485, 2336, - 1027, 2559, 2105, - 0, 2642, 1114, - 0, 2734, 0, - 0, 2834, 0, - 0, 2940, 0, - 0, 3052, 0, - 0, 3168, 0, - 0, 3288, 0, - 0, 3410, 0, - 0, 3535, 0, - 0, 3662, 0, - 2836, 2188, 2775, - 2836, 2189, 2775, - 2835, 2189, 2775, - 2835, 2190, 2774, - 2834, 2191, 2774, - 2833, 2193, 2773, - 2832, 2194, 2772, - 2831, 2197, 2771, - 2829, 2201, 2770, - 2827, 2205, 2767, - 2823, 2211, 2765, - 2819, 2219, 2761, - 2813, 2230, 2755, - 2805, 2243, 2748, - 2793, 2261, 2739, - 2778, 2283, 2725, - 2756, 2312, 2707, - 2726, 2347, 2681, - 2681, 2391, 2644, - 2614, 2443, 2590, - 2505, 2505, 2505, - 2300, 2576, 2358, - 1648, 2656, 2036, - 0, 2746, 0, - 0, 2843, 0, - 0, 2947, 0, - 0, 3057, 0, - 0, 3172, 0, - 0, 3291, 0, - 0, 3413, 0, - 0, 3537, 0, - 0, 3664, 0, - 2984, 2238, 2869, - 2984, 2238, 2868, - 2984, 2239, 2868, - 2983, 2239, 2868, - 2983, 2240, 2868, - 2983, 2242, 2867, - 2982, 2244, 2866, - 2981, 2246, 2865, - 2979, 2249, 2864, - 2978, 2253, 2862, - 2975, 2259, 2860, - 2972, 2266, 2857, - 2968, 2275, 2853, - 2962, 2287, 2847, - 2954, 2303, 2839, - 2943, 2324, 2828, - 2928, 2350, 2814, - 2907, 2383, 2794, - 2878, 2423, 2765, - 2836, 2472, 2724, - 2772, 2530, 2662, - 2669, 2598, 2563, - 2482, 2675, 2386, - 1962, 2761, 1922, - 0, 2855, 0, - 0, 2957, 0, - 0, 3065, 0, - 0, 3178, 0, - 0, 3296, 0, - 0, 3417, 0, - 0, 3540, 0, - 0, 3666, 0, - 3128, 2297, 2969, - 3128, 2297, 2969, - 3128, 2298, 2969, - 3128, 2298, 2969, - 3127, 2299, 2969, - 3127, 2300, 2968, - 3126, 2302, 2968, - 3126, 2304, 2967, - 3125, 2307, 2966, - 3123, 2310, 2964, - 3122, 2315, 2962, - 3119, 2321, 2960, - 3116, 2330, 2957, - 3112, 2341, 2952, - 3106, 2355, 2946, - 3099, 2373, 2938, - 3088, 2397, 2926, - 3073, 2426, 2910, - 3053, 2463, 2888, - 3025, 2508, 2857, - 2984, 2562, 2812, - 2922, 2625, 2744, - 2825, 2698, 2632, - 2649, 2780, 2420, - 2195, 2871, 1705, - 0, 2970, 0, - 0, 3075, 0, - 0, 3186, 0, - 0, 3302, 0, - 0, 3421, 0, - 0, 3544, 0, - 0, 3668, 0, - 3269, 2365, 3077, - 3269, 2366, 3077, - 3269, 2366, 3076, - 3268, 2367, 3076, - 3268, 2367, 3076, - 3268, 2368, 3076, - 3268, 2370, 3075, - 3267, 2371, 3075, - 3266, 2374, 3074, - 3265, 2377, 3073, - 3264, 2381, 3071, - 3262, 2387, 3069, - 3260, 2394, 3067, - 3257, 2403, 3063, - 3253, 2416, 3058, - 3247, 2432, 3052, - 3240, 2453, 3043, - 3229, 2479, 3031, - 3215, 2512, 3014, - 3195, 2552, 2990, - 3168, 2601, 2957, - 3128, 2660, 2908, - 3068, 2728, 2834, - 2973, 2805, 2710, - 2805, 2892, 2463, - 2389, 2986, 928, - 0, 3088, 0, - 0, 3197, 0, - 0, 3310, 0, - 0, 3427, 0, - 0, 3548, 0, - 0, 3672, 0, - 3407, 2443, 3189, - 3407, 2444, 3189, - 3407, 2444, 3189, - 3407, 2444, 3189, - 3407, 2445, 3189, - 3407, 2446, 3188, - 3406, 2447, 3188, - 3406, 2448, 3188, - 3405, 2450, 3187, - 3405, 2453, 3186, - 3404, 2457, 3185, - 3403, 2461, 3183, - 3401, 2467, 3181, - 3399, 2475, 3179, - 3396, 2486, 3175, - 3392, 2500, 3170, - 3386, 2518, 3163, - 3379, 2541, 3154, - 3368, 2570, 3141, - 3354, 2605, 3123, - 3335, 2649, 3099, - 3308, 2702, 3064, - 3268, 2765, 3012, - 3210, 2836, 2932, - 3117, 2918, 2797, - 2954, 3008, 2514, - 2563, 3105, 0, - 0, 3210, 0, - 0, 3320, 0, - 0, 3436, 0, - 0, 3555, 0, - 0, 3677, 0, - 3544, 2530, 3306, - 3544, 2530, 3306, - 3544, 2531, 3306, - 3544, 2531, 3306, - 3544, 2532, 3306, - 3544, 2532, 3305, - 3543, 2533, 3305, - 3543, 2534, 3305, - 3543, 2536, 3304, - 3542, 2538, 3304, - 3541, 2541, 3303, - 3541, 2545, 3302, - 3539, 2550, 3300, - 3538, 2557, 3298, - 3535, 2566, 3295, - 3532, 2578, 3291, - 3528, 2593, 3286, - 3523, 2612, 3279, - 3516, 2637, 3269, - 3505, 2668, 3256, - 3492, 2707, 3238, - 3472, 2754, 3212, - 3445, 2810, 3175, - 3407, 2875, 3121, - 3349, 2950, 3037, - 3258, 3034, 2892, - 3099, 3127, 2574, - 2724, 3227, 0, - 0, 3334, 0, - 0, 3446, 0, - 0, 3563, 0, - 0, 3683, 0, - 3680, 2625, 3427, - 3680, 2626, 3426, - 3680, 2626, 3426, - 3679, 2626, 3426, - 3679, 2626, 3426, - 3679, 2627, 3426, - 3679, 2628, 3426, - 3679, 2629, 3426, - 3679, 2630, 3425, - 3678, 2632, 3425, - 3678, 2634, 3424, - 3677, 2637, 3423, - 3676, 2642, 3422, - 3675, 2647, 3420, - 3673, 2655, 3418, - 3671, 2664, 3415, - 3668, 2677, 3411, - 3664, 2693, 3406, - 3659, 2714, 3399, - 3651, 2740, 3389, - 3641, 2773, 3375, - 3628, 2814, 3356, - 3609, 2863, 3330, - 3582, 2922, 3292, - 3543, 2990, 3236, - 3486, 3068, 3147, - 3397, 3155, 2994, - 3240, 3250, 2644, - 2877, 3352, 0, - 0, 3460, 0, - 0, 3574, 0, - 0, 3691, 0, - 3814, 2728, 3550, - 3814, 2728, 3550, - 3814, 2728, 3550, - 3814, 2728, 3550, - 3814, 2729, 3549, - 3814, 2729, 3549, - 3814, 2730, 3549, - 3814, 2730, 3549, - 3814, 2732, 3549, - 3813, 2733, 3548, - 3813, 2735, 3548, - 3812, 2737, 3547, - 3812, 2741, 3546, - 3811, 2745, 3545, - 3810, 2751, 3543, - 3808, 2759, 3541, - 3806, 2769, 3538, - 3803, 2782, 3534, - 3799, 2800, 3528, - 3793, 2822, 3521, - 3786, 2849, 3511, - 3776, 2884, 3497, - 3763, 2927, 3478, - 3744, 2978, 3451, - 3717, 3039, 3412, - 3679, 3109, 3354, - 3622, 3189, 3263, - 3534, 3278, 3102, - 3379, 3374, 2724, - 3024, 3478, 0, - 0, 3588, 0, - 0, 3702, 0, - 3948, 2836, 3675, - 3948, 2836, 3675, - 3948, 2836, 3675, - 3948, 2837, 3675, - 3948, 2837, 3675, - 3948, 2837, 3675, - 3948, 2838, 3675, - 3948, 2838, 3674, - 3948, 2839, 3674, - 3948, 2840, 3674, - 3947, 2842, 3673, - 3947, 2844, 3673, - 3946, 2847, 3672, - 3946, 2850, 3671, - 3945, 2855, 3670, - 3944, 2861, 3668, - 3942, 2869, 3666, - 3940, 2880, 3663, - 3937, 2894, 3659, - 3933, 2912, 3653, - 3928, 2935, 3646, - 3920, 2964, 3636, - 3910, 3000, 3622, - 3897, 3044, 3602, - 3878, 3097, 3574, - 3852, 3160, 3535, - 3814, 3232, 3475, - 3757, 3313, 3382, - 3669, 3403, 3216, - 3516, 3501, 2812, - 3167, 3606, 0, - 0, 3716, 0, - 4082, 2950, 3802, - 4082, 2950, 3802, - 4082, 2950, 3802, - 4082, 2950, 3802, - 4082, 2950, 3802, - 4082, 2951, 3802, - 4082, 2951, 3802, - 4082, 2952, 3801, - 4081, 2952, 3801, - 4081, 2953, 3801, - 4081, 2954, 3801, - 4081, 2956, 3800, - 4080, 2958, 3800, - 4080, 2961, 3799, - 4079, 2964, 3798, - 4078, 2969, 3797, - 4077, 2976, 3795, - 4075, 2984, 3793, - 4073, 2995, 3790, - 4070, 3010, 3786, - 4066, 3028, 3780, - 4061, 3052, 3772, - 4054, 3082, 3762, - 4044, 3119, 3748, - 4030, 3164, 3728, - 4012, 3219, 3700, - 3985, 3283, 3660, - 3948, 3356, 3599, - 3892, 3439, 3504, - 3804, 3530, 3334, - 3652, 3629, 2909, - 3307, 3735, 0, - 4095, 3068, 3930, - 4095, 3068, 3930, - 4095, 3068, 3930, - 4095, 3068, 3930, - 4095, 3068, 3930, - 4095, 3068, 3930, - 4095, 3069, 3930, - 4095, 3069, 3930, - 4095, 3069, 3930, - 4095, 3070, 3929, - 4095, 3071, 3929, - 4095, 3072, 3929, - 4095, 3074, 3929, - 4095, 3076, 3928, - 4095, 3079, 3927, - 4095, 3083, 3926, - 4095, 3088, 3925, - 4095, 3094, 3923, - 4095, 3103, 3921, - 4095, 3114, 3918, - 4095, 3129, 3914, - 4095, 3148, 3908, - 4095, 3173, 3900, - 4095, 3203, 3890, - 4095, 3241, 3875, - 4095, 3288, 3855, - 4095, 3343, 3827, - 4095, 3408, 3786, - 4081, 3482, 3725, - 4025, 3566, 3629, - 3938, 3658, 3455, - 3786, 3758, 3012, - 4095, 3189, 4059, - 4095, 3189, 4059, - 4095, 3189, 4059, - 4095, 3189, 4059, - 4095, 3189, 4059, - 4095, 3189, 4059, - 4095, 3189, 4059, - 4095, 3190, 4059, - 4095, 3190, 4059, - 4095, 3191, 4059, - 4095, 3191, 4059, - 4095, 3192, 4058, - 4095, 3193, 4058, - 4095, 3195, 4058, - 4095, 3197, 4057, - 4095, 3200, 4056, - 4095, 3204, 4055, - 4095, 3209, 4054, - 4095, 3216, 4052, - 4095, 3225, 4050, - 4095, 3237, 4047, - 4095, 3252, 4043, - 4095, 3271, 4037, - 4095, 3296, 4029, - 4095, 3327, 4019, - 4095, 3366, 4004, - 4095, 3413, 3984, - 4095, 3469, 3956, - 4095, 3535, 3914, - 4095, 3610, 3853, - 4095, 3694, 3755, - 4071, 3787, 3579, - 0, 2129, 2398, - 0, 2130, 2397, - 0, 2131, 2396, - 0, 2132, 2396, - 0, 2133, 2394, - 0, 2135, 2393, - 0, 2137, 2391, - 0, 2140, 2388, - 0, 2144, 2384, - 0, 2149, 2379, - 0, 2156, 2373, - 0, 2165, 2363, - 0, 2176, 2351, - 0, 2192, 2333, - 0, 2211, 2309, - 0, 2236, 2274, - 0, 2268, 2222, - 0, 2307, 2143, - 0, 2354, 2009, - 0, 2410, 1731, - 0, 2476, 0, - 0, 2552, 0, - 0, 2636, 0, - 0, 2729, 0, - 0, 2830, 0, - 0, 2937, 0, - 0, 3049, 0, - 0, 3166, 0, - 0, 3286, 0, - 0, 3409, 0, - 0, 3535, 0, - 0, 3661, 0, - 0, 2130, 2398, - 0, 2130, 2398, - 0, 2131, 2397, - 0, 2132, 2396, - 0, 2133, 2395, - 0, 2135, 2394, - 0, 2137, 2392, - 0, 2140, 2389, - 0, 2144, 2385, - 0, 2149, 2380, - 0, 2156, 2373, - 0, 2165, 2364, - 0, 2177, 2352, - 0, 2192, 2334, - 0, 2212, 2310, - 0, 2237, 2275, - 0, 2268, 2223, - 0, 2307, 2144, - 0, 2354, 2011, - 0, 2411, 1734, - 0, 2476, 0, - 0, 2552, 0, - 0, 2636, 0, - 0, 2729, 0, - 0, 2830, 0, - 0, 2937, 0, - 0, 3049, 0, - 0, 3166, 0, - 0, 3286, 0, - 0, 3409, 0, - 0, 3535, 0, - 0, 3661, 0, - 0, 2130, 2399, - 0, 2130, 2399, - 0, 2131, 2398, - 0, 2132, 2397, - 0, 2133, 2396, - 0, 2135, 2395, - 0, 2137, 2393, - 0, 2140, 2390, - 0, 2144, 2386, - 0, 2149, 2381, - 0, 2156, 2374, - 0, 2165, 2365, - 0, 2177, 2353, - 0, 2192, 2335, - 0, 2212, 2311, - 0, 2237, 2276, - 0, 2268, 2225, - 0, 2307, 2146, - 0, 2354, 2013, - 0, 2411, 1738, - 0, 2477, 0, - 0, 2552, 0, - 0, 2637, 0, - 0, 2730, 0, - 0, 2830, 0, - 0, 2937, 0, - 0, 3049, 0, - 0, 3166, 0, - 0, 3286, 0, - 0, 3409, 0, - 0, 3535, 0, - 0, 3661, 0, - 0, 2130, 2400, - 0, 2131, 2400, - 0, 2131, 2399, - 0, 2132, 2399, - 0, 2134, 2397, - 0, 2135, 2396, - 0, 2138, 2394, - 0, 2140, 2391, - 0, 2144, 2387, - 0, 2150, 2382, - 0, 2156, 2376, - 0, 2165, 2367, - 0, 2177, 2354, - 0, 2192, 2337, - 0, 2212, 2312, - 0, 2237, 2278, - 0, 2268, 2227, - 0, 2307, 2148, - 0, 2354, 2016, - 0, 2411, 1743, - 0, 2477, 0, - 0, 2552, 0, - 0, 2637, 0, - 0, 2730, 0, - 0, 2830, 0, - 0, 2937, 0, - 0, 3049, 0, - 0, 3166, 0, - 0, 3286, 0, - 0, 3409, 0, - 0, 3535, 0, - 0, 3661, 0, - 0, 2131, 2402, - 0, 2131, 2402, - 0, 2132, 2401, - 0, 2133, 2400, - 0, 2134, 2399, - 0, 2136, 2398, - 0, 2138, 2396, - 0, 2141, 2393, - 0, 2145, 2389, - 0, 2150, 2384, - 0, 2157, 2377, - 0, 2166, 2368, - 0, 2177, 2356, - 0, 2193, 2339, - 0, 2212, 2314, - 0, 2237, 2280, - 0, 2269, 2229, - 0, 2307, 2151, - 0, 2355, 2020, - 0, 2411, 1750, - 0, 2477, 0, - 0, 2552, 0, - 0, 2637, 0, - 0, 2730, 0, - 0, 2830, 0, - 0, 2937, 0, - 0, 3049, 0, - 0, 3166, 0, - 0, 3286, 0, - 0, 3409, 0, - 0, 3535, 0, - 0, 3661, 0, - 0, 2131, 2404, - 0, 2132, 2404, - 0, 2132, 2403, - 0, 2133, 2402, - 0, 2135, 2401, - 0, 2136, 2400, - 0, 2139, 2398, - 0, 2141, 2395, - 0, 2145, 2391, - 0, 2151, 2387, - 0, 2157, 2380, - 0, 2166, 2371, - 0, 2178, 2358, - 0, 2193, 2341, - 0, 2213, 2317, - 0, 2238, 2283, - 0, 2269, 2232, - 0, 2308, 2155, - 0, 2355, 2025, - 0, 2411, 1760, - 0, 2477, 0, - 0, 2553, 0, - 0, 2637, 0, - 0, 2730, 0, - 0, 2830, 0, - 0, 2937, 0, - 0, 3049, 0, - 0, 3166, 0, - 0, 3286, 0, - 0, 3409, 0, - 0, 3535, 0, - 0, 3661, 0, - 0, 2132, 2407, - 0, 2133, 2407, - 0, 2133, 2406, - 0, 2134, 2405, - 0, 2135, 2404, - 0, 2137, 2403, - 0, 2139, 2401, - 0, 2142, 2398, - 0, 2146, 2395, - 0, 2151, 2390, - 0, 2158, 2383, - 0, 2167, 2374, - 0, 2179, 2362, - 0, 2194, 2345, - 0, 2213, 2321, - 0, 2238, 2287, - 0, 2270, 2237, - 0, 2308, 2160, - 0, 2356, 2032, - 0, 2412, 1772, - 0, 2478, 0, - 0, 2553, 0, - 0, 2637, 0, - 0, 2730, 0, - 0, 2830, 0, - 0, 2937, 0, - 0, 3050, 0, - 0, 3166, 0, - 0, 3286, 0, - 0, 3409, 0, - 0, 3535, 0, - 0, 3661, 0, - 0, 2133, 2411, - 0, 2134, 2411, - 0, 2134, 2410, - 0, 2135, 2409, - 0, 2136, 2408, - 0, 2138, 2407, - 0, 2140, 2405, - 0, 2143, 2402, - 0, 2147, 2399, - 0, 2152, 2394, - 0, 2159, 2387, - 0, 2168, 2378, - 0, 2180, 2366, - 0, 2195, 2349, - 0, 2214, 2325, - 0, 2239, 2292, - 0, 2270, 2242, - 0, 2309, 2167, - 0, 2356, 2041, - 0, 2412, 1788, - 0, 2478, 0, - 0, 2553, 0, - 0, 2638, 0, - 0, 2730, 0, - 0, 2831, 0, - 0, 2937, 0, - 0, 3050, 0, - 0, 3166, 0, - 0, 3287, 0, - 0, 3410, 0, - 0, 3535, 0, - 0, 3662, 0, - 0, 2134, 2417, - 0, 2135, 2416, - 0, 2136, 2416, - 0, 2136, 2415, - 0, 2138, 2414, - 0, 2139, 2412, - 0, 2142, 2410, - 0, 2144, 2408, - 0, 2148, 2404, - 0, 2154, 2399, - 0, 2160, 2393, - 0, 2169, 2384, - 0, 2181, 2372, - 0, 2196, 2355, - 0, 2215, 2332, - 0, 2240, 2299, - 0, 2271, 2250, - 0, 2310, 2176, - 0, 2357, 2053, - 0, 2413, 1808, - 0, 2479, 410, - 0, 2554, 0, - 0, 2638, 0, - 0, 2731, 0, - 0, 2831, 0, - 0, 2938, 0, - 0, 3050, 0, - 0, 3166, 0, - 0, 3287, 0, - 0, 3410, 0, - 0, 3535, 0, - 0, 3662, 0, - 0, 2136, 2424, - 0, 2137, 2423, - 0, 2137, 2422, - 0, 2138, 2422, - 0, 2140, 2421, - 0, 2141, 2419, - 0, 2143, 2417, - 0, 2146, 2415, - 0, 2150, 2411, - 0, 2155, 2406, - 0, 2162, 2400, - 0, 2171, 2391, - 0, 2182, 2379, - 0, 2198, 2363, - 0, 2217, 2340, - 0, 2242, 2308, - 0, 2273, 2260, - 0, 2311, 2187, - 0, 2358, 2068, - 0, 2414, 1834, - 0, 2479, 782, - 0, 2554, 0, - 0, 2639, 0, - 0, 2731, 0, - 0, 2831, 0, - 0, 2938, 0, - 0, 3050, 0, - 0, 3167, 0, - 0, 3287, 0, - 0, 3410, 0, - 0, 3535, 0, - 0, 3662, 0, - 0, 2139, 2433, - 0, 2139, 2432, - 0, 2140, 2432, - 0, 2141, 2431, - 0, 2142, 2430, - 0, 2144, 2428, - 0, 2146, 2426, - 0, 2149, 2424, - 0, 2152, 2420, - 0, 2158, 2416, - 0, 2164, 2410, - 0, 2173, 2401, - 0, 2185, 2389, - 0, 2200, 2373, - 0, 2219, 2351, - 0, 2244, 2319, - 0, 2274, 2273, - 0, 2313, 2203, - 0, 2360, 2088, - 0, 2415, 1866, - 0, 2481, 1036, - 0, 2555, 0, - 0, 2639, 0, - 0, 2732, 0, - 0, 2832, 0, - 0, 2938, 0, - 0, 3050, 0, - 0, 3167, 0, - 0, 3287, 0, - 0, 3410, 0, - 0, 3535, 0, - 0, 3662, 0, - 0, 2142, 2444, - 0, 2142, 2444, - 0, 2143, 2443, - 0, 2144, 2443, - 0, 2145, 2442, - 0, 2147, 2440, - 0, 2149, 2438, - 0, 2152, 2436, - 0, 2156, 2433, - 0, 2161, 2428, - 0, 2167, 2422, - 0, 2176, 2414, - 0, 2188, 2402, - 0, 2202, 2387, - 0, 2222, 2365, - 0, 2246, 2334, - 0, 2277, 2290, - 0, 2315, 2222, - 0, 2362, 2113, - 0, 2417, 1906, - 0, 2482, 1242, - 0, 2557, 0, - 0, 2640, 0, - 0, 2733, 0, - 0, 2833, 0, - 0, 2939, 0, - 0, 3051, 0, - 0, 3167, 0, - 0, 3287, 0, - 0, 3410, 0, - 0, 3535, 0, - 0, 3662, 0, - 0, 2146, 2460, - 0, 2146, 2460, - 0, 2147, 2459, - 0, 2148, 2458, - 0, 2149, 2457, - 0, 2151, 2456, - 0, 2153, 2454, - 0, 2156, 2452, - 0, 2160, 2448, - 0, 2165, 2444, - 0, 2171, 2438, - 0, 2180, 2430, - 0, 2191, 2419, - 0, 2206, 2404, - 0, 2225, 2383, - 0, 2249, 2354, - 0, 2280, 2311, - 0, 2318, 2247, - 0, 2364, 2144, - 0, 2419, 1955, - 0, 2484, 1422, - 0, 2558, 0, - 0, 2642, 0, - 0, 2734, 0, - 0, 2834, 0, - 0, 2940, 0, - 0, 3051, 0, - 0, 3168, 0, - 0, 3288, 0, - 0, 3410, 0, - 0, 3535, 0, - 0, 3662, 0, - 0, 2152, 2480, - 0, 2152, 2479, - 0, 2153, 2479, - 0, 2154, 2478, - 0, 2155, 2477, - 0, 2156, 2476, - 0, 2159, 2474, - 0, 2161, 2472, - 0, 2165, 2469, - 0, 2170, 2465, - 0, 2177, 2459, - 0, 2185, 2451, - 0, 2196, 2441, - 0, 2211, 2427, - 0, 2230, 2407, - 0, 2254, 2379, - 0, 2284, 2339, - 0, 2322, 2278, - 0, 2368, 2183, - 0, 2422, 2013, - 0, 2487, 1587, - 0, 2561, 0, - 0, 2644, 0, - 0, 2735, 0, - 0, 2835, 0, - 0, 2941, 0, - 0, 3052, 0, - 0, 3168, 0, - 0, 3288, 0, - 0, 3411, 0, - 0, 3536, 0, - 0, 3662, 0, - 590, 2159, 2505, - 556, 2159, 2505, - 505, 2160, 2504, - 427, 2161, 2503, - 295, 2162, 2503, - 26, 2164, 2501, - 0, 2166, 2500, - 0, 2169, 2498, - 0, 2172, 2495, - 0, 2177, 2491, - 0, 2184, 2485, - 0, 2192, 2478, - 0, 2203, 2468, - 0, 2218, 2455, - 0, 2236, 2436, - 0, 2260, 2410, - 0, 2290, 2373, - 0, 2327, 2317, - 0, 2372, 2230, - 0, 2427, 2080, - 0, 2490, 1742, - 0, 2564, 0, - 0, 2646, 0, - 0, 2737, 0, - 0, 2836, 0, - 0, 2942, 0, - 0, 3053, 0, - 0, 3169, 0, - 0, 3289, 0, - 0, 3411, 0, - 0, 3536, 0, - 0, 3662, 0, - 1656, 2169, 2537, - 1653, 2169, 2536, - 1649, 2170, 2536, - 1643, 2171, 2535, - 1635, 2172, 2534, - 1624, 2173, 2533, - 1610, 2175, 2532, - 1589, 2178, 2530, - 1560, 2182, 2527, - 1518, 2186, 2523, - 1454, 2193, 2518, - 1353, 2201, 2512, - 1168, 2212, 2503, - 661, 2226, 2490, - 0, 2244, 2473, - 0, 2268, 2449, - 0, 2297, 2415, - 0, 2334, 2364, - 0, 2378, 2287, - 0, 2432, 2157, - 0, 2495, 1891, - 0, 2568, 0, - 0, 2650, 0, - 0, 2740, 0, - 0, 2839, 0, - 0, 2944, 0, - 0, 3055, 0, - 0, 3170, 0, - 0, 3289, 0, - 0, 3412, 0, - 0, 3536, 0, - 0, 3663, 0, - 2017, 2181, 2576, - 2015, 2182, 2576, - 2013, 2182, 2575, - 2011, 2183, 2575, - 2007, 2184, 2574, - 2002, 2186, 2573, - 1996, 2188, 2571, - 1987, 2190, 2570, - 1975, 2194, 2567, - 1959, 2199, 2564, - 1936, 2205, 2559, - 1903, 2213, 2553, - 1856, 2223, 2545, - 1783, 2237, 2533, - 1663, 2255, 2518, - 1428, 2278, 2496, - 348, 2307, 2465, - 0, 2342, 2420, - 0, 2386, 2353, - 0, 2439, 2243, - 0, 2501, 2035, - 0, 2573, 1360, - 0, 2654, 0, - 0, 2744, 0, - 0, 2842, 0, - 0, 2946, 0, - 0, 3056, 0, - 0, 3172, 0, - 0, 3291, 0, - 0, 3413, 0, - 0, 3537, 0, - 0, 3663, 0, - 2266, 2198, 2624, - 2266, 2198, 2623, - 2264, 2199, 2623, - 2263, 2200, 2622, - 2261, 2201, 2622, - 2258, 2202, 2621, - 2255, 2204, 2620, - 2250, 2206, 2618, - 2243, 2210, 2616, - 2234, 2214, 2613, - 2222, 2220, 2609, - 2204, 2228, 2603, - 2180, 2238, 2596, - 2146, 2252, 2586, - 2096, 2269, 2572, - 2019, 2291, 2552, - 1890, 2319, 2525, - 1628, 2354, 2486, - 0, 2397, 2428, - 0, 2448, 2337, - 0, 2509, 2176, - 0, 2580, 1795, - 0, 2660, 0, - 0, 2749, 0, - 0, 2845, 0, - 0, 2949, 0, - 0, 3059, 0, - 0, 3173, 0, - 0, 3292, 0, - 0, 3414, 0, - 0, 3538, 0, - 0, 3664, 0, - 2470, 2219, 2680, - 2469, 2219, 2680, - 2469, 2220, 2680, - 2468, 2220, 2679, - 2466, 2221, 2679, - 2465, 2223, 2678, - 2462, 2225, 2677, - 2459, 2227, 2675, - 2455, 2230, 2673, - 2450, 2235, 2671, - 2442, 2240, 2667, - 2431, 2248, 2662, - 2417, 2258, 2656, - 2397, 2270, 2647, - 2369, 2287, 2635, - 2328, 2308, 2618, - 2267, 2335, 2595, - 2171, 2369, 2561, - 1998, 2410, 2513, - 1561, 2461, 2438, - 0, 2520, 2315, - 0, 2589, 2068, - 0, 2668, 582, - 0, 2755, 0, - 0, 2851, 0, - 0, 2953, 0, - 0, 3062, 0, - 0, 3176, 0, - 0, 3294, 0, - 0, 3415, 0, - 0, 3539, 0, - 0, 3665, 0, - 2649, 2245, 2747, - 2649, 2246, 2746, - 2648, 2246, 2746, - 2648, 2247, 2746, - 2647, 2248, 2745, - 2646, 2249, 2745, - 2644, 2251, 2744, - 2642, 2253, 2742, - 2639, 2256, 2741, - 2635, 2260, 2738, - 2630, 2266, 2735, - 2623, 2273, 2731, - 2614, 2282, 2726, - 2601, 2294, 2718, - 2583, 2310, 2708, - 2558, 2330, 2693, - 2523, 2356, 2674, - 2470, 2388, 2646, - 2389, 2428, 2606, - 2251, 2476, 2546, - 1960, 2534, 2451, - 0, 2601, 2283, - 0, 2678, 1867, - 0, 2763, 0, - 0, 2857, 0, - 0, 2959, 0, - 0, 3066, 0, - 0, 3179, 0, - 0, 3296, 0, - 0, 3417, 0, - 0, 3540, 0, - 0, 3666, 0, - 2813, 2279, 2823, - 2813, 2279, 2822, - 2813, 2280, 2822, - 2812, 2280, 2822, - 2812, 2281, 2821, - 2811, 2282, 2821, - 2810, 2284, 2820, - 2808, 2286, 2819, - 2806, 2289, 2817, - 2804, 2293, 2816, - 2800, 2298, 2813, - 2796, 2304, 2809, - 2789, 2313, 2805, - 2780, 2324, 2798, - 2769, 2339, 2790, - 2752, 2358, 2778, - 2729, 2382, 2762, - 2697, 2413, 2739, - 2649, 2451, 2706, - 2576, 2497, 2659, - 2457, 2552, 2587, - 2222, 2617, 2468, - 1159, 2691, 2237, - 0, 2774, 1246, - 0, 2866, 0, - 0, 2966, 0, - 0, 3072, 0, - 0, 3184, 0, - 0, 3300, 0, - 0, 3420, 0, - 0, 3542, 0, - 0, 3667, 0, - 2968, 2320, 2907, - 2968, 2320, 2907, - 2968, 2321, 2907, - 2967, 2321, 2907, - 2967, 2322, 2906, - 2966, 2323, 2906, - 2966, 2325, 2905, - 2965, 2327, 2904, - 2963, 2329, 2903, - 2961, 2333, 2902, - 2959, 2337, 2900, - 2956, 2343, 2897, - 2951, 2351, 2893, - 2945, 2362, 2888, - 2937, 2375, 2880, - 2925, 2393, 2871, - 2910, 2415, 2857, - 2888, 2444, 2839, - 2858, 2479, 2813, - 2813, 2523, 2776, - 2746, 2575, 2722, - 2637, 2637, 2637, - 2432, 2708, 2490, - 1780, 2789, 2168, - 0, 2878, 0, - 0, 2975, 0, - 0, 3079, 0, - 0, 3190, 0, - 0, 3304, 0, - 0, 3423, 0, - 0, 3545, 0, - 0, 3669, 0, - 3116, 2370, 3001, - 3116, 2370, 3001, - 3116, 2370, 3001, - 3116, 2371, 3000, - 3116, 2372, 3000, - 3115, 2373, 3000, - 3115, 2374, 2999, - 3114, 2376, 2998, - 3113, 2378, 2997, - 3112, 2381, 2996, - 3110, 2385, 2994, - 3107, 2391, 2992, - 3104, 2398, 2989, - 3100, 2407, 2985, - 3094, 2420, 2979, - 3086, 2436, 2971, - 3075, 2456, 2961, - 3060, 2482, 2946, - 3039, 2515, 2926, - 3010, 2555, 2897, - 2968, 2604, 2856, - 2904, 2662, 2794, - 2802, 2730, 2696, - 2614, 2807, 2518, - 2094, 2893, 2054, - 0, 2987, 0, - 0, 3089, 0, - 0, 3197, 0, - 0, 3310, 0, - 0, 3428, 0, - 0, 3549, 0, - 0, 3672, 0, - 3260, 2429, 3102, - 3260, 2429, 3102, - 3260, 2429, 3101, - 3260, 2430, 3101, - 3260, 2430, 3101, - 3259, 2431, 3101, - 3259, 2432, 3100, - 3258, 2434, 3100, - 3258, 2436, 3099, - 3257, 2439, 3098, - 3255, 2442, 3096, - 3254, 2447, 3095, - 3251, 2453, 3092, - 3248, 2462, 3089, - 3244, 2473, 3084, - 3238, 2487, 3078, - 3231, 2505, 3070, - 3220, 2529, 3058, - 3206, 2558, 3042, - 3185, 2595, 3021, - 3157, 2640, 2989, - 3116, 2694, 2944, - 3054, 2757, 2876, - 2957, 2830, 2764, - 2781, 2913, 2552, - 2327, 3003, 1837, - 0, 3102, 0, - 0, 3207, 0, - 0, 3318, 0, - 0, 3434, 0, - 0, 3553, 0, - 0, 3676, 0, - 3401, 2497, 3209, - 3401, 2497, 3209, - 3401, 2498, 3209, - 3401, 2498, 3208, - 3401, 2499, 3208, - 3400, 2499, 3208, - 3400, 2500, 3208, - 3400, 2502, 3207, - 3399, 2503, 3207, - 3398, 2506, 3206, - 3397, 2509, 3205, - 3396, 2513, 3203, - 3394, 2519, 3201, - 3392, 2526, 3199, - 3389, 2535, 3195, - 3385, 2548, 3190, - 3379, 2564, 3184, - 3372, 2585, 3175, - 3361, 2611, 3163, - 3347, 2644, 3146, - 3328, 2684, 3123, - 3300, 2734, 3089, - 3260, 2792, 3040, - 3200, 2860, 2966, - 3105, 2937, 2842, - 2937, 3024, 2595, - 2521, 3118, 1060, - 0, 3220, 0, - 0, 3329, 0, - 0, 3442, 0, - 0, 3560, 0, - 0, 3680, 0, - 3539, 2575, 3321, - 3539, 2575, 3321, - 3539, 2576, 3321, - 3539, 2576, 3321, - 3539, 2576, 3321, - 3539, 2577, 3321, - 3539, 2578, 3320, - 3538, 2579, 3320, - 3538, 2581, 3320, - 3537, 2582, 3319, - 3537, 2585, 3318, - 3536, 2589, 3317, - 3535, 2593, 3315, - 3533, 2599, 3313, - 3531, 2608, 3311, - 3528, 2618, 3307, - 3524, 2632, 3302, - 3518, 2650, 3295, - 3511, 2673, 3286, - 3500, 2702, 3273, - 3486, 2738, 3255, - 3467, 2782, 3231, - 3440, 2834, 3196, - 3400, 2897, 3144, - 3342, 2969, 3064, - 3249, 3050, 2929, - 3086, 3140, 2646, - 2695, 3237, 0, - 0, 3342, 0, - 0, 3452, 0, - 0, 3568, 0, - 0, 3687, 0, - 3676, 2662, 3438, - 3676, 2662, 3438, - 3676, 2663, 3438, - 3676, 2663, 3438, - 3676, 2663, 3438, - 3676, 2664, 3438, - 3676, 2664, 3438, - 3675, 2665, 3437, - 3675, 2667, 3437, - 3675, 2668, 3436, - 3674, 2670, 3436, - 3674, 2673, 3435, - 3673, 2677, 3434, - 3671, 2682, 3432, - 3670, 2689, 3430, - 3668, 2698, 3427, - 3665, 2710, 3423, - 3661, 2725, 3418, - 3655, 2744, 3411, - 3648, 2769, 3401, - 3638, 2800, 3388, - 3624, 2839, 3370, - 3605, 2886, 3344, - 3578, 2942, 3308, - 3539, 3007, 3253, - 3481, 3082, 3169, - 3390, 3167, 3024, - 3231, 3259, 2706, - 2856, 3359, 0, - 0, 3466, 0, - 0, 3578, 0, - 0, 3695, 0, - 3812, 2757, 3559, - 3812, 2757, 3559, - 3812, 2758, 3559, - 3812, 2758, 3558, - 3812, 2758, 3558, - 3811, 2759, 3558, - 3811, 2759, 3558, - 3811, 2760, 3558, - 3811, 2761, 3558, - 3811, 2762, 3557, - 3810, 2764, 3557, - 3810, 2766, 3556, - 3809, 2770, 3555, - 3808, 2774, 3554, - 3807, 2779, 3552, - 3805, 2787, 3550, - 3803, 2796, 3547, - 3800, 2809, 3543, - 3796, 2825, 3538, - 3791, 2846, 3531, - 3783, 2872, 3521, - 3773, 2905, 3507, - 3760, 2946, 3488, - 3741, 2996, 3462, - 3714, 3054, 3424, - 3675, 3122, 3368, - 3618, 3200, 3279, - 3529, 3287, 3126, - 3372, 3382, 2777, - 3009, 3484, 0, - 0, 3592, 0, - 0, 3706, 0, - 3946, 2860, 3682, - 3946, 2860, 3682, - 3946, 2860, 3682, - 3946, 2860, 3682, - 3946, 2860, 3682, - 3946, 2861, 3682, - 3946, 2861, 3681, - 3946, 2862, 3681, - 3946, 2863, 3681, - 3946, 2864, 3681, - 3945, 2865, 3680, - 3945, 2867, 3680, - 3944, 2869, 3679, - 3944, 2873, 3678, - 3943, 2877, 3677, - 3942, 2883, 3675, - 3940, 2891, 3673, - 3938, 2901, 3670, - 3935, 2914, 3666, - 3931, 2932, 3661, - 3926, 2954, 3653, - 3918, 2981, 3643, - 3908, 3016, 3629, - 3895, 3059, 3610, - 3876, 3110, 3583, - 3849, 3171, 3544, - 3811, 3242, 3486, - 3754, 3321, 3395, - 3666, 3410, 3235, - 3511, 3507, 2856, - 3156, 3610, 0, - 0, 3720, 0, - 4080, 2968, 3807, - 4080, 2968, 3807, - 4080, 2968, 3807, - 4080, 2969, 3807, - 4080, 2969, 3807, - 4080, 2969, 3807, - 4080, 2969, 3807, - 4080, 2970, 3807, - 4080, 2970, 3806, - 4080, 2971, 3806, - 4080, 2972, 3806, - 4079, 2974, 3806, - 4079, 2976, 3805, - 4078, 2979, 3804, - 4078, 2982, 3803, - 4077, 2987, 3802, - 4076, 2993, 3800, - 4074, 3001, 3798, - 4072, 3012, 3795, - 4069, 3026, 3791, - 4065, 3044, 3786, - 4060, 3067, 3778, - 4052, 3096, 3768, - 4042, 3132, 3754, - 4029, 3176, 3734, - 4010, 3229, 3706, - 3984, 3292, 3667, - 3946, 3364, 3608, - 3889, 3445, 3514, - 3801, 3535, 3348, - 3648, 3633, 2944, - 3299, 3738, 0, - 4095, 3082, 3934, - 4095, 3082, 3934, - 4095, 3082, 3934, - 4095, 3082, 3934, - 4095, 3082, 3934, - 4095, 3082, 3934, - 4095, 3083, 3934, - 4095, 3083, 3934, - 4095, 3084, 3934, - 4095, 3084, 3933, - 4095, 3085, 3933, - 4095, 3086, 3933, - 4095, 3088, 3932, - 4095, 3090, 3932, - 4095, 3093, 3931, - 4095, 3096, 3930, - 4095, 3101, 3929, - 4095, 3108, 3927, - 4095, 3116, 3925, - 4095, 3127, 3922, - 4095, 3142, 3918, - 4095, 3160, 3912, - 4095, 3184, 3905, - 4095, 3214, 3894, - 4095, 3251, 3880, - 4095, 3297, 3860, - 4095, 3351, 3832, - 4095, 3415, 3792, - 4080, 3488, 3732, - 4024, 3571, 3636, - 3936, 3662, 3466, - 3784, 3761, 3041, - 4095, 3200, 4062, - 4095, 3200, 4062, - 4095, 3200, 4062, - 4095, 3200, 4062, - 4095, 3200, 4062, - 4095, 3200, 4062, - 4095, 3200, 4062, - 4095, 3201, 4062, - 4095, 3201, 4062, - 4095, 3202, 4062, - 4095, 3202, 4062, - 4095, 3203, 4061, - 4095, 3204, 4061, - 4095, 3206, 4061, - 4095, 3208, 4060, - 4095, 3211, 4059, - 4095, 3215, 4058, - 4095, 3220, 4057, - 4095, 3226, 4055, - 4095, 3235, 4053, - 4095, 3247, 4050, - 4095, 3261, 4046, - 4095, 3280, 4040, - 4095, 3305, 4032, - 4095, 3335, 4022, - 4095, 3374, 4008, - 4095, 3420, 3988, - 4095, 3475, 3959, - 4095, 3540, 3918, - 4095, 3614, 3858, - 4095, 3698, 3761, - 4070, 3790, 3587, - 0, 2261, 2529, - 0, 2261, 2529, - 0, 2262, 2529, - 0, 2263, 2528, - 0, 2264, 2527, - 0, 2265, 2526, - 0, 2267, 2524, - 0, 2269, 2522, - 0, 2272, 2520, - 0, 2276, 2516, - 0, 2281, 2511, - 0, 2288, 2504, - 0, 2297, 2495, - 0, 2308, 2482, - 0, 2324, 2465, - 0, 2343, 2440, - 0, 2368, 2405, - 0, 2400, 2354, - 0, 2439, 2274, - 0, 2486, 2140, - 0, 2542, 1860, - 0, 2608, 0, - 0, 2684, 0, - 0, 2768, 0, - 0, 2861, 0, - 0, 2962, 0, - 0, 3069, 0, - 0, 3181, 0, - 0, 3298, 0, - 0, 3418, 0, - 0, 3541, 0, - 0, 3667, 0, - 0, 2261, 2530, - 0, 2262, 2530, - 0, 2262, 2529, - 0, 2263, 2529, - 0, 2264, 2528, - 0, 2265, 2527, - 0, 2267, 2525, - 0, 2269, 2523, - 0, 2272, 2520, - 0, 2276, 2517, - 0, 2281, 2512, - 0, 2288, 2505, - 0, 2297, 2495, - 0, 2309, 2483, - 0, 2324, 2465, - 0, 2343, 2441, - 0, 2368, 2406, - 0, 2400, 2354, - 0, 2439, 2275, - 0, 2486, 2141, - 0, 2543, 1863, - 0, 2608, 0, - 0, 2684, 0, - 0, 2769, 0, - 0, 2862, 0, - 0, 2962, 0, - 0, 3069, 0, - 0, 3181, 0, - 0, 3298, 0, - 0, 3418, 0, - 0, 3541, 0, - 0, 3667, 0, - 0, 2261, 2531, - 0, 2262, 2530, - 0, 2262, 2530, - 0, 2263, 2529, - 0, 2264, 2528, - 0, 2265, 2527, - 0, 2267, 2526, - 0, 2269, 2524, - 0, 2272, 2521, - 0, 2276, 2517, - 0, 2281, 2512, - 0, 2288, 2505, - 0, 2297, 2496, - 0, 2309, 2484, - 0, 2324, 2466, - 0, 2344, 2442, - 0, 2369, 2407, - 0, 2400, 2355, - 0, 2439, 2276, - 0, 2486, 2143, - 0, 2543, 1866, - 0, 2609, 0, - 0, 2684, 0, - 0, 2769, 0, - 0, 2862, 0, - 0, 2962, 0, - 0, 3069, 0, - 0, 3181, 0, - 0, 3298, 0, - 0, 3418, 0, - 0, 3541, 0, - 0, 3667, 0, - 0, 2262, 2532, - 0, 2262, 2531, - 0, 2263, 2531, - 0, 2263, 2530, - 0, 2264, 2529, - 0, 2265, 2528, - 0, 2267, 2527, - 0, 2269, 2525, - 0, 2272, 2522, - 0, 2276, 2518, - 0, 2281, 2513, - 0, 2288, 2506, - 0, 2297, 2497, - 0, 2309, 2485, - 0, 2324, 2467, - 0, 2344, 2443, - 0, 2369, 2408, - 0, 2400, 2357, - 0, 2439, 2278, - 0, 2486, 2145, - 0, 2543, 1870, - 0, 2609, 0, - 0, 2684, 0, - 0, 2769, 0, - 0, 2862, 0, - 0, 2962, 0, - 0, 3069, 0, - 0, 3181, 0, - 0, 3298, 0, - 0, 3418, 0, - 0, 3541, 0, - 0, 3667, 0, - 0, 2262, 2533, - 0, 2262, 2533, - 0, 2263, 2532, - 0, 2264, 2531, - 0, 2264, 2531, - 0, 2266, 2529, - 0, 2267, 2528, - 0, 2270, 2526, - 0, 2273, 2523, - 0, 2276, 2520, - 0, 2282, 2515, - 0, 2288, 2508, - 0, 2297, 2499, - 0, 2309, 2486, - 0, 2324, 2469, - 0, 2344, 2444, - 0, 2369, 2410, - 0, 2400, 2359, - 0, 2439, 2280, - 0, 2487, 2148, - 0, 2543, 1875, - 0, 2609, 0, - 0, 2684, 0, - 0, 2769, 0, - 0, 2862, 0, - 0, 2962, 0, - 0, 3069, 0, - 0, 3181, 0, - 0, 3298, 0, - 0, 3418, 0, - 0, 3541, 0, - 0, 3667, 0, - 0, 2262, 2535, - 0, 2263, 2534, - 0, 2263, 2534, - 0, 2264, 2533, - 0, 2265, 2532, - 0, 2266, 2531, - 0, 2268, 2530, - 0, 2270, 2528, - 0, 2273, 2525, - 0, 2277, 2521, - 0, 2282, 2516, - 0, 2289, 2510, - 0, 2298, 2500, - 0, 2310, 2488, - 0, 2325, 2471, - 0, 2344, 2446, - 0, 2369, 2412, - 0, 2401, 2361, - 0, 2440, 2283, - 0, 2487, 2152, - 0, 2543, 1882, - 0, 2609, 0, - 0, 2684, 0, - 0, 2769, 0, - 0, 2862, 0, - 0, 2962, 0, - 0, 3069, 0, - 0, 3181, 0, - 0, 3298, 0, - 0, 3418, 0, - 0, 3541, 0, - 0, 3667, 0, - 0, 2263, 2537, - 0, 2263, 2537, - 0, 2264, 2536, - 0, 2265, 2535, - 0, 2265, 2535, - 0, 2267, 2533, - 0, 2268, 2532, - 0, 2271, 2530, - 0, 2274, 2527, - 0, 2277, 2524, - 0, 2283, 2519, - 0, 2289, 2512, - 0, 2298, 2503, - 0, 2310, 2490, - 0, 2325, 2473, - 0, 2345, 2449, - 0, 2370, 2415, - 0, 2401, 2364, - 0, 2440, 2287, - 0, 2487, 2157, - 0, 2543, 1892, - 0, 2609, 0, - 0, 2685, 0, - 0, 2769, 0, - 0, 2862, 0, - 0, 2962, 0, - 0, 3069, 0, - 0, 3182, 0, - 0, 3298, 0, - 0, 3418, 0, - 0, 3542, 0, - 0, 3667, 0, - 0, 2264, 2540, - 0, 2264, 2539, - 0, 2265, 2539, - 0, 2265, 2538, - 0, 2266, 2538, - 0, 2267, 2536, - 0, 2269, 2535, - 0, 2271, 2533, - 0, 2274, 2530, - 0, 2278, 2527, - 0, 2283, 2522, - 0, 2290, 2515, - 0, 2299, 2506, - 0, 2311, 2494, - 0, 2326, 2477, - 0, 2346, 2453, - 0, 2370, 2419, - 0, 2402, 2369, - 0, 2440, 2292, - 0, 2488, 2164, - 0, 2544, 1904, - 0, 2610, 0, - 0, 2685, 0, - 0, 2769, 0, - 0, 2862, 0, - 0, 2963, 0, - 0, 3069, 0, - 0, 3182, 0, - 0, 3298, 0, - 0, 3419, 0, - 0, 3542, 0, - 0, 3667, 0, - 0, 2265, 2544, - 0, 2265, 2543, - 0, 2266, 2543, - 0, 2266, 2542, - 0, 2267, 2542, - 0, 2268, 2540, - 0, 2270, 2539, - 0, 2272, 2537, - 0, 2275, 2534, - 0, 2279, 2531, - 0, 2284, 2526, - 0, 2291, 2519, - 0, 2300, 2510, - 0, 2312, 2498, - 0, 2327, 2481, - 0, 2346, 2458, - 0, 2371, 2424, - 0, 2402, 2375, - 0, 2441, 2299, - 0, 2488, 2173, - 0, 2544, 1920, - 0, 2610, 0, - 0, 2685, 0, - 0, 2770, 0, - 0, 2862, 0, - 0, 2963, 0, - 0, 3070, 0, - 0, 3182, 0, - 0, 3298, 0, - 0, 3419, 0, - 0, 3542, 0, - 0, 3667, 0, - 0, 2266, 2549, - 0, 2266, 2549, - 0, 2267, 2548, - 0, 2268, 2548, - 0, 2269, 2547, - 0, 2270, 2546, - 0, 2271, 2544, - 0, 2274, 2542, - 0, 2277, 2540, - 0, 2280, 2536, - 0, 2286, 2531, - 0, 2292, 2525, - 0, 2301, 2516, - 0, 2313, 2504, - 0, 2328, 2487, - 0, 2348, 2464, - 0, 2372, 2431, - 0, 2403, 2382, - 0, 2442, 2308, - 0, 2489, 2185, - 0, 2545, 1940, - 0, 2611, 542, - 0, 2686, 0, - 0, 2770, 0, - 0, 2863, 0, - 0, 2963, 0, - 0, 3070, 0, - 0, 3182, 0, - 0, 3299, 0, - 0, 3419, 0, - 0, 3542, 0, - 0, 3667, 0, - 0, 2268, 2556, - 0, 2268, 2556, - 0, 2269, 2555, - 0, 2269, 2555, - 0, 2270, 2554, - 0, 2272, 2553, - 0, 2273, 2551, - 0, 2275, 2549, - 0, 2278, 2547, - 0, 2282, 2543, - 0, 2287, 2538, - 0, 2294, 2532, - 0, 2303, 2523, - 0, 2315, 2512, - 0, 2330, 2495, - 0, 2349, 2472, - 0, 2374, 2440, - 0, 2405, 2392, - 0, 2443, 2320, - 0, 2490, 2200, - 0, 2546, 1966, - 0, 2612, 914, - 0, 2687, 0, - 0, 2771, 0, - 0, 2863, 0, - 0, 2963, 0, - 0, 3070, 0, - 0, 3182, 0, - 0, 3299, 0, - 0, 3419, 0, - 0, 3542, 0, - 0, 3667, 0, - 0, 2270, 2565, - 0, 2271, 2565, - 0, 2271, 2564, - 0, 2272, 2564, - 0, 2273, 2563, - 0, 2274, 2562, - 0, 2276, 2560, - 0, 2278, 2559, - 0, 2281, 2556, - 0, 2285, 2553, - 0, 2290, 2548, - 0, 2296, 2542, - 0, 2305, 2533, - 0, 2317, 2522, - 0, 2332, 2505, - 0, 2351, 2483, - 0, 2376, 2451, - 0, 2407, 2405, - 0, 2445, 2335, - 0, 2492, 2220, - 0, 2547, 1998, - 0, 2613, 1168, - 0, 2688, 0, - 0, 2772, 0, - 0, 2864, 0, - 0, 2964, 0, - 0, 3071, 0, - 0, 3183, 0, - 0, 3299, 0, - 0, 3419, 0, - 0, 3542, 0, - 0, 3667, 0, - 0, 2273, 2577, - 0, 2274, 2577, - 0, 2274, 2576, - 0, 2275, 2576, - 0, 2276, 2575, - 0, 2277, 2574, - 0, 2279, 2572, - 0, 2281, 2571, - 0, 2284, 2568, - 0, 2288, 2565, - 0, 2293, 2560, - 0, 2299, 2554, - 0, 2308, 2546, - 0, 2320, 2535, - 0, 2335, 2519, - 0, 2354, 2497, - 0, 2378, 2467, - 0, 2409, 2422, - 0, 2447, 2354, - 0, 2494, 2245, - 0, 2549, 2038, - 0, 2614, 1374, - 0, 2689, 0, - 0, 2773, 0, - 0, 2865, 0, - 0, 2965, 0, - 0, 3071, 0, - 0, 3183, 0, - 0, 3299, 0, - 0, 3419, 0, - 0, 3542, 0, - 0, 3667, 0, - 0, 2278, 2592, - 0, 2278, 2592, - 0, 2279, 2592, - 0, 2279, 2591, - 0, 2280, 2590, - 0, 2281, 2589, - 0, 2283, 2588, - 0, 2285, 2586, - 0, 2288, 2584, - 0, 2292, 2581, - 0, 2297, 2576, - 0, 2303, 2570, - 0, 2312, 2562, - 0, 2323, 2551, - 0, 2338, 2536, - 0, 2357, 2516, - 0, 2382, 2486, - 0, 2412, 2443, - 0, 2450, 2379, - 0, 2496, 2276, - 0, 2551, 2087, - 0, 2616, 1554, - 0, 2690, 0, - 0, 2774, 0, - 0, 2866, 0, - 0, 2966, 0, - 0, 3072, 0, - 0, 3184, 0, - 0, 3300, 0, - 0, 3420, 0, - 0, 3542, 0, - 0, 3667, 0, - 0, 2283, 2612, - 0, 2284, 2612, - 0, 2284, 2611, - 0, 2285, 2611, - 0, 2286, 2610, - 0, 2287, 2609, - 0, 2289, 2608, - 0, 2291, 2606, - 0, 2293, 2604, - 0, 2297, 2601, - 0, 2302, 2597, - 0, 2309, 2591, - 0, 2317, 2584, - 0, 2329, 2573, - 0, 2343, 2559, - 0, 2362, 2539, - 0, 2386, 2511, - 0, 2416, 2471, - 0, 2454, 2410, - 0, 2500, 2315, - 0, 2555, 2145, - 0, 2619, 1719, - 0, 2693, 0, - 0, 2776, 0, - 0, 2868, 0, - 0, 2967, 0, - 0, 3073, 0, - 0, 3184, 0, - 0, 3300, 0, - 0, 3420, 0, - 0, 3543, 0, - 0, 3668, 0, - 746, 2291, 2637, - 722, 2291, 2637, - 688, 2292, 2637, - 637, 2292, 2636, - 559, 2293, 2636, - 428, 2294, 2635, - 158, 2296, 2633, - 0, 2298, 2632, - 0, 2301, 2630, - 0, 2304, 2627, - 0, 2309, 2623, - 0, 2316, 2618, - 0, 2324, 2610, - 0, 2335, 2601, - 0, 2350, 2587, - 0, 2368, 2568, - 0, 2392, 2542, - 0, 2422, 2505, - 0, 2459, 2449, - 0, 2504, 2362, - 0, 2559, 2212, - 0, 2622, 1874, - 0, 2696, 0, - 0, 2778, 0, - 0, 2870, 0, - 0, 2969, 0, - 0, 3074, 0, - 0, 3185, 0, - 0, 3301, 0, - 0, 3421, 0, - 0, 3543, 0, - 0, 3668, 0, - 1791, 2300, 2669, - 1789, 2301, 2669, - 1785, 2301, 2668, - 1781, 2302, 2668, - 1775, 2303, 2667, - 1767, 2304, 2667, - 1757, 2305, 2665, - 1742, 2307, 2664, - 1721, 2310, 2662, - 1692, 2314, 2659, - 1650, 2319, 2656, - 1586, 2325, 2651, - 1485, 2333, 2644, - 1300, 2344, 2635, - 793, 2358, 2622, - 0, 2376, 2605, - 0, 2400, 2581, - 0, 2429, 2547, - 0, 2466, 2496, - 0, 2510, 2419, - 0, 2564, 2289, - 0, 2627, 2023, - 0, 2700, 0, - 0, 2782, 0, - 0, 2872, 0, - 0, 2971, 0, - 0, 3076, 0, - 0, 3187, 0, - 0, 3302, 0, - 0, 3422, 0, - 0, 3544, 0, - 0, 3668, 0, - 2150, 2313, 2708, - 2149, 2313, 2708, - 2147, 2314, 2708, - 2145, 2314, 2707, - 2143, 2315, 2707, - 2139, 2316, 2706, - 2135, 2318, 2705, - 2128, 2320, 2704, - 2119, 2323, 2702, - 2108, 2326, 2699, - 2091, 2331, 2696, - 2068, 2337, 2691, - 2036, 2345, 2685, - 1988, 2356, 2677, - 1915, 2369, 2666, - 1795, 2387, 2650, - 1560, 2410, 2628, - 480, 2439, 2597, - 0, 2474, 2553, - 0, 2518, 2485, - 0, 2571, 2375, - 0, 2633, 2167, - 0, 2705, 1492, - 0, 2786, 0, - 0, 2876, 0, - 0, 2974, 0, - 0, 3078, 0, - 0, 3189, 0, - 0, 3304, 0, - 0, 3423, 0, - 0, 3545, 0, - 0, 3669, 0, - 2399, 2329, 2756, - 2398, 2330, 2756, - 2398, 2330, 2755, - 2396, 2331, 2755, - 2395, 2332, 2754, - 2393, 2333, 2754, - 2390, 2334, 2753, - 2387, 2336, 2752, - 2382, 2339, 2750, - 2375, 2342, 2748, - 2366, 2346, 2745, - 2354, 2352, 2741, - 2337, 2360, 2735, - 2313, 2370, 2728, - 2278, 2384, 2718, - 2228, 2401, 2704, - 2151, 2423, 2684, - 2023, 2451, 2657, - 1760, 2486, 2618, - 0, 2529, 2560, - 0, 2581, 2469, - 0, 2642, 2308, - 0, 2712, 1927, - 0, 2792, 0, - 0, 2881, 0, - 0, 2978, 0, - 0, 3081, 0, - 0, 3191, 0, - 0, 3306, 0, - 0, 3424, 0, - 0, 3546, 0, - 0, 3670, 0, - 2602, 2350, 2813, - 2602, 2351, 2812, - 2602, 2351, 2812, - 2601, 2352, 2812, - 2600, 2353, 2811, - 2599, 2354, 2811, - 2597, 2355, 2810, - 2595, 2357, 2809, - 2591, 2359, 2807, - 2587, 2362, 2805, - 2582, 2367, 2803, - 2574, 2372, 2799, - 2563, 2380, 2794, - 2549, 2390, 2788, - 2529, 2402, 2779, - 2501, 2419, 2767, - 2460, 2440, 2750, - 2400, 2467, 2727, - 2303, 2501, 2694, - 2131, 2543, 2645, - 1693, 2593, 2570, - 0, 2652, 2447, - 0, 2721, 2200, - 0, 2800, 714, - 0, 2887, 0, - 0, 2983, 0, - 0, 3085, 0, - 0, 3194, 0, - 0, 3308, 0, - 0, 3426, 0, - 0, 3547, 0, - 0, 3671, 0, - 2781, 2377, 2879, - 2781, 2377, 2879, - 2781, 2378, 2879, - 2780, 2378, 2878, - 2780, 2379, 2878, - 2779, 2380, 2877, - 2778, 2381, 2877, - 2776, 2383, 2876, - 2774, 2385, 2874, - 2771, 2388, 2873, - 2767, 2392, 2870, - 2762, 2398, 2867, - 2755, 2405, 2863, - 2746, 2414, 2858, - 2733, 2426, 2850, - 2715, 2442, 2840, - 2691, 2462, 2826, - 2655, 2488, 2806, - 2602, 2520, 2778, - 2521, 2560, 2738, - 2384, 2609, 2678, - 2092, 2666, 2584, - 0, 2733, 2415, - 0, 2810, 1999, - 0, 2895, 0, - 0, 2989, 0, - 0, 3091, 0, - 0, 3198, 0, - 0, 3311, 0, - 0, 3429, 0, - 0, 3549, 0, - 0, 3673, 0, - 2946, 2411, 2955, - 2945, 2411, 2955, - 2945, 2411, 2954, - 2945, 2412, 2954, - 2944, 2412, 2954, - 2944, 2413, 2953, - 2943, 2414, 2953, - 2942, 2416, 2952, - 2940, 2418, 2951, - 2939, 2421, 2950, - 2936, 2425, 2948, - 2932, 2430, 2945, - 2928, 2436, 2942, - 2921, 2445, 2937, - 2913, 2456, 2930, - 2901, 2471, 2922, - 2884, 2490, 2910, - 2861, 2514, 2894, - 2829, 2545, 2871, - 2781, 2583, 2838, - 2709, 2629, 2791, - 2589, 2684, 2719, - 2354, 2749, 2601, - 1291, 2823, 2369, - 0, 2906, 1378, - 0, 2998, 0, - 0, 3098, 0, - 0, 3204, 0, - 0, 3316, 0, - 0, 3432, 0, - 0, 3552, 0, - 0, 3675, 0, - 3100, 2452, 3040, - 3100, 2452, 3040, - 3100, 2452, 3039, - 3100, 2453, 3039, - 3099, 2453, 3039, - 3099, 2454, 3039, - 3098, 2455, 3038, - 3098, 2457, 3037, - 3097, 2459, 3037, - 3095, 2461, 3035, - 3093, 2465, 3034, - 3091, 2469, 3032, - 3088, 2475, 3029, - 3083, 2483, 3025, - 3077, 2494, 3020, - 3069, 2507, 3013, - 3058, 2525, 3003, - 3042, 2547, 2990, - 3020, 2576, 2971, - 2990, 2611, 2945, - 2945, 2655, 2909, - 2878, 2707, 2854, - 2769, 2769, 2769, - 2564, 2840, 2622, - 1912, 2921, 2300, - 0, 3010, 0, - 0, 3107, 0, - 0, 3212, 0, - 0, 3322, 0, - 0, 3437, 0, - 0, 3555, 0, - 0, 3677, 0, - 3249, 2501, 3133, - 3248, 2502, 3133, - 3248, 2502, 3133, - 3248, 2502, 3133, - 3248, 2503, 3132, - 3248, 2504, 3132, - 3247, 2505, 3132, - 3247, 2506, 3131, - 3246, 2508, 3130, - 3245, 2510, 3129, - 3244, 2513, 3128, - 3242, 2517, 3126, - 3239, 2523, 3124, - 3236, 2530, 3121, - 3232, 2539, 3117, - 3226, 2552, 3111, - 3218, 2568, 3103, - 3207, 2588, 3093, - 3192, 2614, 3078, - 3172, 2647, 3058, - 3142, 2687, 3029, - 3100, 2736, 2988, - 3036, 2794, 2926, - 2934, 2862, 2828, - 2746, 2939, 2650, - 2226, 3025, 2186, - 0, 3120, 0, - 0, 3221, 0, - 0, 3329, 0, - 0, 3443, 0, - 0, 3560, 0, - 0, 3681, 0, - 3392, 2560, 3234, - 3392, 2561, 3234, - 3392, 2561, 3234, - 3392, 2561, 3233, - 3392, 2562, 3233, - 3392, 2562, 3233, - 3391, 2563, 3233, - 3391, 2564, 3232, - 3391, 2566, 3232, - 3390, 2568, 3231, - 3389, 2571, 3230, - 3388, 2574, 3229, - 3386, 2579, 3227, - 3383, 2586, 3224, - 3380, 2594, 3221, - 3376, 2605, 3216, - 3370, 2619, 3210, - 3363, 2637, 3202, - 3352, 2661, 3190, - 3338, 2691, 3175, - 3317, 2727, 3153, - 3289, 2772, 3121, - 3248, 2826, 3076, - 3187, 2890, 3008, - 3089, 2962, 2896, - 2913, 3045, 2685, - 2459, 3135, 1969, - 0, 3234, 0, - 0, 3339, 0, - 0, 3450, 0, - 0, 3566, 0, - 0, 3685, 0, - 3533, 2629, 3341, - 3533, 2629, 3341, - 3533, 2629, 3341, - 3533, 2630, 3341, - 3533, 2630, 3341, - 3533, 2631, 3340, - 3532, 2631, 3340, - 3532, 2632, 3340, - 3532, 2634, 3339, - 3531, 2636, 3339, - 3530, 2638, 3338, - 3530, 2641, 3337, - 3528, 2645, 3335, - 3527, 2651, 3333, - 3524, 2658, 3331, - 3521, 2668, 3327, - 3517, 2680, 3322, - 3512, 2696, 3316, - 3504, 2717, 3307, - 3494, 2743, 3295, - 3479, 2776, 3278, - 3460, 2817, 3255, - 3432, 2866, 3221, - 3392, 2924, 3173, - 3332, 2992, 3098, - 3237, 3069, 2974, - 3069, 3156, 2727, - 2654, 3251, 1192, - 0, 3353, 0, - 0, 3461, 0, - 0, 3574, 0, - 0, 3692, 0, - 3672, 2707, 3453, - 3672, 2707, 3453, - 3671, 2707, 3453, - 3671, 2708, 3453, - 3671, 2708, 3453, - 3671, 2709, 3453, - 3671, 2709, 3453, - 3671, 2710, 3453, - 3671, 2711, 3452, - 3670, 2713, 3452, - 3670, 2715, 3451, - 3669, 2717, 3450, - 3668, 2721, 3449, - 3667, 2725, 3448, - 3665, 2732, 3446, - 3663, 2740, 3443, - 3660, 2750, 3439, - 3656, 2764, 3434, - 3650, 2782, 3427, - 3643, 2805, 3418, - 3633, 2834, 3405, - 3619, 2870, 3388, - 3599, 2914, 3363, - 3572, 2967, 3328, - 3532, 3029, 3276, - 3474, 3101, 3196, - 3382, 3182, 3061, - 3218, 3272, 2778, - 2827, 3370, 0, - 0, 3474, 0, - 0, 3585, 0, - 0, 3700, 0, - 3808, 2794, 3570, - 3808, 2794, 3570, - 3808, 2794, 3570, - 3808, 2795, 3570, - 3808, 2795, 3570, - 3808, 2795, 3570, - 3808, 2796, 3570, - 3808, 2796, 3570, - 3808, 2797, 3569, - 3807, 2799, 3569, - 3807, 2800, 3569, - 3806, 2803, 3568, - 3806, 2805, 3567, - 3805, 2809, 3566, - 3804, 2814, 3564, - 3802, 2821, 3562, - 3800, 2830, 3559, - 3797, 2842, 3555, - 3793, 2857, 3550, - 3787, 2876, 3543, - 3780, 2901, 3533, - 3770, 2932, 3520, - 3756, 2971, 3502, - 3737, 3018, 3476, - 3710, 3074, 3440, - 3671, 3139, 3385, - 3613, 3214, 3301, - 3522, 3299, 3156, - 3363, 3391, 2839, - 2989, 3492, 0, - 0, 3598, 0, - 0, 3710, 0, - 3944, 2889, 3691, - 3944, 2889, 3691, - 3944, 2890, 3691, - 3944, 2890, 3691, - 3944, 2890, 3691, - 3944, 2890, 3691, - 3944, 2891, 3690, - 3943, 2891, 3690, - 3943, 2892, 3690, - 3943, 2893, 3690, - 3943, 2894, 3689, - 3942, 2896, 3689, - 3942, 2898, 3688, - 3941, 2902, 3687, - 3940, 2906, 3686, - 3939, 2911, 3684, - 3937, 2919, 3682, - 3935, 2928, 3679, - 3932, 2941, 3675, - 3928, 2957, 3670, - 3923, 2978, 3663, - 3916, 3004, 3653, - 3906, 3037, 3639, - 3892, 3078, 3620, - 3873, 3128, 3594, - 3846, 3186, 3556, - 3808, 3255, 3500, - 3750, 3332, 3412, - 3661, 3419, 3258, - 3504, 3514, 2909, - 3141, 3616, 0, - 0, 3724, 0, - 4079, 2992, 3814, - 4079, 2992, 3814, - 4078, 2992, 3814, - 4078, 2992, 3814, - 4078, 2992, 3814, - 4078, 2992, 3814, - 4078, 2993, 3814, - 4078, 2993, 3813, - 4078, 2994, 3813, - 4078, 2995, 3813, - 4078, 2996, 3813, - 4077, 2997, 3812, - 4077, 2999, 3812, - 4077, 3002, 3811, - 4076, 3005, 3810, - 4075, 3009, 3809, - 4074, 3015, 3807, - 4072, 3023, 3805, - 4070, 3033, 3802, - 4067, 3047, 3798, - 4063, 3064, 3793, - 4058, 3086, 3785, - 4050, 3114, 3775, - 4040, 3148, 3761, - 4027, 3191, 3742, - 4008, 3242, 3715, - 3981, 3303, 3676, - 3943, 3374, 3618, - 3886, 3453, 3527, - 3798, 3542, 3367, - 3643, 3639, 2988, - 3288, 3742, 0, - 4095, 3100, 3939, - 4095, 3100, 3939, - 4095, 3100, 3939, - 4095, 3101, 3939, - 4095, 3101, 3939, - 4095, 3101, 3939, - 4095, 3101, 3939, - 4095, 3101, 3939, - 4095, 3102, 3939, - 4095, 3103, 3939, - 4095, 3103, 3938, - 4095, 3105, 3938, - 4095, 3106, 3938, - 4095, 3108, 3937, - 4095, 3111, 3936, - 4095, 3114, 3936, - 4095, 3119, 3934, - 4095, 3125, 3933, - 4095, 3133, 3930, - 4095, 3144, 3927, - 4095, 3158, 3923, - 4095, 3176, 3918, - 4095, 3199, 3910, - 4095, 3228, 3900, - 4095, 3264, 3886, - 4095, 3308, 3866, - 4095, 3361, 3839, - 4095, 3424, 3799, - 4078, 3496, 3740, - 4021, 3577, 3646, - 3933, 3667, 3480, - 3780, 3765, 3076, - 4095, 3214, 4066, - 4095, 3214, 4066, - 4095, 3214, 4066, - 4095, 3214, 4066, - 4095, 3214, 4066, - 4095, 3214, 4066, - 4095, 3215, 4066, - 4095, 3215, 4066, - 4095, 3215, 4066, - 4095, 3216, 4066, - 4095, 3216, 4066, - 4095, 3217, 4065, - 4095, 3218, 4065, - 4095, 3220, 4065, - 4095, 3222, 4064, - 4095, 3225, 4063, - 4095, 3229, 4062, - 4095, 3233, 4061, - 4095, 3240, 4059, - 4095, 3248, 4057, - 4095, 3259, 4054, - 4095, 3274, 4050, - 4095, 3292, 4044, - 4095, 3316, 4037, - 4095, 3346, 4026, - 4095, 3383, 4012, - 4095, 3429, 3992, - 4095, 3483, 3964, - 4095, 3547, 3924, - 4095, 3620, 3864, - 4095, 3703, 3768, - 4068, 3794, 3598, - 0, 2393, 2661, - 0, 2393, 2661, - 0, 2393, 2661, - 0, 2394, 2660, - 0, 2395, 2660, - 0, 2396, 2659, - 0, 2397, 2658, - 0, 2399, 2656, - 0, 2401, 2654, - 0, 2404, 2651, - 0, 2408, 2648, - 0, 2413, 2643, - 0, 2420, 2636, - 0, 2429, 2627, - 0, 2440, 2614, - 0, 2456, 2596, - 0, 2475, 2572, - 0, 2500, 2537, - 0, 2532, 2485, - 0, 2571, 2406, - 0, 2618, 2271, - 0, 2674, 1991, - 0, 2740, 0, - 0, 2816, 0, - 0, 2901, 0, - 0, 2994, 0, - 0, 3094, 0, - 0, 3201, 0, - 0, 3313, 0, - 0, 3430, 0, - 0, 3550, 0, - 0, 3673, 0, - 0, 2393, 2662, - 0, 2393, 2662, - 0, 2394, 2661, - 0, 2394, 2661, - 0, 2395, 2660, - 0, 2396, 2659, - 0, 2397, 2658, - 0, 2399, 2657, - 0, 2401, 2655, - 0, 2404, 2652, - 0, 2408, 2648, - 0, 2413, 2643, - 0, 2420, 2636, - 0, 2429, 2627, - 0, 2441, 2614, - 0, 2456, 2597, - 0, 2475, 2572, - 0, 2500, 2537, - 0, 2532, 2486, - 0, 2571, 2406, - 0, 2618, 2272, - 0, 2675, 1992, - 0, 2740, 0, - 0, 2816, 0, - 0, 2901, 0, - 0, 2994, 0, - 0, 3094, 0, - 0, 3201, 0, - 0, 3313, 0, - 0, 3430, 0, - 0, 3550, 0, - 0, 3673, 0, - 0, 2393, 2662, - 0, 2393, 2662, - 0, 2394, 2662, - 0, 2394, 2661, - 0, 2395, 2661, - 0, 2396, 2660, - 0, 2397, 2659, - 0, 2399, 2657, - 0, 2401, 2655, - 0, 2404, 2652, - 0, 2408, 2649, - 0, 2413, 2644, - 0, 2420, 2637, - 0, 2429, 2628, - 0, 2441, 2615, - 0, 2456, 2597, - 0, 2476, 2573, - 0, 2501, 2538, - 0, 2532, 2487, - 0, 2571, 2407, - 0, 2618, 2273, - 0, 2675, 1995, - 0, 2741, 0, - 0, 2816, 0, - 0, 2901, 0, - 0, 2994, 0, - 0, 3094, 0, - 0, 3201, 0, - 0, 3313, 0, - 0, 3430, 0, - 0, 3550, 0, - 0, 3673, 0, - 0, 2393, 2663, - 0, 2393, 2663, - 0, 2394, 2662, - 0, 2394, 2662, - 0, 2395, 2661, - 0, 2396, 2661, - 0, 2397, 2659, - 0, 2399, 2658, - 0, 2401, 2656, - 0, 2404, 2653, - 0, 2408, 2649, - 0, 2413, 2644, - 0, 2420, 2638, - 0, 2429, 2628, - 0, 2441, 2616, - 0, 2456, 2598, - 0, 2476, 2574, - 0, 2501, 2539, - 0, 2532, 2488, - 0, 2571, 2408, - 0, 2618, 2275, - 0, 2675, 1998, - 0, 2741, 0, - 0, 2816, 0, - 0, 2901, 0, - 0, 2994, 0, - 0, 3094, 0, - 0, 3201, 0, - 0, 3313, 0, - 0, 3430, 0, - 0, 3550, 0, - 0, 3674, 0, - 0, 2393, 2664, - 0, 2394, 2664, - 0, 2394, 2663, - 0, 2395, 2663, - 0, 2395, 2662, - 0, 2396, 2661, - 0, 2398, 2660, - 0, 2399, 2659, - 0, 2401, 2657, - 0, 2404, 2654, - 0, 2408, 2650, - 0, 2413, 2645, - 0, 2420, 2639, - 0, 2429, 2629, - 0, 2441, 2617, - 0, 2456, 2599, - 0, 2476, 2575, - 0, 2501, 2540, - 0, 2532, 2489, - 0, 2571, 2410, - 0, 2618, 2277, - 0, 2675, 2002, - 0, 2741, 0, - 0, 2816, 0, - 0, 2901, 0, - 0, 2994, 0, - 0, 3094, 0, - 0, 3201, 0, - 0, 3313, 0, - 0, 3430, 0, - 0, 3550, 0, - 0, 3674, 0, - 0, 2394, 2665, - 0, 2394, 2665, - 0, 2394, 2665, - 0, 2395, 2664, - 0, 2396, 2664, - 0, 2397, 2663, - 0, 2398, 2662, - 0, 2399, 2660, - 0, 2402, 2658, - 0, 2405, 2655, - 0, 2409, 2652, - 0, 2414, 2647, - 0, 2421, 2640, - 0, 2430, 2631, - 0, 2441, 2618, - 0, 2457, 2601, - 0, 2476, 2576, - 0, 2501, 2542, - 0, 2533, 2491, - 0, 2571, 2412, - 0, 2619, 2280, - 0, 2675, 2007, - 0, 2741, 0, - 0, 2816, 0, - 0, 2901, 0, - 0, 2994, 0, - 0, 3094, 0, - 0, 3201, 0, - 0, 3314, 0, - 0, 3430, 0, - 0, 3551, 0, - 0, 3674, 0, - 0, 2394, 2667, - 0, 2394, 2667, - 0, 2395, 2666, - 0, 2395, 2666, - 0, 2396, 2665, - 0, 2397, 2664, - 0, 2398, 2663, - 0, 2400, 2662, - 0, 2402, 2660, - 0, 2405, 2657, - 0, 2409, 2653, - 0, 2414, 2648, - 0, 2421, 2642, - 0, 2430, 2633, - 0, 2442, 2620, - 0, 2457, 2603, - 0, 2477, 2579, - 0, 2501, 2544, - 0, 2533, 2493, - 0, 2572, 2415, - 0, 2619, 2284, - 0, 2675, 2014, - 0, 2741, 0, - 0, 2816, 0, - 0, 2901, 0, - 0, 2994, 0, - 0, 3094, 0, - 0, 3201, 0, - 0, 3314, 0, - 0, 3430, 0, - 0, 3551, 0, - 0, 3674, 0, - 0, 2395, 2669, - 0, 2395, 2669, - 0, 2395, 2669, - 0, 2396, 2668, - 0, 2397, 2668, - 0, 2398, 2667, - 0, 2399, 2666, - 0, 2400, 2664, - 0, 2403, 2662, - 0, 2406, 2659, - 0, 2410, 2656, - 0, 2415, 2651, - 0, 2422, 2644, - 0, 2430, 2635, - 0, 2442, 2623, - 0, 2457, 2605, - 0, 2477, 2581, - 0, 2502, 2547, - 0, 2533, 2497, - 0, 2572, 2419, - 0, 2619, 2289, - 0, 2676, 2024, - 0, 2741, 0, - 0, 2817, 0, - 0, 2901, 0, - 0, 2994, 0, - 0, 3095, 0, - 0, 3201, 0, - 0, 3314, 0, - 0, 3430, 0, - 0, 3551, 0, - 0, 3674, 0, - 0, 2395, 2672, - 0, 2396, 2672, - 0, 2396, 2672, - 0, 2397, 2671, - 0, 2397, 2670, - 0, 2398, 2670, - 0, 2400, 2669, - 0, 2401, 2667, - 0, 2403, 2665, - 0, 2406, 2662, - 0, 2410, 2659, - 0, 2415, 2654, - 0, 2422, 2647, - 0, 2431, 2638, - 0, 2443, 2626, - 0, 2458, 2609, - 0, 2478, 2585, - 0, 2503, 2551, - 0, 2534, 2501, - 0, 2573, 2424, - 0, 2620, 2296, - 0, 2676, 2036, - 0, 2742, 0, - 0, 2817, 0, - 0, 2901, 0, - 0, 2994, 0, - 0, 3095, 0, - 0, 3202, 0, - 0, 3314, 0, - 0, 3430, 0, - 0, 3551, 0, - 0, 3674, 0, - 0, 2397, 2676, - 0, 2397, 2676, - 0, 2397, 2676, - 0, 2398, 2675, - 0, 2398, 2674, - 0, 2399, 2674, - 0, 2401, 2673, - 0, 2402, 2671, - 0, 2404, 2669, - 0, 2407, 2666, - 0, 2411, 2663, - 0, 2416, 2658, - 0, 2423, 2651, - 0, 2432, 2642, - 0, 2444, 2630, - 0, 2459, 2613, - 0, 2478, 2590, - 0, 2503, 2556, - 0, 2535, 2507, - 0, 2573, 2431, - 0, 2620, 2305, - 0, 2677, 2052, - 0, 2742, 0, - 0, 2817, 0, - 0, 2902, 0, - 0, 2995, 0, - 0, 3095, 0, - 0, 3202, 0, - 0, 3314, 0, - 0, 3431, 0, - 0, 3551, 0, - 0, 3674, 0, - 0, 2398, 2681, - 0, 2398, 2681, - 0, 2399, 2681, - 0, 2399, 2680, - 0, 2400, 2680, - 0, 2401, 2679, - 0, 2402, 2678, - 0, 2404, 2676, - 0, 2406, 2674, - 0, 2409, 2672, - 0, 2413, 2668, - 0, 2418, 2663, - 0, 2424, 2657, - 0, 2433, 2648, - 0, 2445, 2636, - 0, 2460, 2619, - 0, 2480, 2596, - 0, 2504, 2563, - 0, 2536, 2514, - 0, 2574, 2440, - 0, 2621, 2317, - 0, 2677, 2072, - 0, 2743, 674, - 0, 2818, 0, - 0, 2902, 0, - 0, 2995, 0, - 0, 3095, 0, - 0, 3202, 0, - 0, 3314, 0, - 0, 3431, 0, - 0, 3551, 0, - 0, 3674, 0, - 0, 2400, 2688, - 0, 2400, 2688, - 0, 2400, 2688, - 0, 2401, 2687, - 0, 2402, 2687, - 0, 2402, 2686, - 0, 2404, 2685, - 0, 2405, 2683, - 0, 2408, 2681, - 0, 2410, 2679, - 0, 2414, 2675, - 0, 2419, 2671, - 0, 2426, 2664, - 0, 2435, 2656, - 0, 2447, 2644, - 0, 2462, 2627, - 0, 2481, 2604, - 0, 2506, 2572, - 0, 2537, 2524, - 0, 2575, 2452, - 0, 2622, 2332, - 0, 2678, 2098, - 0, 2744, 1046, - 0, 2819, 0, - 0, 2903, 0, - 0, 2995, 0, - 0, 3096, 0, - 0, 3202, 0, - 0, 3314, 0, - 0, 3431, 0, - 0, 3551, 0, - 0, 3674, 0, - 0, 2402, 2697, - 0, 2402, 2697, - 0, 2403, 2697, - 0, 2403, 2696, - 0, 2404, 2696, - 0, 2405, 2695, - 0, 2406, 2694, - 0, 2408, 2693, - 0, 2410, 2691, - 0, 2413, 2688, - 0, 2417, 2685, - 0, 2422, 2680, - 0, 2428, 2674, - 0, 2437, 2665, - 0, 2449, 2654, - 0, 2464, 2638, - 0, 2483, 2615, - 0, 2508, 2583, - 0, 2539, 2537, - 0, 2577, 2467, - 0, 2624, 2352, - 0, 2680, 2130, - 0, 2745, 1300, - 0, 2820, 0, - 0, 2904, 0, - 0, 2996, 0, - 0, 3096, 0, - 0, 3203, 0, - 0, 3315, 0, - 0, 3431, 0, - 0, 3551, 0, - 0, 3674, 0, - 0, 2405, 2709, - 0, 2406, 2709, - 0, 2406, 2709, - 0, 2406, 2708, - 0, 2407, 2708, - 0, 2408, 2707, - 0, 2409, 2706, - 0, 2411, 2705, - 0, 2413, 2703, - 0, 2416, 2700, - 0, 2420, 2697, - 0, 2425, 2692, - 0, 2431, 2686, - 0, 2440, 2678, - 0, 2452, 2667, - 0, 2467, 2651, - 0, 2486, 2629, - 0, 2510, 2599, - 0, 2541, 2554, - 0, 2579, 2486, - 0, 2626, 2377, - 0, 2681, 2170, - 0, 2746, 1506, - 0, 2821, 0, - 0, 2905, 0, - 0, 2997, 0, - 0, 3097, 0, - 0, 3203, 0, - 0, 3315, 0, - 0, 3431, 0, - 0, 3551, 0, - 0, 3674, 0, - 0, 2410, 2725, - 0, 2410, 2724, - 0, 2410, 2724, - 0, 2411, 2724, - 0, 2411, 2723, - 0, 2412, 2722, - 0, 2413, 2721, - 0, 2415, 2720, - 0, 2417, 2718, - 0, 2420, 2716, - 0, 2424, 2713, - 0, 2429, 2708, - 0, 2435, 2702, - 0, 2444, 2694, - 0, 2456, 2684, - 0, 2470, 2669, - 0, 2489, 2648, - 0, 2514, 2618, - 0, 2544, 2575, - 0, 2582, 2511, - 0, 2628, 2408, - 0, 2684, 2219, - 0, 2748, 1686, - 0, 2823, 0, - 0, 2906, 0, - 0, 2998, 0, - 0, 3098, 0, - 0, 3204, 0, - 0, 3316, 0, - 0, 3432, 0, - 0, 3552, 0, - 0, 3675, 0, - 0, 2415, 2744, - 0, 2415, 2744, - 0, 2416, 2744, - 0, 2416, 2744, - 0, 2417, 2743, - 0, 2418, 2742, - 0, 2419, 2741, - 0, 2421, 2740, - 0, 2423, 2738, - 0, 2426, 2736, - 0, 2429, 2733, - 0, 2434, 2729, - 0, 2441, 2723, - 0, 2449, 2716, - 0, 2461, 2705, - 0, 2475, 2691, - 0, 2494, 2671, - 0, 2518, 2643, - 0, 2548, 2603, - 0, 2586, 2543, - 0, 2632, 2447, - 0, 2687, 2277, - 0, 2751, 1851, - 0, 2825, 0, - 0, 2908, 0, - 0, 3000, 0, - 0, 3099, 0, - 0, 3205, 0, - 0, 3316, 0, - 0, 3432, 0, - 0, 3552, 0, - 0, 3675, 0, - 896, 2423, 2770, - 879, 2423, 2769, - 854, 2423, 2769, - 820, 2424, 2769, - 769, 2424, 2768, - 691, 2425, 2768, - 560, 2426, 2767, - 290, 2428, 2766, - 0, 2430, 2764, - 0, 2433, 2762, - 0, 2436, 2759, - 0, 2441, 2755, - 0, 2448, 2750, - 0, 2456, 2742, - 0, 2467, 2733, - 0, 2482, 2719, - 0, 2500, 2701, - 0, 2524, 2674, - 0, 2554, 2637, - 0, 2591, 2581, - 0, 2636, 2494, - 0, 2691, 2344, - 0, 2755, 2007, - 0, 2828, 0, - 0, 2910, 0, - 0, 3002, 0, - 0, 3101, 0, - 0, 3206, 0, - 0, 3317, 0, - 0, 3433, 0, - 0, 3553, 0, - 0, 3675, 0, - 1925, 2432, 2801, - 1923, 2432, 2801, - 1921, 2433, 2801, - 1917, 2433, 2801, - 1913, 2434, 2800, - 1907, 2435, 2799, - 1899, 2436, 2799, - 1889, 2438, 2798, - 1874, 2440, 2796, - 1853, 2442, 2794, - 1824, 2446, 2791, - 1782, 2451, 2788, - 1718, 2457, 2783, - 1617, 2465, 2776, - 1432, 2476, 2767, - 925, 2490, 2754, - 0, 2508, 2737, - 0, 2532, 2713, - 0, 2561, 2679, - 0, 2598, 2628, - 0, 2642, 2551, - 0, 2696, 2421, - 0, 2759, 2155, - 0, 2832, 0, - 0, 2914, 0, - 0, 3004, 0, - 0, 3103, 0, - 0, 3208, 0, - 0, 3319, 0, - 0, 3434, 0, - 0, 3554, 0, - 0, 3676, 0, - 2283, 2445, 2841, - 2282, 2445, 2840, - 2281, 2445, 2840, - 2279, 2446, 2840, - 2278, 2447, 2839, - 2275, 2447, 2839, - 2271, 2449, 2838, - 2267, 2450, 2837, - 2260, 2452, 2836, - 2252, 2455, 2834, - 2240, 2458, 2831, - 2223, 2463, 2828, - 2200, 2469, 2823, - 2168, 2477, 2817, - 2120, 2488, 2809, - 2047, 2501, 2798, - 1927, 2519, 2782, - 1692, 2542, 2760, - 612, 2571, 2729, - 0, 2607, 2685, - 0, 2650, 2617, - 0, 2703, 2507, - 0, 2765, 2299, - 0, 2837, 1624, - 0, 2918, 0, - 0, 3008, 0, - 0, 3106, 0, - 0, 3210, 0, - 0, 3321, 0, - 0, 3436, 0, - 0, 3555, 0, - 0, 3677, 0, - 2532, 2461, 2888, - 2531, 2462, 2888, - 2531, 2462, 2888, - 2530, 2462, 2887, - 2529, 2463, 2887, - 2527, 2464, 2887, - 2525, 2465, 2886, - 2522, 2466, 2885, - 2519, 2468, 2884, - 2514, 2471, 2882, - 2507, 2474, 2880, - 2498, 2479, 2877, - 2486, 2484, 2873, - 2469, 2492, 2867, - 2445, 2503, 2860, - 2411, 2516, 2850, - 2360, 2533, 2836, - 2283, 2555, 2817, - 2155, 2583, 2789, - 1893, 2618, 2750, - 0, 2661, 2692, - 0, 2713, 2601, - 0, 2774, 2440, - 0, 2844, 2059, - 0, 2924, 0, - 0, 3013, 0, - 0, 3110, 0, - 0, 3213, 0, - 0, 3323, 0, - 0, 3438, 0, - 0, 3556, 0, - 0, 3678, 0, - 2735, 2482, 2945, - 2735, 2483, 2945, - 2734, 2483, 2945, - 2734, 2483, 2944, - 2733, 2484, 2944, - 2732, 2485, 2944, - 2731, 2486, 2943, - 2729, 2487, 2942, - 2727, 2489, 2941, - 2724, 2491, 2940, - 2719, 2495, 2938, - 2714, 2499, 2935, - 2706, 2504, 2931, - 2696, 2512, 2927, - 2681, 2522, 2920, - 2661, 2535, 2911, - 2633, 2551, 2899, - 2592, 2572, 2882, - 2532, 2599, 2859, - 2435, 2633, 2826, - 2263, 2675, 2777, - 1825, 2725, 2702, - 0, 2784, 2579, - 0, 2853, 2332, - 0, 2932, 847, - 0, 3019, 0, - 0, 3115, 0, - 0, 3217, 0, - 0, 3326, 0, - 0, 3440, 0, - 0, 3558, 0, - 0, 3679, 0, - 2914, 2509, 3011, - 2913, 2509, 3011, - 2913, 2510, 3011, - 2913, 2510, 3011, - 2912, 2510, 3010, - 2912, 2511, 3010, - 2911, 2512, 3009, - 2910, 2513, 3009, - 2908, 2515, 3008, - 2906, 2517, 3007, - 2903, 2521, 3005, - 2900, 2525, 3003, - 2894, 2530, 3000, - 2888, 2537, 2995, - 2878, 2546, 2990, - 2865, 2558, 2982, - 2848, 2574, 2972, - 2823, 2594, 2958, - 2787, 2620, 2938, - 2735, 2652, 2910, - 2653, 2692, 2870, - 2516, 2741, 2810, - 2224, 2798, 2716, - 0, 2865, 2547, - 0, 2942, 2131, - 0, 3028, 0, - 0, 3122, 0, - 0, 3223, 0, - 0, 3331, 0, - 0, 3443, 0, - 0, 3561, 0, - 0, 3681, 0, - 3078, 2542, 3087, - 3078, 2543, 3087, - 3077, 2543, 3087, - 3077, 2543, 3087, - 3077, 2544, 3086, - 3076, 2544, 3086, - 3076, 2545, 3086, - 3075, 2547, 3085, - 3074, 2548, 3084, - 3073, 2550, 3083, - 3071, 2553, 3082, - 3068, 2557, 3080, - 3064, 2562, 3077, - 3060, 2569, 3074, - 3053, 2577, 3069, - 3045, 2589, 3063, - 3033, 2603, 3054, - 3016, 2622, 3042, - 2993, 2647, 3026, - 2961, 2677, 3003, - 2913, 2715, 2971, - 2841, 2761, 2923, - 2721, 2816, 2851, - 2486, 2881, 2733, - 1423, 2955, 2501, - 0, 3039, 1510, - 0, 3130, 0, - 0, 3230, 0, - 0, 3336, 0, - 0, 3448, 0, - 0, 3564, 0, - 0, 3684, 0, - 3232, 2584, 3172, - 3232, 2584, 3172, - 3232, 2584, 3172, - 3232, 2584, 3172, - 3232, 2585, 3171, - 3232, 2585, 3171, - 3231, 2586, 3171, - 3231, 2587, 3170, - 3230, 2589, 3170, - 3229, 2591, 3169, - 3227, 2593, 3167, - 3226, 2597, 3166, - 3223, 2601, 3164, - 3220, 2607, 3161, - 3215, 2615, 3157, - 3209, 2626, 3152, - 3201, 2639, 3145, - 3190, 2657, 3135, - 3174, 2680, 3122, - 3152, 2708, 3103, - 3122, 2743, 3078, - 3077, 2787, 3041, - 3010, 2839, 2986, - 2901, 2901, 2901, - 2696, 2972, 2754, - 2044, 3053, 2432, - 0, 3142, 0, - 0, 3239, 0, - 0, 3344, 0, - 0, 3454, 0, - 0, 3569, 0, - 0, 3687, 0, - 3381, 2633, 3265, - 3381, 2634, 3265, - 3381, 2634, 3265, - 3380, 2634, 3265, - 3380, 2634, 3265, - 3380, 2635, 3265, - 3380, 2636, 3264, - 3379, 2637, 3264, - 3379, 2638, 3263, - 3378, 2640, 3263, - 3377, 2642, 3262, - 3376, 2645, 3260, - 3374, 2649, 3259, - 3372, 2655, 3256, - 3368, 2662, 3253, - 3364, 2671, 3249, - 3358, 2684, 3243, - 3350, 2700, 3235, - 3339, 2720, 3225, - 3324, 2746, 3210, - 3304, 2779, 3190, - 3274, 2819, 3161, - 3232, 2868, 3120, - 3168, 2926, 3058, - 3066, 2994, 2960, - 2879, 3071, 2782, - 2358, 3157, 2318, - 0, 3252, 0, - 0, 3353, 0, - 0, 3461, 0, - 0, 3575, 0, - 0, 3692, 0, - 3525, 2692, 3366, - 3525, 2693, 3366, - 3524, 2693, 3366, - 3524, 2693, 3366, - 3524, 2693, 3366, - 3524, 2694, 3365, - 3524, 2695, 3365, - 3524, 2695, 3365, - 3523, 2697, 3364, - 3523, 2698, 3364, - 3522, 2700, 3363, - 3521, 2703, 3362, - 3520, 2707, 3361, - 3518, 2711, 3359, - 3516, 2718, 3356, - 3512, 2726, 3353, - 3508, 2737, 3348, - 3503, 2751, 3342, - 3495, 2770, 3334, - 3484, 2793, 3322, - 3470, 2823, 3307, - 3450, 2859, 3285, - 3421, 2904, 3254, - 3380, 2958, 3208, - 3319, 3022, 3140, - 3221, 3095, 3028, - 3045, 3177, 2817, - 2591, 3268, 2101, - 0, 3366, 0, - 0, 3471, 0, - 0, 3582, 0, - 0, 3698, 0, - 3665, 2761, 3473, - 3665, 2761, 3473, - 3665, 2761, 3473, - 3665, 2762, 3473, - 3665, 2762, 3473, - 3665, 2762, 3473, - 3665, 2763, 3472, - 3665, 2764, 3472, - 3664, 2765, 3472, - 3664, 2766, 3471, - 3663, 2768, 3471, - 3663, 2770, 3470, - 3662, 2773, 3469, - 3660, 2777, 3467, - 3659, 2783, 3465, - 3656, 2790, 3463, - 3653, 2800, 3459, - 3649, 2812, 3454, - 3644, 2828, 3448, - 3636, 2849, 3439, - 3626, 2875, 3427, - 3611, 2908, 3410, - 3592, 2949, 3387, - 3564, 2998, 3353, - 3524, 3056, 3305, - 3464, 3124, 3230, - 3370, 3202, 3106, - 3201, 3288, 2859, - 2786, 3383, 1324, - 0, 3485, 0, - 0, 3593, 0, - 0, 3706, 0, - 3804, 2839, 3586, - 3804, 2839, 3586, - 3804, 2839, 3586, - 3804, 2840, 3585, - 3803, 2840, 3585, - 3803, 2840, 3585, - 3803, 2841, 3585, - 3803, 2841, 3585, - 3803, 2842, 3585, - 3803, 2843, 3584, - 3802, 2845, 3584, - 3802, 2847, 3583, - 3801, 2849, 3582, - 3800, 2853, 3581, - 3799, 2858, 3580, - 3797, 2864, 3578, - 3795, 2872, 3575, - 3792, 2882, 3571, - 3788, 2896, 3566, - 3782, 2914, 3559, - 3775, 2937, 3550, - 3765, 2966, 3537, - 3751, 3002, 3520, - 3731, 3046, 3495, - 3704, 3099, 3460, - 3665, 3161, 3408, - 3606, 3233, 3328, - 3514, 3314, 3193, - 3351, 3404, 2910, - 2960, 3502, 0, - 0, 3606, 0, - 0, 3717, 0, - 3940, 2926, 3703, - 3940, 2926, 3702, - 3940, 2926, 3702, - 3940, 2926, 3702, - 3940, 2927, 3702, - 3940, 2927, 3702, - 3940, 2927, 3702, - 3940, 2928, 3702, - 3940, 2929, 3702, - 3940, 2930, 3702, - 3939, 2931, 3701, - 3939, 2932, 3701, - 3938, 2935, 3700, - 3938, 2938, 3699, - 3937, 2941, 3698, - 3936, 2947, 3696, - 3934, 2953, 3694, - 3932, 2962, 3691, - 3929, 2974, 3687, - 3925, 2989, 3682, - 3919, 3008, 3675, - 3912, 3033, 3666, - 3902, 3064, 3652, - 3888, 3103, 3634, - 3869, 3150, 3608, - 3842, 3206, 3572, - 3803, 3271, 3517, - 3745, 3347, 3433, - 3654, 3431, 3288, - 3495, 3523, 2971, - 3121, 3624, 0, - 0, 3730, 0, - 4076, 3021, 3823, - 4076, 3021, 3823, - 4076, 3021, 3823, - 4076, 3022, 3823, - 4076, 3022, 3823, - 4076, 3022, 3823, - 4076, 3022, 3823, - 4076, 3023, 3822, - 4076, 3023, 3822, - 4075, 3024, 3822, - 4075, 3025, 3822, - 4075, 3026, 3821, - 4075, 3028, 3821, - 4074, 3031, 3820, - 4073, 3034, 3819, - 4072, 3038, 3818, - 4071, 3043, 3817, - 4070, 3051, 3814, - 4067, 3060, 3811, - 4064, 3073, 3807, - 4060, 3089, 3802, - 4055, 3110, 3795, - 4048, 3136, 3785, - 4038, 3170, 3771, - 4024, 3210, 3753, - 4005, 3260, 3726, - 3978, 3318, 3688, - 3940, 3387, 3632, - 3883, 3464, 3544, - 3793, 3551, 3390, - 3636, 3646, 3041, - 3273, 3748, 0, - 4095, 3124, 3946, - 4095, 3124, 3946, - 4095, 3124, 3946, - 4095, 3124, 3946, - 4095, 3124, 3946, - 4095, 3124, 3946, - 4095, 3125, 3946, - 4095, 3125, 3946, - 4095, 3125, 3946, - 4095, 3126, 3945, - 4095, 3127, 3945, - 4095, 3128, 3945, - 4095, 3129, 3945, - 4095, 3131, 3944, - 4095, 3134, 3943, - 4095, 3137, 3942, - 4095, 3142, 3941, - 4095, 3147, 3940, - 4095, 3155, 3937, - 4095, 3165, 3934, - 4095, 3179, 3930, - 4095, 3196, 3925, - 4095, 3218, 3917, - 4095, 3246, 3907, - 4095, 3280, 3893, - 4095, 3323, 3874, - 4095, 3375, 3847, - 4095, 3435, 3808, - 4075, 3506, 3750, - 4019, 3586, 3659, - 3930, 3674, 3499, - 3775, 3771, 3120, - 4095, 3232, 4071, - 4095, 3232, 4071, - 4095, 3232, 4071, - 4095, 3232, 4071, - 4095, 3233, 4071, - 4095, 3233, 4071, - 4095, 3233, 4071, - 4095, 3233, 4071, - 4095, 3234, 4071, - 4095, 3234, 4071, - 4095, 3235, 4071, - 4095, 3236, 4070, - 4095, 3237, 4070, - 4095, 3238, 4070, - 4095, 3240, 4069, - 4095, 3243, 4069, - 4095, 3246, 4068, - 4095, 3251, 4066, - 4095, 3257, 4065, - 4095, 3265, 4062, - 4095, 3276, 4059, - 4095, 3290, 4055, - 4095, 3308, 4050, - 4095, 3331, 4042, - 4095, 3360, 4032, - 4095, 3396, 4018, - 4095, 3440, 3998, - 4095, 3493, 3971, - 4095, 3556, 3931, - 4095, 3628, 3872, - 4095, 3709, 3778, - 4065, 3799, 3612, - 0, 2525, 2793, - 0, 2525, 2793, - 0, 2525, 2793, - 0, 2525, 2793, - 0, 2526, 2792, - 0, 2527, 2792, - 0, 2528, 2791, - 0, 2529, 2790, - 0, 2531, 2788, - 0, 2533, 2786, - 0, 2536, 2783, - 0, 2540, 2779, - 0, 2545, 2774, - 0, 2552, 2768, - 0, 2561, 2758, - 0, 2572, 2746, - 0, 2588, 2728, - 0, 2607, 2704, - 0, 2632, 2668, - 0, 2664, 2617, - 0, 2703, 2537, - 0, 2750, 2402, - 0, 2807, 2121, - 0, 2873, 0, - 0, 2948, 0, - 0, 3033, 0, - 0, 3126, 0, - 0, 3226, 0, - 0, 3333, 0, - 0, 3445, 0, - 0, 3562, 0, - 0, 3683, 0, - 0, 2525, 2794, - 0, 2525, 2794, - 0, 2525, 2793, - 0, 2526, 2793, - 0, 2526, 2792, - 0, 2527, 2792, - 0, 2528, 2791, - 0, 2529, 2790, - 0, 2531, 2788, - 0, 2533, 2786, - 0, 2536, 2783, - 0, 2540, 2780, - 0, 2545, 2775, - 0, 2552, 2768, - 0, 2561, 2759, - 0, 2573, 2746, - 0, 2588, 2728, - 0, 2607, 2704, - 0, 2632, 2669, - 0, 2664, 2617, - 0, 2703, 2538, - 0, 2750, 2403, - 0, 2807, 2123, - 0, 2873, 0, - 0, 2948, 0, - 0, 3033, 0, - 0, 3126, 0, - 0, 3226, 0, - 0, 3333, 0, - 0, 3446, 0, - 0, 3562, 0, - 0, 3683, 0, - 0, 2525, 2794, - 0, 2525, 2794, - 0, 2525, 2794, - 0, 2526, 2793, - 0, 2526, 2793, - 0, 2527, 2792, - 0, 2528, 2791, - 0, 2529, 2790, - 0, 2531, 2789, - 0, 2533, 2787, - 0, 2536, 2784, - 0, 2540, 2780, - 0, 2545, 2775, - 0, 2552, 2768, - 0, 2561, 2759, - 0, 2573, 2746, - 0, 2588, 2729, - 0, 2608, 2704, - 0, 2633, 2669, - 0, 2664, 2618, - 0, 2703, 2538, - 0, 2750, 2404, - 0, 2807, 2124, - 0, 2873, 0, - 0, 2948, 0, - 0, 3033, 0, - 0, 3126, 0, - 0, 3226, 0, - 0, 3333, 0, - 0, 3446, 0, - 0, 3562, 0, - 0, 3683, 0, - 0, 2525, 2795, - 0, 2525, 2794, - 0, 2525, 2794, - 0, 2526, 2794, - 0, 2526, 2793, - 0, 2527, 2793, - 0, 2528, 2792, - 0, 2529, 2791, - 0, 2531, 2789, - 0, 2533, 2787, - 0, 2536, 2784, - 0, 2540, 2781, - 0, 2545, 2776, - 0, 2552, 2769, - 0, 2561, 2760, - 0, 2573, 2747, - 0, 2588, 2730, - 0, 2608, 2705, - 0, 2633, 2670, - 0, 2664, 2619, - 0, 2703, 2539, - 0, 2750, 2405, - 0, 2807, 2127, - 0, 2873, 0, - 0, 2948, 0, - 0, 3033, 0, - 0, 3126, 0, - 0, 3226, 0, - 0, 3333, 0, - 0, 3446, 0, - 0, 3562, 0, - 0, 3683, 0, - 0, 2525, 2795, - 0, 2525, 2795, - 0, 2526, 2795, - 0, 2526, 2795, - 0, 2526, 2794, - 0, 2527, 2793, - 0, 2528, 2793, - 0, 2529, 2791, - 0, 2531, 2790, - 0, 2533, 2788, - 0, 2536, 2785, - 0, 2540, 2781, - 0, 2545, 2776, - 0, 2552, 2770, - 0, 2561, 2760, - 0, 2573, 2748, - 0, 2588, 2730, - 0, 2608, 2706, - 0, 2633, 2671, - 0, 2664, 2620, - 0, 2703, 2540, - 0, 2750, 2407, - 0, 2807, 2130, - 0, 2873, 0, - 0, 2948, 0, - 0, 3033, 0, - 0, 3126, 0, - 0, 3226, 0, - 0, 3333, 0, - 0, 3446, 0, - 0, 3562, 0, - 0, 3683, 0, - 0, 2525, 2796, - 0, 2526, 2796, - 0, 2526, 2796, - 0, 2526, 2795, - 0, 2527, 2795, - 0, 2527, 2794, - 0, 2528, 2794, - 0, 2530, 2792, - 0, 2531, 2791, - 0, 2533, 2789, - 0, 2536, 2786, - 0, 2540, 2782, - 0, 2546, 2777, - 0, 2552, 2771, - 0, 2561, 2761, - 0, 2573, 2749, - 0, 2588, 2731, - 0, 2608, 2707, - 0, 2633, 2672, - 0, 2664, 2621, - 0, 2703, 2542, - 0, 2751, 2409, - 0, 2807, 2134, - 0, 2873, 0, - 0, 2948, 0, - 0, 3033, 0, - 0, 3126, 0, - 0, 3226, 0, - 0, 3333, 0, - 0, 3446, 0, - 0, 3562, 0, - 0, 3683, 0, - 0, 2526, 2798, - 0, 2526, 2797, - 0, 2526, 2797, - 0, 2527, 2797, - 0, 2527, 2796, - 0, 2528, 2796, - 0, 2529, 2795, - 0, 2530, 2794, - 0, 2532, 2792, - 0, 2534, 2790, - 0, 2537, 2787, - 0, 2541, 2784, - 0, 2546, 2779, - 0, 2553, 2772, - 0, 2562, 2763, - 0, 2573, 2750, - 0, 2589, 2733, - 0, 2608, 2709, - 0, 2633, 2674, - 0, 2665, 2623, - 0, 2703, 2544, - 0, 2751, 2412, - 0, 2807, 2139, - 0, 2873, 0, - 0, 2948, 0, - 0, 3033, 0, - 0, 3126, 0, - 0, 3226, 0, - 0, 3333, 0, - 0, 3446, 0, - 0, 3562, 0, - 0, 3683, 0, - 0, 2526, 2799, - 0, 2526, 2799, - 0, 2527, 2799, - 0, 2527, 2798, - 0, 2527, 2798, - 0, 2528, 2797, - 0, 2529, 2797, - 0, 2530, 2795, - 0, 2532, 2794, - 0, 2534, 2792, - 0, 2537, 2789, - 0, 2541, 2785, - 0, 2546, 2780, - 0, 2553, 2774, - 0, 2562, 2765, - 0, 2574, 2752, - 0, 2589, 2735, - 0, 2609, 2711, - 0, 2634, 2676, - 0, 2665, 2625, - 0, 2704, 2547, - 0, 2751, 2416, - 0, 2807, 2146, - 0, 2873, 0, - 0, 2949, 0, - 0, 3033, 0, - 0, 3126, 0, - 0, 3226, 0, - 0, 3333, 0, - 0, 3446, 0, - 0, 3562, 0, - 0, 3683, 0, - 0, 2527, 2801, - 0, 2527, 2801, - 0, 2527, 2801, - 0, 2528, 2801, - 0, 2528, 2800, - 0, 2529, 2800, - 0, 2530, 2799, - 0, 2531, 2798, - 0, 2533, 2796, - 0, 2535, 2794, - 0, 2538, 2791, - 0, 2542, 2788, - 0, 2547, 2783, - 0, 2554, 2776, - 0, 2563, 2767, - 0, 2574, 2755, - 0, 2590, 2737, - 0, 2609, 2713, - 0, 2634, 2679, - 0, 2665, 2629, - 0, 2704, 2551, - 0, 2751, 2421, - 0, 2808, 2156, - 0, 2873, 0, - 0, 2949, 0, - 0, 3033, 0, - 0, 3126, 0, - 0, 3227, 0, - 0, 3333, 0, - 0, 3446, 0, - 0, 3562, 0, - 0, 3683, 0, - 0, 2527, 2804, - 0, 2528, 2804, - 0, 2528, 2804, - 0, 2528, 2804, - 0, 2529, 2803, - 0, 2529, 2803, - 0, 2530, 2802, - 0, 2532, 2801, - 0, 2533, 2799, - 0, 2536, 2797, - 0, 2538, 2794, - 0, 2542, 2791, - 0, 2548, 2786, - 0, 2554, 2779, - 0, 2563, 2770, - 0, 2575, 2758, - 0, 2590, 2741, - 0, 2610, 2717, - 0, 2635, 2683, - 0, 2666, 2633, - 0, 2705, 2556, - 0, 2752, 2428, - 0, 2808, 2168, - 0, 2874, 0, - 0, 2949, 0, - 0, 3034, 0, - 0, 3126, 0, - 0, 3227, 0, - 0, 3334, 0, - 0, 3446, 0, - 0, 3563, 0, - 0, 3683, 0, - 0, 2528, 2808, - 0, 2529, 2808, - 0, 2529, 2808, - 0, 2529, 2808, - 0, 2530, 2807, - 0, 2531, 2807, - 0, 2531, 2806, - 0, 2533, 2805, - 0, 2534, 2803, - 0, 2537, 2801, - 0, 2539, 2799, - 0, 2543, 2795, - 0, 2549, 2790, - 0, 2555, 2783, - 0, 2564, 2775, - 0, 2576, 2762, - 0, 2591, 2745, - 0, 2611, 2722, - 0, 2635, 2688, - 0, 2667, 2639, - 0, 2705, 2563, - 0, 2752, 2437, - 0, 2809, 2184, - 0, 2874, 0, - 0, 2949, 0, - 0, 3034, 0, - 0, 3127, 0, - 0, 3227, 0, - 0, 3334, 0, - 0, 3446, 0, - 0, 3563, 0, - 0, 3683, 0, - 0, 2530, 2814, - 0, 2530, 2813, - 0, 2530, 2813, - 0, 2531, 2813, - 0, 2531, 2812, - 0, 2532, 2812, - 0, 2533, 2811, - 0, 2534, 2810, - 0, 2536, 2808, - 0, 2538, 2806, - 0, 2541, 2804, - 0, 2545, 2800, - 0, 2550, 2795, - 0, 2557, 2789, - 0, 2565, 2780, - 0, 2577, 2768, - 0, 2592, 2751, - 0, 2612, 2728, - 0, 2636, 2695, - 0, 2668, 2646, - 0, 2706, 2572, - 0, 2753, 2449, - 0, 2809, 2204, - 0, 2875, 806, - 0, 2950, 0, - 0, 3034, 0, - 0, 3127, 0, - 0, 3227, 0, - 0, 3334, 0, - 0, 3446, 0, - 0, 3563, 0, - 0, 3683, 0, - 0, 2532, 2821, - 0, 2532, 2820, - 0, 2532, 2820, - 0, 2532, 2820, - 0, 2533, 2819, - 0, 2534, 2819, - 0, 2535, 2818, - 0, 2536, 2817, - 0, 2537, 2815, - 0, 2540, 2814, - 0, 2543, 2811, - 0, 2546, 2807, - 0, 2552, 2803, - 0, 2558, 2796, - 0, 2567, 2788, - 0, 2579, 2776, - 0, 2594, 2759, - 0, 2613, 2736, - 0, 2638, 2704, - 0, 2669, 2656, - 0, 2708, 2584, - 0, 2754, 2464, - 0, 2810, 2230, - 0, 2876, 1179, - 0, 2951, 0, - 0, 3035, 0, - 0, 3128, 0, - 0, 3228, 0, - 0, 3334, 0, - 0, 3446, 0, - 0, 3563, 0, - 0, 3683, 0, - 0, 2534, 2830, - 0, 2534, 2829, - 0, 2534, 2829, - 0, 2535, 2829, - 0, 2535, 2828, - 0, 2536, 2828, - 0, 2537, 2827, - 0, 2538, 2826, - 0, 2540, 2825, - 0, 2542, 2823, - 0, 2545, 2820, - 0, 2549, 2817, - 0, 2554, 2812, - 0, 2561, 2806, - 0, 2569, 2797, - 0, 2581, 2786, - 0, 2596, 2770, - 0, 2615, 2747, - 0, 2640, 2716, - 0, 2671, 2669, - 0, 2709, 2599, - 0, 2756, 2484, - 0, 2812, 2263, - 0, 2877, 1432, - 0, 2952, 0, - 0, 3036, 0, - 0, 3128, 0, - 0, 3228, 0, - 0, 3335, 0, - 0, 3447, 0, - 0, 3563, 0, - 0, 3683, 0, - 0, 2537, 2842, - 0, 2537, 2841, - 0, 2538, 2841, - 0, 2538, 2841, - 0, 2539, 2840, - 0, 2539, 2840, - 0, 2540, 2839, - 0, 2541, 2838, - 0, 2543, 2837, - 0, 2545, 2835, - 0, 2548, 2832, - 0, 2552, 2829, - 0, 2557, 2824, - 0, 2564, 2818, - 0, 2572, 2810, - 0, 2584, 2799, - 0, 2599, 2783, - 0, 2618, 2761, - 0, 2642, 2731, - 0, 2673, 2686, - 0, 2711, 2618, - 0, 2758, 2509, - 0, 2813, 2303, - 0, 2878, 1638, - 0, 2953, 0, - 0, 3037, 0, - 0, 3129, 0, - 0, 3229, 0, - 0, 3335, 0, - 0, 3447, 0, - 0, 3564, 0, - 0, 3684, 0, - 0, 2541, 2857, - 0, 2542, 2857, - 0, 2542, 2857, - 0, 2542, 2856, - 0, 2543, 2856, - 0, 2543, 2855, - 0, 2544, 2854, - 0, 2546, 2854, - 0, 2547, 2852, - 0, 2549, 2850, - 0, 2552, 2848, - 0, 2556, 2845, - 0, 2561, 2840, - 0, 2568, 2835, - 0, 2576, 2827, - 0, 2588, 2816, - 0, 2602, 2801, - 0, 2621, 2780, - 0, 2646, 2750, - 0, 2676, 2708, - 0, 2714, 2643, - 0, 2760, 2540, - 0, 2816, 2351, - 0, 2880, 1818, - 0, 2955, 0, - 0, 3038, 0, - 0, 3130, 0, - 0, 3230, 0, - 0, 3336, 0, - 0, 3448, 0, - 0, 3564, 0, - 0, 3684, 0, - 0, 2547, 2877, - 0, 2547, 2877, - 0, 2547, 2876, - 0, 2548, 2876, - 0, 2548, 2876, - 0, 2549, 2875, - 0, 2550, 2874, - 0, 2551, 2873, - 0, 2553, 2872, - 0, 2555, 2870, - 0, 2558, 2868, - 0, 2561, 2865, - 0, 2566, 2861, - 0, 2573, 2855, - 0, 2581, 2848, - 0, 2593, 2837, - 0, 2607, 2823, - 0, 2626, 2803, - 0, 2650, 2775, - 0, 2680, 2735, - 0, 2718, 2675, - 0, 2764, 2579, - 0, 2819, 2409, - 0, 2883, 1983, - 0, 2957, 0, - 0, 3040, 0, - 0, 3132, 0, - 0, 3231, 0, - 0, 3337, 0, - 0, 3449, 0, - 0, 3565, 0, - 0, 3684, 0, - 1040, 2554, 2902, - 1028, 2555, 2902, - 1011, 2555, 2902, - 986, 2555, 2901, - 952, 2556, 2901, - 901, 2556, 2900, - 823, 2557, 2900, - 692, 2558, 2899, - 422, 2560, 2898, - 0, 2562, 2896, - 0, 2565, 2894, - 0, 2569, 2891, - 0, 2573, 2887, - 0, 2580, 2882, - 0, 2588, 2875, - 0, 2599, 2865, - 0, 2614, 2851, - 0, 2632, 2833, - 0, 2656, 2806, - 0, 2686, 2769, - 0, 2723, 2713, - 0, 2768, 2627, - 0, 2823, 2476, - 0, 2887, 2139, - 0, 2960, 0, - 0, 3043, 0, - 0, 3134, 0, - 0, 3233, 0, - 0, 3338, 0, - 0, 3450, 0, - 0, 3565, 0, - 0, 3685, 0, - 2058, 2564, 2934, - 2057, 2564, 2933, - 2055, 2565, 2933, - 2053, 2565, 2933, - 2050, 2565, 2933, - 2045, 2566, 2932, - 2039, 2567, 2932, - 2032, 2568, 2931, - 2021, 2570, 2930, - 2006, 2572, 2928, - 1985, 2574, 2926, - 1956, 2578, 2923, - 1914, 2583, 2920, - 1850, 2589, 2915, - 1749, 2597, 2908, - 1564, 2608, 2899, - 1057, 2622, 2887, - 0, 2641, 2869, - 0, 2664, 2845, - 0, 2693, 2811, - 0, 2730, 2761, - 0, 2775, 2683, - 0, 2828, 2553, - 0, 2891, 2287, - 0, 2964, 0, - 0, 3046, 0, - 0, 3137, 0, - 0, 3235, 0, - 0, 3340, 0, - 0, 3451, 0, - 0, 3566, 0, - 0, 3686, 0, - 2415, 2577, 2973, - 2415, 2577, 2973, - 2414, 2577, 2972, - 2413, 2578, 2972, - 2412, 2578, 2972, - 2410, 2579, 2971, - 2407, 2580, 2971, - 2404, 2581, 2970, - 2399, 2582, 2969, - 2392, 2584, 2968, - 2384, 2587, 2966, - 2372, 2590, 2963, - 2355, 2595, 2960, - 2332, 2601, 2956, - 2300, 2609, 2949, - 2252, 2620, 2941, - 2179, 2633, 2930, - 2059, 2651, 2914, - 1824, 2674, 2892, - 744, 2703, 2862, - 0, 2739, 2817, - 0, 2783, 2749, - 0, 2835, 2639, - 0, 2898, 2431, - 0, 2969, 1756, - 0, 3050, 0, - 0, 3140, 0, - 0, 3238, 0, - 0, 3342, 0, - 0, 3453, 0, - 0, 3568, 0, - 0, 3687, 0, - 2664, 2593, 3020, - 2664, 2593, 3020, - 2663, 2594, 3020, - 2663, 2594, 3020, - 2662, 2594, 3020, - 2661, 2595, 3019, - 2659, 2596, 3019, - 2657, 2597, 3018, - 2654, 2598, 3017, - 2651, 2600, 3016, - 2646, 2603, 3014, - 2639, 2606, 3012, - 2630, 2611, 3009, - 2618, 2617, 3005, - 2601, 2624, 2999, - 2577, 2635, 2992, - 2543, 2648, 2982, - 2493, 2665, 2968, - 2416, 2687, 2949, - 2287, 2715, 2922, - 2025, 2750, 2883, - 0, 2793, 2824, - 0, 2845, 2733, - 0, 2906, 2572, - 0, 2976, 2191, - 0, 3056, 0, - 0, 3145, 0, - 0, 3242, 0, - 0, 3345, 0, - 0, 3455, 0, - 0, 3570, 0, - 0, 3688, 0, - 2867, 2614, 3077, - 2867, 2614, 3077, - 2867, 2615, 3077, - 2866, 2615, 3077, - 2866, 2615, 3076, - 2865, 2616, 3076, - 2864, 2617, 3076, - 2863, 2618, 3075, - 2861, 2619, 3074, - 2859, 2621, 3073, - 2856, 2623, 3072, - 2851, 2627, 3070, - 2846, 2631, 3067, - 2838, 2637, 3063, - 2828, 2644, 3059, - 2813, 2654, 3052, - 2793, 2667, 3043, - 2765, 2683, 3031, - 2724, 2705, 3014, - 2664, 2731, 2991, - 2567, 2765, 2958, - 2395, 2807, 2909, - 1957, 2857, 2835, - 0, 2916, 2711, - 0, 2985, 2465, - 0, 3064, 979, - 0, 3151, 0, - 0, 3247, 0, - 0, 3350, 0, - 0, 3458, 0, - 0, 3572, 0, - 0, 3690, 0, - 3046, 2641, 3143, - 3046, 2641, 3143, - 3046, 2641, 3143, - 3045, 2642, 3143, - 3045, 2642, 3143, - 3044, 2643, 3142, - 3044, 2643, 3142, - 3043, 2644, 3142, - 3042, 2646, 3141, - 3040, 2647, 3140, - 3038, 2650, 3139, - 3035, 2653, 3137, - 3032, 2657, 3135, - 3027, 2662, 3132, - 3020, 2669, 3127, - 3010, 2678, 3122, - 2997, 2691, 3114, - 2980, 2706, 3104, - 2955, 2727, 3090, - 2919, 2752, 3070, - 2867, 2785, 3042, - 2786, 2824, 3002, - 2648, 2873, 2942, - 2356, 2930, 2848, - 0, 2997, 2679, - 0, 3074, 2263, - 0, 3160, 0, - 0, 3254, 0, - 0, 3355, 0, - 0, 3463, 0, - 0, 3576, 0, - 0, 3693, 0, - 3210, 2674, 3219, - 3210, 2674, 3219, - 3210, 2675, 3219, - 3210, 2675, 3219, - 3209, 2675, 3219, - 3209, 2676, 3218, - 3209, 2677, 3218, - 3208, 2677, 3218, - 3207, 2679, 3217, - 3206, 2680, 3216, - 3205, 2682, 3215, - 3203, 2685, 3214, - 3200, 2689, 3212, - 3197, 2694, 3209, - 3192, 2701, 3206, - 3185, 2709, 3201, - 3177, 2721, 3195, - 3165, 2735, 3186, - 3148, 2754, 3174, - 3126, 2779, 3158, - 3093, 2809, 3135, - 3045, 2847, 3103, - 2973, 2893, 3055, - 2853, 2948, 2983, - 2618, 3013, 2865, - 1555, 3087, 2634, - 0, 3171, 1643, - 0, 3263, 0, - 0, 3362, 0, - 0, 3468, 0, - 0, 3580, 0, - 0, 3696, 0, - 3365, 2716, 3304, - 3365, 2716, 3304, - 3364, 2716, 3304, - 3364, 2716, 3304, - 3364, 2716, 3304, - 3364, 2717, 3303, - 3364, 2718, 3303, - 3363, 2718, 3303, - 3363, 2719, 3302, - 3362, 2721, 3302, - 3361, 2723, 3301, - 3359, 2725, 3300, - 3358, 2729, 3298, - 3355, 2734, 3296, - 3352, 2740, 3293, - 3347, 2748, 3289, - 3341, 2758, 3284, - 3333, 2772, 3277, - 3322, 2789, 3267, - 3306, 2812, 3254, - 3285, 2840, 3235, - 3254, 2876, 3210, - 3209, 2919, 3173, - 3142, 2971, 3118, - 3033, 3033, 3033, - 2828, 3104, 2887, - 2176, 3185, 2564, - 0, 3274, 0, - 0, 3372, 0, - 0, 3476, 0, - 0, 3586, 0, - 0, 3701, 0, - 3513, 2765, 3397, - 3513, 2765, 3397, - 3513, 2766, 3397, - 3513, 2766, 3397, - 3513, 2766, 3397, - 3512, 2767, 3397, - 3512, 2767, 3397, - 3512, 2768, 3396, - 3511, 2769, 3396, - 3511, 2770, 3395, - 3510, 2772, 3395, - 3509, 2774, 3394, - 3508, 2777, 3392, - 3506, 2781, 3391, - 3504, 2787, 3388, - 3500, 2794, 3385, - 3496, 2804, 3381, - 3490, 2816, 3375, - 3482, 2832, 3367, - 3471, 2852, 3357, - 3457, 2878, 3342, - 3436, 2911, 3322, - 3406, 2951, 3293, - 3364, 3000, 3252, - 3300, 3058, 3190, - 3198, 3126, 3092, - 3011, 3203, 2914, - 2491, 3289, 2450, - 0, 3384, 0, - 0, 3486, 0, - 0, 3594, 0, - 0, 3707, 0, - 3657, 2824, 3498, - 3657, 2824, 3498, - 3657, 2825, 3498, - 3657, 2825, 3498, - 3656, 2825, 3498, - 3656, 2825, 3498, - 3656, 2826, 3497, - 3656, 2827, 3497, - 3656, 2827, 3497, - 3655, 2829, 3497, - 3655, 2830, 3496, - 3654, 2832, 3495, - 3653, 2835, 3494, - 3652, 2839, 3493, - 3650, 2843, 3491, - 3648, 2850, 3488, - 3645, 2858, 3485, - 3640, 2869, 3480, - 3635, 2883, 3474, - 3627, 2902, 3466, - 3616, 2925, 3454, - 3602, 2955, 3439, - 3582, 2992, 3417, - 3553, 3036, 3386, - 3512, 3090, 3340, - 3451, 3154, 3272, - 3353, 3227, 3160, - 3177, 3309, 2949, - 2723, 3400, 2233, - 0, 3498, 0, - 0, 3604, 0, - 0, 3715, 0, - 3797, 2893, 3605, - 3797, 2893, 3605, - 3797, 2893, 3605, - 3797, 2893, 3605, - 3797, 2894, 3605, - 3797, 2894, 3605, - 3797, 2894, 3605, - 3797, 2895, 3605, - 3797, 2896, 3604, - 3796, 2897, 3604, - 3796, 2898, 3604, - 3795, 2900, 3603, - 3795, 2902, 3602, - 3794, 2905, 3601, - 3792, 2909, 3600, - 3791, 2915, 3598, - 3788, 2922, 3595, - 3785, 2932, 3591, - 3781, 2944, 3587, - 3776, 2960, 3580, - 3768, 2981, 3571, - 3758, 3007, 3559, - 3744, 3040, 3542, - 3724, 3081, 3519, - 3696, 3130, 3486, - 3656, 3188, 3437, - 3596, 3256, 3362, - 3502, 3334, 3238, - 3333, 3420, 2991, - 2918, 3515, 1456, - 0, 3617, 0, - 0, 3725, 0, - 3936, 2971, 3718, - 3936, 2971, 3718, - 3936, 2971, 3718, - 3936, 2971, 3718, - 3936, 2972, 3718, - 3936, 2972, 3717, - 3935, 2972, 3717, - 3935, 2973, 3717, - 3935, 2973, 3717, - 3935, 2974, 3717, - 3935, 2975, 3716, - 3934, 2977, 3716, - 3934, 2979, 3715, - 3933, 2981, 3714, - 3932, 2985, 3713, - 3931, 2990, 3712, - 3929, 2996, 3710, - 3927, 3004, 3707, - 3924, 3015, 3703, - 3920, 3028, 3698, - 3914, 3046, 3691, - 3907, 3069, 3682, - 3897, 3098, 3669, - 3883, 3134, 3652, - 3863, 3178, 3627, - 3836, 3231, 3592, - 3797, 3293, 3540, - 3738, 3365, 3460, - 3646, 3446, 3325, - 3483, 3536, 3042, - 3092, 3634, 0, - 0, 3738, 0, - 4073, 3058, 3835, - 4073, 3058, 3835, - 4072, 3058, 3835, - 4072, 3058, 3835, - 4072, 3059, 3834, - 4072, 3059, 3834, - 4072, 3059, 3834, - 4072, 3059, 3834, - 4072, 3060, 3834, - 4072, 3061, 3834, - 4072, 3062, 3834, - 4071, 3063, 3833, - 4071, 3064, 3833, - 4071, 3067, 3832, - 4070, 3070, 3831, - 4069, 3073, 3830, - 4068, 3079, 3828, - 4066, 3085, 3826, - 4064, 3094, 3823, - 4061, 3106, 3820, - 4057, 3121, 3814, - 4051, 3140, 3807, - 4044, 3165, 3798, - 4034, 3196, 3784, - 4020, 3235, 3766, - 4001, 3282, 3741, - 3974, 3338, 3704, - 3935, 3404, 3650, - 3877, 3479, 3565, - 3787, 3563, 3420, - 3627, 3656, 3103, - 3253, 3756, 0, - 4095, 3153, 3955, - 4095, 3153, 3955, - 4095, 3153, 3955, - 4095, 3154, 3955, - 4095, 3154, 3955, - 4095, 3154, 3955, - 4095, 3154, 3955, - 4095, 3154, 3955, - 4095, 3155, 3955, - 4095, 3155, 3954, - 4095, 3156, 3954, - 4095, 3157, 3954, - 4095, 3159, 3954, - 4095, 3160, 3953, - 4095, 3163, 3952, - 4095, 3166, 3951, - 4095, 3170, 3950, - 4095, 3176, 3949, - 4095, 3183, 3946, - 4095, 3192, 3943, - 4095, 3205, 3940, - 4095, 3221, 3934, - 4095, 3242, 3927, - 4095, 3269, 3917, - 4095, 3302, 3903, - 4095, 3342, 3885, - 4095, 3392, 3858, - 4095, 3451, 3820, - 4072, 3519, 3764, - 4015, 3596, 3676, - 3925, 3683, 3522, - 3768, 3778, 3173, - 4095, 3256, 4078, - 4095, 3256, 4078, - 4095, 3256, 4078, - 4095, 3256, 4078, - 4095, 3256, 4078, - 4095, 3256, 4078, - 4095, 3256, 4078, - 4095, 3257, 4078, - 4095, 3257, 4078, - 4095, 3257, 4078, - 4095, 3258, 4078, - 4095, 3259, 4077, - 4095, 3260, 4077, - 4095, 3261, 4077, - 4095, 3263, 4076, - 4095, 3266, 4075, - 4095, 3269, 4075, - 4095, 3274, 4073, - 4095, 3280, 4072, - 4095, 3287, 4069, - 4095, 3297, 4066, - 4095, 3311, 4062, - 4095, 3328, 4057, - 4095, 3350, 4049, - 4095, 3378, 4039, - 4095, 3413, 4025, - 4095, 3455, 4006, - 4095, 3507, 3979, - 4095, 3567, 3940, - 4095, 3638, 3882, - 4095, 3718, 3791, - 4062, 3806, 3631, - 0, 2656, 2925, - 0, 2657, 2925, - 0, 2657, 2925, - 0, 2657, 2925, - 0, 2658, 2924, - 0, 2658, 2924, - 0, 2659, 2923, - 0, 2660, 2923, - 0, 2661, 2921, - 0, 2663, 2920, - 0, 2665, 2918, - 0, 2668, 2915, - 0, 2672, 2911, - 0, 2677, 2906, - 0, 2684, 2899, - 0, 2693, 2890, - 0, 2705, 2878, - 0, 2720, 2860, - 0, 2739, 2835, - 0, 2764, 2800, - 0, 2796, 2749, - 0, 2835, 2669, - 0, 2882, 2534, - 0, 2939, 2253, - 0, 3005, 0, - 0, 3080, 0, - 0, 3165, 0, - 0, 3258, 0, - 0, 3358, 0, - 0, 3465, 0, - 0, 3578, 0, - 0, 3694, 0, - 0, 2657, 2926, - 0, 2657, 2926, - 0, 2657, 2925, - 0, 2657, 2925, - 0, 2658, 2925, - 0, 2658, 2924, - 0, 2659, 2924, - 0, 2660, 2923, - 0, 2661, 2922, - 0, 2663, 2920, - 0, 2665, 2918, - 0, 2668, 2915, - 0, 2672, 2912, - 0, 2677, 2907, - 0, 2684, 2900, - 0, 2693, 2890, - 0, 2705, 2878, - 0, 2720, 2860, - 0, 2739, 2836, - 0, 2765, 2801, - 0, 2796, 2749, - 0, 2835, 2669, - 0, 2882, 2535, - 0, 2939, 2254, - 0, 3005, 0, - 0, 3080, 0, - 0, 3165, 0, - 0, 3258, 0, - 0, 3358, 0, - 0, 3465, 0, - 0, 3578, 0, - 0, 3694, 0, - 0, 2657, 2926, - 0, 2657, 2926, - 0, 2657, 2926, - 0, 2657, 2925, - 0, 2658, 2925, - 0, 2658, 2925, - 0, 2659, 2924, - 0, 2660, 2923, - 0, 2661, 2922, - 0, 2663, 2920, - 0, 2665, 2918, - 0, 2668, 2916, - 0, 2672, 2912, - 0, 2677, 2907, - 0, 2684, 2900, - 0, 2693, 2891, - 0, 2705, 2878, - 0, 2720, 2861, - 0, 2740, 2836, - 0, 2765, 2801, - 0, 2796, 2749, - 0, 2835, 2670, - 0, 2882, 2535, - 0, 2939, 2255, - 0, 3005, 0, - 0, 3080, 0, - 0, 3165, 0, - 0, 3258, 0, - 0, 3358, 0, - 0, 3465, 0, - 0, 3578, 0, - 0, 3694, 0, - 0, 2657, 2926, - 0, 2657, 2926, - 0, 2657, 2926, - 0, 2657, 2926, - 0, 2658, 2925, - 0, 2658, 2925, - 0, 2659, 2924, - 0, 2660, 2923, - 0, 2661, 2922, - 0, 2663, 2921, - 0, 2665, 2919, - 0, 2668, 2916, - 0, 2672, 2912, - 0, 2677, 2907, - 0, 2684, 2900, - 0, 2693, 2891, - 0, 2705, 2879, - 0, 2720, 2861, - 0, 2740, 2836, - 0, 2765, 2801, - 0, 2796, 2750, - 0, 2835, 2670, - 0, 2882, 2536, - 0, 2939, 2257, - 0, 3005, 0, - 0, 3080, 0, - 0, 3165, 0, - 0, 3258, 0, - 0, 3358, 0, - 0, 3465, 0, - 0, 3578, 0, - 0, 3694, 0, - 0, 2657, 2927, - 0, 2657, 2927, - 0, 2657, 2927, - 0, 2657, 2926, - 0, 2658, 2926, - 0, 2658, 2925, - 0, 2659, 2925, - 0, 2660, 2924, - 0, 2661, 2923, - 0, 2663, 2921, - 0, 2665, 2919, - 0, 2668, 2917, - 0, 2672, 2913, - 0, 2677, 2908, - 0, 2684, 2901, - 0, 2693, 2892, - 0, 2705, 2879, - 0, 2720, 2862, - 0, 2740, 2837, - 0, 2765, 2802, - 0, 2796, 2751, - 0, 2835, 2671, - 0, 2882, 2537, - 0, 2939, 2259, - 0, 3005, 0, - 0, 3080, 0, - 0, 3165, 0, - 0, 3258, 0, - 0, 3358, 0, - 0, 3465, 0, - 0, 3578, 0, - 0, 3694, 0, - 0, 2657, 2928, - 0, 2657, 2927, - 0, 2657, 2927, - 0, 2658, 2927, - 0, 2658, 2927, - 0, 2659, 2926, - 0, 2659, 2926, - 0, 2660, 2925, - 0, 2661, 2924, - 0, 2663, 2922, - 0, 2665, 2920, - 0, 2668, 2917, - 0, 2672, 2914, - 0, 2677, 2909, - 0, 2684, 2902, - 0, 2693, 2893, - 0, 2705, 2880, - 0, 2720, 2862, - 0, 2740, 2838, - 0, 2765, 2803, - 0, 2796, 2752, - 0, 2835, 2673, - 0, 2882, 2539, - 0, 2939, 2262, - 0, 3005, 0, - 0, 3080, 0, - 0, 3165, 0, - 0, 3258, 0, - 0, 3358, 0, - 0, 3465, 0, - 0, 3578, 0, - 0, 3694, 0, - 0, 2657, 2929, - 0, 2657, 2928, - 0, 2658, 2928, - 0, 2658, 2928, - 0, 2658, 2928, - 0, 2659, 2927, - 0, 2660, 2926, - 0, 2660, 2926, - 0, 2662, 2925, - 0, 2663, 2923, - 0, 2666, 2921, - 0, 2669, 2918, - 0, 2672, 2915, - 0, 2678, 2910, - 0, 2684, 2903, - 0, 2693, 2894, - 0, 2705, 2881, - 0, 2720, 2864, - 0, 2740, 2839, - 0, 2765, 2804, - 0, 2796, 2753, - 0, 2835, 2674, - 0, 2883, 2541, - 0, 2939, 2266, - 0, 3005, 0, - 0, 3080, 0, - 0, 3165, 0, - 0, 3258, 0, - 0, 3358, 0, - 0, 3465, 0, - 0, 3578, 0, - 0, 3694, 0, - 0, 2658, 2930, - 0, 2658, 2930, - 0, 2658, 2929, - 0, 2658, 2929, - 0, 2659, 2929, - 0, 2659, 2928, - 0, 2660, 2928, - 0, 2661, 2927, - 0, 2662, 2926, - 0, 2664, 2924, - 0, 2666, 2922, - 0, 2669, 2919, - 0, 2673, 2916, - 0, 2678, 2911, - 0, 2685, 2904, - 0, 2694, 2895, - 0, 2706, 2882, - 0, 2721, 2865, - 0, 2740, 2841, - 0, 2765, 2806, - 0, 2797, 2755, - 0, 2836, 2676, - 0, 2883, 2544, - 0, 2939, 2271, - 0, 3005, 0, - 0, 3080, 0, - 0, 3165, 0, - 0, 3258, 0, - 0, 3358, 0, - 0, 3465, 0, - 0, 3578, 0, - 0, 3694, 0, - 0, 2658, 2931, - 0, 2658, 2931, - 0, 2658, 2931, - 0, 2659, 2931, - 0, 2659, 2931, - 0, 2660, 2930, - 0, 2660, 2929, - 0, 2661, 2929, - 0, 2662, 2927, - 0, 2664, 2926, - 0, 2666, 2924, - 0, 2669, 2921, - 0, 2673, 2918, - 0, 2678, 2913, - 0, 2685, 2906, - 0, 2694, 2897, - 0, 2706, 2884, - 0, 2721, 2867, - 0, 2741, 2843, - 0, 2766, 2808, - 0, 2797, 2757, - 0, 2836, 2679, - 0, 2883, 2548, - 0, 2939, 2279, - 0, 3005, 0, - 0, 3081, 0, - 0, 3165, 0, - 0, 3258, 0, - 0, 3359, 0, - 0, 3465, 0, - 0, 3578, 0, - 0, 3694, 0, - 0, 2659, 2934, - 0, 2659, 2934, - 0, 2659, 2933, - 0, 2659, 2933, - 0, 2660, 2933, - 0, 2660, 2932, - 0, 2661, 2932, - 0, 2662, 2931, - 0, 2663, 2930, - 0, 2665, 2928, - 0, 2667, 2926, - 0, 2670, 2924, - 0, 2674, 2920, - 0, 2679, 2915, - 0, 2686, 2908, - 0, 2695, 2899, - 0, 2706, 2887, - 0, 2722, 2870, - 0, 2741, 2845, - 0, 2766, 2811, - 0, 2797, 2761, - 0, 2836, 2683, - 0, 2883, 2553, - 0, 2940, 2288, - 0, 3006, 0, - 0, 3081, 0, - 0, 3165, 0, - 0, 3258, 0, - 0, 3359, 0, - 0, 3466, 0, - 0, 3578, 0, - 0, 3695, 0, - 0, 2659, 2937, - 0, 2659, 2937, - 0, 2660, 2936, - 0, 2660, 2936, - 0, 2660, 2936, - 0, 2661, 2935, - 0, 2662, 2935, - 0, 2663, 2934, - 0, 2664, 2933, - 0, 2665, 2931, - 0, 2668, 2929, - 0, 2671, 2927, - 0, 2674, 2923, - 0, 2680, 2918, - 0, 2686, 2911, - 0, 2695, 2902, - 0, 2707, 2890, - 0, 2722, 2873, - 0, 2742, 2849, - 0, 2767, 2815, - 0, 2798, 2765, - 0, 2837, 2688, - 0, 2884, 2560, - 0, 2940, 2300, - 0, 3006, 0, - 0, 3081, 0, - 0, 3166, 0, - 0, 3258, 0, - 0, 3359, 0, - 0, 3466, 0, - 0, 3578, 0, - 0, 3695, 0, - 0, 2660, 2941, - 0, 2660, 2941, - 0, 2661, 2940, - 0, 2661, 2940, - 0, 2661, 2940, - 0, 2662, 2939, - 0, 2663, 2939, - 0, 2664, 2938, - 0, 2665, 2937, - 0, 2666, 2935, - 0, 2669, 2933, - 0, 2672, 2931, - 0, 2675, 2927, - 0, 2681, 2922, - 0, 2687, 2916, - 0, 2696, 2907, - 0, 2708, 2894, - 0, 2723, 2877, - 0, 2743, 2854, - 0, 2768, 2820, - 0, 2799, 2771, - 0, 2837, 2695, - 0, 2885, 2569, - 0, 2941, 2316, - 0, 3006, 0, - 0, 3082, 0, - 0, 3166, 0, - 0, 3259, 0, - 0, 3359, 0, - 0, 3466, 0, - 0, 3578, 0, - 0, 3695, 0, - 0, 2662, 2946, - 0, 2662, 2946, - 0, 2662, 2946, - 0, 2662, 2945, - 0, 2663, 2945, - 0, 2663, 2945, - 0, 2664, 2944, - 0, 2665, 2943, - 0, 2666, 2942, - 0, 2668, 2941, - 0, 2670, 2939, - 0, 2673, 2936, - 0, 2677, 2932, - 0, 2682, 2928, - 0, 2689, 2921, - 0, 2698, 2912, - 0, 2709, 2900, - 0, 2724, 2883, - 0, 2744, 2860, - 0, 2769, 2827, - 0, 2800, 2778, - 0, 2838, 2704, - 0, 2885, 2581, - 0, 2941, 2336, - 0, 3007, 938, - 0, 3082, 0, - 0, 3166, 0, - 0, 3259, 0, - 0, 3359, 0, - 0, 3466, 0, - 0, 3578, 0, - 0, 3695, 0, - 0, 2663, 2953, - 0, 2664, 2953, - 0, 2664, 2952, - 0, 2664, 2952, - 0, 2665, 2952, - 0, 2665, 2951, - 0, 2666, 2951, - 0, 2667, 2950, - 0, 2668, 2949, - 0, 2670, 2948, - 0, 2672, 2946, - 0, 2675, 2943, - 0, 2679, 2940, - 0, 2684, 2935, - 0, 2690, 2928, - 0, 2699, 2920, - 0, 2711, 2908, - 0, 2726, 2891, - 0, 2745, 2868, - 0, 2770, 2836, - 0, 2801, 2788, - 0, 2840, 2716, - 0, 2886, 2596, - 0, 2942, 2362, - 0, 3008, 1311, - 0, 3083, 0, - 0, 3167, 0, - 0, 3260, 0, - 0, 3360, 0, - 0, 3466, 0, - 0, 3579, 0, - 0, 3695, 0, - 0, 2666, 2962, - 0, 2666, 2962, - 0, 2666, 2962, - 0, 2667, 2961, - 0, 2667, 2961, - 0, 2667, 2961, - 0, 2668, 2960, - 0, 2669, 2959, - 0, 2670, 2958, - 0, 2672, 2957, - 0, 2674, 2955, - 0, 2677, 2952, - 0, 2681, 2949, - 0, 2686, 2944, - 0, 2693, 2938, - 0, 2701, 2929, - 0, 2713, 2918, - 0, 2728, 2902, - 0, 2747, 2879, - 0, 2772, 2848, - 0, 2803, 2801, - 0, 2841, 2731, - 0, 2888, 2616, - 0, 2944, 2395, - 0, 3009, 1565, - 0, 3084, 0, - 0, 3168, 0, - 0, 3260, 0, - 0, 3360, 0, - 0, 3467, 0, - 0, 3579, 0, - 0, 3695, 0, - 0, 2669, 2974, - 0, 2669, 2974, - 0, 2669, 2973, - 0, 2670, 2973, - 0, 2670, 2973, - 0, 2671, 2972, - 0, 2671, 2972, - 0, 2672, 2971, - 0, 2673, 2970, - 0, 2675, 2969, - 0, 2677, 2967, - 0, 2680, 2964, - 0, 2684, 2961, - 0, 2689, 2957, - 0, 2696, 2950, - 0, 2704, 2942, - 0, 2716, 2931, - 0, 2731, 2915, - 0, 2750, 2894, - 0, 2774, 2863, - 0, 2805, 2818, - 0, 2843, 2751, - 0, 2890, 2641, - 0, 2945, 2435, - 0, 3010, 1770, - 0, 3085, 0, - 0, 3169, 0, - 0, 3261, 0, - 0, 3361, 0, - 0, 3467, 0, - 0, 3579, 0, - 0, 3696, 0, - 0, 2673, 2989, - 0, 2673, 2989, - 0, 2674, 2989, - 0, 2674, 2989, - 0, 2674, 2988, - 0, 2675, 2988, - 0, 2676, 2987, - 0, 2676, 2987, - 0, 2678, 2986, - 0, 2679, 2984, - 0, 2681, 2982, - 0, 2684, 2980, - 0, 2688, 2977, - 0, 2693, 2973, - 0, 2700, 2967, - 0, 2708, 2959, - 0, 2720, 2948, - 0, 2735, 2933, - 0, 2754, 2912, - 0, 2778, 2882, - 0, 2808, 2840, - 0, 2846, 2775, - 0, 2893, 2672, - 0, 2948, 2483, - 0, 3013, 1950, - 0, 3087, 0, - 0, 3170, 0, - 0, 3262, 0, - 0, 3362, 0, - 0, 3468, 0, - 0, 3580, 0, - 0, 3696, 0, - 0, 2679, 3009, - 0, 2679, 3009, - 0, 2679, 3009, - 0, 2680, 3008, - 0, 2680, 3008, - 0, 2680, 3008, - 0, 2681, 3007, - 0, 2682, 3007, - 0, 2683, 3006, - 0, 2685, 3004, - 0, 2687, 3003, - 0, 2690, 3000, - 0, 2693, 2997, - 0, 2698, 2993, - 0, 2705, 2987, - 0, 2714, 2980, - 0, 2725, 2969, - 0, 2739, 2955, - 0, 2758, 2935, - 0, 2782, 2907, - 0, 2813, 2867, - 0, 2850, 2807, - 0, 2896, 2711, - 0, 2951, 2541, - 0, 3015, 2115, - 0, 3089, 0, - 0, 3172, 0, - 0, 3264, 0, - 0, 3363, 0, - 0, 3469, 0, - 0, 3581, 0, - 0, 3697, 0, - 1182, 2686, 3034, - 1173, 2686, 3034, - 1160, 2687, 3034, - 1143, 2687, 3034, - 1119, 2687, 3033, - 1084, 2688, 3033, - 1033, 2688, 3033, - 955, 2689, 3032, - 824, 2691, 3031, - 554, 2692, 3030, - 0, 2694, 3028, - 0, 2697, 3026, - 0, 2701, 3023, - 0, 2706, 3019, - 0, 2712, 3014, - 0, 2720, 3007, - 0, 2731, 2997, - 0, 2746, 2983, - 0, 2764, 2965, - 0, 2788, 2939, - 0, 2818, 2901, - 0, 2855, 2846, - 0, 2901, 2759, - 0, 2955, 2608, - 0, 3019, 2271, - 0, 3092, 0, - 0, 3175, 0, - 0, 3266, 0, - 0, 3365, 0, - 0, 3470, 0, - 0, 3582, 0, - 0, 3697, 0, - 2191, 2696, 3066, - 2190, 2696, 3066, - 2189, 2696, 3066, - 2187, 2697, 3065, - 2185, 2697, 3065, - 2182, 2698, 3065, - 2177, 2698, 3064, - 2172, 2699, 3064, - 2164, 2700, 3063, - 2153, 2702, 3062, - 2138, 2704, 3060, - 2117, 2706, 3058, - 2088, 2710, 3055, - 2046, 2715, 3052, - 1983, 2721, 3047, - 1881, 2729, 3040, - 1696, 2740, 3031, - 1189, 2754, 3019, - 0, 2773, 3001, - 0, 2796, 2977, - 0, 2825, 2943, - 0, 2862, 2893, - 0, 2907, 2815, - 0, 2960, 2685, - 0, 3023, 2419, - 0, 3096, 0, - 0, 3178, 0, - 0, 3269, 0, - 0, 3367, 0, - 0, 3472, 0, - 0, 3583, 0, - 0, 3699, 0, - 2548, 2709, 3105, - 2548, 2709, 3105, - 2547, 2709, 3105, - 2546, 2709, 3105, - 2545, 2710, 3104, - 2544, 2710, 3104, - 2542, 2711, 3104, - 2539, 2712, 3103, - 2536, 2713, 3102, - 2531, 2714, 3101, - 2524, 2716, 3100, - 2516, 2719, 3098, - 2504, 2722, 3095, - 2487, 2727, 3092, - 2464, 2733, 3088, - 2432, 2741, 3082, - 2384, 2752, 3073, - 2311, 2766, 3062, - 2191, 2783, 3046, - 1956, 2806, 3025, - 876, 2835, 2994, - 0, 2871, 2949, - 0, 2915, 2881, - 0, 2967, 2771, - 0, 3030, 2564, - 0, 3101, 1888, - 0, 3182, 0, - 0, 3272, 0, - 0, 3370, 0, - 0, 3474, 0, - 0, 3585, 0, - 0, 3700, 0, - 2796, 2725, 3153, - 2796, 2725, 3152, - 2796, 2725, 3152, - 2795, 2726, 3152, - 2795, 2726, 3152, - 2794, 2726, 3152, - 2793, 2727, 3151, - 2791, 2728, 3151, - 2789, 2729, 3150, - 2787, 2730, 3149, - 2783, 2732, 3148, - 2778, 2735, 3146, - 2771, 2738, 3144, - 2762, 2743, 3141, - 2750, 2749, 3137, - 2733, 2756, 3131, - 2709, 2767, 3124, - 2675, 2780, 3114, - 2625, 2797, 3100, - 2548, 2819, 3081, - 2419, 2847, 3054, - 2157, 2882, 3015, - 0, 2925, 2957, - 0, 2977, 2865, - 0, 3038, 2704, - 0, 3108, 2323, - 0, 3188, 0, - 0, 3277, 0, - 0, 3374, 0, - 0, 3478, 0, - 0, 3587, 0, - 0, 3702, 0, - 2999, 2746, 3209, - 2999, 2746, 3209, - 2999, 2746, 3209, - 2999, 2747, 3209, - 2998, 2747, 3209, - 2998, 2747, 3209, - 2997, 2748, 3208, - 2996, 2749, 3208, - 2995, 2750, 3207, - 2993, 2751, 3206, - 2991, 2753, 3205, - 2988, 2755, 3204, - 2984, 2759, 3202, - 2978, 2763, 3199, - 2970, 2769, 3196, - 2960, 2776, 3191, - 2945, 2786, 3184, - 2925, 2799, 3175, - 2897, 2815, 3163, - 2857, 2837, 3147, - 2796, 2864, 3123, - 2699, 2897, 3090, - 2527, 2939, 3041, - 2089, 2989, 2967, - 0, 3048, 2843, - 0, 3118, 2597, - 0, 3196, 1111, - 0, 3283, 0, - 0, 3379, 0, - 0, 3482, 0, - 0, 3590, 0, - 0, 3704, 0, - 3178, 2773, 3276, - 3178, 2773, 3275, - 3178, 2773, 3275, - 3178, 2773, 3275, - 3177, 2774, 3275, - 3177, 2774, 3275, - 3177, 2775, 3275, - 3176, 2775, 3274, - 3175, 2776, 3274, - 3174, 2778, 3273, - 3172, 2779, 3272, - 3170, 2782, 3271, - 3167, 2785, 3269, - 3164, 2789, 3267, - 3159, 2794, 3264, - 3152, 2801, 3260, - 3142, 2811, 3254, - 3130, 2823, 3246, - 3112, 2838, 3236, - 3087, 2859, 3222, - 3051, 2884, 3202, - 2999, 2917, 3174, - 2918, 2956, 3134, - 2780, 3005, 3074, - 2488, 3062, 2980, - 0, 3130, 2811, - 0, 3206, 2395, - 0, 3292, 0, - 0, 3386, 0, - 0, 3487, 0, - 0, 3595, 0, - 0, 3708, 0, - 3342, 2806, 3351, - 3342, 2806, 3351, - 3342, 2807, 3351, - 3342, 2807, 3351, - 3342, 2807, 3351, - 3341, 2807, 3351, - 3341, 2808, 3350, - 3341, 2809, 3350, - 3340, 2810, 3350, - 3339, 2811, 3349, - 3338, 2812, 3348, - 3337, 2814, 3347, - 3335, 2817, 3346, - 3332, 2821, 3344, - 3329, 2826, 3341, - 3324, 2833, 3338, - 3318, 2841, 3333, - 3309, 2853, 3327, - 3297, 2867, 3318, - 3281, 2886, 3306, - 3258, 2911, 3290, - 3225, 2941, 3267, - 3177, 2979, 3235, - 3105, 3025, 3187, - 2985, 3080, 3115, - 2750, 3145, 2997, - 1687, 3219, 2766, - 0, 3303, 1775, - 0, 3395, 0, - 0, 3494, 0, - 0, 3600, 0, - 0, 3712, 0, - 3497, 2847, 3436, - 3497, 2848, 3436, - 3497, 2848, 3436, - 3497, 2848, 3436, - 3496, 2848, 3436, - 3496, 2849, 3436, - 3496, 2849, 3436, - 3496, 2850, 3435, - 3495, 2850, 3435, - 3495, 2852, 3434, - 3494, 2853, 3434, - 3493, 2855, 3433, - 3492, 2858, 3432, - 3490, 2861, 3430, - 3487, 2866, 3428, - 3484, 2872, 3425, - 3479, 2880, 3421, - 3473, 2890, 3416, - 3465, 2904, 3409, - 3454, 2921, 3399, - 3438, 2944, 3386, - 3417, 2972, 3368, - 3386, 3008, 3342, - 3341, 3051, 3305, - 3274, 3103, 3250, - 3165, 3165, 3165, - 2960, 3236, 3019, - 2308, 3317, 2696, - 0, 3406, 0, - 0, 3504, 0, - 0, 3608, 0, - 0, 3718, 0, - 3645, 2897, 3529, - 3645, 2897, 3529, - 3645, 2898, 3529, - 3645, 2898, 3529, - 3645, 2898, 3529, - 3645, 2898, 3529, - 3644, 2899, 3529, - 3644, 2899, 3529, - 3644, 2900, 3528, - 3644, 2901, 3528, - 3643, 2902, 3527, - 3642, 2904, 3527, - 3641, 2906, 3526, - 3640, 2909, 3524, - 3638, 2914, 3523, - 3636, 2919, 3520, - 3633, 2926, 3517, - 3628, 2936, 3513, - 3622, 2948, 3507, - 3614, 2964, 3500, - 3604, 2984, 3489, - 3589, 3011, 3474, - 3568, 3043, 3454, - 3539, 3084, 3426, - 3496, 3132, 3384, - 3432, 3191, 3322, - 3330, 3258, 3224, - 3143, 3335, 3046, - 2623, 3421, 2582, - 0, 3516, 0, - 0, 3618, 0, - 0, 3726, 0, - 3789, 2956, 3630, - 3789, 2956, 3630, - 3789, 2957, 3630, - 3789, 2957, 3630, - 3789, 2957, 3630, - 3789, 2957, 3630, - 3788, 2958, 3630, - 3788, 2958, 3630, - 3788, 2959, 3629, - 3788, 2960, 3629, - 3787, 2961, 3629, - 3787, 2962, 3628, - 3786, 2964, 3627, - 3785, 2967, 3626, - 3784, 2971, 3625, - 3782, 2976, 3623, - 3780, 2982, 3620, - 3777, 2990, 3617, - 3772, 3001, 3613, - 3767, 3015, 3606, - 3759, 3034, 3598, - 3748, 3057, 3587, - 3734, 3087, 3571, - 3714, 3124, 3549, - 3685, 3169, 3518, - 3644, 3222, 3473, - 3583, 3286, 3404, - 3485, 3359, 3292, - 3309, 3441, 3081, - 2855, 3532, 2365, - 0, 3630, 0, - 0, 3736, 0, - 3929, 3025, 3737, - 3929, 3025, 3737, - 3929, 3025, 3737, - 3929, 3025, 3737, - 3929, 3026, 3737, - 3929, 3026, 3737, - 3929, 3026, 3737, - 3929, 3026, 3737, - 3929, 3027, 3737, - 3929, 3028, 3736, - 3928, 3029, 3736, - 3928, 3030, 3736, - 3927, 3032, 3735, - 3927, 3034, 3734, - 3926, 3037, 3733, - 3925, 3042, 3732, - 3923, 3047, 3730, - 3921, 3054, 3727, - 3918, 3064, 3723, - 3913, 3076, 3719, - 3908, 3092, 3712, - 3900, 3113, 3703, - 3890, 3139, 3691, - 3876, 3172, 3674, - 3856, 3213, 3651, - 3828, 3262, 3618, - 3788, 3320, 3569, - 3728, 3388, 3494, - 3634, 3466, 3370, - 3465, 3552, 3123, - 3050, 3647, 1588, - 0, 3749, 0, - 4068, 3103, 3850, - 4068, 3103, 3850, - 4068, 3103, 3850, - 4068, 3103, 3850, - 4068, 3104, 3850, - 4068, 3104, 3850, - 4068, 3104, 3850, - 4068, 3104, 3849, - 4067, 3105, 3849, - 4067, 3105, 3849, - 4067, 3106, 3849, - 4067, 3107, 3849, - 4066, 3109, 3848, - 4066, 3111, 3847, - 4065, 3114, 3847, - 4064, 3117, 3845, - 4063, 3122, 3844, - 4061, 3128, 3842, - 4059, 3136, 3839, - 4056, 3147, 3835, - 4052, 3160, 3830, - 4046, 3178, 3823, - 4039, 3201, 3814, - 4029, 3230, 3801, - 4015, 3266, 3784, - 3995, 3310, 3759, - 3968, 3363, 3724, - 3929, 3425, 3672, - 3870, 3497, 3592, - 3778, 3578, 3457, - 3615, 3668, 3174, - 3224, 3766, 0, - 4095, 3190, 3967, - 4095, 3190, 3967, - 4095, 3190, 3967, - 4095, 3190, 3967, - 4095, 3191, 3967, - 4095, 3191, 3967, - 4095, 3191, 3967, - 4095, 3191, 3966, - 4095, 3192, 3966, - 4095, 3192, 3966, - 4095, 3193, 3966, - 4095, 3194, 3966, - 4095, 3195, 3965, - 4095, 3197, 3965, - 4095, 3199, 3964, - 4095, 3202, 3963, - 4095, 3206, 3962, - 4095, 3211, 3961, - 4095, 3217, 3958, - 4095, 3226, 3956, - 4095, 3238, 3952, - 4095, 3253, 3946, - 4095, 3273, 3939, - 4095, 3297, 3930, - 4095, 3328, 3917, - 4095, 3367, 3898, - 4095, 3414, 3873, - 4095, 3470, 3836, - 4067, 3536, 3782, - 4009, 3611, 3697, - 3919, 3695, 3552, - 3759, 3788, 3235, - 4095, 3285, 4087, - 4095, 3285, 4087, - 4095, 3286, 4087, - 4095, 3286, 4087, - 4095, 3286, 4087, - 4095, 3286, 4087, - 4095, 3286, 4087, - 4095, 3286, 4087, - 4095, 3287, 4087, - 4095, 3287, 4087, - 4095, 3288, 4087, - 4095, 3288, 4086, - 4095, 3289, 4086, - 4095, 3291, 4086, - 4095, 3292, 4085, - 4095, 3295, 4084, - 4095, 3298, 4084, - 4095, 3302, 4082, - 4095, 3308, 4081, - 4095, 3315, 4079, - 4095, 3325, 4076, - 4095, 3337, 4072, - 4095, 3353, 4066, - 4095, 3374, 4059, - 4095, 3401, 4049, - 4095, 3434, 4036, - 4095, 3475, 4017, - 4095, 3524, 3990, - 4095, 3583, 3952, - 4095, 3651, 3896, - 4095, 3729, 3808, - 4057, 3815, 3655, - 0, 2788, 3057, - 0, 2789, 3057, - 0, 2789, 3057, - 0, 2789, 3057, - 0, 2789, 3057, - 0, 2790, 3056, - 0, 2790, 3056, - 0, 2791, 3055, - 0, 2792, 3054, - 0, 2793, 3053, - 0, 2795, 3052, - 0, 2797, 3050, - 0, 2800, 3047, - 0, 2804, 3043, - 0, 2809, 3038, - 0, 2816, 3031, - 0, 2825, 3022, - 0, 2837, 3009, - 0, 2852, 2992, - 0, 2872, 2967, - 0, 2897, 2932, - 0, 2928, 2880, - 0, 2967, 2801, - 0, 3014, 2666, - 0, 3071, 2384, - 0, 3137, 0, - 0, 3212, 0, - 0, 3297, 0, - 0, 3390, 0, - 0, 3490, 0, - 0, 3597, 0, - 0, 3710, 0, - 0, 2788, 3058, - 0, 2789, 3058, - 0, 2789, 3057, - 0, 2789, 3057, - 0, 2789, 3057, - 0, 2790, 3057, - 0, 2790, 3056, - 0, 2791, 3055, - 0, 2792, 3055, - 0, 2793, 3053, - 0, 2795, 3052, - 0, 2797, 3050, - 0, 2800, 3047, - 0, 2804, 3043, - 0, 2809, 3038, - 0, 2816, 3032, - 0, 2825, 3022, - 0, 2837, 3010, - 0, 2852, 2992, - 0, 2872, 2967, - 0, 2897, 2932, - 0, 2928, 2881, - 0, 2967, 2801, - 0, 3014, 2666, - 0, 3071, 2385, - 0, 3137, 0, - 0, 3212, 0, - 0, 3297, 0, - 0, 3390, 0, - 0, 3490, 0, - 0, 3597, 0, - 0, 3710, 0, - 0, 2788, 3058, - 0, 2789, 3058, - 0, 2789, 3058, - 0, 2789, 3057, - 0, 2789, 3057, - 0, 2790, 3057, - 0, 2790, 3056, - 0, 2791, 3056, - 0, 2792, 3055, - 0, 2793, 3054, - 0, 2795, 3052, - 0, 2797, 3050, - 0, 2800, 3047, - 0, 2804, 3044, - 0, 2809, 3039, - 0, 2816, 3032, - 0, 2825, 3023, - 0, 2837, 3010, - 0, 2852, 2992, - 0, 2872, 2968, - 0, 2897, 2933, - 0, 2928, 2881, - 0, 2967, 2801, - 0, 3014, 2667, - 0, 3071, 2386, - 0, 3137, 0, - 0, 3212, 0, - 0, 3297, 0, - 0, 3390, 0, - 0, 3490, 0, - 0, 3597, 0, - 0, 3710, 0, - 0, 2789, 3058, - 0, 2789, 3058, - 0, 2789, 3058, - 0, 2789, 3058, - 0, 2789, 3057, - 0, 2790, 3057, - 0, 2790, 3057, - 0, 2791, 3056, - 0, 2792, 3055, - 0, 2793, 3054, - 0, 2795, 3052, - 0, 2797, 3050, - 0, 2800, 3048, - 0, 2804, 3044, - 0, 2809, 3039, - 0, 2816, 3032, - 0, 2825, 3023, - 0, 2837, 3010, - 0, 2852, 2993, - 0, 2872, 2968, - 0, 2897, 2933, - 0, 2928, 2881, - 0, 2967, 2802, - 0, 3014, 2667, - 0, 3071, 2387, - 0, 3137, 0, - 0, 3212, 0, - 0, 3297, 0, - 0, 3390, 0, - 0, 3490, 0, - 0, 3597, 0, - 0, 3710, 0, - 0, 2789, 3059, - 0, 2789, 3058, - 0, 2789, 3058, - 0, 2789, 3058, - 0, 2789, 3058, - 0, 2790, 3058, - 0, 2790, 3057, - 0, 2791, 3056, - 0, 2792, 3056, - 0, 2793, 3054, - 0, 2795, 3053, - 0, 2797, 3051, - 0, 2800, 3048, - 0, 2804, 3044, - 0, 2809, 3039, - 0, 2816, 3033, - 0, 2825, 3023, - 0, 2837, 3011, - 0, 2852, 2993, - 0, 2872, 2969, - 0, 2897, 2934, - 0, 2928, 2882, - 0, 2967, 2802, - 0, 3014, 2668, - 0, 3071, 2389, - 0, 3137, 0, - 0, 3212, 0, - 0, 3297, 0, - 0, 3390, 0, - 0, 3490, 0, - 0, 3597, 0, - 0, 3710, 0, - 0, 2789, 3059, - 0, 2789, 3059, - 0, 2789, 3059, - 0, 2789, 3059, - 0, 2790, 3058, - 0, 2790, 3058, - 0, 2791, 3058, - 0, 2791, 3057, - 0, 2792, 3056, - 0, 2793, 3055, - 0, 2795, 3053, - 0, 2797, 3051, - 0, 2800, 3049, - 0, 2804, 3045, - 0, 2809, 3040, - 0, 2816, 3033, - 0, 2825, 3024, - 0, 2837, 3011, - 0, 2852, 2994, - 0, 2872, 2969, - 0, 2897, 2934, - 0, 2928, 2883, - 0, 2967, 2803, - 0, 3014, 2670, - 0, 3071, 2391, - 0, 3137, 0, - 0, 3212, 0, - 0, 3297, 0, - 0, 3390, 0, - 0, 3490, 0, - 0, 3597, 0, - 0, 3710, 0, - 0, 2789, 3060, - 0, 2789, 3060, - 0, 2789, 3060, - 0, 2789, 3059, - 0, 2790, 3059, - 0, 2790, 3059, - 0, 2791, 3058, - 0, 2791, 3058, - 0, 2792, 3057, - 0, 2794, 3056, - 0, 2795, 3054, - 0, 2797, 3052, - 0, 2800, 3049, - 0, 2804, 3046, - 0, 2810, 3041, - 0, 2816, 3034, - 0, 2825, 3025, - 0, 2837, 3012, - 0, 2852, 2995, - 0, 2872, 2970, - 0, 2897, 2935, - 0, 2928, 2884, - 0, 2967, 2805, - 0, 3015, 2671, - 0, 3071, 2394, - 0, 3137, 0, - 0, 3212, 0, - 0, 3297, 0, - 0, 3390, 0, - 0, 3490, 0, - 0, 3597, 0, - 0, 3710, 0, - 0, 2789, 3061, - 0, 2789, 3061, - 0, 2789, 3061, - 0, 2790, 3060, - 0, 2790, 3060, - 0, 2790, 3060, - 0, 2791, 3059, - 0, 2792, 3059, - 0, 2793, 3058, - 0, 2794, 3057, - 0, 2795, 3055, - 0, 2798, 3053, - 0, 2801, 3050, - 0, 2805, 3047, - 0, 2810, 3042, - 0, 2817, 3035, - 0, 2826, 3026, - 0, 2837, 3013, - 0, 2853, 2996, - 0, 2872, 2971, - 0, 2897, 2936, - 0, 2929, 2885, - 0, 2967, 2806, - 0, 3015, 2673, - 0, 3071, 2398, - 0, 3137, 0, - 0, 3212, 0, - 0, 3297, 0, - 0, 3390, 0, - 0, 3491, 0, - 0, 3597, 0, - 0, 3710, 0, - 0, 2790, 3062, - 0, 2790, 3062, - 0, 2790, 3062, - 0, 2790, 3062, - 0, 2790, 3061, - 0, 2791, 3061, - 0, 2791, 3060, - 0, 2792, 3060, - 0, 2793, 3059, - 0, 2794, 3058, - 0, 2796, 3056, - 0, 2798, 3054, - 0, 2801, 3052, - 0, 2805, 3048, - 0, 2810, 3043, - 0, 2817, 3036, - 0, 2826, 3027, - 0, 2838, 3014, - 0, 2853, 2997, - 0, 2872, 2973, - 0, 2897, 2938, - 0, 2929, 2887, - 0, 2968, 2809, - 0, 3015, 2676, - 0, 3071, 2404, - 0, 3137, 0, - 0, 3213, 0, - 0, 3297, 0, - 0, 3390, 0, - 0, 3491, 0, - 0, 3598, 0, - 0, 3710, 0, - 0, 2790, 3064, - 0, 2790, 3064, - 0, 2790, 3063, - 0, 2790, 3063, - 0, 2791, 3063, - 0, 2791, 3063, - 0, 2792, 3062, - 0, 2792, 3062, - 0, 2793, 3061, - 0, 2795, 3060, - 0, 2796, 3058, - 0, 2798, 3056, - 0, 2801, 3053, - 0, 2805, 3050, - 0, 2810, 3045, - 0, 2817, 3038, - 0, 2826, 3029, - 0, 2838, 3016, - 0, 2853, 2999, - 0, 2873, 2975, - 0, 2898, 2940, - 0, 2929, 2890, - 0, 2968, 2811, - 0, 3015, 2680, - 0, 3072, 2411, - 0, 3137, 0, - 0, 3213, 0, - 0, 3297, 0, - 0, 3390, 0, - 0, 3491, 0, - 0, 3598, 0, - 0, 3710, 0, - 0, 2791, 3066, - 0, 2791, 3066, - 0, 2791, 3066, - 0, 2791, 3065, - 0, 2791, 3065, - 0, 2792, 3065, - 0, 2792, 3064, - 0, 2793, 3064, - 0, 2794, 3063, - 0, 2795, 3062, - 0, 2797, 3060, - 0, 2799, 3058, - 0, 2802, 3056, - 0, 2806, 3052, - 0, 2811, 3047, - 0, 2818, 3040, - 0, 2827, 3031, - 0, 2838, 3019, - 0, 2854, 3002, - 0, 2873, 2978, - 0, 2898, 2943, - 0, 2930, 2893, - 0, 2968, 2815, - 0, 3016, 2685, - 0, 3072, 2420, - 0, 3138, 0, - 0, 3213, 0, - 0, 3297, 0, - 0, 3390, 0, - 0, 3491, 0, - 0, 3598, 0, - 0, 3710, 0, - 0, 2791, 3069, - 0, 2791, 3069, - 0, 2792, 3069, - 0, 2792, 3068, - 0, 2792, 3068, - 0, 2792, 3068, - 0, 2793, 3067, - 0, 2794, 3067, - 0, 2795, 3066, - 0, 2796, 3065, - 0, 2798, 3063, - 0, 2800, 3061, - 0, 2803, 3059, - 0, 2807, 3055, - 0, 2812, 3050, - 0, 2819, 3043, - 0, 2827, 3034, - 0, 2839, 3022, - 0, 2854, 3005, - 0, 2874, 2981, - 0, 2899, 2947, - 0, 2930, 2897, - 0, 2969, 2821, - 0, 3016, 2692, - 0, 3072, 2432, - 0, 3138, 0, - 0, 3213, 0, - 0, 3298, 0, - 0, 3391, 0, - 0, 3491, 0, - 0, 3598, 0, - 0, 3710, 0, - 0, 2792, 3073, - 0, 2792, 3073, - 0, 2793, 3073, - 0, 2793, 3072, - 0, 2793, 3072, - 0, 2793, 3072, - 0, 2794, 3071, - 0, 2795, 3071, - 0, 2796, 3070, - 0, 2797, 3069, - 0, 2799, 3067, - 0, 2801, 3065, - 0, 2804, 3063, - 0, 2808, 3059, - 0, 2813, 3054, - 0, 2819, 3048, - 0, 2828, 3039, - 0, 2840, 3026, - 0, 2855, 3010, - 0, 2875, 2986, - 0, 2900, 2952, - 0, 2931, 2903, - 0, 2970, 2827, - 0, 3017, 2701, - 0, 3073, 2448, - 0, 3138, 0, - 0, 3214, 0, - 0, 3298, 0, - 0, 3391, 0, - 0, 3491, 0, - 0, 3598, 0, - 0, 3710, 0, - 0, 2794, 3078, - 0, 2794, 3078, - 0, 2794, 3078, - 0, 2794, 3078, - 0, 2794, 3077, - 0, 2795, 3077, - 0, 2795, 3077, - 0, 2796, 3076, - 0, 2797, 3075, - 0, 2798, 3074, - 0, 2800, 3073, - 0, 2802, 3071, - 0, 2805, 3068, - 0, 2809, 3064, - 0, 2814, 3060, - 0, 2821, 3053, - 0, 2830, 3044, - 0, 2841, 3032, - 0, 2856, 3016, - 0, 2876, 2992, - 0, 2901, 2959, - 0, 2932, 2911, - 0, 2970, 2836, - 0, 3017, 2713, - 0, 3074, 2468, - 0, 3139, 1070, - 0, 3214, 0, - 0, 3298, 0, - 0, 3391, 0, - 0, 3491, 0, - 0, 3598, 0, - 0, 3710, 0, - 0, 2795, 3085, - 0, 2796, 3085, - 0, 2796, 3085, - 0, 2796, 3085, - 0, 2796, 3084, - 0, 2797, 3084, - 0, 2797, 3084, - 0, 2798, 3083, - 0, 2799, 3082, - 0, 2800, 3081, - 0, 2802, 3080, - 0, 2804, 3078, - 0, 2807, 3075, - 0, 2811, 3072, - 0, 2816, 3067, - 0, 2822, 3060, - 0, 2831, 3052, - 0, 2843, 3040, - 0, 2858, 3023, - 0, 2877, 3001, - 0, 2902, 2968, - 0, 2933, 2920, - 0, 2972, 2848, - 0, 3019, 2728, - 0, 3075, 2494, - 0, 3140, 1443, - 0, 3215, 0, - 0, 3299, 0, - 0, 3392, 0, - 0, 3492, 0, - 0, 3599, 0, - 0, 3711, 0, - 0, 2798, 3094, - 0, 2798, 3094, - 0, 2798, 3094, - 0, 2798, 3094, - 0, 2799, 3093, - 0, 2799, 3093, - 0, 2800, 3093, - 0, 2800, 3092, - 0, 2801, 3091, - 0, 2802, 3090, - 0, 2804, 3089, - 0, 2806, 3087, - 0, 2809, 3084, - 0, 2813, 3081, - 0, 2818, 3076, - 0, 2825, 3070, - 0, 2834, 3062, - 0, 2845, 3050, - 0, 2860, 3034, - 0, 2879, 3011, - 0, 2904, 2980, - 0, 2935, 2933, - 0, 2973, 2863, - 0, 3020, 2748, - 0, 3076, 2527, - 0, 3141, 1697, - 0, 3216, 0, - 0, 3300, 0, - 0, 3392, 0, - 0, 3492, 0, - 0, 3599, 0, - 0, 3711, 0, - 0, 2801, 3106, - 0, 2801, 3106, - 0, 2801, 3106, - 0, 2802, 3106, - 0, 2802, 3105, - 0, 2802, 3105, - 0, 2803, 3105, - 0, 2803, 3104, - 0, 2804, 3103, - 0, 2806, 3102, - 0, 2807, 3101, - 0, 2809, 3099, - 0, 2812, 3096, - 0, 2816, 3093, - 0, 2821, 3089, - 0, 2828, 3083, - 0, 2837, 3074, - 0, 2848, 3063, - 0, 2863, 3047, - 0, 2882, 3026, - 0, 2907, 2995, - 0, 2937, 2950, - 0, 2976, 2883, - 0, 3022, 2773, - 0, 3078, 2567, - 0, 3143, 1902, - 0, 3217, 0, - 0, 3301, 0, - 0, 3393, 0, - 0, 3493, 0, - 0, 3599, 0, - 0, 3711, 0, - 0, 2805, 3121, - 0, 2805, 3121, - 0, 2806, 3121, - 0, 2806, 3121, - 0, 2806, 3121, - 0, 2806, 3120, - 0, 2807, 3120, - 0, 2808, 3119, - 0, 2809, 3119, - 0, 2810, 3118, - 0, 2811, 3116, - 0, 2814, 3115, - 0, 2816, 3112, - 0, 2820, 3109, - 0, 2825, 3105, - 0, 2832, 3099, - 0, 2840, 3091, - 0, 2852, 3080, - 0, 2867, 3065, - 0, 2886, 3044, - 0, 2910, 3014, - 0, 2940, 2972, - 0, 2978, 2908, - 0, 3025, 2805, - 0, 3080, 2615, - 0, 3145, 2083, - 0, 3219, 0, - 0, 3302, 0, - 0, 3394, 0, - 0, 3494, 0, - 0, 3600, 0, - 0, 3712, 0, - 0, 2811, 3141, - 0, 2811, 3141, - 0, 2811, 3141, - 0, 2811, 3141, - 0, 2812, 3141, - 0, 2812, 3140, - 0, 2813, 3140, - 0, 2813, 3139, - 0, 2814, 3139, - 0, 2815, 3138, - 0, 2817, 3136, - 0, 2819, 3135, - 0, 2822, 3132, - 0, 2826, 3129, - 0, 2831, 3125, - 0, 2837, 3120, - 0, 2846, 3112, - 0, 2857, 3101, - 0, 2872, 3087, - 0, 2890, 3067, - 0, 2914, 3039, - 0, 2945, 2999, - 0, 2982, 2939, - 0, 3028, 2843, - 0, 3083, 2673, - 0, 3147, 2248, - 0, 3221, 0, - 0, 3304, 0, - 0, 3396, 0, - 0, 3495, 0, - 0, 3601, 0, - 0, 3713, 0, - 1321, 2818, 3166, - 1314, 2818, 3166, - 1305, 2819, 3166, - 1292, 2819, 3166, - 1275, 2819, 3166, - 1251, 2819, 3165, - 1216, 2820, 3165, - 1165, 2821, 3165, - 1087, 2821, 3164, - 956, 2823, 3163, - 686, 2824, 3162, - 0, 2826, 3160, - 0, 2829, 3158, - 0, 2833, 3155, - 0, 2838, 3151, - 0, 2844, 3146, - 0, 2853, 3139, - 0, 2864, 3129, - 0, 2878, 3115, - 0, 2897, 3097, - 0, 2920, 3071, - 0, 2950, 3033, - 0, 2987, 2978, - 0, 3033, 2891, - 0, 3087, 2740, - 0, 3151, 2403, - 0, 3224, 0, - 0, 3307, 0, - 0, 3398, 0, - 0, 3497, 0, - 0, 3603, 0, - 0, 3714, 0, - 2324, 2828, 3198, - 2323, 2828, 3198, - 2322, 2828, 3198, - 2321, 2828, 3198, - 2319, 2829, 3197, - 2317, 2829, 3197, - 2314, 2830, 3197, - 2309, 2830, 3196, - 2304, 2831, 3196, - 2296, 2832, 3195, - 2285, 2834, 3194, - 2270, 2836, 3192, - 2249, 2839, 3190, - 2220, 2842, 3188, - 2178, 2847, 3184, - 2115, 2853, 3179, - 2013, 2862, 3172, - 1828, 2872, 3163, - 1321, 2887, 3151, - 0, 2905, 3134, - 0, 2928, 3109, - 0, 2957, 3075, - 0, 2994, 3025, - 0, 3039, 2947, - 0, 3092, 2817, - 0, 3156, 2552, - 0, 3228, 0, - 0, 3310, 0, - 0, 3401, 0, - 0, 3499, 0, - 0, 3604, 0, - 0, 3715, 0, - 2680, 2841, 3237, - 2680, 2841, 3237, - 2680, 2841, 3237, - 2679, 2841, 3237, - 2678, 2841, 3237, - 2677, 2842, 3236, - 2676, 2842, 3236, - 2674, 2843, 3236, - 2671, 2844, 3235, - 2668, 2845, 3234, - 2663, 2846, 3233, - 2657, 2848, 3232, - 2648, 2851, 3230, - 2636, 2854, 3228, - 2620, 2859, 3224, - 2597, 2865, 3220, - 2564, 2873, 3214, - 2516, 2884, 3205, - 2444, 2898, 3194, - 2324, 2915, 3178, - 2088, 2938, 3157, - 1008, 2967, 3126, - 0, 3003, 3081, - 0, 3047, 3013, - 0, 3100, 2903, - 0, 3162, 2696, - 0, 3233, 2020, - 0, 3315, 0, - 0, 3404, 0, - 0, 3502, 0, - 0, 3607, 0, - 0, 3717, 0, - 2929, 2857, 3285, - 2929, 2857, 3285, - 2928, 2857, 3285, - 2928, 2858, 3284, - 2927, 2858, 3284, - 2927, 2858, 3284, - 2926, 2859, 3284, - 2925, 2859, 3283, - 2923, 2860, 3283, - 2921, 2861, 3282, - 2919, 2863, 3281, - 2915, 2864, 3280, - 2910, 2867, 3278, - 2903, 2870, 3276, - 2894, 2875, 3273, - 2882, 2881, 3269, - 2865, 2889, 3264, - 2841, 2899, 3256, - 2807, 2912, 3246, - 2757, 2929, 3232, - 2680, 2952, 3213, - 2551, 2980, 3186, - 2289, 3014, 3147, - 0, 3057, 3089, - 0, 3109, 2997, - 0, 3170, 2837, - 0, 3240, 2456, - 0, 3320, 0, - 0, 3409, 0, - 0, 3506, 0, - 0, 3610, 0, - 0, 3719, 0, - 3132, 2878, 3341, - 3132, 2878, 3341, - 3131, 2878, 3341, - 3131, 2879, 3341, - 3131, 2879, 3341, - 3130, 2879, 3341, - 3130, 2880, 3341, - 3129, 2880, 3340, - 3128, 2881, 3340, - 3127, 2882, 3339, - 3125, 2883, 3338, - 3123, 2885, 3337, - 3120, 2888, 3336, - 3116, 2891, 3334, - 3110, 2895, 3331, - 3102, 2901, 3328, - 3092, 2908, 3323, - 3077, 2918, 3316, - 3057, 2931, 3307, - 3029, 2947, 3295, - 2989, 2969, 3279, - 2928, 2996, 3255, - 2832, 3029, 3222, - 2659, 3071, 3173, - 2222, 3121, 3099, - 0, 3181, 2975, - 0, 3250, 2729, - 0, 3328, 1243, - 0, 3415, 0, - 0, 3511, 0, - 0, 3614, 0, - 0, 3723, 0, - 3310, 2905, 3408, - 3310, 2905, 3408, - 3310, 2905, 3408, - 3310, 2905, 3407, - 3310, 2906, 3407, - 3309, 2906, 3407, - 3309, 2906, 3407, - 3309, 2907, 3407, - 3308, 2907, 3406, - 3307, 2908, 3406, - 3306, 2910, 3405, - 3304, 2911, 3404, - 3302, 2914, 3403, - 3300, 2917, 3401, - 3296, 2921, 3399, - 3291, 2926, 3396, - 3284, 2933, 3392, - 3274, 2943, 3386, - 3262, 2955, 3378, - 3244, 2970, 3368, - 3219, 2991, 3354, - 3183, 3016, 3334, - 3131, 3049, 3306, - 3050, 3089, 3266, - 2912, 3137, 3207, - 2620, 3195, 3112, - 0, 3262, 2944, - 0, 3338, 2528, - 0, 3424, 0, - 0, 3518, 0, - 0, 3619, 0, - 0, 3727, 0, - 3474, 2938, 3483, - 3474, 2938, 3483, - 3474, 2939, 3483, - 3474, 2939, 3483, - 3474, 2939, 3483, - 3474, 2939, 3483, - 3474, 2940, 3483, - 3473, 2940, 3483, - 3473, 2941, 3482, - 3472, 2942, 3482, - 3471, 2943, 3481, - 3470, 2944, 3480, - 3469, 2947, 3479, - 3467, 2949, 3478, - 3464, 2953, 3476, - 3461, 2958, 3473, - 3456, 2965, 3470, - 3450, 2973, 3465, - 3441, 2985, 3459, - 3429, 3000, 3450, - 3413, 3019, 3438, - 3390, 3043, 3422, - 3357, 3073, 3399, - 3310, 3111, 3367, - 3237, 3157, 3320, - 3117, 3213, 3248, - 2883, 3277, 3129, - 1820, 3351, 2898, - 0, 3435, 1907, - 0, 3527, 0, - 0, 3626, 0, - 0, 3732, 0, - 3629, 2980, 3568, - 3629, 2980, 3568, - 3629, 2980, 3568, - 3629, 2980, 3568, - 3629, 2980, 3568, - 3629, 2980, 3568, - 3628, 2981, 3568, - 3628, 2981, 3568, - 3628, 2982, 3567, - 3627, 2983, 3567, - 3627, 2984, 3566, - 3626, 2985, 3566, - 3625, 2987, 3565, - 3624, 2990, 3564, - 3622, 2993, 3562, - 3619, 2998, 3560, - 3616, 3004, 3557, - 3612, 3012, 3553, - 3605, 3022, 3548, - 3597, 3036, 3541, - 3586, 3053, 3531, - 3570, 3076, 3518, - 3549, 3104, 3500, - 3518, 3140, 3474, - 3474, 3183, 3437, - 3406, 3235, 3382, - 3297, 3297, 3297, - 3092, 3368, 3151, - 2441, 3449, 2828, - 0, 3538, 0, - 0, 3636, 0, - 0, 3740, 0, - 3777, 3029, 3662, - 3777, 3029, 3662, - 3777, 3030, 3662, - 3777, 3030, 3661, - 3777, 3030, 3661, - 3777, 3030, 3661, - 3777, 3030, 3661, - 3777, 3031, 3661, - 3776, 3031, 3661, - 3776, 3032, 3660, - 3776, 3033, 3660, - 3775, 3034, 3660, - 3774, 3036, 3659, - 3773, 3038, 3658, - 3772, 3042, 3657, - 3770, 3046, 3655, - 3768, 3051, 3652, - 3765, 3058, 3649, - 3760, 3068, 3645, - 3754, 3080, 3639, - 3747, 3096, 3632, - 3736, 3117, 3621, - 3721, 3143, 3606, - 3700, 3175, 3586, - 3671, 3216, 3558, - 3628, 3265, 3516, - 3564, 3323, 3455, - 3462, 3390, 3356, - 3275, 3467, 3178, - 2755, 3554, 2715, - 0, 3648, 0, - 0, 3750, 0, - 3921, 3088, 3762, - 3921, 3088, 3762, - 3921, 3089, 3762, - 3921, 3089, 3762, - 3921, 3089, 3762, - 3921, 3089, 3762, - 3921, 3089, 3762, - 3921, 3090, 3762, - 3920, 3090, 3762, - 3920, 3091, 3761, - 3920, 3092, 3761, - 3919, 3093, 3761, - 3919, 3094, 3760, - 3918, 3096, 3759, - 3917, 3099, 3758, - 3916, 3103, 3757, - 3914, 3108, 3755, - 3912, 3114, 3753, - 3909, 3122, 3749, - 3905, 3133, 3745, - 3899, 3148, 3738, - 3891, 3166, 3730, - 3881, 3189, 3719, - 3866, 3219, 3703, - 3846, 3256, 3681, - 3817, 3301, 3650, - 3776, 3355, 3605, - 3715, 3418, 3536, - 3617, 3491, 3424, - 3441, 3573, 3213, - 2987, 3664, 2497, - 0, 3762, 0, - 4062, 3157, 3869, - 4062, 3157, 3869, - 4062, 3157, 3869, - 4062, 3157, 3869, - 4062, 3157, 3869, - 4061, 3158, 3869, - 4061, 3158, 3869, - 4061, 3158, 3869, - 4061, 3159, 3869, - 4061, 3159, 3869, - 4061, 3160, 3869, - 4060, 3161, 3868, - 4060, 3162, 3868, - 4060, 3164, 3867, - 4059, 3166, 3866, - 4058, 3169, 3865, - 4057, 3174, 3864, - 4055, 3179, 3862, - 4053, 3186, 3859, - 4050, 3196, 3856, - 4045, 3208, 3851, - 4040, 3224, 3844, - 4032, 3245, 3835, - 4022, 3271, 3823, - 4008, 3304, 3806, - 3988, 3345, 3783, - 3960, 3394, 3750, - 3920, 3452, 3701, - 3860, 3520, 3626, - 3766, 3598, 3502, - 3598, 3684, 3255, - 3182, 3779, 1720, - 4095, 3235, 3982, - 4095, 3235, 3982, - 4095, 3235, 3982, - 4095, 3235, 3982, - 4095, 3235, 3982, - 4095, 3236, 3982, - 4095, 3236, 3982, - 4095, 3236, 3982, - 4095, 3236, 3982, - 4095, 3237, 3981, - 4095, 3238, 3981, - 4095, 3238, 3981, - 4095, 3239, 3981, - 4095, 3241, 3980, - 4095, 3243, 3979, - 4095, 3246, 3979, - 4095, 3249, 3978, - 4095, 3254, 3976, - 4095, 3260, 3974, - 4095, 3268, 3971, - 4095, 3279, 3967, - 4095, 3293, 3962, - 4095, 3310, 3956, - 4095, 3333, 3946, - 4095, 3362, 3934, - 4095, 3398, 3916, - 4095, 3442, 3891, - 4095, 3495, 3856, - 4061, 3557, 3804, - 4002, 3629, 3724, - 3910, 3710, 3589, - 3747, 3800, 3306, - 4095, 3322, 4095, - 4095, 3322, 4095, - 4095, 3322, 4095, - 4095, 3322, 4095, - 4095, 3322, 4095, - 4095, 3323, 4095, - 4095, 3323, 4095, - 4095, 3323, 4095, - 4095, 3323, 4095, - 4095, 3324, 4095, - 4095, 3324, 4095, - 4095, 3325, 4095, - 4095, 3326, 4095, - 4095, 3327, 4095, - 4095, 3329, 4095, - 4095, 3331, 4095, - 4095, 3334, 4095, - 4095, 3338, 4094, - 4095, 3343, 4093, - 4095, 3350, 4090, - 4095, 3358, 4088, - 4095, 3370, 4084, - 4095, 3385, 4079, - 4095, 3405, 4071, - 4095, 3429, 4062, - 4095, 3461, 4049, - 4095, 3499, 4030, - 4095, 3546, 4005, - 4095, 3602, 3968, - 4095, 3668, 3914, - 4095, 3743, 3829, - 4051, 3827, 3684, - 0, 2920, 3190, - 0, 2920, 3189, - 0, 2921, 3189, - 0, 2921, 3189, - 0, 2921, 3189, - 0, 2921, 3189, - 0, 2922, 3188, - 0, 2922, 3188, - 0, 2923, 3187, - 0, 2924, 3186, - 0, 2925, 3185, - 0, 2927, 3184, - 0, 2929, 3182, - 0, 2932, 3179, - 0, 2936, 3175, - 0, 2941, 3170, - 0, 2948, 3163, - 0, 2957, 3154, - 0, 2969, 3141, - 0, 2984, 3124, - 0, 3004, 3099, - 0, 3029, 3064, - 0, 3060, 3012, - 0, 3099, 2932, - 0, 3146, 2798, - 0, 3203, 2515, - 0, 3269, 0, - 0, 3344, 0, - 0, 3429, 0, - 0, 3522, 0, - 0, 3622, 0, - 0, 3729, 0, - 0, 2920, 3190, - 0, 2920, 3190, - 0, 2921, 3189, - 0, 2921, 3189, - 0, 2921, 3189, - 0, 2921, 3189, - 0, 2922, 3189, - 0, 2922, 3188, - 0, 2923, 3187, - 0, 2924, 3187, - 0, 2925, 3185, - 0, 2927, 3184, - 0, 2929, 3182, - 0, 2932, 3179, - 0, 2936, 3175, - 0, 2941, 3170, - 0, 2948, 3163, - 0, 2957, 3154, - 0, 2969, 3142, - 0, 2984, 3124, - 0, 3004, 3099, - 0, 3029, 3064, - 0, 3060, 3013, - 0, 3099, 2933, - 0, 3146, 2798, - 0, 3203, 2516, - 0, 3269, 0, - 0, 3344, 0, - 0, 3429, 0, - 0, 3522, 0, - 0, 3622, 0, - 0, 3729, 0, - 0, 2920, 3190, - 0, 2921, 3190, - 0, 2921, 3190, - 0, 2921, 3189, - 0, 2921, 3189, - 0, 2921, 3189, - 0, 2922, 3189, - 0, 2922, 3188, - 0, 2923, 3188, - 0, 2924, 3187, - 0, 2925, 3186, - 0, 2927, 3184, - 0, 2929, 3182, - 0, 2932, 3179, - 0, 2936, 3176, - 0, 2941, 3170, - 0, 2948, 3164, - 0, 2957, 3154, - 0, 2969, 3142, - 0, 2984, 3124, - 0, 3004, 3100, - 0, 3029, 3064, - 0, 3060, 3013, - 0, 3099, 2933, - 0, 3146, 2798, - 0, 3203, 2517, - 0, 3269, 0, - 0, 3344, 0, - 0, 3429, 0, - 0, 3522, 0, - 0, 3622, 0, - 0, 3729, 0, - 0, 2920, 3190, - 0, 2921, 3190, - 0, 2921, 3190, - 0, 2921, 3190, - 0, 2921, 3190, - 0, 2921, 3189, - 0, 2922, 3189, - 0, 2922, 3188, - 0, 2923, 3188, - 0, 2924, 3187, - 0, 2925, 3186, - 0, 2927, 3184, - 0, 2929, 3182, - 0, 2932, 3179, - 0, 2936, 3176, - 0, 2941, 3171, - 0, 2948, 3164, - 0, 2957, 3155, - 0, 2969, 3142, - 0, 2984, 3124, - 0, 3004, 3100, - 0, 3029, 3065, - 0, 3060, 3013, - 0, 3099, 2933, - 0, 3146, 2799, - 0, 3203, 2518, - 0, 3269, 0, - 0, 3344, 0, - 0, 3429, 0, - 0, 3522, 0, - 0, 3622, 0, - 0, 3729, 0, - 0, 2921, 3190, - 0, 2921, 3190, - 0, 2921, 3190, - 0, 2921, 3190, - 0, 2921, 3190, - 0, 2921, 3190, - 0, 2922, 3189, - 0, 2922, 3189, - 0, 2923, 3188, - 0, 2924, 3187, - 0, 2925, 3186, - 0, 2927, 3185, - 0, 2929, 3183, - 0, 2932, 3180, - 0, 2936, 3176, - 0, 2941, 3171, - 0, 2948, 3164, - 0, 2957, 3155, - 0, 2969, 3142, - 0, 2984, 3125, - 0, 3004, 3100, - 0, 3029, 3065, - 0, 3060, 3014, - 0, 3099, 2934, - 0, 3146, 2799, - 0, 3203, 2519, - 0, 3269, 0, - 0, 3344, 0, - 0, 3429, 0, - 0, 3522, 0, - 0, 3622, 0, - 0, 3729, 0, - 0, 2921, 3191, - 0, 2921, 3191, - 0, 2921, 3191, - 0, 2921, 3190, - 0, 2921, 3190, - 0, 2922, 3190, - 0, 2922, 3190, - 0, 2922, 3189, - 0, 2923, 3188, - 0, 2924, 3188, - 0, 2925, 3187, - 0, 2927, 3185, - 0, 2929, 3183, - 0, 2932, 3180, - 0, 2936, 3176, - 0, 2941, 3171, - 0, 2948, 3165, - 0, 2957, 3155, - 0, 2969, 3143, - 0, 2984, 3125, - 0, 3004, 3101, - 0, 3029, 3066, - 0, 3060, 3014, - 0, 3099, 2935, - 0, 3146, 2800, - 0, 3203, 2521, - 0, 3269, 0, - 0, 3344, 0, - 0, 3429, 0, - 0, 3522, 0, - 0, 3622, 0, - 0, 3729, 0, - 0, 2921, 3191, - 0, 2921, 3191, - 0, 2921, 3191, - 0, 2921, 3191, - 0, 2921, 3191, - 0, 2922, 3190, - 0, 2922, 3190, - 0, 2923, 3190, - 0, 2923, 3189, - 0, 2924, 3188, - 0, 2925, 3187, - 0, 2927, 3186, - 0, 2929, 3183, - 0, 2932, 3181, - 0, 2936, 3177, - 0, 2941, 3172, - 0, 2948, 3165, - 0, 2957, 3156, - 0, 2969, 3143, - 0, 2984, 3126, - 0, 3004, 3101, - 0, 3029, 3066, - 0, 3060, 3015, - 0, 3099, 2936, - 0, 3147, 2802, - 0, 3203, 2523, - 0, 3269, 0, - 0, 3344, 0, - 0, 3429, 0, - 0, 3522, 0, - 0, 3623, 0, - 0, 3729, 0, - 0, 2921, 3192, - 0, 2921, 3192, - 0, 2921, 3192, - 0, 2921, 3192, - 0, 2922, 3191, - 0, 2922, 3191, - 0, 2922, 3191, - 0, 2923, 3190, - 0, 2923, 3190, - 0, 2924, 3189, - 0, 2926, 3188, - 0, 2927, 3186, - 0, 2930, 3184, - 0, 2933, 3181, - 0, 2936, 3178, - 0, 2942, 3173, - 0, 2948, 3166, - 0, 2957, 3157, - 0, 2969, 3144, - 0, 2984, 3127, - 0, 3004, 3102, - 0, 3029, 3067, - 0, 3061, 3016, - 0, 3099, 2937, - 0, 3147, 2803, - 0, 3203, 2526, - 0, 3269, 0, - 0, 3344, 0, - 0, 3429, 0, - 0, 3522, 0, - 0, 3623, 0, - 0, 3730, 0, - 0, 2921, 3193, - 0, 2921, 3193, - 0, 2921, 3193, - 0, 2922, 3193, - 0, 2922, 3192, - 0, 2922, 3192, - 0, 2922, 3192, - 0, 2923, 3191, - 0, 2924, 3191, - 0, 2925, 3190, - 0, 2926, 3189, - 0, 2928, 3187, - 0, 2930, 3185, - 0, 2933, 3182, - 0, 2937, 3179, - 0, 2942, 3174, - 0, 2949, 3167, - 0, 2958, 3158, - 0, 2969, 3145, - 0, 2985, 3128, - 0, 3004, 3103, - 0, 3029, 3069, - 0, 3061, 3017, - 0, 3100, 2938, - 0, 3147, 2806, - 0, 3203, 2530, - 0, 3269, 0, - 0, 3345, 0, - 0, 3429, 0, - 0, 3522, 0, - 0, 3623, 0, - 0, 3730, 0, - 0, 2922, 3194, - 0, 2922, 3194, - 0, 2922, 3194, - 0, 2922, 3194, - 0, 2922, 3194, - 0, 2922, 3193, - 0, 2923, 3193, - 0, 2923, 3193, - 0, 2924, 3192, - 0, 2925, 3191, - 0, 2926, 3190, - 0, 2928, 3188, - 0, 2930, 3186, - 0, 2933, 3184, - 0, 2937, 3180, - 0, 2942, 3175, - 0, 2949, 3168, - 0, 2958, 3159, - 0, 2970, 3147, - 0, 2985, 3129, - 0, 3005, 3105, - 0, 3030, 3070, - 0, 3061, 3019, - 0, 3100, 2941, - 0, 3147, 2808, - 0, 3203, 2536, - 0, 3269, 0, - 0, 3345, 0, - 0, 3429, 0, - 0, 3522, 0, - 0, 3623, 0, - 0, 3730, 0, - 0, 2922, 3196, - 0, 2922, 3196, - 0, 2922, 3196, - 0, 2922, 3196, - 0, 2923, 3195, - 0, 2923, 3195, - 0, 2923, 3195, - 0, 2924, 3194, - 0, 2924, 3194, - 0, 2925, 3193, - 0, 2927, 3192, - 0, 2928, 3190, - 0, 2931, 3188, - 0, 2933, 3185, - 0, 2937, 3182, - 0, 2943, 3177, - 0, 2949, 3170, - 0, 2958, 3161, - 0, 2970, 3148, - 0, 2985, 3131, - 0, 3005, 3107, - 0, 3030, 3072, - 0, 3061, 3022, - 0, 3100, 2944, - 0, 3147, 2812, - 0, 3204, 2543, - 0, 3269, 0, - 0, 3345, 0, - 0, 3429, 0, - 0, 3522, 0, - 0, 3623, 0, - 0, 3730, 0, - 0, 2923, 3198, - 0, 2923, 3198, - 0, 2923, 3198, - 0, 2923, 3198, - 0, 2923, 3198, - 0, 2923, 3197, - 0, 2924, 3197, - 0, 2924, 3197, - 0, 2925, 3196, - 0, 2926, 3195, - 0, 2927, 3194, - 0, 2929, 3192, - 0, 2931, 3190, - 0, 2934, 3188, - 0, 2938, 3184, - 0, 2943, 3179, - 0, 2950, 3172, - 0, 2959, 3163, - 0, 2971, 3151, - 0, 2986, 3134, - 0, 3005, 3110, - 0, 3030, 3075, - 0, 3062, 3025, - 0, 3100, 2947, - 0, 3148, 2818, - 0, 3204, 2552, - 0, 3270, 0, - 0, 3345, 0, - 0, 3430, 0, - 0, 3522, 0, - 0, 3623, 0, - 0, 3730, 0, - 0, 2923, 3201, - 0, 2923, 3201, - 0, 2924, 3201, - 0, 2924, 3201, - 0, 2924, 3201, - 0, 2924, 3200, - 0, 2925, 3200, - 0, 2925, 3200, - 0, 2926, 3199, - 0, 2927, 3198, - 0, 2928, 3197, - 0, 2930, 3195, - 0, 2932, 3193, - 0, 2935, 3191, - 0, 2939, 3187, - 0, 2944, 3182, - 0, 2951, 3176, - 0, 2960, 3167, - 0, 2971, 3154, - 0, 2986, 3137, - 0, 3006, 3113, - 0, 3031, 3079, - 0, 3062, 3029, - 0, 3101, 2953, - 0, 3148, 2824, - 0, 3204, 2564, - 0, 3270, 0, - 0, 3345, 0, - 0, 3430, 0, - 0, 3523, 0, - 0, 3623, 0, - 0, 3730, 0, - 0, 2924, 3205, - 0, 2924, 3205, - 0, 2925, 3205, - 0, 2925, 3205, - 0, 2925, 3205, - 0, 2925, 3204, - 0, 2926, 3204, - 0, 2926, 3203, - 0, 2927, 3203, - 0, 2928, 3202, - 0, 2929, 3201, - 0, 2931, 3199, - 0, 2933, 3197, - 0, 2936, 3195, - 0, 2940, 3191, - 0, 2945, 3186, - 0, 2952, 3180, - 0, 2961, 3171, - 0, 2972, 3159, - 0, 2987, 3142, - 0, 3007, 3118, - 0, 3032, 3084, - 0, 3063, 3035, - 0, 3102, 2959, - 0, 3149, 2833, - 0, 3205, 2580, - 0, 3271, 0, - 0, 3346, 0, - 0, 3430, 0, - 0, 3523, 0, - 0, 3623, 0, - 0, 3730, 0, - 0, 2926, 3210, - 0, 2926, 3210, - 0, 2926, 3210, - 0, 2926, 3210, - 0, 2926, 3210, - 0, 2927, 3210, - 0, 2927, 3209, - 0, 2927, 3209, - 0, 2928, 3208, - 0, 2929, 3207, - 0, 2930, 3206, - 0, 2932, 3205, - 0, 2934, 3203, - 0, 2937, 3200, - 0, 2941, 3197, - 0, 2946, 3192, - 0, 2953, 3185, - 0, 2962, 3176, - 0, 2973, 3164, - 0, 2989, 3148, - 0, 3008, 3124, - 0, 3033, 3091, - 0, 3064, 3043, - 0, 3103, 2968, - 0, 3150, 2845, - 0, 3206, 2601, - 0, 3271, 1202, - 0, 3346, 0, - 0, 3431, 0, - 0, 3523, 0, - 0, 3624, 0, - 0, 3730, 0, - 0, 2927, 3217, - 0, 2928, 3217, - 0, 2928, 3217, - 0, 2928, 3217, - 0, 2928, 3217, - 0, 2928, 3216, - 0, 2929, 3216, - 0, 2929, 3216, - 0, 2930, 3215, - 0, 2931, 3214, - 0, 2932, 3213, - 0, 2934, 3212, - 0, 2936, 3210, - 0, 2939, 3207, - 0, 2943, 3204, - 0, 2948, 3199, - 0, 2955, 3193, - 0, 2963, 3184, - 0, 2975, 3172, - 0, 2990, 3156, - 0, 3010, 3133, - 0, 3034, 3100, - 0, 3065, 3053, - 0, 3104, 2980, - 0, 3151, 2860, - 0, 3207, 2626, - 0, 3272, 1575, - 0, 3347, 0, - 0, 3431, 0, - 0, 3524, 0, - 0, 3624, 0, - 0, 3731, 0, - 0, 2930, 3226, - 0, 2930, 3226, - 0, 2930, 3226, - 0, 2930, 3226, - 0, 2930, 3226, - 0, 2931, 3226, - 0, 2931, 3225, - 0, 2932, 3225, - 0, 2932, 3224, - 0, 2933, 3223, - 0, 2934, 3222, - 0, 2936, 3221, - 0, 2938, 3219, - 0, 2941, 3216, - 0, 2945, 3213, - 0, 2950, 3208, - 0, 2957, 3202, - 0, 2966, 3194, - 0, 2977, 3182, - 0, 2992, 3166, - 0, 3012, 3144, - 0, 3036, 3112, - 0, 3067, 3066, - 0, 3105, 2995, - 0, 3152, 2880, - 0, 3208, 2659, - 0, 3273, 1829, - 0, 3348, 0, - 0, 3432, 0, - 0, 3524, 0, - 0, 3624, 0, - 0, 3731, 0, - 0, 2933, 3238, - 0, 2933, 3238, - 0, 2933, 3238, - 0, 2933, 3238, - 0, 2934, 3238, - 0, 2934, 3237, - 0, 2934, 3237, - 0, 2935, 3237, - 0, 2936, 3236, - 0, 2936, 3235, - 0, 2938, 3234, - 0, 2939, 3233, - 0, 2941, 3231, - 0, 2944, 3229, - 0, 2948, 3225, - 0, 2953, 3221, - 0, 2960, 3215, - 0, 2969, 3206, - 0, 2980, 3195, - 0, 2995, 3179, - 0, 3014, 3158, - 0, 3039, 3127, - 0, 3069, 3082, - 0, 3108, 3015, - 0, 3154, 2905, - 0, 3210, 2699, - 0, 3275, 2034, - 0, 3349, 0, - 0, 3433, 0, - 0, 3525, 0, - 0, 3625, 0, - 0, 3732, 0, - 0, 2937, 3254, - 0, 2937, 3253, - 0, 2938, 3253, - 0, 2938, 3253, - 0, 2938, 3253, - 0, 2938, 3253, - 0, 2939, 3252, - 0, 2939, 3252, - 0, 2940, 3252, - 0, 2941, 3251, - 0, 2942, 3250, - 0, 2943, 3248, - 0, 2946, 3247, - 0, 2948, 3244, - 0, 2952, 3241, - 0, 2957, 3237, - 0, 2964, 3231, - 0, 2973, 3223, - 0, 2984, 3212, - 0, 2999, 3197, - 0, 3018, 3176, - 0, 3042, 3147, - 0, 3073, 3104, - 0, 3110, 3040, - 0, 3157, 2937, - 0, 3212, 2747, - 0, 3277, 2215, - 0, 3351, 0, - 0, 3434, 0, - 0, 3526, 0, - 0, 3626, 0, - 0, 3732, 0, - 0, 2943, 3273, - 0, 2943, 3273, - 0, 2943, 3273, - 0, 2943, 3273, - 0, 2944, 3273, - 0, 2944, 3273, - 0, 2944, 3272, - 0, 2945, 3272, - 0, 2945, 3271, - 0, 2946, 3271, - 0, 2947, 3270, - 0, 2949, 3268, - 0, 2951, 3267, - 0, 2954, 3264, - 0, 2958, 3261, - 0, 2963, 3257, - 0, 2969, 3252, - 0, 2978, 3244, - 0, 2989, 3234, - 0, 3004, 3219, - 0, 3022, 3199, - 0, 3046, 3171, - 0, 3077, 3131, - 0, 3114, 3071, - 0, 3160, 2976, - 0, 3215, 2805, - 0, 3279, 2380, - 0, 3353, 0, - 0, 3436, 0, - 0, 3528, 0, - 0, 3627, 0, - 0, 3733, 0, - 1458, 2950, 3298, - 1453, 2950, 3298, - 1446, 2951, 3298, - 1437, 2951, 3298, - 1424, 2951, 3298, - 1407, 2951, 3298, - 1383, 2952, 3298, - 1348, 2952, 3297, - 1297, 2953, 3297, - 1219, 2954, 3296, - 1088, 2955, 3295, - 818, 2956, 3294, - 0, 2958, 3292, - 0, 2961, 3290, - 0, 2965, 3287, - 0, 2970, 3283, - 0, 2976, 3278, - 0, 2985, 3271, - 0, 2996, 3261, - 0, 3010, 3248, - 0, 3029, 3229, - 0, 3052, 3203, - 0, 3082, 3165, - 0, 3119, 3110, - 0, 3165, 3023, - 0, 3219, 2873, - 0, 3283, 2535, - 0, 3356, 0, - 0, 3439, 0, - 0, 3530, 0, - 0, 3629, 0, - 0, 3735, 0, - 2457, 2960, 3330, - 2456, 2960, 3330, - 2456, 2960, 3330, - 2455, 2960, 3330, - 2453, 2961, 3330, - 2451, 2961, 3330, - 2449, 2961, 3329, - 2446, 2962, 3329, - 2442, 2962, 3328, - 2436, 2963, 3328, - 2428, 2964, 3327, - 2417, 2966, 3326, - 2402, 2968, 3324, - 2382, 2971, 3322, - 2352, 2974, 3320, - 2310, 2979, 3316, - 2247, 2985, 3311, - 2145, 2994, 3304, - 1960, 3004, 3295, - 1453, 3019, 3283, - 0, 3037, 3266, - 0, 3060, 3242, - 0, 3090, 3207, - 0, 3126, 3157, - 0, 3171, 3079, - 0, 3225, 2949, - 0, 3288, 2684, - 0, 3360, 0, - 0, 3442, 0, - 0, 3533, 0, - 0, 3631, 0, - 0, 3736, 0, - 2813, 2973, 3369, - 2813, 2973, 3369, - 2812, 2973, 3369, - 2812, 2973, 3369, - 2811, 2973, 3369, - 2810, 2974, 3369, - 2809, 2974, 3369, - 2808, 2974, 3368, - 2806, 2975, 3368, - 2803, 2976, 3367, - 2800, 2977, 3366, - 2795, 2978, 3365, - 2789, 2980, 3364, - 2780, 2983, 3362, - 2768, 2987, 3360, - 2752, 2991, 3356, - 2729, 2997, 3352, - 2696, 3005, 3346, - 2648, 3016, 3337, - 2576, 3030, 3326, - 2456, 3048, 3310, - 2220, 3070, 3289, - 1140, 3099, 3258, - 0, 3135, 3213, - 0, 3179, 3145, - 0, 3232, 3035, - 0, 3294, 2828, - 0, 3366, 2152, - 0, 3447, 0, - 0, 3536, 0, - 0, 3634, 0, - 0, 3739, 0, - 3061, 2989, 3417, - 3061, 2989, 3417, - 3061, 2989, 3417, - 3060, 2989, 3417, - 3060, 2990, 3417, - 3060, 2990, 3416, - 3059, 2990, 3416, - 3058, 2991, 3416, - 3057, 2991, 3415, - 3055, 2992, 3415, - 3053, 2993, 3414, - 3051, 2995, 3413, - 3047, 2997, 3412, - 3042, 2999, 3410, - 3036, 3002, 3408, - 3027, 3007, 3405, - 3014, 3013, 3401, - 2997, 3021, 3396, - 2973, 3031, 3388, - 2939, 3044, 3378, - 2889, 3062, 3364, - 2812, 3084, 3345, - 2683, 3112, 3318, - 2421, 3147, 3279, - 0, 3189, 3221, - 0, 3241, 3129, - 0, 3302, 2969, - 0, 3373, 2588, - 0, 3452, 0, - 0, 3541, 0, - 0, 3638, 0, - 0, 3742, 0, - 3264, 3010, 3474, - 3264, 3010, 3474, - 3264, 3010, 3473, - 3263, 3010, 3473, - 3263, 3011, 3473, - 3263, 3011, 3473, - 3263, 3011, 3473, - 3262, 3012, 3473, - 3261, 3012, 3472, - 3260, 3013, 3472, - 3259, 3014, 3471, - 3257, 3015, 3470, - 3255, 3017, 3469, - 3252, 3020, 3468, - 3248, 3023, 3466, - 3242, 3027, 3463, - 3234, 3033, 3460, - 3224, 3040, 3455, - 3210, 3050, 3448, - 3190, 3063, 3440, - 3161, 3080, 3427, - 3121, 3101, 3411, - 3060, 3128, 3387, - 2964, 3162, 3354, - 2791, 3203, 3305, - 2354, 3253, 3231, - 0, 3313, 3107, - 0, 3382, 2861, - 0, 3460, 1375, - 0, 3548, 0, - 0, 3643, 0, - 0, 3746, 0, - 3442, 3037, 3540, - 3442, 3037, 3540, - 3442, 3037, 3540, - 3442, 3037, 3540, - 3442, 3037, 3540, - 3442, 3038, 3539, - 3442, 3038, 3539, - 3441, 3038, 3539, - 3441, 3039, 3539, - 3440, 3040, 3538, - 3439, 3041, 3538, - 3438, 3042, 3537, - 3437, 3044, 3536, - 3434, 3046, 3535, - 3432, 3049, 3533, - 3428, 3053, 3531, - 3423, 3058, 3528, - 3416, 3065, 3524, - 3407, 3075, 3518, - 3394, 3087, 3511, - 3376, 3103, 3500, - 3351, 3123, 3486, - 3315, 3149, 3466, - 3263, 3181, 3438, - 3182, 3221, 3398, - 3044, 3269, 3339, - 2752, 3327, 3244, - 0, 3394, 3076, - 0, 3470, 2660, - 0, 3556, 0, - 0, 3650, 0, - 0, 3751, 0, - 3606, 3070, 3616, - 3606, 3070, 3616, - 3606, 3071, 3616, - 3606, 3071, 3615, - 3606, 3071, 3615, - 3606, 3071, 3615, - 3606, 3071, 3615, - 3606, 3072, 3615, - 3605, 3072, 3615, - 3605, 3073, 3614, - 3604, 3074, 3614, - 3603, 3075, 3613, - 3602, 3077, 3613, - 3601, 3079, 3611, - 3599, 3082, 3610, - 3596, 3085, 3608, - 3593, 3090, 3605, - 3588, 3097, 3602, - 3582, 3106, 3597, - 3573, 3117, 3591, - 3561, 3132, 3582, - 3545, 3151, 3570, - 3522, 3175, 3554, - 3489, 3205, 3531, - 3442, 3243, 3499, - 3369, 3289, 3452, - 3249, 3345, 3380, - 3015, 3409, 3261, - 1952, 3483, 3030, - 0, 3567, 2039, - 0, 3659, 0, - 0, 3758, 0, - 3761, 3112, 3700, - 3761, 3112, 3700, - 3761, 3112, 3700, - 3761, 3112, 3700, - 3761, 3112, 3700, - 3761, 3112, 3700, - 3761, 3112, 3700, - 3760, 3113, 3700, - 3760, 3113, 3700, - 3760, 3114, 3699, - 3759, 3115, 3699, - 3759, 3116, 3699, - 3758, 3117, 3698, - 3757, 3119, 3697, - 3756, 3122, 3696, - 3754, 3125, 3694, - 3751, 3130, 3692, - 3748, 3136, 3689, - 3744, 3144, 3685, - 3738, 3154, 3680, - 3729, 3168, 3673, - 3718, 3185, 3663, - 3702, 3208, 3650, - 3681, 3236, 3632, - 3650, 3272, 3606, - 3606, 3315, 3569, - 3538, 3368, 3514, - 3429, 3429, 3429, - 3224, 3501, 3283, - 2573, 3581, 2960, - 0, 3671, 0, - 0, 3768, 0, - 3909, 3161, 3794, - 3909, 3161, 3794, - 3909, 3162, 3794, - 3909, 3162, 3794, - 3909, 3162, 3794, - 3909, 3162, 3794, - 3909, 3162, 3793, - 3909, 3162, 3793, - 3909, 3163, 3793, - 3908, 3163, 3793, - 3908, 3164, 3793, - 3908, 3165, 3792, - 3907, 3166, 3792, - 3906, 3168, 3791, - 3905, 3171, 3790, - 3904, 3174, 3789, - 3902, 3178, 3787, - 3900, 3183, 3785, - 3897, 3190, 3781, - 3892, 3200, 3777, - 3887, 3212, 3771, - 3879, 3228, 3764, - 3868, 3249, 3753, - 3853, 3275, 3739, - 3832, 3307, 3718, - 3803, 3348, 3690, - 3760, 3397, 3648, - 3696, 3455, 3587, - 3594, 3522, 3488, - 3407, 3599, 3311, - 2887, 3686, 2847, - 0, 3780, 0, - 4053, 3220, 3894, - 4053, 3221, 3894, - 4053, 3221, 3894, - 4053, 3221, 3894, - 4053, 3221, 3894, - 4053, 3221, 3894, - 4053, 3221, 3894, - 4053, 3221, 3894, - 4053, 3222, 3894, - 4052, 3222, 3894, - 4052, 3223, 3894, - 4052, 3224, 3893, - 4052, 3225, 3893, - 4051, 3226, 3892, - 4050, 3229, 3891, - 4049, 3231, 3890, - 4048, 3235, 3889, - 4046, 3240, 3887, - 4044, 3246, 3885, - 4041, 3254, 3881, - 4037, 3265, 3877, - 4031, 3280, 3871, - 4023, 3298, 3862, - 4013, 3321, 3851, - 3998, 3351, 3835, - 3978, 3388, 3813, - 3950, 3433, 3782, - 3908, 3487, 3737, - 3847, 3550, 3668, - 3749, 3623, 3557, - 3573, 3705, 3345, - 3119, 3796, 2630, - 4095, 3289, 4002, - 4095, 3289, 4002, - 4095, 3289, 4002, - 4095, 3289, 4002, - 4095, 3289, 4001, - 4095, 3290, 4001, - 4095, 3290, 4001, - 4095, 3290, 4001, - 4095, 3290, 4001, - 4095, 3291, 4001, - 4095, 3291, 4001, - 4095, 3292, 4001, - 4095, 3293, 4000, - 4095, 3294, 4000, - 4095, 3296, 3999, - 4095, 3298, 3998, - 4095, 3302, 3997, - 4095, 3306, 3996, - 4095, 3311, 3994, - 4095, 3318, 3991, - 4095, 3328, 3988, - 4095, 3340, 3983, - 4095, 3357, 3976, - 4095, 3377, 3967, - 4095, 3403, 3955, - 4095, 3436, 3939, - 4095, 3477, 3915, - 4092, 3526, 3882, - 4052, 3585, 3833, - 3993, 3653, 3758, - 3898, 3730, 3634, - 3730, 3816, 3387, - 4095, 3367, 4095, - 4095, 3367, 4095, - 4095, 3367, 4095, - 4095, 3367, 4095, - 4095, 3367, 4095, - 4095, 3368, 4095, - 4095, 3368, 4095, - 4095, 3368, 4095, - 4095, 3368, 4095, - 4095, 3369, 4095, - 4095, 3369, 4095, - 4095, 3370, 4095, - 4095, 3370, 4095, - 4095, 3372, 4095, - 4095, 3373, 4095, - 4095, 3375, 4095, - 4095, 3378, 4095, - 4095, 3381, 4095, - 4095, 3386, 4095, - 4095, 3392, 4095, - 4095, 3400, 4095, - 4095, 3411, 4095, - 4095, 3425, 4094, - 4095, 3442, 4088, - 4095, 3465, 4078, - 4095, 3494, 4066, - 4095, 3530, 4048, - 4095, 3574, 4023, - 4095, 3627, 3988, - 4095, 3689, 3936, - 4095, 3761, 3857, - 4042, 3842, 3721, - 0, 3052, 3322, - 0, 3052, 3322, - 0, 3053, 3321, - 0, 3053, 3321, - 0, 3053, 3321, - 0, 3053, 3321, - 0, 3053, 3321, - 0, 3054, 3320, - 0, 3054, 3320, - 0, 3055, 3319, - 0, 3056, 3318, - 0, 3057, 3317, - 0, 3059, 3316, - 0, 3061, 3314, - 0, 3064, 3311, - 0, 3068, 3307, - 0, 3073, 3302, - 0, 3080, 3295, - 0, 3089, 3286, - 0, 3101, 3273, - 0, 3116, 3256, - 0, 3136, 3231, - 0, 3161, 3196, - 0, 3192, 3144, - 0, 3231, 3064, - 0, 3278, 2929, - 0, 3335, 2647, - 0, 3401, 0, - 0, 3476, 0, - 0, 3561, 0, - 0, 3654, 0, - 0, 3755, 0, - 0, 3052, 3322, - 0, 3052, 3322, - 0, 3053, 3322, - 0, 3053, 3321, - 0, 3053, 3321, - 0, 3053, 3321, - 0, 3053, 3321, - 0, 3054, 3320, - 0, 3054, 3320, - 0, 3055, 3319, - 0, 3056, 3319, - 0, 3057, 3317, - 0, 3059, 3316, - 0, 3061, 3314, - 0, 3064, 3311, - 0, 3068, 3307, - 0, 3073, 3302, - 0, 3080, 3295, - 0, 3089, 3286, - 0, 3101, 3273, - 0, 3116, 3256, - 0, 3136, 3231, - 0, 3161, 3196, - 0, 3192, 3144, - 0, 3231, 3065, - 0, 3278, 2930, - 0, 3335, 2648, - 0, 3401, 0, - 0, 3476, 0, - 0, 3561, 0, - 0, 3654, 0, - 0, 3755, 0, - 0, 3052, 3322, - 0, 3052, 3322, - 0, 3053, 3322, - 0, 3053, 3322, - 0, 3053, 3321, - 0, 3053, 3321, - 0, 3053, 3321, - 0, 3054, 3321, - 0, 3054, 3320, - 0, 3055, 3319, - 0, 3056, 3319, - 0, 3057, 3318, - 0, 3059, 3316, - 0, 3061, 3314, - 0, 3064, 3311, - 0, 3068, 3307, - 0, 3073, 3302, - 0, 3080, 3296, - 0, 3089, 3286, - 0, 3101, 3274, - 0, 3116, 3256, - 0, 3136, 3231, - 0, 3161, 3196, - 0, 3192, 3145, - 0, 3231, 3065, - 0, 3278, 2930, - 0, 3335, 2648, - 0, 3401, 0, - 0, 3476, 0, - 0, 3561, 0, - 0, 3654, 0, - 0, 3755, 0, - 0, 3052, 3322, - 0, 3053, 3322, - 0, 3053, 3322, - 0, 3053, 3322, - 0, 3053, 3322, - 0, 3053, 3321, - 0, 3053, 3321, - 0, 3054, 3321, - 0, 3054, 3320, - 0, 3055, 3320, - 0, 3056, 3319, - 0, 3057, 3318, - 0, 3059, 3316, - 0, 3061, 3314, - 0, 3064, 3311, - 0, 3068, 3308, - 0, 3073, 3303, - 0, 3080, 3296, - 0, 3089, 3286, - 0, 3101, 3274, - 0, 3116, 3256, - 0, 3136, 3232, - 0, 3161, 3197, - 0, 3192, 3145, - 0, 3231, 3065, - 0, 3278, 2930, - 0, 3335, 2649, - 0, 3401, 0, - 0, 3476, 0, - 0, 3561, 0, - 0, 3654, 0, - 0, 3755, 0, - 0, 3053, 3322, - 0, 3053, 3322, - 0, 3053, 3322, - 0, 3053, 3322, - 0, 3053, 3322, - 0, 3053, 3322, - 0, 3053, 3321, - 0, 3054, 3321, - 0, 3054, 3321, - 0, 3055, 3320, - 0, 3056, 3319, - 0, 3057, 3318, - 0, 3059, 3316, - 0, 3061, 3314, - 0, 3064, 3312, - 0, 3068, 3308, - 0, 3073, 3303, - 0, 3080, 3296, - 0, 3089, 3287, - 0, 3101, 3274, - 0, 3116, 3256, - 0, 3136, 3232, - 0, 3161, 3197, - 0, 3192, 3145, - 0, 3231, 3065, - 0, 3278, 2931, - 0, 3335, 2650, - 0, 3401, 0, - 0, 3476, 0, - 0, 3561, 0, - 0, 3654, 0, - 0, 3755, 0, - 0, 3053, 3323, - 0, 3053, 3322, - 0, 3053, 3322, - 0, 3053, 3322, - 0, 3053, 3322, - 0, 3053, 3322, - 0, 3054, 3322, - 0, 3054, 3321, - 0, 3054, 3321, - 0, 3055, 3320, - 0, 3056, 3319, - 0, 3057, 3318, - 0, 3059, 3317, - 0, 3061, 3315, - 0, 3064, 3312, - 0, 3068, 3308, - 0, 3073, 3303, - 0, 3080, 3296, - 0, 3089, 3287, - 0, 3101, 3274, - 0, 3116, 3257, - 0, 3136, 3232, - 0, 3161, 3197, - 0, 3192, 3146, - 0, 3231, 3066, - 0, 3279, 2932, - 0, 3335, 2651, - 0, 3401, 0, - 0, 3476, 0, - 0, 3561, 0, - 0, 3654, 0, - 0, 3755, 0, - 0, 3053, 3323, - 0, 3053, 3323, - 0, 3053, 3323, - 0, 3053, 3323, - 0, 3053, 3323, - 0, 3053, 3322, - 0, 3054, 3322, - 0, 3054, 3322, - 0, 3055, 3321, - 0, 3055, 3321, - 0, 3056, 3320, - 0, 3057, 3319, - 0, 3059, 3317, - 0, 3061, 3315, - 0, 3064, 3312, - 0, 3068, 3309, - 0, 3073, 3304, - 0, 3080, 3297, - 0, 3089, 3287, - 0, 3101, 3275, - 0, 3116, 3257, - 0, 3136, 3233, - 0, 3161, 3198, - 0, 3192, 3146, - 0, 3231, 3067, - 0, 3279, 2932, - 0, 3335, 2653, - 0, 3401, 0, - 0, 3476, 0, - 0, 3561, 0, - 0, 3654, 0, - 0, 3755, 0, - 0, 3053, 3323, - 0, 3053, 3323, - 0, 3053, 3323, - 0, 3053, 3323, - 0, 3053, 3323, - 0, 3053, 3323, - 0, 3054, 3323, - 0, 3054, 3322, - 0, 3055, 3322, - 0, 3055, 3321, - 0, 3056, 3320, - 0, 3058, 3319, - 0, 3059, 3318, - 0, 3061, 3316, - 0, 3064, 3313, - 0, 3068, 3309, - 0, 3074, 3304, - 0, 3080, 3297, - 0, 3089, 3288, - 0, 3101, 3275, - 0, 3116, 3258, - 0, 3136, 3233, - 0, 3161, 3198, - 0, 3192, 3147, - 0, 3231, 3068, - 0, 3279, 2934, - 0, 3335, 2655, - 0, 3401, 0, - 0, 3476, 0, - 0, 3561, 0, - 0, 3654, 0, - 0, 3755, 0, - 0, 3053, 3324, - 0, 3053, 3324, - 0, 3053, 3324, - 0, 3053, 3324, - 0, 3053, 3324, - 0, 3054, 3324, - 0, 3054, 3323, - 0, 3054, 3323, - 0, 3055, 3322, - 0, 3056, 3322, - 0, 3057, 3321, - 0, 3058, 3320, - 0, 3059, 3318, - 0, 3062, 3316, - 0, 3065, 3314, - 0, 3069, 3310, - 0, 3074, 3305, - 0, 3081, 3298, - 0, 3090, 3289, - 0, 3101, 3276, - 0, 3117, 3259, - 0, 3136, 3234, - 0, 3161, 3199, - 0, 3193, 3148, - 0, 3231, 3069, - 0, 3279, 2935, - 0, 3335, 2658, - 0, 3401, 0, - 0, 3477, 0, - 0, 3561, 0, - 0, 3654, 0, - 0, 3755, 0, - 0, 3053, 3325, - 0, 3053, 3325, - 0, 3053, 3325, - 0, 3054, 3325, - 0, 3054, 3325, - 0, 3054, 3325, - 0, 3054, 3324, - 0, 3055, 3324, - 0, 3055, 3323, - 0, 3056, 3323, - 0, 3057, 3322, - 0, 3058, 3321, - 0, 3060, 3319, - 0, 3062, 3317, - 0, 3065, 3314, - 0, 3069, 3311, - 0, 3074, 3306, - 0, 3081, 3299, - 0, 3090, 3290, - 0, 3102, 3277, - 0, 3117, 3260, - 0, 3136, 3235, - 0, 3161, 3201, - 0, 3193, 3149, - 0, 3232, 3071, - 0, 3279, 2938, - 0, 3335, 2662, - 0, 3401, 0, - 0, 3477, 0, - 0, 3561, 0, - 0, 3654, 0, - 0, 3755, 0, - 0, 3054, 3326, - 0, 3054, 3326, - 0, 3054, 3326, - 0, 3054, 3326, - 0, 3054, 3326, - 0, 3054, 3326, - 0, 3055, 3326, - 0, 3055, 3325, - 0, 3055, 3325, - 0, 3056, 3324, - 0, 3057, 3323, - 0, 3058, 3322, - 0, 3060, 3321, - 0, 3062, 3319, - 0, 3065, 3316, - 0, 3069, 3312, - 0, 3074, 3307, - 0, 3081, 3300, - 0, 3090, 3291, - 0, 3102, 3279, - 0, 3117, 3261, - 0, 3137, 3237, - 0, 3162, 3202, - 0, 3193, 3151, - 0, 3232, 3073, - 0, 3279, 2941, - 0, 3335, 2668, - 0, 3401, 0, - 0, 3477, 0, - 0, 3561, 0, - 0, 3654, 0, - 0, 3755, 0, - 0, 3054, 3328, - 0, 3054, 3328, - 0, 3054, 3328, - 0, 3054, 3328, - 0, 3054, 3328, - 0, 3055, 3327, - 0, 3055, 3327, - 0, 3055, 3327, - 0, 3056, 3326, - 0, 3057, 3326, - 0, 3057, 3325, - 0, 3059, 3324, - 0, 3060, 3322, - 0, 3063, 3320, - 0, 3066, 3318, - 0, 3069, 3314, - 0, 3075, 3309, - 0, 3081, 3302, - 0, 3090, 3293, - 0, 3102, 3281, - 0, 3117, 3263, - 0, 3137, 3239, - 0, 3162, 3204, - 0, 3193, 3154, - 0, 3232, 3076, - 0, 3279, 2944, - 0, 3336, 2675, - 0, 3402, 0, - 0, 3477, 0, - 0, 3561, 0, - 0, 3654, 0, - 0, 3755, 0, - 0, 3055, 3330, - 0, 3055, 3330, - 0, 3055, 3330, - 0, 3055, 3330, - 0, 3055, 3330, - 0, 3055, 3330, - 0, 3056, 3329, - 0, 3056, 3329, - 0, 3056, 3329, - 0, 3057, 3328, - 0, 3058, 3327, - 0, 3059, 3326, - 0, 3061, 3325, - 0, 3063, 3323, - 0, 3066, 3320, - 0, 3070, 3316, - 0, 3075, 3311, - 0, 3082, 3305, - 0, 3091, 3295, - 0, 3103, 3283, - 0, 3118, 3266, - 0, 3137, 3242, - 0, 3162, 3207, - 0, 3194, 3157, - 0, 3233, 3080, - 0, 3280, 2950, - 0, 3336, 2684, - 0, 3402, 0, - 0, 3477, 0, - 0, 3562, 0, - 0, 3655, 0, - 0, 3755, 0, - 0, 3055, 3333, - 0, 3055, 3333, - 0, 3055, 3333, - 0, 3056, 3333, - 0, 3056, 3333, - 0, 3056, 3333, - 0, 3056, 3332, - 0, 3057, 3332, - 0, 3057, 3332, - 0, 3058, 3331, - 0, 3059, 3330, - 0, 3060, 3329, - 0, 3062, 3328, - 0, 3064, 3326, - 0, 3067, 3323, - 0, 3071, 3319, - 0, 3076, 3314, - 0, 3083, 3308, - 0, 3092, 3299, - 0, 3103, 3286, - 0, 3119, 3269, - 0, 3138, 3245, - 0, 3163, 3211, - 0, 3194, 3161, - 0, 3233, 3085, - 0, 3280, 2957, - 0, 3336, 2696, - 0, 3402, 0, - 0, 3477, 0, - 0, 3562, 0, - 0, 3655, 0, - 0, 3755, 0, - 0, 3056, 3337, - 0, 3056, 3337, - 0, 3056, 3337, - 0, 3057, 3337, - 0, 3057, 3337, - 0, 3057, 3337, - 0, 3057, 3336, - 0, 3058, 3336, - 0, 3058, 3336, - 0, 3059, 3335, - 0, 3060, 3334, - 0, 3061, 3333, - 0, 3063, 3332, - 0, 3065, 3330, - 0, 3068, 3327, - 0, 3072, 3323, - 0, 3077, 3318, - 0, 3084, 3312, - 0, 3093, 3303, - 0, 3104, 3291, - 0, 3119, 3274, - 0, 3139, 3250, - 0, 3164, 3216, - 0, 3195, 3167, - 0, 3234, 3092, - 0, 3281, 2966, - 0, 3337, 2712, - 0, 3403, 0, - 0, 3478, 0, - 0, 3562, 0, - 0, 3655, 0, - 0, 3755, 0, - 0, 3058, 3342, - 0, 3058, 3342, - 0, 3058, 3342, - 0, 3058, 3342, - 0, 3058, 3342, - 0, 3058, 3342, - 0, 3059, 3342, - 0, 3059, 3341, - 0, 3060, 3341, - 0, 3060, 3340, - 0, 3061, 3339, - 0, 3062, 3338, - 0, 3064, 3337, - 0, 3066, 3335, - 0, 3069, 3332, - 0, 3073, 3329, - 0, 3078, 3324, - 0, 3085, 3317, - 0, 3094, 3309, - 0, 3106, 3296, - 0, 3121, 3280, - 0, 3140, 3256, - 0, 3165, 3223, - 0, 3196, 3175, - 0, 3235, 3100, - 0, 3282, 2977, - 0, 3338, 2733, - 0, 3403, 1334, - 0, 3478, 0, - 0, 3563, 0, - 0, 3655, 0, - 0, 3756, 0, - 0, 3059, 3349, - 0, 3060, 3349, - 0, 3060, 3349, - 0, 3060, 3349, - 0, 3060, 3349, - 0, 3060, 3349, - 0, 3060, 3349, - 0, 3061, 3348, - 0, 3061, 3348, - 0, 3062, 3347, - 0, 3063, 3346, - 0, 3064, 3345, - 0, 3066, 3344, - 0, 3068, 3342, - 0, 3071, 3339, - 0, 3075, 3336, - 0, 3080, 3331, - 0, 3087, 3325, - 0, 3096, 3316, - 0, 3107, 3304, - 0, 3122, 3288, - 0, 3142, 3265, - 0, 3166, 3232, - 0, 3197, 3185, - 0, 3236, 3112, - 0, 3283, 2993, - 0, 3339, 2758, - 0, 3404, 1707, - 0, 3479, 0, - 0, 3563, 0, - 0, 3656, 0, - 0, 3756, 0, - 0, 3062, 3358, - 0, 3062, 3358, - 0, 3062, 3358, - 0, 3062, 3358, - 0, 3062, 3358, - 0, 3063, 3358, - 0, 3063, 3358, - 0, 3063, 3357, - 0, 3064, 3357, - 0, 3064, 3356, - 0, 3065, 3355, - 0, 3067, 3354, - 0, 3068, 3353, - 0, 3070, 3351, - 0, 3073, 3349, - 0, 3077, 3345, - 0, 3082, 3341, - 0, 3089, 3334, - 0, 3098, 3326, - 0, 3109, 3314, - 0, 3124, 3298, - 0, 3144, 3276, - 0, 3168, 3244, - 0, 3199, 3198, - 0, 3238, 3127, - 0, 3284, 3012, - 0, 3340, 2791, - 0, 3405, 1961, - 0, 3480, 0, - 0, 3564, 0, - 0, 3657, 0, - 0, 3757, 0, - 0, 3065, 3370, - 0, 3065, 3370, - 0, 3065, 3370, - 0, 3065, 3370, - 0, 3066, 3370, - 0, 3066, 3370, - 0, 3066, 3369, - 0, 3066, 3369, - 0, 3067, 3369, - 0, 3068, 3368, - 0, 3069, 3367, - 0, 3070, 3366, - 0, 3071, 3365, - 0, 3074, 3363, - 0, 3076, 3361, - 0, 3080, 3357, - 0, 3085, 3353, - 0, 3092, 3347, - 0, 3101, 3338, - 0, 3112, 3327, - 0, 3127, 3312, - 0, 3146, 3290, - 0, 3171, 3259, - 0, 3202, 3214, - 0, 3240, 3147, - 0, 3286, 3037, - 0, 3342, 2831, - 0, 3407, 2166, - 0, 3481, 0, - 0, 3565, 0, - 0, 3657, 0, - 0, 3757, 0, - 0, 3069, 3386, - 0, 3069, 3386, - 0, 3070, 3386, - 0, 3070, 3385, - 0, 3070, 3385, - 0, 3070, 3385, - 0, 3070, 3385, - 0, 3071, 3385, - 0, 3071, 3384, - 0, 3072, 3384, - 0, 3073, 3383, - 0, 3074, 3382, - 0, 3076, 3381, - 0, 3078, 3379, - 0, 3081, 3376, - 0, 3084, 3373, - 0, 3089, 3369, - 0, 3096, 3363, - 0, 3105, 3355, - 0, 3116, 3344, - 0, 3131, 3329, - 0, 3150, 3308, - 0, 3174, 3279, - 0, 3205, 3236, - 0, 3243, 3172, - 0, 3289, 3069, - 0, 3344, 2880, - 0, 3409, 2347, - 0, 3483, 0, - 0, 3567, 0, - 0, 3659, 0, - 0, 3758, 0, - 0, 3075, 3405, - 0, 3075, 3405, - 0, 3075, 3405, - 0, 3075, 3405, - 0, 3075, 3405, - 0, 3076, 3405, - 0, 3076, 3405, - 0, 3076, 3404, - 0, 3077, 3404, - 0, 3077, 3404, - 0, 3078, 3403, - 0, 3080, 3402, - 0, 3081, 3401, - 0, 3083, 3399, - 0, 3086, 3397, - 0, 3090, 3393, - 0, 3095, 3389, - 0, 3101, 3384, - 0, 3110, 3376, - 0, 3121, 3366, - 0, 3136, 3351, - 0, 3155, 3332, - 0, 3179, 3304, - 0, 3209, 3263, - 0, 3246, 3203, - 0, 3292, 3108, - 0, 3347, 2937, - 0, 3411, 2512, - 0, 3485, 0, - 0, 3568, 0, - 0, 3660, 0, - 0, 3759, 0, - 1593, 3082, 3431, - 1590, 3082, 3431, - 1585, 3083, 3431, - 1578, 3083, 3430, - 1569, 3083, 3430, - 1556, 3083, 3430, - 1539, 3083, 3430, - 1515, 3084, 3430, - 1480, 3084, 3429, - 1429, 3085, 3429, - 1351, 3086, 3428, - 1220, 3087, 3427, - 950, 3088, 3426, - 0, 3090, 3424, - 0, 3093, 3422, - 0, 3097, 3419, - 0, 3102, 3415, - 0, 3108, 3410, - 0, 3117, 3403, - 0, 3128, 3393, - 0, 3142, 3380, - 0, 3161, 3361, - 0, 3184, 3335, - 0, 3214, 3297, - 0, 3252, 3242, - 0, 3297, 3155, - 0, 3351, 3005, - 0, 3415, 2667, - 0, 3488, 0, - 0, 3571, 0, - 0, 3662, 0, - 0, 3761, 0, - 2589, 3092, 3462, - 2589, 3092, 3462, - 2588, 3092, 3462, - 2588, 3092, 3462, - 2587, 3092, 3462, - 2585, 3093, 3462, - 2584, 3093, 3462, - 2581, 3093, 3461, - 2578, 3094, 3461, - 2574, 3094, 3461, - 2568, 3095, 3460, - 2560, 3096, 3459, - 2549, 3098, 3458, - 2534, 3100, 3456, - 2514, 3103, 3454, - 2484, 3106, 3452, - 2442, 3111, 3448, - 2379, 3117, 3443, - 2277, 3126, 3436, - 2092, 3137, 3427, - 1586, 3151, 3415, - 0, 3169, 3398, - 0, 3192, 3374, - 0, 3222, 3339, - 0, 3258, 3289, - 0, 3303, 3211, - 0, 3357, 3081, - 0, 3420, 2816, - 0, 3492, 0, - 0, 3574, 0, - 0, 3665, 0, - 0, 3763, 0, - 2945, 3105, 3501, - 2945, 3105, 3501, - 2945, 3105, 3501, - 2944, 3105, 3501, - 2944, 3105, 3501, - 2943, 3105, 3501, - 2942, 3106, 3501, - 2941, 3106, 3501, - 2940, 3106, 3500, - 2938, 3107, 3500, - 2935, 3108, 3499, - 2932, 3109, 3499, - 2927, 3110, 3497, - 2921, 3112, 3496, - 2912, 3115, 3494, - 2900, 3119, 3492, - 2884, 3123, 3488, - 2861, 3129, 3484, - 2828, 3137, 3478, - 2780, 3148, 3470, - 2708, 3162, 3458, - 2588, 3180, 3443, - 2352, 3202, 3421, - 1272, 3231, 3390, - 0, 3267, 3345, - 0, 3311, 3277, - 0, 3364, 3167, - 0, 3426, 2960, - 0, 3498, 2284, - 0, 3579, 0, - 0, 3669, 0, - 0, 3766, 0, - 3193, 3121, 3549, - 3193, 3121, 3549, - 3193, 3121, 3549, - 3193, 3121, 3549, - 3192, 3122, 3549, - 3192, 3122, 3549, - 3192, 3122, 3548, - 3191, 3122, 3548, - 3190, 3123, 3548, - 3189, 3123, 3548, - 3188, 3124, 3547, - 3186, 3125, 3546, - 3183, 3127, 3545, - 3179, 3129, 3544, - 3174, 3131, 3543, - 3168, 3135, 3540, - 3159, 3139, 3537, - 3146, 3145, 3533, - 3129, 3153, 3528, - 3105, 3163, 3520, - 3071, 3176, 3510, - 3021, 3194, 3496, - 2944, 3216, 3477, - 2815, 3244, 3450, - 2553, 3279, 3411, - 0, 3321, 3353, - 0, 3373, 3261, - 0, 3434, 3101, - 0, 3505, 2720, - 0, 3585, 0, - 0, 3673, 0, - 0, 3770, 0, - 3396, 3142, 3606, - 3396, 3142, 3606, - 3396, 3142, 3606, - 3396, 3142, 3606, - 3396, 3143, 3605, - 3395, 3143, 3605, - 3395, 3143, 3605, - 3395, 3143, 3605, - 3394, 3144, 3605, - 3393, 3144, 3604, - 3392, 3145, 3604, - 3391, 3146, 3603, - 3389, 3148, 3603, - 3387, 3149, 3601, - 3384, 3152, 3600, - 3380, 3155, 3598, - 3374, 3159, 3595, - 3367, 3165, 3592, - 3356, 3172, 3587, - 3342, 3182, 3581, - 3322, 3195, 3572, - 3294, 3212, 3560, - 3253, 3233, 3543, - 3192, 3260, 3519, - 3096, 3294, 3486, - 2923, 3335, 3437, - 2486, 3385, 3363, - 0, 3445, 3239, - 0, 3514, 2993, - 0, 3592, 1507, - 0, 3680, 0, - 0, 3775, 0, - 3575, 3169, 3672, - 3575, 3169, 3672, - 3574, 3169, 3672, - 3574, 3169, 3672, - 3574, 3169, 3672, - 3574, 3169, 3672, - 3574, 3170, 3672, - 3574, 3170, 3671, - 3573, 3170, 3671, - 3573, 3171, 3671, - 3572, 3172, 3670, - 3571, 3173, 3670, - 3570, 3174, 3669, - 3569, 3176, 3668, - 3567, 3178, 3667, - 3564, 3181, 3665, - 3560, 3185, 3663, - 3555, 3190, 3660, - 3548, 3198, 3656, - 3539, 3207, 3650, - 3526, 3219, 3643, - 3508, 3235, 3632, - 3483, 3255, 3618, - 3448, 3281, 3598, - 3395, 3313, 3571, - 3314, 3353, 3531, - 3176, 3401, 3471, - 2884, 3459, 3376, - 0, 3526, 3208, - 0, 3602, 2792, - 0, 3688, 0, - 0, 3782, 0, - 3739, 3202, 3748, - 3739, 3202, 3748, - 3739, 3203, 3748, - 3738, 3203, 3748, - 3738, 3203, 3748, - 3738, 3203, 3747, - 3738, 3203, 3747, - 3738, 3203, 3747, - 3738, 3204, 3747, - 3737, 3204, 3747, - 3737, 3205, 3746, - 3736, 3206, 3746, - 3736, 3207, 3745, - 3734, 3209, 3745, - 3733, 3211, 3744, - 3731, 3214, 3742, - 3728, 3217, 3740, - 3725, 3222, 3738, - 3720, 3229, 3734, - 3714, 3238, 3729, - 3705, 3249, 3723, - 3693, 3264, 3714, - 3677, 3283, 3703, - 3654, 3307, 3686, - 3621, 3338, 3663, - 3574, 3375, 3631, - 3501, 3422, 3584, - 3381, 3477, 3512, - 3147, 3541, 3393, - 2084, 3616, 3162, - 0, 3699, 2171, - 0, 3791, 0, - 3893, 3244, 3833, - 3893, 3244, 3833, - 3893, 3244, 3833, - 3893, 3244, 3832, - 3893, 3244, 3832, - 3893, 3244, 3832, - 3893, 3244, 3832, - 3893, 3244, 3832, - 3893, 3245, 3832, - 3892, 3245, 3832, - 3892, 3246, 3832, - 3892, 3247, 3831, - 3891, 3248, 3831, - 3890, 3249, 3830, - 3889, 3251, 3829, - 3888, 3254, 3828, - 3886, 3257, 3826, - 3884, 3262, 3824, - 3880, 3268, 3821, - 3876, 3276, 3817, - 3870, 3286, 3812, - 3861, 3300, 3805, - 3850, 3318, 3795, - 3835, 3340, 3782, - 3813, 3368, 3764, - 3782, 3404, 3738, - 3738, 3447, 3701, - 3670, 3500, 3646, - 3561, 3561, 3561, - 3357, 3633, 3415, - 2705, 3713, 3092, - 0, 3803, 0, - 4041, 3293, 3926, - 4041, 3293, 3926, - 4041, 3294, 3926, - 4041, 3294, 3926, - 4041, 3294, 3926, - 4041, 3294, 3926, - 4041, 3294, 3926, - 4041, 3294, 3926, - 4041, 3295, 3925, - 4041, 3295, 3925, - 4041, 3296, 3925, - 4040, 3296, 3925, - 4040, 3297, 3924, - 4039, 3299, 3924, - 4039, 3300, 3923, - 4038, 3303, 3922, - 4036, 3306, 3921, - 4034, 3310, 3919, - 4032, 3315, 3917, - 4029, 3322, 3914, - 4025, 3332, 3909, - 4019, 3344, 3904, - 4011, 3360, 3896, - 4000, 3381, 3885, - 3985, 3407, 3871, - 3964, 3440, 3850, - 3935, 3480, 3822, - 3892, 3529, 3781, - 3829, 3587, 3719, - 3726, 3654, 3620, - 3539, 3732, 3443, - 3019, 3818, 2979, - 4095, 3353, 4027, - 4095, 3353, 4027, - 4095, 3353, 4027, - 4095, 3353, 4027, - 4095, 3353, 4026, - 4095, 3353, 4026, - 4095, 3353, 4026, - 4095, 3353, 4026, - 4095, 3354, 4026, - 4095, 3354, 4026, - 4095, 3354, 4026, - 4095, 3355, 4026, - 4095, 3356, 4025, - 4095, 3357, 4025, - 4095, 3359, 4024, - 4095, 3361, 4024, - 4095, 3363, 4023, - 4095, 3367, 4021, - 4095, 3372, 4019, - 4095, 3378, 4017, - 4095, 3387, 4013, - 4095, 3397, 4009, - 4095, 3412, 4003, - 4095, 3430, 3994, - 4095, 3454, 3983, - 4095, 3483, 3967, - 4095, 3520, 3945, - 4082, 3565, 3914, - 4041, 3619, 3869, - 3979, 3682, 3800, - 3881, 3755, 3689, - 3706, 3837, 3477, - 4095, 3421, 4095, - 4095, 3421, 4095, - 4095, 3421, 4095, - 4095, 3421, 4095, - 4095, 3421, 4095, - 4095, 3421, 4095, - 4095, 3422, 4095, - 4095, 3422, 4095, - 4095, 3422, 4095, - 4095, 3422, 4095, - 4095, 3423, 4095, - 4095, 3423, 4095, - 4095, 3424, 4095, - 4095, 3425, 4095, - 4095, 3426, 4095, - 4095, 3428, 4095, - 4095, 3431, 4095, - 4095, 3434, 4095, - 4095, 3438, 4095, - 4095, 3443, 4095, - 4095, 3451, 4095, - 4095, 3460, 4095, - 4095, 3473, 4095, - 4095, 3489, 4095, - 4095, 3509, 4095, - 4095, 3536, 4087, - 4095, 3568, 4071, - 4095, 3609, 4047, - 4095, 3658, 4014, - 4095, 3717, 3965, - 4095, 3785, 3891, - 4030, 3862, 3767, - 0, 3184, 3454, - 0, 3184, 3454, - 0, 3185, 3454, - 0, 3185, 3453, - 0, 3185, 3453, - 0, 3185, 3453, - 0, 3185, 3453, - 0, 3185, 3453, - 0, 3186, 3452, - 0, 3186, 3452, - 0, 3187, 3451, - 0, 3188, 3450, - 0, 3189, 3449, - 0, 3191, 3448, - 0, 3193, 3446, - 0, 3196, 3443, - 0, 3200, 3439, - 0, 3205, 3434, - 0, 3212, 3427, - 0, 3221, 3418, - 0, 3233, 3405, - 0, 3248, 3388, - 0, 3268, 3363, - 0, 3293, 3328, - 0, 3324, 3276, - 0, 3363, 3196, - 0, 3410, 3061, - 0, 3467, 2779, - 0, 3533, 0, - 0, 3608, 0, - 0, 3693, 0, - 0, 3786, 0, - 0, 3184, 3454, - 0, 3184, 3454, - 0, 3185, 3454, - 0, 3185, 3454, - 0, 3185, 3453, - 0, 3185, 3453, - 0, 3185, 3453, - 0, 3185, 3453, - 0, 3186, 3452, - 0, 3186, 3452, - 0, 3187, 3451, - 0, 3188, 3451, - 0, 3189, 3449, - 0, 3191, 3448, - 0, 3193, 3446, - 0, 3196, 3443, - 0, 3200, 3439, - 0, 3205, 3434, - 0, 3212, 3427, - 0, 3221, 3418, - 0, 3233, 3405, - 0, 3248, 3388, - 0, 3268, 3363, - 0, 3293, 3328, - 0, 3324, 3276, - 0, 3363, 3196, - 0, 3410, 3061, - 0, 3467, 2779, - 0, 3533, 0, - 0, 3608, 0, - 0, 3693, 0, - 0, 3786, 0, - 0, 3184, 3454, - 0, 3184, 3454, - 0, 3185, 3454, - 0, 3185, 3454, - 0, 3185, 3454, - 0, 3185, 3453, - 0, 3185, 3453, - 0, 3185, 3453, - 0, 3186, 3453, - 0, 3186, 3452, - 0, 3187, 3451, - 0, 3188, 3451, - 0, 3189, 3449, - 0, 3191, 3448, - 0, 3193, 3446, - 0, 3196, 3443, - 0, 3200, 3439, - 0, 3205, 3434, - 0, 3212, 3428, - 0, 3221, 3418, - 0, 3233, 3406, - 0, 3248, 3388, - 0, 3268, 3363, - 0, 3293, 3328, - 0, 3324, 3277, - 0, 3363, 3197, - 0, 3411, 3062, - 0, 3467, 2780, - 0, 3533, 0, - 0, 3608, 0, - 0, 3693, 0, - 0, 3786, 0, - 0, 3184, 3454, - 0, 3185, 3454, - 0, 3185, 3454, - 0, 3185, 3454, - 0, 3185, 3454, - 0, 3185, 3454, - 0, 3185, 3453, - 0, 3185, 3453, - 0, 3186, 3453, - 0, 3186, 3452, - 0, 3187, 3452, - 0, 3188, 3451, - 0, 3189, 3450, - 0, 3191, 3448, - 0, 3193, 3446, - 0, 3196, 3443, - 0, 3200, 3440, - 0, 3205, 3434, - 0, 3212, 3428, - 0, 3221, 3418, - 0, 3233, 3406, - 0, 3248, 3388, - 0, 3268, 3364, - 0, 3293, 3328, - 0, 3324, 3277, - 0, 3363, 3197, - 0, 3411, 3062, - 0, 3467, 2780, - 0, 3533, 0, - 0, 3608, 0, - 0, 3693, 0, - 0, 3786, 0, - 0, 3184, 3454, - 0, 3185, 3454, - 0, 3185, 3454, - 0, 3185, 3454, - 0, 3185, 3454, - 0, 3185, 3454, - 0, 3185, 3453, - 0, 3186, 3453, - 0, 3186, 3453, - 0, 3186, 3452, - 0, 3187, 3452, - 0, 3188, 3451, - 0, 3189, 3450, - 0, 3191, 3448, - 0, 3193, 3446, - 0, 3196, 3443, - 0, 3200, 3440, - 0, 3205, 3435, - 0, 3212, 3428, - 0, 3221, 3419, - 0, 3233, 3406, - 0, 3248, 3388, - 0, 3268, 3364, - 0, 3293, 3329, - 0, 3324, 3277, - 0, 3363, 3197, - 0, 3411, 3062, - 0, 3467, 2781, - 0, 3533, 0, - 0, 3608, 0, - 0, 3693, 0, - 0, 3786, 0, - 0, 3185, 3454, - 0, 3185, 3454, - 0, 3185, 3454, - 0, 3185, 3454, - 0, 3185, 3454, - 0, 3185, 3454, - 0, 3185, 3454, - 0, 3186, 3453, - 0, 3186, 3453, - 0, 3186, 3453, - 0, 3187, 3452, - 0, 3188, 3451, - 0, 3189, 3450, - 0, 3191, 3448, - 0, 3193, 3446, - 0, 3196, 3444, - 0, 3200, 3440, - 0, 3205, 3435, - 0, 3212, 3428, - 0, 3221, 3419, - 0, 3233, 3406, - 0, 3248, 3389, - 0, 3268, 3364, - 0, 3293, 3329, - 0, 3324, 3277, - 0, 3363, 3198, - 0, 3411, 3063, - 0, 3467, 2782, - 0, 3533, 0, - 0, 3608, 0, - 0, 3693, 0, - 0, 3786, 0, - 0, 3185, 3455, - 0, 3185, 3455, - 0, 3185, 3455, - 0, 3185, 3454, - 0, 3185, 3454, - 0, 3185, 3454, - 0, 3185, 3454, - 0, 3186, 3454, - 0, 3186, 3453, - 0, 3187, 3453, - 0, 3187, 3452, - 0, 3188, 3451, - 0, 3189, 3450, - 0, 3191, 3449, - 0, 3193, 3447, - 0, 3196, 3444, - 0, 3200, 3440, - 0, 3205, 3435, - 0, 3212, 3428, - 0, 3221, 3419, - 0, 3233, 3406, - 0, 3248, 3389, - 0, 3268, 3364, - 0, 3293, 3329, - 0, 3324, 3278, - 0, 3363, 3198, - 0, 3411, 3064, - 0, 3467, 2783, - 0, 3533, 0, - 0, 3609, 0, - 0, 3693, 0, - 0, 3786, 0, - 0, 3185, 3455, - 0, 3185, 3455, - 0, 3185, 3455, - 0, 3185, 3455, - 0, 3185, 3455, - 0, 3185, 3455, - 0, 3185, 3454, - 0, 3186, 3454, - 0, 3186, 3454, - 0, 3187, 3453, - 0, 3187, 3453, - 0, 3188, 3452, - 0, 3190, 3451, - 0, 3191, 3449, - 0, 3193, 3447, - 0, 3196, 3444, - 0, 3200, 3441, - 0, 3205, 3436, - 0, 3212, 3429, - 0, 3221, 3420, - 0, 3233, 3407, - 0, 3248, 3389, - 0, 3268, 3365, - 0, 3293, 3330, - 0, 3324, 3278, - 0, 3363, 3199, - 0, 3411, 3065, - 0, 3467, 2785, - 0, 3533, 0, - 0, 3609, 0, - 0, 3693, 0, - 0, 3786, 0, - 0, 3185, 3456, - 0, 3185, 3456, - 0, 3185, 3455, - 0, 3185, 3455, - 0, 3185, 3455, - 0, 3185, 3455, - 0, 3186, 3455, - 0, 3186, 3455, - 0, 3186, 3454, - 0, 3187, 3454, - 0, 3187, 3453, - 0, 3188, 3452, - 0, 3190, 3451, - 0, 3191, 3450, - 0, 3194, 3448, - 0, 3197, 3445, - 0, 3200, 3441, - 0, 3206, 3436, - 0, 3212, 3429, - 0, 3221, 3420, - 0, 3233, 3407, - 0, 3248, 3390, - 0, 3268, 3365, - 0, 3293, 3331, - 0, 3325, 3279, - 0, 3363, 3200, - 0, 3411, 3066, - 0, 3467, 2787, - 0, 3533, 0, - 0, 3609, 0, - 0, 3693, 0, - 0, 3786, 0, - 0, 3185, 3456, - 0, 3185, 3456, - 0, 3185, 3456, - 0, 3185, 3456, - 0, 3185, 3456, - 0, 3186, 3456, - 0, 3186, 3456, - 0, 3186, 3455, - 0, 3186, 3455, - 0, 3187, 3455, - 0, 3188, 3454, - 0, 3189, 3453, - 0, 3190, 3452, - 0, 3192, 3450, - 0, 3194, 3448, - 0, 3197, 3446, - 0, 3201, 3442, - 0, 3206, 3437, - 0, 3213, 3430, - 0, 3222, 3421, - 0, 3233, 3408, - 0, 3249, 3391, - 0, 3268, 3366, - 0, 3293, 3331, - 0, 3325, 3280, - 0, 3364, 3201, - 0, 3411, 3067, - 0, 3467, 2790, - 0, 3533, 0, - 0, 3609, 0, - 0, 3693, 0, - 0, 3786, 0, - 0, 3185, 3457, - 0, 3185, 3457, - 0, 3185, 3457, - 0, 3185, 3457, - 0, 3186, 3457, - 0, 3186, 3457, - 0, 3186, 3457, - 0, 3186, 3456, - 0, 3187, 3456, - 0, 3187, 3456, - 0, 3188, 3455, - 0, 3189, 3454, - 0, 3190, 3453, - 0, 3192, 3451, - 0, 3194, 3449, - 0, 3197, 3447, - 0, 3201, 3443, - 0, 3206, 3438, - 0, 3213, 3431, - 0, 3222, 3422, - 0, 3234, 3409, - 0, 3249, 3392, - 0, 3268, 3368, - 0, 3293, 3333, - 0, 3325, 3282, - 0, 3364, 3203, - 0, 3411, 3070, - 0, 3467, 2794, - 0, 3533, 0, - 0, 3609, 0, - 0, 3693, 0, - 0, 3786, 0, - 0, 3186, 3459, - 0, 3186, 3458, - 0, 3186, 3458, - 0, 3186, 3458, - 0, 3186, 3458, - 0, 3186, 3458, - 0, 3186, 3458, - 0, 3187, 3458, - 0, 3187, 3457, - 0, 3188, 3457, - 0, 3188, 3456, - 0, 3189, 3455, - 0, 3190, 3454, - 0, 3192, 3453, - 0, 3194, 3451, - 0, 3197, 3448, - 0, 3201, 3444, - 0, 3206, 3439, - 0, 3213, 3432, - 0, 3222, 3423, - 0, 3234, 3411, - 0, 3249, 3393, - 0, 3269, 3369, - 0, 3294, 3334, - 0, 3325, 3283, - 0, 3364, 3205, - 0, 3411, 3073, - 0, 3468, 2800, - 0, 3533, 0, - 0, 3609, 0, - 0, 3693, 0, - 0, 3786, 0, - 0, 3186, 3460, - 0, 3186, 3460, - 0, 3186, 3460, - 0, 3186, 3460, - 0, 3186, 3460, - 0, 3187, 3460, - 0, 3187, 3460, - 0, 3187, 3459, - 0, 3187, 3459, - 0, 3188, 3458, - 0, 3189, 3458, - 0, 3190, 3457, - 0, 3191, 3456, - 0, 3193, 3454, - 0, 3195, 3452, - 0, 3198, 3450, - 0, 3202, 3446, - 0, 3207, 3441, - 0, 3214, 3434, - 0, 3223, 3425, - 0, 3234, 3413, - 0, 3250, 3395, - 0, 3269, 3371, - 0, 3294, 3337, - 0, 3325, 3286, - 0, 3364, 3208, - 0, 3411, 3077, - 0, 3468, 2807, - 0, 3534, 0, - 0, 3609, 0, - 0, 3694, 0, - 0, 3787, 0, - 0, 3187, 3462, - 0, 3187, 3462, - 0, 3187, 3462, - 0, 3187, 3462, - 0, 3187, 3462, - 0, 3187, 3462, - 0, 3187, 3462, - 0, 3188, 3462, - 0, 3188, 3461, - 0, 3189, 3461, - 0, 3189, 3460, - 0, 3190, 3459, - 0, 3191, 3458, - 0, 3193, 3457, - 0, 3195, 3455, - 0, 3198, 3452, - 0, 3202, 3448, - 0, 3207, 3443, - 0, 3214, 3437, - 0, 3223, 3428, - 0, 3235, 3415, - 0, 3250, 3398, - 0, 3270, 3374, - 0, 3295, 3339, - 0, 3326, 3289, - 0, 3365, 3212, - 0, 3412, 3082, - 0, 3468, 2816, - 0, 3534, 0, - 0, 3609, 0, - 0, 3694, 0, - 0, 3787, 0, - 0, 3187, 3465, - 0, 3187, 3465, - 0, 3187, 3465, - 0, 3188, 3465, - 0, 3188, 3465, - 0, 3188, 3465, - 0, 3188, 3465, - 0, 3188, 3465, - 0, 3189, 3464, - 0, 3189, 3464, - 0, 3190, 3463, - 0, 3191, 3462, - 0, 3192, 3461, - 0, 3194, 3460, - 0, 3196, 3458, - 0, 3199, 3455, - 0, 3203, 3451, - 0, 3208, 3446, - 0, 3215, 3440, - 0, 3224, 3431, - 0, 3235, 3418, - 0, 3251, 3401, - 0, 3270, 3377, - 0, 3295, 3343, - 0, 3326, 3293, - 0, 3365, 3217, - 0, 3412, 3089, - 0, 3469, 2829, - 0, 3534, 0, - 0, 3610, 0, - 0, 3694, 0, - 0, 3787, 0, - 0, 3188, 3469, - 0, 3188, 3469, - 0, 3188, 3469, - 0, 3189, 3469, - 0, 3189, 3469, - 0, 3189, 3469, - 0, 3189, 3469, - 0, 3189, 3468, - 0, 3190, 3468, - 0, 3190, 3468, - 0, 3191, 3467, - 0, 3192, 3466, - 0, 3193, 3465, - 0, 3195, 3464, - 0, 3197, 3462, - 0, 3200, 3459, - 0, 3204, 3455, - 0, 3209, 3451, - 0, 3216, 3444, - 0, 3225, 3435, - 0, 3236, 3423, - 0, 3252, 3406, - 0, 3271, 3382, - 0, 3296, 3349, - 0, 3327, 3299, - 0, 3366, 3224, - 0, 3413, 3098, - 0, 3469, 2844, - 0, 3535, 106, - 0, 3610, 0, - 0, 3694, 0, - 0, 3787, 0, - 0, 3190, 3475, - 0, 3190, 3475, - 0, 3190, 3474, - 0, 3190, 3474, - 0, 3190, 3474, - 0, 3190, 3474, - 0, 3190, 3474, - 0, 3191, 3474, - 0, 3191, 3473, - 0, 3192, 3473, - 0, 3192, 3472, - 0, 3193, 3471, - 0, 3195, 3470, - 0, 3196, 3469, - 0, 3198, 3467, - 0, 3201, 3464, - 0, 3205, 3461, - 0, 3210, 3456, - 0, 3217, 3449, - 0, 3226, 3441, - 0, 3238, 3429, - 0, 3253, 3412, - 0, 3272, 3389, - 0, 3297, 3355, - 0, 3328, 3307, - 0, 3367, 3233, - 0, 3414, 3109, - 0, 3470, 2865, - 0, 3535, 1466, - 0, 3611, 0, - 0, 3695, 0, - 0, 3788, 0, - 0, 3192, 3481, - 0, 3192, 3481, - 0, 3192, 3481, - 0, 3192, 3481, - 0, 3192, 3481, - 0, 3192, 3481, - 0, 3192, 3481, - 0, 3193, 3481, - 0, 3193, 3480, - 0, 3193, 3480, - 0, 3194, 3479, - 0, 3195, 3478, - 0, 3196, 3477, - 0, 3198, 3476, - 0, 3200, 3474, - 0, 3203, 3471, - 0, 3207, 3468, - 0, 3212, 3463, - 0, 3219, 3457, - 0, 3228, 3448, - 0, 3239, 3436, - 0, 3254, 3420, - 0, 3274, 3397, - 0, 3298, 3364, - 0, 3329, 3317, - 0, 3368, 3244, - 0, 3415, 3125, - 0, 3471, 2891, - 0, 3536, 1839, - 0, 3611, 0, - 0, 3695, 0, - 0, 3788, 0, - 0, 3194, 3491, - 0, 3194, 3491, - 0, 3194, 3490, - 0, 3194, 3490, - 0, 3194, 3490, - 0, 3194, 3490, - 0, 3195, 3490, - 0, 3195, 3490, - 0, 3195, 3489, - 0, 3196, 3489, - 0, 3197, 3488, - 0, 3197, 3488, - 0, 3199, 3487, - 0, 3200, 3485, - 0, 3202, 3483, - 0, 3205, 3481, - 0, 3209, 3477, - 0, 3214, 3473, - 0, 3221, 3466, - 0, 3230, 3458, - 0, 3241, 3446, - 0, 3256, 3430, - 0, 3276, 3408, - 0, 3300, 3376, - 0, 3331, 3330, - 0, 3370, 3259, - 0, 3416, 3144, - 0, 3472, 2923, - 0, 3537, 2093, - 0, 3612, 0, - 0, 3696, 0, - 0, 3789, 0, - 0, 3197, 3502, - 0, 3197, 3502, - 0, 3197, 3502, - 0, 3197, 3502, - 0, 3197, 3502, - 0, 3198, 3502, - 0, 3198, 3502, - 0, 3198, 3502, - 0, 3199, 3501, - 0, 3199, 3501, - 0, 3200, 3500, - 0, 3201, 3500, - 0, 3202, 3498, - 0, 3203, 3497, - 0, 3206, 3495, - 0, 3209, 3493, - 0, 3212, 3489, - 0, 3217, 3485, - 0, 3224, 3479, - 0, 3233, 3471, - 0, 3244, 3459, - 0, 3259, 3444, - 0, 3278, 3422, - 0, 3303, 3391, - 0, 3334, 3347, - 0, 3372, 3279, - 0, 3418, 3169, - 0, 3474, 2963, - 0, 3539, 2299, - 0, 3613, 0, - 0, 3697, 0, - 0, 3790, 0, - 0, 3201, 3518, - 0, 3201, 3518, - 0, 3202, 3518, - 0, 3202, 3518, - 0, 3202, 3518, - 0, 3202, 3517, - 0, 3202, 3517, - 0, 3202, 3517, - 0, 3203, 3517, - 0, 3203, 3516, - 0, 3204, 3516, - 0, 3205, 3515, - 0, 3206, 3514, - 0, 3208, 3513, - 0, 3210, 3511, - 0, 3213, 3508, - 0, 3216, 3505, - 0, 3221, 3501, - 0, 3228, 3495, - 0, 3237, 3487, - 0, 3248, 3476, - 0, 3263, 3461, - 0, 3282, 3440, - 0, 3306, 3411, - 0, 3337, 3368, - 0, 3375, 3304, - 0, 3421, 3201, - 0, 3476, 3012, - 0, 3541, 2479, - 0, 3615, 0, - 0, 3699, 0, - 0, 3791, 0, - 0, 3207, 3538, - 0, 3207, 3538, - 0, 3207, 3537, - 0, 3207, 3537, - 0, 3207, 3537, - 0, 3207, 3537, - 0, 3208, 3537, - 0, 3208, 3537, - 0, 3208, 3537, - 0, 3209, 3536, - 0, 3210, 3536, - 0, 3210, 3535, - 0, 3212, 3534, - 0, 3213, 3533, - 0, 3215, 3531, - 0, 3218, 3529, - 0, 3222, 3526, - 0, 3227, 3521, - 0, 3233, 3516, - 0, 3242, 3508, - 0, 3253, 3498, - 0, 3268, 3483, - 0, 3287, 3464, - 0, 3311, 3436, - 0, 3341, 3395, - 0, 3379, 3335, - 0, 3424, 3240, - 0, 3479, 3069, - 0, 3544, 2644, - 0, 3617, 0, - 0, 3701, 0, - 0, 3792, 0, - 1728, 3214, 3563, - 1725, 3214, 3563, - 1722, 3215, 3563, - 1717, 3215, 3563, - 1710, 3215, 3563, - 1701, 3215, 3562, - 1688, 3215, 3562, - 1671, 3215, 3562, - 1647, 3216, 3562, - 1612, 3216, 3561, - 1562, 3217, 3561, - 1483, 3218, 3560, - 1352, 3219, 3559, - 1082, 3220, 3558, - 0, 3223, 3557, - 0, 3225, 3554, - 0, 3229, 3551, - 0, 3234, 3548, - 0, 3240, 3542, - 0, 3249, 3535, - 0, 3260, 3525, - 0, 3274, 3512, - 0, 3293, 3493, - 0, 3317, 3467, - 0, 3346, 3429, - 0, 3384, 3374, - 0, 3429, 3287, - 0, 3483, 3137, - 0, 3547, 2799, - 0, 3620, 0, - 0, 3703, 0, - 0, 3794, 0, - 2722, 3224, 3594, - 2721, 3224, 3594, - 2721, 3224, 3594, - 2720, 3224, 3594, - 2720, 3224, 3594, - 2719, 3225, 3594, - 2717, 3225, 3594, - 2716, 3225, 3594, - 2713, 3225, 3593, - 2710, 3226, 3593, - 2706, 3227, 3593, - 2700, 3227, 3592, - 2692, 3229, 3591, - 2681, 3230, 3590, - 2666, 3232, 3589, - 2646, 3235, 3587, - 2617, 3238, 3584, - 2574, 3243, 3580, - 2511, 3250, 3575, - 2410, 3258, 3569, - 2224, 3269, 3559, - 1718, 3283, 3547, - 0, 3301, 3530, - 0, 3324, 3506, - 0, 3354, 3471, - 0, 3390, 3421, - 0, 3435, 3343, - 0, 3489, 3214, - 0, 3552, 2948, - 0, 3624, 0, - 0, 3706, 0, - 0, 3797, 0, - 3077, 3237, 3634, - 3077, 3237, 3634, - 3077, 3237, 3633, - 3077, 3237, 3633, - 3076, 3237, 3633, - 3076, 3237, 3633, - 3075, 3237, 3633, - 3075, 3238, 3633, - 3073, 3238, 3633, - 3072, 3239, 3632, - 3070, 3239, 3632, - 3068, 3240, 3631, - 3064, 3241, 3631, - 3059, 3243, 3630, - 3053, 3245, 3628, - 3044, 3247, 3626, - 3032, 3251, 3624, - 3016, 3255, 3621, - 2993, 3262, 3616, - 2960, 3270, 3610, - 2913, 3280, 3602, - 2840, 3294, 3590, - 2720, 3312, 3575, - 2485, 3335, 3553, - 1404, 3363, 3522, - 0, 3399, 3477, - 0, 3443, 3409, - 0, 3496, 3299, - 0, 3558, 3092, - 0, 3630, 2417, - 0, 3711, 0, - 0, 3801, 0, - 3325, 3253, 3681, - 3325, 3253, 3681, - 3325, 3253, 3681, - 3325, 3253, 3681, - 3325, 3254, 3681, - 3325, 3254, 3681, - 3324, 3254, 3681, - 3324, 3254, 3681, - 3323, 3254, 3680, - 3322, 3255, 3680, - 3321, 3255, 3680, - 3320, 3256, 3679, - 3318, 3257, 3678, - 3315, 3259, 3678, - 3311, 3261, 3676, - 3306, 3263, 3675, - 3300, 3267, 3672, - 3291, 3271, 3669, - 3278, 3277, 3665, - 3261, 3285, 3660, - 3237, 3295, 3652, - 3203, 3308, 3642, - 3153, 3326, 3628, - 3076, 3348, 3609, - 2947, 3376, 3582, - 2685, 3411, 3543, - 0, 3454, 3485, - 0, 3505, 3394, - 0, 3566, 3233, - 0, 3637, 2852, - 0, 3717, 0, - 0, 3805, 0, - 3528, 3274, 3738, - 3528, 3274, 3738, - 3528, 3274, 3738, - 3528, 3274, 3738, - 3528, 3275, 3738, - 3528, 3275, 3738, - 3527, 3275, 3737, - 3527, 3275, 3737, - 3527, 3275, 3737, - 3526, 3276, 3737, - 3525, 3276, 3737, - 3525, 3277, 3736, - 3523, 3278, 3735, - 3522, 3280, 3735, - 3519, 3281, 3734, - 3516, 3284, 3732, - 3512, 3287, 3730, - 3506, 3291, 3728, - 3499, 3297, 3724, - 3488, 3305, 3719, - 3474, 3314, 3713, - 3454, 3327, 3704, - 3426, 3344, 3692, - 3385, 3365, 3675, - 3324, 3392, 3652, - 3228, 3426, 3618, - 3055, 3467, 3570, - 2618, 3517, 3495, - 0, 3577, 3371, - 0, 3646, 3125, - 0, 3724, 1639, - 0, 3812, 0, - 3707, 3301, 3804, - 3707, 3301, 3804, - 3707, 3301, 3804, - 3707, 3301, 3804, - 3707, 3301, 3804, - 3706, 3301, 3804, - 3706, 3302, 3804, - 3706, 3302, 3804, - 3706, 3302, 3803, - 3705, 3303, 3803, - 3705, 3303, 3803, - 3704, 3304, 3803, - 3703, 3305, 3802, - 3702, 3306, 3801, - 3701, 3308, 3800, - 3699, 3310, 3799, - 3696, 3313, 3797, - 3692, 3317, 3795, - 3687, 3323, 3792, - 3680, 3330, 3788, - 3671, 3339, 3782, - 3658, 3351, 3775, - 3640, 3367, 3764, - 3615, 3387, 3750, - 3580, 3413, 3730, - 3527, 3445, 3703, - 3446, 3485, 3663, - 3308, 3533, 3603, - 3017, 3591, 3508, - 0, 3658, 3340, - 0, 3734, 2924, - 0, 3820, 0, - 3871, 3334, 3880, - 3871, 3334, 3880, - 3871, 3335, 3880, - 3871, 3335, 3880, - 3871, 3335, 3880, - 3871, 3335, 3880, - 3870, 3335, 3880, - 3870, 3335, 3879, - 3870, 3335, 3879, - 3870, 3336, 3879, - 3869, 3336, 3879, - 3869, 3337, 3879, - 3868, 3338, 3878, - 3868, 3339, 3878, - 3867, 3341, 3877, - 3865, 3343, 3876, - 3863, 3346, 3874, - 3861, 3349, 3872, - 3857, 3354, 3870, - 3852, 3361, 3866, - 3846, 3370, 3862, - 3837, 3381, 3855, - 3825, 3396, 3846, - 3809, 3415, 3835, - 3786, 3439, 3818, - 3753, 3470, 3796, - 3706, 3507, 3763, - 3633, 3554, 3716, - 3513, 3609, 3644, - 3279, 3673, 3525, - 2216, 3748, 3294, - 0, 3831, 2303, - 4025, 3376, 3965, - 4025, 3376, 3965, - 4025, 3376, 3965, - 4025, 3376, 3965, - 4025, 3376, 3965, - 4025, 3376, 3965, - 4025, 3376, 3964, - 4025, 3376, 3964, - 4025, 3377, 3964, - 4025, 3377, 3964, - 4024, 3377, 3964, - 4024, 3378, 3964, - 4024, 3379, 3963, - 4023, 3380, 3963, - 4022, 3381, 3962, - 4021, 3383, 3961, - 4020, 3386, 3960, - 4018, 3389, 3958, - 4016, 3394, 3956, - 4012, 3400, 3953, - 4008, 3408, 3950, - 4002, 3418, 3944, - 3993, 3432, 3937, - 3982, 3450, 3928, - 3967, 3472, 3914, - 3945, 3501, 3896, - 3914, 3536, 3870, - 3870, 3579, 3833, - 3803, 3632, 3779, - 3693, 3693, 3693, - 3489, 3765, 3547, - 2837, 3845, 3224, - 4095, 3425, 4058, - 4095, 3426, 4058, - 4095, 3426, 4058, - 4095, 3426, 4058, - 4095, 3426, 4058, - 4095, 3426, 4058, - 4095, 3426, 4058, - 4095, 3426, 4058, - 4095, 3426, 4058, - 4095, 3427, 4057, - 4095, 3427, 4057, - 4095, 3428, 4057, - 4095, 3428, 4057, - 4095, 3429, 4056, - 4095, 3431, 4056, - 4095, 3432, 4055, - 4095, 3435, 4054, - 4095, 3438, 4053, - 4095, 3442, 4051, - 4095, 3447, 4049, - 4095, 3455, 4046, - 4095, 3464, 4041, - 4095, 3476, 4036, - 4095, 3492, 4028, - 4095, 3513, 4017, - 4095, 3539, 4003, - 4095, 3572, 3982, - 4067, 3612, 3954, - 4024, 3661, 3913, - 3961, 3719, 3851, - 3858, 3787, 3752, - 3671, 3864, 3575, - 4095, 3485, 4095, - 4095, 3485, 4095, - 4095, 3485, 4095, - 4095, 3485, 4095, - 4095, 3485, 4095, - 4095, 3485, 4095, - 4095, 3485, 4095, - 4095, 3485, 4095, - 4095, 3485, 4095, - 4095, 3486, 4095, - 4095, 3486, 4095, - 4095, 3486, 4095, - 4095, 3487, 4095, - 4095, 3488, 4095, - 4095, 3489, 4095, - 4095, 3491, 4095, - 4095, 3493, 4095, - 4095, 3495, 4095, - 4095, 3499, 4095, - 4095, 3504, 4095, - 4095, 3510, 4095, - 4095, 3519, 4095, - 4095, 3530, 4095, - 4095, 3544, 4095, - 4095, 3562, 4095, - 4095, 3586, 4095, - 4095, 3615, 4095, - 4095, 3652, 4077, - 4095, 3697, 4046, - 4095, 3751, 4001, - 4095, 3814, 3932, - 4014, 3887, 3821, - 0, 3316, 3586, - 0, 3316, 3586, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3317, 3585, - 0, 3317, 3585, - 0, 3317, 3585, - 0, 3317, 3585, - 0, 3318, 3584, - 0, 3318, 3584, - 0, 3319, 3583, - 0, 3320, 3582, - 0, 3321, 3581, - 0, 3323, 3580, - 0, 3325, 3578, - 0, 3328, 3575, - 0, 3332, 3571, - 0, 3337, 3566, - 0, 3344, 3559, - 0, 3353, 3550, - 0, 3365, 3537, - 0, 3380, 3520, - 0, 3400, 3495, - 0, 3425, 3460, - 0, 3456, 3408, - 0, 3495, 3328, - 0, 3543, 3193, - 0, 3599, 2911, - 0, 3665, 0, - 0, 3740, 0, - 0, 3825, 0, - 0, 3316, 3586, - 0, 3316, 3586, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3317, 3585, - 0, 3317, 3585, - 0, 3317, 3585, - 0, 3317, 3585, - 0, 3318, 3585, - 0, 3318, 3584, - 0, 3319, 3583, - 0, 3320, 3583, - 0, 3321, 3581, - 0, 3323, 3580, - 0, 3325, 3578, - 0, 3328, 3575, - 0, 3332, 3571, - 0, 3337, 3566, - 0, 3344, 3559, - 0, 3353, 3550, - 0, 3365, 3537, - 0, 3380, 3520, - 0, 3400, 3495, - 0, 3425, 3460, - 0, 3456, 3408, - 0, 3495, 3328, - 0, 3543, 3193, - 0, 3599, 2911, - 0, 3665, 0, - 0, 3741, 0, - 0, 3825, 0, - 0, 3316, 3586, - 0, 3316, 3586, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3317, 3585, - 0, 3317, 3585, - 0, 3318, 3585, - 0, 3318, 3585, - 0, 3318, 3584, - 0, 3319, 3583, - 0, 3320, 3583, - 0, 3321, 3581, - 0, 3323, 3580, - 0, 3325, 3578, - 0, 3328, 3575, - 0, 3332, 3571, - 0, 3337, 3566, - 0, 3344, 3560, - 0, 3353, 3550, - 0, 3365, 3538, - 0, 3380, 3520, - 0, 3400, 3495, - 0, 3425, 3460, - 0, 3456, 3408, - 0, 3495, 3329, - 0, 3543, 3194, - 0, 3599, 2911, - 0, 3665, 0, - 0, 3741, 0, - 0, 3825, 0, - 0, 3316, 3586, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3317, 3585, - 0, 3317, 3585, - 0, 3318, 3585, - 0, 3318, 3585, - 0, 3318, 3584, - 0, 3319, 3584, - 0, 3320, 3583, - 0, 3321, 3582, - 0, 3323, 3580, - 0, 3325, 3578, - 0, 3328, 3575, - 0, 3332, 3571, - 0, 3337, 3566, - 0, 3344, 3560, - 0, 3353, 3550, - 0, 3365, 3538, - 0, 3380, 3520, - 0, 3400, 3495, - 0, 3425, 3460, - 0, 3456, 3409, - 0, 3495, 3329, - 0, 3543, 3194, - 0, 3599, 2912, - 0, 3665, 0, - 0, 3741, 0, - 0, 3825, 0, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3317, 3585, - 0, 3318, 3585, - 0, 3318, 3585, - 0, 3318, 3584, - 0, 3319, 3584, - 0, 3320, 3583, - 0, 3321, 3582, - 0, 3323, 3580, - 0, 3325, 3578, - 0, 3328, 3575, - 0, 3332, 3572, - 0, 3337, 3567, - 0, 3344, 3560, - 0, 3353, 3551, - 0, 3365, 3538, - 0, 3380, 3520, - 0, 3400, 3496, - 0, 3425, 3460, - 0, 3456, 3409, - 0, 3495, 3329, - 0, 3543, 3194, - 0, 3599, 2912, - 0, 3665, 0, - 0, 3741, 0, - 0, 3825, 0, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3318, 3585, - 0, 3318, 3585, - 0, 3319, 3584, - 0, 3319, 3584, - 0, 3320, 3583, - 0, 3321, 3582, - 0, 3323, 3580, - 0, 3325, 3578, - 0, 3328, 3576, - 0, 3332, 3572, - 0, 3337, 3567, - 0, 3344, 3560, - 0, 3353, 3551, - 0, 3365, 3538, - 0, 3380, 3520, - 0, 3400, 3496, - 0, 3425, 3461, - 0, 3456, 3409, - 0, 3495, 3329, - 0, 3543, 3194, - 0, 3599, 2913, - 0, 3665, 0, - 0, 3741, 0, - 0, 3825, 0, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3318, 3586, - 0, 3318, 3585, - 0, 3319, 3585, - 0, 3319, 3584, - 0, 3320, 3583, - 0, 3321, 3582, - 0, 3323, 3581, - 0, 3325, 3579, - 0, 3328, 3576, - 0, 3332, 3572, - 0, 3337, 3567, - 0, 3344, 3560, - 0, 3353, 3551, - 0, 3365, 3538, - 0, 3380, 3521, - 0, 3400, 3496, - 0, 3425, 3461, - 0, 3456, 3409, - 0, 3495, 3330, - 0, 3543, 3195, - 0, 3599, 2914, - 0, 3665, 0, - 0, 3741, 0, - 0, 3825, 0, - 0, 3317, 3587, - 0, 3317, 3587, - 0, 3317, 3587, - 0, 3317, 3587, - 0, 3317, 3587, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3317, 3586, - 0, 3318, 3586, - 0, 3318, 3585, - 0, 3319, 3585, - 0, 3319, 3584, - 0, 3320, 3584, - 0, 3322, 3582, - 0, 3323, 3581, - 0, 3325, 3579, - 0, 3328, 3576, - 0, 3332, 3572, - 0, 3338, 3567, - 0, 3344, 3561, - 0, 3353, 3551, - 0, 3365, 3539, - 0, 3380, 3521, - 0, 3400, 3496, - 0, 3425, 3461, - 0, 3456, 3410, - 0, 3495, 3330, - 0, 3543, 3196, - 0, 3599, 2915, - 0, 3665, 0, - 0, 3741, 0, - 0, 3825, 0, - 0, 3317, 3587, - 0, 3317, 3587, - 0, 3317, 3587, - 0, 3317, 3587, - 0, 3317, 3587, - 0, 3317, 3587, - 0, 3317, 3587, - 0, 3318, 3587, - 0, 3318, 3586, - 0, 3318, 3586, - 0, 3319, 3585, - 0, 3319, 3585, - 0, 3320, 3584, - 0, 3322, 3583, - 0, 3323, 3581, - 0, 3326, 3579, - 0, 3328, 3576, - 0, 3332, 3573, - 0, 3338, 3568, - 0, 3344, 3561, - 0, 3353, 3552, - 0, 3365, 3539, - 0, 3380, 3521, - 0, 3400, 3497, - 0, 3425, 3462, - 0, 3457, 3410, - 0, 3495, 3331, - 0, 3543, 3197, - 0, 3599, 2917, - 0, 3665, 0, - 0, 3741, 0, - 0, 3825, 0, - 0, 3317, 3588, - 0, 3317, 3588, - 0, 3317, 3588, - 0, 3317, 3588, - 0, 3317, 3587, - 0, 3317, 3587, - 0, 3317, 3587, - 0, 3318, 3587, - 0, 3318, 3587, - 0, 3318, 3586, - 0, 3319, 3586, - 0, 3320, 3585, - 0, 3321, 3584, - 0, 3322, 3583, - 0, 3323, 3582, - 0, 3326, 3580, - 0, 3329, 3577, - 0, 3333, 3573, - 0, 3338, 3568, - 0, 3345, 3561, - 0, 3354, 3552, - 0, 3365, 3540, - 0, 3381, 3522, - 0, 3400, 3498, - 0, 3425, 3463, - 0, 3457, 3411, - 0, 3496, 3332, - 0, 3543, 3198, - 0, 3599, 2919, - 0, 3665, 0, - 0, 3741, 0, - 0, 3825, 0, - 0, 3317, 3588, - 0, 3317, 3588, - 0, 3317, 3588, - 0, 3317, 3588, - 0, 3317, 3588, - 0, 3317, 3588, - 0, 3318, 3588, - 0, 3318, 3588, - 0, 3318, 3587, - 0, 3319, 3587, - 0, 3319, 3587, - 0, 3320, 3586, - 0, 3321, 3585, - 0, 3322, 3584, - 0, 3324, 3583, - 0, 3326, 3580, - 0, 3329, 3578, - 0, 3333, 3574, - 0, 3338, 3569, - 0, 3345, 3562, - 0, 3354, 3553, - 0, 3365, 3540, - 0, 3381, 3523, - 0, 3400, 3498, - 0, 3425, 3464, - 0, 3457, 3412, - 0, 3496, 3333, - 0, 3543, 3200, - 0, 3599, 2922, - 0, 3665, 0, - 0, 3741, 0, - 0, 3825, 0, - 0, 3317, 3589, - 0, 3317, 3589, - 0, 3317, 3589, - 0, 3317, 3589, - 0, 3318, 3589, - 0, 3318, 3589, - 0, 3318, 3589, - 0, 3318, 3589, - 0, 3318, 3588, - 0, 3319, 3588, - 0, 3319, 3588, - 0, 3320, 3587, - 0, 3321, 3586, - 0, 3322, 3585, - 0, 3324, 3583, - 0, 3326, 3581, - 0, 3329, 3579, - 0, 3333, 3575, - 0, 3338, 3570, - 0, 3345, 3563, - 0, 3354, 3554, - 0, 3366, 3541, - 0, 3381, 3524, - 0, 3401, 3500, - 0, 3426, 3465, - 0, 3457, 3414, - 0, 3496, 3335, - 0, 3543, 3202, - 0, 3600, 2927, - 0, 3665, 0, - 0, 3741, 0, - 0, 3825, 0, - 0, 3318, 3591, - 0, 3318, 3591, - 0, 3318, 3591, - 0, 3318, 3590, - 0, 3318, 3590, - 0, 3318, 3590, - 0, 3318, 3590, - 0, 3318, 3590, - 0, 3319, 3590, - 0, 3319, 3589, - 0, 3320, 3589, - 0, 3320, 3588, - 0, 3321, 3587, - 0, 3323, 3586, - 0, 3324, 3585, - 0, 3326, 3583, - 0, 3329, 3580, - 0, 3333, 3576, - 0, 3338, 3571, - 0, 3345, 3565, - 0, 3354, 3555, - 0, 3366, 3543, - 0, 3381, 3525, - 0, 3401, 3501, - 0, 3426, 3466, - 0, 3457, 3415, - 0, 3496, 3337, - 0, 3543, 3205, - 0, 3600, 2932, - 0, 3666, 0, - 0, 3741, 0, - 0, 3826, 0, - 0, 3318, 3592, - 0, 3318, 3592, - 0, 3318, 3592, - 0, 3318, 3592, - 0, 3318, 3592, - 0, 3318, 3592, - 0, 3319, 3592, - 0, 3319, 3592, - 0, 3319, 3591, - 0, 3320, 3591, - 0, 3320, 3591, - 0, 3321, 3590, - 0, 3322, 3589, - 0, 3323, 3588, - 0, 3325, 3586, - 0, 3327, 3584, - 0, 3330, 3582, - 0, 3334, 3578, - 0, 3339, 3573, - 0, 3346, 3566, - 0, 3355, 3557, - 0, 3366, 3545, - 0, 3382, 3527, - 0, 3401, 3503, - 0, 3426, 3469, - 0, 3458, 3418, - 0, 3496, 3340, - 0, 3544, 3209, - 0, 3600, 2939, - 0, 3666, 0, - 0, 3741, 0, - 0, 3826, 0, - 0, 3319, 3595, - 0, 3319, 3595, - 0, 3319, 3594, - 0, 3319, 3594, - 0, 3319, 3594, - 0, 3319, 3594, - 0, 3319, 3594, - 0, 3319, 3594, - 0, 3320, 3594, - 0, 3320, 3593, - 0, 3321, 3593, - 0, 3321, 3592, - 0, 3322, 3591, - 0, 3324, 3590, - 0, 3325, 3589, - 0, 3327, 3587, - 0, 3330, 3584, - 0, 3334, 3580, - 0, 3339, 3575, - 0, 3346, 3569, - 0, 3355, 3560, - 0, 3367, 3547, - 0, 3382, 3530, - 0, 3402, 3506, - 0, 3427, 3472, - 0, 3458, 3421, - 0, 3497, 3344, - 0, 3544, 3214, - 0, 3600, 2948, - 0, 3666, 0, - 0, 3741, 0, - 0, 3826, 0, - 0, 3319, 3598, - 0, 3319, 3597, - 0, 3320, 3597, - 0, 3320, 3597, - 0, 3320, 3597, - 0, 3320, 3597, - 0, 3320, 3597, - 0, 3320, 3597, - 0, 3320, 3597, - 0, 3321, 3596, - 0, 3321, 3596, - 0, 3322, 3595, - 0, 3323, 3594, - 0, 3324, 3593, - 0, 3326, 3592, - 0, 3328, 3590, - 0, 3331, 3587, - 0, 3335, 3583, - 0, 3340, 3579, - 0, 3347, 3572, - 0, 3356, 3563, - 0, 3368, 3550, - 0, 3383, 3533, - 0, 3402, 3510, - 0, 3427, 3475, - 0, 3459, 3426, - 0, 3497, 3349, - 0, 3544, 3221, - 0, 3601, 2961, - 0, 3666, 0, - 0, 3742, 0, - 0, 3826, 0, - 0, 3320, 3601, - 0, 3320, 3601, - 0, 3321, 3601, - 0, 3321, 3601, - 0, 3321, 3601, - 0, 3321, 3601, - 0, 3321, 3601, - 0, 3321, 3601, - 0, 3321, 3601, - 0, 3322, 3600, - 0, 3322, 3600, - 0, 3323, 3599, - 0, 3324, 3598, - 0, 3325, 3597, - 0, 3327, 3596, - 0, 3329, 3594, - 0, 3332, 3591, - 0, 3336, 3587, - 0, 3341, 3583, - 0, 3348, 3576, - 0, 3357, 3567, - 0, 3368, 3555, - 0, 3384, 3538, - 0, 3403, 3514, - 0, 3428, 3481, - 0, 3459, 3431, - 0, 3498, 3356, - 0, 3545, 3230, - 0, 3601, 2976, - 0, 3667, 238, - 0, 3742, 0, - 0, 3826, 0, - 0, 3322, 3607, - 0, 3322, 3607, - 0, 3322, 3607, - 0, 3322, 3607, - 0, 3322, 3606, - 0, 3322, 3606, - 0, 3322, 3606, - 0, 3323, 3606, - 0, 3323, 3606, - 0, 3323, 3605, - 0, 3324, 3605, - 0, 3324, 3604, - 0, 3325, 3604, - 0, 3327, 3603, - 0, 3328, 3601, - 0, 3330, 3599, - 0, 3333, 3596, - 0, 3337, 3593, - 0, 3342, 3588, - 0, 3349, 3582, - 0, 3358, 3573, - 0, 3370, 3561, - 0, 3385, 3544, - 0, 3404, 3521, - 0, 3429, 3487, - 0, 3460, 3439, - 0, 3499, 3365, - 0, 3546, 3241, - 0, 3602, 2997, - 0, 3668, 1599, - 0, 3743, 0, - 0, 3827, 0, - 0, 3324, 3614, - 0, 3324, 3614, - 0, 3324, 3614, - 0, 3324, 3613, - 0, 3324, 3613, - 0, 3324, 3613, - 0, 3324, 3613, - 0, 3324, 3613, - 0, 3325, 3613, - 0, 3325, 3612, - 0, 3326, 3612, - 0, 3326, 3611, - 0, 3327, 3611, - 0, 3328, 3609, - 0, 3330, 3608, - 0, 3332, 3606, - 0, 3335, 3603, - 0, 3339, 3600, - 0, 3344, 3595, - 0, 3351, 3589, - 0, 3360, 3580, - 0, 3371, 3568, - 0, 3386, 3552, - 0, 3406, 3529, - 0, 3431, 3496, - 0, 3462, 3449, - 0, 3500, 3376, - 0, 3547, 3257, - 0, 3603, 3023, - 0, 3668, 1971, - 0, 3743, 0, - 0, 3827, 0, - 0, 3326, 3623, - 0, 3326, 3623, - 0, 3326, 3623, - 0, 3326, 3623, - 0, 3326, 3622, - 0, 3326, 3622, - 0, 3327, 3622, - 0, 3327, 3622, - 0, 3327, 3622, - 0, 3327, 3621, - 0, 3328, 3621, - 0, 3329, 3620, - 0, 3330, 3620, - 0, 3331, 3619, - 0, 3332, 3617, - 0, 3335, 3615, - 0, 3337, 3613, - 0, 3341, 3609, - 0, 3346, 3605, - 0, 3353, 3598, - 0, 3362, 3590, - 0, 3374, 3578, - 0, 3388, 3562, - 0, 3408, 3540, - 0, 3432, 3508, - 0, 3463, 3462, - 0, 3502, 3392, - 0, 3548, 3276, - 0, 3604, 3055, - 0, 3669, 2225, - 0, 3744, 0, - 0, 3828, 0, - 0, 3329, 3635, - 0, 3329, 3635, - 0, 3329, 3634, - 0, 3329, 3634, - 0, 3329, 3634, - 0, 3330, 3634, - 0, 3330, 3634, - 0, 3330, 3634, - 0, 3330, 3634, - 0, 3331, 3633, - 0, 3331, 3633, - 0, 3332, 3632, - 0, 3333, 3632, - 0, 3334, 3631, - 0, 3336, 3629, - 0, 3338, 3627, - 0, 3341, 3625, - 0, 3344, 3622, - 0, 3349, 3617, - 0, 3356, 3611, - 0, 3365, 3603, - 0, 3376, 3591, - 0, 3391, 3576, - 0, 3410, 3554, - 0, 3435, 3523, - 0, 3466, 3479, - 0, 3504, 3411, - 0, 3550, 3301, - 0, 3606, 3095, - 0, 3671, 2431, - 0, 3746, 0, - 0, 3829, 0, - 0, 3333, 3650, - 0, 3333, 3650, - 0, 3334, 3650, - 0, 3334, 3650, - 0, 3334, 3650, - 0, 3334, 3650, - 0, 3334, 3649, - 0, 3334, 3649, - 0, 3334, 3649, - 0, 3335, 3649, - 0, 3335, 3648, - 0, 3336, 3648, - 0, 3337, 3647, - 0, 3338, 3646, - 0, 3340, 3645, - 0, 3342, 3643, - 0, 3345, 3641, - 0, 3349, 3637, - 0, 3354, 3633, - 0, 3360, 3627, - 0, 3369, 3619, - 0, 3380, 3608, - 0, 3395, 3593, - 0, 3414, 3572, - 0, 3438, 3543, - 0, 3469, 3500, - 0, 3507, 3436, - 0, 3553, 3333, - 0, 3608, 3144, - 0, 3673, 2611, - 0, 3747, 0, - 0, 3831, 0, - 0, 3339, 3670, - 0, 3339, 3670, - 0, 3339, 3670, - 0, 3339, 3670, - 0, 3339, 3670, - 0, 3339, 3669, - 0, 3340, 3669, - 0, 3340, 3669, - 0, 3340, 3669, - 0, 3340, 3669, - 0, 3341, 3668, - 0, 3342, 3668, - 0, 3343, 3667, - 0, 3344, 3666, - 0, 3345, 3665, - 0, 3347, 3663, - 0, 3350, 3661, - 0, 3354, 3658, - 0, 3359, 3654, - 0, 3365, 3648, - 0, 3374, 3640, - 0, 3385, 3630, - 0, 3400, 3616, - 0, 3419, 3596, - 0, 3443, 3568, - 0, 3473, 3527, - 0, 3511, 3467, - 0, 3556, 3372, - 0, 3611, 3202, - 0, 3676, 2776, - 0, 3750, 0, - 0, 3833, 0, - 1862, 3346, 3695, - 1860, 3347, 3695, - 1858, 3347, 3695, - 1854, 3347, 3695, - 1849, 3347, 3695, - 1842, 3347, 3695, - 1833, 3347, 3695, - 1821, 3347, 3694, - 1803, 3347, 3694, - 1779, 3348, 3694, - 1744, 3348, 3693, - 1694, 3349, 3693, - 1616, 3350, 3692, - 1484, 3351, 3691, - 1214, 3353, 3690, - 0, 3355, 3689, - 0, 3357, 3686, - 0, 3361, 3684, - 0, 3366, 3680, - 0, 3372, 3674, - 0, 3381, 3667, - 0, 3392, 3657, - 0, 3406, 3644, - 0, 3425, 3625, - 0, 3449, 3599, - 0, 3479, 3562, - 0, 3516, 3506, - 0, 3561, 3419, - 0, 3615, 3269, - 0, 3679, 2931, - 0, 3753, 0, - 0, 3835, 0, - 2854, 3356, 3727, - 2854, 3356, 3727, - 2853, 3356, 3726, - 2853, 3356, 3726, - 2853, 3356, 3726, - 2852, 3357, 3726, - 2851, 3357, 3726, - 2849, 3357, 3726, - 2848, 3357, 3726, - 2845, 3358, 3726, - 2842, 3358, 3725, - 2838, 3359, 3725, - 2832, 3360, 3724, - 2824, 3361, 3723, - 2813, 3362, 3722, - 2798, 3364, 3721, - 2778, 3367, 3719, - 2749, 3371, 3716, - 2706, 3375, 3712, - 2643, 3382, 3707, - 2542, 3390, 3701, - 2357, 3401, 3692, - 1850, 3415, 3679, - 0, 3433, 3662, - 0, 3456, 3638, - 0, 3486, 3604, - 0, 3522, 3553, - 0, 3567, 3476, - 0, 3621, 3346, - 0, 3684, 3080, - 0, 3757, 0, - 0, 3838, 0, - 3210, 3369, 3766, - 3209, 3369, 3766, - 3209, 3369, 3766, - 3209, 3369, 3766, - 3209, 3369, 3766, - 3209, 3369, 3765, - 3208, 3369, 3765, - 3207, 3370, 3765, - 3207, 3370, 3765, - 3206, 3370, 3765, - 3204, 3371, 3764, - 3202, 3371, 3764, - 3200, 3372, 3763, - 3196, 3373, 3763, - 3191, 3375, 3762, - 3185, 3377, 3760, - 3176, 3379, 3758, - 3164, 3383, 3756, - 3148, 3387, 3753, - 3125, 3394, 3748, - 3092, 3402, 3742, - 3045, 3412, 3734, - 2972, 3426, 3722, - 2852, 3444, 3707, - 2617, 3467, 3685, - 1537, 3495, 3654, - 0, 3531, 3609, - 0, 3575, 3542, - 0, 3628, 3431, - 0, 3690, 3224, - 0, 3762, 2549, - 0, 3843, 0, - 3457, 3385, 3813, - 3457, 3385, 3813, - 3457, 3385, 3813, - 3457, 3385, 3813, - 3457, 3385, 3813, - 3457, 3386, 3813, - 3457, 3386, 3813, - 3456, 3386, 3813, - 3456, 3386, 3813, - 3455, 3387, 3812, - 3454, 3387, 3812, - 3453, 3388, 3812, - 3452, 3388, 3811, - 3450, 3389, 3811, - 3447, 3391, 3810, - 3443, 3393, 3808, - 3439, 3395, 3807, - 3432, 3399, 3805, - 3423, 3403, 3802, - 3410, 3409, 3797, - 3393, 3417, 3792, - 3369, 3427, 3785, - 3335, 3441, 3774, - 3285, 3458, 3761, - 3208, 3480, 3741, - 3079, 3508, 3714, - 2817, 3543, 3675, - 0, 3586, 3617, - 0, 3637, 3526, - 0, 3698, 3365, - 0, 3769, 2984, - 0, 3849, 0, - 3660, 3406, 3870, - 3660, 3406, 3870, - 3660, 3406, 3870, - 3660, 3406, 3870, - 3660, 3407, 3870, - 3660, 3407, 3870, - 3660, 3407, 3870, - 3660, 3407, 3870, - 3659, 3407, 3869, - 3659, 3408, 3869, - 3658, 3408, 3869, - 3658, 3409, 3869, - 3657, 3409, 3868, - 3655, 3410, 3868, - 3654, 3412, 3867, - 3651, 3414, 3866, - 3648, 3416, 3864, - 3644, 3419, 3862, - 3638, 3424, 3860, - 3631, 3429, 3856, - 3620, 3437, 3851, - 3606, 3446, 3845, - 3586, 3459, 3836, - 3558, 3476, 3824, - 3517, 3497, 3807, - 3456, 3524, 3784, - 3360, 3558, 3750, - 3187, 3599, 3702, - 2750, 3650, 3627, - 0, 3709, 3503, - 0, 3778, 3257, - 0, 3856, 1771, - 3839, 3433, 3936, - 3839, 3433, 3936, - 3839, 3433, 3936, - 3839, 3433, 3936, - 3839, 3433, 3936, - 3839, 3433, 3936, - 3838, 3433, 3936, - 3838, 3434, 3936, - 3838, 3434, 3936, - 3838, 3434, 3936, - 3838, 3435, 3935, - 3837, 3435, 3935, - 3836, 3436, 3935, - 3836, 3437, 3934, - 3834, 3438, 3933, - 3833, 3440, 3932, - 3831, 3442, 3931, - 3828, 3445, 3930, - 3824, 3449, 3927, - 3819, 3455, 3924, - 3812, 3462, 3920, - 3803, 3471, 3914, - 3790, 3483, 3907, - 3772, 3499, 3897, - 3747, 3519, 3882, - 3712, 3545, 3863, - 3659, 3577, 3835, - 3578, 3617, 3795, - 3440, 3665, 3735, - 3149, 3723, 3640, - 0, 3790, 3472, - 0, 3867, 3056, - 4003, 3467, 4012, - 4003, 3467, 4012, - 4003, 3467, 4012, - 4003, 3467, 4012, - 4003, 3467, 4012, - 4003, 3467, 4012, - 4003, 3467, 4012, - 4002, 3467, 4012, - 4002, 3467, 4012, - 4002, 3468, 4011, - 4002, 3468, 4011, - 4002, 3468, 4011, - 4001, 3469, 4011, - 4001, 3470, 4010, - 4000, 3471, 4010, - 3999, 3473, 4009, - 3997, 3475, 4008, - 3995, 3478, 4006, - 3993, 3482, 4004, - 3989, 3487, 4002, - 3984, 3493, 3998, - 3978, 3502, 3994, - 3969, 3513, 3987, - 3957, 3528, 3979, - 3941, 3547, 3967, - 3918, 3571, 3950, - 3886, 3602, 3928, - 3838, 3640, 3895, - 3765, 3686, 3848, - 3646, 3741, 3776, - 3411, 3806, 3657, - 2348, 3880, 3426, - 4095, 3508, 4095, - 4095, 3508, 4095, - 4095, 3508, 4095, - 4095, 3508, 4095, - 4095, 3508, 4095, - 4095, 3508, 4095, - 4095, 3508, 4095, - 4095, 3508, 4095, - 4095, 3508, 4095, - 4095, 3509, 4095, - 4095, 3509, 4095, - 4095, 3509, 4095, - 4095, 3510, 4095, - 4095, 3511, 4095, - 4095, 3512, 4095, - 4095, 3513, 4094, - 4095, 3515, 4093, - 4095, 3518, 4092, - 4095, 3522, 4091, - 4095, 3526, 4088, - 4095, 3532, 4086, - 4095, 3540, 4082, - 4095, 3551, 4076, - 4095, 3564, 4069, - 4095, 3582, 4060, - 4095, 3604, 4046, - 4077, 3633, 4028, - 4046, 3668, 4002, - 4002, 3712, 3965, - 3935, 3764, 3911, - 3826, 3826, 3826, - 3621, 3897, 3679, - 4095, 3558, 4095, - 4095, 3558, 4095, - 4095, 3558, 4095, - 4095, 3558, 4095, - 4095, 3558, 4095, - 4095, 3558, 4095, - 4095, 3558, 4095, - 4095, 3558, 4095, - 4095, 3558, 4095, - 4095, 3558, 4095, - 4095, 3559, 4095, - 4095, 3559, 4095, - 4095, 3560, 4095, - 4095, 3560, 4095, - 4095, 3561, 4095, - 4095, 3563, 4095, - 4095, 3564, 4095, - 4095, 3567, 4095, - 4095, 3570, 4095, - 4095, 3574, 4095, - 4095, 3580, 4095, - 4095, 3587, 4095, - 4095, 3596, 4095, - 4095, 3608, 4095, - 4095, 3624, 4095, - 4095, 3645, 4095, - 4095, 3671, 4095, - 4095, 3704, 4095, - 4095, 3744, 4086, - 4095, 3793, 4045, - 4093, 3851, 3983, - 3990, 3919, 3884, - 0, 3448, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3717, - 0, 3449, 3717, - 0, 3449, 3717, - 0, 3450, 3717, - 0, 3450, 3717, - 0, 3450, 3716, - 0, 3451, 3715, - 0, 3452, 3715, - 0, 3453, 3713, - 0, 3455, 3712, - 0, 3457, 3710, - 0, 3460, 3707, - 0, 3464, 3703, - 0, 3469, 3698, - 0, 3476, 3691, - 0, 3485, 3682, - 0, 3497, 3669, - 0, 3512, 3652, - 0, 3532, 3627, - 0, 3557, 3592, - 0, 3588, 3540, - 0, 3627, 3460, - 0, 3675, 3325, - 0, 3731, 3043, - 0, 3797, 0, - 0, 3873, 0, - 0, 3448, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3717, - 0, 3449, 3717, - 0, 3450, 3717, - 0, 3450, 3717, - 0, 3451, 3716, - 0, 3451, 3715, - 0, 3452, 3715, - 0, 3453, 3713, - 0, 3455, 3712, - 0, 3457, 3710, - 0, 3460, 3707, - 0, 3464, 3703, - 0, 3469, 3698, - 0, 3476, 3692, - 0, 3485, 3682, - 0, 3497, 3670, - 0, 3512, 3652, - 0, 3532, 3627, - 0, 3557, 3592, - 0, 3588, 3540, - 0, 3627, 3460, - 0, 3675, 3325, - 0, 3731, 3043, - 0, 3797, 0, - 0, 3873, 0, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3717, - 0, 3449, 3717, - 0, 3450, 3717, - 0, 3450, 3717, - 0, 3451, 3716, - 0, 3451, 3716, - 0, 3452, 3715, - 0, 3453, 3714, - 0, 3455, 3712, - 0, 3457, 3710, - 0, 3460, 3707, - 0, 3464, 3703, - 0, 3469, 3698, - 0, 3476, 3692, - 0, 3485, 3682, - 0, 3497, 3670, - 0, 3512, 3652, - 0, 3532, 3627, - 0, 3557, 3592, - 0, 3588, 3540, - 0, 3627, 3461, - 0, 3675, 3326, - 0, 3731, 3043, - 0, 3797, 0, - 0, 3873, 0, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3717, - 0, 3450, 3717, - 0, 3450, 3717, - 0, 3451, 3716, - 0, 3451, 3716, - 0, 3452, 3715, - 0, 3453, 3714, - 0, 3455, 3712, - 0, 3457, 3710, - 0, 3460, 3707, - 0, 3464, 3703, - 0, 3469, 3698, - 0, 3476, 3692, - 0, 3485, 3682, - 0, 3497, 3670, - 0, 3512, 3652, - 0, 3532, 3627, - 0, 3557, 3592, - 0, 3588, 3541, - 0, 3627, 3461, - 0, 3675, 3326, - 0, 3731, 3043, - 0, 3797, 0, - 0, 3873, 0, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3717, - 0, 3450, 3717, - 0, 3450, 3717, - 0, 3451, 3716, - 0, 3451, 3716, - 0, 3452, 3715, - 0, 3453, 3714, - 0, 3455, 3712, - 0, 3457, 3710, - 0, 3460, 3707, - 0, 3464, 3704, - 0, 3469, 3699, - 0, 3476, 3692, - 0, 3485, 3682, - 0, 3497, 3670, - 0, 3512, 3652, - 0, 3532, 3628, - 0, 3557, 3592, - 0, 3588, 3541, - 0, 3627, 3461, - 0, 3675, 3326, - 0, 3731, 3044, - 0, 3797, 0, - 0, 3873, 0, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3450, 3717, - 0, 3450, 3717, - 0, 3451, 3716, - 0, 3451, 3716, - 0, 3452, 3715, - 0, 3453, 3714, - 0, 3455, 3712, - 0, 3457, 3710, - 0, 3460, 3707, - 0, 3464, 3704, - 0, 3469, 3699, - 0, 3476, 3692, - 0, 3485, 3683, - 0, 3497, 3670, - 0, 3512, 3652, - 0, 3532, 3628, - 0, 3557, 3593, - 0, 3588, 3541, - 0, 3627, 3461, - 0, 3675, 3326, - 0, 3731, 3044, - 0, 3797, 0, - 0, 3873, 0, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3450, 3717, - 0, 3450, 3717, - 0, 3451, 3717, - 0, 3451, 3716, - 0, 3452, 3715, - 0, 3454, 3714, - 0, 3455, 3712, - 0, 3457, 3710, - 0, 3460, 3708, - 0, 3464, 3704, - 0, 3469, 3699, - 0, 3476, 3692, - 0, 3485, 3683, - 0, 3497, 3670, - 0, 3512, 3653, - 0, 3532, 3628, - 0, 3557, 3593, - 0, 3588, 3541, - 0, 3627, 3461, - 0, 3675, 3327, - 0, 3731, 3045, - 0, 3797, 0, - 0, 3873, 0, - 0, 3449, 3719, - 0, 3449, 3719, - 0, 3449, 3719, - 0, 3449, 3719, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3449, 3718, - 0, 3450, 3718, - 0, 3450, 3717, - 0, 3451, 3717, - 0, 3451, 3716, - 0, 3452, 3715, - 0, 3454, 3714, - 0, 3455, 3713, - 0, 3457, 3711, - 0, 3460, 3708, - 0, 3464, 3704, - 0, 3470, 3699, - 0, 3476, 3692, - 0, 3485, 3683, - 0, 3497, 3670, - 0, 3512, 3653, - 0, 3532, 3628, - 0, 3557, 3593, - 0, 3589, 3541, - 0, 3627, 3462, - 0, 3675, 3327, - 0, 3731, 3046, - 0, 3797, 0, - 0, 3873, 0, - 0, 3449, 3719, - 0, 3449, 3719, - 0, 3449, 3719, - 0, 3449, 3719, - 0, 3449, 3719, - 0, 3449, 3719, - 0, 3449, 3719, - 0, 3449, 3718, - 0, 3450, 3718, - 0, 3450, 3718, - 0, 3450, 3718, - 0, 3451, 3717, - 0, 3451, 3716, - 0, 3452, 3716, - 0, 3454, 3714, - 0, 3455, 3713, - 0, 3458, 3711, - 0, 3460, 3708, - 0, 3464, 3704, - 0, 3470, 3699, - 0, 3476, 3693, - 0, 3485, 3683, - 0, 3497, 3671, - 0, 3512, 3653, - 0, 3532, 3629, - 0, 3557, 3593, - 0, 3589, 3542, - 0, 3627, 3462, - 0, 3675, 3328, - 0, 3731, 3047, - 0, 3797, 0, - 0, 3873, 0, - 0, 3449, 3719, - 0, 3449, 3719, - 0, 3449, 3719, - 0, 3449, 3719, - 0, 3449, 3719, - 0, 3449, 3719, - 0, 3449, 3719, - 0, 3449, 3719, - 0, 3450, 3719, - 0, 3450, 3718, - 0, 3450, 3718, - 0, 3451, 3718, - 0, 3452, 3717, - 0, 3452, 3716, - 0, 3454, 3715, - 0, 3455, 3713, - 0, 3458, 3711, - 0, 3461, 3709, - 0, 3465, 3705, - 0, 3470, 3700, - 0, 3477, 3693, - 0, 3486, 3684, - 0, 3497, 3671, - 0, 3513, 3654, - 0, 3532, 3629, - 0, 3557, 3594, - 0, 3589, 3542, - 0, 3628, 3463, - 0, 3675, 3329, - 0, 3731, 3049, - 0, 3797, 0, - 0, 3873, 0, - 0, 3449, 3720, - 0, 3449, 3720, - 0, 3449, 3720, - 0, 3449, 3720, - 0, 3449, 3720, - 0, 3449, 3720, - 0, 3449, 3719, - 0, 3450, 3719, - 0, 3450, 3719, - 0, 3450, 3719, - 0, 3450, 3719, - 0, 3451, 3718, - 0, 3452, 3717, - 0, 3453, 3717, - 0, 3454, 3715, - 0, 3456, 3714, - 0, 3458, 3712, - 0, 3461, 3709, - 0, 3465, 3705, - 0, 3470, 3700, - 0, 3477, 3694, - 0, 3486, 3684, - 0, 3497, 3672, - 0, 3513, 3654, - 0, 3532, 3630, - 0, 3557, 3595, - 0, 3589, 3543, - 0, 3628, 3464, - 0, 3675, 3330, - 0, 3731, 3051, - 0, 3797, 0, - 0, 3873, 0, - 0, 3449, 3721, - 0, 3449, 3721, - 0, 3449, 3720, - 0, 3449, 3720, - 0, 3449, 3720, - 0, 3449, 3720, - 0, 3450, 3720, - 0, 3450, 3720, - 0, 3450, 3720, - 0, 3450, 3720, - 0, 3451, 3719, - 0, 3451, 3719, - 0, 3452, 3718, - 0, 3453, 3717, - 0, 3454, 3716, - 0, 3456, 3715, - 0, 3458, 3713, - 0, 3461, 3710, - 0, 3465, 3706, - 0, 3470, 3701, - 0, 3477, 3694, - 0, 3486, 3685, - 0, 3498, 3672, - 0, 3513, 3655, - 0, 3532, 3631, - 0, 3557, 3596, - 0, 3589, 3544, - 0, 3628, 3465, - 0, 3675, 3332, - 0, 3731, 3055, - 0, 3797, 0, - 0, 3873, 0, - 0, 3449, 3721, - 0, 3449, 3721, - 0, 3449, 3721, - 0, 3450, 3721, - 0, 3450, 3721, - 0, 3450, 3721, - 0, 3450, 3721, - 0, 3450, 3721, - 0, 3450, 3721, - 0, 3450, 3721, - 0, 3451, 3720, - 0, 3451, 3720, - 0, 3452, 3719, - 0, 3453, 3718, - 0, 3454, 3717, - 0, 3456, 3716, - 0, 3458, 3714, - 0, 3461, 3711, - 0, 3465, 3707, - 0, 3470, 3702, - 0, 3477, 3695, - 0, 3486, 3686, - 0, 3498, 3674, - 0, 3513, 3656, - 0, 3533, 3632, - 0, 3558, 3597, - 0, 3589, 3546, - 0, 3628, 3467, - 0, 3675, 3334, - 0, 3732, 3059, - 0, 3798, 0, - 0, 3873, 0, - 0, 3450, 3723, - 0, 3450, 3723, - 0, 3450, 3723, - 0, 3450, 3723, - 0, 3450, 3723, - 0, 3450, 3723, - 0, 3450, 3722, - 0, 3450, 3722, - 0, 3451, 3722, - 0, 3451, 3722, - 0, 3451, 3721, - 0, 3452, 3721, - 0, 3452, 3720, - 0, 3453, 3719, - 0, 3455, 3718, - 0, 3456, 3717, - 0, 3458, 3715, - 0, 3461, 3712, - 0, 3465, 3708, - 0, 3471, 3703, - 0, 3477, 3697, - 0, 3486, 3687, - 0, 3498, 3675, - 0, 3513, 3658, - 0, 3533, 3633, - 0, 3558, 3599, - 0, 3589, 3548, - 0, 3628, 3469, - 0, 3675, 3337, - 0, 3732, 3064, - 0, 3798, 0, - 0, 3873, 0, - 0, 3450, 3724, - 0, 3450, 3724, - 0, 3450, 3724, - 0, 3450, 3724, - 0, 3450, 3724, - 0, 3450, 3724, - 0, 3451, 3724, - 0, 3451, 3724, - 0, 3451, 3724, - 0, 3451, 3723, - 0, 3452, 3723, - 0, 3452, 3723, - 0, 3453, 3722, - 0, 3454, 3721, - 0, 3455, 3720, - 0, 3457, 3719, - 0, 3459, 3717, - 0, 3462, 3714, - 0, 3466, 3710, - 0, 3471, 3705, - 0, 3478, 3698, - 0, 3487, 3689, - 0, 3498, 3677, - 0, 3514, 3659, - 0, 3533, 3635, - 0, 3558, 3601, - 0, 3590, 3550, - 0, 3628, 3472, - 0, 3676, 3341, - 0, 3732, 3071, - 0, 3798, 0, - 0, 3873, 0, - 0, 3451, 3727, - 0, 3451, 3727, - 0, 3451, 3727, - 0, 3451, 3727, - 0, 3451, 3727, - 0, 3451, 3726, - 0, 3451, 3726, - 0, 3451, 3726, - 0, 3452, 3726, - 0, 3452, 3726, - 0, 3452, 3725, - 0, 3453, 3725, - 0, 3453, 3724, - 0, 3454, 3723, - 0, 3456, 3722, - 0, 3457, 3721, - 0, 3459, 3719, - 0, 3462, 3716, - 0, 3466, 3712, - 0, 3471, 3708, - 0, 3478, 3701, - 0, 3487, 3692, - 0, 3499, 3679, - 0, 3514, 3662, - 0, 3534, 3638, - 0, 3559, 3604, - 0, 3590, 3553, - 0, 3629, 3476, - 0, 3676, 3346, - 0, 3732, 3081, - 0, 3798, 0, - 0, 3873, 0, - 0, 3451, 3730, - 0, 3452, 3730, - 0, 3452, 3730, - 0, 3452, 3730, - 0, 3452, 3729, - 0, 3452, 3729, - 0, 3452, 3729, - 0, 3452, 3729, - 0, 3452, 3729, - 0, 3453, 3729, - 0, 3453, 3728, - 0, 3453, 3728, - 0, 3454, 3727, - 0, 3455, 3726, - 0, 3456, 3725, - 0, 3458, 3724, - 0, 3460, 3722, - 0, 3463, 3719, - 0, 3467, 3716, - 0, 3472, 3711, - 0, 3479, 3704, - 0, 3488, 3695, - 0, 3500, 3683, - 0, 3515, 3666, - 0, 3534, 3642, - 0, 3559, 3608, - 0, 3591, 3558, - 0, 3629, 3481, - 0, 3676, 3353, - 0, 3733, 3093, - 0, 3798, 0, - 0, 3874, 0, - 0, 3453, 3734, - 0, 3453, 3734, - 0, 3453, 3734, - 0, 3453, 3734, - 0, 3453, 3733, - 0, 3453, 3733, - 0, 3453, 3733, - 0, 3453, 3733, - 0, 3453, 3733, - 0, 3454, 3733, - 0, 3454, 3732, - 0, 3454, 3732, - 0, 3455, 3731, - 0, 3456, 3730, - 0, 3457, 3729, - 0, 3459, 3728, - 0, 3461, 3726, - 0, 3464, 3723, - 0, 3468, 3720, - 0, 3473, 3715, - 0, 3480, 3708, - 0, 3489, 3699, - 0, 3501, 3687, - 0, 3516, 3670, - 0, 3535, 3646, - 0, 3560, 3613, - 0, 3591, 3563, - 0, 3630, 3488, - 0, 3677, 3362, - 0, 3733, 3109, - 0, 3799, 370, - 0, 3874, 0, - 0, 3454, 3739, - 0, 3454, 3739, - 0, 3454, 3739, - 0, 3454, 3739, - 0, 3454, 3739, - 0, 3454, 3739, - 0, 3454, 3738, - 0, 3454, 3738, - 0, 3455, 3738, - 0, 3455, 3738, - 0, 3455, 3738, - 0, 3456, 3737, - 0, 3457, 3737, - 0, 3457, 3736, - 0, 3459, 3735, - 0, 3460, 3733, - 0, 3463, 3731, - 0, 3465, 3729, - 0, 3469, 3725, - 0, 3474, 3720, - 0, 3481, 3714, - 0, 3490, 3705, - 0, 3502, 3693, - 0, 3517, 3676, - 0, 3536, 3653, - 0, 3561, 3620, - 0, 3592, 3571, - 0, 3631, 3497, - 0, 3678, 3374, - 0, 3734, 3129, - 0, 3800, 1731, - 0, 3875, 0, - 0, 3456, 3746, - 0, 3456, 3746, - 0, 3456, 3746, - 0, 3456, 3746, - 0, 3456, 3746, - 0, 3456, 3745, - 0, 3456, 3745, - 0, 3456, 3745, - 0, 3456, 3745, - 0, 3457, 3745, - 0, 3457, 3744, - 0, 3458, 3744, - 0, 3458, 3743, - 0, 3459, 3743, - 0, 3460, 3742, - 0, 3462, 3740, - 0, 3464, 3738, - 0, 3467, 3736, - 0, 3471, 3732, - 0, 3476, 3727, - 0, 3483, 3721, - 0, 3492, 3712, - 0, 3503, 3700, - 0, 3518, 3684, - 0, 3538, 3661, - 0, 3563, 3629, - 0, 3594, 3581, - 0, 3632, 3508, - 0, 3679, 3389, - 0, 3735, 3155, - 0, 3800, 2103, - 0, 3875, 0, - 0, 3458, 3755, - 0, 3458, 3755, - 0, 3458, 3755, - 0, 3458, 3755, - 0, 3458, 3755, - 0, 3458, 3755, - 0, 3458, 3754, - 0, 3459, 3754, - 0, 3459, 3754, - 0, 3459, 3754, - 0, 3460, 3754, - 0, 3460, 3753, - 0, 3461, 3753, - 0, 3462, 3752, - 0, 3463, 3751, - 0, 3465, 3749, - 0, 3467, 3747, - 0, 3470, 3745, - 0, 3473, 3741, - 0, 3479, 3737, - 0, 3485, 3731, - 0, 3494, 3722, - 0, 3506, 3710, - 0, 3521, 3694, - 0, 3540, 3672, - 0, 3565, 3640, - 0, 3595, 3594, - 0, 3634, 3524, - 0, 3681, 3409, - 0, 3736, 3187, - 0, 3802, 2357, - 0, 3876, 0, - 0, 3461, 3767, - 0, 3461, 3767, - 0, 3461, 3767, - 0, 3461, 3767, - 0, 3461, 3767, - 0, 3462, 3766, - 0, 3462, 3766, - 0, 3462, 3766, - 0, 3462, 3766, - 0, 3462, 3766, - 0, 3463, 3765, - 0, 3463, 3765, - 0, 3464, 3764, - 0, 3465, 3764, - 0, 3466, 3763, - 0, 3468, 3761, - 0, 3470, 3759, - 0, 3473, 3757, - 0, 3477, 3754, - 0, 3482, 3749, - 0, 3488, 3743, - 0, 3497, 3735, - 0, 3508, 3723, - 0, 3523, 3708, - 0, 3543, 3686, - 0, 3567, 3655, - 0, 3598, 3611, - 0, 3636, 3543, - 0, 3682, 3434, - 0, 3738, 3227, - 0, 3803, 2563, - 0, 3878, 0, - 0, 3466, 3782, - 0, 3466, 3782, - 0, 3466, 3782, - 0, 3466, 3782, - 0, 3466, 3782, - 0, 3466, 3782, - 0, 3466, 3782, - 0, 3466, 3782, - 0, 3466, 3781, - 0, 3467, 3781, - 0, 3467, 3781, - 0, 3467, 3780, - 0, 3468, 3780, - 0, 3469, 3779, - 0, 3470, 3778, - 0, 3472, 3777, - 0, 3474, 3775, - 0, 3477, 3773, - 0, 3481, 3769, - 0, 3486, 3765, - 0, 3492, 3759, - 0, 3501, 3751, - 0, 3512, 3740, - 0, 3527, 3725, - 0, 3546, 3704, - 0, 3570, 3675, - 0, 3601, 3632, - 0, 3639, 3568, - 0, 3685, 3465, - 0, 3740, 3276, - 0, 3805, 2743, - 0, 3879, 0, - 0, 3471, 3802, - 0, 3471, 3802, - 0, 3471, 3802, - 0, 3471, 3802, - 0, 3471, 3802, - 0, 3471, 3802, - 0, 3472, 3802, - 0, 3472, 3801, - 0, 3472, 3801, - 0, 3472, 3801, - 0, 3473, 3801, - 0, 3473, 3800, - 0, 3474, 3800, - 0, 3475, 3799, - 0, 3476, 3798, - 0, 3477, 3797, - 0, 3480, 3795, - 0, 3482, 3793, - 0, 3486, 3790, - 0, 3491, 3786, - 0, 3498, 3780, - 0, 3506, 3772, - 0, 3517, 3762, - 0, 3532, 3748, - 0, 3551, 3728, - 0, 3575, 3700, - 0, 3605, 3660, - 0, 3643, 3599, - 0, 3689, 3504, - 0, 3743, 3334, - 0, 3808, 2908, - 0, 3882, 0, - 1996, 3479, 3827, - 1994, 3479, 3827, - 1992, 3479, 3827, - 1990, 3479, 3827, - 1986, 3479, 3827, - 1981, 3479, 3827, - 1974, 3479, 3827, - 1965, 3479, 3827, - 1953, 3479, 3826, - 1935, 3480, 3826, - 1911, 3480, 3826, - 1877, 3480, 3826, - 1826, 3481, 3825, - 1748, 3482, 3824, - 1616, 3483, 3824, - 1346, 3485, 3822, - 0, 3487, 3821, - 0, 3490, 3819, - 0, 3493, 3816, - 0, 3498, 3812, - 0, 3505, 3806, - 0, 3513, 3799, - 0, 3524, 3789, - 0, 3538, 3776, - 0, 3557, 3757, - 0, 3581, 3731, - 0, 3611, 3694, - 0, 3648, 3638, - 0, 3693, 3551, - 0, 3748, 3401, - 0, 3811, 3063, - 0, 3885, 0, - 2986, 3488, 3859, - 2986, 3488, 3859, - 2986, 3488, 3859, - 2986, 3488, 3859, - 2985, 3488, 3859, - 2985, 3489, 3858, - 2984, 3489, 3858, - 2983, 3489, 3858, - 2982, 3489, 3858, - 2980, 3489, 3858, - 2977, 3490, 3858, - 2974, 3490, 3857, - 2970, 3491, 3857, - 2964, 3492, 3856, - 2956, 3493, 3855, - 2945, 3494, 3854, - 2931, 3496, 3853, - 2910, 3499, 3851, - 2881, 3503, 3848, - 2839, 3507, 3844, - 2775, 3514, 3839, - 2674, 3522, 3833, - 2489, 3533, 3824, - 1982, 3547, 3811, - 0, 3565, 3794, - 0, 3589, 3770, - 0, 3618, 3736, - 0, 3655, 3685, - 0, 3699, 3608, - 0, 3753, 3478, - 0, 3816, 3212, - 0, 3889, 0, - 3342, 3501, 3898, - 3342, 3501, 3898, - 3342, 3501, 3898, - 3341, 3501, 3898, - 3341, 3501, 3898, - 3341, 3501, 3898, - 3341, 3501, 3898, - 3340, 3501, 3897, - 3340, 3502, 3897, - 3339, 3502, 3897, - 3338, 3502, 3897, - 3336, 3503, 3897, - 3334, 3503, 3896, - 3332, 3504, 3896, - 3328, 3505, 3895, - 3323, 3507, 3894, - 3317, 3509, 3892, - 3308, 3511, 3891, - 3296, 3515, 3888, - 3280, 3520, 3885, - 3257, 3526, 3880, - 3224, 3534, 3874, - 3177, 3544, 3866, - 3104, 3558, 3854, - 2984, 3576, 3839, - 2749, 3599, 3817, - 1669, 3628, 3786, - 0, 3663, 3741, - 0, 3707, 3674, - 0, 3760, 3564, - 0, 3822, 3356, - 0, 3894, 2681, - 3590, 3517, 3945, - 3590, 3517, 3945, - 3590, 3517, 3945, - 3589, 3517, 3945, - 3589, 3518, 3945, - 3589, 3518, 3945, - 3589, 3518, 3945, - 3589, 3518, 3945, - 3588, 3518, 3945, - 3588, 3518, 3945, - 3587, 3519, 3945, - 3586, 3519, 3944, - 3585, 3520, 3944, - 3584, 3520, 3943, - 3582, 3522, 3943, - 3579, 3523, 3942, - 3576, 3525, 3941, - 3571, 3527, 3939, - 3564, 3531, 3937, - 3555, 3535, 3934, - 3543, 3541, 3930, - 3525, 3549, 3924, - 3501, 3559, 3917, - 3467, 3573, 3907, - 3417, 3590, 3893, - 3340, 3612, 3873, - 3211, 3640, 3846, - 2949, 3675, 3807, - 0, 3718, 3749, - 0, 3769, 3658, - 0, 3830, 3497, - 0, 3901, 3116, - 3792, 3538, 4002, - 3792, 3538, 4002, - 3792, 3538, 4002, - 3792, 3539, 4002, - 3792, 3539, 4002, - 3792, 3539, 4002, - 3792, 3539, 4002, - 3792, 3539, 4002, - 3792, 3539, 4002, - 3791, 3539, 4002, - 3791, 3540, 4001, - 3790, 3540, 4001, - 3790, 3541, 4001, - 3789, 3541, 4000, - 3787, 3542, 4000, - 3786, 3544, 3999, - 3783, 3546, 3998, - 3780, 3548, 3996, - 3776, 3551, 3994, - 3770, 3556, 3992, - 3763, 3561, 3988, - 3752, 3569, 3983, - 3738, 3579, 3977, - 3718, 3591, 3968, - 3690, 3608, 3956, - 3649, 3629, 3939, - 3588, 3656, 3916, - 3492, 3690, 3882, - 3319, 3731, 3834, - 2882, 3782, 3759, - 0, 3841, 3636, - 0, 3910, 3389, - 3971, 3565, 4068, - 3971, 3565, 4068, - 3971, 3565, 4068, - 3971, 3565, 4068, - 3971, 3565, 4068, - 3971, 3565, 4068, - 3971, 3565, 4068, - 3971, 3566, 4068, - 3970, 3566, 4068, - 3970, 3566, 4068, - 3970, 3566, 4068, - 3970, 3567, 4067, - 3969, 3567, 4067, - 3968, 3568, 4067, - 3968, 3569, 4066, - 3966, 3570, 4066, - 3965, 3572, 4065, - 3963, 3574, 4063, - 3960, 3577, 4062, - 3956, 3581, 4059, - 3951, 3587, 4056, - 3944, 3594, 4052, - 3935, 3603, 4047, - 3922, 3615, 4039, - 3904, 3631, 4029, - 3879, 3651, 4014, - 3844, 3677, 3995, - 3791, 3709, 3967, - 3710, 3749, 3927, - 3572, 3797, 3867, - 3281, 3855, 3772, - 0, 3922, 3604, - 4095, 3599, 4095, - 4095, 3599, 4095, - 4095, 3599, 4095, - 4095, 3599, 4095, - 4095, 3599, 4095, - 4095, 3599, 4095, - 4095, 3599, 4095, - 4095, 3599, 4095, - 4095, 3599, 4095, - 4095, 3599, 4095, - 4095, 3600, 4095, - 4095, 3600, 4095, - 4095, 3601, 4095, - 4095, 3601, 4095, - 4095, 3602, 4095, - 4095, 3603, 4095, - 4095, 3605, 4095, - 4095, 3607, 4095, - 4095, 3610, 4095, - 4095, 3614, 4095, - 4095, 3619, 4095, - 4095, 3625, 4095, - 4095, 3634, 4095, - 4095, 3645, 4095, - 4090, 3660, 4095, - 4073, 3679, 4095, - 4050, 3703, 4083, - 4018, 3734, 4060, - 3970, 3772, 4027, - 3897, 3818, 3980, - 3778, 3873, 3908, - 3543, 3938, 3789, - 4095, 3640, 4095, - 4095, 3640, 4095, - 4095, 3640, 4095, - 4095, 3640, 4095, - 4095, 3640, 4095, - 4095, 3640, 4095, - 4095, 3640, 4095, - 4095, 3640, 4095, - 4095, 3640, 4095, - 4095, 3641, 4095, - 4095, 3641, 4095, - 4095, 3641, 4095, - 4095, 3642, 4095, - 4095, 3642, 4095, - 4095, 3643, 4095, - 4095, 3644, 4095, - 4095, 3646, 4095, - 4095, 3648, 4095, - 4095, 3650, 4095, - 4095, 3654, 4095, - 4095, 3658, 4095, - 4095, 3664, 4095, - 4095, 3672, 4095, - 4095, 3683, 4095, - 4095, 3696, 4095, - 4095, 3714, 4095, - 4095, 3736, 4095, - 4095, 3765, 4095, - 4095, 3800, 4095, - 4095, 3844, 4095, - 4067, 3896, 4043, - 3958, 3958, 3958 -] + "Intervals": [0, 33, 66, 99, 132, 165, 198, 231, 264, 297, 330, 363, 396, 429, 462, 495, 528, 561, 594, 627, 660, 693, 726, 759, 792, 825, 858, 891, 924, 957, 990, 1023], + "Values": [0, 0, 0, +0, 0, 0, +0, 15, 0, +0, 104, 0, +0, 201, 0, +0, 305, 0, +0, 415, 0, +0, 530, 0, +0, 649, 0, +0, 771, 0, +0, 895, 0, +0, 1022, 0, +0, 1149, 0, +0, 1278, 0, +0, 1408, 0, +0, 1538, 0, +0, 1668, 0, +0, 1799, 0, +0, 1931, 0, +0, 2062, 0, +0, 2194, 0, +0, 2326, 0, +0, 2457, 0, +0, 2589, 0, +0, 2721, 0, +0, 2853, 0, +0, 2985, 0, +0, 3117, 0, +0, 3249, 0, +0, 3381, 0, +0, 3514, 0, +0, 3646, 0, +130, 0, 20, +28, 0, 0, +0, 33, 0, +0, 119, 0, +0, 213, 0, +0, 315, 0, +0, 423, 0, +0, 536, 0, +0, 654, 0, +0, 775, 0, +0, 898, 0, +0, 1024, 0, +0, 1151, 0, +0, 1279, 0, +0, 1408, 0, +0, 1538, 0, +0, 1669, 0, +0, 1800, 0, +0, 1931, 0, +0, 2062, 0, +0, 2194, 0, +0, 2326, 0, +0, 2458, 0, +0, 2589, 0, +0, 2721, 0, +0, 2853, 0, +0, 2985, 0, +0, 3117, 0, +0, 3249, 0, +0, 3381, 0, +0, 3514, 0, +0, 3646, 0, +342, 0, 170, +280, 0, 102, +183, 56, 0, +7, 139, 0, +0, 229, 0, +0, 328, 0, +0, 433, 0, +0, 544, 0, +0, 660, 0, +0, 779, 0, +0, 902, 0, +0, 1026, 0, +0, 1153, 0, +0, 1281, 0, +0, 1410, 0, +0, 1539, 0, +0, 1670, 0, +0, 1800, 0, +0, 1931, 0, +0, 2063, 0, +0, 2194, 0, +0, 2326, 0, +0, 2458, 0, +0, 2589, 0, +0, 2721, 0, +0, 2853, 0, +0, 2985, 0, +0, 3117, 0, +0, 3249, 0, +0, 3381, 0, +0, 3514, 0, +0, 3646, 0, +526, 0, 315, +486, 18, 266, +426, 86, 192, +331, 163, 68, +163, 250, 0, +0, 344, 0, +0, 446, 0, +0, 555, 0, +0, 668, 0, +0, 785, 0, +0, 906, 0, +0, 1030, 0, +0, 1156, 0, +0, 1283, 0, +0, 1411, 0, +0, 1540, 0, +0, 1670, 0, +0, 1801, 0, +0, 1932, 0, +0, 2063, 0, +0, 2194, 0, +0, 2326, 0, +0, 2458, 0, +0, 2590, 0, +0, 2722, 0, +0, 2853, 0, +0, 2985, 0, +0, 3117, 0, +0, 3249, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +693, 8, 457, +666, 60, 422, +626, 123, 370, +568, 195, 290, +475, 276, 155, +312, 366, 0, +0, 463, 0, +0, 568, 0, +0, 678, 0, +0, 794, 0, +0, 913, 0, +0, 1035, 0, +0, 1159, 0, +0, 1285, 0, +0, 1413, 0, +0, 1542, 0, +0, 1672, 0, +0, 1802, 0, +0, 1932, 0, +0, 2064, 0, +0, 2195, 0, +0, 2326, 0, +0, 2458, 0, +0, 2590, 0, +0, 2722, 0, +0, 2854, 0, +0, 2985, 0, +0, 3117, 0, +0, 3249, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +850, 65, 596, +831, 112, 570, +804, 168, 534, +765, 233, 479, +707, 308, 395, +616, 393, 250, +457, 485, 0, +82, 585, 0, +0, 692, 0, +0, 804, 0, +0, 921, 0, +0, 1041, 0, +0, 1164, 0, +0, 1289, 0, +0, 1416, 0, +0, 1544, 0, +0, 1673, 0, +0, 1803, 0, +0, 1933, 0, +0, 2064, 0, +0, 2195, 0, +0, 2327, 0, +0, 2458, 0, +0, 2590, 0, +0, 2722, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +999, 131, 733, +986, 172, 714, +967, 222, 688, +940, 280, 650, +901, 348, 594, +844, 426, 505, +755, 513, 352, +598, 608, 3, +235, 710, 0, +0, 818, 0, +0, 932, 0, +0, 1049, 0, +0, 1170, 0, +0, 1294, 0, +0, 1420, 0, +0, 1547, 0, +0, 1675, 0, +0, 1805, 0, +0, 1935, 0, +0, 2065, 0, +0, 2196, 0, +0, 2327, 0, +0, 2459, 0, +0, 2590, 0, +0, 2722, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1144, 207, 869, +1134, 242, 855, +1121, 285, 836, +1102, 336, 809, +1075, 397, 770, +1037, 468, 712, +980, 547, 621, +892, 636, 461, +737, 732, 82, +382, 836, 0, +0, 946, 0, +0, 1060, 0, +0, 1179, 0, +0, 1300, 0, +0, 1424, 0, +0, 1550, 0, +0, 1678, 0, +0, 1807, 0, +0, 1936, 0, +0, 2066, 0, +0, 2197, 0, +0, 2328, 0, +0, 2459, 0, +0, 2591, 0, +0, 2722, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1286, 293, 1004, +1278, 322, 994, +1268, 358, 980, +1255, 402, 960, +1236, 455, 932, +1210, 518, 893, +1172, 590, 833, +1115, 671, 740, +1027, 761, 574, +874, 859, 170, +525, 964, 0, +0, 1074, 0, +0, 1190, 0, +0, 1309, 0, +0, 1431, 0, +0, 1555, 0, +0, 1682, 0, +0, 1809, 0, +0, 1938, 0, +0, 2068, 0, +0, 2198, 0, +0, 2329, 0, +0, 2460, 0, +0, 2591, 0, +0, 2723, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1424, 386, 1138, +1419, 410, 1131, +1412, 440, 1120, +1402, 477, 1106, +1389, 523, 1086, +1370, 577, 1058, +1343, 641, 1018, +1306, 714, 958, +1250, 797, 862, +1162, 888, 692, +1010, 987, 267, +665, 1093, 0, +0, 1204, 0, +0, 1320, 0, +0, 1439, 0, +0, 1562, 0, +0, 1687, 0, +0, 1813, 0, +0, 1941, 0, +0, 2070, 0, +0, 2200, 0, +0, 2330, 0, +0, 2461, 0, +0, 2592, 0, +0, 2723, 0, +0, 2855, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1562, 487, 1272, +1558, 506, 1266, +1552, 531, 1258, +1545, 561, 1248, +1535, 599, 1234, +1522, 646, 1213, +1503, 701, 1185, +1477, 766, 1144, +1439, 840, 1084, +1383, 924, 987, +1296, 1016, 813, +1145, 1116, 370, +802, 1222, 0, +0, 1334, 0, +0, 1450, 0, +0, 1570, 0, +0, 1693, 0, +0, 1818, 0, +0, 1945, 0, +0, 2073, 0, +0, 2202, 0, +0, 2331, 0, +0, 2462, 0, +0, 2593, 0, +0, 2724, 0, +0, 2855, 0, +0, 2987, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1697, 595, 1405, +1695, 610, 1401, +1691, 629, 1395, +1685, 654, 1387, +1678, 685, 1377, +1668, 724, 1362, +1655, 771, 1342, +1636, 827, 1314, +1610, 893, 1273, +1572, 968, 1211, +1517, 1053, 1113, +1430, 1145, 937, +1279, 1246, 479, +939, 1352, 0, +0, 1465, 0, +0, 1581, 0, +0, 1701, 0, +0, 1824, 0, +0, 1950, 0, +0, 2076, 0, +0, 2204, 0, +0, 2334, 0, +0, 2463, 0, +0, 2594, 0, +0, 2725, 0, +0, 2856, 0, +0, 2987, 0, +0, 3119, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1832, 707, 1538, +1830, 719, 1535, +1827, 735, 1531, +1823, 755, 1525, +1818, 780, 1517, +1811, 811, 1507, +1801, 851, 1492, +1788, 898, 1472, +1769, 955, 1443, +1743, 1021, 1402, +1705, 1097, 1340, +1650, 1182, 1241, +1563, 1275, 1062, +1412, 1376, 594, +1074, 1483, 0, +0, 1596, 0, +0, 1712, 0, +0, 1833, 0, +0, 1956, 0, +0, 2081, 0, +0, 2208, 0, +0, 2336, 0, +0, 2466, 0, +0, 2595, 0, +0, 2726, 0, +0, 2857, 0, +0, 2988, 0, +0, 3119, 0, +0, 3251, 0, +0, 3383, 0, +0, 3514, 0, +0, 3646, 0, +1966, 824, 1671, +1965, 834, 1668, +1963, 846, 1665, +1960, 861, 1661, +1956, 881, 1655, +1951, 907, 1647, +1943, 939, 1637, +1934, 978, 1622, +1920, 1026, 1602, +1902, 1084, 1573, +1875, 1150, 1531, +1838, 1227, 1469, +1782, 1312, 1370, +1696, 1406, 1190, +1545, 1507, 712, +1209, 1614, 0, +0, 1727, 0, +0, 1844, 0, +0, 1964, 0, +0, 2088, 0, +0, 2213, 0, +0, 2340, 0, +0, 2468, 0, +0, 2597, 0, +0, 2727, 0, +0, 2858, 0, +0, 2989, 0, +0, 3120, 0, +0, 3251, 0, +0, 3383, 0, +0, 3515, 0, +0, 3646, 0, +2100, 945, 1803, +2099, 952, 1802, +2097, 961, 1799, +2095, 973, 1796, +2092, 989, 1792, +2088, 1009, 1786, +2083, 1035, 1778, +2076, 1067, 1768, +2066, 1107, 1753, +2053, 1156, 1732, +2034, 1213, 1703, +2008, 1280, 1662, +1970, 1357, 1599, +1915, 1442, 1499, +1828, 1536, 1318, +1678, 1638, 834, +1342, 1745, 0, +0, 1858, 0, +0, 1976, 0, +0, 2096, 0, +0, 2220, 0, +0, 2345, 0, +0, 2472, 0, +0, 2600, 0, +0, 2730, 0, +0, 2859, 0, +0, 2990, 0, +0, 3121, 0, +0, 3252, 0, +0, 3383, 0, +0, 3515, 0, +0, 3647, 0, +2233, 1068, 1936, +2232, 1074, 1935, +2231, 1081, 1933, +2230, 1090, 1930, +2227, 1102, 1927, +2225, 1118, 1923, +2221, 1139, 1917, +2215, 1164, 1909, +2208, 1197, 1899, +2198, 1237, 1884, +2185, 1286, 1863, +2166, 1343, 1834, +2140, 1411, 1793, +2103, 1488, 1730, +2047, 1573, 1629, +1961, 1668, 1447, +1811, 1769, 958, +1476, 1877, 0, +0, 1990, 0, +0, 2107, 0, +0, 2228, 0, +0, 2351, 0, +0, 2477, 0, +0, 2604, 0, +0, 2732, 0, +0, 2862, 0, +0, 2991, 0, +0, 3122, 0, +0, 3253, 0, +0, 3384, 0, +0, 3515, 0, +0, 3647, 0, +2366, 1194, 2068, +2366, 1198, 2067, +2365, 1203, 2066, +2364, 1210, 2064, +2362, 1220, 2062, +2360, 1232, 2059, +2357, 1248, 2054, +2353, 1268, 2049, +2348, 1294, 2041, +2340, 1327, 2030, +2331, 1367, 2015, +2317, 1416, 1995, +2299, 1474, 1966, +2273, 1542, 1924, +2235, 1619, 1861, +2180, 1705, 1760, +2093, 1799, 1577, +1944, 1901, 1084, +1609, 2009, 0, +0, 2122, 0, +0, 2239, 0, +0, 2360, 0, +0, 2483, 0, +0, 2609, 0, +0, 2736, 0, +0, 2864, 0, +0, 2994, 0, +0, 3124, 0, +0, 3254, 0, +0, 3385, 0, +0, 3516, 0, +0, 3648, 0, +2499, 1321, 2200, +2499, 1324, 2200, +2498, 1328, 2199, +2497, 1333, 2197, +2496, 1340, 2196, +2494, 1350, 2193, +2492, 1362, 2190, +2489, 1378, 2186, +2485, 1399, 2180, +2480, 1425, 2172, +2473, 1458, 2161, +2463, 1498, 2147, +2450, 1547, 2126, +2431, 1605, 2097, +2405, 1673, 2055, +2367, 1750, 1992, +2312, 1836, 1891, +2226, 1931, 1708, +2076, 2032, 1211, +1742, 2140, 0, +0, 2254, 0, +0, 2371, 0, +0, 2492, 0, +0, 2615, 0, +0, 2741, 0, +0, 2868, 0, +0, 2996, 0, +0, 3126, 0, +0, 3256, 0, +0, 3386, 0, +0, 3517, 0, +0, 3648, 0, +2632, 1449, 2333, +2631, 1451, 2332, +2631, 1454, 2331, +2630, 1458, 2330, +2629, 1464, 2329, +2628, 1471, 2327, +2626, 1481, 2325, +2624, 1493, 2322, +2621, 1509, 2318, +2617, 1530, 2312, +2612, 1556, 2304, +2605, 1589, 2293, +2595, 1629, 2278, +2582, 1678, 2258, +2563, 1736, 2229, +2537, 1804, 2187, +2500, 1881, 2123, +2444, 1968, 2023, +2358, 2062, 1839, +2208, 2164, 1340, +1874, 2272, 0, +0, 2385, 0, +0, 2503, 0, +0, 2624, 0, +0, 2747, 0, +0, 2873, 0, +0, 3000, 0, +0, 3128, 0, +0, 3258, 0, +0, 3388, 0, +0, 3518, 0, +0, 3649, 0, +2764, 1578, 2465, +2764, 1580, 2465, +2763, 1582, 2464, +2763, 1585, 2463, +2762, 1589, 2462, +2761, 1595, 2461, +2760, 1602, 2459, +2759, 1612, 2457, +2756, 1624, 2454, +2753, 1640, 2449, +2750, 1661, 2444, +2744, 1687, 2436, +2737, 1720, 2425, +2727, 1760, 2410, +2714, 1809, 2389, +2695, 1868, 2360, +2669, 1936, 2318, +2632, 2013, 2255, +2577, 2099, 2154, +2490, 2194, 1970, +2341, 2296, 1469, +2007, 2404, 0, +0, 2517, 0, +0, 2635, 0, +0, 2756, 0, +0, 2879, 0, +0, 3005, 0, +0, 3132, 0, +0, 3260, 0, +0, 3390, 0, +0, 3520, 0, +0, 3650, 0, +2896, 1708, 2597, +2896, 1709, 2597, +2896, 1711, 2596, +2896, 1713, 2596, +2895, 1716, 2595, +2894, 1721, 2594, +2893, 1726, 2593, +2892, 1733, 2591, +2891, 1743, 2589, +2889, 1755, 2586, +2886, 1771, 2581, +2882, 1792, 2575, +2876, 1818, 2568, +2869, 1851, 2557, +2859, 1892, 2542, +2846, 1941, 2521, +2828, 1999, 2492, +2801, 2067, 2450, +2764, 2145, 2387, +2709, 2231, 2286, +2622, 2326, 2101, +2473, 2428, 1599, +2139, 2536, 0, +0, 2649, 0, +0, 2767, 0, +0, 2888, 0, +0, 3011, 0, +0, 3137, 0, +0, 3264, 0, +0, 3393, 0, +0, 3522, 0, +0, 3652, 0, +3029, 1838, 2729, +3029, 1839, 2729, +3028, 1841, 2729, +3028, 1842, 2728, +3028, 1845, 2728, +3027, 1848, 2727, +3027, 1852, 2726, +3026, 1858, 2725, +3024, 1865, 2723, +3023, 1874, 2721, +3021, 1887, 2717, +3018, 1903, 2713, +3014, 1924, 2707, +3009, 1950, 2699, +3001, 1983, 2689, +2992, 2024, 2674, +2978, 2073, 2653, +2960, 2131, 2624, +2934, 2199, 2582, +2896, 2277, 2519, +2841, 2363, 2418, +2755, 2458, 2233, +2605, 2560, 1730, +2272, 2668, 0, +0, 2781, 0, +0, 2899, 0, +0, 3020, 0, +0, 3143, 0, +0, 3269, 0, +0, 3396, 0, +0, 3525, 0, +0, 3654, 0, +3161, 1969, 2861, +3161, 1970, 2861, +3161, 1971, 2861, +3160, 1972, 2861, +3160, 1974, 2860, +3160, 1976, 2860, +3159, 1980, 2859, +3159, 1984, 2858, +3158, 1989, 2857, +3157, 1996, 2855, +3155, 2006, 2853, +3153, 2018, 2849, +3150, 2035, 2845, +3146, 2055, 2839, +3141, 2082, 2831, +3134, 2115, 2821, +3124, 2155, 2806, +3110, 2205, 2785, +3092, 2263, 2756, +3066, 2331, 2714, +3028, 2409, 2651, +2973, 2495, 2549, +2887, 2590, 2365, +2737, 2692, 1861, +2404, 2800, 0, +0, 2913, 0, +0, 3031, 0, +0, 3152, 0, +0, 3276, 0, +0, 3401, 0, +0, 3528, 0, +0, 3657, 0, +3293, 2100, 2994, +3293, 2101, 2993, +3293, 2102, 2993, +3293, 2103, 2993, +3293, 2104, 2993, +3292, 2106, 2992, +3292, 2108, 2992, +3291, 2111, 2991, +3291, 2115, 2990, +3290, 2121, 2989, +3289, 2128, 2987, +3287, 2138, 2985, +3285, 2150, 2981, +3282, 2166, 2977, +3278, 2187, 2971, +3273, 2213, 2963, +3266, 2246, 2953, +3256, 2287, 2938, +3242, 2336, 2917, +3224, 2395, 2888, +3198, 2463, 2846, +3161, 2541, 2783, +3105, 2627, 2681, +3019, 2722, 2497, +2870, 2824, 1992, +2536, 2932, 0, +0, 3046, 0, +0, 3163, 0, +0, 3284, 0, +0, 3408, 0, +0, 3533, 0, +0, 3660, 0, +3425, 2232, 3126, +3425, 2232, 3126, +3425, 2233, 3125, +3425, 2233, 3125, +3425, 2234, 3125, +3425, 2236, 3125, +3424, 2238, 3124, +3424, 2240, 3124, +3424, 2243, 3123, +3423, 2247, 3122, +3422, 2253, 3121, +3421, 2260, 3119, +3419, 2270, 3117, +3417, 2282, 3113, +3414, 2298, 3109, +3410, 2319, 3103, +3405, 2345, 3095, +3398, 2378, 3085, +3388, 2419, 3070, +3375, 2468, 3049, +3356, 2527, 3020, +3330, 2595, 2978, +3293, 2673, 2915, +3237, 2759, 2813, +3151, 2854, 2629, +3002, 2956, 2124, +2668, 3064, 0, +0, 3178, 0, +0, 3295, 0, +0, 3416, 0, +0, 3540, 0, +0, 3665, 0, +3557, 2363, 3258, +3557, 2364, 3258, +3557, 2364, 3258, +3557, 2365, 3258, +3557, 2365, 3257, +3557, 2366, 3257, +3557, 2368, 3257, +3557, 2370, 3256, +3556, 2372, 3256, +3556, 2375, 3255, +3555, 2379, 3254, +3554, 2385, 3253, +3553, 2392, 3251, +3551, 2402, 3249, +3549, 2414, 3245, +3546, 2430, 3241, +3542, 2451, 3235, +3537, 2477, 3227, +3530, 2510, 3217, +3520, 2551, 3202, +3507, 2600, 3181, +3488, 2659, 3152, +3462, 2727, 3110, +3425, 2805, 3047, +3369, 2891, 2945, +3283, 2986, 2760, +3134, 3088, 2255, +2800, 3196, 0, +0, 3310, 0, +0, 3427, 0, +0, 3548, 0, +0, 3672, 0, +3690, 2495, 3390, +3690, 2495, 3390, +3690, 2496, 3390, +3689, 2496, 3390, +3689, 2497, 3390, +3689, 2497, 3389, +3689, 2498, 3389, +3689, 2500, 3389, +3689, 2501, 3388, +3688, 2504, 3388, +3688, 2507, 3387, +3687, 2511, 3386, +3686, 2517, 3385, +3685, 2524, 3383, +3683, 2534, 3381, +3681, 2546, 3378, +3678, 2562, 3373, +3674, 2583, 3367, +3669, 2609, 3360, +3662, 2642, 3349, +3652, 2683, 3334, +3639, 2732, 3313, +3620, 2791, 3284, +3594, 2859, 3242, +3557, 2937, 3179, +3502, 3023, 3077, +3415, 3118, 2892, +3266, 3220, 2387, +2933, 3328, 0, +0, 3442, 0, +0, 3559, 0, +0, 3680, 0, +3822, 2627, 3522, +3822, 2627, 3522, +3822, 2627, 3522, +3822, 2628, 3522, +3822, 2628, 3522, +3822, 2629, 3522, +3821, 2629, 3521, +3821, 2630, 3521, +3821, 2632, 3521, +3821, 2633, 3521, +3820, 2636, 3520, +3820, 2639, 3519, +3819, 2643, 3518, +3818, 2649, 3517, +3817, 2656, 3515, +3816, 2666, 3513, +3813, 2678, 3510, +3810, 2694, 3505, +3807, 2715, 3499, +3801, 2741, 3492, +3794, 2774, 3481, +3784, 2815, 3466, +3771, 2864, 3445, +3752, 2923, 3416, +3726, 2991, 3374, +3689, 3069, 3311, +3634, 3155, 3209, +3547, 3250, 3024, +3398, 3352, 2519, +3065, 3460, 0, +0, 3574, 0, +0, 3691, 0, +3954, 2759, 3654, +3954, 2759, 3654, +3954, 2759, 3654, +3954, 2759, 3654, +3954, 2760, 3654, +3954, 2760, 3654, +3954, 2761, 3654, +3953, 2761, 3654, +3953, 2762, 3653, +3953, 2764, 3653, +3953, 2765, 3653, +3952, 2768, 3652, +3952, 2771, 3651, +3951, 2775, 3650, +3950, 2781, 3649, +3949, 2788, 3647, +3948, 2798, 3645, +3945, 2810, 3642, +3943, 2826, 3637, +3939, 2847, 3632, +3933, 2873, 3624, +3926, 2906, 3613, +3916, 2947, 3598, +3903, 2996, 3577, +3884, 3055, 3548, +3858, 3123, 3506, +3821, 3201, 3443, +3766, 3287, 3341, +3679, 3382, 3156, +3530, 3484, 2651, +3197, 3592, 0, +0, 3706, 0, +4086, 2891, 3786, +4086, 2891, 3786, +4086, 2891, 3786, +4086, 2891, 3786, +4086, 2891, 3786, +4086, 2892, 3786, +4086, 2892, 3786, +4086, 2893, 3786, +4086, 2893, 3786, +4085, 2894, 3785, +4085, 2896, 3785, +4085, 2897, 3785, +4085, 2900, 3784, +4084, 2903, 3783, +4083, 2907, 3782, +4083, 2913, 3781, +4081, 2920, 3779, +4080, 2930, 3777, +4078, 2942, 3774, +4075, 2958, 3769, +4071, 2979, 3764, +4065, 3005, 3756, +4058, 3038, 3745, +4049, 3079, 3730, +4035, 3128, 3709, +4017, 3187, 3680, +3991, 3255, 3638, +3953, 3333, 3575, +3898, 3419, 3473, +3812, 3514, 3289, +3662, 3616, 2783, +3329, 3725, 0, +4095, 3023, 3918, +4095, 3023, 3918, +4095, 3023, 3918, +4095, 3023, 3918, +4095, 3023, 3918, +4095, 3023, 3918, +4095, 3024, 3918, +4095, 3024, 3918, +4095, 3025, 3918, +4095, 3025, 3918, +4095, 3026, 3917, +4095, 3028, 3917, +4095, 3030, 3917, +4095, 3032, 3916, +4095, 3035, 3915, +4095, 3039, 3915, +4095, 3045, 3913, +4095, 3052, 3911, +4095, 3062, 3909, +4095, 3074, 3906, +4095, 3090, 3902, +4095, 3111, 3896, +4095, 3137, 3888, +4095, 3170, 3877, +4095, 3211, 3862, +4095, 3261, 3842, +4095, 3319, 3812, +4095, 3387, 3770, +4085, 3465, 3707, +4030, 3551, 3605, +3944, 3646, 3421, +3794, 3748, 2915, +4095, 3155, 4050, +4095, 3155, 4050, +4095, 3155, 4050, +4095, 3155, 4050, +4095, 3155, 4050, +4095, 3155, 4050, +4095, 3155, 4050, +4095, 3156, 4050, +4095, 3156, 4050, +4095, 3157, 4050, +4095, 3157, 4050, +4095, 3158, 4050, +4095, 3160, 4049, +4095, 3162, 4049, +4095, 3164, 4048, +4095, 3167, 4048, +4095, 3171, 4047, +4095, 3177, 4045, +4095, 3184, 4044, +4095, 3194, 4041, +4095, 3206, 4038, +4095, 3222, 4034, +4095, 3243, 4028, +4095, 3270, 4020, +4095, 3303, 4009, +4095, 3343, 3994, +4095, 3393, 3974, +4095, 3451, 3944, +4095, 3519, 3902, +4095, 3597, 3839, +4095, 3684, 3738, +4076, 3778, 3553, +0, 0, 0, +0, 0, 0, +0, 49, 0, +0, 132, 0, +0, 224, 0, +0, 324, 0, +0, 430, 0, +0, 542, 0, +0, 658, 0, +0, 778, 0, +0, 901, 0, +0, 1025, 0, +0, 1152, 0, +0, 1280, 0, +0, 1409, 0, +0, 1539, 0, +0, 1669, 0, +0, 1800, 0, +0, 1931, 0, +0, 2063, 0, +0, 2194, 0, +0, 2326, 0, +0, 2458, 0, +0, 2589, 0, +0, 2721, 0, +0, 2853, 0, +0, 2985, 0, +0, 3117, 0, +0, 3249, 0, +0, 3381, 0, +0, 3514, 0, +0, 3646, 0, +104, 0, 80, +0, 0, 0, +0, 66, 0, +0, 147, 0, +0, 236, 0, +0, 333, 0, +0, 438, 0, +0, 548, 0, +0, 662, 0, +0, 781, 0, +0, 903, 0, +0, 1028, 0, +0, 1154, 0, +0, 1281, 0, +0, 1410, 0, +0, 1540, 0, +0, 1670, 0, +0, 1800, 0, +0, 1931, 0, +0, 2063, 0, +0, 2194, 0, +0, 2326, 0, +0, 2458, 0, +0, 2590, 0, +0, 2721, 0, +0, 2853, 0, +0, 2985, 0, +0, 3117, 0, +0, 3249, 0, +0, 3381, 0, +0, 3514, 0, +0, 3646, 0, +326, 0, 214, +262, 20, 152, +160, 88, 54, +0, 165, 0, +0, 251, 0, +0, 346, 0, +0, 447, 0, +0, 555, 0, +0, 668, 0, +0, 786, 0, +0, 907, 0, +0, 1030, 0, +0, 1156, 0, +0, 1283, 0, +0, 1411, 0, +0, 1540, 0, +0, 1670, 0, +0, 1801, 0, +0, 1932, 0, +0, 2063, 0, +0, 2194, 0, +0, 2326, 0, +0, 2458, 0, +0, 2590, 0, +0, 2722, 0, +0, 2853, 0, +0, 2985, 0, +0, 3117, 0, +0, 3249, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +515, 0, 347, +474, 52, 302, +413, 116, 234, +315, 188, 122, +139, 271, 0, +0, 361, 0, +0, 460, 0, +0, 565, 0, +0, 676, 0, +0, 792, 0, +0, 911, 0, +0, 1034, 0, +0, 1158, 0, +0, 1285, 0, +0, 1413, 0, +0, 1542, 0, +0, 1671, 0, +0, 1802, 0, +0, 1932, 0, +0, 2063, 0, +0, 2195, 0, +0, 2326, 0, +0, 2458, 0, +0, 2590, 0, +0, 2722, 0, +0, 2854, 0, +0, 2985, 0, +0, 3117, 0, +0, 3249, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +686, 42, 481, +658, 92, 447, +618, 150, 399, +558, 218, 324, +463, 295, 200, +295, 382, 0, +0, 477, 0, +0, 579, 0, +0, 687, 0, +0, 800, 0, +0, 918, 0, +0, 1039, 0, +0, 1162, 0, +0, 1288, 0, +0, 1415, 0, +0, 1543, 0, +0, 1673, 0, +0, 1802, 0, +0, 1933, 0, +0, 2064, 0, +0, 2195, 0, +0, 2327, 0, +0, 2458, 0, +0, 2590, 0, +0, 2722, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +844, 96, 614, +825, 140, 589, +798, 192, 554, +758, 255, 502, +700, 327, 422, +607, 408, 287, +444, 498, 4, +53, 596, 0, +0, 700, 0, +0, 811, 0, +0, 926, 0, +0, 1045, 0, +0, 1167, 0, +0, 1291, 0, +0, 1418, 0, +0, 1545, 0, +0, 1674, 0, +0, 1804, 0, +0, 1934, 0, +0, 2065, 0, +0, 2196, 0, +0, 2327, 0, +0, 2458, 0, +0, 2590, 0, +0, 2722, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +996, 158, 746, +982, 197, 728, +963, 244, 702, +936, 300, 666, +897, 365, 611, +839, 440, 527, +748, 525, 382, +589, 617, 65, +214, 718, 0, +0, 824, 0, +0, 936, 0, +0, 1053, 0, +0, 1173, 0, +0, 1296, 0, +0, 1421, 0, +0, 1548, 0, +0, 1676, 0, +0, 1805, 0, +0, 1935, 0, +0, 2065, 0, +0, 2196, 0, +0, 2327, 0, +0, 2459, 0, +0, 2590, 0, +0, 2722, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1141, 230, 879, +1131, 263, 865, +1118, 304, 846, +1099, 354, 820, +1072, 412, 782, +1034, 481, 726, +976, 558, 638, +887, 645, 484, +730, 740, 135, +367, 842, 0, +0, 950, 0, +0, 1064, 0, +0, 1181, 0, +0, 1302, 0, +0, 1426, 0, +0, 1552, 0, +0, 1679, 0, +0, 1807, 0, +0, 1937, 0, +0, 2067, 0, +0, 2197, 0, +0, 2328, 0, +0, 2459, 0, +0, 2591, 0, +0, 2722, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1284, 312, 1011, +1276, 340, 1001, +1266, 374, 987, +1253, 417, 968, +1234, 468, 941, +1207, 529, 902, +1169, 600, 844, +1112, 679, 753, +1024, 768, 593, +869, 865, 214, +514, 968, 0, +0, 1078, 0, +0, 1192, 0, +0, 1311, 0, +0, 1432, 0, +0, 1557, 0, +0, 1683, 0, +0, 1810, 0, +0, 1939, 0, +0, 2068, 0, +0, 2198, 0, +0, 2329, 0, +0, 2460, 0, +0, 2591, 0, +0, 2723, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1423, 402, 1144, +1418, 425, 1136, +1410, 454, 1126, +1401, 490, 1112, +1387, 534, 1092, +1368, 587, 1064, +1342, 650, 1025, +1304, 722, 966, +1247, 803, 872, +1159, 893, 706, +1006, 991, 302, +657, 1096, 0, +0, 1206, 0, +0, 1322, 0, +0, 1441, 0, +0, 1563, 0, +0, 1687, 0, +0, 1814, 0, +0, 1941, 0, +0, 2070, 0, +0, 2200, 0, +0, 2330, 0, +0, 2461, 0, +0, 2592, 0, +0, 2723, 0, +0, 2855, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1561, 500, 1276, +1557, 518, 1270, +1551, 542, 1263, +1544, 572, 1252, +1534, 609, 1238, +1521, 655, 1218, +1502, 709, 1190, +1476, 773, 1150, +1438, 846, 1090, +1382, 929, 994, +1294, 1020, 824, +1142, 1119, 399, +797, 1225, 0, +0, 1336, 0, +0, 1452, 0, +0, 1571, 0, +0, 1694, 0, +0, 1819, 0, +0, 1945, 0, +0, 2073, 0, +0, 2202, 0, +0, 2332, 0, +0, 2462, 0, +0, 2593, 0, +0, 2724, 0, +0, 2855, 0, +0, 2987, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1697, 605, 1408, +1694, 619, 1404, +1690, 639, 1398, +1684, 663, 1391, +1677, 694, 1380, +1667, 732, 1366, +1654, 778, 1346, +1635, 833, 1317, +1609, 898, 1277, +1571, 973, 1216, +1515, 1056, 1119, +1428, 1148, 945, +1277, 1248, 502, +935, 1354, 0, +0, 1466, 0, +0, 1582, 0, +0, 1702, 0, +0, 1825, 0, +0, 1950, 0, +0, 2077, 0, +0, 2205, 0, +0, 2334, 0, +0, 2464, 0, +0, 2594, 0, +0, 2725, 0, +0, 2856, 0, +0, 2987, 0, +0, 3119, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1832, 715, 1540, +1830, 727, 1537, +1827, 742, 1533, +1823, 761, 1527, +1817, 786, 1519, +1810, 818, 1509, +1800, 856, 1494, +1787, 903, 1474, +1768, 959, 1446, +1742, 1025, 1405, +1704, 1100, 1343, +1649, 1185, 1245, +1562, 1277, 1069, +1411, 1378, 612, +1071, 1484, 0, +0, 1597, 0, +0, 1713, 0, +0, 1833, 0, +0, 1956, 0, +0, 2082, 0, +0, 2208, 0, +0, 2337, 0, +0, 2466, 0, +0, 2596, 0, +0, 2726, 0, +0, 2857, 0, +0, 2988, 0, +0, 3119, 0, +0, 3251, 0, +0, 3383, 0, +0, 3514, 0, +0, 3646, 0, +1966, 830, 1672, +1964, 840, 1670, +1962, 851, 1667, +1959, 867, 1663, +1955, 887, 1657, +1950, 912, 1649, +1943, 943, 1639, +1933, 983, 1624, +1920, 1030, 1604, +1901, 1087, 1575, +1875, 1153, 1534, +1837, 1229, 1472, +1782, 1314, 1373, +1695, 1407, 1194, +1544, 1508, 726, +1206, 1615, 0, +0, 1728, 0, +0, 1845, 0, +0, 1965, 0, +0, 2088, 0, +0, 2213, 0, +0, 2340, 0, +0, 2468, 0, +0, 2598, 0, +0, 2728, 0, +0, 2858, 0, +0, 2989, 0, +0, 3120, 0, +0, 3251, 0, +0, 3383, 0, +0, 3515, 0, +0, 3646, 0, +2100, 950, 1805, +2099, 957, 1803, +2097, 966, 1801, +2095, 978, 1797, +2092, 993, 1793, +2088, 1013, 1787, +2083, 1039, 1780, +2075, 1071, 1769, +2066, 1110, 1754, +2052, 1159, 1734, +2034, 1216, 1705, +2007, 1282, 1663, +1970, 1359, 1601, +1914, 1444, 1502, +1828, 1538, 1322, +1678, 1639, 844, +1341, 1746, 0, +0, 1859, 0, +0, 1976, 0, +0, 2097, 0, +0, 2220, 0, +0, 2345, 0, +0, 2472, 0, +0, 2600, 0, +0, 2730, 0, +0, 2860, 0, +0, 2990, 0, +0, 3121, 0, +0, 3252, 0, +0, 3383, 0, +0, 3515, 0, +0, 3647, 0, +2233, 1072, 1937, +2232, 1077, 1935, +2231, 1084, 1934, +2229, 1093, 1931, +2227, 1106, 1928, +2224, 1121, 1924, +2220, 1142, 1918, +2215, 1167, 1910, +2208, 1200, 1900, +2198, 1239, 1885, +2185, 1288, 1864, +2166, 1345, 1836, +2140, 1412, 1794, +2103, 1489, 1731, +2047, 1575, 1631, +1960, 1669, 1450, +1810, 1770, 966, +1475, 1878, 0, +0, 1990, 0, +0, 2108, 0, +0, 2228, 0, +0, 2352, 0, +0, 2477, 0, +0, 2604, 0, +0, 2732, 0, +0, 2862, 0, +0, 2992, 0, +0, 3122, 0, +0, 3253, 0, +0, 3384, 0, +0, 3515, 0, +0, 3647, 0, +2366, 1196, 2069, +2365, 1200, 2068, +2365, 1206, 2067, +2363, 1213, 2065, +2362, 1222, 2063, +2360, 1234, 2059, +2357, 1250, 2055, +2353, 1271, 2049, +2347, 1297, 2041, +2340, 1329, 2031, +2330, 1369, 2016, +2317, 1418, 1995, +2298, 1475, 1966, +2272, 1543, 1925, +2235, 1620, 1862, +2180, 1706, 1762, +2093, 1800, 1579, +1943, 1901, 1090, +1608, 2009, 0, +0, 2122, 0, +0, 2239, 0, +0, 2360, 0, +0, 2483, 0, +0, 2609, 0, +0, 2736, 0, +0, 2864, 0, +0, 2994, 0, +0, 3124, 0, +0, 3254, 0, +0, 3385, 0, +0, 3516, 0, +0, 3648, 0, +2499, 1323, 2201, +2498, 1326, 2200, +2498, 1330, 2199, +2497, 1335, 2198, +2496, 1342, 2196, +2494, 1352, 2194, +2492, 1364, 2191, +2489, 1380, 2186, +2485, 1400, 2181, +2480, 1426, 2173, +2473, 1459, 2162, +2463, 1499, 2147, +2449, 1548, 2127, +2431, 1606, 2098, +2405, 1674, 2056, +2367, 1751, 1993, +2312, 1837, 1892, +2225, 1931, 1709, +2076, 2033, 1216, +1741, 2141, 0, +0, 2254, 0, +0, 2371, 0, +0, 2492, 0, +0, 2615, 0, +0, 2741, 0, +0, 2868, 0, +0, 2996, 0, +0, 3126, 0, +0, 3256, 0, +0, 3386, 0, +0, 3517, 0, +0, 3648, 0, +2631, 1450, 2333, +2631, 1453, 2333, +2631, 1456, 2332, +2630, 1460, 2331, +2629, 1465, 2330, +2628, 1473, 2328, +2626, 1482, 2325, +2624, 1494, 2322, +2621, 1510, 2318, +2617, 1531, 2312, +2612, 1557, 2304, +2605, 1590, 2294, +2595, 1630, 2279, +2582, 1679, 2258, +2563, 1737, 2229, +2537, 1805, 2187, +2500, 1882, 2124, +2444, 1968, 2023, +2358, 2063, 1840, +2208, 2164, 1343, +1874, 2272, 0, +0, 2386, 0, +0, 2503, 0, +0, 2624, 0, +0, 2747, 0, +0, 2873, 0, +0, 3000, 0, +0, 3128, 0, +0, 3258, 0, +0, 3388, 0, +0, 3518, 0, +0, 3649, 0, +2764, 1579, 2465, +2764, 1581, 2465, +2763, 1583, 2464, +2763, 1586, 2464, +2762, 1590, 2463, +2761, 1596, 2461, +2760, 1603, 2460, +2758, 1613, 2457, +2756, 1625, 2454, +2753, 1641, 2450, +2749, 1662, 2444, +2744, 1688, 2436, +2737, 1721, 2425, +2727, 1761, 2410, +2714, 1810, 2390, +2695, 1868, 2361, +2669, 1936, 2319, +2632, 2013, 2256, +2576, 2100, 2155, +2490, 2194, 1971, +2341, 2296, 1472, +2006, 2404, 0, +0, 2518, 0, +0, 2635, 0, +0, 2756, 0, +0, 2879, 0, +0, 3005, 0, +0, 3132, 0, +0, 3261, 0, +0, 3390, 0, +0, 3520, 0, +0, 3650, 0, +2896, 1709, 2597, +2896, 1710, 2597, +2896, 1712, 2597, +2895, 1714, 2596, +2895, 1717, 2595, +2894, 1721, 2594, +2893, 1727, 2593, +2892, 1734, 2591, +2891, 1744, 2589, +2888, 1756, 2586, +2886, 1772, 2581, +2882, 1793, 2576, +2876, 1819, 2568, +2869, 1852, 2557, +2859, 1892, 2542, +2846, 1942, 2522, +2827, 2000, 2492, +2801, 2068, 2450, +2764, 2145, 2387, +2709, 2232, 2286, +2622, 2326, 2102, +2473, 2428, 1601, +2139, 2536, 0, +0, 2650, 0, +0, 2767, 0, +0, 2888, 0, +0, 3011, 0, +0, 3137, 0, +0, 3264, 0, +0, 3393, 0, +0, 3522, 0, +0, 3652, 0, +3029, 1839, 2729, +3029, 1840, 2729, +3028, 1841, 2729, +3028, 1843, 2729, +3028, 1845, 2728, +3027, 1849, 2727, +3026, 1853, 2726, +3026, 1858, 2725, +3024, 1865, 2723, +3023, 1875, 2721, +3021, 1887, 2718, +3018, 1904, 2713, +3014, 1924, 2708, +3009, 1950, 2700, +3001, 1983, 2689, +2992, 2024, 2674, +2978, 2073, 2653, +2960, 2132, 2624, +2934, 2199, 2582, +2896, 2277, 2519, +2841, 2363, 2418, +2754, 2458, 2234, +2605, 2560, 1732, +2271, 2668, 0, +0, 2781, 0, +0, 2899, 0, +0, 3020, 0, +0, 3144, 0, +0, 3269, 0, +0, 3396, 0, +0, 3525, 0, +0, 3654, 0, +3161, 1970, 2862, +3161, 1970, 2861, +3161, 1971, 2861, +3160, 1973, 2861, +3160, 1975, 2860, +3160, 1977, 2860, +3159, 1980, 2859, +3159, 1984, 2858, +3158, 1990, 2857, +3157, 1997, 2855, +3155, 2006, 2853, +3153, 2019, 2850, +3150, 2035, 2845, +3146, 2056, 2839, +3141, 2082, 2832, +3133, 2115, 2821, +3124, 2156, 2806, +3110, 2205, 2785, +3092, 2263, 2756, +3066, 2331, 2714, +3028, 2409, 2651, +2973, 2495, 2550, +2887, 2590, 2365, +2737, 2692, 1862, +2404, 2800, 0, +0, 2914, 0, +0, 3031, 0, +0, 3152, 0, +0, 3276, 0, +0, 3401, 0, +0, 3528, 0, +0, 3657, 0, +3293, 2101, 2994, +3293, 2101, 2994, +3293, 2102, 2993, +3293, 2103, 2993, +3293, 2104, 2993, +3292, 2106, 2992, +3292, 2109, 2992, +3291, 2112, 2991, +3291, 2116, 2990, +3290, 2121, 2989, +3289, 2129, 2987, +3287, 2138, 2985, +3285, 2151, 2982, +3282, 2167, 2977, +3278, 2187, 2971, +3273, 2214, 2963, +3266, 2247, 2953, +3256, 2287, 2938, +3242, 2337, 2917, +3224, 2395, 2888, +3198, 2463, 2846, +3160, 2541, 2783, +3105, 2627, 2681, +3019, 2722, 2497, +2870, 2824, 1993, +2536, 2932, 0, +0, 3046, 0, +0, 3163, 0, +0, 3284, 0, +0, 3408, 0, +0, 3533, 0, +0, 3660, 0, +3425, 2232, 3126, +3425, 2232, 3126, +3425, 2233, 3126, +3425, 2234, 3125, +3425, 2235, 3125, +3425, 2236, 3125, +3424, 2238, 3124, +3424, 2240, 3124, +3424, 2243, 3123, +3423, 2248, 3122, +3422, 2253, 3121, +3421, 2260, 3119, +3419, 2270, 3117, +3417, 2282, 3114, +3414, 2299, 3109, +3410, 2319, 3103, +3405, 2346, 3095, +3398, 2379, 3085, +3388, 2419, 3070, +3375, 2469, 3049, +3356, 2527, 3020, +3330, 2595, 2978, +3293, 2673, 2915, +3237, 2759, 2813, +3151, 2854, 2629, +3002, 2956, 2124, +2668, 3064, 0, +0, 3178, 0, +0, 3295, 0, +0, 3416, 0, +0, 3540, 0, +0, 3665, 0, +3557, 2364, 3258, +3557, 2364, 3258, +3557, 2364, 3258, +3557, 2365, 3258, +3557, 2366, 3257, +3557, 2367, 3257, +3557, 2368, 3257, +3557, 2370, 3256, +3556, 2372, 3256, +3556, 2375, 3255, +3555, 2379, 3254, +3554, 2385, 3253, +3553, 2392, 3251, +3551, 2402, 3249, +3549, 2414, 3246, +3546, 2430, 3241, +3542, 2451, 3235, +3537, 2477, 3228, +3530, 2510, 3217, +3520, 2551, 3202, +3507, 2600, 3181, +3488, 2659, 3152, +3462, 2727, 3110, +3425, 2805, 3047, +3369, 2891, 2945, +3283, 2986, 2761, +3134, 3088, 2256, +2800, 3196, 0, +0, 3310, 0, +0, 3427, 0, +0, 3548, 0, +0, 3672, 0, +3690, 2495, 3390, +3690, 2495, 3390, +3690, 2496, 3390, +3689, 2496, 3390, +3689, 2497, 3390, +3689, 2497, 3389, +3689, 2498, 3389, +3689, 2500, 3389, +3689, 2502, 3389, +3688, 2504, 3388, +3688, 2507, 3387, +3687, 2511, 3386, +3686, 2517, 3385, +3685, 2524, 3383, +3683, 2534, 3381, +3681, 2546, 3378, +3678, 2562, 3373, +3674, 2583, 3367, +3669, 2609, 3360, +3662, 2642, 3349, +3652, 2683, 3334, +3639, 2732, 3313, +3620, 2791, 3284, +3594, 2859, 3242, +3557, 2937, 3179, +3502, 3023, 3077, +3415, 3118, 2893, +3266, 3220, 2387, +2933, 3328, 0, +0, 3442, 0, +0, 3559, 0, +0, 3680, 0, +3822, 2627, 3522, +3822, 2627, 3522, +3822, 2627, 3522, +3822, 2628, 3522, +3822, 2628, 3522, +3821, 2629, 3522, +3821, 2629, 3522, +3821, 2630, 3521, +3821, 2632, 3521, +3821, 2634, 3521, +3820, 2636, 3520, +3820, 2639, 3519, +3819, 2643, 3518, +3818, 2649, 3517, +3817, 2656, 3515, +3815, 2666, 3513, +3813, 2678, 3510, +3810, 2694, 3505, +3807, 2715, 3500, +3801, 2741, 3492, +3794, 2774, 3481, +3784, 2815, 3466, +3771, 2864, 3445, +3752, 2923, 3416, +3726, 2991, 3374, +3689, 3069, 3311, +3634, 3155, 3209, +3547, 3250, 3025, +3398, 3352, 2519, +3065, 3460, 0, +0, 3574, 0, +0, 3691, 0, +3954, 2759, 3654, +3954, 2759, 3654, +3954, 2759, 3654, +3954, 2759, 3654, +3954, 2760, 3654, +3954, 2760, 3654, +3954, 2761, 3654, +3953, 2761, 3654, +3953, 2762, 3653, +3953, 2764, 3653, +3953, 2766, 3653, +3952, 2768, 3652, +3952, 2771, 3651, +3951, 2775, 3650, +3950, 2781, 3649, +3949, 2788, 3647, +3948, 2798, 3645, +3945, 2810, 3642, +3943, 2826, 3637, +3939, 2847, 3632, +3933, 2873, 3624, +3926, 2906, 3613, +3916, 2947, 3598, +3903, 2996, 3577, +3884, 3055, 3548, +3858, 3123, 3506, +3821, 3201, 3443, +3766, 3287, 3341, +3679, 3382, 3157, +3530, 3484, 2651, +3197, 3592, 0, +0, 3706, 0, +4086, 2891, 3786, +4086, 2891, 3786, +4086, 2891, 3786, +4086, 2891, 3786, +4086, 2891, 3786, +4086, 2892, 3786, +4086, 2892, 3786, +4086, 2893, 3786, +4086, 2893, 3786, +4085, 2894, 3785, +4085, 2896, 3785, +4085, 2898, 3785, +4085, 2900, 3784, +4084, 2903, 3783, +4083, 2907, 3782, +4083, 2913, 3781, +4081, 2920, 3779, +4080, 2930, 3777, +4078, 2942, 3774, +4075, 2958, 3769, +4071, 2979, 3764, +4065, 3005, 3756, +4058, 3038, 3745, +4049, 3079, 3730, +4035, 3129, 3709, +4017, 3187, 3680, +3991, 3255, 3638, +3953, 3333, 3575, +3898, 3419, 3473, +3811, 3514, 3289, +3662, 3616, 2783, +3329, 3725, 0, +4095, 3023, 3918, +4095, 3023, 3918, +4095, 3023, 3918, +4095, 3023, 3918, +4095, 3023, 3918, +4095, 3023, 3918, +4095, 3024, 3918, +4095, 3024, 3918, +4095, 3025, 3918, +4095, 3025, 3918, +4095, 3026, 3918, +4095, 3028, 3917, +4095, 3030, 3917, +4095, 3032, 3916, +4095, 3035, 3916, +4095, 3039, 3915, +4095, 3045, 3913, +4095, 3052, 3911, +4095, 3062, 3909, +4095, 3074, 3906, +4095, 3090, 3902, +4095, 3111, 3896, +4095, 3137, 3888, +4095, 3171, 3877, +4095, 3211, 3862, +4095, 3261, 3842, +4095, 3319, 3812, +4095, 3387, 3770, +4085, 3465, 3707, +4030, 3551, 3605, +3944, 3646, 3421, +3794, 3748, 2915, +4095, 3155, 4050, +4095, 3155, 4050, +4095, 3155, 4050, +4095, 3155, 4050, +4095, 3155, 4050, +4095, 3155, 4050, +4095, 3155, 4050, +4095, 3156, 4050, +4095, 3156, 4050, +4095, 3157, 4050, +4095, 3158, 4050, +4095, 3159, 4050, +4095, 3160, 4049, +4095, 3162, 4049, +4095, 3164, 4048, +4095, 3167, 4048, +4095, 3171, 4047, +4095, 3177, 4045, +4095, 3184, 4044, +4095, 3194, 4041, +4095, 3206, 4038, +4095, 3222, 4034, +4095, 3243, 4028, +4095, 3270, 4020, +4095, 3303, 4009, +4095, 3343, 3994, +4095, 3393, 3974, +4095, 3451, 3944, +4095, 3519, 3902, +4095, 3597, 3839, +4095, 3684, 3738, +4076, 3778, 3553, +0, 0, 36, +0, 24, 0, +0, 91, 0, +0, 168, 0, +0, 254, 0, +0, 348, 0, +0, 449, 0, +0, 557, 0, +0, 669, 0, +0, 787, 0, +0, 907, 0, +0, 1031, 0, +0, 1156, 0, +0, 1283, 0, +0, 1411, 0, +0, 1541, 0, +0, 1671, 0, +0, 1801, 0, +0, 1932, 0, +0, 2063, 0, +0, 2195, 0, +0, 2326, 0, +0, 2458, 0, +0, 2590, 0, +0, 2722, 0, +0, 2853, 0, +0, 2985, 0, +0, 3117, 0, +0, 3249, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +67, 0, 149, +0, 42, 77, +0, 107, 0, +0, 181, 0, +0, 264, 0, +0, 356, 0, +0, 456, 0, +0, 562, 0, +0, 674, 0, +0, 790, 0, +0, 910, 0, +0, 1033, 0, +0, 1158, 0, +0, 1284, 0, +0, 1412, 0, +0, 1541, 0, +0, 1671, 0, +0, 1801, 0, +0, 1932, 0, +0, 2063, 0, +0, 2195, 0, +0, 2326, 0, +0, 2458, 0, +0, 2590, 0, +0, 2722, 0, +0, 2853, 0, +0, 2985, 0, +0, 3117, 0, +0, 3249, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +303, 13, 267, +236, 65, 212, +127, 127, 127, +0, 198, 0, +0, 279, 0, +0, 368, 0, +0, 465, 0, +0, 570, 0, +0, 680, 0, +0, 795, 0, +0, 913, 0, +0, 1035, 0, +0, 1160, 0, +0, 1286, 0, +0, 1413, 0, +0, 1542, 0, +0, 1672, 0, +0, 1802, 0, +0, 1933, 0, +0, 2064, 0, +0, 2195, 0, +0, 2326, 0, +0, 2458, 0, +0, 2590, 0, +0, 2722, 0, +0, 2854, 0, +0, 2985, 0, +0, 3117, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +500, 45, 387, +458, 94, 346, +394, 152, 284, +292, 220, 186, +105, 297, 8, +0, 383, 0, +0, 478, 0, +0, 579, 0, +0, 687, 0, +0, 801, 0, +0, 918, 0, +0, 1039, 0, +0, 1162, 0, +0, 1288, 0, +0, 1415, 0, +0, 1543, 0, +0, 1673, 0, +0, 1803, 0, +0, 1933, 0, +0, 2064, 0, +0, 2195, 0, +0, 2327, 0, +0, 2458, 0, +0, 2590, 0, +0, 2722, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +676, 85, 511, +647, 130, 480, +606, 184, 434, +545, 248, 366, +447, 321, 254, +271, 403, 43, +0, 494, 0, +0, 592, 0, +0, 697, 0, +0, 808, 0, +0, 924, 0, +0, 1044, 0, +0, 1166, 0, +0, 1291, 0, +0, 1417, 0, +0, 1545, 0, +0, 1674, 0, +0, 1803, 0, +0, 1934, 0, +0, 2064, 0, +0, 2196, 0, +0, 2327, 0, +0, 2458, 0, +0, 2590, 0, +0, 2722, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +837, 134, 636, +818, 175, 613, +790, 224, 579, +750, 282, 531, +690, 350, 456, +596, 428, 332, +427, 514, 85, +12, 609, 0, +0, 711, 0, +0, 819, 0, +0, 932, 0, +0, 1050, 0, +0, 1171, 0, +0, 1294, 0, +0, 1420, 0, +0, 1547, 0, +0, 1675, 0, +0, 1805, 0, +0, 1935, 0, +0, 2065, 0, +0, 2196, 0, +0, 2327, 0, +0, 2459, 0, +0, 2590, 0, +0, 2722, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +991, 192, 763, +977, 228, 746, +957, 272, 721, +930, 325, 686, +891, 387, 634, +832, 459, 554, +740, 540, 419, +577, 630, 136, +186, 728, 0, +0, 832, 0, +0, 943, 0, +0, 1058, 0, +0, 1177, 0, +0, 1299, 0, +0, 1423, 0, +0, 1550, 0, +0, 1677, 0, +0, 1806, 0, +0, 1936, 0, +0, 2066, 0, +0, 2197, 0, +0, 2328, 0, +0, 2459, 0, +0, 2591, 0, +0, 2722, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1138, 259, 892, +1128, 290, 878, +1114, 329, 860, +1095, 376, 834, +1068, 432, 798, +1029, 497, 743, +971, 572, 659, +880, 657, 514, +721, 749, 197, +347, 850, 0, +0, 956, 0, +0, 1068, 0, +0, 1185, 0, +0, 1305, 0, +0, 1428, 0, +0, 1553, 0, +0, 1680, 0, +0, 1808, 0, +0, 1937, 0, +0, 2067, 0, +0, 2198, 0, +0, 2328, 0, +0, 2460, 0, +0, 2591, 0, +0, 2722, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1281, 336, 1021, +1274, 362, 1011, +1264, 395, 997, +1250, 436, 978, +1231, 486, 952, +1204, 544, 914, +1166, 613, 858, +1109, 690, 770, +1019, 777, 616, +862, 872, 267, +499, 974, 0, +0, 1082, 0, +0, 1196, 0, +0, 1314, 0, +0, 1435, 0, +0, 1558, 0, +0, 1684, 0, +0, 1811, 0, +0, 1939, 0, +0, 2069, 0, +0, 2199, 0, +0, 2329, 0, +0, 2460, 0, +0, 2591, 0, +0, 2723, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1421, 422, 1151, +1416, 444, 1143, +1408, 472, 1133, +1398, 506, 1119, +1385, 549, 1100, +1366, 601, 1073, +1339, 661, 1034, +1301, 732, 976, +1245, 811, 885, +1156, 900, 725, +1001, 997, 346, +646, 1100, 0, +0, 1210, 0, +0, 1324, 0, +0, 1443, 0, +0, 1565, 0, +0, 1689, 0, +0, 1815, 0, +0, 1942, 0, +0, 2071, 0, +0, 2200, 0, +0, 2330, 0, +0, 2461, 0, +0, 2592, 0, +0, 2723, 0, +0, 2855, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1559, 516, 1281, +1555, 534, 1276, +1550, 557, 1268, +1543, 586, 1258, +1533, 622, 1244, +1519, 666, 1224, +1500, 719, 1197, +1474, 782, 1157, +1436, 854, 1098, +1380, 935, 1004, +1291, 1025, 838, +1138, 1123, 434, +789, 1228, 0, +0, 1339, 0, +0, 1454, 0, +0, 1573, 0, +0, 1695, 0, +0, 1820, 0, +0, 1946, 0, +0, 2074, 0, +0, 2202, 0, +0, 2332, 0, +0, 2462, 0, +0, 2593, 0, +0, 2724, 0, +0, 2855, 0, +0, 2987, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1696, 617, 1412, +1693, 632, 1408, +1689, 651, 1402, +1683, 674, 1395, +1676, 704, 1384, +1666, 741, 1370, +1653, 787, 1350, +1634, 841, 1322, +1608, 905, 1282, +1570, 978, 1222, +1514, 1061, 1126, +1426, 1152, 956, +1274, 1251, 531, +929, 1357, 0, +0, 1468, 0, +0, 1584, 0, +0, 1703, 0, +0, 1826, 0, +0, 1951, 0, +0, 2077, 0, +0, 2205, 0, +0, 2334, 0, +0, 2464, 0, +0, 2594, 0, +0, 2725, 0, +0, 2856, 0, +0, 2987, 0, +0, 3119, 0, +0, 3251, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1831, 725, 1543, +1829, 737, 1540, +1826, 752, 1536, +1822, 771, 1530, +1817, 795, 1523, +1809, 826, 1512, +1800, 864, 1498, +1786, 910, 1478, +1767, 965, 1449, +1741, 1030, 1409, +1703, 1105, 1348, +1648, 1188, 1251, +1560, 1280, 1077, +1409, 1380, 634, +1067, 1486, 0, +0, 1598, 0, +0, 1714, 0, +0, 1834, 0, +0, 1957, 0, +0, 2082, 0, +0, 2209, 0, +0, 2337, 0, +0, 2466, 0, +0, 2596, 0, +0, 2726, 0, +0, 2857, 0, +0, 2988, 0, +0, 3119, 0, +0, 3251, 0, +0, 3383, 0, +0, 3514, 0, +0, 3646, 0, +1965, 838, 1675, +1964, 847, 1672, +1962, 859, 1669, +1959, 874, 1665, +1955, 894, 1659, +1949, 918, 1652, +1942, 950, 1641, +1932, 988, 1626, +1919, 1035, 1606, +1900, 1092, 1578, +1874, 1157, 1537, +1837, 1232, 1475, +1781, 1317, 1377, +1694, 1409, 1201, +1543, 1510, 744, +1203, 1617, 0, +0, 1729, 0, +0, 1845, 0, +0, 1966, 0, +0, 2089, 0, +0, 2214, 0, +0, 2341, 0, +0, 2469, 0, +0, 2598, 0, +0, 2728, 0, +0, 2858, 0, +0, 2989, 0, +0, 3120, 0, +0, 3251, 0, +0, 3383, 0, +0, 3515, 0, +0, 3646, 0, +2099, 956, 1806, +2098, 963, 1805, +2097, 972, 1802, +2094, 983, 1799, +2091, 999, 1795, +2087, 1019, 1789, +2082, 1044, 1781, +2075, 1076, 1771, +2065, 1115, 1756, +2052, 1162, 1736, +2033, 1219, 1707, +2007, 1285, 1666, +1969, 1361, 1604, +1914, 1446, 1505, +1827, 1539, 1326, +1676, 1640, 858, +1338, 1747, 0, +0, 1860, 0, +0, 1977, 0, +0, 2097, 0, +0, 2220, 0, +0, 2345, 0, +0, 2472, 0, +0, 2601, 0, +0, 2730, 0, +0, 2860, 0, +0, 2990, 0, +0, 3121, 0, +0, 3252, 0, +0, 3383, 0, +0, 3515, 0, +0, 3647, 0, +2233, 1076, 1938, +2232, 1082, 1937, +2231, 1089, 1935, +2229, 1098, 1933, +2227, 1110, 1929, +2224, 1125, 1925, +2220, 1146, 1919, +2215, 1171, 1912, +2208, 1203, 1901, +2198, 1243, 1886, +2184, 1291, 1866, +2166, 1348, 1837, +2140, 1415, 1796, +2102, 1491, 1733, +2047, 1576, 1634, +1960, 1670, 1454, +1810, 1771, 976, +1473, 1878, 0, +0, 1991, 0, +0, 2108, 0, +0, 2229, 0, +0, 2352, 0, +0, 2477, 0, +0, 2604, 0, +0, 2732, 0, +0, 2862, 0, +0, 2992, 0, +0, 3122, 0, +0, 3253, 0, +0, 3384, 0, +0, 3516, 0, +0, 3647, 0, +2366, 1200, 2070, +2365, 1204, 2069, +2364, 1209, 2068, +2363, 1216, 2066, +2361, 1226, 2063, +2359, 1238, 2060, +2356, 1253, 2056, +2352, 1274, 2050, +2347, 1299, 2042, +2340, 1332, 2032, +2330, 1371, 2017, +2317, 1420, 1997, +2298, 1477, 1968, +2272, 1544, 1926, +2235, 1621, 1863, +2179, 1707, 1763, +2092, 1801, 1582, +1943, 1902, 1098, +1607, 2010, 0, +0, 2123, 0, +0, 2240, 0, +0, 2360, 0, +0, 2484, 0, +0, 2609, 0, +0, 2736, 0, +0, 2864, 0, +0, 2994, 0, +0, 3124, 0, +0, 3254, 0, +0, 3385, 0, +0, 3516, 0, +0, 3648, 0, +2499, 1325, 2202, +2498, 1328, 2201, +2498, 1332, 2200, +2497, 1338, 2199, +2495, 1345, 2197, +2494, 1354, 2195, +2492, 1367, 2191, +2489, 1382, 2187, +2485, 1403, 2181, +2480, 1429, 2174, +2472, 1461, 2163, +2463, 1501, 2148, +2449, 1550, 2128, +2431, 1608, 2099, +2404, 1675, 2057, +2367, 1752, 1994, +2312, 1838, 1894, +2225, 1932, 1711, +2075, 2033, 1222, +1740, 2141, 0, +0, 2254, 0, +0, 2371, 0, +0, 2492, 0, +0, 2616, 0, +0, 2741, 0, +0, 2868, 0, +0, 2996, 0, +0, 3126, 0, +0, 3256, 0, +0, 3386, 0, +0, 3517, 0, +0, 3648, 0, +2631, 1452, 2334, +2631, 1455, 2333, +2630, 1458, 2332, +2630, 1462, 2331, +2629, 1467, 2330, +2628, 1474, 2328, +2626, 1484, 2326, +2624, 1496, 2323, +2621, 1512, 2319, +2617, 1533, 2313, +2612, 1559, 2305, +2605, 1591, 2294, +2595, 1631, 2279, +2581, 1680, 2259, +2563, 1738, 2230, +2537, 1806, 2188, +2499, 1883, 2125, +2444, 1969, 2024, +2357, 2063, 1842, +2208, 2165, 1348, +1873, 2273, 0, +0, 2386, 0, +0, 2503, 0, +0, 2624, 0, +0, 2748, 0, +0, 2873, 0, +0, 3000, 0, +0, 3129, 0, +0, 3258, 0, +0, 3388, 0, +0, 3518, 0, +0, 3649, 0, +2764, 1581, 2466, +2764, 1582, 2465, +2763, 1585, 2465, +2763, 1588, 2464, +2762, 1592, 2463, +2761, 1597, 2462, +2760, 1605, 2460, +2758, 1614, 2458, +2756, 1626, 2454, +2753, 1642, 2450, +2749, 1663, 2444, +2744, 1689, 2436, +2737, 1722, 2426, +2727, 1762, 2411, +2714, 1811, 2390, +2695, 1869, 2361, +2669, 1937, 2319, +2632, 2014, 2256, +2576, 2100, 2155, +2490, 2195, 1972, +2340, 2297, 1475, +2006, 2405, 0, +0, 2518, 0, +0, 2635, 0, +0, 2756, 0, +0, 2880, 0, +0, 3005, 0, +0, 3132, 0, +0, 3261, 0, +0, 3390, 0, +0, 3520, 0, +0, 3650, 0, +2896, 1710, 2598, +2896, 1711, 2597, +2896, 1713, 2597, +2895, 1715, 2596, +2895, 1718, 2596, +2894, 1723, 2595, +2893, 1728, 2593, +2892, 1735, 2592, +2891, 1745, 2589, +2888, 1757, 2586, +2885, 1773, 2582, +2882, 1794, 2576, +2876, 1820, 2568, +2869, 1853, 2557, +2859, 1893, 2542, +2846, 1942, 2522, +2827, 2001, 2493, +2801, 2068, 2451, +2764, 2146, 2388, +2709, 2232, 2287, +2622, 2326, 2103, +2473, 2428, 1604, +2139, 2536, 0, +0, 2650, 0, +0, 2767, 0, +0, 2888, 0, +0, 3012, 0, +0, 3137, 0, +0, 3264, 0, +0, 3393, 0, +0, 3522, 0, +0, 3652, 0, +3029, 1840, 2730, +3028, 1841, 2729, +3028, 1842, 2729, +3028, 1844, 2729, +3028, 1846, 2728, +3027, 1849, 2727, +3026, 1854, 2726, +3026, 1859, 2725, +3024, 1866, 2723, +3023, 1876, 2721, +3021, 1888, 2718, +3018, 1904, 2714, +3014, 1925, 2708, +3008, 1951, 2700, +3001, 1984, 2689, +2992, 2025, 2674, +2978, 2074, 2654, +2960, 2132, 2625, +2933, 2200, 2582, +2896, 2277, 2519, +2841, 2364, 2418, +2754, 2458, 2234, +2605, 2560, 1733, +2271, 2668, 0, +0, 2782, 0, +0, 2899, 0, +0, 3020, 0, +0, 3144, 0, +0, 3269, 0, +0, 3396, 0, +0, 3525, 0, +0, 3654, 0, +3161, 1970, 2862, +3161, 1971, 2862, +3161, 1972, 2861, +3160, 1973, 2861, +3160, 1975, 2861, +3160, 1978, 2860, +3159, 1981, 2859, +3159, 1985, 2858, +3158, 1990, 2857, +3156, 1998, 2855, +3155, 2007, 2853, +3153, 2020, 2850, +3150, 2036, 2845, +3146, 2056, 2840, +3141, 2083, 2832, +3133, 2115, 2821, +3124, 2156, 2806, +3110, 2205, 2785, +3092, 2264, 2756, +3066, 2332, 2714, +3028, 2409, 2651, +2973, 2495, 2550, +2887, 2590, 2366, +2737, 2692, 1864, +2403, 2800, 0, +0, 2914, 0, +0, 3031, 0, +0, 3152, 0, +0, 3276, 0, +0, 3401, 0, +0, 3528, 0, +0, 3657, 0, +3293, 2101, 2994, +3293, 2102, 2994, +3293, 2103, 2993, +3293, 2104, 2993, +3293, 2105, 2993, +3292, 2107, 2993, +3292, 2109, 2992, +3291, 2112, 2991, +3291, 2116, 2990, +3290, 2122, 2989, +3289, 2129, 2987, +3287, 2139, 2985, +3285, 2151, 2982, +3282, 2167, 2977, +3278, 2188, 2972, +3273, 2214, 2964, +3266, 2247, 2953, +3256, 2288, 2938, +3242, 2337, 2917, +3224, 2395, 2888, +3198, 2463, 2846, +3160, 2541, 2783, +3105, 2627, 2682, +3019, 2722, 2497, +2869, 2824, 1994, +2536, 2932, 0, +0, 3046, 0, +0, 3163, 0, +0, 3284, 0, +0, 3408, 0, +0, 3533, 0, +0, 3660, 0, +3425, 2232, 3126, +3425, 2233, 3126, +3425, 2233, 3126, +3425, 2234, 3125, +3425, 2235, 3125, +3425, 2236, 3125, +3424, 2238, 3125, +3424, 2241, 3124, +3424, 2244, 3123, +3423, 2248, 3122, +3422, 2253, 3121, +3421, 2261, 3119, +3419, 2270, 3117, +3417, 2283, 3114, +3414, 2299, 3109, +3410, 2320, 3103, +3405, 2346, 3096, +3398, 2379, 3085, +3388, 2420, 3070, +3375, 2469, 3049, +3356, 2527, 3020, +3330, 2595, 2978, +3293, 2673, 2915, +3237, 2759, 2814, +3151, 2854, 2629, +3002, 2956, 2125, +2668, 3064, 0, +0, 3178, 0, +0, 3295, 0, +0, 3416, 0, +0, 3540, 0, +0, 3665, 0, +3557, 2364, 3258, +3557, 2364, 3258, +3557, 2365, 3258, +3557, 2365, 3258, +3557, 2366, 3257, +3557, 2367, 3257, +3557, 2368, 3257, +3557, 2370, 3257, +3556, 2372, 3256, +3556, 2375, 3255, +3555, 2380, 3254, +3554, 2385, 3253, +3553, 2392, 3251, +3551, 2402, 3249, +3549, 2414, 3246, +3546, 2431, 3241, +3542, 2451, 3235, +3537, 2478, 3228, +3530, 2511, 3217, +3520, 2551, 3202, +3507, 2601, 3181, +3488, 2659, 3152, +3462, 2727, 3110, +3425, 2805, 3047, +3369, 2891, 2945, +3283, 2986, 2761, +3134, 3088, 2256, +2800, 3196, 0, +0, 3310, 0, +0, 3427, 0, +0, 3548, 0, +0, 3672, 0, +3690, 2495, 3390, +3690, 2496, 3390, +3690, 2496, 3390, +3689, 2496, 3390, +3689, 2497, 3390, +3689, 2498, 3389, +3689, 2499, 3389, +3689, 2500, 3389, +3689, 2502, 3389, +3688, 2504, 3388, +3688, 2507, 3387, +3687, 2511, 3386, +3686, 2517, 3385, +3685, 2524, 3383, +3683, 2534, 3381, +3681, 2546, 3378, +3678, 2562, 3373, +3674, 2583, 3368, +3669, 2610, 3360, +3662, 2643, 3349, +3652, 2683, 3334, +3639, 2733, 3313, +3620, 2791, 3284, +3594, 2859, 3242, +3557, 2937, 3179, +3502, 3023, 3077, +3415, 3118, 2893, +3266, 3220, 2388, +2932, 3328, 0, +0, 3442, 0, +0, 3559, 0, +0, 3680, 0, +3822, 2627, 3522, +3822, 2627, 3522, +3822, 2628, 3522, +3822, 2628, 3522, +3822, 2628, 3522, +3821, 2629, 3522, +3821, 2630, 3522, +3821, 2631, 3521, +3821, 2632, 3521, +3821, 2634, 3521, +3820, 2636, 3520, +3820, 2639, 3519, +3819, 2643, 3518, +3818, 2649, 3517, +3817, 2656, 3515, +3815, 2666, 3513, +3813, 2678, 3510, +3810, 2694, 3505, +3807, 2715, 3500, +3801, 2742, 3492, +3794, 2775, 3481, +3784, 2815, 3466, +3771, 2865, 3445, +3752, 2923, 3416, +3726, 2991, 3374, +3689, 3069, 3311, +3634, 3155, 3209, +3547, 3250, 3025, +3398, 3352, 2520, +3065, 3460, 0, +0, 3574, 0, +0, 3691, 0, +3954, 2759, 3654, +3954, 2759, 3654, +3954, 2759, 3654, +3954, 2759, 3654, +3954, 2760, 3654, +3954, 2760, 3654, +3954, 2761, 3654, +3953, 2762, 3654, +3953, 2763, 3653, +3953, 2764, 3653, +3953, 2766, 3653, +3952, 2768, 3652, +3952, 2771, 3651, +3951, 2775, 3650, +3950, 2781, 3649, +3949, 2788, 3647, +3948, 2798, 3645, +3945, 2810, 3642, +3943, 2826, 3637, +3939, 2847, 3632, +3933, 2873, 3624, +3926, 2907, 3613, +3916, 2947, 3598, +3903, 2997, 3577, +3884, 3055, 3548, +3858, 3123, 3506, +3821, 3201, 3443, +3766, 3287, 3341, +3679, 3382, 3157, +3530, 3484, 2651, +3197, 3592, 0, +0, 3706, 0, +4086, 2891, 3786, +4086, 2891, 3786, +4086, 2891, 3786, +4086, 2891, 3786, +4086, 2891, 3786, +4086, 2892, 3786, +4086, 2892, 3786, +4086, 2893, 3786, +4086, 2894, 3786, +4085, 2895, 3785, +4085, 2896, 3785, +4085, 2898, 3785, +4085, 2900, 3784, +4084, 2903, 3783, +4083, 2907, 3782, +4083, 2913, 3781, +4081, 2920, 3779, +4080, 2930, 3777, +4078, 2942, 3774, +4075, 2958, 3770, +4071, 2979, 3764, +4065, 3005, 3756, +4058, 3039, 3745, +4049, 3079, 3730, +4035, 3129, 3709, +4017, 3187, 3680, +3991, 3255, 3638, +3953, 3333, 3575, +3898, 3419, 3473, +3811, 3514, 3289, +3662, 3616, 2783, +3329, 3725, 0, +4095, 3023, 3918, +4095, 3023, 3918, +4095, 3023, 3918, +4095, 3023, 3918, +4095, 3023, 3918, +4095, 3023, 3918, +4095, 3024, 3918, +4095, 3024, 3918, +4095, 3025, 3918, +4095, 3026, 3918, +4095, 3027, 3918, +4095, 3028, 3917, +4095, 3030, 3917, +4095, 3032, 3916, +4095, 3035, 3916, +4095, 3039, 3915, +4095, 3045, 3913, +4095, 3052, 3911, +4095, 3062, 3909, +4095, 3074, 3906, +4095, 3090, 3902, +4095, 3111, 3896, +4095, 3138, 3888, +4095, 3171, 3877, +4095, 3211, 3862, +4095, 3261, 3842, +4095, 3319, 3812, +4095, 3387, 3770, +4085, 3465, 3707, +4030, 3551, 3606, +3944, 3646, 3421, +3794, 3748, 2915, +4095, 3155, 4050, +4095, 3155, 4050, +4095, 3155, 4050, +4095, 3155, 4050, +4095, 3155, 4050, +4095, 3155, 4050, +4095, 3156, 4050, +4095, 3156, 4050, +4095, 3156, 4050, +4095, 3157, 4050, +4095, 3158, 4050, +4095, 3159, 4050, +4095, 3160, 4049, +4095, 3162, 4049, +4095, 3164, 4048, +4095, 3167, 4048, +4095, 3171, 4047, +4095, 3177, 4045, +4095, 3184, 4044, +4095, 3194, 4041, +4095, 3206, 4038, +4095, 3222, 4034, +4095, 3243, 4028, +4095, 3270, 4020, +4095, 3303, 4009, +4095, 3343, 3994, +4095, 3393, 3974, +4095, 3451, 3944, +4095, 3519, 3902, +4095, 3597, 3839, +4095, 3684, 3738, +4076, 3778, 3553, +0, 33, 135, +0, 83, 61, +0, 142, 0, +0, 211, 0, +0, 290, 0, +0, 377, 0, +0, 473, 0, +0, 576, 0, +0, 684, 0, +0, 798, 0, +0, 916, 0, +0, 1037, 0, +0, 1161, 0, +0, 1287, 0, +0, 1414, 0, +0, 1543, 0, +0, 1672, 0, +0, 1802, 0, +0, 1933, 0, +0, 2064, 0, +0, 2195, 0, +0, 2327, 0, +0, 2458, 0, +0, 2590, 0, +0, 2722, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +11, 50, 228, +0, 99, 168, +0, 156, 74, +0, 223, 0, +0, 300, 0, +0, 386, 0, +0, 480, 0, +0, 581, 0, +0, 689, 0, +0, 802, 0, +0, 919, 0, +0, 1039, 0, +0, 1163, 0, +0, 1288, 0, +0, 1415, 0, +0, 1543, 0, +0, 1673, 0, +0, 1803, 0, +0, 1933, 0, +0, 2064, 0, +0, 2195, 0, +0, 2327, 0, +0, 2458, 0, +0, 2590, 0, +0, 2722, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +271, 73, 329, +199, 119, 281, +79, 174, 209, +0, 239, 91, +0, 313, 0, +0, 397, 0, +0, 489, 0, +0, 588, 0, +0, 694, 0, +0, 806, 0, +0, 922, 0, +0, 1042, 0, +0, 1165, 0, +0, 1290, 0, +0, 1416, 0, +0, 1544, 0, +0, 1673, 0, +0, 1803, 0, +0, 1934, 0, +0, 2064, 0, +0, 2195, 0, +0, 2327, 0, +0, 2458, 0, +0, 2590, 0, +0, 2722, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +480, 102, 436, +435, 145, 399, +368, 197, 344, +259, 259, 259, +54, 330, 113, +0, 411, 0, +0, 500, 0, +0, 597, 0, +0, 702, 0, +0, 812, 0, +0, 927, 0, +0, 1045, 0, +0, 1167, 0, +0, 1292, 0, +0, 1418, 0, +0, 1546, 0, +0, 1674, 0, +0, 1804, 0, +0, 1934, 0, +0, 2065, 0, +0, 2196, 0, +0, 2327, 0, +0, 2458, 0, +0, 2590, 0, +0, 2722, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +662, 137, 548, +632, 177, 519, +590, 226, 478, +526, 284, 416, +424, 352, 318, +237, 429, 140, +0, 515, 0, +0, 610, 0, +0, 711, 0, +0, 819, 0, +0, 933, 0, +0, 1050, 0, +0, 1171, 0, +0, 1294, 0, +0, 1420, 0, +0, 1547, 0, +0, 1675, 0, +0, 1805, 0, +0, 1935, 0, +0, 2065, 0, +0, 2196, 0, +0, 2327, 0, +0, 2459, 0, +0, 2590, 0, +0, 2722, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +828, 181, 665, +808, 217, 643, +779, 262, 612, +738, 316, 566, +677, 380, 498, +579, 453, 386, +403, 535, 175, +0, 626, 0, +0, 724, 0, +0, 830, 0, +0, 941, 0, +0, 1056, 0, +0, 1176, 0, +0, 1298, 0, +0, 1423, 0, +0, 1549, 0, +0, 1677, 0, +0, 1806, 0, +0, 1936, 0, +0, 2066, 0, +0, 2197, 0, +0, 2328, 0, +0, 2459, 0, +0, 2590, 0, +0, 2722, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +984, 233, 785, +970, 266, 768, +950, 307, 745, +922, 356, 712, +882, 414, 663, +822, 482, 588, +728, 560, 464, +559, 646, 217, +144, 741, 0, +0, 843, 0, +0, 951, 0, +0, 1064, 0, +0, 1182, 0, +0, 1303, 0, +0, 1426, 0, +0, 1552, 0, +0, 1679, 0, +0, 1807, 0, +0, 1937, 0, +0, 2067, 0, +0, 2197, 0, +0, 2328, 0, +0, 2459, 0, +0, 2591, 0, +0, 2722, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1133, 295, 908, +1123, 324, 895, +1109, 360, 878, +1089, 404, 853, +1062, 457, 818, +1023, 519, 766, +964, 591, 686, +872, 672, 551, +709, 762, 268, +318, 860, 0, +0, 964, 0, +0, 1075, 0, +0, 1190, 0, +0, 1309, 0, +0, 1431, 0, +0, 1555, 0, +0, 1682, 0, +0, 1809, 0, +0, 1938, 0, +0, 2068, 0, +0, 2198, 0, +0, 2329, 0, +0, 2460, 0, +0, 2591, 0, +0, 2723, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1277, 366, 1033, +1270, 391, 1024, +1260, 422, 1010, +1246, 461, 992, +1227, 508, 967, +1200, 564, 930, +1161, 629, 876, +1103, 705, 791, +1013, 789, 646, +853, 882, 329, +479, 982, 0, +0, 1088, 0, +0, 1201, 0, +0, 1317, 0, +0, 1437, 0, +0, 1560, 0, +0, 1685, 0, +0, 1812, 0, +0, 1940, 0, +0, 2069, 0, +0, 2199, 0, +0, 2330, 0, +0, 2460, 0, +0, 2592, 0, +0, 2723, 0, +0, 2855, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1418, 447, 1160, +1413, 468, 1153, +1406, 494, 1143, +1396, 528, 1129, +1382, 568, 1111, +1363, 618, 1084, +1336, 677, 1046, +1298, 745, 990, +1241, 822, 902, +1151, 909, 748, +994, 1004, 399, +631, 1106, 0, +0, 1214, 0, +0, 1328, 0, +0, 1446, 0, +0, 1567, 0, +0, 1690, 0, +0, 1816, 0, +0, 1943, 0, +0, 2072, 0, +0, 2201, 0, +0, 2331, 0, +0, 2461, 0, +0, 2592, 0, +0, 2724, 0, +0, 2855, 0, +0, 2987, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1557, 537, 1288, +1553, 554, 1283, +1548, 576, 1275, +1540, 604, 1265, +1531, 639, 1251, +1517, 681, 1232, +1498, 733, 1205, +1471, 793, 1166, +1433, 864, 1108, +1377, 944, 1017, +1288, 1032, 857, +1133, 1129, 478, +778, 1232, 0, +0, 1342, 0, +0, 1456, 0, +0, 1575, 0, +0, 1697, 0, +0, 1821, 0, +0, 1947, 0, +0, 2074, 0, +0, 2203, 0, +0, 2332, 0, +0, 2463, 0, +0, 2593, 0, +0, 2724, 0, +0, 2855, 0, +0, 2987, 0, +0, 3119, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1694, 634, 1417, +1691, 648, 1413, +1687, 666, 1408, +1682, 689, 1400, +1675, 718, 1390, +1665, 754, 1376, +1651, 798, 1356, +1632, 851, 1329, +1606, 914, 1289, +1568, 986, 1230, +1512, 1067, 1136, +1424, 1157, 970, +1270, 1255, 567, +921, 1360, 0, +0, 1471, 0, +0, 1586, 0, +0, 1705, 0, +0, 1827, 0, +0, 1952, 0, +0, 2078, 0, +0, 2206, 0, +0, 2334, 0, +0, 2464, 0, +0, 2594, 0, +0, 2725, 0, +0, 2856, 0, +0, 2987, 0, +0, 3119, 0, +0, 3251, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1830, 738, 1547, +1828, 750, 1544, +1825, 764, 1540, +1821, 783, 1534, +1815, 806, 1527, +1808, 836, 1516, +1798, 873, 1502, +1785, 919, 1482, +1766, 973, 1454, +1740, 1037, 1414, +1702, 1110, 1354, +1646, 1193, 1258, +1558, 1284, 1088, +1406, 1383, 663, +1061, 1489, 0, +0, 1600, 0, +0, 1716, 0, +0, 1836, 0, +0, 1958, 0, +0, 2083, 0, +0, 2209, 0, +0, 2337, 0, +0, 2466, 0, +0, 2596, 0, +0, 2726, 0, +0, 2857, 0, +0, 2988, 0, +0, 3119, 0, +0, 3251, 0, +0, 3383, 0, +0, 3514, 0, +0, 3646, 0, +1965, 849, 1678, +1963, 857, 1675, +1961, 869, 1672, +1958, 884, 1668, +1954, 903, 1662, +1949, 927, 1655, +1941, 958, 1644, +1932, 996, 1630, +1918, 1042, 1610, +1899, 1097, 1582, +1873, 1162, 1541, +1835, 1237, 1480, +1780, 1320, 1383, +1692, 1412, 1209, +1541, 1512, 766, +1199, 1618, 0, +0, 1730, 0, +0, 1847, 0, +0, 1966, 0, +0, 2089, 0, +0, 2214, 0, +0, 2341, 0, +0, 2469, 0, +0, 2598, 0, +0, 2728, 0, +0, 2858, 0, +0, 2989, 0, +0, 3120, 0, +0, 3251, 0, +0, 3383, 0, +0, 3515, 0, +0, 3646, 0, +2099, 964, 1809, +2098, 970, 1807, +2096, 979, 1804, +2094, 991, 1801, +2091, 1006, 1797, +2087, 1026, 1791, +2082, 1051, 1784, +2074, 1082, 1773, +2065, 1120, 1759, +2051, 1167, 1738, +2032, 1224, 1710, +2006, 1289, 1669, +1969, 1364, 1607, +1913, 1449, 1509, +1826, 1542, 1333, +1675, 1642, 876, +1335, 1749, 0, +0, 1861, 0, +0, 1978, 0, +0, 2098, 0, +0, 2221, 0, +0, 2346, 0, +0, 2473, 0, +0, 2601, 0, +0, 2730, 0, +0, 2860, 0, +0, 2990, 0, +0, 3121, 0, +0, 3252, 0, +0, 3383, 0, +0, 3515, 0, +0, 3647, 0, +2232, 1083, 1940, +2231, 1088, 1938, +2230, 1095, 1937, +2229, 1104, 1934, +2226, 1116, 1931, +2224, 1131, 1927, +2220, 1151, 1921, +2214, 1176, 1913, +2207, 1208, 1903, +2197, 1247, 1888, +2184, 1294, 1868, +2165, 1351, 1839, +2139, 1417, 1798, +2101, 1493, 1736, +2046, 1578, 1637, +1959, 1671, 1459, +1809, 1772, 990, +1470, 1879, 0, +0, 1992, 0, +0, 2109, 0, +0, 2229, 0, +0, 2352, 0, +0, 2478, 0, +0, 2604, 0, +0, 2733, 0, +0, 2862, 0, +0, 2992, 0, +0, 3122, 0, +0, 3253, 0, +0, 3384, 0, +0, 3516, 0, +0, 3647, 0, +2366, 1204, 2071, +2365, 1208, 2070, +2364, 1214, 2069, +2363, 1221, 2067, +2361, 1230, 2065, +2359, 1242, 2062, +2356, 1258, 2057, +2352, 1278, 2052, +2347, 1303, 2044, +2340, 1335, 2033, +2330, 1375, 2018, +2316, 1423, 1998, +2298, 1480, 1969, +2272, 1547, 1928, +2234, 1623, 1865, +2179, 1708, 1766, +2092, 1802, 1586, +1942, 1903, 1108, +1605, 2010, 0, +0, 2123, 0, +0, 2240, 0, +0, 2361, 0, +0, 2484, 0, +0, 2609, 0, +0, 2736, 0, +0, 2865, 0, +0, 2994, 0, +0, 3124, 0, +0, 3254, 0, +0, 3385, 0, +0, 3516, 0, +0, 3648, 0, +2498, 1329, 2203, +2498, 1332, 2202, +2497, 1336, 2201, +2496, 1341, 2200, +2495, 1348, 2198, +2494, 1358, 2196, +2491, 1370, 2192, +2488, 1385, 2188, +2485, 1406, 2182, +2479, 1431, 2175, +2472, 1464, 2164, +2462, 1504, 2149, +2449, 1552, 2129, +2430, 1609, 2100, +2404, 1677, 2058, +2367, 1753, 1995, +2311, 1839, 1896, +2225, 1933, 1714, +2075, 2034, 1230, +1739, 2142, 0, +0, 2255, 0, +0, 2372, 0, +0, 2492, 0, +0, 2616, 0, +0, 2741, 0, +0, 2868, 0, +0, 2997, 0, +0, 3126, 0, +0, 3256, 0, +0, 3386, 0, +0, 3517, 0, +0, 3648, 0, +2631, 1455, 2334, +2631, 1457, 2334, +2630, 1460, 2333, +2630, 1464, 2332, +2629, 1470, 2331, +2628, 1477, 2329, +2626, 1486, 2327, +2624, 1499, 2324, +2621, 1514, 2319, +2617, 1535, 2313, +2612, 1561, 2306, +2604, 1593, 2295, +2595, 1633, 2280, +2581, 1682, 2260, +2563, 1740, 2231, +2537, 1807, 2189, +2499, 1884, 2126, +2444, 1970, 2026, +2357, 2064, 1844, +2207, 2165, 1354, +1872, 2273, 0, +0, 2386, 0, +0, 2504, 0, +0, 2624, 0, +0, 2748, 0, +0, 2873, 0, +0, 3000, 0, +0, 3129, 0, +0, 3258, 0, +0, 3388, 0, +0, 3518, 0, +0, 3649, 0, +2764, 1583, 2466, +2763, 1584, 2466, +2763, 1587, 2465, +2763, 1590, 2464, +2762, 1594, 2464, +2761, 1599, 2462, +2760, 1607, 2460, +2758, 1616, 2458, +2756, 1628, 2455, +2753, 1644, 2451, +2749, 1665, 2445, +2744, 1691, 2437, +2737, 1723, 2426, +2727, 1764, 2411, +2714, 1812, 2391, +2695, 1870, 2362, +2669, 1938, 2320, +2631, 2015, 2257, +2576, 2101, 2156, +2490, 2195, 1974, +2340, 2297, 1480, +2005, 2405, 0, +0, 2518, 0, +0, 2635, 0, +0, 2756, 0, +0, 2880, 0, +0, 3005, 0, +0, 3132, 0, +0, 3261, 0, +0, 3390, 0, +0, 3520, 0, +0, 3650, 0, +2896, 1711, 2598, +2896, 1713, 2598, +2896, 1714, 2597, +2895, 1717, 2597, +2895, 1720, 2596, +2894, 1724, 2595, +2893, 1730, 2594, +2892, 1737, 2592, +2890, 1746, 2590, +2888, 1759, 2586, +2885, 1775, 2582, +2881, 1795, 2576, +2876, 1821, 2568, +2869, 1854, 2558, +2859, 1894, 2543, +2846, 1943, 2522, +2827, 2001, 2493, +2801, 2069, 2451, +2764, 2146, 2388, +2708, 2232, 2288, +2622, 2327, 2104, +2472, 2429, 1608, +2138, 2537, 0, +0, 2650, 0, +0, 2767, 0, +0, 2888, 0, +0, 3012, 0, +0, 3137, 0, +0, 3264, 0, +0, 3393, 0, +0, 3522, 0, +0, 3652, 0, +3029, 1841, 2730, +3028, 1842, 2730, +3028, 1843, 2729, +3028, 1845, 2729, +3028, 1847, 2728, +3027, 1851, 2728, +3026, 1855, 2727, +3025, 1860, 2725, +3024, 1867, 2724, +3023, 1877, 2721, +3020, 1889, 2718, +3018, 1905, 2714, +3014, 1926, 2708, +3008, 1952, 2700, +3001, 1985, 2689, +2991, 2025, 2675, +2978, 2074, 2654, +2959, 2133, 2625, +2933, 2200, 2583, +2896, 2278, 2520, +2841, 2364, 2419, +2754, 2459, 2235, +2605, 2560, 1736, +2271, 2668, 0, +0, 2782, 0, +0, 2899, 0, +0, 3020, 0, +0, 3144, 0, +0, 3269, 0, +0, 3396, 0, +0, 3525, 0, +0, 3654, 0, +3161, 1971, 2862, +3161, 1972, 2862, +3161, 1973, 2862, +3160, 1974, 2861, +3160, 1976, 2861, +3160, 1978, 2860, +3159, 1981, 2860, +3159, 1986, 2859, +3158, 1991, 2857, +3156, 1998, 2856, +3155, 2008, 2853, +3153, 2020, 2850, +3150, 2036, 2846, +3146, 2057, 2840, +3141, 2083, 2832, +3133, 2116, 2821, +3124, 2157, 2806, +3110, 2206, 2786, +3092, 2264, 2757, +3066, 2332, 2715, +3028, 2409, 2651, +2973, 2496, 2550, +2886, 2590, 2366, +2737, 2692, 1866, +2403, 2800, 0, +0, 2914, 0, +0, 3031, 0, +0, 3152, 0, +0, 3276, 0, +0, 3401, 0, +0, 3528, 0, +0, 3657, 0, +3293, 2102, 2994, +3293, 2102, 2994, +3293, 2103, 2994, +3293, 2104, 2993, +3292, 2105, 2993, +3292, 2107, 2993, +3292, 2110, 2992, +3291, 2113, 2991, +3291, 2117, 2990, +3290, 2122, 2989, +3289, 2130, 2987, +3287, 2139, 2985, +3285, 2152, 2982, +3282, 2168, 2978, +3278, 2188, 2972, +3273, 2215, 2964, +3266, 2248, 2953, +3256, 2288, 2938, +3242, 2337, 2918, +3224, 2396, 2888, +3198, 2464, 2846, +3160, 2541, 2783, +3105, 2628, 2682, +3019, 2722, 2498, +2869, 2824, 1996, +2536, 2932, 0, +0, 3046, 0, +0, 3163, 0, +0, 3284, 0, +0, 3408, 0, +0, 3533, 0, +0, 3660, 0, +3425, 2233, 3126, +3425, 2233, 3126, +3425, 2234, 3126, +3425, 2235, 3126, +3425, 2236, 3125, +3425, 2237, 3125, +3424, 2239, 3125, +3424, 2241, 3124, +3423, 2244, 3123, +3423, 2248, 3122, +3422, 2254, 3121, +3421, 2261, 3119, +3419, 2271, 3117, +3417, 2283, 3114, +3414, 2299, 3109, +3410, 2320, 3104, +3405, 2346, 3096, +3398, 2379, 3085, +3388, 2420, 3070, +3375, 2469, 3049, +3356, 2527, 3020, +3330, 2595, 2978, +3293, 2673, 2915, +3237, 2759, 2814, +3151, 2854, 2629, +3002, 2956, 2126, +2668, 3064, 0, +0, 3178, 0, +0, 3295, 0, +0, 3416, 0, +0, 3540, 0, +0, 3665, 0, +3557, 2364, 3258, +3557, 2365, 3258, +3557, 2365, 3258, +3557, 2365, 3258, +3557, 2366, 3258, +3557, 2367, 3257, +3557, 2369, 3257, +3556, 2370, 3257, +3556, 2373, 3256, +3556, 2376, 3255, +3555, 2380, 3254, +3554, 2386, 3253, +3553, 2393, 3251, +3551, 2402, 3249, +3549, 2415, 3246, +3546, 2431, 3241, +3542, 2452, 3236, +3537, 2478, 3228, +3530, 2511, 3217, +3520, 2552, 3202, +3507, 2601, 3181, +3488, 2659, 3152, +3462, 2727, 3110, +3425, 2805, 3047, +3369, 2891, 2946, +3283, 2986, 2761, +3134, 3088, 2257, +2800, 3196, 0, +0, 3310, 0, +0, 3427, 0, +0, 3548, 0, +0, 3672, 0, +3690, 2496, 3390, +3690, 2496, 3390, +3690, 2496, 3390, +3689, 2497, 3390, +3689, 2497, 3390, +3689, 2498, 3390, +3689, 2499, 3389, +3689, 2500, 3389, +3689, 2502, 3389, +3688, 2504, 3388, +3688, 2508, 3387, +3687, 2512, 3386, +3686, 2517, 3385, +3685, 2525, 3383, +3683, 2534, 3381, +3681, 2547, 3378, +3678, 2563, 3373, +3674, 2583, 3368, +3669, 2610, 3360, +3662, 2643, 3349, +3652, 2683, 3334, +3639, 2733, 3313, +3620, 2791, 3284, +3594, 2859, 3242, +3557, 2937, 3179, +3501, 3023, 3078, +3415, 3118, 2893, +3266, 3220, 2389, +2932, 3328, 0, +0, 3442, 0, +0, 3559, 0, +0, 3680, 0, +3822, 2627, 3522, +3822, 2628, 3522, +3822, 2628, 3522, +3822, 2628, 3522, +3822, 2628, 3522, +3821, 2629, 3522, +3821, 2630, 3522, +3821, 2631, 3521, +3821, 2632, 3521, +3821, 2634, 3521, +3820, 2636, 3520, +3820, 2639, 3519, +3819, 2644, 3518, +3818, 2649, 3517, +3817, 2656, 3515, +3815, 2666, 3513, +3813, 2678, 3510, +3810, 2695, 3505, +3806, 2715, 3500, +3801, 2742, 3492, +3794, 2775, 3481, +3784, 2815, 3466, +3771, 2865, 3445, +3752, 2923, 3416, +3726, 2991, 3374, +3689, 3069, 3311, +3634, 3155, 3210, +3547, 3250, 3025, +3398, 3352, 2520, +3065, 3460, 0, +0, 3574, 0, +0, 3691, 0, +3954, 2759, 3654, +3954, 2759, 3654, +3954, 2759, 3654, +3954, 2760, 3654, +3954, 2760, 3654, +3954, 2760, 3654, +3954, 2761, 3654, +3953, 2762, 3654, +3953, 2763, 3653, +3953, 2764, 3653, +3953, 2766, 3653, +3952, 2768, 3652, +3952, 2771, 3651, +3951, 2775, 3650, +3950, 2781, 3649, +3949, 2788, 3647, +3948, 2798, 3645, +3945, 2810, 3642, +3943, 2826, 3637, +3939, 2847, 3632, +3933, 2874, 3624, +3926, 2907, 3613, +3916, 2947, 3598, +3903, 2997, 3577, +3884, 3055, 3548, +3858, 3123, 3506, +3821, 3201, 3443, +3766, 3287, 3342, +3679, 3382, 3157, +3530, 3484, 2652, +3197, 3593, 0, +0, 3706, 0, +4086, 2891, 3786, +4086, 2891, 3786, +4086, 2891, 3786, +4086, 2891, 3786, +4086, 2892, 3786, +4086, 2892, 3786, +4086, 2892, 3786, +4086, 2893, 3786, +4086, 2894, 3786, +4085, 2895, 3785, +4085, 2896, 3785, +4085, 2898, 3785, +4085, 2900, 3784, +4084, 2903, 3783, +4083, 2907, 3782, +4082, 2913, 3781, +4081, 2920, 3779, +4080, 2930, 3777, +4078, 2942, 3774, +4075, 2958, 3770, +4071, 2979, 3764, +4065, 3006, 3756, +4058, 3039, 3745, +4048, 3079, 3730, +4035, 3129, 3710, +4017, 3187, 3680, +3990, 3255, 3638, +3953, 3333, 3575, +3898, 3419, 3474, +3811, 3514, 3289, +3662, 3616, 2783, +3329, 3725, 0, +4095, 3023, 3918, +4095, 3023, 3918, +4095, 3023, 3918, +4095, 3023, 3918, +4095, 3023, 3918, +4095, 3024, 3918, +4095, 3024, 3918, +4095, 3024, 3918, +4095, 3025, 3918, +4095, 3026, 3918, +4095, 3027, 3918, +4095, 3028, 3917, +4095, 3030, 3917, +4095, 3032, 3916, +4095, 3035, 3916, +4095, 3039, 3915, +4095, 3045, 3913, +4095, 3052, 3911, +4095, 3062, 3909, +4095, 3074, 3906, +4095, 3090, 3902, +4095, 3111, 3896, +4095, 3138, 3888, +4095, 3171, 3877, +4095, 3211, 3862, +4095, 3261, 3842, +4095, 3319, 3812, +4095, 3387, 3770, +4085, 3465, 3707, +4030, 3552, 3606, +3944, 3646, 3421, +3794, 3748, 2915, +4095, 3155, 4050, +4095, 3155, 4050, +4095, 3155, 4050, +4095, 3155, 4050, +4095, 3155, 4050, +4095, 3155, 4050, +4095, 3156, 4050, +4095, 3156, 4050, +4095, 3156, 4050, +4095, 3157, 4050, +4095, 3158, 4050, +4095, 3159, 4050, +4095, 3160, 4049, +4095, 3162, 4049, +4095, 3164, 4048, +4095, 3167, 4048, +4095, 3171, 4047, +4095, 3177, 4045, +4095, 3184, 4044, +4095, 3194, 4041, +4095, 3206, 4038, +4095, 3222, 4034, +4095, 3243, 4028, +4095, 3270, 4020, +4095, 3303, 4009, +4095, 3343, 3994, +4095, 3393, 3974, +4095, 3451, 3944, +4095, 3519, 3902, +4095, 3597, 3839, +4095, 3684, 3738, +4076, 3778, 3553, +0, 108, 241, +0, 151, 183, +0, 203, 91, +0, 264, 0, +0, 334, 0, +0, 414, 0, +0, 503, 0, +0, 600, 0, +0, 704, 0, +0, 813, 0, +0, 928, 0, +0, 1046, 0, +0, 1168, 0, +0, 1292, 0, +0, 1418, 0, +0, 1546, 0, +0, 1674, 0, +0, 1804, 0, +0, 1934, 0, +0, 2065, 0, +0, 2196, 0, +0, 2327, 0, +0, 2459, 0, +0, 2590, 0, +0, 2722, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +0, 123, 316, +0, 165, 267, +0, 215, 193, +0, 274, 69, +0, 343, 0, +0, 422, 0, +0, 509, 0, +0, 605, 0, +0, 708, 0, +0, 816, 0, +0, 930, 0, +0, 1048, 0, +0, 1170, 0, +0, 1293, 0, +0, 1419, 0, +0, 1546, 0, +0, 1675, 0, +0, 1804, 0, +0, 1934, 0, +0, 2065, 0, +0, 2196, 0, +0, 2327, 0, +0, 2459, 0, +0, 2590, 0, +0, 2722, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +225, 143, 400, +144, 182, 360, +6, 231, 300, +0, 288, 206, +0, 355, 37, +0, 432, 0, +0, 518, 0, +0, 612, 0, +0, 713, 0, +0, 821, 0, +0, 934, 0, +0, 1051, 0, +0, 1171, 0, +0, 1295, 0, +0, 1420, 0, +0, 1547, 0, +0, 1676, 0, +0, 1805, 0, +0, 1935, 0, +0, 2065, 0, +0, 2196, 0, +0, 2327, 0, +0, 2459, 0, +0, 2590, 0, +0, 2722, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +451, 167, 493, +403, 205, 461, +331, 251, 413, +211, 306, 341, +0, 371, 223, +0, 445, 0, +0, 529, 0, +0, 621, 0, +0, 720, 0, +0, 826, 0, +0, 938, 0, +0, 1054, 0, +0, 1174, 0, +0, 1297, 0, +0, 1422, 0, +0, 1548, 0, +0, 1676, 0, +0, 1805, 0, +0, 1935, 0, +0, 2066, 0, +0, 2196, 0, +0, 2328, 0, +0, 2459, 0, +0, 2590, 0, +0, 2722, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +643, 198, 593, +612, 234, 568, +567, 277, 531, +500, 329, 476, +391, 391, 391, +186, 462, 245, +0, 543, 0, +0, 632, 0, +0, 730, 0, +0, 834, 0, +0, 944, 0, +0, 1059, 0, +0, 1178, 0, +0, 1299, 0, +0, 1424, 0, +0, 1550, 0, +0, 1678, 0, +0, 1806, 0, +0, 1936, 0, +0, 2066, 0, +0, 2197, 0, +0, 2328, 0, +0, 2459, 0, +0, 2591, 0, +0, 2722, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +815, 237, 700, +794, 269, 680, +765, 310, 651, +722, 358, 610, +658, 417, 548, +556, 484, 450, +369, 561, 272, +0, 647, 0, +0, 742, 0, +0, 844, 0, +0, 952, 0, +0, 1065, 0, +0, 1182, 0, +0, 1303, 0, +0, 1426, 0, +0, 1552, 0, +0, 1679, 0, +0, 1808, 0, +0, 1937, 0, +0, 2067, 0, +0, 2197, 0, +0, 2328, 0, +0, 2459, 0, +0, 2591, 0, +0, 2722, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +974, 283, 813, +960, 313, 797, +940, 350, 775, +911, 395, 744, +870, 448, 699, +809, 512, 630, +711, 585, 518, +535, 667, 307, +81, 758, 0, +0, 856, 0, +0, 962, 0, +0, 1073, 0, +0, 1188, 0, +0, 1308, 0, +0, 1430, 0, +0, 1555, 0, +0, 1681, 0, +0, 1809, 0, +0, 1938, 0, +0, 2068, 0, +0, 2198, 0, +0, 2329, 0, +0, 2460, 0, +0, 2591, 0, +0, 2723, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1126, 339, 929, +1116, 365, 917, +1102, 398, 900, +1082, 439, 877, +1054, 488, 844, +1014, 546, 795, +954, 614, 720, +860, 692, 596, +691, 778, 349, +276, 873, 0, +0, 975, 0, +0, 1083, 0, +0, 1196, 0, +0, 1314, 0, +0, 1435, 0, +0, 1558, 0, +0, 1684, 0, +0, 1811, 0, +0, 1939, 0, +0, 2069, 0, +0, 2199, 0, +0, 2329, 0, +0, 2460, 0, +0, 2591, 0, +0, 2723, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1272, 404, 1049, +1265, 427, 1040, +1255, 456, 1027, +1241, 492, 1010, +1221, 536, 985, +1194, 589, 950, +1155, 651, 898, +1096, 723, 818, +1004, 804, 683, +841, 894, 400, +450, 992, 0, +0, 1096, 0, +0, 1207, 0, +0, 1322, 0, +0, 1441, 0, +0, 1563, 0, +0, 1688, 0, +0, 1814, 0, +0, 1942, 0, +0, 2070, 0, +0, 2200, 0, +0, 2330, 0, +0, 2461, 0, +0, 2592, 0, +0, 2723, 0, +0, 2855, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1415, 479, 1172, +1409, 499, 1165, +1402, 523, 1156, +1392, 554, 1143, +1378, 593, 1124, +1359, 640, 1099, +1332, 696, 1062, +1293, 762, 1008, +1235, 837, 923, +1145, 921, 778, +985, 1014, 461, +611, 1114, 0, +0, 1221, 0, +0, 1333, 0, +0, 1449, 0, +0, 1569, 0, +0, 1692, 0, +0, 1817, 0, +0, 1944, 0, +0, 2072, 0, +0, 2202, 0, +0, 2331, 0, +0, 2462, 0, +0, 2593, 0, +0, 2724, 0, +0, 2855, 0, +0, 2987, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1555, 563, 1298, +1551, 579, 1292, +1545, 600, 1285, +1538, 627, 1275, +1528, 660, 1262, +1514, 701, 1243, +1495, 750, 1216, +1468, 809, 1178, +1430, 877, 1122, +1373, 955, 1034, +1283, 1041, 880, +1127, 1136, 531, +763, 1238, 0, +0, 1347, 0, +0, 1460, 0, +0, 1578, 0, +0, 1699, 0, +0, 1822, 0, +0, 1948, 0, +0, 2075, 0, +0, 2204, 0, +0, 2333, 0, +0, 2463, 0, +0, 2593, 0, +0, 2724, 0, +0, 2856, 0, +0, 2987, 0, +0, 3119, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1692, 656, 1424, +1689, 669, 1420, +1685, 686, 1415, +1680, 708, 1408, +1673, 736, 1397, +1663, 771, 1384, +1649, 813, 1364, +1630, 865, 1337, +1604, 926, 1298, +1565, 996, 1240, +1509, 1076, 1149, +1420, 1164, 989, +1265, 1261, 610, +910, 1365, 0, +0, 1474, 0, +0, 1589, 0, +0, 1707, 0, +0, 1829, 0, +0, 1953, 0, +0, 2079, 0, +0, 2206, 0, +0, 2335, 0, +0, 2464, 0, +0, 2595, 0, +0, 2725, 0, +0, 2856, 0, +0, 2988, 0, +0, 3119, 0, +0, 3251, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1828, 756, 1553, +1826, 766, 1550, +1823, 780, 1545, +1819, 798, 1540, +1814, 821, 1532, +1807, 850, 1522, +1797, 886, 1508, +1783, 930, 1488, +1764, 983, 1461, +1738, 1046, 1421, +1700, 1118, 1362, +1644, 1199, 1268, +1556, 1289, 1103, +1402, 1387, 699, +1053, 1492, 0, +0, 1603, 0, +0, 1718, 0, +0, 1837, 0, +0, 1959, 0, +0, 2084, 0, +0, 2210, 0, +0, 2338, 0, +0, 2467, 0, +0, 2596, 0, +0, 2726, 0, +0, 2857, 0, +0, 2988, 0, +0, 3120, 0, +0, 3251, 0, +0, 3383, 0, +0, 3514, 0, +0, 3646, 0, +1964, 862, 1682, +1962, 871, 1679, +1960, 882, 1676, +1957, 896, 1672, +1953, 915, 1667, +1948, 938, 1659, +1940, 968, 1649, +1930, 1006, 1634, +1917, 1051, 1614, +1898, 1105, 1586, +1872, 1169, 1546, +1834, 1243, 1486, +1778, 1325, 1391, +1690, 1416, 1220, +1538, 1515, 795, +1193, 1621, 0, +0, 1732, 0, +0, 1848, 0, +0, 1968, 0, +0, 2090, 0, +0, 2215, 0, +0, 2341, 0, +0, 2469, 0, +0, 2598, 0, +0, 2728, 0, +0, 2858, 0, +0, 2989, 0, +0, 3120, 0, +0, 3252, 0, +0, 3383, 0, +0, 3515, 0, +0, 3646, 0, +2098, 974, 1812, +2097, 981, 1810, +2095, 989, 1808, +2093, 1001, 1804, +2090, 1016, 1800, +2086, 1035, 1795, +2081, 1059, 1787, +2074, 1090, 1776, +2064, 1128, 1762, +2050, 1174, 1742, +2032, 1230, 1714, +2005, 1294, 1673, +1968, 1369, 1612, +1912, 1452, 1515, +1824, 1545, 1341, +1673, 1644, 898, +1331, 1751, 0, +0, 1862, 0, +0, 1979, 0, +0, 2099, 0, +0, 2221, 0, +0, 2346, 0, +0, 2473, 0, +0, 2601, 0, +0, 2730, 0, +0, 2860, 0, +0, 2990, 0, +0, 3121, 0, +0, 3252, 0, +0, 3384, 0, +0, 3515, 0, +0, 3647, 0, +2232, 1091, 1942, +2231, 1096, 1941, +2230, 1103, 1939, +2228, 1111, 1937, +2226, 1123, 1933, +2223, 1138, 1929, +2219, 1158, 1924, +2214, 1183, 1916, +2206, 1214, 1905, +2197, 1253, 1891, +2183, 1300, 1870, +2165, 1356, 1842, +2138, 1421, 1801, +2101, 1497, 1739, +2045, 1581, 1641, +1958, 1674, 1465, +1807, 1774, 1008, +1467, 1881, 0, +0, 1993, 0, +0, 2110, 0, +0, 2230, 0, +0, 2353, 0, +0, 2478, 0, +0, 2605, 0, +0, 2733, 0, +0, 2862, 0, +0, 2992, 0, +0, 3122, 0, +0, 3253, 0, +0, 3384, 0, +0, 3516, 0, +0, 3647, 0, +2365, 1211, 2073, +2364, 1215, 2072, +2364, 1220, 2071, +2362, 1227, 2069, +2361, 1236, 2066, +2359, 1248, 2063, +2356, 1263, 2059, +2352, 1283, 2053, +2346, 1308, 2046, +2339, 1340, 2035, +2329, 1379, 2020, +2316, 1427, 2000, +2297, 1483, 1971, +2271, 1550, 1930, +2234, 1625, 1868, +2178, 1710, 1769, +2091, 1804, 1591, +1941, 1904, 1122, +1603, 2011, 0, +0, 2124, 0, +0, 2241, 0, +0, 2361, 0, +0, 2484, 0, +0, 2610, 0, +0, 2737, 0, +0, 2865, 0, +0, 2994, 0, +0, 3124, 0, +0, 3254, 0, +0, 3385, 0, +0, 3516, 0, +0, 3648, 0, +2498, 1334, 2204, +2498, 1337, 2203, +2497, 1341, 2202, +2496, 1346, 2201, +2495, 1353, 2199, +2493, 1362, 2197, +2491, 1374, 2194, +2488, 1390, 2189, +2484, 1410, 2184, +2479, 1435, 2176, +2472, 1467, 2165, +2462, 1507, 2150, +2449, 1555, 2130, +2430, 1612, 2101, +2404, 1679, 2060, +2366, 1755, 1997, +2311, 1840, 1898, +2224, 1934, 1718, +2074, 2035, 1241, +1737, 2142, 0, +0, 2255, 0, +0, 2372, 0, +0, 2493, 0, +0, 2616, 0, +0, 2741, 0, +0, 2868, 0, +0, 2997, 0, +0, 3126, 0, +0, 3256, 0, +0, 3386, 0, +0, 3517, 0, +0, 3648, 0, +2631, 1459, 2335, +2631, 1461, 2335, +2630, 1464, 2334, +2629, 1468, 2333, +2628, 1473, 2332, +2627, 1480, 2330, +2626, 1490, 2328, +2624, 1502, 2324, +2621, 1518, 2320, +2617, 1538, 2314, +2611, 1564, 2307, +2604, 1596, 2296, +2594, 1636, 2281, +2581, 1684, 2261, +2562, 1742, 2232, +2536, 1809, 2190, +2499, 1885, 2128, +2443, 1971, 2028, +2357, 2065, 1846, +2207, 2166, 1362, +1871, 2274, 0, +0, 2387, 0, +0, 2504, 0, +0, 2625, 0, +0, 2748, 0, +0, 2873, 0, +0, 3000, 0, +0, 3129, 0, +0, 3258, 0, +0, 3388, 0, +0, 3518, 0, +0, 3649, 0, +2764, 1585, 2467, +2763, 1587, 2466, +2763, 1589, 2466, +2762, 1593, 2465, +2762, 1597, 2464, +2761, 1602, 2463, +2760, 1609, 2461, +2758, 1618, 2459, +2756, 1631, 2456, +2753, 1647, 2451, +2749, 1667, 2446, +2744, 1693, 2438, +2737, 1725, 2427, +2727, 1765, 2412, +2713, 1814, 2392, +2695, 1872, 2363, +2669, 1939, 2321, +2631, 2016, 2258, +2576, 2102, 2158, +2489, 2196, 1976, +2340, 2297, 1486, +2004, 2405, 0, +0, 2518, 0, +0, 2636, 0, +0, 2756, 0, +0, 2880, 0, +0, 3005, 0, +0, 3132, 0, +0, 3261, 0, +0, 3390, 0, +0, 3520, 0, +0, 3650, 0, +2896, 1713, 2599, +2896, 1715, 2598, +2896, 1717, 2598, +2895, 1719, 2597, +2895, 1722, 2597, +2894, 1726, 2596, +2893, 1731, 2594, +2892, 1739, 2593, +2890, 1748, 2590, +2888, 1760, 2587, +2885, 1776, 2583, +2881, 1797, 2577, +2876, 1823, 2569, +2869, 1855, 2558, +2859, 1896, 2544, +2846, 1944, 2523, +2827, 2002, 2494, +2801, 2070, 2452, +2764, 2147, 2389, +2708, 2233, 2289, +2622, 2327, 2106, +2472, 2429, 1612, +2137, 2537, 0, +0, 2650, 0, +0, 2767, 0, +0, 2888, 0, +0, 3012, 0, +0, 3137, 0, +0, 3264, 0, +0, 3393, 0, +0, 3522, 0, +0, 3652, 0, +3028, 1843, 2730, +3028, 1844, 2730, +3028, 1845, 2730, +3028, 1847, 2729, +3027, 1849, 2729, +3027, 1852, 2728, +3026, 1856, 2727, +3025, 1862, 2726, +3024, 1869, 2724, +3023, 1878, 2722, +3020, 1891, 2719, +3017, 1907, 2714, +3014, 1927, 2708, +3008, 1953, 2701, +3001, 1986, 2690, +2991, 2026, 2675, +2978, 2075, 2654, +2959, 2133, 2625, +2933, 2201, 2583, +2896, 2278, 2520, +2840, 2364, 2420, +2754, 2459, 2236, +2605, 2561, 1740, +2270, 2669, 0, +0, 2782, 0, +0, 2899, 0, +0, 3020, 0, +0, 3144, 0, +0, 3269, 0, +0, 3396, 0, +0, 3525, 0, +0, 3654, 0, +3161, 1972, 2862, +3161, 1973, 2862, +3160, 1974, 2862, +3160, 1975, 2862, +3160, 1977, 2861, +3160, 1980, 2861, +3159, 1983, 2860, +3158, 1987, 2859, +3158, 1992, 2858, +3156, 1999, 2856, +3155, 2009, 2853, +3153, 2021, 2850, +3150, 2037, 2846, +3146, 2058, 2840, +3140, 2084, 2832, +3133, 2117, 2821, +3124, 2157, 2807, +3110, 2206, 2786, +3092, 2265, 2757, +3065, 2333, 2715, +3028, 2410, 2652, +2973, 2496, 2551, +2886, 2591, 2367, +2737, 2692, 1868, +2403, 2801, 0, +0, 2914, 0, +0, 3031, 0, +0, 3152, 0, +0, 3276, 0, +0, 3401, 0, +0, 3528, 0, +0, 3657, 0, +3293, 2103, 2994, +3293, 2103, 2994, +3293, 2104, 2994, +3293, 2105, 2994, +3292, 2106, 2993, +3292, 2108, 2993, +3292, 2110, 2992, +3291, 2114, 2992, +3291, 2118, 2991, +3290, 2123, 2989, +3289, 2130, 2988, +3287, 2140, 2985, +3285, 2152, 2982, +3282, 2168, 2978, +3278, 2189, 2972, +3273, 2215, 2964, +3265, 2248, 2953, +3256, 2289, 2938, +3242, 2338, 2918, +3224, 2396, 2889, +3198, 2464, 2847, +3160, 2541, 2784, +3105, 2628, 2682, +3019, 2722, 2498, +2869, 2824, 1998, +2535, 2932, 0, +0, 3046, 0, +0, 3163, 0, +0, 3284, 0, +0, 3408, 0, +0, 3533, 0, +0, 3660, 0, +3425, 2234, 3126, +3425, 2234, 3126, +3425, 2235, 3126, +3425, 2235, 3126, +3425, 2236, 3126, +3425, 2238, 3125, +3424, 2239, 3125, +3424, 2242, 3124, +3423, 2245, 3124, +3423, 2249, 3123, +3422, 2255, 3121, +3421, 2262, 3119, +3419, 2271, 3117, +3417, 2284, 3114, +3414, 2300, 3110, +3410, 2320, 3104, +3405, 2347, 3096, +3398, 2380, 3085, +3388, 2420, 3070, +3374, 2469, 3050, +3356, 2528, 3021, +3330, 2596, 2978, +3292, 2673, 2915, +3237, 2760, 2814, +3151, 2854, 2630, +3001, 2956, 2128, +2668, 3064, 0, +0, 3178, 0, +0, 3295, 0, +0, 3416, 0, +0, 3540, 0, +0, 3665, 0, +3557, 2365, 3258, +3557, 2365, 3258, +3557, 2365, 3258, +3557, 2366, 3258, +3557, 2367, 3258, +3557, 2368, 3257, +3557, 2369, 3257, +3556, 2371, 3257, +3556, 2373, 3256, +3556, 2376, 3255, +3555, 2380, 3254, +3554, 2386, 3253, +3553, 2393, 3251, +3551, 2403, 3249, +3549, 2415, 3246, +3546, 2431, 3242, +3542, 2452, 3236, +3537, 2478, 3228, +3530, 2511, 3217, +3520, 2552, 3202, +3507, 2601, 3182, +3488, 2660, 3152, +3462, 2728, 3110, +3425, 2805, 3047, +3369, 2892, 2946, +3283, 2986, 2761, +3134, 3088, 2258, +2800, 3196, 0, +0, 3310, 0, +0, 3427, 0, +0, 3548, 0, +0, 3672, 0, +3690, 2496, 3390, +3690, 2496, 3390, +3689, 2497, 3390, +3689, 2497, 3390, +3689, 2498, 3390, +3689, 2498, 3390, +3689, 2499, 3389, +3689, 2501, 3389, +3689, 2502, 3389, +3688, 2505, 3388, +3688, 2508, 3387, +3687, 2512, 3386, +3686, 2518, 3385, +3685, 2525, 3383, +3683, 2534, 3381, +3681, 2547, 3378, +3678, 2563, 3374, +3674, 2584, 3368, +3669, 2610, 3360, +3662, 2643, 3349, +3652, 2684, 3334, +3639, 2733, 3314, +3620, 2791, 3284, +3594, 2859, 3242, +3557, 2937, 3179, +3501, 3023, 3078, +3415, 3118, 2893, +3266, 3220, 2389, +2932, 3328, 0, +0, 3442, 0, +0, 3559, 0, +0, 3680, 0, +3822, 2628, 3522, +3822, 2628, 3522, +3822, 2628, 3522, +3822, 2628, 3522, +3822, 2629, 3522, +3821, 2629, 3522, +3821, 2630, 3522, +3821, 2631, 3521, +3821, 2632, 3521, +3821, 2634, 3521, +3820, 2637, 3520, +3820, 2640, 3519, +3819, 2644, 3518, +3818, 2649, 3517, +3817, 2657, 3515, +3815, 2666, 3513, +3813, 2679, 3510, +3810, 2695, 3506, +3806, 2716, 3500, +3801, 2742, 3492, +3794, 2775, 3481, +3784, 2816, 3466, +3771, 2865, 3446, +3752, 2923, 3416, +3726, 2991, 3374, +3689, 3069, 3311, +3634, 3155, 3210, +3547, 3250, 3025, +3398, 3352, 2521, +3064, 3460, 0, +0, 3574, 0, +0, 3691, 0, +3954, 2759, 3654, +3954, 2759, 3654, +3954, 2760, 3654, +3954, 2760, 3654, +3954, 2760, 3654, +3954, 2761, 3654, +3954, 2761, 3654, +3953, 2762, 3654, +3953, 2763, 3653, +3953, 2764, 3653, +3953, 2766, 3653, +3952, 2768, 3652, +3952, 2772, 3651, +3951, 2776, 3650, +3950, 2781, 3649, +3949, 2788, 3647, +3948, 2798, 3645, +3945, 2811, 3642, +3943, 2827, 3638, +3939, 2847, 3632, +3933, 2874, 3624, +3926, 2907, 3613, +3916, 2947, 3598, +3903, 2997, 3578, +3884, 3055, 3548, +3858, 3123, 3506, +3821, 3201, 3443, +3766, 3287, 3342, +3679, 3382, 3157, +3530, 3484, 2652, +3197, 3593, 0, +0, 3706, 0, +4086, 2891, 3786, +4086, 2891, 3786, +4086, 2891, 3786, +4086, 2891, 3786, +4086, 2892, 3786, +4086, 2892, 3786, +4086, 2892, 3786, +4086, 2893, 3786, +4086, 2894, 3786, +4085, 2895, 3786, +4085, 2896, 3785, +4085, 2898, 3785, +4085, 2900, 3784, +4084, 2903, 3784, +4083, 2908, 3783, +4082, 2913, 3781, +4081, 2920, 3779, +4080, 2930, 3777, +4078, 2942, 3774, +4075, 2959, 3770, +4071, 2979, 3764, +4065, 3006, 3756, +4058, 3039, 3745, +4048, 3079, 3730, +4035, 3129, 3710, +4017, 3187, 3680, +3990, 3255, 3638, +3953, 3333, 3575, +3898, 3420, 3474, +3811, 3514, 3289, +3662, 3616, 2784, +3329, 3725, 0, +4095, 3023, 3918, +4095, 3023, 3918, +4095, 3023, 3918, +4095, 3023, 3918, +4095, 3023, 3918, +4095, 3024, 3918, +4095, 3024, 3918, +4095, 3024, 3918, +4095, 3025, 3918, +4095, 3026, 3918, +4095, 3027, 3918, +4095, 3028, 3917, +4095, 3030, 3917, +4095, 3032, 3916, +4095, 3035, 3916, +4095, 3040, 3915, +4095, 3045, 3913, +4095, 3052, 3912, +4095, 3062, 3909, +4095, 3074, 3906, +4095, 3091, 3902, +4095, 3111, 3896, +4095, 3138, 3888, +4095, 3171, 3877, +4095, 3211, 3862, +4095, 3261, 3842, +4095, 3319, 3812, +4095, 3387, 3770, +4085, 3465, 3707, +4030, 3552, 3606, +3944, 3646, 3421, +3794, 3748, 2916, +4095, 3155, 4051, +4095, 3155, 4050, +4095, 3155, 4050, +4095, 3155, 4050, +4095, 3155, 4050, +4095, 3155, 4050, +4095, 3156, 4050, +4095, 3156, 4050, +4095, 3156, 4050, +4095, 3157, 4050, +4095, 3158, 4050, +4095, 3159, 4050, +4095, 3160, 4049, +4095, 3162, 4049, +4095, 3164, 4048, +4095, 3167, 4048, +4095, 3172, 4047, +4095, 3177, 4045, +4095, 3184, 4044, +4095, 3194, 4041, +4095, 3206, 4038, +4095, 3223, 4034, +4095, 3243, 4028, +4095, 3270, 4020, +4095, 3303, 4009, +4095, 3343, 3994, +4095, 3393, 3974, +4095, 3451, 3945, +4095, 3519, 3902, +4095, 3597, 3839, +4095, 3684, 3738, +4076, 3778, 3553, +0, 193, 352, +0, 229, 307, +0, 273, 239, +0, 326, 129, +0, 388, 0, +0, 459, 0, +0, 540, 0, +0, 630, 0, +0, 728, 0, +0, 833, 0, +0, 943, 0, +0, 1058, 0, +0, 1177, 0, +0, 1299, 0, +0, 1423, 0, +0, 1550, 0, +0, 1677, 0, +0, 1806, 0, +0, 1936, 0, +0, 2066, 0, +0, 2197, 0, +0, 2328, 0, +0, 2459, 0, +0, 2591, 0, +0, 2722, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +0, 205, 412, +0, 240, 373, +0, 283, 315, +0, 335, 223, +0, 396, 62, +0, 466, 0, +0, 546, 0, +0, 635, 0, +0, 732, 0, +0, 836, 0, +0, 945, 0, +0, 1060, 0, +0, 1178, 0, +0, 1300, 0, +0, 1424, 0, +0, 1550, 0, +0, 1678, 0, +0, 1807, 0, +0, 1936, 0, +0, 2066, 0, +0, 2197, 0, +0, 2328, 0, +0, 2459, 0, +0, 2591, 0, +0, 2722, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +154, 222, 481, +58, 255, 448, +0, 297, 399, +0, 347, 325, +0, 407, 201, +0, 476, 0, +0, 554, 0, +0, 641, 0, +0, 737, 0, +0, 840, 0, +0, 949, 0, +0, 1062, 0, +0, 1180, 0, +0, 1302, 0, +0, 1425, 0, +0, 1551, 0, +0, 1679, 0, +0, 1807, 0, +0, 1936, 0, +0, 2066, 0, +0, 2197, 0, +0, 2328, 0, +0, 2459, 0, +0, 2591, 0, +0, 2722, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +409, 242, 560, +357, 275, 532, +276, 315, 492, +138, 363, 433, +0, 420, 338, +0, 488, 170, +0, 564, 0, +0, 650, 0, +0, 744, 0, +0, 845, 0, +0, 953, 0, +0, 1066, 0, +0, 1183, 0, +0, 1304, 0, +0, 1427, 0, +0, 1552, 0, +0, 1679, 0, +0, 1808, 0, +0, 1937, 0, +0, 2067, 0, +0, 2197, 0, +0, 2328, 0, +0, 2459, 0, +0, 2591, 0, +0, 2722, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +616, 269, 648, +583, 299, 625, +535, 337, 593, +463, 383, 546, +343, 438, 474, +109, 503, 355, +0, 577, 124, +0, 661, 0, +0, 753, 0, +0, 852, 0, +0, 958, 0, +0, 1070, 0, +0, 1186, 0, +0, 1306, 0, +0, 1429, 0, +0, 1554, 0, +0, 1681, 0, +0, 1809, 0, +0, 1938, 0, +0, 2067, 0, +0, 2198, 0, +0, 2328, 0, +0, 2460, 0, +0, 2591, 0, +0, 2723, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +796, 302, 744, +775, 330, 726, +744, 366, 700, +700, 409, 663, +632, 461, 608, +523, 523, 523, +318, 594, 377, +0, 675, 54, +0, 764, 0, +0, 862, 0, +0, 966, 0, +0, 1076, 0, +0, 1191, 0, +0, 1310, 0, +0, 1432, 0, +0, 1556, 0, +0, 1682, 0, +0, 1810, 0, +0, 1938, 0, +0, 2068, 0, +0, 2198, 0, +0, 2329, 0, +0, 2460, 0, +0, 2591, 0, +0, 2723, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +962, 343, 847, +947, 369, 832, +926, 401, 812, +897, 442, 784, +854, 490, 742, +790, 549, 680, +688, 616, 582, +501, 693, 404, +0, 780, 0, +0, 874, 0, +0, 976, 0, +0, 1084, 0, +0, 1197, 0, +0, 1314, 0, +0, 1435, 0, +0, 1559, 0, +0, 1684, 0, +0, 1811, 0, +0, 1940, 0, +0, 2069, 0, +0, 2199, 0, +0, 2329, 0, +0, 2460, 0, +0, 2591, 0, +0, 2723, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1117, 392, 956, +1107, 415, 945, +1092, 445, 929, +1072, 482, 907, +1043, 527, 876, +1002, 581, 831, +941, 644, 762, +843, 717, 650, +667, 799, 439, +213, 890, 0, +0, 988, 0, +0, 1094, 0, +0, 1205, 0, +0, 1320, 0, +0, 1440, 0, +0, 1562, 0, +0, 1687, 0, +0, 1813, 0, +0, 1941, 0, +0, 2070, 0, +0, 2200, 0, +0, 2330, 0, +0, 2461, 0, +0, 2592, 0, +0, 2723, 0, +0, 2855, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1266, 450, 1070, +1258, 471, 1061, +1248, 497, 1049, +1234, 530, 1032, +1214, 571, 1009, +1186, 620, 976, +1146, 678, 927, +1086, 746, 852, +992, 824, 728, +824, 910, 481, +408, 1005, 0, +0, 1107, 0, +0, 1215, 0, +0, 1328, 0, +0, 1446, 0, +0, 1567, 0, +0, 1690, 0, +0, 1816, 0, +0, 1943, 0, +0, 2072, 0, +0, 2201, 0, +0, 2331, 0, +0, 2461, 0, +0, 2592, 0, +0, 2724, 0, +0, 2855, 0, +0, 2987, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1410, 519, 1188, +1405, 536, 1182, +1397, 559, 1172, +1387, 588, 1160, +1373, 624, 1142, +1353, 668, 1117, +1326, 721, 1082, +1287, 783, 1030, +1228, 855, 950, +1136, 936, 815, +973, 1026, 532, +582, 1124, 0, +0, 1229, 0, +0, 1339, 0, +0, 1454, 0, +0, 1573, 0, +0, 1695, 0, +0, 1820, 0, +0, 1946, 0, +0, 2074, 0, +0, 2202, 0, +0, 2332, 0, +0, 2462, 0, +0, 2593, 0, +0, 2724, 0, +0, 2855, 0, +0, 2987, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1551, 596, 1310, +1547, 611, 1305, +1542, 631, 1297, +1534, 655, 1288, +1524, 687, 1275, +1510, 725, 1256, +1491, 772, 1231, +1464, 828, 1194, +1425, 894, 1140, +1367, 969, 1055, +1277, 1053, 910, +1117, 1146, 593, +743, 1246, 0, +0, 1353, 0, +0, 1465, 0, +0, 1581, 0, +0, 1702, 0, +0, 1824, 0, +0, 1950, 0, +0, 2076, 0, +0, 2205, 0, +0, 2334, 0, +0, 2463, 0, +0, 2594, 0, +0, 2725, 0, +0, 2856, 0, +0, 2987, 0, +0, 3119, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1690, 683, 1434, +1687, 695, 1430, +1683, 711, 1424, +1677, 732, 1417, +1670, 759, 1407, +1660, 792, 1394, +1646, 833, 1375, +1627, 882, 1348, +1600, 941, 1310, +1562, 1009, 1254, +1505, 1087, 1166, +1415, 1173, 1013, +1259, 1268, 663, +895, 1370, 0, +0, 1479, 0, +0, 1592, 0, +0, 1710, 0, +0, 1831, 0, +0, 1954, 0, +0, 2080, 0, +0, 2207, 0, +0, 2336, 0, +0, 2465, 0, +0, 2595, 0, +0, 2726, 0, +0, 2856, 0, +0, 2988, 0, +0, 3119, 0, +0, 3251, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1826, 777, 1560, +1824, 788, 1557, +1821, 801, 1552, +1817, 818, 1547, +1812, 840, 1540, +1805, 868, 1530, +1795, 903, 1516, +1781, 945, 1496, +1762, 997, 1469, +1736, 1058, 1430, +1697, 1128, 1372, +1641, 1208, 1281, +1552, 1296, 1121, +1397, 1393, 742, +1042, 1497, 0, +0, 1606, 0, +0, 1721, 0, +0, 1839, 0, +0, 1961, 0, +0, 2085, 0, +0, 2211, 0, +0, 2338, 0, +0, 2467, 0, +0, 2597, 0, +0, 2727, 0, +0, 2857, 0, +0, 2988, 0, +0, 3120, 0, +0, 3251, 0, +0, 3383, 0, +0, 3514, 0, +0, 3646, 0, +1962, 880, 1687, +1961, 888, 1685, +1958, 898, 1682, +1955, 912, 1678, +1951, 930, 1672, +1946, 953, 1664, +1939, 982, 1654, +1929, 1018, 1640, +1915, 1062, 1620, +1897, 1116, 1593, +1870, 1178, 1553, +1832, 1250, 1494, +1776, 1331, 1400, +1688, 1422, 1235, +1534, 1520, 831, +1185, 1624, 0, +0, 1735, 0, +0, 1850, 0, +0, 1969, 0, +0, 2091, 0, +0, 2216, 0, +0, 2342, 0, +0, 2470, 0, +0, 2599, 0, +0, 2728, 0, +0, 2859, 0, +0, 2989, 0, +0, 3120, 0, +0, 3252, 0, +0, 3383, 0, +0, 3515, 0, +0, 3647, 0, +2097, 988, 1815, +2096, 994, 1814, +2094, 1003, 1811, +2092, 1014, 1808, +2089, 1028, 1804, +2085, 1047, 1799, +2080, 1071, 1791, +2072, 1100, 1781, +2063, 1138, 1766, +2049, 1183, 1746, +2030, 1237, 1719, +2004, 1301, 1678, +1966, 1375, 1618, +1910, 1457, 1523, +1822, 1548, 1352, +1670, 1647, 927, +1325, 1753, 0, +0, 1864, 0, +0, 1980, 0, +0, 2100, 0, +0, 2222, 0, +0, 2347, 0, +0, 2474, 0, +0, 2601, 0, +0, 2730, 0, +0, 2860, 0, +0, 2990, 0, +0, 3121, 0, +0, 3252, 0, +0, 3384, 0, +0, 3515, 0, +0, 3647, 0, +2231, 1101, 1945, +2230, 1106, 1944, +2229, 1113, 1942, +2227, 1122, 1940, +2225, 1133, 1936, +2222, 1148, 1932, +2218, 1167, 1927, +2213, 1191, 1919, +2206, 1222, 1908, +2196, 1260, 1894, +2182, 1306, 1874, +2164, 1362, 1846, +2137, 1427, 1805, +2100, 1501, 1744, +2044, 1585, 1647, +1956, 1677, 1473, +1805, 1776, 1031, +1463, 1883, 0, +0, 1994, 0, +0, 2111, 0, +0, 2231, 0, +0, 2353, 0, +0, 2478, 0, +0, 2605, 0, +0, 2733, 0, +0, 2862, 0, +0, 2992, 0, +0, 3122, 0, +0, 3253, 0, +0, 3384, 0, +0, 3516, 0, +0, 3647, 0, +2364, 1219, 2075, +2364, 1223, 2074, +2363, 1228, 2073, +2362, 1235, 2071, +2360, 1244, 2069, +2358, 1255, 2066, +2355, 1270, 2061, +2351, 1290, 2056, +2346, 1315, 2048, +2339, 1346, 2037, +2329, 1385, 2023, +2315, 1432, 2003, +2297, 1488, 1974, +2270, 1553, 1933, +2233, 1629, 1871, +2177, 1713, 1773, +2090, 1806, 1597, +1939, 1906, 1140, +1599, 2013, 0, +0, 2125, 0, +0, 2242, 0, +0, 2362, 0, +0, 2485, 0, +0, 2610, 0, +0, 2737, 0, +0, 2865, 0, +0, 2994, 0, +0, 3124, 0, +0, 3254, 0, +0, 3385, 0, +0, 3516, 0, +0, 3648, 0, +2498, 1340, 2206, +2497, 1343, 2205, +2497, 1347, 2204, +2496, 1352, 2203, +2494, 1359, 2201, +2493, 1368, 2199, +2491, 1380, 2195, +2488, 1395, 2191, +2484, 1415, 2185, +2478, 1440, 2178, +2471, 1472, 2167, +2461, 1511, 2152, +2448, 1559, 2132, +2429, 1615, 2103, +2403, 1682, 2062, +2366, 1757, 2000, +2310, 1842, 1901, +2223, 1936, 1723, +2073, 2036, 1254, +1735, 2144, 0, +0, 2256, 0, +0, 2373, 0, +0, 2493, 0, +0, 2616, 0, +0, 2742, 0, +0, 2869, 0, +0, 2997, 0, +0, 3126, 0, +0, 3256, 0, +0, 3386, 0, +0, 3517, 0, +0, 3648, 0, +2631, 1463, 2337, +2630, 1466, 2336, +2630, 1469, 2335, +2629, 1473, 2334, +2628, 1478, 2333, +2627, 1485, 2331, +2625, 1494, 2329, +2623, 1506, 2326, +2620, 1522, 2322, +2616, 1542, 2316, +2611, 1567, 2308, +2604, 1599, 2297, +2594, 1639, 2283, +2581, 1687, 2262, +2562, 1744, 2233, +2536, 1811, 2192, +2498, 1887, 2130, +2443, 1972, 2030, +2356, 2066, 1850, +2206, 2167, 1373, +1869, 2275, 0, +0, 2387, 0, +0, 2504, 0, +0, 2625, 0, +0, 2748, 0, +0, 2874, 0, +0, 3001, 0, +0, 3129, 0, +0, 3258, 0, +0, 3388, 0, +0, 3518, 0, +0, 3649, 0, +2763, 1589, 2468, +2763, 1591, 2467, +2763, 1593, 2467, +2762, 1596, 2466, +2761, 1600, 2465, +2761, 1605, 2464, +2759, 1613, 2462, +2758, 1622, 2460, +2756, 1634, 2457, +2753, 1650, 2452, +2749, 1670, 2447, +2743, 1696, 2439, +2736, 1728, 2428, +2727, 1768, 2413, +2713, 1816, 2393, +2694, 1874, 2364, +2668, 1941, 2322, +2631, 2017, 2260, +2575, 2103, 2160, +2489, 2197, 1978, +2339, 2298, 1494, +2003, 2406, 0, +0, 2519, 0, +0, 2636, 0, +0, 2757, 0, +0, 2880, 0, +0, 3005, 0, +0, 3132, 0, +0, 3261, 0, +0, 3390, 0, +0, 3520, 0, +0, 3650, 0, +2896, 1716, 2599, +2896, 1717, 2599, +2895, 1719, 2599, +2895, 1722, 2598, +2894, 1725, 2597, +2894, 1729, 2596, +2893, 1734, 2595, +2892, 1741, 2593, +2890, 1751, 2591, +2888, 1763, 2588, +2885, 1779, 2583, +2881, 1799, 2578, +2876, 1825, 2570, +2869, 1857, 2559, +2859, 1897, 2544, +2845, 1946, 2524, +2827, 2004, 2495, +2801, 2071, 2453, +2763, 2148, 2390, +2708, 2234, 2290, +2621, 2328, 2108, +2472, 2430, 1618, +2136, 2537, 0, +0, 2650, 0, +0, 2768, 0, +0, 2888, 0, +0, 3012, 0, +0, 3137, 0, +0, 3264, 0, +0, 3393, 0, +0, 3522, 0, +0, 3652, 0, +3028, 1845, 2731, +3028, 1846, 2731, +3028, 1847, 2730, +3028, 1849, 2730, +3027, 1851, 2729, +3027, 1854, 2729, +3026, 1858, 2728, +3025, 1864, 2726, +3024, 1871, 2725, +3022, 1880, 2722, +3020, 1892, 2719, +3017, 1908, 2715, +3013, 1929, 2709, +3008, 1955, 2701, +3001, 1987, 2690, +2991, 2028, 2676, +2978, 2076, 2655, +2959, 2134, 2626, +2933, 2202, 2584, +2896, 2279, 2521, +2840, 2365, 2421, +2754, 2459, 2238, +2604, 2561, 1744, +2269, 2669, 0, +0, 2782, 0, +0, 2900, 0, +0, 3020, 0, +0, 3144, 0, +0, 3269, 0, +0, 3396, 0, +0, 3525, 0, +0, 3654, 0, +3161, 1974, 2863, +3161, 1975, 2862, +3160, 1976, 2862, +3160, 1977, 2862, +3160, 1979, 2862, +3160, 1981, 2861, +3159, 1984, 2860, +3158, 1988, 2859, +3157, 1994, 2858, +3156, 2001, 2856, +3155, 2010, 2854, +3152, 2023, 2851, +3150, 2039, 2846, +3146, 2059, 2841, +3140, 2085, 2833, +3133, 2118, 2822, +3123, 2158, 2807, +3110, 2207, 2787, +3091, 2266, 2758, +3065, 2333, 2716, +3028, 2410, 2653, +2973, 2497, 2552, +2886, 2591, 2368, +2737, 2693, 1872, +2402, 2801, 0, +0, 2914, 0, +0, 3031, 0, +0, 3152, 0, +0, 3276, 0, +0, 3401, 0, +0, 3528, 0, +0, 3657, 0, +3293, 2104, 2994, +3293, 2104, 2994, +3293, 2105, 2994, +3293, 2106, 2994, +3292, 2107, 2994, +3292, 2109, 2993, +3292, 2112, 2993, +3291, 2115, 2992, +3291, 2119, 2991, +3290, 2124, 2990, +3288, 2132, 2988, +3287, 2141, 2986, +3285, 2153, 2982, +3282, 2169, 2978, +3278, 2190, 2972, +3273, 2216, 2964, +3265, 2249, 2954, +3256, 2290, 2939, +3242, 2339, 2918, +3224, 2397, 2889, +3198, 2465, 2847, +3160, 2542, 2784, +3105, 2628, 2683, +3018, 2723, 2499, +2869, 2825, 2000, +2535, 2933, 0, +0, 3046, 0, +0, 3163, 0, +0, 3284, 0, +0, 3408, 0, +0, 3533, 0, +0, 3661, 0, +3425, 2234, 3126, +3425, 2235, 3126, +3425, 2235, 3126, +3425, 2236, 3126, +3425, 2237, 3126, +3425, 2238, 3125, +3424, 2240, 3125, +3424, 2243, 3124, +3423, 2246, 3124, +3423, 2250, 3123, +3422, 2255, 3121, +3421, 2263, 3120, +3419, 2272, 3117, +3417, 2284, 3114, +3414, 2301, 3110, +3410, 2321, 3104, +3405, 2347, 3096, +3398, 2380, 3085, +3388, 2421, 3071, +3374, 2470, 3050, +3356, 2528, 3021, +3330, 2596, 2979, +3292, 2674, 2916, +3237, 2760, 2815, +3151, 2855, 2631, +3001, 2956, 2130, +2667, 3065, 0, +0, 3178, 0, +0, 3295, 0, +0, 3416, 0, +0, 3540, 0, +0, 3665, 0, +3557, 2365, 3258, +3557, 2366, 3258, +3557, 2366, 3258, +3557, 2367, 3258, +3557, 2367, 3258, +3557, 2368, 3258, +3557, 2370, 3257, +3556, 2371, 3257, +3556, 2374, 3256, +3556, 2377, 3256, +3555, 2381, 3255, +3554, 2387, 3253, +3553, 2394, 3252, +3551, 2403, 3249, +3549, 2416, 3246, +3546, 2432, 3242, +3542, 2453, 3236, +3537, 2479, 3228, +3530, 2512, 3217, +3520, 2552, 3202, +3507, 2602, 3182, +3488, 2660, 3153, +3462, 2728, 3111, +3425, 2805, 3047, +3369, 2892, 2946, +3283, 2986, 2762, +3134, 3088, 2260, +2800, 3197, 0, +0, 3310, 0, +0, 3427, 0, +0, 3548, 0, +0, 3672, 0, +3690, 2497, 3390, +3690, 2497, 3390, +3689, 2497, 3390, +3689, 2498, 3390, +3689, 2498, 3390, +3689, 2499, 3390, +3689, 2500, 3390, +3689, 2501, 3389, +3689, 2503, 3389, +3688, 2505, 3388, +3688, 2508, 3388, +3687, 2513, 3387, +3686, 2518, 3385, +3685, 2525, 3384, +3683, 2535, 3381, +3681, 2547, 3378, +3678, 2563, 3374, +3674, 2584, 3368, +3669, 2610, 3360, +3662, 2643, 3349, +3652, 2684, 3334, +3639, 2733, 3314, +3620, 2792, 3285, +3594, 2860, 3242, +3557, 2937, 3179, +3501, 3024, 3078, +3415, 3118, 2894, +3266, 3220, 2391, +2932, 3329, 0, +0, 3442, 0, +0, 3559, 0, +0, 3680, 0, +3822, 2628, 3522, +3822, 2628, 3522, +3822, 2628, 3522, +3822, 2629, 3522, +3822, 2629, 3522, +3821, 2630, 3522, +3821, 2630, 3522, +3821, 2631, 3522, +3821, 2633, 3521, +3821, 2635, 3521, +3820, 2637, 3520, +3820, 2640, 3520, +3819, 2644, 3519, +3818, 2650, 3517, +3817, 2657, 3515, +3815, 2667, 3513, +3813, 2679, 3510, +3810, 2695, 3506, +3806, 2716, 3500, +3801, 2742, 3492, +3794, 2775, 3481, +3784, 2816, 3466, +3771, 2865, 3446, +3752, 2924, 3416, +3726, 2992, 3374, +3689, 3069, 3311, +3634, 3156, 3210, +3547, 3250, 3025, +3398, 3352, 2521, +3064, 3461, 0, +0, 3574, 0, +0, 3692, 0, +3954, 2760, 3654, +3954, 2760, 3654, +3954, 2760, 3654, +3954, 2760, 3654, +3954, 2760, 3654, +3954, 2761, 3654, +3954, 2761, 3654, +3953, 2762, 3654, +3953, 2763, 3654, +3953, 2764, 3653, +3953, 2766, 3653, +3952, 2769, 3652, +3952, 2772, 3652, +3951, 2776, 3651, +3950, 2781, 3649, +3949, 2789, 3647, +3948, 2798, 3645, +3945, 2811, 3642, +3942, 2827, 3638, +3939, 2848, 3632, +3933, 2874, 3624, +3926, 2907, 3613, +3916, 2948, 3598, +3903, 2997, 3578, +3884, 3055, 3548, +3858, 3123, 3506, +3821, 3201, 3443, +3766, 3288, 3342, +3679, 3382, 3157, +3530, 3484, 2653, +3197, 3593, 0, +0, 3706, 0, +4086, 2891, 3786, +4086, 2891, 3786, +4086, 2892, 3786, +4086, 2892, 3786, +4086, 2892, 3786, +4086, 2892, 3786, +4086, 2893, 3786, +4086, 2893, 3786, +4086, 2894, 3786, +4085, 2895, 3786, +4085, 2896, 3785, +4085, 2898, 3785, +4085, 2900, 3784, +4084, 2904, 3784, +4083, 2908, 3783, +4082, 2913, 3781, +4081, 2921, 3780, +4080, 2930, 3777, +4078, 2943, 3774, +4075, 2959, 3770, +4071, 2980, 3764, +4065, 3006, 3756, +4058, 3039, 3745, +4048, 3080, 3730, +4035, 3129, 3710, +4017, 3187, 3680, +3990, 3255, 3638, +3953, 3333, 3575, +3898, 3420, 3474, +3811, 3514, 3289, +3662, 3616, 2784, +3329, 3725, 0, +4095, 3023, 3918, +4095, 3023, 3918, +4095, 3023, 3918, +4095, 3023, 3918, +4095, 3024, 3918, +4095, 3024, 3918, +4095, 3024, 3918, +4095, 3025, 3918, +4095, 3025, 3918, +4095, 3026, 3918, +4095, 3027, 3918, +4095, 3028, 3917, +4095, 3030, 3917, +4095, 3032, 3916, +4095, 3036, 3916, +4095, 3040, 3915, +4095, 3045, 3913, +4095, 3052, 3912, +4095, 3062, 3909, +4095, 3075, 3906, +4095, 3091, 3902, +4095, 3111, 3896, +4095, 3138, 3888, +4095, 3171, 3877, +4095, 3212, 3862, +4095, 3261, 3842, +4095, 3319, 3813, +4095, 3387, 3770, +4085, 3465, 3707, +4030, 3552, 3606, +3944, 3646, 3421, +3794, 3748, 2916, +4095, 3155, 4051, +4095, 3155, 4051, +4095, 3155, 4051, +4095, 3155, 4050, +4095, 3155, 4050, +4095, 3156, 4050, +4095, 3156, 4050, +4095, 3156, 4050, +4095, 3157, 4050, +4095, 3157, 4050, +4095, 3158, 4050, +4095, 3159, 4050, +4095, 3160, 4049, +4095, 3162, 4049, +4095, 3164, 4048, +4095, 3167, 4048, +4095, 3172, 4047, +4095, 3177, 4045, +4095, 3184, 4044, +4095, 3194, 4041, +4095, 3206, 4038, +4095, 3223, 4034, +4095, 3243, 4028, +4095, 3270, 4020, +4095, 3303, 4009, +4095, 3344, 3994, +4095, 3393, 3974, +4095, 3451, 3945, +4095, 3520, 3902, +4095, 3597, 3839, +4095, 3684, 3738, +4076, 3778, 3553, +0, 286, 468, +0, 316, 433, +0, 352, 383, +0, 397, 305, +0, 450, 175, +0, 514, 0, +0, 586, 0, +0, 668, 0, +0, 759, 0, +0, 857, 0, +0, 962, 0, +0, 1073, 0, +0, 1189, 0, +0, 1308, 0, +0, 1430, 0, +0, 1555, 0, +0, 1681, 0, +0, 1809, 0, +0, 1938, 0, +0, 2068, 0, +0, 2198, 0, +0, 2329, 0, +0, 2460, 0, +0, 2591, 0, +0, 2723, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +0, 296, 515, +0, 325, 484, +0, 361, 439, +0, 405, 371, +0, 458, 261, +0, 520, 54, +0, 592, 0, +0, 673, 0, +0, 762, 0, +0, 860, 0, +0, 965, 0, +0, 1075, 0, +0, 1190, 0, +0, 1309, 0, +0, 1431, 0, +0, 1556, 0, +0, 1682, 0, +0, 1810, 0, +0, 1938, 0, +0, 2068, 0, +0, 2198, 0, +0, 2329, 0, +0, 2460, 0, +0, 2591, 0, +0, 2723, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +38, 310, 571, +0, 338, 544, +0, 372, 505, +0, 415, 447, +0, 467, 355, +0, 528, 195, +0, 599, 0, +0, 678, 0, +0, 767, 0, +0, 864, 0, +0, 968, 0, +0, 1077, 0, +0, 1192, 0, +0, 1311, 0, +0, 1432, 0, +0, 1556, 0, +0, 1682, 0, +0, 1810, 0, +0, 1939, 0, +0, 2068, 0, +0, 2198, 0, +0, 2329, 0, +0, 2460, 0, +0, 2591, 0, +0, 2723, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +347, 327, 637, +286, 354, 613, +190, 387, 580, +17, 429, 531, +0, 479, 457, +0, 539, 333, +0, 608, 87, +0, 686, 0, +0, 774, 0, +0, 869, 0, +0, 972, 0, +0, 1081, 0, +0, 1194, 0, +0, 1312, 0, +0, 1434, 0, +0, 1558, 0, +0, 1683, 0, +0, 1811, 0, +0, 1939, 0, +0, 2069, 0, +0, 2199, 0, +0, 2329, 0, +0, 2460, 0, +0, 2591, 0, +0, 2723, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +577, 349, 712, +541, 375, 692, +489, 407, 664, +408, 447, 624, +270, 495, 565, +0, 553, 470, +0, 620, 302, +0, 696, 0, +0, 782, 0, +0, 876, 0, +0, 977, 0, +0, 1085, 0, +0, 1198, 0, +0, 1315, 0, +0, 1436, 0, +0, 1559, 0, +0, 1684, 0, +0, 1812, 0, +0, 1940, 0, +0, 2069, 0, +0, 2199, 0, +0, 2329, 0, +0, 2460, 0, +0, 2591, 0, +0, 2723, 0, +0, 2854, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +771, 377, 796, +748, 401, 780, +715, 431, 757, +668, 469, 725, +595, 515, 678, +475, 571, 606, +241, 635, 487, +0, 709, 256, +0, 793, 0, +0, 885, 0, +0, 984, 0, +0, 1091, 0, +0, 1202, 0, +0, 1318, 0, +0, 1438, 0, +0, 1561, 0, +0, 1686, 0, +0, 1813, 0, +0, 1941, 0, +0, 2070, 0, +0, 2199, 0, +0, 2330, 0, +0, 2461, 0, +0, 2592, 0, +0, 2723, 0, +0, 2855, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +944, 411, 889, +928, 434, 876, +907, 462, 858, +876, 498, 832, +832, 541, 795, +764, 594, 740, +655, 655, 655, +450, 726, 509, +0, 807, 186, +0, 896, 0, +0, 994, 0, +0, 1098, 0, +0, 1208, 0, +0, 1323, 0, +0, 1442, 0, +0, 1564, 0, +0, 1688, 0, +0, 1814, 0, +0, 1942, 0, +0, 2071, 0, +0, 2200, 0, +0, 2330, 0, +0, 2461, 0, +0, 2592, 0, +0, 2723, 0, +0, 2855, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1105, 454, 990, +1094, 475, 979, +1079, 501, 965, +1058, 533, 944, +1029, 574, 916, +986, 623, 874, +922, 681, 813, +820, 748, 714, +633, 825, 536, +113, 912, 73, +0, 1006, 0, +0, 1108, 0, +0, 1216, 0, +0, 1329, 0, +0, 1446, 0, +0, 1567, 0, +0, 1691, 0, +0, 1816, 0, +0, 1943, 0, +0, 2072, 0, +0, 2201, 0, +0, 2331, 0, +0, 2461, 0, +0, 2592, 0, +0, 2724, 0, +0, 2855, 0, +0, 2987, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1257, 506, 1097, +1249, 524, 1088, +1239, 547, 1077, +1224, 577, 1061, +1204, 614, 1039, +1175, 659, 1008, +1134, 713, 963, +1073, 776, 894, +975, 849, 783, +799, 931, 571, +345, 1022, 0, +0, 1121, 0, +0, 1226, 0, +0, 1337, 0, +0, 1452, 0, +0, 1572, 0, +0, 1694, 0, +0, 1819, 0, +0, 1945, 0, +0, 2073, 0, +0, 2202, 0, +0, 2332, 0, +0, 2462, 0, +0, 2593, 0, +0, 2724, 0, +0, 2855, 0, +0, 2987, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1404, 566, 1209, +1398, 582, 1202, +1390, 603, 1193, +1380, 629, 1181, +1366, 662, 1165, +1346, 703, 1141, +1318, 752, 1108, +1278, 811, 1059, +1218, 878, 984, +1124, 956, 860, +956, 1042, 613, +540, 1137, 0, +0, 1239, 0, +0, 1347, 0, +0, 1461, 0, +0, 1578, 0, +0, 1699, 0, +0, 1823, 0, +0, 1948, 0, +0, 2075, 0, +0, 2204, 0, +0, 2333, 0, +0, 2463, 0, +0, 2593, 0, +0, 2724, 0, +0, 2856, 0, +0, 2987, 0, +0, 3119, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1546, 637, 1325, +1542, 651, 1320, +1537, 668, 1314, +1529, 691, 1304, +1519, 720, 1292, +1505, 756, 1274, +1486, 800, 1249, +1458, 853, 1214, +1419, 915, 1162, +1360, 987, 1082, +1268, 1068, 947, +1105, 1158, 665, +714, 1256, 0, +0, 1361, 0, +0, 1471, 0, +0, 1586, 0, +0, 1705, 0, +0, 1827, 0, +0, 1952, 0, +0, 2078, 0, +0, 2206, 0, +0, 2335, 0, +0, 2464, 0, +0, 2594, 0, +0, 2725, 0, +0, 2856, 0, +0, 2987, 0, +0, 3119, 0, +0, 3251, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1686, 717, 1446, +1683, 728, 1442, +1679, 743, 1437, +1674, 763, 1430, +1666, 787, 1420, +1656, 819, 1407, +1642, 857, 1388, +1623, 904, 1363, +1596, 960, 1326, +1557, 1026, 1272, +1500, 1101, 1187, +1409, 1185, 1042, +1250, 1278, 725, +875, 1378, 0, +0, 1485, 0, +0, 1597, 0, +0, 1713, 0, +0, 1834, 0, +0, 1957, 0, +0, 2082, 0, +0, 2209, 0, +0, 2337, 0, +0, 2466, 0, +0, 2596, 0, +0, 2726, 0, +0, 2857, 0, +0, 2988, 0, +0, 3119, 0, +0, 3251, 0, +0, 3383, 0, +0, 3514, 0, +0, 3646, 0, +1824, 805, 1569, +1822, 815, 1566, +1819, 827, 1562, +1815, 843, 1556, +1809, 864, 1549, +1802, 891, 1539, +1792, 924, 1526, +1778, 965, 1507, +1759, 1014, 1480, +1732, 1073, 1442, +1694, 1141, 1386, +1637, 1219, 1298, +1547, 1305, 1145, +1391, 1400, 795, +1028, 1502, 0, +0, 1611, 0, +0, 1724, 0, +0, 1842, 0, +0, 1963, 0, +0, 2087, 0, +0, 2212, 0, +0, 2339, 0, +0, 2468, 0, +0, 2597, 0, +0, 2727, 0, +0, 2858, 0, +0, 2989, 0, +0, 3120, 0, +0, 3251, 0, +0, 3383, 0, +0, 3515, 0, +0, 3646, 0, +1960, 902, 1694, +1959, 910, 1692, +1956, 920, 1689, +1953, 933, 1685, +1949, 950, 1679, +1944, 972, 1672, +1937, 1000, 1662, +1927, 1035, 1648, +1913, 1077, 1628, +1894, 1129, 1601, +1868, 1190, 1562, +1830, 1260, 1505, +1773, 1340, 1413, +1684, 1428, 1253, +1530, 1525, 875, +1174, 1629, 0, +0, 1738, 0, +0, 1853, 0, +0, 1971, 0, +0, 2093, 0, +0, 2217, 0, +0, 2343, 0, +0, 2471, 0, +0, 2599, 0, +0, 2729, 0, +0, 2859, 0, +0, 2989, 0, +0, 3120, 0, +0, 3252, 0, +0, 3383, 0, +0, 3515, 0, +0, 3647, 0, +2095, 1005, 1821, +2094, 1012, 1819, +2093, 1020, 1817, +2090, 1030, 1814, +2087, 1044, 1810, +2084, 1062, 1804, +2078, 1085, 1797, +2071, 1114, 1786, +2061, 1150, 1772, +2047, 1195, 1753, +2029, 1248, 1725, +2002, 1310, 1685, +1964, 1382, 1626, +1908, 1464, 1533, +1820, 1554, 1367, +1667, 1652, 963, +1317, 1756, 0, +0, 1867, 0, +0, 1982, 0, +0, 2101, 0, +0, 2223, 0, +0, 2348, 0, +0, 2474, 0, +0, 2602, 0, +0, 2731, 0, +0, 2860, 0, +0, 2991, 0, +0, 3121, 0, +0, 3252, 0, +0, 3384, 0, +0, 3515, 0, +0, 3647, 0, +2230, 1115, 1949, +2229, 1120, 1948, +2228, 1126, 1946, +2226, 1135, 1944, +2224, 1146, 1941, +2221, 1160, 1936, +2217, 1179, 1931, +2212, 1203, 1923, +2205, 1233, 1913, +2195, 1270, 1898, +2181, 1315, 1879, +2162, 1369, 1851, +2136, 1433, 1810, +2098, 1507, 1750, +2042, 1589, 1655, +1955, 1681, 1484, +1802, 1780, 1059, +1457, 1885, 0, +0, 1996, 0, +0, 2112, 0, +0, 2232, 0, +0, 2354, 0, +0, 2479, 0, +0, 2606, 0, +0, 2734, 0, +0, 2862, 0, +0, 2992, 0, +0, 3123, 0, +0, 3253, 0, +0, 3384, 0, +0, 3516, 0, +0, 3647, 0, +2364, 1229, 2078, +2363, 1233, 2077, +2362, 1238, 2076, +2361, 1245, 2074, +2359, 1254, 2072, +2357, 1265, 2069, +2354, 1280, 2064, +2350, 1299, 2059, +2345, 1323, 2051, +2338, 1354, 2041, +2328, 1392, 2026, +2314, 1438, 2006, +2296, 1494, 1978, +2269, 1559, 1937, +2232, 1633, 1876, +2176, 1717, 1779, +2089, 1809, 1606, +1937, 1908, 1163, +1595, 2015, 0, +0, 2127, 0, +0, 2243, 0, +0, 2363, 0, +0, 2486, 0, +0, 2611, 0, +0, 2737, 0, +0, 2865, 0, +0, 2994, 0, +0, 3124, 0, +0, 3254, 0, +0, 3385, 0, +0, 3516, 0, +0, 3648, 0, +2497, 1348, 2208, +2497, 1351, 2207, +2496, 1355, 2206, +2495, 1360, 2205, +2494, 1367, 2203, +2492, 1376, 2201, +2490, 1387, 2198, +2487, 1402, 2193, +2483, 1422, 2188, +2478, 1447, 2180, +2471, 1478, 2169, +2461, 1517, 2155, +2447, 1564, 2135, +2429, 1620, 2106, +2402, 1686, 2065, +2365, 1761, 2004, +2309, 1845, 1906, +2222, 1938, 1729, +2071, 2038, 1272, +1731, 2145, 0, +0, 2257, 0, +0, 2374, 0, +0, 2494, 0, +0, 2617, 0, +0, 2742, 0, +0, 2869, 0, +0, 2997, 0, +0, 3126, 0, +0, 3256, 0, +0, 3386, 0, +0, 3517, 0, +0, 3648, 0, +2630, 1470, 2338, +2630, 1472, 2338, +2629, 1475, 2337, +2629, 1479, 2336, +2628, 1484, 2335, +2627, 1491, 2333, +2625, 1500, 2331, +2623, 1512, 2327, +2620, 1527, 2323, +2616, 1547, 2317, +2611, 1572, 2310, +2603, 1604, 2299, +2594, 1643, 2284, +2580, 1691, 2264, +2561, 1748, 2236, +2535, 1814, 2194, +2498, 1890, 2132, +2442, 1974, 2033, +2355, 2068, 1855, +2205, 2168, 1386, +1867, 2276, 0, +0, 2388, 0, +0, 2505, 0, +0, 2625, 0, +0, 2749, 0, +0, 2874, 0, +0, 3001, 0, +0, 3129, 0, +0, 3258, 0, +0, 3388, 0, +0, 3518, 0, +0, 3649, 0, +2763, 1594, 2469, +2763, 1595, 2469, +2762, 1598, 2468, +2762, 1601, 2467, +2761, 1605, 2466, +2760, 1610, 2465, +2759, 1617, 2463, +2757, 1626, 2461, +2755, 1638, 2458, +2752, 1654, 2454, +2748, 1674, 2448, +2743, 1699, 2440, +2736, 1731, 2429, +2726, 1771, 2415, +2713, 1819, 2394, +2694, 1876, 2366, +2668, 1943, 2324, +2630, 2019, 2262, +2575, 2104, 2162, +2488, 2198, 1982, +2338, 2299, 1505, +2001, 2407, 0, +0, 2519, 0, +0, 2637, 0, +0, 2757, 0, +0, 2880, 0, +0, 3006, 0, +0, 3133, 0, +0, 3261, 0, +0, 3390, 0, +0, 3520, 0, +0, 3650, 0, +2896, 1720, 2600, +2895, 1721, 2600, +2895, 1723, 2600, +2895, 1725, 2599, +2894, 1728, 2598, +2894, 1732, 2597, +2893, 1738, 2596, +2891, 1745, 2594, +2890, 1754, 2592, +2888, 1766, 2589, +2885, 1782, 2584, +2881, 1802, 2579, +2876, 1828, 2571, +2868, 1860, 2560, +2859, 1900, 2545, +2845, 1948, 2525, +2827, 2006, 2496, +2800, 2073, 2454, +2763, 2149, 2392, +2708, 2235, 2292, +2621, 2329, 2111, +2471, 2430, 1626, +2135, 2538, 0, +0, 2651, 0, +0, 2768, 0, +0, 2889, 0, +0, 3012, 0, +0, 3138, 0, +0, 3265, 0, +0, 3393, 0, +0, 3522, 0, +0, 3652, 0, +3028, 1847, 2732, +3028, 1848, 2731, +3028, 1850, 2731, +3027, 1851, 2731, +3027, 1854, 2730, +3027, 1857, 2729, +3026, 1861, 2728, +3025, 1866, 2727, +3024, 1873, 2725, +3022, 1883, 2723, +3020, 1895, 2720, +3017, 1911, 2716, +3013, 1931, 2710, +3008, 1957, 2702, +3001, 1989, 2691, +2991, 2030, 2676, +2978, 2078, 2656, +2959, 2136, 2627, +2933, 2203, 2585, +2895, 2280, 2522, +2840, 2366, 2422, +2753, 2460, 2240, +2604, 2562, 1750, +2268, 2670, 0, +0, 2783, 0, +0, 2900, 0, +0, 3021, 0, +0, 3144, 0, +0, 3269, 0, +0, 3397, 0, +0, 3525, 0, +0, 3654, 0, +3160, 1976, 2863, +3160, 1977, 2863, +3160, 1978, 2863, +3160, 1979, 2862, +3160, 1981, 2862, +3159, 1983, 2862, +3159, 1986, 2861, +3158, 1990, 2860, +3157, 1996, 2858, +3156, 2003, 2857, +3154, 2012, 2854, +3152, 2025, 2851, +3149, 2040, 2847, +3146, 2061, 2841, +3140, 2087, 2833, +3133, 2120, 2822, +3123, 2160, 2808, +3110, 2209, 2787, +3091, 2267, 2758, +3065, 2334, 2716, +3028, 2411, 2653, +2972, 2497, 2553, +2886, 2592, 2370, +2736, 2693, 1876, +2401, 2801, 0, +0, 2914, 0, +0, 3032, 0, +0, 3152, 0, +0, 3276, 0, +0, 3401, 0, +0, 3529, 0, +0, 3657, 0, +3293, 2105, 2995, +3293, 2106, 2995, +3293, 2107, 2995, +3292, 2108, 2994, +3292, 2109, 2994, +3292, 2111, 2994, +3292, 2113, 2993, +3291, 2116, 2992, +3290, 2120, 2991, +3290, 2126, 2990, +3288, 2133, 2988, +3287, 2142, 2986, +3285, 2155, 2983, +3282, 2171, 2978, +3278, 2191, 2973, +3272, 2217, 2965, +3265, 2250, 2954, +3256, 2291, 2939, +3242, 2339, 2919, +3224, 2398, 2890, +3197, 2465, 2848, +3160, 2542, 2785, +3105, 2629, 2684, +3018, 2723, 2500, +2869, 2825, 2004, +2534, 2933, 0, +0, 3046, 0, +0, 3164, 0, +0, 3284, 0, +0, 3408, 0, +0, 3533, 0, +0, 3661, 0, +3425, 2236, 3127, +3425, 2236, 3127, +3425, 2237, 3126, +3425, 2237, 3126, +3425, 2238, 3126, +3424, 2240, 3126, +3424, 2241, 3125, +3424, 2244, 3125, +3423, 2247, 3124, +3423, 2251, 3123, +3422, 2256, 3122, +3421, 2264, 3120, +3419, 2273, 3118, +3417, 2286, 3114, +3414, 2302, 3110, +3410, 2322, 3104, +3405, 2348, 3096, +3397, 2381, 3086, +3388, 2422, 3071, +3374, 2471, 3050, +3356, 2529, 3021, +3330, 2597, 2979, +3292, 2674, 2916, +3237, 2760, 2815, +3150, 2855, 2631, +3001, 2957, 2132, +2667, 3065, 0, +0, 3178, 0, +0, 3296, 0, +0, 3416, 0, +0, 3540, 0, +0, 3665, 0, +3557, 2366, 3259, +3557, 2367, 3258, +3557, 2367, 3258, +3557, 2367, 3258, +3557, 2368, 3258, +3557, 2369, 3258, +3557, 2371, 3258, +3556, 2372, 3257, +3556, 2375, 3257, +3555, 2378, 3256, +3555, 2382, 3255, +3554, 2387, 3254, +3553, 2395, 3252, +3551, 2404, 3249, +3549, 2417, 3246, +3546, 2433, 3242, +3542, 2453, 3236, +3537, 2480, 3228, +3530, 2512, 3217, +3520, 2553, 3203, +3506, 2602, 3182, +3488, 2660, 3153, +3462, 2728, 3111, +3424, 2806, 3048, +3369, 2892, 2947, +3283, 2987, 2763, +3133, 3089, 2262, +2799, 3197, 0, +0, 3310, 0, +0, 3428, 0, +0, 3548, 0, +0, 3672, 0, +3689, 2497, 3390, +3689, 2497, 3390, +3689, 2498, 3390, +3689, 2498, 3390, +3689, 2499, 3390, +3689, 2499, 3390, +3689, 2500, 3390, +3689, 2502, 3389, +3688, 2504, 3389, +3688, 2506, 3388, +3688, 2509, 3388, +3687, 2513, 3387, +3686, 2519, 3385, +3685, 2526, 3384, +3683, 2535, 3381, +3681, 2548, 3378, +3678, 2564, 3374, +3674, 2585, 3368, +3669, 2611, 3360, +3662, 2644, 3349, +3652, 2684, 3334, +3639, 2734, 3314, +3620, 2792, 3285, +3594, 2860, 3243, +3557, 2937, 3179, +3501, 3024, 3078, +3415, 3119, 2894, +3266, 3220, 2392, +2932, 3329, 0, +0, 3442, 0, +0, 3560, 0, +0, 3680, 0, +3822, 2628, 3522, +3822, 2629, 3522, +3822, 2629, 3522, +3822, 2629, 3522, +3821, 2630, 3522, +3821, 2630, 3522, +3821, 2631, 3522, +3821, 2632, 3522, +3821, 2633, 3521, +3821, 2635, 3521, +3820, 2637, 3520, +3820, 2641, 3520, +3819, 2645, 3519, +3818, 2650, 3517, +3817, 2657, 3516, +3815, 2667, 3513, +3813, 2679, 3510, +3810, 2696, 3506, +3806, 2716, 3500, +3801, 2743, 3492, +3794, 2775, 3481, +3784, 2816, 3466, +3771, 2865, 3446, +3752, 2924, 3417, +3726, 2992, 3375, +3689, 3069, 3311, +3633, 3156, 3210, +3547, 3250, 3026, +3398, 3352, 2523, +3064, 3461, 0, +0, 3574, 0, +0, 3692, 0, +3954, 2760, 3654, +3954, 2760, 3654, +3954, 2760, 3654, +3954, 2760, 3654, +3954, 2761, 3654, +3954, 2761, 3654, +3954, 2762, 3654, +3953, 2763, 3654, +3953, 2764, 3654, +3953, 2765, 3653, +3953, 2767, 3653, +3952, 2769, 3652, +3952, 2772, 3652, +3951, 2776, 3651, +3950, 2782, 3649, +3949, 2789, 3648, +3948, 2799, 3645, +3945, 2811, 3642, +3942, 2827, 3638, +3939, 2848, 3632, +3933, 2874, 3624, +3926, 2907, 3613, +3916, 2948, 3598, +3903, 2997, 3578, +3884, 3056, 3549, +3858, 3124, 3506, +3821, 3201, 3443, +3766, 3288, 3342, +3679, 3382, 3157, +3530, 3484, 2654, +3196, 3593, 0, +0, 3706, 0, +4086, 2892, 3786, +4086, 2892, 3786, +4086, 2892, 3786, +4086, 2892, 3786, +4086, 2892, 3786, +4086, 2893, 3786, +4086, 2893, 3786, +4086, 2894, 3786, +4086, 2894, 3786, +4085, 2895, 3786, +4085, 2897, 3785, +4085, 2898, 3785, +4085, 2901, 3784, +4084, 2904, 3784, +4083, 2908, 3783, +4082, 2914, 3781, +4081, 2921, 3780, +4080, 2930, 3777, +4077, 2943, 3774, +4075, 2959, 3770, +4071, 2980, 3764, +4065, 3006, 3756, +4058, 3039, 3745, +4048, 3080, 3730, +4035, 3129, 3710, +4017, 3188, 3681, +3990, 3256, 3638, +3953, 3333, 3575, +3898, 3420, 3474, +3811, 3514, 3289, +3662, 3616, 2785, +3329, 3725, 0, +4095, 3023, 3919, +4095, 3023, 3918, +4095, 3023, 3918, +4095, 3024, 3918, +4095, 3024, 3918, +4095, 3024, 3918, +4095, 3024, 3918, +4095, 3025, 3918, +4095, 3025, 3918, +4095, 3026, 3918, +4095, 3027, 3918, +4095, 3028, 3917, +4095, 3030, 3917, +4095, 3033, 3916, +4095, 3036, 3916, +4095, 3040, 3915, +4095, 3045, 3913, +4095, 3053, 3912, +4095, 3062, 3909, +4095, 3075, 3906, +4095, 3091, 3902, +4095, 3112, 3896, +4095, 3138, 3888, +4095, 3171, 3877, +4095, 3212, 3862, +4095, 3261, 3842, +4095, 3319, 3813, +4095, 3388, 3770, +4085, 3465, 3707, +4030, 3552, 3606, +3944, 3646, 3421, +3794, 3748, 2916, +4095, 3155, 4051, +4095, 3155, 4051, +4095, 3155, 4051, +4095, 3155, 4051, +4095, 3156, 4050, +4095, 3156, 4050, +4095, 3156, 4050, +4095, 3156, 4050, +4095, 3157, 4050, +4095, 3157, 4050, +4095, 3158, 4050, +4095, 3159, 4050, +4095, 3160, 4049, +4095, 3162, 4049, +4095, 3164, 4048, +4095, 3168, 4048, +4095, 3172, 4047, +4095, 3177, 4045, +4095, 3185, 4044, +4095, 3194, 4041, +4095, 3207, 4038, +4095, 3223, 4034, +4095, 3244, 4028, +4095, 3270, 4020, +4095, 3303, 4009, +4095, 3344, 3994, +4095, 3393, 3974, +4095, 3451, 3945, +4095, 3520, 3902, +4095, 3597, 3839, +4095, 3684, 3738, +4076, 3778, 3553, +0, 387, 587, +0, 410, 561, +0, 440, 523, +0, 477, 468, +0, 523, 381, +0, 577, 231, +0, 641, 0, +0, 714, 0, +0, 797, 0, +0, 888, 0, +0, 987, 0, +0, 1093, 0, +0, 1204, 0, +0, 1320, 0, +0, 1439, 0, +0, 1562, 0, +0, 1687, 0, +0, 1813, 0, +0, 1941, 0, +0, 2070, 0, +0, 2200, 0, +0, 2330, 0, +0, 2461, 0, +0, 2592, 0, +0, 2723, 0, +0, 2855, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +0, 395, 624, +0, 418, 600, +0, 448, 565, +0, 484, 515, +0, 529, 437, +0, 583, 307, +0, 646, 42, +0, 718, 0, +0, 800, 0, +0, 891, 0, +0, 989, 0, +0, 1094, 0, +0, 1205, 0, +0, 1321, 0, +0, 1440, 0, +0, 1562, 0, +0, 1687, 0, +0, 1813, 0, +0, 1941, 0, +0, 2070, 0, +0, 2200, 0, +0, 2330, 0, +0, 2461, 0, +0, 2592, 0, +0, 2723, 0, +0, 2855, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +0, 406, 669, +0, 428, 647, +0, 457, 616, +0, 493, 571, +0, 537, 503, +0, 590, 393, +0, 652, 186, +0, 724, 0, +0, 805, 0, +0, 894, 0, +0, 992, 0, +0, 1097, 0, +0, 1207, 0, +0, 1322, 0, +0, 1441, 0, +0, 1563, 0, +0, 1688, 0, +0, 1814, 0, +0, 1942, 0, +0, 2070, 0, +0, 2200, 0, +0, 2330, 0, +0, 2461, 0, +0, 2592, 0, +0, 2723, 0, +0, 2855, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +247, 420, 722, +170, 442, 703, +41, 470, 676, +0, 505, 637, +0, 547, 579, +0, 599, 487, +0, 660, 327, +0, 731, 0, +0, 811, 0, +0, 899, 0, +0, 996, 0, +0, 1100, 0, +0, 1210, 0, +0, 1324, 0, +0, 1443, 0, +0, 1564, 0, +0, 1688, 0, +0, 1815, 0, +0, 1942, 0, +0, 2071, 0, +0, 2200, 0, +0, 2330, 0, +0, 2461, 0, +0, 2592, 0, +0, 2723, 0, +0, 2855, 0, +0, 2986, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +519, 438, 786, +479, 459, 769, +418, 486, 745, +322, 520, 712, +149, 561, 663, +0, 611, 589, +0, 671, 465, +0, 740, 219, +0, 818, 0, +0, 906, 0, +0, 1001, 0, +0, 1104, 0, +0, 1213, 0, +0, 1327, 0, +0, 1445, 0, +0, 1566, 0, +0, 1690, 0, +0, 1815, 0, +0, 1943, 0, +0, 2071, 0, +0, 2201, 0, +0, 2331, 0, +0, 2461, 0, +0, 2592, 0, +0, 2723, 0, +0, 2855, 0, +0, 2987, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +734, 461, 858, +709, 481, 844, +673, 507, 824, +621, 539, 797, +540, 579, 756, +402, 627, 697, +110, 685, 602, +0, 752, 434, +0, 828, 18, +0, 914, 0, +0, 1008, 0, +0, 1109, 0, +0, 1217, 0, +0, 1330, 0, +0, 1447, 0, +0, 1568, 0, +0, 1691, 0, +0, 1817, 0, +0, 1944, 0, +0, 2072, 0, +0, 2201, 0, +0, 2331, 0, +0, 2462, 0, +0, 2592, 0, +0, 2724, 0, +0, 2855, 0, +0, 2987, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +919, 490, 940, +903, 509, 929, +880, 533, 912, +847, 563, 889, +800, 601, 857, +727, 647, 810, +607, 703, 738, +373, 767, 619, +0, 842, 388, +0, 925, 0, +0, 1017, 0, +0, 1116, 0, +0, 1223, 0, +0, 1334, 0, +0, 1451, 0, +0, 1570, 0, +0, 1693, 0, +0, 1818, 0, +0, 1945, 0, +0, 2073, 0, +0, 2202, 0, +0, 2332, 0, +0, 2462, 0, +0, 2593, 0, +0, 2724, 0, +0, 2855, 0, +0, 2987, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1087, 526, 1031, +1076, 544, 1021, +1061, 566, 1008, +1039, 594, 990, +1008, 630, 964, +964, 673, 927, +896, 726, 872, +787, 787, 787, +582, 859, 641, +0, 939, 318, +0, 1029, 0, +0, 1126, 0, +0, 1230, 0, +0, 1340, 0, +0, 1455, 0, +0, 1574, 0, +0, 1696, 0, +0, 1820, 0, +0, 1946, 0, +0, 2074, 0, +0, 2203, 0, +0, 2332, 0, +0, 2462, 0, +0, 2593, 0, +0, 2724, 0, +0, 2855, 0, +0, 2987, 0, +0, 3119, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1245, 570, 1130, +1237, 586, 1122, +1226, 607, 1111, +1211, 633, 1097, +1190, 665, 1076, +1161, 706, 1048, +1118, 755, 1006, +1055, 813, 945, +952, 880, 846, +765, 958, 669, +245, 1044, 205, +0, 1138, 0, +0, 1240, 0, +0, 1348, 0, +0, 1461, 0, +0, 1578, 0, +0, 1699, 0, +0, 1823, 0, +0, 1948, 0, +0, 2075, 0, +0, 2204, 0, +0, 2333, 0, +0, 2463, 0, +0, 2594, 0, +0, 2724, 0, +0, 2856, 0, +0, 2987, 0, +0, 3119, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1395, 623, 1235, +1389, 638, 1229, +1381, 656, 1220, +1371, 679, 1209, +1356, 709, 1193, +1336, 746, 1171, +1308, 791, 1140, +1267, 845, 1095, +1205, 908, 1026, +1107, 981, 915, +932, 1063, 703, +477, 1154, 0, +0, 1253, 0, +0, 1358, 0, +0, 1469, 0, +0, 1585, 0, +0, 1704, 0, +0, 1826, 0, +0, 1951, 0, +0, 2077, 0, +0, 2205, 0, +0, 2334, 0, +0, 2464, 0, +0, 2594, 0, +0, 2725, 0, +0, 2856, 0, +0, 2987, 0, +0, 3119, 0, +0, 3251, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1540, 686, 1346, +1536, 698, 1341, +1530, 715, 1334, +1522, 735, 1326, +1512, 762, 1313, +1498, 794, 1297, +1478, 835, 1273, +1450, 884, 1240, +1410, 943, 1191, +1351, 1011, 1116, +1256, 1088, 993, +1088, 1174, 745, +672, 1269, 0, +0, 1371, 0, +0, 1479, 0, +0, 1593, 0, +0, 1710, 0, +0, 1831, 0, +0, 1955, 0, +0, 2080, 0, +0, 2207, 0, +0, 2336, 0, +0, 2465, 0, +0, 2595, 0, +0, 2726, 0, +0, 2857, 0, +0, 2988, 0, +0, 3119, 0, +0, 3251, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1681, 758, 1461, +1678, 769, 1458, +1674, 783, 1453, +1669, 801, 1446, +1661, 823, 1436, +1651, 852, 1424, +1637, 888, 1406, +1618, 932, 1381, +1590, 985, 1346, +1551, 1047, 1295, +1492, 1119, 1215, +1400, 1200, 1079, +1237, 1290, 797, +846, 1388, 0, +0, 1493, 0, +0, 1603, 0, +0, 1718, 0, +0, 1837, 0, +0, 1959, 0, +0, 2084, 0, +0, 2210, 0, +0, 2338, 0, +0, 2467, 0, +0, 2596, 0, +0, 2726, 0, +0, 2857, 0, +0, 2988, 0, +0, 3120, 0, +0, 3251, 0, +0, 3383, 0, +0, 3514, 0, +0, 3646, 0, +1820, 840, 1581, +1818, 849, 1578, +1815, 860, 1574, +1811, 875, 1569, +1806, 895, 1562, +1798, 920, 1552, +1788, 951, 1539, +1774, 989, 1521, +1755, 1036, 1495, +1728, 1092, 1458, +1689, 1158, 1404, +1632, 1233, 1319, +1541, 1317, 1174, +1382, 1410, 857, +1007, 1510, 0, +0, 1617, 0, +0, 1729, 0, +0, 1846, 0, +0, 1966, 0, +0, 2089, 0, +0, 2214, 0, +0, 2341, 0, +0, 2469, 0, +0, 2598, 0, +0, 2728, 0, +0, 2858, 0, +0, 2989, 0, +0, 3120, 0, +0, 3251, 0, +0, 3383, 0, +0, 3515, 0, +0, 3646, 0, +1958, 930, 1703, +1956, 937, 1701, +1954, 947, 1698, +1951, 959, 1694, +1947, 976, 1689, +1941, 996, 1681, +1934, 1023, 1671, +1924, 1056, 1658, +1910, 1097, 1639, +1891, 1146, 1613, +1865, 1205, 1575, +1826, 1273, 1518, +1769, 1351, 1430, +1679, 1437, 1277, +1523, 1532, 927, +1160, 1635, 0, +0, 1743, 0, +0, 1856, 0, +0, 1974, 0, +0, 2095, 0, +0, 2219, 0, +0, 2344, 0, +0, 2471, 0, +0, 2600, 0, +0, 2729, 0, +0, 2859, 0, +0, 2990, 0, +0, 3121, 0, +0, 3252, 0, +0, 3383, 0, +0, 3515, 0, +0, 3647, 0, +2094, 1028, 1828, +2092, 1034, 1826, +2091, 1042, 1824, +2088, 1052, 1821, +2086, 1065, 1817, +2082, 1082, 1811, +2076, 1104, 1804, +2069, 1132, 1794, +2059, 1167, 1780, +2045, 1210, 1761, +2026, 1261, 1733, +2000, 1322, 1695, +1962, 1392, 1637, +1905, 1472, 1545, +1816, 1561, 1385, +1662, 1657, 1007, +1307, 1761, 0, +0, 1870, 0, +0, 1985, 0, +0, 2103, 0, +0, 2225, 0, +0, 2349, 0, +0, 2475, 0, +0, 2603, 0, +0, 2731, 0, +0, 2861, 0, +0, 2991, 0, +0, 3122, 0, +0, 3253, 0, +0, 3384, 0, +0, 3515, 0, +0, 3647, 0, +2228, 1133, 1954, +2228, 1138, 1953, +2226, 1144, 1951, +2225, 1152, 1949, +2223, 1163, 1946, +2220, 1176, 1942, +2216, 1194, 1936, +2210, 1217, 1929, +2203, 1246, 1918, +2193, 1282, 1904, +2180, 1327, 1885, +2161, 1380, 1857, +2134, 1442, 1817, +2096, 1514, 1758, +2040, 1596, 1665, +1952, 1686, 1499, +1799, 1784, 1095, +1449, 1888, 0, +0, 1999, 0, +0, 2114, 0, +0, 2233, 0, +0, 2356, 0, +0, 2480, 0, +0, 2606, 0, +0, 2734, 0, +0, 2863, 0, +0, 2992, 0, +0, 3123, 0, +0, 3253, 0, +0, 3384, 0, +0, 3516, 0, +0, 3647, 0, +2363, 1243, 2082, +2362, 1247, 2081, +2361, 1252, 2080, +2360, 1258, 2078, +2358, 1267, 2076, +2356, 1278, 2073, +2353, 1292, 2068, +2349, 1311, 2063, +2344, 1335, 2055, +2337, 1365, 2045, +2327, 1402, 2031, +2313, 1447, 2011, +2294, 1502, 1983, +2268, 1565, 1942, +2230, 1639, 1882, +2174, 1721, 1787, +2087, 1813, 1617, +1934, 1912, 1191, +1589, 2017, 0, +0, 2129, 0, +0, 2244, 0, +0, 2364, 0, +0, 2486, 0, +0, 2611, 0, +0, 2738, 0, +0, 2866, 0, +0, 2995, 0, +0, 3124, 0, +0, 3255, 0, +0, 3385, 0, +0, 3516, 0, +0, 3648, 0, +2496, 1359, 2211, +2496, 1362, 2210, +2495, 1365, 2209, +2494, 1370, 2208, +2493, 1377, 2206, +2491, 1386, 2204, +2489, 1397, 2201, +2486, 1412, 2196, +2482, 1431, 2191, +2477, 1455, 2183, +2470, 1486, 2173, +2460, 1524, 2158, +2446, 1570, 2138, +2428, 1626, 2110, +2402, 1691, 2069, +2364, 1765, 2008, +2308, 1849, 1911, +2221, 1941, 1738, +2069, 2041, 1295, +1727, 2147, 0, +0, 2259, 0, +0, 2375, 0, +0, 2495, 0, +0, 2618, 0, +0, 2743, 0, +0, 2869, 0, +0, 2997, 0, +0, 3126, 0, +0, 3256, 0, +0, 3387, 0, +0, 3517, 0, +0, 3648, 0, +2630, 1478, 2340, +2629, 1480, 2340, +2629, 1483, 2339, +2628, 1487, 2338, +2627, 1492, 2337, +2626, 1499, 2335, +2624, 1508, 2333, +2622, 1519, 2330, +2619, 1535, 2326, +2615, 1554, 2320, +2610, 1579, 2312, +2603, 1610, 2302, +2593, 1649, 2287, +2579, 1696, 2267, +2561, 1752, 2238, +2535, 1818, 2197, +2497, 1893, 2136, +2441, 1977, 2038, +2354, 2070, 1861, +2203, 2170, 1404, +1864, 2277, 0, +0, 2389, 0, +0, 2506, 0, +0, 2626, 0, +0, 2749, 0, +0, 2874, 0, +0, 3001, 0, +0, 3129, 0, +0, 3258, 0, +0, 3388, 0, +0, 3519, 0, +0, 3649, 0, +2763, 1600, 2471, +2762, 1602, 2470, +2762, 1604, 2470, +2761, 1607, 2469, +2761, 1611, 2468, +2760, 1616, 2467, +2759, 1623, 2465, +2757, 1632, 2463, +2755, 1644, 2460, +2752, 1659, 2455, +2748, 1679, 2450, +2743, 1704, 2442, +2735, 1736, 2431, +2726, 1775, 2417, +2712, 1823, 2396, +2694, 1880, 2368, +2667, 1946, 2326, +2630, 2022, 2264, +2574, 2107, 2165, +2487, 2200, 1987, +2337, 2301, 1518, +1999, 2408, 0, +0, 2520, 0, +0, 2637, 0, +0, 2758, 0, +0, 2881, 0, +0, 3006, 0, +0, 3133, 0, +0, 3261, 0, +0, 3390, 0, +0, 3520, 0, +0, 3651, 0, +2895, 1725, 2601, +2895, 1726, 2601, +2895, 1728, 2601, +2894, 1730, 2600, +2894, 1733, 2599, +2893, 1737, 2599, +2892, 1742, 2597, +2891, 1749, 2595, +2890, 1758, 2593, +2887, 1770, 2590, +2884, 1786, 2586, +2881, 1806, 2580, +2875, 1832, 2572, +2868, 1864, 2561, +2858, 1903, 2547, +2845, 1951, 2526, +2826, 2008, 2498, +2800, 2075, 2456, +2763, 2151, 2394, +2707, 2237, 2294, +2620, 2330, 2114, +2470, 2431, 1637, +2133, 2539, 0, +0, 2652, 0, +0, 2769, 0, +0, 2889, 0, +0, 3012, 0, +0, 3138, 0, +0, 3265, 0, +0, 3393, 0, +0, 3522, 0, +0, 3652, 0, +3028, 1851, 2733, +3028, 1852, 2732, +3027, 1853, 2732, +3027, 1855, 2732, +3027, 1857, 2731, +3026, 1860, 2730, +3026, 1864, 2729, +3025, 1870, 2728, +3024, 1877, 2726, +3022, 1886, 2724, +3020, 1898, 2721, +3017, 1914, 2717, +3013, 1934, 2711, +3008, 1960, 2703, +3000, 1992, 2692, +2991, 2032, 2677, +2977, 2080, 2657, +2959, 2138, 2628, +2933, 2205, 2586, +2895, 2282, 2524, +2840, 2367, 2424, +2753, 2461, 2243, +2603, 2562, 1758, +2267, 2670, 0, +0, 2783, 0, +0, 2900, 0, +0, 3021, 0, +0, 3144, 0, +0, 3270, 0, +0, 3397, 0, +0, 3525, 0, +0, 3654, 0, +3160, 1979, 2864, +3160, 1979, 2864, +3160, 1980, 2863, +3160, 1982, 2863, +3160, 1983, 2863, +3159, 1986, 2862, +3159, 1989, 2861, +3158, 1993, 2861, +3157, 1998, 2859, +3156, 2005, 2857, +3154, 2015, 2855, +3152, 2027, 2852, +3149, 2043, 2848, +3145, 2063, 2842, +3140, 2089, 2834, +3133, 2122, 2823, +3123, 2162, 2809, +3110, 2210, 2788, +3091, 2268, 2759, +3065, 2335, 2717, +3028, 2412, 2654, +2972, 2498, 2554, +2886, 2592, 2372, +2736, 2694, 1882, +2401, 2802, 0, +0, 2915, 0, +0, 3032, 0, +0, 3153, 0, +0, 3276, 0, +0, 3402, 0, +0, 3529, 0, +0, 3657, 0, +3293, 2107, 2995, +3293, 2108, 2995, +3292, 2109, 2995, +3292, 2110, 2995, +3292, 2111, 2995, +3292, 2113, 2994, +3291, 2115, 2994, +3291, 2118, 2993, +3290, 2122, 2992, +3289, 2128, 2991, +3288, 2135, 2989, +3287, 2144, 2986, +3284, 2157, 2983, +3282, 2173, 2979, +3278, 2193, 2973, +3272, 2219, 2965, +3265, 2252, 2955, +3255, 2292, 2940, +3242, 2341, 2919, +3223, 2399, 2890, +3197, 2466, 2848, +3160, 2543, 2785, +3104, 2629, 2685, +3018, 2724, 2502, +2868, 2825, 2008, +2534, 2933, 0, +0, 3046, 0, +0, 3164, 0, +0, 3285, 0, +0, 3408, 0, +0, 3534, 0, +0, 3661, 0, +3425, 2237, 3127, +3425, 2238, 3127, +3425, 2238, 3127, +3425, 2239, 3127, +3425, 2240, 3126, +3424, 2241, 3126, +3424, 2243, 3126, +3424, 2245, 3125, +3423, 2248, 3124, +3423, 2252, 3123, +3422, 2258, 3122, +3420, 2265, 3120, +3419, 2275, 3118, +3417, 2287, 3115, +3414, 2303, 3111, +3410, 2323, 3105, +3405, 2350, 3097, +3397, 2382, 3086, +3388, 2423, 3071, +3374, 2472, 3051, +3356, 2530, 3022, +3330, 2597, 2980, +3292, 2675, 2917, +3237, 2761, 2816, +3150, 2855, 2633, +3001, 2957, 2136, +2666, 3065, 0, +0, 3178, 0, +0, 3296, 0, +0, 3417, 0, +0, 3540, 0, +0, 3666, 0, +3557, 2367, 3259, +3557, 2368, 3259, +3557, 2368, 3259, +3557, 2369, 3259, +3557, 2369, 3258, +3557, 2370, 3258, +3557, 2372, 3258, +3556, 2373, 3257, +3556, 2376, 3257, +3555, 2379, 3256, +3555, 2383, 3255, +3554, 2389, 3254, +3553, 2396, 3252, +3551, 2405, 3250, +3549, 2418, 3247, +3546, 2434, 3242, +3542, 2454, 3236, +3537, 2480, 3229, +3530, 2513, 3218, +3520, 2554, 3203, +3506, 2603, 3182, +3488, 2661, 3153, +3462, 2729, 3111, +3424, 2806, 3048, +3369, 2892, 2947, +3283, 2987, 2763, +3133, 3089, 2264, +2799, 3197, 0, +0, 3310, 0, +0, 3428, 0, +0, 3548, 0, +0, 3672, 0, +3689, 2498, 3391, +3689, 2498, 3391, +3689, 2499, 3391, +3689, 2499, 3390, +3689, 2500, 3390, +3689, 2500, 3390, +3689, 2501, 3390, +3689, 2503, 3390, +3688, 2504, 3389, +3688, 2507, 3389, +3688, 2510, 3388, +3687, 2514, 3387, +3686, 2520, 3386, +3685, 2527, 3384, +3683, 2536, 3382, +3681, 2549, 3378, +3678, 2565, 3374, +3674, 2585, 3368, +3669, 2612, 3360, +3662, 2644, 3350, +3652, 2685, 3335, +3639, 2734, 3314, +3620, 2792, 3285, +3594, 2860, 3243, +3557, 2938, 3180, +3501, 3024, 3079, +3415, 3119, 2895, +3265, 3221, 2394, +2932, 3329, 0, +0, 3442, 0, +0, 3560, 0, +0, 3681, 0, +3822, 2629, 3523, +3822, 2629, 3523, +3822, 2630, 3523, +3822, 2630, 3522, +3821, 2630, 3522, +3821, 2631, 3522, +3821, 2632, 3522, +3821, 2633, 3522, +3821, 2634, 3522, +3821, 2636, 3521, +3820, 2638, 3521, +3820, 2641, 3520, +3819, 2645, 3519, +3818, 2651, 3518, +3817, 2658, 3516, +3815, 2668, 3513, +3813, 2680, 3510, +3810, 2696, 3506, +3806, 2717, 3500, +3801, 2743, 3492, +3794, 2776, 3481, +3784, 2817, 3467, +3771, 2866, 3446, +3752, 2924, 3417, +3726, 2992, 3375, +3689, 3069, 3312, +3633, 3156, 3210, +3547, 3251, 3026, +3398, 3353, 2524, +3064, 3461, 0, +0, 3574, 0, +0, 3692, 0, +3954, 2760, 3655, +3954, 2761, 3655, +3954, 2761, 3654, +3954, 2761, 3654, +3954, 2761, 3654, +3954, 2762, 3654, +3953, 2762, 3654, +3953, 2763, 3654, +3953, 2764, 3654, +3953, 2765, 3653, +3953, 2767, 3653, +3952, 2769, 3652, +3952, 2773, 3652, +3951, 2777, 3651, +3950, 2782, 3649, +3949, 2790, 3648, +3947, 2799, 3645, +3945, 2812, 3642, +3942, 2828, 3638, +3939, 2848, 3632, +3933, 2875, 3624, +3926, 2908, 3613, +3916, 2948, 3598, +3903, 2997, 3578, +3884, 3056, 3549, +3858, 3124, 3507, +3821, 3201, 3443, +3766, 3288, 3342, +3679, 3383, 3158, +3530, 3485, 2655, +3196, 3593, 0, +0, 3706, 0, +4086, 2892, 3787, +4086, 2892, 3787, +4086, 2892, 3787, +4086, 2892, 3786, +4086, 2893, 3786, +4086, 2893, 3786, +4086, 2893, 3786, +4086, 2894, 3786, +4086, 2895, 3786, +4085, 2896, 3786, +4085, 2897, 3785, +4085, 2899, 3785, +4084, 2901, 3784, +4084, 2904, 3784, +4083, 2908, 3783, +4082, 2914, 3781, +4081, 2921, 3780, +4080, 2931, 3777, +4077, 2943, 3774, +4075, 2959, 3770, +4071, 2980, 3764, +4065, 3006, 3756, +4058, 3039, 3745, +4048, 3080, 3730, +4035, 3129, 3710, +4016, 3188, 3681, +3990, 3256, 3639, +3953, 3333, 3575, +3898, 3420, 3474, +3811, 3515, 3289, +3662, 3617, 2786, +3329, 3725, 0, +4095, 3024, 3919, +4095, 3024, 3919, +4095, 3024, 3919, +4095, 3024, 3919, +4095, 3024, 3918, +4095, 3024, 3918, +4095, 3025, 3918, +4095, 3025, 3918, +4095, 3026, 3918, +4095, 3026, 3918, +4095, 3027, 3918, +4095, 3029, 3917, +4095, 3030, 3917, +4095, 3033, 3916, +4095, 3036, 3916, +4095, 3040, 3915, +4095, 3046, 3913, +4095, 3053, 3912, +4095, 3062, 3909, +4095, 3075, 3906, +4095, 3091, 3902, +4095, 3112, 3896, +4095, 3138, 3888, +4095, 3171, 3877, +4095, 3212, 3862, +4095, 3261, 3842, +4095, 3320, 3813, +4095, 3388, 3771, +4085, 3465, 3707, +4030, 3552, 3606, +3943, 3647, 3421, +3794, 3749, 2917, +4095, 3155, 4051, +4095, 3155, 4051, +4095, 3155, 4051, +4095, 3156, 4051, +4095, 3156, 4051, +4095, 3156, 4051, +4095, 3156, 4050, +4095, 3156, 4050, +4095, 3157, 4050, +4095, 3157, 4050, +4095, 3158, 4050, +4095, 3159, 4050, +4095, 3161, 4049, +4095, 3162, 4049, +4095, 3165, 4048, +4095, 3168, 4048, +4095, 3172, 4047, +4095, 3177, 4045, +4095, 3185, 4044, +4095, 3194, 4041, +4095, 3207, 4038, +4095, 3223, 4034, +4095, 3244, 4028, +4095, 3270, 4020, +4095, 3303, 4009, +4095, 3344, 3994, +4095, 3393, 3974, +4095, 3452, 3945, +4095, 3520, 3903, +4095, 3597, 3839, +4095, 3684, 3738, +4076, 3779, 3553, +0, 494, 709, +0, 513, 690, +0, 537, 662, +0, 567, 621, +0, 604, 561, +0, 650, 466, +0, 705, 295, +0, 770, 0, +0, 843, 0, +0, 927, 0, +0, 1018, 0, +0, 1118, 0, +0, 1223, 0, +0, 1335, 0, +0, 1451, 0, +0, 1571, 0, +0, 1693, 0, +0, 1818, 0, +0, 1945, 0, +0, 2073, 0, +0, 2202, 0, +0, 2332, 0, +0, 2462, 0, +0, 2593, 0, +0, 2724, 0, +0, 2855, 0, +0, 2987, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +0, 500, 738, +0, 519, 719, +0, 543, 693, +0, 572, 655, +0, 610, 600, +0, 655, 513, +0, 709, 363, +0, 773, 25, +0, 846, 0, +0, 929, 0, +0, 1020, 0, +0, 1119, 0, +0, 1225, 0, +0, 1336, 0, +0, 1452, 0, +0, 1571, 0, +0, 1694, 0, +0, 1819, 0, +0, 1945, 0, +0, 2073, 0, +0, 2202, 0, +0, 2332, 0, +0, 2462, 0, +0, 2593, 0, +0, 2724, 0, +0, 2855, 0, +0, 2987, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +0, 509, 773, +0, 527, 756, +0, 550, 732, +0, 580, 697, +0, 616, 647, +0, 661, 569, +0, 715, 440, +0, 778, 174, +0, 850, 0, +0, 932, 0, +0, 1023, 0, +0, 1121, 0, +0, 1227, 0, +0, 1337, 0, +0, 1453, 0, +0, 1572, 0, +0, 1694, 0, +0, 1819, 0, +0, 1946, 0, +0, 2073, 0, +0, 2202, 0, +0, 2332, 0, +0, 2462, 0, +0, 2593, 0, +0, 2724, 0, +0, 2855, 0, +0, 2987, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +66, 520, 816, +0, 538, 801, +0, 561, 779, +0, 589, 748, +0, 625, 703, +0, 669, 635, +0, 722, 525, +0, 784, 318, +0, 856, 0, +0, 937, 0, +0, 1027, 0, +0, 1124, 0, +0, 1229, 0, +0, 1339, 0, +0, 1454, 0, +0, 1573, 0, +0, 1695, 0, +0, 1820, 0, +0, 1946, 0, +0, 2074, 0, +0, 2202, 0, +0, 2332, 0, +0, 2462, 0, +0, 2593, 0, +0, 2724, 0, +0, 2855, 0, +0, 2987, 0, +0, 3118, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +429, 534, 868, +379, 552, 854, +302, 574, 835, +173, 602, 808, +0, 637, 769, +0, 680, 711, +0, 731, 620, +0, 792, 459, +0, 863, 78, +0, 943, 0, +0, 1031, 0, +0, 1128, 0, +0, 1232, 0, +0, 1342, 0, +0, 1456, 0, +0, 1575, 0, +0, 1696, 0, +0, 1821, 0, +0, 1947, 0, +0, 2074, 0, +0, 2203, 0, +0, 2332, 0, +0, 2463, 0, +0, 2593, 0, +0, 2724, 0, +0, 2855, 0, +0, 2987, 0, +0, 3119, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +680, 553, 930, +652, 570, 918, +611, 591, 901, +550, 618, 878, +454, 652, 844, +281, 693, 796, +0, 743, 721, +0, 803, 597, +0, 872, 351, +0, 950, 0, +0, 1038, 0, +0, 1133, 0, +0, 1236, 0, +0, 1345, 0, +0, 1459, 0, +0, 1577, 0, +0, 1698, 0, +0, 1822, 0, +0, 1948, 0, +0, 2075, 0, +0, 2203, 0, +0, 2333, 0, +0, 2463, 0, +0, 2593, 0, +0, 2724, 0, +0, 2856, 0, +0, 2987, 0, +0, 3119, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +884, 577, 1001, +866, 593, 990, +841, 613, 976, +806, 639, 956, +753, 671, 929, +672, 711, 889, +534, 759, 829, +243, 817, 734, +0, 884, 566, +0, 960, 150, +0, 1046, 0, +0, 1140, 0, +0, 1241, 0, +0, 1349, 0, +0, 1462, 0, +0, 1579, 0, +0, 1700, 0, +0, 1823, 0, +0, 1949, 0, +0, 2076, 0, +0, 2204, 0, +0, 2333, 0, +0, 2463, 0, +0, 2594, 0, +0, 2725, 0, +0, 2856, 0, +0, 2987, 0, +0, 3119, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1063, 607, 1081, +1051, 622, 1072, +1035, 641, 1061, +1012, 665, 1044, +979, 696, 1022, +932, 733, 989, +859, 780, 942, +739, 835, 870, +505, 899, 751, +0, 974, 520, +0, 1057, 0, +0, 1149, 0, +0, 1249, 0, +0, 1355, 0, +0, 1466, 0, +0, 1583, 0, +0, 1702, 0, +0, 1825, 0, +0, 1950, 0, +0, 2077, 0, +0, 2205, 0, +0, 2334, 0, +0, 2464, 0, +0, 2594, 0, +0, 2725, 0, +0, 2856, 0, +0, 2987, 0, +0, 3119, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1228, 644, 1170, +1219, 658, 1163, +1208, 676, 1153, +1193, 698, 1140, +1171, 727, 1122, +1140, 762, 1096, +1096, 805, 1059, +1029, 858, 1005, +919, 919, 919, +715, 991, 773, +63, 1071, 450, +0, 1161, 0, +0, 1258, 0, +0, 1362, 0, +0, 1472, 0, +0, 1587, 0, +0, 1706, 0, +0, 1828, 0, +0, 1952, 0, +0, 2078, 0, +0, 2206, 0, +0, 2335, 0, +0, 2464, 0, +0, 2594, 0, +0, 2725, 0, +0, 2856, 0, +0, 2987, 0, +0, 3119, 0, +0, 3251, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1383, 690, 1267, +1377, 702, 1262, +1369, 718, 1254, +1358, 739, 1243, +1343, 765, 1229, +1322, 798, 1208, +1293, 838, 1180, +1250, 887, 1139, +1187, 945, 1077, +1084, 1013, 978, +897, 1090, 801, +377, 1176, 337, +0, 1270, 0, +0, 1372, 0, +0, 1480, 0, +0, 1593, 0, +0, 1711, 0, +0, 1831, 0, +0, 1955, 0, +0, 2080, 0, +0, 2208, 0, +0, 2336, 0, +0, 2465, 0, +0, 2595, 0, +0, 2726, 0, +0, 2857, 0, +0, 2988, 0, +0, 3119, 0, +0, 3251, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1531, 745, 1371, +1527, 756, 1367, +1521, 770, 1361, +1513, 788, 1352, +1503, 812, 1341, +1488, 841, 1325, +1468, 878, 1303, +1440, 923, 1272, +1399, 977, 1227, +1337, 1040, 1158, +1239, 1113, 1047, +1064, 1195, 835, +609, 1286, 120, +0, 1385, 0, +0, 1490, 0, +0, 1601, 0, +0, 1717, 0, +0, 1836, 0, +0, 1958, 0, +0, 2083, 0, +0, 2210, 0, +0, 2337, 0, +0, 2466, 0, +0, 2596, 0, +0, 2726, 0, +0, 2857, 0, +0, 2988, 0, +0, 3119, 0, +0, 3251, 0, +0, 3383, 0, +0, 3514, 0, +0, 3646, 0, +1675, 809, 1481, +1672, 818, 1478, +1668, 831, 1473, +1662, 847, 1466, +1655, 867, 1458, +1644, 894, 1445, +1630, 927, 1429, +1610, 967, 1405, +1582, 1016, 1372, +1542, 1075, 1323, +1483, 1143, 1249, +1388, 1220, 1125, +1220, 1307, 878, +804, 1401, 0, +0, 1503, 0, +0, 1611, 0, +0, 1725, 0, +0, 1842, 0, +0, 1963, 0, +0, 2087, 0, +0, 2212, 0, +0, 2340, 0, +0, 2468, 0, +0, 2597, 0, +0, 2727, 0, +0, 2858, 0, +0, 2989, 0, +0, 3120, 0, +0, 3251, 0, +0, 3383, 0, +0, 3515, 0, +0, 3646, 0, +1816, 882, 1596, +1813, 890, 1593, +1810, 901, 1590, +1806, 915, 1585, +1801, 933, 1578, +1793, 955, 1569, +1783, 984, 1556, +1769, 1020, 1538, +1750, 1064, 1514, +1722, 1117, 1478, +1683, 1179, 1427, +1625, 1251, 1347, +1532, 1333, 1212, +1369, 1422, 929, +978, 1520, 0, +0, 1625, 0, +0, 1735, 0, +0, 1850, 0, +0, 1969, 0, +0, 2092, 0, +0, 2216, 0, +0, 2342, 0, +0, 2470, 0, +0, 2599, 0, +0, 2728, 0, +0, 2859, 0, +0, 2989, 0, +0, 3120, 0, +0, 3252, 0, +0, 3383, 0, +0, 3515, 0, +0, 3647, 0, +1954, 965, 1715, +1952, 972, 1713, +1950, 981, 1710, +1947, 992, 1706, +1943, 1007, 1701, +1938, 1027, 1694, +1930, 1052, 1684, +1920, 1083, 1671, +1906, 1121, 1653, +1887, 1168, 1627, +1860, 1224, 1590, +1821, 1290, 1536, +1764, 1365, 1452, +1673, 1449, 1307, +1514, 1542, 989, +1139, 1642, 0, +0, 1749, 0, +0, 1861, 0, +0, 1978, 0, +0, 2098, 0, +0, 2221, 0, +0, 2346, 0, +0, 2473, 0, +0, 2601, 0, +0, 2730, 0, +0, 2860, 0, +0, 2990, 0, +0, 3121, 0, +0, 3252, 0, +0, 3383, 0, +0, 3515, 0, +0, 3647, 0, +2091, 1056, 1837, +2090, 1062, 1835, +2088, 1069, 1833, +2086, 1079, 1830, +2083, 1091, 1826, +2079, 1108, 1821, +2073, 1129, 1813, +2066, 1155, 1803, +2056, 1188, 1790, +2042, 1229, 1771, +2023, 1278, 1745, +1997, 1337, 1707, +1958, 1405, 1650, +1901, 1483, 1562, +1812, 1570, 1409, +1655, 1664, 1059, +1292, 1767, 0, +0, 1875, 0, +0, 1988, 0, +0, 2106, 0, +0, 2227, 0, +0, 2351, 0, +0, 2476, 0, +0, 2604, 0, +0, 2732, 0, +0, 2861, 0, +0, 2991, 0, +0, 3122, 0, +0, 3253, 0, +0, 3384, 0, +0, 3515, 0, +0, 3647, 0, +2227, 1156, 1961, +2226, 1160, 1960, +2224, 1166, 1958, +2223, 1174, 1956, +2221, 1184, 1953, +2218, 1197, 1949, +2214, 1214, 1943, +2208, 1236, 1936, +2201, 1264, 1926, +2191, 1299, 1912, +2177, 1342, 1893, +2158, 1393, 1866, +2132, 1454, 1827, +2094, 1524, 1769, +2037, 1604, 1678, +1948, 1693, 1517, +1794, 1789, 1139, +1439, 1893, 0, +0, 2002, 0, +0, 2117, 0, +0, 2235, 0, +0, 2357, 0, +0, 2481, 0, +0, 2607, 0, +0, 2735, 0, +0, 2863, 0, +0, 2993, 0, +0, 3123, 0, +0, 3254, 0, +0, 3385, 0, +0, 3516, 0, +0, 3647, 0, +2361, 1261, 2087, +2361, 1265, 2086, +2360, 1270, 2085, +2358, 1276, 2083, +2357, 1284, 2081, +2355, 1295, 2078, +2352, 1309, 2074, +2348, 1327, 2068, +2342, 1349, 2061, +2335, 1378, 2050, +2325, 1415, 2036, +2312, 1459, 2017, +2293, 1512, 1989, +2266, 1574, 1949, +2228, 1646, 1890, +2172, 1728, 1797, +2084, 1818, 1631, +1931, 1916, 1227, +1581, 2021, 0, +0, 2131, 0, +0, 2246, 0, +0, 2365, 0, +0, 2488, 0, +0, 2612, 0, +0, 2738, 0, +0, 2866, 0, +0, 2995, 0, +0, 3125, 0, +0, 3255, 0, +0, 3386, 0, +0, 3517, 0, +0, 3648, 0, +2495, 1373, 2215, +2495, 1376, 2214, +2494, 1379, 2213, +2493, 1384, 2212, +2492, 1391, 2210, +2490, 1399, 2208, +2488, 1410, 2205, +2485, 1424, 2201, +2481, 1443, 2195, +2476, 1467, 2187, +2469, 1497, 2177, +2459, 1534, 2163, +2445, 1579, 2143, +2427, 1634, 2115, +2400, 1698, 2074, +2362, 1771, 2014, +2306, 1854, 1919, +2219, 1945, 1749, +2066, 2044, 1323, +1721, 2149, 0, +0, 2261, 0, +0, 2376, 0, +0, 2496, 0, +0, 2619, 0, +0, 2743, 0, +0, 2870, 0, +0, 2998, 0, +0, 3127, 0, +0, 3256, 0, +0, 3387, 0, +0, 3517, 0, +0, 3649, 0, +2629, 1489, 2343, +2628, 1491, 2343, +2628, 1494, 2342, +2627, 1497, 2341, +2626, 1503, 2340, +2625, 1509, 2338, +2623, 1518, 2336, +2621, 1529, 2333, +2618, 1544, 2329, +2614, 1563, 2323, +2609, 1588, 2315, +2602, 1618, 2305, +2592, 1656, 2290, +2579, 1703, 2270, +2560, 1758, 2242, +2534, 1823, 2201, +2496, 1897, 2140, +2440, 1981, 2043, +2353, 2073, 1870, +2201, 2173, 1427, +1859, 2279, 0, +0, 2391, 0, +0, 2507, 0, +0, 2627, 0, +0, 2750, 0, +0, 2875, 0, +0, 3001, 0, +0, 3129, 0, +0, 3258, 0, +0, 3388, 0, +0, 3519, 0, +0, 3649, 0, +2762, 1608, 2473, +2762, 1610, 2473, +2761, 1612, 2472, +2761, 1615, 2471, +2760, 1619, 2470, +2759, 1624, 2469, +2758, 1631, 2467, +2756, 1640, 2465, +2754, 1652, 2462, +2751, 1667, 2458, +2747, 1686, 2452, +2742, 1711, 2444, +2735, 1742, 2434, +2725, 1781, 2419, +2712, 1828, 2399, +2693, 1884, 2370, +2667, 1950, 2329, +2629, 2025, 2268, +2573, 2109, 2170, +2486, 2202, 1993, +2335, 2302, 1536, +1996, 2409, 0, +0, 2521, 0, +0, 2638, 0, +0, 2758, 0, +0, 2881, 0, +0, 3006, 0, +0, 3133, 0, +0, 3261, 0, +0, 3390, 0, +0, 3520, 0, +0, 3651, 0, +2895, 1731, 2603, +2895, 1732, 2603, +2894, 1734, 2602, +2894, 1736, 2602, +2893, 1739, 2601, +2893, 1743, 2600, +2892, 1748, 2599, +2891, 1755, 2597, +2889, 1764, 2595, +2887, 1776, 2592, +2884, 1791, 2587, +2880, 1811, 2582, +2875, 1836, 2574, +2868, 1868, 2563, +2858, 1907, 2549, +2844, 1955, 2528, +2826, 2012, 2500, +2800, 2078, 2458, +2762, 2154, 2396, +2706, 2239, 2298, +2619, 2332, 2119, +2469, 2433, 1651, +2131, 2540, 0, +0, 2652, 0, +0, 2769, 0, +0, 2890, 0, +0, 3013, 0, +0, 3138, 0, +0, 3265, 0, +0, 3393, 0, +0, 3522, 0, +0, 3652, 0, +3028, 1856, 2734, +3027, 1857, 2734, +3027, 1858, 2733, +3027, 1860, 2733, +3027, 1862, 2732, +3026, 1865, 2732, +3025, 1869, 2731, +3024, 1874, 2729, +3023, 1881, 2728, +3022, 1890, 2725, +3019, 1902, 2722, +3017, 1918, 2718, +3013, 1938, 2712, +3007, 1964, 2704, +3000, 1996, 2694, +2990, 2035, 2679, +2977, 2083, 2658, +2958, 2140, 2630, +2932, 2207, 2588, +2895, 2283, 2526, +2839, 2369, 2426, +2752, 2462, 2246, +2602, 2563, 1769, +2265, 2671, 0, +0, 2784, 0, +0, 2901, 0, +0, 3021, 0, +0, 3144, 0, +0, 3270, 0, +0, 3397, 0, +0, 3525, 0, +0, 3654, 0, +3160, 1982, 2865, +3160, 1983, 2865, +3160, 1984, 2864, +3160, 1985, 2864, +3159, 1987, 2864, +3159, 1989, 2863, +3158, 1992, 2862, +3158, 1996, 2861, +3157, 2002, 2860, +3156, 2009, 2858, +3154, 2018, 2856, +3152, 2030, 2853, +3149, 2046, 2849, +3145, 2066, 2843, +3140, 2092, 2835, +3133, 2124, 2824, +3123, 2164, 2810, +3109, 2212, 2789, +3091, 2270, 2760, +3065, 2337, 2719, +3027, 2414, 2656, +2972, 2499, 2556, +2885, 2593, 2375, +2735, 2695, 1890, +2399, 2802, 0, +0, 2915, 0, +0, 3032, 0, +0, 3153, 0, +0, 3276, 0, +0, 3402, 0, +0, 3529, 0, +0, 3657, 0, +3292, 2110, 2996, +3292, 2111, 2996, +3292, 2111, 2996, +3292, 2112, 2996, +3292, 2114, 2995, +3292, 2116, 2995, +3291, 2118, 2994, +3291, 2121, 2994, +3290, 2125, 2993, +3289, 2130, 2991, +3288, 2138, 2990, +3286, 2147, 2987, +3284, 2159, 2984, +3281, 2175, 2980, +3277, 2195, 2974, +3272, 2221, 2966, +3265, 2254, 2955, +3255, 2294, 2941, +3242, 2342, 2920, +3223, 2400, 2891, +3197, 2467, 2849, +3160, 2544, 2787, +3104, 2630, 2686, +3018, 2724, 2504, +2868, 2826, 2015, +2533, 2934, 0, +0, 3047, 0, +0, 3164, 0, +0, 3285, 0, +0, 3408, 0, +0, 3534, 0, +0, 3661, 0, +3425, 2239, 3128, +3425, 2240, 3127, +3425, 2240, 3127, +3425, 2241, 3127, +3424, 2242, 3127, +3424, 2243, 3127, +3424, 2245, 3126, +3424, 2247, 3126, +3423, 2250, 3125, +3422, 2254, 3124, +3421, 2260, 3123, +3420, 2267, 3121, +3419, 2276, 3119, +3417, 2289, 3115, +3414, 2305, 3111, +3410, 2325, 3105, +3404, 2351, 3097, +3397, 2384, 3087, +3387, 2424, 3072, +3374, 2473, 3051, +3355, 2531, 3022, +3329, 2598, 2980, +3292, 2675, 2918, +3237, 2761, 2817, +3150, 2856, 2634, +3000, 2957, 2141, +2666, 3065, 0, +0, 3178, 0, +0, 3296, 0, +0, 3417, 0, +0, 3540, 0, +0, 3666, 0, +3557, 2369, 3259, +3557, 2369, 3259, +3557, 2370, 3259, +3557, 2370, 3259, +3557, 2371, 3259, +3557, 2372, 3259, +3556, 2373, 3258, +3556, 2375, 3258, +3556, 2377, 3257, +3555, 2380, 3257, +3555, 2385, 3256, +3554, 2390, 3254, +3553, 2397, 3252, +3551, 2407, 3250, +3549, 2419, 3247, +3546, 2435, 3243, +3542, 2456, 3237, +3537, 2482, 3229, +3529, 2514, 3218, +3520, 2555, 3203, +3506, 2604, 3183, +3488, 2662, 3154, +3462, 2729, 3112, +3424, 2807, 3049, +3369, 2893, 2948, +3282, 2987, 2765, +3133, 3089, 2268, +2799, 3197, 0, +0, 3310, 0, +0, 3428, 0, +0, 3549, 0, +0, 3672, 0, +3689, 2499, 3391, +3689, 2499, 3391, +3689, 2500, 3391, +3689, 2500, 3391, +3689, 2501, 3391, +3689, 2501, 3390, +3689, 2502, 3390, +3689, 2504, 3390, +3688, 2506, 3390, +3688, 2508, 3389, +3687, 2511, 3388, +3687, 2515, 3387, +3686, 2521, 3386, +3685, 2528, 3384, +3683, 2537, 3382, +3681, 2550, 3379, +3678, 2566, 3374, +3674, 2586, 3369, +3669, 2613, 3361, +3662, 2645, 3350, +3652, 2686, 3335, +3639, 2735, 3314, +3620, 2793, 3285, +3594, 2861, 3243, +3556, 2938, 3180, +3501, 3024, 3079, +3415, 3119, 2896, +3265, 3221, 2397, +2931, 3329, 0, +0, 3442, 0, +0, 3560, 0, +0, 3681, 0, +3822, 2630, 3523, +3822, 2630, 3523, +3821, 2630, 3523, +3821, 2631, 3523, +3821, 2631, 3523, +3821, 2632, 3522, +3821, 2632, 3522, +3821, 2633, 3522, +3821, 2635, 3522, +3821, 2637, 3521, +3820, 2639, 3521, +3820, 2642, 3520, +3819, 2646, 3519, +3818, 2652, 3518, +3817, 2659, 3516, +3815, 2668, 3514, +3813, 2681, 3510, +3810, 2697, 3506, +3806, 2717, 3500, +3801, 2744, 3492, +3794, 2777, 3482, +3784, 2817, 3467, +3771, 2866, 3446, +3752, 2925, 3417, +3726, 2992, 3375, +3689, 3070, 3312, +3633, 3156, 3211, +3547, 3251, 3027, +3398, 3353, 2526, +3064, 3461, 0, +0, 3574, 0, +0, 3692, 0, +3954, 2761, 3655, +3954, 2761, 3655, +3954, 2761, 3655, +3954, 2762, 3655, +3954, 2762, 3655, +3954, 2762, 3654, +3953, 2763, 3654, +3953, 2764, 3654, +3953, 2765, 3654, +3953, 2766, 3654, +3953, 2768, 3653, +3952, 2770, 3653, +3952, 2773, 3652, +3951, 2777, 3651, +3950, 2783, 3650, +3949, 2790, 3648, +3947, 2800, 3645, +3945, 2812, 3642, +3942, 2828, 3638, +3938, 2849, 3632, +3933, 2875, 3624, +3926, 2908, 3614, +3916, 2949, 3599, +3903, 2998, 3578, +3884, 3056, 3549, +3858, 3124, 3507, +3821, 3202, 3444, +3766, 3288, 3343, +3679, 3383, 3158, +3530, 3485, 2656, +3196, 3593, 0, +0, 3706, 0, +4086, 2892, 3787, +4086, 2893, 3787, +4086, 2893, 3787, +4086, 2893, 3787, +4086, 2893, 3787, +4086, 2893, 3786, +4086, 2894, 3786, +4086, 2894, 3786, +4085, 2895, 3786, +4085, 2896, 3786, +4085, 2897, 3786, +4085, 2899, 3785, +4084, 2902, 3785, +4084, 2905, 3784, +4083, 2909, 3783, +4082, 2914, 3782, +4081, 2922, 3780, +4080, 2931, 3777, +4077, 2944, 3774, +4075, 2960, 3770, +4071, 2980, 3764, +4065, 3007, 3756, +4058, 3040, 3745, +4048, 3080, 3731, +4035, 3130, 3710, +4016, 3188, 3681, +3990, 3256, 3639, +3953, 3333, 3575, +3898, 3420, 3474, +3811, 3515, 3290, +3662, 3617, 2787, +3328, 3725, 0, +4095, 3024, 3919, +4095, 3024, 3919, +4095, 3024, 3919, +4095, 3024, 3919, +4095, 3024, 3919, +4095, 3025, 3919, +4095, 3025, 3918, +4095, 3025, 3918, +4095, 3026, 3918, +4095, 3027, 3918, +4095, 3028, 3918, +4095, 3029, 3918, +4095, 3031, 3917, +4095, 3033, 3917, +4095, 3036, 3916, +4095, 3040, 3915, +4095, 3046, 3914, +4095, 3053, 3912, +4095, 3063, 3909, +4095, 3075, 3906, +4095, 3091, 3902, +4095, 3112, 3896, +4095, 3138, 3888, +4095, 3171, 3877, +4095, 3212, 3863, +4095, 3261, 3842, +4095, 3320, 3813, +4095, 3388, 3771, +4085, 3465, 3707, +4030, 3552, 3606, +3943, 3647, 3422, +3794, 3749, 2918, +4095, 3156, 4051, +4095, 3156, 4051, +4095, 3156, 4051, +4095, 3156, 4051, +4095, 3156, 4051, +4095, 3156, 4051, +4095, 3156, 4051, +4095, 3157, 4050, +4095, 3157, 4050, +4095, 3158, 4050, +4095, 3158, 4050, +4095, 3159, 4050, +4095, 3161, 4050, +4095, 3163, 4049, +4095, 3165, 4049, +4095, 3168, 4048, +4095, 3172, 4047, +4095, 3178, 4046, +4095, 3185, 4044, +4095, 3195, 4041, +4095, 3207, 4038, +4095, 3223, 4034, +4095, 3244, 4028, +4095, 3270, 4020, +4095, 3303, 4009, +4095, 3344, 3995, +4095, 3393, 3974, +4095, 3452, 3945, +4095, 3520, 3903, +4095, 3597, 3839, +4095, 3684, 3738, +4076, 3779, 3553, +0, 606, 834, +0, 621, 819, +0, 640, 798, +0, 664, 769, +0, 695, 726, +0, 733, 662, +0, 779, 559, +0, 834, 370, +0, 899, 0, +0, 973, 0, +0, 1057, 0, +0, 1149, 0, +0, 1248, 0, +0, 1355, 0, +0, 1466, 0, +0, 1583, 0, +0, 1702, 0, +0, 1825, 0, +0, 1950, 0, +0, 2077, 0, +0, 2205, 0, +0, 2334, 0, +0, 2464, 0, +0, 2594, 0, +0, 2725, 0, +0, 2856, 0, +0, 2987, 0, +0, 3119, 0, +0, 3250, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +0, 611, 856, +0, 626, 842, +0, 645, 822, +0, 669, 794, +0, 699, 753, +0, 737, 693, +0, 782, 598, +0, 837, 427, +0, 902, 2, +0, 976, 0, +0, 1059, 0, +0, 1150, 0, +0, 1250, 0, +0, 1356, 0, +0, 1467, 0, +0, 1583, 0, +0, 1703, 0, +0, 1825, 0, +0, 1950, 0, +0, 2077, 0, +0, 2205, 0, +0, 2334, 0, +0, 2464, 0, +0, 2594, 0, +0, 2725, 0, +0, 2856, 0, +0, 2987, 0, +0, 3119, 0, +0, 3251, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +0, 618, 883, +0, 632, 870, +0, 651, 851, +0, 675, 825, +0, 705, 788, +0, 742, 732, +0, 787, 645, +0, 841, 495, +0, 905, 157, +0, 979, 0, +0, 1061, 0, +0, 1152, 0, +0, 1251, 0, +0, 1357, 0, +0, 1468, 0, +0, 1584, 0, +0, 1703, 0, +0, 1826, 0, +0, 1951, 0, +0, 2077, 0, +0, 2205, 0, +0, 2334, 0, +0, 2464, 0, +0, 2594, 0, +0, 2725, 0, +0, 2856, 0, +0, 2987, 0, +0, 3119, 0, +0, 3251, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +0, 627, 918, +0, 641, 905, +0, 659, 888, +0, 682, 864, +0, 712, 829, +0, 748, 779, +0, 793, 702, +0, 847, 572, +0, 910, 306, +0, 983, 0, +0, 1064, 0, +0, 1155, 0, +0, 1253, 0, +0, 1359, 0, +0, 1469, 0, +0, 1585, 0, +0, 1704, 0, +0, 1827, 0, +0, 1951, 0, +0, 2078, 0, +0, 2205, 0, +0, 2334, 0, +0, 2464, 0, +0, 2594, 0, +0, 2725, 0, +0, 2856, 0, +0, 2987, 0, +0, 3119, 0, +0, 3251, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +271, 638, 960, +198, 652, 948, +78, 670, 933, +0, 693, 911, +0, 721, 880, +0, 757, 835, +0, 801, 768, +0, 854, 657, +0, 916, 450, +0, 988, 0, +0, 1069, 0, +0, 1159, 0, +0, 1256, 0, +0, 1361, 0, +0, 1471, 0, +0, 1586, 0, +0, 1705, 0, +0, 1827, 0, +0, 1952, 0, +0, 2078, 0, +0, 2206, 0, +0, 2335, 0, +0, 2464, 0, +0, 2594, 0, +0, 2725, 0, +0, 2856, 0, +0, 2987, 0, +0, 3119, 0, +0, 3251, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +595, 653, 1011, +561, 667, 1000, +511, 684, 986, +434, 706, 967, +305, 734, 940, +43, 769, 901, +0, 812, 843, +0, 863, 752, +0, 924, 591, +0, 995, 210, +0, 1075, 0, +0, 1164, 0, +0, 1260, 0, +0, 1364, 0, +0, 1474, 0, +0, 1588, 0, +0, 1707, 0, +0, 1829, 0, +0, 1953, 0, +0, 2079, 0, +0, 2206, 0, +0, 2335, 0, +0, 2464, 0, +0, 2595, 0, +0, 2725, 0, +0, 2856, 0, +0, 2988, 0, +0, 3119, 0, +0, 3251, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +832, 672, 1071, +812, 685, 1062, +784, 702, 1050, +743, 723, 1033, +682, 750, 1010, +586, 784, 976, +413, 825, 928, +0, 875, 853, +0, 935, 729, +0, 1004, 483, +0, 1082, 0, +0, 1170, 0, +0, 1265, 0, +0, 1368, 0, +0, 1477, 0, +0, 1591, 0, +0, 1709, 0, +0, 1830, 0, +0, 1954, 0, +0, 2080, 0, +0, 2207, 0, +0, 2335, 0, +0, 2465, 0, +0, 2595, 0, +0, 2725, 0, +0, 2856, 0, +0, 2988, 0, +0, 3119, 0, +0, 3251, 0, +0, 3382, 0, +0, 3514, 0, +0, 3646, 0, +1029, 697, 1140, +1016, 709, 1133, +998, 725, 1122, +973, 745, 1108, +938, 771, 1089, +885, 803, 1061, +804, 843, 1021, +666, 891, 961, +375, 949, 866, +0, 1016, 698, +0, 1093, 282, +0, 1178, 0, +0, 1272, 0, +0, 1374, 0, +0, 1481, 0, +0, 1594, 0, +0, 1711, 0, +0, 1832, 0, +0, 1955, 0, +0, 2081, 0, +0, 2208, 0, +0, 2336, 0, +0, 2465, 0, +0, 2595, 0, +0, 2726, 0, +0, 2857, 0, +0, 2988, 0, +0, 3119, 0, +0, 3251, 0, +0, 3383, 0, +0, 3514, 0, +0, 3646, 0, +1204, 728, 1220, +1195, 739, 1213, +1183, 754, 1205, +1167, 773, 1193, +1144, 797, 1176, +1111, 828, 1154, +1064, 866, 1121, +991, 912, 1074, +872, 967, 1002, +637, 1032, 883, +0, 1106, 652, +0, 1189, 0, +0, 1281, 0, +0, 1381, 0, +0, 1487, 0, +0, 1599, 0, +0, 1715, 0, +0, 1835, 0, +0, 1957, 0, +0, 2082, 0, +0, 2209, 0, +0, 2337, 0, +0, 2466, 0, +0, 2596, 0, +0, 2726, 0, +0, 2857, 0, +0, 2988, 0, +0, 3119, 0, +0, 3251, 0, +0, 3383, 0, +0, 3514, 0, +0, 3646, 0, +1366, 766, 1308, +1360, 777, 1302, +1352, 790, 1295, +1340, 808, 1286, +1325, 830, 1272, +1303, 859, 1254, +1272, 894, 1228, +1228, 938, 1191, +1161, 990, 1137, +1052, 1052, 1052, +847, 1123, 905, +195, 1203, 583, +0, 1293, 0, +0, 1390, 0, +0, 1494, 0, +0, 1604, 0, +0, 1719, 0, +0, 1838, 0, +0, 1960, 0, +0, 2084, 0, +0, 2210, 0, +0, 2338, 0, +0, 2467, 0, +0, 2596, 0, +0, 2727, 0, +0, 2857, 0, +0, 2988, 0, +0, 3120, 0, +0, 3251, 0, +0, 3383, 0, +0, 3514, 0, +0, 3646, 0, +1519, 813, 1404, +1515, 822, 1399, +1509, 834, 1394, +1501, 850, 1386, +1490, 871, 1375, +1475, 897, 1361, +1454, 930, 1341, +1425, 970, 1312, +1383, 1019, 1271, +1319, 1077, 1209, +1216, 1145, 1110, +1029, 1222, 933, +509, 1308, 469, +0, 1402, 0, +0, 1504, 0, +0, 1612, 0, +0, 1725, 0, +0, 1843, 0, +0, 1963, 0, +0, 2087, 0, +0, 2213, 0, +0, 2340, 0, +0, 2468, 0, +0, 2597, 0, +0, 2727, 0, +0, 2858, 0, +0, 2989, 0, +0, 3120, 0, +0, 3251, 0, +0, 3383, 0, +0, 3515, 0, +0, 3646, 0, +1666, 868, 1507, +1663, 877, 1504, +1659, 888, 1499, +1653, 902, 1493, +1645, 920, 1484, +1635, 944, 1473, +1620, 973, 1457, +1600, 1010, 1435, +1572, 1055, 1404, +1531, 1109, 1359, +1469, 1172, 1290, +1372, 1245, 1179, +1196, 1327, 967, +741, 1418, 252, +0, 1517, 0, +0, 1622, 0, +0, 1733, 0, +0, 1849, 0, +0, 1968, 0, +0, 2091, 0, +0, 2215, 0, +0, 2342, 0, +0, 2470, 0, +0, 2598, 0, +0, 2728, 0, +0, 2858, 0, +0, 2989, 0, +0, 3120, 0, +0, 3252, 0, +0, 3383, 0, +0, 3515, 0, +0, 3647, 0, +1809, 933, 1616, +1807, 941, 1613, +1804, 950, 1610, +1800, 963, 1605, +1794, 979, 1599, +1787, 999, 1590, +1776, 1026, 1578, +1762, 1059, 1561, +1742, 1099, 1537, +1715, 1148, 1504, +1675, 1207, 1455, +1615, 1275, 1381, +1520, 1352, 1257, +1352, 1439, 1010, +936, 1533, 0, +0, 1635, 0, +0, 1743, 0, +0, 1857, 0, +0, 1974, 0, +0, 2095, 0, +0, 2219, 0, +0, 2344, 0, +0, 2472, 0, +0, 2600, 0, +0, 2729, 0, +0, 2859, 0, +0, 2990, 0, +0, 3121, 0, +0, 3252, 0, +0, 3383, 0, +0, 3515, 0, +0, 3647, 0, +1949, 1008, 1730, +1948, 1014, 1728, +1946, 1022, 1725, +1943, 1033, 1722, +1938, 1047, 1717, +1933, 1065, 1710, +1925, 1088, 1701, +1915, 1116, 1688, +1901, 1152, 1670, +1882, 1196, 1646, +1855, 1249, 1610, +1815, 1312, 1559, +1757, 1383, 1479, +1664, 1465, 1344, +1501, 1555, 1061, +1110, 1652, 0, +0, 1757, 0, +0, 1867, 0, +0, 1983, 0, +0, 2102, 0, +0, 2224, 0, +0, 2348, 0, +0, 2474, 0, +0, 2602, 0, +0, 2731, 0, +0, 2860, 0, +0, 2991, 0, +0, 3121, 0, +0, 3252, 0, +0, 3384, 0, +0, 3515, 0, +0, 3647, 0, +2087, 1092, 1849, +2086, 1097, 1847, +2085, 1104, 1845, +2082, 1113, 1842, +2079, 1124, 1838, +2075, 1140, 1833, +2070, 1159, 1826, +2062, 1184, 1816, +2052, 1215, 1803, +2039, 1254, 1785, +2019, 1300, 1759, +1992, 1357, 1722, +1954, 1422, 1668, +1896, 1497, 1584, +1805, 1581, 1439, +1646, 1674, 1121, +1271, 1774, 0, +0, 1881, 0, +0, 1993, 0, +0, 2110, 0, +0, 2230, 0, +0, 2353, 0, +0, 2478, 0, +0, 2605, 0, +0, 2733, 0, +0, 2862, 0, +0, 2992, 0, +0, 3122, 0, +0, 3253, 0, +0, 3384, 0, +0, 3516, 0, +0, 3647, 0, +2224, 1184, 1970, +2223, 1189, 1969, +2222, 1194, 1967, +2220, 1201, 1965, +2218, 1211, 1962, +2215, 1224, 1958, +2211, 1240, 1953, +2206, 1261, 1945, +2198, 1287, 1936, +2188, 1320, 1922, +2175, 1361, 1903, +2156, 1410, 1877, +2129, 1469, 1839, +2090, 1537, 1782, +2033, 1615, 1694, +1944, 1702, 1541, +1787, 1797, 1191, +1424, 1899, 0, +0, 2007, 0, +0, 2121, 0, +0, 2238, 0, +0, 2359, 0, +0, 2483, 0, +0, 2608, 0, +0, 2736, 0, +0, 2864, 0, +0, 2993, 0, +0, 3123, 0, +0, 3254, 0, +0, 3385, 0, +0, 3516, 0, +0, 3648, 0, +2359, 1284, 2094, +2359, 1288, 2093, +2358, 1292, 2092, +2357, 1298, 2090, +2355, 1306, 2088, +2353, 1316, 2085, +2350, 1329, 2081, +2346, 1346, 2075, +2340, 1368, 2068, +2333, 1396, 2058, +2323, 1431, 2044, +2309, 1474, 2025, +2291, 1525, 1998, +2264, 1586, 1959, +2226, 1656, 1901, +2169, 1736, 1810, +2080, 1825, 1649, +1926, 1921, 1271, +1571, 2025, 0, +0, 2135, 0, +0, 2249, 0, +0, 2368, 0, +0, 2489, 0, +0, 2613, 0, +0, 2739, 0, +0, 2867, 0, +0, 2995, 0, +0, 3125, 0, +0, 3255, 0, +0, 3386, 0, +0, 3517, 0, +0, 3648, 0, +2494, 1391, 2220, +2493, 1393, 2219, +2493, 1397, 2218, +2492, 1402, 2217, +2491, 1408, 2215, +2489, 1416, 2213, +2487, 1427, 2210, +2484, 1441, 2206, +2480, 1459, 2200, +2474, 1482, 2193, +2467, 1511, 2183, +2457, 1547, 2168, +2444, 1591, 2149, +2425, 1644, 2121, +2398, 1706, 2082, +2361, 1779, 2022, +2304, 1860, 1929, +2216, 1950, 1763, +2063, 2048, 1359, +1714, 2153, 0, +0, 2263, 0, +0, 2378, 0, +0, 2498, 0, +0, 2620, 0, +0, 2744, 0, +0, 2871, 0, +0, 2998, 0, +0, 3127, 0, +0, 3257, 0, +0, 3387, 0, +0, 3518, 0, +0, 3649, 0, +2628, 1503, 2347, +2627, 1505, 2347, +2627, 1508, 2346, +2626, 1511, 2345, +2625, 1516, 2344, +2624, 1523, 2342, +2622, 1531, 2340, +2620, 1542, 2337, +2617, 1557, 2333, +2613, 1575, 2327, +2608, 1599, 2319, +2601, 1629, 2309, +2591, 1666, 2295, +2577, 1711, 2275, +2559, 1766, 2247, +2532, 1830, 2207, +2495, 1903, 2146, +2438, 1986, 2051, +2351, 2077, 1881, +2199, 2176, 1456, +1853, 2281, 0, +0, 2393, 0, +0, 2509, 0, +0, 2628, 0, +0, 2751, 0, +0, 2875, 0, +0, 3002, 0, +0, 3130, 0, +0, 3259, 0, +0, 3388, 0, +0, 3519, 0, +0, 3650, 0, +2761, 1619, 2476, +2761, 1621, 2476, +2760, 1623, 2475, +2760, 1626, 2474, +2759, 1630, 2473, +2758, 1635, 2472, +2757, 1641, 2470, +2756, 1650, 2468, +2753, 1661, 2465, +2750, 1676, 2461, +2747, 1695, 2455, +2741, 1720, 2447, +2734, 1750, 2437, +2724, 1788, 2422, +2711, 1835, 2402, +2692, 1890, 2374, +2666, 1955, 2333, +2628, 2029, 2272, +2572, 2113, 2176, +2485, 2205, 2002, +2333, 2305, 1559, +1991, 2411, 0, +0, 2523, 0, +0, 2639, 0, +0, 2759, 0, +0, 2882, 0, +0, 3007, 0, +0, 3134, 0, +0, 3262, 0, +0, 3391, 0, +0, 3520, 0, +0, 3651, 0, +2894, 1739, 2605, +2894, 1740, 2605, +2894, 1742, 2605, +2893, 1744, 2604, +2893, 1747, 2603, +2892, 1751, 2602, +2891, 1756, 2601, +2890, 1763, 2599, +2888, 1772, 2597, +2886, 1784, 2594, +2883, 1799, 2590, +2879, 1818, 2584, +2874, 1843, 2576, +2867, 1874, 2566, +2857, 1913, 2551, +2844, 1960, 2531, +2825, 2016, 2502, +2799, 2082, 2461, +2761, 2157, 2400, +2705, 2241, 2302, +2618, 2334, 2125, +2468, 2434, 1668, +2128, 2541, 0, +0, 2653, 0, +0, 2770, 0, +0, 2890, 0, +0, 3013, 0, +0, 3138, 0, +0, 3265, 0, +0, 3393, 0, +0, 3522, 0, +0, 3652, 0, +3027, 1862, 2735, +3027, 1863, 2735, +3027, 1864, 2735, +3026, 1866, 2735, +3026, 1868, 2734, +3026, 1871, 2733, +3025, 1875, 2732, +3024, 1880, 2731, +3023, 1887, 2729, +3021, 1896, 2727, +3019, 1908, 2724, +3016, 1924, 2720, +3012, 1943, 2714, +3007, 1969, 2706, +3000, 2000, 2695, +2990, 2039, 2681, +2976, 2087, 2660, +2958, 2144, 2632, +2932, 2210, 2590, +2894, 2286, 2528, +2838, 2371, 2430, +2752, 2464, 2251, +2601, 2565, 1783, +2263, 2672, 0, +0, 2784, 0, +0, 2901, 0, +0, 3022, 0, +0, 3145, 0, +0, 3270, 0, +0, 3397, 0, +0, 3525, 0, +0, 3654, 0, +3160, 1987, 2866, +3160, 1988, 2866, +3159, 1989, 2866, +3159, 1990, 2865, +3159, 1992, 2865, +3159, 1994, 2864, +3158, 1997, 2864, +3157, 2001, 2863, +3157, 2006, 2861, +3155, 2013, 2860, +3154, 2023, 2857, +3152, 2035, 2854, +3149, 2050, 2850, +3145, 2070, 2844, +3139, 2096, 2836, +3132, 2128, 2826, +3122, 2167, 2811, +3109, 2215, 2791, +3090, 2272, 2762, +3064, 2339, 2720, +3027, 2415, 2658, +2971, 2501, 2558, +2884, 2594, 2378, +2734, 2696, 1901, +2397, 2803, 0, +0, 2916, 0, +0, 3033, 0, +0, 3153, 0, +0, 3277, 0, +0, 3402, 0, +0, 3529, 0, +0, 3657, 0, +3292, 2114, 2997, +3292, 2114, 2997, +3292, 2115, 2997, +3292, 2116, 2997, +3292, 2117, 2996, +3291, 2119, 2996, +3291, 2121, 2995, +3291, 2124, 2995, +3290, 2128, 2994, +3289, 2134, 2992, +3288, 2141, 2990, +3286, 2150, 2988, +3284, 2162, 2985, +3281, 2178, 2981, +3277, 2198, 2975, +3272, 2224, 2967, +3265, 2256, 2956, +3255, 2296, 2942, +3241, 2344, 2921, +3223, 2402, 2892, +3197, 2469, 2851, +3159, 2546, 2788, +3104, 2631, 2688, +3017, 2725, 2507, +2867, 2827, 2023, +2531, 2934, 0, +0, 3047, 0, +0, 3164, 0, +0, 3285, 0, +0, 3408, 0, +0, 3534, 0, +0, 3661, 0, +3425, 2242, 3128, +3425, 2242, 3128, +3425, 2243, 3128, +3424, 2244, 3128, +3424, 2245, 3128, +3424, 2246, 3127, +3424, 2248, 3127, +3423, 2250, 3126, +3423, 2253, 3126, +3422, 2257, 3125, +3421, 2262, 3123, +3420, 2270, 3122, +3418, 2279, 3119, +3416, 2291, 3116, +3413, 2307, 3112, +3410, 2327, 3106, +3404, 2353, 3098, +3397, 2386, 3087, +3387, 2426, 3073, +3374, 2474, 3052, +3355, 2532, 3023, +3329, 2600, 2981, +3292, 2676, 2919, +3236, 2762, 2818, +3150, 2856, 2636, +3000, 2958, 2147, +2665, 3066, 0, +0, 3179, 0, +0, 3296, 0, +0, 3417, 0, +0, 3540, 0, +0, 3666, 0, +3557, 2371, 3260, +3557, 2371, 3260, +3557, 2372, 3260, +3557, 2372, 3259, +3557, 2373, 3259, +3557, 2374, 3259, +3556, 2375, 3259, +3556, 2377, 3258, +3556, 2379, 3258, +3555, 2382, 3257, +3554, 2387, 3256, +3554, 2392, 3255, +3552, 2399, 3253, +3551, 2409, 3251, +3549, 2421, 3247, +3546, 2437, 3243, +3542, 2457, 3237, +3537, 2483, 3230, +3529, 2516, 3219, +3520, 2556, 3204, +3506, 2605, 3183, +3488, 2663, 3154, +3461, 2730, 3113, +3424, 2807, 3050, +3369, 2894, 2949, +3282, 2988, 2766, +3133, 3090, 2273, +2798, 3197, 0, +0, 3311, 0, +0, 3428, 0, +0, 3549, 0, +0, 3672, 0, +3689, 2501, 3391, +3689, 2501, 3391, +3689, 2501, 3391, +3689, 2502, 3391, +3689, 2502, 3391, +3689, 2503, 3391, +3689, 2504, 3391, +3689, 2505, 3390, +3688, 2507, 3390, +3688, 2509, 3389, +3687, 2513, 3389, +3687, 2517, 3388, +3686, 2522, 3386, +3685, 2529, 3385, +3683, 2539, 3382, +3681, 2551, 3379, +3678, 2567, 3375, +3674, 2588, 3369, +3669, 2614, 3361, +3662, 2646, 3350, +3652, 2687, 3336, +3638, 2736, 3315, +3620, 2794, 3286, +3594, 2862, 3244, +3556, 2939, 3181, +3501, 3025, 3080, +3414, 3119, 2897, +3265, 3221, 2400, +2931, 3329, 0, +0, 3442, 0, +0, 3560, 0, +0, 3681, 0, +3821, 2631, 3523, +3821, 2631, 3523, +3821, 2632, 3523, +3821, 2632, 3523, +3821, 2632, 3523, +3821, 2633, 3523, +3821, 2634, 3523, +3821, 2635, 3522, +3821, 2636, 3522, +3820, 2638, 3522, +3820, 2640, 3521, +3820, 2643, 3520, +3819, 2647, 3519, +3818, 2653, 3518, +3817, 2660, 3516, +3815, 2669, 3514, +3813, 2682, 3511, +3810, 2698, 3506, +3806, 2718, 3501, +3801, 2745, 3493, +3794, 2777, 3482, +3784, 2818, 3467, +3771, 2867, 3447, +3752, 2925, 3418, +3726, 2993, 3375, +3689, 3070, 3312, +3633, 3157, 3211, +3547, 3251, 3028, +3397, 3353, 2529, +3063, 3461, 0, +0, 3574, 0, +0, 3692, 0, +3954, 2762, 3655, +3954, 2762, 3655, +3954, 2762, 3655, +3954, 2762, 3655, +3954, 2763, 3655, +3953, 2763, 3655, +3953, 2764, 3655, +3953, 2765, 3654, +3953, 2766, 3654, +3953, 2767, 3654, +3953, 2769, 3653, +3952, 2771, 3653, +3952, 2774, 3652, +3951, 2778, 3651, +3950, 2784, 3650, +3949, 2791, 3648, +3947, 2800, 3646, +3945, 2813, 3643, +3942, 2829, 3638, +3938, 2850, 3632, +3933, 2876, 3625, +3926, 2909, 3614, +3916, 2949, 3599, +3903, 2998, 3578, +3884, 3057, 3549, +3858, 3125, 3507, +3821, 3202, 3444, +3765, 3288, 3343, +3679, 3383, 3159, +3530, 3485, 2658, +3196, 3593, 0, +0, 3706, 0, +4086, 2893, 3787, +4086, 2893, 3787, +4086, 2893, 3787, +4086, 2893, 3787, +4086, 2894, 3787, +4086, 2894, 3787, +4086, 2894, 3787, +4086, 2895, 3786, +4085, 2896, 3786, +4085, 2897, 3786, +4085, 2898, 3786, +4085, 2900, 3785, +4084, 2902, 3785, +4084, 2905, 3784, +4083, 2909, 3783, +4082, 2915, 3782, +4081, 2922, 3780, +4080, 2932, 3778, +4077, 2944, 3774, +4074, 2960, 3770, +4071, 2981, 3764, +4065, 3007, 3756, +4058, 3040, 3746, +4048, 3081, 3731, +4035, 3130, 3710, +4016, 3188, 3681, +3990, 3256, 3639, +3953, 3334, 3576, +3898, 3420, 3475, +3811, 3515, 3290, +3662, 3617, 2788, +3328, 3725, 0, +4095, 3024, 3919, +4095, 3025, 3919, +4095, 3025, 3919, +4095, 3025, 3919, +4095, 3025, 3919, +4095, 3025, 3919, +4095, 3025, 3919, +4095, 3026, 3918, +4095, 3026, 3918, +4095, 3027, 3918, +4095, 3028, 3918, +4095, 3030, 3918, +4095, 3031, 3917, +4095, 3034, 3917, +4095, 3037, 3916, +4095, 3041, 3915, +4095, 3046, 3914, +4095, 3054, 3912, +4095, 3063, 3910, +4095, 3076, 3906, +4095, 3092, 3902, +4095, 3113, 3896, +4095, 3139, 3888, +4095, 3172, 3878, +4095, 3212, 3863, +4095, 3262, 3842, +4095, 3320, 3813, +4095, 3388, 3771, +4085, 3466, 3708, +4030, 3552, 3606, +3943, 3647, 3422, +3794, 3749, 2919, +4095, 3156, 4051, +4095, 3156, 4051, +4095, 3156, 4051, +4095, 3156, 4051, +4095, 3156, 4051, +4095, 3157, 4051, +4095, 3157, 4051, +4095, 3157, 4051, +4095, 3158, 4050, +4095, 3158, 4050, +4095, 3159, 4050, +4095, 3160, 4050, +4095, 3161, 4050, +4095, 3163, 4049, +4095, 3165, 4049, +4095, 3168, 4048, +4095, 3173, 4047, +4095, 3178, 4046, +4095, 3185, 4044, +4095, 3195, 4041, +4095, 3207, 4038, +4095, 3224, 4034, +4095, 3244, 4028, +4095, 3271, 4020, +4095, 3304, 4009, +4095, 3344, 3995, +4095, 3393, 3974, +4095, 3452, 3945, +4095, 3520, 3903, +4095, 3597, 3839, +4095, 3684, 3738, +4076, 3779, 3554, +0, 723, 961, +0, 734, 949, +0, 749, 934, +0, 769, 912, +0, 793, 881, +0, 824, 837, +0, 862, 769, +0, 908, 660, +0, 964, 453, +0, 1029, 0, +0, 1104, 0, +0, 1187, 0, +0, 1280, 0, +0, 1380, 0, +0, 1486, 0, +0, 1598, 0, +0, 1714, 0, +0, 1834, 0, +0, 1957, 0, +0, 2082, 0, +0, 2209, 0, +0, 2337, 0, +0, 2466, 0, +0, 2596, 0, +0, 2726, 0, +0, 2857, 0, +0, 2988, 0, +0, 3119, 0, +0, 3251, 0, +0, 3383, 0, +0, 3514, 0, +0, 3646, 0, +0, 727, 977, +0, 738, 966, +0, 753, 951, +0, 772, 930, +0, 796, 901, +0, 827, 858, +0, 865, 794, +0, 911, 691, +0, 966, 502, +0, 1031, 0, +0, 1105, 0, +0, 1189, 0, +0, 1281, 0, +0, 1380, 0, +0, 1487, 0, +0, 1598, 0, +0, 1715, 0, +0, 1835, 0, +0, 1957, 0, +0, 2082, 0, +0, 2209, 0, +0, 2337, 0, +0, 2466, 0, +0, 2596, 0, +0, 2726, 0, +0, 2857, 0, +0, 2988, 0, +0, 3119, 0, +0, 3251, 0, +0, 3383, 0, +0, 3514, 0, +0, 3646, 0, +0, 732, 998, +0, 743, 988, +0, 758, 974, +0, 777, 954, +0, 801, 926, +0, 831, 886, +0, 869, 825, +0, 915, 730, +0, 969, 560, +0, 1034, 134, +0, 1108, 0, +0, 1191, 0, +0, 1282, 0, +0, 1382, 0, +0, 1488, 0, +0, 1599, 0, +0, 1715, 0, +0, 1835, 0, +0, 1958, 0, +0, 2082, 0, +0, 2209, 0, +0, 2337, 0, +0, 2466, 0, +0, 2596, 0, +0, 2726, 0, +0, 2857, 0, +0, 2988, 0, +0, 3119, 0, +0, 3251, 0, +0, 3383, 0, +0, 3514, 0, +0, 3646, 0, +0, 739, 1025, +0, 750, 1015, +0, 764, 1002, +0, 783, 983, +0, 807, 957, +0, 837, 920, +0, 874, 864, +0, 919, 777, +0, 973, 627, +0, 1037, 289, +0, 1111, 0, +0, 1193, 0, +0, 1284, 0, +0, 1383, 0, +0, 1489, 0, +0, 1600, 0, +0, 1716, 0, +0, 1836, 0, +0, 1958, 0, +0, 2083, 0, +0, 2209, 0, +0, 2337, 0, +0, 2466, 0, +0, 2596, 0, +0, 2726, 0, +0, 2857, 0, +0, 2988, 0, +0, 3119, 0, +0, 3251, 0, +0, 3383, 0, +0, 3514, 0, +0, 3646, 0, +0, 748, 1059, +0, 759, 1050, +0, 773, 1037, +0, 791, 1020, +0, 815, 996, +0, 844, 962, +0, 880, 911, +0, 925, 834, +0, 979, 704, +0, 1042, 438, +0, 1115, 0, +0, 1197, 0, +0, 1287, 0, +0, 1386, 0, +0, 1491, 0, +0, 1602, 0, +0, 1717, 0, +0, 1836, 0, +0, 1959, 0, +0, 2083, 0, +0, 2210, 0, +0, 2338, 0, +0, 2466, 0, +0, 2596, 0, +0, 2726, 0, +0, 2857, 0, +0, 2988, 0, +0, 3119, 0, +0, 3251, 0, +0, 3383, 0, +0, 3514, 0, +0, 3646, 0, +450, 760, 1100, +403, 770, 1092, +330, 784, 1080, +210, 802, 1065, +0, 825, 1043, +0, 853, 1012, +0, 889, 967, +0, 933, 900, +0, 986, 790, +0, 1048, 582, +0, 1120, 0, +0, 1201, 0, +0, 1291, 0, +0, 1388, 0, +0, 1493, 0, +0, 1603, 0, +0, 1718, 0, +0, 1837, 0, +0, 1960, 0, +0, 2084, 0, +0, 2210, 0, +0, 2338, 0, +0, 2467, 0, +0, 2596, 0, +0, 2726, 0, +0, 2857, 0, +0, 2988, 0, +0, 3120, 0, +0, 3251, 0, +0, 3383, 0, +0, 3514, 0, +0, 3646, 0, +751, 775, 1150, +727, 785, 1143, +693, 799, 1132, +643, 816, 1119, +566, 838, 1099, +437, 866, 1072, +175, 901, 1033, +0, 944, 975, +0, 995, 884, +0, 1056, 723, +0, 1127, 342, +0, 1207, 0, +0, 1296, 0, +0, 1392, 0, +0, 1496, 0, +0, 1606, 0, +0, 1720, 0, +0, 1839, 0, +0, 1961, 0, +0, 2085, 0, +0, 2211, 0, +0, 2338, 0, +0, 2467, 0, +0, 2597, 0, +0, 2727, 0, +0, 2857, 0, +0, 2988, 0, +0, 3120, 0, +0, 3251, 0, +0, 3383, 0, +0, 3514, 0, +0, 3646, 0, +978, 795, 1209, +964, 805, 1203, +944, 817, 1194, +916, 834, 1182, +875, 855, 1165, +814, 882, 1142, +718, 916, 1108, +545, 957, 1060, +108, 1008, 985, +0, 1067, 862, +0, 1136, 615, +0, 1215, 0, +0, 1302, 0, +0, 1397, 0, +0, 1500, 0, +0, 1609, 0, +0, 1723, 0, +0, 1841, 0, +0, 1962, 0, +0, 2086, 0, +0, 2212, 0, +0, 2339, 0, +0, 2468, 0, +0, 2597, 0, +0, 2727, 0, +0, 2858, 0, +0, 2988, 0, +0, 3120, 0, +0, 3251, 0, +0, 3383, 0, +0, 3515, 0, +0, 3646, 0, +1170, 820, 1278, +1161, 829, 1273, +1148, 841, 1265, +1130, 857, 1255, +1105, 877, 1240, +1070, 903, 1221, +1017, 935, 1193, +936, 975, 1153, +798, 1023, 1093, +507, 1081, 998, +0, 1148, 830, +0, 1225, 414, +0, 1310, 0, +0, 1404, 0, +0, 1506, 0, +0, 1613, 0, +0, 1726, 0, +0, 1843, 0, +0, 1964, 0, +0, 2087, 0, +0, 2213, 0, +0, 2340, 0, +0, 2468, 0, +0, 2597, 0, +0, 2727, 0, +0, 2858, 0, +0, 2989, 0, +0, 3120, 0, +0, 3251, 0, +0, 3383, 0, +0, 3515, 0, +0, 3646, 0, +1343, 851, 1356, +1336, 860, 1352, +1327, 871, 1345, +1316, 886, 1337, +1299, 905, 1325, +1276, 929, 1308, +1244, 960, 1286, +1196, 998, 1253, +1123, 1044, 1206, +1004, 1099, 1134, +769, 1164, 1015, +0, 1238, 784, +0, 1321, 0, +0, 1413, 0, +0, 1513, 0, +0, 1619, 0, +0, 1731, 0, +0, 1847, 0, +0, 1967, 0, +0, 2089, 0, +0, 2214, 0, +0, 2341, 0, +0, 2469, 0, +0, 2598, 0, +0, 2728, 0, +0, 2858, 0, +0, 2989, 0, +0, 3120, 0, +0, 3251, 0, +0, 3383, 0, +0, 3515, 0, +0, 3646, 0, +1502, 890, 1444, +1498, 898, 1440, +1492, 909, 1434, +1484, 922, 1427, +1472, 940, 1418, +1457, 962, 1404, +1435, 991, 1386, +1405, 1026, 1360, +1360, 1070, 1323, +1293, 1122, 1269, +1184, 1184, 1184, +979, 1255, 1037, +327, 1335, 715, +0, 1425, 0, +0, 1522, 0, +0, 1626, 0, +0, 1736, 0, +0, 1851, 0, +0, 1970, 0, +0, 2092, 0, +0, 2216, 0, +0, 2343, 0, +0, 2470, 0, +0, 2599, 0, +0, 2728, 0, +0, 2859, 0, +0, 2989, 0, +0, 3120, 0, +0, 3252, 0, +0, 3383, 0, +0, 3515, 0, +0, 3647, 0, +1654, 938, 1539, +1651, 945, 1536, +1647, 954, 1532, +1641, 967, 1526, +1633, 982, 1518, +1622, 1003, 1507, +1607, 1029, 1493, +1586, 1062, 1473, +1557, 1102, 1444, +1515, 1151, 1403, +1451, 1209, 1341, +1349, 1277, 1243, +1161, 1354, 1065, +641, 1440, 601, +0, 1534, 0, +0, 1636, 0, +0, 1744, 0, +0, 1857, 0, +0, 1975, 0, +0, 2096, 0, +0, 2219, 0, +0, 2345, 0, +0, 2472, 0, +0, 2600, 0, +0, 2729, 0, +0, 2859, 0, +0, 2990, 0, +0, 3121, 0, +0, 3252, 0, +0, 3383, 0, +0, 3515, 0, +0, 3647, 0, +1801, 994, 1642, +1798, 1000, 1639, +1795, 1009, 1636, +1791, 1020, 1631, +1785, 1034, 1625, +1778, 1052, 1617, +1767, 1076, 1605, +1752, 1105, 1589, +1732, 1142, 1567, +1704, 1187, 1536, +1663, 1241, 1491, +1601, 1304, 1423, +1504, 1377, 1311, +1328, 1459, 1099, +874, 1550, 384, +0, 1649, 0, +0, 1754, 0, +0, 1865, 0, +0, 1981, 0, +0, 2100, 0, +0, 2223, 0, +0, 2347, 0, +0, 2474, 0, +0, 2602, 0, +0, 2731, 0, +0, 2860, 0, +0, 2990, 0, +0, 3121, 0, +0, 3252, 0, +0, 3384, 0, +0, 3515, 0, +0, 3647, 0, +1943, 1060, 1750, +1941, 1066, 1748, +1939, 1073, 1746, +1936, 1082, 1742, +1932, 1095, 1737, +1926, 1111, 1731, +1919, 1132, 1722, +1908, 1158, 1710, +1894, 1191, 1693, +1874, 1231, 1670, +1847, 1281, 1636, +1807, 1339, 1587, +1747, 1407, 1513, +1652, 1484, 1389, +1484, 1571, 1142, +1068, 1665, 0, +0, 1767, 0, +0, 1876, 0, +0, 1989, 0, +0, 2106, 0, +0, 2227, 0, +0, 2351, 0, +0, 2477, 0, +0, 2604, 0, +0, 2732, 0, +0, 2861, 0, +0, 2991, 0, +0, 3122, 0, +0, 3253, 0, +0, 3384, 0, +0, 3515, 0, +0, 3647, 0, +2083, 1136, 1864, +2082, 1140, 1862, +2080, 1146, 1860, +2078, 1155, 1858, +2075, 1165, 1854, +2071, 1179, 1849, +2065, 1197, 1842, +2058, 1220, 1833, +2047, 1249, 1820, +2033, 1284, 1802, +2014, 1328, 1778, +1987, 1381, 1743, +1947, 1444, 1691, +1889, 1516, 1611, +1796, 1597, 1476, +1633, 1687, 1193, +1242, 1784, 0, +0, 1889, 0, +0, 1999, 0, +0, 2115, 0, +0, 2234, 0, +0, 2356, 0, +0, 2480, 0, +0, 2606, 0, +0, 2734, 0, +0, 2863, 0, +0, 2993, 0, +0, 3123, 0, +0, 3253, 0, +0, 3385, 0, +0, 3516, 0, +0, 3647, 0, +2221, 1220, 1982, +2220, 1224, 1981, +2218, 1229, 1979, +2217, 1236, 1977, +2214, 1245, 1974, +2211, 1257, 1970, +2207, 1272, 1965, +2202, 1291, 1958, +2195, 1316, 1948, +2185, 1347, 1935, +2171, 1386, 1917, +2151, 1433, 1891, +2124, 1489, 1854, +2086, 1554, 1800, +2028, 1629, 1716, +1937, 1713, 1571, +1778, 1806, 1253, +1403, 1906, 0, +0, 2013, 0, +0, 2125, 0, +0, 2242, 0, +0, 2362, 0, +0, 2485, 0, +0, 2610, 0, +0, 2737, 0, +0, 2865, 0, +0, 2994, 0, +0, 3124, 0, +0, 3254, 0, +0, 3385, 0, +0, 3516, 0, +0, 3648, 0, +2357, 1313, 2103, +2356, 1316, 2102, +2355, 1321, 2101, +2354, 1326, 2099, +2352, 1334, 2097, +2350, 1343, 2094, +2347, 1356, 2090, +2343, 1372, 2085, +2338, 1393, 2078, +2330, 1419, 2068, +2320, 1452, 2054, +2307, 1493, 2035, +2288, 1543, 2009, +2261, 1601, 1971, +2222, 1669, 1915, +2165, 1747, 1826, +2076, 1834, 1673, +1919, 1929, 1323, +1556, 2031, 0, +0, 2139, 0, +0, 2253, 0, +0, 2370, 0, +0, 2491, 0, +0, 2615, 0, +0, 2741, 0, +0, 2868, 0, +0, 2996, 0, +0, 3126, 0, +0, 3256, 0, +0, 3386, 0, +0, 3517, 0, +0, 3648, 0, +2492, 1414, 2227, +2491, 1416, 2226, +2491, 1420, 2225, +2490, 1424, 2224, +2489, 1430, 2222, +2487, 1438, 2220, +2485, 1448, 2217, +2482, 1461, 2213, +2478, 1479, 2208, +2472, 1501, 2200, +2465, 1528, 2190, +2455, 1563, 2176, +2442, 1606, 2157, +2423, 1657, 2130, +2396, 1718, 2091, +2358, 1788, 2033, +2301, 1868, 1942, +2213, 1957, 1782, +2058, 2053, 1403, +1703, 2157, 0, +0, 2267, 0, +0, 2381, 0, +0, 2500, 0, +0, 2621, 0, +0, 2745, 0, +0, 2871, 0, +0, 2999, 0, +0, 3128, 0, +0, 3257, 0, +0, 3387, 0, +0, 3518, 0, +0, 3649, 0, +2626, 1521, 2353, +2626, 1523, 2352, +2625, 1526, 2351, +2625, 1529, 2350, +2624, 1534, 2349, +2623, 1540, 2347, +2621, 1548, 2345, +2619, 1559, 2342, +2616, 1573, 2338, +2612, 1591, 2332, +2607, 1614, 2325, +2599, 1643, 2315, +2589, 1679, 2301, +2576, 1723, 2281, +2557, 1776, 2253, +2531, 1839, 2214, +2493, 1911, 2154, +2436, 1992, 2061, +2348, 2082, 1895, +2195, 2180, 1491, +1846, 2285, 0, +0, 2395, 0, +0, 2511, 0, +0, 2630, 0, +0, 2752, 0, +0, 2876, 0, +0, 3003, 0, +0, 3130, 0, +0, 3259, 0, +0, 3389, 0, +0, 3519, 0, +0, 3650, 0, +2760, 1633, 2480, +2760, 1635, 2479, +2759, 1637, 2479, +2759, 1640, 2478, +2758, 1643, 2477, +2757, 1648, 2476, +2756, 1655, 2474, +2755, 1663, 2472, +2752, 1674, 2469, +2749, 1689, 2465, +2745, 1707, 2459, +2740, 1731, 2451, +2733, 1761, 2441, +2723, 1798, 2427, +2710, 1843, 2407, +2691, 1898, 2379, +2664, 1962, 2339, +2627, 2035, 2278, +2571, 2118, 2183, +2483, 2209, 2013, +2331, 2308, 1588, +1986, 2414, 0, +0, 2525, 0, +0, 2641, 0, +0, 2760, 0, +0, 2883, 0, +0, 3007, 0, +0, 3134, 0, +0, 3262, 0, +0, 3391, 0, +0, 3521, 0, +0, 3651, 0, +2893, 1750, 2608, +2893, 1751, 2608, +2893, 1753, 2608, +2893, 1755, 2607, +2892, 1758, 2606, +2891, 1762, 2605, +2891, 1767, 2604, +2889, 1773, 2602, +2888, 1782, 2600, +2886, 1793, 2597, +2883, 1808, 2593, +2879, 1827, 2587, +2873, 1852, 2579, +2866, 1882, 2569, +2856, 1920, 2554, +2843, 1967, 2534, +2824, 2022, 2506, +2798, 2087, 2465, +2760, 2161, 2404, +2704, 2245, 2308, +2617, 2337, 2134, +2465, 2437, 1691, +2123, 2543, 0, +0, 2655, 0, +0, 2771, 0, +0, 2891, 0, +0, 3014, 0, +0, 3139, 0, +0, 3266, 0, +0, 3394, 0, +0, 3523, 0, +0, 3652, 0, +3026, 1870, 2738, +3026, 1871, 2737, +3026, 1873, 2737, +3026, 1874, 2737, +3025, 1876, 2736, +3025, 1879, 2735, +3024, 1883, 2735, +3023, 1888, 2733, +3022, 1895, 2732, +3021, 1904, 2729, +3018, 1916, 2726, +3015, 1931, 2722, +3012, 1950, 2716, +3006, 1975, 2708, +2999, 2006, 2698, +2989, 2045, 2683, +2976, 2092, 2663, +2957, 2148, 2635, +2931, 2214, 2593, +2893, 2289, 2532, +2838, 2373, 2434, +2750, 2466, 2258, +2600, 2567, 1800, +2260, 2673, 0, +0, 2786, 0, +0, 2902, 0, +0, 3022, 0, +0, 3145, 0, +0, 3270, 0, +0, 3397, 0, +0, 3525, 0, +0, 3655, 0, +3159, 1993, 2868, +3159, 1994, 2868, +3159, 1995, 2867, +3159, 1996, 2867, +3159, 1998, 2867, +3158, 2000, 2866, +3158, 2003, 2865, +3157, 2007, 2864, +3156, 2012, 2863, +3155, 2019, 2861, +3153, 2028, 2859, +3151, 2040, 2856, +3148, 2056, 2852, +3144, 2075, 2846, +3139, 2101, 2838, +3132, 2132, 2827, +3122, 2172, 2813, +3109, 2219, 2793, +3090, 2276, 2764, +3064, 2342, 2723, +3026, 2418, 2661, +2971, 2503, 2562, +2884, 2596, 2383, +2733, 2697, 1915, +2395, 2804, 0, +0, 2917, 0, +0, 3033, 0, +0, 3154, 0, +0, 3277, 0, +0, 3402, 0, +0, 3529, 0, +0, 3657, 0, +3292, 2119, 2998, +3292, 2119, 2998, +3292, 2120, 2998, +3292, 2121, 2998, +3291, 2122, 2997, +3291, 2124, 2997, +3291, 2126, 2997, +3290, 2129, 2996, +3290, 2133, 2995, +3289, 2138, 2994, +3287, 2145, 2992, +3286, 2155, 2989, +3284, 2167, 2986, +3281, 2182, 2982, +3277, 2202, 2976, +3272, 2228, 2968, +3264, 2260, 2958, +3255, 2299, 2943, +3241, 2347, 2923, +3222, 2405, 2894, +3196, 2471, 2852, +3159, 2548, 2790, +3103, 2633, 2691, +3017, 2727, 2510, +2866, 2828, 2033, +2530, 2935, 0, +0, 3048, 0, +0, 3165, 0, +0, 3285, 0, +0, 3409, 0, +0, 3534, 0, +0, 3661, 0, +3424, 2246, 3129, +3424, 2246, 3129, +3424, 2246, 3129, +3424, 2247, 3129, +3424, 2248, 3129, +3424, 2249, 3128, +3424, 2251, 3128, +3423, 2253, 3127, +3423, 2257, 3127, +3422, 2261, 3126, +3421, 2266, 3124, +3420, 2273, 3123, +3418, 2282, 3120, +3416, 2294, 3117, +3413, 2310, 3113, +3409, 2330, 3107, +3404, 2356, 3099, +3397, 2388, 3088, +3387, 2428, 3074, +3374, 2477, 3053, +3355, 2534, 3024, +3329, 2601, 2983, +3291, 2678, 2920, +3236, 2763, 2820, +3149, 2857, 2639, +2999, 2959, 2155, +2663, 3066, 0, +0, 3179, 0, +0, 3297, 0, +0, 3417, 0, +0, 3540, 0, +0, 3666, 0, +3557, 2374, 3260, +3557, 2374, 3260, +3557, 2374, 3260, +3557, 2375, 3260, +3556, 2376, 3260, +3556, 2377, 3260, +3556, 2378, 3259, +3556, 2380, 3259, +3555, 2382, 3259, +3555, 2385, 3258, +3554, 2389, 3257, +3553, 2395, 3255, +3552, 2402, 3254, +3551, 2411, 3251, +3548, 2423, 3248, +3546, 2439, 3244, +3542, 2459, 3238, +3536, 2485, 3230, +3529, 2518, 3220, +3519, 2558, 3205, +3506, 2607, 3184, +3487, 2664, 3155, +3461, 2732, 3114, +3424, 2808, 3051, +3368, 2894, 2950, +3282, 2989, 2768, +3132, 3090, 2279, +2797, 3198, 0, +0, 3311, 0, +0, 3428, 0, +0, 3549, 0, +0, 3672, 0, +3689, 2503, 3392, +3689, 2503, 3392, +3689, 2503, 3392, +3689, 2504, 3392, +3689, 2504, 3392, +3689, 2505, 3391, +3689, 2506, 3391, +3688, 2507, 3391, +3688, 2509, 3390, +3688, 2511, 3390, +3687, 2515, 3389, +3687, 2519, 3388, +3686, 2524, 3387, +3684, 2531, 3385, +3683, 2541, 3383, +3681, 2553, 3380, +3678, 2569, 3375, +3674, 2589, 3369, +3669, 2615, 3362, +3661, 2648, 3351, +3652, 2688, 3336, +3638, 2737, 3316, +3620, 2795, 3287, +3594, 2863, 3245, +3556, 2940, 3182, +3501, 3026, 3081, +3414, 3120, 2898, +3265, 3222, 2405, +2930, 3330, 0, +0, 3443, 0, +0, 3560, 0, +0, 3681, 0, +3821, 2633, 3524, +3821, 2633, 3523, +3821, 2633, 3523, +3821, 2633, 3523, +3821, 2634, 3523, +3821, 2634, 3523, +3821, 2635, 3523, +3821, 2636, 3523, +3821, 2637, 3522, +3820, 2639, 3522, +3820, 2642, 3521, +3819, 2645, 3521, +3819, 2649, 3520, +3818, 2654, 3518, +3817, 2661, 3517, +3815, 2671, 3514, +3813, 2683, 3511, +3810, 2699, 3507, +3806, 2720, 3501, +3801, 2746, 3493, +3794, 2779, 3482, +3784, 2819, 3468, +3770, 2868, 3447, +3752, 2926, 3418, +3726, 2994, 3376, +3688, 3071, 3313, +3633, 3157, 3212, +3547, 3252, 3029, +3397, 3353, 2532, +3063, 3461, 0, +0, 3575, 0, +0, 3692, 0, +3954, 2763, 3655, +3954, 2763, 3655, +3954, 2763, 3655, +3954, 2764, 3655, +3953, 2764, 3655, +3953, 2764, 3655, +3953, 2765, 3655, +3953, 2766, 3655, +3953, 2767, 3654, +3953, 2768, 3654, +3953, 2770, 3654, +3952, 2772, 3653, +3952, 2775, 3652, +3951, 2779, 3651, +3950, 2785, 3650, +3949, 2792, 3648, +3947, 2802, 3646, +3945, 2814, 3643, +3942, 2830, 3639, +3938, 2851, 3633, +3933, 2877, 3625, +3926, 2910, 3614, +3916, 2950, 3599, +3903, 2999, 3579, +3884, 3057, 3550, +3858, 3125, 3508, +3821, 3202, 3444, +3765, 3289, 3344, +3679, 3383, 3160, +3529, 3485, 2661, +3195, 3593, 0, +0, 3706, 0, +4086, 2894, 3787, +4086, 2894, 3787, +4086, 2894, 3787, +4086, 2894, 3787, +4086, 2895, 3787, +4086, 2895, 3787, +4086, 2895, 3787, +4085, 2896, 3787, +4085, 2897, 3786, +4085, 2898, 3786, +4085, 2899, 3786, +4085, 2901, 3786, +4084, 2903, 3785, +4084, 2906, 3784, +4083, 2910, 3783, +4082, 2916, 3782, +4081, 2923, 3780, +4079, 2933, 3778, +4077, 2945, 3775, +4074, 2961, 3770, +4071, 2982, 3765, +4065, 3008, 3757, +4058, 3041, 3746, +4048, 3081, 3731, +4035, 3130, 3710, +4016, 3189, 3681, +3990, 3257, 3639, +3953, 3334, 3576, +3898, 3420, 3475, +3811, 3515, 3291, +3662, 3617, 2790, +3328, 3725, 0, +4095, 3025, 3919, +4095, 3025, 3919, +4095, 3025, 3919, +4095, 3025, 3919, +4095, 3026, 3919, +4095, 3026, 3919, +4095, 3026, 3919, +4095, 3027, 3919, +4095, 3027, 3919, +4095, 3028, 3918, +4095, 3029, 3918, +4095, 3030, 3918, +4095, 3032, 3917, +4095, 3034, 3917, +4095, 3037, 3916, +4095, 3042, 3915, +4095, 3047, 3914, +4095, 3054, 3912, +4095, 3064, 3910, +4095, 3076, 3906, +4095, 3092, 3902, +4095, 3113, 3896, +4095, 3139, 3888, +4095, 3172, 3878, +4095, 3213, 3863, +4095, 3262, 3842, +4095, 3320, 3813, +4095, 3388, 3771, +4085, 3466, 3708, +4030, 3552, 3607, +3943, 3647, 3422, +3794, 3749, 2920, +4095, 3156, 4051, +4095, 3157, 4051, +4095, 3157, 4051, +4095, 3157, 4051, +4095, 3157, 4051, +4095, 3157, 4051, +4095, 3157, 4051, +4095, 3158, 4051, +4095, 3158, 4051, +4095, 3159, 4050, +4095, 3159, 4050, +4095, 3160, 4050, +4095, 3162, 4050, +4095, 3163, 4049, +4095, 3166, 4049, +4095, 3169, 4048, +4095, 3173, 4047, +4095, 3179, 4046, +4095, 3186, 4044, +4095, 3195, 4042, +4095, 3208, 4038, +4095, 3224, 4034, +4095, 3245, 4028, +4095, 3271, 4020, +4095, 3304, 4010, +4095, 3345, 3995, +4095, 3394, 3974, +4095, 3452, 3945, +4095, 3520, 3903, +4095, 3598, 3840, +4095, 3684, 3738, +4075, 3779, 3554, +0, 843, 1089, +0, 852, 1080, +0, 864, 1068, +0, 879, 1052, +0, 898, 1030, +0, 923, 998, +0, 954, 952, +0, 992, 882, +0, 1039, 767, +0, 1094, 545, +0, 1160, 0, +0, 1234, 0, +0, 1318, 0, +0, 1411, 0, +0, 1511, 0, +0, 1617, 0, +0, 1729, 0, +0, 1846, 0, +0, 1966, 0, +0, 2089, 0, +0, 2214, 0, +0, 2341, 0, +0, 2469, 0, +0, 2598, 0, +0, 2728, 0, +0, 2858, 0, +0, 2989, 0, +0, 3120, 0, +0, 3251, 0, +0, 3383, 0, +0, 3515, 0, +0, 3646, 0, +0, 846, 1101, +0, 855, 1093, +0, 867, 1082, +0, 881, 1066, +0, 901, 1044, +0, 925, 1013, +0, 956, 969, +0, 994, 901, +0, 1041, 792, +0, 1096, 585, +0, 1161, 0, +0, 1236, 0, +0, 1319, 0, +0, 1412, 0, +0, 1512, 0, +0, 1618, 0, +0, 1730, 0, +0, 1846, 0, +0, 1966, 0, +0, 2089, 0, +0, 2214, 0, +0, 2341, 0, +0, 2469, 0, +0, 2598, 0, +0, 2728, 0, +0, 2858, 0, +0, 2989, 0, +0, 3120, 0, +0, 3251, 0, +0, 3383, 0, +0, 3515, 0, +0, 3646, 0, +0, 850, 1117, +0, 859, 1109, +0, 870, 1098, +0, 885, 1083, +0, 904, 1063, +0, 928, 1033, +0, 959, 990, +0, 997, 926, +0, 1043, 823, +0, 1098, 634, +0, 1163, 101, +0, 1237, 0, +0, 1321, 0, +0, 1413, 0, +0, 1513, 0, +0, 1619, 0, +0, 1730, 0, +0, 1847, 0, +0, 1967, 0, +0, 2089, 0, +0, 2214, 0, +0, 2341, 0, +0, 2469, 0, +0, 2598, 0, +0, 2728, 0, +0, 2858, 0, +0, 2989, 0, +0, 3120, 0, +0, 3251, 0, +0, 3383, 0, +0, 3515, 0, +0, 3646, 0, +0, 856, 1138, +0, 864, 1130, +0, 875, 1120, +0, 890, 1106, +0, 909, 1086, +0, 933, 1058, +0, 963, 1018, +0, 1001, 957, +0, 1047, 862, +0, 1101, 692, +0, 1166, 266, +0, 1240, 0, +0, 1323, 0, +0, 1414, 0, +0, 1514, 0, +0, 1620, 0, +0, 1731, 0, +0, 1847, 0, +0, 1967, 0, +0, 2090, 0, +0, 2215, 0, +0, 2341, 0, +0, 2469, 0, +0, 2598, 0, +0, 2728, 0, +0, 2858, 0, +0, 2989, 0, +0, 3120, 0, +0, 3251, 0, +0, 3383, 0, +0, 3515, 0, +0, 3646, 0, +0, 863, 1164, +0, 871, 1157, +0, 882, 1147, +0, 897, 1134, +0, 915, 1115, +0, 939, 1089, +0, 969, 1052, +0, 1006, 996, +0, 1051, 909, +0, 1106, 759, +0, 1169, 421, +0, 1243, 0, +0, 1325, 0, +0, 1417, 0, +0, 1515, 0, +0, 1621, 0, +0, 1732, 0, +0, 1848, 0, +0, 1968, 0, +0, 2090, 0, +0, 2215, 0, +0, 2341, 0, +0, 2469, 0, +0, 2598, 0, +0, 2728, 0, +0, 2858, 0, +0, 2989, 0, +0, 3120, 0, +0, 3252, 0, +0, 3383, 0, +0, 3515, 0, +0, 3646, 0, +133, 872, 1198, +32, 880, 1191, +0, 891, 1182, +0, 905, 1169, +0, 923, 1152, +0, 947, 1128, +0, 976, 1094, +0, 1013, 1043, +0, 1057, 966, +0, 1111, 836, +0, 1174, 570, +0, 1247, 0, +0, 1329, 0, +0, 1419, 0, +0, 1518, 0, +0, 1623, 0, +0, 1734, 0, +0, 1849, 0, +0, 1968, 0, +0, 2091, 0, +0, 2215, 0, +0, 2342, 0, +0, 2470, 0, +0, 2599, 0, +0, 2728, 0, +0, 2858, 0, +0, 2989, 0, +0, 3120, 0, +0, 3252, 0, +0, 3383, 0, +0, 3515, 0, +0, 3647, 0, +615, 884, 1238, +582, 892, 1232, +535, 902, 1224, +462, 916, 1213, +342, 934, 1197, +107, 957, 1175, +0, 986, 1144, +0, 1021, 1100, +0, 1065, 1032, +0, 1118, 922, +0, 1180, 714, +0, 1252, 39, +0, 1333, 0, +0, 1423, 0, +0, 1521, 0, +0, 1625, 0, +0, 1735, 0, +0, 1851, 0, +0, 1970, 0, +0, 2092, 0, +0, 2216, 0, +0, 2342, 0, +0, 2470, 0, +0, 2599, 0, +0, 2728, 0, +0, 2859, 0, +0, 2989, 0, +0, 3120, 0, +0, 3252, 0, +0, 3383, 0, +0, 3515, 0, +0, 3647, 0, +901, 899, 1288, +883, 907, 1282, +859, 917, 1275, +825, 931, 1265, +775, 948, 1251, +698, 970, 1231, +569, 998, 1204, +307, 1033, 1165, +0, 1076, 1107, +0, 1127, 1016, +0, 1188, 855, +0, 1259, 474, +0, 1339, 0, +0, 1428, 0, +0, 1524, 0, +0, 1628, 0, +0, 1738, 0, +0, 1852, 0, +0, 1971, 0, +0, 2093, 0, +0, 2217, 0, +0, 2343, 0, +0, 2470, 0, +0, 2599, 0, +0, 2729, 0, +0, 2859, 0, +0, 2989, 0, +0, 3120, 0, +0, 3252, 0, +0, 3383, 0, +0, 3515, 0, +0, 3647, 0, +1121, 919, 1346, +1110, 927, 1341, +1096, 937, 1335, +1076, 949, 1326, +1048, 966, 1314, +1007, 987, 1297, +947, 1014, 1274, +850, 1048, 1241, +677, 1089, 1192, +240, 1140, 1117, +0, 1199, 994, +0, 1268, 747, +0, 1347, 0, +0, 1434, 0, +0, 1530, 0, +0, 1632, 0, +0, 1741, 0, +0, 1855, 0, +0, 1973, 0, +0, 2094, 0, +0, 2218, 0, +0, 2344, 0, +0, 2471, 0, +0, 2600, 0, +0, 2729, 0, +0, 2859, 0, +0, 2990, 0, +0, 3121, 0, +0, 3252, 0, +0, 3383, 0, +0, 3515, 0, +0, 3647, 0, +1309, 945, 1414, +1302, 952, 1410, +1293, 961, 1405, +1280, 973, 1397, +1262, 989, 1387, +1237, 1009, 1372, +1202, 1035, 1353, +1149, 1067, 1325, +1068, 1107, 1285, +930, 1156, 1225, +639, 1213, 1130, +0, 1280, 962, +0, 1357, 546, +0, 1442, 0, +0, 1536, 0, +0, 1638, 0, +0, 1745, 0, +0, 1858, 0, +0, 1976, 0, +0, 2096, 0, +0, 2220, 0, +0, 2345, 0, +0, 2472, 0, +0, 2600, 0, +0, 2729, 0, +0, 2859, 0, +0, 2990, 0, +0, 3121, 0, +0, 3252, 0, +0, 3383, 0, +0, 3515, 0, +0, 3647, 0, +1479, 977, 1492, +1475, 983, 1488, +1468, 992, 1484, +1460, 1003, 1477, +1448, 1018, 1469, +1431, 1037, 1457, +1408, 1061, 1441, +1376, 1092, 1418, +1328, 1130, 1385, +1255, 1176, 1338, +1136, 1231, 1266, +901, 1296, 1148, +0, 1370, 916, +0, 1453, 0, +0, 1545, 0, +0, 1645, 0, +0, 1751, 0, +0, 1863, 0, +0, 1979, 0, +0, 2099, 0, +0, 2221, 0, +0, 2346, 0, +0, 2473, 0, +0, 2601, 0, +0, 2730, 0, +0, 2860, 0, +0, 2990, 0, +0, 3121, 0, +0, 3252, 0, +0, 3384, 0, +0, 3515, 0, +0, 3647, 0, +1638, 1016, 1579, +1635, 1022, 1576, +1630, 1030, 1572, +1624, 1041, 1567, +1616, 1054, 1559, +1604, 1072, 1550, +1589, 1094, 1537, +1567, 1123, 1518, +1537, 1158, 1492, +1492, 1202, 1455, +1425, 1254, 1401, +1316, 1316, 1316, +1111, 1387, 1169, +459, 1468, 847, +0, 1557, 0, +0, 1654, 0, +0, 1758, 0, +0, 1869, 0, +0, 1983, 0, +0, 2102, 0, +0, 2224, 0, +0, 2348, 0, +0, 2475, 0, +0, 2602, 0, +0, 2731, 0, +0, 2861, 0, +0, 2991, 0, +0, 3121, 0, +0, 3252, 0, +0, 3384, 0, +0, 3515, 0, +0, 3647, 0, +1789, 1064, 1673, +1786, 1070, 1671, +1783, 1077, 1668, +1779, 1086, 1664, +1773, 1099, 1658, +1765, 1115, 1650, +1754, 1135, 1640, +1739, 1161, 1625, +1719, 1194, 1605, +1689, 1234, 1576, +1647, 1283, 1535, +1583, 1341, 1473, +1481, 1409, 1375, +1293, 1486, 1197, +773, 1572, 733, +0, 1667, 0, +0, 1768, 0, +0, 1876, 0, +0, 1989, 0, +0, 2107, 0, +0, 2228, 0, +0, 2351, 0, +0, 2477, 0, +0, 2604, 0, +0, 2732, 0, +0, 2861, 0, +0, 2991, 0, +0, 3122, 0, +0, 3253, 0, +0, 3384, 0, +0, 3515, 0, +0, 3647, 0, +1934, 1121, 1775, +1933, 1126, 1774, +1930, 1133, 1771, +1927, 1141, 1768, +1923, 1152, 1763, +1917, 1166, 1757, +1910, 1184, 1749, +1899, 1208, 1737, +1885, 1237, 1721, +1864, 1274, 1700, +1836, 1319, 1668, +1795, 1373, 1623, +1734, 1436, 1555, +1636, 1509, 1443, +1460, 1592, 1231, +1006, 1682, 516, +0, 1781, 0, +0, 1886, 0, +0, 1997, 0, +0, 2113, 0, +0, 2232, 0, +0, 2355, 0, +0, 2479, 0, +0, 2606, 0, +0, 2734, 0, +0, 2863, 0, +0, 2992, 0, +0, 3123, 0, +0, 3253, 0, +0, 3384, 0, +0, 3516, 0, +0, 3647, 0, +2076, 1188, 1884, +2075, 1192, 1882, +2074, 1198, 1880, +2071, 1205, 1878, +2068, 1214, 1874, +2064, 1227, 1869, +2058, 1243, 1863, +2051, 1264, 1854, +2041, 1290, 1842, +2026, 1323, 1825, +2007, 1363, 1802, +1979, 1413, 1768, +1939, 1471, 1720, +1879, 1539, 1645, +1784, 1616, 1521, +1616, 1703, 1274, +1200, 1798, 0, +0, 1899, 0, +0, 2008, 0, +0, 2121, 0, +0, 2239, 0, +0, 2359, 0, +0, 2483, 0, +0, 2609, 0, +0, 2736, 0, +0, 2864, 0, +0, 2993, 0, +0, 3123, 0, +0, 3254, 0, +0, 3385, 0, +0, 3516, 0, +0, 3648, 0, +2216, 1264, 1997, +2215, 1268, 1996, +2214, 1272, 1995, +2212, 1279, 1992, +2210, 1287, 1990, +2207, 1297, 1986, +2203, 1311, 1981, +2197, 1329, 1974, +2190, 1352, 1965, +2179, 1381, 1952, +2165, 1417, 1935, +2146, 1461, 1910, +2119, 1513, 1875, +2079, 1576, 1823, +2021, 1648, 1743, +1928, 1729, 1608, +1765, 1819, 1325, +1374, 1916, 0, +0, 2021, 0, +0, 2132, 0, +0, 2247, 0, +0, 2366, 0, +0, 2488, 0, +0, 2612, 0, +0, 2739, 0, +0, 2866, 0, +0, 2995, 0, +0, 3125, 0, +0, 3255, 0, +0, 3386, 0, +0, 3517, 0, +0, 3648, 0, +2353, 1349, 2115, +2353, 1352, 2114, +2352, 1356, 2113, +2350, 1361, 2111, +2349, 1368, 2109, +2347, 1377, 2106, +2344, 1389, 2102, +2340, 1404, 2097, +2334, 1423, 2090, +2327, 1448, 2080, +2317, 1479, 2067, +2303, 1518, 2049, +2284, 1565, 2023, +2257, 1621, 1987, +2218, 1686, 1932, +2160, 1761, 1848, +2069, 1846, 1703, +1910, 1938, 1386, +1535, 2039, 0, +0, 2145, 0, +0, 2257, 0, +0, 2374, 0, +0, 2494, 0, +0, 2617, 0, +0, 2742, 0, +0, 2869, 0, +0, 2997, 0, +0, 3126, 0, +0, 3256, 0, +0, 3386, 0, +0, 3517, 0, +0, 3648, 0, +2489, 1443, 2236, +2489, 1445, 2235, +2488, 1449, 2234, +2487, 1453, 2233, +2486, 1458, 2231, +2484, 1466, 2229, +2482, 1475, 2226, +2479, 1488, 2222, +2475, 1504, 2217, +2470, 1525, 2210, +2462, 1551, 2200, +2452, 1584, 2186, +2439, 1625, 2167, +2420, 1675, 2141, +2393, 1733, 2103, +2355, 1802, 2047, +2297, 1879, 1958, +2208, 1966, 1805, +2051, 2061, 1456, +1688, 2163, 0, +0, 2271, 0, +0, 2385, 0, +0, 2502, 0, +0, 2623, 0, +0, 2747, 0, +0, 2873, 0, +0, 3000, 0, +0, 3128, 0, +0, 3258, 0, +0, 3388, 0, +0, 3518, 0, +0, 3649, 0, +2624, 1544, 2359, +2624, 1546, 2359, +2624, 1549, 2358, +2623, 1552, 2357, +2622, 1556, 2356, +2621, 1562, 2354, +2619, 1570, 2352, +2617, 1580, 2349, +2614, 1593, 2345, +2610, 1611, 2340, +2605, 1633, 2332, +2597, 1661, 2322, +2587, 1695, 2308, +2574, 1738, 2289, +2555, 1789, 2262, +2528, 1850, 2223, +2490, 1921, 2165, +2433, 2000, 2074, +2345, 2089, 1914, +2190, 2186, 1535, +1835, 2289, 0, +0, 2399, 0, +0, 2513, 0, +0, 2632, 0, +0, 2753, 0, +0, 2877, 0, +0, 3004, 0, +0, 3131, 0, +0, 3260, 0, +0, 3389, 0, +0, 3519, 0, +0, 3650, 0, +2759, 1651, 2485, +2758, 1653, 2485, +2758, 1655, 2484, +2758, 1658, 2483, +2757, 1661, 2482, +2756, 1666, 2481, +2755, 1672, 2480, +2753, 1680, 2477, +2751, 1691, 2474, +2748, 1705, 2470, +2744, 1723, 2465, +2739, 1746, 2457, +2731, 1775, 2447, +2721, 1811, 2433, +2708, 1855, 2413, +2689, 1908, 2385, +2663, 1971, 2346, +2625, 2043, 2287, +2568, 2124, 2193, +2480, 2214, 2027, +2327, 2312, 1623, +1978, 2417, 0, +0, 2527, 0, +0, 2643, 0, +0, 2762, 0, +0, 2884, 0, +0, 3008, 0, +0, 3135, 0, +0, 3262, 0, +0, 3391, 0, +0, 3521, 0, +0, 3651, 0, +2892, 1764, 2612, +2892, 1765, 2612, +2892, 1767, 2612, +2892, 1769, 2611, +2891, 1772, 2610, +2890, 1775, 2609, +2889, 1780, 2608, +2888, 1787, 2606, +2887, 1795, 2604, +2884, 1806, 2601, +2882, 1821, 2597, +2878, 1839, 2591, +2872, 1863, 2584, +2865, 1893, 2573, +2855, 1930, 2559, +2842, 1976, 2539, +2823, 2030, 2511, +2797, 2094, 2471, +2759, 2167, 2411, +2703, 2250, 2315, +2615, 2341, 2145, +2463, 2440, 1720, +2118, 2546, 0, +0, 2657, 0, +0, 2773, 0, +0, 2892, 0, +0, 3015, 0, +0, 3140, 0, +0, 3266, 0, +0, 3394, 0, +0, 3523, 0, +0, 3653, 0, +3026, 1881, 2741, +3026, 1882, 2740, +3025, 1883, 2740, +3025, 1885, 2740, +3025, 1887, 2739, +3024, 1890, 2738, +3024, 1894, 2737, +3023, 1899, 2736, +3021, 1905, 2734, +3020, 1914, 2732, +3018, 1926, 2729, +3015, 1940, 2725, +3011, 1960, 2719, +3005, 1984, 2712, +2998, 2015, 2701, +2988, 2053, 2687, +2975, 2099, 2667, +2956, 2154, 2638, +2930, 2219, 2598, +2892, 2294, 2537, +2836, 2377, 2440, +2749, 2469, 2266, +2598, 2569, 1823, +2256, 2675, 0, +0, 2787, 0, +0, 2903, 0, +0, 3023, 0, +0, 3146, 0, +0, 3271, 0, +0, 3398, 0, +0, 3526, 0, +0, 3655, 0, +3159, 2002, 2870, +3159, 2002, 2870, +3158, 2003, 2870, +3158, 2005, 2869, +3158, 2006, 2869, +3158, 2008, 2868, +3157, 2011, 2868, +3156, 2015, 2867, +3156, 2020, 2865, +3154, 2027, 2864, +3153, 2036, 2861, +3151, 2048, 2858, +3148, 2063, 2854, +3144, 2082, 2848, +3138, 2107, 2840, +3131, 2139, 2830, +3121, 2177, 2815, +3108, 2224, 2795, +3089, 2280, 2767, +3063, 2346, 2726, +3025, 2421, 2664, +2970, 2506, 2566, +2883, 2598, 2390, +2732, 2699, 1933, +2392, 2805, 0, +0, 2918, 0, +0, 3034, 0, +0, 3154, 0, +0, 3277, 0, +0, 3403, 0, +0, 3529, 0, +0, 3658, 0, +3291, 2125, 3000, +3291, 2125, 3000, +3291, 2126, 3000, +3291, 2127, 2999, +3291, 2128, 2999, +3291, 2130, 2999, +3290, 2132, 2998, +3290, 2135, 2997, +3289, 2139, 2996, +3288, 2145, 2995, +3287, 2151, 2993, +3285, 2161, 2991, +3283, 2172, 2988, +3280, 2188, 2984, +3276, 2208, 2978, +3271, 2233, 2970, +3264, 2264, 2960, +3254, 2304, 2945, +3241, 2351, 2925, +3222, 2408, 2896, +3196, 2474, 2855, +3158, 2550, 2793, +3103, 2635, 2694, +3016, 2728, 2515, +2865, 2829, 2047, +2527, 2936, 0, +0, 3049, 0, +0, 3166, 0, +0, 3286, 0, +0, 3409, 0, +0, 3534, 0, +0, 3661, 0, +3424, 2250, 3130, +3424, 2251, 3130, +3424, 2251, 3130, +3424, 2252, 3130, +3424, 2253, 3130, +3423, 2254, 3130, +3423, 2256, 3129, +3423, 2258, 3129, +3422, 2261, 3128, +3422, 2265, 3127, +3421, 2271, 3126, +3420, 2278, 3124, +3418, 2287, 3122, +3416, 2299, 3118, +3413, 2314, 3114, +3409, 2334, 3108, +3404, 2360, 3101, +3396, 2392, 3090, +3387, 2431, 3075, +3373, 2479, 3055, +3355, 2537, 3026, +3328, 2603, 2984, +3291, 2680, 2922, +3235, 2765, 2823, +3149, 2859, 2643, +2999, 2960, 2165, +2662, 3067, 0, +0, 3180, 0, +0, 3297, 0, +0, 3418, 0, +0, 3541, 0, +0, 3666, 0, +3557, 2377, 3261, +3557, 2378, 3261, +3556, 2378, 3261, +3556, 2379, 3261, +3556, 2379, 3261, +3556, 2380, 3261, +3556, 2382, 3260, +3556, 2383, 3260, +3555, 2386, 3259, +3555, 2389, 3259, +3554, 2393, 3258, +3553, 2398, 3256, +3552, 2405, 3255, +3550, 2414, 3252, +3548, 2427, 3249, +3545, 2442, 3245, +3541, 2462, 3239, +3536, 2488, 3231, +3529, 2520, 3221, +3519, 2560, 3206, +3506, 2609, 3185, +3487, 2666, 3157, +3461, 2733, 3115, +3423, 2810, 3052, +3368, 2896, 2952, +3281, 2989, 2771, +3131, 3091, 2287, +2795, 3198, 0, +0, 3311, 0, +0, 3429, 0, +0, 3549, 0, +0, 3673, 0, +3689, 2506, 3393, +3689, 2506, 3393, +3689, 2506, 3392, +3689, 2506, 3392, +3689, 2507, 3392, +3689, 2508, 3392, +3688, 2509, 3392, +3688, 2510, 3392, +3688, 2512, 3391, +3688, 2514, 3391, +3687, 2517, 3390, +3686, 2521, 3389, +3686, 2527, 3388, +3684, 2534, 3386, +3683, 2543, 3383, +3681, 2555, 3380, +3678, 2571, 3376, +3674, 2592, 3370, +3668, 2617, 3362, +3661, 2650, 3352, +3651, 2690, 3337, +3638, 2739, 3316, +3619, 2796, 3287, +3593, 2864, 3246, +3556, 2941, 3183, +3500, 3026, 3083, +3414, 3121, 2900, +3264, 3222, 2411, +2929, 3330, 0, +0, 3443, 0, +0, 3560, 0, +0, 3681, 0, +3821, 2635, 3524, +3821, 2635, 3524, +3821, 2635, 3524, +3821, 2635, 3524, +3821, 2636, 3524, +3821, 2636, 3524, +3821, 2637, 3523, +3821, 2638, 3523, +3821, 2639, 3523, +3820, 2641, 3523, +3820, 2644, 3522, +3819, 2647, 3521, +3819, 2651, 3520, +3818, 2656, 3519, +3817, 2663, 3517, +3815, 2673, 3515, +3813, 2685, 3512, +3810, 2701, 3507, +3806, 2721, 3502, +3801, 2747, 3494, +3794, 2780, 3483, +3784, 2820, 3468, +3770, 2869, 3448, +3752, 2927, 3419, +3726, 2995, 3377, +3688, 3072, 3314, +3633, 3158, 3213, +3546, 3252, 3030, +3397, 3354, 2537, +3062, 3462, 0, +0, 3575, 0, +0, 3692, 0, +3953, 2765, 3656, +3953, 2765, 3656, +3953, 2765, 3656, +3953, 2765, 3656, +3953, 2765, 3655, +3953, 2766, 3655, +3953, 2766, 3655, +3953, 2767, 3655, +3953, 2768, 3655, +3953, 2770, 3655, +3952, 2771, 3654, +3952, 2774, 3654, +3952, 2777, 3653, +3951, 2781, 3652, +3950, 2786, 3651, +3949, 2793, 3649, +3947, 2803, 3646, +3945, 2815, 3643, +3942, 2831, 3639, +3938, 2852, 3633, +3933, 2878, 3625, +3926, 2911, 3615, +3916, 2951, 3600, +3903, 3000, 3579, +3884, 3058, 3550, +3858, 3126, 3508, +3821, 3203, 3445, +3765, 3289, 3344, +3679, 3384, 3161, +3529, 3485, 2664, +3195, 3593, 0, +0, 3707, 0, +4086, 2895, 3787, +4086, 2895, 3787, +4086, 2895, 3787, +4086, 2896, 3787, +4086, 2896, 3787, +4086, 2896, 3787, +4086, 2896, 3787, +4085, 2897, 3787, +4085, 2898, 3787, +4085, 2899, 3787, +4085, 2900, 3786, +4085, 2902, 3786, +4084, 2904, 3785, +4084, 2907, 3785, +4083, 2911, 3784, +4082, 2917, 3782, +4081, 2924, 3780, +4079, 2934, 3778, +4077, 2946, 3775, +4074, 2962, 3771, +4070, 2983, 3765, +4065, 3009, 3757, +4058, 3042, 3746, +4048, 3082, 3731, +4035, 3131, 3711, +4016, 3189, 3682, +3990, 3257, 3640, +3953, 3334, 3577, +3897, 3421, 3476, +3811, 3515, 3292, +3662, 3617, 2793, +3327, 3725, 0, +4095, 3026, 3919, +4095, 3026, 3919, +4095, 3026, 3919, +4095, 3026, 3919, +4095, 3026, 3919, +4095, 3027, 3919, +4095, 3027, 3919, +4095, 3027, 3919, +4095, 3028, 3919, +4095, 3029, 3919, +4095, 3030, 3918, +4095, 3031, 3918, +4095, 3033, 3918, +4095, 3035, 3917, +4095, 3038, 3916, +4095, 3042, 3915, +4095, 3048, 3914, +4095, 3055, 3912, +4095, 3065, 3910, +4095, 3077, 3907, +4095, 3093, 3902, +4095, 3114, 3897, +4095, 3140, 3889, +4095, 3173, 3878, +4095, 3213, 3863, +4095, 3263, 3843, +4095, 3321, 3813, +4095, 3389, 3771, +4085, 3466, 3708, +4030, 3552, 3607, +3943, 3647, 3423, +3794, 3749, 2922, +4095, 3157, 4051, +4095, 3157, 4051, +4095, 3157, 4051, +4095, 3157, 4051, +4095, 3157, 4051, +4095, 3158, 4051, +4095, 3158, 4051, +4095, 3158, 4051, +4095, 3159, 4051, +4095, 3159, 4051, +4095, 3160, 4050, +4095, 3161, 4050, +4095, 3162, 4050, +4095, 3164, 4049, +4095, 3166, 4049, +4095, 3170, 4048, +4095, 3174, 4047, +4095, 3179, 4046, +4095, 3186, 4044, +4095, 3196, 4042, +4095, 3208, 4039, +4095, 3224, 4034, +4095, 3245, 4028, +4095, 3271, 4021, +4095, 3304, 4010, +4095, 3345, 3995, +4095, 3394, 3974, +4095, 3453, 3945, +4095, 3520, 3903, +4095, 3598, 3840, +4095, 3684, 3739, +4075, 3779, 3555, +0, 966, 1218, +0, 973, 1211, +0, 982, 1202, +0, 994, 1191, +0, 1009, 1174, +0, 1028, 1151, +0, 1053, 1119, +0, 1084, 1071, +0, 1122, 999, +0, 1169, 879, +0, 1225, 645, +0, 1291, 0, +0, 1366, 0, +0, 1450, 0, +0, 1542, 0, +0, 1643, 0, +0, 1749, 0, +0, 1861, 0, +0, 1978, 0, +0, 2098, 0, +0, 2221, 0, +0, 2346, 0, +0, 2473, 0, +0, 2601, 0, +0, 2730, 0, +0, 2860, 0, +0, 2990, 0, +0, 3121, 0, +0, 3252, 0, +0, 3383, 0, +0, 3515, 0, +0, 3647, 0, +0, 969, 1227, +0, 975, 1221, +0, 984, 1212, +0, 996, 1201, +0, 1011, 1185, +0, 1030, 1162, +0, 1055, 1130, +0, 1086, 1084, +0, 1124, 1014, +0, 1171, 899, +0, 1226, 677, +0, 1292, 0, +0, 1367, 0, +0, 1451, 0, +0, 1543, 0, +0, 1643, 0, +0, 1750, 0, +0, 1862, 0, +0, 1978, 0, +0, 2098, 0, +0, 2221, 0, +0, 2346, 0, +0, 2473, 0, +0, 2601, 0, +0, 2730, 0, +0, 2860, 0, +0, 2990, 0, +0, 3121, 0, +0, 3252, 0, +0, 3384, 0, +0, 3515, 0, +0, 3647, 0, +0, 972, 1239, +0, 978, 1233, +0, 987, 1225, +0, 999, 1214, +0, 1014, 1198, +0, 1033, 1176, +0, 1057, 1146, +0, 1088, 1101, +0, 1126, 1033, +0, 1173, 924, +0, 1228, 717, +0, 1293, 53, +0, 1368, 0, +0, 1452, 0, +0, 1544, 0, +0, 1644, 0, +0, 1750, 0, +0, 1862, 0, +0, 1978, 0, +0, 2098, 0, +0, 2221, 0, +0, 2346, 0, +0, 2473, 0, +0, 2601, 0, +0, 2730, 0, +0, 2860, 0, +0, 2990, 0, +0, 3121, 0, +0, 3252, 0, +0, 3384, 0, +0, 3515, 0, +0, 3647, 0, +0, 976, 1255, +0, 982, 1249, +0, 991, 1241, +0, 1002, 1230, +0, 1017, 1215, +0, 1036, 1195, +0, 1061, 1165, +0, 1091, 1122, +0, 1129, 1058, +0, 1175, 955, +0, 1231, 766, +0, 1295, 233, +0, 1370, 0, +0, 1453, 0, +0, 1545, 0, +0, 1645, 0, +0, 1751, 0, +0, 1863, 0, +0, 1979, 0, +0, 2099, 0, +0, 2221, 0, +0, 2346, 0, +0, 2473, 0, +0, 2601, 0, +0, 2730, 0, +0, 2860, 0, +0, 2990, 0, +0, 3121, 0, +0, 3252, 0, +0, 3384, 0, +0, 3515, 0, +0, 3647, 0, +0, 981, 1276, +0, 988, 1270, +0, 996, 1263, +0, 1008, 1252, +0, 1022, 1238, +0, 1041, 1218, +0, 1065, 1190, +0, 1095, 1150, +0, 1133, 1090, +0, 1179, 994, +0, 1234, 824, +0, 1298, 398, +0, 1372, 0, +0, 1455, 0, +0, 1547, 0, +0, 1646, 0, +0, 1752, 0, +0, 1863, 0, +0, 1979, 0, +0, 2099, 0, +0, 2222, 0, +0, 2347, 0, +0, 2473, 0, +0, 2601, 0, +0, 2730, 0, +0, 2860, 0, +0, 2990, 0, +0, 3121, 0, +0, 3252, 0, +0, 3384, 0, +0, 3515, 0, +0, 3647, 0, +0, 988, 1302, +0, 995, 1297, +0, 1003, 1289, +0, 1014, 1280, +0, 1029, 1266, +0, 1047, 1247, +0, 1071, 1221, +0, 1101, 1184, +0, 1138, 1128, +0, 1183, 1041, +0, 1238, 891, +0, 1301, 553, +0, 1375, 0, +0, 1457, 0, +0, 1549, 0, +0, 1648, 0, +0, 1753, 0, +0, 1864, 0, +0, 1980, 0, +0, 2100, 0, +0, 2222, 0, +0, 2347, 0, +0, 2474, 0, +0, 2601, 0, +0, 2730, 0, +0, 2860, 0, +0, 2990, 0, +0, 3121, 0, +0, 3252, 0, +0, 3384, 0, +0, 3515, 0, +0, 3647, 0, +329, 998, 1335, +265, 1004, 1330, +164, 1012, 1323, +0, 1023, 1314, +0, 1037, 1301, +0, 1055, 1284, +0, 1079, 1260, +0, 1108, 1226, +0, 1145, 1175, +0, 1189, 1098, +0, 1243, 968, +0, 1306, 702, +0, 1379, 0, +0, 1461, 0, +0, 1551, 0, +0, 1650, 0, +0, 1755, 0, +0, 1866, 0, +0, 1981, 0, +0, 2101, 0, +0, 2223, 0, +0, 2347, 0, +0, 2474, 0, +0, 2602, 0, +0, 2731, 0, +0, 2860, 0, +0, 2991, 0, +0, 3121, 0, +0, 3252, 0, +0, 3384, 0, +0, 3515, 0, +0, 3647, 0, +770, 1010, 1375, +747, 1016, 1370, +715, 1024, 1364, +667, 1035, 1356, +594, 1048, 1345, +474, 1066, 1329, +239, 1089, 1307, +0, 1118, 1276, +0, 1154, 1232, +0, 1197, 1164, +0, 1250, 1054, +0, 1312, 846, +0, 1384, 171, +0, 1465, 0, +0, 1555, 0, +0, 1653, 0, +0, 1757, 0, +0, 1868, 0, +0, 1983, 0, +0, 2102, 0, +0, 2224, 0, +0, 2348, 0, +0, 2474, 0, +0, 2602, 0, +0, 2731, 0, +0, 2860, 0, +0, 2991, 0, +0, 3121, 0, +0, 3252, 0, +0, 3384, 0, +0, 3515, 0, +0, 3647, 0, +1045, 1025, 1424, +1033, 1031, 1420, +1016, 1039, 1414, +992, 1049, 1407, +957, 1063, 1397, +907, 1080, 1383, +830, 1102, 1364, +702, 1130, 1336, +440, 1165, 1297, +0, 1208, 1239, +0, 1260, 1148, +0, 1321, 987, +0, 1391, 606, +0, 1471, 0, +0, 1560, 0, +0, 1657, 0, +0, 1760, 0, +0, 1870, 0, +0, 1985, 0, +0, 2103, 0, +0, 2225, 0, +0, 2349, 0, +0, 2475, 0, +0, 2603, 0, +0, 2731, 0, +0, 2861, 0, +0, 2991, 0, +0, 3122, 0, +0, 3253, 0, +0, 3384, 0, +0, 3515, 0, +0, 3647, 0, +1261, 1046, 1482, +1253, 1051, 1478, +1242, 1059, 1473, +1228, 1069, 1467, +1208, 1082, 1458, +1180, 1098, 1446, +1139, 1119, 1429, +1079, 1146, 1406, +982, 1180, 1373, +810, 1222, 1324, +372, 1272, 1249, +0, 1331, 1126, +0, 1400, 879, +0, 1479, 0, +0, 1566, 0, +0, 1662, 0, +0, 1764, 0, +0, 1873, 0, +0, 1987, 0, +0, 2105, 0, +0, 2226, 0, +0, 2350, 0, +0, 2476, 0, +0, 2603, 0, +0, 2732, 0, +0, 2861, 0, +0, 2991, 0, +0, 3122, 0, +0, 3253, 0, +0, 3384, 0, +0, 3515, 0, +0, 3647, 0, +1446, 1072, 1550, +1441, 1077, 1546, +1434, 1084, 1542, +1425, 1093, 1537, +1412, 1105, 1529, +1394, 1121, 1519, +1370, 1141, 1505, +1334, 1167, 1485, +1282, 1199, 1457, +1200, 1239, 1417, +1063, 1288, 1357, +771, 1345, 1263, +0, 1412, 1094, +0, 1489, 678, +0, 1575, 0, +0, 1668, 0, +0, 1770, 0, +0, 1877, 0, +0, 1990, 0, +0, 2108, 0, +0, 2228, 0, +0, 2352, 0, +0, 2477, 0, +0, 2604, 0, +0, 2732, 0, +0, 2862, 0, +0, 2992, 0, +0, 3122, 0, +0, 3253, 0, +0, 3384, 0, +0, 3515, 0, +0, 3647, 0, +1615, 1104, 1627, +1611, 1109, 1624, +1607, 1115, 1621, +1600, 1124, 1616, +1592, 1135, 1609, +1580, 1150, 1601, +1563, 1169, 1589, +1540, 1193, 1573, +1508, 1224, 1550, +1460, 1262, 1518, +1388, 1308, 1470, +1268, 1363, 1398, +1033, 1428, 1280, +0, 1502, 1048, +0, 1585, 57, +0, 1677, 0, +0, 1777, 0, +0, 1883, 0, +0, 1995, 0, +0, 2111, 0, +0, 2231, 0, +0, 2354, 0, +0, 2479, 0, +0, 2605, 0, +0, 2733, 0, +0, 2862, 0, +0, 2992, 0, +0, 3122, 0, +0, 3253, 0, +0, 3384, 0, +0, 3516, 0, +0, 3647, 0, +1772, 1144, 1713, +1770, 1148, 1711, +1767, 1154, 1708, +1762, 1162, 1704, +1756, 1173, 1699, +1748, 1186, 1692, +1737, 1204, 1682, +1721, 1226, 1669, +1699, 1255, 1650, +1669, 1290, 1624, +1624, 1334, 1588, +1557, 1386, 1533, +1448, 1448, 1448, +1243, 1519, 1301, +591, 1600, 979, +0, 1689, 0, +0, 1786, 0, +0, 1891, 0, +0, 2001, 0, +0, 2116, 0, +0, 2234, 0, +0, 2356, 0, +0, 2481, 0, +0, 2607, 0, +0, 2734, 0, +0, 2863, 0, +0, 2993, 0, +0, 3123, 0, +0, 3254, 0, +0, 3385, 0, +0, 3516, 0, +0, 3647, 0, +1923, 1192, 1807, +1921, 1196, 1805, +1919, 1202, 1803, +1915, 1209, 1800, +1911, 1218, 1796, +1905, 1231, 1790, +1897, 1247, 1782, +1886, 1267, 1772, +1871, 1293, 1757, +1851, 1326, 1737, +1821, 1366, 1708, +1779, 1415, 1667, +1715, 1473, 1605, +1613, 1541, 1507, +1426, 1618, 1329, +905, 1704, 865, +0, 1799, 0, +0, 1900, 0, +0, 2008, 0, +0, 2122, 0, +0, 2239, 0, +0, 2360, 0, +0, 2483, 0, +0, 2609, 0, +0, 2736, 0, +0, 2864, 0, +0, 2994, 0, +0, 3124, 0, +0, 3254, 0, +0, 3385, 0, +0, 3516, 0, +0, 3648, 0, +2068, 1250, 1909, +2067, 1253, 1908, +2065, 1258, 1906, +2063, 1265, 1903, +2059, 1273, 1900, +2055, 1284, 1895, +2049, 1298, 1889, +2042, 1317, 1881, +2031, 1340, 1869, +2017, 1370, 1854, +1997, 1406, 1832, +1968, 1451, 1801, +1927, 1505, 1755, +1866, 1569, 1687, +1768, 1641, 1575, +1592, 1724, 1364, +1138, 1815, 648, +0, 1913, 0, +0, 2018, 0, +0, 2129, 0, +0, 2245, 0, +0, 2364, 0, +0, 2487, 0, +0, 2612, 0, +0, 2738, 0, +0, 2866, 0, +0, 2995, 0, +0, 3124, 0, +0, 3255, 0, +0, 3385, 0, +0, 3516, 0, +0, 3648, 0, +2210, 1317, 2017, +2209, 1320, 2016, +2207, 1324, 2014, +2206, 1330, 2012, +2203, 1337, 2010, +2200, 1347, 2006, +2196, 1359, 2001, +2191, 1375, 1995, +2183, 1396, 1986, +2173, 1422, 1974, +2158, 1455, 1957, +2139, 1496, 1934, +2111, 1545, 1900, +2071, 1603, 1852, +2011, 1671, 1777, +1916, 1749, 1653, +1748, 1835, 1406, +1333, 1930, 0, +0, 2032, 0, +0, 2140, 0, +0, 2253, 0, +0, 2371, 0, +0, 2492, 0, +0, 2615, 0, +0, 2741, 0, +0, 2868, 0, +0, 2996, 0, +0, 3126, 0, +0, 3256, 0, +0, 3386, 0, +0, 3517, 0, +0, 3648, 0, +2349, 1394, 2130, +2348, 1396, 2129, +2347, 1400, 2128, +2346, 1404, 2127, +2344, 1411, 2125, +2342, 1419, 2122, +2339, 1429, 2118, +2335, 1443, 2113, +2329, 1461, 2106, +2322, 1484, 2097, +2312, 1513, 2084, +2298, 1549, 2067, +2278, 1593, 2042, +2251, 1646, 2007, +2211, 1708, 1955, +2153, 1780, 1875, +2061, 1861, 1740, +1898, 1951, 1457, +1507, 2049, 0, +0, 2153, 0, +0, 2264, 0, +0, 2379, 0, +0, 2498, 0, +0, 2620, 0, +0, 2744, 0, +0, 2871, 0, +0, 2998, 0, +0, 3127, 0, +0, 3257, 0, +0, 3387, 0, +0, 3518, 0, +0, 3649, 0, +2486, 1479, 2248, +2485, 1482, 2247, +2485, 1484, 2246, +2484, 1488, 2245, +2483, 1493, 2243, +2481, 1500, 2241, +2479, 1509, 2238, +2476, 1521, 2234, +2472, 1536, 2229, +2466, 1555, 2222, +2459, 1580, 2213, +2449, 1611, 2199, +2435, 1650, 2181, +2416, 1697, 2155, +2389, 1753, 2119, +2350, 1818, 2064, +2292, 1893, 1980, +2201, 1978, 1835, +2042, 2070, 1518, +1668, 2171, 0, +0, 2277, 0, +0, 2389, 0, +0, 2506, 0, +0, 2626, 0, +0, 2749, 0, +0, 2874, 0, +0, 3001, 0, +0, 3129, 0, +0, 3258, 0, +0, 3388, 0, +0, 3519, 0, +0, 3649, 0, +2622, 1573, 2368, +2621, 1575, 2368, +2621, 1578, 2367, +2620, 1581, 2366, +2619, 1585, 2365, +2618, 1590, 2363, +2616, 1598, 2361, +2614, 1607, 2358, +2611, 1620, 2354, +2607, 1636, 2349, +2602, 1657, 2342, +2595, 1683, 2332, +2585, 1716, 2318, +2571, 1757, 2299, +2552, 1807, 2273, +2525, 1865, 2235, +2487, 1934, 2179, +2430, 2011, 2091, +2340, 2098, 1937, +2183, 2193, 1588, +1820, 2295, 0, +0, 2403, 0, +0, 2517, 0, +0, 2634, 0, +0, 2755, 0, +0, 2879, 0, +0, 3005, 0, +0, 3132, 0, +0, 3260, 0, +0, 3390, 0, +0, 3520, 0, +0, 3650, 0, +2757, 1675, 2492, +2756, 1676, 2491, +2756, 1678, 2491, +2756, 1681, 2490, +2755, 1684, 2489, +2754, 1688, 2488, +2753, 1694, 2486, +2751, 1702, 2484, +2749, 1712, 2481, +2746, 1726, 2477, +2742, 1743, 2472, +2737, 1765, 2464, +2729, 1793, 2454, +2719, 1827, 2440, +2706, 1870, 2421, +2687, 1922, 2394, +2660, 1982, 2355, +2622, 2053, 2297, +2566, 2132, 2206, +2477, 2221, 2046, +2322, 2318, 1667, +1967, 2421, 0, +0, 2531, 0, +0, 2645, 0, +0, 2764, 0, +0, 2885, 0, +0, 3010, 0, +0, 3136, 0, +0, 3263, 0, +0, 3392, 0, +0, 3521, 0, +0, 3651, 0, +2891, 1782, 2617, +2891, 1784, 2617, +2890, 1785, 2617, +2890, 1787, 2616, +2890, 1790, 2615, +2889, 1793, 2615, +2888, 1798, 2613, +2887, 1804, 2612, +2885, 1812, 2609, +2883, 1823, 2606, +2880, 1837, 2602, +2876, 1855, 2597, +2871, 1878, 2589, +2863, 1907, 2579, +2854, 1943, 2565, +2840, 1987, 2545, +2821, 2040, 2518, +2795, 2103, 2478, +2757, 2175, 2419, +2701, 2256, 2325, +2612, 2346, 2159, +2459, 2444, 1755, +2110, 2549, 0, +0, 2659, 0, +0, 2775, 0, +0, 2894, 0, +0, 3016, 0, +0, 3140, 0, +0, 3267, 0, +0, 3395, 0, +0, 3523, 0, +0, 3653, 0, +3025, 1895, 2745, +3024, 1896, 2744, +3024, 1897, 2744, +3024, 1899, 2744, +3024, 1901, 2743, +3023, 1904, 2742, +3022, 1908, 2741, +3022, 1912, 2740, +3020, 1919, 2738, +3019, 1927, 2736, +3017, 1938, 2733, +3014, 1953, 2729, +3010, 1971, 2723, +3004, 1995, 2716, +2997, 2025, 2705, +2987, 2062, 2691, +2974, 2108, 2671, +2955, 2162, 2643, +2929, 2226, 2603, +2891, 2299, 2543, +2835, 2382, 2447, +2747, 2473, 2277, +2595, 2572, 1852, +2250, 2678, 0, +0, 2789, 0, +0, 2905, 0, +0, 3024, 0, +0, 3147, 0, +0, 3272, 0, +0, 3398, 0, +0, 3526, 0, +0, 3655, 0, +3158, 2013, 2873, +3158, 2013, 2873, +3158, 2014, 2872, +3157, 2015, 2872, +3157, 2017, 2872, +3157, 2019, 2871, +3156, 2022, 2871, +3156, 2026, 2870, +3155, 2031, 2868, +3154, 2038, 2867, +3152, 2046, 2864, +3150, 2058, 2861, +3147, 2073, 2857, +3143, 2092, 2851, +3138, 2116, 2844, +3130, 2147, 2833, +3120, 2185, 2819, +3107, 2231, 2799, +3088, 2286, 2770, +3062, 2351, 2730, +3024, 2426, 2669, +2968, 2509, 2572, +2881, 2601, 2398, +2730, 2701, 1955, +2388, 2807, 0, +0, 2919, 0, +0, 3035, 0, +0, 3155, 0, +0, 3278, 0, +0, 3403, 0, +0, 3530, 0, +0, 3658, 0, +3291, 2133, 3002, +3291, 2134, 3002, +3291, 2135, 3002, +3291, 2135, 3002, +3290, 2137, 3001, +3290, 2138, 3001, +3290, 2141, 3000, +3289, 2143, 3000, +3288, 2147, 2999, +3288, 2153, 2997, +3286, 2159, 2996, +3285, 2168, 2993, +3283, 2180, 2990, +3280, 2195, 2986, +3276, 2215, 2980, +3270, 2239, 2973, +3263, 2271, 2962, +3253, 2309, 2947, +3240, 2356, 2927, +3221, 2412, 2899, +3195, 2478, 2858, +3157, 2553, 2796, +3102, 2638, 2698, +3015, 2730, 2522, +2864, 2831, 2065, +2524, 2938, 0, +0, 3050, 0, +0, 3166, 0, +0, 3287, 0, +0, 3410, 0, +0, 3535, 0, +0, 3662, 0, +3424, 2257, 3132, +3424, 2257, 3132, +3423, 2258, 3132, +3423, 2258, 3132, +3423, 2259, 3132, +3423, 2261, 3131, +3423, 2262, 3131, +3422, 2264, 3130, +3422, 2267, 3130, +3421, 2271, 3129, +3420, 2277, 3127, +3419, 2284, 3126, +3417, 2293, 3123, +3415, 2304, 3120, +3412, 2320, 3116, +3408, 2340, 3110, +3403, 2365, 3102, +3396, 2397, 3092, +3386, 2436, 3077, +3373, 2483, 3057, +3354, 2540, 3028, +3328, 2606, 2987, +3290, 2682, 2925, +3235, 2767, 2826, +3148, 2860, 2647, +2997, 2961, 2179, +2659, 3068, 0, +0, 3181, 0, +0, 3298, 0, +0, 3418, 0, +0, 3541, 0, +0, 3666, 0, +3556, 2382, 3263, +3556, 2382, 3263, +3556, 2383, 3262, +3556, 2383, 3262, +3556, 2384, 3262, +3556, 2385, 3262, +3556, 2386, 3262, +3555, 2388, 3261, +3555, 2390, 3261, +3554, 2393, 3260, +3554, 2397, 3259, +3553, 2403, 3258, +3552, 2410, 3256, +3550, 2419, 3254, +3548, 2431, 3250, +3545, 2446, 3246, +3541, 2466, 3240, +3536, 2492, 3233, +3529, 2524, 3222, +3519, 2564, 3207, +3505, 2612, 3187, +3487, 2669, 3158, +3461, 2736, 3117, +3423, 2812, 3054, +3368, 2897, 2955, +3281, 2991, 2775, +3131, 3092, 2297, +2794, 3199, 0, +0, 3312, 0, +0, 3429, 0, +0, 3550, 0, +0, 3673, 0, +3689, 2509, 3394, +3689, 2509, 3393, +3689, 2510, 3393, +3689, 2510, 3393, +3688, 2511, 3393, +3688, 2511, 3393, +3688, 2512, 3393, +3688, 2514, 3392, +3688, 2515, 3392, +3687, 2518, 3392, +3687, 2521, 3391, +3686, 2525, 3390, +3685, 2530, 3389, +3684, 2537, 3387, +3682, 2546, 3384, +3680, 2559, 3381, +3677, 2574, 3377, +3673, 2595, 3371, +3668, 2620, 3363, +3661, 2653, 3353, +3651, 2692, 3338, +3638, 2741, 3318, +3619, 2798, 3289, +3593, 2865, 3247, +3556, 2942, 3184, +3500, 3028, 3084, +3413, 3122, 2903, +3264, 3223, 2419, +2928, 3331, 0, +0, 3443, 0, +0, 3561, 0, +0, 3681, 0, +3821, 2637, 3525, +3821, 2638, 3525, +3821, 2638, 3525, +3821, 2638, 3525, +3821, 2639, 3524, +3821, 2639, 3524, +3821, 2640, 3524, +3821, 2641, 3524, +3820, 2642, 3524, +3820, 2644, 3523, +3820, 2646, 3523, +3819, 2649, 3522, +3818, 2653, 3521, +3818, 2659, 3520, +3816, 2666, 3518, +3815, 2675, 3516, +3813, 2687, 3512, +3810, 2703, 3508, +3806, 2724, 3502, +3801, 2750, 3494, +3793, 2782, 3484, +3784, 2822, 3469, +3770, 2871, 3448, +3752, 2929, 3420, +3725, 2996, 3378, +3688, 3073, 3315, +3633, 3159, 3215, +3546, 3253, 3032, +3396, 3354, 2543, +3061, 3462, 0, +0, 3575, 0, +0, 3692, 0, +3953, 2767, 3656, +3953, 2767, 3656, +3953, 2767, 3656, +3953, 2767, 3656, +3953, 2768, 3656, +3953, 2768, 3656, +3953, 2769, 3656, +3953, 2769, 3656, +3953, 2770, 3655, +3953, 2772, 3655, +3952, 2773, 3655, +3952, 2776, 3654, +3951, 2779, 3653, +3951, 2783, 3652, +3950, 2788, 3651, +3949, 2795, 3649, +3947, 2805, 3647, +3945, 2817, 3644, +3942, 2833, 3639, +3938, 2854, 3634, +3933, 2880, 3626, +3926, 2912, 3615, +3916, 2952, 3600, +3902, 3001, 3580, +3884, 3059, 3551, +3858, 3127, 3509, +3820, 3204, 3446, +3765, 3290, 3345, +3678, 3384, 3162, +3529, 3486, 2669, +3194, 3594, 0, +0, 3707, 0, +4086, 2897, 3788, +4086, 2897, 3788, +4086, 2897, 3788, +4086, 2897, 3788, +4086, 2897, 3788, +4085, 2898, 3788, +4085, 2898, 3787, +4085, 2899, 3787, +4085, 2899, 3787, +4085, 2900, 3787, +4085, 2902, 3787, +4085, 2903, 3786, +4084, 2906, 3786, +4084, 2909, 3785, +4083, 2913, 3784, +4082, 2918, 3783, +4081, 2926, 3781, +4079, 2935, 3779, +4077, 2947, 3775, +4074, 2963, 3771, +4070, 2984, 3765, +4065, 3010, 3757, +4058, 3043, 3747, +4048, 3083, 3732, +4035, 3132, 3711, +4016, 3190, 3682, +3990, 3258, 3640, +3953, 3335, 3577, +3897, 3421, 3476, +3811, 3516, 3293, +3661, 3617, 2796, +3327, 3725, 0, +4095, 3027, 3919, +4095, 3027, 3919, +4095, 3027, 3919, +4095, 3027, 3919, +4095, 3028, 3919, +4095, 3028, 3919, +4095, 3028, 3919, +4095, 3029, 3919, +4095, 3029, 3919, +4095, 3030, 3919, +4095, 3031, 3919, +4095, 3032, 3918, +4095, 3034, 3918, +4095, 3036, 3917, +4095, 3039, 3917, +4095, 3044, 3916, +4095, 3049, 3914, +4095, 3056, 3913, +4095, 3066, 3910, +4095, 3078, 3907, +4095, 3094, 3903, +4095, 3115, 3897, +4095, 3141, 3889, +4095, 3174, 3878, +4095, 3214, 3863, +4095, 3263, 3843, +4095, 3321, 3814, +4095, 3389, 3772, +4085, 3467, 3709, +4030, 3553, 3608, +3943, 3647, 3424, +3794, 3749, 2925, +4095, 3158, 4051, +4095, 3158, 4051, +4095, 3158, 4051, +4095, 3158, 4051, +4095, 3158, 4051, +4095, 3159, 4051, +4095, 3159, 4051, +4095, 3159, 4051, +4095, 3160, 4051, +4095, 3160, 4051, +4095, 3161, 4051, +4095, 3162, 4050, +4095, 3163, 4050, +4095, 3165, 4050, +4095, 3167, 4049, +4095, 3170, 4048, +4095, 3175, 4047, +4095, 3180, 4046, +4095, 3187, 4044, +4095, 3197, 4042, +4095, 3209, 4039, +4095, 3225, 4035, +4095, 3246, 4029, +4095, 3272, 4021, +4095, 3305, 4010, +4095, 3346, 3995, +4095, 3395, 3975, +4095, 3453, 3946, +4095, 3521, 3903, +4095, 3598, 3840, +4095, 3685, 3739, +4075, 3779, 3555, +0, 1092, 1347, +0, 1097, 1342, +0, 1104, 1336, +0, 1112, 1327, +0, 1124, 1315, +0, 1139, 1298, +0, 1159, 1275, +0, 1183, 1242, +0, 1215, 1193, +0, 1253, 1119, +0, 1300, 996, +0, 1356, 751, +0, 1422, 0, +0, 1497, 0, +0, 1581, 0, +0, 1674, 0, +0, 1774, 0, +0, 1881, 0, +0, 1993, 0, +0, 2110, 0, +0, 2230, 0, +0, 2353, 0, +0, 2478, 0, +0, 2605, 0, +0, 2733, 0, +0, 2862, 0, +0, 2992, 0, +0, 3122, 0, +0, 3253, 0, +0, 3384, 0, +0, 3516, 0, +0, 3647, 0, +0, 1093, 1354, +0, 1098, 1350, +0, 1105, 1343, +0, 1114, 1335, +0, 1126, 1323, +0, 1141, 1306, +0, 1160, 1283, +0, 1185, 1251, +0, 1216, 1203, +0, 1254, 1131, +0, 1301, 1011, +0, 1357, 777, +0, 1423, 0, +0, 1498, 0, +0, 1582, 0, +0, 1674, 0, +0, 1775, 0, +0, 1881, 0, +0, 1993, 0, +0, 2110, 0, +0, 2230, 0, +0, 2353, 0, +0, 2478, 0, +0, 2605, 0, +0, 2733, 0, +0, 2862, 0, +0, 2992, 0, +0, 3122, 0, +0, 3253, 0, +0, 3384, 0, +0, 3516, 0, +0, 3647, 0, +0, 1096, 1364, +0, 1101, 1359, +0, 1107, 1353, +0, 1116, 1344, +0, 1128, 1333, +0, 1143, 1317, +0, 1162, 1294, +0, 1187, 1262, +0, 1218, 1216, +0, 1256, 1146, +0, 1303, 1031, +0, 1359, 809, +0, 1424, 0, +0, 1499, 0, +0, 1583, 0, +0, 1675, 0, +0, 1775, 0, +0, 1882, 0, +0, 1994, 0, +0, 2110, 0, +0, 2230, 0, +0, 2353, 0, +0, 2478, 0, +0, 2605, 0, +0, 2733, 0, +0, 2862, 0, +0, 2992, 0, +0, 3122, 0, +0, 3253, 0, +0, 3384, 0, +0, 3516, 0, +0, 3647, 0, +0, 1099, 1376, +0, 1104, 1371, +0, 1110, 1365, +0, 1119, 1357, +0, 1131, 1346, +0, 1146, 1330, +0, 1165, 1308, +0, 1189, 1278, +0, 1220, 1233, +0, 1258, 1165, +0, 1305, 1056, +0, 1360, 850, +0, 1425, 185, +0, 1500, 0, +0, 1584, 0, +0, 1676, 0, +0, 1776, 0, +0, 1882, 0, +0, 1994, 0, +0, 2110, 0, +0, 2230, 0, +0, 2353, 0, +0, 2478, 0, +0, 2605, 0, +0, 2733, 0, +0, 2862, 0, +0, 2992, 0, +0, 3122, 0, +0, 3253, 0, +0, 3384, 0, +0, 3516, 0, +0, 3647, 0, +0, 1103, 1392, +0, 1108, 1387, +0, 1114, 1381, +0, 1123, 1373, +0, 1135, 1363, +0, 1149, 1348, +0, 1168, 1327, +0, 1193, 1297, +0, 1223, 1255, +0, 1261, 1190, +0, 1307, 1087, +0, 1363, 898, +0, 1427, 365, +0, 1502, 0, +0, 1585, 0, +0, 1677, 0, +0, 1777, 0, +0, 1883, 0, +0, 1995, 0, +0, 2111, 0, +0, 2231, 0, +0, 2354, 0, +0, 2479, 0, +0, 2605, 0, +0, 2733, 0, +0, 2862, 0, +0, 2992, 0, +0, 3122, 0, +0, 3253, 0, +0, 3384, 0, +0, 3516, 0, +0, 3647, 0, +0, 1108, 1412, +0, 1113, 1408, +0, 1120, 1402, +0, 1128, 1395, +0, 1140, 1384, +0, 1154, 1370, +0, 1173, 1350, +0, 1197, 1322, +0, 1227, 1282, +0, 1265, 1222, +0, 1311, 1126, +0, 1366, 956, +0, 1430, 530, +0, 1504, 0, +0, 1587, 0, +0, 1679, 0, +0, 1778, 0, +0, 1884, 0, +0, 1995, 0, +0, 2112, 0, +0, 2231, 0, +0, 2354, 0, +0, 2479, 0, +0, 2605, 0, +0, 2733, 0, +0, 2862, 0, +0, 2992, 0, +0, 3122, 0, +0, 3253, 0, +0, 3384, 0, +0, 3516, 0, +0, 3647, 0, +0, 1115, 1438, +0, 1120, 1434, +0, 1127, 1429, +0, 1135, 1421, +0, 1146, 1412, +0, 1161, 1398, +0, 1179, 1380, +0, 1203, 1353, +0, 1233, 1316, +0, 1270, 1260, +0, 1315, 1173, +0, 1370, 1023, +0, 1434, 686, +0, 1507, 0, +0, 1590, 0, +0, 1681, 0, +0, 1780, 0, +0, 1885, 0, +0, 1996, 0, +0, 2112, 0, +0, 2232, 0, +0, 2354, 0, +0, 2479, 0, +0, 2606, 0, +0, 2734, 0, +0, 2862, 0, +0, 2992, 0, +0, 3123, 0, +0, 3253, 0, +0, 3384, 0, +0, 3516, 0, +0, 3647, 0, +503, 1125, 1470, +461, 1130, 1467, +397, 1136, 1462, +296, 1144, 1455, +111, 1155, 1446, +0, 1169, 1433, +0, 1188, 1416, +0, 1211, 1392, +0, 1240, 1358, +0, 1277, 1307, +0, 1322, 1230, +0, 1375, 1100, +0, 1438, 834, +0, 1511, 0, +0, 1593, 0, +0, 1683, 0, +0, 1782, 0, +0, 1887, 0, +0, 1998, 0, +0, 2113, 0, +0, 2233, 0, +0, 2355, 0, +0, 2480, 0, +0, 2606, 0, +0, 2734, 0, +0, 2863, 0, +0, 2992, 0, +0, 3123, 0, +0, 3253, 0, +0, 3384, 0, +0, 3516, 0, +0, 3647, 0, +919, 1137, 1510, +902, 1142, 1507, +879, 1148, 1502, +847, 1156, 1496, +799, 1167, 1488, +726, 1180, 1477, +606, 1198, 1461, +371, 1221, 1439, +0, 1250, 1409, +0, 1286, 1364, +0, 1330, 1296, +0, 1382, 1186, +0, 1444, 978, +0, 1516, 303, +0, 1597, 0, +0, 1687, 0, +0, 1785, 0, +0, 1889, 0, +0, 2000, 0, +0, 2115, 0, +0, 2234, 0, +0, 2356, 0, +0, 2480, 0, +0, 2606, 0, +0, 2734, 0, +0, 2863, 0, +0, 2993, 0, +0, 3123, 0, +0, 3253, 0, +0, 3385, 0, +0, 3516, 0, +0, 3647, 0, +1186, 1153, 1559, +1177, 1158, 1556, +1165, 1164, 1552, +1148, 1171, 1546, +1124, 1182, 1539, +1090, 1195, 1529, +1039, 1212, 1515, +962, 1234, 1496, +834, 1262, 1468, +572, 1297, 1429, +0, 1340, 1371, +0, 1392, 1280, +0, 1453, 1119, +0, 1523, 738, +0, 1603, 0, +0, 1692, 0, +0, 1789, 0, +0, 1892, 0, +0, 2002, 0, +0, 2117, 0, +0, 2235, 0, +0, 2357, 0, +0, 2481, 0, +0, 2607, 0, +0, 2735, 0, +0, 2863, 0, +0, 2993, 0, +0, 3123, 0, +0, 3254, 0, +0, 3385, 0, +0, 3516, 0, +0, 3647, 0, +1398, 1174, 1617, +1393, 1178, 1614, +1385, 1184, 1610, +1375, 1191, 1606, +1360, 1201, 1599, +1340, 1214, 1590, +1312, 1230, 1578, +1271, 1251, 1561, +1211, 1278, 1538, +1114, 1312, 1505, +942, 1354, 1456, +504, 1404, 1382, +0, 1463, 1258, +0, 1532, 1012, +0, 1611, 0, +0, 1698, 0, +0, 1794, 0, +0, 1896, 0, +0, 2005, 0, +0, 2119, 0, +0, 2237, 0, +0, 2358, 0, +0, 2482, 0, +0, 2608, 0, +0, 2735, 0, +0, 2864, 0, +0, 2993, 0, +0, 3123, 0, +0, 3254, 0, +0, 3385, 0, +0, 3516, 0, +0, 3647, 0, +1582, 1200, 1684, +1579, 1204, 1682, +1573, 1209, 1679, +1567, 1216, 1674, +1557, 1225, 1669, +1544, 1237, 1661, +1527, 1253, 1651, +1502, 1273, 1637, +1466, 1299, 1617, +1414, 1331, 1589, +1332, 1371, 1549, +1195, 1420, 1489, +903, 1477, 1395, +0, 1544, 1226, +0, 1621, 810, +0, 1707, 0, +0, 1801, 0, +0, 1902, 0, +0, 2010, 0, +0, 2123, 0, +0, 2240, 0, +0, 2360, 0, +0, 2484, 0, +0, 2609, 0, +0, 2736, 0, +0, 2864, 0, +0, 2994, 0, +0, 3124, 0, +0, 3254, 0, +0, 3385, 0, +0, 3516, 0, +0, 3648, 0, +1750, 1232, 1761, +1747, 1236, 1759, +1744, 1241, 1756, +1739, 1248, 1753, +1732, 1256, 1748, +1724, 1268, 1742, +1712, 1282, 1733, +1695, 1301, 1721, +1672, 1326, 1705, +1640, 1356, 1682, +1592, 1394, 1650, +1520, 1440, 1602, +1400, 1495, 1530, +1165, 1560, 1412, +102, 1634, 1180, +0, 1718, 189, +0, 1809, 0, +0, 1909, 0, +0, 2015, 0, +0, 2127, 0, +0, 2243, 0, +0, 2363, 0, +0, 2486, 0, +0, 2611, 0, +0, 2737, 0, +0, 2865, 0, +0, 2994, 0, +0, 3124, 0, +0, 3254, 0, +0, 3385, 0, +0, 3516, 0, +0, 3648, 0, +1906, 1272, 1846, +1905, 1276, 1845, +1902, 1280, 1843, +1899, 1286, 1840, +1894, 1294, 1836, +1888, 1305, 1831, +1880, 1319, 1824, +1869, 1336, 1814, +1853, 1359, 1801, +1831, 1387, 1782, +1801, 1422, 1757, +1756, 1466, 1720, +1689, 1518, 1665, +1580, 1580, 1580, +1375, 1651, 1434, +723, 1732, 1111, +0, 1821, 0, +0, 1918, 0, +0, 2023, 0, +0, 2133, 0, +0, 2248, 0, +0, 2366, 0, +0, 2488, 0, +0, 2613, 0, +0, 2739, 0, +0, 2866, 0, +0, 2995, 0, +0, 3125, 0, +0, 3255, 0, +0, 3386, 0, +0, 3517, 0, +0, 3648, 0, +2056, 1321, 1941, +2055, 1324, 1939, +2053, 1328, 1938, +2051, 1334, 1935, +2047, 1341, 1932, +2043, 1350, 1928, +2037, 1363, 1922, +2029, 1379, 1914, +2018, 1399, 1904, +2003, 1425, 1889, +1983, 1458, 1869, +1953, 1498, 1840, +1911, 1547, 1799, +1847, 1605, 1737, +1745, 1673, 1639, +1558, 1750, 1461, +1037, 1836, 997, +0, 1931, 0, +0, 2032, 0, +0, 2140, 0, +0, 2254, 0, +0, 2371, 0, +0, 2492, 0, +0, 2615, 0, +0, 2741, 0, +0, 2868, 0, +0, 2996, 0, +0, 3126, 0, +0, 3256, 0, +0, 3386, 0, +0, 3517, 0, +0, 3648, 0, +2201, 1379, 2042, +2200, 1382, 2041, +2199, 1386, 2040, +2197, 1390, 2038, +2195, 1397, 2035, +2191, 1405, 2032, +2187, 1416, 2027, +2182, 1430, 2021, +2174, 1449, 2013, +2163, 1472, 2001, +2149, 1502, 1986, +2129, 1538, 1964, +2100, 1583, 1933, +2059, 1637, 1887, +1998, 1701, 1819, +1900, 1774, 1707, +1724, 1856, 1496, +1270, 1947, 780, +0, 2045, 0, +0, 2151, 0, +0, 2262, 0, +0, 2377, 0, +0, 2497, 0, +0, 2619, 0, +0, 2744, 0, +0, 2870, 0, +0, 2998, 0, +0, 3127, 0, +0, 3256, 0, +0, 3387, 0, +0, 3518, 0, +0, 3649, 0, +2342, 1447, 2150, +2342, 1449, 2149, +2341, 1452, 2148, +2339, 1456, 2146, +2338, 1462, 2145, +2335, 1469, 2142, +2332, 1479, 2138, +2328, 1491, 2133, +2323, 1507, 2127, +2315, 1528, 2118, +2305, 1554, 2106, +2290, 1587, 2089, +2271, 1628, 2066, +2243, 1677, 2032, +2203, 1735, 1984, +2143, 1803, 1909, +2049, 1881, 1785, +1880, 1967, 1538, +1465, 2062, 3, +0, 2164, 0, +0, 2272, 0, +0, 2385, 0, +0, 2503, 0, +0, 2624, 0, +0, 2747, 0, +0, 2873, 0, +0, 3000, 0, +0, 3128, 0, +0, 3258, 0, +0, 3388, 0, +0, 3518, 0, +0, 3649, 0, +2481, 1524, 2263, +2481, 1526, 2262, +2480, 1528, 2261, +2479, 1532, 2260, +2478, 1537, 2259, +2476, 1543, 2257, +2474, 1551, 2254, +2471, 1561, 2250, +2467, 1575, 2245, +2461, 1593, 2238, +2454, 1616, 2229, +2444, 1645, 2216, +2430, 1681, 2199, +2410, 1725, 2174, +2383, 1778, 2139, +2344, 1840, 2087, +2285, 1912, 2007, +2193, 1993, 1872, +2030, 2083, 1589, +1639, 2181, 0, +0, 2285, 0, +0, 2396, 0, +0, 2511, 0, +0, 2630, 0, +0, 2752, 0, +0, 2876, 0, +0, 3003, 0, +0, 3130, 0, +0, 3259, 0, +0, 3389, 0, +0, 3519, 0, +0, 3650, 0, +2618, 1610, 2380, +2618, 1611, 2380, +2617, 1614, 2379, +2617, 1617, 2378, +2616, 1620, 2377, +2615, 1626, 2375, +2613, 1632, 2373, +2611, 1641, 2370, +2608, 1653, 2367, +2604, 1668, 2361, +2598, 1687, 2354, +2591, 1712, 2345, +2581, 1743, 2331, +2567, 1782, 2313, +2548, 1829, 2287, +2521, 1885, 2251, +2482, 1950, 2197, +2424, 2026, 2112, +2333, 2110, 1967, +2174, 2202, 1650, +1800, 2303, 0, +0, 2409, 0, +0, 2522, 0, +0, 2638, 0, +0, 2758, 0, +0, 2881, 0, +0, 3006, 0, +0, 3133, 0, +0, 3261, 0, +0, 3390, 0, +0, 3520, 0, +0, 3651, 0, +2754, 1704, 2501, +2754, 1705, 2500, +2754, 1707, 2500, +2753, 1710, 2499, +2752, 1713, 2498, +2751, 1717, 2497, +2750, 1723, 2496, +2749, 1730, 2493, +2746, 1739, 2490, +2743, 1752, 2486, +2739, 1768, 2481, +2734, 1789, 2474, +2727, 1815, 2464, +2717, 1849, 2450, +2703, 1889, 2432, +2684, 1939, 2405, +2657, 1997, 2367, +2619, 2066, 2311, +2562, 2143, 2223, +2472, 2230, 2069, +2315, 2325, 1720, +1952, 2427, 0, +0, 2535, 0, +0, 2649, 0, +0, 2767, 0, +0, 2888, 0, +0, 3011, 0, +0, 3137, 0, +0, 3264, 0, +0, 3392, 0, +0, 3522, 0, +0, 3652, 0, +2889, 1806, 2624, +2889, 1807, 2624, +2889, 1808, 2624, +2888, 1810, 2623, +2888, 1813, 2622, +2887, 1816, 2621, +2886, 1821, 2620, +2885, 1826, 2619, +2883, 1834, 2616, +2881, 1844, 2613, +2878, 1858, 2609, +2874, 1875, 2604, +2869, 1897, 2596, +2861, 1925, 2586, +2852, 1959, 2572, +2838, 2002, 2553, +2819, 2054, 2526, +2792, 2114, 2487, +2754, 2185, 2429, +2698, 2265, 2338, +2609, 2353, 2178, +2454, 2450, 1799, +2099, 2553, 0, +0, 2663, 0, +0, 2777, 0, +0, 2896, 0, +0, 3018, 0, +0, 3142, 0, +0, 3268, 0, +0, 3395, 0, +0, 3524, 0, +0, 3653, 0, +3023, 1914, 2750, +3023, 1915, 2749, +3023, 1916, 2749, +3023, 1917, 2749, +3022, 1919, 2748, +3022, 1922, 2748, +3021, 1925, 2747, +3020, 1930, 2745, +3019, 1936, 2744, +3017, 1944, 2741, +3015, 1955, 2738, +3012, 1969, 2734, +3008, 1987, 2729, +3003, 2010, 2721, +2996, 2039, 2711, +2986, 2075, 2697, +2972, 2119, 2677, +2953, 2172, 2650, +2927, 2235, 2610, +2889, 2307, 2551, +2833, 2388, 2457, +2744, 2478, 2291, +2591, 2576, 1888, +2242, 2681, 0, +0, 2792, 0, +0, 2907, 0, +0, 3026, 0, +0, 3148, 0, +0, 3273, 0, +0, 3399, 0, +0, 3527, 0, +0, 3655, 0, +3157, 2027, 2877, +3157, 2028, 2877, +3157, 2028, 2876, +3156, 2030, 2876, +3156, 2031, 2876, +3156, 2033, 2875, +3155, 2036, 2874, +3155, 2040, 2874, +3154, 2045, 2872, +3152, 2051, 2871, +3151, 2059, 2868, +3149, 2071, 2865, +3146, 2085, 2861, +3142, 2104, 2855, +3136, 2127, 2848, +3129, 2157, 2837, +3119, 2194, 2823, +3106, 2240, 2803, +3087, 2294, 2775, +3061, 2358, 2735, +3023, 2431, 2675, +2967, 2514, 2579, +2879, 2605, 2409, +2727, 2704, 1984, +2382, 2810, 0, +0, 2921, 0, +0, 3037, 0, +0, 3157, 0, +0, 3279, 0, +0, 3404, 0, +0, 3530, 0, +0, 3658, 0, +3290, 2144, 3005, +3290, 2145, 3005, +3290, 2145, 3005, +3290, 2146, 3005, +3290, 2148, 3004, +3289, 2149, 3004, +3289, 2151, 3003, +3288, 2154, 3003, +3288, 2158, 3002, +3287, 2163, 3000, +3286, 2170, 2999, +3284, 2178, 2996, +3282, 2190, 2993, +3279, 2205, 2989, +3275, 2224, 2983, +3270, 2248, 2976, +3262, 2279, 2965, +3253, 2317, 2951, +3239, 2363, 2931, +3220, 2418, 2902, +3194, 2483, 2862, +3156, 2558, 2801, +3101, 2641, 2704, +3013, 2733, 2530, +2862, 2833, 2087, +2520, 2939, 0, +0, 3051, 0, +0, 3168, 0, +0, 3287, 0, +0, 3410, 0, +0, 3535, 0, +0, 3662, 0, +3423, 2265, 3134, +3423, 2265, 3134, +3423, 2266, 3134, +3423, 2267, 3134, +3423, 2268, 3134, +3422, 2269, 3133, +3422, 2270, 3133, +3422, 2273, 3132, +3421, 2276, 3132, +3421, 2279, 3131, +3420, 2285, 3130, +3418, 2291, 3128, +3417, 2300, 3125, +3415, 2312, 3122, +3412, 2327, 3118, +3408, 2347, 3112, +3403, 2371, 3105, +3395, 2403, 3094, +3386, 2441, 3080, +3372, 2488, 3059, +3353, 2545, 3031, +3327, 2610, 2990, +3290, 2685, 2928, +3234, 2770, 2830, +3147, 2863, 2654, +2996, 2963, 2197, +2656, 3070, 0, +0, 3182, 0, +0, 3298, 0, +0, 3419, 0, +0, 3542, 0, +0, 3667, 0, +3556, 2388, 3264, +3556, 2389, 3264, +3556, 2389, 3264, +3556, 2390, 3264, +3555, 2390, 3264, +3555, 2391, 3264, +3555, 2393, 3263, +3555, 2394, 3263, +3554, 2397, 3262, +3554, 2400, 3262, +3553, 2403, 3261, +3552, 2409, 3259, +3551, 2416, 3258, +3550, 2425, 3255, +3547, 2437, 3252, +3544, 2452, 3248, +3541, 2472, 3242, +3535, 2497, 3234, +3528, 2529, 3224, +3518, 2568, 3209, +3505, 2615, 3189, +3486, 2672, 3160, +3460, 2738, 3119, +3422, 2814, 3057, +3367, 2899, 2958, +3280, 2992, 2780, +3130, 3093, 2311, +2791, 3200, 0, +0, 3313, 0, +0, 3430, 0, +0, 3550, 0, +0, 3673, 0, +3688, 2514, 3395, +3688, 2514, 3395, +3688, 2515, 3395, +3688, 2515, 3395, +3688, 2515, 3394, +3688, 2516, 3394, +3688, 2517, 3394, +3688, 2518, 3394, +3687, 2520, 3393, +3687, 2522, 3393, +3686, 2525, 3392, +3686, 2529, 3391, +3685, 2535, 3390, +3684, 2542, 3388, +3682, 2551, 3386, +3680, 2563, 3383, +3677, 2579, 3378, +3673, 2599, 3373, +3668, 2624, 3365, +3661, 2656, 3354, +3651, 2696, 3339, +3637, 2744, 3319, +3619, 2801, 3290, +3593, 2868, 3249, +3555, 2944, 3186, +3500, 3029, 3087, +3413, 3123, 2907, +3263, 3224, 2429, +2926, 3331, 0, +0, 3444, 0, +0, 3561, 0, +0, 3682, 0, +3821, 2641, 3526, +3821, 2641, 3526, +3821, 2641, 3526, +3821, 2642, 3526, +3821, 2642, 3525, +3821, 2643, 3525, +3820, 2643, 3525, +3820, 2644, 3525, +3820, 2646, 3525, +3820, 2647, 3524, +3819, 2650, 3524, +3819, 2653, 3523, +3818, 2657, 3522, +3817, 2662, 3521, +3816, 2669, 3519, +3815, 2679, 3517, +3812, 2691, 3513, +3809, 2706, 3509, +3806, 2727, 3503, +3800, 2752, 3495, +3793, 2785, 3485, +3783, 2825, 3470, +3770, 2873, 3450, +3751, 2930, 3421, +3725, 2998, 3379, +3688, 3074, 3316, +3632, 3160, 3216, +3546, 3254, 3035, +3396, 3355, 2551, +3060, 3463, 0, +0, 3576, 0, +0, 3693, 0, +3953, 2769, 3657, +3953, 2770, 3657, +3953, 2770, 3657, +3953, 2770, 3657, +3953, 2770, 3657, +3953, 2771, 3657, +3953, 2771, 3656, +3953, 2772, 3656, +3953, 2773, 3656, +3952, 2774, 3656, +3952, 2776, 3655, +3952, 2778, 3655, +3951, 2781, 3654, +3951, 2785, 3653, +3950, 2791, 3652, +3948, 2798, 3650, +3947, 2807, 3648, +3945, 2820, 3644, +3942, 2835, 3640, +3938, 2856, 3634, +3933, 2882, 3627, +3925, 2914, 3616, +3916, 2954, 3601, +3902, 3003, 3581, +3884, 3061, 3552, +3858, 3128, 3510, +3820, 3205, 3447, +3765, 3291, 3347, +3678, 3385, 3165, +3528, 3486, 2675, +3193, 3594, 0, +0, 3707, 0, +4085, 2899, 3788, +4085, 2899, 3788, +4085, 2899, 3788, +4085, 2899, 3788, +4085, 2899, 3788, +4085, 2900, 3788, +4085, 2900, 3788, +4085, 2901, 3788, +4085, 2901, 3788, +4085, 2902, 3787, +4085, 2904, 3787, +4084, 2905, 3787, +4084, 2908, 3786, +4084, 2911, 3785, +4083, 2915, 3784, +4082, 2920, 3783, +4081, 2928, 3781, +4079, 2937, 3779, +4077, 2949, 3776, +4074, 2965, 3772, +4070, 2986, 3766, +4065, 3012, 3758, +4058, 3044, 3747, +4048, 3084, 3732, +4035, 3133, 3712, +4016, 3191, 3683, +3990, 3259, 3641, +3952, 3336, 3578, +3897, 3422, 3477, +3811, 3516, 3295, +3661, 3618, 2801, +3326, 3726, 0, +4095, 3029, 3920, +4095, 3029, 3920, +4095, 3029, 3920, +4095, 3029, 3920, +4095, 3029, 3920, +4095, 3029, 3920, +4095, 3030, 3920, +4095, 3030, 3920, +4095, 3031, 3919, +4095, 3031, 3919, +4095, 3032, 3919, +4095, 3034, 3919, +4095, 3035, 3918, +4095, 3038, 3918, +4095, 3041, 3917, +4095, 3045, 3916, +4095, 3050, 3915, +4095, 3058, 3913, +4095, 3067, 3911, +4095, 3079, 3907, +4095, 3095, 3903, +4095, 3116, 3897, +4095, 3142, 3889, +4095, 3175, 3879, +4095, 3215, 3864, +4095, 3264, 3843, +4095, 3322, 3814, +4095, 3390, 3772, +4085, 3467, 3709, +4029, 3553, 3609, +3943, 3648, 3425, +3793, 3750, 2928, +4095, 3159, 4052, +4095, 3159, 4052, +4095, 3159, 4052, +4095, 3159, 4052, +4095, 3160, 4052, +4095, 3160, 4051, +4095, 3160, 4051, +4095, 3160, 4051, +4095, 3161, 4051, +4095, 3161, 4051, +4095, 3162, 4051, +4095, 3163, 4051, +4095, 3164, 4050, +4095, 3166, 4050, +4095, 3168, 4049, +4095, 3171, 4049, +4095, 3176, 4048, +4095, 3181, 4046, +4095, 3188, 4045, +4095, 3198, 4042, +4095, 3210, 4039, +4095, 3226, 4035, +4095, 3247, 4029, +4095, 3273, 4021, +4095, 3306, 4010, +4095, 3346, 3996, +4095, 3395, 3975, +4095, 3454, 3946, +4095, 3521, 3904, +4095, 3599, 3841, +4095, 3685, 3740, +4075, 3780, 3556, +0, 1218, 1478, +0, 1222, 1474, +0, 1228, 1469, +0, 1234, 1463, +0, 1243, 1454, +0, 1255, 1441, +0, 1270, 1424, +0, 1290, 1401, +0, 1314, 1367, +0, 1346, 1318, +0, 1384, 1242, +0, 1431, 1116, +0, 1488, 863, +0, 1553, 0, +0, 1629, 0, +0, 1713, 0, +0, 1806, 0, +0, 1906, 0, +0, 2013, 0, +0, 2125, 0, +0, 2242, 0, +0, 2362, 0, +0, 2485, 0, +0, 2610, 0, +0, 2737, 0, +0, 2865, 0, +0, 2994, 0, +0, 3124, 0, +0, 3254, 0, +0, 3385, 0, +0, 3516, 0, +0, 3648, 0, +0, 1220, 1483, +0, 1224, 1479, +0, 1229, 1475, +0, 1236, 1468, +0, 1245, 1459, +0, 1256, 1447, +0, 1271, 1430, +0, 1291, 1407, +0, 1316, 1374, +0, 1347, 1325, +0, 1385, 1251, +0, 1432, 1128, +0, 1488, 883, +0, 1554, 0, +0, 1629, 0, +0, 1713, 0, +0, 1806, 0, +0, 1906, 0, +0, 2013, 0, +0, 2125, 0, +0, 2242, 0, +0, 2362, 0, +0, 2485, 0, +0, 2610, 0, +0, 2737, 0, +0, 2865, 0, +0, 2994, 0, +0, 3124, 0, +0, 3254, 0, +0, 3385, 0, +0, 3516, 0, +0, 3648, 0, +0, 1222, 1490, +0, 1225, 1486, +0, 1231, 1482, +0, 1237, 1475, +0, 1246, 1467, +0, 1258, 1455, +0, 1273, 1438, +0, 1292, 1415, +0, 1317, 1383, +0, 1348, 1335, +0, 1387, 1263, +0, 1433, 1143, +0, 1489, 909, +0, 1555, 0, +0, 1630, 0, +0, 1714, 0, +0, 1807, 0, +0, 1907, 0, +0, 2013, 0, +0, 2125, 0, +0, 2242, 0, +0, 2362, 0, +0, 2485, 0, +0, 2610, 0, +0, 2737, 0, +0, 2865, 0, +0, 2994, 0, +0, 3124, 0, +0, 3254, 0, +0, 3385, 0, +0, 3516, 0, +0, 3648, 0, +0, 1224, 1499, +0, 1228, 1496, +0, 1233, 1491, +0, 1240, 1485, +0, 1248, 1476, +0, 1260, 1465, +0, 1275, 1449, +0, 1294, 1426, +0, 1319, 1395, +0, 1350, 1348, +0, 1388, 1278, +0, 1435, 1163, +0, 1491, 942, +0, 1556, 111, +0, 1631, 0, +0, 1715, 0, +0, 1807, 0, +0, 1907, 0, +0, 2014, 0, +0, 2126, 0, +0, 2242, 0, +0, 2362, 0, +0, 2485, 0, +0, 2610, 0, +0, 2737, 0, +0, 2865, 0, +0, 2994, 0, +0, 3124, 0, +0, 3254, 0, +0, 3385, 0, +0, 3516, 0, +0, 3648, 0, +0, 1227, 1511, +0, 1231, 1508, +0, 1236, 1503, +0, 1243, 1497, +0, 1251, 1489, +0, 1263, 1478, +0, 1278, 1462, +0, 1297, 1441, +0, 1321, 1410, +0, 1352, 1365, +0, 1390, 1298, +0, 1437, 1188, +0, 1492, 982, +0, 1557, 317, +0, 1632, 0, +0, 1716, 0, +0, 1808, 0, +0, 1908, 0, +0, 2014, 0, +0, 2126, 0, +0, 2243, 0, +0, 2363, 0, +0, 2485, 0, +0, 2610, 0, +0, 2737, 0, +0, 2865, 0, +0, 2994, 0, +0, 3124, 0, +0, 3254, 0, +0, 3385, 0, +0, 3516, 0, +0, 3648, 0, +0, 1231, 1527, +0, 1235, 1524, +0, 1240, 1519, +0, 1247, 1514, +0, 1255, 1506, +0, 1267, 1495, +0, 1281, 1480, +0, 1300, 1459, +0, 1325, 1429, +0, 1355, 1387, +0, 1393, 1322, +0, 1439, 1219, +0, 1495, 1030, +0, 1559, 497, +0, 1634, 0, +0, 1717, 0, +0, 1809, 0, +0, 1909, 0, +0, 2015, 0, +0, 2127, 0, +0, 2243, 0, +0, 2363, 0, +0, 2486, 0, +0, 2611, 0, +0, 2737, 0, +0, 2865, 0, +0, 2994, 0, +0, 3124, 0, +0, 3254, 0, +0, 3385, 0, +0, 3516, 0, +0, 3648, 0, +0, 1237, 1547, +0, 1240, 1544, +0, 1245, 1540, +0, 1252, 1534, +0, 1260, 1527, +0, 1272, 1516, +0, 1286, 1502, +0, 1305, 1482, +0, 1329, 1454, +0, 1360, 1414, +0, 1397, 1354, +0, 1443, 1258, +0, 1498, 1088, +0, 1562, 662, +0, 1636, 0, +0, 1719, 0, +0, 1811, 0, +0, 1910, 0, +0, 2016, 0, +0, 2128, 0, +0, 2244, 0, +0, 2363, 0, +0, 2486, 0, +0, 2611, 0, +0, 2737, 0, +0, 2865, 0, +0, 2994, 0, +0, 3124, 0, +0, 3255, 0, +0, 3385, 0, +0, 3516, 0, +0, 3648, 0, +0, 1244, 1573, +0, 1248, 1570, +0, 1252, 1566, +0, 1259, 1561, +0, 1267, 1554, +0, 1278, 1544, +0, 1293, 1530, +0, 1311, 1512, +0, 1335, 1486, +0, 1365, 1448, +0, 1402, 1392, +0, 1448, 1306, +0, 1502, 1155, +0, 1566, 818, +0, 1639, 0, +0, 1722, 0, +0, 1813, 0, +0, 1912, 0, +0, 2017, 0, +0, 2129, 0, +0, 2244, 0, +0, 2364, 0, +0, 2486, 0, +0, 2611, 0, +0, 2738, 0, +0, 2866, 0, +0, 2995, 0, +0, 3124, 0, +0, 3255, 0, +0, 3385, 0, +0, 3516, 0, +0, 3648, 0, +664, 1253, 1605, +635, 1257, 1602, +593, 1262, 1599, +530, 1268, 1594, +428, 1276, 1587, +243, 1287, 1578, +0, 1301, 1566, +0, 1320, 1548, +0, 1343, 1524, +0, 1372, 1490, +0, 1409, 1440, +0, 1454, 1362, +0, 1507, 1232, +0, 1570, 966, +0, 1643, 0, +0, 1725, 0, +0, 1816, 0, +0, 1914, 0, +0, 2019, 0, +0, 2130, 0, +0, 2245, 0, +0, 2365, 0, +0, 2487, 0, +0, 2612, 0, +0, 2738, 0, +0, 2866, 0, +0, 2995, 0, +0, 3124, 0, +0, 3255, 0, +0, 3385, 0, +0, 3517, 0, +0, 3648, 0, +1063, 1266, 1645, +1051, 1269, 1642, +1034, 1274, 1639, +1011, 1280, 1635, +979, 1288, 1628, +931, 1299, 1620, +858, 1313, 1609, +738, 1330, 1593, +503, 1353, 1571, +0, 1382, 1541, +0, 1418, 1496, +0, 1462, 1428, +0, 1514, 1318, +0, 1577, 1110, +0, 1648, 435, +0, 1729, 0, +0, 1819, 0, +0, 1917, 0, +0, 2021, 0, +0, 2132, 0, +0, 2247, 0, +0, 2366, 0, +0, 2488, 0, +0, 2612, 0, +0, 2739, 0, +0, 2866, 0, +0, 2995, 0, +0, 3125, 0, +0, 3255, 0, +0, 3386, 0, +0, 3517, 0, +0, 3648, 0, +1325, 1282, 1693, +1318, 1285, 1691, +1309, 1290, 1688, +1297, 1296, 1684, +1280, 1303, 1678, +1256, 1314, 1671, +1222, 1327, 1661, +1172, 1344, 1647, +1095, 1366, 1628, +966, 1394, 1601, +704, 1429, 1562, +0, 1472, 1503, +0, 1524, 1412, +0, 1585, 1251, +0, 1655, 870, +0, 1735, 0, +0, 1824, 0, +0, 1921, 0, +0, 2024, 0, +0, 2134, 0, +0, 2249, 0, +0, 2367, 0, +0, 2489, 0, +0, 2613, 0, +0, 2739, 0, +0, 2867, 0, +0, 2995, 0, +0, 3125, 0, +0, 3255, 0, +0, 3386, 0, +0, 3517, 0, +0, 3648, 0, +1535, 1302, 1751, +1530, 1306, 1749, +1525, 1310, 1746, +1517, 1316, 1742, +1507, 1323, 1738, +1492, 1333, 1731, +1472, 1346, 1722, +1444, 1362, 1710, +1404, 1384, 1693, +1343, 1411, 1670, +1246, 1444, 1637, +1074, 1486, 1588, +636, 1536, 1514, +0, 1595, 1390, +0, 1664, 1144, +0, 1743, 0, +0, 1830, 0, +0, 1926, 0, +0, 2029, 0, +0, 2137, 0, +0, 2251, 0, +0, 2369, 0, +0, 2490, 0, +0, 2614, 0, +0, 2740, 0, +0, 2867, 0, +0, 2996, 0, +0, 3125, 0, +0, 3255, 0, +0, 3386, 0, +0, 3517, 0, +0, 3648, 0, +1717, 1329, 1818, +1714, 1332, 1816, +1711, 1336, 1814, +1706, 1341, 1811, +1699, 1348, 1806, +1689, 1357, 1801, +1676, 1370, 1793, +1659, 1385, 1783, +1634, 1406, 1769, +1598, 1431, 1749, +1546, 1464, 1721, +1465, 1503, 1681, +1327, 1552, 1621, +1035, 1609, 1527, +0, 1676, 1358, +0, 1753, 942, +0, 1839, 0, +0, 1933, 0, +0, 2034, 0, +0, 2142, 0, +0, 2255, 0, +0, 2372, 0, +0, 2492, 0, +0, 2616, 0, +0, 2741, 0, +0, 2868, 0, +0, 2997, 0, +0, 3126, 0, +0, 3256, 0, +0, 3386, 0, +0, 3517, 0, +0, 3648, 0, +1884, 1361, 1894, +1882, 1364, 1893, +1879, 1368, 1891, +1876, 1373, 1888, +1871, 1380, 1885, +1865, 1388, 1880, +1856, 1400, 1874, +1844, 1414, 1865, +1827, 1433, 1853, +1805, 1458, 1837, +1772, 1488, 1814, +1724, 1526, 1782, +1652, 1572, 1734, +1532, 1627, 1662, +1297, 1692, 1544, +234, 1766, 1313, +0, 1850, 322, +0, 1942, 0, +0, 2041, 0, +0, 2147, 0, +0, 2259, 0, +0, 2375, 0, +0, 2495, 0, +0, 2618, 0, +0, 2743, 0, +0, 2869, 0, +0, 2997, 0, +0, 3126, 0, +0, 3256, 0, +0, 3387, 0, +0, 3517, 0, +0, 3648, 0, +2040, 1402, 1980, +2038, 1405, 1979, +2037, 1408, 1977, +2034, 1413, 1975, +2031, 1419, 1972, +2026, 1427, 1968, +2020, 1437, 1963, +2012, 1451, 1956, +2001, 1468, 1946, +1985, 1491, 1933, +1964, 1519, 1914, +1933, 1555, 1889, +1888, 1598, 1852, +1821, 1650, 1797, +1712, 1712, 1712, +1507, 1783, 1566, +855, 1864, 1243, +0, 1953, 0, +0, 2051, 0, +0, 2155, 0, +0, 2265, 0, +0, 2380, 0, +0, 2499, 0, +0, 2620, 0, +0, 2745, 0, +0, 2871, 0, +0, 2999, 0, +0, 3127, 0, +0, 3257, 0, +0, 3387, 0, +0, 3518, 0, +0, 3649, 0, +2189, 1451, 2074, +2188, 1453, 2073, +2187, 1456, 2071, +2185, 1461, 2070, +2183, 1466, 2067, +2180, 1473, 2064, +2175, 1483, 2060, +2169, 1495, 2054, +2161, 1511, 2046, +2151, 1531, 2036, +2136, 1557, 2021, +2115, 1590, 2001, +2085, 1630, 1972, +2043, 1679, 1931, +1979, 1737, 1869, +1877, 1805, 1771, +1690, 1882, 1593, +1170, 1968, 1129, +0, 2063, 0, +0, 2165, 0, +0, 2273, 0, +0, 2386, 0, +0, 2503, 0, +0, 2624, 0, +0, 2747, 0, +0, 2873, 0, +0, 3000, 0, +0, 3128, 0, +0, 3258, 0, +0, 3388, 0, +0, 3518, 0, +0, 3649, 0, +2334, 1509, 2175, +2333, 1511, 2174, +2332, 1514, 2173, +2331, 1518, 2172, +2329, 1522, 2170, +2327, 1529, 2167, +2324, 1537, 2164, +2319, 1548, 2159, +2314, 1562, 2153, +2306, 1581, 2145, +2295, 1604, 2134, +2281, 1634, 2118, +2261, 1671, 2096, +2232, 1716, 2065, +2191, 1769, 2019, +2130, 1833, 1951, +2032, 1906, 1839, +1856, 1988, 1628, +1402, 2079, 912, +0, 2177, 0, +0, 2283, 0, +0, 2394, 0, +0, 2509, 0, +0, 2629, 0, +0, 2751, 0, +0, 2876, 0, +0, 3002, 0, +0, 3130, 0, +0, 3259, 0, +0, 3389, 0, +0, 3519, 0, +0, 3650, 0, +2475, 1577, 2283, +2474, 1579, 2282, +2474, 1581, 2281, +2473, 1584, 2280, +2472, 1588, 2279, +2470, 1594, 2277, +2468, 1601, 2274, +2464, 1611, 2270, +2460, 1623, 2266, +2455, 1639, 2259, +2447, 1660, 2250, +2437, 1686, 2238, +2423, 1719, 2221, +2403, 1760, 2198, +2375, 1809, 2165, +2335, 1867, 2116, +2275, 1935, 2041, +2181, 2013, 1917, +2012, 2099, 1670, +1597, 2194, 135, +0, 2296, 0, +0, 2404, 0, +0, 2517, 0, +0, 2635, 0, +0, 2756, 0, +0, 2879, 0, +0, 3005, 0, +0, 3132, 0, +0, 3260, 0, +0, 3390, 0, +0, 3520, 0, +0, 3650, 0, +2614, 1654, 2395, +2613, 1656, 2395, +2613, 1658, 2394, +2612, 1660, 2393, +2611, 1664, 2392, +2610, 1669, 2391, +2608, 1675, 2389, +2606, 1683, 2386, +2603, 1694, 2382, +2599, 1707, 2377, +2593, 1725, 2370, +2586, 1748, 2361, +2576, 1777, 2348, +2562, 1813, 2331, +2542, 1857, 2306, +2515, 1910, 2271, +2476, 1972, 2219, +2417, 2044, 2139, +2325, 2125, 2004, +2162, 2215, 1721, +1771, 2313, 0, +0, 2417, 0, +0, 2528, 0, +0, 2643, 0, +0, 2762, 0, +0, 2884, 0, +0, 3009, 0, +0, 3135, 0, +0, 3263, 0, +0, 3391, 0, +0, 3521, 0, +0, 3651, 0, +2751, 1741, 2513, +2750, 1742, 2512, +2750, 1744, 2512, +2750, 1746, 2511, +2749, 1749, 2510, +2748, 1753, 2509, +2747, 1758, 2507, +2745, 1764, 2505, +2743, 1773, 2502, +2740, 1785, 2499, +2736, 1800, 2493, +2730, 1819, 2486, +2723, 1844, 2477, +2713, 1875, 2464, +2699, 1914, 2445, +2680, 1961, 2420, +2653, 2017, 2383, +2614, 2083, 2329, +2556, 2158, 2244, +2466, 2242, 2099, +2306, 2335, 1782, +1932, 2435, 0, +0, 2542, 0, +0, 2654, 0, +0, 2770, 0, +0, 2890, 0, +0, 3013, 0, +0, 3138, 0, +0, 3265, 0, +0, 3393, 0, +0, 3522, 0, +0, 3652, 0, +2887, 1835, 2633, +2886, 1836, 2633, +2886, 1838, 2633, +2886, 1839, 2632, +2885, 1842, 2631, +2884, 1845, 2630, +2884, 1849, 2629, +2882, 1855, 2628, +2881, 1862, 2625, +2878, 1872, 2623, +2875, 1884, 2619, +2871, 1900, 2613, +2866, 1921, 2606, +2859, 1948, 2596, +2849, 1981, 2582, +2835, 2021, 2564, +2816, 2071, 2537, +2789, 2130, 2499, +2751, 2198, 2443, +2694, 2275, 2355, +2604, 2362, 2201, +2447, 2457, 1852, +2084, 2559, 0, +0, 2668, 0, +0, 2781, 0, +0, 2899, 0, +0, 3020, 0, +0, 3143, 0, +0, 3269, 0, +0, 3396, 0, +0, 3525, 0, +0, 3654, 0, +3021, 1937, 2757, +3021, 1938, 2756, +3021, 1939, 2756, +3021, 1940, 2756, +3020, 1942, 2755, +3020, 1945, 2754, +3019, 1948, 2754, +3018, 1953, 2752, +3017, 1959, 2751, +3015, 1966, 2748, +3013, 1977, 2745, +3010, 1990, 2741, +3006, 2007, 2736, +3001, 2029, 2728, +2994, 2057, 2718, +2984, 2092, 2705, +2970, 2134, 2685, +2951, 2186, 2658, +2924, 2247, 2619, +2886, 2317, 2561, +2830, 2397, 2470, +2741, 2485, 2310, +2586, 2582, 1931, +2231, 2685, 0, +0, 2795, 0, +0, 2910, 0, +0, 3028, 0, +0, 3150, 0, +0, 3274, 0, +0, 3400, 0, +0, 3527, 0, +0, 3656, 0, +3155, 2045, 2882, +3155, 2046, 2882, +3155, 2047, 2882, +3155, 2048, 2881, +3155, 2049, 2881, +3154, 2051, 2880, +3154, 2054, 2880, +3153, 2057, 2879, +3152, 2062, 2877, +3151, 2068, 2876, +3149, 2077, 2874, +3147, 2087, 2870, +3144, 2101, 2866, +3140, 2119, 2861, +3135, 2142, 2853, +3128, 2171, 2843, +3118, 2207, 2829, +3104, 2251, 2809, +3085, 2304, 2782, +3059, 2367, 2742, +3021, 2439, 2683, +2965, 2520, 2589, +2877, 2610, 2423, +2723, 2708, 2020, +2374, 2813, 0, +0, 2924, 0, +0, 3039, 0, +0, 3158, 0, +0, 3280, 0, +0, 3405, 0, +0, 3531, 0, +0, 3659, 0, +3289, 2158, 3009, +3289, 2159, 3009, +3289, 2160, 3009, +3289, 2160, 3009, +3288, 2162, 3008, +3288, 2163, 3008, +3288, 2165, 3007, +3287, 2168, 3007, +3287, 2172, 3006, +3286, 2177, 3004, +3285, 2183, 3003, +3283, 2192, 3000, +3281, 2203, 2997, +3278, 2217, 2993, +3274, 2236, 2988, +3269, 2259, 2980, +3261, 2289, 2969, +3251, 2326, 2955, +3238, 2372, 2935, +3219, 2426, 2907, +3193, 2490, 2867, +3155, 2563, 2807, +3099, 2646, 2711, +3011, 2737, 2541, +2859, 2836, 2116, +2514, 2942, 0, +0, 3053, 0, +0, 3169, 0, +0, 3289, 0, +0, 3411, 0, +0, 3536, 0, +0, 3662, 0, +3422, 2276, 3137, +3422, 2276, 3137, +3422, 2277, 3137, +3422, 2278, 3137, +3422, 2278, 3137, +3422, 2280, 3136, +3421, 2281, 3136, +3421, 2283, 3135, +3420, 2286, 3135, +3420, 2290, 3134, +3419, 2295, 3133, +3418, 2302, 3131, +3416, 2310, 3128, +3414, 2322, 3125, +3411, 2337, 3121, +3407, 2356, 3115, +3402, 2380, 3108, +3394, 2411, 3097, +3385, 2449, 3083, +3371, 2495, 3063, +3352, 2551, 3035, +3326, 2615, 2994, +3289, 2690, 2933, +3233, 2773, 2836, +3145, 2866, 2662, +2994, 2965, 2219, +2652, 3072, 0, +0, 3183, 0, +0, 3300, 0, +0, 3420, 0, +0, 3542, 0, +0, 3667, 0, +3555, 2397, 3267, +3555, 2397, 3266, +3555, 2398, 3266, +3555, 2398, 3266, +3555, 2399, 3266, +3555, 2400, 3266, +3555, 2401, 3266, +3554, 2403, 3265, +3554, 2405, 3265, +3553, 2408, 3264, +3553, 2412, 3263, +3552, 2417, 3262, +3551, 2423, 3260, +3549, 2432, 3258, +3547, 2444, 3254, +3544, 2459, 3250, +3540, 2479, 3245, +3535, 2504, 3237, +3527, 2535, 3226, +3518, 2573, 3212, +3504, 2621, 3191, +3485, 2677, 3163, +3459, 2742, 3122, +3422, 2818, 3060, +3366, 2902, 2962, +3279, 2995, 2786, +3128, 3095, 2329, +2788, 3202, 0, +0, 3314, 0, +0, 3431, 0, +0, 3551, 0, +0, 3674, 0, +3688, 2520, 3396, +3688, 2521, 3396, +3688, 2521, 3396, +3688, 2521, 3396, +3688, 2522, 3396, +3688, 2522, 3396, +3687, 2523, 3396, +3687, 2525, 3395, +3687, 2526, 3395, +3687, 2529, 3394, +3686, 2532, 3394, +3685, 2536, 3393, +3684, 2541, 3391, +3683, 2548, 3390, +3682, 2557, 3387, +3679, 2569, 3384, +3677, 2584, 3380, +3673, 2604, 3374, +3667, 2629, 3366, +3660, 2661, 3356, +3650, 2700, 3341, +3637, 2748, 3321, +3618, 2804, 3292, +3592, 2871, 3251, +3555, 2946, 3189, +3499, 3031, 3090, +3412, 3125, 2912, +3262, 3225, 2443, +2923, 3332, 0, +0, 3445, 0, +0, 3562, 0, +0, 3682, 0, +3820, 2646, 3527, +3820, 2646, 3527, +3820, 2646, 3527, +3820, 2647, 3527, +3820, 2647, 3527, +3820, 2648, 3527, +3820, 2648, 3526, +3820, 2649, 3526, +3820, 2651, 3526, +3819, 2652, 3525, +3819, 2654, 3525, +3819, 2658, 3524, +3818, 2662, 3523, +3817, 2667, 3522, +3816, 2674, 3520, +3814, 2683, 3518, +3812, 2695, 3515, +3809, 2711, 3510, +3805, 2731, 3505, +3800, 2756, 3497, +3793, 2788, 3486, +3783, 2828, 3471, +3769, 2876, 3451, +3751, 2933, 3422, +3725, 3000, 3381, +3687, 3076, 3318, +3632, 3161, 3219, +3545, 3255, 3039, +3395, 3356, 2562, +3058, 3463, 0, +0, 3576, 0, +0, 3693, 0, +3953, 2773, 3658, +3953, 2773, 3658, +3953, 2773, 3658, +3953, 2774, 3658, +3953, 2774, 3658, +3953, 2774, 3658, +3953, 2775, 3657, +3953, 2776, 3657, +3952, 2777, 3657, +3952, 2778, 3657, +3952, 2780, 3656, +3952, 2782, 3656, +3951, 2785, 3655, +3950, 2789, 3654, +3949, 2794, 3653, +3948, 2801, 3651, +3947, 2811, 3649, +3944, 2823, 3645, +3942, 2839, 3641, +3938, 2859, 3635, +3932, 2885, 3628, +3925, 2917, 3617, +3915, 2957, 3602, +3902, 3005, 3582, +3883, 3063, 3553, +3857, 3130, 3511, +3820, 3206, 3449, +3764, 3292, 3349, +3678, 3386, 3167, +3528, 3487, 2683, +3192, 3595, 0, +0, 3708, 0, +4085, 2901, 3789, +4085, 2902, 3789, +4085, 2902, 3789, +4085, 2902, 3789, +4085, 2902, 3789, +4085, 2902, 3789, +4085, 2903, 3789, +4085, 2903, 3789, +4085, 2904, 3788, +4085, 2905, 3788, +4085, 2906, 3788, +4084, 2908, 3787, +4084, 2910, 3787, +4083, 2913, 3786, +4083, 2918, 3785, +4082, 2923, 3784, +4081, 2930, 3782, +4079, 2939, 3780, +4077, 2952, 3777, +4074, 2968, 3772, +4070, 2988, 3767, +4065, 3014, 3759, +4058, 3046, 3748, +4048, 3086, 3733, +4034, 3135, 3713, +4016, 3193, 3684, +3990, 3260, 3642, +3952, 3337, 3579, +3897, 3423, 3479, +3810, 3517, 3297, +3660, 3618, 2807, +3325, 3726, 0, +4095, 3031, 3920, +4095, 3031, 3920, +4095, 3031, 3920, +4095, 3031, 3920, +4095, 3031, 3920, +4095, 3031, 3920, +4095, 3032, 3920, +4095, 3032, 3920, +4095, 3033, 3920, +4095, 3033, 3920, +4095, 3034, 3920, +4095, 3036, 3919, +4095, 3037, 3919, +4095, 3040, 3918, +4095, 3043, 3918, +4095, 3047, 3917, +4095, 3052, 3915, +4095, 3060, 3914, +4095, 3069, 3911, +4095, 3081, 3908, +4095, 3097, 3904, +4095, 3118, 3898, +4095, 3144, 3890, +4095, 3176, 3879, +4095, 3217, 3864, +4095, 3265, 3844, +4095, 3323, 3815, +4095, 3391, 3773, +4085, 3468, 3710, +4029, 3554, 3610, +3943, 3648, 3427, +3793, 3750, 2933, +4095, 3161, 4052, +4095, 3161, 4052, +4095, 3161, 4052, +4095, 3161, 4052, +4095, 3161, 4052, +4095, 3161, 4052, +4095, 3161, 4052, +4095, 3162, 4052, +4095, 3162, 4052, +4095, 3163, 4052, +4095, 3163, 4051, +4095, 3164, 4051, +4095, 3166, 4051, +4095, 3168, 4050, +4095, 3170, 4050, +4095, 3173, 4049, +4095, 3177, 4048, +4095, 3183, 4047, +4095, 3190, 4045, +4095, 3199, 4043, +4095, 3212, 4040, +4095, 3228, 4035, +4095, 3248, 4029, +4095, 3274, 4022, +4095, 3307, 4011, +4095, 3347, 3996, +4095, 3396, 3975, +4095, 3454, 3946, +4095, 3522, 3904, +4095, 3599, 3841, +4095, 3685, 3741, +4075, 3780, 3557, +0, 1347, 1608, +0, 1350, 1606, +0, 1354, 1602, +0, 1359, 1597, +0, 1365, 1590, +0, 1374, 1581, +0, 1386, 1569, +0, 1401, 1552, +0, 1421, 1528, +0, 1446, 1494, +0, 1477, 1444, +0, 1516, 1367, +0, 1563, 1239, +0, 1619, 979, +0, 1685, 0, +0, 1760, 0, +0, 1845, 0, +0, 1938, 0, +0, 2038, 0, +0, 2145, 0, +0, 2257, 0, +0, 2374, 0, +0, 2494, 0, +0, 2617, 0, +0, 2742, 0, +0, 2869, 0, +0, 2997, 0, +0, 3126, 0, +0, 3256, 0, +0, 3386, 0, +0, 3517, 0, +0, 3648, 0, +0, 1348, 1612, +0, 1351, 1610, +0, 1354, 1606, +0, 1360, 1601, +0, 1366, 1595, +0, 1375, 1586, +0, 1387, 1573, +0, 1402, 1557, +0, 1422, 1533, +0, 1447, 1499, +0, 1478, 1450, +0, 1516, 1374, +0, 1564, 1248, +0, 1620, 995, +0, 1685, 0, +0, 1761, 0, +0, 1845, 0, +0, 1938, 0, +0, 2038, 0, +0, 2145, 0, +0, 2257, 0, +0, 2374, 0, +0, 2494, 0, +0, 2617, 0, +0, 2742, 0, +0, 2869, 0, +0, 2997, 0, +0, 3126, 0, +0, 3256, 0, +0, 3386, 0, +0, 3517, 0, +0, 3648, 0, +0, 1349, 1618, +0, 1352, 1615, +0, 1356, 1611, +0, 1361, 1607, +0, 1368, 1600, +0, 1377, 1591, +0, 1388, 1579, +0, 1403, 1563, +0, 1423, 1539, +0, 1448, 1506, +0, 1479, 1457, +0, 1517, 1383, +0, 1564, 1260, +0, 1620, 1015, +0, 1686, 0, +0, 1761, 0, +0, 1845, 0, +0, 1938, 0, +0, 2038, 0, +0, 2145, 0, +0, 2257, 0, +0, 2374, 0, +0, 2494, 0, +0, 2617, 0, +0, 2742, 0, +0, 2869, 0, +0, 2997, 0, +0, 3126, 0, +0, 3256, 0, +0, 3386, 0, +0, 3517, 0, +0, 3648, 0, +0, 1351, 1625, +0, 1354, 1622, +0, 1358, 1619, +0, 1363, 1614, +0, 1369, 1607, +0, 1378, 1599, +0, 1390, 1587, +0, 1405, 1570, +0, 1424, 1548, +0, 1449, 1515, +0, 1480, 1467, +0, 1519, 1395, +0, 1565, 1275, +0, 1621, 1041, +0, 1687, 0, +0, 1762, 0, +0, 1846, 0, +0, 1939, 0, +0, 2039, 0, +0, 2145, 0, +0, 2258, 0, +0, 2374, 0, +0, 2494, 0, +0, 2617, 0, +0, 2742, 0, +0, 2869, 0, +0, 2997, 0, +0, 3126, 0, +0, 3256, 0, +0, 3386, 0, +0, 3517, 0, +0, 3648, 0, +0, 1353, 1634, +0, 1356, 1631, +0, 1360, 1628, +0, 1365, 1623, +0, 1372, 1617, +0, 1381, 1608, +0, 1392, 1597, +0, 1407, 1581, +0, 1426, 1558, +0, 1451, 1527, +0, 1482, 1480, +0, 1520, 1410, +0, 1567, 1295, +0, 1623, 1074, +0, 1688, 244, +0, 1763, 0, +0, 1847, 0, +0, 1939, 0, +0, 2039, 0, +0, 2146, 0, +0, 2258, 0, +0, 2374, 0, +0, 2494, 0, +0, 2617, 0, +0, 2742, 0, +0, 2869, 0, +0, 2997, 0, +0, 3126, 0, +0, 3256, 0, +0, 3386, 0, +0, 3517, 0, +0, 3648, 0, +0, 1356, 1646, +0, 1359, 1643, +0, 1363, 1640, +0, 1368, 1636, +0, 1375, 1629, +0, 1383, 1621, +0, 1395, 1610, +0, 1410, 1594, +0, 1429, 1573, +0, 1453, 1542, +0, 1484, 1497, +0, 1522, 1430, +0, 1569, 1320, +0, 1624, 1114, +0, 1690, 449, +0, 1764, 0, +0, 1848, 0, +0, 1940, 0, +0, 2040, 0, +0, 2146, 0, +0, 2258, 0, +0, 2375, 0, +0, 2495, 0, +0, 2617, 0, +0, 2742, 0, +0, 2869, 0, +0, 2997, 0, +0, 3126, 0, +0, 3256, 0, +0, 3387, 0, +0, 3517, 0, +0, 3648, 0, +0, 1360, 1662, +0, 1363, 1659, +0, 1367, 1656, +0, 1372, 1652, +0, 1379, 1646, +0, 1387, 1638, +0, 1399, 1627, +0, 1414, 1612, +0, 1433, 1591, +0, 1457, 1561, +0, 1487, 1519, +0, 1525, 1455, +0, 1572, 1351, +0, 1627, 1162, +0, 1692, 629, +0, 1766, 0, +0, 1849, 0, +0, 1941, 0, +0, 2041, 0, +0, 2147, 0, +0, 2259, 0, +0, 2375, 0, +0, 2495, 0, +0, 2618, 0, +0, 2743, 0, +0, 2869, 0, +0, 2997, 0, +0, 3126, 0, +0, 3256, 0, +0, 3387, 0, +0, 3517, 0, +0, 3648, 0, +0, 1366, 1682, +0, 1369, 1679, +0, 1373, 1676, +0, 1377, 1672, +0, 1384, 1666, +0, 1393, 1659, +0, 1404, 1648, +0, 1418, 1634, +0, 1437, 1614, +0, 1461, 1586, +0, 1492, 1546, +0, 1529, 1486, +0, 1575, 1390, +0, 1630, 1220, +0, 1694, 795, +0, 1768, 0, +0, 1851, 0, +0, 1943, 0, +0, 2042, 0, +0, 2148, 0, +0, 2260, 0, +0, 2376, 0, +0, 2495, 0, +0, 2618, 0, +0, 2743, 0, +0, 2870, 0, +0, 2998, 0, +0, 3127, 0, +0, 3256, 0, +0, 3387, 0, +0, 3517, 0, +0, 3649, 0, +0, 1373, 1707, +0, 1376, 1705, +0, 1380, 1702, +0, 1385, 1698, +0, 1391, 1693, +0, 1399, 1686, +0, 1411, 1676, +0, 1425, 1662, +0, 1444, 1644, +0, 1467, 1618, +0, 1497, 1580, +0, 1534, 1525, +0, 1580, 1438, +0, 1634, 1287, +0, 1698, 950, +0, 1771, 0, +0, 1854, 0, +0, 1945, 0, +0, 2044, 0, +0, 2149, 0, +0, 2261, 0, +0, 2377, 0, +0, 2496, 0, +0, 2619, 0, +0, 2743, 0, +0, 2870, 0, +0, 2998, 0, +0, 3127, 0, +0, 3256, 0, +0, 3387, 0, +0, 3517, 0, +0, 3649, 0, +817, 1383, 1739, +796, 1385, 1737, +767, 1389, 1734, +725, 1394, 1731, +662, 1400, 1726, +560, 1408, 1719, +375, 1419, 1710, +0, 1433, 1698, +0, 1452, 1680, +0, 1475, 1656, +0, 1504, 1622, +0, 1541, 1572, +0, 1586, 1494, +0, 1639, 1364, +0, 1702, 1098, +0, 1775, 0, +0, 1857, 0, +0, 1948, 0, +0, 2046, 0, +0, 2151, 0, +0, 2262, 0, +0, 2378, 0, +0, 2497, 0, +0, 2619, 0, +0, 2744, 0, +0, 2870, 0, +0, 2998, 0, +0, 3127, 0, +0, 3257, 0, +0, 3387, 0, +0, 3518, 0, +0, 3649, 0, +1204, 1395, 1779, +1195, 1398, 1777, +1183, 1401, 1775, +1166, 1406, 1771, +1143, 1412, 1767, +1111, 1420, 1761, +1063, 1431, 1752, +990, 1445, 1741, +870, 1462, 1725, +635, 1485, 1704, +0, 1514, 1673, +0, 1550, 1628, +0, 1594, 1560, +0, 1646, 1450, +0, 1709, 1243, +0, 1780, 567, +0, 1861, 0, +0, 1951, 0, +0, 2049, 0, +0, 2154, 0, +0, 2264, 0, +0, 2379, 0, +0, 2498, 0, +0, 2620, 0, +0, 2744, 0, +0, 2871, 0, +0, 2998, 0, +0, 3127, 0, +0, 3257, 0, +0, 3387, 0, +0, 3518, 0, +0, 3649, 0, +1462, 1411, 1827, +1457, 1414, 1825, +1450, 1417, 1823, +1441, 1422, 1820, +1429, 1428, 1816, +1412, 1436, 1811, +1388, 1446, 1803, +1354, 1459, 1793, +1304, 1476, 1779, +1227, 1498, 1760, +1098, 1526, 1733, +836, 1561, 1694, +0, 1604, 1636, +0, 1656, 1544, +0, 1717, 1383, +0, 1787, 1003, +0, 1867, 0, +0, 1956, 0, +0, 2053, 0, +0, 2157, 0, +0, 2266, 0, +0, 2381, 0, +0, 2499, 0, +0, 2621, 0, +0, 2745, 0, +0, 2871, 0, +0, 2999, 0, +0, 3128, 0, +0, 3257, 0, +0, 3387, 0, +0, 3518, 0, +0, 3649, 0, +1670, 1432, 1884, +1667, 1435, 1883, +1663, 1438, 1881, +1657, 1442, 1878, +1649, 1448, 1875, +1639, 1455, 1870, +1624, 1465, 1863, +1604, 1478, 1854, +1576, 1494, 1842, +1536, 1516, 1826, +1475, 1543, 1802, +1378, 1576, 1769, +1206, 1618, 1720, +769, 1668, 1646, +0, 1728, 1522, +0, 1797, 1276, +0, 1875, 0, +0, 1962, 0, +0, 2058, 0, +0, 2161, 0, +0, 2270, 0, +0, 2383, 0, +0, 2501, 0, +0, 2623, 0, +0, 2746, 0, +0, 2872, 0, +0, 3000, 0, +0, 3128, 0, +0, 3257, 0, +0, 3387, 0, +0, 3518, 0, +0, 3649, 0, +1851, 1458, 1951, +1849, 1461, 1950, +1847, 1464, 1948, +1843, 1468, 1946, +1838, 1473, 1943, +1831, 1480, 1939, +1821, 1490, 1933, +1809, 1502, 1925, +1791, 1517, 1915, +1766, 1538, 1901, +1730, 1563, 1881, +1678, 1596, 1853, +1597, 1636, 1813, +1459, 1684, 1753, +1167, 1741, 1659, +0, 1809, 1491, +0, 1885, 1074, +0, 1971, 0, +0, 2065, 0, +0, 2166, 0, +0, 2274, 0, +0, 2387, 0, +0, 2504, 0, +0, 2625, 0, +0, 2748, 0, +0, 2873, 0, +0, 3000, 0, +0, 3129, 0, +0, 3258, 0, +0, 3388, 0, +0, 3518, 0, +0, 3649, 0, +2017, 1491, 2027, +2016, 1494, 2026, +2014, 1496, 2025, +2011, 1500, 2023, +2008, 1505, 2020, +2003, 1512, 2017, +1997, 1520, 2012, +1988, 1532, 2006, +1976, 1547, 1997, +1960, 1566, 1985, +1937, 1590, 1969, +1904, 1620, 1946, +1856, 1658, 1914, +1784, 1704, 1867, +1664, 1759, 1794, +1430, 1824, 1676, +367, 1898, 1445, +0, 1982, 454, +0, 2074, 0, +0, 2173, 0, +0, 2279, 0, +0, 2391, 0, +0, 2507, 0, +0, 2627, 0, +0, 2750, 0, +0, 2875, 0, +0, 3002, 0, +0, 3130, 0, +0, 3259, 0, +0, 3388, 0, +0, 3519, 0, +0, 3649, 0, +2173, 1532, 2113, +2172, 1534, 2112, +2171, 1537, 2111, +2169, 1540, 2109, +2166, 1545, 2107, +2163, 1551, 2104, +2158, 1559, 2100, +2152, 1569, 2095, +2144, 1583, 2088, +2133, 1600, 2078, +2117, 1623, 2065, +2096, 1651, 2047, +2065, 1687, 2021, +2021, 1730, 1984, +1953, 1782, 1929, +1844, 1844, 1844, +1639, 1915, 1698, +988, 1996, 1375, +0, 2085, 0, +0, 2183, 0, +0, 2287, 0, +0, 2397, 0, +0, 2512, 0, +0, 2631, 0, +0, 2753, 0, +0, 2877, 0, +0, 3003, 0, +0, 3131, 0, +0, 3259, 0, +0, 3389, 0, +0, 3519, 0, +0, 3650, 0, +2322, 1581, 2206, +2321, 1583, 2206, +2320, 1585, 2205, +2319, 1588, 2204, +2317, 1593, 2202, +2315, 1598, 2199, +2312, 1605, 2196, +2307, 1615, 2192, +2301, 1627, 2186, +2293, 1643, 2179, +2283, 1663, 2168, +2268, 1690, 2153, +2247, 1722, 2133, +2218, 1763, 2105, +2175, 1811, 2063, +2111, 1870, 2001, +2009, 1937, 1903, +1822, 2014, 1725, +1302, 2100, 1261, +0, 2195, 0, +0, 2297, 0, +0, 2405, 0, +0, 2518, 0, +0, 2635, 0, +0, 2756, 0, +0, 2880, 0, +0, 3005, 0, +0, 3132, 0, +0, 3261, 0, +0, 3390, 0, +0, 3520, 0, +0, 3650, 0, +2466, 1640, 2308, +2466, 1641, 2307, +2465, 1643, 2306, +2464, 1646, 2305, +2463, 1650, 2304, +2461, 1655, 2302, +2459, 1661, 2299, +2456, 1669, 2296, +2451, 1680, 2292, +2446, 1694, 2285, +2438, 1713, 2277, +2427, 1736, 2266, +2413, 1766, 2250, +2393, 1803, 2228, +2364, 1848, 2197, +2323, 1902, 2152, +2262, 1965, 2083, +2164, 2038, 1971, +1988, 2120, 1760, +1534, 2211, 1044, +0, 2309, 0, +0, 2415, 0, +0, 2526, 0, +0, 2641, 0, +0, 2761, 0, +0, 2883, 0, +0, 3008, 0, +0, 3134, 0, +0, 3262, 0, +0, 3391, 0, +0, 3521, 0, +0, 3651, 0, +2607, 1708, 2415, +2607, 1709, 2415, +2607, 1711, 2414, +2606, 1713, 2413, +2605, 1716, 2412, +2604, 1721, 2411, +2602, 1726, 2409, +2600, 1733, 2406, +2597, 1743, 2402, +2592, 1755, 2398, +2587, 1771, 2391, +2579, 1792, 2382, +2569, 1818, 2370, +2555, 1851, 2353, +2535, 1892, 2330, +2507, 1941, 2297, +2467, 1999, 2248, +2407, 2067, 2173, +2313, 2145, 2049, +2144, 2231, 1802, +1729, 2326, 267, +0, 2428, 0, +0, 2536, 0, +0, 2649, 0, +0, 2767, 0, +0, 2888, 0, +0, 3011, 0, +0, 3137, 0, +0, 3264, 0, +0, 3393, 0, +0, 3522, 0, +0, 3652, 0, +2746, 1785, 2528, +2746, 1786, 2528, +2745, 1788, 2527, +2745, 1790, 2526, +2744, 1793, 2526, +2743, 1796, 2524, +2742, 1801, 2523, +2740, 1807, 2521, +2738, 1815, 2518, +2735, 1826, 2514, +2731, 1839, 2509, +2726, 1857, 2502, +2718, 1880, 2493, +2708, 1909, 2480, +2694, 1945, 2463, +2674, 1989, 2438, +2647, 2042, 2403, +2608, 2104, 2351, +2549, 2176, 2271, +2457, 2257, 2136, +2294, 2347, 1853, +1903, 2445, 0, +0, 2549, 0, +0, 2660, 0, +0, 2775, 0, +0, 2894, 0, +0, 3016, 0, +0, 3141, 0, +0, 3267, 0, +0, 3395, 0, +0, 3523, 0, +0, 3653, 0, +2883, 1872, 2645, +2883, 1873, 2645, +2883, 1874, 2644, +2882, 1876, 2644, +2882, 1878, 2643, +2881, 1881, 2642, +2880, 1885, 2641, +2879, 1890, 2640, +2877, 1897, 2637, +2875, 1905, 2635, +2872, 1917, 2631, +2868, 1932, 2625, +2862, 1952, 2618, +2855, 1976, 2609, +2845, 2008, 2596, +2831, 2046, 2577, +2812, 2093, 2552, +2785, 2149, 2515, +2746, 2215, 2461, +2688, 2290, 2376, +2598, 2374, 2231, +2438, 2467, 1914, +2064, 2567, 0, +0, 2674, 0, +0, 2786, 0, +0, 2902, 0, +0, 3022, 0, +0, 3145, 0, +0, 3271, 0, +0, 3397, 0, +0, 3525, 0, +0, 3655, 0, +3019, 1967, 2766, +3019, 1967, 2765, +3018, 1968, 2765, +3018, 1970, 2765, +3018, 1971, 2764, +3017, 1974, 2763, +3017, 1977, 2763, +3016, 1981, 2761, +3014, 1987, 2760, +3013, 1994, 2758, +3011, 2004, 2755, +3008, 2016, 2751, +3004, 2032, 2745, +2998, 2053, 2738, +2991, 2080, 2728, +2981, 2113, 2715, +2967, 2154, 2696, +2948, 2203, 2669, +2921, 2262, 2631, +2883, 2330, 2575, +2826, 2408, 2487, +2736, 2494, 2334, +2580, 2589, 1984, +2216, 2691, 0, +0, 2800, 0, +0, 2913, 0, +0, 3031, 0, +0, 3152, 0, +0, 3275, 0, +0, 3401, 0, +0, 3528, 0, +0, 3657, 0, +3154, 2069, 2889, +3153, 2069, 2889, +3153, 2070, 2888, +3153, 2071, 2888, +3153, 2072, 2888, +3152, 2074, 2887, +3152, 2077, 2887, +3151, 2080, 2886, +3150, 2085, 2884, +3149, 2091, 2883, +3147, 2098, 2881, +3145, 2109, 2878, +3142, 2122, 2873, +3138, 2139, 2868, +3133, 2161, 2861, +3126, 2189, 2850, +3116, 2224, 2837, +3102, 2266, 2817, +3083, 2318, 2790, +3057, 2379, 2751, +3018, 2449, 2693, +2962, 2529, 2602, +2873, 2617, 2442, +2718, 2714, 2063, +2363, 2818, 0, +0, 2927, 0, +0, 3042, 0, +0, 3160, 0, +0, 3282, 0, +0, 3406, 0, +0, 3532, 0, +0, 3659, 0, +3288, 2177, 3014, +3288, 2177, 3014, +3287, 2178, 3014, +3287, 2179, 3014, +3287, 2180, 3013, +3287, 2181, 3013, +3286, 2183, 3012, +3286, 2186, 3012, +3285, 2190, 3011, +3284, 2194, 3010, +3283, 2200, 3008, +3281, 2209, 3006, +3279, 2219, 3003, +3276, 2233, 2998, +3272, 2251, 2993, +3267, 2274, 2985, +3260, 2303, 2975, +3250, 2339, 2961, +3236, 2383, 2941, +3217, 2437, 2914, +3191, 2499, 2874, +3153, 2571, 2815, +3097, 2652, 2721, +3009, 2743, 2556, +2855, 2840, 2152, +2506, 2945, 0, +0, 3056, 0, +0, 3171, 0, +0, 3290, 0, +0, 3412, 0, +0, 3537, 0, +0, 3663, 0, +3421, 2290, 3141, +3421, 2291, 3141, +3421, 2291, 3141, +3421, 2292, 3141, +3421, 2293, 3141, +3421, 2294, 3140, +3420, 2295, 3140, +3420, 2297, 3139, +3419, 2300, 3139, +3419, 2304, 3138, +3418, 2309, 3136, +3417, 2315, 3135, +3415, 2324, 3132, +3413, 2335, 3129, +3410, 2349, 3125, +3406, 2368, 3120, +3401, 2392, 3112, +3393, 2421, 3102, +3384, 2459, 3087, +3370, 2504, 3067, +3351, 2558, 3039, +3325, 2622, 2999, +3287, 2696, 2939, +3231, 2778, 2844, +3143, 2869, 2673, +2991, 2968, 2248, +2646, 3074, 0, +0, 3185, 0, +0, 3301, 0, +0, 3421, 0, +0, 3543, 0, +0, 3668, 0, +3554, 2408, 3269, +3554, 2408, 3269, +3554, 2408, 3269, +3554, 2409, 3269, +3554, 2410, 3269, +3554, 2411, 3269, +3554, 2412, 3268, +3553, 2413, 3268, +3553, 2416, 3268, +3553, 2418, 3267, +3552, 2422, 3266, +3551, 2427, 3265, +3550, 2434, 3263, +3548, 2443, 3261, +3546, 2454, 3257, +3543, 2469, 3253, +3539, 2488, 3248, +3534, 2512, 3240, +3527, 2543, 3229, +3517, 2581, 3215, +3503, 2627, 3195, +3485, 2683, 3167, +3458, 2747, 3126, +3421, 2822, 3065, +3365, 2905, 2968, +3277, 2998, 2794, +3126, 3097, 2352, +2784, 3204, 0, +0, 3315, 0, +0, 3432, 0, +0, 3552, 0, +0, 3674, 0, +3687, 2529, 3399, +3687, 2529, 3399, +3687, 2529, 3399, +3687, 2530, 3398, +3687, 2530, 3398, +3687, 2531, 3398, +3687, 2532, 3398, +3687, 2533, 3398, +3686, 2535, 3397, +3686, 2537, 3397, +3685, 2540, 3396, +3685, 2544, 3395, +3684, 2549, 3394, +3683, 2556, 3392, +3681, 2565, 3390, +3679, 2576, 3387, +3676, 2591, 3382, +3672, 2611, 3377, +3667, 2636, 3369, +3660, 2667, 3358, +3650, 2706, 3344, +3636, 2753, 3324, +3618, 2809, 3295, +3591, 2874, 3254, +3554, 2950, 3192, +3498, 3034, 3094, +3411, 3127, 2918, +3260, 3227, 2461, +2920, 3334, 0, +0, 3446, 0, +0, 3563, 0, +0, 3683, 0, +3820, 2652, 3529, +3820, 2652, 3529, +3820, 2653, 3528, +3820, 2653, 3528, +3820, 2653, 3528, +3820, 2654, 3528, +3820, 2655, 3528, +3820, 2656, 3528, +3819, 2657, 3528, +3819, 2658, 3527, +3819, 2661, 3527, +3818, 2664, 3526, +3817, 2668, 3525, +3817, 2673, 3524, +3815, 2680, 3522, +3814, 2689, 3519, +3812, 2701, 3516, +3809, 2716, 3512, +3805, 2736, 3506, +3799, 2761, 3499, +3792, 2793, 3488, +3782, 2832, 3473, +3769, 2880, 3453, +3750, 2936, 3424, +3724, 3003, 3383, +3687, 3078, 3321, +3631, 3163, 3222, +3544, 3257, 3044, +3394, 3357, 2575, +3056, 3465, 0, +0, 3577, 0, +0, 3694, 0, +3953, 2778, 3659, +3953, 2778, 3659, +3953, 2778, 3659, +3953, 2778, 3659, +3952, 2779, 3659, +3952, 2779, 3659, +3952, 2780, 3659, +3952, 2780, 3658, +3952, 2781, 3658, +3952, 2783, 3658, +3952, 2784, 3658, +3951, 2787, 3657, +3951, 2790, 3656, +3950, 2794, 3655, +3949, 2799, 3654, +3948, 2806, 3652, +3946, 2815, 3650, +3944, 2827, 3647, +3941, 2843, 3642, +3937, 2863, 3637, +3932, 2888, 3629, +3925, 2920, 3618, +3915, 2960, 3604, +3902, 3008, 3583, +3883, 3065, 3554, +3857, 3132, 3513, +3819, 3208, 3450, +3764, 3293, 3351, +3677, 3387, 3171, +3527, 3488, 2694, +3190, 3596, 0, +0, 3708, 0, +4085, 2905, 3790, +4085, 2905, 3790, +4085, 2905, 3790, +4085, 2905, 3790, +4085, 2906, 3790, +4085, 2906, 3790, +4085, 2906, 3790, +4085, 2907, 3789, +4085, 2908, 3789, +4084, 2909, 3789, +4084, 2910, 3789, +4084, 2912, 3788, +4084, 2914, 3788, +4083, 2917, 3787, +4082, 2921, 3786, +4082, 2926, 3785, +4080, 2933, 3783, +4079, 2943, 3781, +4077, 2955, 3778, +4074, 2971, 3773, +4070, 2991, 3768, +4064, 3017, 3760, +4057, 3049, 3749, +4047, 3089, 3734, +4034, 3137, 3714, +4015, 3195, 3685, +3989, 3262, 3643, +3952, 3338, 3581, +3896, 3424, 3481, +3810, 3518, 3299, +3660, 3619, 2815, +3324, 3727, 0, +4095, 3033, 3921, +4095, 3034, 3921, +4095, 3034, 3921, +4095, 3034, 3921, +4095, 3034, 3921, +4095, 3034, 3921, +4095, 3034, 3921, +4095, 3035, 3921, +4095, 3035, 3921, +4095, 3036, 3920, +4095, 3037, 3920, +4095, 3038, 3920, +4095, 3040, 3920, +4095, 3042, 3919, +4095, 3046, 3918, +4095, 3050, 3917, +4095, 3055, 3916, +4095, 3062, 3914, +4095, 3072, 3912, +4095, 3084, 3909, +4095, 3100, 3904, +4095, 3120, 3899, +4095, 3146, 3891, +4095, 3178, 3880, +4095, 3218, 3865, +4095, 3267, 3845, +4095, 3325, 3816, +4095, 3392, 3774, +4084, 3469, 3711, +4029, 3555, 3611, +3942, 3649, 3429, +3793, 3751, 2939, +4095, 3163, 4053, +4095, 3163, 4052, +4095, 3163, 4052, +4095, 3163, 4052, +4095, 3163, 4052, +4095, 3163, 4052, +4095, 3164, 4052, +4095, 3164, 4052, +4095, 3164, 4052, +4095, 3165, 4052, +4095, 3166, 4052, +4095, 3167, 4052, +4095, 3168, 4051, +4095, 3170, 4051, +4095, 3172, 4050, +4095, 3175, 4050, +4095, 3179, 4049, +4095, 3185, 4047, +4095, 3192, 4046, +4095, 3201, 4043, +4095, 3213, 4040, +4095, 3229, 4036, +4095, 3250, 4030, +4095, 3276, 4022, +4095, 3308, 4011, +4095, 3349, 3997, +4095, 3397, 3976, +4095, 3455, 3947, +4095, 3523, 3905, +4095, 3600, 3842, +4095, 3686, 3742, +4075, 3780, 3559, +0, 1476, 1739, +0, 1478, 1737, +0, 1481, 1735, +0, 1485, 1731, +0, 1490, 1726, +0, 1497, 1719, +0, 1506, 1710, +0, 1518, 1698, +0, 1533, 1681, +0, 1552, 1657, +0, 1577, 1622, +0, 1609, 1572, +0, 1647, 1494, +0, 1695, 1365, +0, 1751, 1099, +0, 1817, 0, +0, 1892, 0, +0, 1976, 0, +0, 2069, 0, +0, 2170, 0, +0, 2277, 0, +0, 2389, 0, +0, 2506, 0, +0, 2626, 0, +0, 2749, 0, +0, 2874, 0, +0, 3001, 0, +0, 3129, 0, +0, 3258, 0, +0, 3388, 0, +0, 3518, 0, +0, 3649, 0, +0, 1477, 1742, +0, 1479, 1740, +0, 1482, 1738, +0, 1486, 1734, +0, 1491, 1729, +0, 1498, 1723, +0, 1507, 1713, +0, 1518, 1701, +0, 1533, 1684, +0, 1553, 1660, +0, 1578, 1626, +0, 1609, 1576, +0, 1648, 1500, +0, 1695, 1371, +0, 1751, 1111, +0, 1817, 0, +0, 1892, 0, +0, 1977, 0, +0, 2070, 0, +0, 2170, 0, +0, 2277, 0, +0, 2389, 0, +0, 2506, 0, +0, 2626, 0, +0, 2749, 0, +0, 2874, 0, +0, 3001, 0, +0, 3129, 0, +0, 3258, 0, +0, 3388, 0, +0, 3519, 0, +0, 3649, 0, +0, 1478, 1746, +0, 1480, 1744, +0, 1483, 1742, +0, 1487, 1738, +0, 1492, 1733, +0, 1499, 1727, +0, 1507, 1718, +0, 1519, 1706, +0, 1534, 1689, +0, 1554, 1665, +0, 1579, 1631, +0, 1610, 1582, +0, 1649, 1506, +0, 1696, 1380, +0, 1752, 1127, +0, 1818, 0, +0, 1893, 0, +0, 1977, 0, +0, 2070, 0, +0, 2170, 0, +0, 2277, 0, +0, 2389, 0, +0, 2506, 0, +0, 2626, 0, +0, 2749, 0, +0, 2874, 0, +0, 3001, 0, +0, 3129, 0, +0, 3258, 0, +0, 3388, 0, +0, 3519, 0, +0, 3649, 0, +0, 1479, 1752, +0, 1481, 1750, +0, 1484, 1747, +0, 1488, 1744, +0, 1493, 1739, +0, 1500, 1732, +0, 1509, 1723, +0, 1520, 1711, +0, 1535, 1695, +0, 1555, 1671, +0, 1580, 1638, +0, 1611, 1590, +0, 1650, 1515, +0, 1696, 1392, +0, 1753, 1147, +0, 1818, 0, +0, 1893, 0, +0, 1978, 0, +0, 2070, 0, +0, 2171, 0, +0, 2277, 0, +0, 2389, 0, +0, 2506, 0, +0, 2626, 0, +0, 2749, 0, +0, 2874, 0, +0, 3001, 0, +0, 3129, 0, +0, 3258, 0, +0, 3388, 0, +0, 3519, 0, +0, 3649, 0, +0, 1481, 1759, +0, 1483, 1757, +0, 1486, 1754, +0, 1490, 1751, +0, 1495, 1746, +0, 1502, 1740, +0, 1510, 1731, +0, 1522, 1719, +0, 1537, 1703, +0, 1556, 1680, +0, 1581, 1647, +0, 1612, 1600, +0, 1651, 1527, +0, 1698, 1407, +0, 1754, 1173, +0, 1819, 122, +0, 1894, 0, +0, 1978, 0, +0, 2071, 0, +0, 2171, 0, +0, 2278, 0, +0, 2390, 0, +0, 2506, 0, +0, 2626, 0, +0, 2749, 0, +0, 2874, 0, +0, 3001, 0, +0, 3129, 0, +0, 3258, 0, +0, 3388, 0, +0, 3519, 0, +0, 3649, 0, +0, 1483, 1768, +0, 1485, 1766, +0, 1488, 1763, +0, 1492, 1760, +0, 1497, 1755, +0, 1504, 1749, +0, 1513, 1741, +0, 1524, 1729, +0, 1539, 1713, +0, 1558, 1691, +0, 1583, 1659, +0, 1614, 1612, +0, 1652, 1542, +0, 1699, 1427, +0, 1755, 1206, +0, 1820, 376, +0, 1895, 0, +0, 1979, 0, +0, 2071, 0, +0, 2171, 0, +0, 2278, 0, +0, 2390, 0, +0, 2506, 0, +0, 2626, 0, +0, 2749, 0, +0, 2874, 0, +0, 3001, 0, +0, 3129, 0, +0, 3258, 0, +0, 3388, 0, +0, 3519, 0, +0, 3649, 0, +0, 1486, 1780, +0, 1488, 1778, +0, 1491, 1776, +0, 1495, 1772, +0, 1500, 1768, +0, 1507, 1762, +0, 1516, 1753, +0, 1527, 1742, +0, 1542, 1726, +0, 1561, 1705, +0, 1586, 1674, +0, 1616, 1629, +0, 1655, 1562, +0, 1701, 1452, +0, 1757, 1246, +0, 1822, 581, +0, 1896, 0, +0, 1980, 0, +0, 2072, 0, +0, 2172, 0, +0, 2279, 0, +0, 2390, 0, +0, 2507, 0, +0, 2627, 0, +0, 2750, 0, +0, 2875, 0, +0, 3001, 0, +0, 3129, 0, +0, 3258, 0, +0, 3388, 0, +0, 3519, 0, +0, 3649, 0, +0, 1490, 1795, +0, 1493, 1794, +0, 1495, 1791, +0, 1499, 1788, +0, 1504, 1784, +0, 1511, 1778, +0, 1519, 1770, +0, 1531, 1759, +0, 1546, 1744, +0, 1565, 1723, +0, 1589, 1694, +0, 1620, 1651, +0, 1657, 1587, +0, 1704, 1484, +0, 1759, 1294, +0, 1824, 762, +0, 1898, 0, +0, 1981, 0, +0, 2073, 0, +0, 2173, 0, +0, 2279, 0, +0, 2391, 0, +0, 2507, 0, +0, 2627, 0, +0, 2750, 0, +0, 2875, 0, +0, 3001, 0, +0, 3129, 0, +0, 3259, 0, +0, 3388, 0, +0, 3519, 0, +0, 3649, 0, +0, 1496, 1815, +0, 1498, 1814, +0, 1501, 1811, +0, 1505, 1808, +0, 1510, 1804, +0, 1516, 1799, +0, 1525, 1791, +0, 1536, 1781, +0, 1551, 1766, +0, 1569, 1746, +0, 1593, 1718, +0, 1624, 1678, +0, 1661, 1618, +0, 1707, 1522, +0, 1762, 1352, +0, 1826, 927, +0, 1900, 0, +0, 1983, 0, +0, 2075, 0, +0, 2174, 0, +0, 2280, 0, +0, 2392, 0, +0, 2508, 0, +0, 2628, 0, +0, 2750, 0, +0, 2875, 0, +0, 3002, 0, +0, 3130, 0, +0, 3259, 0, +0, 3388, 0, +0, 3519, 0, +0, 3649, 0, +0, 1503, 1841, +0, 1505, 1839, +0, 1508, 1837, +0, 1512, 1834, +0, 1517, 1830, +0, 1523, 1825, +0, 1532, 1818, +0, 1543, 1808, +0, 1557, 1795, +0, 1576, 1776, +0, 1599, 1750, +0, 1629, 1712, +0, 1666, 1657, +0, 1712, 1570, +0, 1766, 1419, +0, 1830, 1082, +0, 1903, 0, +0, 1986, 0, +0, 2077, 0, +0, 2176, 0, +0, 2282, 0, +0, 2393, 0, +0, 2509, 0, +0, 2628, 0, +0, 2751, 0, +0, 2875, 0, +0, 3002, 0, +0, 3130, 0, +0, 3259, 0, +0, 3388, 0, +0, 3519, 0, +0, 3650, 0, +964, 1513, 1873, +949, 1515, 1871, +928, 1518, 1869, +899, 1521, 1867, +857, 1526, 1863, +794, 1532, 1858, +692, 1541, 1851, +507, 1551, 1842, +0, 1566, 1830, +0, 1584, 1813, +0, 1607, 1788, +0, 1637, 1754, +0, 1673, 1704, +0, 1718, 1626, +0, 1771, 1496, +0, 1835, 1231, +0, 1907, 0, +0, 1989, 0, +0, 2080, 0, +0, 2178, 0, +0, 2283, 0, +0, 2394, 0, +0, 2510, 0, +0, 2629, 0, +0, 2751, 0, +0, 2876, 0, +0, 3002, 0, +0, 3130, 0, +0, 3259, 0, +0, 3389, 0, +0, 3519, 0, +0, 3650, 0, +1342, 1525, 1912, +1336, 1527, 1911, +1327, 1530, 1909, +1315, 1533, 1907, +1299, 1538, 1903, +1276, 1544, 1899, +1243, 1552, 1893, +1195, 1563, 1884, +1123, 1577, 1873, +1003, 1595, 1857, +767, 1617, 1836, +0, 1646, 1805, +0, 1682, 1760, +0, 1726, 1692, +0, 1779, 1582, +0, 1841, 1375, +0, 1912, 699, +0, 1994, 0, +0, 2083, 0, +0, 2181, 0, +0, 2286, 0, +0, 2396, 0, +0, 2511, 0, +0, 2630, 0, +0, 2752, 0, +0, 2877, 0, +0, 3003, 0, +0, 3130, 0, +0, 3259, 0, +0, 3389, 0, +0, 3519, 0, +0, 3650, 0, +1598, 1542, 1960, +1594, 1543, 1959, +1589, 1546, 1957, +1582, 1549, 1955, +1573, 1554, 1952, +1561, 1560, 1948, +1544, 1568, 1943, +1520, 1578, 1935, +1486, 1591, 1925, +1436, 1608, 1911, +1359, 1631, 1892, +1230, 1659, 1865, +968, 1693, 1826, +0, 1736, 1768, +0, 1788, 1676, +0, 1849, 1516, +0, 1919, 1135, +0, 1999, 0, +0, 2088, 0, +0, 2185, 0, +0, 2289, 0, +0, 2398, 0, +0, 2513, 0, +0, 2632, 0, +0, 2753, 0, +0, 2877, 0, +0, 3003, 0, +0, 3131, 0, +0, 3260, 0, +0, 3389, 0, +0, 3519, 0, +0, 3650, 0, +1804, 1562, 2017, +1802, 1564, 2016, +1799, 1567, 2015, +1795, 1570, 2013, +1789, 1574, 2010, +1781, 1580, 2007, +1771, 1587, 2002, +1756, 1597, 1995, +1737, 1610, 1987, +1708, 1626, 1974, +1668, 1648, 1958, +1607, 1675, 1934, +1511, 1708, 1901, +1338, 1750, 1852, +901, 1800, 1778, +0, 1860, 1654, +0, 1929, 1408, +0, 2007, 0, +0, 2095, 0, +0, 2190, 0, +0, 2293, 0, +0, 2402, 0, +0, 2515, 0, +0, 2633, 0, +0, 2755, 0, +0, 2878, 0, +0, 3004, 0, +0, 3132, 0, +0, 3260, 0, +0, 3389, 0, +0, 3520, 0, +0, 3650, 0, +1985, 1589, 2084, +1983, 1591, 2083, +1981, 1593, 2082, +1979, 1596, 2080, +1975, 1600, 2078, +1970, 1605, 2075, +1963, 1612, 2071, +1953, 1622, 2065, +1941, 1634, 2058, +1923, 1650, 2047, +1898, 1670, 2033, +1862, 1695, 2013, +1810, 1728, 1985, +1729, 1768, 1945, +1591, 1816, 1886, +1299, 1874, 1791, +0, 1941, 1623, +0, 2017, 1207, +0, 2103, 0, +0, 2197, 0, +0, 2298, 0, +0, 2406, 0, +0, 2519, 0, +0, 2636, 0, +0, 2757, 0, +0, 2880, 0, +0, 3005, 0, +0, 3132, 0, +0, 3261, 0, +0, 3390, 0, +0, 3520, 0, +0, 3650, 0, +2150, 1622, 2160, +2149, 1623, 2159, +2148, 1626, 2158, +2146, 1628, 2157, +2143, 1632, 2155, +2140, 1637, 2152, +2135, 1644, 2149, +2129, 1653, 2144, +2120, 1664, 2138, +2108, 1679, 2129, +2092, 1698, 2117, +2069, 1722, 2101, +2036, 1752, 2078, +1989, 1790, 2046, +1916, 1836, 1999, +1796, 1892, 1927, +1562, 1956, 1808, +499, 2030, 1577, +0, 2114, 586, +0, 2206, 0, +0, 2305, 0, +0, 2412, 0, +0, 2523, 0, +0, 2639, 0, +0, 2759, 0, +0, 2882, 0, +0, 3007, 0, +0, 3134, 0, +0, 3262, 0, +0, 3391, 0, +0, 3520, 0, +0, 3651, 0, +2306, 1663, 2246, +2305, 1664, 2245, +2304, 1666, 2244, +2303, 1669, 2243, +2301, 1672, 2241, +2298, 1677, 2239, +2295, 1683, 2236, +2291, 1691, 2232, +2284, 1701, 2227, +2276, 1715, 2220, +2265, 1732, 2210, +2249, 1755, 2197, +2228, 1783, 2179, +2197, 1819, 2153, +2153, 1862, 2116, +2085, 1915, 2061, +1976, 1976, 1976, +1771, 2047, 1830, +1120, 2128, 1507, +0, 2217, 0, +0, 2315, 0, +0, 2419, 0, +0, 2529, 0, +0, 2644, 0, +0, 2763, 0, +0, 2885, 0, +0, 3009, 0, +0, 3135, 0, +0, 3263, 0, +0, 3392, 0, +0, 3521, 0, +0, 3651, 0, +2455, 1712, 2339, +2454, 1713, 2339, +2453, 1715, 2338, +2452, 1717, 2337, +2451, 1721, 2336, +2449, 1725, 2334, +2447, 1730, 2332, +2444, 1737, 2328, +2439, 1747, 2324, +2434, 1759, 2318, +2426, 1775, 2311, +2415, 1796, 2300, +2400, 1822, 2285, +2379, 1854, 2265, +2350, 1895, 2237, +2307, 1944, 2195, +2243, 2002, 2134, +2141, 2069, 2035, +1954, 2146, 1857, +1434, 2233, 1394, +0, 2327, 0, +0, 2429, 0, +0, 2537, 0, +0, 2650, 0, +0, 2767, 0, +0, 2888, 0, +0, 3012, 0, +0, 3137, 0, +0, 3264, 0, +0, 3393, 0, +0, 3522, 0, +0, 3652, 0, +2599, 1771, 2440, +2598, 1772, 2440, +2598, 1773, 2439, +2597, 1775, 2438, +2596, 1778, 2437, +2595, 1782, 2436, +2593, 1787, 2434, +2591, 1793, 2432, +2588, 1801, 2428, +2584, 1812, 2424, +2578, 1827, 2418, +2570, 1845, 2409, +2560, 1868, 2398, +2545, 1898, 2382, +2525, 1935, 2360, +2496, 1980, 2329, +2455, 2034, 2284, +2394, 2097, 2215, +2296, 2170, 2104, +2120, 2252, 1892, +1666, 2343, 1176, +0, 2441, 0, +0, 2547, 0, +0, 2658, 0, +0, 2773, 0, +0, 2893, 0, +0, 3015, 0, +0, 3140, 0, +0, 3266, 0, +0, 3394, 0, +0, 3523, 0, +0, 3653, 0, +2740, 1839, 2548, +2740, 1840, 2547, +2739, 1841, 2547, +2739, 1843, 2546, +2738, 1845, 2545, +2737, 1848, 2544, +2736, 1853, 2543, +2734, 1858, 2541, +2732, 1865, 2538, +2729, 1875, 2535, +2725, 1887, 2530, +2719, 1903, 2523, +2711, 1924, 2514, +2701, 1950, 2502, +2687, 1983, 2486, +2667, 2024, 2462, +2639, 2073, 2429, +2599, 2132, 2380, +2539, 2199, 2305, +2445, 2277, 2181, +2277, 2363, 1934, +1861, 2458, 400, +0, 2560, 0, +0, 2668, 0, +0, 2781, 0, +0, 2899, 0, +0, 3020, 0, +0, 3144, 0, +0, 3269, 0, +0, 3396, 0, +0, 3525, 0, +0, 3654, 0, +2878, 1917, 2660, +2878, 1917, 2660, +2878, 1919, 2660, +2878, 1920, 2659, +2877, 1922, 2659, +2876, 1925, 2658, +2875, 1928, 2657, +2874, 1933, 2655, +2872, 1939, 2653, +2870, 1947, 2650, +2867, 1958, 2646, +2863, 1972, 2641, +2858, 1989, 2635, +2850, 2012, 2625, +2840, 2041, 2613, +2826, 2077, 2595, +2807, 2121, 2570, +2779, 2174, 2535, +2740, 2236, 2483, +2681, 2308, 2403, +2589, 2389, 2268, +2426, 2479, 1986, +2035, 2577, 0, +0, 2682, 0, +0, 2792, 0, +0, 2907, 0, +0, 3026, 0, +0, 3148, 0, +0, 3273, 0, +0, 3399, 0, +0, 3527, 0, +0, 3656, 0, +3015, 2003, 2777, +3015, 2004, 2777, +3015, 2005, 2777, +3015, 2006, 2776, +3014, 2008, 2776, +3014, 2010, 2775, +3013, 2013, 2774, +3012, 2017, 2773, +3011, 2022, 2772, +3009, 2029, 2770, +3007, 2038, 2767, +3004, 2049, 2763, +3000, 2064, 2758, +2995, 2084, 2751, +2987, 2108, 2741, +2977, 2140, 2728, +2963, 2178, 2709, +2944, 2225, 2684, +2917, 2281, 2647, +2878, 2347, 2593, +2821, 2422, 2508, +2730, 2506, 2363, +2570, 2599, 2046, +2196, 2699, 0, +0, 2806, 0, +0, 2918, 0, +0, 3034, 0, +0, 3155, 0, +0, 3278, 0, +0, 3403, 0, +0, 3529, 0, +0, 3658, 0, +3151, 2098, 2898, +3151, 2099, 2898, +3151, 2099, 2897, +3150, 2100, 2897, +3150, 2102, 2897, +3150, 2104, 2896, +3149, 2106, 2896, +3149, 2109, 2895, +3148, 2113, 2893, +3147, 2119, 2892, +3145, 2126, 2890, +3143, 2136, 2887, +3140, 2148, 2883, +3136, 2164, 2877, +3130, 2185, 2870, +3123, 2212, 2860, +3113, 2245, 2847, +3099, 2286, 2828, +3080, 2335, 2801, +3053, 2394, 2763, +3015, 2462, 2707, +2958, 2540, 2619, +2868, 2626, 2466, +2712, 2721, 2116, +2349, 2823, 0, +0, 2932, 0, +0, 3045, 0, +0, 3163, 0, +0, 3284, 0, +0, 3407, 0, +0, 3533, 0, +0, 3660, 0, +3286, 2200, 3021, +3286, 2201, 3021, +3286, 2201, 3021, +3285, 2202, 3021, +3285, 2203, 3020, +3285, 2205, 3020, +3284, 2206, 3019, +3284, 2209, 3019, +3283, 2212, 3018, +3282, 2217, 3016, +3281, 2223, 3015, +3280, 2231, 3013, +3277, 2241, 3010, +3274, 2254, 3006, +3270, 2271, 3000, +3265, 2293, 2993, +3258, 2321, 2983, +3248, 2356, 2969, +3234, 2398, 2949, +3215, 2450, 2922, +3189, 2511, 2883, +3151, 2581, 2825, +3094, 2661, 2734, +3005, 2749, 2574, +2850, 2846, 2196, +2495, 2950, 0, +0, 3059, 0, +0, 3174, 0, +0, 3292, 0, +0, 3414, 0, +0, 3538, 0, +0, 3664, 0, +3420, 2309, 3146, +3420, 2309, 3146, +3420, 2309, 3146, +3420, 2310, 3146, +3419, 2311, 3146, +3419, 2312, 3145, +3419, 2313, 3145, +3418, 2315, 3145, +3418, 2318, 3144, +3417, 2322, 3143, +3416, 2326, 3142, +3415, 2333, 3140, +3414, 2341, 3138, +3411, 2351, 3135, +3408, 2365, 3131, +3404, 2383, 3125, +3399, 2406, 3117, +3392, 2435, 3107, +3382, 2471, 3093, +3368, 2516, 3074, +3350, 2569, 3046, +3323, 2631, 3006, +3285, 2703, 2947, +3229, 2785, 2853, +3141, 2875, 2688, +2988, 2973, 2284, +2638, 3077, 0, +0, 3188, 0, +0, 3303, 0, +0, 3422, 0, +0, 3544, 0, +0, 3669, 0, +3553, 2422, 3273, +3553, 2422, 3273, +3553, 2423, 3273, +3553, 2423, 3273, +3553, 2424, 3273, +3553, 2425, 3273, +3553, 2426, 3272, +3552, 2427, 3272, +3552, 2430, 3271, +3552, 2432, 3271, +3551, 2436, 3270, +3550, 2441, 3269, +3549, 2447, 3267, +3547, 2456, 3265, +3545, 2467, 3261, +3542, 2481, 3257, +3538, 2500, 3252, +3533, 2524, 3244, +3525, 2554, 3234, +3516, 2591, 3219, +3502, 2636, 3200, +3483, 2690, 3172, +3457, 2754, 3131, +3419, 2828, 3071, +3363, 2910, 2976, +3275, 3002, 2805, +3123, 3100, 2380, +2778, 3206, 0, +0, 3317, 0, +0, 3433, 0, +0, 3553, 0, +0, 3675, 0, +3687, 2540, 3402, +3687, 2540, 3402, +3686, 2540, 3401, +3686, 2541, 3401, +3686, 2541, 3401, +3686, 2542, 3401, +3686, 2543, 3401, +3686, 2544, 3401, +3686, 2545, 3400, +3685, 2548, 3400, +3685, 2550, 3399, +3684, 2554, 3398, +3683, 2559, 3397, +3682, 2566, 3395, +3680, 2575, 3393, +3678, 2586, 3390, +3675, 2601, 3385, +3671, 2620, 3380, +3666, 2644, 3372, +3659, 2675, 3362, +3649, 2713, 3347, +3635, 2759, 3327, +3617, 2815, 3299, +3590, 2880, 3258, +3553, 2954, 3197, +3497, 3038, 3100, +3410, 3130, 2926, +3258, 3229, 2484, +2916, 3336, 0, +0, 3448, 0, +0, 3564, 0, +0, 3684, 0, +3819, 2661, 3531, +3819, 2661, 3531, +3819, 2661, 3531, +3819, 2661, 3531, +3819, 2662, 3531, +3819, 2662, 3530, +3819, 2663, 3530, +3819, 2664, 3530, +3819, 2665, 3530, +3818, 2667, 3529, +3818, 2669, 3529, +3818, 2672, 3528, +3817, 2676, 3527, +3816, 2681, 3526, +3815, 2688, 3524, +3813, 2697, 3522, +3811, 2708, 3519, +3808, 2723, 3514, +3804, 2743, 3509, +3799, 2768, 3501, +3792, 2799, 3490, +3782, 2838, 3476, +3768, 2885, 3456, +3750, 2941, 3427, +3723, 3007, 3386, +3686, 3082, 3325, +3630, 3166, 3227, +3543, 3259, 3050, +3392, 3359, 2593, +3052, 3466, 0, +0, 3578, 0, +0, 3695, 0, +3952, 2784, 3661, +3952, 2784, 3661, +3952, 2785, 3661, +3952, 2785, 3661, +3952, 2785, 3661, +3952, 2785, 3660, +3952, 2786, 3660, +3952, 2787, 3660, +3952, 2788, 3660, +3951, 2789, 3660, +3951, 2791, 3659, +3951, 2793, 3659, +3950, 2796, 3658, +3950, 2800, 3657, +3949, 2805, 3656, +3947, 2812, 3654, +3946, 2821, 3652, +3944, 2833, 3648, +3941, 2848, 3644, +3937, 2868, 3638, +3932, 2893, 3631, +3924, 2925, 3620, +3915, 2964, 3605, +3901, 3012, 3585, +3882, 3068, 3556, +3856, 3135, 3515, +3819, 3211, 3453, +3763, 3295, 3354, +3676, 3389, 3176, +3526, 3489, 2707, +3188, 3597, 0, +0, 3709, 0, +4085, 2910, 3791, +4085, 2910, 3791, +4085, 2910, 3791, +4085, 2910, 3791, +4085, 2911, 3791, +4085, 2911, 3791, +4085, 2911, 3791, +4084, 2912, 3791, +4084, 2912, 3791, +4084, 2913, 3790, +4084, 2915, 3790, +4084, 2916, 3790, +4083, 2919, 3789, +4083, 2922, 3788, +4082, 2926, 3787, +4081, 2931, 3786, +4080, 2938, 3784, +4078, 2947, 3782, +4076, 2959, 3779, +4073, 2975, 3775, +4069, 2995, 3769, +4064, 3020, 3761, +4057, 3052, 3750, +4047, 3092, 3736, +4034, 3140, 3715, +4015, 3197, 3686, +3989, 3264, 3645, +3951, 3340, 3583, +3896, 3425, 3483, +3809, 3519, 3303, +3659, 3620, 2826, +3322, 3728, 0, +4095, 3037, 3922, +4095, 3037, 3922, +4095, 3037, 3922, +4095, 3037, 3922, +4095, 3038, 3922, +4095, 3038, 3922, +4095, 3038, 3922, +4095, 3039, 3922, +4095, 3039, 3922, +4095, 3040, 3921, +4095, 3041, 3921, +4095, 3042, 3921, +4095, 3044, 3920, +4095, 3046, 3920, +4095, 3049, 3919, +4095, 3053, 3918, +4095, 3059, 3917, +4095, 3066, 3915, +4095, 3075, 3913, +4095, 3087, 3910, +4095, 3103, 3905, +4095, 3123, 3900, +4095, 3149, 3892, +4095, 3181, 3881, +4095, 3221, 3866, +4095, 3269, 3846, +4095, 3327, 3817, +4095, 3394, 3775, +4084, 3470, 3713, +4029, 3556, 3613, +3942, 3650, 3432, +3792, 3751, 2947, +4095, 3166, 4053, +4095, 3166, 4053, +4095, 3166, 4053, +4095, 3166, 4053, +4095, 3166, 4053, +4095, 3166, 4053, +4095, 3166, 4053, +4095, 3167, 4053, +4095, 3167, 4053, +4095, 3168, 4053, +4095, 3168, 4053, +4095, 3169, 4052, +4095, 3171, 4052, +4095, 3172, 4052, +4095, 3175, 4051, +4095, 3178, 4050, +4095, 3182, 4049, +4095, 3187, 4048, +4095, 3194, 4046, +4095, 3204, 4044, +4095, 3216, 4041, +4095, 3232, 4037, +4095, 3252, 4031, +4095, 3278, 4023, +4095, 3310, 4012, +4095, 3350, 3997, +4095, 3399, 3977, +4095, 3457, 3948, +4095, 3524, 3906, +4095, 3601, 3843, +4095, 3687, 3743, +4074, 3781, 3561, +0, 1606, 1871, +0, 1607, 1869, +0, 1610, 1867, +0, 1612, 1864, +0, 1616, 1861, +0, 1622, 1856, +0, 1628, 1849, +0, 1637, 1840, +0, 1649, 1827, +0, 1664, 1810, +0, 1684, 1786, +0, 1709, 1751, +0, 1740, 1701, +0, 1779, 1623, +0, 1826, 1491, +0, 1883, 1222, +0, 1949, 0, +0, 2024, 0, +0, 2108, 0, +0, 2201, 0, +0, 2302, 0, +0, 2409, 0, +0, 2521, 0, +0, 2638, 0, +0, 2758, 0, +0, 2881, 0, +0, 3006, 0, +0, 3133, 0, +0, 3261, 0, +0, 3390, 0, +0, 3520, 0, +0, 3651, 0, +0, 1606, 1873, +0, 1608, 1871, +0, 1610, 1869, +0, 1613, 1867, +0, 1617, 1863, +0, 1622, 1858, +0, 1629, 1851, +0, 1638, 1842, +0, 1650, 1830, +0, 1665, 1813, +0, 1684, 1789, +0, 1709, 1754, +0, 1741, 1704, +0, 1779, 1626, +0, 1827, 1497, +0, 1883, 1231, +0, 1949, 0, +0, 2024, 0, +0, 2109, 0, +0, 2202, 0, +0, 2302, 0, +0, 2409, 0, +0, 2521, 0, +0, 2638, 0, +0, 2758, 0, +0, 2881, 0, +0, 3006, 0, +0, 3133, 0, +0, 3261, 0, +0, 3390, 0, +0, 3520, 0, +0, 3651, 0, +0, 1607, 1876, +0, 1609, 1874, +0, 1611, 1872, +0, 1614, 1870, +0, 1618, 1866, +0, 1623, 1861, +0, 1630, 1855, +0, 1639, 1846, +0, 1650, 1833, +0, 1666, 1816, +0, 1685, 1792, +0, 1710, 1758, +0, 1741, 1708, +0, 1780, 1632, +0, 1827, 1503, +0, 1883, 1243, +0, 1949, 0, +0, 2024, 0, +0, 2109, 0, +0, 2202, 0, +0, 2302, 0, +0, 2409, 0, +0, 2521, 0, +0, 2638, 0, +0, 2758, 0, +0, 2881, 0, +0, 3006, 0, +0, 3133, 0, +0, 3261, 0, +0, 3390, 0, +0, 3520, 0, +0, 3651, 0, +0, 1608, 1880, +0, 1610, 1878, +0, 1612, 1876, +0, 1615, 1874, +0, 1619, 1870, +0, 1624, 1865, +0, 1631, 1859, +0, 1640, 1850, +0, 1651, 1838, +0, 1666, 1821, +0, 1686, 1797, +0, 1711, 1763, +0, 1742, 1714, +0, 1781, 1638, +0, 1828, 1512, +0, 1884, 1259, +0, 1950, 0, +0, 2025, 0, +0, 2109, 0, +0, 2202, 0, +0, 2302, 0, +0, 2409, 0, +0, 2521, 0, +0, 2638, 0, +0, 2758, 0, +0, 2881, 0, +0, 3006, 0, +0, 3133, 0, +0, 3261, 0, +0, 3390, 0, +0, 3520, 0, +0, 3651, 0, +0, 1609, 1885, +0, 1611, 1884, +0, 1613, 1882, +0, 1616, 1879, +0, 1620, 1876, +0, 1625, 1871, +0, 1632, 1864, +0, 1641, 1855, +0, 1652, 1843, +0, 1668, 1827, +0, 1687, 1803, +0, 1712, 1770, +0, 1743, 1722, +0, 1782, 1647, +0, 1829, 1524, +0, 1885, 1280, +0, 1950, 0, +0, 2025, 0, +0, 2110, 0, +0, 2202, 0, +0, 2303, 0, +0, 2409, 0, +0, 2522, 0, +0, 2638, 0, +0, 2758, 0, +0, 2881, 0, +0, 3006, 0, +0, 3133, 0, +0, 3261, 0, +0, 3390, 0, +0, 3520, 0, +0, 3651, 0, +0, 1611, 1892, +0, 1613, 1891, +0, 1615, 1889, +0, 1618, 1886, +0, 1622, 1883, +0, 1627, 1878, +0, 1634, 1872, +0, 1642, 1863, +0, 1654, 1851, +0, 1669, 1835, +0, 1689, 1812, +0, 1713, 1779, +0, 1744, 1732, +0, 1783, 1659, +0, 1830, 1540, +0, 1886, 1305, +0, 1951, 254, +0, 2026, 0, +0, 2110, 0, +0, 2203, 0, +0, 2303, 0, +0, 2410, 0, +0, 2522, 0, +0, 2638, 0, +0, 2758, 0, +0, 2881, 0, +0, 3006, 0, +0, 3133, 0, +0, 3261, 0, +0, 3390, 0, +0, 3520, 0, +0, 3651, 0, +0, 1614, 1901, +0, 1615, 1900, +0, 1617, 1898, +0, 1620, 1896, +0, 1624, 1892, +0, 1629, 1887, +0, 1636, 1881, +0, 1645, 1873, +0, 1656, 1861, +0, 1671, 1845, +0, 1691, 1823, +0, 1715, 1791, +0, 1746, 1745, +0, 1784, 1674, +0, 1831, 1559, +0, 1887, 1338, +0, 1952, 508, +0, 2027, 0, +0, 2111, 0, +0, 2203, 0, +0, 2304, 0, +0, 2410, 0, +0, 2522, 0, +0, 2639, 0, +0, 2759, 0, +0, 2881, 0, +0, 3007, 0, +0, 3133, 0, +0, 3261, 0, +0, 3390, 0, +0, 3520, 0, +0, 3651, 0, +0, 1617, 1913, +0, 1618, 1912, +0, 1620, 1910, +0, 1623, 1908, +0, 1627, 1904, +0, 1632, 1900, +0, 1639, 1894, +0, 1648, 1885, +0, 1659, 1874, +0, 1674, 1859, +0, 1693, 1837, +0, 1718, 1806, +0, 1748, 1761, +0, 1787, 1694, +0, 1833, 1584, +0, 1889, 1378, +0, 1954, 713, +0, 2028, 0, +0, 2112, 0, +0, 2204, 0, +0, 2304, 0, +0, 2411, 0, +0, 2522, 0, +0, 2639, 0, +0, 2759, 0, +0, 2882, 0, +0, 3007, 0, +0, 3133, 0, +0, 3261, 0, +0, 3391, 0, +0, 3520, 0, +0, 3651, 0, +0, 1621, 1929, +0, 1622, 1928, +0, 1625, 1926, +0, 1627, 1923, +0, 1631, 1920, +0, 1636, 1916, +0, 1643, 1910, +0, 1652, 1902, +0, 1663, 1891, +0, 1678, 1876, +0, 1697, 1855, +0, 1721, 1826, +0, 1752, 1783, +0, 1790, 1719, +0, 1836, 1616, +0, 1891, 1426, +0, 1956, 894, +0, 2030, 0, +0, 2113, 0, +0, 2206, 0, +0, 2305, 0, +0, 2411, 0, +0, 2523, 0, +0, 2639, 0, +0, 2759, 0, +0, 2882, 0, +0, 3007, 0, +0, 3134, 0, +0, 3262, 0, +0, 3391, 0, +0, 3520, 0, +0, 3651, 0, +0, 1626, 1949, +0, 1628, 1948, +0, 1630, 1946, +0, 1633, 1944, +0, 1637, 1940, +0, 1642, 1936, +0, 1648, 1931, +0, 1657, 1923, +0, 1668, 1913, +0, 1683, 1898, +0, 1701, 1878, +0, 1726, 1851, +0, 1756, 1810, +0, 1793, 1750, +0, 1839, 1655, +0, 1894, 1484, +0, 1958, 1059, +0, 2032, 0, +0, 2115, 0, +0, 2207, 0, +0, 2306, 0, +0, 2412, 0, +0, 2524, 0, +0, 2640, 0, +0, 2760, 0, +0, 2882, 0, +0, 3007, 0, +0, 3134, 0, +0, 3262, 0, +0, 3391, 0, +0, 3520, 0, +0, 3651, 0, +0, 1634, 1974, +0, 1635, 1973, +0, 1637, 1971, +0, 1640, 1969, +0, 1644, 1966, +0, 1649, 1962, +0, 1655, 1957, +0, 1664, 1950, +0, 1675, 1940, +0, 1689, 1927, +0, 1708, 1908, +0, 1731, 1882, +0, 1761, 1844, +0, 1798, 1789, +0, 1844, 1702, +0, 1898, 1552, +0, 1962, 1214, +0, 2035, 0, +0, 2118, 0, +0, 2209, 0, +0, 2308, 0, +0, 2414, 0, +0, 2525, 0, +0, 2641, 0, +0, 2760, 0, +0, 2883, 0, +0, 3008, 0, +0, 3134, 0, +0, 3262, 0, +0, 3391, 0, +0, 3521, 0, +0, 3651, 0, +1107, 1643, 2006, +1096, 1645, 2005, +1081, 1647, 2003, +1061, 1650, 2001, +1031, 1653, 1999, +989, 1658, 1995, +926, 1664, 1990, +824, 1673, 1983, +639, 1684, 1974, +132, 1698, 1962, +0, 1716, 1945, +0, 1739, 1921, +0, 1769, 1886, +0, 1805, 1836, +0, 1850, 1758, +0, 1904, 1628, +0, 1967, 1363, +0, 2039, 0, +0, 2121, 0, +0, 2212, 0, +0, 2310, 0, +0, 2415, 0, +0, 2526, 0, +0, 2642, 0, +0, 2761, 0, +0, 2883, 0, +0, 3008, 0, +0, 3134, 0, +0, 3262, 0, +0, 3391, 0, +0, 3521, 0, +0, 3651, 0, +1479, 1656, 2045, +1474, 1657, 2044, +1468, 1659, 2043, +1459, 1662, 2041, +1447, 1666, 2039, +1431, 1670, 2035, +1408, 1676, 2031, +1375, 1684, 2025, +1327, 1695, 2016, +1255, 1709, 2005, +1135, 1727, 1989, +899, 1749, 1968, +0, 1778, 1937, +0, 1814, 1892, +0, 1858, 1824, +0, 1911, 1714, +0, 1973, 1507, +0, 2045, 831, +0, 2126, 0, +0, 2215, 0, +0, 2313, 0, +0, 2418, 0, +0, 2528, 0, +0, 2643, 0, +0, 2762, 0, +0, 2884, 0, +0, 3009, 0, +0, 3135, 0, +0, 3263, 0, +0, 3391, 0, +0, 3521, 0, +0, 3651, 0, +1732, 1672, 2093, +1730, 1674, 2092, +1726, 1676, 2091, +1721, 1678, 2089, +1715, 1681, 2087, +1706, 1686, 2084, +1693, 1692, 2080, +1676, 1700, 2075, +1652, 1710, 2067, +1618, 1723, 2057, +1568, 1741, 2043, +1491, 1763, 2024, +1362, 1791, 1997, +1100, 1826, 1958, +0, 1868, 1900, +0, 1920, 1808, +0, 1981, 1648, +0, 2052, 1267, +0, 2132, 0, +0, 2220, 0, +0, 2317, 0, +0, 2421, 0, +0, 2530, 0, +0, 2645, 0, +0, 2764, 0, +0, 2885, 0, +0, 3009, 0, +0, 3136, 0, +0, 3263, 0, +0, 3392, 0, +0, 3521, 0, +0, 3651, 0, +1938, 1693, 2150, +1936, 1694, 2150, +1934, 1696, 2148, +1931, 1699, 2147, +1927, 1702, 2145, +1921, 1706, 2142, +1913, 1712, 2139, +1903, 1719, 2134, +1889, 1729, 2127, +1869, 1742, 2119, +1840, 1759, 2106, +1800, 1780, 2090, +1739, 1807, 2066, +1643, 1841, 2033, +1470, 1882, 1984, +1033, 1932, 1910, +0, 1992, 1786, +0, 2061, 1540, +0, 2139, 54, +0, 2227, 0, +0, 2322, 0, +0, 2425, 0, +0, 2534, 0, +0, 2648, 0, +0, 2766, 0, +0, 2887, 0, +0, 3011, 0, +0, 3136, 0, +0, 3264, 0, +0, 3392, 0, +0, 3522, 0, +0, 3652, 0, +2118, 1720, 2217, +2117, 1721, 2216, +2116, 1723, 2215, +2113, 1725, 2214, +2111, 1728, 2212, +2107, 1732, 2210, +2102, 1737, 2207, +2095, 1744, 2203, +2086, 1754, 2197, +2073, 1766, 2190, +2055, 1782, 2179, +2030, 1802, 2165, +1994, 1828, 2145, +1942, 1860, 2118, +1861, 1900, 2077, +1723, 1948, 2018, +1431, 2006, 1923, +0, 2073, 1755, +0, 2149, 1339, +0, 2235, 0, +0, 2329, 0, +0, 2430, 0, +0, 2538, 0, +0, 2651, 0, +0, 2768, 0, +0, 2889, 0, +0, 3012, 0, +0, 3138, 0, +0, 3265, 0, +0, 3393, 0, +0, 3522, 0, +0, 3652, 0, +2283, 1753, 2293, +2282, 1754, 2292, +2281, 1756, 2292, +2280, 1758, 2290, +2278, 1761, 2289, +2275, 1764, 2287, +2272, 1769, 2285, +2267, 1776, 2281, +2261, 1785, 2276, +2252, 1796, 2270, +2240, 1811, 2261, +2224, 1830, 2249, +2201, 1854, 2233, +2168, 1884, 2210, +2121, 1922, 2178, +2048, 1968, 2131, +1928, 2024, 2059, +1694, 2088, 1940, +631, 2163, 1709, +0, 2246, 718, +0, 2338, 0, +0, 2437, 0, +0, 2544, 0, +0, 2655, 0, +0, 2772, 0, +0, 2891, 0, +0, 3014, 0, +0, 3139, 0, +0, 3266, 0, +0, 3394, 0, +0, 3523, 0, +0, 3653, 0, +2439, 1794, 2378, +2438, 1795, 2378, +2437, 1796, 2377, +2436, 1798, 2376, +2435, 1801, 2375, +2433, 1804, 2373, +2430, 1809, 2371, +2427, 1815, 2368, +2423, 1823, 2364, +2417, 1833, 2359, +2408, 1847, 2352, +2397, 1864, 2342, +2382, 1887, 2329, +2360, 1915, 2311, +2329, 1951, 2285, +2285, 1994, 2248, +2217, 2047, 2193, +2108, 2108, 2108, +1903, 2180, 1962, +1252, 2260, 1639, +0, 2350, 0, +0, 2447, 0, +0, 2551, 0, +0, 2661, 0, +0, 2776, 0, +0, 2895, 0, +0, 3017, 0, +0, 3141, 0, +0, 3267, 0, +0, 3395, 0, +0, 3524, 0, +0, 3653, 0, +2587, 1843, 2472, +2587, 1844, 2471, +2586, 1845, 2471, +2585, 1847, 2470, +2584, 1850, 2469, +2583, 1853, 2468, +2581, 1857, 2466, +2579, 1862, 2464, +2576, 1869, 2460, +2571, 1879, 2456, +2566, 1891, 2451, +2558, 1907, 2443, +2547, 1928, 2432, +2532, 1954, 2418, +2511, 1986, 2397, +2482, 2027, 2369, +2439, 2076, 2327, +2375, 2134, 2266, +2273, 2201, 2167, +2086, 2279, 1990, +1566, 2365, 1526, +0, 2459, 0, +0, 2561, 0, +0, 2669, 0, +0, 2782, 0, +0, 2899, 0, +0, 3020, 0, +0, 3144, 0, +0, 3269, 0, +0, 3396, 0, +0, 3525, 0, +0, 3654, 0, +2731, 1902, 2573, +2731, 1903, 2572, +2731, 1904, 2572, +2730, 1906, 2571, +2729, 1908, 2570, +2728, 1910, 2569, +2727, 1914, 2568, +2725, 1919, 2566, +2723, 1925, 2564, +2720, 1933, 2560, +2716, 1944, 2556, +2710, 1959, 2550, +2702, 1977, 2541, +2692, 2000, 2530, +2677, 2030, 2514, +2657, 2067, 2492, +2629, 2112, 2461, +2588, 2166, 2416, +2526, 2229, 2347, +2428, 2302, 2236, +2252, 2384, 2024, +1798, 2475, 1309, +0, 2574, 0, +0, 2679, 0, +0, 2790, 0, +0, 2906, 0, +0, 3025, 0, +0, 3147, 0, +0, 3272, 0, +0, 3398, 0, +0, 3526, 0, +0, 3655, 0, +2872, 1970, 2680, +2872, 1971, 2680, +2872, 1972, 2679, +2871, 1973, 2679, +2871, 1975, 2678, +2870, 1977, 2677, +2869, 1981, 2676, +2868, 1985, 2675, +2866, 1990, 2673, +2864, 1998, 2670, +2861, 2007, 2667, +2857, 2019, 2662, +2851, 2036, 2655, +2843, 2056, 2646, +2833, 2083, 2634, +2819, 2115, 2618, +2799, 2156, 2594, +2771, 2205, 2561, +2731, 2264, 2512, +2672, 2332, 2437, +2577, 2409, 2314, +2409, 2495, 2066, +1993, 2590, 532, +0, 2692, 0, +0, 2800, 0, +0, 2914, 0, +0, 3031, 0, +0, 3152, 0, +0, 3276, 0, +0, 3401, 0, +0, 3528, 0, +0, 3657, 0, +3011, 2048, 2793, +3011, 2049, 2792, +3010, 2050, 2792, +3010, 2051, 2792, +3010, 2052, 2791, +3009, 2054, 2791, +3008, 2057, 2790, +3007, 2060, 2789, +3006, 2065, 2787, +3005, 2071, 2785, +3002, 2079, 2782, +2999, 2090, 2779, +2995, 2104, 2774, +2990, 2122, 2767, +2982, 2144, 2757, +2972, 2173, 2745, +2958, 2209, 2727, +2939, 2253, 2702, +2911, 2306, 2667, +2872, 2368, 2616, +2813, 2440, 2536, +2721, 2521, 2400, +2558, 2611, 2118, +2167, 2709, 0, +0, 2814, 0, +0, 2924, 0, +0, 3039, 0, +0, 3158, 0, +0, 3280, 0, +0, 3405, 0, +0, 3531, 0, +0, 3659, 0, +3148, 2135, 2910, +3147, 2135, 2909, +3147, 2136, 2909, +3147, 2137, 2909, +3147, 2138, 2909, +3146, 2140, 2908, +3146, 2142, 2907, +3145, 2145, 2907, +3144, 2149, 2905, +3143, 2154, 2904, +3141, 2161, 2902, +3139, 2170, 2899, +3136, 2181, 2895, +3132, 2196, 2890, +3127, 2216, 2883, +3119, 2241, 2873, +3109, 2272, 2860, +3095, 2310, 2842, +3076, 2357, 2816, +3049, 2413, 2779, +3010, 2479, 2725, +2953, 2554, 2640, +2862, 2638, 2495, +2703, 2731, 2178, +2328, 2831, 0, +0, 2938, 0, +0, 3050, 0, +0, 3167, 0, +0, 3287, 0, +0, 3410, 0, +0, 3535, 0, +0, 3662, 0, +3283, 2230, 3030, +3283, 2230, 3030, +3283, 2231, 3030, +3283, 2232, 3030, +3283, 2233, 3029, +3282, 2234, 3029, +3282, 2236, 3028, +3281, 2238, 3028, +3281, 2241, 3027, +3280, 2245, 3026, +3279, 2251, 3024, +3277, 2258, 3022, +3275, 2268, 3019, +3272, 2280, 3015, +3268, 2297, 3010, +3262, 2317, 3002, +3255, 2344, 2992, +3245, 2377, 2979, +3231, 2418, 2960, +3212, 2467, 2933, +3186, 2526, 2896, +3147, 2594, 2839, +3090, 2672, 2751, +3000, 2758, 2598, +2844, 2853, 2248, +2481, 2955, 0, +0, 3064, 0, +0, 3177, 0, +0, 3295, 0, +0, 3416, 0, +0, 3540, 0, +0, 3665, 0, +3418, 2332, 3153, +3418, 2332, 3153, +3418, 2333, 3153, +3418, 2333, 3153, +3417, 2334, 3153, +3417, 2335, 3152, +3417, 2337, 3152, +3417, 2339, 3151, +3416, 2341, 3151, +3415, 2344, 3150, +3414, 2349, 3149, +3413, 2355, 3147, +3412, 2363, 3145, +3409, 2373, 3142, +3406, 2386, 3138, +3403, 2403, 3132, +3397, 2425, 3125, +3390, 2453, 3115, +3380, 2488, 3101, +3366, 2531, 3082, +3347, 2582, 3054, +3321, 2643, 3016, +3283, 2713, 2958, +3226, 2793, 2866, +3137, 2882, 2706, +2983, 2978, 2328, +2627, 3082, 0, +0, 3191, 0, +0, 3306, 0, +0, 3424, 0, +0, 3546, 0, +0, 3670, 0, +3552, 2440, 3279, +3552, 2441, 3278, +3552, 2441, 3278, +3552, 2441, 3278, +3552, 2442, 3278, +3551, 2443, 3278, +3551, 2444, 3278, +3551, 2446, 3277, +3551, 2448, 3277, +3550, 2450, 3276, +3549, 2454, 3275, +3549, 2458, 3274, +3547, 2465, 3272, +3546, 2473, 3270, +3543, 2484, 3267, +3541, 2497, 3263, +3537, 2515, 3257, +3531, 2538, 3250, +3524, 2567, 3239, +3514, 2603, 3225, +3500, 2648, 3206, +3482, 2701, 3178, +3455, 2763, 3138, +3417, 2835, 3079, +3361, 2917, 2986, +3273, 3007, 2820, +3120, 3105, 2416, +2770, 3209, 0, +0, 3320, 0, +0, 3435, 0, +0, 3554, 0, +0, 3676, 0, +3685, 2554, 3406, +3685, 2554, 3405, +3685, 2554, 3405, +3685, 2555, 3405, +3685, 2555, 3405, +3685, 2556, 3405, +3685, 2557, 3405, +3685, 2558, 3405, +3684, 2560, 3404, +3684, 2562, 3404, +3684, 2564, 3403, +3683, 2568, 3402, +3682, 2573, 3401, +3681, 2579, 3399, +3679, 2588, 3397, +3677, 2599, 3394, +3674, 2613, 3389, +3670, 2632, 3384, +3665, 2656, 3376, +3658, 2686, 3366, +3648, 2723, 3351, +3634, 2768, 3332, +3615, 2823, 3304, +3589, 2886, 3263, +3551, 2960, 3203, +3495, 3042, 3108, +3408, 3134, 2938, +3255, 3233, 2512, +2910, 3338, 0, +0, 3449, 0, +0, 3565, 0, +0, 3685, 0, +3819, 2672, 3534, +3819, 2672, 3534, +3819, 2672, 3534, +3819, 2672, 3534, +3818, 2673, 3533, +3818, 2673, 3533, +3818, 2674, 3533, +3818, 2675, 3533, +3818, 2676, 3533, +3818, 2678, 3532, +3817, 2680, 3532, +3817, 2683, 3531, +3816, 2686, 3530, +3815, 2691, 3529, +3814, 2698, 3527, +3812, 2707, 3525, +3810, 2718, 3522, +3807, 2733, 3517, +3803, 2752, 3512, +3798, 2776, 3504, +3791, 2807, 3494, +3781, 2845, 3479, +3767, 2891, 3459, +3749, 2947, 3431, +3722, 3012, 3390, +3685, 3086, 3329, +3629, 3170, 3232, +3542, 3262, 3059, +3390, 3362, 2616, +3048, 3468, 0, +0, 3580, 0, +0, 3696, 0, +3952, 2793, 3663, +3952, 2793, 3663, +3952, 2793, 3663, +3951, 2793, 3663, +3951, 2793, 3663, +3951, 2794, 3663, +3951, 2794, 3663, +3951, 2795, 3662, +3951, 2796, 3662, +3951, 2797, 3662, +3951, 2799, 3661, +3950, 2801, 3661, +3950, 2804, 3660, +3949, 2808, 3659, +3948, 2813, 3658, +3947, 2820, 3656, +3945, 2829, 3654, +3943, 2840, 3651, +3940, 2856, 3646, +3936, 2875, 3641, +3931, 2900, 3633, +3924, 2931, 3622, +3914, 2970, 3608, +3900, 3017, 3588, +3882, 3073, 3559, +3856, 3139, 3518, +3818, 3214, 3457, +3762, 3298, 3359, +3675, 3391, 3182, +3524, 3491, 2725, +3184, 3598, 0, +0, 3710, 0, +4084, 2916, 3793, +4084, 2916, 3793, +4084, 2916, 3793, +4084, 2917, 3793, +4084, 2917, 3793, +4084, 2917, 3793, +4084, 2918, 3793, +4084, 2918, 3792, +4084, 2919, 3792, +4084, 2920, 3792, +4083, 2921, 3792, +4083, 2923, 3791, +4083, 2925, 3791, +4082, 2928, 3790, +4082, 2932, 3789, +4081, 2937, 3788, +4080, 2944, 3786, +4078, 2953, 3784, +4076, 2965, 3781, +4073, 2980, 3776, +4069, 3000, 3771, +4064, 3025, 3763, +4056, 3057, 3752, +4047, 3096, 3738, +4033, 3144, 3717, +4015, 3201, 3689, +3988, 3267, 3647, +3951, 3343, 3585, +3895, 3428, 3486, +3808, 3521, 3308, +3658, 3622, 2839, +3320, 3729, 0, +4095, 3042, 3923, +4095, 3042, 3923, +4095, 3042, 3923, +4095, 3042, 3923, +4095, 3042, 3923, +4095, 3043, 3923, +4095, 3043, 3923, +4095, 3043, 3923, +4095, 3044, 3923, +4095, 3045, 3923, +4095, 3046, 3922, +4095, 3047, 3922, +4095, 3049, 3922, +4095, 3051, 3921, +4095, 3054, 3920, +4095, 3058, 3919, +4095, 3063, 3918, +4095, 3070, 3916, +4095, 3079, 3914, +4095, 3091, 3911, +4095, 3107, 3907, +4095, 3127, 3901, +4095, 3152, 3893, +4095, 3184, 3882, +4095, 3224, 3868, +4095, 3272, 3847, +4095, 3329, 3819, +4095, 3396, 3777, +4084, 3472, 3715, +4028, 3558, 3615, +3941, 3651, 3435, +3791, 3752, 2958, +4095, 3169, 4054, +4095, 3169, 4054, +4095, 3169, 4054, +4095, 3169, 4054, +4095, 3169, 4054, +4095, 3170, 4054, +4095, 3170, 4054, +4095, 3170, 4054, +4095, 3171, 4054, +4095, 3171, 4054, +4095, 3172, 4054, +4095, 3173, 4053, +4095, 3174, 4053, +4095, 3176, 4053, +4095, 3178, 4052, +4095, 3181, 4051, +4095, 3185, 4050, +4095, 3191, 4049, +4095, 3198, 4047, +4095, 3207, 4045, +4095, 3219, 4042, +4095, 3235, 4037, +4095, 3255, 4032, +4095, 3281, 4024, +4095, 3313, 4013, +4095, 3353, 3998, +4095, 3401, 3978, +4095, 3459, 3949, +4095, 3526, 3907, +4095, 3602, 3845, +4095, 3688, 3745, +4074, 3782, 3564, +0, 1736, 2002, +0, 1737, 2001, +0, 1739, 2000, +0, 1741, 1998, +0, 1744, 1995, +0, 1748, 1991, +0, 1753, 1986, +0, 1760, 1979, +0, 1769, 1970, +0, 1781, 1958, +0, 1796, 1940, +0, 1816, 1916, +0, 1841, 1881, +0, 1872, 1830, +0, 1911, 1752, +0, 1958, 1620, +0, 2015, 1347, +0, 2080, 0, +0, 2156, 0, +0, 2240, 0, +0, 2333, 0, +0, 2434, 0, +0, 2541, 0, +0, 2653, 0, +0, 2770, 0, +0, 2890, 0, +0, 3013, 0, +0, 3138, 0, +0, 3265, 0, +0, 3393, 0, +0, 3522, 0, +0, 3652, 0, +0, 1737, 2004, +0, 1738, 2003, +0, 1739, 2001, +0, 1742, 1999, +0, 1745, 1997, +0, 1749, 1993, +0, 1754, 1988, +0, 1761, 1981, +0, 1769, 1972, +0, 1781, 1960, +0, 1796, 1942, +0, 1816, 1918, +0, 1841, 1883, +0, 1872, 1833, +0, 1911, 1755, +0, 1958, 1624, +0, 2015, 1354, +0, 2081, 0, +0, 2156, 0, +0, 2241, 0, +0, 2333, 0, +0, 2434, 0, +0, 2541, 0, +0, 2653, 0, +0, 2770, 0, +0, 2890, 0, +0, 3013, 0, +0, 3138, 0, +0, 3265, 0, +0, 3393, 0, +0, 3522, 0, +0, 3652, 0, +0, 1737, 2006, +0, 1738, 2005, +0, 1740, 2004, +0, 1742, 2002, +0, 1745, 1999, +0, 1749, 1995, +0, 1754, 1990, +0, 1761, 1984, +0, 1770, 1974, +0, 1782, 1962, +0, 1797, 1945, +0, 1817, 1921, +0, 1841, 1886, +0, 1873, 1836, +0, 1912, 1759, +0, 1959, 1629, +0, 2015, 1363, +0, 2081, 0, +0, 2156, 0, +0, 2241, 0, +0, 2334, 0, +0, 2434, 0, +0, 2541, 0, +0, 2653, 0, +0, 2770, 0, +0, 2890, 0, +0, 3013, 0, +0, 3138, 0, +0, 3265, 0, +0, 3393, 0, +0, 3522, 0, +0, 3652, 0, +0, 1738, 2009, +0, 1739, 2008, +0, 1741, 2007, +0, 1743, 2005, +0, 1746, 2002, +0, 1750, 1998, +0, 1755, 1993, +0, 1762, 1987, +0, 1771, 1978, +0, 1782, 1965, +0, 1798, 1948, +0, 1817, 1924, +0, 1842, 1890, +0, 1873, 1840, +0, 1912, 1764, +0, 1959, 1636, +0, 2015, 1375, +0, 2081, 0, +0, 2157, 0, +0, 2241, 0, +0, 2334, 0, +0, 2434, 0, +0, 2541, 0, +0, 2653, 0, +0, 2770, 0, +0, 2890, 0, +0, 3013, 0, +0, 3138, 0, +0, 3265, 0, +0, 3393, 0, +0, 3522, 0, +0, 3652, 0, +0, 1739, 2013, +0, 1740, 2012, +0, 1742, 2011, +0, 1744, 2009, +0, 1747, 2006, +0, 1751, 2002, +0, 1756, 1997, +0, 1763, 1991, +0, 1772, 1982, +0, 1783, 1970, +0, 1798, 1953, +0, 1818, 1929, +0, 1843, 1895, +0, 1874, 1846, +0, 1913, 1771, +0, 1960, 1645, +0, 2016, 1391, +0, 2082, 0, +0, 2157, 0, +0, 2241, 0, +0, 2334, 0, +0, 2434, 0, +0, 2541, 0, +0, 2653, 0, +0, 2770, 0, +0, 2890, 0, +0, 3013, 0, +0, 3138, 0, +0, 3265, 0, +0, 3393, 0, +0, 3522, 0, +0, 3652, 0, +0, 1740, 2018, +0, 1741, 2017, +0, 1743, 2016, +0, 1745, 2014, +0, 1748, 2011, +0, 1752, 2008, +0, 1757, 2003, +0, 1764, 1996, +0, 1773, 1988, +0, 1785, 1975, +0, 1800, 1959, +0, 1819, 1935, +0, 1844, 1902, +0, 1875, 1854, +0, 1914, 1779, +0, 1961, 1656, +0, 2017, 1412, +0, 2082, 13, +0, 2157, 0, +0, 2242, 0, +0, 2334, 0, +0, 2435, 0, +0, 2541, 0, +0, 2654, 0, +0, 2770, 0, +0, 2890, 0, +0, 3013, 0, +0, 3138, 0, +0, 3265, 0, +0, 3393, 0, +0, 3522, 0, +0, 3652, 0, +0, 1742, 2025, +0, 1743, 2024, +0, 1745, 2023, +0, 1747, 2021, +0, 1750, 2018, +0, 1754, 2015, +0, 1759, 2010, +0, 1766, 2004, +0, 1775, 1995, +0, 1786, 1983, +0, 1801, 1967, +0, 1821, 1944, +0, 1845, 1911, +0, 1876, 1864, +0, 1915, 1791, +0, 1962, 1672, +0, 2018, 1438, +0, 2083, 386, +0, 2158, 0, +0, 2242, 0, +0, 2335, 0, +0, 2435, 0, +0, 2542, 0, +0, 2654, 0, +0, 2770, 0, +0, 2890, 0, +0, 3013, 0, +0, 3139, 0, +0, 3265, 0, +0, 3393, 0, +0, 3523, 0, +0, 3652, 0, +0, 1744, 2035, +0, 1746, 2033, +0, 1747, 2032, +0, 1749, 2030, +0, 1752, 2028, +0, 1756, 2024, +0, 1761, 2020, +0, 1768, 2013, +0, 1777, 2005, +0, 1788, 1993, +0, 1803, 1977, +0, 1823, 1955, +0, 1847, 1923, +0, 1878, 1877, +0, 1917, 1806, +0, 1963, 1691, +0, 2019, 1470, +0, 2084, 640, +0, 2159, 0, +0, 2243, 0, +0, 2336, 0, +0, 2436, 0, +0, 2542, 0, +0, 2654, 0, +0, 2771, 0, +0, 2891, 0, +0, 3014, 0, +0, 3139, 0, +0, 3265, 0, +0, 3393, 0, +0, 3523, 0, +0, 3652, 0, +0, 1748, 2046, +0, 1749, 2045, +0, 1750, 2044, +0, 1753, 2042, +0, 1755, 2040, +0, 1759, 2036, +0, 1764, 2032, +0, 1771, 2026, +0, 1780, 2018, +0, 1791, 2006, +0, 1806, 1991, +0, 1825, 1969, +0, 1850, 1938, +0, 1881, 1893, +0, 1919, 1826, +0, 1965, 1716, +0, 2021, 1510, +0, 2086, 846, +0, 2160, 0, +0, 2244, 0, +0, 2336, 0, +0, 2436, 0, +0, 2543, 0, +0, 2655, 0, +0, 2771, 0, +0, 2891, 0, +0, 3014, 0, +0, 3139, 0, +0, 3266, 0, +0, 3394, 0, +0, 3523, 0, +0, 3652, 0, +0, 1752, 2062, +0, 1753, 2061, +0, 1755, 2060, +0, 1757, 2058, +0, 1760, 2055, +0, 1763, 2052, +0, 1768, 2048, +0, 1775, 2042, +0, 1784, 2034, +0, 1795, 2023, +0, 1810, 2008, +0, 1829, 1987, +0, 1853, 1958, +0, 1884, 1915, +0, 1922, 1851, +0, 1968, 1748, +0, 2023, 1559, +0, 2088, 1026, +0, 2162, 0, +0, 2246, 0, +0, 2338, 0, +0, 2437, 0, +0, 2543, 0, +0, 2655, 0, +0, 2771, 0, +0, 2891, 0, +0, 3014, 0, +0, 3139, 0, +0, 3266, 0, +0, 3394, 0, +0, 3523, 0, +0, 3652, 0, +0, 1757, 2082, +0, 1759, 2081, +0, 1760, 2080, +0, 1762, 2078, +0, 1765, 2076, +0, 1769, 2073, +0, 1774, 2068, +0, 1780, 2063, +0, 1789, 2055, +0, 1800, 2045, +0, 1815, 2030, +0, 1834, 2011, +0, 1858, 1983, +0, 1888, 1942, +0, 1925, 1882, +0, 1971, 1787, +0, 2026, 1616, +0, 2090, 1191, +0, 2164, 0, +0, 2247, 0, +0, 2339, 0, +0, 2438, 0, +0, 2544, 0, +0, 2656, 0, +0, 2772, 0, +0, 2892, 0, +0, 3014, 0, +0, 3139, 0, +0, 3266, 0, +0, 3394, 0, +0, 3523, 0, +0, 3653, 0, +30, 1765, 2107, +0, 1766, 2106, +0, 1767, 2105, +0, 1770, 2103, +0, 1772, 2101, +0, 1776, 2098, +0, 1781, 2094, +0, 1787, 2089, +0, 1796, 2082, +0, 1807, 2072, +0, 1821, 2059, +0, 1840, 2040, +0, 1864, 2014, +0, 1893, 1976, +0, 1931, 1921, +0, 1976, 1834, +0, 2030, 1684, +0, 2094, 1346, +0, 2167, 0, +0, 2250, 0, +0, 2341, 0, +0, 2440, 0, +0, 2546, 0, +0, 2657, 0, +0, 2773, 0, +0, 2892, 0, +0, 3015, 0, +0, 3140, 0, +0, 3266, 0, +0, 3394, 0, +0, 3523, 0, +0, 3653, 0, +1247, 1774, 2139, +1239, 1775, 2138, +1228, 1777, 2137, +1213, 1779, 2136, +1193, 1782, 2133, +1163, 1785, 2131, +1121, 1790, 2127, +1058, 1796, 2122, +956, 1805, 2116, +771, 1816, 2106, +265, 1830, 2094, +0, 1848, 2077, +0, 1871, 2053, +0, 1901, 2018, +0, 1937, 1968, +0, 1982, 1890, +0, 2036, 1760, +0, 2099, 1495, +0, 2171, 0, +0, 2253, 0, +0, 2344, 0, +0, 2442, 0, +0, 2547, 0, +0, 2658, 0, +0, 2774, 0, +0, 2893, 0, +0, 3015, 0, +0, 3140, 0, +0, 3267, 0, +0, 3394, 0, +0, 3523, 0, +0, 3653, 0, +1614, 1787, 2178, +1611, 1788, 2178, +1606, 1790, 2177, +1600, 1792, 2175, +1591, 1794, 2173, +1579, 1798, 2171, +1563, 1802, 2167, +1540, 1808, 2163, +1507, 1817, 2157, +1459, 1827, 2149, +1387, 1841, 2137, +1267, 1859, 2122, +1031, 1881, 2100, +0, 1910, 2069, +0, 1946, 2024, +0, 1990, 1956, +0, 2043, 1846, +0, 2105, 1639, +0, 2177, 963, +0, 2258, 0, +0, 2348, 0, +0, 2445, 0, +0, 2550, 0, +0, 2660, 0, +0, 2775, 0, +0, 2894, 0, +0, 3016, 0, +0, 3141, 0, +0, 3267, 0, +0, 3395, 0, +0, 3523, 0, +0, 3653, 0, +1867, 1803, 2226, +1865, 1804, 2225, +1862, 1806, 2224, +1858, 1808, 2223, +1853, 1810, 2222, +1847, 1814, 2219, +1838, 1818, 2216, +1825, 1824, 2212, +1808, 1832, 2207, +1784, 1842, 2199, +1750, 1855, 2189, +1700, 1873, 2175, +1623, 1895, 2156, +1494, 1923, 2129, +1232, 1958, 2090, +0, 2000, 2032, +0, 2052, 1940, +0, 2113, 1780, +0, 2184, 1399, +0, 2264, 0, +0, 2352, 0, +0, 2449, 0, +0, 2553, 0, +0, 2663, 0, +0, 2777, 0, +0, 2896, 0, +0, 3017, 0, +0, 3142, 0, +0, 3268, 0, +0, 3395, 0, +0, 3524, 0, +0, 3653, 0, +2071, 1824, 2283, +2070, 1825, 2282, +2068, 1827, 2282, +2066, 1828, 2281, +2063, 1831, 2279, +2059, 1834, 2277, +2053, 1838, 2274, +2046, 1844, 2271, +2035, 1851, 2266, +2021, 1861, 2260, +2001, 1874, 2251, +1973, 1891, 2239, +1932, 1912, 2222, +1871, 1939, 2198, +1775, 1973, 2165, +1602, 2014, 2117, +1165, 2064, 2042, +0, 2124, 1918, +0, 2193, 1672, +0, 2271, 186, +0, 2359, 0, +0, 2454, 0, +0, 2557, 0, +0, 2666, 0, +0, 2780, 0, +0, 2898, 0, +0, 3019, 0, +0, 3143, 0, +0, 3268, 0, +0, 3396, 0, +0, 3524, 0, +0, 3654, 0, +2251, 1851, 2350, +2250, 1852, 2349, +2249, 1853, 2348, +2248, 1855, 2347, +2246, 1857, 2346, +2243, 1860, 2344, +2239, 1864, 2342, +2234, 1869, 2339, +2227, 1877, 2335, +2218, 1886, 2329, +2205, 1898, 2322, +2187, 1914, 2311, +2162, 1934, 2297, +2127, 1960, 2277, +2074, 1992, 2250, +1993, 2032, 2210, +1855, 2080, 2150, +1563, 2138, 2055, +0, 2205, 1887, +0, 2281, 1471, +0, 2367, 0, +0, 2461, 0, +0, 2562, 0, +0, 2670, 0, +0, 2783, 0, +0, 2900, 0, +0, 3021, 0, +0, 3144, 0, +0, 3270, 0, +0, 3397, 0, +0, 3525, 0, +0, 3654, 0, +2416, 1884, 2425, +2415, 1885, 2425, +2415, 1886, 2424, +2413, 1888, 2424, +2412, 1890, 2423, +2410, 1893, 2421, +2408, 1896, 2419, +2404, 1901, 2417, +2399, 1908, 2413, +2393, 1917, 2408, +2384, 1928, 2402, +2372, 1943, 2393, +2356, 1962, 2382, +2333, 1986, 2365, +2300, 2017, 2342, +2253, 2054, 2310, +2180, 2101, 2263, +2060, 2156, 2191, +1826, 2220, 2072, +763, 2295, 1841, +0, 2378, 850, +0, 2470, 0, +0, 2570, 0, +0, 2676, 0, +0, 2787, 0, +0, 2904, 0, +0, 3023, 0, +0, 3146, 0, +0, 3271, 0, +0, 3398, 0, +0, 3526, 0, +0, 3655, 0, +2571, 1925, 2511, +2571, 1926, 2510, +2570, 1927, 2510, +2569, 1928, 2509, +2568, 1930, 2508, +2567, 1933, 2507, +2565, 1936, 2505, +2563, 1941, 2503, +2559, 1947, 2500, +2555, 1955, 2496, +2549, 1965, 2491, +2540, 1979, 2484, +2529, 1997, 2474, +2514, 2019, 2461, +2492, 2048, 2443, +2461, 2083, 2417, +2417, 2126, 2380, +2350, 2179, 2326, +2240, 2240, 2240, +2036, 2312, 2094, +1384, 2392, 1771, +0, 2482, 0, +0, 2579, 0, +0, 2683, 0, +0, 2793, 0, +0, 2908, 0, +0, 3027, 0, +0, 3149, 0, +0, 3273, 0, +0, 3399, 0, +0, 3527, 0, +0, 3656, 0, +2720, 1975, 2604, +2719, 1975, 2604, +2719, 1976, 2603, +2718, 1978, 2603, +2718, 1979, 2602, +2717, 1982, 2601, +2715, 1985, 2600, +2713, 1989, 2598, +2711, 1994, 2596, +2708, 2002, 2593, +2704, 2011, 2588, +2698, 2023, 2583, +2690, 2039, 2575, +2679, 2060, 2564, +2664, 2086, 2550, +2643, 2119, 2529, +2614, 2159, 2501, +2571, 2208, 2460, +2508, 2266, 2398, +2405, 2333, 2299, +2218, 2411, 2122, +1698, 2497, 1658, +0, 2591, 0, +0, 2693, 0, +0, 2801, 0, +0, 2914, 0, +0, 3032, 0, +0, 3152, 0, +0, 3276, 0, +0, 3401, 0, +0, 3529, 0, +0, 3657, 0, +2864, 2033, 2705, +2863, 2034, 2705, +2863, 2035, 2704, +2863, 2036, 2704, +2862, 2038, 2703, +2861, 2040, 2703, +2860, 2042, 2702, +2859, 2046, 2700, +2857, 2051, 2698, +2855, 2057, 2696, +2852, 2066, 2692, +2848, 2076, 2688, +2842, 2091, 2682, +2834, 2109, 2673, +2824, 2133, 2662, +2809, 2162, 2646, +2789, 2199, 2624, +2761, 2244, 2593, +2720, 2298, 2548, +2658, 2361, 2479, +2560, 2434, 2368, +2385, 2516, 2156, +1930, 2607, 1441, +0, 2706, 0, +0, 2811, 0, +0, 2922, 0, +0, 3038, 0, +0, 3157, 0, +0, 3279, 0, +0, 3404, 0, +0, 3531, 0, +0, 3658, 0, +3004, 2102, 2812, +3004, 2102, 2812, +3004, 2103, 2812, +3004, 2104, 2811, +3003, 2105, 2811, +3003, 2107, 2810, +3002, 2110, 2810, +3001, 2113, 2808, +3000, 2117, 2807, +2998, 2122, 2805, +2996, 2130, 2802, +2993, 2139, 2799, +2989, 2152, 2794, +2983, 2168, 2787, +2976, 2188, 2779, +2965, 2215, 2766, +2951, 2248, 2750, +2931, 2288, 2726, +2903, 2337, 2693, +2863, 2396, 2644, +2804, 2464, 2570, +2709, 2541, 2446, +2541, 2628, 2199, +2125, 2722, 664, +0, 2824, 0, +0, 2932, 0, +0, 3046, 0, +0, 3163, 0, +0, 3284, 0, +0, 3408, 0, +0, 3533, 0, +0, 3660, 0, +3143, 2180, 2925, +3143, 2180, 2925, +3143, 2181, 2924, +3142, 2182, 2924, +3142, 2183, 2924, +3142, 2184, 2923, +3141, 2186, 2923, +3141, 2189, 2922, +3140, 2192, 2921, +3138, 2197, 2919, +3137, 2203, 2917, +3134, 2211, 2914, +3131, 2222, 2911, +3127, 2236, 2906, +3122, 2254, 2899, +3114, 2276, 2890, +3104, 2305, 2877, +3090, 2341, 2859, +3071, 2385, 2835, +3043, 2438, 2799, +3004, 2500, 2748, +2945, 2572, 2668, +2853, 2653, 2532, +2690, 2743, 2250, +2299, 2841, 0, +0, 2946, 0, +0, 3056, 0, +0, 3171, 0, +0, 3290, 0, +0, 3412, 0, +0, 3537, 0, +0, 3663, 0, +3280, 2267, 3042, +3280, 2267, 3042, +3280, 2267, 3041, +3279, 2268, 3041, +3279, 2269, 3041, +3279, 2270, 3041, +3278, 2272, 3040, +3278, 2274, 3039, +3277, 2277, 3039, +3276, 2281, 3037, +3275, 2286, 3036, +3273, 2293, 3034, +3271, 2302, 3031, +3268, 2313, 3027, +3264, 2328, 3022, +3259, 2348, 3015, +3251, 2373, 3005, +3241, 2404, 2992, +3227, 2442, 2974, +3208, 2489, 2948, +3181, 2545, 2911, +3142, 2611, 2857, +3085, 2686, 2773, +2994, 2770, 2628, +2835, 2863, 2310, +2460, 2963, 0, +0, 3070, 0, +0, 3182, 0, +0, 3299, 0, +0, 3419, 0, +0, 3542, 0, +0, 3667, 0, +3415, 2362, 3162, +3415, 2362, 3162, +3415, 2362, 3162, +3415, 2363, 3162, +3415, 2364, 3162, +3415, 2365, 3161, +3414, 2366, 3161, +3414, 2368, 3160, +3414, 2370, 3160, +3413, 2373, 3159, +3412, 2377, 3158, +3411, 2383, 3156, +3409, 2390, 3154, +3407, 2400, 3151, +3404, 2412, 3147, +3400, 2429, 3142, +3394, 2449, 3134, +3387, 2476, 3124, +3377, 2509, 3111, +3363, 2550, 3092, +3344, 2599, 3066, +3318, 2658, 3028, +3279, 2726, 2971, +3222, 2804, 2883, +3132, 2891, 2730, +2976, 2985, 2380, +2613, 3088, 0, +0, 3196, 0, +0, 3309, 0, +0, 3427, 0, +0, 3548, 0, +0, 3672, 0, +3550, 2464, 3285, +3550, 2464, 3285, +3550, 2464, 3285, +3550, 2465, 3285, +3550, 2465, 3285, +3550, 2466, 3285, +3549, 2467, 3284, +3549, 2469, 3284, +3549, 2471, 3284, +3548, 2473, 3283, +3548, 2477, 3282, +3547, 2481, 3281, +3545, 2487, 3279, +3544, 2495, 3277, +3542, 2505, 3274, +3539, 2518, 3270, +3535, 2535, 3264, +3529, 2557, 3257, +3522, 2585, 3247, +3512, 2620, 3233, +3498, 2663, 3214, +3479, 2714, 3187, +3453, 2775, 3148, +3415, 2845, 3090, +3358, 2925, 2999, +3269, 3014, 2838, +3115, 3110, 2460, +2760, 3214, 0, +0, 3323, 0, +0, 3438, 0, +0, 3556, 0, +0, 3678, 0, +3684, 2572, 3411, +3684, 2572, 3411, +3684, 2573, 3411, +3684, 2573, 3410, +3684, 2574, 3410, +3684, 2574, 3410, +3684, 2575, 3410, +3683, 2576, 3410, +3683, 2578, 3409, +3683, 2580, 3409, +3682, 2582, 3408, +3682, 2586, 3407, +3681, 2591, 3406, +3679, 2597, 3404, +3678, 2605, 3402, +3676, 2616, 3399, +3673, 2630, 3395, +3669, 2647, 3389, +3663, 2670, 3382, +3656, 2699, 3371, +3646, 2736, 3357, +3633, 2780, 3338, +3614, 2833, 3310, +3587, 2895, 3270, +3549, 2967, 3211, +3493, 3049, 3118, +3405, 3139, 2952, +3252, 3237, 2548, +2902, 3342, 0, +0, 3452, 0, +0, 3567, 0, +0, 3686, 0, +3818, 2686, 3538, +3818, 2686, 3538, +3818, 2686, 3538, +3818, 2686, 3537, +3817, 2687, 3537, +3817, 2687, 3537, +3817, 2688, 3537, +3817, 2689, 3537, +3817, 2690, 3537, +3817, 2692, 3536, +3816, 2694, 3536, +3816, 2696, 3535, +3815, 2700, 3534, +3814, 2705, 3533, +3813, 2711, 3531, +3811, 2720, 3529, +3809, 2731, 3526, +3806, 2745, 3522, +3802, 2764, 3516, +3797, 2788, 3508, +3790, 2818, 3498, +3780, 2855, 3484, +3766, 2900, 3464, +3748, 2955, 3436, +3721, 3018, 3395, +3683, 3092, 3335, +3627, 3174, 3240, +3540, 3266, 3070, +3387, 3365, 2644, +3042, 3470, 0, +0, 3582, 0, +0, 3697, 0, +3951, 2804, 3666, +3951, 2804, 3666, +3951, 2804, 3666, +3951, 2804, 3666, +3951, 2804, 3666, +3951, 2805, 3666, +3951, 2805, 3665, +3950, 2806, 3665, +3950, 2807, 3665, +3950, 2808, 3665, +3950, 2810, 3664, +3949, 2812, 3664, +3949, 2815, 3663, +3948, 2818, 3662, +3947, 2823, 3661, +3946, 2830, 3659, +3944, 2839, 3657, +3942, 2850, 3654, +3939, 2865, 3650, +3935, 2884, 3644, +3930, 2909, 3636, +3923, 2939, 3626, +3913, 2977, 3611, +3900, 3024, 3591, +3881, 3079, 3563, +3855, 3144, 3522, +3817, 3218, 3461, +3761, 3302, 3364, +3674, 3394, 3191, +3522, 3494, 2748, +3180, 3600, 0, +0, 3712, 0, +4084, 2925, 3795, +4084, 2925, 3795, +4084, 2925, 3795, +4084, 2925, 3795, +4084, 2925, 3795, +4084, 2926, 3795, +4083, 2926, 3795, +4083, 2926, 3795, +4083, 2927, 3794, +4083, 2928, 3794, +4083, 2929, 3794, +4083, 2931, 3794, +4082, 2933, 3793, +4082, 2936, 3792, +4081, 2940, 3791, +4080, 2945, 3790, +4079, 2952, 3788, +4077, 2961, 3786, +4075, 2972, 3783, +4072, 2988, 3779, +4068, 3007, 3773, +4063, 3032, 3765, +4056, 3063, 3755, +4046, 3102, 3740, +4033, 3149, 3720, +4014, 3205, 3691, +3988, 3271, 3650, +3950, 3346, 3589, +3894, 3430, 3491, +3807, 3523, 3314, +3656, 3623, 2857, +3317, 3730, 0, +4095, 3048, 3925, +4095, 3048, 3925, +4095, 3048, 3925, +4095, 3049, 3925, +4095, 3049, 3925, +4095, 3049, 3925, +4095, 3049, 3925, +4095, 3050, 3925, +4095, 3050, 3924, +4095, 3051, 3924, +4095, 3052, 3924, +4095, 3053, 3924, +4095, 3055, 3923, +4095, 3057, 3923, +4095, 3060, 3922, +4095, 3064, 3921, +4095, 3069, 3920, +4095, 3076, 3918, +4095, 3085, 3916, +4095, 3097, 3913, +4095, 3112, 3908, +4095, 3132, 3903, +4095, 3157, 3895, +4095, 3189, 3884, +4095, 3228, 3870, +4095, 3276, 3849, +4095, 3333, 3821, +4095, 3399, 3779, +4083, 3475, 3717, +4027, 3560, 3619, +3940, 3653, 3440, +3790, 3754, 2972, +4095, 3174, 4055, +4095, 3174, 4055, +4095, 3174, 4055, +4095, 3174, 4055, +4095, 3174, 4055, +4095, 3174, 4055, +4095, 3175, 4055, +4095, 3175, 4055, +4095, 3175, 4055, +4095, 3176, 4055, +4095, 3177, 4055, +4095, 3178, 4055, +4095, 3179, 4054, +4095, 3181, 4054, +4095, 3183, 4053, +4095, 3186, 4053, +4095, 3190, 4052, +4095, 3195, 4050, +4095, 3202, 4049, +4095, 3211, 4046, +4095, 3223, 4043, +4095, 3239, 4039, +4095, 3259, 4033, +4095, 3285, 4025, +4095, 3317, 4015, +4095, 3356, 4000, +4095, 3404, 3979, +4095, 3461, 3951, +4095, 3528, 3909, +4095, 3604, 3847, +4095, 3690, 3747, +4073, 3783, 3567, +0, 1867, 2134, +0, 1868, 2133, +0, 1869, 2132, +0, 1871, 2130, +0, 1873, 2128, +0, 1876, 2126, +0, 1880, 2122, +0, 1885, 2117, +0, 1892, 2110, +0, 1901, 2101, +0, 1913, 2088, +0, 1928, 2071, +0, 1948, 2047, +0, 1973, 2012, +0, 2004, 1961, +0, 2043, 1882, +0, 2090, 1749, +0, 2146, 1473, +0, 2212, 0, +0, 2288, 0, +0, 2372, 0, +0, 2465, 0, +0, 2566, 0, +0, 2673, 0, +0, 2785, 0, +0, 2902, 0, +0, 3022, 0, +0, 3145, 0, +0, 3270, 0, +0, 3397, 0, +0, 3525, 0, +0, 3654, 0, +0, 1867, 2135, +0, 1868, 2134, +0, 1869, 2133, +0, 1871, 2132, +0, 1873, 2130, +0, 1876, 2127, +0, 1880, 2123, +0, 1885, 2118, +0, 1892, 2112, +0, 1901, 2102, +0, 1913, 2090, +0, 1928, 2072, +0, 1948, 2048, +0, 1973, 2013, +0, 2004, 1962, +0, 2043, 1884, +0, 2090, 1752, +0, 2147, 1479, +0, 2213, 0, +0, 2288, 0, +0, 2372, 0, +0, 2465, 0, +0, 2566, 0, +0, 2673, 0, +0, 2785, 0, +0, 2902, 0, +0, 3022, 0, +0, 3145, 0, +0, 3270, 0, +0, 3397, 0, +0, 3525, 0, +0, 3654, 0, +0, 1868, 2137, +0, 1869, 2136, +0, 1870, 2135, +0, 1872, 2133, +0, 1874, 2131, +0, 1877, 2129, +0, 1881, 2125, +0, 1886, 2120, +0, 1893, 2113, +0, 1902, 2104, +0, 1913, 2092, +0, 1929, 2074, +0, 1948, 2050, +0, 1973, 2016, +0, 2004, 1965, +0, 2043, 1887, +0, 2091, 1756, +0, 2147, 1486, +0, 2213, 0, +0, 2288, 0, +0, 2373, 0, +0, 2466, 0, +0, 2566, 0, +0, 2673, 0, +0, 2785, 0, +0, 2902, 0, +0, 3022, 0, +0, 3145, 0, +0, 3270, 0, +0, 3397, 0, +0, 3525, 0, +0, 3655, 0, +0, 1868, 2139, +0, 1869, 2138, +0, 1870, 2137, +0, 1872, 2136, +0, 1874, 2134, +0, 1877, 2131, +0, 1881, 2127, +0, 1886, 2122, +0, 1893, 2116, +0, 1902, 2107, +0, 1914, 2094, +0, 1929, 2077, +0, 1949, 2053, +0, 1974, 2019, +0, 2005, 1968, +0, 2044, 1891, +0, 2091, 1761, +0, 2147, 1495, +0, 2213, 0, +0, 2288, 0, +0, 2373, 0, +0, 2466, 0, +0, 2566, 0, +0, 2673, 0, +0, 2785, 0, +0, 2902, 0, +0, 3022, 0, +0, 3145, 0, +0, 3270, 0, +0, 3397, 0, +0, 3525, 0, +0, 3655, 0, +0, 1869, 2142, +0, 1870, 2141, +0, 1871, 2140, +0, 1873, 2139, +0, 1875, 2137, +0, 1878, 2134, +0, 1882, 2130, +0, 1887, 2125, +0, 1894, 2119, +0, 1903, 2110, +0, 1915, 2097, +0, 1930, 2080, +0, 1949, 2056, +0, 1974, 2022, +0, 2005, 1973, +0, 2044, 1896, +0, 2091, 1768, +0, 2148, 1508, +0, 2213, 0, +0, 2289, 0, +0, 2373, 0, +0, 2466, 0, +0, 2566, 0, +0, 2673, 0, +0, 2785, 0, +0, 2902, 0, +0, 3022, 0, +0, 3145, 0, +0, 3270, 0, +0, 3397, 0, +0, 3525, 0, +0, 3655, 0, +0, 1870, 2146, +0, 1871, 2145, +0, 1872, 2144, +0, 1874, 2143, +0, 1876, 2141, +0, 1879, 2138, +0, 1883, 2134, +0, 1888, 2130, +0, 1895, 2123, +0, 1904, 2114, +0, 1915, 2102, +0, 1931, 2085, +0, 1950, 2061, +0, 1975, 2028, +0, 2006, 1978, +0, 2045, 1903, +0, 2092, 1777, +0, 2148, 1523, +0, 2214, 0, +0, 2289, 0, +0, 2373, 0, +0, 2466, 0, +0, 2567, 0, +0, 2673, 0, +0, 2786, 0, +0, 2902, 0, +0, 3022, 0, +0, 3145, 0, +0, 3270, 0, +0, 3397, 0, +0, 3525, 0, +0, 3655, 0, +0, 1871, 2151, +0, 1872, 2151, +0, 1874, 2149, +0, 1875, 2148, +0, 1877, 2146, +0, 1880, 2143, +0, 1884, 2140, +0, 1889, 2135, +0, 1896, 2129, +0, 1905, 2120, +0, 1917, 2108, +0, 1932, 2091, +0, 1951, 2068, +0, 1976, 2034, +0, 2007, 1986, +0, 2046, 1912, +0, 2093, 1788, +0, 2149, 1544, +0, 2214, 145, +0, 2290, 0, +0, 2374, 0, +0, 2467, 0, +0, 2567, 0, +0, 2674, 0, +0, 2786, 0, +0, 2902, 0, +0, 3022, 0, +0, 3145, 0, +0, 3271, 0, +0, 3397, 0, +0, 3525, 0, +0, 3655, 0, +0, 1873, 2158, +0, 1874, 2157, +0, 1875, 2156, +0, 1877, 2155, +0, 1879, 2153, +0, 1882, 2150, +0, 1886, 2147, +0, 1891, 2142, +0, 1898, 2136, +0, 1907, 2127, +0, 1918, 2115, +0, 1933, 2099, +0, 1953, 2076, +0, 1977, 2043, +0, 2009, 1996, +0, 2047, 1923, +0, 2094, 1804, +0, 2150, 1570, +0, 2215, 518, +0, 2290, 0, +0, 2374, 0, +0, 2467, 0, +0, 2567, 0, +0, 2674, 0, +0, 2786, 0, +0, 2902, 0, +0, 3023, 0, +0, 3146, 0, +0, 3271, 0, +0, 3397, 0, +0, 3526, 0, +0, 3655, 0, +0, 1876, 2167, +0, 1876, 2167, +0, 1878, 2166, +0, 1879, 2164, +0, 1882, 2162, +0, 1884, 2160, +0, 1888, 2156, +0, 1893, 2152, +0, 1900, 2145, +0, 1909, 2137, +0, 1920, 2125, +0, 1935, 2109, +0, 1955, 2087, +0, 1979, 2055, +0, 2010, 2009, +0, 2049, 1938, +0, 2095, 1823, +0, 2151, 1602, +0, 2216, 772, +0, 2291, 0, +0, 2375, 0, +0, 2468, 0, +0, 2568, 0, +0, 2674, 0, +0, 2786, 0, +0, 2903, 0, +0, 3023, 0, +0, 3146, 0, +0, 3271, 0, +0, 3398, 0, +0, 3526, 0, +0, 3655, 0, +0, 1879, 2179, +0, 1880, 2179, +0, 1881, 2178, +0, 1883, 2176, +0, 1885, 2174, +0, 1888, 2172, +0, 1891, 2168, +0, 1896, 2164, +0, 1903, 2158, +0, 1912, 2150, +0, 1923, 2138, +0, 1938, 2123, +0, 1957, 2101, +0, 1982, 2070, +0, 2013, 2026, +0, 2051, 1958, +0, 2097, 1848, +0, 2153, 1642, +0, 2218, 978, +0, 2293, 0, +0, 2376, 0, +0, 2469, 0, +0, 2568, 0, +0, 2675, 0, +0, 2787, 0, +0, 2903, 0, +0, 3023, 0, +0, 3146, 0, +0, 3271, 0, +0, 3398, 0, +0, 3526, 0, +0, 3655, 0, +0, 1883, 2195, +0, 1884, 2194, +0, 1885, 2193, +0, 1887, 2192, +0, 1889, 2190, +0, 1892, 2188, +0, 1895, 2184, +0, 1900, 2180, +0, 1907, 2174, +0, 1916, 2166, +0, 1927, 2155, +0, 1942, 2140, +0, 1961, 2119, +0, 1985, 2090, +0, 2016, 2047, +0, 2054, 1983, +0, 2100, 1880, +0, 2155, 1691, +0, 2220, 1158, +0, 2294, 0, +0, 2378, 0, +0, 2470, 0, +0, 2569, 0, +0, 2676, 0, +0, 2787, 0, +0, 2904, 0, +0, 3023, 0, +0, 3146, 0, +0, 3271, 0, +0, 3398, 0, +0, 3526, 0, +0, 3655, 0, +0, 1889, 2215, +0, 1889, 2214, +0, 1891, 2213, +0, 1892, 2212, +0, 1894, 2210, +0, 1897, 2208, +0, 1901, 2205, +0, 1906, 2200, +0, 1912, 2195, +0, 1921, 2187, +0, 1932, 2177, +0, 1947, 2163, +0, 1966, 2143, +0, 1990, 2115, +0, 2020, 2074, +0, 2058, 2014, +0, 2103, 1919, +0, 2158, 1748, +0, 2223, 1323, +0, 2296, 0, +0, 2380, 0, +0, 2471, 0, +0, 2571, 0, +0, 2677, 0, +0, 2788, 0, +0, 2904, 0, +0, 3024, 0, +0, 3146, 0, +0, 3271, 0, +0, 3398, 0, +0, 3526, 0, +0, 3655, 0, +241, 1896, 2240, +162, 1897, 2239, +31, 1898, 2238, +0, 1900, 2237, +0, 1902, 2236, +0, 1904, 2233, +0, 1908, 2230, +0, 1913, 2227, +0, 1919, 2221, +0, 1928, 2214, +0, 1939, 2204, +0, 1953, 2191, +0, 1972, 2172, +0, 1996, 2146, +0, 2026, 2108, +0, 2063, 2053, +0, 2108, 1966, +0, 2162, 1816, +0, 2226, 1478, +0, 2299, 0, +0, 2382, 0, +0, 2473, 0, +0, 2572, 0, +0, 2678, 0, +0, 2789, 0, +0, 2905, 0, +0, 3024, 0, +0, 3147, 0, +0, 3272, 0, +0, 3398, 0, +0, 3526, 0, +0, 3655, 0, +1385, 1906, 2272, +1379, 1906, 2271, +1371, 1908, 2270, +1360, 1909, 2269, +1345, 1911, 2268, +1325, 1914, 2266, +1296, 1917, 2263, +1253, 1922, 2259, +1190, 1929, 2254, +1089, 1937, 2248, +903, 1948, 2239, +397, 1962, 2226, +0, 1980, 2209, +0, 2003, 2185, +0, 2033, 2150, +0, 2069, 2100, +0, 2114, 2023, +0, 2168, 1893, +0, 2231, 1627, +0, 2303, 0, +0, 2385, 0, +0, 2476, 0, +0, 2574, 0, +0, 2680, 0, +0, 2790, 0, +0, 2906, 0, +0, 3025, 0, +0, 3148, 0, +0, 3272, 0, +0, 3399, 0, +0, 3526, 0, +0, 3655, 0, +1749, 1918, 2311, +1747, 1919, 2310, +1743, 1920, 2310, +1738, 1922, 2309, +1732, 1924, 2307, +1723, 1926, 2305, +1711, 1930, 2303, +1695, 1934, 2300, +1672, 1941, 2295, +1639, 1949, 2289, +1592, 1959, 2281, +1519, 1973, 2269, +1399, 1991, 2254, +1164, 2014, 2232, +83, 2042, 2201, +0, 2078, 2156, +0, 2122, 2088, +0, 2175, 1978, +0, 2237, 1771, +0, 2309, 1096, +0, 2390, 0, +0, 2480, 0, +0, 2577, 0, +0, 2682, 0, +0, 2792, 0, +0, 2907, 0, +0, 3026, 0, +0, 3148, 0, +0, 3273, 0, +0, 3399, 0, +0, 3527, 0, +0, 3656, 0, +2000, 1935, 2359, +1999, 1935, 2358, +1997, 1936, 2358, +1994, 1938, 2357, +1990, 1940, 2355, +1985, 1942, 2354, +1979, 1946, 2351, +1970, 1950, 2348, +1957, 1956, 2344, +1940, 1964, 2339, +1916, 1974, 2331, +1882, 1988, 2321, +1832, 2005, 2307, +1755, 2027, 2288, +1626, 2055, 2261, +1364, 2090, 2222, +0, 2133, 2164, +0, 2184, 2073, +0, 2245, 1912, +0, 2316, 1531, +0, 2396, 0, +0, 2484, 0, +0, 2581, 0, +0, 2685, 0, +0, 2795, 0, +0, 2909, 0, +0, 3028, 0, +0, 3149, 0, +0, 3274, 0, +0, 3400, 0, +0, 3527, 0, +0, 3656, 0, +2205, 1955, 2416, +2204, 1956, 2415, +2202, 1957, 2415, +2201, 1959, 2414, +2198, 1960, 2413, +2195, 1963, 2411, +2191, 1966, 2409, +2185, 1970, 2407, +2178, 1976, 2403, +2167, 1984, 2398, +2153, 1993, 2392, +2133, 2006, 2383, +2105, 2023, 2371, +2064, 2044, 2354, +2003, 2071, 2331, +1907, 2105, 2297, +1734, 2146, 2249, +1297, 2196, 2174, +0, 2256, 2050, +0, 2325, 1804, +0, 2403, 318, +0, 2491, 0, +0, 2586, 0, +0, 2689, 0, +0, 2798, 0, +0, 2912, 0, +0, 3030, 0, +0, 3151, 0, +0, 3275, 0, +0, 3401, 0, +0, 3528, 0, +0, 3656, 0, +2384, 1982, 2482, +2383, 1983, 2482, +2382, 1984, 2481, +2381, 1985, 2480, +2380, 1987, 2479, +2378, 1989, 2478, +2375, 1992, 2476, +2371, 1996, 2474, +2366, 2002, 2471, +2359, 2009, 2467, +2350, 2018, 2461, +2337, 2030, 2454, +2319, 2046, 2443, +2294, 2066, 2429, +2259, 2092, 2410, +2206, 2124, 2382, +2125, 2164, 2342, +1987, 2212, 2282, +1696, 2270, 2187, +0, 2337, 2019, +0, 2414, 1603, +0, 2499, 0, +0, 2593, 0, +0, 2694, 0, +0, 2802, 0, +0, 2915, 0, +0, 3032, 0, +0, 3153, 0, +0, 3276, 0, +0, 3402, 0, +0, 3529, 0, +0, 3657, 0, +2549, 2015, 2558, +2548, 2016, 2558, +2547, 2017, 2557, +2547, 2018, 2557, +2546, 2020, 2556, +2544, 2022, 2555, +2542, 2025, 2553, +2540, 2029, 2551, +2536, 2034, 2549, +2531, 2040, 2545, +2525, 2049, 2541, +2516, 2060, 2534, +2504, 2075, 2526, +2488, 2094, 2514, +2465, 2118, 2497, +2432, 2149, 2475, +2385, 2187, 2442, +2312, 2233, 2395, +2192, 2288, 2323, +1958, 2352, 2204, +895, 2427, 1973, +0, 2510, 982, +0, 2602, 0, +0, 2702, 0, +0, 2808, 0, +0, 2919, 0, +0, 3036, 0, +0, 3156, 0, +0, 3278, 0, +0, 3403, 0, +0, 3530, 0, +0, 3658, 0, +2703, 2056, 2643, +2703, 2057, 2643, +2703, 2058, 2642, +2702, 2059, 2642, +2701, 2060, 2641, +2700, 2062, 2640, +2699, 2065, 2639, +2697, 2068, 2637, +2695, 2073, 2635, +2691, 2079, 2632, +2687, 2087, 2629, +2681, 2097, 2623, +2673, 2111, 2616, +2661, 2129, 2607, +2646, 2151, 2593, +2624, 2180, 2575, +2593, 2215, 2549, +2549, 2259, 2512, +2482, 2311, 2458, +2373, 2373, 2373, +2168, 2444, 2226, +1516, 2524, 1903, +0, 2614, 0, +0, 2711, 0, +0, 2815, 0, +0, 2925, 0, +0, 3040, 0, +0, 3159, 0, +0, 3281, 0, +0, 3405, 0, +0, 3531, 0, +0, 3659, 0, +2852, 2106, 2736, +2852, 2107, 2736, +2851, 2107, 2736, +2851, 2108, 2735, +2850, 2110, 2735, +2850, 2111, 2734, +2849, 2114, 2733, +2847, 2117, 2732, +2846, 2121, 2730, +2843, 2126, 2728, +2840, 2134, 2725, +2836, 2143, 2720, +2830, 2155, 2715, +2822, 2171, 2707, +2811, 2192, 2696, +2796, 2218, 2682, +2775, 2251, 2662, +2746, 2291, 2633, +2703, 2340, 2592, +2640, 2398, 2530, +2537, 2466, 2431, +2350, 2543, 2254, +1830, 2629, 1790, +0, 2723, 0, +0, 2825, 0, +0, 2933, 0, +0, 3046, 0, +0, 3164, 0, +0, 3284, 0, +0, 3408, 0, +0, 3533, 0, +0, 3661, 0, +2996, 2165, 2837, +2996, 2165, 2837, +2995, 2166, 2837, +2995, 2167, 2836, +2995, 2168, 2836, +2994, 2170, 2835, +2994, 2172, 2835, +2993, 2174, 2834, +2991, 2178, 2832, +2990, 2183, 2830, +2987, 2189, 2828, +2984, 2198, 2825, +2980, 2209, 2820, +2974, 2223, 2814, +2966, 2241, 2805, +2956, 2265, 2794, +2941, 2294, 2778, +2921, 2331, 2756, +2893, 2376, 2725, +2852, 2430, 2680, +2790, 2493, 2611, +2693, 2566, 2500, +2517, 2648, 2288, +2062, 2739, 1573, +0, 2838, 0, +0, 2943, 0, +0, 3054, 0, +0, 3170, 0, +0, 3289, 0, +0, 3412, 0, +0, 3536, 0, +0, 3663, 0, +3137, 2233, 2944, +3136, 2234, 2944, +3136, 2234, 2944, +3136, 2235, 2944, +3136, 2236, 2944, +3135, 2238, 2943, +3135, 2239, 2942, +3134, 2242, 2942, +3133, 2245, 2941, +3132, 2249, 2939, +3130, 2254, 2937, +3128, 2262, 2934, +3125, 2271, 2931, +3121, 2284, 2926, +3115, 2300, 2920, +3108, 2320, 2911, +3097, 2347, 2899, +3083, 2380, 2882, +3063, 2420, 2858, +3036, 2469, 2825, +2996, 2528, 2776, +2936, 2596, 2702, +2841, 2673, 2578, +2673, 2760, 2331, +2257, 2854, 796, +0, 2956, 0, +0, 3064, 0, +0, 3178, 0, +0, 3295, 0, +0, 3416, 0, +0, 3540, 0, +0, 3665, 0, +3275, 2311, 3057, +3275, 2312, 3057, +3275, 2312, 3057, +3275, 2313, 3057, +3275, 2314, 3056, +3274, 2315, 3056, +3274, 2316, 3055, +3273, 2318, 3055, +3273, 2321, 3054, +3272, 2324, 3053, +3270, 2329, 3051, +3269, 2335, 3049, +3267, 2343, 3046, +3263, 2354, 3043, +3259, 2368, 3038, +3254, 2386, 3031, +3246, 2409, 3022, +3236, 2437, 3009, +3222, 2473, 2991, +3203, 2517, 2967, +3175, 2570, 2931, +3136, 2633, 2880, +3078, 2704, 2800, +2985, 2786, 2665, +2822, 2875, 2382, +2431, 2973, 0, +0, 3078, 0, +0, 3188, 0, +0, 3303, 0, +0, 3422, 0, +0, 3545, 0, +0, 3669, 0, +3412, 2398, 3174, +3412, 2399, 3174, +3412, 2399, 3174, +3412, 2400, 3174, +3411, 2400, 3173, +3411, 2401, 3173, +3411, 2402, 3173, +3411, 2404, 3172, +3410, 2406, 3172, +3409, 2409, 3171, +3408, 2413, 3170, +3407, 2418, 3168, +3406, 2425, 3166, +3403, 2434, 3163, +3400, 2445, 3159, +3396, 2461, 3154, +3391, 2480, 3147, +3383, 2505, 3137, +3373, 2536, 3124, +3360, 2574, 3106, +3340, 2621, 3080, +3313, 2677, 3043, +3275, 2743, 2989, +3217, 2818, 2905, +3126, 2902, 2760, +2967, 2995, 2442, +2592, 3095, 0, +0, 3202, 0, +0, 3314, 0, +0, 3431, 0, +0, 3551, 0, +0, 3674, 0, +3547, 2493, 3294, +3547, 2494, 3294, +3547, 2494, 3294, +3547, 2494, 3294, +3547, 2495, 3294, +3547, 2496, 3294, +3547, 2497, 3293, +3547, 2498, 3293, +3546, 2500, 3293, +3546, 2502, 3292, +3545, 2505, 3291, +3544, 2510, 3290, +3543, 2515, 3288, +3541, 2522, 3286, +3539, 2532, 3283, +3536, 2545, 3279, +3532, 2561, 3274, +3527, 2582, 3266, +3519, 2608, 3257, +3509, 2641, 3243, +3496, 2682, 3224, +3476, 2731, 3198, +3450, 2790, 3160, +3411, 2858, 3103, +3354, 2936, 3015, +3265, 3023, 2862, +3108, 3118, 2512, +2745, 3220, 0, +0, 3328, 0, +0, 3442, 0, +0, 3559, 0, +0, 3680, 0, +3682, 2596, 3418, +3682, 2596, 3417, +3682, 2596, 3417, +3682, 2597, 3417, +3682, 2597, 3417, +3682, 2598, 3417, +3682, 2598, 3417, +3681, 2599, 3417, +3681, 2601, 3416, +3681, 2603, 3416, +3680, 2605, 3415, +3680, 2609, 3414, +3679, 2613, 3413, +3677, 2619, 3411, +3676, 2627, 3409, +3674, 2637, 3406, +3671, 2650, 3402, +3667, 2667, 3396, +3661, 2689, 3389, +3654, 2717, 3379, +3644, 2752, 3365, +3630, 2795, 3346, +3612, 2846, 3319, +3585, 2907, 3280, +3547, 2977, 3222, +3490, 3057, 3131, +3401, 3146, 2970, +3247, 3242, 2592, +2892, 3346, 0, +0, 3456, 0, +0, 3570, 0, +0, 3689, 0, +3816, 2704, 3543, +3816, 2704, 3543, +3816, 2705, 3543, +3816, 2705, 3543, +3816, 2705, 3543, +3816, 2706, 3542, +3816, 2706, 3542, +3816, 2707, 3542, +3815, 2708, 3542, +3815, 2710, 3541, +3815, 2712, 3541, +3814, 2714, 3540, +3814, 2718, 3539, +3813, 2723, 3538, +3811, 2729, 3536, +3810, 2737, 3534, +3808, 2748, 3531, +3805, 2762, 3527, +3801, 2780, 3521, +3795, 2803, 3514, +3788, 2832, 3504, +3778, 2868, 3489, +3765, 2912, 3470, +3746, 2965, 3442, +3719, 3027, 3403, +3681, 3099, 3343, +3625, 3181, 3250, +3537, 3271, 3084, +3384, 3369, 2680, +3034, 3474, 0, +0, 3584, 0, +0, 3699, 0, +3950, 2818, 3670, +3950, 2818, 3670, +3950, 2818, 3670, +3950, 2818, 3670, +3950, 2819, 3670, +3950, 2819, 3669, +3949, 2819, 3669, +3949, 2820, 3669, +3949, 2821, 3669, +3949, 2822, 3669, +3949, 2824, 3668, +3948, 2826, 3668, +3948, 2829, 3667, +3947, 2832, 3666, +3946, 2837, 3665, +3945, 2844, 3663, +3943, 2852, 3661, +3941, 2863, 3658, +3938, 2878, 3654, +3934, 2896, 3648, +3929, 2920, 3640, +3922, 2950, 3630, +3912, 2987, 3616, +3898, 3032, 3596, +3880, 3087, 3568, +3853, 3151, 3528, +3815, 3224, 3467, +3759, 3307, 3372, +3672, 3398, 3202, +3520, 3497, 2776, +3174, 3602, 0, +0, 3714, 0, +4083, 2936, 3798, +4083, 2936, 3798, +4083, 2936, 3798, +4083, 2936, 3798, +4083, 2936, 3798, +4083, 2936, 3798, +4083, 2937, 3798, +4083, 2937, 3798, +4082, 2938, 3797, +4082, 2939, 3797, +4082, 2940, 3797, +4082, 2942, 3796, +4081, 2944, 3796, +4081, 2947, 3795, +4080, 2951, 3794, +4079, 2956, 3793, +4078, 2962, 3791, +4077, 2971, 3789, +4074, 2982, 3786, +4071, 2997, 3782, +4068, 3016, 3776, +4062, 3041, 3768, +4055, 3071, 3758, +4045, 3109, 3743, +4032, 3156, 3723, +4013, 3211, 3695, +3987, 3276, 3654, +3949, 3350, 3593, +3893, 3434, 3496, +3806, 3526, 3323, +3654, 3626, 2880, +3312, 3732, 0, +4095, 3057, 3927, +4095, 3057, 3927, +4095, 3057, 3927, +4095, 3057, 3927, +4095, 3057, 3927, +4095, 3057, 3927, +4095, 3058, 3927, +4095, 3058, 3927, +4095, 3059, 3927, +4095, 3059, 3927, +4095, 3060, 3926, +4095, 3061, 3926, +4095, 3063, 3926, +4095, 3065, 3925, +4095, 3068, 3924, +4095, 3072, 3923, +4095, 3077, 3922, +4095, 3084, 3920, +4095, 3093, 3918, +4095, 3105, 3915, +4095, 3120, 3911, +4095, 3139, 3905, +4095, 3164, 3897, +4095, 3195, 3887, +4095, 3234, 3872, +4095, 3281, 3852, +4095, 3337, 3823, +4095, 3403, 3782, +4082, 3478, 3721, +4026, 3562, 3623, +3939, 3655, 3446, +3788, 3755, 2989, +4095, 3180, 4057, +4095, 3180, 4057, +4095, 3180, 4057, +4095, 3181, 4057, +4095, 3181, 4057, +4095, 3181, 4057, +4095, 3181, 4057, +4095, 3181, 4057, +4095, 3182, 4057, +4095, 3182, 4057, +4095, 3183, 4056, +4095, 3184, 4056, +4095, 3185, 4056, +4095, 3187, 4055, +4095, 3189, 4055, +4095, 3192, 4054, +4095, 3196, 4053, +4095, 3201, 4052, +4095, 3208, 4050, +4095, 3217, 4048, +4095, 3229, 4045, +4095, 3245, 4040, +4095, 3264, 4035, +4095, 3290, 4027, +4095, 3321, 4016, +4095, 3360, 4002, +4095, 3408, 3981, +4095, 3465, 3953, +4095, 3531, 3911, +4095, 3607, 3849, +4095, 3692, 3751, +4073, 3785, 3572, +0, 1998, 2266, +0, 1999, 2265, +0, 2000, 2264, +0, 2001, 2263, +0, 2003, 2262, +0, 2005, 2260, +0, 2008, 2257, +0, 2012, 2253, +0, 2017, 2248, +0, 2024, 2241, +0, 2033, 2232, +0, 2045, 2219, +0, 2060, 2202, +0, 2079, 2177, +0, 2104, 2143, +0, 2136, 2091, +0, 2175, 2012, +0, 2222, 1879, +0, 2278, 1601, +0, 2344, 0, +0, 2420, 0, +0, 2504, 0, +0, 2597, 0, +0, 2698, 0, +0, 2805, 0, +0, 2917, 0, +0, 3034, 0, +0, 3154, 0, +0, 3277, 0, +0, 3402, 0, +0, 3529, 0, +0, 3657, 0, +0, 1998, 2267, +0, 1999, 2266, +0, 2000, 2265, +0, 2001, 2264, +0, 2003, 2263, +0, 2005, 2260, +0, 2008, 2258, +0, 2012, 2254, +0, 2017, 2249, +0, 2024, 2242, +0, 2033, 2233, +0, 2045, 2220, +0, 2060, 2203, +0, 2080, 2179, +0, 2105, 2144, +0, 2136, 2093, +0, 2175, 2014, +0, 2222, 1881, +0, 2279, 1606, +0, 2344, 0, +0, 2420, 0, +0, 2504, 0, +0, 2597, 0, +0, 2698, 0, +0, 2805, 0, +0, 2917, 0, +0, 3034, 0, +0, 3154, 0, +0, 3277, 0, +0, 3402, 0, +0, 3529, 0, +0, 3657, 0, +0, 1999, 2268, +0, 1999, 2267, +0, 2000, 2266, +0, 2002, 2265, +0, 2003, 2264, +0, 2005, 2262, +0, 2008, 2259, +0, 2012, 2255, +0, 2017, 2250, +0, 2024, 2244, +0, 2033, 2234, +0, 2045, 2222, +0, 2060, 2204, +0, 2080, 2180, +0, 2105, 2145, +0, 2136, 2095, +0, 2175, 2016, +0, 2222, 1884, +0, 2279, 1611, +0, 2345, 0, +0, 2420, 0, +0, 2505, 0, +0, 2598, 0, +0, 2698, 0, +0, 2805, 0, +0, 2917, 0, +0, 3034, 0, +0, 3154, 0, +0, 3277, 0, +0, 3402, 0, +0, 3529, 0, +0, 3657, 0, +0, 1999, 2270, +0, 2000, 2269, +0, 2001, 2268, +0, 2002, 2267, +0, 2004, 2265, +0, 2006, 2263, +0, 2009, 2261, +0, 2013, 2257, +0, 2018, 2252, +0, 2025, 2245, +0, 2034, 2236, +0, 2045, 2224, +0, 2061, 2206, +0, 2080, 2182, +0, 2105, 2148, +0, 2137, 2097, +0, 2175, 2019, +0, 2223, 1888, +0, 2279, 1618, +0, 2345, 0, +0, 2420, 0, +0, 2505, 0, +0, 2598, 0, +0, 2698, 0, +0, 2805, 0, +0, 2917, 0, +0, 3034, 0, +0, 3154, 0, +0, 3277, 0, +0, 3402, 0, +0, 3529, 0, +0, 3657, 0, +0, 2000, 2272, +0, 2000, 2271, +0, 2001, 2270, +0, 2003, 2269, +0, 2004, 2268, +0, 2006, 2266, +0, 2009, 2263, +0, 2013, 2259, +0, 2018, 2254, +0, 2025, 2248, +0, 2034, 2239, +0, 2046, 2226, +0, 2061, 2209, +0, 2081, 2185, +0, 2106, 2151, +0, 2137, 2100, +0, 2176, 2023, +0, 2223, 1893, +0, 2279, 1627, +0, 2345, 0, +0, 2420, 0, +0, 2505, 0, +0, 2598, 0, +0, 2698, 0, +0, 2805, 0, +0, 2917, 0, +0, 3034, 0, +0, 3154, 0, +0, 3277, 0, +0, 3402, 0, +0, 3529, 0, +0, 3657, 0, +0, 2000, 2275, +0, 2001, 2274, +0, 2002, 2273, +0, 2003, 2272, +0, 2005, 2271, +0, 2007, 2269, +0, 2010, 2266, +0, 2014, 2262, +0, 2019, 2258, +0, 2026, 2251, +0, 2035, 2242, +0, 2047, 2230, +0, 2062, 2212, +0, 2081, 2189, +0, 2106, 2155, +0, 2138, 2105, +0, 2176, 2028, +0, 2223, 1900, +0, 2280, 1640, +0, 2345, 0, +0, 2421, 0, +0, 2505, 0, +0, 2598, 0, +0, 2698, 0, +0, 2805, 0, +0, 2917, 0, +0, 3034, 0, +0, 3154, 0, +0, 3277, 0, +0, 3403, 0, +0, 3529, 0, +0, 3658, 0, +0, 2001, 2279, +0, 2002, 2278, +0, 2003, 2277, +0, 2004, 2276, +0, 2006, 2275, +0, 2008, 2273, +0, 2011, 2270, +0, 2015, 2267, +0, 2020, 2262, +0, 2027, 2255, +0, 2036, 2246, +0, 2048, 2234, +0, 2063, 2217, +0, 2082, 2193, +0, 2107, 2160, +0, 2138, 2110, +0, 2177, 2035, +0, 2224, 1909, +0, 2280, 1655, +0, 2346, 0, +0, 2421, 0, +0, 2505, 0, +0, 2598, 0, +0, 2699, 0, +0, 2805, 0, +0, 2918, 0, +0, 3034, 0, +0, 3154, 0, +0, 3277, 0, +0, 3403, 0, +0, 3529, 0, +0, 3658, 0, +0, 2003, 2284, +0, 2003, 2283, +0, 2004, 2283, +0, 2006, 2282, +0, 2007, 2280, +0, 2009, 2278, +0, 2012, 2275, +0, 2016, 2272, +0, 2021, 2267, +0, 2028, 2261, +0, 2037, 2252, +0, 2049, 2240, +0, 2064, 2223, +0, 2083, 2200, +0, 2108, 2166, +0, 2139, 2118, +0, 2178, 2044, +0, 2225, 1921, +0, 2281, 1676, +0, 2347, 277, +0, 2422, 0, +0, 2506, 0, +0, 2599, 0, +0, 2699, 0, +0, 2806, 0, +0, 2918, 0, +0, 3034, 0, +0, 3155, 0, +0, 3278, 0, +0, 3403, 0, +0, 3529, 0, +0, 3658, 0, +0, 2005, 2291, +0, 2005, 2290, +0, 2006, 2290, +0, 2007, 2288, +0, 2009, 2287, +0, 2011, 2285, +0, 2014, 2283, +0, 2018, 2279, +0, 2023, 2274, +0, 2030, 2268, +0, 2039, 2259, +0, 2050, 2247, +0, 2065, 2231, +0, 2085, 2208, +0, 2110, 2175, +0, 2141, 2128, +0, 2179, 2055, +0, 2226, 1936, +0, 2282, 1702, +0, 2347, 650, +0, 2422, 0, +0, 2507, 0, +0, 2599, 0, +0, 2699, 0, +0, 2806, 0, +0, 2918, 0, +0, 3035, 0, +0, 3155, 0, +0, 3278, 0, +0, 3403, 0, +0, 3530, 0, +0, 3658, 0, +0, 2007, 2300, +0, 2008, 2299, +0, 2009, 2299, +0, 2010, 2298, +0, 2011, 2296, +0, 2014, 2294, +0, 2017, 2292, +0, 2020, 2288, +0, 2025, 2284, +0, 2032, 2277, +0, 2041, 2269, +0, 2053, 2257, +0, 2068, 2241, +0, 2087, 2219, +0, 2111, 2187, +0, 2142, 2141, +0, 2181, 2071, +0, 2227, 1955, +0, 2283, 1734, +0, 2349, 904, +0, 2423, 0, +0, 2507, 0, +0, 2600, 0, +0, 2700, 0, +0, 2806, 0, +0, 2918, 0, +0, 3035, 0, +0, 3155, 0, +0, 3278, 0, +0, 3403, 0, +0, 3530, 0, +0, 3658, 0, +0, 2010, 2312, +0, 2011, 2311, +0, 2012, 2311, +0, 2013, 2310, +0, 2015, 2308, +0, 2017, 2306, +0, 2020, 2304, +0, 2023, 2301, +0, 2029, 2296, +0, 2035, 2290, +0, 2044, 2282, +0, 2055, 2270, +0, 2070, 2255, +0, 2090, 2233, +0, 2114, 2202, +0, 2145, 2158, +0, 2183, 2090, +0, 2229, 1980, +0, 2285, 1774, +0, 2350, 1110, +0, 2425, 0, +0, 2508, 0, +0, 2601, 0, +0, 2700, 0, +0, 2807, 0, +0, 2919, 0, +0, 3035, 0, +0, 3155, 0, +0, 3278, 0, +0, 3403, 0, +0, 3530, 0, +0, 3658, 0, +0, 2014, 2327, +0, 2015, 2327, +0, 2016, 2326, +0, 2017, 2325, +0, 2019, 2324, +0, 2021, 2322, +0, 2024, 2320, +0, 2028, 2316, +0, 2033, 2312, +0, 2039, 2306, +0, 2048, 2298, +0, 2059, 2287, +0, 2074, 2272, +0, 2093, 2251, +0, 2117, 2222, +0, 2148, 2179, +0, 2186, 2115, +0, 2232, 2012, +0, 2287, 1823, +0, 2352, 1290, +0, 2426, 0, +0, 2510, 0, +0, 2602, 0, +0, 2701, 0, +0, 2808, 0, +0, 2919, 0, +0, 3036, 0, +0, 3155, 0, +0, 3278, 0, +0, 3403, 0, +0, 3530, 0, +0, 3658, 0, +0, 2020, 2347, +0, 2021, 2347, +0, 2022, 2346, +0, 2023, 2345, +0, 2024, 2344, +0, 2026, 2342, +0, 2029, 2340, +0, 2033, 2337, +0, 2038, 2333, +0, 2044, 2327, +0, 2053, 2319, +0, 2064, 2309, +0, 2079, 2295, +0, 2098, 2275, +0, 2122, 2247, +0, 2152, 2206, +0, 2190, 2146, +0, 2235, 2051, +0, 2290, 1881, +0, 2355, 1455, +0, 2429, 0, +0, 2512, 0, +0, 2603, 0, +0, 2703, 0, +0, 2809, 0, +0, 2920, 0, +0, 3036, 0, +0, 3156, 0, +0, 3279, 0, +0, 3403, 0, +0, 3530, 0, +0, 3658, 0, +423, 2027, 2373, +373, 2028, 2372, +295, 2029, 2371, +163, 2030, 2370, +0, 2032, 2369, +0, 2034, 2368, +0, 2036, 2365, +0, 2040, 2363, +0, 2045, 2359, +0, 2051, 2353, +0, 2060, 2346, +0, 2071, 2336, +0, 2085, 2323, +0, 2104, 2304, +0, 2128, 2278, +0, 2158, 2241, +0, 2195, 2185, +0, 2240, 2098, +0, 2294, 1948, +0, 2358, 1610, +0, 2432, 0, +0, 2514, 0, +0, 2605, 0, +0, 2704, 0, +0, 2810, 0, +0, 2921, 0, +0, 3037, 0, +0, 3157, 0, +0, 3279, 0, +0, 3404, 0, +0, 3530, 0, +0, 3658, 0, +1521, 2037, 2404, +1517, 2038, 2404, +1511, 2039, 2403, +1503, 2040, 2402, +1492, 2041, 2401, +1477, 2043, 2400, +1457, 2046, 2398, +1428, 2050, 2395, +1385, 2054, 2391, +1322, 2061, 2386, +1221, 2069, 2380, +1036, 2080, 2371, +529, 2094, 2358, +0, 2112, 2341, +0, 2135, 2317, +0, 2165, 2283, +0, 2201, 2232, +0, 2246, 2155, +0, 2300, 2025, +0, 2363, 1759, +0, 2436, 0, +0, 2518, 0, +0, 2608, 0, +0, 2707, 0, +0, 2812, 0, +0, 2923, 0, +0, 3038, 0, +0, 3157, 0, +0, 3280, 0, +0, 3404, 0, +0, 3531, 0, +0, 3659, 0, +1883, 2050, 2444, +1881, 2050, 2443, +1879, 2051, 2443, +1875, 2052, 2442, +1870, 2054, 2441, +1864, 2056, 2439, +1855, 2058, 2437, +1843, 2062, 2435, +1827, 2066, 2432, +1804, 2073, 2427, +1771, 2081, 2421, +1724, 2091, 2413, +1651, 2105, 2401, +1531, 2123, 2386, +1296, 2146, 2364, +216, 2174, 2333, +0, 2210, 2288, +0, 2254, 2221, +0, 2307, 2111, +0, 2369, 1903, +0, 2441, 1228, +0, 2522, 0, +0, 2612, 0, +0, 2709, 0, +0, 2814, 0, +0, 2924, 0, +0, 3039, 0, +0, 3158, 0, +0, 3280, 0, +0, 3405, 0, +0, 3531, 0, +0, 3659, 0, +2133, 2066, 2491, +2132, 2067, 2491, +2131, 2067, 2490, +2129, 2068, 2490, +2126, 2070, 2489, +2122, 2072, 2487, +2118, 2074, 2486, +2111, 2078, 2484, +2102, 2082, 2481, +2089, 2088, 2476, +2072, 2096, 2471, +2048, 2106, 2464, +2014, 2120, 2453, +1964, 2137, 2440, +1887, 2159, 2420, +1758, 2187, 2393, +1496, 2222, 2354, +0, 2265, 2296, +0, 2316, 2205, +0, 2377, 2044, +0, 2448, 1663, +0, 2528, 0, +0, 2617, 0, +0, 2713, 0, +0, 2817, 0, +0, 2927, 0, +0, 3041, 0, +0, 3160, 0, +0, 3282, 0, +0, 3406, 0, +0, 3532, 0, +0, 3659, 0, +2337, 2087, 2548, +2337, 2088, 2548, +2336, 2088, 2547, +2334, 2089, 2547, +2333, 2091, 2546, +2330, 2093, 2545, +2327, 2095, 2543, +2323, 2098, 2541, +2317, 2103, 2539, +2310, 2108, 2535, +2299, 2116, 2530, +2285, 2126, 2524, +2265, 2138, 2515, +2237, 2155, 2503, +2196, 2176, 2486, +2135, 2203, 2463, +2039, 2237, 2429, +1866, 2278, 2381, +1429, 2329, 2306, +0, 2388, 2182, +0, 2457, 1936, +0, 2536, 450, +0, 2623, 0, +0, 2718, 0, +0, 2821, 0, +0, 2930, 0, +0, 3044, 0, +0, 3162, 0, +0, 3283, 0, +0, 3407, 0, +0, 3533, 0, +0, 3660, 0, +2517, 2114, 2614, +2516, 2114, 2614, +2515, 2115, 2614, +2515, 2116, 2613, +2513, 2117, 2612, +2512, 2119, 2612, +2510, 2121, 2610, +2507, 2124, 2609, +2503, 2128, 2606, +2498, 2134, 2603, +2491, 2141, 2599, +2482, 2150, 2593, +2469, 2162, 2586, +2451, 2178, 2576, +2426, 2198, 2561, +2391, 2224, 2542, +2338, 2256, 2514, +2257, 2296, 2474, +2119, 2344, 2414, +1828, 2402, 2319, +0, 2469, 2151, +0, 2546, 1735, +0, 2631, 0, +0, 2725, 0, +0, 2827, 0, +0, 2934, 0, +0, 3047, 0, +0, 3164, 0, +0, 3285, 0, +0, 3408, 0, +0, 3534, 0, +0, 3661, 0, +2681, 2147, 2690, +2681, 2147, 2690, +2680, 2148, 2690, +2680, 2149, 2689, +2679, 2150, 2689, +2678, 2152, 2688, +2676, 2154, 2687, +2674, 2157, 2685, +2672, 2161, 2683, +2668, 2166, 2681, +2663, 2172, 2677, +2657, 2181, 2673, +2648, 2192, 2666, +2636, 2207, 2658, +2620, 2226, 2646, +2597, 2250, 2629, +2565, 2281, 2607, +2517, 2319, 2574, +2444, 2365, 2527, +2325, 2420, 2455, +2090, 2485, 2336, +1027, 2559, 2105, +0, 2642, 1114, +0, 2734, 0, +0, 2834, 0, +0, 2940, 0, +0, 3052, 0, +0, 3168, 0, +0, 3288, 0, +0, 3410, 0, +0, 3535, 0, +0, 3662, 0, +2836, 2188, 2775, +2836, 2189, 2775, +2835, 2189, 2775, +2835, 2190, 2774, +2834, 2191, 2774, +2833, 2193, 2773, +2832, 2194, 2772, +2831, 2197, 2771, +2829, 2201, 2770, +2827, 2205, 2767, +2823, 2211, 2765, +2819, 2219, 2761, +2813, 2230, 2755, +2805, 2243, 2748, +2793, 2261, 2739, +2778, 2283, 2725, +2756, 2312, 2707, +2726, 2347, 2681, +2681, 2391, 2644, +2614, 2443, 2590, +2505, 2505, 2505, +2300, 2576, 2358, +1648, 2656, 2036, +0, 2746, 0, +0, 2843, 0, +0, 2947, 0, +0, 3057, 0, +0, 3172, 0, +0, 3291, 0, +0, 3413, 0, +0, 3537, 0, +0, 3664, 0, +2984, 2238, 2869, +2984, 2238, 2868, +2984, 2239, 2868, +2983, 2239, 2868, +2983, 2240, 2868, +2983, 2242, 2867, +2982, 2244, 2866, +2981, 2246, 2865, +2979, 2249, 2864, +2978, 2253, 2862, +2975, 2259, 2860, +2972, 2266, 2857, +2968, 2275, 2853, +2962, 2287, 2847, +2954, 2303, 2839, +2943, 2324, 2828, +2928, 2350, 2814, +2907, 2383, 2794, +2878, 2423, 2765, +2836, 2472, 2724, +2772, 2530, 2662, +2669, 2598, 2563, +2482, 2675, 2386, +1962, 2761, 1922, +0, 2855, 0, +0, 2957, 0, +0, 3065, 0, +0, 3178, 0, +0, 3296, 0, +0, 3417, 0, +0, 3540, 0, +0, 3666, 0, +3128, 2297, 2969, +3128, 2297, 2969, +3128, 2298, 2969, +3128, 2298, 2969, +3127, 2299, 2969, +3127, 2300, 2968, +3126, 2302, 2968, +3126, 2304, 2967, +3125, 2307, 2966, +3123, 2310, 2964, +3122, 2315, 2962, +3119, 2321, 2960, +3116, 2330, 2957, +3112, 2341, 2952, +3106, 2355, 2946, +3099, 2373, 2938, +3088, 2397, 2926, +3073, 2426, 2910, +3053, 2463, 2888, +3025, 2508, 2857, +2984, 2562, 2812, +2922, 2625, 2744, +2825, 2698, 2632, +2649, 2780, 2420, +2195, 2871, 1705, +0, 2970, 0, +0, 3075, 0, +0, 3186, 0, +0, 3302, 0, +0, 3421, 0, +0, 3544, 0, +0, 3668, 0, +3269, 2365, 3077, +3269, 2366, 3077, +3269, 2366, 3076, +3268, 2367, 3076, +3268, 2367, 3076, +3268, 2368, 3076, +3268, 2370, 3075, +3267, 2371, 3075, +3266, 2374, 3074, +3265, 2377, 3073, +3264, 2381, 3071, +3262, 2387, 3069, +3260, 2394, 3067, +3257, 2403, 3063, +3253, 2416, 3058, +3247, 2432, 3052, +3240, 2453, 3043, +3229, 2479, 3031, +3215, 2512, 3014, +3195, 2552, 2990, +3168, 2601, 2957, +3128, 2660, 2908, +3068, 2728, 2834, +2973, 2805, 2710, +2805, 2892, 2463, +2389, 2986, 928, +0, 3088, 0, +0, 3197, 0, +0, 3310, 0, +0, 3427, 0, +0, 3548, 0, +0, 3672, 0, +3407, 2443, 3189, +3407, 2444, 3189, +3407, 2444, 3189, +3407, 2444, 3189, +3407, 2445, 3189, +3407, 2446, 3188, +3406, 2447, 3188, +3406, 2448, 3188, +3405, 2450, 3187, +3405, 2453, 3186, +3404, 2457, 3185, +3403, 2461, 3183, +3401, 2467, 3181, +3399, 2475, 3179, +3396, 2486, 3175, +3392, 2500, 3170, +3386, 2518, 3163, +3379, 2541, 3154, +3368, 2570, 3141, +3354, 2605, 3123, +3335, 2649, 3099, +3308, 2702, 3064, +3268, 2765, 3012, +3210, 2836, 2932, +3117, 2918, 2797, +2954, 3008, 2514, +2563, 3105, 0, +0, 3210, 0, +0, 3320, 0, +0, 3436, 0, +0, 3555, 0, +0, 3677, 0, +3544, 2530, 3306, +3544, 2530, 3306, +3544, 2531, 3306, +3544, 2531, 3306, +3544, 2532, 3306, +3544, 2532, 3305, +3543, 2533, 3305, +3543, 2534, 3305, +3543, 2536, 3304, +3542, 2538, 3304, +3541, 2541, 3303, +3541, 2545, 3302, +3539, 2550, 3300, +3538, 2557, 3298, +3535, 2566, 3295, +3532, 2578, 3291, +3528, 2593, 3286, +3523, 2612, 3279, +3516, 2637, 3269, +3505, 2668, 3256, +3492, 2707, 3238, +3472, 2754, 3212, +3445, 2810, 3175, +3407, 2875, 3121, +3349, 2950, 3037, +3258, 3034, 2892, +3099, 3127, 2574, +2724, 3227, 0, +0, 3334, 0, +0, 3446, 0, +0, 3563, 0, +0, 3683, 0, +3680, 2625, 3427, +3680, 2626, 3426, +3680, 2626, 3426, +3679, 2626, 3426, +3679, 2626, 3426, +3679, 2627, 3426, +3679, 2628, 3426, +3679, 2629, 3426, +3679, 2630, 3425, +3678, 2632, 3425, +3678, 2634, 3424, +3677, 2637, 3423, +3676, 2642, 3422, +3675, 2647, 3420, +3673, 2655, 3418, +3671, 2664, 3415, +3668, 2677, 3411, +3664, 2693, 3406, +3659, 2714, 3399, +3651, 2740, 3389, +3641, 2773, 3375, +3628, 2814, 3356, +3609, 2863, 3330, +3582, 2922, 3292, +3543, 2990, 3236, +3486, 3068, 3147, +3397, 3155, 2994, +3240, 3250, 2644, +2877, 3352, 0, +0, 3460, 0, +0, 3574, 0, +0, 3691, 0, +3814, 2728, 3550, +3814, 2728, 3550, +3814, 2728, 3550, +3814, 2728, 3550, +3814, 2729, 3549, +3814, 2729, 3549, +3814, 2730, 3549, +3814, 2730, 3549, +3814, 2732, 3549, +3813, 2733, 3548, +3813, 2735, 3548, +3812, 2737, 3547, +3812, 2741, 3546, +3811, 2745, 3545, +3810, 2751, 3543, +3808, 2759, 3541, +3806, 2769, 3538, +3803, 2782, 3534, +3799, 2800, 3528, +3793, 2822, 3521, +3786, 2849, 3511, +3776, 2884, 3497, +3763, 2927, 3478, +3744, 2978, 3451, +3717, 3039, 3412, +3679, 3109, 3354, +3622, 3189, 3263, +3534, 3278, 3102, +3379, 3374, 2724, +3024, 3478, 0, +0, 3588, 0, +0, 3702, 0, +3948, 2836, 3675, +3948, 2836, 3675, +3948, 2836, 3675, +3948, 2837, 3675, +3948, 2837, 3675, +3948, 2837, 3675, +3948, 2838, 3675, +3948, 2838, 3674, +3948, 2839, 3674, +3948, 2840, 3674, +3947, 2842, 3673, +3947, 2844, 3673, +3946, 2847, 3672, +3946, 2850, 3671, +3945, 2855, 3670, +3944, 2861, 3668, +3942, 2869, 3666, +3940, 2880, 3663, +3937, 2894, 3659, +3933, 2912, 3653, +3928, 2935, 3646, +3920, 2964, 3636, +3910, 3000, 3622, +3897, 3044, 3602, +3878, 3097, 3574, +3852, 3160, 3535, +3814, 3232, 3475, +3757, 3313, 3382, +3669, 3403, 3216, +3516, 3501, 2812, +3167, 3606, 0, +0, 3716, 0, +4082, 2950, 3802, +4082, 2950, 3802, +4082, 2950, 3802, +4082, 2950, 3802, +4082, 2950, 3802, +4082, 2951, 3802, +4082, 2951, 3802, +4082, 2952, 3801, +4081, 2952, 3801, +4081, 2953, 3801, +4081, 2954, 3801, +4081, 2956, 3800, +4080, 2958, 3800, +4080, 2961, 3799, +4079, 2964, 3798, +4078, 2969, 3797, +4077, 2976, 3795, +4075, 2984, 3793, +4073, 2995, 3790, +4070, 3010, 3786, +4066, 3028, 3780, +4061, 3052, 3772, +4054, 3082, 3762, +4044, 3119, 3748, +4030, 3164, 3728, +4012, 3219, 3700, +3985, 3283, 3660, +3948, 3356, 3599, +3892, 3439, 3504, +3804, 3530, 3334, +3652, 3629, 2909, +3307, 3735, 0, +4095, 3068, 3930, +4095, 3068, 3930, +4095, 3068, 3930, +4095, 3068, 3930, +4095, 3068, 3930, +4095, 3068, 3930, +4095, 3069, 3930, +4095, 3069, 3930, +4095, 3069, 3930, +4095, 3070, 3929, +4095, 3071, 3929, +4095, 3072, 3929, +4095, 3074, 3929, +4095, 3076, 3928, +4095, 3079, 3927, +4095, 3083, 3926, +4095, 3088, 3925, +4095, 3094, 3923, +4095, 3103, 3921, +4095, 3114, 3918, +4095, 3129, 3914, +4095, 3148, 3908, +4095, 3173, 3900, +4095, 3203, 3890, +4095, 3241, 3875, +4095, 3288, 3855, +4095, 3343, 3827, +4095, 3408, 3786, +4081, 3482, 3725, +4025, 3566, 3629, +3938, 3658, 3455, +3786, 3758, 3012, +4095, 3189, 4059, +4095, 3189, 4059, +4095, 3189, 4059, +4095, 3189, 4059, +4095, 3189, 4059, +4095, 3189, 4059, +4095, 3189, 4059, +4095, 3190, 4059, +4095, 3190, 4059, +4095, 3191, 4059, +4095, 3191, 4059, +4095, 3192, 4058, +4095, 3193, 4058, +4095, 3195, 4058, +4095, 3197, 4057, +4095, 3200, 4056, +4095, 3204, 4055, +4095, 3209, 4054, +4095, 3216, 4052, +4095, 3225, 4050, +4095, 3237, 4047, +4095, 3252, 4043, +4095, 3271, 4037, +4095, 3296, 4029, +4095, 3327, 4019, +4095, 3366, 4004, +4095, 3413, 3984, +4095, 3469, 3956, +4095, 3535, 3914, +4095, 3610, 3853, +4095, 3694, 3755, +4071, 3787, 3579, +0, 2129, 2398, +0, 2130, 2397, +0, 2131, 2396, +0, 2132, 2396, +0, 2133, 2394, +0, 2135, 2393, +0, 2137, 2391, +0, 2140, 2388, +0, 2144, 2384, +0, 2149, 2379, +0, 2156, 2373, +0, 2165, 2363, +0, 2176, 2351, +0, 2192, 2333, +0, 2211, 2309, +0, 2236, 2274, +0, 2268, 2222, +0, 2307, 2143, +0, 2354, 2009, +0, 2410, 1731, +0, 2476, 0, +0, 2552, 0, +0, 2636, 0, +0, 2729, 0, +0, 2830, 0, +0, 2937, 0, +0, 3049, 0, +0, 3166, 0, +0, 3286, 0, +0, 3409, 0, +0, 3535, 0, +0, 3661, 0, +0, 2130, 2398, +0, 2130, 2398, +0, 2131, 2397, +0, 2132, 2396, +0, 2133, 2395, +0, 2135, 2394, +0, 2137, 2392, +0, 2140, 2389, +0, 2144, 2385, +0, 2149, 2380, +0, 2156, 2373, +0, 2165, 2364, +0, 2177, 2352, +0, 2192, 2334, +0, 2212, 2310, +0, 2237, 2275, +0, 2268, 2223, +0, 2307, 2144, +0, 2354, 2011, +0, 2411, 1734, +0, 2476, 0, +0, 2552, 0, +0, 2636, 0, +0, 2729, 0, +0, 2830, 0, +0, 2937, 0, +0, 3049, 0, +0, 3166, 0, +0, 3286, 0, +0, 3409, 0, +0, 3535, 0, +0, 3661, 0, +0, 2130, 2399, +0, 2130, 2399, +0, 2131, 2398, +0, 2132, 2397, +0, 2133, 2396, +0, 2135, 2395, +0, 2137, 2393, +0, 2140, 2390, +0, 2144, 2386, +0, 2149, 2381, +0, 2156, 2374, +0, 2165, 2365, +0, 2177, 2353, +0, 2192, 2335, +0, 2212, 2311, +0, 2237, 2276, +0, 2268, 2225, +0, 2307, 2146, +0, 2354, 2013, +0, 2411, 1738, +0, 2477, 0, +0, 2552, 0, +0, 2637, 0, +0, 2730, 0, +0, 2830, 0, +0, 2937, 0, +0, 3049, 0, +0, 3166, 0, +0, 3286, 0, +0, 3409, 0, +0, 3535, 0, +0, 3661, 0, +0, 2130, 2400, +0, 2131, 2400, +0, 2131, 2399, +0, 2132, 2399, +0, 2134, 2397, +0, 2135, 2396, +0, 2138, 2394, +0, 2140, 2391, +0, 2144, 2387, +0, 2150, 2382, +0, 2156, 2376, +0, 2165, 2367, +0, 2177, 2354, +0, 2192, 2337, +0, 2212, 2312, +0, 2237, 2278, +0, 2268, 2227, +0, 2307, 2148, +0, 2354, 2016, +0, 2411, 1743, +0, 2477, 0, +0, 2552, 0, +0, 2637, 0, +0, 2730, 0, +0, 2830, 0, +0, 2937, 0, +0, 3049, 0, +0, 3166, 0, +0, 3286, 0, +0, 3409, 0, +0, 3535, 0, +0, 3661, 0, +0, 2131, 2402, +0, 2131, 2402, +0, 2132, 2401, +0, 2133, 2400, +0, 2134, 2399, +0, 2136, 2398, +0, 2138, 2396, +0, 2141, 2393, +0, 2145, 2389, +0, 2150, 2384, +0, 2157, 2377, +0, 2166, 2368, +0, 2177, 2356, +0, 2193, 2339, +0, 2212, 2314, +0, 2237, 2280, +0, 2269, 2229, +0, 2307, 2151, +0, 2355, 2020, +0, 2411, 1750, +0, 2477, 0, +0, 2552, 0, +0, 2637, 0, +0, 2730, 0, +0, 2830, 0, +0, 2937, 0, +0, 3049, 0, +0, 3166, 0, +0, 3286, 0, +0, 3409, 0, +0, 3535, 0, +0, 3661, 0, +0, 2131, 2404, +0, 2132, 2404, +0, 2132, 2403, +0, 2133, 2402, +0, 2135, 2401, +0, 2136, 2400, +0, 2139, 2398, +0, 2141, 2395, +0, 2145, 2391, +0, 2151, 2387, +0, 2157, 2380, +0, 2166, 2371, +0, 2178, 2358, +0, 2193, 2341, +0, 2213, 2317, +0, 2238, 2283, +0, 2269, 2232, +0, 2308, 2155, +0, 2355, 2025, +0, 2411, 1760, +0, 2477, 0, +0, 2553, 0, +0, 2637, 0, +0, 2730, 0, +0, 2830, 0, +0, 2937, 0, +0, 3049, 0, +0, 3166, 0, +0, 3286, 0, +0, 3409, 0, +0, 3535, 0, +0, 3661, 0, +0, 2132, 2407, +0, 2133, 2407, +0, 2133, 2406, +0, 2134, 2405, +0, 2135, 2404, +0, 2137, 2403, +0, 2139, 2401, +0, 2142, 2398, +0, 2146, 2395, +0, 2151, 2390, +0, 2158, 2383, +0, 2167, 2374, +0, 2179, 2362, +0, 2194, 2345, +0, 2213, 2321, +0, 2238, 2287, +0, 2270, 2237, +0, 2308, 2160, +0, 2356, 2032, +0, 2412, 1772, +0, 2478, 0, +0, 2553, 0, +0, 2637, 0, +0, 2730, 0, +0, 2830, 0, +0, 2937, 0, +0, 3050, 0, +0, 3166, 0, +0, 3286, 0, +0, 3409, 0, +0, 3535, 0, +0, 3661, 0, +0, 2133, 2411, +0, 2134, 2411, +0, 2134, 2410, +0, 2135, 2409, +0, 2136, 2408, +0, 2138, 2407, +0, 2140, 2405, +0, 2143, 2402, +0, 2147, 2399, +0, 2152, 2394, +0, 2159, 2387, +0, 2168, 2378, +0, 2180, 2366, +0, 2195, 2349, +0, 2214, 2325, +0, 2239, 2292, +0, 2270, 2242, +0, 2309, 2167, +0, 2356, 2041, +0, 2412, 1788, +0, 2478, 0, +0, 2553, 0, +0, 2638, 0, +0, 2730, 0, +0, 2831, 0, +0, 2937, 0, +0, 3050, 0, +0, 3166, 0, +0, 3287, 0, +0, 3410, 0, +0, 3535, 0, +0, 3662, 0, +0, 2134, 2417, +0, 2135, 2416, +0, 2136, 2416, +0, 2136, 2415, +0, 2138, 2414, +0, 2139, 2412, +0, 2142, 2410, +0, 2144, 2408, +0, 2148, 2404, +0, 2154, 2399, +0, 2160, 2393, +0, 2169, 2384, +0, 2181, 2372, +0, 2196, 2355, +0, 2215, 2332, +0, 2240, 2299, +0, 2271, 2250, +0, 2310, 2176, +0, 2357, 2053, +0, 2413, 1808, +0, 2479, 410, +0, 2554, 0, +0, 2638, 0, +0, 2731, 0, +0, 2831, 0, +0, 2938, 0, +0, 3050, 0, +0, 3166, 0, +0, 3287, 0, +0, 3410, 0, +0, 3535, 0, +0, 3662, 0, +0, 2136, 2424, +0, 2137, 2423, +0, 2137, 2422, +0, 2138, 2422, +0, 2140, 2421, +0, 2141, 2419, +0, 2143, 2417, +0, 2146, 2415, +0, 2150, 2411, +0, 2155, 2406, +0, 2162, 2400, +0, 2171, 2391, +0, 2182, 2379, +0, 2198, 2363, +0, 2217, 2340, +0, 2242, 2308, +0, 2273, 2260, +0, 2311, 2187, +0, 2358, 2068, +0, 2414, 1834, +0, 2479, 782, +0, 2554, 0, +0, 2639, 0, +0, 2731, 0, +0, 2831, 0, +0, 2938, 0, +0, 3050, 0, +0, 3167, 0, +0, 3287, 0, +0, 3410, 0, +0, 3535, 0, +0, 3662, 0, +0, 2139, 2433, +0, 2139, 2432, +0, 2140, 2432, +0, 2141, 2431, +0, 2142, 2430, +0, 2144, 2428, +0, 2146, 2426, +0, 2149, 2424, +0, 2152, 2420, +0, 2158, 2416, +0, 2164, 2410, +0, 2173, 2401, +0, 2185, 2389, +0, 2200, 2373, +0, 2219, 2351, +0, 2244, 2319, +0, 2274, 2273, +0, 2313, 2203, +0, 2360, 2088, +0, 2415, 1866, +0, 2481, 1036, +0, 2555, 0, +0, 2639, 0, +0, 2732, 0, +0, 2832, 0, +0, 2938, 0, +0, 3050, 0, +0, 3167, 0, +0, 3287, 0, +0, 3410, 0, +0, 3535, 0, +0, 3662, 0, +0, 2142, 2444, +0, 2142, 2444, +0, 2143, 2443, +0, 2144, 2443, +0, 2145, 2442, +0, 2147, 2440, +0, 2149, 2438, +0, 2152, 2436, +0, 2156, 2433, +0, 2161, 2428, +0, 2167, 2422, +0, 2176, 2414, +0, 2188, 2402, +0, 2202, 2387, +0, 2222, 2365, +0, 2246, 2334, +0, 2277, 2290, +0, 2315, 2222, +0, 2362, 2113, +0, 2417, 1906, +0, 2482, 1242, +0, 2557, 0, +0, 2640, 0, +0, 2733, 0, +0, 2833, 0, +0, 2939, 0, +0, 3051, 0, +0, 3167, 0, +0, 3287, 0, +0, 3410, 0, +0, 3535, 0, +0, 3662, 0, +0, 2146, 2460, +0, 2146, 2460, +0, 2147, 2459, +0, 2148, 2458, +0, 2149, 2457, +0, 2151, 2456, +0, 2153, 2454, +0, 2156, 2452, +0, 2160, 2448, +0, 2165, 2444, +0, 2171, 2438, +0, 2180, 2430, +0, 2191, 2419, +0, 2206, 2404, +0, 2225, 2383, +0, 2249, 2354, +0, 2280, 2311, +0, 2318, 2247, +0, 2364, 2144, +0, 2419, 1955, +0, 2484, 1422, +0, 2558, 0, +0, 2642, 0, +0, 2734, 0, +0, 2834, 0, +0, 2940, 0, +0, 3051, 0, +0, 3168, 0, +0, 3288, 0, +0, 3410, 0, +0, 3535, 0, +0, 3662, 0, +0, 2152, 2480, +0, 2152, 2479, +0, 2153, 2479, +0, 2154, 2478, +0, 2155, 2477, +0, 2156, 2476, +0, 2159, 2474, +0, 2161, 2472, +0, 2165, 2469, +0, 2170, 2465, +0, 2177, 2459, +0, 2185, 2451, +0, 2196, 2441, +0, 2211, 2427, +0, 2230, 2407, +0, 2254, 2379, +0, 2284, 2339, +0, 2322, 2278, +0, 2368, 2183, +0, 2422, 2013, +0, 2487, 1587, +0, 2561, 0, +0, 2644, 0, +0, 2735, 0, +0, 2835, 0, +0, 2941, 0, +0, 3052, 0, +0, 3168, 0, +0, 3288, 0, +0, 3411, 0, +0, 3536, 0, +0, 3662, 0, +590, 2159, 2505, +556, 2159, 2505, +505, 2160, 2504, +427, 2161, 2503, +295, 2162, 2503, +26, 2164, 2501, +0, 2166, 2500, +0, 2169, 2498, +0, 2172, 2495, +0, 2177, 2491, +0, 2184, 2485, +0, 2192, 2478, +0, 2203, 2468, +0, 2218, 2455, +0, 2236, 2436, +0, 2260, 2410, +0, 2290, 2373, +0, 2327, 2317, +0, 2372, 2230, +0, 2427, 2080, +0, 2490, 1742, +0, 2564, 0, +0, 2646, 0, +0, 2737, 0, +0, 2836, 0, +0, 2942, 0, +0, 3053, 0, +0, 3169, 0, +0, 3289, 0, +0, 3411, 0, +0, 3536, 0, +0, 3662, 0, +1656, 2169, 2537, +1653, 2169, 2536, +1649, 2170, 2536, +1643, 2171, 2535, +1635, 2172, 2534, +1624, 2173, 2533, +1610, 2175, 2532, +1589, 2178, 2530, +1560, 2182, 2527, +1518, 2186, 2523, +1454, 2193, 2518, +1353, 2201, 2512, +1168, 2212, 2503, +661, 2226, 2490, +0, 2244, 2473, +0, 2268, 2449, +0, 2297, 2415, +0, 2334, 2364, +0, 2378, 2287, +0, 2432, 2157, +0, 2495, 1891, +0, 2568, 0, +0, 2650, 0, +0, 2740, 0, +0, 2839, 0, +0, 2944, 0, +0, 3055, 0, +0, 3170, 0, +0, 3289, 0, +0, 3412, 0, +0, 3536, 0, +0, 3663, 0, +2017, 2181, 2576, +2015, 2182, 2576, +2013, 2182, 2575, +2011, 2183, 2575, +2007, 2184, 2574, +2002, 2186, 2573, +1996, 2188, 2571, +1987, 2190, 2570, +1975, 2194, 2567, +1959, 2199, 2564, +1936, 2205, 2559, +1903, 2213, 2553, +1856, 2223, 2545, +1783, 2237, 2533, +1663, 2255, 2518, +1428, 2278, 2496, +348, 2307, 2465, +0, 2342, 2420, +0, 2386, 2353, +0, 2439, 2243, +0, 2501, 2035, +0, 2573, 1360, +0, 2654, 0, +0, 2744, 0, +0, 2842, 0, +0, 2946, 0, +0, 3056, 0, +0, 3172, 0, +0, 3291, 0, +0, 3413, 0, +0, 3537, 0, +0, 3663, 0, +2266, 2198, 2624, +2266, 2198, 2623, +2264, 2199, 2623, +2263, 2200, 2622, +2261, 2201, 2622, +2258, 2202, 2621, +2255, 2204, 2620, +2250, 2206, 2618, +2243, 2210, 2616, +2234, 2214, 2613, +2222, 2220, 2609, +2204, 2228, 2603, +2180, 2238, 2596, +2146, 2252, 2586, +2096, 2269, 2572, +2019, 2291, 2552, +1890, 2319, 2525, +1628, 2354, 2486, +0, 2397, 2428, +0, 2448, 2337, +0, 2509, 2176, +0, 2580, 1795, +0, 2660, 0, +0, 2749, 0, +0, 2845, 0, +0, 2949, 0, +0, 3059, 0, +0, 3173, 0, +0, 3292, 0, +0, 3414, 0, +0, 3538, 0, +0, 3664, 0, +2470, 2219, 2680, +2469, 2219, 2680, +2469, 2220, 2680, +2468, 2220, 2679, +2466, 2221, 2679, +2465, 2223, 2678, +2462, 2225, 2677, +2459, 2227, 2675, +2455, 2230, 2673, +2450, 2235, 2671, +2442, 2240, 2667, +2431, 2248, 2662, +2417, 2258, 2656, +2397, 2270, 2647, +2369, 2287, 2635, +2328, 2308, 2618, +2267, 2335, 2595, +2171, 2369, 2561, +1998, 2410, 2513, +1561, 2461, 2438, +0, 2520, 2315, +0, 2589, 2068, +0, 2668, 582, +0, 2755, 0, +0, 2851, 0, +0, 2953, 0, +0, 3062, 0, +0, 3176, 0, +0, 3294, 0, +0, 3415, 0, +0, 3539, 0, +0, 3665, 0, +2649, 2245, 2747, +2649, 2246, 2746, +2648, 2246, 2746, +2648, 2247, 2746, +2647, 2248, 2745, +2646, 2249, 2745, +2644, 2251, 2744, +2642, 2253, 2742, +2639, 2256, 2741, +2635, 2260, 2738, +2630, 2266, 2735, +2623, 2273, 2731, +2614, 2282, 2726, +2601, 2294, 2718, +2583, 2310, 2708, +2558, 2330, 2693, +2523, 2356, 2674, +2470, 2388, 2646, +2389, 2428, 2606, +2251, 2476, 2546, +1960, 2534, 2451, +0, 2601, 2283, +0, 2678, 1867, +0, 2763, 0, +0, 2857, 0, +0, 2959, 0, +0, 3066, 0, +0, 3179, 0, +0, 3296, 0, +0, 3417, 0, +0, 3540, 0, +0, 3666, 0, +2813, 2279, 2823, +2813, 2279, 2822, +2813, 2280, 2822, +2812, 2280, 2822, +2812, 2281, 2821, +2811, 2282, 2821, +2810, 2284, 2820, +2808, 2286, 2819, +2806, 2289, 2817, +2804, 2293, 2816, +2800, 2298, 2813, +2796, 2304, 2809, +2789, 2313, 2805, +2780, 2324, 2798, +2769, 2339, 2790, +2752, 2358, 2778, +2729, 2382, 2762, +2697, 2413, 2739, +2649, 2451, 2706, +2576, 2497, 2659, +2457, 2552, 2587, +2222, 2617, 2468, +1159, 2691, 2237, +0, 2774, 1246, +0, 2866, 0, +0, 2966, 0, +0, 3072, 0, +0, 3184, 0, +0, 3300, 0, +0, 3420, 0, +0, 3542, 0, +0, 3667, 0, +2968, 2320, 2907, +2968, 2320, 2907, +2968, 2321, 2907, +2967, 2321, 2907, +2967, 2322, 2906, +2966, 2323, 2906, +2966, 2325, 2905, +2965, 2327, 2904, +2963, 2329, 2903, +2961, 2333, 2902, +2959, 2337, 2900, +2956, 2343, 2897, +2951, 2351, 2893, +2945, 2362, 2888, +2937, 2375, 2880, +2925, 2393, 2871, +2910, 2415, 2857, +2888, 2444, 2839, +2858, 2479, 2813, +2813, 2523, 2776, +2746, 2575, 2722, +2637, 2637, 2637, +2432, 2708, 2490, +1780, 2789, 2168, +0, 2878, 0, +0, 2975, 0, +0, 3079, 0, +0, 3190, 0, +0, 3304, 0, +0, 3423, 0, +0, 3545, 0, +0, 3669, 0, +3116, 2370, 3001, +3116, 2370, 3001, +3116, 2370, 3001, +3116, 2371, 3000, +3116, 2372, 3000, +3115, 2373, 3000, +3115, 2374, 2999, +3114, 2376, 2998, +3113, 2378, 2997, +3112, 2381, 2996, +3110, 2385, 2994, +3107, 2391, 2992, +3104, 2398, 2989, +3100, 2407, 2985, +3094, 2420, 2979, +3086, 2436, 2971, +3075, 2456, 2961, +3060, 2482, 2946, +3039, 2515, 2926, +3010, 2555, 2897, +2968, 2604, 2856, +2904, 2662, 2794, +2802, 2730, 2696, +2614, 2807, 2518, +2094, 2893, 2054, +0, 2987, 0, +0, 3089, 0, +0, 3197, 0, +0, 3310, 0, +0, 3428, 0, +0, 3549, 0, +0, 3672, 0, +3260, 2429, 3102, +3260, 2429, 3102, +3260, 2429, 3101, +3260, 2430, 3101, +3260, 2430, 3101, +3259, 2431, 3101, +3259, 2432, 3100, +3258, 2434, 3100, +3258, 2436, 3099, +3257, 2439, 3098, +3255, 2442, 3096, +3254, 2447, 3095, +3251, 2453, 3092, +3248, 2462, 3089, +3244, 2473, 3084, +3238, 2487, 3078, +3231, 2505, 3070, +3220, 2529, 3058, +3206, 2558, 3042, +3185, 2595, 3021, +3157, 2640, 2989, +3116, 2694, 2944, +3054, 2757, 2876, +2957, 2830, 2764, +2781, 2913, 2552, +2327, 3003, 1837, +0, 3102, 0, +0, 3207, 0, +0, 3318, 0, +0, 3434, 0, +0, 3553, 0, +0, 3676, 0, +3401, 2497, 3209, +3401, 2497, 3209, +3401, 2498, 3209, +3401, 2498, 3208, +3401, 2499, 3208, +3400, 2499, 3208, +3400, 2500, 3208, +3400, 2502, 3207, +3399, 2503, 3207, +3398, 2506, 3206, +3397, 2509, 3205, +3396, 2513, 3203, +3394, 2519, 3201, +3392, 2526, 3199, +3389, 2535, 3195, +3385, 2548, 3190, +3379, 2564, 3184, +3372, 2585, 3175, +3361, 2611, 3163, +3347, 2644, 3146, +3328, 2684, 3123, +3300, 2734, 3089, +3260, 2792, 3040, +3200, 2860, 2966, +3105, 2937, 2842, +2937, 3024, 2595, +2521, 3118, 1060, +0, 3220, 0, +0, 3329, 0, +0, 3442, 0, +0, 3560, 0, +0, 3680, 0, +3539, 2575, 3321, +3539, 2575, 3321, +3539, 2576, 3321, +3539, 2576, 3321, +3539, 2576, 3321, +3539, 2577, 3321, +3539, 2578, 3320, +3538, 2579, 3320, +3538, 2581, 3320, +3537, 2582, 3319, +3537, 2585, 3318, +3536, 2589, 3317, +3535, 2593, 3315, +3533, 2599, 3313, +3531, 2608, 3311, +3528, 2618, 3307, +3524, 2632, 3302, +3518, 2650, 3295, +3511, 2673, 3286, +3500, 2702, 3273, +3486, 2738, 3255, +3467, 2782, 3231, +3440, 2834, 3196, +3400, 2897, 3144, +3342, 2969, 3064, +3249, 3050, 2929, +3086, 3140, 2646, +2695, 3237, 0, +0, 3342, 0, +0, 3452, 0, +0, 3568, 0, +0, 3687, 0, +3676, 2662, 3438, +3676, 2662, 3438, +3676, 2663, 3438, +3676, 2663, 3438, +3676, 2663, 3438, +3676, 2664, 3438, +3676, 2664, 3438, +3675, 2665, 3437, +3675, 2667, 3437, +3675, 2668, 3436, +3674, 2670, 3436, +3674, 2673, 3435, +3673, 2677, 3434, +3671, 2682, 3432, +3670, 2689, 3430, +3668, 2698, 3427, +3665, 2710, 3423, +3661, 2725, 3418, +3655, 2744, 3411, +3648, 2769, 3401, +3638, 2800, 3388, +3624, 2839, 3370, +3605, 2886, 3344, +3578, 2942, 3308, +3539, 3007, 3253, +3481, 3082, 3169, +3390, 3167, 3024, +3231, 3259, 2706, +2856, 3359, 0, +0, 3466, 0, +0, 3578, 0, +0, 3695, 0, +3812, 2757, 3559, +3812, 2757, 3559, +3812, 2758, 3559, +3812, 2758, 3558, +3812, 2758, 3558, +3811, 2759, 3558, +3811, 2759, 3558, +3811, 2760, 3558, +3811, 2761, 3558, +3811, 2762, 3557, +3810, 2764, 3557, +3810, 2766, 3556, +3809, 2770, 3555, +3808, 2774, 3554, +3807, 2779, 3552, +3805, 2787, 3550, +3803, 2796, 3547, +3800, 2809, 3543, +3796, 2825, 3538, +3791, 2846, 3531, +3783, 2872, 3521, +3773, 2905, 3507, +3760, 2946, 3488, +3741, 2996, 3462, +3714, 3054, 3424, +3675, 3122, 3368, +3618, 3200, 3279, +3529, 3287, 3126, +3372, 3382, 2777, +3009, 3484, 0, +0, 3592, 0, +0, 3706, 0, +3946, 2860, 3682, +3946, 2860, 3682, +3946, 2860, 3682, +3946, 2860, 3682, +3946, 2860, 3682, +3946, 2861, 3682, +3946, 2861, 3681, +3946, 2862, 3681, +3946, 2863, 3681, +3946, 2864, 3681, +3945, 2865, 3680, +3945, 2867, 3680, +3944, 2869, 3679, +3944, 2873, 3678, +3943, 2877, 3677, +3942, 2883, 3675, +3940, 2891, 3673, +3938, 2901, 3670, +3935, 2914, 3666, +3931, 2932, 3661, +3926, 2954, 3653, +3918, 2981, 3643, +3908, 3016, 3629, +3895, 3059, 3610, +3876, 3110, 3583, +3849, 3171, 3544, +3811, 3242, 3486, +3754, 3321, 3395, +3666, 3410, 3235, +3511, 3507, 2856, +3156, 3610, 0, +0, 3720, 0, +4080, 2968, 3807, +4080, 2968, 3807, +4080, 2968, 3807, +4080, 2969, 3807, +4080, 2969, 3807, +4080, 2969, 3807, +4080, 2969, 3807, +4080, 2970, 3807, +4080, 2970, 3806, +4080, 2971, 3806, +4080, 2972, 3806, +4079, 2974, 3806, +4079, 2976, 3805, +4078, 2979, 3804, +4078, 2982, 3803, +4077, 2987, 3802, +4076, 2993, 3800, +4074, 3001, 3798, +4072, 3012, 3795, +4069, 3026, 3791, +4065, 3044, 3786, +4060, 3067, 3778, +4052, 3096, 3768, +4042, 3132, 3754, +4029, 3176, 3734, +4010, 3229, 3706, +3984, 3292, 3667, +3946, 3364, 3608, +3889, 3445, 3514, +3801, 3535, 3348, +3648, 3633, 2944, +3299, 3738, 0, +4095, 3082, 3934, +4095, 3082, 3934, +4095, 3082, 3934, +4095, 3082, 3934, +4095, 3082, 3934, +4095, 3082, 3934, +4095, 3083, 3934, +4095, 3083, 3934, +4095, 3084, 3934, +4095, 3084, 3933, +4095, 3085, 3933, +4095, 3086, 3933, +4095, 3088, 3932, +4095, 3090, 3932, +4095, 3093, 3931, +4095, 3096, 3930, +4095, 3101, 3929, +4095, 3108, 3927, +4095, 3116, 3925, +4095, 3127, 3922, +4095, 3142, 3918, +4095, 3160, 3912, +4095, 3184, 3905, +4095, 3214, 3894, +4095, 3251, 3880, +4095, 3297, 3860, +4095, 3351, 3832, +4095, 3415, 3792, +4080, 3488, 3732, +4024, 3571, 3636, +3936, 3662, 3466, +3784, 3761, 3041, +4095, 3200, 4062, +4095, 3200, 4062, +4095, 3200, 4062, +4095, 3200, 4062, +4095, 3200, 4062, +4095, 3200, 4062, +4095, 3200, 4062, +4095, 3201, 4062, +4095, 3201, 4062, +4095, 3202, 4062, +4095, 3202, 4062, +4095, 3203, 4061, +4095, 3204, 4061, +4095, 3206, 4061, +4095, 3208, 4060, +4095, 3211, 4059, +4095, 3215, 4058, +4095, 3220, 4057, +4095, 3226, 4055, +4095, 3235, 4053, +4095, 3247, 4050, +4095, 3261, 4046, +4095, 3280, 4040, +4095, 3305, 4032, +4095, 3335, 4022, +4095, 3374, 4008, +4095, 3420, 3988, +4095, 3475, 3959, +4095, 3540, 3918, +4095, 3614, 3858, +4095, 3698, 3761, +4070, 3790, 3587, +0, 2261, 2529, +0, 2261, 2529, +0, 2262, 2529, +0, 2263, 2528, +0, 2264, 2527, +0, 2265, 2526, +0, 2267, 2524, +0, 2269, 2522, +0, 2272, 2520, +0, 2276, 2516, +0, 2281, 2511, +0, 2288, 2504, +0, 2297, 2495, +0, 2308, 2482, +0, 2324, 2465, +0, 2343, 2440, +0, 2368, 2405, +0, 2400, 2354, +0, 2439, 2274, +0, 2486, 2140, +0, 2542, 1860, +0, 2608, 0, +0, 2684, 0, +0, 2768, 0, +0, 2861, 0, +0, 2962, 0, +0, 3069, 0, +0, 3181, 0, +0, 3298, 0, +0, 3418, 0, +0, 3541, 0, +0, 3667, 0, +0, 2261, 2530, +0, 2262, 2530, +0, 2262, 2529, +0, 2263, 2529, +0, 2264, 2528, +0, 2265, 2527, +0, 2267, 2525, +0, 2269, 2523, +0, 2272, 2520, +0, 2276, 2517, +0, 2281, 2512, +0, 2288, 2505, +0, 2297, 2495, +0, 2309, 2483, +0, 2324, 2465, +0, 2343, 2441, +0, 2368, 2406, +0, 2400, 2354, +0, 2439, 2275, +0, 2486, 2141, +0, 2543, 1863, +0, 2608, 0, +0, 2684, 0, +0, 2769, 0, +0, 2862, 0, +0, 2962, 0, +0, 3069, 0, +0, 3181, 0, +0, 3298, 0, +0, 3418, 0, +0, 3541, 0, +0, 3667, 0, +0, 2261, 2531, +0, 2262, 2530, +0, 2262, 2530, +0, 2263, 2529, +0, 2264, 2528, +0, 2265, 2527, +0, 2267, 2526, +0, 2269, 2524, +0, 2272, 2521, +0, 2276, 2517, +0, 2281, 2512, +0, 2288, 2505, +0, 2297, 2496, +0, 2309, 2484, +0, 2324, 2466, +0, 2344, 2442, +0, 2369, 2407, +0, 2400, 2355, +0, 2439, 2276, +0, 2486, 2143, +0, 2543, 1866, +0, 2609, 0, +0, 2684, 0, +0, 2769, 0, +0, 2862, 0, +0, 2962, 0, +0, 3069, 0, +0, 3181, 0, +0, 3298, 0, +0, 3418, 0, +0, 3541, 0, +0, 3667, 0, +0, 2262, 2532, +0, 2262, 2531, +0, 2263, 2531, +0, 2263, 2530, +0, 2264, 2529, +0, 2265, 2528, +0, 2267, 2527, +0, 2269, 2525, +0, 2272, 2522, +0, 2276, 2518, +0, 2281, 2513, +0, 2288, 2506, +0, 2297, 2497, +0, 2309, 2485, +0, 2324, 2467, +0, 2344, 2443, +0, 2369, 2408, +0, 2400, 2357, +0, 2439, 2278, +0, 2486, 2145, +0, 2543, 1870, +0, 2609, 0, +0, 2684, 0, +0, 2769, 0, +0, 2862, 0, +0, 2962, 0, +0, 3069, 0, +0, 3181, 0, +0, 3298, 0, +0, 3418, 0, +0, 3541, 0, +0, 3667, 0, +0, 2262, 2533, +0, 2262, 2533, +0, 2263, 2532, +0, 2264, 2531, +0, 2264, 2531, +0, 2266, 2529, +0, 2267, 2528, +0, 2270, 2526, +0, 2273, 2523, +0, 2276, 2520, +0, 2282, 2515, +0, 2288, 2508, +0, 2297, 2499, +0, 2309, 2486, +0, 2324, 2469, +0, 2344, 2444, +0, 2369, 2410, +0, 2400, 2359, +0, 2439, 2280, +0, 2487, 2148, +0, 2543, 1875, +0, 2609, 0, +0, 2684, 0, +0, 2769, 0, +0, 2862, 0, +0, 2962, 0, +0, 3069, 0, +0, 3181, 0, +0, 3298, 0, +0, 3418, 0, +0, 3541, 0, +0, 3667, 0, +0, 2262, 2535, +0, 2263, 2534, +0, 2263, 2534, +0, 2264, 2533, +0, 2265, 2532, +0, 2266, 2531, +0, 2268, 2530, +0, 2270, 2528, +0, 2273, 2525, +0, 2277, 2521, +0, 2282, 2516, +0, 2289, 2510, +0, 2298, 2500, +0, 2310, 2488, +0, 2325, 2471, +0, 2344, 2446, +0, 2369, 2412, +0, 2401, 2361, +0, 2440, 2283, +0, 2487, 2152, +0, 2543, 1882, +0, 2609, 0, +0, 2684, 0, +0, 2769, 0, +0, 2862, 0, +0, 2962, 0, +0, 3069, 0, +0, 3181, 0, +0, 3298, 0, +0, 3418, 0, +0, 3541, 0, +0, 3667, 0, +0, 2263, 2537, +0, 2263, 2537, +0, 2264, 2536, +0, 2265, 2535, +0, 2265, 2535, +0, 2267, 2533, +0, 2268, 2532, +0, 2271, 2530, +0, 2274, 2527, +0, 2277, 2524, +0, 2283, 2519, +0, 2289, 2512, +0, 2298, 2503, +0, 2310, 2490, +0, 2325, 2473, +0, 2345, 2449, +0, 2370, 2415, +0, 2401, 2364, +0, 2440, 2287, +0, 2487, 2157, +0, 2543, 1892, +0, 2609, 0, +0, 2685, 0, +0, 2769, 0, +0, 2862, 0, +0, 2962, 0, +0, 3069, 0, +0, 3182, 0, +0, 3298, 0, +0, 3418, 0, +0, 3542, 0, +0, 3667, 0, +0, 2264, 2540, +0, 2264, 2539, +0, 2265, 2539, +0, 2265, 2538, +0, 2266, 2538, +0, 2267, 2536, +0, 2269, 2535, +0, 2271, 2533, +0, 2274, 2530, +0, 2278, 2527, +0, 2283, 2522, +0, 2290, 2515, +0, 2299, 2506, +0, 2311, 2494, +0, 2326, 2477, +0, 2346, 2453, +0, 2370, 2419, +0, 2402, 2369, +0, 2440, 2292, +0, 2488, 2164, +0, 2544, 1904, +0, 2610, 0, +0, 2685, 0, +0, 2769, 0, +0, 2862, 0, +0, 2963, 0, +0, 3069, 0, +0, 3182, 0, +0, 3298, 0, +0, 3419, 0, +0, 3542, 0, +0, 3667, 0, +0, 2265, 2544, +0, 2265, 2543, +0, 2266, 2543, +0, 2266, 2542, +0, 2267, 2542, +0, 2268, 2540, +0, 2270, 2539, +0, 2272, 2537, +0, 2275, 2534, +0, 2279, 2531, +0, 2284, 2526, +0, 2291, 2519, +0, 2300, 2510, +0, 2312, 2498, +0, 2327, 2481, +0, 2346, 2458, +0, 2371, 2424, +0, 2402, 2375, +0, 2441, 2299, +0, 2488, 2173, +0, 2544, 1920, +0, 2610, 0, +0, 2685, 0, +0, 2770, 0, +0, 2862, 0, +0, 2963, 0, +0, 3070, 0, +0, 3182, 0, +0, 3298, 0, +0, 3419, 0, +0, 3542, 0, +0, 3667, 0, +0, 2266, 2549, +0, 2266, 2549, +0, 2267, 2548, +0, 2268, 2548, +0, 2269, 2547, +0, 2270, 2546, +0, 2271, 2544, +0, 2274, 2542, +0, 2277, 2540, +0, 2280, 2536, +0, 2286, 2531, +0, 2292, 2525, +0, 2301, 2516, +0, 2313, 2504, +0, 2328, 2487, +0, 2348, 2464, +0, 2372, 2431, +0, 2403, 2382, +0, 2442, 2308, +0, 2489, 2185, +0, 2545, 1940, +0, 2611, 542, +0, 2686, 0, +0, 2770, 0, +0, 2863, 0, +0, 2963, 0, +0, 3070, 0, +0, 3182, 0, +0, 3299, 0, +0, 3419, 0, +0, 3542, 0, +0, 3667, 0, +0, 2268, 2556, +0, 2268, 2556, +0, 2269, 2555, +0, 2269, 2555, +0, 2270, 2554, +0, 2272, 2553, +0, 2273, 2551, +0, 2275, 2549, +0, 2278, 2547, +0, 2282, 2543, +0, 2287, 2538, +0, 2294, 2532, +0, 2303, 2523, +0, 2315, 2512, +0, 2330, 2495, +0, 2349, 2472, +0, 2374, 2440, +0, 2405, 2392, +0, 2443, 2320, +0, 2490, 2200, +0, 2546, 1966, +0, 2612, 914, +0, 2687, 0, +0, 2771, 0, +0, 2863, 0, +0, 2963, 0, +0, 3070, 0, +0, 3182, 0, +0, 3299, 0, +0, 3419, 0, +0, 3542, 0, +0, 3667, 0, +0, 2270, 2565, +0, 2271, 2565, +0, 2271, 2564, +0, 2272, 2564, +0, 2273, 2563, +0, 2274, 2562, +0, 2276, 2560, +0, 2278, 2559, +0, 2281, 2556, +0, 2285, 2553, +0, 2290, 2548, +0, 2296, 2542, +0, 2305, 2533, +0, 2317, 2522, +0, 2332, 2505, +0, 2351, 2483, +0, 2376, 2451, +0, 2407, 2405, +0, 2445, 2335, +0, 2492, 2220, +0, 2547, 1998, +0, 2613, 1168, +0, 2688, 0, +0, 2772, 0, +0, 2864, 0, +0, 2964, 0, +0, 3071, 0, +0, 3183, 0, +0, 3299, 0, +0, 3419, 0, +0, 3542, 0, +0, 3667, 0, +0, 2273, 2577, +0, 2274, 2577, +0, 2274, 2576, +0, 2275, 2576, +0, 2276, 2575, +0, 2277, 2574, +0, 2279, 2572, +0, 2281, 2571, +0, 2284, 2568, +0, 2288, 2565, +0, 2293, 2560, +0, 2299, 2554, +0, 2308, 2546, +0, 2320, 2535, +0, 2335, 2519, +0, 2354, 2497, +0, 2378, 2467, +0, 2409, 2422, +0, 2447, 2354, +0, 2494, 2245, +0, 2549, 2038, +0, 2614, 1374, +0, 2689, 0, +0, 2773, 0, +0, 2865, 0, +0, 2965, 0, +0, 3071, 0, +0, 3183, 0, +0, 3299, 0, +0, 3419, 0, +0, 3542, 0, +0, 3667, 0, +0, 2278, 2592, +0, 2278, 2592, +0, 2279, 2592, +0, 2279, 2591, +0, 2280, 2590, +0, 2281, 2589, +0, 2283, 2588, +0, 2285, 2586, +0, 2288, 2584, +0, 2292, 2581, +0, 2297, 2576, +0, 2303, 2570, +0, 2312, 2562, +0, 2323, 2551, +0, 2338, 2536, +0, 2357, 2516, +0, 2382, 2486, +0, 2412, 2443, +0, 2450, 2379, +0, 2496, 2276, +0, 2551, 2087, +0, 2616, 1554, +0, 2690, 0, +0, 2774, 0, +0, 2866, 0, +0, 2966, 0, +0, 3072, 0, +0, 3184, 0, +0, 3300, 0, +0, 3420, 0, +0, 3542, 0, +0, 3667, 0, +0, 2283, 2612, +0, 2284, 2612, +0, 2284, 2611, +0, 2285, 2611, +0, 2286, 2610, +0, 2287, 2609, +0, 2289, 2608, +0, 2291, 2606, +0, 2293, 2604, +0, 2297, 2601, +0, 2302, 2597, +0, 2309, 2591, +0, 2317, 2584, +0, 2329, 2573, +0, 2343, 2559, +0, 2362, 2539, +0, 2386, 2511, +0, 2416, 2471, +0, 2454, 2410, +0, 2500, 2315, +0, 2555, 2145, +0, 2619, 1719, +0, 2693, 0, +0, 2776, 0, +0, 2868, 0, +0, 2967, 0, +0, 3073, 0, +0, 3184, 0, +0, 3300, 0, +0, 3420, 0, +0, 3543, 0, +0, 3668, 0, +746, 2291, 2637, +722, 2291, 2637, +688, 2292, 2637, +637, 2292, 2636, +559, 2293, 2636, +428, 2294, 2635, +158, 2296, 2633, +0, 2298, 2632, +0, 2301, 2630, +0, 2304, 2627, +0, 2309, 2623, +0, 2316, 2618, +0, 2324, 2610, +0, 2335, 2601, +0, 2350, 2587, +0, 2368, 2568, +0, 2392, 2542, +0, 2422, 2505, +0, 2459, 2449, +0, 2504, 2362, +0, 2559, 2212, +0, 2622, 1874, +0, 2696, 0, +0, 2778, 0, +0, 2870, 0, +0, 2969, 0, +0, 3074, 0, +0, 3185, 0, +0, 3301, 0, +0, 3421, 0, +0, 3543, 0, +0, 3668, 0, +1791, 2300, 2669, +1789, 2301, 2669, +1785, 2301, 2668, +1781, 2302, 2668, +1775, 2303, 2667, +1767, 2304, 2667, +1757, 2305, 2665, +1742, 2307, 2664, +1721, 2310, 2662, +1692, 2314, 2659, +1650, 2319, 2656, +1586, 2325, 2651, +1485, 2333, 2644, +1300, 2344, 2635, +793, 2358, 2622, +0, 2376, 2605, +0, 2400, 2581, +0, 2429, 2547, +0, 2466, 2496, +0, 2510, 2419, +0, 2564, 2289, +0, 2627, 2023, +0, 2700, 0, +0, 2782, 0, +0, 2872, 0, +0, 2971, 0, +0, 3076, 0, +0, 3187, 0, +0, 3302, 0, +0, 3422, 0, +0, 3544, 0, +0, 3668, 0, +2150, 2313, 2708, +2149, 2313, 2708, +2147, 2314, 2708, +2145, 2314, 2707, +2143, 2315, 2707, +2139, 2316, 2706, +2135, 2318, 2705, +2128, 2320, 2704, +2119, 2323, 2702, +2108, 2326, 2699, +2091, 2331, 2696, +2068, 2337, 2691, +2036, 2345, 2685, +1988, 2356, 2677, +1915, 2369, 2666, +1795, 2387, 2650, +1560, 2410, 2628, +480, 2439, 2597, +0, 2474, 2553, +0, 2518, 2485, +0, 2571, 2375, +0, 2633, 2167, +0, 2705, 1492, +0, 2786, 0, +0, 2876, 0, +0, 2974, 0, +0, 3078, 0, +0, 3189, 0, +0, 3304, 0, +0, 3423, 0, +0, 3545, 0, +0, 3669, 0, +2399, 2329, 2756, +2398, 2330, 2756, +2398, 2330, 2755, +2396, 2331, 2755, +2395, 2332, 2754, +2393, 2333, 2754, +2390, 2334, 2753, +2387, 2336, 2752, +2382, 2339, 2750, +2375, 2342, 2748, +2366, 2346, 2745, +2354, 2352, 2741, +2337, 2360, 2735, +2313, 2370, 2728, +2278, 2384, 2718, +2228, 2401, 2704, +2151, 2423, 2684, +2023, 2451, 2657, +1760, 2486, 2618, +0, 2529, 2560, +0, 2581, 2469, +0, 2642, 2308, +0, 2712, 1927, +0, 2792, 0, +0, 2881, 0, +0, 2978, 0, +0, 3081, 0, +0, 3191, 0, +0, 3306, 0, +0, 3424, 0, +0, 3546, 0, +0, 3670, 0, +2602, 2350, 2813, +2602, 2351, 2812, +2602, 2351, 2812, +2601, 2352, 2812, +2600, 2353, 2811, +2599, 2354, 2811, +2597, 2355, 2810, +2595, 2357, 2809, +2591, 2359, 2807, +2587, 2362, 2805, +2582, 2367, 2803, +2574, 2372, 2799, +2563, 2380, 2794, +2549, 2390, 2788, +2529, 2402, 2779, +2501, 2419, 2767, +2460, 2440, 2750, +2400, 2467, 2727, +2303, 2501, 2694, +2131, 2543, 2645, +1693, 2593, 2570, +0, 2652, 2447, +0, 2721, 2200, +0, 2800, 714, +0, 2887, 0, +0, 2983, 0, +0, 3085, 0, +0, 3194, 0, +0, 3308, 0, +0, 3426, 0, +0, 3547, 0, +0, 3671, 0, +2781, 2377, 2879, +2781, 2377, 2879, +2781, 2378, 2879, +2780, 2378, 2878, +2780, 2379, 2878, +2779, 2380, 2877, +2778, 2381, 2877, +2776, 2383, 2876, +2774, 2385, 2874, +2771, 2388, 2873, +2767, 2392, 2870, +2762, 2398, 2867, +2755, 2405, 2863, +2746, 2414, 2858, +2733, 2426, 2850, +2715, 2442, 2840, +2691, 2462, 2826, +2655, 2488, 2806, +2602, 2520, 2778, +2521, 2560, 2738, +2384, 2609, 2678, +2092, 2666, 2584, +0, 2733, 2415, +0, 2810, 1999, +0, 2895, 0, +0, 2989, 0, +0, 3091, 0, +0, 3198, 0, +0, 3311, 0, +0, 3429, 0, +0, 3549, 0, +0, 3673, 0, +2946, 2411, 2955, +2945, 2411, 2955, +2945, 2411, 2954, +2945, 2412, 2954, +2944, 2412, 2954, +2944, 2413, 2953, +2943, 2414, 2953, +2942, 2416, 2952, +2940, 2418, 2951, +2939, 2421, 2950, +2936, 2425, 2948, +2932, 2430, 2945, +2928, 2436, 2942, +2921, 2445, 2937, +2913, 2456, 2930, +2901, 2471, 2922, +2884, 2490, 2910, +2861, 2514, 2894, +2829, 2545, 2871, +2781, 2583, 2838, +2709, 2629, 2791, +2589, 2684, 2719, +2354, 2749, 2601, +1291, 2823, 2369, +0, 2906, 1378, +0, 2998, 0, +0, 3098, 0, +0, 3204, 0, +0, 3316, 0, +0, 3432, 0, +0, 3552, 0, +0, 3675, 0, +3100, 2452, 3040, +3100, 2452, 3040, +3100, 2452, 3039, +3100, 2453, 3039, +3099, 2453, 3039, +3099, 2454, 3039, +3098, 2455, 3038, +3098, 2457, 3037, +3097, 2459, 3037, +3095, 2461, 3035, +3093, 2465, 3034, +3091, 2469, 3032, +3088, 2475, 3029, +3083, 2483, 3025, +3077, 2494, 3020, +3069, 2507, 3013, +3058, 2525, 3003, +3042, 2547, 2990, +3020, 2576, 2971, +2990, 2611, 2945, +2945, 2655, 2909, +2878, 2707, 2854, +2769, 2769, 2769, +2564, 2840, 2622, +1912, 2921, 2300, +0, 3010, 0, +0, 3107, 0, +0, 3212, 0, +0, 3322, 0, +0, 3437, 0, +0, 3555, 0, +0, 3677, 0, +3249, 2501, 3133, +3248, 2502, 3133, +3248, 2502, 3133, +3248, 2502, 3133, +3248, 2503, 3132, +3248, 2504, 3132, +3247, 2505, 3132, +3247, 2506, 3131, +3246, 2508, 3130, +3245, 2510, 3129, +3244, 2513, 3128, +3242, 2517, 3126, +3239, 2523, 3124, +3236, 2530, 3121, +3232, 2539, 3117, +3226, 2552, 3111, +3218, 2568, 3103, +3207, 2588, 3093, +3192, 2614, 3078, +3172, 2647, 3058, +3142, 2687, 3029, +3100, 2736, 2988, +3036, 2794, 2926, +2934, 2862, 2828, +2746, 2939, 2650, +2226, 3025, 2186, +0, 3120, 0, +0, 3221, 0, +0, 3329, 0, +0, 3443, 0, +0, 3560, 0, +0, 3681, 0, +3392, 2560, 3234, +3392, 2561, 3234, +3392, 2561, 3234, +3392, 2561, 3233, +3392, 2562, 3233, +3392, 2562, 3233, +3391, 2563, 3233, +3391, 2564, 3232, +3391, 2566, 3232, +3390, 2568, 3231, +3389, 2571, 3230, +3388, 2574, 3229, +3386, 2579, 3227, +3383, 2586, 3224, +3380, 2594, 3221, +3376, 2605, 3216, +3370, 2619, 3210, +3363, 2637, 3202, +3352, 2661, 3190, +3338, 2691, 3175, +3317, 2727, 3153, +3289, 2772, 3121, +3248, 2826, 3076, +3187, 2890, 3008, +3089, 2962, 2896, +2913, 3045, 2685, +2459, 3135, 1969, +0, 3234, 0, +0, 3339, 0, +0, 3450, 0, +0, 3566, 0, +0, 3685, 0, +3533, 2629, 3341, +3533, 2629, 3341, +3533, 2629, 3341, +3533, 2630, 3341, +3533, 2630, 3341, +3533, 2631, 3340, +3532, 2631, 3340, +3532, 2632, 3340, +3532, 2634, 3339, +3531, 2636, 3339, +3530, 2638, 3338, +3530, 2641, 3337, +3528, 2645, 3335, +3527, 2651, 3333, +3524, 2658, 3331, +3521, 2668, 3327, +3517, 2680, 3322, +3512, 2696, 3316, +3504, 2717, 3307, +3494, 2743, 3295, +3479, 2776, 3278, +3460, 2817, 3255, +3432, 2866, 3221, +3392, 2924, 3173, +3332, 2992, 3098, +3237, 3069, 2974, +3069, 3156, 2727, +2654, 3251, 1192, +0, 3353, 0, +0, 3461, 0, +0, 3574, 0, +0, 3692, 0, +3672, 2707, 3453, +3672, 2707, 3453, +3671, 2707, 3453, +3671, 2708, 3453, +3671, 2708, 3453, +3671, 2709, 3453, +3671, 2709, 3453, +3671, 2710, 3453, +3671, 2711, 3452, +3670, 2713, 3452, +3670, 2715, 3451, +3669, 2717, 3450, +3668, 2721, 3449, +3667, 2725, 3448, +3665, 2732, 3446, +3663, 2740, 3443, +3660, 2750, 3439, +3656, 2764, 3434, +3650, 2782, 3427, +3643, 2805, 3418, +3633, 2834, 3405, +3619, 2870, 3388, +3599, 2914, 3363, +3572, 2967, 3328, +3532, 3029, 3276, +3474, 3101, 3196, +3382, 3182, 3061, +3218, 3272, 2778, +2827, 3370, 0, +0, 3474, 0, +0, 3585, 0, +0, 3700, 0, +3808, 2794, 3570, +3808, 2794, 3570, +3808, 2794, 3570, +3808, 2795, 3570, +3808, 2795, 3570, +3808, 2795, 3570, +3808, 2796, 3570, +3808, 2796, 3570, +3808, 2797, 3569, +3807, 2799, 3569, +3807, 2800, 3569, +3806, 2803, 3568, +3806, 2805, 3567, +3805, 2809, 3566, +3804, 2814, 3564, +3802, 2821, 3562, +3800, 2830, 3559, +3797, 2842, 3555, +3793, 2857, 3550, +3787, 2876, 3543, +3780, 2901, 3533, +3770, 2932, 3520, +3756, 2971, 3502, +3737, 3018, 3476, +3710, 3074, 3440, +3671, 3139, 3385, +3613, 3214, 3301, +3522, 3299, 3156, +3363, 3391, 2839, +2989, 3492, 0, +0, 3598, 0, +0, 3710, 0, +3944, 2889, 3691, +3944, 2889, 3691, +3944, 2890, 3691, +3944, 2890, 3691, +3944, 2890, 3691, +3944, 2890, 3691, +3944, 2891, 3690, +3943, 2891, 3690, +3943, 2892, 3690, +3943, 2893, 3690, +3943, 2894, 3689, +3942, 2896, 3689, +3942, 2898, 3688, +3941, 2902, 3687, +3940, 2906, 3686, +3939, 2911, 3684, +3937, 2919, 3682, +3935, 2928, 3679, +3932, 2941, 3675, +3928, 2957, 3670, +3923, 2978, 3663, +3916, 3004, 3653, +3906, 3037, 3639, +3892, 3078, 3620, +3873, 3128, 3594, +3846, 3186, 3556, +3808, 3255, 3500, +3750, 3332, 3412, +3661, 3419, 3258, +3504, 3514, 2909, +3141, 3616, 0, +0, 3724, 0, +4079, 2992, 3814, +4079, 2992, 3814, +4078, 2992, 3814, +4078, 2992, 3814, +4078, 2992, 3814, +4078, 2992, 3814, +4078, 2993, 3814, +4078, 2993, 3813, +4078, 2994, 3813, +4078, 2995, 3813, +4078, 2996, 3813, +4077, 2997, 3812, +4077, 2999, 3812, +4077, 3002, 3811, +4076, 3005, 3810, +4075, 3009, 3809, +4074, 3015, 3807, +4072, 3023, 3805, +4070, 3033, 3802, +4067, 3047, 3798, +4063, 3064, 3793, +4058, 3086, 3785, +4050, 3114, 3775, +4040, 3148, 3761, +4027, 3191, 3742, +4008, 3242, 3715, +3981, 3303, 3676, +3943, 3374, 3618, +3886, 3453, 3527, +3798, 3542, 3367, +3643, 3639, 2988, +3288, 3742, 0, +4095, 3100, 3939, +4095, 3100, 3939, +4095, 3100, 3939, +4095, 3101, 3939, +4095, 3101, 3939, +4095, 3101, 3939, +4095, 3101, 3939, +4095, 3101, 3939, +4095, 3102, 3939, +4095, 3103, 3939, +4095, 3103, 3938, +4095, 3105, 3938, +4095, 3106, 3938, +4095, 3108, 3937, +4095, 3111, 3936, +4095, 3114, 3936, +4095, 3119, 3934, +4095, 3125, 3933, +4095, 3133, 3930, +4095, 3144, 3927, +4095, 3158, 3923, +4095, 3176, 3918, +4095, 3199, 3910, +4095, 3228, 3900, +4095, 3264, 3886, +4095, 3308, 3866, +4095, 3361, 3839, +4095, 3424, 3799, +4078, 3496, 3740, +4021, 3577, 3646, +3933, 3667, 3480, +3780, 3765, 3076, +4095, 3214, 4066, +4095, 3214, 4066, +4095, 3214, 4066, +4095, 3214, 4066, +4095, 3214, 4066, +4095, 3214, 4066, +4095, 3215, 4066, +4095, 3215, 4066, +4095, 3215, 4066, +4095, 3216, 4066, +4095, 3216, 4066, +4095, 3217, 4065, +4095, 3218, 4065, +4095, 3220, 4065, +4095, 3222, 4064, +4095, 3225, 4063, +4095, 3229, 4062, +4095, 3233, 4061, +4095, 3240, 4059, +4095, 3248, 4057, +4095, 3259, 4054, +4095, 3274, 4050, +4095, 3292, 4044, +4095, 3316, 4037, +4095, 3346, 4026, +4095, 3383, 4012, +4095, 3429, 3992, +4095, 3483, 3964, +4095, 3547, 3924, +4095, 3620, 3864, +4095, 3703, 3768, +4068, 3794, 3598, +0, 2393, 2661, +0, 2393, 2661, +0, 2393, 2661, +0, 2394, 2660, +0, 2395, 2660, +0, 2396, 2659, +0, 2397, 2658, +0, 2399, 2656, +0, 2401, 2654, +0, 2404, 2651, +0, 2408, 2648, +0, 2413, 2643, +0, 2420, 2636, +0, 2429, 2627, +0, 2440, 2614, +0, 2456, 2596, +0, 2475, 2572, +0, 2500, 2537, +0, 2532, 2485, +0, 2571, 2406, +0, 2618, 2271, +0, 2674, 1991, +0, 2740, 0, +0, 2816, 0, +0, 2901, 0, +0, 2994, 0, +0, 3094, 0, +0, 3201, 0, +0, 3313, 0, +0, 3430, 0, +0, 3550, 0, +0, 3673, 0, +0, 2393, 2662, +0, 2393, 2662, +0, 2394, 2661, +0, 2394, 2661, +0, 2395, 2660, +0, 2396, 2659, +0, 2397, 2658, +0, 2399, 2657, +0, 2401, 2655, +0, 2404, 2652, +0, 2408, 2648, +0, 2413, 2643, +0, 2420, 2636, +0, 2429, 2627, +0, 2441, 2614, +0, 2456, 2597, +0, 2475, 2572, +0, 2500, 2537, +0, 2532, 2486, +0, 2571, 2406, +0, 2618, 2272, +0, 2675, 1992, +0, 2740, 0, +0, 2816, 0, +0, 2901, 0, +0, 2994, 0, +0, 3094, 0, +0, 3201, 0, +0, 3313, 0, +0, 3430, 0, +0, 3550, 0, +0, 3673, 0, +0, 2393, 2662, +0, 2393, 2662, +0, 2394, 2662, +0, 2394, 2661, +0, 2395, 2661, +0, 2396, 2660, +0, 2397, 2659, +0, 2399, 2657, +0, 2401, 2655, +0, 2404, 2652, +0, 2408, 2649, +0, 2413, 2644, +0, 2420, 2637, +0, 2429, 2628, +0, 2441, 2615, +0, 2456, 2597, +0, 2476, 2573, +0, 2501, 2538, +0, 2532, 2487, +0, 2571, 2407, +0, 2618, 2273, +0, 2675, 1995, +0, 2741, 0, +0, 2816, 0, +0, 2901, 0, +0, 2994, 0, +0, 3094, 0, +0, 3201, 0, +0, 3313, 0, +0, 3430, 0, +0, 3550, 0, +0, 3673, 0, +0, 2393, 2663, +0, 2393, 2663, +0, 2394, 2662, +0, 2394, 2662, +0, 2395, 2661, +0, 2396, 2661, +0, 2397, 2659, +0, 2399, 2658, +0, 2401, 2656, +0, 2404, 2653, +0, 2408, 2649, +0, 2413, 2644, +0, 2420, 2638, +0, 2429, 2628, +0, 2441, 2616, +0, 2456, 2598, +0, 2476, 2574, +0, 2501, 2539, +0, 2532, 2488, +0, 2571, 2408, +0, 2618, 2275, +0, 2675, 1998, +0, 2741, 0, +0, 2816, 0, +0, 2901, 0, +0, 2994, 0, +0, 3094, 0, +0, 3201, 0, +0, 3313, 0, +0, 3430, 0, +0, 3550, 0, +0, 3674, 0, +0, 2393, 2664, +0, 2394, 2664, +0, 2394, 2663, +0, 2395, 2663, +0, 2395, 2662, +0, 2396, 2661, +0, 2398, 2660, +0, 2399, 2659, +0, 2401, 2657, +0, 2404, 2654, +0, 2408, 2650, +0, 2413, 2645, +0, 2420, 2639, +0, 2429, 2629, +0, 2441, 2617, +0, 2456, 2599, +0, 2476, 2575, +0, 2501, 2540, +0, 2532, 2489, +0, 2571, 2410, +0, 2618, 2277, +0, 2675, 2002, +0, 2741, 0, +0, 2816, 0, +0, 2901, 0, +0, 2994, 0, +0, 3094, 0, +0, 3201, 0, +0, 3313, 0, +0, 3430, 0, +0, 3550, 0, +0, 3674, 0, +0, 2394, 2665, +0, 2394, 2665, +0, 2394, 2665, +0, 2395, 2664, +0, 2396, 2664, +0, 2397, 2663, +0, 2398, 2662, +0, 2399, 2660, +0, 2402, 2658, +0, 2405, 2655, +0, 2409, 2652, +0, 2414, 2647, +0, 2421, 2640, +0, 2430, 2631, +0, 2441, 2618, +0, 2457, 2601, +0, 2476, 2576, +0, 2501, 2542, +0, 2533, 2491, +0, 2571, 2412, +0, 2619, 2280, +0, 2675, 2007, +0, 2741, 0, +0, 2816, 0, +0, 2901, 0, +0, 2994, 0, +0, 3094, 0, +0, 3201, 0, +0, 3314, 0, +0, 3430, 0, +0, 3551, 0, +0, 3674, 0, +0, 2394, 2667, +0, 2394, 2667, +0, 2395, 2666, +0, 2395, 2666, +0, 2396, 2665, +0, 2397, 2664, +0, 2398, 2663, +0, 2400, 2662, +0, 2402, 2660, +0, 2405, 2657, +0, 2409, 2653, +0, 2414, 2648, +0, 2421, 2642, +0, 2430, 2633, +0, 2442, 2620, +0, 2457, 2603, +0, 2477, 2579, +0, 2501, 2544, +0, 2533, 2493, +0, 2572, 2415, +0, 2619, 2284, +0, 2675, 2014, +0, 2741, 0, +0, 2816, 0, +0, 2901, 0, +0, 2994, 0, +0, 3094, 0, +0, 3201, 0, +0, 3314, 0, +0, 3430, 0, +0, 3551, 0, +0, 3674, 0, +0, 2395, 2669, +0, 2395, 2669, +0, 2395, 2669, +0, 2396, 2668, +0, 2397, 2668, +0, 2398, 2667, +0, 2399, 2666, +0, 2400, 2664, +0, 2403, 2662, +0, 2406, 2659, +0, 2410, 2656, +0, 2415, 2651, +0, 2422, 2644, +0, 2430, 2635, +0, 2442, 2623, +0, 2457, 2605, +0, 2477, 2581, +0, 2502, 2547, +0, 2533, 2497, +0, 2572, 2419, +0, 2619, 2289, +0, 2676, 2024, +0, 2741, 0, +0, 2817, 0, +0, 2901, 0, +0, 2994, 0, +0, 3095, 0, +0, 3201, 0, +0, 3314, 0, +0, 3430, 0, +0, 3551, 0, +0, 3674, 0, +0, 2395, 2672, +0, 2396, 2672, +0, 2396, 2672, +0, 2397, 2671, +0, 2397, 2670, +0, 2398, 2670, +0, 2400, 2669, +0, 2401, 2667, +0, 2403, 2665, +0, 2406, 2662, +0, 2410, 2659, +0, 2415, 2654, +0, 2422, 2647, +0, 2431, 2638, +0, 2443, 2626, +0, 2458, 2609, +0, 2478, 2585, +0, 2503, 2551, +0, 2534, 2501, +0, 2573, 2424, +0, 2620, 2296, +0, 2676, 2036, +0, 2742, 0, +0, 2817, 0, +0, 2901, 0, +0, 2994, 0, +0, 3095, 0, +0, 3202, 0, +0, 3314, 0, +0, 3430, 0, +0, 3551, 0, +0, 3674, 0, +0, 2397, 2676, +0, 2397, 2676, +0, 2397, 2676, +0, 2398, 2675, +0, 2398, 2674, +0, 2399, 2674, +0, 2401, 2673, +0, 2402, 2671, +0, 2404, 2669, +0, 2407, 2666, +0, 2411, 2663, +0, 2416, 2658, +0, 2423, 2651, +0, 2432, 2642, +0, 2444, 2630, +0, 2459, 2613, +0, 2478, 2590, +0, 2503, 2556, +0, 2535, 2507, +0, 2573, 2431, +0, 2620, 2305, +0, 2677, 2052, +0, 2742, 0, +0, 2817, 0, +0, 2902, 0, +0, 2995, 0, +0, 3095, 0, +0, 3202, 0, +0, 3314, 0, +0, 3431, 0, +0, 3551, 0, +0, 3674, 0, +0, 2398, 2681, +0, 2398, 2681, +0, 2399, 2681, +0, 2399, 2680, +0, 2400, 2680, +0, 2401, 2679, +0, 2402, 2678, +0, 2404, 2676, +0, 2406, 2674, +0, 2409, 2672, +0, 2413, 2668, +0, 2418, 2663, +0, 2424, 2657, +0, 2433, 2648, +0, 2445, 2636, +0, 2460, 2619, +0, 2480, 2596, +0, 2504, 2563, +0, 2536, 2514, +0, 2574, 2440, +0, 2621, 2317, +0, 2677, 2072, +0, 2743, 674, +0, 2818, 0, +0, 2902, 0, +0, 2995, 0, +0, 3095, 0, +0, 3202, 0, +0, 3314, 0, +0, 3431, 0, +0, 3551, 0, +0, 3674, 0, +0, 2400, 2688, +0, 2400, 2688, +0, 2400, 2688, +0, 2401, 2687, +0, 2402, 2687, +0, 2402, 2686, +0, 2404, 2685, +0, 2405, 2683, +0, 2408, 2681, +0, 2410, 2679, +0, 2414, 2675, +0, 2419, 2671, +0, 2426, 2664, +0, 2435, 2656, +0, 2447, 2644, +0, 2462, 2627, +0, 2481, 2604, +0, 2506, 2572, +0, 2537, 2524, +0, 2575, 2452, +0, 2622, 2332, +0, 2678, 2098, +0, 2744, 1046, +0, 2819, 0, +0, 2903, 0, +0, 2995, 0, +0, 3096, 0, +0, 3202, 0, +0, 3314, 0, +0, 3431, 0, +0, 3551, 0, +0, 3674, 0, +0, 2402, 2697, +0, 2402, 2697, +0, 2403, 2697, +0, 2403, 2696, +0, 2404, 2696, +0, 2405, 2695, +0, 2406, 2694, +0, 2408, 2693, +0, 2410, 2691, +0, 2413, 2688, +0, 2417, 2685, +0, 2422, 2680, +0, 2428, 2674, +0, 2437, 2665, +0, 2449, 2654, +0, 2464, 2638, +0, 2483, 2615, +0, 2508, 2583, +0, 2539, 2537, +0, 2577, 2467, +0, 2624, 2352, +0, 2680, 2130, +0, 2745, 1300, +0, 2820, 0, +0, 2904, 0, +0, 2996, 0, +0, 3096, 0, +0, 3203, 0, +0, 3315, 0, +0, 3431, 0, +0, 3551, 0, +0, 3674, 0, +0, 2405, 2709, +0, 2406, 2709, +0, 2406, 2709, +0, 2406, 2708, +0, 2407, 2708, +0, 2408, 2707, +0, 2409, 2706, +0, 2411, 2705, +0, 2413, 2703, +0, 2416, 2700, +0, 2420, 2697, +0, 2425, 2692, +0, 2431, 2686, +0, 2440, 2678, +0, 2452, 2667, +0, 2467, 2651, +0, 2486, 2629, +0, 2510, 2599, +0, 2541, 2554, +0, 2579, 2486, +0, 2626, 2377, +0, 2681, 2170, +0, 2746, 1506, +0, 2821, 0, +0, 2905, 0, +0, 2997, 0, +0, 3097, 0, +0, 3203, 0, +0, 3315, 0, +0, 3431, 0, +0, 3551, 0, +0, 3674, 0, +0, 2410, 2725, +0, 2410, 2724, +0, 2410, 2724, +0, 2411, 2724, +0, 2411, 2723, +0, 2412, 2722, +0, 2413, 2721, +0, 2415, 2720, +0, 2417, 2718, +0, 2420, 2716, +0, 2424, 2713, +0, 2429, 2708, +0, 2435, 2702, +0, 2444, 2694, +0, 2456, 2684, +0, 2470, 2669, +0, 2489, 2648, +0, 2514, 2618, +0, 2544, 2575, +0, 2582, 2511, +0, 2628, 2408, +0, 2684, 2219, +0, 2748, 1686, +0, 2823, 0, +0, 2906, 0, +0, 2998, 0, +0, 3098, 0, +0, 3204, 0, +0, 3316, 0, +0, 3432, 0, +0, 3552, 0, +0, 3675, 0, +0, 2415, 2744, +0, 2415, 2744, +0, 2416, 2744, +0, 2416, 2744, +0, 2417, 2743, +0, 2418, 2742, +0, 2419, 2741, +0, 2421, 2740, +0, 2423, 2738, +0, 2426, 2736, +0, 2429, 2733, +0, 2434, 2729, +0, 2441, 2723, +0, 2449, 2716, +0, 2461, 2705, +0, 2475, 2691, +0, 2494, 2671, +0, 2518, 2643, +0, 2548, 2603, +0, 2586, 2543, +0, 2632, 2447, +0, 2687, 2277, +0, 2751, 1851, +0, 2825, 0, +0, 2908, 0, +0, 3000, 0, +0, 3099, 0, +0, 3205, 0, +0, 3316, 0, +0, 3432, 0, +0, 3552, 0, +0, 3675, 0, +896, 2423, 2770, +879, 2423, 2769, +854, 2423, 2769, +820, 2424, 2769, +769, 2424, 2768, +691, 2425, 2768, +560, 2426, 2767, +290, 2428, 2766, +0, 2430, 2764, +0, 2433, 2762, +0, 2436, 2759, +0, 2441, 2755, +0, 2448, 2750, +0, 2456, 2742, +0, 2467, 2733, +0, 2482, 2719, +0, 2500, 2701, +0, 2524, 2674, +0, 2554, 2637, +0, 2591, 2581, +0, 2636, 2494, +0, 2691, 2344, +0, 2755, 2007, +0, 2828, 0, +0, 2910, 0, +0, 3002, 0, +0, 3101, 0, +0, 3206, 0, +0, 3317, 0, +0, 3433, 0, +0, 3553, 0, +0, 3675, 0, +1925, 2432, 2801, +1923, 2432, 2801, +1921, 2433, 2801, +1917, 2433, 2801, +1913, 2434, 2800, +1907, 2435, 2799, +1899, 2436, 2799, +1889, 2438, 2798, +1874, 2440, 2796, +1853, 2442, 2794, +1824, 2446, 2791, +1782, 2451, 2788, +1718, 2457, 2783, +1617, 2465, 2776, +1432, 2476, 2767, +925, 2490, 2754, +0, 2508, 2737, +0, 2532, 2713, +0, 2561, 2679, +0, 2598, 2628, +0, 2642, 2551, +0, 2696, 2421, +0, 2759, 2155, +0, 2832, 0, +0, 2914, 0, +0, 3004, 0, +0, 3103, 0, +0, 3208, 0, +0, 3319, 0, +0, 3434, 0, +0, 3554, 0, +0, 3676, 0, +2283, 2445, 2841, +2282, 2445, 2840, +2281, 2445, 2840, +2279, 2446, 2840, +2278, 2447, 2839, +2275, 2447, 2839, +2271, 2449, 2838, +2267, 2450, 2837, +2260, 2452, 2836, +2252, 2455, 2834, +2240, 2458, 2831, +2223, 2463, 2828, +2200, 2469, 2823, +2168, 2477, 2817, +2120, 2488, 2809, +2047, 2501, 2798, +1927, 2519, 2782, +1692, 2542, 2760, +612, 2571, 2729, +0, 2607, 2685, +0, 2650, 2617, +0, 2703, 2507, +0, 2765, 2299, +0, 2837, 1624, +0, 2918, 0, +0, 3008, 0, +0, 3106, 0, +0, 3210, 0, +0, 3321, 0, +0, 3436, 0, +0, 3555, 0, +0, 3677, 0, +2532, 2461, 2888, +2531, 2462, 2888, +2531, 2462, 2888, +2530, 2462, 2887, +2529, 2463, 2887, +2527, 2464, 2887, +2525, 2465, 2886, +2522, 2466, 2885, +2519, 2468, 2884, +2514, 2471, 2882, +2507, 2474, 2880, +2498, 2479, 2877, +2486, 2484, 2873, +2469, 2492, 2867, +2445, 2503, 2860, +2411, 2516, 2850, +2360, 2533, 2836, +2283, 2555, 2817, +2155, 2583, 2789, +1893, 2618, 2750, +0, 2661, 2692, +0, 2713, 2601, +0, 2774, 2440, +0, 2844, 2059, +0, 2924, 0, +0, 3013, 0, +0, 3110, 0, +0, 3213, 0, +0, 3323, 0, +0, 3438, 0, +0, 3556, 0, +0, 3678, 0, +2735, 2482, 2945, +2735, 2483, 2945, +2734, 2483, 2945, +2734, 2483, 2944, +2733, 2484, 2944, +2732, 2485, 2944, +2731, 2486, 2943, +2729, 2487, 2942, +2727, 2489, 2941, +2724, 2491, 2940, +2719, 2495, 2938, +2714, 2499, 2935, +2706, 2504, 2931, +2696, 2512, 2927, +2681, 2522, 2920, +2661, 2535, 2911, +2633, 2551, 2899, +2592, 2572, 2882, +2532, 2599, 2859, +2435, 2633, 2826, +2263, 2675, 2777, +1825, 2725, 2702, +0, 2784, 2579, +0, 2853, 2332, +0, 2932, 847, +0, 3019, 0, +0, 3115, 0, +0, 3217, 0, +0, 3326, 0, +0, 3440, 0, +0, 3558, 0, +0, 3679, 0, +2914, 2509, 3011, +2913, 2509, 3011, +2913, 2510, 3011, +2913, 2510, 3011, +2912, 2510, 3010, +2912, 2511, 3010, +2911, 2512, 3009, +2910, 2513, 3009, +2908, 2515, 3008, +2906, 2517, 3007, +2903, 2521, 3005, +2900, 2525, 3003, +2894, 2530, 3000, +2888, 2537, 2995, +2878, 2546, 2990, +2865, 2558, 2982, +2848, 2574, 2972, +2823, 2594, 2958, +2787, 2620, 2938, +2735, 2652, 2910, +2653, 2692, 2870, +2516, 2741, 2810, +2224, 2798, 2716, +0, 2865, 2547, +0, 2942, 2131, +0, 3028, 0, +0, 3122, 0, +0, 3223, 0, +0, 3331, 0, +0, 3443, 0, +0, 3561, 0, +0, 3681, 0, +3078, 2542, 3087, +3078, 2543, 3087, +3077, 2543, 3087, +3077, 2543, 3087, +3077, 2544, 3086, +3076, 2544, 3086, +3076, 2545, 3086, +3075, 2547, 3085, +3074, 2548, 3084, +3073, 2550, 3083, +3071, 2553, 3082, +3068, 2557, 3080, +3064, 2562, 3077, +3060, 2569, 3074, +3053, 2577, 3069, +3045, 2589, 3063, +3033, 2603, 3054, +3016, 2622, 3042, +2993, 2647, 3026, +2961, 2677, 3003, +2913, 2715, 2971, +2841, 2761, 2923, +2721, 2816, 2851, +2486, 2881, 2733, +1423, 2955, 2501, +0, 3039, 1510, +0, 3130, 0, +0, 3230, 0, +0, 3336, 0, +0, 3448, 0, +0, 3564, 0, +0, 3684, 0, +3232, 2584, 3172, +3232, 2584, 3172, +3232, 2584, 3172, +3232, 2584, 3172, +3232, 2585, 3171, +3232, 2585, 3171, +3231, 2586, 3171, +3231, 2587, 3170, +3230, 2589, 3170, +3229, 2591, 3169, +3227, 2593, 3167, +3226, 2597, 3166, +3223, 2601, 3164, +3220, 2607, 3161, +3215, 2615, 3157, +3209, 2626, 3152, +3201, 2639, 3145, +3190, 2657, 3135, +3174, 2680, 3122, +3152, 2708, 3103, +3122, 2743, 3078, +3077, 2787, 3041, +3010, 2839, 2986, +2901, 2901, 2901, +2696, 2972, 2754, +2044, 3053, 2432, +0, 3142, 0, +0, 3239, 0, +0, 3344, 0, +0, 3454, 0, +0, 3569, 0, +0, 3687, 0, +3381, 2633, 3265, +3381, 2634, 3265, +3381, 2634, 3265, +3380, 2634, 3265, +3380, 2634, 3265, +3380, 2635, 3265, +3380, 2636, 3264, +3379, 2637, 3264, +3379, 2638, 3263, +3378, 2640, 3263, +3377, 2642, 3262, +3376, 2645, 3260, +3374, 2649, 3259, +3372, 2655, 3256, +3368, 2662, 3253, +3364, 2671, 3249, +3358, 2684, 3243, +3350, 2700, 3235, +3339, 2720, 3225, +3324, 2746, 3210, +3304, 2779, 3190, +3274, 2819, 3161, +3232, 2868, 3120, +3168, 2926, 3058, +3066, 2994, 2960, +2879, 3071, 2782, +2358, 3157, 2318, +0, 3252, 0, +0, 3353, 0, +0, 3461, 0, +0, 3575, 0, +0, 3692, 0, +3525, 2692, 3366, +3525, 2693, 3366, +3524, 2693, 3366, +3524, 2693, 3366, +3524, 2693, 3366, +3524, 2694, 3365, +3524, 2695, 3365, +3524, 2695, 3365, +3523, 2697, 3364, +3523, 2698, 3364, +3522, 2700, 3363, +3521, 2703, 3362, +3520, 2707, 3361, +3518, 2711, 3359, +3516, 2718, 3356, +3512, 2726, 3353, +3508, 2737, 3348, +3503, 2751, 3342, +3495, 2770, 3334, +3484, 2793, 3322, +3470, 2823, 3307, +3450, 2859, 3285, +3421, 2904, 3254, +3380, 2958, 3208, +3319, 3022, 3140, +3221, 3095, 3028, +3045, 3177, 2817, +2591, 3268, 2101, +0, 3366, 0, +0, 3471, 0, +0, 3582, 0, +0, 3698, 0, +3665, 2761, 3473, +3665, 2761, 3473, +3665, 2761, 3473, +3665, 2762, 3473, +3665, 2762, 3473, +3665, 2762, 3473, +3665, 2763, 3472, +3665, 2764, 3472, +3664, 2765, 3472, +3664, 2766, 3471, +3663, 2768, 3471, +3663, 2770, 3470, +3662, 2773, 3469, +3660, 2777, 3467, +3659, 2783, 3465, +3656, 2790, 3463, +3653, 2800, 3459, +3649, 2812, 3454, +3644, 2828, 3448, +3636, 2849, 3439, +3626, 2875, 3427, +3611, 2908, 3410, +3592, 2949, 3387, +3564, 2998, 3353, +3524, 3056, 3305, +3464, 3124, 3230, +3370, 3202, 3106, +3201, 3288, 2859, +2786, 3383, 1324, +0, 3485, 0, +0, 3593, 0, +0, 3706, 0, +3804, 2839, 3586, +3804, 2839, 3586, +3804, 2839, 3586, +3804, 2840, 3585, +3803, 2840, 3585, +3803, 2840, 3585, +3803, 2841, 3585, +3803, 2841, 3585, +3803, 2842, 3585, +3803, 2843, 3584, +3802, 2845, 3584, +3802, 2847, 3583, +3801, 2849, 3582, +3800, 2853, 3581, +3799, 2858, 3580, +3797, 2864, 3578, +3795, 2872, 3575, +3792, 2882, 3571, +3788, 2896, 3566, +3782, 2914, 3559, +3775, 2937, 3550, +3765, 2966, 3537, +3751, 3002, 3520, +3731, 3046, 3495, +3704, 3099, 3460, +3665, 3161, 3408, +3606, 3233, 3328, +3514, 3314, 3193, +3351, 3404, 2910, +2960, 3502, 0, +0, 3606, 0, +0, 3717, 0, +3940, 2926, 3703, +3940, 2926, 3702, +3940, 2926, 3702, +3940, 2926, 3702, +3940, 2927, 3702, +3940, 2927, 3702, +3940, 2927, 3702, +3940, 2928, 3702, +3940, 2929, 3702, +3940, 2930, 3702, +3939, 2931, 3701, +3939, 2932, 3701, +3938, 2935, 3700, +3938, 2938, 3699, +3937, 2941, 3698, +3936, 2947, 3696, +3934, 2953, 3694, +3932, 2962, 3691, +3929, 2974, 3687, +3925, 2989, 3682, +3919, 3008, 3675, +3912, 3033, 3666, +3902, 3064, 3652, +3888, 3103, 3634, +3869, 3150, 3608, +3842, 3206, 3572, +3803, 3271, 3517, +3745, 3347, 3433, +3654, 3431, 3288, +3495, 3523, 2971, +3121, 3624, 0, +0, 3730, 0, +4076, 3021, 3823, +4076, 3021, 3823, +4076, 3021, 3823, +4076, 3022, 3823, +4076, 3022, 3823, +4076, 3022, 3823, +4076, 3022, 3823, +4076, 3023, 3822, +4076, 3023, 3822, +4075, 3024, 3822, +4075, 3025, 3822, +4075, 3026, 3821, +4075, 3028, 3821, +4074, 3031, 3820, +4073, 3034, 3819, +4072, 3038, 3818, +4071, 3043, 3817, +4070, 3051, 3814, +4067, 3060, 3811, +4064, 3073, 3807, +4060, 3089, 3802, +4055, 3110, 3795, +4048, 3136, 3785, +4038, 3170, 3771, +4024, 3210, 3753, +4005, 3260, 3726, +3978, 3318, 3688, +3940, 3387, 3632, +3883, 3464, 3544, +3793, 3551, 3390, +3636, 3646, 3041, +3273, 3748, 0, +4095, 3124, 3946, +4095, 3124, 3946, +4095, 3124, 3946, +4095, 3124, 3946, +4095, 3124, 3946, +4095, 3124, 3946, +4095, 3125, 3946, +4095, 3125, 3946, +4095, 3125, 3946, +4095, 3126, 3945, +4095, 3127, 3945, +4095, 3128, 3945, +4095, 3129, 3945, +4095, 3131, 3944, +4095, 3134, 3943, +4095, 3137, 3942, +4095, 3142, 3941, +4095, 3147, 3940, +4095, 3155, 3937, +4095, 3165, 3934, +4095, 3179, 3930, +4095, 3196, 3925, +4095, 3218, 3917, +4095, 3246, 3907, +4095, 3280, 3893, +4095, 3323, 3874, +4095, 3375, 3847, +4095, 3435, 3808, +4075, 3506, 3750, +4019, 3586, 3659, +3930, 3674, 3499, +3775, 3771, 3120, +4095, 3232, 4071, +4095, 3232, 4071, +4095, 3232, 4071, +4095, 3232, 4071, +4095, 3233, 4071, +4095, 3233, 4071, +4095, 3233, 4071, +4095, 3233, 4071, +4095, 3234, 4071, +4095, 3234, 4071, +4095, 3235, 4071, +4095, 3236, 4070, +4095, 3237, 4070, +4095, 3238, 4070, +4095, 3240, 4069, +4095, 3243, 4069, +4095, 3246, 4068, +4095, 3251, 4066, +4095, 3257, 4065, +4095, 3265, 4062, +4095, 3276, 4059, +4095, 3290, 4055, +4095, 3308, 4050, +4095, 3331, 4042, +4095, 3360, 4032, +4095, 3396, 4018, +4095, 3440, 3998, +4095, 3493, 3971, +4095, 3556, 3931, +4095, 3628, 3872, +4095, 3709, 3778, +4065, 3799, 3612, +0, 2525, 2793, +0, 2525, 2793, +0, 2525, 2793, +0, 2525, 2793, +0, 2526, 2792, +0, 2527, 2792, +0, 2528, 2791, +0, 2529, 2790, +0, 2531, 2788, +0, 2533, 2786, +0, 2536, 2783, +0, 2540, 2779, +0, 2545, 2774, +0, 2552, 2768, +0, 2561, 2758, +0, 2572, 2746, +0, 2588, 2728, +0, 2607, 2704, +0, 2632, 2668, +0, 2664, 2617, +0, 2703, 2537, +0, 2750, 2402, +0, 2807, 2121, +0, 2873, 0, +0, 2948, 0, +0, 3033, 0, +0, 3126, 0, +0, 3226, 0, +0, 3333, 0, +0, 3445, 0, +0, 3562, 0, +0, 3683, 0, +0, 2525, 2794, +0, 2525, 2794, +0, 2525, 2793, +0, 2526, 2793, +0, 2526, 2792, +0, 2527, 2792, +0, 2528, 2791, +0, 2529, 2790, +0, 2531, 2788, +0, 2533, 2786, +0, 2536, 2783, +0, 2540, 2780, +0, 2545, 2775, +0, 2552, 2768, +0, 2561, 2759, +0, 2573, 2746, +0, 2588, 2728, +0, 2607, 2704, +0, 2632, 2669, +0, 2664, 2617, +0, 2703, 2538, +0, 2750, 2403, +0, 2807, 2123, +0, 2873, 0, +0, 2948, 0, +0, 3033, 0, +0, 3126, 0, +0, 3226, 0, +0, 3333, 0, +0, 3446, 0, +0, 3562, 0, +0, 3683, 0, +0, 2525, 2794, +0, 2525, 2794, +0, 2525, 2794, +0, 2526, 2793, +0, 2526, 2793, +0, 2527, 2792, +0, 2528, 2791, +0, 2529, 2790, +0, 2531, 2789, +0, 2533, 2787, +0, 2536, 2784, +0, 2540, 2780, +0, 2545, 2775, +0, 2552, 2768, +0, 2561, 2759, +0, 2573, 2746, +0, 2588, 2729, +0, 2608, 2704, +0, 2633, 2669, +0, 2664, 2618, +0, 2703, 2538, +0, 2750, 2404, +0, 2807, 2124, +0, 2873, 0, +0, 2948, 0, +0, 3033, 0, +0, 3126, 0, +0, 3226, 0, +0, 3333, 0, +0, 3446, 0, +0, 3562, 0, +0, 3683, 0, +0, 2525, 2795, +0, 2525, 2794, +0, 2525, 2794, +0, 2526, 2794, +0, 2526, 2793, +0, 2527, 2793, +0, 2528, 2792, +0, 2529, 2791, +0, 2531, 2789, +0, 2533, 2787, +0, 2536, 2784, +0, 2540, 2781, +0, 2545, 2776, +0, 2552, 2769, +0, 2561, 2760, +0, 2573, 2747, +0, 2588, 2730, +0, 2608, 2705, +0, 2633, 2670, +0, 2664, 2619, +0, 2703, 2539, +0, 2750, 2405, +0, 2807, 2127, +0, 2873, 0, +0, 2948, 0, +0, 3033, 0, +0, 3126, 0, +0, 3226, 0, +0, 3333, 0, +0, 3446, 0, +0, 3562, 0, +0, 3683, 0, +0, 2525, 2795, +0, 2525, 2795, +0, 2526, 2795, +0, 2526, 2795, +0, 2526, 2794, +0, 2527, 2793, +0, 2528, 2793, +0, 2529, 2791, +0, 2531, 2790, +0, 2533, 2788, +0, 2536, 2785, +0, 2540, 2781, +0, 2545, 2776, +0, 2552, 2770, +0, 2561, 2760, +0, 2573, 2748, +0, 2588, 2730, +0, 2608, 2706, +0, 2633, 2671, +0, 2664, 2620, +0, 2703, 2540, +0, 2750, 2407, +0, 2807, 2130, +0, 2873, 0, +0, 2948, 0, +0, 3033, 0, +0, 3126, 0, +0, 3226, 0, +0, 3333, 0, +0, 3446, 0, +0, 3562, 0, +0, 3683, 0, +0, 2525, 2796, +0, 2526, 2796, +0, 2526, 2796, +0, 2526, 2795, +0, 2527, 2795, +0, 2527, 2794, +0, 2528, 2794, +0, 2530, 2792, +0, 2531, 2791, +0, 2533, 2789, +0, 2536, 2786, +0, 2540, 2782, +0, 2546, 2777, +0, 2552, 2771, +0, 2561, 2761, +0, 2573, 2749, +0, 2588, 2731, +0, 2608, 2707, +0, 2633, 2672, +0, 2664, 2621, +0, 2703, 2542, +0, 2751, 2409, +0, 2807, 2134, +0, 2873, 0, +0, 2948, 0, +0, 3033, 0, +0, 3126, 0, +0, 3226, 0, +0, 3333, 0, +0, 3446, 0, +0, 3562, 0, +0, 3683, 0, +0, 2526, 2798, +0, 2526, 2797, +0, 2526, 2797, +0, 2527, 2797, +0, 2527, 2796, +0, 2528, 2796, +0, 2529, 2795, +0, 2530, 2794, +0, 2532, 2792, +0, 2534, 2790, +0, 2537, 2787, +0, 2541, 2784, +0, 2546, 2779, +0, 2553, 2772, +0, 2562, 2763, +0, 2573, 2750, +0, 2589, 2733, +0, 2608, 2709, +0, 2633, 2674, +0, 2665, 2623, +0, 2703, 2544, +0, 2751, 2412, +0, 2807, 2139, +0, 2873, 0, +0, 2948, 0, +0, 3033, 0, +0, 3126, 0, +0, 3226, 0, +0, 3333, 0, +0, 3446, 0, +0, 3562, 0, +0, 3683, 0, +0, 2526, 2799, +0, 2526, 2799, +0, 2527, 2799, +0, 2527, 2798, +0, 2527, 2798, +0, 2528, 2797, +0, 2529, 2797, +0, 2530, 2795, +0, 2532, 2794, +0, 2534, 2792, +0, 2537, 2789, +0, 2541, 2785, +0, 2546, 2780, +0, 2553, 2774, +0, 2562, 2765, +0, 2574, 2752, +0, 2589, 2735, +0, 2609, 2711, +0, 2634, 2676, +0, 2665, 2625, +0, 2704, 2547, +0, 2751, 2416, +0, 2807, 2146, +0, 2873, 0, +0, 2949, 0, +0, 3033, 0, +0, 3126, 0, +0, 3226, 0, +0, 3333, 0, +0, 3446, 0, +0, 3562, 0, +0, 3683, 0, +0, 2527, 2801, +0, 2527, 2801, +0, 2527, 2801, +0, 2528, 2801, +0, 2528, 2800, +0, 2529, 2800, +0, 2530, 2799, +0, 2531, 2798, +0, 2533, 2796, +0, 2535, 2794, +0, 2538, 2791, +0, 2542, 2788, +0, 2547, 2783, +0, 2554, 2776, +0, 2563, 2767, +0, 2574, 2755, +0, 2590, 2737, +0, 2609, 2713, +0, 2634, 2679, +0, 2665, 2629, +0, 2704, 2551, +0, 2751, 2421, +0, 2808, 2156, +0, 2873, 0, +0, 2949, 0, +0, 3033, 0, +0, 3126, 0, +0, 3227, 0, +0, 3333, 0, +0, 3446, 0, +0, 3562, 0, +0, 3683, 0, +0, 2527, 2804, +0, 2528, 2804, +0, 2528, 2804, +0, 2528, 2804, +0, 2529, 2803, +0, 2529, 2803, +0, 2530, 2802, +0, 2532, 2801, +0, 2533, 2799, +0, 2536, 2797, +0, 2538, 2794, +0, 2542, 2791, +0, 2548, 2786, +0, 2554, 2779, +0, 2563, 2770, +0, 2575, 2758, +0, 2590, 2741, +0, 2610, 2717, +0, 2635, 2683, +0, 2666, 2633, +0, 2705, 2556, +0, 2752, 2428, +0, 2808, 2168, +0, 2874, 0, +0, 2949, 0, +0, 3034, 0, +0, 3126, 0, +0, 3227, 0, +0, 3334, 0, +0, 3446, 0, +0, 3563, 0, +0, 3683, 0, +0, 2528, 2808, +0, 2529, 2808, +0, 2529, 2808, +0, 2529, 2808, +0, 2530, 2807, +0, 2531, 2807, +0, 2531, 2806, +0, 2533, 2805, +0, 2534, 2803, +0, 2537, 2801, +0, 2539, 2799, +0, 2543, 2795, +0, 2549, 2790, +0, 2555, 2783, +0, 2564, 2775, +0, 2576, 2762, +0, 2591, 2745, +0, 2611, 2722, +0, 2635, 2688, +0, 2667, 2639, +0, 2705, 2563, +0, 2752, 2437, +0, 2809, 2184, +0, 2874, 0, +0, 2949, 0, +0, 3034, 0, +0, 3127, 0, +0, 3227, 0, +0, 3334, 0, +0, 3446, 0, +0, 3563, 0, +0, 3683, 0, +0, 2530, 2814, +0, 2530, 2813, +0, 2530, 2813, +0, 2531, 2813, +0, 2531, 2812, +0, 2532, 2812, +0, 2533, 2811, +0, 2534, 2810, +0, 2536, 2808, +0, 2538, 2806, +0, 2541, 2804, +0, 2545, 2800, +0, 2550, 2795, +0, 2557, 2789, +0, 2565, 2780, +0, 2577, 2768, +0, 2592, 2751, +0, 2612, 2728, +0, 2636, 2695, +0, 2668, 2646, +0, 2706, 2572, +0, 2753, 2449, +0, 2809, 2204, +0, 2875, 806, +0, 2950, 0, +0, 3034, 0, +0, 3127, 0, +0, 3227, 0, +0, 3334, 0, +0, 3446, 0, +0, 3563, 0, +0, 3683, 0, +0, 2532, 2821, +0, 2532, 2820, +0, 2532, 2820, +0, 2532, 2820, +0, 2533, 2819, +0, 2534, 2819, +0, 2535, 2818, +0, 2536, 2817, +0, 2537, 2815, +0, 2540, 2814, +0, 2543, 2811, +0, 2546, 2807, +0, 2552, 2803, +0, 2558, 2796, +0, 2567, 2788, +0, 2579, 2776, +0, 2594, 2759, +0, 2613, 2736, +0, 2638, 2704, +0, 2669, 2656, +0, 2708, 2584, +0, 2754, 2464, +0, 2810, 2230, +0, 2876, 1179, +0, 2951, 0, +0, 3035, 0, +0, 3128, 0, +0, 3228, 0, +0, 3334, 0, +0, 3446, 0, +0, 3563, 0, +0, 3683, 0, +0, 2534, 2830, +0, 2534, 2829, +0, 2534, 2829, +0, 2535, 2829, +0, 2535, 2828, +0, 2536, 2828, +0, 2537, 2827, +0, 2538, 2826, +0, 2540, 2825, +0, 2542, 2823, +0, 2545, 2820, +0, 2549, 2817, +0, 2554, 2812, +0, 2561, 2806, +0, 2569, 2797, +0, 2581, 2786, +0, 2596, 2770, +0, 2615, 2747, +0, 2640, 2716, +0, 2671, 2669, +0, 2709, 2599, +0, 2756, 2484, +0, 2812, 2263, +0, 2877, 1432, +0, 2952, 0, +0, 3036, 0, +0, 3128, 0, +0, 3228, 0, +0, 3335, 0, +0, 3447, 0, +0, 3563, 0, +0, 3683, 0, +0, 2537, 2842, +0, 2537, 2841, +0, 2538, 2841, +0, 2538, 2841, +0, 2539, 2840, +0, 2539, 2840, +0, 2540, 2839, +0, 2541, 2838, +0, 2543, 2837, +0, 2545, 2835, +0, 2548, 2832, +0, 2552, 2829, +0, 2557, 2824, +0, 2564, 2818, +0, 2572, 2810, +0, 2584, 2799, +0, 2599, 2783, +0, 2618, 2761, +0, 2642, 2731, +0, 2673, 2686, +0, 2711, 2618, +0, 2758, 2509, +0, 2813, 2303, +0, 2878, 1638, +0, 2953, 0, +0, 3037, 0, +0, 3129, 0, +0, 3229, 0, +0, 3335, 0, +0, 3447, 0, +0, 3564, 0, +0, 3684, 0, +0, 2541, 2857, +0, 2542, 2857, +0, 2542, 2857, +0, 2542, 2856, +0, 2543, 2856, +0, 2543, 2855, +0, 2544, 2854, +0, 2546, 2854, +0, 2547, 2852, +0, 2549, 2850, +0, 2552, 2848, +0, 2556, 2845, +0, 2561, 2840, +0, 2568, 2835, +0, 2576, 2827, +0, 2588, 2816, +0, 2602, 2801, +0, 2621, 2780, +0, 2646, 2750, +0, 2676, 2708, +0, 2714, 2643, +0, 2760, 2540, +0, 2816, 2351, +0, 2880, 1818, +0, 2955, 0, +0, 3038, 0, +0, 3130, 0, +0, 3230, 0, +0, 3336, 0, +0, 3448, 0, +0, 3564, 0, +0, 3684, 0, +0, 2547, 2877, +0, 2547, 2877, +0, 2547, 2876, +0, 2548, 2876, +0, 2548, 2876, +0, 2549, 2875, +0, 2550, 2874, +0, 2551, 2873, +0, 2553, 2872, +0, 2555, 2870, +0, 2558, 2868, +0, 2561, 2865, +0, 2566, 2861, +0, 2573, 2855, +0, 2581, 2848, +0, 2593, 2837, +0, 2607, 2823, +0, 2626, 2803, +0, 2650, 2775, +0, 2680, 2735, +0, 2718, 2675, +0, 2764, 2579, +0, 2819, 2409, +0, 2883, 1983, +0, 2957, 0, +0, 3040, 0, +0, 3132, 0, +0, 3231, 0, +0, 3337, 0, +0, 3449, 0, +0, 3565, 0, +0, 3684, 0, +1040, 2554, 2902, +1028, 2555, 2902, +1011, 2555, 2902, +986, 2555, 2901, +952, 2556, 2901, +901, 2556, 2900, +823, 2557, 2900, +692, 2558, 2899, +422, 2560, 2898, +0, 2562, 2896, +0, 2565, 2894, +0, 2569, 2891, +0, 2573, 2887, +0, 2580, 2882, +0, 2588, 2875, +0, 2599, 2865, +0, 2614, 2851, +0, 2632, 2833, +0, 2656, 2806, +0, 2686, 2769, +0, 2723, 2713, +0, 2768, 2627, +0, 2823, 2476, +0, 2887, 2139, +0, 2960, 0, +0, 3043, 0, +0, 3134, 0, +0, 3233, 0, +0, 3338, 0, +0, 3450, 0, +0, 3565, 0, +0, 3685, 0, +2058, 2564, 2934, +2057, 2564, 2933, +2055, 2565, 2933, +2053, 2565, 2933, +2050, 2565, 2933, +2045, 2566, 2932, +2039, 2567, 2932, +2032, 2568, 2931, +2021, 2570, 2930, +2006, 2572, 2928, +1985, 2574, 2926, +1956, 2578, 2923, +1914, 2583, 2920, +1850, 2589, 2915, +1749, 2597, 2908, +1564, 2608, 2899, +1057, 2622, 2887, +0, 2641, 2869, +0, 2664, 2845, +0, 2693, 2811, +0, 2730, 2761, +0, 2775, 2683, +0, 2828, 2553, +0, 2891, 2287, +0, 2964, 0, +0, 3046, 0, +0, 3137, 0, +0, 3235, 0, +0, 3340, 0, +0, 3451, 0, +0, 3566, 0, +0, 3686, 0, +2415, 2577, 2973, +2415, 2577, 2973, +2414, 2577, 2972, +2413, 2578, 2972, +2412, 2578, 2972, +2410, 2579, 2971, +2407, 2580, 2971, +2404, 2581, 2970, +2399, 2582, 2969, +2392, 2584, 2968, +2384, 2587, 2966, +2372, 2590, 2963, +2355, 2595, 2960, +2332, 2601, 2956, +2300, 2609, 2949, +2252, 2620, 2941, +2179, 2633, 2930, +2059, 2651, 2914, +1824, 2674, 2892, +744, 2703, 2862, +0, 2739, 2817, +0, 2783, 2749, +0, 2835, 2639, +0, 2898, 2431, +0, 2969, 1756, +0, 3050, 0, +0, 3140, 0, +0, 3238, 0, +0, 3342, 0, +0, 3453, 0, +0, 3568, 0, +0, 3687, 0, +2664, 2593, 3020, +2664, 2593, 3020, +2663, 2594, 3020, +2663, 2594, 3020, +2662, 2594, 3020, +2661, 2595, 3019, +2659, 2596, 3019, +2657, 2597, 3018, +2654, 2598, 3017, +2651, 2600, 3016, +2646, 2603, 3014, +2639, 2606, 3012, +2630, 2611, 3009, +2618, 2617, 3005, +2601, 2624, 2999, +2577, 2635, 2992, +2543, 2648, 2982, +2493, 2665, 2968, +2416, 2687, 2949, +2287, 2715, 2922, +2025, 2750, 2883, +0, 2793, 2824, +0, 2845, 2733, +0, 2906, 2572, +0, 2976, 2191, +0, 3056, 0, +0, 3145, 0, +0, 3242, 0, +0, 3345, 0, +0, 3455, 0, +0, 3570, 0, +0, 3688, 0, +2867, 2614, 3077, +2867, 2614, 3077, +2867, 2615, 3077, +2866, 2615, 3077, +2866, 2615, 3076, +2865, 2616, 3076, +2864, 2617, 3076, +2863, 2618, 3075, +2861, 2619, 3074, +2859, 2621, 3073, +2856, 2623, 3072, +2851, 2627, 3070, +2846, 2631, 3067, +2838, 2637, 3063, +2828, 2644, 3059, +2813, 2654, 3052, +2793, 2667, 3043, +2765, 2683, 3031, +2724, 2705, 3014, +2664, 2731, 2991, +2567, 2765, 2958, +2395, 2807, 2909, +1957, 2857, 2835, +0, 2916, 2711, +0, 2985, 2465, +0, 3064, 979, +0, 3151, 0, +0, 3247, 0, +0, 3350, 0, +0, 3458, 0, +0, 3572, 0, +0, 3690, 0, +3046, 2641, 3143, +3046, 2641, 3143, +3046, 2641, 3143, +3045, 2642, 3143, +3045, 2642, 3143, +3044, 2643, 3142, +3044, 2643, 3142, +3043, 2644, 3142, +3042, 2646, 3141, +3040, 2647, 3140, +3038, 2650, 3139, +3035, 2653, 3137, +3032, 2657, 3135, +3027, 2662, 3132, +3020, 2669, 3127, +3010, 2678, 3122, +2997, 2691, 3114, +2980, 2706, 3104, +2955, 2727, 3090, +2919, 2752, 3070, +2867, 2785, 3042, +2786, 2824, 3002, +2648, 2873, 2942, +2356, 2930, 2848, +0, 2997, 2679, +0, 3074, 2263, +0, 3160, 0, +0, 3254, 0, +0, 3355, 0, +0, 3463, 0, +0, 3576, 0, +0, 3693, 0, +3210, 2674, 3219, +3210, 2674, 3219, +3210, 2675, 3219, +3210, 2675, 3219, +3209, 2675, 3219, +3209, 2676, 3218, +3209, 2677, 3218, +3208, 2677, 3218, +3207, 2679, 3217, +3206, 2680, 3216, +3205, 2682, 3215, +3203, 2685, 3214, +3200, 2689, 3212, +3197, 2694, 3209, +3192, 2701, 3206, +3185, 2709, 3201, +3177, 2721, 3195, +3165, 2735, 3186, +3148, 2754, 3174, +3126, 2779, 3158, +3093, 2809, 3135, +3045, 2847, 3103, +2973, 2893, 3055, +2853, 2948, 2983, +2618, 3013, 2865, +1555, 3087, 2634, +0, 3171, 1643, +0, 3263, 0, +0, 3362, 0, +0, 3468, 0, +0, 3580, 0, +0, 3696, 0, +3365, 2716, 3304, +3365, 2716, 3304, +3364, 2716, 3304, +3364, 2716, 3304, +3364, 2716, 3304, +3364, 2717, 3303, +3364, 2718, 3303, +3363, 2718, 3303, +3363, 2719, 3302, +3362, 2721, 3302, +3361, 2723, 3301, +3359, 2725, 3300, +3358, 2729, 3298, +3355, 2734, 3296, +3352, 2740, 3293, +3347, 2748, 3289, +3341, 2758, 3284, +3333, 2772, 3277, +3322, 2789, 3267, +3306, 2812, 3254, +3285, 2840, 3235, +3254, 2876, 3210, +3209, 2919, 3173, +3142, 2971, 3118, +3033, 3033, 3033, +2828, 3104, 2887, +2176, 3185, 2564, +0, 3274, 0, +0, 3372, 0, +0, 3476, 0, +0, 3586, 0, +0, 3701, 0, +3513, 2765, 3397, +3513, 2765, 3397, +3513, 2766, 3397, +3513, 2766, 3397, +3513, 2766, 3397, +3512, 2767, 3397, +3512, 2767, 3397, +3512, 2768, 3396, +3511, 2769, 3396, +3511, 2770, 3395, +3510, 2772, 3395, +3509, 2774, 3394, +3508, 2777, 3392, +3506, 2781, 3391, +3504, 2787, 3388, +3500, 2794, 3385, +3496, 2804, 3381, +3490, 2816, 3375, +3482, 2832, 3367, +3471, 2852, 3357, +3457, 2878, 3342, +3436, 2911, 3322, +3406, 2951, 3293, +3364, 3000, 3252, +3300, 3058, 3190, +3198, 3126, 3092, +3011, 3203, 2914, +2491, 3289, 2450, +0, 3384, 0, +0, 3486, 0, +0, 3594, 0, +0, 3707, 0, +3657, 2824, 3498, +3657, 2824, 3498, +3657, 2825, 3498, +3657, 2825, 3498, +3656, 2825, 3498, +3656, 2825, 3498, +3656, 2826, 3497, +3656, 2827, 3497, +3656, 2827, 3497, +3655, 2829, 3497, +3655, 2830, 3496, +3654, 2832, 3495, +3653, 2835, 3494, +3652, 2839, 3493, +3650, 2843, 3491, +3648, 2850, 3488, +3645, 2858, 3485, +3640, 2869, 3480, +3635, 2883, 3474, +3627, 2902, 3466, +3616, 2925, 3454, +3602, 2955, 3439, +3582, 2992, 3417, +3553, 3036, 3386, +3512, 3090, 3340, +3451, 3154, 3272, +3353, 3227, 3160, +3177, 3309, 2949, +2723, 3400, 2233, +0, 3498, 0, +0, 3604, 0, +0, 3715, 0, +3797, 2893, 3605, +3797, 2893, 3605, +3797, 2893, 3605, +3797, 2893, 3605, +3797, 2894, 3605, +3797, 2894, 3605, +3797, 2894, 3605, +3797, 2895, 3605, +3797, 2896, 3604, +3796, 2897, 3604, +3796, 2898, 3604, +3795, 2900, 3603, +3795, 2902, 3602, +3794, 2905, 3601, +3792, 2909, 3600, +3791, 2915, 3598, +3788, 2922, 3595, +3785, 2932, 3591, +3781, 2944, 3587, +3776, 2960, 3580, +3768, 2981, 3571, +3758, 3007, 3559, +3744, 3040, 3542, +3724, 3081, 3519, +3696, 3130, 3486, +3656, 3188, 3437, +3596, 3256, 3362, +3502, 3334, 3238, +3333, 3420, 2991, +2918, 3515, 1456, +0, 3617, 0, +0, 3725, 0, +3936, 2971, 3718, +3936, 2971, 3718, +3936, 2971, 3718, +3936, 2971, 3718, +3936, 2972, 3718, +3936, 2972, 3717, +3935, 2972, 3717, +3935, 2973, 3717, +3935, 2973, 3717, +3935, 2974, 3717, +3935, 2975, 3716, +3934, 2977, 3716, +3934, 2979, 3715, +3933, 2981, 3714, +3932, 2985, 3713, +3931, 2990, 3712, +3929, 2996, 3710, +3927, 3004, 3707, +3924, 3015, 3703, +3920, 3028, 3698, +3914, 3046, 3691, +3907, 3069, 3682, +3897, 3098, 3669, +3883, 3134, 3652, +3863, 3178, 3627, +3836, 3231, 3592, +3797, 3293, 3540, +3738, 3365, 3460, +3646, 3446, 3325, +3483, 3536, 3042, +3092, 3634, 0, +0, 3738, 0, +4073, 3058, 3835, +4073, 3058, 3835, +4072, 3058, 3835, +4072, 3058, 3835, +4072, 3059, 3834, +4072, 3059, 3834, +4072, 3059, 3834, +4072, 3059, 3834, +4072, 3060, 3834, +4072, 3061, 3834, +4072, 3062, 3834, +4071, 3063, 3833, +4071, 3064, 3833, +4071, 3067, 3832, +4070, 3070, 3831, +4069, 3073, 3830, +4068, 3079, 3828, +4066, 3085, 3826, +4064, 3094, 3823, +4061, 3106, 3820, +4057, 3121, 3814, +4051, 3140, 3807, +4044, 3165, 3798, +4034, 3196, 3784, +4020, 3235, 3766, +4001, 3282, 3741, +3974, 3338, 3704, +3935, 3404, 3650, +3877, 3479, 3565, +3787, 3563, 3420, +3627, 3656, 3103, +3253, 3756, 0, +4095, 3153, 3955, +4095, 3153, 3955, +4095, 3153, 3955, +4095, 3154, 3955, +4095, 3154, 3955, +4095, 3154, 3955, +4095, 3154, 3955, +4095, 3154, 3955, +4095, 3155, 3955, +4095, 3155, 3954, +4095, 3156, 3954, +4095, 3157, 3954, +4095, 3159, 3954, +4095, 3160, 3953, +4095, 3163, 3952, +4095, 3166, 3951, +4095, 3170, 3950, +4095, 3176, 3949, +4095, 3183, 3946, +4095, 3192, 3943, +4095, 3205, 3940, +4095, 3221, 3934, +4095, 3242, 3927, +4095, 3269, 3917, +4095, 3302, 3903, +4095, 3342, 3885, +4095, 3392, 3858, +4095, 3451, 3820, +4072, 3519, 3764, +4015, 3596, 3676, +3925, 3683, 3522, +3768, 3778, 3173, +4095, 3256, 4078, +4095, 3256, 4078, +4095, 3256, 4078, +4095, 3256, 4078, +4095, 3256, 4078, +4095, 3256, 4078, +4095, 3256, 4078, +4095, 3257, 4078, +4095, 3257, 4078, +4095, 3257, 4078, +4095, 3258, 4078, +4095, 3259, 4077, +4095, 3260, 4077, +4095, 3261, 4077, +4095, 3263, 4076, +4095, 3266, 4075, +4095, 3269, 4075, +4095, 3274, 4073, +4095, 3280, 4072, +4095, 3287, 4069, +4095, 3297, 4066, +4095, 3311, 4062, +4095, 3328, 4057, +4095, 3350, 4049, +4095, 3378, 4039, +4095, 3413, 4025, +4095, 3455, 4006, +4095, 3507, 3979, +4095, 3567, 3940, +4095, 3638, 3882, +4095, 3718, 3791, +4062, 3806, 3631, +0, 2656, 2925, +0, 2657, 2925, +0, 2657, 2925, +0, 2657, 2925, +0, 2658, 2924, +0, 2658, 2924, +0, 2659, 2923, +0, 2660, 2923, +0, 2661, 2921, +0, 2663, 2920, +0, 2665, 2918, +0, 2668, 2915, +0, 2672, 2911, +0, 2677, 2906, +0, 2684, 2899, +0, 2693, 2890, +0, 2705, 2878, +0, 2720, 2860, +0, 2739, 2835, +0, 2764, 2800, +0, 2796, 2749, +0, 2835, 2669, +0, 2882, 2534, +0, 2939, 2253, +0, 3005, 0, +0, 3080, 0, +0, 3165, 0, +0, 3258, 0, +0, 3358, 0, +0, 3465, 0, +0, 3578, 0, +0, 3694, 0, +0, 2657, 2926, +0, 2657, 2926, +0, 2657, 2925, +0, 2657, 2925, +0, 2658, 2925, +0, 2658, 2924, +0, 2659, 2924, +0, 2660, 2923, +0, 2661, 2922, +0, 2663, 2920, +0, 2665, 2918, +0, 2668, 2915, +0, 2672, 2912, +0, 2677, 2907, +0, 2684, 2900, +0, 2693, 2890, +0, 2705, 2878, +0, 2720, 2860, +0, 2739, 2836, +0, 2765, 2801, +0, 2796, 2749, +0, 2835, 2669, +0, 2882, 2535, +0, 2939, 2254, +0, 3005, 0, +0, 3080, 0, +0, 3165, 0, +0, 3258, 0, +0, 3358, 0, +0, 3465, 0, +0, 3578, 0, +0, 3694, 0, +0, 2657, 2926, +0, 2657, 2926, +0, 2657, 2926, +0, 2657, 2925, +0, 2658, 2925, +0, 2658, 2925, +0, 2659, 2924, +0, 2660, 2923, +0, 2661, 2922, +0, 2663, 2920, +0, 2665, 2918, +0, 2668, 2916, +0, 2672, 2912, +0, 2677, 2907, +0, 2684, 2900, +0, 2693, 2891, +0, 2705, 2878, +0, 2720, 2861, +0, 2740, 2836, +0, 2765, 2801, +0, 2796, 2749, +0, 2835, 2670, +0, 2882, 2535, +0, 2939, 2255, +0, 3005, 0, +0, 3080, 0, +0, 3165, 0, +0, 3258, 0, +0, 3358, 0, +0, 3465, 0, +0, 3578, 0, +0, 3694, 0, +0, 2657, 2926, +0, 2657, 2926, +0, 2657, 2926, +0, 2657, 2926, +0, 2658, 2925, +0, 2658, 2925, +0, 2659, 2924, +0, 2660, 2923, +0, 2661, 2922, +0, 2663, 2921, +0, 2665, 2919, +0, 2668, 2916, +0, 2672, 2912, +0, 2677, 2907, +0, 2684, 2900, +0, 2693, 2891, +0, 2705, 2879, +0, 2720, 2861, +0, 2740, 2836, +0, 2765, 2801, +0, 2796, 2750, +0, 2835, 2670, +0, 2882, 2536, +0, 2939, 2257, +0, 3005, 0, +0, 3080, 0, +0, 3165, 0, +0, 3258, 0, +0, 3358, 0, +0, 3465, 0, +0, 3578, 0, +0, 3694, 0, +0, 2657, 2927, +0, 2657, 2927, +0, 2657, 2927, +0, 2657, 2926, +0, 2658, 2926, +0, 2658, 2925, +0, 2659, 2925, +0, 2660, 2924, +0, 2661, 2923, +0, 2663, 2921, +0, 2665, 2919, +0, 2668, 2917, +0, 2672, 2913, +0, 2677, 2908, +0, 2684, 2901, +0, 2693, 2892, +0, 2705, 2879, +0, 2720, 2862, +0, 2740, 2837, +0, 2765, 2802, +0, 2796, 2751, +0, 2835, 2671, +0, 2882, 2537, +0, 2939, 2259, +0, 3005, 0, +0, 3080, 0, +0, 3165, 0, +0, 3258, 0, +0, 3358, 0, +0, 3465, 0, +0, 3578, 0, +0, 3694, 0, +0, 2657, 2928, +0, 2657, 2927, +0, 2657, 2927, +0, 2658, 2927, +0, 2658, 2927, +0, 2659, 2926, +0, 2659, 2926, +0, 2660, 2925, +0, 2661, 2924, +0, 2663, 2922, +0, 2665, 2920, +0, 2668, 2917, +0, 2672, 2914, +0, 2677, 2909, +0, 2684, 2902, +0, 2693, 2893, +0, 2705, 2880, +0, 2720, 2862, +0, 2740, 2838, +0, 2765, 2803, +0, 2796, 2752, +0, 2835, 2673, +0, 2882, 2539, +0, 2939, 2262, +0, 3005, 0, +0, 3080, 0, +0, 3165, 0, +0, 3258, 0, +0, 3358, 0, +0, 3465, 0, +0, 3578, 0, +0, 3694, 0, +0, 2657, 2929, +0, 2657, 2928, +0, 2658, 2928, +0, 2658, 2928, +0, 2658, 2928, +0, 2659, 2927, +0, 2660, 2926, +0, 2660, 2926, +0, 2662, 2925, +0, 2663, 2923, +0, 2666, 2921, +0, 2669, 2918, +0, 2672, 2915, +0, 2678, 2910, +0, 2684, 2903, +0, 2693, 2894, +0, 2705, 2881, +0, 2720, 2864, +0, 2740, 2839, +0, 2765, 2804, +0, 2796, 2753, +0, 2835, 2674, +0, 2883, 2541, +0, 2939, 2266, +0, 3005, 0, +0, 3080, 0, +0, 3165, 0, +0, 3258, 0, +0, 3358, 0, +0, 3465, 0, +0, 3578, 0, +0, 3694, 0, +0, 2658, 2930, +0, 2658, 2930, +0, 2658, 2929, +0, 2658, 2929, +0, 2659, 2929, +0, 2659, 2928, +0, 2660, 2928, +0, 2661, 2927, +0, 2662, 2926, +0, 2664, 2924, +0, 2666, 2922, +0, 2669, 2919, +0, 2673, 2916, +0, 2678, 2911, +0, 2685, 2904, +0, 2694, 2895, +0, 2706, 2882, +0, 2721, 2865, +0, 2740, 2841, +0, 2765, 2806, +0, 2797, 2755, +0, 2836, 2676, +0, 2883, 2544, +0, 2939, 2271, +0, 3005, 0, +0, 3080, 0, +0, 3165, 0, +0, 3258, 0, +0, 3358, 0, +0, 3465, 0, +0, 3578, 0, +0, 3694, 0, +0, 2658, 2931, +0, 2658, 2931, +0, 2658, 2931, +0, 2659, 2931, +0, 2659, 2931, +0, 2660, 2930, +0, 2660, 2929, +0, 2661, 2929, +0, 2662, 2927, +0, 2664, 2926, +0, 2666, 2924, +0, 2669, 2921, +0, 2673, 2918, +0, 2678, 2913, +0, 2685, 2906, +0, 2694, 2897, +0, 2706, 2884, +0, 2721, 2867, +0, 2741, 2843, +0, 2766, 2808, +0, 2797, 2757, +0, 2836, 2679, +0, 2883, 2548, +0, 2939, 2279, +0, 3005, 0, +0, 3081, 0, +0, 3165, 0, +0, 3258, 0, +0, 3359, 0, +0, 3465, 0, +0, 3578, 0, +0, 3694, 0, +0, 2659, 2934, +0, 2659, 2934, +0, 2659, 2933, +0, 2659, 2933, +0, 2660, 2933, +0, 2660, 2932, +0, 2661, 2932, +0, 2662, 2931, +0, 2663, 2930, +0, 2665, 2928, +0, 2667, 2926, +0, 2670, 2924, +0, 2674, 2920, +0, 2679, 2915, +0, 2686, 2908, +0, 2695, 2899, +0, 2706, 2887, +0, 2722, 2870, +0, 2741, 2845, +0, 2766, 2811, +0, 2797, 2761, +0, 2836, 2683, +0, 2883, 2553, +0, 2940, 2288, +0, 3006, 0, +0, 3081, 0, +0, 3165, 0, +0, 3258, 0, +0, 3359, 0, +0, 3466, 0, +0, 3578, 0, +0, 3695, 0, +0, 2659, 2937, +0, 2659, 2937, +0, 2660, 2936, +0, 2660, 2936, +0, 2660, 2936, +0, 2661, 2935, +0, 2662, 2935, +0, 2663, 2934, +0, 2664, 2933, +0, 2665, 2931, +0, 2668, 2929, +0, 2671, 2927, +0, 2674, 2923, +0, 2680, 2918, +0, 2686, 2911, +0, 2695, 2902, +0, 2707, 2890, +0, 2722, 2873, +0, 2742, 2849, +0, 2767, 2815, +0, 2798, 2765, +0, 2837, 2688, +0, 2884, 2560, +0, 2940, 2300, +0, 3006, 0, +0, 3081, 0, +0, 3166, 0, +0, 3258, 0, +0, 3359, 0, +0, 3466, 0, +0, 3578, 0, +0, 3695, 0, +0, 2660, 2941, +0, 2660, 2941, +0, 2661, 2940, +0, 2661, 2940, +0, 2661, 2940, +0, 2662, 2939, +0, 2663, 2939, +0, 2664, 2938, +0, 2665, 2937, +0, 2666, 2935, +0, 2669, 2933, +0, 2672, 2931, +0, 2675, 2927, +0, 2681, 2922, +0, 2687, 2916, +0, 2696, 2907, +0, 2708, 2894, +0, 2723, 2877, +0, 2743, 2854, +0, 2768, 2820, +0, 2799, 2771, +0, 2837, 2695, +0, 2885, 2569, +0, 2941, 2316, +0, 3006, 0, +0, 3082, 0, +0, 3166, 0, +0, 3259, 0, +0, 3359, 0, +0, 3466, 0, +0, 3578, 0, +0, 3695, 0, +0, 2662, 2946, +0, 2662, 2946, +0, 2662, 2946, +0, 2662, 2945, +0, 2663, 2945, +0, 2663, 2945, +0, 2664, 2944, +0, 2665, 2943, +0, 2666, 2942, +0, 2668, 2941, +0, 2670, 2939, +0, 2673, 2936, +0, 2677, 2932, +0, 2682, 2928, +0, 2689, 2921, +0, 2698, 2912, +0, 2709, 2900, +0, 2724, 2883, +0, 2744, 2860, +0, 2769, 2827, +0, 2800, 2778, +0, 2838, 2704, +0, 2885, 2581, +0, 2941, 2336, +0, 3007, 938, +0, 3082, 0, +0, 3166, 0, +0, 3259, 0, +0, 3359, 0, +0, 3466, 0, +0, 3578, 0, +0, 3695, 0, +0, 2663, 2953, +0, 2664, 2953, +0, 2664, 2952, +0, 2664, 2952, +0, 2665, 2952, +0, 2665, 2951, +0, 2666, 2951, +0, 2667, 2950, +0, 2668, 2949, +0, 2670, 2948, +0, 2672, 2946, +0, 2675, 2943, +0, 2679, 2940, +0, 2684, 2935, +0, 2690, 2928, +0, 2699, 2920, +0, 2711, 2908, +0, 2726, 2891, +0, 2745, 2868, +0, 2770, 2836, +0, 2801, 2788, +0, 2840, 2716, +0, 2886, 2596, +0, 2942, 2362, +0, 3008, 1311, +0, 3083, 0, +0, 3167, 0, +0, 3260, 0, +0, 3360, 0, +0, 3466, 0, +0, 3579, 0, +0, 3695, 0, +0, 2666, 2962, +0, 2666, 2962, +0, 2666, 2962, +0, 2667, 2961, +0, 2667, 2961, +0, 2667, 2961, +0, 2668, 2960, +0, 2669, 2959, +0, 2670, 2958, +0, 2672, 2957, +0, 2674, 2955, +0, 2677, 2952, +0, 2681, 2949, +0, 2686, 2944, +0, 2693, 2938, +0, 2701, 2929, +0, 2713, 2918, +0, 2728, 2902, +0, 2747, 2879, +0, 2772, 2848, +0, 2803, 2801, +0, 2841, 2731, +0, 2888, 2616, +0, 2944, 2395, +0, 3009, 1565, +0, 3084, 0, +0, 3168, 0, +0, 3260, 0, +0, 3360, 0, +0, 3467, 0, +0, 3579, 0, +0, 3695, 0, +0, 2669, 2974, +0, 2669, 2974, +0, 2669, 2973, +0, 2670, 2973, +0, 2670, 2973, +0, 2671, 2972, +0, 2671, 2972, +0, 2672, 2971, +0, 2673, 2970, +0, 2675, 2969, +0, 2677, 2967, +0, 2680, 2964, +0, 2684, 2961, +0, 2689, 2957, +0, 2696, 2950, +0, 2704, 2942, +0, 2716, 2931, +0, 2731, 2915, +0, 2750, 2894, +0, 2774, 2863, +0, 2805, 2818, +0, 2843, 2751, +0, 2890, 2641, +0, 2945, 2435, +0, 3010, 1770, +0, 3085, 0, +0, 3169, 0, +0, 3261, 0, +0, 3361, 0, +0, 3467, 0, +0, 3579, 0, +0, 3696, 0, +0, 2673, 2989, +0, 2673, 2989, +0, 2674, 2989, +0, 2674, 2989, +0, 2674, 2988, +0, 2675, 2988, +0, 2676, 2987, +0, 2676, 2987, +0, 2678, 2986, +0, 2679, 2984, +0, 2681, 2982, +0, 2684, 2980, +0, 2688, 2977, +0, 2693, 2973, +0, 2700, 2967, +0, 2708, 2959, +0, 2720, 2948, +0, 2735, 2933, +0, 2754, 2912, +0, 2778, 2882, +0, 2808, 2840, +0, 2846, 2775, +0, 2893, 2672, +0, 2948, 2483, +0, 3013, 1950, +0, 3087, 0, +0, 3170, 0, +0, 3262, 0, +0, 3362, 0, +0, 3468, 0, +0, 3580, 0, +0, 3696, 0, +0, 2679, 3009, +0, 2679, 3009, +0, 2679, 3009, +0, 2680, 3008, +0, 2680, 3008, +0, 2680, 3008, +0, 2681, 3007, +0, 2682, 3007, +0, 2683, 3006, +0, 2685, 3004, +0, 2687, 3003, +0, 2690, 3000, +0, 2693, 2997, +0, 2698, 2993, +0, 2705, 2987, +0, 2714, 2980, +0, 2725, 2969, +0, 2739, 2955, +0, 2758, 2935, +0, 2782, 2907, +0, 2813, 2867, +0, 2850, 2807, +0, 2896, 2711, +0, 2951, 2541, +0, 3015, 2115, +0, 3089, 0, +0, 3172, 0, +0, 3264, 0, +0, 3363, 0, +0, 3469, 0, +0, 3581, 0, +0, 3697, 0, +1182, 2686, 3034, +1173, 2686, 3034, +1160, 2687, 3034, +1143, 2687, 3034, +1119, 2687, 3033, +1084, 2688, 3033, +1033, 2688, 3033, +955, 2689, 3032, +824, 2691, 3031, +554, 2692, 3030, +0, 2694, 3028, +0, 2697, 3026, +0, 2701, 3023, +0, 2706, 3019, +0, 2712, 3014, +0, 2720, 3007, +0, 2731, 2997, +0, 2746, 2983, +0, 2764, 2965, +0, 2788, 2939, +0, 2818, 2901, +0, 2855, 2846, +0, 2901, 2759, +0, 2955, 2608, +0, 3019, 2271, +0, 3092, 0, +0, 3175, 0, +0, 3266, 0, +0, 3365, 0, +0, 3470, 0, +0, 3582, 0, +0, 3697, 0, +2191, 2696, 3066, +2190, 2696, 3066, +2189, 2696, 3066, +2187, 2697, 3065, +2185, 2697, 3065, +2182, 2698, 3065, +2177, 2698, 3064, +2172, 2699, 3064, +2164, 2700, 3063, +2153, 2702, 3062, +2138, 2704, 3060, +2117, 2706, 3058, +2088, 2710, 3055, +2046, 2715, 3052, +1983, 2721, 3047, +1881, 2729, 3040, +1696, 2740, 3031, +1189, 2754, 3019, +0, 2773, 3001, +0, 2796, 2977, +0, 2825, 2943, +0, 2862, 2893, +0, 2907, 2815, +0, 2960, 2685, +0, 3023, 2419, +0, 3096, 0, +0, 3178, 0, +0, 3269, 0, +0, 3367, 0, +0, 3472, 0, +0, 3583, 0, +0, 3699, 0, +2548, 2709, 3105, +2548, 2709, 3105, +2547, 2709, 3105, +2546, 2709, 3105, +2545, 2710, 3104, +2544, 2710, 3104, +2542, 2711, 3104, +2539, 2712, 3103, +2536, 2713, 3102, +2531, 2714, 3101, +2524, 2716, 3100, +2516, 2719, 3098, +2504, 2722, 3095, +2487, 2727, 3092, +2464, 2733, 3088, +2432, 2741, 3082, +2384, 2752, 3073, +2311, 2766, 3062, +2191, 2783, 3046, +1956, 2806, 3025, +876, 2835, 2994, +0, 2871, 2949, +0, 2915, 2881, +0, 2967, 2771, +0, 3030, 2564, +0, 3101, 1888, +0, 3182, 0, +0, 3272, 0, +0, 3370, 0, +0, 3474, 0, +0, 3585, 0, +0, 3700, 0, +2796, 2725, 3153, +2796, 2725, 3152, +2796, 2725, 3152, +2795, 2726, 3152, +2795, 2726, 3152, +2794, 2726, 3152, +2793, 2727, 3151, +2791, 2728, 3151, +2789, 2729, 3150, +2787, 2730, 3149, +2783, 2732, 3148, +2778, 2735, 3146, +2771, 2738, 3144, +2762, 2743, 3141, +2750, 2749, 3137, +2733, 2756, 3131, +2709, 2767, 3124, +2675, 2780, 3114, +2625, 2797, 3100, +2548, 2819, 3081, +2419, 2847, 3054, +2157, 2882, 3015, +0, 2925, 2957, +0, 2977, 2865, +0, 3038, 2704, +0, 3108, 2323, +0, 3188, 0, +0, 3277, 0, +0, 3374, 0, +0, 3478, 0, +0, 3587, 0, +0, 3702, 0, +2999, 2746, 3209, +2999, 2746, 3209, +2999, 2746, 3209, +2999, 2747, 3209, +2998, 2747, 3209, +2998, 2747, 3209, +2997, 2748, 3208, +2996, 2749, 3208, +2995, 2750, 3207, +2993, 2751, 3206, +2991, 2753, 3205, +2988, 2755, 3204, +2984, 2759, 3202, +2978, 2763, 3199, +2970, 2769, 3196, +2960, 2776, 3191, +2945, 2786, 3184, +2925, 2799, 3175, +2897, 2815, 3163, +2857, 2837, 3147, +2796, 2864, 3123, +2699, 2897, 3090, +2527, 2939, 3041, +2089, 2989, 2967, +0, 3048, 2843, +0, 3118, 2597, +0, 3196, 1111, +0, 3283, 0, +0, 3379, 0, +0, 3482, 0, +0, 3590, 0, +0, 3704, 0, +3178, 2773, 3276, +3178, 2773, 3275, +3178, 2773, 3275, +3178, 2773, 3275, +3177, 2774, 3275, +3177, 2774, 3275, +3177, 2775, 3275, +3176, 2775, 3274, +3175, 2776, 3274, +3174, 2778, 3273, +3172, 2779, 3272, +3170, 2782, 3271, +3167, 2785, 3269, +3164, 2789, 3267, +3159, 2794, 3264, +3152, 2801, 3260, +3142, 2811, 3254, +3130, 2823, 3246, +3112, 2838, 3236, +3087, 2859, 3222, +3051, 2884, 3202, +2999, 2917, 3174, +2918, 2956, 3134, +2780, 3005, 3074, +2488, 3062, 2980, +0, 3130, 2811, +0, 3206, 2395, +0, 3292, 0, +0, 3386, 0, +0, 3487, 0, +0, 3595, 0, +0, 3708, 0, +3342, 2806, 3351, +3342, 2806, 3351, +3342, 2807, 3351, +3342, 2807, 3351, +3342, 2807, 3351, +3341, 2807, 3351, +3341, 2808, 3350, +3341, 2809, 3350, +3340, 2810, 3350, +3339, 2811, 3349, +3338, 2812, 3348, +3337, 2814, 3347, +3335, 2817, 3346, +3332, 2821, 3344, +3329, 2826, 3341, +3324, 2833, 3338, +3318, 2841, 3333, +3309, 2853, 3327, +3297, 2867, 3318, +3281, 2886, 3306, +3258, 2911, 3290, +3225, 2941, 3267, +3177, 2979, 3235, +3105, 3025, 3187, +2985, 3080, 3115, +2750, 3145, 2997, +1687, 3219, 2766, +0, 3303, 1775, +0, 3395, 0, +0, 3494, 0, +0, 3600, 0, +0, 3712, 0, +3497, 2847, 3436, +3497, 2848, 3436, +3497, 2848, 3436, +3497, 2848, 3436, +3496, 2848, 3436, +3496, 2849, 3436, +3496, 2849, 3436, +3496, 2850, 3435, +3495, 2850, 3435, +3495, 2852, 3434, +3494, 2853, 3434, +3493, 2855, 3433, +3492, 2858, 3432, +3490, 2861, 3430, +3487, 2866, 3428, +3484, 2872, 3425, +3479, 2880, 3421, +3473, 2890, 3416, +3465, 2904, 3409, +3454, 2921, 3399, +3438, 2944, 3386, +3417, 2972, 3368, +3386, 3008, 3342, +3341, 3051, 3305, +3274, 3103, 3250, +3165, 3165, 3165, +2960, 3236, 3019, +2308, 3317, 2696, +0, 3406, 0, +0, 3504, 0, +0, 3608, 0, +0, 3718, 0, +3645, 2897, 3529, +3645, 2897, 3529, +3645, 2898, 3529, +3645, 2898, 3529, +3645, 2898, 3529, +3645, 2898, 3529, +3644, 2899, 3529, +3644, 2899, 3529, +3644, 2900, 3528, +3644, 2901, 3528, +3643, 2902, 3527, +3642, 2904, 3527, +3641, 2906, 3526, +3640, 2909, 3524, +3638, 2914, 3523, +3636, 2919, 3520, +3633, 2926, 3517, +3628, 2936, 3513, +3622, 2948, 3507, +3614, 2964, 3500, +3604, 2984, 3489, +3589, 3011, 3474, +3568, 3043, 3454, +3539, 3084, 3426, +3496, 3132, 3384, +3432, 3191, 3322, +3330, 3258, 3224, +3143, 3335, 3046, +2623, 3421, 2582, +0, 3516, 0, +0, 3618, 0, +0, 3726, 0, +3789, 2956, 3630, +3789, 2956, 3630, +3789, 2957, 3630, +3789, 2957, 3630, +3789, 2957, 3630, +3789, 2957, 3630, +3788, 2958, 3630, +3788, 2958, 3630, +3788, 2959, 3629, +3788, 2960, 3629, +3787, 2961, 3629, +3787, 2962, 3628, +3786, 2964, 3627, +3785, 2967, 3626, +3784, 2971, 3625, +3782, 2976, 3623, +3780, 2982, 3620, +3777, 2990, 3617, +3772, 3001, 3613, +3767, 3015, 3606, +3759, 3034, 3598, +3748, 3057, 3587, +3734, 3087, 3571, +3714, 3124, 3549, +3685, 3169, 3518, +3644, 3222, 3473, +3583, 3286, 3404, +3485, 3359, 3292, +3309, 3441, 3081, +2855, 3532, 2365, +0, 3630, 0, +0, 3736, 0, +3929, 3025, 3737, +3929, 3025, 3737, +3929, 3025, 3737, +3929, 3025, 3737, +3929, 3026, 3737, +3929, 3026, 3737, +3929, 3026, 3737, +3929, 3026, 3737, +3929, 3027, 3737, +3929, 3028, 3736, +3928, 3029, 3736, +3928, 3030, 3736, +3927, 3032, 3735, +3927, 3034, 3734, +3926, 3037, 3733, +3925, 3042, 3732, +3923, 3047, 3730, +3921, 3054, 3727, +3918, 3064, 3723, +3913, 3076, 3719, +3908, 3092, 3712, +3900, 3113, 3703, +3890, 3139, 3691, +3876, 3172, 3674, +3856, 3213, 3651, +3828, 3262, 3618, +3788, 3320, 3569, +3728, 3388, 3494, +3634, 3466, 3370, +3465, 3552, 3123, +3050, 3647, 1588, +0, 3749, 0, +4068, 3103, 3850, +4068, 3103, 3850, +4068, 3103, 3850, +4068, 3103, 3850, +4068, 3104, 3850, +4068, 3104, 3850, +4068, 3104, 3850, +4068, 3104, 3849, +4067, 3105, 3849, +4067, 3105, 3849, +4067, 3106, 3849, +4067, 3107, 3849, +4066, 3109, 3848, +4066, 3111, 3847, +4065, 3114, 3847, +4064, 3117, 3845, +4063, 3122, 3844, +4061, 3128, 3842, +4059, 3136, 3839, +4056, 3147, 3835, +4052, 3160, 3830, +4046, 3178, 3823, +4039, 3201, 3814, +4029, 3230, 3801, +4015, 3266, 3784, +3995, 3310, 3759, +3968, 3363, 3724, +3929, 3425, 3672, +3870, 3497, 3592, +3778, 3578, 3457, +3615, 3668, 3174, +3224, 3766, 0, +4095, 3190, 3967, +4095, 3190, 3967, +4095, 3190, 3967, +4095, 3190, 3967, +4095, 3191, 3967, +4095, 3191, 3967, +4095, 3191, 3967, +4095, 3191, 3966, +4095, 3192, 3966, +4095, 3192, 3966, +4095, 3193, 3966, +4095, 3194, 3966, +4095, 3195, 3965, +4095, 3197, 3965, +4095, 3199, 3964, +4095, 3202, 3963, +4095, 3206, 3962, +4095, 3211, 3961, +4095, 3217, 3958, +4095, 3226, 3956, +4095, 3238, 3952, +4095, 3253, 3946, +4095, 3273, 3939, +4095, 3297, 3930, +4095, 3328, 3917, +4095, 3367, 3898, +4095, 3414, 3873, +4095, 3470, 3836, +4067, 3536, 3782, +4009, 3611, 3697, +3919, 3695, 3552, +3759, 3788, 3235, +4095, 3285, 4087, +4095, 3285, 4087, +4095, 3286, 4087, +4095, 3286, 4087, +4095, 3286, 4087, +4095, 3286, 4087, +4095, 3286, 4087, +4095, 3286, 4087, +4095, 3287, 4087, +4095, 3287, 4087, +4095, 3288, 4087, +4095, 3288, 4086, +4095, 3289, 4086, +4095, 3291, 4086, +4095, 3292, 4085, +4095, 3295, 4084, +4095, 3298, 4084, +4095, 3302, 4082, +4095, 3308, 4081, +4095, 3315, 4079, +4095, 3325, 4076, +4095, 3337, 4072, +4095, 3353, 4066, +4095, 3374, 4059, +4095, 3401, 4049, +4095, 3434, 4036, +4095, 3475, 4017, +4095, 3524, 3990, +4095, 3583, 3952, +4095, 3651, 3896, +4095, 3729, 3808, +4057, 3815, 3655, +0, 2788, 3057, +0, 2789, 3057, +0, 2789, 3057, +0, 2789, 3057, +0, 2789, 3057, +0, 2790, 3056, +0, 2790, 3056, +0, 2791, 3055, +0, 2792, 3054, +0, 2793, 3053, +0, 2795, 3052, +0, 2797, 3050, +0, 2800, 3047, +0, 2804, 3043, +0, 2809, 3038, +0, 2816, 3031, +0, 2825, 3022, +0, 2837, 3009, +0, 2852, 2992, +0, 2872, 2967, +0, 2897, 2932, +0, 2928, 2880, +0, 2967, 2801, +0, 3014, 2666, +0, 3071, 2384, +0, 3137, 0, +0, 3212, 0, +0, 3297, 0, +0, 3390, 0, +0, 3490, 0, +0, 3597, 0, +0, 3710, 0, +0, 2788, 3058, +0, 2789, 3058, +0, 2789, 3057, +0, 2789, 3057, +0, 2789, 3057, +0, 2790, 3057, +0, 2790, 3056, +0, 2791, 3055, +0, 2792, 3055, +0, 2793, 3053, +0, 2795, 3052, +0, 2797, 3050, +0, 2800, 3047, +0, 2804, 3043, +0, 2809, 3038, +0, 2816, 3032, +0, 2825, 3022, +0, 2837, 3010, +0, 2852, 2992, +0, 2872, 2967, +0, 2897, 2932, +0, 2928, 2881, +0, 2967, 2801, +0, 3014, 2666, +0, 3071, 2385, +0, 3137, 0, +0, 3212, 0, +0, 3297, 0, +0, 3390, 0, +0, 3490, 0, +0, 3597, 0, +0, 3710, 0, +0, 2788, 3058, +0, 2789, 3058, +0, 2789, 3058, +0, 2789, 3057, +0, 2789, 3057, +0, 2790, 3057, +0, 2790, 3056, +0, 2791, 3056, +0, 2792, 3055, +0, 2793, 3054, +0, 2795, 3052, +0, 2797, 3050, +0, 2800, 3047, +0, 2804, 3044, +0, 2809, 3039, +0, 2816, 3032, +0, 2825, 3023, +0, 2837, 3010, +0, 2852, 2992, +0, 2872, 2968, +0, 2897, 2933, +0, 2928, 2881, +0, 2967, 2801, +0, 3014, 2667, +0, 3071, 2386, +0, 3137, 0, +0, 3212, 0, +0, 3297, 0, +0, 3390, 0, +0, 3490, 0, +0, 3597, 0, +0, 3710, 0, +0, 2789, 3058, +0, 2789, 3058, +0, 2789, 3058, +0, 2789, 3058, +0, 2789, 3057, +0, 2790, 3057, +0, 2790, 3057, +0, 2791, 3056, +0, 2792, 3055, +0, 2793, 3054, +0, 2795, 3052, +0, 2797, 3050, +0, 2800, 3048, +0, 2804, 3044, +0, 2809, 3039, +0, 2816, 3032, +0, 2825, 3023, +0, 2837, 3010, +0, 2852, 2993, +0, 2872, 2968, +0, 2897, 2933, +0, 2928, 2881, +0, 2967, 2802, +0, 3014, 2667, +0, 3071, 2387, +0, 3137, 0, +0, 3212, 0, +0, 3297, 0, +0, 3390, 0, +0, 3490, 0, +0, 3597, 0, +0, 3710, 0, +0, 2789, 3059, +0, 2789, 3058, +0, 2789, 3058, +0, 2789, 3058, +0, 2789, 3058, +0, 2790, 3058, +0, 2790, 3057, +0, 2791, 3056, +0, 2792, 3056, +0, 2793, 3054, +0, 2795, 3053, +0, 2797, 3051, +0, 2800, 3048, +0, 2804, 3044, +0, 2809, 3039, +0, 2816, 3033, +0, 2825, 3023, +0, 2837, 3011, +0, 2852, 2993, +0, 2872, 2969, +0, 2897, 2934, +0, 2928, 2882, +0, 2967, 2802, +0, 3014, 2668, +0, 3071, 2389, +0, 3137, 0, +0, 3212, 0, +0, 3297, 0, +0, 3390, 0, +0, 3490, 0, +0, 3597, 0, +0, 3710, 0, +0, 2789, 3059, +0, 2789, 3059, +0, 2789, 3059, +0, 2789, 3059, +0, 2790, 3058, +0, 2790, 3058, +0, 2791, 3058, +0, 2791, 3057, +0, 2792, 3056, +0, 2793, 3055, +0, 2795, 3053, +0, 2797, 3051, +0, 2800, 3049, +0, 2804, 3045, +0, 2809, 3040, +0, 2816, 3033, +0, 2825, 3024, +0, 2837, 3011, +0, 2852, 2994, +0, 2872, 2969, +0, 2897, 2934, +0, 2928, 2883, +0, 2967, 2803, +0, 3014, 2670, +0, 3071, 2391, +0, 3137, 0, +0, 3212, 0, +0, 3297, 0, +0, 3390, 0, +0, 3490, 0, +0, 3597, 0, +0, 3710, 0, +0, 2789, 3060, +0, 2789, 3060, +0, 2789, 3060, +0, 2789, 3059, +0, 2790, 3059, +0, 2790, 3059, +0, 2791, 3058, +0, 2791, 3058, +0, 2792, 3057, +0, 2794, 3056, +0, 2795, 3054, +0, 2797, 3052, +0, 2800, 3049, +0, 2804, 3046, +0, 2810, 3041, +0, 2816, 3034, +0, 2825, 3025, +0, 2837, 3012, +0, 2852, 2995, +0, 2872, 2970, +0, 2897, 2935, +0, 2928, 2884, +0, 2967, 2805, +0, 3015, 2671, +0, 3071, 2394, +0, 3137, 0, +0, 3212, 0, +0, 3297, 0, +0, 3390, 0, +0, 3490, 0, +0, 3597, 0, +0, 3710, 0, +0, 2789, 3061, +0, 2789, 3061, +0, 2789, 3061, +0, 2790, 3060, +0, 2790, 3060, +0, 2790, 3060, +0, 2791, 3059, +0, 2792, 3059, +0, 2793, 3058, +0, 2794, 3057, +0, 2795, 3055, +0, 2798, 3053, +0, 2801, 3050, +0, 2805, 3047, +0, 2810, 3042, +0, 2817, 3035, +0, 2826, 3026, +0, 2837, 3013, +0, 2853, 2996, +0, 2872, 2971, +0, 2897, 2936, +0, 2929, 2885, +0, 2967, 2806, +0, 3015, 2673, +0, 3071, 2398, +0, 3137, 0, +0, 3212, 0, +0, 3297, 0, +0, 3390, 0, +0, 3491, 0, +0, 3597, 0, +0, 3710, 0, +0, 2790, 3062, +0, 2790, 3062, +0, 2790, 3062, +0, 2790, 3062, +0, 2790, 3061, +0, 2791, 3061, +0, 2791, 3060, +0, 2792, 3060, +0, 2793, 3059, +0, 2794, 3058, +0, 2796, 3056, +0, 2798, 3054, +0, 2801, 3052, +0, 2805, 3048, +0, 2810, 3043, +0, 2817, 3036, +0, 2826, 3027, +0, 2838, 3014, +0, 2853, 2997, +0, 2872, 2973, +0, 2897, 2938, +0, 2929, 2887, +0, 2968, 2809, +0, 3015, 2676, +0, 3071, 2404, +0, 3137, 0, +0, 3213, 0, +0, 3297, 0, +0, 3390, 0, +0, 3491, 0, +0, 3598, 0, +0, 3710, 0, +0, 2790, 3064, +0, 2790, 3064, +0, 2790, 3063, +0, 2790, 3063, +0, 2791, 3063, +0, 2791, 3063, +0, 2792, 3062, +0, 2792, 3062, +0, 2793, 3061, +0, 2795, 3060, +0, 2796, 3058, +0, 2798, 3056, +0, 2801, 3053, +0, 2805, 3050, +0, 2810, 3045, +0, 2817, 3038, +0, 2826, 3029, +0, 2838, 3016, +0, 2853, 2999, +0, 2873, 2975, +0, 2898, 2940, +0, 2929, 2890, +0, 2968, 2811, +0, 3015, 2680, +0, 3072, 2411, +0, 3137, 0, +0, 3213, 0, +0, 3297, 0, +0, 3390, 0, +0, 3491, 0, +0, 3598, 0, +0, 3710, 0, +0, 2791, 3066, +0, 2791, 3066, +0, 2791, 3066, +0, 2791, 3065, +0, 2791, 3065, +0, 2792, 3065, +0, 2792, 3064, +0, 2793, 3064, +0, 2794, 3063, +0, 2795, 3062, +0, 2797, 3060, +0, 2799, 3058, +0, 2802, 3056, +0, 2806, 3052, +0, 2811, 3047, +0, 2818, 3040, +0, 2827, 3031, +0, 2838, 3019, +0, 2854, 3002, +0, 2873, 2978, +0, 2898, 2943, +0, 2930, 2893, +0, 2968, 2815, +0, 3016, 2685, +0, 3072, 2420, +0, 3138, 0, +0, 3213, 0, +0, 3297, 0, +0, 3390, 0, +0, 3491, 0, +0, 3598, 0, +0, 3710, 0, +0, 2791, 3069, +0, 2791, 3069, +0, 2792, 3069, +0, 2792, 3068, +0, 2792, 3068, +0, 2792, 3068, +0, 2793, 3067, +0, 2794, 3067, +0, 2795, 3066, +0, 2796, 3065, +0, 2798, 3063, +0, 2800, 3061, +0, 2803, 3059, +0, 2807, 3055, +0, 2812, 3050, +0, 2819, 3043, +0, 2827, 3034, +0, 2839, 3022, +0, 2854, 3005, +0, 2874, 2981, +0, 2899, 2947, +0, 2930, 2897, +0, 2969, 2821, +0, 3016, 2692, +0, 3072, 2432, +0, 3138, 0, +0, 3213, 0, +0, 3298, 0, +0, 3391, 0, +0, 3491, 0, +0, 3598, 0, +0, 3710, 0, +0, 2792, 3073, +0, 2792, 3073, +0, 2793, 3073, +0, 2793, 3072, +0, 2793, 3072, +0, 2793, 3072, +0, 2794, 3071, +0, 2795, 3071, +0, 2796, 3070, +0, 2797, 3069, +0, 2799, 3067, +0, 2801, 3065, +0, 2804, 3063, +0, 2808, 3059, +0, 2813, 3054, +0, 2819, 3048, +0, 2828, 3039, +0, 2840, 3026, +0, 2855, 3010, +0, 2875, 2986, +0, 2900, 2952, +0, 2931, 2903, +0, 2970, 2827, +0, 3017, 2701, +0, 3073, 2448, +0, 3138, 0, +0, 3214, 0, +0, 3298, 0, +0, 3391, 0, +0, 3491, 0, +0, 3598, 0, +0, 3710, 0, +0, 2794, 3078, +0, 2794, 3078, +0, 2794, 3078, +0, 2794, 3078, +0, 2794, 3077, +0, 2795, 3077, +0, 2795, 3077, +0, 2796, 3076, +0, 2797, 3075, +0, 2798, 3074, +0, 2800, 3073, +0, 2802, 3071, +0, 2805, 3068, +0, 2809, 3064, +0, 2814, 3060, +0, 2821, 3053, +0, 2830, 3044, +0, 2841, 3032, +0, 2856, 3016, +0, 2876, 2992, +0, 2901, 2959, +0, 2932, 2911, +0, 2970, 2836, +0, 3017, 2713, +0, 3074, 2468, +0, 3139, 1070, +0, 3214, 0, +0, 3298, 0, +0, 3391, 0, +0, 3491, 0, +0, 3598, 0, +0, 3710, 0, +0, 2795, 3085, +0, 2796, 3085, +0, 2796, 3085, +0, 2796, 3085, +0, 2796, 3084, +0, 2797, 3084, +0, 2797, 3084, +0, 2798, 3083, +0, 2799, 3082, +0, 2800, 3081, +0, 2802, 3080, +0, 2804, 3078, +0, 2807, 3075, +0, 2811, 3072, +0, 2816, 3067, +0, 2822, 3060, +0, 2831, 3052, +0, 2843, 3040, +0, 2858, 3023, +0, 2877, 3001, +0, 2902, 2968, +0, 2933, 2920, +0, 2972, 2848, +0, 3019, 2728, +0, 3075, 2494, +0, 3140, 1443, +0, 3215, 0, +0, 3299, 0, +0, 3392, 0, +0, 3492, 0, +0, 3599, 0, +0, 3711, 0, +0, 2798, 3094, +0, 2798, 3094, +0, 2798, 3094, +0, 2798, 3094, +0, 2799, 3093, +0, 2799, 3093, +0, 2800, 3093, +0, 2800, 3092, +0, 2801, 3091, +0, 2802, 3090, +0, 2804, 3089, +0, 2806, 3087, +0, 2809, 3084, +0, 2813, 3081, +0, 2818, 3076, +0, 2825, 3070, +0, 2834, 3062, +0, 2845, 3050, +0, 2860, 3034, +0, 2879, 3011, +0, 2904, 2980, +0, 2935, 2933, +0, 2973, 2863, +0, 3020, 2748, +0, 3076, 2527, +0, 3141, 1697, +0, 3216, 0, +0, 3300, 0, +0, 3392, 0, +0, 3492, 0, +0, 3599, 0, +0, 3711, 0, +0, 2801, 3106, +0, 2801, 3106, +0, 2801, 3106, +0, 2802, 3106, +0, 2802, 3105, +0, 2802, 3105, +0, 2803, 3105, +0, 2803, 3104, +0, 2804, 3103, +0, 2806, 3102, +0, 2807, 3101, +0, 2809, 3099, +0, 2812, 3096, +0, 2816, 3093, +0, 2821, 3089, +0, 2828, 3083, +0, 2837, 3074, +0, 2848, 3063, +0, 2863, 3047, +0, 2882, 3026, +0, 2907, 2995, +0, 2937, 2950, +0, 2976, 2883, +0, 3022, 2773, +0, 3078, 2567, +0, 3143, 1902, +0, 3217, 0, +0, 3301, 0, +0, 3393, 0, +0, 3493, 0, +0, 3599, 0, +0, 3711, 0, +0, 2805, 3121, +0, 2805, 3121, +0, 2806, 3121, +0, 2806, 3121, +0, 2806, 3121, +0, 2806, 3120, +0, 2807, 3120, +0, 2808, 3119, +0, 2809, 3119, +0, 2810, 3118, +0, 2811, 3116, +0, 2814, 3115, +0, 2816, 3112, +0, 2820, 3109, +0, 2825, 3105, +0, 2832, 3099, +0, 2840, 3091, +0, 2852, 3080, +0, 2867, 3065, +0, 2886, 3044, +0, 2910, 3014, +0, 2940, 2972, +0, 2978, 2908, +0, 3025, 2805, +0, 3080, 2615, +0, 3145, 2083, +0, 3219, 0, +0, 3302, 0, +0, 3394, 0, +0, 3494, 0, +0, 3600, 0, +0, 3712, 0, +0, 2811, 3141, +0, 2811, 3141, +0, 2811, 3141, +0, 2811, 3141, +0, 2812, 3141, +0, 2812, 3140, +0, 2813, 3140, +0, 2813, 3139, +0, 2814, 3139, +0, 2815, 3138, +0, 2817, 3136, +0, 2819, 3135, +0, 2822, 3132, +0, 2826, 3129, +0, 2831, 3125, +0, 2837, 3120, +0, 2846, 3112, +0, 2857, 3101, +0, 2872, 3087, +0, 2890, 3067, +0, 2914, 3039, +0, 2945, 2999, +0, 2982, 2939, +0, 3028, 2843, +0, 3083, 2673, +0, 3147, 2248, +0, 3221, 0, +0, 3304, 0, +0, 3396, 0, +0, 3495, 0, +0, 3601, 0, +0, 3713, 0, +1321, 2818, 3166, +1314, 2818, 3166, +1305, 2819, 3166, +1292, 2819, 3166, +1275, 2819, 3166, +1251, 2819, 3165, +1216, 2820, 3165, +1165, 2821, 3165, +1087, 2821, 3164, +956, 2823, 3163, +686, 2824, 3162, +0, 2826, 3160, +0, 2829, 3158, +0, 2833, 3155, +0, 2838, 3151, +0, 2844, 3146, +0, 2853, 3139, +0, 2864, 3129, +0, 2878, 3115, +0, 2897, 3097, +0, 2920, 3071, +0, 2950, 3033, +0, 2987, 2978, +0, 3033, 2891, +0, 3087, 2740, +0, 3151, 2403, +0, 3224, 0, +0, 3307, 0, +0, 3398, 0, +0, 3497, 0, +0, 3603, 0, +0, 3714, 0, +2324, 2828, 3198, +2323, 2828, 3198, +2322, 2828, 3198, +2321, 2828, 3198, +2319, 2829, 3197, +2317, 2829, 3197, +2314, 2830, 3197, +2309, 2830, 3196, +2304, 2831, 3196, +2296, 2832, 3195, +2285, 2834, 3194, +2270, 2836, 3192, +2249, 2839, 3190, +2220, 2842, 3188, +2178, 2847, 3184, +2115, 2853, 3179, +2013, 2862, 3172, +1828, 2872, 3163, +1321, 2887, 3151, +0, 2905, 3134, +0, 2928, 3109, +0, 2957, 3075, +0, 2994, 3025, +0, 3039, 2947, +0, 3092, 2817, +0, 3156, 2552, +0, 3228, 0, +0, 3310, 0, +0, 3401, 0, +0, 3499, 0, +0, 3604, 0, +0, 3715, 0, +2680, 2841, 3237, +2680, 2841, 3237, +2680, 2841, 3237, +2679, 2841, 3237, +2678, 2841, 3237, +2677, 2842, 3236, +2676, 2842, 3236, +2674, 2843, 3236, +2671, 2844, 3235, +2668, 2845, 3234, +2663, 2846, 3233, +2657, 2848, 3232, +2648, 2851, 3230, +2636, 2854, 3228, +2620, 2859, 3224, +2597, 2865, 3220, +2564, 2873, 3214, +2516, 2884, 3205, +2444, 2898, 3194, +2324, 2915, 3178, +2088, 2938, 3157, +1008, 2967, 3126, +0, 3003, 3081, +0, 3047, 3013, +0, 3100, 2903, +0, 3162, 2696, +0, 3233, 2020, +0, 3315, 0, +0, 3404, 0, +0, 3502, 0, +0, 3607, 0, +0, 3717, 0, +2929, 2857, 3285, +2929, 2857, 3285, +2928, 2857, 3285, +2928, 2858, 3284, +2927, 2858, 3284, +2927, 2858, 3284, +2926, 2859, 3284, +2925, 2859, 3283, +2923, 2860, 3283, +2921, 2861, 3282, +2919, 2863, 3281, +2915, 2864, 3280, +2910, 2867, 3278, +2903, 2870, 3276, +2894, 2875, 3273, +2882, 2881, 3269, +2865, 2889, 3264, +2841, 2899, 3256, +2807, 2912, 3246, +2757, 2929, 3232, +2680, 2952, 3213, +2551, 2980, 3186, +2289, 3014, 3147, +0, 3057, 3089, +0, 3109, 2997, +0, 3170, 2837, +0, 3240, 2456, +0, 3320, 0, +0, 3409, 0, +0, 3506, 0, +0, 3610, 0, +0, 3719, 0, +3132, 2878, 3341, +3132, 2878, 3341, +3131, 2878, 3341, +3131, 2879, 3341, +3131, 2879, 3341, +3130, 2879, 3341, +3130, 2880, 3341, +3129, 2880, 3340, +3128, 2881, 3340, +3127, 2882, 3339, +3125, 2883, 3338, +3123, 2885, 3337, +3120, 2888, 3336, +3116, 2891, 3334, +3110, 2895, 3331, +3102, 2901, 3328, +3092, 2908, 3323, +3077, 2918, 3316, +3057, 2931, 3307, +3029, 2947, 3295, +2989, 2969, 3279, +2928, 2996, 3255, +2832, 3029, 3222, +2659, 3071, 3173, +2222, 3121, 3099, +0, 3181, 2975, +0, 3250, 2729, +0, 3328, 1243, +0, 3415, 0, +0, 3511, 0, +0, 3614, 0, +0, 3723, 0, +3310, 2905, 3408, +3310, 2905, 3408, +3310, 2905, 3408, +3310, 2905, 3407, +3310, 2906, 3407, +3309, 2906, 3407, +3309, 2906, 3407, +3309, 2907, 3407, +3308, 2907, 3406, +3307, 2908, 3406, +3306, 2910, 3405, +3304, 2911, 3404, +3302, 2914, 3403, +3300, 2917, 3401, +3296, 2921, 3399, +3291, 2926, 3396, +3284, 2933, 3392, +3274, 2943, 3386, +3262, 2955, 3378, +3244, 2970, 3368, +3219, 2991, 3354, +3183, 3016, 3334, +3131, 3049, 3306, +3050, 3089, 3266, +2912, 3137, 3207, +2620, 3195, 3112, +0, 3262, 2944, +0, 3338, 2528, +0, 3424, 0, +0, 3518, 0, +0, 3619, 0, +0, 3727, 0, +3474, 2938, 3483, +3474, 2938, 3483, +3474, 2939, 3483, +3474, 2939, 3483, +3474, 2939, 3483, +3474, 2939, 3483, +3474, 2940, 3483, +3473, 2940, 3483, +3473, 2941, 3482, +3472, 2942, 3482, +3471, 2943, 3481, +3470, 2944, 3480, +3469, 2947, 3479, +3467, 2949, 3478, +3464, 2953, 3476, +3461, 2958, 3473, +3456, 2965, 3470, +3450, 2973, 3465, +3441, 2985, 3459, +3429, 3000, 3450, +3413, 3019, 3438, +3390, 3043, 3422, +3357, 3073, 3399, +3310, 3111, 3367, +3237, 3157, 3320, +3117, 3213, 3248, +2883, 3277, 3129, +1820, 3351, 2898, +0, 3435, 1907, +0, 3527, 0, +0, 3626, 0, +0, 3732, 0, +3629, 2980, 3568, +3629, 2980, 3568, +3629, 2980, 3568, +3629, 2980, 3568, +3629, 2980, 3568, +3629, 2980, 3568, +3628, 2981, 3568, +3628, 2981, 3568, +3628, 2982, 3567, +3627, 2983, 3567, +3627, 2984, 3566, +3626, 2985, 3566, +3625, 2987, 3565, +3624, 2990, 3564, +3622, 2993, 3562, +3619, 2998, 3560, +3616, 3004, 3557, +3612, 3012, 3553, +3605, 3022, 3548, +3597, 3036, 3541, +3586, 3053, 3531, +3570, 3076, 3518, +3549, 3104, 3500, +3518, 3140, 3474, +3474, 3183, 3437, +3406, 3235, 3382, +3297, 3297, 3297, +3092, 3368, 3151, +2441, 3449, 2828, +0, 3538, 0, +0, 3636, 0, +0, 3740, 0, +3777, 3029, 3662, +3777, 3029, 3662, +3777, 3030, 3662, +3777, 3030, 3661, +3777, 3030, 3661, +3777, 3030, 3661, +3777, 3030, 3661, +3777, 3031, 3661, +3776, 3031, 3661, +3776, 3032, 3660, +3776, 3033, 3660, +3775, 3034, 3660, +3774, 3036, 3659, +3773, 3038, 3658, +3772, 3042, 3657, +3770, 3046, 3655, +3768, 3051, 3652, +3765, 3058, 3649, +3760, 3068, 3645, +3754, 3080, 3639, +3747, 3096, 3632, +3736, 3117, 3621, +3721, 3143, 3606, +3700, 3175, 3586, +3671, 3216, 3558, +3628, 3265, 3516, +3564, 3323, 3455, +3462, 3390, 3356, +3275, 3467, 3178, +2755, 3554, 2715, +0, 3648, 0, +0, 3750, 0, +3921, 3088, 3762, +3921, 3088, 3762, +3921, 3089, 3762, +3921, 3089, 3762, +3921, 3089, 3762, +3921, 3089, 3762, +3921, 3089, 3762, +3921, 3090, 3762, +3920, 3090, 3762, +3920, 3091, 3761, +3920, 3092, 3761, +3919, 3093, 3761, +3919, 3094, 3760, +3918, 3096, 3759, +3917, 3099, 3758, +3916, 3103, 3757, +3914, 3108, 3755, +3912, 3114, 3753, +3909, 3122, 3749, +3905, 3133, 3745, +3899, 3148, 3738, +3891, 3166, 3730, +3881, 3189, 3719, +3866, 3219, 3703, +3846, 3256, 3681, +3817, 3301, 3650, +3776, 3355, 3605, +3715, 3418, 3536, +3617, 3491, 3424, +3441, 3573, 3213, +2987, 3664, 2497, +0, 3762, 0, +4062, 3157, 3869, +4062, 3157, 3869, +4062, 3157, 3869, +4062, 3157, 3869, +4062, 3157, 3869, +4061, 3158, 3869, +4061, 3158, 3869, +4061, 3158, 3869, +4061, 3159, 3869, +4061, 3159, 3869, +4061, 3160, 3869, +4060, 3161, 3868, +4060, 3162, 3868, +4060, 3164, 3867, +4059, 3166, 3866, +4058, 3169, 3865, +4057, 3174, 3864, +4055, 3179, 3862, +4053, 3186, 3859, +4050, 3196, 3856, +4045, 3208, 3851, +4040, 3224, 3844, +4032, 3245, 3835, +4022, 3271, 3823, +4008, 3304, 3806, +3988, 3345, 3783, +3960, 3394, 3750, +3920, 3452, 3701, +3860, 3520, 3626, +3766, 3598, 3502, +3598, 3684, 3255, +3182, 3779, 1720, +4095, 3235, 3982, +4095, 3235, 3982, +4095, 3235, 3982, +4095, 3235, 3982, +4095, 3235, 3982, +4095, 3236, 3982, +4095, 3236, 3982, +4095, 3236, 3982, +4095, 3236, 3982, +4095, 3237, 3981, +4095, 3238, 3981, +4095, 3238, 3981, +4095, 3239, 3981, +4095, 3241, 3980, +4095, 3243, 3979, +4095, 3246, 3979, +4095, 3249, 3978, +4095, 3254, 3976, +4095, 3260, 3974, +4095, 3268, 3971, +4095, 3279, 3967, +4095, 3293, 3962, +4095, 3310, 3956, +4095, 3333, 3946, +4095, 3362, 3934, +4095, 3398, 3916, +4095, 3442, 3891, +4095, 3495, 3856, +4061, 3557, 3804, +4002, 3629, 3724, +3910, 3710, 3589, +3747, 3800, 3306, +4095, 3322, 4095, +4095, 3322, 4095, +4095, 3322, 4095, +4095, 3322, 4095, +4095, 3322, 4095, +4095, 3323, 4095, +4095, 3323, 4095, +4095, 3323, 4095, +4095, 3323, 4095, +4095, 3324, 4095, +4095, 3324, 4095, +4095, 3325, 4095, +4095, 3326, 4095, +4095, 3327, 4095, +4095, 3329, 4095, +4095, 3331, 4095, +4095, 3334, 4095, +4095, 3338, 4094, +4095, 3343, 4093, +4095, 3350, 4090, +4095, 3358, 4088, +4095, 3370, 4084, +4095, 3385, 4079, +4095, 3405, 4071, +4095, 3429, 4062, +4095, 3461, 4049, +4095, 3499, 4030, +4095, 3546, 4005, +4095, 3602, 3968, +4095, 3668, 3914, +4095, 3743, 3829, +4051, 3827, 3684, +0, 2920, 3190, +0, 2920, 3189, +0, 2921, 3189, +0, 2921, 3189, +0, 2921, 3189, +0, 2921, 3189, +0, 2922, 3188, +0, 2922, 3188, +0, 2923, 3187, +0, 2924, 3186, +0, 2925, 3185, +0, 2927, 3184, +0, 2929, 3182, +0, 2932, 3179, +0, 2936, 3175, +0, 2941, 3170, +0, 2948, 3163, +0, 2957, 3154, +0, 2969, 3141, +0, 2984, 3124, +0, 3004, 3099, +0, 3029, 3064, +0, 3060, 3012, +0, 3099, 2932, +0, 3146, 2798, +0, 3203, 2515, +0, 3269, 0, +0, 3344, 0, +0, 3429, 0, +0, 3522, 0, +0, 3622, 0, +0, 3729, 0, +0, 2920, 3190, +0, 2920, 3190, +0, 2921, 3189, +0, 2921, 3189, +0, 2921, 3189, +0, 2921, 3189, +0, 2922, 3189, +0, 2922, 3188, +0, 2923, 3187, +0, 2924, 3187, +0, 2925, 3185, +0, 2927, 3184, +0, 2929, 3182, +0, 2932, 3179, +0, 2936, 3175, +0, 2941, 3170, +0, 2948, 3163, +0, 2957, 3154, +0, 2969, 3142, +0, 2984, 3124, +0, 3004, 3099, +0, 3029, 3064, +0, 3060, 3013, +0, 3099, 2933, +0, 3146, 2798, +0, 3203, 2516, +0, 3269, 0, +0, 3344, 0, +0, 3429, 0, +0, 3522, 0, +0, 3622, 0, +0, 3729, 0, +0, 2920, 3190, +0, 2921, 3190, +0, 2921, 3190, +0, 2921, 3189, +0, 2921, 3189, +0, 2921, 3189, +0, 2922, 3189, +0, 2922, 3188, +0, 2923, 3188, +0, 2924, 3187, +0, 2925, 3186, +0, 2927, 3184, +0, 2929, 3182, +0, 2932, 3179, +0, 2936, 3176, +0, 2941, 3170, +0, 2948, 3164, +0, 2957, 3154, +0, 2969, 3142, +0, 2984, 3124, +0, 3004, 3100, +0, 3029, 3064, +0, 3060, 3013, +0, 3099, 2933, +0, 3146, 2798, +0, 3203, 2517, +0, 3269, 0, +0, 3344, 0, +0, 3429, 0, +0, 3522, 0, +0, 3622, 0, +0, 3729, 0, +0, 2920, 3190, +0, 2921, 3190, +0, 2921, 3190, +0, 2921, 3190, +0, 2921, 3190, +0, 2921, 3189, +0, 2922, 3189, +0, 2922, 3188, +0, 2923, 3188, +0, 2924, 3187, +0, 2925, 3186, +0, 2927, 3184, +0, 2929, 3182, +0, 2932, 3179, +0, 2936, 3176, +0, 2941, 3171, +0, 2948, 3164, +0, 2957, 3155, +0, 2969, 3142, +0, 2984, 3124, +0, 3004, 3100, +0, 3029, 3065, +0, 3060, 3013, +0, 3099, 2933, +0, 3146, 2799, +0, 3203, 2518, +0, 3269, 0, +0, 3344, 0, +0, 3429, 0, +0, 3522, 0, +0, 3622, 0, +0, 3729, 0, +0, 2921, 3190, +0, 2921, 3190, +0, 2921, 3190, +0, 2921, 3190, +0, 2921, 3190, +0, 2921, 3190, +0, 2922, 3189, +0, 2922, 3189, +0, 2923, 3188, +0, 2924, 3187, +0, 2925, 3186, +0, 2927, 3185, +0, 2929, 3183, +0, 2932, 3180, +0, 2936, 3176, +0, 2941, 3171, +0, 2948, 3164, +0, 2957, 3155, +0, 2969, 3142, +0, 2984, 3125, +0, 3004, 3100, +0, 3029, 3065, +0, 3060, 3014, +0, 3099, 2934, +0, 3146, 2799, +0, 3203, 2519, +0, 3269, 0, +0, 3344, 0, +0, 3429, 0, +0, 3522, 0, +0, 3622, 0, +0, 3729, 0, +0, 2921, 3191, +0, 2921, 3191, +0, 2921, 3191, +0, 2921, 3190, +0, 2921, 3190, +0, 2922, 3190, +0, 2922, 3190, +0, 2922, 3189, +0, 2923, 3188, +0, 2924, 3188, +0, 2925, 3187, +0, 2927, 3185, +0, 2929, 3183, +0, 2932, 3180, +0, 2936, 3176, +0, 2941, 3171, +0, 2948, 3165, +0, 2957, 3155, +0, 2969, 3143, +0, 2984, 3125, +0, 3004, 3101, +0, 3029, 3066, +0, 3060, 3014, +0, 3099, 2935, +0, 3146, 2800, +0, 3203, 2521, +0, 3269, 0, +0, 3344, 0, +0, 3429, 0, +0, 3522, 0, +0, 3622, 0, +0, 3729, 0, +0, 2921, 3191, +0, 2921, 3191, +0, 2921, 3191, +0, 2921, 3191, +0, 2921, 3191, +0, 2922, 3190, +0, 2922, 3190, +0, 2923, 3190, +0, 2923, 3189, +0, 2924, 3188, +0, 2925, 3187, +0, 2927, 3186, +0, 2929, 3183, +0, 2932, 3181, +0, 2936, 3177, +0, 2941, 3172, +0, 2948, 3165, +0, 2957, 3156, +0, 2969, 3143, +0, 2984, 3126, +0, 3004, 3101, +0, 3029, 3066, +0, 3060, 3015, +0, 3099, 2936, +0, 3147, 2802, +0, 3203, 2523, +0, 3269, 0, +0, 3344, 0, +0, 3429, 0, +0, 3522, 0, +0, 3623, 0, +0, 3729, 0, +0, 2921, 3192, +0, 2921, 3192, +0, 2921, 3192, +0, 2921, 3192, +0, 2922, 3191, +0, 2922, 3191, +0, 2922, 3191, +0, 2923, 3190, +0, 2923, 3190, +0, 2924, 3189, +0, 2926, 3188, +0, 2927, 3186, +0, 2930, 3184, +0, 2933, 3181, +0, 2936, 3178, +0, 2942, 3173, +0, 2948, 3166, +0, 2957, 3157, +0, 2969, 3144, +0, 2984, 3127, +0, 3004, 3102, +0, 3029, 3067, +0, 3061, 3016, +0, 3099, 2937, +0, 3147, 2803, +0, 3203, 2526, +0, 3269, 0, +0, 3344, 0, +0, 3429, 0, +0, 3522, 0, +0, 3623, 0, +0, 3730, 0, +0, 2921, 3193, +0, 2921, 3193, +0, 2921, 3193, +0, 2922, 3193, +0, 2922, 3192, +0, 2922, 3192, +0, 2922, 3192, +0, 2923, 3191, +0, 2924, 3191, +0, 2925, 3190, +0, 2926, 3189, +0, 2928, 3187, +0, 2930, 3185, +0, 2933, 3182, +0, 2937, 3179, +0, 2942, 3174, +0, 2949, 3167, +0, 2958, 3158, +0, 2969, 3145, +0, 2985, 3128, +0, 3004, 3103, +0, 3029, 3069, +0, 3061, 3017, +0, 3100, 2938, +0, 3147, 2806, +0, 3203, 2530, +0, 3269, 0, +0, 3345, 0, +0, 3429, 0, +0, 3522, 0, +0, 3623, 0, +0, 3730, 0, +0, 2922, 3194, +0, 2922, 3194, +0, 2922, 3194, +0, 2922, 3194, +0, 2922, 3194, +0, 2922, 3193, +0, 2923, 3193, +0, 2923, 3193, +0, 2924, 3192, +0, 2925, 3191, +0, 2926, 3190, +0, 2928, 3188, +0, 2930, 3186, +0, 2933, 3184, +0, 2937, 3180, +0, 2942, 3175, +0, 2949, 3168, +0, 2958, 3159, +0, 2970, 3147, +0, 2985, 3129, +0, 3005, 3105, +0, 3030, 3070, +0, 3061, 3019, +0, 3100, 2941, +0, 3147, 2808, +0, 3203, 2536, +0, 3269, 0, +0, 3345, 0, +0, 3429, 0, +0, 3522, 0, +0, 3623, 0, +0, 3730, 0, +0, 2922, 3196, +0, 2922, 3196, +0, 2922, 3196, +0, 2922, 3196, +0, 2923, 3195, +0, 2923, 3195, +0, 2923, 3195, +0, 2924, 3194, +0, 2924, 3194, +0, 2925, 3193, +0, 2927, 3192, +0, 2928, 3190, +0, 2931, 3188, +0, 2933, 3185, +0, 2937, 3182, +0, 2943, 3177, +0, 2949, 3170, +0, 2958, 3161, +0, 2970, 3148, +0, 2985, 3131, +0, 3005, 3107, +0, 3030, 3072, +0, 3061, 3022, +0, 3100, 2944, +0, 3147, 2812, +0, 3204, 2543, +0, 3269, 0, +0, 3345, 0, +0, 3429, 0, +0, 3522, 0, +0, 3623, 0, +0, 3730, 0, +0, 2923, 3198, +0, 2923, 3198, +0, 2923, 3198, +0, 2923, 3198, +0, 2923, 3198, +0, 2923, 3197, +0, 2924, 3197, +0, 2924, 3197, +0, 2925, 3196, +0, 2926, 3195, +0, 2927, 3194, +0, 2929, 3192, +0, 2931, 3190, +0, 2934, 3188, +0, 2938, 3184, +0, 2943, 3179, +0, 2950, 3172, +0, 2959, 3163, +0, 2971, 3151, +0, 2986, 3134, +0, 3005, 3110, +0, 3030, 3075, +0, 3062, 3025, +0, 3100, 2947, +0, 3148, 2818, +0, 3204, 2552, +0, 3270, 0, +0, 3345, 0, +0, 3430, 0, +0, 3522, 0, +0, 3623, 0, +0, 3730, 0, +0, 2923, 3201, +0, 2923, 3201, +0, 2924, 3201, +0, 2924, 3201, +0, 2924, 3201, +0, 2924, 3200, +0, 2925, 3200, +0, 2925, 3200, +0, 2926, 3199, +0, 2927, 3198, +0, 2928, 3197, +0, 2930, 3195, +0, 2932, 3193, +0, 2935, 3191, +0, 2939, 3187, +0, 2944, 3182, +0, 2951, 3176, +0, 2960, 3167, +0, 2971, 3154, +0, 2986, 3137, +0, 3006, 3113, +0, 3031, 3079, +0, 3062, 3029, +0, 3101, 2953, +0, 3148, 2824, +0, 3204, 2564, +0, 3270, 0, +0, 3345, 0, +0, 3430, 0, +0, 3523, 0, +0, 3623, 0, +0, 3730, 0, +0, 2924, 3205, +0, 2924, 3205, +0, 2925, 3205, +0, 2925, 3205, +0, 2925, 3205, +0, 2925, 3204, +0, 2926, 3204, +0, 2926, 3203, +0, 2927, 3203, +0, 2928, 3202, +0, 2929, 3201, +0, 2931, 3199, +0, 2933, 3197, +0, 2936, 3195, +0, 2940, 3191, +0, 2945, 3186, +0, 2952, 3180, +0, 2961, 3171, +0, 2972, 3159, +0, 2987, 3142, +0, 3007, 3118, +0, 3032, 3084, +0, 3063, 3035, +0, 3102, 2959, +0, 3149, 2833, +0, 3205, 2580, +0, 3271, 0, +0, 3346, 0, +0, 3430, 0, +0, 3523, 0, +0, 3623, 0, +0, 3730, 0, +0, 2926, 3210, +0, 2926, 3210, +0, 2926, 3210, +0, 2926, 3210, +0, 2926, 3210, +0, 2927, 3210, +0, 2927, 3209, +0, 2927, 3209, +0, 2928, 3208, +0, 2929, 3207, +0, 2930, 3206, +0, 2932, 3205, +0, 2934, 3203, +0, 2937, 3200, +0, 2941, 3197, +0, 2946, 3192, +0, 2953, 3185, +0, 2962, 3176, +0, 2973, 3164, +0, 2989, 3148, +0, 3008, 3124, +0, 3033, 3091, +0, 3064, 3043, +0, 3103, 2968, +0, 3150, 2845, +0, 3206, 2601, +0, 3271, 1202, +0, 3346, 0, +0, 3431, 0, +0, 3523, 0, +0, 3624, 0, +0, 3730, 0, +0, 2927, 3217, +0, 2928, 3217, +0, 2928, 3217, +0, 2928, 3217, +0, 2928, 3217, +0, 2928, 3216, +0, 2929, 3216, +0, 2929, 3216, +0, 2930, 3215, +0, 2931, 3214, +0, 2932, 3213, +0, 2934, 3212, +0, 2936, 3210, +0, 2939, 3207, +0, 2943, 3204, +0, 2948, 3199, +0, 2955, 3193, +0, 2963, 3184, +0, 2975, 3172, +0, 2990, 3156, +0, 3010, 3133, +0, 3034, 3100, +0, 3065, 3053, +0, 3104, 2980, +0, 3151, 2860, +0, 3207, 2626, +0, 3272, 1575, +0, 3347, 0, +0, 3431, 0, +0, 3524, 0, +0, 3624, 0, +0, 3731, 0, +0, 2930, 3226, +0, 2930, 3226, +0, 2930, 3226, +0, 2930, 3226, +0, 2930, 3226, +0, 2931, 3226, +0, 2931, 3225, +0, 2932, 3225, +0, 2932, 3224, +0, 2933, 3223, +0, 2934, 3222, +0, 2936, 3221, +0, 2938, 3219, +0, 2941, 3216, +0, 2945, 3213, +0, 2950, 3208, +0, 2957, 3202, +0, 2966, 3194, +0, 2977, 3182, +0, 2992, 3166, +0, 3012, 3144, +0, 3036, 3112, +0, 3067, 3066, +0, 3105, 2995, +0, 3152, 2880, +0, 3208, 2659, +0, 3273, 1829, +0, 3348, 0, +0, 3432, 0, +0, 3524, 0, +0, 3624, 0, +0, 3731, 0, +0, 2933, 3238, +0, 2933, 3238, +0, 2933, 3238, +0, 2933, 3238, +0, 2934, 3238, +0, 2934, 3237, +0, 2934, 3237, +0, 2935, 3237, +0, 2936, 3236, +0, 2936, 3235, +0, 2938, 3234, +0, 2939, 3233, +0, 2941, 3231, +0, 2944, 3229, +0, 2948, 3225, +0, 2953, 3221, +0, 2960, 3215, +0, 2969, 3206, +0, 2980, 3195, +0, 2995, 3179, +0, 3014, 3158, +0, 3039, 3127, +0, 3069, 3082, +0, 3108, 3015, +0, 3154, 2905, +0, 3210, 2699, +0, 3275, 2034, +0, 3349, 0, +0, 3433, 0, +0, 3525, 0, +0, 3625, 0, +0, 3732, 0, +0, 2937, 3254, +0, 2937, 3253, +0, 2938, 3253, +0, 2938, 3253, +0, 2938, 3253, +0, 2938, 3253, +0, 2939, 3252, +0, 2939, 3252, +0, 2940, 3252, +0, 2941, 3251, +0, 2942, 3250, +0, 2943, 3248, +0, 2946, 3247, +0, 2948, 3244, +0, 2952, 3241, +0, 2957, 3237, +0, 2964, 3231, +0, 2973, 3223, +0, 2984, 3212, +0, 2999, 3197, +0, 3018, 3176, +0, 3042, 3147, +0, 3073, 3104, +0, 3110, 3040, +0, 3157, 2937, +0, 3212, 2747, +0, 3277, 2215, +0, 3351, 0, +0, 3434, 0, +0, 3526, 0, +0, 3626, 0, +0, 3732, 0, +0, 2943, 3273, +0, 2943, 3273, +0, 2943, 3273, +0, 2943, 3273, +0, 2944, 3273, +0, 2944, 3273, +0, 2944, 3272, +0, 2945, 3272, +0, 2945, 3271, +0, 2946, 3271, +0, 2947, 3270, +0, 2949, 3268, +0, 2951, 3267, +0, 2954, 3264, +0, 2958, 3261, +0, 2963, 3257, +0, 2969, 3252, +0, 2978, 3244, +0, 2989, 3234, +0, 3004, 3219, +0, 3022, 3199, +0, 3046, 3171, +0, 3077, 3131, +0, 3114, 3071, +0, 3160, 2976, +0, 3215, 2805, +0, 3279, 2380, +0, 3353, 0, +0, 3436, 0, +0, 3528, 0, +0, 3627, 0, +0, 3733, 0, +1458, 2950, 3298, +1453, 2950, 3298, +1446, 2951, 3298, +1437, 2951, 3298, +1424, 2951, 3298, +1407, 2951, 3298, +1383, 2952, 3298, +1348, 2952, 3297, +1297, 2953, 3297, +1219, 2954, 3296, +1088, 2955, 3295, +818, 2956, 3294, +0, 2958, 3292, +0, 2961, 3290, +0, 2965, 3287, +0, 2970, 3283, +0, 2976, 3278, +0, 2985, 3271, +0, 2996, 3261, +0, 3010, 3248, +0, 3029, 3229, +0, 3052, 3203, +0, 3082, 3165, +0, 3119, 3110, +0, 3165, 3023, +0, 3219, 2873, +0, 3283, 2535, +0, 3356, 0, +0, 3439, 0, +0, 3530, 0, +0, 3629, 0, +0, 3735, 0, +2457, 2960, 3330, +2456, 2960, 3330, +2456, 2960, 3330, +2455, 2960, 3330, +2453, 2961, 3330, +2451, 2961, 3330, +2449, 2961, 3329, +2446, 2962, 3329, +2442, 2962, 3328, +2436, 2963, 3328, +2428, 2964, 3327, +2417, 2966, 3326, +2402, 2968, 3324, +2382, 2971, 3322, +2352, 2974, 3320, +2310, 2979, 3316, +2247, 2985, 3311, +2145, 2994, 3304, +1960, 3004, 3295, +1453, 3019, 3283, +0, 3037, 3266, +0, 3060, 3242, +0, 3090, 3207, +0, 3126, 3157, +0, 3171, 3079, +0, 3225, 2949, +0, 3288, 2684, +0, 3360, 0, +0, 3442, 0, +0, 3533, 0, +0, 3631, 0, +0, 3736, 0, +2813, 2973, 3369, +2813, 2973, 3369, +2812, 2973, 3369, +2812, 2973, 3369, +2811, 2973, 3369, +2810, 2974, 3369, +2809, 2974, 3369, +2808, 2974, 3368, +2806, 2975, 3368, +2803, 2976, 3367, +2800, 2977, 3366, +2795, 2978, 3365, +2789, 2980, 3364, +2780, 2983, 3362, +2768, 2987, 3360, +2752, 2991, 3356, +2729, 2997, 3352, +2696, 3005, 3346, +2648, 3016, 3337, +2576, 3030, 3326, +2456, 3048, 3310, +2220, 3070, 3289, +1140, 3099, 3258, +0, 3135, 3213, +0, 3179, 3145, +0, 3232, 3035, +0, 3294, 2828, +0, 3366, 2152, +0, 3447, 0, +0, 3536, 0, +0, 3634, 0, +0, 3739, 0, +3061, 2989, 3417, +3061, 2989, 3417, +3061, 2989, 3417, +3060, 2989, 3417, +3060, 2990, 3417, +3060, 2990, 3416, +3059, 2990, 3416, +3058, 2991, 3416, +3057, 2991, 3415, +3055, 2992, 3415, +3053, 2993, 3414, +3051, 2995, 3413, +3047, 2997, 3412, +3042, 2999, 3410, +3036, 3002, 3408, +3027, 3007, 3405, +3014, 3013, 3401, +2997, 3021, 3396, +2973, 3031, 3388, +2939, 3044, 3378, +2889, 3062, 3364, +2812, 3084, 3345, +2683, 3112, 3318, +2421, 3147, 3279, +0, 3189, 3221, +0, 3241, 3129, +0, 3302, 2969, +0, 3373, 2588, +0, 3452, 0, +0, 3541, 0, +0, 3638, 0, +0, 3742, 0, +3264, 3010, 3474, +3264, 3010, 3474, +3264, 3010, 3473, +3263, 3010, 3473, +3263, 3011, 3473, +3263, 3011, 3473, +3263, 3011, 3473, +3262, 3012, 3473, +3261, 3012, 3472, +3260, 3013, 3472, +3259, 3014, 3471, +3257, 3015, 3470, +3255, 3017, 3469, +3252, 3020, 3468, +3248, 3023, 3466, +3242, 3027, 3463, +3234, 3033, 3460, +3224, 3040, 3455, +3210, 3050, 3448, +3190, 3063, 3440, +3161, 3080, 3427, +3121, 3101, 3411, +3060, 3128, 3387, +2964, 3162, 3354, +2791, 3203, 3305, +2354, 3253, 3231, +0, 3313, 3107, +0, 3382, 2861, +0, 3460, 1375, +0, 3548, 0, +0, 3643, 0, +0, 3746, 0, +3442, 3037, 3540, +3442, 3037, 3540, +3442, 3037, 3540, +3442, 3037, 3540, +3442, 3037, 3540, +3442, 3038, 3539, +3442, 3038, 3539, +3441, 3038, 3539, +3441, 3039, 3539, +3440, 3040, 3538, +3439, 3041, 3538, +3438, 3042, 3537, +3437, 3044, 3536, +3434, 3046, 3535, +3432, 3049, 3533, +3428, 3053, 3531, +3423, 3058, 3528, +3416, 3065, 3524, +3407, 3075, 3518, +3394, 3087, 3511, +3376, 3103, 3500, +3351, 3123, 3486, +3315, 3149, 3466, +3263, 3181, 3438, +3182, 3221, 3398, +3044, 3269, 3339, +2752, 3327, 3244, +0, 3394, 3076, +0, 3470, 2660, +0, 3556, 0, +0, 3650, 0, +0, 3751, 0, +3606, 3070, 3616, +3606, 3070, 3616, +3606, 3071, 3616, +3606, 3071, 3615, +3606, 3071, 3615, +3606, 3071, 3615, +3606, 3071, 3615, +3606, 3072, 3615, +3605, 3072, 3615, +3605, 3073, 3614, +3604, 3074, 3614, +3603, 3075, 3613, +3602, 3077, 3613, +3601, 3079, 3611, +3599, 3082, 3610, +3596, 3085, 3608, +3593, 3090, 3605, +3588, 3097, 3602, +3582, 3106, 3597, +3573, 3117, 3591, +3561, 3132, 3582, +3545, 3151, 3570, +3522, 3175, 3554, +3489, 3205, 3531, +3442, 3243, 3499, +3369, 3289, 3452, +3249, 3345, 3380, +3015, 3409, 3261, +1952, 3483, 3030, +0, 3567, 2039, +0, 3659, 0, +0, 3758, 0, +3761, 3112, 3700, +3761, 3112, 3700, +3761, 3112, 3700, +3761, 3112, 3700, +3761, 3112, 3700, +3761, 3112, 3700, +3761, 3112, 3700, +3760, 3113, 3700, +3760, 3113, 3700, +3760, 3114, 3699, +3759, 3115, 3699, +3759, 3116, 3699, +3758, 3117, 3698, +3757, 3119, 3697, +3756, 3122, 3696, +3754, 3125, 3694, +3751, 3130, 3692, +3748, 3136, 3689, +3744, 3144, 3685, +3738, 3154, 3680, +3729, 3168, 3673, +3718, 3185, 3663, +3702, 3208, 3650, +3681, 3236, 3632, +3650, 3272, 3606, +3606, 3315, 3569, +3538, 3368, 3514, +3429, 3429, 3429, +3224, 3501, 3283, +2573, 3581, 2960, +0, 3671, 0, +0, 3768, 0, +3909, 3161, 3794, +3909, 3161, 3794, +3909, 3162, 3794, +3909, 3162, 3794, +3909, 3162, 3794, +3909, 3162, 3794, +3909, 3162, 3793, +3909, 3162, 3793, +3909, 3163, 3793, +3908, 3163, 3793, +3908, 3164, 3793, +3908, 3165, 3792, +3907, 3166, 3792, +3906, 3168, 3791, +3905, 3171, 3790, +3904, 3174, 3789, +3902, 3178, 3787, +3900, 3183, 3785, +3897, 3190, 3781, +3892, 3200, 3777, +3887, 3212, 3771, +3879, 3228, 3764, +3868, 3249, 3753, +3853, 3275, 3739, +3832, 3307, 3718, +3803, 3348, 3690, +3760, 3397, 3648, +3696, 3455, 3587, +3594, 3522, 3488, +3407, 3599, 3311, +2887, 3686, 2847, +0, 3780, 0, +4053, 3220, 3894, +4053, 3221, 3894, +4053, 3221, 3894, +4053, 3221, 3894, +4053, 3221, 3894, +4053, 3221, 3894, +4053, 3221, 3894, +4053, 3221, 3894, +4053, 3222, 3894, +4052, 3222, 3894, +4052, 3223, 3894, +4052, 3224, 3893, +4052, 3225, 3893, +4051, 3226, 3892, +4050, 3229, 3891, +4049, 3231, 3890, +4048, 3235, 3889, +4046, 3240, 3887, +4044, 3246, 3885, +4041, 3254, 3881, +4037, 3265, 3877, +4031, 3280, 3871, +4023, 3298, 3862, +4013, 3321, 3851, +3998, 3351, 3835, +3978, 3388, 3813, +3950, 3433, 3782, +3908, 3487, 3737, +3847, 3550, 3668, +3749, 3623, 3557, +3573, 3705, 3345, +3119, 3796, 2630, +4095, 3289, 4002, +4095, 3289, 4002, +4095, 3289, 4002, +4095, 3289, 4002, +4095, 3289, 4001, +4095, 3290, 4001, +4095, 3290, 4001, +4095, 3290, 4001, +4095, 3290, 4001, +4095, 3291, 4001, +4095, 3291, 4001, +4095, 3292, 4001, +4095, 3293, 4000, +4095, 3294, 4000, +4095, 3296, 3999, +4095, 3298, 3998, +4095, 3302, 3997, +4095, 3306, 3996, +4095, 3311, 3994, +4095, 3318, 3991, +4095, 3328, 3988, +4095, 3340, 3983, +4095, 3357, 3976, +4095, 3377, 3967, +4095, 3403, 3955, +4095, 3436, 3939, +4095, 3477, 3915, +4092, 3526, 3882, +4052, 3585, 3833, +3993, 3653, 3758, +3898, 3730, 3634, +3730, 3816, 3387, +4095, 3367, 4095, +4095, 3367, 4095, +4095, 3367, 4095, +4095, 3367, 4095, +4095, 3367, 4095, +4095, 3368, 4095, +4095, 3368, 4095, +4095, 3368, 4095, +4095, 3368, 4095, +4095, 3369, 4095, +4095, 3369, 4095, +4095, 3370, 4095, +4095, 3370, 4095, +4095, 3372, 4095, +4095, 3373, 4095, +4095, 3375, 4095, +4095, 3378, 4095, +4095, 3381, 4095, +4095, 3386, 4095, +4095, 3392, 4095, +4095, 3400, 4095, +4095, 3411, 4095, +4095, 3425, 4094, +4095, 3442, 4088, +4095, 3465, 4078, +4095, 3494, 4066, +4095, 3530, 4048, +4095, 3574, 4023, +4095, 3627, 3988, +4095, 3689, 3936, +4095, 3761, 3857, +4042, 3842, 3721, +0, 3052, 3322, +0, 3052, 3322, +0, 3053, 3321, +0, 3053, 3321, +0, 3053, 3321, +0, 3053, 3321, +0, 3053, 3321, +0, 3054, 3320, +0, 3054, 3320, +0, 3055, 3319, +0, 3056, 3318, +0, 3057, 3317, +0, 3059, 3316, +0, 3061, 3314, +0, 3064, 3311, +0, 3068, 3307, +0, 3073, 3302, +0, 3080, 3295, +0, 3089, 3286, +0, 3101, 3273, +0, 3116, 3256, +0, 3136, 3231, +0, 3161, 3196, +0, 3192, 3144, +0, 3231, 3064, +0, 3278, 2929, +0, 3335, 2647, +0, 3401, 0, +0, 3476, 0, +0, 3561, 0, +0, 3654, 0, +0, 3755, 0, +0, 3052, 3322, +0, 3052, 3322, +0, 3053, 3322, +0, 3053, 3321, +0, 3053, 3321, +0, 3053, 3321, +0, 3053, 3321, +0, 3054, 3320, +0, 3054, 3320, +0, 3055, 3319, +0, 3056, 3319, +0, 3057, 3317, +0, 3059, 3316, +0, 3061, 3314, +0, 3064, 3311, +0, 3068, 3307, +0, 3073, 3302, +0, 3080, 3295, +0, 3089, 3286, +0, 3101, 3273, +0, 3116, 3256, +0, 3136, 3231, +0, 3161, 3196, +0, 3192, 3144, +0, 3231, 3065, +0, 3278, 2930, +0, 3335, 2648, +0, 3401, 0, +0, 3476, 0, +0, 3561, 0, +0, 3654, 0, +0, 3755, 0, +0, 3052, 3322, +0, 3052, 3322, +0, 3053, 3322, +0, 3053, 3322, +0, 3053, 3321, +0, 3053, 3321, +0, 3053, 3321, +0, 3054, 3321, +0, 3054, 3320, +0, 3055, 3319, +0, 3056, 3319, +0, 3057, 3318, +0, 3059, 3316, +0, 3061, 3314, +0, 3064, 3311, +0, 3068, 3307, +0, 3073, 3302, +0, 3080, 3296, +0, 3089, 3286, +0, 3101, 3274, +0, 3116, 3256, +0, 3136, 3231, +0, 3161, 3196, +0, 3192, 3145, +0, 3231, 3065, +0, 3278, 2930, +0, 3335, 2648, +0, 3401, 0, +0, 3476, 0, +0, 3561, 0, +0, 3654, 0, +0, 3755, 0, +0, 3052, 3322, +0, 3053, 3322, +0, 3053, 3322, +0, 3053, 3322, +0, 3053, 3322, +0, 3053, 3321, +0, 3053, 3321, +0, 3054, 3321, +0, 3054, 3320, +0, 3055, 3320, +0, 3056, 3319, +0, 3057, 3318, +0, 3059, 3316, +0, 3061, 3314, +0, 3064, 3311, +0, 3068, 3308, +0, 3073, 3303, +0, 3080, 3296, +0, 3089, 3286, +0, 3101, 3274, +0, 3116, 3256, +0, 3136, 3232, +0, 3161, 3197, +0, 3192, 3145, +0, 3231, 3065, +0, 3278, 2930, +0, 3335, 2649, +0, 3401, 0, +0, 3476, 0, +0, 3561, 0, +0, 3654, 0, +0, 3755, 0, +0, 3053, 3322, +0, 3053, 3322, +0, 3053, 3322, +0, 3053, 3322, +0, 3053, 3322, +0, 3053, 3322, +0, 3053, 3321, +0, 3054, 3321, +0, 3054, 3321, +0, 3055, 3320, +0, 3056, 3319, +0, 3057, 3318, +0, 3059, 3316, +0, 3061, 3314, +0, 3064, 3312, +0, 3068, 3308, +0, 3073, 3303, +0, 3080, 3296, +0, 3089, 3287, +0, 3101, 3274, +0, 3116, 3256, +0, 3136, 3232, +0, 3161, 3197, +0, 3192, 3145, +0, 3231, 3065, +0, 3278, 2931, +0, 3335, 2650, +0, 3401, 0, +0, 3476, 0, +0, 3561, 0, +0, 3654, 0, +0, 3755, 0, +0, 3053, 3323, +0, 3053, 3322, +0, 3053, 3322, +0, 3053, 3322, +0, 3053, 3322, +0, 3053, 3322, +0, 3054, 3322, +0, 3054, 3321, +0, 3054, 3321, +0, 3055, 3320, +0, 3056, 3319, +0, 3057, 3318, +0, 3059, 3317, +0, 3061, 3315, +0, 3064, 3312, +0, 3068, 3308, +0, 3073, 3303, +0, 3080, 3296, +0, 3089, 3287, +0, 3101, 3274, +0, 3116, 3257, +0, 3136, 3232, +0, 3161, 3197, +0, 3192, 3146, +0, 3231, 3066, +0, 3279, 2932, +0, 3335, 2651, +0, 3401, 0, +0, 3476, 0, +0, 3561, 0, +0, 3654, 0, +0, 3755, 0, +0, 3053, 3323, +0, 3053, 3323, +0, 3053, 3323, +0, 3053, 3323, +0, 3053, 3323, +0, 3053, 3322, +0, 3054, 3322, +0, 3054, 3322, +0, 3055, 3321, +0, 3055, 3321, +0, 3056, 3320, +0, 3057, 3319, +0, 3059, 3317, +0, 3061, 3315, +0, 3064, 3312, +0, 3068, 3309, +0, 3073, 3304, +0, 3080, 3297, +0, 3089, 3287, +0, 3101, 3275, +0, 3116, 3257, +0, 3136, 3233, +0, 3161, 3198, +0, 3192, 3146, +0, 3231, 3067, +0, 3279, 2932, +0, 3335, 2653, +0, 3401, 0, +0, 3476, 0, +0, 3561, 0, +0, 3654, 0, +0, 3755, 0, +0, 3053, 3323, +0, 3053, 3323, +0, 3053, 3323, +0, 3053, 3323, +0, 3053, 3323, +0, 3053, 3323, +0, 3054, 3323, +0, 3054, 3322, +0, 3055, 3322, +0, 3055, 3321, +0, 3056, 3320, +0, 3058, 3319, +0, 3059, 3318, +0, 3061, 3316, +0, 3064, 3313, +0, 3068, 3309, +0, 3074, 3304, +0, 3080, 3297, +0, 3089, 3288, +0, 3101, 3275, +0, 3116, 3258, +0, 3136, 3233, +0, 3161, 3198, +0, 3192, 3147, +0, 3231, 3068, +0, 3279, 2934, +0, 3335, 2655, +0, 3401, 0, +0, 3476, 0, +0, 3561, 0, +0, 3654, 0, +0, 3755, 0, +0, 3053, 3324, +0, 3053, 3324, +0, 3053, 3324, +0, 3053, 3324, +0, 3053, 3324, +0, 3054, 3324, +0, 3054, 3323, +0, 3054, 3323, +0, 3055, 3322, +0, 3056, 3322, +0, 3057, 3321, +0, 3058, 3320, +0, 3059, 3318, +0, 3062, 3316, +0, 3065, 3314, +0, 3069, 3310, +0, 3074, 3305, +0, 3081, 3298, +0, 3090, 3289, +0, 3101, 3276, +0, 3117, 3259, +0, 3136, 3234, +0, 3161, 3199, +0, 3193, 3148, +0, 3231, 3069, +0, 3279, 2935, +0, 3335, 2658, +0, 3401, 0, +0, 3477, 0, +0, 3561, 0, +0, 3654, 0, +0, 3755, 0, +0, 3053, 3325, +0, 3053, 3325, +0, 3053, 3325, +0, 3054, 3325, +0, 3054, 3325, +0, 3054, 3325, +0, 3054, 3324, +0, 3055, 3324, +0, 3055, 3323, +0, 3056, 3323, +0, 3057, 3322, +0, 3058, 3321, +0, 3060, 3319, +0, 3062, 3317, +0, 3065, 3314, +0, 3069, 3311, +0, 3074, 3306, +0, 3081, 3299, +0, 3090, 3290, +0, 3102, 3277, +0, 3117, 3260, +0, 3136, 3235, +0, 3161, 3201, +0, 3193, 3149, +0, 3232, 3071, +0, 3279, 2938, +0, 3335, 2662, +0, 3401, 0, +0, 3477, 0, +0, 3561, 0, +0, 3654, 0, +0, 3755, 0, +0, 3054, 3326, +0, 3054, 3326, +0, 3054, 3326, +0, 3054, 3326, +0, 3054, 3326, +0, 3054, 3326, +0, 3055, 3326, +0, 3055, 3325, +0, 3055, 3325, +0, 3056, 3324, +0, 3057, 3323, +0, 3058, 3322, +0, 3060, 3321, +0, 3062, 3319, +0, 3065, 3316, +0, 3069, 3312, +0, 3074, 3307, +0, 3081, 3300, +0, 3090, 3291, +0, 3102, 3279, +0, 3117, 3261, +0, 3137, 3237, +0, 3162, 3202, +0, 3193, 3151, +0, 3232, 3073, +0, 3279, 2941, +0, 3335, 2668, +0, 3401, 0, +0, 3477, 0, +0, 3561, 0, +0, 3654, 0, +0, 3755, 0, +0, 3054, 3328, +0, 3054, 3328, +0, 3054, 3328, +0, 3054, 3328, +0, 3054, 3328, +0, 3055, 3327, +0, 3055, 3327, +0, 3055, 3327, +0, 3056, 3326, +0, 3057, 3326, +0, 3057, 3325, +0, 3059, 3324, +0, 3060, 3322, +0, 3063, 3320, +0, 3066, 3318, +0, 3069, 3314, +0, 3075, 3309, +0, 3081, 3302, +0, 3090, 3293, +0, 3102, 3281, +0, 3117, 3263, +0, 3137, 3239, +0, 3162, 3204, +0, 3193, 3154, +0, 3232, 3076, +0, 3279, 2944, +0, 3336, 2675, +0, 3402, 0, +0, 3477, 0, +0, 3561, 0, +0, 3654, 0, +0, 3755, 0, +0, 3055, 3330, +0, 3055, 3330, +0, 3055, 3330, +0, 3055, 3330, +0, 3055, 3330, +0, 3055, 3330, +0, 3056, 3329, +0, 3056, 3329, +0, 3056, 3329, +0, 3057, 3328, +0, 3058, 3327, +0, 3059, 3326, +0, 3061, 3325, +0, 3063, 3323, +0, 3066, 3320, +0, 3070, 3316, +0, 3075, 3311, +0, 3082, 3305, +0, 3091, 3295, +0, 3103, 3283, +0, 3118, 3266, +0, 3137, 3242, +0, 3162, 3207, +0, 3194, 3157, +0, 3233, 3080, +0, 3280, 2950, +0, 3336, 2684, +0, 3402, 0, +0, 3477, 0, +0, 3562, 0, +0, 3655, 0, +0, 3755, 0, +0, 3055, 3333, +0, 3055, 3333, +0, 3055, 3333, +0, 3056, 3333, +0, 3056, 3333, +0, 3056, 3333, +0, 3056, 3332, +0, 3057, 3332, +0, 3057, 3332, +0, 3058, 3331, +0, 3059, 3330, +0, 3060, 3329, +0, 3062, 3328, +0, 3064, 3326, +0, 3067, 3323, +0, 3071, 3319, +0, 3076, 3314, +0, 3083, 3308, +0, 3092, 3299, +0, 3103, 3286, +0, 3119, 3269, +0, 3138, 3245, +0, 3163, 3211, +0, 3194, 3161, +0, 3233, 3085, +0, 3280, 2957, +0, 3336, 2696, +0, 3402, 0, +0, 3477, 0, +0, 3562, 0, +0, 3655, 0, +0, 3755, 0, +0, 3056, 3337, +0, 3056, 3337, +0, 3056, 3337, +0, 3057, 3337, +0, 3057, 3337, +0, 3057, 3337, +0, 3057, 3336, +0, 3058, 3336, +0, 3058, 3336, +0, 3059, 3335, +0, 3060, 3334, +0, 3061, 3333, +0, 3063, 3332, +0, 3065, 3330, +0, 3068, 3327, +0, 3072, 3323, +0, 3077, 3318, +0, 3084, 3312, +0, 3093, 3303, +0, 3104, 3291, +0, 3119, 3274, +0, 3139, 3250, +0, 3164, 3216, +0, 3195, 3167, +0, 3234, 3092, +0, 3281, 2966, +0, 3337, 2712, +0, 3403, 0, +0, 3478, 0, +0, 3562, 0, +0, 3655, 0, +0, 3755, 0, +0, 3058, 3342, +0, 3058, 3342, +0, 3058, 3342, +0, 3058, 3342, +0, 3058, 3342, +0, 3058, 3342, +0, 3059, 3342, +0, 3059, 3341, +0, 3060, 3341, +0, 3060, 3340, +0, 3061, 3339, +0, 3062, 3338, +0, 3064, 3337, +0, 3066, 3335, +0, 3069, 3332, +0, 3073, 3329, +0, 3078, 3324, +0, 3085, 3317, +0, 3094, 3309, +0, 3106, 3296, +0, 3121, 3280, +0, 3140, 3256, +0, 3165, 3223, +0, 3196, 3175, +0, 3235, 3100, +0, 3282, 2977, +0, 3338, 2733, +0, 3403, 1334, +0, 3478, 0, +0, 3563, 0, +0, 3655, 0, +0, 3756, 0, +0, 3059, 3349, +0, 3060, 3349, +0, 3060, 3349, +0, 3060, 3349, +0, 3060, 3349, +0, 3060, 3349, +0, 3060, 3349, +0, 3061, 3348, +0, 3061, 3348, +0, 3062, 3347, +0, 3063, 3346, +0, 3064, 3345, +0, 3066, 3344, +0, 3068, 3342, +0, 3071, 3339, +0, 3075, 3336, +0, 3080, 3331, +0, 3087, 3325, +0, 3096, 3316, +0, 3107, 3304, +0, 3122, 3288, +0, 3142, 3265, +0, 3166, 3232, +0, 3197, 3185, +0, 3236, 3112, +0, 3283, 2993, +0, 3339, 2758, +0, 3404, 1707, +0, 3479, 0, +0, 3563, 0, +0, 3656, 0, +0, 3756, 0, +0, 3062, 3358, +0, 3062, 3358, +0, 3062, 3358, +0, 3062, 3358, +0, 3062, 3358, +0, 3063, 3358, +0, 3063, 3358, +0, 3063, 3357, +0, 3064, 3357, +0, 3064, 3356, +0, 3065, 3355, +0, 3067, 3354, +0, 3068, 3353, +0, 3070, 3351, +0, 3073, 3349, +0, 3077, 3345, +0, 3082, 3341, +0, 3089, 3334, +0, 3098, 3326, +0, 3109, 3314, +0, 3124, 3298, +0, 3144, 3276, +0, 3168, 3244, +0, 3199, 3198, +0, 3238, 3127, +0, 3284, 3012, +0, 3340, 2791, +0, 3405, 1961, +0, 3480, 0, +0, 3564, 0, +0, 3657, 0, +0, 3757, 0, +0, 3065, 3370, +0, 3065, 3370, +0, 3065, 3370, +0, 3065, 3370, +0, 3066, 3370, +0, 3066, 3370, +0, 3066, 3369, +0, 3066, 3369, +0, 3067, 3369, +0, 3068, 3368, +0, 3069, 3367, +0, 3070, 3366, +0, 3071, 3365, +0, 3074, 3363, +0, 3076, 3361, +0, 3080, 3357, +0, 3085, 3353, +0, 3092, 3347, +0, 3101, 3338, +0, 3112, 3327, +0, 3127, 3312, +0, 3146, 3290, +0, 3171, 3259, +0, 3202, 3214, +0, 3240, 3147, +0, 3286, 3037, +0, 3342, 2831, +0, 3407, 2166, +0, 3481, 0, +0, 3565, 0, +0, 3657, 0, +0, 3757, 0, +0, 3069, 3386, +0, 3069, 3386, +0, 3070, 3386, +0, 3070, 3385, +0, 3070, 3385, +0, 3070, 3385, +0, 3070, 3385, +0, 3071, 3385, +0, 3071, 3384, +0, 3072, 3384, +0, 3073, 3383, +0, 3074, 3382, +0, 3076, 3381, +0, 3078, 3379, +0, 3081, 3376, +0, 3084, 3373, +0, 3089, 3369, +0, 3096, 3363, +0, 3105, 3355, +0, 3116, 3344, +0, 3131, 3329, +0, 3150, 3308, +0, 3174, 3279, +0, 3205, 3236, +0, 3243, 3172, +0, 3289, 3069, +0, 3344, 2880, +0, 3409, 2347, +0, 3483, 0, +0, 3567, 0, +0, 3659, 0, +0, 3758, 0, +0, 3075, 3405, +0, 3075, 3405, +0, 3075, 3405, +0, 3075, 3405, +0, 3075, 3405, +0, 3076, 3405, +0, 3076, 3405, +0, 3076, 3404, +0, 3077, 3404, +0, 3077, 3404, +0, 3078, 3403, +0, 3080, 3402, +0, 3081, 3401, +0, 3083, 3399, +0, 3086, 3397, +0, 3090, 3393, +0, 3095, 3389, +0, 3101, 3384, +0, 3110, 3376, +0, 3121, 3366, +0, 3136, 3351, +0, 3155, 3332, +0, 3179, 3304, +0, 3209, 3263, +0, 3246, 3203, +0, 3292, 3108, +0, 3347, 2937, +0, 3411, 2512, +0, 3485, 0, +0, 3568, 0, +0, 3660, 0, +0, 3759, 0, +1593, 3082, 3431, +1590, 3082, 3431, +1585, 3083, 3431, +1578, 3083, 3430, +1569, 3083, 3430, +1556, 3083, 3430, +1539, 3083, 3430, +1515, 3084, 3430, +1480, 3084, 3429, +1429, 3085, 3429, +1351, 3086, 3428, +1220, 3087, 3427, +950, 3088, 3426, +0, 3090, 3424, +0, 3093, 3422, +0, 3097, 3419, +0, 3102, 3415, +0, 3108, 3410, +0, 3117, 3403, +0, 3128, 3393, +0, 3142, 3380, +0, 3161, 3361, +0, 3184, 3335, +0, 3214, 3297, +0, 3252, 3242, +0, 3297, 3155, +0, 3351, 3005, +0, 3415, 2667, +0, 3488, 0, +0, 3571, 0, +0, 3662, 0, +0, 3761, 0, +2589, 3092, 3462, +2589, 3092, 3462, +2588, 3092, 3462, +2588, 3092, 3462, +2587, 3092, 3462, +2585, 3093, 3462, +2584, 3093, 3462, +2581, 3093, 3461, +2578, 3094, 3461, +2574, 3094, 3461, +2568, 3095, 3460, +2560, 3096, 3459, +2549, 3098, 3458, +2534, 3100, 3456, +2514, 3103, 3454, +2484, 3106, 3452, +2442, 3111, 3448, +2379, 3117, 3443, +2277, 3126, 3436, +2092, 3137, 3427, +1586, 3151, 3415, +0, 3169, 3398, +0, 3192, 3374, +0, 3222, 3339, +0, 3258, 3289, +0, 3303, 3211, +0, 3357, 3081, +0, 3420, 2816, +0, 3492, 0, +0, 3574, 0, +0, 3665, 0, +0, 3763, 0, +2945, 3105, 3501, +2945, 3105, 3501, +2945, 3105, 3501, +2944, 3105, 3501, +2944, 3105, 3501, +2943, 3105, 3501, +2942, 3106, 3501, +2941, 3106, 3501, +2940, 3106, 3500, +2938, 3107, 3500, +2935, 3108, 3499, +2932, 3109, 3499, +2927, 3110, 3497, +2921, 3112, 3496, +2912, 3115, 3494, +2900, 3119, 3492, +2884, 3123, 3488, +2861, 3129, 3484, +2828, 3137, 3478, +2780, 3148, 3470, +2708, 3162, 3458, +2588, 3180, 3443, +2352, 3202, 3421, +1272, 3231, 3390, +0, 3267, 3345, +0, 3311, 3277, +0, 3364, 3167, +0, 3426, 2960, +0, 3498, 2284, +0, 3579, 0, +0, 3669, 0, +0, 3766, 0, +3193, 3121, 3549, +3193, 3121, 3549, +3193, 3121, 3549, +3193, 3121, 3549, +3192, 3122, 3549, +3192, 3122, 3549, +3192, 3122, 3548, +3191, 3122, 3548, +3190, 3123, 3548, +3189, 3123, 3548, +3188, 3124, 3547, +3186, 3125, 3546, +3183, 3127, 3545, +3179, 3129, 3544, +3174, 3131, 3543, +3168, 3135, 3540, +3159, 3139, 3537, +3146, 3145, 3533, +3129, 3153, 3528, +3105, 3163, 3520, +3071, 3176, 3510, +3021, 3194, 3496, +2944, 3216, 3477, +2815, 3244, 3450, +2553, 3279, 3411, +0, 3321, 3353, +0, 3373, 3261, +0, 3434, 3101, +0, 3505, 2720, +0, 3585, 0, +0, 3673, 0, +0, 3770, 0, +3396, 3142, 3606, +3396, 3142, 3606, +3396, 3142, 3606, +3396, 3142, 3606, +3396, 3143, 3605, +3395, 3143, 3605, +3395, 3143, 3605, +3395, 3143, 3605, +3394, 3144, 3605, +3393, 3144, 3604, +3392, 3145, 3604, +3391, 3146, 3603, +3389, 3148, 3603, +3387, 3149, 3601, +3384, 3152, 3600, +3380, 3155, 3598, +3374, 3159, 3595, +3367, 3165, 3592, +3356, 3172, 3587, +3342, 3182, 3581, +3322, 3195, 3572, +3294, 3212, 3560, +3253, 3233, 3543, +3192, 3260, 3519, +3096, 3294, 3486, +2923, 3335, 3437, +2486, 3385, 3363, +0, 3445, 3239, +0, 3514, 2993, +0, 3592, 1507, +0, 3680, 0, +0, 3775, 0, +3575, 3169, 3672, +3575, 3169, 3672, +3574, 3169, 3672, +3574, 3169, 3672, +3574, 3169, 3672, +3574, 3169, 3672, +3574, 3170, 3672, +3574, 3170, 3671, +3573, 3170, 3671, +3573, 3171, 3671, +3572, 3172, 3670, +3571, 3173, 3670, +3570, 3174, 3669, +3569, 3176, 3668, +3567, 3178, 3667, +3564, 3181, 3665, +3560, 3185, 3663, +3555, 3190, 3660, +3548, 3198, 3656, +3539, 3207, 3650, +3526, 3219, 3643, +3508, 3235, 3632, +3483, 3255, 3618, +3448, 3281, 3598, +3395, 3313, 3571, +3314, 3353, 3531, +3176, 3401, 3471, +2884, 3459, 3376, +0, 3526, 3208, +0, 3602, 2792, +0, 3688, 0, +0, 3782, 0, +3739, 3202, 3748, +3739, 3202, 3748, +3739, 3203, 3748, +3738, 3203, 3748, +3738, 3203, 3748, +3738, 3203, 3747, +3738, 3203, 3747, +3738, 3203, 3747, +3738, 3204, 3747, +3737, 3204, 3747, +3737, 3205, 3746, +3736, 3206, 3746, +3736, 3207, 3745, +3734, 3209, 3745, +3733, 3211, 3744, +3731, 3214, 3742, +3728, 3217, 3740, +3725, 3222, 3738, +3720, 3229, 3734, +3714, 3238, 3729, +3705, 3249, 3723, +3693, 3264, 3714, +3677, 3283, 3703, +3654, 3307, 3686, +3621, 3338, 3663, +3574, 3375, 3631, +3501, 3422, 3584, +3381, 3477, 3512, +3147, 3541, 3393, +2084, 3616, 3162, +0, 3699, 2171, +0, 3791, 0, +3893, 3244, 3833, +3893, 3244, 3833, +3893, 3244, 3833, +3893, 3244, 3832, +3893, 3244, 3832, +3893, 3244, 3832, +3893, 3244, 3832, +3893, 3244, 3832, +3893, 3245, 3832, +3892, 3245, 3832, +3892, 3246, 3832, +3892, 3247, 3831, +3891, 3248, 3831, +3890, 3249, 3830, +3889, 3251, 3829, +3888, 3254, 3828, +3886, 3257, 3826, +3884, 3262, 3824, +3880, 3268, 3821, +3876, 3276, 3817, +3870, 3286, 3812, +3861, 3300, 3805, +3850, 3318, 3795, +3835, 3340, 3782, +3813, 3368, 3764, +3782, 3404, 3738, +3738, 3447, 3701, +3670, 3500, 3646, +3561, 3561, 3561, +3357, 3633, 3415, +2705, 3713, 3092, +0, 3803, 0, +4041, 3293, 3926, +4041, 3293, 3926, +4041, 3294, 3926, +4041, 3294, 3926, +4041, 3294, 3926, +4041, 3294, 3926, +4041, 3294, 3926, +4041, 3294, 3926, +4041, 3295, 3925, +4041, 3295, 3925, +4041, 3296, 3925, +4040, 3296, 3925, +4040, 3297, 3924, +4039, 3299, 3924, +4039, 3300, 3923, +4038, 3303, 3922, +4036, 3306, 3921, +4034, 3310, 3919, +4032, 3315, 3917, +4029, 3322, 3914, +4025, 3332, 3909, +4019, 3344, 3904, +4011, 3360, 3896, +4000, 3381, 3885, +3985, 3407, 3871, +3964, 3440, 3850, +3935, 3480, 3822, +3892, 3529, 3781, +3829, 3587, 3719, +3726, 3654, 3620, +3539, 3732, 3443, +3019, 3818, 2979, +4095, 3353, 4027, +4095, 3353, 4027, +4095, 3353, 4027, +4095, 3353, 4027, +4095, 3353, 4026, +4095, 3353, 4026, +4095, 3353, 4026, +4095, 3353, 4026, +4095, 3354, 4026, +4095, 3354, 4026, +4095, 3354, 4026, +4095, 3355, 4026, +4095, 3356, 4025, +4095, 3357, 4025, +4095, 3359, 4024, +4095, 3361, 4024, +4095, 3363, 4023, +4095, 3367, 4021, +4095, 3372, 4019, +4095, 3378, 4017, +4095, 3387, 4013, +4095, 3397, 4009, +4095, 3412, 4003, +4095, 3430, 3994, +4095, 3454, 3983, +4095, 3483, 3967, +4095, 3520, 3945, +4082, 3565, 3914, +4041, 3619, 3869, +3979, 3682, 3800, +3881, 3755, 3689, +3706, 3837, 3477, +4095, 3421, 4095, +4095, 3421, 4095, +4095, 3421, 4095, +4095, 3421, 4095, +4095, 3421, 4095, +4095, 3421, 4095, +4095, 3422, 4095, +4095, 3422, 4095, +4095, 3422, 4095, +4095, 3422, 4095, +4095, 3423, 4095, +4095, 3423, 4095, +4095, 3424, 4095, +4095, 3425, 4095, +4095, 3426, 4095, +4095, 3428, 4095, +4095, 3431, 4095, +4095, 3434, 4095, +4095, 3438, 4095, +4095, 3443, 4095, +4095, 3451, 4095, +4095, 3460, 4095, +4095, 3473, 4095, +4095, 3489, 4095, +4095, 3509, 4095, +4095, 3536, 4087, +4095, 3568, 4071, +4095, 3609, 4047, +4095, 3658, 4014, +4095, 3717, 3965, +4095, 3785, 3891, +4030, 3862, 3767, +0, 3184, 3454, +0, 3184, 3454, +0, 3185, 3454, +0, 3185, 3453, +0, 3185, 3453, +0, 3185, 3453, +0, 3185, 3453, +0, 3185, 3453, +0, 3186, 3452, +0, 3186, 3452, +0, 3187, 3451, +0, 3188, 3450, +0, 3189, 3449, +0, 3191, 3448, +0, 3193, 3446, +0, 3196, 3443, +0, 3200, 3439, +0, 3205, 3434, +0, 3212, 3427, +0, 3221, 3418, +0, 3233, 3405, +0, 3248, 3388, +0, 3268, 3363, +0, 3293, 3328, +0, 3324, 3276, +0, 3363, 3196, +0, 3410, 3061, +0, 3467, 2779, +0, 3533, 0, +0, 3608, 0, +0, 3693, 0, +0, 3786, 0, +0, 3184, 3454, +0, 3184, 3454, +0, 3185, 3454, +0, 3185, 3454, +0, 3185, 3453, +0, 3185, 3453, +0, 3185, 3453, +0, 3185, 3453, +0, 3186, 3452, +0, 3186, 3452, +0, 3187, 3451, +0, 3188, 3451, +0, 3189, 3449, +0, 3191, 3448, +0, 3193, 3446, +0, 3196, 3443, +0, 3200, 3439, +0, 3205, 3434, +0, 3212, 3427, +0, 3221, 3418, +0, 3233, 3405, +0, 3248, 3388, +0, 3268, 3363, +0, 3293, 3328, +0, 3324, 3276, +0, 3363, 3196, +0, 3410, 3061, +0, 3467, 2779, +0, 3533, 0, +0, 3608, 0, +0, 3693, 0, +0, 3786, 0, +0, 3184, 3454, +0, 3184, 3454, +0, 3185, 3454, +0, 3185, 3454, +0, 3185, 3454, +0, 3185, 3453, +0, 3185, 3453, +0, 3185, 3453, +0, 3186, 3453, +0, 3186, 3452, +0, 3187, 3451, +0, 3188, 3451, +0, 3189, 3449, +0, 3191, 3448, +0, 3193, 3446, +0, 3196, 3443, +0, 3200, 3439, +0, 3205, 3434, +0, 3212, 3428, +0, 3221, 3418, +0, 3233, 3406, +0, 3248, 3388, +0, 3268, 3363, +0, 3293, 3328, +0, 3324, 3277, +0, 3363, 3197, +0, 3411, 3062, +0, 3467, 2780, +0, 3533, 0, +0, 3608, 0, +0, 3693, 0, +0, 3786, 0, +0, 3184, 3454, +0, 3185, 3454, +0, 3185, 3454, +0, 3185, 3454, +0, 3185, 3454, +0, 3185, 3454, +0, 3185, 3453, +0, 3185, 3453, +0, 3186, 3453, +0, 3186, 3452, +0, 3187, 3452, +0, 3188, 3451, +0, 3189, 3450, +0, 3191, 3448, +0, 3193, 3446, +0, 3196, 3443, +0, 3200, 3440, +0, 3205, 3434, +0, 3212, 3428, +0, 3221, 3418, +0, 3233, 3406, +0, 3248, 3388, +0, 3268, 3364, +0, 3293, 3328, +0, 3324, 3277, +0, 3363, 3197, +0, 3411, 3062, +0, 3467, 2780, +0, 3533, 0, +0, 3608, 0, +0, 3693, 0, +0, 3786, 0, +0, 3184, 3454, +0, 3185, 3454, +0, 3185, 3454, +0, 3185, 3454, +0, 3185, 3454, +0, 3185, 3454, +0, 3185, 3453, +0, 3186, 3453, +0, 3186, 3453, +0, 3186, 3452, +0, 3187, 3452, +0, 3188, 3451, +0, 3189, 3450, +0, 3191, 3448, +0, 3193, 3446, +0, 3196, 3443, +0, 3200, 3440, +0, 3205, 3435, +0, 3212, 3428, +0, 3221, 3419, +0, 3233, 3406, +0, 3248, 3388, +0, 3268, 3364, +0, 3293, 3329, +0, 3324, 3277, +0, 3363, 3197, +0, 3411, 3062, +0, 3467, 2781, +0, 3533, 0, +0, 3608, 0, +0, 3693, 0, +0, 3786, 0, +0, 3185, 3454, +0, 3185, 3454, +0, 3185, 3454, +0, 3185, 3454, +0, 3185, 3454, +0, 3185, 3454, +0, 3185, 3454, +0, 3186, 3453, +0, 3186, 3453, +0, 3186, 3453, +0, 3187, 3452, +0, 3188, 3451, +0, 3189, 3450, +0, 3191, 3448, +0, 3193, 3446, +0, 3196, 3444, +0, 3200, 3440, +0, 3205, 3435, +0, 3212, 3428, +0, 3221, 3419, +0, 3233, 3406, +0, 3248, 3389, +0, 3268, 3364, +0, 3293, 3329, +0, 3324, 3277, +0, 3363, 3198, +0, 3411, 3063, +0, 3467, 2782, +0, 3533, 0, +0, 3608, 0, +0, 3693, 0, +0, 3786, 0, +0, 3185, 3455, +0, 3185, 3455, +0, 3185, 3455, +0, 3185, 3454, +0, 3185, 3454, +0, 3185, 3454, +0, 3185, 3454, +0, 3186, 3454, +0, 3186, 3453, +0, 3187, 3453, +0, 3187, 3452, +0, 3188, 3451, +0, 3189, 3450, +0, 3191, 3449, +0, 3193, 3447, +0, 3196, 3444, +0, 3200, 3440, +0, 3205, 3435, +0, 3212, 3428, +0, 3221, 3419, +0, 3233, 3406, +0, 3248, 3389, +0, 3268, 3364, +0, 3293, 3329, +0, 3324, 3278, +0, 3363, 3198, +0, 3411, 3064, +0, 3467, 2783, +0, 3533, 0, +0, 3609, 0, +0, 3693, 0, +0, 3786, 0, +0, 3185, 3455, +0, 3185, 3455, +0, 3185, 3455, +0, 3185, 3455, +0, 3185, 3455, +0, 3185, 3455, +0, 3185, 3454, +0, 3186, 3454, +0, 3186, 3454, +0, 3187, 3453, +0, 3187, 3453, +0, 3188, 3452, +0, 3190, 3451, +0, 3191, 3449, +0, 3193, 3447, +0, 3196, 3444, +0, 3200, 3441, +0, 3205, 3436, +0, 3212, 3429, +0, 3221, 3420, +0, 3233, 3407, +0, 3248, 3389, +0, 3268, 3365, +0, 3293, 3330, +0, 3324, 3278, +0, 3363, 3199, +0, 3411, 3065, +0, 3467, 2785, +0, 3533, 0, +0, 3609, 0, +0, 3693, 0, +0, 3786, 0, +0, 3185, 3456, +0, 3185, 3456, +0, 3185, 3455, +0, 3185, 3455, +0, 3185, 3455, +0, 3185, 3455, +0, 3186, 3455, +0, 3186, 3455, +0, 3186, 3454, +0, 3187, 3454, +0, 3187, 3453, +0, 3188, 3452, +0, 3190, 3451, +0, 3191, 3450, +0, 3194, 3448, +0, 3197, 3445, +0, 3200, 3441, +0, 3206, 3436, +0, 3212, 3429, +0, 3221, 3420, +0, 3233, 3407, +0, 3248, 3390, +0, 3268, 3365, +0, 3293, 3331, +0, 3325, 3279, +0, 3363, 3200, +0, 3411, 3066, +0, 3467, 2787, +0, 3533, 0, +0, 3609, 0, +0, 3693, 0, +0, 3786, 0, +0, 3185, 3456, +0, 3185, 3456, +0, 3185, 3456, +0, 3185, 3456, +0, 3185, 3456, +0, 3186, 3456, +0, 3186, 3456, +0, 3186, 3455, +0, 3186, 3455, +0, 3187, 3455, +0, 3188, 3454, +0, 3189, 3453, +0, 3190, 3452, +0, 3192, 3450, +0, 3194, 3448, +0, 3197, 3446, +0, 3201, 3442, +0, 3206, 3437, +0, 3213, 3430, +0, 3222, 3421, +0, 3233, 3408, +0, 3249, 3391, +0, 3268, 3366, +0, 3293, 3331, +0, 3325, 3280, +0, 3364, 3201, +0, 3411, 3067, +0, 3467, 2790, +0, 3533, 0, +0, 3609, 0, +0, 3693, 0, +0, 3786, 0, +0, 3185, 3457, +0, 3185, 3457, +0, 3185, 3457, +0, 3185, 3457, +0, 3186, 3457, +0, 3186, 3457, +0, 3186, 3457, +0, 3186, 3456, +0, 3187, 3456, +0, 3187, 3456, +0, 3188, 3455, +0, 3189, 3454, +0, 3190, 3453, +0, 3192, 3451, +0, 3194, 3449, +0, 3197, 3447, +0, 3201, 3443, +0, 3206, 3438, +0, 3213, 3431, +0, 3222, 3422, +0, 3234, 3409, +0, 3249, 3392, +0, 3268, 3368, +0, 3293, 3333, +0, 3325, 3282, +0, 3364, 3203, +0, 3411, 3070, +0, 3467, 2794, +0, 3533, 0, +0, 3609, 0, +0, 3693, 0, +0, 3786, 0, +0, 3186, 3459, +0, 3186, 3458, +0, 3186, 3458, +0, 3186, 3458, +0, 3186, 3458, +0, 3186, 3458, +0, 3186, 3458, +0, 3187, 3458, +0, 3187, 3457, +0, 3188, 3457, +0, 3188, 3456, +0, 3189, 3455, +0, 3190, 3454, +0, 3192, 3453, +0, 3194, 3451, +0, 3197, 3448, +0, 3201, 3444, +0, 3206, 3439, +0, 3213, 3432, +0, 3222, 3423, +0, 3234, 3411, +0, 3249, 3393, +0, 3269, 3369, +0, 3294, 3334, +0, 3325, 3283, +0, 3364, 3205, +0, 3411, 3073, +0, 3468, 2800, +0, 3533, 0, +0, 3609, 0, +0, 3693, 0, +0, 3786, 0, +0, 3186, 3460, +0, 3186, 3460, +0, 3186, 3460, +0, 3186, 3460, +0, 3186, 3460, +0, 3187, 3460, +0, 3187, 3460, +0, 3187, 3459, +0, 3187, 3459, +0, 3188, 3458, +0, 3189, 3458, +0, 3190, 3457, +0, 3191, 3456, +0, 3193, 3454, +0, 3195, 3452, +0, 3198, 3450, +0, 3202, 3446, +0, 3207, 3441, +0, 3214, 3434, +0, 3223, 3425, +0, 3234, 3413, +0, 3250, 3395, +0, 3269, 3371, +0, 3294, 3337, +0, 3325, 3286, +0, 3364, 3208, +0, 3411, 3077, +0, 3468, 2807, +0, 3534, 0, +0, 3609, 0, +0, 3694, 0, +0, 3787, 0, +0, 3187, 3462, +0, 3187, 3462, +0, 3187, 3462, +0, 3187, 3462, +0, 3187, 3462, +0, 3187, 3462, +0, 3187, 3462, +0, 3188, 3462, +0, 3188, 3461, +0, 3189, 3461, +0, 3189, 3460, +0, 3190, 3459, +0, 3191, 3458, +0, 3193, 3457, +0, 3195, 3455, +0, 3198, 3452, +0, 3202, 3448, +0, 3207, 3443, +0, 3214, 3437, +0, 3223, 3428, +0, 3235, 3415, +0, 3250, 3398, +0, 3270, 3374, +0, 3295, 3339, +0, 3326, 3289, +0, 3365, 3212, +0, 3412, 3082, +0, 3468, 2816, +0, 3534, 0, +0, 3609, 0, +0, 3694, 0, +0, 3787, 0, +0, 3187, 3465, +0, 3187, 3465, +0, 3187, 3465, +0, 3188, 3465, +0, 3188, 3465, +0, 3188, 3465, +0, 3188, 3465, +0, 3188, 3465, +0, 3189, 3464, +0, 3189, 3464, +0, 3190, 3463, +0, 3191, 3462, +0, 3192, 3461, +0, 3194, 3460, +0, 3196, 3458, +0, 3199, 3455, +0, 3203, 3451, +0, 3208, 3446, +0, 3215, 3440, +0, 3224, 3431, +0, 3235, 3418, +0, 3251, 3401, +0, 3270, 3377, +0, 3295, 3343, +0, 3326, 3293, +0, 3365, 3217, +0, 3412, 3089, +0, 3469, 2829, +0, 3534, 0, +0, 3610, 0, +0, 3694, 0, +0, 3787, 0, +0, 3188, 3469, +0, 3188, 3469, +0, 3188, 3469, +0, 3189, 3469, +0, 3189, 3469, +0, 3189, 3469, +0, 3189, 3469, +0, 3189, 3468, +0, 3190, 3468, +0, 3190, 3468, +0, 3191, 3467, +0, 3192, 3466, +0, 3193, 3465, +0, 3195, 3464, +0, 3197, 3462, +0, 3200, 3459, +0, 3204, 3455, +0, 3209, 3451, +0, 3216, 3444, +0, 3225, 3435, +0, 3236, 3423, +0, 3252, 3406, +0, 3271, 3382, +0, 3296, 3349, +0, 3327, 3299, +0, 3366, 3224, +0, 3413, 3098, +0, 3469, 2844, +0, 3535, 106, +0, 3610, 0, +0, 3694, 0, +0, 3787, 0, +0, 3190, 3475, +0, 3190, 3475, +0, 3190, 3474, +0, 3190, 3474, +0, 3190, 3474, +0, 3190, 3474, +0, 3190, 3474, +0, 3191, 3474, +0, 3191, 3473, +0, 3192, 3473, +0, 3192, 3472, +0, 3193, 3471, +0, 3195, 3470, +0, 3196, 3469, +0, 3198, 3467, +0, 3201, 3464, +0, 3205, 3461, +0, 3210, 3456, +0, 3217, 3449, +0, 3226, 3441, +0, 3238, 3429, +0, 3253, 3412, +0, 3272, 3389, +0, 3297, 3355, +0, 3328, 3307, +0, 3367, 3233, +0, 3414, 3109, +0, 3470, 2865, +0, 3535, 1466, +0, 3611, 0, +0, 3695, 0, +0, 3788, 0, +0, 3192, 3481, +0, 3192, 3481, +0, 3192, 3481, +0, 3192, 3481, +0, 3192, 3481, +0, 3192, 3481, +0, 3192, 3481, +0, 3193, 3481, +0, 3193, 3480, +0, 3193, 3480, +0, 3194, 3479, +0, 3195, 3478, +0, 3196, 3477, +0, 3198, 3476, +0, 3200, 3474, +0, 3203, 3471, +0, 3207, 3468, +0, 3212, 3463, +0, 3219, 3457, +0, 3228, 3448, +0, 3239, 3436, +0, 3254, 3420, +0, 3274, 3397, +0, 3298, 3364, +0, 3329, 3317, +0, 3368, 3244, +0, 3415, 3125, +0, 3471, 2891, +0, 3536, 1839, +0, 3611, 0, +0, 3695, 0, +0, 3788, 0, +0, 3194, 3491, +0, 3194, 3491, +0, 3194, 3490, +0, 3194, 3490, +0, 3194, 3490, +0, 3194, 3490, +0, 3195, 3490, +0, 3195, 3490, +0, 3195, 3489, +0, 3196, 3489, +0, 3197, 3488, +0, 3197, 3488, +0, 3199, 3487, +0, 3200, 3485, +0, 3202, 3483, +0, 3205, 3481, +0, 3209, 3477, +0, 3214, 3473, +0, 3221, 3466, +0, 3230, 3458, +0, 3241, 3446, +0, 3256, 3430, +0, 3276, 3408, +0, 3300, 3376, +0, 3331, 3330, +0, 3370, 3259, +0, 3416, 3144, +0, 3472, 2923, +0, 3537, 2093, +0, 3612, 0, +0, 3696, 0, +0, 3789, 0, +0, 3197, 3502, +0, 3197, 3502, +0, 3197, 3502, +0, 3197, 3502, +0, 3197, 3502, +0, 3198, 3502, +0, 3198, 3502, +0, 3198, 3502, +0, 3199, 3501, +0, 3199, 3501, +0, 3200, 3500, +0, 3201, 3500, +0, 3202, 3498, +0, 3203, 3497, +0, 3206, 3495, +0, 3209, 3493, +0, 3212, 3489, +0, 3217, 3485, +0, 3224, 3479, +0, 3233, 3471, +0, 3244, 3459, +0, 3259, 3444, +0, 3278, 3422, +0, 3303, 3391, +0, 3334, 3347, +0, 3372, 3279, +0, 3418, 3169, +0, 3474, 2963, +0, 3539, 2299, +0, 3613, 0, +0, 3697, 0, +0, 3790, 0, +0, 3201, 3518, +0, 3201, 3518, +0, 3202, 3518, +0, 3202, 3518, +0, 3202, 3518, +0, 3202, 3517, +0, 3202, 3517, +0, 3202, 3517, +0, 3203, 3517, +0, 3203, 3516, +0, 3204, 3516, +0, 3205, 3515, +0, 3206, 3514, +0, 3208, 3513, +0, 3210, 3511, +0, 3213, 3508, +0, 3216, 3505, +0, 3221, 3501, +0, 3228, 3495, +0, 3237, 3487, +0, 3248, 3476, +0, 3263, 3461, +0, 3282, 3440, +0, 3306, 3411, +0, 3337, 3368, +0, 3375, 3304, +0, 3421, 3201, +0, 3476, 3012, +0, 3541, 2479, +0, 3615, 0, +0, 3699, 0, +0, 3791, 0, +0, 3207, 3538, +0, 3207, 3538, +0, 3207, 3537, +0, 3207, 3537, +0, 3207, 3537, +0, 3207, 3537, +0, 3208, 3537, +0, 3208, 3537, +0, 3208, 3537, +0, 3209, 3536, +0, 3210, 3536, +0, 3210, 3535, +0, 3212, 3534, +0, 3213, 3533, +0, 3215, 3531, +0, 3218, 3529, +0, 3222, 3526, +0, 3227, 3521, +0, 3233, 3516, +0, 3242, 3508, +0, 3253, 3498, +0, 3268, 3483, +0, 3287, 3464, +0, 3311, 3436, +0, 3341, 3395, +0, 3379, 3335, +0, 3424, 3240, +0, 3479, 3069, +0, 3544, 2644, +0, 3617, 0, +0, 3701, 0, +0, 3792, 0, +1728, 3214, 3563, +1725, 3214, 3563, +1722, 3215, 3563, +1717, 3215, 3563, +1710, 3215, 3563, +1701, 3215, 3562, +1688, 3215, 3562, +1671, 3215, 3562, +1647, 3216, 3562, +1612, 3216, 3561, +1562, 3217, 3561, +1483, 3218, 3560, +1352, 3219, 3559, +1082, 3220, 3558, +0, 3223, 3557, +0, 3225, 3554, +0, 3229, 3551, +0, 3234, 3548, +0, 3240, 3542, +0, 3249, 3535, +0, 3260, 3525, +0, 3274, 3512, +0, 3293, 3493, +0, 3317, 3467, +0, 3346, 3429, +0, 3384, 3374, +0, 3429, 3287, +0, 3483, 3137, +0, 3547, 2799, +0, 3620, 0, +0, 3703, 0, +0, 3794, 0, +2722, 3224, 3594, +2721, 3224, 3594, +2721, 3224, 3594, +2720, 3224, 3594, +2720, 3224, 3594, +2719, 3225, 3594, +2717, 3225, 3594, +2716, 3225, 3594, +2713, 3225, 3593, +2710, 3226, 3593, +2706, 3227, 3593, +2700, 3227, 3592, +2692, 3229, 3591, +2681, 3230, 3590, +2666, 3232, 3589, +2646, 3235, 3587, +2617, 3238, 3584, +2574, 3243, 3580, +2511, 3250, 3575, +2410, 3258, 3569, +2224, 3269, 3559, +1718, 3283, 3547, +0, 3301, 3530, +0, 3324, 3506, +0, 3354, 3471, +0, 3390, 3421, +0, 3435, 3343, +0, 3489, 3214, +0, 3552, 2948, +0, 3624, 0, +0, 3706, 0, +0, 3797, 0, +3077, 3237, 3634, +3077, 3237, 3634, +3077, 3237, 3633, +3077, 3237, 3633, +3076, 3237, 3633, +3076, 3237, 3633, +3075, 3237, 3633, +3075, 3238, 3633, +3073, 3238, 3633, +3072, 3239, 3632, +3070, 3239, 3632, +3068, 3240, 3631, +3064, 3241, 3631, +3059, 3243, 3630, +3053, 3245, 3628, +3044, 3247, 3626, +3032, 3251, 3624, +3016, 3255, 3621, +2993, 3262, 3616, +2960, 3270, 3610, +2913, 3280, 3602, +2840, 3294, 3590, +2720, 3312, 3575, +2485, 3335, 3553, +1404, 3363, 3522, +0, 3399, 3477, +0, 3443, 3409, +0, 3496, 3299, +0, 3558, 3092, +0, 3630, 2417, +0, 3711, 0, +0, 3801, 0, +3325, 3253, 3681, +3325, 3253, 3681, +3325, 3253, 3681, +3325, 3253, 3681, +3325, 3254, 3681, +3325, 3254, 3681, +3324, 3254, 3681, +3324, 3254, 3681, +3323, 3254, 3680, +3322, 3255, 3680, +3321, 3255, 3680, +3320, 3256, 3679, +3318, 3257, 3678, +3315, 3259, 3678, +3311, 3261, 3676, +3306, 3263, 3675, +3300, 3267, 3672, +3291, 3271, 3669, +3278, 3277, 3665, +3261, 3285, 3660, +3237, 3295, 3652, +3203, 3308, 3642, +3153, 3326, 3628, +3076, 3348, 3609, +2947, 3376, 3582, +2685, 3411, 3543, +0, 3454, 3485, +0, 3505, 3394, +0, 3566, 3233, +0, 3637, 2852, +0, 3717, 0, +0, 3805, 0, +3528, 3274, 3738, +3528, 3274, 3738, +3528, 3274, 3738, +3528, 3274, 3738, +3528, 3275, 3738, +3528, 3275, 3738, +3527, 3275, 3737, +3527, 3275, 3737, +3527, 3275, 3737, +3526, 3276, 3737, +3525, 3276, 3737, +3525, 3277, 3736, +3523, 3278, 3735, +3522, 3280, 3735, +3519, 3281, 3734, +3516, 3284, 3732, +3512, 3287, 3730, +3506, 3291, 3728, +3499, 3297, 3724, +3488, 3305, 3719, +3474, 3314, 3713, +3454, 3327, 3704, +3426, 3344, 3692, +3385, 3365, 3675, +3324, 3392, 3652, +3228, 3426, 3618, +3055, 3467, 3570, +2618, 3517, 3495, +0, 3577, 3371, +0, 3646, 3125, +0, 3724, 1639, +0, 3812, 0, +3707, 3301, 3804, +3707, 3301, 3804, +3707, 3301, 3804, +3707, 3301, 3804, +3707, 3301, 3804, +3706, 3301, 3804, +3706, 3302, 3804, +3706, 3302, 3804, +3706, 3302, 3803, +3705, 3303, 3803, +3705, 3303, 3803, +3704, 3304, 3803, +3703, 3305, 3802, +3702, 3306, 3801, +3701, 3308, 3800, +3699, 3310, 3799, +3696, 3313, 3797, +3692, 3317, 3795, +3687, 3323, 3792, +3680, 3330, 3788, +3671, 3339, 3782, +3658, 3351, 3775, +3640, 3367, 3764, +3615, 3387, 3750, +3580, 3413, 3730, +3527, 3445, 3703, +3446, 3485, 3663, +3308, 3533, 3603, +3017, 3591, 3508, +0, 3658, 3340, +0, 3734, 2924, +0, 3820, 0, +3871, 3334, 3880, +3871, 3334, 3880, +3871, 3335, 3880, +3871, 3335, 3880, +3871, 3335, 3880, +3871, 3335, 3880, +3870, 3335, 3880, +3870, 3335, 3879, +3870, 3335, 3879, +3870, 3336, 3879, +3869, 3336, 3879, +3869, 3337, 3879, +3868, 3338, 3878, +3868, 3339, 3878, +3867, 3341, 3877, +3865, 3343, 3876, +3863, 3346, 3874, +3861, 3349, 3872, +3857, 3354, 3870, +3852, 3361, 3866, +3846, 3370, 3862, +3837, 3381, 3855, +3825, 3396, 3846, +3809, 3415, 3835, +3786, 3439, 3818, +3753, 3470, 3796, +3706, 3507, 3763, +3633, 3554, 3716, +3513, 3609, 3644, +3279, 3673, 3525, +2216, 3748, 3294, +0, 3831, 2303, +4025, 3376, 3965, +4025, 3376, 3965, +4025, 3376, 3965, +4025, 3376, 3965, +4025, 3376, 3965, +4025, 3376, 3965, +4025, 3376, 3964, +4025, 3376, 3964, +4025, 3377, 3964, +4025, 3377, 3964, +4024, 3377, 3964, +4024, 3378, 3964, +4024, 3379, 3963, +4023, 3380, 3963, +4022, 3381, 3962, +4021, 3383, 3961, +4020, 3386, 3960, +4018, 3389, 3958, +4016, 3394, 3956, +4012, 3400, 3953, +4008, 3408, 3950, +4002, 3418, 3944, +3993, 3432, 3937, +3982, 3450, 3928, +3967, 3472, 3914, +3945, 3501, 3896, +3914, 3536, 3870, +3870, 3579, 3833, +3803, 3632, 3779, +3693, 3693, 3693, +3489, 3765, 3547, +2837, 3845, 3224, +4095, 3425, 4058, +4095, 3426, 4058, +4095, 3426, 4058, +4095, 3426, 4058, +4095, 3426, 4058, +4095, 3426, 4058, +4095, 3426, 4058, +4095, 3426, 4058, +4095, 3426, 4058, +4095, 3427, 4057, +4095, 3427, 4057, +4095, 3428, 4057, +4095, 3428, 4057, +4095, 3429, 4056, +4095, 3431, 4056, +4095, 3432, 4055, +4095, 3435, 4054, +4095, 3438, 4053, +4095, 3442, 4051, +4095, 3447, 4049, +4095, 3455, 4046, +4095, 3464, 4041, +4095, 3476, 4036, +4095, 3492, 4028, +4095, 3513, 4017, +4095, 3539, 4003, +4095, 3572, 3982, +4067, 3612, 3954, +4024, 3661, 3913, +3961, 3719, 3851, +3858, 3787, 3752, +3671, 3864, 3575, +4095, 3485, 4095, +4095, 3485, 4095, +4095, 3485, 4095, +4095, 3485, 4095, +4095, 3485, 4095, +4095, 3485, 4095, +4095, 3485, 4095, +4095, 3485, 4095, +4095, 3485, 4095, +4095, 3486, 4095, +4095, 3486, 4095, +4095, 3486, 4095, +4095, 3487, 4095, +4095, 3488, 4095, +4095, 3489, 4095, +4095, 3491, 4095, +4095, 3493, 4095, +4095, 3495, 4095, +4095, 3499, 4095, +4095, 3504, 4095, +4095, 3510, 4095, +4095, 3519, 4095, +4095, 3530, 4095, +4095, 3544, 4095, +4095, 3562, 4095, +4095, 3586, 4095, +4095, 3615, 4095, +4095, 3652, 4077, +4095, 3697, 4046, +4095, 3751, 4001, +4095, 3814, 3932, +4014, 3887, 3821, +0, 3316, 3586, +0, 3316, 3586, +0, 3317, 3586, +0, 3317, 3586, +0, 3317, 3586, +0, 3317, 3585, +0, 3317, 3585, +0, 3317, 3585, +0, 3317, 3585, +0, 3318, 3584, +0, 3318, 3584, +0, 3319, 3583, +0, 3320, 3582, +0, 3321, 3581, +0, 3323, 3580, +0, 3325, 3578, +0, 3328, 3575, +0, 3332, 3571, +0, 3337, 3566, +0, 3344, 3559, +0, 3353, 3550, +0, 3365, 3537, +0, 3380, 3520, +0, 3400, 3495, +0, 3425, 3460, +0, 3456, 3408, +0, 3495, 3328, +0, 3543, 3193, +0, 3599, 2911, +0, 3665, 0, +0, 3740, 0, +0, 3825, 0, +0, 3316, 3586, +0, 3316, 3586, +0, 3317, 3586, +0, 3317, 3586, +0, 3317, 3586, +0, 3317, 3585, +0, 3317, 3585, +0, 3317, 3585, +0, 3317, 3585, +0, 3318, 3585, +0, 3318, 3584, +0, 3319, 3583, +0, 3320, 3583, +0, 3321, 3581, +0, 3323, 3580, +0, 3325, 3578, +0, 3328, 3575, +0, 3332, 3571, +0, 3337, 3566, +0, 3344, 3559, +0, 3353, 3550, +0, 3365, 3537, +0, 3380, 3520, +0, 3400, 3495, +0, 3425, 3460, +0, 3456, 3408, +0, 3495, 3328, +0, 3543, 3193, +0, 3599, 2911, +0, 3665, 0, +0, 3741, 0, +0, 3825, 0, +0, 3316, 3586, +0, 3316, 3586, +0, 3317, 3586, +0, 3317, 3586, +0, 3317, 3586, +0, 3317, 3586, +0, 3317, 3585, +0, 3317, 3585, +0, 3318, 3585, +0, 3318, 3585, +0, 3318, 3584, +0, 3319, 3583, +0, 3320, 3583, +0, 3321, 3581, +0, 3323, 3580, +0, 3325, 3578, +0, 3328, 3575, +0, 3332, 3571, +0, 3337, 3566, +0, 3344, 3560, +0, 3353, 3550, +0, 3365, 3538, +0, 3380, 3520, +0, 3400, 3495, +0, 3425, 3460, +0, 3456, 3408, +0, 3495, 3329, +0, 3543, 3194, +0, 3599, 2911, +0, 3665, 0, +0, 3741, 0, +0, 3825, 0, +0, 3316, 3586, +0, 3317, 3586, +0, 3317, 3586, +0, 3317, 3586, +0, 3317, 3586, +0, 3317, 3586, +0, 3317, 3585, +0, 3317, 3585, +0, 3318, 3585, +0, 3318, 3585, +0, 3318, 3584, +0, 3319, 3584, +0, 3320, 3583, +0, 3321, 3582, +0, 3323, 3580, +0, 3325, 3578, +0, 3328, 3575, +0, 3332, 3571, +0, 3337, 3566, +0, 3344, 3560, +0, 3353, 3550, +0, 3365, 3538, +0, 3380, 3520, +0, 3400, 3495, +0, 3425, 3460, +0, 3456, 3409, +0, 3495, 3329, +0, 3543, 3194, +0, 3599, 2912, +0, 3665, 0, +0, 3741, 0, +0, 3825, 0, +0, 3317, 3586, +0, 3317, 3586, +0, 3317, 3586, +0, 3317, 3586, +0, 3317, 3586, +0, 3317, 3586, +0, 3317, 3586, +0, 3317, 3585, +0, 3318, 3585, +0, 3318, 3585, +0, 3318, 3584, +0, 3319, 3584, +0, 3320, 3583, +0, 3321, 3582, +0, 3323, 3580, +0, 3325, 3578, +0, 3328, 3575, +0, 3332, 3572, +0, 3337, 3567, +0, 3344, 3560, +0, 3353, 3551, +0, 3365, 3538, +0, 3380, 3520, +0, 3400, 3496, +0, 3425, 3460, +0, 3456, 3409, +0, 3495, 3329, +0, 3543, 3194, +0, 3599, 2912, +0, 3665, 0, +0, 3741, 0, +0, 3825, 0, +0, 3317, 3586, +0, 3317, 3586, +0, 3317, 3586, +0, 3317, 3586, +0, 3317, 3586, +0, 3317, 3586, +0, 3317, 3586, +0, 3317, 3586, +0, 3318, 3585, +0, 3318, 3585, +0, 3319, 3584, +0, 3319, 3584, +0, 3320, 3583, +0, 3321, 3582, +0, 3323, 3580, +0, 3325, 3578, +0, 3328, 3576, +0, 3332, 3572, +0, 3337, 3567, +0, 3344, 3560, +0, 3353, 3551, +0, 3365, 3538, +0, 3380, 3520, +0, 3400, 3496, +0, 3425, 3461, +0, 3456, 3409, +0, 3495, 3329, +0, 3543, 3194, +0, 3599, 2913, +0, 3665, 0, +0, 3741, 0, +0, 3825, 0, +0, 3317, 3586, +0, 3317, 3586, +0, 3317, 3586, +0, 3317, 3586, +0, 3317, 3586, +0, 3317, 3586, +0, 3317, 3586, +0, 3317, 3586, +0, 3318, 3586, +0, 3318, 3585, +0, 3319, 3585, +0, 3319, 3584, +0, 3320, 3583, +0, 3321, 3582, +0, 3323, 3581, +0, 3325, 3579, +0, 3328, 3576, +0, 3332, 3572, +0, 3337, 3567, +0, 3344, 3560, +0, 3353, 3551, +0, 3365, 3538, +0, 3380, 3521, +0, 3400, 3496, +0, 3425, 3461, +0, 3456, 3409, +0, 3495, 3330, +0, 3543, 3195, +0, 3599, 2914, +0, 3665, 0, +0, 3741, 0, +0, 3825, 0, +0, 3317, 3587, +0, 3317, 3587, +0, 3317, 3587, +0, 3317, 3587, +0, 3317, 3587, +0, 3317, 3586, +0, 3317, 3586, +0, 3317, 3586, +0, 3318, 3586, +0, 3318, 3585, +0, 3319, 3585, +0, 3319, 3584, +0, 3320, 3584, +0, 3322, 3582, +0, 3323, 3581, +0, 3325, 3579, +0, 3328, 3576, +0, 3332, 3572, +0, 3338, 3567, +0, 3344, 3561, +0, 3353, 3551, +0, 3365, 3539, +0, 3380, 3521, +0, 3400, 3496, +0, 3425, 3461, +0, 3456, 3410, +0, 3495, 3330, +0, 3543, 3196, +0, 3599, 2915, +0, 3665, 0, +0, 3741, 0, +0, 3825, 0, +0, 3317, 3587, +0, 3317, 3587, +0, 3317, 3587, +0, 3317, 3587, +0, 3317, 3587, +0, 3317, 3587, +0, 3317, 3587, +0, 3318, 3587, +0, 3318, 3586, +0, 3318, 3586, +0, 3319, 3585, +0, 3319, 3585, +0, 3320, 3584, +0, 3322, 3583, +0, 3323, 3581, +0, 3326, 3579, +0, 3328, 3576, +0, 3332, 3573, +0, 3338, 3568, +0, 3344, 3561, +0, 3353, 3552, +0, 3365, 3539, +0, 3380, 3521, +0, 3400, 3497, +0, 3425, 3462, +0, 3457, 3410, +0, 3495, 3331, +0, 3543, 3197, +0, 3599, 2917, +0, 3665, 0, +0, 3741, 0, +0, 3825, 0, +0, 3317, 3588, +0, 3317, 3588, +0, 3317, 3588, +0, 3317, 3588, +0, 3317, 3587, +0, 3317, 3587, +0, 3317, 3587, +0, 3318, 3587, +0, 3318, 3587, +0, 3318, 3586, +0, 3319, 3586, +0, 3320, 3585, +0, 3321, 3584, +0, 3322, 3583, +0, 3323, 3582, +0, 3326, 3580, +0, 3329, 3577, +0, 3333, 3573, +0, 3338, 3568, +0, 3345, 3561, +0, 3354, 3552, +0, 3365, 3540, +0, 3381, 3522, +0, 3400, 3498, +0, 3425, 3463, +0, 3457, 3411, +0, 3496, 3332, +0, 3543, 3198, +0, 3599, 2919, +0, 3665, 0, +0, 3741, 0, +0, 3825, 0, +0, 3317, 3588, +0, 3317, 3588, +0, 3317, 3588, +0, 3317, 3588, +0, 3317, 3588, +0, 3317, 3588, +0, 3318, 3588, +0, 3318, 3588, +0, 3318, 3587, +0, 3319, 3587, +0, 3319, 3587, +0, 3320, 3586, +0, 3321, 3585, +0, 3322, 3584, +0, 3324, 3583, +0, 3326, 3580, +0, 3329, 3578, +0, 3333, 3574, +0, 3338, 3569, +0, 3345, 3562, +0, 3354, 3553, +0, 3365, 3540, +0, 3381, 3523, +0, 3400, 3498, +0, 3425, 3464, +0, 3457, 3412, +0, 3496, 3333, +0, 3543, 3200, +0, 3599, 2922, +0, 3665, 0, +0, 3741, 0, +0, 3825, 0, +0, 3317, 3589, +0, 3317, 3589, +0, 3317, 3589, +0, 3317, 3589, +0, 3318, 3589, +0, 3318, 3589, +0, 3318, 3589, +0, 3318, 3589, +0, 3318, 3588, +0, 3319, 3588, +0, 3319, 3588, +0, 3320, 3587, +0, 3321, 3586, +0, 3322, 3585, +0, 3324, 3583, +0, 3326, 3581, +0, 3329, 3579, +0, 3333, 3575, +0, 3338, 3570, +0, 3345, 3563, +0, 3354, 3554, +0, 3366, 3541, +0, 3381, 3524, +0, 3401, 3500, +0, 3426, 3465, +0, 3457, 3414, +0, 3496, 3335, +0, 3543, 3202, +0, 3600, 2927, +0, 3665, 0, +0, 3741, 0, +0, 3825, 0, +0, 3318, 3591, +0, 3318, 3591, +0, 3318, 3591, +0, 3318, 3590, +0, 3318, 3590, +0, 3318, 3590, +0, 3318, 3590, +0, 3318, 3590, +0, 3319, 3590, +0, 3319, 3589, +0, 3320, 3589, +0, 3320, 3588, +0, 3321, 3587, +0, 3323, 3586, +0, 3324, 3585, +0, 3326, 3583, +0, 3329, 3580, +0, 3333, 3576, +0, 3338, 3571, +0, 3345, 3565, +0, 3354, 3555, +0, 3366, 3543, +0, 3381, 3525, +0, 3401, 3501, +0, 3426, 3466, +0, 3457, 3415, +0, 3496, 3337, +0, 3543, 3205, +0, 3600, 2932, +0, 3666, 0, +0, 3741, 0, +0, 3826, 0, +0, 3318, 3592, +0, 3318, 3592, +0, 3318, 3592, +0, 3318, 3592, +0, 3318, 3592, +0, 3318, 3592, +0, 3319, 3592, +0, 3319, 3592, +0, 3319, 3591, +0, 3320, 3591, +0, 3320, 3591, +0, 3321, 3590, +0, 3322, 3589, +0, 3323, 3588, +0, 3325, 3586, +0, 3327, 3584, +0, 3330, 3582, +0, 3334, 3578, +0, 3339, 3573, +0, 3346, 3566, +0, 3355, 3557, +0, 3366, 3545, +0, 3382, 3527, +0, 3401, 3503, +0, 3426, 3469, +0, 3458, 3418, +0, 3496, 3340, +0, 3544, 3209, +0, 3600, 2939, +0, 3666, 0, +0, 3741, 0, +0, 3826, 0, +0, 3319, 3595, +0, 3319, 3595, +0, 3319, 3594, +0, 3319, 3594, +0, 3319, 3594, +0, 3319, 3594, +0, 3319, 3594, +0, 3319, 3594, +0, 3320, 3594, +0, 3320, 3593, +0, 3321, 3593, +0, 3321, 3592, +0, 3322, 3591, +0, 3324, 3590, +0, 3325, 3589, +0, 3327, 3587, +0, 3330, 3584, +0, 3334, 3580, +0, 3339, 3575, +0, 3346, 3569, +0, 3355, 3560, +0, 3367, 3547, +0, 3382, 3530, +0, 3402, 3506, +0, 3427, 3472, +0, 3458, 3421, +0, 3497, 3344, +0, 3544, 3214, +0, 3600, 2948, +0, 3666, 0, +0, 3741, 0, +0, 3826, 0, +0, 3319, 3598, +0, 3319, 3597, +0, 3320, 3597, +0, 3320, 3597, +0, 3320, 3597, +0, 3320, 3597, +0, 3320, 3597, +0, 3320, 3597, +0, 3320, 3597, +0, 3321, 3596, +0, 3321, 3596, +0, 3322, 3595, +0, 3323, 3594, +0, 3324, 3593, +0, 3326, 3592, +0, 3328, 3590, +0, 3331, 3587, +0, 3335, 3583, +0, 3340, 3579, +0, 3347, 3572, +0, 3356, 3563, +0, 3368, 3550, +0, 3383, 3533, +0, 3402, 3510, +0, 3427, 3475, +0, 3459, 3426, +0, 3497, 3349, +0, 3544, 3221, +0, 3601, 2961, +0, 3666, 0, +0, 3742, 0, +0, 3826, 0, +0, 3320, 3601, +0, 3320, 3601, +0, 3321, 3601, +0, 3321, 3601, +0, 3321, 3601, +0, 3321, 3601, +0, 3321, 3601, +0, 3321, 3601, +0, 3321, 3601, +0, 3322, 3600, +0, 3322, 3600, +0, 3323, 3599, +0, 3324, 3598, +0, 3325, 3597, +0, 3327, 3596, +0, 3329, 3594, +0, 3332, 3591, +0, 3336, 3587, +0, 3341, 3583, +0, 3348, 3576, +0, 3357, 3567, +0, 3368, 3555, +0, 3384, 3538, +0, 3403, 3514, +0, 3428, 3481, +0, 3459, 3431, +0, 3498, 3356, +0, 3545, 3230, +0, 3601, 2976, +0, 3667, 238, +0, 3742, 0, +0, 3826, 0, +0, 3322, 3607, +0, 3322, 3607, +0, 3322, 3607, +0, 3322, 3607, +0, 3322, 3606, +0, 3322, 3606, +0, 3322, 3606, +0, 3323, 3606, +0, 3323, 3606, +0, 3323, 3605, +0, 3324, 3605, +0, 3324, 3604, +0, 3325, 3604, +0, 3327, 3603, +0, 3328, 3601, +0, 3330, 3599, +0, 3333, 3596, +0, 3337, 3593, +0, 3342, 3588, +0, 3349, 3582, +0, 3358, 3573, +0, 3370, 3561, +0, 3385, 3544, +0, 3404, 3521, +0, 3429, 3487, +0, 3460, 3439, +0, 3499, 3365, +0, 3546, 3241, +0, 3602, 2997, +0, 3668, 1599, +0, 3743, 0, +0, 3827, 0, +0, 3324, 3614, +0, 3324, 3614, +0, 3324, 3614, +0, 3324, 3613, +0, 3324, 3613, +0, 3324, 3613, +0, 3324, 3613, +0, 3324, 3613, +0, 3325, 3613, +0, 3325, 3612, +0, 3326, 3612, +0, 3326, 3611, +0, 3327, 3611, +0, 3328, 3609, +0, 3330, 3608, +0, 3332, 3606, +0, 3335, 3603, +0, 3339, 3600, +0, 3344, 3595, +0, 3351, 3589, +0, 3360, 3580, +0, 3371, 3568, +0, 3386, 3552, +0, 3406, 3529, +0, 3431, 3496, +0, 3462, 3449, +0, 3500, 3376, +0, 3547, 3257, +0, 3603, 3023, +0, 3668, 1971, +0, 3743, 0, +0, 3827, 0, +0, 3326, 3623, +0, 3326, 3623, +0, 3326, 3623, +0, 3326, 3623, +0, 3326, 3622, +0, 3326, 3622, +0, 3327, 3622, +0, 3327, 3622, +0, 3327, 3622, +0, 3327, 3621, +0, 3328, 3621, +0, 3329, 3620, +0, 3330, 3620, +0, 3331, 3619, +0, 3332, 3617, +0, 3335, 3615, +0, 3337, 3613, +0, 3341, 3609, +0, 3346, 3605, +0, 3353, 3598, +0, 3362, 3590, +0, 3374, 3578, +0, 3388, 3562, +0, 3408, 3540, +0, 3432, 3508, +0, 3463, 3462, +0, 3502, 3392, +0, 3548, 3276, +0, 3604, 3055, +0, 3669, 2225, +0, 3744, 0, +0, 3828, 0, +0, 3329, 3635, +0, 3329, 3635, +0, 3329, 3634, +0, 3329, 3634, +0, 3329, 3634, +0, 3330, 3634, +0, 3330, 3634, +0, 3330, 3634, +0, 3330, 3634, +0, 3331, 3633, +0, 3331, 3633, +0, 3332, 3632, +0, 3333, 3632, +0, 3334, 3631, +0, 3336, 3629, +0, 3338, 3627, +0, 3341, 3625, +0, 3344, 3622, +0, 3349, 3617, +0, 3356, 3611, +0, 3365, 3603, +0, 3376, 3591, +0, 3391, 3576, +0, 3410, 3554, +0, 3435, 3523, +0, 3466, 3479, +0, 3504, 3411, +0, 3550, 3301, +0, 3606, 3095, +0, 3671, 2431, +0, 3746, 0, +0, 3829, 0, +0, 3333, 3650, +0, 3333, 3650, +0, 3334, 3650, +0, 3334, 3650, +0, 3334, 3650, +0, 3334, 3650, +0, 3334, 3649, +0, 3334, 3649, +0, 3334, 3649, +0, 3335, 3649, +0, 3335, 3648, +0, 3336, 3648, +0, 3337, 3647, +0, 3338, 3646, +0, 3340, 3645, +0, 3342, 3643, +0, 3345, 3641, +0, 3349, 3637, +0, 3354, 3633, +0, 3360, 3627, +0, 3369, 3619, +0, 3380, 3608, +0, 3395, 3593, +0, 3414, 3572, +0, 3438, 3543, +0, 3469, 3500, +0, 3507, 3436, +0, 3553, 3333, +0, 3608, 3144, +0, 3673, 2611, +0, 3747, 0, +0, 3831, 0, +0, 3339, 3670, +0, 3339, 3670, +0, 3339, 3670, +0, 3339, 3670, +0, 3339, 3670, +0, 3339, 3669, +0, 3340, 3669, +0, 3340, 3669, +0, 3340, 3669, +0, 3340, 3669, +0, 3341, 3668, +0, 3342, 3668, +0, 3343, 3667, +0, 3344, 3666, +0, 3345, 3665, +0, 3347, 3663, +0, 3350, 3661, +0, 3354, 3658, +0, 3359, 3654, +0, 3365, 3648, +0, 3374, 3640, +0, 3385, 3630, +0, 3400, 3616, +0, 3419, 3596, +0, 3443, 3568, +0, 3473, 3527, +0, 3511, 3467, +0, 3556, 3372, +0, 3611, 3202, +0, 3676, 2776, +0, 3750, 0, +0, 3833, 0, +1862, 3346, 3695, +1860, 3347, 3695, +1858, 3347, 3695, +1854, 3347, 3695, +1849, 3347, 3695, +1842, 3347, 3695, +1833, 3347, 3695, +1821, 3347, 3694, +1803, 3347, 3694, +1779, 3348, 3694, +1744, 3348, 3693, +1694, 3349, 3693, +1616, 3350, 3692, +1484, 3351, 3691, +1214, 3353, 3690, +0, 3355, 3689, +0, 3357, 3686, +0, 3361, 3684, +0, 3366, 3680, +0, 3372, 3674, +0, 3381, 3667, +0, 3392, 3657, +0, 3406, 3644, +0, 3425, 3625, +0, 3449, 3599, +0, 3479, 3562, +0, 3516, 3506, +0, 3561, 3419, +0, 3615, 3269, +0, 3679, 2931, +0, 3753, 0, +0, 3835, 0, +2854, 3356, 3727, +2854, 3356, 3727, +2853, 3356, 3726, +2853, 3356, 3726, +2853, 3356, 3726, +2852, 3357, 3726, +2851, 3357, 3726, +2849, 3357, 3726, +2848, 3357, 3726, +2845, 3358, 3726, +2842, 3358, 3725, +2838, 3359, 3725, +2832, 3360, 3724, +2824, 3361, 3723, +2813, 3362, 3722, +2798, 3364, 3721, +2778, 3367, 3719, +2749, 3371, 3716, +2706, 3375, 3712, +2643, 3382, 3707, +2542, 3390, 3701, +2357, 3401, 3692, +1850, 3415, 3679, +0, 3433, 3662, +0, 3456, 3638, +0, 3486, 3604, +0, 3522, 3553, +0, 3567, 3476, +0, 3621, 3346, +0, 3684, 3080, +0, 3757, 0, +0, 3838, 0, +3210, 3369, 3766, +3209, 3369, 3766, +3209, 3369, 3766, +3209, 3369, 3766, +3209, 3369, 3766, +3209, 3369, 3765, +3208, 3369, 3765, +3207, 3370, 3765, +3207, 3370, 3765, +3206, 3370, 3765, +3204, 3371, 3764, +3202, 3371, 3764, +3200, 3372, 3763, +3196, 3373, 3763, +3191, 3375, 3762, +3185, 3377, 3760, +3176, 3379, 3758, +3164, 3383, 3756, +3148, 3387, 3753, +3125, 3394, 3748, +3092, 3402, 3742, +3045, 3412, 3734, +2972, 3426, 3722, +2852, 3444, 3707, +2617, 3467, 3685, +1537, 3495, 3654, +0, 3531, 3609, +0, 3575, 3542, +0, 3628, 3431, +0, 3690, 3224, +0, 3762, 2549, +0, 3843, 0, +3457, 3385, 3813, +3457, 3385, 3813, +3457, 3385, 3813, +3457, 3385, 3813, +3457, 3385, 3813, +3457, 3386, 3813, +3457, 3386, 3813, +3456, 3386, 3813, +3456, 3386, 3813, +3455, 3387, 3812, +3454, 3387, 3812, +3453, 3388, 3812, +3452, 3388, 3811, +3450, 3389, 3811, +3447, 3391, 3810, +3443, 3393, 3808, +3439, 3395, 3807, +3432, 3399, 3805, +3423, 3403, 3802, +3410, 3409, 3797, +3393, 3417, 3792, +3369, 3427, 3785, +3335, 3441, 3774, +3285, 3458, 3761, +3208, 3480, 3741, +3079, 3508, 3714, +2817, 3543, 3675, +0, 3586, 3617, +0, 3637, 3526, +0, 3698, 3365, +0, 3769, 2984, +0, 3849, 0, +3660, 3406, 3870, +3660, 3406, 3870, +3660, 3406, 3870, +3660, 3406, 3870, +3660, 3407, 3870, +3660, 3407, 3870, +3660, 3407, 3870, +3660, 3407, 3870, +3659, 3407, 3869, +3659, 3408, 3869, +3658, 3408, 3869, +3658, 3409, 3869, +3657, 3409, 3868, +3655, 3410, 3868, +3654, 3412, 3867, +3651, 3414, 3866, +3648, 3416, 3864, +3644, 3419, 3862, +3638, 3424, 3860, +3631, 3429, 3856, +3620, 3437, 3851, +3606, 3446, 3845, +3586, 3459, 3836, +3558, 3476, 3824, +3517, 3497, 3807, +3456, 3524, 3784, +3360, 3558, 3750, +3187, 3599, 3702, +2750, 3650, 3627, +0, 3709, 3503, +0, 3778, 3257, +0, 3856, 1771, +3839, 3433, 3936, +3839, 3433, 3936, +3839, 3433, 3936, +3839, 3433, 3936, +3839, 3433, 3936, +3839, 3433, 3936, +3838, 3433, 3936, +3838, 3434, 3936, +3838, 3434, 3936, +3838, 3434, 3936, +3838, 3435, 3935, +3837, 3435, 3935, +3836, 3436, 3935, +3836, 3437, 3934, +3834, 3438, 3933, +3833, 3440, 3932, +3831, 3442, 3931, +3828, 3445, 3930, +3824, 3449, 3927, +3819, 3455, 3924, +3812, 3462, 3920, +3803, 3471, 3914, +3790, 3483, 3907, +3772, 3499, 3897, +3747, 3519, 3882, +3712, 3545, 3863, +3659, 3577, 3835, +3578, 3617, 3795, +3440, 3665, 3735, +3149, 3723, 3640, +0, 3790, 3472, +0, 3867, 3056, +4003, 3467, 4012, +4003, 3467, 4012, +4003, 3467, 4012, +4003, 3467, 4012, +4003, 3467, 4012, +4003, 3467, 4012, +4003, 3467, 4012, +4002, 3467, 4012, +4002, 3467, 4012, +4002, 3468, 4011, +4002, 3468, 4011, +4002, 3468, 4011, +4001, 3469, 4011, +4001, 3470, 4010, +4000, 3471, 4010, +3999, 3473, 4009, +3997, 3475, 4008, +3995, 3478, 4006, +3993, 3482, 4004, +3989, 3487, 4002, +3984, 3493, 3998, +3978, 3502, 3994, +3969, 3513, 3987, +3957, 3528, 3979, +3941, 3547, 3967, +3918, 3571, 3950, +3886, 3602, 3928, +3838, 3640, 3895, +3765, 3686, 3848, +3646, 3741, 3776, +3411, 3806, 3657, +2348, 3880, 3426, +4095, 3508, 4095, +4095, 3508, 4095, +4095, 3508, 4095, +4095, 3508, 4095, +4095, 3508, 4095, +4095, 3508, 4095, +4095, 3508, 4095, +4095, 3508, 4095, +4095, 3508, 4095, +4095, 3509, 4095, +4095, 3509, 4095, +4095, 3509, 4095, +4095, 3510, 4095, +4095, 3511, 4095, +4095, 3512, 4095, +4095, 3513, 4094, +4095, 3515, 4093, +4095, 3518, 4092, +4095, 3522, 4091, +4095, 3526, 4088, +4095, 3532, 4086, +4095, 3540, 4082, +4095, 3551, 4076, +4095, 3564, 4069, +4095, 3582, 4060, +4095, 3604, 4046, +4077, 3633, 4028, +4046, 3668, 4002, +4002, 3712, 3965, +3935, 3764, 3911, +3826, 3826, 3826, +3621, 3897, 3679, +4095, 3558, 4095, +4095, 3558, 4095, +4095, 3558, 4095, +4095, 3558, 4095, +4095, 3558, 4095, +4095, 3558, 4095, +4095, 3558, 4095, +4095, 3558, 4095, +4095, 3558, 4095, +4095, 3558, 4095, +4095, 3559, 4095, +4095, 3559, 4095, +4095, 3560, 4095, +4095, 3560, 4095, +4095, 3561, 4095, +4095, 3563, 4095, +4095, 3564, 4095, +4095, 3567, 4095, +4095, 3570, 4095, +4095, 3574, 4095, +4095, 3580, 4095, +4095, 3587, 4095, +4095, 3596, 4095, +4095, 3608, 4095, +4095, 3624, 4095, +4095, 3645, 4095, +4095, 3671, 4095, +4095, 3704, 4095, +4095, 3744, 4086, +4095, 3793, 4045, +4093, 3851, 3983, +3990, 3919, 3884, +0, 3448, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3717, +0, 3449, 3717, +0, 3449, 3717, +0, 3450, 3717, +0, 3450, 3717, +0, 3450, 3716, +0, 3451, 3715, +0, 3452, 3715, +0, 3453, 3713, +0, 3455, 3712, +0, 3457, 3710, +0, 3460, 3707, +0, 3464, 3703, +0, 3469, 3698, +0, 3476, 3691, +0, 3485, 3682, +0, 3497, 3669, +0, 3512, 3652, +0, 3532, 3627, +0, 3557, 3592, +0, 3588, 3540, +0, 3627, 3460, +0, 3675, 3325, +0, 3731, 3043, +0, 3797, 0, +0, 3873, 0, +0, 3448, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3717, +0, 3449, 3717, +0, 3450, 3717, +0, 3450, 3717, +0, 3451, 3716, +0, 3451, 3715, +0, 3452, 3715, +0, 3453, 3713, +0, 3455, 3712, +0, 3457, 3710, +0, 3460, 3707, +0, 3464, 3703, +0, 3469, 3698, +0, 3476, 3692, +0, 3485, 3682, +0, 3497, 3670, +0, 3512, 3652, +0, 3532, 3627, +0, 3557, 3592, +0, 3588, 3540, +0, 3627, 3460, +0, 3675, 3325, +0, 3731, 3043, +0, 3797, 0, +0, 3873, 0, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3717, +0, 3449, 3717, +0, 3450, 3717, +0, 3450, 3717, +0, 3451, 3716, +0, 3451, 3716, +0, 3452, 3715, +0, 3453, 3714, +0, 3455, 3712, +0, 3457, 3710, +0, 3460, 3707, +0, 3464, 3703, +0, 3469, 3698, +0, 3476, 3692, +0, 3485, 3682, +0, 3497, 3670, +0, 3512, 3652, +0, 3532, 3627, +0, 3557, 3592, +0, 3588, 3540, +0, 3627, 3461, +0, 3675, 3326, +0, 3731, 3043, +0, 3797, 0, +0, 3873, 0, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3717, +0, 3450, 3717, +0, 3450, 3717, +0, 3451, 3716, +0, 3451, 3716, +0, 3452, 3715, +0, 3453, 3714, +0, 3455, 3712, +0, 3457, 3710, +0, 3460, 3707, +0, 3464, 3703, +0, 3469, 3698, +0, 3476, 3692, +0, 3485, 3682, +0, 3497, 3670, +0, 3512, 3652, +0, 3532, 3627, +0, 3557, 3592, +0, 3588, 3541, +0, 3627, 3461, +0, 3675, 3326, +0, 3731, 3043, +0, 3797, 0, +0, 3873, 0, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3717, +0, 3450, 3717, +0, 3450, 3717, +0, 3451, 3716, +0, 3451, 3716, +0, 3452, 3715, +0, 3453, 3714, +0, 3455, 3712, +0, 3457, 3710, +0, 3460, 3707, +0, 3464, 3704, +0, 3469, 3699, +0, 3476, 3692, +0, 3485, 3682, +0, 3497, 3670, +0, 3512, 3652, +0, 3532, 3628, +0, 3557, 3592, +0, 3588, 3541, +0, 3627, 3461, +0, 3675, 3326, +0, 3731, 3044, +0, 3797, 0, +0, 3873, 0, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3450, 3717, +0, 3450, 3717, +0, 3451, 3716, +0, 3451, 3716, +0, 3452, 3715, +0, 3453, 3714, +0, 3455, 3712, +0, 3457, 3710, +0, 3460, 3707, +0, 3464, 3704, +0, 3469, 3699, +0, 3476, 3692, +0, 3485, 3683, +0, 3497, 3670, +0, 3512, 3652, +0, 3532, 3628, +0, 3557, 3593, +0, 3588, 3541, +0, 3627, 3461, +0, 3675, 3326, +0, 3731, 3044, +0, 3797, 0, +0, 3873, 0, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3450, 3717, +0, 3450, 3717, +0, 3451, 3717, +0, 3451, 3716, +0, 3452, 3715, +0, 3454, 3714, +0, 3455, 3712, +0, 3457, 3710, +0, 3460, 3708, +0, 3464, 3704, +0, 3469, 3699, +0, 3476, 3692, +0, 3485, 3683, +0, 3497, 3670, +0, 3512, 3653, +0, 3532, 3628, +0, 3557, 3593, +0, 3588, 3541, +0, 3627, 3461, +0, 3675, 3327, +0, 3731, 3045, +0, 3797, 0, +0, 3873, 0, +0, 3449, 3719, +0, 3449, 3719, +0, 3449, 3719, +0, 3449, 3719, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3449, 3718, +0, 3450, 3718, +0, 3450, 3717, +0, 3451, 3717, +0, 3451, 3716, +0, 3452, 3715, +0, 3454, 3714, +0, 3455, 3713, +0, 3457, 3711, +0, 3460, 3708, +0, 3464, 3704, +0, 3470, 3699, +0, 3476, 3692, +0, 3485, 3683, +0, 3497, 3670, +0, 3512, 3653, +0, 3532, 3628, +0, 3557, 3593, +0, 3589, 3541, +0, 3627, 3462, +0, 3675, 3327, +0, 3731, 3046, +0, 3797, 0, +0, 3873, 0, +0, 3449, 3719, +0, 3449, 3719, +0, 3449, 3719, +0, 3449, 3719, +0, 3449, 3719, +0, 3449, 3719, +0, 3449, 3719, +0, 3449, 3718, +0, 3450, 3718, +0, 3450, 3718, +0, 3450, 3718, +0, 3451, 3717, +0, 3451, 3716, +0, 3452, 3716, +0, 3454, 3714, +0, 3455, 3713, +0, 3458, 3711, +0, 3460, 3708, +0, 3464, 3704, +0, 3470, 3699, +0, 3476, 3693, +0, 3485, 3683, +0, 3497, 3671, +0, 3512, 3653, +0, 3532, 3629, +0, 3557, 3593, +0, 3589, 3542, +0, 3627, 3462, +0, 3675, 3328, +0, 3731, 3047, +0, 3797, 0, +0, 3873, 0, +0, 3449, 3719, +0, 3449, 3719, +0, 3449, 3719, +0, 3449, 3719, +0, 3449, 3719, +0, 3449, 3719, +0, 3449, 3719, +0, 3449, 3719, +0, 3450, 3719, +0, 3450, 3718, +0, 3450, 3718, +0, 3451, 3718, +0, 3452, 3717, +0, 3452, 3716, +0, 3454, 3715, +0, 3455, 3713, +0, 3458, 3711, +0, 3461, 3709, +0, 3465, 3705, +0, 3470, 3700, +0, 3477, 3693, +0, 3486, 3684, +0, 3497, 3671, +0, 3513, 3654, +0, 3532, 3629, +0, 3557, 3594, +0, 3589, 3542, +0, 3628, 3463, +0, 3675, 3329, +0, 3731, 3049, +0, 3797, 0, +0, 3873, 0, +0, 3449, 3720, +0, 3449, 3720, +0, 3449, 3720, +0, 3449, 3720, +0, 3449, 3720, +0, 3449, 3720, +0, 3449, 3719, +0, 3450, 3719, +0, 3450, 3719, +0, 3450, 3719, +0, 3450, 3719, +0, 3451, 3718, +0, 3452, 3717, +0, 3453, 3717, +0, 3454, 3715, +0, 3456, 3714, +0, 3458, 3712, +0, 3461, 3709, +0, 3465, 3705, +0, 3470, 3700, +0, 3477, 3694, +0, 3486, 3684, +0, 3497, 3672, +0, 3513, 3654, +0, 3532, 3630, +0, 3557, 3595, +0, 3589, 3543, +0, 3628, 3464, +0, 3675, 3330, +0, 3731, 3051, +0, 3797, 0, +0, 3873, 0, +0, 3449, 3721, +0, 3449, 3721, +0, 3449, 3720, +0, 3449, 3720, +0, 3449, 3720, +0, 3449, 3720, +0, 3450, 3720, +0, 3450, 3720, +0, 3450, 3720, +0, 3450, 3720, +0, 3451, 3719, +0, 3451, 3719, +0, 3452, 3718, +0, 3453, 3717, +0, 3454, 3716, +0, 3456, 3715, +0, 3458, 3713, +0, 3461, 3710, +0, 3465, 3706, +0, 3470, 3701, +0, 3477, 3694, +0, 3486, 3685, +0, 3498, 3672, +0, 3513, 3655, +0, 3532, 3631, +0, 3557, 3596, +0, 3589, 3544, +0, 3628, 3465, +0, 3675, 3332, +0, 3731, 3055, +0, 3797, 0, +0, 3873, 0, +0, 3449, 3721, +0, 3449, 3721, +0, 3449, 3721, +0, 3450, 3721, +0, 3450, 3721, +0, 3450, 3721, +0, 3450, 3721, +0, 3450, 3721, +0, 3450, 3721, +0, 3450, 3721, +0, 3451, 3720, +0, 3451, 3720, +0, 3452, 3719, +0, 3453, 3718, +0, 3454, 3717, +0, 3456, 3716, +0, 3458, 3714, +0, 3461, 3711, +0, 3465, 3707, +0, 3470, 3702, +0, 3477, 3695, +0, 3486, 3686, +0, 3498, 3674, +0, 3513, 3656, +0, 3533, 3632, +0, 3558, 3597, +0, 3589, 3546, +0, 3628, 3467, +0, 3675, 3334, +0, 3732, 3059, +0, 3798, 0, +0, 3873, 0, +0, 3450, 3723, +0, 3450, 3723, +0, 3450, 3723, +0, 3450, 3723, +0, 3450, 3723, +0, 3450, 3723, +0, 3450, 3722, +0, 3450, 3722, +0, 3451, 3722, +0, 3451, 3722, +0, 3451, 3721, +0, 3452, 3721, +0, 3452, 3720, +0, 3453, 3719, +0, 3455, 3718, +0, 3456, 3717, +0, 3458, 3715, +0, 3461, 3712, +0, 3465, 3708, +0, 3471, 3703, +0, 3477, 3697, +0, 3486, 3687, +0, 3498, 3675, +0, 3513, 3658, +0, 3533, 3633, +0, 3558, 3599, +0, 3589, 3548, +0, 3628, 3469, +0, 3675, 3337, +0, 3732, 3064, +0, 3798, 0, +0, 3873, 0, +0, 3450, 3724, +0, 3450, 3724, +0, 3450, 3724, +0, 3450, 3724, +0, 3450, 3724, +0, 3450, 3724, +0, 3451, 3724, +0, 3451, 3724, +0, 3451, 3724, +0, 3451, 3723, +0, 3452, 3723, +0, 3452, 3723, +0, 3453, 3722, +0, 3454, 3721, +0, 3455, 3720, +0, 3457, 3719, +0, 3459, 3717, +0, 3462, 3714, +0, 3466, 3710, +0, 3471, 3705, +0, 3478, 3698, +0, 3487, 3689, +0, 3498, 3677, +0, 3514, 3659, +0, 3533, 3635, +0, 3558, 3601, +0, 3590, 3550, +0, 3628, 3472, +0, 3676, 3341, +0, 3732, 3071, +0, 3798, 0, +0, 3873, 0, +0, 3451, 3727, +0, 3451, 3727, +0, 3451, 3727, +0, 3451, 3727, +0, 3451, 3727, +0, 3451, 3726, +0, 3451, 3726, +0, 3451, 3726, +0, 3452, 3726, +0, 3452, 3726, +0, 3452, 3725, +0, 3453, 3725, +0, 3453, 3724, +0, 3454, 3723, +0, 3456, 3722, +0, 3457, 3721, +0, 3459, 3719, +0, 3462, 3716, +0, 3466, 3712, +0, 3471, 3708, +0, 3478, 3701, +0, 3487, 3692, +0, 3499, 3679, +0, 3514, 3662, +0, 3534, 3638, +0, 3559, 3604, +0, 3590, 3553, +0, 3629, 3476, +0, 3676, 3346, +0, 3732, 3081, +0, 3798, 0, +0, 3873, 0, +0, 3451, 3730, +0, 3452, 3730, +0, 3452, 3730, +0, 3452, 3730, +0, 3452, 3729, +0, 3452, 3729, +0, 3452, 3729, +0, 3452, 3729, +0, 3452, 3729, +0, 3453, 3729, +0, 3453, 3728, +0, 3453, 3728, +0, 3454, 3727, +0, 3455, 3726, +0, 3456, 3725, +0, 3458, 3724, +0, 3460, 3722, +0, 3463, 3719, +0, 3467, 3716, +0, 3472, 3711, +0, 3479, 3704, +0, 3488, 3695, +0, 3500, 3683, +0, 3515, 3666, +0, 3534, 3642, +0, 3559, 3608, +0, 3591, 3558, +0, 3629, 3481, +0, 3676, 3353, +0, 3733, 3093, +0, 3798, 0, +0, 3874, 0, +0, 3453, 3734, +0, 3453, 3734, +0, 3453, 3734, +0, 3453, 3734, +0, 3453, 3733, +0, 3453, 3733, +0, 3453, 3733, +0, 3453, 3733, +0, 3453, 3733, +0, 3454, 3733, +0, 3454, 3732, +0, 3454, 3732, +0, 3455, 3731, +0, 3456, 3730, +0, 3457, 3729, +0, 3459, 3728, +0, 3461, 3726, +0, 3464, 3723, +0, 3468, 3720, +0, 3473, 3715, +0, 3480, 3708, +0, 3489, 3699, +0, 3501, 3687, +0, 3516, 3670, +0, 3535, 3646, +0, 3560, 3613, +0, 3591, 3563, +0, 3630, 3488, +0, 3677, 3362, +0, 3733, 3109, +0, 3799, 370, +0, 3874, 0, +0, 3454, 3739, +0, 3454, 3739, +0, 3454, 3739, +0, 3454, 3739, +0, 3454, 3739, +0, 3454, 3739, +0, 3454, 3738, +0, 3454, 3738, +0, 3455, 3738, +0, 3455, 3738, +0, 3455, 3738, +0, 3456, 3737, +0, 3457, 3737, +0, 3457, 3736, +0, 3459, 3735, +0, 3460, 3733, +0, 3463, 3731, +0, 3465, 3729, +0, 3469, 3725, +0, 3474, 3720, +0, 3481, 3714, +0, 3490, 3705, +0, 3502, 3693, +0, 3517, 3676, +0, 3536, 3653, +0, 3561, 3620, +0, 3592, 3571, +0, 3631, 3497, +0, 3678, 3374, +0, 3734, 3129, +0, 3800, 1731, +0, 3875, 0, +0, 3456, 3746, +0, 3456, 3746, +0, 3456, 3746, +0, 3456, 3746, +0, 3456, 3746, +0, 3456, 3745, +0, 3456, 3745, +0, 3456, 3745, +0, 3456, 3745, +0, 3457, 3745, +0, 3457, 3744, +0, 3458, 3744, +0, 3458, 3743, +0, 3459, 3743, +0, 3460, 3742, +0, 3462, 3740, +0, 3464, 3738, +0, 3467, 3736, +0, 3471, 3732, +0, 3476, 3727, +0, 3483, 3721, +0, 3492, 3712, +0, 3503, 3700, +0, 3518, 3684, +0, 3538, 3661, +0, 3563, 3629, +0, 3594, 3581, +0, 3632, 3508, +0, 3679, 3389, +0, 3735, 3155, +0, 3800, 2103, +0, 3875, 0, +0, 3458, 3755, +0, 3458, 3755, +0, 3458, 3755, +0, 3458, 3755, +0, 3458, 3755, +0, 3458, 3755, +0, 3458, 3754, +0, 3459, 3754, +0, 3459, 3754, +0, 3459, 3754, +0, 3460, 3754, +0, 3460, 3753, +0, 3461, 3753, +0, 3462, 3752, +0, 3463, 3751, +0, 3465, 3749, +0, 3467, 3747, +0, 3470, 3745, +0, 3473, 3741, +0, 3479, 3737, +0, 3485, 3731, +0, 3494, 3722, +0, 3506, 3710, +0, 3521, 3694, +0, 3540, 3672, +0, 3565, 3640, +0, 3595, 3594, +0, 3634, 3524, +0, 3681, 3409, +0, 3736, 3187, +0, 3802, 2357, +0, 3876, 0, +0, 3461, 3767, +0, 3461, 3767, +0, 3461, 3767, +0, 3461, 3767, +0, 3461, 3767, +0, 3462, 3766, +0, 3462, 3766, +0, 3462, 3766, +0, 3462, 3766, +0, 3462, 3766, +0, 3463, 3765, +0, 3463, 3765, +0, 3464, 3764, +0, 3465, 3764, +0, 3466, 3763, +0, 3468, 3761, +0, 3470, 3759, +0, 3473, 3757, +0, 3477, 3754, +0, 3482, 3749, +0, 3488, 3743, +0, 3497, 3735, +0, 3508, 3723, +0, 3523, 3708, +0, 3543, 3686, +0, 3567, 3655, +0, 3598, 3611, +0, 3636, 3543, +0, 3682, 3434, +0, 3738, 3227, +0, 3803, 2563, +0, 3878, 0, +0, 3466, 3782, +0, 3466, 3782, +0, 3466, 3782, +0, 3466, 3782, +0, 3466, 3782, +0, 3466, 3782, +0, 3466, 3782, +0, 3466, 3782, +0, 3466, 3781, +0, 3467, 3781, +0, 3467, 3781, +0, 3467, 3780, +0, 3468, 3780, +0, 3469, 3779, +0, 3470, 3778, +0, 3472, 3777, +0, 3474, 3775, +0, 3477, 3773, +0, 3481, 3769, +0, 3486, 3765, +0, 3492, 3759, +0, 3501, 3751, +0, 3512, 3740, +0, 3527, 3725, +0, 3546, 3704, +0, 3570, 3675, +0, 3601, 3632, +0, 3639, 3568, +0, 3685, 3465, +0, 3740, 3276, +0, 3805, 2743, +0, 3879, 0, +0, 3471, 3802, +0, 3471, 3802, +0, 3471, 3802, +0, 3471, 3802, +0, 3471, 3802, +0, 3471, 3802, +0, 3472, 3802, +0, 3472, 3801, +0, 3472, 3801, +0, 3472, 3801, +0, 3473, 3801, +0, 3473, 3800, +0, 3474, 3800, +0, 3475, 3799, +0, 3476, 3798, +0, 3477, 3797, +0, 3480, 3795, +0, 3482, 3793, +0, 3486, 3790, +0, 3491, 3786, +0, 3498, 3780, +0, 3506, 3772, +0, 3517, 3762, +0, 3532, 3748, +0, 3551, 3728, +0, 3575, 3700, +0, 3605, 3660, +0, 3643, 3599, +0, 3689, 3504, +0, 3743, 3334, +0, 3808, 2908, +0, 3882, 0, +1996, 3479, 3827, +1994, 3479, 3827, +1992, 3479, 3827, +1990, 3479, 3827, +1986, 3479, 3827, +1981, 3479, 3827, +1974, 3479, 3827, +1965, 3479, 3827, +1953, 3479, 3826, +1935, 3480, 3826, +1911, 3480, 3826, +1877, 3480, 3826, +1826, 3481, 3825, +1748, 3482, 3824, +1616, 3483, 3824, +1346, 3485, 3822, +0, 3487, 3821, +0, 3490, 3819, +0, 3493, 3816, +0, 3498, 3812, +0, 3505, 3806, +0, 3513, 3799, +0, 3524, 3789, +0, 3538, 3776, +0, 3557, 3757, +0, 3581, 3731, +0, 3611, 3694, +0, 3648, 3638, +0, 3693, 3551, +0, 3748, 3401, +0, 3811, 3063, +0, 3885, 0, +2986, 3488, 3859, +2986, 3488, 3859, +2986, 3488, 3859, +2986, 3488, 3859, +2985, 3488, 3859, +2985, 3489, 3858, +2984, 3489, 3858, +2983, 3489, 3858, +2982, 3489, 3858, +2980, 3489, 3858, +2977, 3490, 3858, +2974, 3490, 3857, +2970, 3491, 3857, +2964, 3492, 3856, +2956, 3493, 3855, +2945, 3494, 3854, +2931, 3496, 3853, +2910, 3499, 3851, +2881, 3503, 3848, +2839, 3507, 3844, +2775, 3514, 3839, +2674, 3522, 3833, +2489, 3533, 3824, +1982, 3547, 3811, +0, 3565, 3794, +0, 3589, 3770, +0, 3618, 3736, +0, 3655, 3685, +0, 3699, 3608, +0, 3753, 3478, +0, 3816, 3212, +0, 3889, 0, +3342, 3501, 3898, +3342, 3501, 3898, +3342, 3501, 3898, +3341, 3501, 3898, +3341, 3501, 3898, +3341, 3501, 3898, +3341, 3501, 3898, +3340, 3501, 3897, +3340, 3502, 3897, +3339, 3502, 3897, +3338, 3502, 3897, +3336, 3503, 3897, +3334, 3503, 3896, +3332, 3504, 3896, +3328, 3505, 3895, +3323, 3507, 3894, +3317, 3509, 3892, +3308, 3511, 3891, +3296, 3515, 3888, +3280, 3520, 3885, +3257, 3526, 3880, +3224, 3534, 3874, +3177, 3544, 3866, +3104, 3558, 3854, +2984, 3576, 3839, +2749, 3599, 3817, +1669, 3628, 3786, +0, 3663, 3741, +0, 3707, 3674, +0, 3760, 3564, +0, 3822, 3356, +0, 3894, 2681, +3590, 3517, 3945, +3590, 3517, 3945, +3590, 3517, 3945, +3589, 3517, 3945, +3589, 3518, 3945, +3589, 3518, 3945, +3589, 3518, 3945, +3589, 3518, 3945, +3588, 3518, 3945, +3588, 3518, 3945, +3587, 3519, 3945, +3586, 3519, 3944, +3585, 3520, 3944, +3584, 3520, 3943, +3582, 3522, 3943, +3579, 3523, 3942, +3576, 3525, 3941, +3571, 3527, 3939, +3564, 3531, 3937, +3555, 3535, 3934, +3543, 3541, 3930, +3525, 3549, 3924, +3501, 3559, 3917, +3467, 3573, 3907, +3417, 3590, 3893, +3340, 3612, 3873, +3211, 3640, 3846, +2949, 3675, 3807, +0, 3718, 3749, +0, 3769, 3658, +0, 3830, 3497, +0, 3901, 3116, +3792, 3538, 4002, +3792, 3538, 4002, +3792, 3538, 4002, +3792, 3539, 4002, +3792, 3539, 4002, +3792, 3539, 4002, +3792, 3539, 4002, +3792, 3539, 4002, +3792, 3539, 4002, +3791, 3539, 4002, +3791, 3540, 4001, +3790, 3540, 4001, +3790, 3541, 4001, +3789, 3541, 4000, +3787, 3542, 4000, +3786, 3544, 3999, +3783, 3546, 3998, +3780, 3548, 3996, +3776, 3551, 3994, +3770, 3556, 3992, +3763, 3561, 3988, +3752, 3569, 3983, +3738, 3579, 3977, +3718, 3591, 3968, +3690, 3608, 3956, +3649, 3629, 3939, +3588, 3656, 3916, +3492, 3690, 3882, +3319, 3731, 3834, +2882, 3782, 3759, +0, 3841, 3636, +0, 3910, 3389, +3971, 3565, 4068, +3971, 3565, 4068, +3971, 3565, 4068, +3971, 3565, 4068, +3971, 3565, 4068, +3971, 3565, 4068, +3971, 3565, 4068, +3971, 3566, 4068, +3970, 3566, 4068, +3970, 3566, 4068, +3970, 3566, 4068, +3970, 3567, 4067, +3969, 3567, 4067, +3968, 3568, 4067, +3968, 3569, 4066, +3966, 3570, 4066, +3965, 3572, 4065, +3963, 3574, 4063, +3960, 3577, 4062, +3956, 3581, 4059, +3951, 3587, 4056, +3944, 3594, 4052, +3935, 3603, 4047, +3922, 3615, 4039, +3904, 3631, 4029, +3879, 3651, 4014, +3844, 3677, 3995, +3791, 3709, 3967, +3710, 3749, 3927, +3572, 3797, 3867, +3281, 3855, 3772, +0, 3922, 3604, +4095, 3599, 4095, +4095, 3599, 4095, +4095, 3599, 4095, +4095, 3599, 4095, +4095, 3599, 4095, +4095, 3599, 4095, +4095, 3599, 4095, +4095, 3599, 4095, +4095, 3599, 4095, +4095, 3599, 4095, +4095, 3600, 4095, +4095, 3600, 4095, +4095, 3601, 4095, +4095, 3601, 4095, +4095, 3602, 4095, +4095, 3603, 4095, +4095, 3605, 4095, +4095, 3607, 4095, +4095, 3610, 4095, +4095, 3614, 4095, +4095, 3619, 4095, +4095, 3625, 4095, +4095, 3634, 4095, +4095, 3645, 4095, +4090, 3660, 4095, +4073, 3679, 4095, +4050, 3703, 4083, +4018, 3734, 4060, +3970, 3772, 4027, +3897, 3818, 3980, +3778, 3873, 3908, +3543, 3938, 3789, +4095, 3640, 4095, +4095, 3640, 4095, +4095, 3640, 4095, +4095, 3640, 4095, +4095, 3640, 4095, +4095, 3640, 4095, +4095, 3640, 4095, +4095, 3640, 4095, +4095, 3640, 4095, +4095, 3641, 4095, +4095, 3641, 4095, +4095, 3641, 4095, +4095, 3642, 4095, +4095, 3642, 4095, +4095, 3643, 4095, +4095, 3644, 4095, +4095, 3646, 4095, +4095, 3648, 4095, +4095, 3650, 4095, +4095, 3654, 4095, +4095, 3658, 4095, +4095, 3664, 4095, +4095, 3672, 4095, +4095, 3683, 4095, +4095, 3696, 4095, +4095, 3714, 4095, +4095, 3736, 4095, +4095, 3765, 4095, +4095, 3800, 4095, +4095, 3844, 4095, +4067, 3896, 4043, +3958, 3958, 3958] } -} +} \ No newline at end of file diff --git a/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/CMD_ColorGradingTools.bat b/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/CMD_ColorGradingTools.bat index c655eb2e6c..56021c0801 100644 --- a/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/CMD_ColorGradingTools.bat +++ b/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/CMD_ColorGradingTools.bat @@ -17,6 +17,13 @@ TITLE O3DE Color Grading CMD :: Use obvious color to prevent confusion (Grey with Yellow Text) COLOR 8E +echo. +echo _____________________________________________________________________ +echo. +echo ~ O3DE Color Grading Python CMD ... +echo _____________________________________________________________________ +echo. + %~d0 cd %~dp0 PUSHD %~dp0 @@ -27,16 +34,17 @@ SETLOCAL ENABLEDELAYEDEXPANSION IF EXIST "%~dp0User_Env.bat" CALL %~dp0User_Env.bat :: Initialize env +echo +echo ... calling Env_Core.bat CALL %~dp0\Env_Core.bat -CALL %~dp0\Env_Python.bat -CALL %~dp0\Env_Tools.bat -echo. -echo _____________________________________________________________________ -echo. -echo ~ O3DE Color Grading Python CMD ... -echo _____________________________________________________________________ -echo. +echo +echo ... calling Env_Python.bat +CALL %~dp0\Env_Python.bat + +echo +echo ... calling Env_Tools.bat +CALL %~dp0\Env_Tools.bat :: Change to root dir CD /D .. diff --git a/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/Env_Core.bat b/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/Env_Core.bat index 730170dce7..74d1e77247 100644 --- a/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/Env_Core.bat +++ b/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/Env_Core.bat @@ -93,9 +93,6 @@ popd set DCCSIG_PATH=%O3DE_DEV%\Gems\AtomLyIntegration\TechnicalArt\DccScriptingInterface echo DCCSIG_PATH = %DCCSIG_PATH% -:: Change to DCCsi root dir -CD /D %DCCSIG_PATH% - :: per-dcc sdk path set DCCSI_SDK_PATH=%DCCSIG_PATH%\SDK echo DCCSI_SDK_PATH = %DCCSI_SDK_PATH% diff --git a/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/User_Env.bat.template b/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/User_Env.bat.template index 81a53393cf..973d6d5afd 100644 --- a/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/User_Env.bat.template +++ b/Gems/Atom/Feature/Common/Tools/ColorGrading/cmdline/User_Env.bat.template @@ -26,7 +26,7 @@ SET DCCSI_GDEBUG=True SET DCCSI_DEV_MODE=True :: set the your user name here for windows path -SET TAG_USERNAME=< not set > +SET TAG_USERNAME=NOT_SET SET DCCSI_PY_REV=rev1 SET DCCSI_PY_PLATFORM=windows From 141cb55903a98ac1f52d9946cf612e9b5e945e51 Mon Sep 17 00:00:00 2001 From: bosnichd Date: Fri, 10 Sep 2021 13:12:45 -0600 Subject: [PATCH 16/20] Fix issue #4045 (#4053) * Remove unused Vulkan ShaderDescriptor class. Signed-off-by: bosnichd * Add missing dependency on Gem::Atom_RHI.Public Signed-off-by: bosnichd * Revert changes made to Gems/Atom/RHI/Vulkan/Code/* in https://github.com/o3de/o3de/pull/4021, and instead just check a trait to determine whether the RHI Vulkan targets have been defined else where. Gems/Atom/RHI/Vulkan/Code/CMakeLists.txt maybe needs to be revisited at some point, but my changes are causing numerous issues on mac so this just restores the prior behavior for all platforms while also providing a mechanism for any platform to simply define exactly what Vulkan related targets it needs independently. Signed-off-by: bosnichd --- Gems/Atom/RHI/Vulkan/Code/CMakeLists.txt | 9 +-- .../RHI.Reflect/Vulkan/ShaderDescriptor.h | 57 ------------------ .../ModuleStub_Unimplemented.cpp | 9 +-- .../Source/RHI.Reflect/ShaderDescriptor.cpp | 59 ------------------- .../RHI/Vulkan/Code/Source/RHI/ShaderModule.h | 2 - ...atom_rhi_vulkan_reflect_common_files.cmake | 2 - 6 files changed, 6 insertions(+), 132 deletions(-) delete mode 100644 Gems/Atom/RHI/Vulkan/Code/Include/Atom/RHI.Reflect/Vulkan/ShaderDescriptor.h delete mode 100644 Gems/Atom/RHI/Vulkan/Code/Source/RHI.Reflect/ShaderDescriptor.cpp diff --git a/Gems/Atom/RHI/Vulkan/Code/CMakeLists.txt b/Gems/Atom/RHI/Vulkan/Code/CMakeLists.txt index 5c74852f57..fb13d1fddb 100644 --- a/Gems/Atom/RHI/Vulkan/Code/CMakeLists.txt +++ b/Gems/Atom/RHI/Vulkan/Code/CMakeLists.txt @@ -9,7 +9,11 @@ ly_get_list_relative_pal_filename(pal_include_dir ${CMAKE_CURRENT_LIST_DIR}/Include/Platform/${PAL_PLATFORM_NAME}) ly_get_list_relative_pal_filename(pal_source_dir ${CMAKE_CURRENT_LIST_DIR}/Source/Platform/${PAL_PLATFORM_NAME}) -include(${pal_source_dir}/PAL_${PAL_PLATFORM_NAME_LOWERCASE}.cmake) # PAL_TRAIT_ATOM_RHI_VULKAN_SUPPORTED +include(${pal_source_dir}/PAL_${PAL_PLATFORM_NAME_LOWERCASE}.cmake) # PAL_TRAIT_ATOM_RHI_VULKAN_SUPPORTED / PAL_TRAIT_ATOM_RHI_VULKAN_TARGETS_ALREADY_DEFINED + +if(PAL_TRAIT_ATOM_RHI_VULKAN_TARGETS_ALREADY_DEFINED) + return() # Vulkan targets already defined in PAL_${PAL_PLATFORM_NAME_LOWERCASE}.cmake +endif() if(NOT PAL_TRAIT_ATOM_RHI_VULKAN_SUPPORTED) @@ -19,12 +23,9 @@ if(NOT PAL_TRAIT_ATOM_RHI_VULKAN_SUPPORTED) NAMESPACE Gem FILES_CMAKE atom_rhi_vulkan_stub_module.cmake - atom_rhi_vulkan_reflect_common_files.cmake INCLUDE_DIRECTORIES PRIVATE - Include Source - ${pal_include_dir} Include/Atom/RHI.Loader/Glad BUILD_DEPENDENCIES PRIVATE diff --git a/Gems/Atom/RHI/Vulkan/Code/Include/Atom/RHI.Reflect/Vulkan/ShaderDescriptor.h b/Gems/Atom/RHI/Vulkan/Code/Include/Atom/RHI.Reflect/Vulkan/ShaderDescriptor.h deleted file mode 100644 index b432dcf0cb..0000000000 --- a/Gems/Atom/RHI/Vulkan/Code/Include/Atom/RHI.Reflect/Vulkan/ShaderDescriptor.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. - * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ -#pragma once - -#include -#include -#include -#include -#include - -namespace AZ -{ - class ReflectContext; - - namespace Vulkan - { - using ShaderByteCode = AZStd::vector; - - // TODO: remove this class after checking it is no longer necessary. - class ShaderDescriptor final - : public RHI::Object - { - using Base = RHI::Object; - public: - AZ_CLASS_ALLOCATOR(ShaderDescriptor, AZ::SystemAllocator, 0); - AZ_RTTI(ShaderDescriptor, "EB289A24-52DF-45E5-B3D0-C33B6DBAAAA7", Base); - - static void Reflect(AZ::ReflectContext* context); - - /// Clears all bytecodes and resets descriptor - void Clear(); - - /// Finalizes the descriptor and builds the hash value. - void Finalize(); - - /// Assigns bytecode to a specific shader stage. - void SetByteCode(RHI::ShaderStage shaderStage, const ShaderByteCode& bytecode); - - /// Returns whether bytecode exists for the given shader stage. - bool HasByteCode(RHI::ShaderStage shaderStage) const; - - /// Returns the bytecode for the given shader stage. - const ShaderByteCode& GetByteCode(RHI::ShaderStage shaderStage) const; - - private: - /// The set of shader bytecodes indexed by shader stage. - AZStd::array(RHI::ShaderStage::GraphicsCount)> m_byteCodesByStage; - size_t m_hash = 0; - }; - - } -} diff --git a/Gems/Atom/RHI/Vulkan/Code/Source/Platform/Common/Unimplemented/ModuleStub_Unimplemented.cpp b/Gems/Atom/RHI/Vulkan/Code/Source/Platform/Common/Unimplemented/ModuleStub_Unimplemented.cpp index 44a8a26968..8c06700404 100644 --- a/Gems/Atom/RHI/Vulkan/Code/Source/Platform/Common/Unimplemented/ModuleStub_Unimplemented.cpp +++ b/Gems/Atom/RHI/Vulkan/Code/Source/Platform/Common/Unimplemented/ModuleStub_Unimplemented.cpp @@ -5,8 +5,6 @@ * SPDX-License-Identifier: Apache-2.0 OR MIT * */ - -#include #include namespace AZ @@ -19,12 +17,7 @@ namespace AZ public: AZ_RTTI(PlatformModule, "{958CB096-796C-42C7-9B29-17C6FE792C30}", Module); - PlatformModule() - { - m_descriptors.insert(m_descriptors.end(), { - ReflectSystemComponent::CreateDescriptor() - }); - } + PlatformModule() = default; ~PlatformModule() override = default; AZ::ComponentTypeList GetRequiredSystemComponents() const override diff --git a/Gems/Atom/RHI/Vulkan/Code/Source/RHI.Reflect/ShaderDescriptor.cpp b/Gems/Atom/RHI/Vulkan/Code/Source/RHI.Reflect/ShaderDescriptor.cpp deleted file mode 100644 index b82d72a98c..0000000000 --- a/Gems/Atom/RHI/Vulkan/Code/Source/RHI.Reflect/ShaderDescriptor.cpp +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project. - * For complete copyright and license terms please see the LICENSE at the root of this distribution. - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ -#include -#include - -namespace AZ -{ - namespace Vulkan - { - void ShaderDescriptor::Reflect(AZ::ReflectContext* context) - { - if (SerializeContext* serializeContext = azrtti_cast(context)) - { - serializeContext->Class() - ->Version(1) - ->Field("m_byteCodesByStage", &ShaderDescriptor::m_byteCodesByStage); - } - } - - void ShaderDescriptor::Clear() - { - m_hash = 0; - m_byteCodesByStage.fill(ShaderByteCode()); - } - - void ShaderDescriptor::Finalize() - { - AZ::Crc32 crc; - for (const ShaderByteCode& byteCode : m_byteCodesByStage) - { - if (!byteCode.empty()) - { - crc.Add(byteCode.data(), byteCode.size()); - } - } - m_hash = crc; - } - - void ShaderDescriptor::SetByteCode(RHI::ShaderStage shaderStage, const ShaderByteCode& bytecode) - { - m_byteCodesByStage[static_cast(shaderStage)] = bytecode; - } - - bool ShaderDescriptor::HasByteCode(RHI::ShaderStage shaderStage) const - { - return !(m_byteCodesByStage[static_cast(shaderStage)].empty()); - } - - const ShaderByteCode& ShaderDescriptor::GetByteCode(RHI::ShaderStage shaderStage) const - { - return m_byteCodesByStage[static_cast(shaderStage)]; - } - } -} diff --git a/Gems/Atom/RHI/Vulkan/Code/Source/RHI/ShaderModule.h b/Gems/Atom/RHI/Vulkan/Code/Source/RHI/ShaderModule.h index 244a1c1b82..74632e4539 100644 --- a/Gems/Atom/RHI/Vulkan/Code/Source/RHI/ShaderModule.h +++ b/Gems/Atom/RHI/Vulkan/Code/Source/RHI/ShaderModule.h @@ -9,8 +9,6 @@ #include #include -#include -#include #include namespace AZ diff --git a/Gems/Atom/RHI/Vulkan/Code/atom_rhi_vulkan_reflect_common_files.cmake b/Gems/Atom/RHI/Vulkan/Code/atom_rhi_vulkan_reflect_common_files.cmake index 8965cd054d..92c22ddfc5 100644 --- a/Gems/Atom/RHI/Vulkan/Code/atom_rhi_vulkan_reflect_common_files.cmake +++ b/Gems/Atom/RHI/Vulkan/Code/atom_rhi_vulkan_reflect_common_files.cmake @@ -11,8 +11,6 @@ set(FILES Include/Atom/RHI.Reflect/Vulkan/BufferPoolDescriptor.h Source/RHI.Reflect/ImagePoolDescriptor.cpp Include/Atom/RHI.Reflect/Vulkan/ImagePoolDescriptor.h - Source/RHI.Reflect/ShaderDescriptor.cpp - Include/Atom/RHI.Reflect/Vulkan/ShaderDescriptor.h Source/RHI.Reflect/ShaderStageFunction.cpp Include/Atom/RHI.Reflect/Vulkan/ShaderStageFunction.h Source/RHI.Reflect/ReflectSystemComponent.cpp From 2629216e463aef01df4a1bdda5090443817e4374 Mon Sep 17 00:00:00 2001 From: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com> Date: Fri, 10 Sep 2021 14:37:32 -0500 Subject: [PATCH 17/20] Optimize MemoryView::SetName (#4052) * Optimize MemoryView SetName Added a second version that uses wstring_view instead of string_view so that no temporaries need to be created when passing in a string literal that's already a wstring. Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com> * Changed to use SetPrivateData Signed-off-by: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com> --- .../Code/Source/Platform/Windows/RHI/DX12_Windows.h | 1 + .../Platform/Windows/platform_private_windows.cmake | 1 + .../DX12/Code/Source/RHI/MemoryPageAllocator.cpp | 2 +- Gems/Atom/RHI/DX12/Code/Source/RHI/MemoryView.cpp | 13 ++++++++++++- Gems/Atom/RHI/DX12/Code/Source/RHI/MemoryView.h | 3 +++ .../RHI/DX12/Code/Source/RHI/RayTracingBlas.cpp | 4 ++-- .../DX12/Code/Source/RHI/RayTracingShaderTable.cpp | 2 +- .../RHI/DX12/Code/Source/RHI/RayTracingTlas.cpp | 6 +++--- 8 files changed, 24 insertions(+), 8 deletions(-) diff --git a/Gems/Atom/RHI/DX12/Code/Source/Platform/Windows/RHI/DX12_Windows.h b/Gems/Atom/RHI/DX12/Code/Source/Platform/Windows/RHI/DX12_Windows.h index 3f9079422c..85b782aa6b 100644 --- a/Gems/Atom/RHI/DX12/Code/Source/Platform/Windows/RHI/DX12_Windows.h +++ b/Gems/Atom/RHI/DX12/Code/Source/Platform/Windows/RHI/DX12_Windows.h @@ -19,6 +19,7 @@ #include #include +#include // This define is enabled if LY_PIX_ENABLED is enabled during configure. You can use LY_PIX_PATH to point where pix is downloaded. // Enabling this define will allow the runtime code to add PIX markers which will help with pix and renderdoc gpu captures diff --git a/Gems/Atom/RHI/DX12/Code/Source/Platform/Windows/platform_private_windows.cmake b/Gems/Atom/RHI/DX12/Code/Source/Platform/Windows/platform_private_windows.cmake index d792c3d2aa..c94b2a020e 100644 --- a/Gems/Atom/RHI/DX12/Code/Source/Platform/Windows/platform_private_windows.cmake +++ b/Gems/Atom/RHI/DX12/Code/Source/Platform/Windows/platform_private_windows.cmake @@ -10,4 +10,5 @@ set(LY_BUILD_DEPENDENCIES PRIVATE d3d12 dxgi + dxguid ) diff --git a/Gems/Atom/RHI/DX12/Code/Source/RHI/MemoryPageAllocator.cpp b/Gems/Atom/RHI/DX12/Code/Source/RHI/MemoryPageAllocator.cpp index 5692befedf..2715b7063b 100644 --- a/Gems/Atom/RHI/DX12/Code/Source/RHI/MemoryPageAllocator.cpp +++ b/Gems/Atom/RHI/DX12/Code/Source/RHI/MemoryPageAllocator.cpp @@ -51,7 +51,7 @@ namespace AZ if (memoryView.IsValid()) { heapMemoryUsage.m_residentInBytes += m_descriptor.m_pageSizeInBytes; - memoryView.SetName("BufferPage"); + memoryView.SetName(L"BufferPage"); } else { diff --git a/Gems/Atom/RHI/DX12/Code/Source/RHI/MemoryView.cpp b/Gems/Atom/RHI/DX12/Code/Source/RHI/MemoryView.cpp index c9d932afb1..6389076408 100644 --- a/Gems/Atom/RHI/DX12/Code/Source/RHI/MemoryView.cpp +++ b/Gems/Atom/RHI/DX12/Code/Source/RHI/MemoryView.cpp @@ -7,6 +7,7 @@ */ #include +#include #include #include #include @@ -95,7 +96,17 @@ namespace AZ { AZStd::wstring wname; AZStd::to_wstring(wname, name); - m_memoryAllocation.m_memory->SetName(wname.data()); + m_memoryAllocation.m_memory->SetPrivateData( + WKPDID_D3DDebugObjectNameW, aznumeric_cast(wname.size() * sizeof(wchar_t)), wname.data()); + } + } + + void MemoryView::SetName(const AZStd::wstring_view& name) + { + if (m_memoryAllocation.m_memory) + { + m_memoryAllocation.m_memory->SetPrivateData( + WKPDID_D3DDebugObjectNameW, aznumeric_cast(name.size() * sizeof(wchar_t)), name.data()); } } diff --git a/Gems/Atom/RHI/DX12/Code/Source/RHI/MemoryView.h b/Gems/Atom/RHI/DX12/Code/Source/RHI/MemoryView.h index a5162d53de..f418af6058 100644 --- a/Gems/Atom/RHI/DX12/Code/Source/RHI/MemoryView.h +++ b/Gems/Atom/RHI/DX12/Code/Source/RHI/MemoryView.h @@ -77,6 +77,9 @@ namespace AZ /// Sets the name of the ID3D12Resource. void SetName(const AZStd::string_view& name); + /// Sets the name of the ID3D12Resource. + void SetName(const AZStd::wstring_view& name); + private: void Construct(); diff --git a/Gems/Atom/RHI/DX12/Code/Source/RHI/RayTracingBlas.cpp b/Gems/Atom/RHI/DX12/Code/Source/RHI/RayTracingBlas.cpp index 917e1a4d98..0f651f9be3 100644 --- a/Gems/Atom/RHI/DX12/Code/Source/RHI/RayTracingBlas.cpp +++ b/Gems/Atom/RHI/DX12/Code/Source/RHI/RayTracingBlas.cpp @@ -83,7 +83,7 @@ namespace AZ AZ_Assert(resultCode == RHI::ResultCode::Success, "failed to create BLAS scratch buffer"); MemoryView& scratchMemoryView = static_cast(buffers.m_scratchBuffer.get())->GetMemoryView(); - scratchMemoryView.SetName("BLAS Scratch"); + scratchMemoryView.SetName(L"BLAS Scratch"); // create BLAS buffer buffers.m_blasBuffer = RHI::Factory::Get().CreateBuffer(); @@ -98,7 +98,7 @@ namespace AZ AZ_Assert(resultCode == RHI::ResultCode::Success, "failed to create BLAS buffer"); MemoryView& blasMemoryView = static_cast(buffers.m_blasBuffer.get())->GetMemoryView(); - blasMemoryView.SetName("BLAS"); + blasMemoryView.SetName(L"BLAS"); #endif return RHI::ResultCode::Success; } diff --git a/Gems/Atom/RHI/DX12/Code/Source/RHI/RayTracingShaderTable.cpp b/Gems/Atom/RHI/DX12/Code/Source/RHI/RayTracingShaderTable.cpp index 21e7dbc82e..0a9ea63d2f 100644 --- a/Gems/Atom/RHI/DX12/Code/Source/RHI/RayTracingShaderTable.cpp +++ b/Gems/Atom/RHI/DX12/Code/Source/RHI/RayTracingShaderTable.cpp @@ -72,7 +72,7 @@ namespace AZ AZ_Assert(resultCode == RHI::ResultCode::Success, "failed to create shader table buffer"); MemoryView& shaderTableMemoryView = static_cast(shaderTableBuffer.get())->GetMemoryView(); - shaderTableMemoryView.SetName("RayTracingShaderTable"); + shaderTableMemoryView.SetName(L"RayTracingShaderTable"); // copy records RHI::BufferMapResponse mapResponse; diff --git a/Gems/Atom/RHI/DX12/Code/Source/RHI/RayTracingTlas.cpp b/Gems/Atom/RHI/DX12/Code/Source/RHI/RayTracingTlas.cpp index 8c4f63aacc..52e4aa4881 100644 --- a/Gems/Atom/RHI/DX12/Code/Source/RHI/RayTracingTlas.cpp +++ b/Gems/Atom/RHI/DX12/Code/Source/RHI/RayTracingTlas.cpp @@ -66,7 +66,7 @@ namespace AZ AZ_Assert(resultCode == RHI::ResultCode::Success, "failed to create TLAS instances buffer"); MemoryView& tlasInstancesMemoryView = static_cast(buffers.m_tlasInstancesBuffer.get())->GetMemoryView(); - tlasInstancesMemoryView.SetName("TLAS Instance"); + tlasInstancesMemoryView.SetName(L"TLAS Instance"); RHI::BufferMapResponse mapResponse; resultCode = bufferPools.GetTlasInstancesBufferPool()->MapBuffer(RHI::BufferMapRequest(*buffers.m_tlasInstancesBuffer, 0, instanceDescsSizeInBytes), mapResponse); @@ -130,7 +130,7 @@ namespace AZ AZ_Assert(resultCode == RHI::ResultCode::Success, "failed to create TLAS scratch buffer"); MemoryView& scratchMemoryView = static_cast(buffers.m_scratchBuffer.get())->GetMemoryView(); - scratchMemoryView.SetName("TLAS Scratch"); + scratchMemoryView.SetName(L"TLAS Scratch"); // create TLAS buffer buffers.m_tlasBuffer = RHI::Factory::Get().CreateBuffer(); @@ -145,7 +145,7 @@ namespace AZ AZ_Assert(resultCode == RHI::ResultCode::Success, "failed to create TLAS buffer"); MemoryView& tlasMemoryView = static_cast(buffers.m_tlasBuffer.get())->GetMemoryView(); - tlasMemoryView.SetName("TLAS"); + tlasMemoryView.SetName(L"TLAS"); #endif return RHI::ResultCode::Success; } From 3535d6b6b34f8fb342414031fe3256abee10305f Mon Sep 17 00:00:00 2001 From: Junbo Liang <68558268+junbo75@users.noreply.github.com> Date: Fri, 10 Sep 2021 12:56:41 -0700 Subject: [PATCH 18/20] [AWS Automation] Stack tear down mechanism for the deployment on Jenkins (#3656) Make awsi_test_profile_vs2019 a nonblocking step to make sure that resources are cleaned up even though automation tests failed Signed-off-by: Junbo Liang --- .../Gem/PythonTests/AWS/README.md | 22 +++-- .../aws_metrics_automation_test.py | 8 +- .../build/Platform/Windows/build_config.json | 14 ++- .../Windows/destroy_cdk_applications.cmd | 92 +++++++++++++++++++ 4 files changed, 121 insertions(+), 15 deletions(-) create mode 100644 scripts/build/Platform/Windows/destroy_cdk_applications.cmd diff --git a/AutomatedTesting/Gem/PythonTests/AWS/README.md b/AutomatedTesting/Gem/PythonTests/AWS/README.md index 8b5e65d6d7..1429fc487f 100644 --- a/AutomatedTesting/Gem/PythonTests/AWS/README.md +++ b/AutomatedTesting/Gem/PythonTests/AWS/README.md @@ -8,19 +8,21 @@ ## Deploy CDK Applications 1. Go to the AWS IAM console and create an IAM role called o3de-automation-tests which adds your own account as as a trusted entity and uses the "AdministratorAccess" permissions policy. 2. Copy {engine_root}\scripts\build\Platform\Windows\deploy_cdk_applications.cmd to your engine root folder. -3. Open a Command Prompt window at the engine root and set the following environment variables: - Set O3DE_AWS_PROJECT_NAME=AWSAUTO - Set O3DE_AWS_DEPLOY_REGION=us-east-1 - Set ASSUME_ROLE_ARN="arn:aws:iam::{your_aws_account_id}:role/o3de-automation-tests" - Set COMMIT_ID=HEAD -4. Deploy the CDK applications for AWS gems by running deploy_cdk_applications.cmd in the same Command Prompt window. -5. Edit AWS\common\constants.py to replace the assume role ARN with your own: - arn:aws:iam::{your_aws_account_id}:role/o3de-automation-tests +3. Open a new Command Prompt window at the engine root and set the following environment variables: + Set O3DE_AWS_PROJECT_NAME=AWSAUTO + Set O3DE_AWS_DEPLOY_REGION=us-east-1 + Set ASSUME_ROLE_ARN="arn:aws:iam::{your_aws_account_id}:role/o3de-automation-tests" + Set COMMIT_ID=HEAD +4. In the same Command Prompt window, Deploy the CDK applications for AWS gems by running deploy_cdk_applications.cmd. ## Run Automation Tests ### CLI -Open a Command Prompt window at the engine root and run the following CLI command: +In the same Command Prompt window, run the following CLI command: python\python.cmd -m pytest {path_to_the_test_file} --build-directory {directory_to_the_profile_build} ### Pycharm -You can also run any specific automation test directly from Pycharm by providing the "--build-directory" argument in the Run Configuration. \ No newline at end of file +You can also run any specific automation test directly from Pycharm by providing the "--build-directory" argument in the Run Configuration. + +## Destroy CDK Applications +1. Copy {engine_root}\scripts\build\Platform\Windows\destroy_cdk_applications.cmd to your engine root folder. +2. In the same Command Prompt window, destroy the CDK applications for AWS gems by running destroy_cdk_applications.cmd. \ No newline at end of file diff --git a/AutomatedTesting/Gem/PythonTests/AWS/Windows/aws_metrics/aws_metrics_automation_test.py b/AutomatedTesting/Gem/PythonTests/AWS/Windows/aws_metrics/aws_metrics_automation_test.py index 1fb35cb9e8..a0a53f92b5 100644 --- a/AutomatedTesting/Gem/PythonTests/AWS/Windows/aws_metrics/aws_metrics_automation_test.py +++ b/AutomatedTesting/Gem/PythonTests/AWS/Windows/aws_metrics/aws_metrics_automation_test.py @@ -167,10 +167,6 @@ class TestAWSMetricsWindows(object): args=(aws_metrics_utils, resource_mappings, True)) kinesis_analytics_application_thread.start() - # Clear the analytics bucket objects before sending new metrics. - aws_metrics_utils.empty_bucket( - resource_mappings.get_resource_name_id('AWSMetrics.AnalyticsBucketName')) - log_monitor = setup(launcher, asset_processor) # Kinesis analytics application needs to be in the running state before we start the game launcher. @@ -205,6 +201,10 @@ class TestAWSMetricsWindows(object): for thread in operational_threads: thread.join() + # Clear the analytics bucket objects so that the S3 bucket can be destroyed during tear down. + aws_metrics_utils.empty_bucket( + resource_mappings.get_resource_name_id('AWSMetrics.AnalyticsBucketName')) + def test_unauthorized_user_request_rejected(self, level: str, launcher: pytest.fixture, diff --git a/scripts/build/Platform/Windows/build_config.json b/scripts/build/Platform/Windows/build_config.json index 689ba6935d..02bd01038a 100644 --- a/scripts/build/Platform/Windows/build_config.json +++ b/scripts/build/Platform/Windows/build_config.json @@ -220,13 +220,17 @@ ], "steps": [ "awsi_deployment", - "awsi_test_profile_vs2019" + "awsi_test_profile_vs2019", + "awsi_destruction" ] }, "awsi_test_profile_vs2019": { "TAGS": [ "weekly-build-metrics" ], + "PIPELINE_ENV": { + "NONBLOCKING_STEP": "True" + }, "COMMAND": "build_test_windows.cmd", "PARAMETERS": { "CONFIGURATION": "profile", @@ -411,5 +415,13 @@ }, "COMMAND": "deploy_cdk_applications.cmd", "PARAMETERS": {} + }, + "awsi_destruction": { + "TAGS": [], + "PIPELINE_ENV": { + "NONBLOCKING_STEP": "True" + }, + "COMMAND": "destroy_cdk_applications.cmd", + "PARAMETERS": {} } } diff --git a/scripts/build/Platform/Windows/destroy_cdk_applications.cmd b/scripts/build/Platform/Windows/destroy_cdk_applications.cmd new file mode 100644 index 0000000000..dacc9d327a --- /dev/null +++ b/scripts/build/Platform/Windows/destroy_cdk_applications.cmd @@ -0,0 +1,92 @@ +@ECHO OFF +REM +REM Copyright (c) Contributors to the Open 3D Engine Project. +REM For complete copyright and license terms please see the LICENSE at the root of this distribution. +REM +REM SPDX-License-Identifier: Apache-2.0 OR MIT +REM +REM + +REM Destroy the CDK applcations for AWS gems (Windows only) +REM Prerequisites: +REM 1) Node.js is installed +REM 2) Node.js version >= 10.13.0, except for versions 13.0.0 - 13.6.0. A version in active long-term support is recommended. +SETLOCAL EnableDelayedExpansion + +SET SOURCE_DIRECTORY=%CD% +SET PATH=%SOURCE_DIRECTORY%\python;%PATH% +SET GEM_DIRECTORY=%SOURCE_DIRECTORY%\Gems + +REM Create and activate a virtualenv for the CDK destruction +CALL python -m venv .env +IF ERRORLEVEL 1 ( + ECHO [cdk_bootstrap] Failed to create a virtualenv for the CDK destruction + exit /b 1 +) +CALL .env\Scripts\activate.bat +IF ERRORLEVEL 1 ( + ECHO [cdk_bootstrap] Failed to activate the virtualenv for the CDK destruction + exit /b 1 +) + +ECHO [cdk_installation] Install the latest version of CDK +CALL npm uninstall -g aws-cdk +IF ERRORLEVEL 1 ( + ECHO [cdk_bootstrap] Failed to uninstall the current version of CDK + exit /b 1 +) +CALL npm install -g aws-cdk@latest +IF ERRORLEVEL 1 ( + ECHO [cdk_bootstrap] Failed to install the latest version of CDK + exit /b 1 +) + +REM Set temporary AWS credentials from the assume role +FOR /f "tokens=1,2,3" %%a IN ('CALL aws sts assume-role --query Credentials.[SecretAccessKey^,SessionToken^,AccessKeyId] --output text --role-arn %ASSUME_ROLE_ARN% --role-session-name o3de-Automation-session') DO ( + SET AWS_SECRET_ACCESS_KEY=%%a + SET AWS_SESSION_TOKEN=%%b + SET AWS_ACCESS_KEY_ID=%%c +) +FOR /F "tokens=4 delims=:" %%a IN ("%ASSUME_ROLE_ARN%") DO SET O3DE_AWS_DEPLOY_ACCOUNT=%%a + +SET ERROR_EXISTS=0 +CALL :DestroyCDKApplication AWSCore,ERROR_EXISTS +CALL :DestroyCDKApplication AWSClientAuth,ERROR_EXISTS +CALL :DestroyCDKApplication AWSMetrics,ERROR_EXISTS + +IF %ERROR_EXISTS% EQU 1 ( + EXIT /b 1 +) + +EXIT /b 0 + +:DestroyCDKApplication +REM Destroy the CDK application for a specific AWS gem +SET GEM_NAME=%~1 +ECHO [cdk_destruction] Destroy the CDK application for the %GEM_NAME% gem +PUSHD %GEM_DIRECTORY%\%GEM_NAME%\cdk + +REM Revert the CDK application code to a stable state using the provided commit ID +CALL git checkout %COMMIT_ID% -- . +IF ERRORLEVEL 1 ( + ECHO [git_checkout] Failed to checkout the CDK application for the %GEM_NAME% gem using commit ID %COMMIT_ID% + POPD + SET %~2=1 +) + +REM Install required packages for the CDK application +CALL python -m pip install -r requirements.txt +IF ERRORLEVEL 1 ( + ECHO [cdk_destruction] Failed to install required packages for the %GEM_NAME% gem + POPD + SET %~2=1 +) + +REM Destroy the CDK application +CALL cdk destroy --all -f +IF ERRORLEVEL 1 ( + ECHO [cdk_destruction] Failed to destroy the CDK application for the %GEM_NAME% gem + POPD + SET %~2=1 +) +POPD From 5bf749dcacab59b4c5a536fd9c2f68c33611c5ee Mon Sep 17 00:00:00 2001 From: Alex Peterson <26804013+AMZN-alexpete@users.noreply.github.com> Date: Fri, 10 Sep 2021 14:10:49 -0700 Subject: [PATCH 19/20] fix infinite loop due to thin triangles (#4027) * fix infinite loop due to thin triangles Signed-off-by: AMZN-alexpete <26804013+AMZN-alexpete@users.noreply.github.com> * check exact triangles size Signed-off-by: AMZN-alexpete <26804013+AMZN-alexpete@users.noreply.github.com> --- .../Code/Source/Shape/ShapeGeometryUtil.cpp | 11 ++++--- .../Code/Tests/ShapeGeometryUtilTest.cpp | 33 +++++++++++++++++++ 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/Gems/LmbrCentral/Code/Source/Shape/ShapeGeometryUtil.cpp b/Gems/LmbrCentral/Code/Source/Shape/ShapeGeometryUtil.cpp index 3b54447fdd..e8bf3748fa 100644 --- a/Gems/LmbrCentral/Code/Source/Shape/ShapeGeometryUtil.cpp +++ b/Gems/LmbrCentral/Code/Source/Shape/ShapeGeometryUtil.cpp @@ -152,17 +152,18 @@ namespace LmbrCentral const AZ::Vector2 edgeAfter = next - curr; const float triangleArea = Wedge(edgeBefore, edgeAfter); + const float tolerance = 0.001f; const bool interiorVertex = triangleArea <= 0.0f; - // if triangle is not an 'ear', continue. - if (!interiorVertex) + // if triangle is not an 'ear' and we have other vertices, continue. + if (!interiorVertex && vertices.size() > 3) { continue; } - // check no other vertices are inside the triangle formed - // by these three vertices, if so, continue to next vertex. - if (vertices.size() > 3) + // check if this is a large enough triangle, that there are no other vertices + // inside the triangle formed, otherwise, continue to next vertex. + if (vertices.size() > 3 && !AZ::IsClose(triangleArea, 0.f, tolerance)) { bool pointInside = false; for (size_t j = (nextIndex + 1) % vertices.size(); j != prevIndex; j = (j + 1) % vertices.size()) diff --git a/Gems/LmbrCentral/Code/Tests/ShapeGeometryUtilTest.cpp b/Gems/LmbrCentral/Code/Tests/ShapeGeometryUtilTest.cpp index 390b30abe3..77e4974db1 100644 --- a/Gems/LmbrCentral/Code/Tests/ShapeGeometryUtilTest.cpp +++ b/Gems/LmbrCentral/Code/Tests/ShapeGeometryUtilTest.cpp @@ -94,6 +94,39 @@ namespace UnitTest EXPECT_TRUE(triangles.size() == 18); } + // thin + TEST_F(ShapeGeometryUtilTest, GenerateTrianglesThin) + { + // given a series of vertices that are known to cause an infinite loop in the past + // due to numerical precision issues with very thin triangles + AZStd::vector triangles = + LmbrCentral::GenerateTriangles( + { + AZ::Vector2( 2.00000000f, -1.50087357f), + AZ::Vector2( 2.00000000f, -1.24706364f), + AZ::Vector2( 1.99930608f, -0.999682188f), + AZ::Vector2( 1.99859631f, -0.746669292f), + AZ::Vector2( 1.99789453f, -0.496492654f), + AZ::Vector2( 1.89999998f, 34.4000015f), + AZ::Vector2( 1.95483327f, 0.787139893f), + AZ::Vector2( 1.95505607f, 0.650562286f), + AZ::Vector2( 1.95553458f, 0.357242584f), + AZ::Vector2( 1.95596826f, 0.0913925171f), + AZ::Vector2( 1.95620418f, -0.0532035828f), + AZ::Vector2( 1.95642424f, -0.188129425f), + AZ::Vector2( 1.95684254f, -0.444545746f), + AZ::Vector2( 1.95693028f, -0.498298645f), + AZ::Vector2( 1.95734584f, -0.753005981f), + AZ::Vector2( 1.95775008f, -1.00079727f), + AZ::Vector2( 1.95814919f, -1.24542999f), + AZ::Vector2( 1.95856297f, -1.49910200f) + } + ); + + // expect the algorithm completes and produces triangles (num verts - 2) * 3 + EXPECT_TRUE(triangles.size() == 48); + } + // test double to record if DrawTrianglesIndexed or DrawLines are called class DebugShapeDebugDisplayRequests : public AzFramework::DebugDisplayRequests { From 72cd282ad2f21aa479d764115040bb92a883e366 Mon Sep 17 00:00:00 2001 From: Chris Burel Date: Fri, 10 Sep 2021 15:16:33 -0700 Subject: [PATCH 20/20] Avoid redefining `PRI` macros on Linux (#4055) * Avoid redefining `PRI` macros on Linux The fixed width 64-bit integer types are defined differently per platform. Some platforms define it as "long", others define it as "long long". For consistency, `AZ::u64` or `AZ::s64` is always defined to "long long". However, this causes problems for formatting those types, because on platforms where `uint64_t` is a `long`, `PRIu64` gives the wrong format string for `AZ::u64`. Previously this was fixed by redefining the `PRI` macros so that they work for `AZ::u64`, but that breaks the ability to format `uint64_t`. We could add an AZ-specific version of the `PRI` macros for 64-bit integer types, but we don't really need to, since they are `long long` on every platform we support. * Use `%ll` for `AZ::u64` * Use `PRIu64` for `uint64_t` Signed-off-by: Chris Burel * Avoid redefining `PRI` macros in CryCommon Signed-off-by: Chris Burel --- .../UnixLike/AzCore/PlatformIncl_UnixLike.h | 13 ------------- Code/Legacy/CryCommon/platform.h | 15 ++------------- Code/Legacy/CrySystem/XML/XMLBinaryNode.cpp | 11 ++--------- Code/Legacy/CrySystem/XML/xml.cpp | 11 ++--------- .../native/AssetManager/SourceFileRelocator.cpp | 4 ++-- .../native/utilities/assetUtils.cpp | 6 +++--- Gems/AudioSystem/Code/Source/Engine/ATL.cpp | 6 +++--- .../Code/Source/Engine/ATLAudioObject.cpp | 2 +- .../Builders/SliceBuilder/SliceBuilderWorker.cpp | 2 +- .../Code/Source/AreaSystemComponent.cpp | 4 ++-- 10 files changed, 18 insertions(+), 56 deletions(-) diff --git a/Code/Framework/AzCore/Platform/Common/UnixLike/AzCore/PlatformIncl_UnixLike.h b/Code/Framework/AzCore/Platform/Common/UnixLike/AzCore/PlatformIncl_UnixLike.h index 451ba1763a..63e8a4ce70 100644 --- a/Code/Framework/AzCore/Platform/Common/UnixLike/AzCore/PlatformIncl_UnixLike.h +++ b/Code/Framework/AzCore/Platform/Common/UnixLike/AzCore/PlatformIncl_UnixLike.h @@ -9,16 +9,3 @@ #pragma once #include - -#define __STDC_FORMAT_MACROS -#include - -// types like AZ::u64 require an usigned long long, but inttypes.h has it as unsigned long -#undef PRIX64 -#undef PRIx64 -#undef PRId64 -#undef PRIu64 -#define PRIX64 "llX" -#define PRIx64 "llx" -#define PRId64 "lld" -#define PRIu64 "llu" diff --git a/Code/Legacy/CryCommon/platform.h b/Code/Legacy/CryCommon/platform.h index 37f0636c3a..2baddaafd5 100644 --- a/Code/Legacy/CryCommon/platform.h +++ b/Code/Legacy/CryCommon/platform.h @@ -51,20 +51,9 @@ #undef AZ_RESTRICTED_SECTION_IMPLEMENTED #elif defined(LINUX) || defined(APPLE) #define __STDC_FORMAT_MACROS - #include - #if defined(APPLE) || defined(LINUX64) - // int64 is not the same type as the operating system's int64_t - #undef PRIX64 - #undef PRIx64 - #undef PRId64 - #undef PRIu64 - #define PRIX64 "llX" - #define PRIx64 "llx" - #define PRId64 "lld" - #define PRIu64 "llu" - #endif + #include #else - #include + #include #endif #if !defined(PRISIZE_T) diff --git a/Code/Legacy/CrySystem/XML/XMLBinaryNode.cpp b/Code/Legacy/CrySystem/XML/XMLBinaryNode.cpp index ec154b31e8..a13759e82b 100644 --- a/Code/Legacy/CrySystem/XML/XMLBinaryNode.cpp +++ b/Code/Legacy/CrySystem/XML/XMLBinaryNode.cpp @@ -125,7 +125,7 @@ bool CBinaryXmlNode::getAttr(const char* key, int64& value) const const char* svalue = GetValue(key); if (svalue) { - azsscanf(svalue, "%" PRId64, &value); + value = strtoll(svalue, nullptr, 10); return true; } return false; @@ -137,14 +137,7 @@ bool CBinaryXmlNode::getAttr(const char* key, uint64& value, bool useHexFormat) const char* svalue = GetValue(key); if (svalue) { - if (useHexFormat) - { - azsscanf(svalue, "%" PRIX64, &value); - } - else - { - azsscanf(svalue, "%" PRIu64, &value); - } + value = strtoull(svalue, nullptr, useHexFormat ? 16 : 10); return true; } return false; diff --git a/Code/Legacy/CrySystem/XML/xml.cpp b/Code/Legacy/CrySystem/XML/xml.cpp index b1f18142f1..826e74b758 100644 --- a/Code/Legacy/CrySystem/XML/xml.cpp +++ b/Code/Legacy/CrySystem/XML/xml.cpp @@ -400,7 +400,7 @@ bool CXmlNode::getAttr(const char* key, int64& value) const const char* svalue = GetValue(key); if (svalue) { - azsscanf(svalue, "%" PRId64, &value); + value = strtoll(key, nullptr, 10); return true; } return false; @@ -412,14 +412,7 @@ bool CXmlNode::getAttr(const char* key, uint64& value, bool useHexFormat) const const char* svalue = GetValue(key); if (svalue) { - if (useHexFormat) - { - azsscanf(svalue, "%" PRIX64, &value); - } - else - { - azsscanf(svalue, "%" PRIu64, &value); - } + value = strtoull(key, nullptr, useHexFormat ? 16 : 10); return true; } return false; diff --git a/Code/Tools/AssetProcessor/native/AssetManager/SourceFileRelocator.cpp b/Code/Tools/AssetProcessor/native/AssetManager/SourceFileRelocator.cpp index 64e176ffe4..04de6c64f3 100644 --- a/Code/Tools/AssetProcessor/native/AssetManager/SourceFileRelocator.cpp +++ b/Code/Tools/AssetProcessor/native/AssetManager/SourceFileRelocator.cpp @@ -699,7 +699,7 @@ Please note that only those seed files will get updated that are active for your if (isMove) { report.append(AZStd::string::format( - "SOURCEID: %" PRId64 ", CURRENT PATH: %s, NEW PATH: %s, CURRENT GUID: %s, NEW GUID: %s\n", + "SOURCEID: %lld, CURRENT PATH: %s, NEW PATH: %s, CURRENT GUID: %s, NEW GUID: %s\n", relocationInfo.m_sourceEntry.m_sourceID, relocationInfo.m_oldRelativePath.c_str(), relocationInfo.m_newRelativePath.c_str(), @@ -709,7 +709,7 @@ Please note that only those seed files will get updated that are active for your else { report.append(AZStd::string::format( - "SOURCEID: %" PRId64 ", CURRENT PATH: %s, CURRENT GUID: %s\n", + "SOURCEID: %lld, CURRENT PATH: %s, CURRENT GUID: %s\n", relocationInfo.m_sourceEntry.m_sourceID, relocationInfo.m_oldRelativePath.c_str(), relocationInfo.m_sourceEntry.m_sourceGuid.ToString().c_str())); diff --git a/Code/Tools/AssetProcessor/native/utilities/assetUtils.cpp b/Code/Tools/AssetProcessor/native/utilities/assetUtils.cpp index 85801bdf8a..c0e907f2d5 100644 --- a/Code/Tools/AssetProcessor/native/utilities/assetUtils.cpp +++ b/Code/Tools/AssetProcessor/native/utilities/assetUtils.cpp @@ -1018,7 +1018,7 @@ namespace AssetUtilities AZStd::string ComputeJobLogFileName(const AzToolsFramework::AssetSystem::JobInfo& jobInfo) { - return AZStd::string::format("%s-%u-%" PRIu64 ".log", jobInfo.m_sourceFile.c_str(), jobInfo.GetHash(), jobInfo.m_jobRunKey); + return AZStd::string::format("%s-%u-%llu.log", jobInfo.m_sourceFile.c_str(), jobInfo.GetHash(), jobInfo.m_jobRunKey); } AZStd::string ComputeJobLogFileName(const AssetBuilderSDK::CreateJobsRequest& createJobsRequest) @@ -1287,13 +1287,13 @@ namespace AssetUtilities // so we add the size of it too. // its also possible that it moved to a different file with the same modtime/hash AND size, // but with a different name. So we add that too. - return AZStd::string::format("%" PRIX64 ":%" PRIu64 ":%s", fileIdentifier, fileStateInfo.m_fileSize, nameToUse.c_str()); + return AZStd::string::format("%llX:%llu:%s", fileIdentifier, fileStateInfo.m_fileSize, nameToUse.c_str()); } } AZStd::string ComputeJobLogFileName(const AssetProcessor::JobEntry& jobEntry) { - return AZStd::string::format("%s-%u-%" PRIu64 ".log", jobEntry.m_databaseSourceName.toUtf8().constData(), jobEntry.GetHash(), jobEntry.m_jobRunKey); + return AZStd::string::format("%s-%u-%llu.log", jobEntry.m_databaseSourceName.toUtf8().constData(), jobEntry.GetHash(), jobEntry.m_jobRunKey); } bool CreateTempRootFolder(QString startFolder, QDir& tempRoot) diff --git a/Gems/AudioSystem/Code/Source/Engine/ATL.cpp b/Gems/AudioSystem/Code/Source/Engine/ATL.cpp index e43f7beba7..6a842785fa 100644 --- a/Gems/AudioSystem/Code/Source/Engine/ATL.cpp +++ b/Gems/AudioSystem/Code/Source/Engine/ATL.cpp @@ -2144,7 +2144,7 @@ namespace Audio { if (bytes < (1 << 10)) { - azsnprintf(buffer, bufLength, "%" PRIu64 " B", bytes); + azsnprintf(buffer, bufLength, "%llu B", bytes); } else if (bytes < (1 << 20)) { @@ -2261,10 +2261,10 @@ namespace Audio auxGeom.Draw2dLabel(fPosX + xTablePositions[4], posY + lineHeight, textSize, color, false, "%s", buffer); auxGeom.Draw2dLabel(fPosX + xTablePositions[5], posY, textSize, color, false, "Total Allocs"); - auxGeom.Draw2dLabel(fPosX + xTablePositions[5], posY + lineHeight, textSize, color, false, "%" PRIu64, totalAllocs); + auxGeom.Draw2dLabel(fPosX + xTablePositions[5], posY + lineHeight, textSize, color, false, "%llu", totalAllocs); auxGeom.Draw2dLabel(fPosX + xTablePositions[6], posY, textSize, color, false, "Total Frees"); - auxGeom.Draw2dLabel(fPosX + xTablePositions[6], posY + lineHeight, textSize, color, false, "%" PRIu64, totalFrees); + auxGeom.Draw2dLabel(fPosX + xTablePositions[6], posY + lineHeight, textSize, color, false, "%llu", totalFrees); } else { diff --git a/Gems/AudioSystem/Code/Source/Engine/ATLAudioObject.cpp b/Gems/AudioSystem/Code/Source/Engine/ATLAudioObject.cpp index c8548efa04..6e229c7c0e 100644 --- a/Gems/AudioSystem/Code/Source/Engine/ATLAudioObject.cpp +++ b/Gems/AudioSystem/Code/Source/Engine/ATLAudioObject.cpp @@ -762,7 +762,7 @@ namespace Audio AZStd::string eventsString; for (auto activeEvent : m_cActiveEvents) { - eventsString = AZStd::string::format("%s%" PRIu64 "%s", eventsString.c_str(), activeEvent, sSeparator); + eventsString = AZStd::string::format("%s%llu%s", eventsString.c_str(), activeEvent, sSeparator); } return eventsString; diff --git a/Gems/LmbrCentral/Code/Source/Builders/SliceBuilder/SliceBuilderWorker.cpp b/Gems/LmbrCentral/Code/Source/Builders/SliceBuilder/SliceBuilderWorker.cpp index 79cf3ac282..d917a3b600 100644 --- a/Gems/LmbrCentral/Code/Source/Builders/SliceBuilder/SliceBuilderWorker.cpp +++ b/Gems/LmbrCentral/Code/Source/Builders/SliceBuilder/SliceBuilderWorker.cpp @@ -211,7 +211,7 @@ namespace SliceBuilder jobDescriptor.SetPlatformIdentifier(info.m_identifier.c_str()); jobDescriptor.m_additionalFingerprintInfo = AZStd::string(compilerVersion) - .append(AZStd::string::format("|%" PRIu64, static_cast(sourceSliceTypeFingerprint))); + .append(AZStd::string::format("|%zu", sourceSliceTypeFingerprint)); for (const auto& sourceDependency : sourceFileDependencies) { diff --git a/Gems/Vegetation/Code/Source/AreaSystemComponent.cpp b/Gems/Vegetation/Code/Source/AreaSystemComponent.cpp index 4ffed260de..6684aef913 100644 --- a/Gems/Vegetation/Code/Source/AreaSystemComponent.cpp +++ b/Gems/Vegetation/Code/Source/AreaSystemComponent.cpp @@ -211,7 +211,7 @@ namespace Vegetation { return AZ::Failure( AZStd::string::format("The combination of View Area Grid Size and Sector Point Density will create %" PRId64 " instances. Only a max of %" PRId64 " instances is allowed.", - static_cast(totalInstances), static_cast(s_maxVegetationInstances))); + totalInstances, s_maxVegetationInstances)); } return AZ::Success(); @@ -235,7 +235,7 @@ namespace Vegetation { return AZ::Failure( AZStd::string::format("The combination of View Area Grid Size and Sector Point Density will create %" PRId64 " instances. Only a max of %" PRId64 " instances is allowed.", - static_cast(totalInstances), static_cast(s_maxVegetationInstances))); + totalInstances, s_maxVegetationInstances)); } const float instancesPerMeter = static_cast(sectorDensity) / static_cast(m_sectorSizeInMeters);