diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..e04dd974 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "dgl/src/pugl-upstream"] + path = dgl/src/pugl-upstream + url = https://github.com/DISTRHO/pugl.git diff --git a/.travis.yml b/.travis.yml index b22ad41a..e315bdd4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,15 +1,25 @@ -os: linux -dist: bionic -languages: c++ -compiler: gcc +cache: + directories: + - ${HOME}/debs + +jobs: + # linux native build + - name: "Linux native" + os: linux + compiler: gcc + dist: bionic + env: + - TARGET="linux" + services: + - xvfb before_install: - - sh ${TRAVIS_BUILD_DIR}/.travis/before_install.sh + - bash ${TRAVIS_BUILD_DIR}/.travis/before_install.sh + install: - - sh ${TRAVIS_BUILD_DIR}/.travis/install.sh + - bash ${TRAVIS_BUILD_DIR}/.travis/install.sh + script: - - sh ${TRAVIS_BUILD_DIR}/.travis/script-linux.sh - #- sh ${TRAVIS_BUILD_DIR}/.travis/script-macos.sh - - sh ${TRAVIS_BUILD_DIR}/.travis/script-win32.sh - - sh ${TRAVIS_BUILD_DIR}/.travis/script-win64.sh + - make + - make -C tests diff --git a/.travis/before_install.sh b/.travis/before_install.sh index 64d655b1..78bd7611 100755 --- a/.travis/before_install.sh +++ b/.travis/before_install.sh @@ -2,6 +2,17 @@ set -e +# Special macOS native handling +if [ "${TARGET}" = "macos" ] || [ "${TARGET}" = "macos-universal" ]; then + exit 0 +fi + +if [ "${TARGET}" = "win32" ] || [ "${TARGET}" = "win64" ]; then + wget -qO- https://dl.winehq.org/wine-builds/winehq.key | sudo apt-key add - + sudo apt-add-repository -y 'deb https://dl.winehq.org/wine-builds/ubuntu/ focal main' + sudo dpkg --add-architecture i386 +fi + sudo add-apt-repository -y ppa:kxstudio-debian/kxstudio sudo add-apt-repository -y ppa:kxstudio-debian/mingw sudo add-apt-repository -y ppa:kxstudio-debian/toolchain diff --git a/.travis/install.sh b/.travis/install.sh index 5cc7cc07..b45bf775 100755 --- a/.travis/install.sh +++ b/.travis/install.sh @@ -2,18 +2,28 @@ set -e -sudo apt-get install -y \ - g++ \ - pkg-config \ - libcairo2-dev \ - libjack-jackd2-dev \ - liblo-dev \ - libgl1-mesa-dev \ - libx11-dev \ - mingw-w64 \ - binutils-mingw-w64-i686 \ - binutils-mingw-w64-x86-64 \ - g++-mingw-w64-i686 \ - g++-mingw-w64-x86-64 \ +# Special macOS native handling +if [ "${TARGET}" = "macos" ] || [ "${TARGET}" = "macos-universal" ]; then + HOMEBREW_NO_AUTO_UPDATE=1 brew install cairo jack2 liblo + exit 0 +fi -# apple-x86-setup +# Special handling for caching deb archives +if [ "$(ls ${HOME}/debs | wc -l)" -ne 0 ]; then + sudo cp ${HOME}/debs/*.deb /var/cache/apt/archives/ +fi + +# common +sudo apt-get install -y build-essential pkg-config + +# specific +if [ "${TARGET}" = "win32" ]; then + sudo apt-get install -y binutils-mingw-w64-i686 g++-mingw-w64-i686 mingw-w64 winehq-stable +elif [ "${TARGET}" = "win64" ]; then + sudo apt-get install -y binutils-mingw-w64-x86-64 g++-mingw-w64-x86-64 mingw-w64 winehq-stable +else + sudo apt-get install -y libcairo2-dev libgl1-mesa-dev libglu1-mesa-dev libjack-jackd2-dev liblo-dev libx11-dev +fi + +# Special handling for caching deb archives +sudo mv /var/cache/apt/archives/*.deb ${HOME}/debs/ diff --git a/LICENSE b/LICENSE index 6bd93e18..822c5576 100644 --- a/LICENSE +++ b/LICENSE @@ -1,5 +1,5 @@ DISTRHO Plugin Framework (DPF) -Copyright (C) 2012-2018 Filipe Coelho +Copyright (C) 2012-2021 Filipe Coelho Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this diff --git a/Makefile b/Makefile index e573a456..8e66f355 100644 --- a/Makefile +++ b/Makefile @@ -26,11 +26,9 @@ examples: dgl $(MAKE) all -C examples/MidiThrough $(MAKE) all -C examples/Parameters $(MAKE) all -C examples/States - ifeq ($(HAVE_CAIRO),true) $(MAKE) all -C examples/CairoUI endif - ifneq ($(MACOS_OR_WINDOWS),true) # ExternalUI is WIP $(MAKE) all -C examples/ExternalUI @@ -54,6 +52,9 @@ else gen: endif +tests: dgl + $(MAKE) -C tests + # -------------------------------------------------------------- clean: @@ -73,4 +74,4 @@ endif # -------------------------------------------------------------- -.PHONY: dgl examples +.PHONY: dgl examples tests diff --git a/Makefile.base.mk b/Makefile.base.mk index 93da71f2..eda2c83d 100644 --- a/Makefile.base.mk +++ b/Makefile.base.mk @@ -38,6 +38,9 @@ endif ifneq (,$(findstring mingw,$(TARGET_MACHINE))) WINDOWS=true endif +ifneq (,$(findstring windows,$(TARGET_MACHINE))) +WINDOWS=true +endif endif endif @@ -148,6 +151,9 @@ endif ifeq ($(MACOS),true) # MacOS linker flags LINK_OPTS = -fdata-sections -ffunction-sections -Wl,-dead_strip -Wl,-dead_strip_dylibs +ifneq ($(SKIP_STRIPPING),true) +LINK_OPTS += -Wl,-x +endif else # Common linker flags LINK_OPTS = -fdata-sections -ffunction-sections -Wl,--gc-sections -Wl,-O1 -Wl,--as-needed @@ -162,10 +168,7 @@ BASE_OPTS = -O2 -ffast-math -fdata-sections -ffunction-sections endif ifeq ($(WINDOWS),true) -# mingw has issues with this specific optimization -# See https://github.com/falkTX/Carla/issues/696 -BASE_OPTS += -fno-rerun-cse-after-loop -# See https://github.com/falkTX/Carla/issues/855 +# Needed for windows, see https://github.com/falkTX/Carla/issues/855 BASE_OPTS += -mstackrealign else # Not needed for Windows @@ -203,7 +206,7 @@ endif ifeq ($(TESTBUILD),true) BASE_FLAGS += -Werror -Wcast-qual -Wconversion -Wformat -Wformat-security -Wredundant-decls -Wshadow -Wstrict-overflow -fstrict-overflow -Wundef -Wwrite-strings -BASE_FLAGS += -Wpointer-arith -Wabi -Winit-self -Wuninitialized -Wstrict-overflow=5 +BASE_FLAGS += -Wpointer-arith -Wabi=98 -Winit-self -Wuninitialized -Wstrict-overflow=5 # BASE_FLAGS += -Wfloat-equal ifeq ($(CC),clang) BASE_FLAGS += -Wdocumentation -Wdocumentation-unknown-command @@ -225,13 +228,17 @@ endif # Check for required libraries HAVE_CAIRO = $(shell $(PKG_CONFIG) --exists cairo && echo true) +HAVE_VULKAN = $(shell $(PKG_CONFIG) --exists vulkan && echo true) ifeq ($(MACOS_OR_WINDOWS),true) HAVE_OPENGL = true else HAVE_OPENGL = $(shell $(PKG_CONFIG) --exists gl && echo true) ifneq ($(HAIKU),true) -HAVE_X11 = $(shell $(PKG_CONFIG) --exists x11 && echo true) +HAVE_X11 = $(shell $(PKG_CONFIG) --exists x11 && echo true) +HAVE_XCURSOR = $(shell $(PKG_CONFIG) --exists xcursor && echo true) +HAVE_XEXT = $(shell $(PKG_CONFIG) --exists xext && echo true) +HAVE_XRANDR = $(shell $(PKG_CONFIG) --exists xrandr && echo true) endif endif @@ -249,7 +256,7 @@ DGL_SYSTEM_LIBS += -lbe endif ifeq ($(MACOS),true) -DGL_SYSTEM_LIBS += -framework Cocoa +DGL_SYSTEM_LIBS += -framework Cocoa -framework CoreVideo endif ifeq ($(WINDOWS),true) @@ -258,8 +265,21 @@ endif ifneq ($(HAIKU_OR_MACOS_OR_WINDOWS),true) ifeq ($(HAVE_X11),true) -DGL_FLAGS += $(shell $(PKG_CONFIG) --cflags x11) +DGL_FLAGS += $(shell $(PKG_CONFIG) --cflags x11) -DHAVE_X11 DGL_SYSTEM_LIBS += $(shell $(PKG_CONFIG) --libs x11) +ifeq ($(HAVE_XCURSOR),true) +# TODO -DHAVE_XCURSOR +DGL_FLAGS += $(shell $(PKG_CONFIG) --cflags xcursor) +DGL_SYSTEM_LIBS += $(shell $(PKG_CONFIG) --libs xcursor) +endif +ifeq ($(HAVE_XEXT),true) +DGL_FLAGS += $(shell $(PKG_CONFIG) --cflags xext) -DHAVE_XEXT -DHAVE_XSYNC +DGL_SYSTEM_LIBS += $(shell $(PKG_CONFIG) --libs xext) +endif +ifeq ($(HAVE_XRANDR),true) +DGL_FLAGS += $(shell $(PKG_CONFIG) --cflags xrandr) -DHAVE_XRANDR +DGL_SYSTEM_LIBS += $(shell $(PKG_CONFIG) --libs xrandr) +endif endif endif @@ -307,6 +327,31 @@ HAVE_CAIRO_OR_OPENGL = true endif +# --------------------------------------------------------------------------------------------------------------------- +# Set Stub specific stuff + +ifeq ($(HAIKU_OR_MACOS_OR_WINDOWS),true) +HAVE_STUB = true +else +HAVE_STUB = $(HAVE_X11) +endif + +# --------------------------------------------------------------------------------------------------------------------- +# Set Vulkan specific stuff + +ifeq ($(HAVE_VULKAN),true) + +DGL_FLAGS += -DHAVE_VULKAN + +VULKAN_FLAGS = $(shell $(PKG_CONFIG) --cflags vulkan) +VULKAN_LIBS = $(shell $(PKG_CONFIG) --libs vulkan) + +ifneq ($(WINDOWS),true) +VULKAN_LIBS += -ldl +endif + +endif + # --------------------------------------------------------------------------------------------------------------------- # Set optional libraries specific stuff @@ -320,6 +365,19 @@ LIBLO_FLAGS = $(shell $(PKG_CONFIG) --cflags liblo) LIBLO_LIBS = $(shell $(PKG_CONFIG) --libs liblo) endif +# --------------------------------------------------------------------------------------------------------------------- +# Backwards-compatible HAVE_DGL + +ifeq ($(MACOS_OR_WINDOWS),true) +HAVE_DGL = true +else ifeq ($(HAVE_OPENGL),true) +ifeq ($(HAIKU),true) +HAVE_DGL = true +else +HAVE_DGL = $(HAVE_X11) +endif +endif + # --------------------------------------------------------------------------------------------------------------------- # Set app extension diff --git a/Makefile.plugins.mk b/Makefile.plugins.mk index 15bdceff..e5e319c2 100644 --- a/Makefile.plugins.mk +++ b/Makefile.plugins.mk @@ -55,6 +55,10 @@ endif OBJS_DSP = $(FILES_DSP:%=$(BUILD_DIR)/%.o) OBJS_UI = $(FILES_UI:%=$(BUILD_DIR)/%.o) +ifeq ($(MACOS),true) +OBJS_UI += $(BUILD_DIR)/DistrhoUI_macOS_$(NAME).mm.o +endif + # --------------------------------------------------------------------------------------------------------------------- # Set plugin binary file targets @@ -67,10 +71,22 @@ lv2_dsp = $(TARGET_DIR)/$(NAME).lv2/$(NAME)_dsp$(LIB_EXT) lv2_ui = $(TARGET_DIR)/$(NAME).lv2/$(NAME)_ui$(LIB_EXT) vst = $(TARGET_DIR)/$(NAME)-vst$(LIB_EXT) +# --------------------------------------------------------------------------------------------------------------------- +# Set plugin symbols to export + +ifeq ($(MACOS),true) +SYMBOLS_LADSPA = -Wl,-exported_symbol,_ladspa_descriptor +SYMBOLS_DSSI = -Wl,-exported_symbol,_ladspa_descriptor -Wl,-exported_symbol,_dssi_descriptor +SYMBOLS_LV2 = -Wl,-exported_symbol,_lv2_descriptor -Wl,-exported_symbol,_lv2_generate_ttl +SYMBOLS_LV2UI = -Wl,-exported_symbol,_lv2ui_descriptor +SYMBOLS_VST2 = -Wl,-exported_symbol,_VSTPluginMain +endif + # --------------------------------------------------------------------------------------------------------------------- # Handle UI stuff, disable UI support automatically ifeq ($(FILES_UI),) +HAVE_DGL = false UI_TYPE = none endif @@ -102,11 +118,32 @@ HAVE_DGL = false endif endif +ifeq ($(UI_TYPE),vulkan) +ifeq ($(HAVE_VULKAN),true) +DGL_FLAGS += -DDGL_VULKAN +DGL_FLAGS += $(VULKAN_FLAGS) +DGL_LIBS += $(VULKAN_LIBS) +DGL_LIB = $(DPF_PATH)/build/libdgl-vulkan.a +HAVE_DGL = true +else +HAVE_DGL = false +endif +endif + ifeq ($(UI_TYPE),external) DGL_FLAGS += -DDGL_EXTERNAL HAVE_DGL = true endif +ifeq ($(UI_TYPE),stub) +ifeq ($(HAVE_STUB),true) +DGL_LIB = $(DPF_PATH)/build/libdgl-stub.a +HAVE_DGL = true +else +HAVE_DGL = false +endif +endif + DGL_LIBS += $(DGL_SYSTEM_LIBS) -lm ifneq ($(HAVE_DGL),true) @@ -131,6 +168,11 @@ all: # --------------------------------------------------------------------------------------------------------------------- # Common +$(BUILD_DIR)/%.S.o: %.S + -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" + @echo "Compiling $<" + @$(CC) $< $(BUILD_C_FLAGS) -c -o $@ + $(BUILD_DIR)/%.c.o: %.c -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" @echo "Compiling $<" @@ -162,6 +204,11 @@ $(BUILD_DIR)/DistrhoUIMain_%.cpp.o: $(DPF_PATH)/distrho/DistrhoUIMain.cpp @echo "Compiling DistrhoUIMain.cpp ($*)" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -DDISTRHO_PLUGIN_TARGET_$* -c -o $@ +$(BUILD_DIR)/DistrhoUI_macOS_%.mm.o: $(DPF_PATH)/distrho/DistrhoUI_macOS.mm + -@mkdir -p $(BUILD_DIR) + @echo "Compiling DistrhoUI_macOS.mm ($*)" + $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -DPUGL_NAMESPACE=$* -DGL_SILENCE_DEPRECATION -Wno-deprecated-declarations -I$(DPF_PATH)/dgl/src -I$(DPF_PATH)/dgl/src/pugl-upstream/include -ObjC++ -c -o $@ + $(BUILD_DIR)/DistrhoPluginMain_JACK.cpp.o: $(DPF_PATH)/distrho/DistrhoPluginMain.cpp -@mkdir -p $(BUILD_DIR) @echo "Compiling DistrhoPluginMain.cpp (JACK)" @@ -194,7 +241,7 @@ ladspa: $(ladspa_dsp) $(ladspa_dsp): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_LADSPA.cpp.o -@mkdir -p $(shell dirname $@) @echo "Creating LADSPA plugin for $(NAME)" - $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) -o $@ + $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) $(SYMBOLS_LADSPA) -o $@ # --------------------------------------------------------------------------------------------------------------------- # DSSI @@ -206,7 +253,7 @@ dssi_ui: $(dssi_ui) $(dssi_dsp): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_DSSI.cpp.o -@mkdir -p $(shell dirname $@) @echo "Creating DSSI plugin library for $(NAME)" - $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) -o $@ + $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) $(SYMBOLS_DSSI) -o $@ $(dssi_ui): $(OBJS_UI) $(BUILD_DIR)/DistrhoUIMain_DSSI.cpp.o $(DGL_LIB) -@mkdir -p $(shell dirname $@) @@ -223,17 +270,17 @@ lv2_sep: $(lv2_dsp) $(lv2_ui) $(lv2): $(OBJS_DSP) $(OBJS_UI) $(BUILD_DIR)/DistrhoPluginMain_LV2.cpp.o $(BUILD_DIR)/DistrhoUIMain_LV2.cpp.o $(DGL_LIB) -@mkdir -p $(shell dirname $@) @echo "Creating LV2 plugin for $(NAME)" - $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) -o $@ + $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) $(SYMBOLS_LV2) $(SYMBOLS_LV2UI) -o $@ $(lv2_dsp): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_LV2.cpp.o -@mkdir -p $(shell dirname $@) @echo "Creating LV2 plugin library for $(NAME)" - $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) -o $@ + $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(SHARED) $(SYMBOLS_LV2) -o $@ $(lv2_ui): $(OBJS_UI) $(BUILD_DIR)/DistrhoUIMain_LV2.cpp.o $(DGL_LIB) -@mkdir -p $(shell dirname $@) @echo "Creating LV2 plugin UI for $(NAME)" - $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) -o $@ + $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) $(SYMBOLS_LV2UI) -o $@ # --------------------------------------------------------------------------------------------------------------------- # VST @@ -247,7 +294,7 @@ $(vst): $(OBJS_DSP) $(BUILD_DIR)/DistrhoPluginMain_VST.cpp.o endif -@mkdir -p $(shell dirname $@) @echo "Creating VST plugin for $(NAME)" - $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) -o $@ + $(SILENT)$(CXX) $^ $(BUILD_CXX_FLAGS) $(LINK_FLAGS) $(DGL_LIBS) $(SHARED) $(SYMBOLS_VST2) -o $@ # --------------------------------------------------------------------------------------------------------------------- diff --git a/dgl/Application.hpp b/dgl/Application.hpp index dc630ceb..3bac2f8a 100644 --- a/dgl/Application.hpp +++ b/dgl/Application.hpp @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2016 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -21,22 +21,15 @@ START_NAMESPACE_DGL -// ----------------------------------------------------------------------- -// Forward class names - -class Window; - -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- /** Base DGL Application class. One application instance is required for creating a window. - There's no single/global application instance in DGL, and multiple - windows can share the same app instance. + There's no single/global application instance in DGL, and multiple windows can share the same app instance. - In standalone mode an application will automatically quit its - event-loop when all its windows are closed. + In standalone mode an application will automatically quit its event-loop when all its windows are closed. */ class Application { @@ -44,7 +37,8 @@ public: /** Constructor. */ - Application(); + // NOTE: the default value is not yet passed, so we catch where we use this + Application(bool isStandalone = true); /** Destructor. @@ -62,11 +56,12 @@ public: idle() is called at regular intervals. @note This function is meant for standalones only, *never* call this from plugins. */ - void exec(int idleTime = 10); + void exec(uint idleTimeInMs = 10); /** Quit the application. This stops the event-loop and closes all Windows. + @note This function is meant for standalones only, *never* call this from plugins. */ void quit(); @@ -76,6 +71,30 @@ public: */ bool isQuiting() const noexcept; + /** + Add a callback function to be triggered on every idle cycle. + You can add more than one, and remove them at anytime with removeIdleCallback(). + Idle callbacks trigger right after OS event handling and Window idle events (within the same cycle). + There are no guarantees in terms of timing. + */ + void addIdleCallback(IdleCallback* callback); + + /** + Remove an idle callback previously added via addIdleCallback(). + */ + void removeIdleCallback(IdleCallback* callback); + + /** + Set the class name of the application. + + This is a stable identifier for the application, used as the window class/instance name on X11 and Windows. + It is not displayed to the user, but can be used in scripts and by window managers, + so it should be the same for every instance of the application, but different from other applications. + + Plugins created with DPF have their class name automatically set based on DGL_NAMESPACE and plugin name. + */ + void setClassName(const char* name); + private: struct PrivateData; PrivateData* const pData; @@ -84,7 +103,7 @@ private: DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(Application) }; -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- END_NAMESPACE_DGL diff --git a/dgl/Base.hpp b/dgl/Base.hpp index 90377883..d726c6fc 100644 --- a/dgl/Base.hpp +++ b/dgl/Base.hpp @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2019 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -20,7 +20,7 @@ #include "../distrho/extra/LeakDetector.hpp" #include "../distrho/extra/ScopedPointer.hpp" -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- // Define namespace #ifndef DGL_NAMESPACE @@ -33,33 +33,46 @@ START_NAMESPACE_DGL -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- // Base DGL enums -/** - Convenience symbols for ASCII control characters. - */ -enum Char { - kCharBackspace = 0x08, - kCharEscape = 0x1B, - kCharDelete = 0x7F -}; - /** Keyboard modifier flags. */ enum Modifier { - kModifierShift = 1 << 0, /**< Shift key */ - kModifierControl = 1 << 1, /**< Control key */ - kModifierAlt = 1 << 2, /**< Alt/Option key */ - kModifierSuper = 1 << 3 /**< Mod4/Command/Windows key */ + kModifierShift = 1u << 0u, ///< Shift key + kModifierControl = 1u << 1u, ///< Control key + kModifierAlt = 1u << 2u, ///< Alt/Option key + kModifierSuper = 1u << 3u ///< Mod4/Command/Windows key }; /** - Special (non-Unicode) keyboard keys. + Keyboard key codepoints. + + All keys are identified by a Unicode code point in PuglEventKey::key. This + enumeration defines constants for special keys that do not have a standard + code point, and some convenience constants for control characters. Note + that all keys are handled in the same way, this enumeration is just for + convenience when writing hard-coded key bindings. + + Keys that do not have a standard code point use values in the Private Use + Area in the Basic Multilingual Plane (`U+E000` to `U+F8FF`). Applications + must take care to not interpret these values beyond key detection, the + mapping used here is arbitrary and specific to DPF. */ enum Key { - kKeyF1 = 1, + // Convenience symbols for ASCII control characters + kKeyBackspace = 0x08, + kKeyEscape = 0x1B, + kKeyDelete = 0x7F, + + // Backwards compatibility with old DPF + kCharBackspace DISTRHO_DEPRECATED_BY("kKeyBackspace") = kKeyBackspace, + kCharEscape DISTRHO_DEPRECATED_BY("kKeyEscape") = kKeyEscape, + kCharDelete DISTRHO_DEPRECATED_BY("kKeyDelete") = kKeyDelete, + + // Unicode Private Use Area + kKeyF1 = 0xE000, kKeyF2, kKeyF3, kKeyF4, @@ -81,30 +94,75 @@ enum Key { kKeyEnd, kKeyInsert, kKeyShift, + kKeyShiftL = kKeyShift, + kKeyShiftR, kKeyControl, + kKeyControlL = kKeyControl, + kKeyControlR, kKeyAlt, - kKeySuper + kKeyAltL = kKeyAlt, + kKeyAltR, + kKeySuper, + kKeySuperL = kKeySuper, + kKeySuperR, + kKeyMenu, + kKeyCapsLock, + kKeyScrollLock, + kKeyNumLock, + kKeyPrintScreen, + kKeyPause +}; + +/** + Common flags for all events. + */ +enum Flag { + kFlagSendEvent = 1, ///< Event is synthetic + kFlagIsHint = 2 ///< Event is a hint (not direct user input) +}; + +/** + Reason for a crossing event. + */ +enum CrossingMode { + kCrossingNormal, ///< Crossing due to pointer motion + kCrossingGrab, ///< Crossing due to a grab + kCrossingUngrab ///< Crossing due to a grab release +}; + +/** + Scroll direction. + + Describes the direction of a scroll event along with whether the scroll is a "smooth" scroll. + The discrete directions are for devices like mouse wheels with constrained axes, + while a smooth scroll is for those with arbitrary scroll direction freedom, like some touchpads. +*/ +enum ScrollDirection { + kScrollUp, ///< Scroll up + kScrollDown, ///< Scroll down + kScrollLeft, ///< Scroll left + kScrollRight, ///< Scroll right + kScrollSmooth ///< Smooth scroll in any direction }; -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- // Base DGL classes /** Graphics context, definition depends on build type. */ -struct GraphicsContext; +struct GraphicsContext {}; /** Idle callback. */ -class IdleCallback +struct IdleCallback { -public: virtual ~IdleCallback() {} virtual void idleCallback() = 0; }; -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- END_NAMESPACE_DGL @@ -114,6 +172,6 @@ END_NAMESPACE_DGL using namespace DGL_NAMESPACE; #endif -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- #endif // DGL_BASE_HPP_INCLUDED diff --git a/dgl/Cairo.hpp b/dgl/Cairo.hpp index ce0c920b..567aa63f 100644 --- a/dgl/Cairo.hpp +++ b/dgl/Cairo.hpp @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2019 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -17,23 +17,176 @@ #ifndef DGL_CAIRO_HPP_INCLUDED #define DGL_CAIRO_HPP_INCLUDED -#include "Base.hpp" +#include "ImageBase.hpp" +#include "ImageBaseWidgets.hpp" #include START_NAMESPACE_DGL -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- /** - Graphics context. + Cairo Graphics context. */ -struct GraphicsContext +struct CairoGraphicsContext : GraphicsContext { - cairo_t* cairo; // FIXME proper name.. + cairo_t* handle; }; -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- + +/** + Cairo Image class. + + TODO ... + */ +class CairoImage : public ImageBase +{ +public: + /** + Constructor for a null Image. + */ + CairoImage(); + + /** + Constructor using raw image data. + @note @a rawData must remain valid for the lifetime of this Image. + */ + CairoImage(const char* rawData, uint width, uint height, ImageFormat format); + + /** + Constructor using raw image data. + @note @a rawData must remain valid for the lifetime of this Image. + */ + CairoImage(const char* rawData, const Size& size, ImageFormat format); + + /** + Constructor using another image data. + */ + CairoImage(const CairoImage& image); + + /** + Destructor. + */ + ~CairoImage() override; + + /** + Load raw image data from memory. + @note @a rawData must remain valid for the lifetime of this Image. + */ + void loadFromMemory(const char* rawData, + const Size& size, + ImageFormat format = kImageFormatBGRA) noexcept override; + + /** + Load PNG image from memory. + Image size is read from PNG contents. + @note @a pngData must remain valid for the lifetime of this Image. + */ + void loadFromPNG(const char* pngData, uint dataSize) noexcept; + + /** + Draw this image at position @a pos using the graphics context @a context. + */ + void drawAt(const GraphicsContext& context, const Point& pos) override; + + /** + Get the cairo surface currently associated with this image. + FIXME might be removed + */ + inline cairo_surface_t* getSurface() const noexcept + { + return surface; + } + + /** + TODO document this. + */ + CairoImage& operator=(const CairoImage& image) noexcept; + + // FIXME this should not be needed + inline void loadFromMemory(const char* rdata, uint w, uint h, ImageFormat fmt = kImageFormatBGRA) + { loadFromMemory(rdata, Size(w, h), fmt); }; + inline void draw(const GraphicsContext& context) + { drawAt(context, Point(0, 0)); }; + inline void drawAt(const GraphicsContext& context, int x, int y) + { drawAt(context, Point(x, y)); }; + +private: + cairo_surface_t* surface; + uchar* surfacedata; + int* datarefcount; +}; + +// -------------------------------------------------------------------------------------------------------------------- + +/** + CairoWidget, handy class that takes graphics context during onDisplay and passes it in a new function. + */ +template +class CairoBaseWidget : public BaseWidget +{ +public: + /** + Constructor for a CairoSubWidget. + */ + explicit CairoBaseWidget(Widget* const parentGroupWidget); + + /** + Constructor for a CairoTopLevelWidget. + */ + explicit CairoBaseWidget(Window& windowToMapTo); + + /** + Constructor for a CairoStandaloneWindow without parent window. + */ + explicit CairoBaseWidget(Application& app); + + /** + Constructor for a CairoStandaloneWindow with parent window. + */ + explicit CairoBaseWidget(Application& app, Window& parentWindow); + + /** + Destructor. + */ + virtual ~CairoBaseWidget() {} + +protected: + /** + New virtual onDisplay function. + @see onDisplay + */ + virtual void onCairoDisplay(const CairoGraphicsContext& context) = 0; + +private: + /** + Widget display function. + Implemented internally to pass context into the drawing function. + */ + void onDisplay() override + { + const CairoGraphicsContext& context((const CairoGraphicsContext&)BaseWidget::getGraphicsContext()); + onCairoDisplay(context); + } + + DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CairoBaseWidget); +}; + +typedef CairoBaseWidget CairoSubWidget; +typedef CairoBaseWidget CairoTopLevelWidget; +typedef CairoBaseWidget CairoStandaloneWindow; + +// -------------------------------------------------------------------------------------------------------------------- + +typedef ImageBaseAboutWindow CairoImageAboutWindow; +typedef ImageBaseButton CairoImageButton; +typedef ImageBaseKnob CairoImageKnob; +typedef ImageBaseSlider CairoImageSlider; +typedef ImageBaseSwitch CairoImageSwitch; + +// -------------------------------------------------------------------------------------------------------------------- END_NAMESPACE_DGL diff --git a/dgl/Color.hpp b/dgl/Color.hpp index a874f660..42094950 100644 --- a/dgl/Color.hpp +++ b/dgl/Color.hpp @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2019 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -23,7 +23,7 @@ struct NVGcolor; START_NAMESPACE_DGL -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- /** A color made from red, green, blue and alpha floating-point values in [0..1] range. @@ -44,13 +44,13 @@ struct Color { /** Create a color from red, green, blue and alpha numeric values. - Values must be in [0..255] range. + All values except alpha must be in [0..255] range, with alpha in [0..1] range. */ - Color(int red, int green, int blue, int alpha = 255) noexcept; + Color(int red, int green, int blue, float alpha = 1.0f) noexcept; /** Create a color from red, green, blue and alpha floating-point values. - Values must in [0..1] range. + All values must in [0..1] range. */ Color(float red, float green, float blue, float alpha = 1.0f) noexcept; @@ -74,7 +74,7 @@ struct Color { /** Create a color from a HTML string like "#333" or "#112233". */ - static Color fromHTML(const char* rgb, float alpha = 1.0f); + static Color fromHTML(const char* rgb, float alpha = 1.0f) noexcept; /** Linearly interpolate this color against another. @@ -83,7 +83,7 @@ struct Color { /** Check if this color matches another. - @note Comparison is forced within 8-bit color values. + @note Comparison is done within 8-bit color space. */ bool isEqual(const Color& color, bool withAlpha = true) noexcept; bool isNotEqual(const Color& color, bool withAlpha = true) noexcept; @@ -95,6 +95,11 @@ struct Color { */ void fixBounds() noexcept; + /** + Set this color for use in the next drawing operation for the provided context. + */ + void setFor(const GraphicsContext& context, bool includeAlpha = false); + /** @internal Needed for NanoVG compatibility. @@ -103,7 +108,7 @@ struct Color { operator NVGcolor() const noexcept; }; -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- END_NAMESPACE_DGL diff --git a/dgl/Geometry.hpp b/dgl/Geometry.hpp index f7fe31ec..76d9c158 100644 --- a/dgl/Geometry.hpp +++ b/dgl/Geometry.hpp @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2016 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -21,7 +21,7 @@ START_NAMESPACE_DGL -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- // Forward class names template class Line; @@ -29,7 +29,7 @@ template class Circle; template class Triangle; template class Rectangle; -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- /** DGL Point class. @@ -114,14 +114,14 @@ public: bool operator!=(const Point& pos) const noexcept; private: - T fX, fY; + T x, y; template friend class Line; template friend class Circle; template friend class Triangle; template friend class Rectangle; }; -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- /** DGL Size class. @@ -195,7 +195,7 @@ public: /** Return true if size is not null (0x0). - A non-null size is still invalid if its width or height is negative. + A non-null size is still invalid if its width or height are negative. */ bool isNotNull() const noexcept; @@ -210,6 +210,8 @@ public: */ bool isInvalid() const noexcept; + Size toInt() const noexcept; + Size operator+(const Size& size) noexcept; Size operator-(const Size& size) noexcept; Size& operator=(const Size& size) noexcept; @@ -346,11 +348,6 @@ public: */ void moveBy(const Point& pos) noexcept; - /** - Draw this line using the current OpenGL state. - */ - void draw(); - /** Return true if line is null (start and end pos are equal). */ @@ -361,12 +358,28 @@ public: */ bool isNotNull() const noexcept; +#ifndef DPF_TEST_POINT_CPP + /** + Draw this line using the provided graphics context, optionally specifying line width. + */ + void draw(const GraphicsContext& context, T width = 1); +#endif + Line& operator=(const Line& line) noexcept; bool operator==(const Line& line) const noexcept; bool operator!=(const Line& line) const noexcept; +#ifndef DPF_TEST_POINT_CPP + /** + Draw this line using the current OpenGL state.@n + DEPRECATED Please use draw(const GraphicsContext&) instead. + */ + DISTRHO_DEPRECATED_BY("draw(const GraphicsContext&)") + void draw(); +#endif + private: - Point fPosStart, fPosEnd; + Point posStart, posEnd; }; // ----------------------------------------------------------------------- @@ -461,19 +474,35 @@ public: void setNumSegments(const uint num); /** - Draw this circle using the current OpenGL state. + Draw this circle using the provided graphics context. */ - void draw(); + void draw(const GraphicsContext& context); /** - Draw lines (outline of this circle) using the current OpenGL state. + Draw lines (outline of this circle) using the provided graphics context, optionally specifying line width. */ - void drawOutline(); + void drawOutline(const GraphicsContext& context, T lineWidth = 1); Circle& operator=(const Circle& cir) noexcept; bool operator==(const Circle& cir) const noexcept; bool operator!=(const Circle& cir) const noexcept; +#ifndef DPF_TEST_POINT_CPP + /** + Draw this circle using the current OpenGL state.@n + DEPRECATED Please use draw(const GraphicsContext&) instead. + */ + DISTRHO_DEPRECATED_BY("draw(const GraphicsContext&)") + void draw(); + + /** + Draw lines (outline of this circle) using the current OpenGL state.@n + DEPRECATED Please use drawOutline(const GraphicsContext&,T) instead. + */ + DISTRHO_DEPRECATED_BY("drawOutline(const GraphicsContext&)") + void drawOutline(); +#endif + private: Point fPos; float fSize; @@ -481,9 +510,6 @@ private: // cached values float fTheta, fCos, fSin; - - /** @internal */ - void _draw(const bool outline); }; // ----------------------------------------------------------------------- @@ -541,24 +567,37 @@ public: bool isInvalid() const noexcept; /** - Draw this triangle using the current OpenGL state. + Draw this triangle using the provided graphics context. */ - void draw(); + void draw(const GraphicsContext& context); /** - Draw lines (outline of this triangle) using the current OpenGL state. + Draw lines (outline of this triangle) using the provided graphics context, optionally specifying line width. */ - void drawOutline(); + void drawOutline(const GraphicsContext& context, T lineWidth = 1); Triangle& operator=(const Triangle& tri) noexcept; bool operator==(const Triangle& tri) const noexcept; bool operator!=(const Triangle& tri) const noexcept; -private: - Point fPos1, fPos2, fPos3; +#ifndef DPF_TEST_POINT_CPP + /** + Draw this triangle using the current OpenGL state.@n + DEPRECATED Please use draw(const GraphicsContext&) instead. + */ + DISTRHO_DEPRECATED_BY("draw(const GraphicsContext&)") + void draw(); - /** @internal */ - void _draw(const bool outline); + /** + Draw lines (outline of this triangle) using the current OpenGL state.@n + DEPRECATED Please use drawOutline(const GraphicsContext&,T) instead. + */ + DISTRHO_DEPRECATED_BY("drawOutline(const GraphicsContext&)") + void drawOutline(); +#endif + +private: + Point pos1, pos2, pos3; }; // ----------------------------------------------------------------------- @@ -712,6 +751,12 @@ public: */ bool contains(const Point& pos) const noexcept; + /** + Check if this rectangle contains the point @a pos of another type. + */ + template + bool contains(const Point& pos) const noexcept; + /** Check if this rectangle contains X. */ @@ -723,14 +768,37 @@ public: bool containsY(const T& y) const noexcept; /** - Draw this rectangle using the current OpenGL state. + Return true if size is null (0x0). + An null size is also invalid. */ - void draw(); + bool isNull() const noexcept; /** - Draw lines (outline of this rectangle) using the current OpenGL state. + Return true if size is not null (0x0). + A non-null size is still invalid if its width or height are negative. */ - void drawOutline(); + bool isNotNull() const noexcept; + + /** + Return true if size is valid (width and height are higher than zero). + */ + bool isValid() const noexcept; + + /** + Return true if size is invalid (width or height are lower or equal to zero). + An invalid size might not be null under some circumstances. + */ + bool isInvalid() const noexcept; + + /** + Draw this rectangle using the provided graphics context. + */ + void draw(const GraphicsContext& context); + + /** + Draw lines (outline of this rectangle) using the provided graphics context, optionally specifying line width. + */ + void drawOutline(const GraphicsContext& context, T lineWidth = 1); Rectangle& operator=(const Rectangle& rect) noexcept; Rectangle& operator*=(double m) noexcept; @@ -738,12 +806,23 @@ public: bool operator==(const Rectangle& size) const noexcept; bool operator!=(const Rectangle& size) const noexcept; -private: - Point fPos; - Size fSize; + /** + Draw this rectangle using the current OpenGL state.@n + DEPRECATED Please use draw(const GraphicsContext&) instead. + */ + DISTRHO_DEPRECATED_BY("draw(const GraphicsContext&)") + void draw(); - /** @internal */ - void _draw(const bool outline); + /** + Draw lines (outline of this rectangle) using the current OpenGL state.@n + DEPRECATED Please use drawOutline(const GraphicsContext&,T) instead. + */ + DISTRHO_DEPRECATED_BY("drawOutline(const GraphicsContext&)") + void drawOutline(); + +private: + Point pos; + Size size; }; // ----------------------------------------------------------------------- diff --git a/dgl/Image.hpp b/dgl/Image.hpp index 634665ff..2e515361 100644 --- a/dgl/Image.hpp +++ b/dgl/Image.hpp @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2019 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -17,108 +17,19 @@ #ifndef DGL_IMAGE_HPP_INCLUDED #define DGL_IMAGE_HPP_INCLUDED -#include "ImageBase.hpp" +#ifdef DGL_CAIRO +#include "Cairo.hpp" +#else #include "OpenGL.hpp" +#endif START_NAMESPACE_DGL -// ----------------------------------------------------------------------- - -/** - OpenGL Image class. - - This is an Image class that handles raw image data in pixels. - You can init the image data on the contructor or later on by calling loadFromMemory(). - - To generate raw data useful for this class see the utils/png2rgba.py script. - Be careful when using a PNG without alpha channel, for those the format is 'GL_BGR' - instead of the default 'GL_BGRA'. - - Images are drawn on screen via 2D textures. - */ -class Image : public ImageBase -{ -public: - /** - Constructor for a null Image. - */ - Image(); - - /** - Constructor using raw image data. - @note @a rawData must remain valid for the lifetime of this Image. - */ - Image(const char* const rawData, - const uint width, - const uint height, - const GLenum format = GL_BGRA, - const GLenum type = GL_UNSIGNED_BYTE); - - /** - Constructor using raw image data. - @note @a rawData must remain valid for the lifetime of this Image. - */ - Image(const char* const rawData, - const Size& size, - const GLenum format = GL_BGRA, - const GLenum type = GL_UNSIGNED_BYTE); - - /** - Constructor using another image data. - */ - Image(const Image& image); - - /** - Destructor. - */ - ~Image() override; - - /** - Load image data from memory. - @note @a rawData must remain valid for the lifetime of this Image. - */ - void loadFromMemory(const char* const rawData, - const uint width, - const uint height, - const GLenum format = GL_BGRA, - const GLenum type = GL_UNSIGNED_BYTE) noexcept; - - /** - Load image data from memory. - @note @a rawData must remain valid for the lifetime of this Image. - */ - void loadFromMemory(const char* const rawData, - const Size& size, - const GLenum format = GL_BGRA, - const GLenum type = GL_UNSIGNED_BYTE) noexcept; - - /** - Get the image format. - */ - GLenum getFormat() const noexcept; - - /** - Get the image type. - */ - GLenum getType() const noexcept; - - /** - TODO document this. - */ - Image& operator=(const Image& image) noexcept; - -protected: - /** @internal */ - void _drawAt(const Point& pos) override; - -private: - GLenum fFormat; - GLenum fType; - GLuint fTextureId; - bool fIsReady; -}; - -// ----------------------------------------------------------------------- +#ifdef DGL_CAIRO +typedef CairoImage Image; +#else +typedef OpenGLImage Image; +#endif END_NAMESPACE_DGL diff --git a/dgl/ImageBase.hpp b/dgl/ImageBase.hpp index 0a7ee780..36c2ab28 100644 --- a/dgl/ImageBase.hpp +++ b/dgl/ImageBase.hpp @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2019 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -21,7 +21,16 @@ START_NAMESPACE_DGL -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- + +enum ImageFormat { + kImageFormatNull, + kImageFormatGrayscale, + kImageFormatBGR, + kImageFormatBGRA, + kImageFormatRGB, + kImageFormatRGBA, +}; /** Base DGL Image class. @@ -44,13 +53,13 @@ protected: Constructor using raw image data. @note @a rawData must remain valid for the lifetime of this Image. */ - ImageBase(const char* const rawData, const uint width, const uint height); + ImageBase(const char* rawData, uint width, uint height, ImageFormat format); /** Constructor using raw image data. @note @a rawData must remain valid for the lifetime of this Image. */ - ImageBase(const char* const rawData, const Size& size); + ImageBase(const char* rawData, const Size& size, ImageFormat format); /** Constructor using another image data. @@ -68,6 +77,11 @@ public: */ bool isValid() const noexcept; + /** + Check if this image is not valid. + */ + bool isInvalid() const noexcept; + /** Get width. */ @@ -89,19 +103,38 @@ public: const char* getRawData() const noexcept; /** - Draw this image at (0, 0) point. + Get the image format. */ - void draw(); + ImageFormat getFormat() const noexcept; /** - Draw this image at (x, y) point. + Load image data from memory. + @note @a rawData must remain valid for the lifetime of this Image. */ - void drawAt(const int x, const int y); + void loadFromMemory(const char* rawData, uint width, uint height, ImageFormat format = kImageFormatBGRA) noexcept; /** - Draw this image at position @a pos. + Load image data from memory. + @note @a rawData must remain valid for the lifetime of this Image. */ - void drawAt(const Point& pos); + virtual void loadFromMemory(const char* rawData, + const Size& size, + ImageFormat format = kImageFormatBGRA) noexcept; + + /** + Draw this image at (0, 0) point using the current OpenGL context. + */ + void draw(const GraphicsContext& context); + + /** + Draw this image at (x, y) point using the current OpenGL context. + */ + void drawAt(const GraphicsContext& context, int x, int y); + + /** + Draw this image at position @a pos using the current OpenGL context. + */ + virtual void drawAt(const GraphicsContext& context, const Point& pos) = 0; /** TODO document this. @@ -111,14 +144,12 @@ public: bool operator!=(const ImageBase& image) const noexcept; protected: - /** @internal */ - virtual void _drawAt(const Point& pos) = 0; - - const char* fRawData; - Size fSize; + const char* rawData; + Size size; + ImageFormat format; }; -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- END_NAMESPACE_DGL diff --git a/dgl/ImageBaseWidgets.hpp b/dgl/ImageBaseWidgets.hpp new file mode 100644 index 00000000..bbc34b6d --- /dev/null +++ b/dgl/ImageBaseWidgets.hpp @@ -0,0 +1,223 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef DGL_IMAGE_BASE_WIDGETS_HPP_INCLUDED +#define DGL_IMAGE_BASE_WIDGETS_HPP_INCLUDED + +#include "StandaloneWindow.hpp" +#include "SubWidget.hpp" + +START_NAMESPACE_DGL + +// -------------------------------------------------------------------------------------------------------------------- + +template +class ImageBaseAboutWindow : public StandaloneWindow +{ +public: + explicit ImageBaseAboutWindow(Window& parentWindow, const ImageType& image = ImageType()); + explicit ImageBaseAboutWindow(TopLevelWidget* parentTopLevelWidget, const ImageType& image = ImageType()); + + void setImage(const ImageType& image); + +protected: + void onDisplay() override; + bool onKeyboard(const KeyboardEvent&) override; + bool onMouse(const MouseEvent&) override; + +private: + ImageType img; + + DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(ImageBaseAboutWindow) +}; + +// -------------------------------------------------------------------------------------------------------------------- + +template +class ImageBaseButton : public SubWidget +{ +public: + class Callback + { + public: + virtual ~Callback() {} + virtual void imageButtonClicked(ImageBaseButton* imageButton, int button) = 0; + }; + + explicit ImageBaseButton(Widget* parentWidget, const ImageType& image); + explicit ImageBaseButton(Widget* parentWidget, const ImageType& imageNormal, const ImageType& imageDown); + explicit ImageBaseButton(Widget* parentWidget, const ImageType& imageNormal, const ImageType& imageHover, const ImageType& imageDown); + + ~ImageBaseButton() override; + + void setCallback(Callback* callback) noexcept; + +protected: + void onDisplay() override; + bool onMouse(const MouseEvent&) override; + bool onMotion(const MotionEvent&) override; + +private: + struct PrivateData; + PrivateData* const pData; + + DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(ImageBaseButton) +}; + +// -------------------------------------------------------------------------------------------------------------------- + +template +class ImageBaseKnob : public SubWidget +{ +public: + enum Orientation { + Horizontal, + Vertical + }; + + class Callback + { + public: + virtual ~Callback() {} + virtual void imageKnobDragStarted(ImageBaseKnob* imageKnob) = 0; + virtual void imageKnobDragFinished(ImageBaseKnob* imageKnob) = 0; + virtual void imageKnobValueChanged(ImageBaseKnob* imageKnob, float value) = 0; + }; + + explicit ImageBaseKnob(Widget* parentWidget, const ImageType& image, Orientation orientation = Vertical) noexcept; + explicit ImageBaseKnob(const ImageBaseKnob& imageKnob); + ImageBaseKnob& operator=(const ImageBaseKnob& imageKnob); + ~ImageBaseKnob() override; + + float getValue() const noexcept; + + void setDefault(float def) noexcept; + void setRange(float min, float max) noexcept; + void setStep(float step) noexcept; + void setValue(float value, bool sendCallback = false) noexcept; + void setUsingLogScale(bool yesNo) noexcept; + + void setCallback(Callback* callback) noexcept; + void setOrientation(Orientation orientation) noexcept; + void setRotationAngle(int angle); + + void setImageLayerCount(uint count) noexcept; + +protected: + void onDisplay() override; + bool onMouse(const MouseEvent&) override; + bool onMotion(const MotionEvent&) override; + bool onScroll(const ScrollEvent&) override; + +private: + struct PrivateData; + PrivateData* const pData; + + DISTRHO_LEAK_DETECTOR(ImageBaseKnob) +}; + +// -------------------------------------------------------------------------------------------------------------------- + +// note set range and step before setting the value + +template +class ImageBaseSlider : public SubWidget +{ +public: + class Callback + { + public: + virtual ~Callback() {} + virtual void imageSliderDragStarted(ImageBaseSlider* imageSlider) = 0; + virtual void imageSliderDragFinished(ImageBaseSlider* imageSlider) = 0; + virtual void imageSliderValueChanged(ImageBaseSlider* imageSlider, float value) = 0; + }; + + explicit ImageBaseSlider(Widget* parentWidget, const ImageType& image) noexcept; + ~ImageBaseSlider() override; + + float getValue() const noexcept; + void setValue(float value, bool sendCallback = false) noexcept; + void setDefault(float def) noexcept; + + void setStartPos(const Point& startPos) noexcept; + void setStartPos(int x, int y) noexcept; + void setEndPos(const Point& endPos) noexcept; + void setEndPos(int x, int y) noexcept; + + void setInverted(bool inverted) noexcept; + void setRange(float min, float max) noexcept; + void setStep(float step) noexcept; + + void setCallback(Callback* callback) noexcept; + +protected: + void onDisplay() override; + bool onMouse(const MouseEvent&) override; + bool onMotion(const MotionEvent&) override; + +private: + struct PrivateData; + PrivateData* const pData; + + // these should not be used + void setAbsoluteX(int) const noexcept {} + void setAbsoluteY(int) const noexcept {} + void setAbsolutePos(int, int) const noexcept {} + void setAbsolutePos(const Point&) const noexcept {} + + DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(ImageBaseSlider) +}; + +// -------------------------------------------------------------------------------------------------------------------- + +template +class ImageBaseSwitch : public SubWidget +{ +public: + class Callback + { + public: + virtual ~Callback() {} + virtual void imageSwitchClicked(ImageBaseSwitch* imageSwitch, bool down) = 0; + }; + + explicit ImageBaseSwitch(Widget* parentWidget, const ImageType& imageNormal, const ImageType& imageDown) noexcept; + explicit ImageBaseSwitch(const ImageBaseSwitch& imageSwitch) noexcept; + ImageBaseSwitch& operator=(const ImageBaseSwitch& imageSwitch) noexcept; + ~ImageBaseSwitch() override; + + bool isDown() const noexcept; + void setDown(bool down) noexcept; + + void setCallback(Callback* callback) noexcept; + +protected: + void onDisplay() override; + bool onMouse(const MouseEvent&) override; + +private: + struct PrivateData; + PrivateData* const pData; + + DISTRHO_LEAK_DETECTOR(ImageBaseSwitch) +}; + +// -------------------------------------------------------------------------------------------------------------------- + +END_NAMESPACE_DGL + +#endif // DGL_IMAGE_BASE_WIDGETS_HPP_INCLUDED diff --git a/dgl/ImageWidgets.hpp b/dgl/ImageWidgets.hpp index ac8a3abb..992b6e37 100644 --- a/dgl/ImageWidgets.hpp +++ b/dgl/ImageWidgets.hpp @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2016 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -18,266 +18,24 @@ #define DGL_IMAGE_WIDGETS_HPP_INCLUDED #include "Image.hpp" -#include "Widget.hpp" -#include "Window.hpp" +#include "ImageBaseWidgets.hpp" START_NAMESPACE_DGL -// ----------------------------------------------------------------------- - -#ifndef DISTRHO_OS_HAIKU -class ImageAboutWindow : public Window, - public Widget -#else -// crash when creating or opening 2nd window -class ImageAboutWindow -#endif -{ -public: - explicit ImageAboutWindow(Window& parent, const Image& image = Image()); - explicit ImageAboutWindow(Widget* widget, const Image& image = Image()); - - void setImage(const Image& image); - -#ifndef DISTRHO_OS_HAIKU -protected: - void onDisplay() override; - bool onKeyboard(const KeyboardEvent&) override; - bool onMouse(const MouseEvent&) override; - void onReshape(uint width, uint height) override; +#ifdef DGL_CAIRO +typedef CairoImageAboutWindow ImageAboutWindow; +typedef CairoImageButton ImageButton; +typedef CairoImageKnob ImageKnob; +typedef CairoImageSlider ImageSlider; +typedef CairoImageSwitch ImageSwitch; #else - void exec() {} +typedef OpenGLImageAboutWindow ImageAboutWindow; +typedef OpenGLImageButton ImageButton; +typedef OpenGLImageKnob ImageKnob; +typedef OpenGLImageSlider ImageSlider; +typedef OpenGLImageSwitch ImageSwitch; #endif -private: - Image fImgBackground; - - DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(ImageAboutWindow) -}; - -// ----------------------------------------------------------------------- - -class ImageButton : public Widget -{ -public: - class Callback - { - public: - virtual ~Callback() {} - virtual void imageButtonClicked(ImageButton* imageButton, int button) = 0; - }; - - explicit ImageButton(Window& parent, const Image& image); - explicit ImageButton(Window& parent, const Image& imageNormal, const Image& imageDown); - explicit ImageButton(Window& parent, const Image& imageNormal, const Image& imageHover, const Image& imageDown); - - explicit ImageButton(Widget* widget, const Image& image); - explicit ImageButton(Widget* widget, const Image& imageNormal, const Image& imageDown); - explicit ImageButton(Widget* widget, const Image& imageNormal, const Image& imageHover, const Image& imageDown); - - ~ImageButton() override; - - void setCallback(Callback* callback) noexcept; - -protected: - void onDisplay() override; - bool onMouse(const MouseEvent&) override; - bool onMotion(const MotionEvent&) override; - -private: - struct PrivateData; - PrivateData* const pData; - - DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(ImageButton) -}; - -// ----------------------------------------------------------------------- - -class ImageKnob : public Widget -{ -public: - enum Orientation { - Horizontal, - Vertical - }; - - class Callback - { - public: - virtual ~Callback() {} - virtual void imageKnobDragStarted(ImageKnob* imageKnob) = 0; - virtual void imageKnobDragFinished(ImageKnob* imageKnob) = 0; - virtual void imageKnobValueChanged(ImageKnob* imageKnob, float value) = 0; - }; - - explicit ImageKnob(Window& parent, const Image& image, Orientation orientation = Vertical) noexcept; - explicit ImageKnob(Widget* widget, const Image& image, Orientation orientation = Vertical) noexcept; - explicit ImageKnob(const ImageKnob& imageKnob); - ImageKnob& operator=(const ImageKnob& imageKnob); - ~ImageKnob() override; - - float getValue() const noexcept; - - void setDefault(float def) noexcept; - void setRange(float min, float max) noexcept; - void setStep(float step) noexcept; - void setValue(float value, bool sendCallback = false) noexcept; - void setUsingLogScale(bool yesNo) noexcept; - - void setCallback(Callback* callback) noexcept; - void setOrientation(Orientation orientation) noexcept; - void setRotationAngle(int angle); - - void setImageLayerCount(uint count) noexcept; - -protected: - void onDisplay() override; - bool onMouse(const MouseEvent&) override; - bool onMotion(const MotionEvent&) override; - bool onScroll(const ScrollEvent&) override; - -private: - Image fImage; - float fMinimum; - float fMaximum; - float fStep; - float fValue; - float fValueDef; - float fValueTmp; - bool fUsingDefault; - bool fUsingLog; - Orientation fOrientation; - - int fRotationAngle; - bool fDragging; - int fLastX; - int fLastY; - - Callback* fCallback; - - bool fIsImgVertical; - uint fImgLayerWidth; - uint fImgLayerHeight; - uint fImgLayerCount; - bool fIsReady; - GLuint fTextureId; - - float _logscale(float value) const; - float _invlogscale(float value) const; - - DISTRHO_LEAK_DETECTOR(ImageKnob) -}; - -// ----------------------------------------------------------------------- - -// note set range and step before setting the value - -class ImageSlider : public Widget -{ -public: - class Callback - { - public: - virtual ~Callback() {} - virtual void imageSliderDragStarted(ImageSlider* imageSlider) = 0; - virtual void imageSliderDragFinished(ImageSlider* imageSlider) = 0; - virtual void imageSliderValueChanged(ImageSlider* imageSlider, float value) = 0; - }; - - explicit ImageSlider(Window& parent, const Image& image) noexcept; - explicit ImageSlider(Widget* widget, const Image& image) noexcept; - - float getValue() const noexcept; - void setValue(float value, bool sendCallback = false) noexcept; - void setDefault(float def) noexcept; - - void setStartPos(const Point& startPos) noexcept; - void setStartPos(int x, int y) noexcept; - void setEndPos(const Point& endPos) noexcept; - void setEndPos(int x, int y) noexcept; - - void setInverted(bool inverted) noexcept; - void setRange(float min, float max) noexcept; - void setStep(float step) noexcept; - - void setCallback(Callback* callback) noexcept; - -protected: - void onDisplay() override; - bool onMouse(const MouseEvent&) override; - bool onMotion(const MotionEvent&) override; - -private: - Image fImage; - float fMinimum; - float fMaximum; - float fStep; - float fValue; - float fValueDef; - float fValueTmp; - bool fUsingDefault; - - bool fDragging; - bool fInverted; - bool fValueIsSet; - int fStartedX; - int fStartedY; - - Callback* fCallback; - - Point fStartPos; - Point fEndPos; - Rectangle fSliderArea; - - void _recheckArea() noexcept; - - // these should not be used - void setAbsoluteX(int) const noexcept {} - void setAbsoluteY(int) const noexcept {} - void setAbsolutePos(int, int) const noexcept {} - void setAbsolutePos(const Point&) const noexcept {} - - DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(ImageSlider) -}; - -// ----------------------------------------------------------------------- - -class ImageSwitch : public Widget -{ -public: - class Callback - { - public: - virtual ~Callback() {} - virtual void imageSwitchClicked(ImageSwitch* imageSwitch, bool down) = 0; - }; - - explicit ImageSwitch(Window& parent, const Image& imageNormal, const Image& imageDown) noexcept; - explicit ImageSwitch(Widget* widget, const Image& imageNormal, const Image& imageDown) noexcept; - explicit ImageSwitch(const ImageSwitch& imageSwitch) noexcept; - ImageSwitch& operator=(const ImageSwitch& imageSwitch) noexcept; - - bool isDown() const noexcept; - void setDown(bool down) noexcept; - - void setCallback(Callback* callback) noexcept; - -protected: - void onDisplay() override; - bool onMouse(const MouseEvent&) override; - -private: - Image fImageNormal; - Image fImageDown; - bool fIsDown; - - Callback* fCallback; - - DISTRHO_LEAK_DETECTOR(ImageSwitch) -}; - -// ----------------------------------------------------------------------- - END_NAMESPACE_DGL #endif // DGL_IMAGE_WIDGETS_HPP_INCLUDED diff --git a/dgl/Makefile b/dgl/Makefile index 20bd79e3..170a694c 100644 --- a/dgl/Makefile +++ b/dgl/Makefile @@ -10,8 +10,16 @@ include ../Makefile.base.mk BUILD_C_FLAGS += $(DGL_FLAGS) -I. -Isrc BUILD_CXX_FLAGS += $(DGL_FLAGS) -I. -Isrc -DDONT_SET_USING_DGL_NAMESPACE -Wno-unused-parameter +BUILD_CXX_FLAGS += -Isrc/pugl-upstream/include LINK_FLAGS += $(DGL_LIBS) +# TODO fix these after pugl-upstream is done +BUILD_CXX_FLAGS += -Wno-attributes -Wno-extra -Wno-missing-field-initializers -Wno-narrowing + +ifeq ($(MACOS),true) +BUILD_CXX_FLAGS += -DGL_SILENCE_DEPRECATION -Wno-deprecated-declarations +endif + # ifneq ($(MACOS_OLD),true) # needed by sofd right now, fix later # BUILD_CXX_FLAGS += -Wno-type-limits -fpermissive @@ -21,39 +29,64 @@ LINK_FLAGS += $(DGL_LIBS) OBJS_common = \ ../build/dgl/Application.cpp.o \ + ../build/dgl/ApplicationPrivateData.cpp.o \ ../build/dgl/Color.cpp.o \ ../build/dgl/Geometry.cpp.o \ ../build/dgl/ImageBase.cpp.o \ + ../build/dgl/ImageBaseWidgets.cpp.o \ ../build/dgl/Resources.cpp.o \ - ../build/dgl/Widget.cpp.o - -# TODO: ImageWidgets.cpp + ../build/dgl/SubWidget.cpp.o \ + ../build/dgl/SubWidgetPrivateData.cpp.o \ + ../build/dgl/TopLevelWidget.cpp.o \ + ../build/dgl/TopLevelWidgetPrivateData.cpp.o \ + ../build/dgl/Widget.cpp.o \ + ../build/dgl/WidgetPrivateData.cpp.o \ + ../build/dgl/Window.cpp.o \ + ../build/dgl/WindowPrivateData.cpp.o +# ../build/dgl/WindowFileBrowser.cpp.o # --------------------------------------------------------------------------------------------------------------------- OBJS_cairo = $(OBJS_common) \ - ../build/dgl/Cairo.cpp.cairo.o \ - ../build/dgl/WidgetPrivateData.cpp.cairo.o + ../build/dgl/Cairo.cpp.cairo.o ifeq ($(MACOS),true) -OBJS_cairo += ../build/dgl/Window.mm.cairo.o +OBJS_cairo += ../build/dgl/pugl.mm.cairo.o else -OBJS_cairo += ../build/dgl/Window.cpp.cairo.o +OBJS_cairo += ../build/dgl/pugl.cpp.cairo.o endif # --------------------------------------------------------------------------------------------------------------------- OBJS_opengl = $(OBJS_common) \ ../build/dgl/OpenGL.cpp.opengl.o \ - ../build/dgl/Image.cpp.opengl.o \ - ../build/dgl/ImageWidgets.cpp.opengl.o \ - ../build/dgl/NanoVG.cpp.opengl.o \ - ../build/dgl/WidgetPrivateData.cpp.opengl.o + ../build/dgl/NanoVG.cpp.opengl.o + +ifeq ($(MACOS),true) +OBJS_opengl += ../build/dgl/pugl.mm.opengl.o +else +OBJS_opengl += ../build/dgl/pugl.cpp.opengl.o +endif + +# --------------------------------------------------------------------------------------------------------------------- + +OBJS_stub = $(OBJS_common) ifeq ($(MACOS),true) -OBJS_opengl += ../build/dgl/Window.mm.opengl.o +OBJS_stub += ../build/dgl/pugl.mm.o else -OBJS_opengl += ../build/dgl/Window.cpp.opengl.o +OBJS_stub += ../build/dgl/pugl.cpp.o +endif + +# --------------------------------------------------------------------------------------------------------------------- + +OBJS_vulkan = $(OBJS_common) \ + ../build/dgl/Vulkan.cpp.vulkan.o + +ifeq ($(MACOS),true) +OBJS_vulkan += ../build/dgl/pugl.mm.vulkan.o +else +OBJS_vulkan += ../build/dgl/pugl.cpp.vulkan.o endif # --------------------------------------------------------------------------------------------------------------------- @@ -68,6 +101,14 @@ TARGETS += ../build/libdgl-opengl.a TARGETS += ../build/libdgl.a endif +ifeq ($(HAVE_STUB),true) +TARGETS += ../build/libdgl-stub.a +endif + +ifeq ($(HAVE_VULKAN),true) +TARGETS += ../build/libdgl-vulkan.a +endif + # --------------------------------------------------------------------------------------------------------------------- all: $(TARGETS) @@ -86,6 +127,18 @@ all: $(TARGETS) $(SILENT)rm -f $@ $(SILENT)$(AR) crs $@ $^ +../build/libdgl-stub.a: $(OBJS_stub) + -@mkdir -p ../build + @echo "Creating libdgl-stub.a" + $(SILENT)rm -f $@ + $(SILENT)$(AR) crs $@ $^ + +../build/libdgl-vulkan.a: $(OBJS_vulkan) + -@mkdir -p ../build + @echo "Creating libdgl-vulkan.a" + $(SILENT)rm -f $@ + $(SILENT)$(AR) crs $@ $^ + # Compat name, to be removed soon ../build/libdgl.a: ../build/libdgl-opengl.a @echo "Symlinking libdgl.a" @@ -103,6 +156,11 @@ all: $(TARGETS) @echo "Compiling $<" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ +../build/dgl/%.mm.o: src/%.mm + -@mkdir -p ../build/dgl + @echo "Compiling $<" + $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -ObjC++ -o $@ + # --------------------------------------------------------------------------------------------------------------------- ../build/dgl/%.cpp.cairo.o: src/%.cpp @@ -110,15 +168,10 @@ all: $(TARGETS) @echo "Compiling $< (Cairo variant)" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(CAIRO_FLAGS) -DDGL_CAIRO -c -o $@ -../build/dgl/Window.cpp.cairo.o: src/Window.cpp src/sofd/* src/pugl/* - -@mkdir -p ../build/dgl - @echo "Compiling $< (Cairo variant)" - $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(CAIRO_FLAGS) -DDGL_CAIRO -c -o $@ - -../build/dgl/Window.mm.cairo.o: src/Window.cpp src/sofd/* src/pugl/* +../build/dgl/%.mm.cairo.o: src/%.mm -@mkdir -p ../build/dgl @echo "Compiling $< (Cairo variant)" - $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(CAIRO_FLAGS) -DDGL_CAIRO -ObjC++ -c -o $@ + $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(CAIRO_FLAGS) -DDGL_CAIRO -c -ObjC++ -o $@ # --------------------------------------------------------------------------------------------------------------------- @@ -127,15 +180,22 @@ all: $(TARGETS) @echo "Compiling $< (OpenGL variant)" $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -c -o $@ -../build/dgl/Window.cpp.opengl.o: src/Window.cpp src/sofd/* src/pugl/* +../build/dgl/%.mm.opengl.o: src/%.mm -@mkdir -p ../build/dgl @echo "Compiling $< (OpenGL variant)" - $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -c -o $@ + $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -c -ObjC++ -o $@ -../build/dgl/Window.mm.opengl.o: src/Window.cpp src/sofd/* src/pugl/* +# --------------------------------------------------------------------------------------------------------------------- + +../build/dgl/%.cpp.vulkan.o: src/%.cpp -@mkdir -p ../build/dgl - @echo "Compiling $< (OpenGL variant)" - $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -ObjC++ -c -o $@ + @echo "Compiling $< (Vulkan variant)" + $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(VULKAN_FLAGS) -DDGL_VULKAN -c -o $@ + +../build/dgl/%.mm.vulkan.o: src/%.mm + -@mkdir -p ../build/dgl + @echo "Compiling $< (Vulkan variant)" + $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(VULKAN_FLAGS) -DDGL_VULKAN -c -ObjC++ -o $@ # --------------------------------------------------------------------------------------------------------------------- @@ -150,5 +210,7 @@ debug: -include $(OBJS_common:%.o=%.d) -include $(OBJS_cairo:%.o=%.d) -include $(OBJS_opengl:%.o=%.d) +-include $(OBJS_stub:%.o=%.d) +-include $(OBJS_vulkan:%.o=%.d) # --------------------------------------------------------------------------------------------------------------------- diff --git a/dgl/NanoVG.hpp b/dgl/NanoVG.hpp index ea07df28..9e0d51a3 100644 --- a/dgl/NanoVG.hpp +++ b/dgl/NanoVG.hpp @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2019 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -19,7 +19,9 @@ #include "Color.hpp" #include "OpenGL.hpp" -#include "Widget.hpp" +#include "SubWidget.hpp" +#include "TopLevelWidget.hpp" +#include "StandaloneWindow.hpp" #ifndef DGL_NO_SHARED_RESOURCES # define NANOVG_DEJAVU_SANS_TTF "__dpf_dejavusans_ttf__" @@ -305,7 +307,9 @@ public: /** Constructor reusing a NanoVG context, used for subwidgets. */ + /* NanoVG(NanoWidget* groupWidget); + */ /** Destructor. @@ -851,7 +855,7 @@ public: /** Load DPF's internal shared resources for this NanoVG class. */ - virtual void loadSharedResources(); + virtual bool loadSharedResources(); #endif private: @@ -873,30 +877,39 @@ private: The drawing function onDisplay() is implemented internally but a new onNanoDisplay() needs to be overridden instead. */ -class NanoWidget : public Widget, - public NanoVG +template +class NanoBaseWidget : public BaseWidget, + public NanoVG { public: /** - Constructor. + Constructor for a NanoSubWidget. @see CreateFlags */ - explicit NanoWidget(Window& parent, int flags = CREATE_ANTIALIAS); + explicit NanoBaseWidget(Widget* const parentGroupWidget, int flags = CREATE_ANTIALIAS); /** - Constructor for a subwidget. + Constructor for a NanoTopLevelWidget. + @see CreateFlags */ - explicit NanoWidget(Widget* groupWidget, int flags = CREATE_ANTIALIAS); + explicit NanoBaseWidget(Window& windowToMapTo, int flags = CREATE_ANTIALIAS); /** - Constructor for a subwidget, reusing a NanoVG context. + Constructor for a NanoStandaloneWindow without parent window. + @see CreateFlags */ - explicit NanoWidget(NanoWidget* groupWidget); + explicit NanoBaseWidget(Application& app, int flags = CREATE_ANTIALIAS); + + /** + Constructor for a NanoStandaloneWindow with parent window. + @see CreateFlags + */ + explicit NanoBaseWidget(Application& app, Window& parentWindow, int flags = CREATE_ANTIALIAS); /** Destructor. */ - virtual ~NanoWidget(); + virtual ~NanoBaseWidget() {} protected: /** @@ -906,14 +919,16 @@ protected: virtual void onNanoDisplay() = 0; private: - struct PrivateData; - PrivateData* const nData; - /** Widget display function. Implemented internally to wrap begin/endFrame() automatically. */ - void onDisplay() override; + inline void onDisplay() override + { + NanoVG::beginFrame(BaseWidget::getWidth(), BaseWidget::getHeight()); + onNanoDisplay(); + NanoVG::endFrame(); + } // these should not be used void beginFrame(uint,uint) {} @@ -922,9 +937,16 @@ private: void cancelFrame() {} void endFrame() {} - DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(NanoWidget) + DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(NanoBaseWidget) }; +typedef NanoBaseWidget NanoSubWidget; +typedef NanoBaseWidget NanoTopLevelWidget; +typedef NanoBaseWidget NanoStandaloneWindow; + +DISTRHO_DEPRECATED_BY("NanoSubWidget") +typedef NanoSubWidget NanoWidget; + // ----------------------------------------------------------------------- END_NAMESPACE_DGL diff --git a/dgl/OpenGL.hpp b/dgl/OpenGL.hpp index 5466161c..9328e5c1 100644 --- a/dgl/OpenGL.hpp +++ b/dgl/OpenGL.hpp @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2019 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -18,6 +18,7 @@ #define DGL_OPENGL_HPP_INCLUDED #include "ImageBase.hpp" +#include "ImageBaseWidgets.hpp" // ----------------------------------------------------------------------- // Fix OpenGL includes for Windows, based on glfw code (part 1) @@ -108,14 +109,185 @@ START_NAMESPACE_DGL // ----------------------------------------------------------------------- /** - Graphics context. + OpenGL Graphics context. */ -struct GraphicsContext +struct OpenGLGraphicsContext : GraphicsContext { }; // ----------------------------------------------------------------------- +static inline +ImageFormat asDISTRHOImageFormat(const GLenum format) +{ + switch (format) + { + case GL_LUMINANCE: + return kImageFormatGrayscale; + case GL_BGR: + return kImageFormatBGR; + case GL_BGRA: + return kImageFormatBGRA; + case GL_RGB: + return kImageFormatRGB; + case GL_RGBA: + return kImageFormatRGBA; + } + + return kImageFormatNull; +} + +static inline +GLenum asOpenGLImageFormat(const ImageFormat format) +{ + switch (format) + { + case kImageFormatNull: + break; + case kImageFormatGrayscale: + return GL_LUMINANCE; + case kImageFormatBGR: + return GL_BGR; + case kImageFormatBGRA: + return GL_BGRA; + case kImageFormatRGB: + return GL_RGB; + case kImageFormatRGBA: + return GL_RGBA; + } + + return 0x0; +} + +// ----------------------------------------------------------------------- + +/** + OpenGL Image class. + + This is an Image class that handles raw image data in pixels. + You can init the image data on the contructor or later on by calling loadFromMemory(). + + To generate raw data useful for this class see the utils/png2rgba.py script. + Be careful when using a PNG without alpha channel, for those the format is 'GL_BGR' + instead of the default 'GL_BGRA'. + + Images are drawn on screen via 2D textures. + */ +class OpenGLImage : public ImageBase +{ +public: + /** + Constructor for a null Image. + */ + OpenGLImage(); + + /** + Constructor using raw image data. + @note @a rawData must remain valid for the lifetime of this Image. + */ + OpenGLImage(const char* rawData, uint width, uint height, ImageFormat format = kImageFormatBGRA); + + /** + Constructor using raw image data. + @note @a rawData must remain valid for the lifetime of this Image. + */ + OpenGLImage(const char* rawData, const Size& size, ImageFormat format = kImageFormatBGRA); + + /** + Constructor using another image data. + */ + OpenGLImage(const OpenGLImage& image); + + /** + Destructor. + */ + ~OpenGLImage() override; + + /** + Load image data from memory. + @note @a rawData must remain valid for the lifetime of this Image. + */ + void loadFromMemory(const char* rawData, + const Size& size, + ImageFormat format = kImageFormatBGRA) noexcept override; + + /** + Draw this image at position @a pos using the graphics context @a context. + */ + void drawAt(const GraphicsContext& context, const Point& pos) override; + + /** + TODO document this. + */ + OpenGLImage& operator=(const OpenGLImage& image) noexcept; + + // FIXME this should not be needed + inline void loadFromMemory(const char* rdata, uint w, uint h, ImageFormat fmt = kImageFormatBGRA) + { loadFromMemory(rdata, Size(w, h), fmt); }; + inline void draw(const GraphicsContext& context) + { drawAt(context, Point(0, 0)); }; + inline void drawAt(const GraphicsContext& context, int x, int y) + { drawAt(context, Point(x, y)); }; + + /** + Constructor using raw image data, specifying an OpenGL image format. + @note @a rawData must remain valid for the lifetime of this Image. + DEPRECATED This constructor uses OpenGL image format instead of DISTRHO one. + */ + DISTRHO_DEPRECATED_BY("OpenGLImage(const char*, uint, uint, ImageFormat)") + explicit OpenGLImage(const char* rawData, uint width, uint height, GLenum glFormat); + + /** + Constructor using raw image data, specifying an OpenGL image format. + @note @a rawData must remain valid for the lifetime of this Image. + DEPRECATED This constructor uses OpenGL image format instead of DISTRHO one. + */ + DISTRHO_DEPRECATED_BY("OpenGLImage(const char*, const Size&, ImageFormat)") + explicit OpenGLImage(const char* rawData, const Size& size, GLenum glFormat); + + /** + Draw this image at (0, 0) point using the current OpenGL context. + DEPRECATED This function does not take into consideration the current graphics context and only works in OpenGL. + */ + DISTRHO_DEPRECATED_BY("draw(const GraphicsContext&)") + void draw(); + + /** + Draw this image at (x, y) point using the current OpenGL context. + DEPRECATED This function does not take into consideration the current graphics context and only works in OpenGL. + */ + DISTRHO_DEPRECATED_BY("drawAt(const GraphicsContext&, int, int)") + void drawAt(int x, int y); + + /** + Draw this image at position @a pos using the current OpenGL context. + DEPRECATED This function does not take into consideration the current graphics context and only works in OpenGL. + */ + DISTRHO_DEPRECATED_BY("drawAt(const GraphicsContext&, const Point&)") + void drawAt(const Point& pos); + + /** + Get the image type. + DEPRECATED Type is always assumed to be GL_UNSIGNED_BYTE. + */ + DISTRHO_DEPRECATED + GLenum getType() const noexcept { return GL_UNSIGNED_BYTE; } + +private: + GLuint textureId; + bool setupCalled; +}; + +// ----------------------------------------------------------------------- + +typedef ImageBaseAboutWindow OpenGLImageAboutWindow; +typedef ImageBaseButton OpenGLImageButton; +typedef ImageBaseKnob OpenGLImageKnob; +typedef ImageBaseSlider OpenGLImageSlider; +typedef ImageBaseSwitch OpenGLImageSwitch; + +// ----------------------------------------------------------------------- + END_NAMESPACE_DGL #endif diff --git a/dgl/StandaloneWindow.hpp b/dgl/StandaloneWindow.hpp index 01ffa7db..5f2d553d 100644 --- a/dgl/StandaloneWindow.hpp +++ b/dgl/StandaloneWindow.hpp @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2016 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -17,39 +17,53 @@ #ifndef DGL_STANDALONE_WINDOW_HPP_INCLUDED #define DGL_STANDALONE_WINDOW_HPP_INCLUDED -#include "Application.hpp" -#include "Widget.hpp" +#include "TopLevelWidget.hpp" #include "Window.hpp" START_NAMESPACE_DGL // ----------------------------------------------------------------------- -class StandaloneWindow : public Application, - public Window +class StandaloneWindow : public Window, + public TopLevelWidget { public: /** - Constructor. + Constructor without parent. */ - StandaloneWindow(); + StandaloneWindow(Application& app) + : Window(app), + TopLevelWidget((Window&)*this) {} /** - Show window and execute application. + Constructor with parent window, typically used to run as modal. */ - void exec(); + StandaloneWindow(Application& app, Window& parentWindow) + : Window(app, parentWindow), + TopLevelWidget((Window&)*this) {} -private: - Widget* fWidget; - - /** @internal */ - void onReshape(uint width, uint height) override; - - /** @internal */ - void _addWidget(Widget* widget) override; - - /** @internal */ - void _removeWidget(Widget* widget) override; + /** + Overloaded functions to ensure they apply to the Window class. + */ + bool isVisible() const noexcept { return Window::isVisible(); } + void setVisible(bool yesNo) { Window::setVisible(yesNo); } + void hide() { Window::hide(); } + void show() { Window::show(); } + uint getWidth() const noexcept { return Window::getWidth(); } + uint getHeight() const noexcept { return Window::getHeight(); } + const Size getSize() const noexcept { return Window::getSize(); } + void repaint() noexcept { Window::repaint(); } + void setWidth(uint width) { Window::setWidth(width); } + void setHeight(uint height) { Window::setHeight(height); } + void setSize(uint width, uint height) { Window::setSize(width, height); } + void setSize(const Size& size) { Window::setSize(size); } + bool addIdleCallback(IdleCallback* callback, uint timerFrequencyInMs = 0) + { return Window::addIdleCallback(callback, timerFrequencyInMs); } + bool removeIdleCallback(IdleCallback* callback) { return Window::removeIdleCallback(callback); } + const GraphicsContext& getGraphicsContext() const noexcept { return Window::getGraphicsContext(); } + void setGeometryConstraints(uint minimumWidth, uint minimumHeight, + bool keepAspectRatio = false, bool automaticallyScale = false) + { Window::setGeometryConstraints(minimumWidth, minimumHeight, keepAspectRatio, automaticallyScale); } DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(StandaloneWindow) }; diff --git a/dgl/SubWidget.hpp b/dgl/SubWidget.hpp new file mode 100644 index 00000000..1b50ef5a --- /dev/null +++ b/dgl/SubWidget.hpp @@ -0,0 +1,148 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef DGL_SUBWIDGET_HPP_INCLUDED +#define DGL_SUBWIDGET_HPP_INCLUDED + +#include "Widget.hpp" + +START_NAMESPACE_DGL + +// -------------------------------------------------------------------------------------------------------------------- + +/** + Sub-Widget class. + + This class is the main entry point for creating any reusable widgets from within DGL. + It can be freely positioned from within a parent widget, thus being named subwidget. + + Many subwidgets can share the same parent, and subwidgets themselves can also have its own subwidgets. + It is subwidgets all the way down. + + TODO check absolute vs relative position and see what makes more sense. + + @see CairoSubWidget + */ +class SubWidget : public Widget +{ +public: + /** + Constructor. + */ + explicit SubWidget(Widget* parentWidget); + + /** + Destructor. + */ + virtual ~SubWidget(); + + /** + Check if this widget contains the point defined by @a x and @a y. + */ + // TODO rename as containsRelativePos + template + bool contains(T x, T y) const noexcept; + + /** + Check if this widget contains the point @a pos. + */ + // TODO rename as containsRelativePos + template + bool contains(const Point& pos) const noexcept; + + /** + Get absolute X. + */ + int getAbsoluteX() const noexcept; + + /** + Get absolute Y. + */ + int getAbsoluteY() const noexcept; + + /** + Get absolute position. + */ + Point getAbsolutePos() const noexcept; + + /** + Get absolute area of this subwidget. + This is the same as `Rectangle(getAbsolutePos(), getSize());` + @see getConstrainedAbsoluteArea() + */ + Rectangle getAbsoluteArea() const noexcept; + + /** + Get absolute area of this subwidget, with special consideration for not allowing negative values. + @see getAbsoluteArea() + */ + Rectangle getConstrainedAbsoluteArea() const noexcept; + + /** + Set absolute X. + */ + void setAbsoluteX(int x) noexcept; + + /** + Set absolute Y. + */ + void setAbsoluteY(int y) noexcept; + + /** + Set absolute position using @a x and @a y values. + */ + void setAbsolutePos(int x, int y) noexcept; + + /** + Set absolute position. + */ + void setAbsolutePos(const Point& pos) noexcept; + + /** + Get parent Widget, as passed in the constructor. + */ + Widget* getParentWidget() const noexcept; + + /** + Request repaint of this subwidget's area to the window this widget belongs to. + */ + void repaint() noexcept override; + + /** + Indicate that this subwidget will draw out of bounds, and thus needs the entire viewport available for drawing. + */ + void setNeedsFullViewportDrawing(bool needsFullViewportForDrawing = true); + +protected: + /** + A function called when the subwidget's absolute position is changed. + */ + virtual void onPositionChanged(const PositionChangedEvent&); + +private: + struct PrivateData; + PrivateData* const pData; + friend class Widget; + template friend class NanoBaseWidget; + DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(SubWidget) +}; + +// -------------------------------------------------------------------------------------------------------------------- + +END_NAMESPACE_DGL + +#endif // DGL_SUBWIDGET_HPP_INCLUDED + diff --git a/dgl/TopLevelWidget.hpp b/dgl/TopLevelWidget.hpp new file mode 100644 index 00000000..165f41bd --- /dev/null +++ b/dgl/TopLevelWidget.hpp @@ -0,0 +1,101 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef DGL_TOP_LEVEL_WIDGET_HPP_INCLUDED +#define DGL_TOP_LEVEL_WIDGET_HPP_INCLUDED + +#include "Widget.hpp" + +#ifdef DISTRHO_DEFINES_H_INCLUDED +START_NAMESPACE_DISTRHO +class UI; +END_NAMESPACE_DISTRHO +#endif + +START_NAMESPACE_DGL + +class Window; + +// ----------------------------------------------------------------------- + +/** + Top-Level Widget class. + + This is the only Widget class that is allowed to be used directly on a Window. + + This widget takes the full size of the Window it is mapped to. + Sub-widgets can be added on top of this top-level widget, by creating them with this class as parent. + Doing so allows for custom position and sizes. + + This class is used as the type for DPF Plugin UIs. + So anything that a plugin UI might need that does not belong in a simple Widget will go here. + */ +class TopLevelWidget : public Widget +{ +public: + /** + Constructor. + */ + explicit TopLevelWidget(Window& windowToMapTo); + + /** + Destructor. + */ + virtual ~TopLevelWidget(); + + /** + Get the application associated with this top-level widget's window. + */ + Application& getApp() const noexcept; + + /** + Get the window associated with this top-level widget. + */ + Window& getWindow() const noexcept; + + // TODO group stuff after here, convenience functions present in Window class + bool addIdleCallback(IdleCallback* callback, uint timerFrequencyInMs = 0); + bool removeIdleCallback(IdleCallback* callback); + double getScaleFactor() const noexcept; + void repaint() noexcept; + void repaint(const Rectangle& rect) noexcept; + void setGeometryConstraints(uint minimumWidth, + uint minimumHeight, + bool keepAspectRatio = false, + bool automaticallyScale = false); + + DISTRHO_DEPRECATED_BY("getApp()") + Application& getParentApp() const noexcept { return getApp(); } + + DISTRHO_DEPRECATED_BY("getWindow()") + Window& getParentWindow() const noexcept { return getWindow(); } + +private: + struct PrivateData; + PrivateData* const pData; + friend class Window; +#ifdef DISTRHO_DEFINES_H_INCLUDED + friend class DISTRHO_NAMESPACE::UI; +#endif + + DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(TopLevelWidget) +}; + +// ----------------------------------------------------------------------- + +END_NAMESPACE_DGL + +#endif // DGL_TOP_LEVEL_WIDGET_HPP_INCLUDED diff --git a/dgl/Vulkan.hpp b/dgl/Vulkan.hpp new file mode 100644 index 00000000..4fd7c45a --- /dev/null +++ b/dgl/Vulkan.hpp @@ -0,0 +1,103 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef DGL_VULKAN_HPP_INCLUDED +#define DGL_VULKAN_HPP_INCLUDED + +#include "ImageBase.hpp" + +#include + +START_NAMESPACE_DGL + +// -------------------------------------------------------------------------------------------------------------------- + +/** + Vulkan Graphics context. + */ +struct VulkanGraphicsContext : GraphicsContext +{ +}; + +// -------------------------------------------------------------------------------------------------------------------- + +/** + Vulkan Image class. + + TODO ... + */ +class VulkanImage : public ImageBase +{ +public: + /** + Constructor for a null Image. + */ + VulkanImage(); + + /** + Constructor using raw image data. + @note @a rawData must remain valid for the lifetime of this Image. + */ + VulkanImage(const char* rawData, uint width, uint height, ImageFormat format); + + /** + Constructor using raw image data. + @note @a rawData must remain valid for the lifetime of this Image. + */ + VulkanImage(const char* rawData, const Size& size, ImageFormat format); + + /** + Constructor using another image data. + */ + VulkanImage(const VulkanImage& image); + + /** + Destructor. + */ + ~VulkanImage() override; + + /** + Load image data from memory. + @note @a rawData must remain valid for the lifetime of this Image. + */ + void loadFromMemory(const char* rawData, + const Size& size, + ImageFormat format = kImageFormatBGRA) noexcept override; + + /** + Draw this image at position @a pos using the graphics context @a context. + */ + void drawAt(const GraphicsContext& context, const Point& pos) override; + + /** + TODO document this. + */ + VulkanImage& operator=(const VulkanImage& image) noexcept; + + // FIXME this should not be needed + inline void loadFromMemory(const char* rdata, uint w, uint h, ImageFormat fmt = kImageFormatBGRA) + { loadFromMemory(rdata, Size(w, h), fmt); }; + inline void draw(const GraphicsContext& context) + { drawAt(context, Point(0, 0)); }; + inline void drawAt(const GraphicsContext& context, int x, int y) + { drawAt(context, Point(x, y)); }; +}; + +// -------------------------------------------------------------------------------------------------------------------- + +END_NAMESPACE_DGL + +#endif diff --git a/dgl/Widget.hpp b/dgl/Widget.hpp index f8d7139d..8505c216 100644 --- a/dgl/Widget.hpp +++ b/dgl/Widget.hpp @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2019 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -19,82 +19,97 @@ #include "Geometry.hpp" -#include +START_NAMESPACE_DGL -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- // Forward class names -#ifdef DISTRHO_DEFINES_H_INCLUDED -START_NAMESPACE_DISTRHO -class UI; -END_NAMESPACE_DISTRHO -#endif - -START_NAMESPACE_DGL - class Application; -class ImageSlider; -class NanoWidget; +class SubWidget; +class TopLevelWidget; class Window; -class StandaloneWindow; -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- /** Base DGL Widget class. This is the base Widget class, from which all widgets are built. - All widgets have a parent Window where they'll be drawn. - This parent is never changed during the widget lifetime. + All widgets have a parent widget where they'll be drawn, this can be the top-level widget or a group widget. + This parent is never changed during a widget's lifetime. - Widgets receive events in relative coordinates. - (0, 0) means its top-left position. + Widgets receive events in relative coordinates. (0, 0) means its top-left position. - Windows paint widgets in the order they are constructed. - Early widgets are drawn first, at the bottom, then newer ones on top. - Events are sent in the inverse order so that the top-most widget gets + The top-level widget will draw subwidgets in the order they are constructed. + Early subwidgets are drawn first, at the bottom, then newer ones on top. + Events are sent in the inverse order so that the top-most widgets get a chance to catch the event and stop its propagation. - All widget event callbacks do nothing by default. + All widget event callbacks do nothing by default and onDisplay MUST be reimplemented by subclasses. + + @note It is not possible to subclass this Widget class directly, you must use SubWidget or TopLevelWidget instead. */ class Widget { public: /** Base event data. - @a mod The currently active keyboard modifiers, @see Modifier. - @a time The timestamp (if any). + These are the fields present on all Widget events. + + @a mod Currently active keyboard modifiers, @see Modifier. + @a mod Event flags, @see Flag. + @a time Event timestamp (if any). */ struct BaseEvent { - uint mod; - uint32_t time; + uint mod; + uint flags; + uint time; /** Constuctor */ - BaseEvent() noexcept : mod(0x0), time(0) {} + BaseEvent() noexcept : mod(0x0), flags(0x0), time(0) {} /** Destuctor */ virtual ~BaseEvent() noexcept {} }; /** Keyboard event. - @a press True if the key was pressed, false if released. - @a key Unicode point of the key pressed. + + This event represents low-level key presses and releases. + This can be used for "direct" keyboard handing like key bindings, but must not be interpreted as text input. + + Keys are represented portably as Unicode code points, using the "natural" code point for the key. + The @a key field is the code for the pressed key, without any modifiers applied. + For example, a press or release of the 'A' key will have `key` 97 ('a') + regardless of whether shift or control are being held. + + Alternatively, the raw @a keycode can be used to work directly with physical keys, + but note that this value is not portable and differs between platforms and hardware. + + @a press True if the key was pressed, false if released. + @a key Unicode point of the key pressed. + @a keycode Raw keycode. @see onKeyboard */ struct KeyboardEvent : BaseEvent { bool press; uint key; + uint keycode; /** Constuctor */ KeyboardEvent() noexcept : BaseEvent(), press(false), - key(0) {} + key(0), + keycode(0) {} }; /** Special keyboard event. + + This event allows the use of keys that do not have unicode points. + Note that some are non-printable keys. + @a press True if the key was pressed, false if released. @a key The key pressed. @see onSpecial @@ -111,54 +126,94 @@ public: }; /** - Mouse event. - @a button The button number (1 = left, 2 = middle, 3 = right). + Character input event. + + This event represents text input, usually as the result of a key press. + The text is given both as a Unicode character code and a UTF-8 string. + + Note that this event is generated by the platform's input system, + so there is not necessarily a direct correspondence between text events and physical key presses. + For example, with some input methods a sequence of several key presses will generate a single character. + + @a keycode Raw key code. + @a character Unicode character code. + @a string UTF-8 string. + @see onCharacterInput + */ + struct CharacterInputEvent : BaseEvent { + uint keycode; + uint character; + char string[8]; + + /** Constuctor */ + CharacterInputEvent() noexcept + : BaseEvent(), + keycode(0), + character(0), + string{'\0','\0','\0','\0','\0','\0','\0','\0'} {} + }; + + /** + Mouse press or release event. + + @a button The button number starting from 1 (1 = left, 2 = middle, 3 = right). @a press True if the button was pressed, false if released. @a pos The widget-relative coordinates of the pointer. @see onMouse */ struct MouseEvent : BaseEvent { - int button; + uint button; bool press; - Point pos; + Point pos; /** Constuctor */ MouseEvent() noexcept : BaseEvent(), button(0), press(false), - pos(0, 0) {} + pos(0.0, 0.0) {} }; /** Mouse motion event. + @a pos The widget-relative coordinates of the pointer. @see onMotion */ struct MotionEvent : BaseEvent { - Point pos; + Point pos; /** Constuctor */ MotionEvent() noexcept : BaseEvent(), - pos(0, 0) {} + pos(0.0, 0.0) {} }; /** Mouse scroll event. - @a pos The widget-relative coordinates of the pointer. - @a delta The scroll distance. + + The scroll distance is expressed in "lines", + an arbitrary unit that corresponds to a single tick of a detented mouse wheel. + For example, `delta.y` = 1.0 scrolls 1 line up. + Some systems and devices support finer resolution and/or higher values for fast scrolls, + so programs should handle any value gracefully. + + @a pos The widget-relative coordinates of the pointer. + @a delta The scroll distance. + @a direction The direction of the scroll or "smooth". @see onScroll */ struct ScrollEvent : BaseEvent { - Point pos; - Point delta; + Point pos; + Point delta; + ScrollDirection direction; /** Constuctor */ ScrollEvent() noexcept : BaseEvent(), - pos(0, 0), - delta(0.0f, 0.0f) {} + pos(0.0, 0.0), + delta(0.0, 0.0), + direction(kScrollSmooth) {} }; /** @@ -193,16 +248,18 @@ public: oldPos(0, 0) {} }; +private: /** - Constructor. + Private constructor, reserved for TopLevelWidget class. */ - explicit Widget(Window& parent); + explicit Widget(TopLevelWidget* topLevelWidget); /** - Constructor for a subwidget. + Private constructor, reserved for SubWidget class. */ - explicit Widget(Widget* groupWidget); + explicit Widget(Widget* widgetToGroupTo); +public: /** Destructor. */ @@ -215,9 +272,9 @@ public: bool isVisible() const noexcept; /** - Set widget visible (or not) according to @a yesNo. + Set widget visible (or not) according to @a visible. */ - void setVisible(bool yesNo); + void setVisible(bool visible); /** Show widget. @@ -244,7 +301,7 @@ public: /** Get size. */ - const Size& getSize() const noexcept; + const Size getSize() const noexcept; /** Set width. @@ -267,81 +324,58 @@ public: void setSize(const Size& size) noexcept; /** - Get absolute X. - */ - int getAbsoluteX() const noexcept; - - /** - Get absolute Y. - */ - int getAbsoluteY() const noexcept; - - /** - Get absolute position. - */ - const Point& getAbsolutePos() const noexcept; - - /** - Set absolute X. - */ - void setAbsoluteX(int x) noexcept; - - /** - Set absolute Y. - */ - void setAbsoluteY(int y) noexcept; - - /** - Set absolute position using @a x and @a y values. + Get the Id associated with this widget. + @see setId */ - void setAbsolutePos(int x, int y) noexcept; + uint getId() const noexcept; /** - Set absolute position. + Set an Id to be associated with this widget. + @see getId */ - void setAbsolutePos(const Point& pos) noexcept; + void setId(uint id) noexcept; /** - Get this widget's window application. - Same as calling getParentWindow().getApp(). + Get the application associated with this widget's window. + This is the same as calling `getTopLevelWidget()->getApp()`. */ - Application& getParentApp() const noexcept; + Application& getApp() const noexcept; /** - Get parent window, as passed in the constructor. + Get the window associated with this widget. + This is the same as calling `getTopLevelWidget()->getWindow()`. */ - Window& getParentWindow() const noexcept; + Window& getWindow() const noexcept; /** - Check if this widget contains the point defined by @a x and @a y. + Get the graphics context associated with this widget's window. + GraphicsContext is an empty struct and needs to be casted into a different type in order to be usable, + for example GraphicsContext. + @see CairoSubWidget, CairoTopLevelWidget */ - bool contains(int x, int y) const noexcept; + const GraphicsContext& getGraphicsContext() const noexcept; /** - Check if this widget contains the point @a pos. + Get top-level widget, as passed directly in the constructor + or going up the chain of group widgets until it finds the top-level one. */ - bool contains(const Point& pos) const noexcept; + TopLevelWidget* getTopLevelWidget() const noexcept; /** - Tell this widget's window to repaint itself. + Request repaint of this widget's area to the window this widget belongs to. + On the raw Widget class this function does nothing. */ - void repaint() noexcept; + virtual void repaint() noexcept; - /** - Get the Id associated with this widget. - @see setId - */ - uint getId() const noexcept; + DISTRHO_DEPRECATED_BY("getApp()") + Application& getParentApp() const noexcept { return getApp(); } - /** - Set an Id to be associated with this widget. - @see getId - */ - void setId(uint id) noexcept; + DISTRHO_DEPRECATED_BY("getWindow()") + Window& getParentWindow() const noexcept { return getWindow(); } protected: /** - A function called to draw the view contents with OpenGL. + A function called to draw the widget contents. */ virtual void onDisplay() = 0; @@ -357,6 +391,12 @@ protected: */ virtual bool onSpecial(const SpecialEvent&); + /** + A function called when an UTF-8 character is received. + @return True to stop event propagation, false otherwise. + */ + virtual bool onCharacterInput(const CharacterInputEvent&); + /** A function called when a mouse button is pressed or released. @return True to stop event propagation, false otherwise. @@ -380,30 +420,16 @@ protected: */ virtual void onResize(const ResizeEvent&); - /** - A function called when the widget's absolute position is changed. - */ - virtual void onPositionChanged(const PositionChangedEvent&); - private: struct PrivateData; PrivateData* const pData; - - /** @internal */ - explicit Widget(Widget* groupWidget, bool addToSubWidgets); - - friend class ImageSlider; - friend class NanoWidget; - friend class Window; - friend class StandaloneWindow; -#ifdef DISTRHO_DEFINES_H_INCLUDED - friend class DISTRHO_NAMESPACE::UI; -#endif + friend class SubWidget; + friend class TopLevelWidget; DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(Widget) }; -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- END_NAMESPACE_DGL diff --git a/dgl/Window.hpp b/dgl/Window.hpp index 931177ea..f1f07c85 100644 --- a/dgl/Window.hpp +++ b/dgl/Window.hpp @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2019 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -19,50 +19,79 @@ #include "Geometry.hpp" -#ifdef DISTRHO_DEFINES_H_INCLUDED -START_NAMESPACE_DISTRHO -class UIExporter; -END_NAMESPACE_DISTRHO -#endif - START_NAMESPACE_DGL +class Application; +class TopLevelWidget; + // ----------------------------------------------------------------------- -class Application; -class Widget; -class StandaloneWindow; +/** + DGL Window class. + + This is the where all OS-related events initially happen, before being propagated to any widgets. + + A Window MUST have an Application instance tied to it. + It is not possible to swap Application instances from within the lifetime of a Window. + But it is possible to completely change the Widgets that a Window contains during its lifetime. + + Typically the event handling functions as following: + Application -> Window -> Top-Level-Widget -> SubWidgets + + Please note that, unlike many other graphical toolkits out there, + DGL makes a clear distinction between a Window and a Widget. + You cannot directly draw in a Window, you need to create a Widget for that. + + Also, a Window MUST have a single top-level Widget. + The Window will take care of global screen positioning and resizing, everything else is sent for widgets to handle. + ... + */ class Window { public: #ifndef DGL_FILE_BROWSER_DISABLED /** File browser options. + @see Window::openFileBrowser */ struct FileBrowserOptions { + /** + File browser button state. + This allows to customize the behaviour of the file browse dialog buttons. + */ + enum ButtonState { + kButtonInvisible, + kButtonVisibleUnchecked, + kButtonVisibleChecked, + }; + + /** Start directory, uses current working directory if null */ const char* startDir; + /** File browser dialog window title, uses "FileBrowser" if null */ const char* title; + /** File browser dialog window width */ uint width; + /** File browser dialog window height */ uint height; + // TODO file filter - /** - File browser buttons. - - 0 means hidden. - 1 means visible and unchecked. - 2 means visible and checked. + /** + File browser buttons. */ struct Buttons { - uint listAllFiles; - uint showHidden; - uint showPlaces; + /** Whether to list all files vs only those with matching file extension */ + ButtonState listAllFiles; + /** Whether to show hidden files */ + ButtonState showHidden; + /** Whether to show list of places (bookmarks) */ + ButtonState showPlaces; /** Constuctor for default values */ Buttons() - : listAllFiles(2), - showHidden(1), - showPlaces(1) {} + : listAllFiles(kButtonVisibleChecked), + showHidden(kButtonVisibleUnchecked), + showPlaces(kButtonVisibleUnchecked) {} } buttons; /** Constuctor for default values */ @@ -75,91 +104,320 @@ public: }; #endif // DGL_FILE_BROWSER_DISABLED + /** + Constructor for a regular, standalone window. + */ explicit Window(Application& app); + + /** + Constructor for a modal window, by having another window as its parent. + The Application instance must be the same between the 2 windows. + */ explicit Window(Application& app, Window& parent); - explicit Window(Application& app, intptr_t parentId, double scaling, bool resizable); - virtual ~Window(); - void show(); - void hide(); - void close(); - void exec(bool lockWait = false); + /** + Constructor for an embed Window without known size, + typically used in modules or plugins that run inside another host. + */ + explicit Window(Application& app, + uintptr_t parentWindowHandle, + double scaleFactor, + bool resizable); - void focus(); - void repaint() noexcept; + /** + Constructor for an embed Window with known size, + typically used in modules or plugins that run inside another host. + */ + explicit Window(Application& app, + uintptr_t parentWindowHandle, + uint width, + uint height, + double scaleFactor, + bool resizable); -#ifndef DGL_FILE_BROWSER_DISABLED - bool openFileBrowser(const FileBrowserOptions& options); -#endif + /** + Destructor. + */ + virtual ~Window(); + /** + Whether this Window is embed into another (usually not DGL-controlled) Window. + */ bool isEmbed() const noexcept; + /** + Check if this window is visible / mapped. + Invisible windows do not receive events except resize. + @see setVisible(bool) + */ bool isVisible() const noexcept; - void setVisible(bool yesNo); + /** + Set windows visible (or not) according to @a visible. + Only valid for standalones, embed windows are always visible. + @see isVisible(), hide(), show() + */ + void setVisible(bool visible); + + /** + Show window. + This is the same as calling setVisible(true). + @see isVisible(), setVisible(bool) + */ + void show(); + + /** + Hide window. + This is the same as calling setVisible(false). + @see isVisible(), setVisible(bool) + */ + void hide(); + + /** + Hide window and notify application of a window close event. + The application event-loop will stop when all windows have been closed. + For standalone windows only, has no effect if window is embed. + @see isEmbed() + + @note It is possible to hide the window while not stopping the event-loop. + A closed window is always hidden, but the reverse is not always true. + */ + void close(); + + /** + Check if this window is resizable. + @see setResizable + */ bool isResizable() const noexcept; - void setResizable(bool yesNo); + /** + Set window as resizable (by the user or window manager). + It is always possible to resize a window programmatically, which is not the same as the user being allowed to it. + @note This function does nothing for plugins, where the resizable state is set via macro. + @see DISTRHO_UI_USER_RESIZABLE + */ + void setResizable(bool resizable); + + /** + Get width. + */ uint getWidth() const noexcept; + + /** + Get height. + */ uint getHeight() const noexcept; + + /** + Get size. + */ Size getSize() const noexcept; + + /** + Set width. + */ + void setWidth(uint width); + + /** + Set height. + */ + void setHeight(uint height); + + /** + Set size using @a width and @a height values. + */ void setSize(uint width, uint height); - void setSize(Size size); + /** + Set size. + */ + void setSize(const Size& size); + + /** + Get the title of the window previously set with setTitle(). + */ const char* getTitle() const noexcept; - void setTitle(const char* title); - void setGeometryConstraints(uint width, uint height, bool aspect); - void setTransientWinId(uintptr_t winId); + /** + Set the title of the window, typically displayed in the title bar or in window switchers. + + This only makes sense for non-embedded windows. + */ + void setTitle(const char* title); - double getScaling() const noexcept; + /** + Check if key repeat events are ignored. + */ + bool isIgnoringKeyRepeat() const noexcept; - bool getIgnoringKeyRepeat() const noexcept; + /** + Set to ignore (or not) key repeat events according to @a ignore. + */ void setIgnoringKeyRepeat(bool ignore) noexcept; + /** + Add a callback function to be triggered on every idle cycle or on a specific timer frequency. + You can add more than one, and remove them at anytime with removeIdleCallback(). + This can be used to perform some action at a regular interval with relatively low frequency. + + If providing a timer frequency, there are a few things to note: + 1. There is a platform-specific limit to the number of supported timers, and overhead associated with each, + so you should create only a few timers and perform several tasks in one if necessary. + 2. This timer frequency is not guaranteed to have a resolution better than 10ms + (the maximum timer resolution on Windows) and may be rounded up if it is too short. + On X11 and MacOS, a resolution of about 1ms can usually be relied on. + */ + bool addIdleCallback(IdleCallback* callback, uint timerFrequencyInMs = 0); + + /** + Remove an idle callback previously added via addIdleCallback(). + */ + bool removeIdleCallback(IdleCallback* callback); + + /** + Get the application associated with this window. + */ Application& getApp() const noexcept; - intptr_t getWindowId() const noexcept; + /** + Get the graphics context associated with this window. + GraphicsContext is an empty struct and needs to be casted into a different type in order to be usable, + for example GraphicsContext. + @see CairoSubWidget, CairoTopLevelWidget + */ const GraphicsContext& getGraphicsContext() const noexcept; - void addIdleCallback(IdleCallback* const callback); - void removeIdleCallback(IdleCallback* const callback); + /** + Get the "native" window handle. + Returned value depends on the platform: + - HaikuOS: This is a pointer to a `BView`. + - MacOS: This is a pointer to an `NSView*`. + - Windows: This is a `HWND`. + - Everything else: This is an [X11] `Window`. + */ + uintptr_t getNativeWindowHandle() const noexcept; + + /** + Get the scale factor requested for this window. + This is purely informational, and up to developers to choose what to do with it. + + If you do not want to deal with this yourself, + consider using setGeometryConstraints() where you can specify to automatically scale the window contents. + @see setGeometryConstraints + */ + double getScaleFactor() const noexcept; + + /** + Grab the keyboard input focus. + */ + void focus(); + +#ifndef DGL_FILE_BROWSER_DISABLED + /** + Open a file browser dialog with this window as parent. + A few options can be specified to setup the dialog. + + If a path is selected, onFileSelected() will be called with the user chosen path. + If the user cancels or does not pick a file, onFileSelected() will be called with nullptr as filename. + + This function does not block the event loop. + */ + bool openFileBrowser(const FileBrowserOptions& options); +#endif + + /** + Request repaint of this window, for the entire area. + */ + void repaint() noexcept; + + /** + Request partial repaint of this window, with bounds according to @a rect. + */ + void repaint(const Rectangle& rect) noexcept; + + /** + Run this window as a modal, blocking input events from the parent. + Only valid for windows that have been created with another window as parent (as passed in the constructor). + Can optionally block-wait, but such option is only available if the application is running as standalone. + */ + void runAsModal(bool blockWait = false); + + /** + Set geometry constraints for the Window when resized by the user, and optionally scale contents automatically. + */ + void setGeometryConstraints(uint minimumWidth, + uint minimumHeight, + bool keepAspectRatio = false, + bool automaticallyScale = false); + + /** DEPRECATED Use isIgnoringKeyRepeat(). */ + DISTRHO_DEPRECATED_BY("isIgnoringKeyRepeat()") + inline bool getIgnoringKeyRepeat() const noexcept { return isIgnoringKeyRepeat(); } + + /** DEPRECATED Use getScaleFactor(). */ + DISTRHO_DEPRECATED_BY("getScaleFactor()") + inline double getScaling() const noexcept { return getScaleFactor(); } + + /** DEPRECATED Use runAsModal(bool). */ + DISTRHO_DEPRECATED_BY("runAsModal(bool)") + inline void exec(bool blockWait = false) { runAsModal(blockWait); } protected: - virtual void onDisplayBefore(); - virtual void onDisplayAfter(); + /** + A function called when the window is attempted to be closed. + Returning true closes the window, which is the default behaviour. + Override this method and return false to prevent the window from being closed by the user. + */ + virtual bool onClose(); + + /** + A function called when the window gains or loses the keyboard focus. + The default implementation does nothing. + */ + virtual void onFocus(bool focus, CrossingMode mode); + + /** + A function called when the window is resized. + If there is a top-level widget associated with this window, its size will be set right after this function. + The default implementation sets up drawing context where necessary. + */ virtual void onReshape(uint width, uint height); - virtual void onClose(); #ifndef DGL_FILE_BROWSER_DISABLED - virtual void fileBrowserSelected(const char* filename); -#endif + /** + A function called when a path is selected by the user, as triggered by openFileBrowser(). + This action happens after the user confirms the action, so the file browser dialog will be closed at this point. + The default implementation does nothing. + */ + virtual void onFileSelected(const char* filename); - // internal - void _setAutoScaling(double scaling) noexcept; + /** DEPRECATED Use onFileSelected(). */ + DISTRHO_DEPRECATED_BY("onFileSelected(const char*)") + inline virtual void fileBrowserSelected(const char* filename) { return onFileSelected(filename); } +#endif private: struct PrivateData; PrivateData* const pData; friend class Application; - friend class Widget; - friend class StandaloneWindow; -#ifdef DISTRHO_DEFINES_H_INCLUDED - friend class DISTRHO_NAMESPACE::UIExporter; -#endif - - virtual void _addWidget(Widget* const widget); - virtual void _removeWidget(Widget* const widget); - void _idle(); - - bool handlePluginKeyboard(const bool press, const uint key); - bool handlePluginSpecial(const bool press, const Key key); + friend class TopLevelWidget; - DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(Window) + DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(Window); }; // ----------------------------------------------------------------------- END_NAMESPACE_DGL +/* TODO + * add eventcrossing/enter-leave event + */ +#if 0 +protected: + bool handlePluginKeyboard(const bool press, const uint key); + bool handlePluginSpecial(const bool press, const Key key); +#endif + +// ----------------------------------------------------------------------- + #endif // DGL_WINDOW_HPP_INCLUDED diff --git a/dgl/src/Application.cpp b/dgl/src/Application.cpp index 114ee8fc..80d5957c 100644 --- a/dgl/src/Application.cpp +++ b/dgl/src/Application.cpp @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2016 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -15,14 +15,13 @@ */ #include "ApplicationPrivateData.hpp" -#include "../Window.hpp" START_NAMESPACE_DGL -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- -Application::Application() - : pData(new PrivateData()) {} +Application::Application(const bool isStandalone) + : pData(new PrivateData(isStandalone)) {} Application::~Application() { @@ -31,44 +30,48 @@ Application::~Application() void Application::idle() { - for (std::list::iterator it = pData->windows.begin(), ite = pData->windows.end(); it != ite; ++it) - { - Window* const window(*it); - window->_idle(); - } - - for (std::list::iterator it = pData->idleCallbacks.begin(), ite = pData->idleCallbacks.end(); it != ite; ++it) - { - IdleCallback* const idleCallback(*it); - idleCallback->idleCallback(); - } + pData->idle(0); } -void Application::exec(int idleTime) +void Application::exec(const uint idleTimeInMs) { - for (; pData->doLoop;) - { - idle(); - d_msleep(idleTime); - } + DISTRHO_SAFE_ASSERT_RETURN(pData->isStandalone,); + + while (! pData->isQuitting) + pData->idle(idleTimeInMs); } void Application::quit() { - pData->doLoop = false; + DISTRHO_SAFE_ASSERT_RETURN(pData->isStandalone,); - for (std::list::reverse_iterator rit = pData->windows.rbegin(), rite = pData->windows.rend(); rit != rite; ++rit) - { - Window* const window(*rit); - window->close(); - } + pData->quit(); } bool Application::isQuiting() const noexcept { - return !pData->doLoop; + return pData->isQuitting; +} + +void Application::addIdleCallback(IdleCallback* const callback) +{ + DISTRHO_SAFE_ASSERT_RETURN(callback != nullptr,) + + pData->idleCallbacks.push_back(callback); +} + +void Application::removeIdleCallback(IdleCallback* const callback) +{ + DISTRHO_SAFE_ASSERT_RETURN(callback != nullptr,) + + pData->idleCallbacks.remove(callback); +} + +void Application::setClassName(const char* const name) +{ + pData->setClassName(name); } -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- END_NAMESPACE_DGL diff --git a/dgl/src/ApplicationPrivateData.cpp b/dgl/src/ApplicationPrivateData.cpp new file mode 100644 index 00000000..409085b2 --- /dev/null +++ b/dgl/src/ApplicationPrivateData.cpp @@ -0,0 +1,137 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "ApplicationPrivateData.hpp" +#include "../Window.hpp" + +#include "pugl.hpp" + +#include + +START_NAMESPACE_DGL + +typedef std::list::reverse_iterator WindowListReverseIterator; + +// -------------------------------------------------------------------------------------------------------------------- + +Application::PrivateData::PrivateData(const bool standalone) + : world(puglNewWorld(standalone ? PUGL_PROGRAM : PUGL_MODULE, + standalone ? PUGL_WORLD_THREADS : 0x0)), + isStandalone(standalone), + isQuitting(false), + isQuittingInNextCycle(false), + isStarting(true), + visibleWindows(0), + windows(), + idleCallbacks() +{ + DISTRHO_SAFE_ASSERT_RETURN(world != nullptr,); + + puglSetWorldHandle(world, this); + puglSetClassName(world, DISTRHO_MACRO_AS_STRING(DGL_NAMESPACE)); +#ifdef HAVE_X11 + sofdFileDialogSetup(world); +#endif +} + +Application::PrivateData::~PrivateData() +{ + DISTRHO_SAFE_ASSERT(isStarting || isQuitting); + DISTRHO_SAFE_ASSERT(visibleWindows == 0); + + windows.clear(); + idleCallbacks.clear(); + + if (world != nullptr) + puglFreeWorld(world); +} + +// -------------------------------------------------------------------------------------------------------------------- + +void Application::PrivateData::oneWindowShown() noexcept +{ + if (++visibleWindows == 1) + { + isQuitting = false; + isStarting = false; + } +} + +void Application::PrivateData::oneWindowClosed() noexcept +{ + DISTRHO_SAFE_ASSERT_RETURN(visibleWindows != 0,); + + if (--visibleWindows == 0) + isQuitting = true; +} + +// -------------------------------------------------------------------------------------------------------------------- + +void Application::PrivateData::idle(const uint timeoutInMs) +{ + if (isQuittingInNextCycle) + { + quit(); + isQuittingInNextCycle = false; + } + + if (world != nullptr) + { + const double timeoutInSeconds = timeoutInMs != 0 + ? static_cast(timeoutInMs) / 1000.0 + : 0.0; + + puglUpdate(world, timeoutInSeconds); + } + + for (std::list::iterator it = idleCallbacks.begin(), ite = idleCallbacks.end(); it != ite; ++it) + { + IdleCallback* const idleCallback(*it); + idleCallback->idleCallback(); + } +} + +void Application::PrivateData::quit() +{ + DISTRHO_SAFE_ASSERT_RETURN(isStandalone,); + + if (! isQuittingInNextCycle) + { + isQuittingInNextCycle = true; + return; + } + + isQuitting = true; + +#ifndef DPF_TEST_APPLICATION_CPP + for (WindowListReverseIterator rit = windows.rbegin(), rite = windows.rend(); rit != rite; ++rit) + { + DGL_NAMESPACE::Window* const window(*rit); + window->close(); + } +#endif +} + +void Application::PrivateData::setClassName(const char* const name) +{ + DISTRHO_SAFE_ASSERT_RETURN(name != nullptr && name[0] != '\0',); + + puglSetClassName(world, name); +} + +// -------------------------------------------------------------------------------------------------------------------- + +END_NAMESPACE_DGL diff --git a/dgl/src/ApplicationPrivateData.hpp b/dgl/src/ApplicationPrivateData.hpp index e95d44a7..627f2a1f 100644 --- a/dgl/src/ApplicationPrivateData.hpp +++ b/dgl/src/ApplicationPrivateData.hpp @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2016 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -18,53 +18,71 @@ #define DGL_APP_PRIVATE_DATA_HPP_INCLUDED #include "../Application.hpp" -#include "../../distrho/extra/Sleep.hpp" #include +typedef struct PuglWorldImpl PuglWorld; + START_NAMESPACE_DGL -// ----------------------------------------------------------------------- +class Window; + +// -------------------------------------------------------------------------------------------------------------------- struct Application::PrivateData { - bool doLoop; + /** Pugl world instance. */ + PuglWorld* const world; + + /** Whether the application is running as standalone, otherwise it is part of a plugin. */ + const bool isStandalone; + + /** Whether the applicating is about to quit, or already stopped. Defaults to false. */ + bool isQuitting; + + /** Helper for safely close everything from main thread. */ + bool isQuittingInNextCycle; + + /** Whether the applicating is starting up, that is, no windows have been made visible yet. Defaults to true. */ + bool isStarting; + + /** Counter of visible windows, only used in standalone mode. + If 0->1, application is starting. If 1->0, application is quitting/stopping. */ uint visibleWindows; - std::list windows; - std::list idleCallbacks; - - PrivateData() - : doLoop(true), - visibleWindows(0), - windows(), - idleCallbacks() {} - - ~PrivateData() - { - DISTRHO_SAFE_ASSERT(! doLoop); - DISTRHO_SAFE_ASSERT(visibleWindows == 0); - - windows.clear(); - idleCallbacks.clear(); - } - - void oneShown() noexcept - { - if (++visibleWindows == 1) - doLoop = true; - } - - void oneHidden() noexcept - { - DISTRHO_SAFE_ASSERT_RETURN(visibleWindows > 0,); - - if (--visibleWindows == 0) - doLoop = false; - } - - DISTRHO_DECLARE_NON_COPY_STRUCT(PrivateData) + + /** List of windows for this application. Only used during `close`. */ + std::list windows; + + /** List of idle callbacks for this application. */ + std::list idleCallbacks; + + /** Constructor and destructor */ + explicit PrivateData(bool standalone); + ~PrivateData(); + + /** Flag one window as shown, which increments @a visibleWindows. + Sets @a isQuitting and @a isStarting as false if this is the first window. + For standalone mode only. */ + void oneWindowShown() noexcept; + + /** Flag one window as closed, which decrements @a visibleWindows. + Sets @a isQuitting as true if this is the last window. + For standalone mode only. */ + void oneWindowClosed() noexcept; + + /** Run Pugl world update for @a timeoutInMs, and then each idle callback in order of registration. */ + void idle(uint timeoutInMs); + + /** Set flag indicating application is quitting, and close all windows in reverse order of registration. + For standalone mode only. */ + void quit(); + + /** Set pugl world class name. */ + void setClassName(const char* name); + + DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(PrivateData) }; -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- END_NAMESPACE_DGL diff --git a/dgl/src/Cairo.cpp b/dgl/src/Cairo.cpp index ac9fff5c..91107b57 100644 --- a/dgl/src/Cairo.cpp +++ b/dgl/src/Cairo.cpp @@ -1,6 +1,7 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2019 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho + * Copyright (C) 2019-2021 Jean Pierre Cimalando * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -14,77 +15,143 @@ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -#include "../Geometry.hpp" #include "../Cairo.hpp" +#include "../Color.hpp" +#include "../ImageBaseWidgets.hpp" + +#include "Common.hpp" +#include "SubWidgetPrivateData.hpp" +#include "TopLevelWidgetPrivateData.hpp" +#include "WidgetPrivateData.hpp" +#include "WindowPrivateData.hpp" + +// templated classes +#include "ImageBaseWidgets.cpp" START_NAMESPACE_DGL // ----------------------------------------------------------------------- -static void notImplemented(const char *name) +static void notImplemented(const char* const name) { d_stderr2("cairo function not implemented: %s", name); } +// ----------------------------------------------------------------------- +// Color + +void Color::setFor(const GraphicsContext& context, const bool includeAlpha) +{ + cairo_t* const handle = ((const CairoGraphicsContext&)context).handle; + + if (includeAlpha) + cairo_set_source_rgba(handle, red, green, blue, alpha); + else + cairo_set_source_rgb(handle, red, green, blue); +} + // ----------------------------------------------------------------------- // Line +template +void Line::draw(const GraphicsContext& context, const T width) +{ + DISTRHO_SAFE_ASSERT_RETURN(posStart != posEnd,); + DISTRHO_SAFE_ASSERT_RETURN(width != 0,); + + cairo_t* const handle = ((const CairoGraphicsContext&)context).handle; + + cairo_set_line_width(handle, width); + cairo_move_to(handle, posStart.getX(), posStart.getY()); + cairo_line_to(handle, posEnd.getX(), posEnd.getY()); + cairo_stroke(handle); +} + template void Line::draw() { notImplemented("Line::draw"); } +template class Line; +template class Line; +template class Line; +template class Line; +template class Line; +template class Line; + // ----------------------------------------------------------------------- // Circle template -void Circle::_draw(const bool outline) +static void drawCircle(cairo_t* const handle, + const Point& pos, + const uint numSegments, + const float size, + const float sin, + const float cos, + const bool outline) { - notImplemented("Circle::draw"); -} + DISTRHO_SAFE_ASSERT_RETURN(numSegments >= 3 && size > 0.0f,); -// ----------------------------------------------------------------------- -// Triangle + const T origx = pos.getX(); + const T origy = pos.getY(); + double t, x = size, y = 0.0; + + // TODO use arc + /* + cairo_arc(handle, origx, origy, size, sin, cos); + */ + + cairo_move_to(handle, x + origx, y + origy); + + for (uint i=1; i -void Triangle::_draw(const bool outline) +void Circle::draw(const GraphicsContext& context) { - notImplemented("Triangle::draw"); -} + cairo_t* const handle = ((const CairoGraphicsContext&)context).handle; -// ----------------------------------------------------------------------- -// Rectangle + drawCircle(handle, fPos, fNumSegments, fSize, fSin, fCos, false); +} template -void Rectangle::_draw(const bool outline) +void Circle::drawOutline(const GraphicsContext& context, const T lineWidth) { - notImplemented("Rectangle::draw"); -} + DISTRHO_SAFE_ASSERT_RETURN(lineWidth != 0,); -// ----------------------------------------------------------------------- -// Possible template data types + cairo_t* const handle = ((const CairoGraphicsContext&)context).handle; -template class Point; -template class Point; -template class Point; -template class Point; -template class Point; -template class Point; + cairo_set_line_width(handle, lineWidth); + drawCircle(handle, fPos, fNumSegments, fSize, fSin, fCos, true); +} -template class Size; -template class Size; -template class Size; -template class Size; -template class Size; -template class Size; +template +void Circle::draw() +{ + notImplemented("Circle::draw"); +} -template class Line; -template class Line; -template class Line; -template class Line; -template class Line; -template class Line; +template +void Circle::drawOutline() +{ + notImplemented("Circle::drawOutline"); +} template class Circle; template class Circle; @@ -93,6 +160,60 @@ template class Circle; template class Circle; template class Circle; +// ----------------------------------------------------------------------- +// Triangle + +template +static void drawTriangle(cairo_t* const handle, + const Point& pos1, + const Point& pos2, + const Point& pos3, + const bool outline) +{ + DISTRHO_SAFE_ASSERT_RETURN(pos1 != pos2 && pos1 != pos3,); + + cairo_move_to(handle, pos1.getX(), pos1.getY()); + cairo_line_to(handle, pos2.getX(), pos2.getY()); + cairo_line_to(handle, pos3.getX(), pos3.getY()); + cairo_line_to(handle, pos1.getX(), pos1.getY()); + + if (outline) + cairo_stroke(handle); + else + cairo_fill(handle); +} + +template +void Triangle::draw(const GraphicsContext& context) +{ + cairo_t* const handle = ((const CairoGraphicsContext&)context).handle; + + drawTriangle(handle, pos1, pos2, pos3, false); +} + +template +void Triangle::drawOutline(const GraphicsContext& context, const T lineWidth) +{ + DISTRHO_SAFE_ASSERT_RETURN(lineWidth != 0,); + + cairo_t* const handle = ((const CairoGraphicsContext&)context).handle; + + cairo_set_line_width(handle, lineWidth); + drawTriangle(handle, pos1, pos2, pos3, true); +} + +template +void Triangle::draw() +{ + notImplemented("Triangle::draw"); +} + +template +void Triangle::drawOutline() +{ + notImplemented("Triangle::drawOutline"); +} + template class Triangle; template class Triangle; template class Triangle; @@ -100,6 +221,54 @@ template class Triangle; template class Triangle; template class Triangle; +// ----------------------------------------------------------------------- +// Rectangle + +template +static void drawRectangle(cairo_t* const handle, const Rectangle& rect, const bool outline) +{ + cairo_rectangle(handle, rect.getX(), rect.getY(), rect.getWidth(), rect.getHeight()); + + if (outline) + cairo_stroke(handle); + else + cairo_fill(handle); +} + +template +void Rectangle::draw(const GraphicsContext& context) +{ + DISTRHO_SAFE_ASSERT_RETURN(isValid(),); + + cairo_t* const handle = ((const CairoGraphicsContext&)context).handle; + + drawRectangle(handle, *this, false); +} + +template +void Rectangle::drawOutline(const GraphicsContext& context, const T lineWidth) +{ + DISTRHO_SAFE_ASSERT_RETURN(isValid(),); + DISTRHO_SAFE_ASSERT_RETURN(lineWidth != 0,); + + cairo_t* const handle = ((const CairoGraphicsContext&)context).handle; + + cairo_set_line_width(handle, lineWidth); + drawRectangle(handle, *this, true); +} + +template +void Rectangle::draw() +{ + notImplemented("Rectangle::draw"); +} + +template +void Rectangle::drawOutline() +{ + notImplemented("Rectangle::drawOutline"); +} + template class Rectangle; template class Rectangle; template class Rectangle; @@ -107,6 +276,529 @@ template class Rectangle; template class Rectangle; template class Rectangle; +// ----------------------------------------------------------------------- +// CairoImage + +static cairo_format_t asCairoImageFormat(const ImageFormat format) noexcept +{ + switch (format) + { + case kImageFormatNull: + break; + case kImageFormatGrayscale: + return CAIRO_FORMAT_A8; + case kImageFormatBGR: + case kImageFormatRGB: + return CAIRO_FORMAT_RGB24; + case kImageFormatBGRA: + case kImageFormatRGBA: + return CAIRO_FORMAT_ARGB32; + } + + return CAIRO_FORMAT_INVALID; +} + +/* +static ImageFormat asCairoImageFormat(const cairo_format_t format) noexcept +{ + switch (format) + { + case CAIRO_FORMAT_INVALID: + break; + case CAIRO_FORMAT_ARGB32: + break; + case CAIRO_FORMAT_RGB24: + break; + case CAIRO_FORMAT_A8: + break; + case CAIRO_FORMAT_A1: + break; + case CAIRO_FORMAT_RGB16_565: + break; + case CAIRO_FORMAT_RGB30: + break; + } + + return kImageFormatNull; +} +*/ + +CairoImage::CairoImage() + : ImageBase(), + surface(nullptr), + surfacedata(nullptr), + datarefcount(nullptr) {} + +CairoImage::CairoImage(const char* const rdata, const uint w, const uint h, const ImageFormat fmt) + : ImageBase(rdata, w, h, fmt), + surface(nullptr), + surfacedata(nullptr), + datarefcount(nullptr) +{ + loadFromMemory(rdata, w, h, fmt); +} + +CairoImage::CairoImage(const char* const rdata, const Size& s, const ImageFormat fmt) + : ImageBase(rdata, s, fmt), + surface(nullptr), + surfacedata(nullptr), + datarefcount(nullptr) +{ + loadFromMemory(rdata, s, fmt); +} + +CairoImage::CairoImage(const CairoImage& image) + : ImageBase(image.rawData, image.size, image.format), + surface(cairo_surface_reference(image.surface)), + surfacedata(image.surfacedata), + datarefcount(image.datarefcount) +{ + if (datarefcount != nullptr) + ++(*datarefcount); +} + +CairoImage::~CairoImage() +{ + cairo_surface_destroy(surface); + + if (datarefcount != nullptr && --(*datarefcount) == 0) + { + std::free(surfacedata); + std::free(datarefcount); + } +} + +void CairoImage::loadFromMemory(const char* const rdata, const Size& s, const ImageFormat fmt) noexcept +{ + const cairo_format_t cairoformat = asCairoImageFormat(fmt); + const int width = static_cast(s.getWidth()); + const int height = static_cast(s.getHeight()); + const int stride = cairo_format_stride_for_width(cairoformat, width); + + uchar* const newdata = (uchar*)std::malloc(static_cast(width * height * stride * 4)); + DISTRHO_SAFE_ASSERT_RETURN(newdata != nullptr,); + + cairo_surface_t* const newsurface = cairo_image_surface_create_for_data(newdata, cairoformat, width, height, stride); + DISTRHO_SAFE_ASSERT_RETURN(newsurface != nullptr,); + DISTRHO_SAFE_ASSERT_RETURN(s.getWidth() == cairo_image_surface_get_width(newsurface),); + DISTRHO_SAFE_ASSERT_RETURN(s.getHeight() == cairo_image_surface_get_height(newsurface),); + + cairo_surface_destroy(surface); + + if (datarefcount != nullptr && --(*datarefcount) == 0) + std::free(surfacedata); + else + datarefcount = (int*)malloc(sizeof(*datarefcount)); + + surface = newsurface; + surfacedata = newdata; + *datarefcount = 1; + + switch (fmt) + { + case kImageFormatNull: + break; + case kImageFormatGrayscale: + // Grayscale to A8 + // TODO + break; + case kImageFormatBGR: + // BGR8 to CAIRO_FORMAT_RGB24 + for (int h = 0; h < height; ++h) + { + for (int w = 0; w < width; ++w) + { + newdata[h*width*4+w*4+0] = static_cast(rdata[h*width*3+w*3+0]); + newdata[h*width*4+w*4+1] = static_cast(rdata[h*width*3+w*3+1]); + newdata[h*width*4+w*4+2] = static_cast(rdata[h*width*3+w*3+2]); + newdata[h*width*4+w*4+3] = 0; + } + } + break; + case kImageFormatBGRA: + // BGRA8 to CAIRO_FORMAT_ARGB32 + // FIXME something is wrong here... + for (int h = 0, t; h < height; ++h) + { + for (int w = 0; w < width; ++w) + { + if ((t = rdata[h*width*4+w*4+3]) != 0) + { + newdata[h*width*4+w*4+0] = static_cast(rdata[h*width*4+w*4+0]); + newdata[h*width*4+w*4+1] = static_cast(rdata[h*width*4+w*4+1]); + newdata[h*width*4+w*4+2] = static_cast(rdata[h*width*4+w*4+2]); + newdata[h*width*4+w*4+3] = static_cast(t); + } + else + { + // make all pixels zero, cairo does not render full transparency otherwise + memset(&newdata[h*width*4+w*4], 0, 4); + } + } + } + break; + case kImageFormatRGB: + // RGB8 to CAIRO_FORMAT_RGB24 + // TODO + break; + case kImageFormatRGBA: + // RGBA8 to CAIRO_FORMAT_ARGB32 + // TODO + break; + } + + ImageBase::loadFromMemory(rdata, s, fmt); +} + +// const GraphicsContext& context +void CairoImage::loadFromPNG(const char* const pngData, const uint pngSize) noexcept +{ + struct PngReaderData + { + const char* dataPtr; + uint sizeLeft; + + static cairo_status_t read(void* const closure, uchar* const data, const uint length) noexcept + { + PngReaderData& readerData = *reinterpret_cast(closure); + + if (readerData.sizeLeft < length) + return CAIRO_STATUS_READ_ERROR; + + std::memcpy(data, readerData.dataPtr, length); + readerData.dataPtr += length; + readerData.sizeLeft -= length; + return CAIRO_STATUS_SUCCESS; + } + }; + + PngReaderData readerData; + readerData.dataPtr = pngData; + readerData.sizeLeft = pngSize; + + cairo_surface_t* const newsurface = cairo_image_surface_create_from_png_stream(PngReaderData::read, &readerData); + DISTRHO_SAFE_ASSERT_RETURN(newsurface != nullptr,); + + const int newwidth = cairo_image_surface_get_width(newsurface); + const int newheight = cairo_image_surface_get_height(newsurface); + DISTRHO_SAFE_ASSERT_INT_RETURN(newwidth > 0, newwidth,); + DISTRHO_SAFE_ASSERT_INT_RETURN(newheight > 0, newheight,); + + cairo_surface_destroy(surface); + + if (datarefcount != nullptr && --(*datarefcount) == 0) + std::free(surfacedata); + else + datarefcount = (int*)malloc(sizeof(*datarefcount)); + + surface = newsurface; + surfacedata = nullptr; // cairo_image_surface_get_data(newsurface); + *datarefcount = 1; + + rawData = nullptr; + format = kImageFormatNull; // asCairoImageFormat(cairo_image_surface_get_format(newsurface)); + size = Size(static_cast(newwidth), static_cast(newheight)); +} + +void CairoImage::drawAt(const GraphicsContext& context, const Point& pos) +{ + if (surface == nullptr) + return; + + cairo_t* const handle = ((const CairoGraphicsContext&)context).handle; + + cairo_set_source_surface(handle, surface, pos.getX(), pos.getY()); + cairo_paint(handle); +} + +CairoImage& CairoImage::operator=(const CairoImage& image) noexcept +{ + cairo_surface_t* newsurface = cairo_surface_reference(image.surface); + cairo_surface_destroy(surface); + + if (datarefcount != nullptr && --(*datarefcount) == 0) + { + std::free(surfacedata); + std::free(datarefcount); + } + + surface = newsurface; + rawData = image.rawData; + size = image.size; + format = image.format; + surfacedata = image.surfacedata; + datarefcount = image.datarefcount; + + if (datarefcount != nullptr) + ++(*datarefcount); + + return *this; +} + +// ----------------------------------------------------------------------- +// CairoSubWidget + +template <> +CairoBaseWidget::CairoBaseWidget(Widget* const parent) + : SubWidget(parent) {} + +template class CairoBaseWidget; + +// ----------------------------------------------------------------------- +// CairoTopLevelWidget + +template <> +CairoBaseWidget::CairoBaseWidget(Window& windowToMapTo) + : TopLevelWidget(windowToMapTo) {} + +template class CairoBaseWidget; + +// ----------------------------------------------------------------------- +// CairoStandaloneWindow + +template <> +CairoBaseWidget::CairoBaseWidget(Application& app) + : StandaloneWindow(app) {} + +template <> +CairoBaseWidget::CairoBaseWidget(Application& app, Window& parentWindow) + : StandaloneWindow(app, parentWindow) {} + +template class CairoBaseWidget; + +// ----------------------------------------------------------------------- +// ImageBaseAboutWindow + +#if 0 +template <> +void ImageBaseAboutWindow::onDisplay() +{ + img.draw(getGraphicsContext()); +} +#endif + +template class ImageBaseAboutWindow; + +// ----------------------------------------------------------------------- +// ImageBaseButton + +template class ImageBaseButton; + +// ----------------------------------------------------------------------- +// ImageBaseKnob + +template <> +void ImageBaseKnob::PrivateData::init() +{ + alwaysRepaint = true; + cairoSurface = nullptr; +} + +template <> +void ImageBaseKnob::PrivateData::cleanup() +{ + cairo_surface_destroy((cairo_surface_t*)cairoSurface); + cairoSurface = nullptr; +} + +/** + Get the pixel size in bytes. + @return pixel size, or 0 if the format is unknown, or pixels are not aligned to bytes. +*/ +static int getBytesPerPixel(const cairo_format_t format) noexcept +{ + switch (format) + { + case CAIRO_FORMAT_ARGB32: + case CAIRO_FORMAT_RGB24: + case CAIRO_FORMAT_RGB30: + return 4; + case CAIRO_FORMAT_RGB16_565: + return 2; + case CAIRO_FORMAT_A8: + return 1; + case CAIRO_FORMAT_A1: + return 0; + default: + DISTRHO_SAFE_ASSERT(false); + return 0; + } +} + +static cairo_surface_t* getRegion(cairo_surface_t* origsurface, int x, int y, int width, int height) noexcept +{ + const cairo_format_t format = cairo_image_surface_get_format(origsurface); + const int bpp = getBytesPerPixel(format); + + if (bpp == 0) + return nullptr; + + const int fullWidth = cairo_image_surface_get_width(origsurface); + const int fullHeight = cairo_image_surface_get_height(origsurface); + const int stride = cairo_image_surface_get_stride(origsurface); + uchar* const fullData = cairo_image_surface_get_data(origsurface); + + x = (x < fullWidth) ? x : fullWidth; + y = (y < fullHeight) ? y : fullHeight; + width = (x + width < fullWidth) ? width : (fullWidth - x); + height = (x + height < fullHeight) ? height : (fullHeight - x); + + uchar* const data = fullData + (x * bpp + y * stride); + return cairo_image_surface_create_for_data(data, format, width, height, stride); +} + +template <> +void ImageBaseKnob::onDisplay() +{ + const GraphicsContext& context(getGraphicsContext()); + cairo_t* const handle = ((const CairoGraphicsContext&)context).handle; + const double normValue = ((pData->usingLog ? pData->invlogscale(pData->value) : pData->value) - pData->minimum) + / (pData->maximum - pData->minimum); + + cairo_surface_t* surface = (cairo_surface_t*)pData->cairoSurface; + + if (! pData->isReady) + { + const int layerW = static_cast(pData->imgLayerWidth); + const int layerH = static_cast(pData->imgLayerHeight); + int layerNum = 0; + + if (pData->rotationAngle == 0) + layerNum = static_cast(normValue * static_cast(pData->imgLayerCount - 1) + 0.5); + + const int layerX = pData->isImgVertical ? 0 : layerNum * layerW; + const int layerY = !pData->isImgVertical ? 0 : layerNum * layerH; + + cairo_surface_t* newsurface; + + if (pData->rotationAngle == 0) + { + newsurface = getRegion(pData->image.getSurface(), layerX, layerY, layerW, layerH); + } + else + { + newsurface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, layerW, layerH); + cairo_t* const cr = cairo_create(newsurface); + cairo_translate(cr, 0.5 * layerW, 0.5 * layerH); + cairo_rotate(cr, normValue * pData->rotationAngle * (M_PI / 180)); + cairo_set_source_surface(cr, pData->image.getSurface(), -0.5 * layerW, -0.5 * layerH); + cairo_paint(cr); + cairo_destroy(cr); + } + + DISTRHO_SAFE_ASSERT_RETURN(newsurface != nullptr,); + + cairo_surface_destroy(surface); + pData->cairoSurface = surface = newsurface; + pData->isReady = true; + } + + if (surface != nullptr) + { + cairo_set_source_surface(handle, surface, 0, 0); + cairo_paint(handle); + } +} + +template class ImageBaseKnob; + +// ----------------------------------------------------------------------- +// ImageBaseSlider + +template class ImageBaseSlider; + +// ----------------------------------------------------------------------- +// ImageBaseSwitch + +template class ImageBaseSwitch; + +// ----------------------------------------------------------------------- + +void SubWidget::PrivateData::display(const uint width, const uint height, const double autoScaleFactor) +{ + cairo_t* const handle = static_cast(self->getGraphicsContext()).handle; + + bool needsResetClip = false; + + cairo_matrix_t matrix; + cairo_get_matrix(handle, &matrix); + + if (needsFullViewportForDrawing || (absolutePos.isZero() && self->getSize() == Size(width, height))) + { + // full viewport size + cairo_translate(handle, 0, 0); + } + else if (needsViewportScaling) + { + // limit viewport to widget bounds + // NOTE only used for nanovg for now, which is not relevant here + cairo_translate(handle, 0, 0); + } + else + { + // set viewport pos + cairo_translate(handle, absolutePos.getX(), absolutePos.getY()); + + // then cut the outer bounds + cairo_rectangle(handle, + 0, + 0, + std::round(self->getWidth() * autoScaleFactor), + std::round(self->getHeight() * autoScaleFactor)); + + cairo_clip(handle); + needsResetClip = true; + } + + // display widget + self->onDisplay(); + + if (needsResetClip) + cairo_reset_clip(handle); + + cairo_set_matrix(handle, &matrix); + + selfw->pData->displaySubWidgets(width, height, autoScaleFactor); +} + +// ----------------------------------------------------------------------- + +void TopLevelWidget::PrivateData::display() +{ + if (! selfw->pData->visible) + return; + + const Size size(window.getSize()); + const uint width = size.getWidth(); + const uint height = size.getHeight(); + + const double autoScaleFactor = window.pData->autoScaleFactor; + + // FIXME anything needed here? +#if 0 + // full viewport size + if (window.pData->autoScaling) + glViewport(0, -(height * autoScaleFactor - height), width * autoScaleFactor, height * autoScaleFactor); + else + glViewport(0, 0, width, height); +#endif + + // main widget drawing + self->onDisplay(); + + // now draw subwidgets if there are any + selfw->pData->displaySubWidgets(width, height, autoScaleFactor); +} + +// ----------------------------------------------------------------------- + +const GraphicsContext& Window::PrivateData::getGraphicsContext() const noexcept +{ + GraphicsContext& context((GraphicsContext&)graphicsContext); + ((CairoGraphicsContext&)context).handle = (cairo_t*)puglGetContext(view); + return context; +} + // ----------------------------------------------------------------------- END_NAMESPACE_DGL diff --git a/dgl/src/Color.cpp b/dgl/src/Color.cpp index 3fc570ca..07036490 100644 --- a/dgl/src/Color.cpp +++ b/dgl/src/Color.cpp @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2016 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -16,10 +16,6 @@ #include "../Color.hpp" -#ifndef HAVE_DCAIRO -#include "nanovg/nanovg.h" -#endif - START_NAMESPACE_DGL // ----------------------------------------------------------------------- @@ -61,27 +57,27 @@ static uchar getFixedRange2(const float& value) return 0; if (value2 >= 255.0f) return 255; - return static_cast(value2); + return static_cast(value2 + 0.5f); } // ----------------------------------------------------------------------- Color::Color() noexcept - : red(1.0f), - green(1.0f), - blue(1.0f), + : red(0.0f), + green(0.0f), + blue(0.0f), alpha(1.0f) {} -Color::Color(int r, int g, int b, int a) noexcept +Color::Color(const int r, const int g, const int b, const float a) noexcept : red(static_cast(r)/255.0f), green(static_cast(g)/255.0f), blue(static_cast(b)/255.0f), - alpha(static_cast(a)/255.0f) + alpha(a) { fixBounds(); } -Color::Color(float r, float g, float b, float a) noexcept +Color::Color(const float r, const float g, const float b, const float a) noexcept : red(r), green(g), blue(b), @@ -109,7 +105,7 @@ Color& Color::operator=(const Color& color) noexcept return *this; } -Color::Color(const Color& color1, const Color& color2, float u) noexcept +Color::Color(const Color& color1, const Color& color2, const float u) noexcept : red(color1.red), green(color1.green), blue(color1.blue), @@ -136,65 +132,66 @@ Color Color::fromHSL(float hue, float saturation, float lightness, float alpha) return col; } -Color Color::fromHTML(const char* rgb, float alpha) +Color Color::fromHTML(const char* rgb, const float alpha) noexcept { Color fallback; DISTRHO_SAFE_ASSERT_RETURN(rgb != nullptr && rgb[0] != '\0', fallback); - if (rgb[0] == '#') ++rgb; + if (rgb[0] == '#') + ++rgb; DISTRHO_SAFE_ASSERT_RETURN(rgb[0] != '\0', fallback); - std::size_t rgblen(std::strlen(rgb)); + std::size_t rgblen = std::strlen(rgb); DISTRHO_SAFE_ASSERT_RETURN(rgblen == 3 || rgblen == 6, fallback); - char rgbtmp[3] = { '\0', '\0', '\0' }; + char rgbtmp[5] = { '0', 'x', '\0', '\0', '\0' }; int r, g, b; if (rgblen == 3) { - rgbtmp[0] = rgb[0]; - r = static_cast(std::strtol(rgbtmp, nullptr, 16)); + rgbtmp[2] = rgb[0]; + r = static_cast(std::strtol(rgbtmp, nullptr, 16)) * 17; - rgbtmp[0] = rgb[1]; - g = static_cast(std::strtol(rgbtmp, nullptr, 16)); + rgbtmp[2] = rgb[1]; + g = static_cast(std::strtol(rgbtmp, nullptr, 16)) * 17; - rgbtmp[0] = rgb[2]; - b = static_cast(std::strtol(rgbtmp, nullptr, 16)); + rgbtmp[2] = rgb[2]; + b = static_cast(std::strtol(rgbtmp, nullptr, 16)) * 17; } else { - rgbtmp[0] = rgb[0]; - rgbtmp[1] = rgb[1]; + rgbtmp[2] = rgb[0]; + rgbtmp[3] = rgb[1]; r = static_cast(std::strtol(rgbtmp, nullptr, 16)); - rgbtmp[0] = rgb[2]; - rgbtmp[1] = rgb[3]; + rgbtmp[2] = rgb[2]; + rgbtmp[3] = rgb[3]; g = static_cast(std::strtol(rgbtmp, nullptr, 16)); - rgbtmp[0] = rgb[4]; - rgbtmp[1] = rgb[5]; + rgbtmp[2] = rgb[4]; + rgbtmp[3] = rgb[5]; b = static_cast(std::strtol(rgbtmp, nullptr, 16)); } - return Color(r, g, b, static_cast(getFixedRange(alpha)*255.0f)); + return Color(r, g, b, alpha); } void Color::interpolate(const Color& other, float u) noexcept { fixRange(u); - const float oneMinusU(1.0f - u); + const float oneMinusU = 1.0f - u; - red = red * oneMinusU + other.red * u; - green = green * oneMinusU + other.green * u; - blue = blue * oneMinusU + other.blue * u; - alpha = alpha * oneMinusU + other.alpha * u; + red = (red * oneMinusU) + (other.red * u); + green = (green * oneMinusU) + (other.green * u); + blue = (blue * oneMinusU) + (other.blue * u); + alpha = (alpha * oneMinusU) + (other.alpha * u); fixBounds(); } // ----------------------------------------------------------------------- -bool Color::isEqual(const Color& color, bool withAlpha) noexcept +bool Color::isEqual(const Color& color, const bool withAlpha) noexcept { const uchar r1 = getFixedRange2(rgba[0]); const uchar g1 = getFixedRange2(rgba[1]); @@ -212,7 +209,7 @@ bool Color::isEqual(const Color& color, bool withAlpha) noexcept return (r1 == r2 && g1 == g2 && b1 == b2); } -bool Color::isNotEqual(const Color& color, bool withAlpha) noexcept +bool Color::isNotEqual(const Color& color, const bool withAlpha) noexcept { const uchar r1 = getFixedRange2(rgba[0]); const uchar g1 = getFixedRange2(rgba[1]); diff --git a/dgl/src/Common.hpp b/dgl/src/Common.hpp index fd1070a0..b0f86629 100644 --- a/dgl/src/Common.hpp +++ b/dgl/src/Common.hpp @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2016 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -17,12 +17,13 @@ #ifndef DGL_COMMON_HPP_INCLUDED #define DGL_COMMON_HPP_INCLUDED -#include "../ImageWidgets.hpp" +#include "../ImageBaseWidgets.hpp" START_NAMESPACE_DGL // ----------------------------------------------------------------------- +template struct ButtonImpl { enum State { kStateNormal = 0, @@ -32,11 +33,11 @@ struct ButtonImpl { int button; int state; - Widget* self; + ImageBaseButton* const self; - ImageButton::Callback* callback_img; + typename ImageBaseButton::Callback* callback_img; - ButtonImpl(Widget* const s) noexcept + explicit ButtonImpl(ImageBaseButton* const s) noexcept : button(-1), state(kStateNormal), self(s), @@ -66,7 +67,7 @@ struct ButtonImpl { self->repaint(); if (callback_img != nullptr) - callback_img->imageButtonClicked((ImageButton*)self, button2); + callback_img->imageButtonClicked(self, button2); return true; } @@ -74,7 +75,7 @@ struct ButtonImpl { // button was pressed, wait for release if (ev.press && self->contains(ev.pos)) { - button = ev.button; + button = static_cast(ev.button); state = kStateDown; self->repaint(); return true; @@ -114,7 +115,70 @@ struct ButtonImpl { } DISTRHO_PREVENT_HEAP_ALLOCATION - DISTRHO_DECLARE_NON_COPY_STRUCT(ButtonImpl) + DISTRHO_DECLARE_NON_COPYABLE(ButtonImpl) +}; + +// ----------------------------------------------------------------------- + +template +struct ImageBaseKnob::PrivateData { + ImageType image; + float minimum; + float maximum; + float step; + float value; + float valueDef; + float valueTmp; + bool usingDefault; + bool usingLog; + Orientation orientation; + + int rotationAngle; + bool dragging; + double lastX; + double lastY; + + Callback* callback; + + bool alwaysRepaint; + bool isImgVertical; + uint imgLayerWidth; + uint imgLayerHeight; + uint imgLayerCount; + bool isReady; + + union { + uint glTextureId; + void* cairoSurface; + }; + + explicit PrivateData(const ImageType& img, const Orientation o); + explicit PrivateData(PrivateData* const other); + void assignFrom(PrivateData* const other); + + ~PrivateData() + { + cleanup(); + } + + void init(); + void cleanup(); + + inline float logscale(const float v) const + { + const float b = std::log(maximum/minimum)/(maximum-minimum); + const float a = maximum/std::exp(maximum*b); + return a * std::exp(b*v); + } + + inline float invlogscale(const float v) const + { + const float b = std::log(maximum/minimum)/(maximum-minimum); + const float a = maximum/std::exp(maximum*b); + return std::log(v/a)/b; + } + + DISTRHO_DECLARE_NON_COPYABLE(PrivateData) }; // ----------------------------------------------------------------------- diff --git a/dgl/src/Geometry.cpp b/dgl/src/Geometry.cpp index d133985f..8b1ba7d1 100644 --- a/dgl/src/Geometry.cpp +++ b/dgl/src/Geometry.cpp @@ -27,129 +27,129 @@ static const float M_2PIf = 3.14159265358979323846f*2.0f; template Point::Point() noexcept - : fX(0), - fY(0) {} + : x(0), + y(0) {} template -Point::Point(const T& x, const T& y) noexcept - : fX(x), - fY(y) {} +Point::Point(const T& x2, const T& y2) noexcept + : x(x2), + y(y2) {} template Point::Point(const Point& pos) noexcept - : fX(pos.fX), - fY(pos.fY) {} + : x(pos.x), + y(pos.y) {} template const T& Point::getX() const noexcept { - return fX; + return x; } template const T& Point::getY() const noexcept { - return fY; + return y; } template -void Point::setX(const T& x) noexcept +void Point::setX(const T& x2) noexcept { - fX = x; + x = x2; } template -void Point::setY(const T& y) noexcept +void Point::setY(const T& y2) noexcept { - fY = y; + y = y2; } template -void Point::setPos(const T& x, const T& y) noexcept +void Point::setPos(const T& x2, const T& y2) noexcept { - fX = x; - fY = y; + x = x2; + y = y2; } template void Point::setPos(const Point& pos) noexcept { - fX = pos.fX; - fY = pos.fY; + x = pos.x; + y = pos.y; } template -void Point::moveBy(const T& x, const T& y) noexcept +void Point::moveBy(const T& x2, const T& y2) noexcept { - fX = static_cast(fX+x); - fY = static_cast(fY+y); + x = static_cast(x+x2); + y = static_cast(y+y2); } template void Point::moveBy(const Point& pos) noexcept { - fX = static_cast(fX+pos.fX); - fY = static_cast(fY+pos.fY); + x = static_cast(x+pos.x); + y = static_cast(y+pos.y); } template bool Point::isZero() const noexcept { - return fX == 0 && fY == 0; + return x == 0 && y == 0; } template bool Point::isNotZero() const noexcept { - return fX != 0 || fY != 0; + return x != 0 || y != 0; } template Point Point::operator+(const Point& pos) noexcept { - return Point(fX+pos.fX, fY+pos.fY); + return Point(x+pos.x, y+pos.y); } template Point Point::operator-(const Point& pos) noexcept { - return Point(fX-pos.fX, fY-pos.fY); + return Point(x-pos.x, y-pos.y); } template Point& Point::operator=(const Point& pos) noexcept { - fX = pos.fX; - fY = pos.fY; + x = pos.x; + y = pos.y; return *this; } template Point& Point::operator+=(const Point& pos) noexcept { - fX = static_cast(fX+pos.fX); - fY = static_cast(fY+pos.fY); + x = static_cast(x+pos.x); + y = static_cast(y+pos.y); return *this; } template Point& Point::operator-=(const Point& pos) noexcept { - fX = static_cast(fX-pos.fX); - fY = static_cast(fY-pos.fY); + x = static_cast(x-pos.x); + y = static_cast(y-pos.y); return *this; } template bool Point::operator==(const Point& pos) const noexcept { - return (fX == pos.fX && fY == pos.fY); + return (x == pos.x && y == pos.y); } template bool Point::operator!=(const Point& pos) const noexcept { - return (fX != pos.fX || fY != pos.fY); + return (x != pos.x || y != pos.y); } // ----------------------------------------------------------------------- @@ -246,6 +246,27 @@ bool Size::isInvalid() const noexcept return fWidth <= 0 || fHeight <= 0; } +template +Size Size::toInt() const noexcept +{ + return Size(static_cast(fWidth), + static_cast(fHeight)); +} + +template<> +Size Size::toInt() const noexcept +{ + return Size(static_cast(fWidth + 0.5), + static_cast(fHeight + 0.5)); +} + +template<> +Size Size::toInt() const noexcept +{ + return Size(static_cast(fWidth + 0.5f), + static_cast(fHeight + 0.5f)); +} + template Size Size::operator+(const Size& size) noexcept { @@ -315,162 +336,162 @@ bool Size::operator!=(const Size& size) const noexcept template Line::Line() noexcept - : fPosStart(0, 0), - fPosEnd(0, 0) {} + : posStart(0, 0), + posEnd(0, 0) {} template Line::Line(const T& startX, const T& startY, const T& endX, const T& endY) noexcept - : fPosStart(startX, startY), - fPosEnd(endX, endY) {} + : posStart(startX, startY), + posEnd(endX, endY) {} template Line::Line(const T& startX, const T& startY, const Point& endPos) noexcept - : fPosStart(startX, startY), - fPosEnd(endPos) {} + : posStart(startX, startY), + posEnd(endPos) {} template Line::Line(const Point& startPos, const T& endX, const T& endY) noexcept - : fPosStart(startPos), - fPosEnd(endX, endY) {} + : posStart(startPos), + posEnd(endX, endY) {} template Line::Line(const Point& startPos, const Point& endPos) noexcept - : fPosStart(startPos), - fPosEnd(endPos) {} + : posStart(startPos), + posEnd(endPos) {} template Line::Line(const Line& line) noexcept - : fPosStart(line.fPosStart), - fPosEnd(line.fPosEnd) {} + : posStart(line.posStart), + posEnd(line.posEnd) {} template const T& Line::getStartX() const noexcept { - return fPosStart.fX; + return posStart.x; } template const T& Line::getStartY() const noexcept { - return fPosStart.fY; + return posStart.y; } template const T& Line::getEndX() const noexcept { - return fPosEnd.fX; + return posEnd.x; } template const T& Line::getEndY() const noexcept { - return fPosEnd.fY; + return posEnd.y; } template const Point& Line::getStartPos() const noexcept { - return fPosStart; + return posStart; } template const Point& Line::getEndPos() const noexcept { - return fPosEnd; + return posEnd; } template void Line::setStartX(const T& x) noexcept { - fPosStart.fX = x; + posStart.x = x; } template void Line::setStartY(const T& y) noexcept { - fPosStart.fY = y; + posStart.y = y; } template void Line::setStartPos(const T& x, const T& y) noexcept { - fPosStart = Point(x, y); + posStart = Point(x, y); } template void Line::setStartPos(const Point& pos) noexcept { - fPosStart = pos; + posStart = pos; } template void Line::setEndX(const T& x) noexcept { - fPosEnd.fX = x; + posEnd.x = x; } template void Line::setEndY(const T& y) noexcept { - fPosEnd.fY = y; + posEnd.y = y; } template void Line::setEndPos(const T& x, const T& y) noexcept { - fPosEnd = Point(x, y); + posEnd = Point(x, y); } template void Line::setEndPos(const Point& pos) noexcept { - fPosEnd = pos; + posEnd = pos; } template void Line::moveBy(const T& x, const T& y) noexcept { - fPosStart.moveBy(x, y); - fPosEnd.moveBy(x, y); + posStart.moveBy(x, y); + posEnd.moveBy(x, y); } template void Line::moveBy(const Point& pos) noexcept { - fPosStart.moveBy(pos); - fPosEnd.moveBy(pos); + posStart.moveBy(pos); + posEnd.moveBy(pos); } template bool Line::isNull() const noexcept { - return fPosStart == fPosEnd; + return posStart == posEnd; } template bool Line::isNotNull() const noexcept { - return fPosStart != fPosEnd; + return posStart != posEnd; } template Line& Line::operator=(const Line& line) noexcept { - fPosStart = line.fPosStart; - fPosEnd = line.fPosEnd; + posStart = line.posStart; + posEnd = line.posEnd; return *this; } template bool Line::operator==(const Line& line) const noexcept { - return (fPosStart == line.fPosStart && fPosEnd == line.fPosEnd); + return (posStart == line.posStart && posEnd == line.posEnd); } template bool Line::operator!=(const Line& line) const noexcept { - return (fPosStart != line.fPosStart || fPosEnd != line.fPosEnd); + return (posStart != line.posStart || posEnd != line.posEnd); } // ----------------------------------------------------------------------- @@ -524,13 +545,13 @@ Circle::Circle(const Circle& cir) noexcept template const T& Circle::getX() const noexcept { - return fPos.fX; + return fPos.x; } template const T& Circle::getY() const noexcept { - return fPos.fY; + return fPos.y; } template @@ -542,20 +563,20 @@ const Point& Circle::getPos() const noexcept template void Circle::setX(const T& x) noexcept { - fPos.fX = x; + fPos.x = x; } template void Circle::setY(const T& y) noexcept { - fPos.fY = y; + fPos.y = y; } template void Circle::setPos(const T& x, const T& y) noexcept { - fPos.fX = x; - fPos.fY = y; + fPos.x = x; + fPos.y = y; } template @@ -599,18 +620,6 @@ void Circle::setNumSegments(const uint num) fSin = std::sin(fTheta); } -template -void Circle::draw() -{ - _draw(false); -} - -template -void Circle::drawOutline() -{ - _draw(true); -} - template Circle& Circle::operator=(const Circle& cir) noexcept { @@ -640,83 +649,71 @@ bool Circle::operator!=(const Circle& cir) const noexcept template Triangle::Triangle() noexcept - : fPos1(0, 0), - fPos2(0, 0), - fPos3(0, 0) {} + : pos1(0, 0), + pos2(0, 0), + pos3(0, 0) {} template Triangle::Triangle(const T& x1, const T& y1, const T& x2, const T& y2, const T& x3, const T& y3) noexcept - : fPos1(x1, y1), - fPos2(x2, y2), - fPos3(x3, y3) {} + : pos1(x1, y1), + pos2(x2, y2), + pos3(x3, y3) {} template -Triangle::Triangle(const Point& pos1, const Point& pos2, const Point& pos3) noexcept - : fPos1(pos1), - fPos2(pos2), - fPos3(pos3) {} +Triangle::Triangle(const Point& p1, const Point& p2, const Point& p3) noexcept + : pos1(p1), + pos2(p2), + pos3(p3) {} template Triangle::Triangle(const Triangle& tri) noexcept - : fPos1(tri.fPos1), - fPos2(tri.fPos2), - fPos3(tri.fPos3) {} + : pos1(tri.pos1), + pos2(tri.pos2), + pos3(tri.pos3) {} template bool Triangle::isNull() const noexcept { - return fPos1 == fPos2 && fPos1 == fPos3; + return pos1 == pos2 && pos1 == pos3; } template bool Triangle::isNotNull() const noexcept { - return fPos1 != fPos2 || fPos1 != fPos3; + return pos1 != pos2 || pos1 != pos3; } template bool Triangle::isValid() const noexcept { - return fPos1 != fPos2 && fPos1 != fPos3; + return pos1 != pos2 && pos1 != pos3; } template bool Triangle::isInvalid() const noexcept { - return fPos1 == fPos2 || fPos1 == fPos3; -} - -template -void Triangle::draw() -{ - _draw(false); -} - -template -void Triangle::drawOutline() -{ - _draw(true); + return pos1 == pos2 || pos1 == pos3; } template Triangle& Triangle::operator=(const Triangle& tri) noexcept { - fPos1 = tri.fPos1; - fPos2 = tri.fPos2; - fPos3 = tri.fPos3; + pos1 = tri.pos1; + pos2 = tri.pos2; + pos3 = tri.pos3; return *this; } template bool Triangle::operator==(const Triangle& tri) const noexcept { - return (fPos1 == tri.fPos1 && fPos2 == tri.fPos2 && fPos3 == tri.fPos3); + return (pos1 == tri.pos1 && pos2 == tri.pos2 && pos3 == tri.pos3); } template bool Triangle::operator!=(const Triangle& tri) const noexcept { - return (fPos1 != tri.fPos1 || fPos2 != tri.fPos2 || fPos3 != tri.fPos3); + return (pos1 != tri.pos1 || pos2 != tri.pos2 || pos3 != tri.pos3); } // ----------------------------------------------------------------------- @@ -724,226 +721,257 @@ bool Triangle::operator!=(const Triangle& tri) const noexcept template Rectangle::Rectangle() noexcept - : fPos(0, 0), - fSize(0, 0) {} + : pos(0, 0), + size(0, 0) {} template -Rectangle::Rectangle(const T& x, const T& y, const T& width, const T& height) noexcept - : fPos(x, y), - fSize(width, height) {} +Rectangle::Rectangle(const T& x, const T& y, const T& w, const T& h) noexcept + : pos(x, y), + size(w, h) {} template -Rectangle::Rectangle(const T& x, const T& y, const Size& size) noexcept - : fPos(x, y), - fSize(size) {} +Rectangle::Rectangle(const T& x, const T& y, const Size& s) noexcept + : pos(x, y), + size(s) {} template -Rectangle::Rectangle(const Point& pos, const T& width, const T& height) noexcept - : fPos(pos), - fSize(width, height) {} +Rectangle::Rectangle(const Point& p, const T& w, const T& h) noexcept + : pos(p), + size(w, h) {} template -Rectangle::Rectangle(const Point& pos, const Size& size) noexcept - : fPos(pos), - fSize(size) {} +Rectangle::Rectangle(const Point& p, const Size& s) noexcept + : pos(p), + size(s) {} template Rectangle::Rectangle(const Rectangle& rect) noexcept - : fPos(rect.fPos), - fSize(rect.fSize) {} + : pos(rect.pos), + size(rect.size) {} template const T& Rectangle::getX() const noexcept { - return fPos.fX; + return pos.x; } template const T& Rectangle::getY() const noexcept { - return fPos.fY; + return pos.y; } template const T& Rectangle::getWidth() const noexcept { - return fSize.fWidth; + return size.fWidth; } template const T& Rectangle::getHeight() const noexcept { - return fSize.fHeight; + return size.fHeight; } template const Point& Rectangle::getPos() const noexcept { - return fPos; + return pos; } template const Size& Rectangle::getSize() const noexcept { - return fSize; + return size; } template void Rectangle::setX(const T& x) noexcept { - fPos.fX = x; + pos.x = x; } template void Rectangle::setY(const T& y) noexcept { - fPos.fY = y; + pos.y = y; } template void Rectangle::setPos(const T& x, const T& y) noexcept { - fPos.fX = x; - fPos.fY = y; + pos.x = x; + pos.y = y; } template -void Rectangle::setPos(const Point& pos) noexcept +void Rectangle::setPos(const Point& pos2) noexcept { - fPos = pos; + pos = pos2; } template void Rectangle::moveBy(const T& x, const T& y) noexcept { - fPos.moveBy(x, y); + pos.moveBy(x, y); } template -void Rectangle::moveBy(const Point& pos) noexcept +void Rectangle::moveBy(const Point& pos2) noexcept { - fPos.moveBy(pos); + pos.moveBy(pos2); } template void Rectangle::setWidth(const T& width) noexcept { - fSize.fWidth = width; + size.fWidth = width; } template void Rectangle::setHeight(const T& height) noexcept { - fSize.fHeight = height; + size.fHeight = height; } template void Rectangle::setSize(const T& width, const T& height) noexcept { - fSize.fWidth = width; - fSize.fHeight = height; + size.fWidth = width; + size.fHeight = height; } template -void Rectangle::setSize(const Size& size) noexcept +void Rectangle::setSize(const Size& size2) noexcept { - fSize = size; + size = size2; } template void Rectangle::growBy(double multiplier) noexcept { - fSize.growBy(multiplier); + size.growBy(multiplier); } template void Rectangle::shrinkBy(double divider) noexcept { - fSize.shrinkBy(divider); + size.shrinkBy(divider); } template -void Rectangle::setRectangle(const Point& pos, const Size& size) noexcept +void Rectangle::setRectangle(const Point& pos2, const Size& size2) noexcept { - fPos = pos; - fSize = size; + pos = pos2; + size = size2; } template void Rectangle::setRectangle(const Rectangle& rect) noexcept { - fPos = rect.fPos; - fSize = rect.fSize; + pos = rect.pos; + size = rect.size; } template bool Rectangle::contains(const T& x, const T& y) const noexcept { - return (x >= fPos.fX && y >= fPos.fY && x <= fPos.fX+fSize.fWidth && y <= fPos.fY+fSize.fHeight); + return (x >= pos.x && y >= pos.y && x <= pos.x+size.fWidth && y <= pos.y+size.fHeight); } template -bool Rectangle::contains(const Point& pos) const noexcept +bool Rectangle::contains(const Point& p) const noexcept { - return contains(pos.fX, pos.fY); + return contains(p.x, p.y); +} + +template +template +bool Rectangle::contains(const Point& p) const noexcept +{ + return (p.x >= pos.x && p.y >= pos.y && p.x <= pos.x+size.fWidth && p.y <= pos.y+size.fHeight); +} + +template<> template<> +bool Rectangle::contains(const Point& p) const noexcept +{ + return (p.x >= pos.x && p.y >= pos.y && p.x <= pos.x+size.fWidth && p.y <= pos.y+size.fHeight); +} + +template<> template<> +bool Rectangle::contains(const Point& p) const noexcept +{ + return (p.x >= pos.x && p.y >= pos.y && p.x <= pos.x+size.fWidth && p.y <= pos.y+size.fHeight); } template bool Rectangle::containsX(const T& x) const noexcept { - return (x >= fPos.fX && x <= fPos.fX + fSize.fWidth); + return (x >= pos.x && x <= pos.x + size.fWidth); } template bool Rectangle::containsY(const T& y) const noexcept { - return (y >= fPos.fY && y <= fPos.fY + fSize.fHeight); + return (y >= pos.y && y <= pos.y + size.fHeight); +} + +template +bool Rectangle::isNull() const noexcept +{ + return size.isNull(); +} + +template +bool Rectangle::isNotNull() const noexcept +{ + return size.isNotNull(); } template -void Rectangle::draw() +bool Rectangle::isValid() const noexcept { - _draw(false); + return size.isValid(); } template -void Rectangle::drawOutline() +bool Rectangle::isInvalid() const noexcept { - _draw(true); + return size.isInvalid(); } template Rectangle& Rectangle::operator=(const Rectangle& rect) noexcept { - fPos = rect.fPos; - fSize = rect.fSize; + pos = rect.pos; + size = rect.size; return *this; } template Rectangle& Rectangle::operator*=(double m) noexcept { - fSize *= m; + size *= m; return *this; } template Rectangle& Rectangle::operator/=(double d) noexcept { - fSize /= d; + size /= d; return *this; } template bool Rectangle::operator==(const Rectangle& rect) const noexcept { - return (fPos == rect.fPos && fSize == rect.fSize); + return (pos == rect.pos && size == rect.size); } template bool Rectangle::operator!=(const Rectangle& rect) const noexcept { - return (fPos != rect.fPos || fSize != rect.fSize); + return (pos != rect.pos || size != rect.size); } // ----------------------------------------------------------------------- diff --git a/dgl/src/Image.cpp b/dgl/src/Image.cpp deleted file mode 100644 index 90596fec..00000000 --- a/dgl/src/Image.cpp +++ /dev/null @@ -1,150 +0,0 @@ -/* - * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2019 Filipe Coelho - * - * Permission to use, copy, modify, and/or distribute this software for any purpose with - * or without fee is hereby granted, provided that the above copyright notice and this - * permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD - * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN - * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER - * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#include "../Image.hpp" - -START_NAMESPACE_DGL - -// ----------------------------------------------------------------------- - -Image::Image() - : ImageBase(), - fFormat(0), - fType(0), - fTextureId(0), - fIsReady(false) -{ - glGenTextures(1, &fTextureId); -} - -Image::Image(const Image& image) - : ImageBase(image), - fFormat(image.fFormat), - fType(image.fType), - fTextureId(0), - fIsReady(false) -{ - glGenTextures(1, &fTextureId); -} - -Image::Image(const char* const rawData, const uint width, const uint height, const GLenum format, const GLenum type) - : ImageBase(rawData, width, height), - fFormat(format), - fType(type), - fTextureId(0), - fIsReady(false) -{ - glGenTextures(1, &fTextureId); -} - -Image::Image(const char* const rawData, const Size& size, const GLenum format, const GLenum type) - : ImageBase(rawData, size), - fFormat(format), - fType(type), - fTextureId(0), - fIsReady(false) -{ - glGenTextures(1, &fTextureId); -} - -Image::~Image() -{ - if (fTextureId != 0) - { -#ifndef DISTRHO_OS_MAC // FIXME - glDeleteTextures(1, &fTextureId); -#endif - fTextureId = 0; - } -} - -void Image::loadFromMemory(const char* const rawData, - const uint width, - const uint height, - const GLenum format, - const GLenum type) noexcept -{ - loadFromMemory(rawData, Size(width, height), format, type); -} - -void Image::loadFromMemory(const char* const rawData, - const Size& size, - const GLenum format, - const GLenum type) noexcept -{ - fRawData = rawData; - fSize = size; - fFormat = format; - fType = type; - fIsReady = false; -} - -GLenum Image::getFormat() const noexcept -{ - return fFormat; -} - -GLenum Image::getType() const noexcept -{ - return fType; -} - -Image& Image::operator=(const Image& image) noexcept -{ - fRawData = image.fRawData; - fSize = image.fSize; - fFormat = image.fFormat; - fType = image.fType; - fIsReady = false; - return *this; -} - -void Image::_drawAt(const Point& pos) -{ - if (fTextureId == 0 || ! isValid()) - return; - - glEnable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D, fTextureId); - - if (! fIsReady) - { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER); - - static const float trans[] = { 0.0f, 0.0f, 0.0f, 0.0f }; - glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, trans); - - glPixelStorei(GL_PACK_ALIGNMENT, 1); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, - static_cast(fSize.getWidth()), static_cast(fSize.getHeight()), 0, - fFormat, fType, fRawData); - - fIsReady = true; - } - - Rectangle(pos, static_cast(fSize.getWidth()), static_cast(fSize.getHeight())).draw(); - - glBindTexture(GL_TEXTURE_2D, 0); - glDisable(GL_TEXTURE_2D); -} - -// ----------------------------------------------------------------------- - -END_NAMESPACE_DGL diff --git a/dgl/src/ImageBase.cpp b/dgl/src/ImageBase.cpp index b5dfbb96..ae04b147 100644 --- a/dgl/src/ImageBase.cpp +++ b/dgl/src/ImageBase.cpp @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2019 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -18,82 +18,107 @@ START_NAMESPACE_DGL -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- +// protected constructors ImageBase::ImageBase() - : fRawData(nullptr), - fSize(0, 0) {} + : rawData(nullptr), + size(0, 0), + format(kImageFormatNull) {} -ImageBase::ImageBase(const char* const rawData, const uint width, const uint height) - : fRawData(rawData), - fSize(width, height) {} +ImageBase::ImageBase(const char* const rdata, const uint width, const uint height, const ImageFormat fmt) + : rawData(rdata), + size(width, height), + format(fmt) {} -ImageBase::ImageBase(const char* const rawData, const Size& size) - : fRawData(rawData), - fSize(size) {} +ImageBase::ImageBase(const char* const rdata, const Size& s, const ImageFormat fmt) + : rawData(rdata), + size(s), + format(fmt) {} ImageBase::ImageBase(const ImageBase& image) - : fRawData(image.fRawData), - fSize(image.fSize) {} + : rawData(image.rawData), + size(image.size), + format(image.format) {} -ImageBase::~ImageBase() {} +// -------------------------------------------------------------------------------------------------------------------- +// public methods -// ----------------------------------------------------------------------- +ImageBase::~ImageBase() {} bool ImageBase::isValid() const noexcept { - return (fRawData != nullptr && fSize.isValid()); + return (rawData != nullptr && size.isValid()); +} + +bool ImageBase::isInvalid() const noexcept +{ + return (rawData == nullptr || size.isInvalid()); } uint ImageBase::getWidth() const noexcept { - return fSize.getWidth(); + return size.getWidth(); } uint ImageBase::getHeight() const noexcept { - return fSize.getHeight(); + return size.getHeight(); } const Size& ImageBase::getSize() const noexcept { - return fSize; + return size; } const char* ImageBase::getRawData() const noexcept { - return fRawData; + return rawData; } -// ----------------------------------------------------------------------- +ImageFormat ImageBase::getFormat() const noexcept +{ + return format; +} + +void ImageBase::loadFromMemory(const char* const rdata, + const uint width, + const uint height, + const ImageFormat fmt) noexcept +{ + loadFromMemory(rdata, Size(width, height), fmt); +} -void ImageBase::draw() +void ImageBase::loadFromMemory(const char* const rdata, const Size& s, const ImageFormat fmt) noexcept { - _drawAt(Point()); + rawData = rdata; + size = s; + format = fmt; } -void ImageBase::drawAt(const int x, const int y) +void ImageBase::draw(const GraphicsContext& context) { - _drawAt(Point(x, y)); + drawAt(context, Point(0, 0)); } -void ImageBase::drawAt(const Point& pos) +void ImageBase::drawAt(const GraphicsContext& context, const int x, const int y) { - _drawAt(pos); + drawAt(context, Point(x, y)); } -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- +// public operators ImageBase& ImageBase::operator=(const ImageBase& image) noexcept { - fRawData = image.fRawData; - fSize = image.fSize; + rawData = image.rawData; + size = image.size; return *this; } bool ImageBase::operator==(const ImageBase& image) const noexcept { - return (fRawData == image.fRawData && fSize == image.fSize); + return (rawData == image.rawData && size == image.size); } bool ImageBase::operator!=(const ImageBase& image) const noexcept @@ -101,6 +126,6 @@ bool ImageBase::operator!=(const ImageBase& image) const noexcept return !operator==(image); } -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- END_NAMESPACE_DGL diff --git a/dgl/src/ImageBaseWidgets.cpp b/dgl/src/ImageBaseWidgets.cpp new file mode 100644 index 00000000..f5fc7503 --- /dev/null +++ b/dgl/src/ImageBaseWidgets.cpp @@ -0,0 +1,1061 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "../ImageBaseWidgets.hpp" +#include "../Color.hpp" +#include "Common.hpp" + +START_NAMESPACE_DGL + +// -------------------------------------------------------------------------------------------------------------------- + +template +ImageBaseAboutWindow::ImageBaseAboutWindow(Window& parentWindow, const ImageType& image) + : StandaloneWindow(parentWindow.getApp(), parentWindow), + img(image) +{ + setResizable(false); + setTitle("About"); + + if (image.isValid()) + setSize(image.getSize()); +} + +template +ImageBaseAboutWindow::ImageBaseAboutWindow(TopLevelWidget* const parentTopLevelWidget, const ImageType& image) + : StandaloneWindow(parentTopLevelWidget->getApp(), parentTopLevelWidget->getWindow()), + img(image) +{ + setResizable(false); + setTitle("About"); + + if (image.isValid()) + setSize(image.getSize()); +} + +template +void ImageBaseAboutWindow::setImage(const ImageType& image) +{ + if (img == image) + return; + + img = image; + setSize(image.getSize()); +} + +template +void ImageBaseAboutWindow::onDisplay() +{ + img.draw(getGraphicsContext()); +} + +template +bool ImageBaseAboutWindow::onKeyboard(const KeyboardEvent& ev) +{ + if (ev.press && ev.key == kKeyEscape) + { + close(); + return true; + } + + return false; +} + +template +bool ImageBaseAboutWindow::onMouse(const MouseEvent& ev) +{ + if (ev.press) + { + close(); + return true; + } + + return false; +} + +// -------------------------------------------------------------------------------------------------------------------- + +template +struct ImageBaseButton::PrivateData { + ButtonImpl impl; + ImageType imageNormal; + ImageType imageHover; + ImageType imageDown; + + PrivateData(ImageBaseButton* const s, const ImageType& normal, const ImageType& hover, const ImageType& down) + : impl(s), + imageNormal(normal), + imageHover(hover), + imageDown(down) {} + + DISTRHO_DECLARE_NON_COPYABLE(PrivateData) +}; + +// -------------------------------------------------------------------------------------------------------------------- + +template +ImageBaseButton::ImageBaseButton(Widget* const parentWidget, const ImageType& image) + : SubWidget(parentWidget), + pData(new PrivateData(this, image, image, image)) +{ + setSize(image.getSize()); +} + +template +ImageBaseButton::ImageBaseButton(Widget* const parentWidget, const ImageType& imageNormal, const ImageType& imageDown) + : SubWidget(parentWidget), + pData(new PrivateData(this, imageNormal, imageNormal, imageDown)) +{ + DISTRHO_SAFE_ASSERT(imageNormal.getSize() == imageDown.getSize()); + + setSize(imageNormal.getSize()); +} + +template +ImageBaseButton::ImageBaseButton(Widget* const parentWidget, const ImageType& imageNormal, const ImageType& imageHover, const ImageType& imageDown) + : SubWidget(parentWidget), + pData(new PrivateData(this, imageNormal, imageHover, imageDown)) +{ + DISTRHO_SAFE_ASSERT(imageNormal.getSize() == imageHover.getSize() && imageHover.getSize() == imageDown.getSize()); + + setSize(imageNormal.getSize()); +} + +template +ImageBaseButton::~ImageBaseButton() +{ + delete pData; +} + +template +void ImageBaseButton::setCallback(Callback* callback) noexcept +{ + pData->impl.callback_img = callback; +} + +template +void ImageBaseButton::onDisplay() +{ + const GraphicsContext& context(getGraphicsContext()); + + switch (pData->impl.state) + { + case ButtonImpl::kStateDown: + pData->imageDown.draw(context); + break; + case ButtonImpl::kStateHover: + pData->imageHover.draw(context); + break; + default: + pData->imageNormal.draw(context); + break; + } +} + +template +bool ImageBaseButton::onMouse(const MouseEvent& ev) +{ + return pData->impl.onMouse(ev); +} + +template +bool ImageBaseButton::onMotion(const MotionEvent& ev) +{ + return pData->impl.onMotion(ev); +} + +// -------------------------------------------------------------------------------------------------------------------- + +template +ImageBaseKnob::PrivateData::PrivateData(const ImageType& img, const Orientation o) + : image(img), + minimum(0.0f), + maximum(1.0f), + step(0.0f), + value(0.5f), + valueDef(value), + valueTmp(value), + usingDefault(false), + usingLog(false), + orientation(o), + rotationAngle(0), + dragging(false), + lastX(0.0), + lastY(0.0), + callback(nullptr), + alwaysRepaint(false), + isImgVertical(img.getHeight() > img.getWidth()), + imgLayerWidth(isImgVertical ? img.getWidth() : img.getHeight()), + imgLayerHeight(imgLayerWidth), + imgLayerCount(isImgVertical ? img.getHeight()/imgLayerHeight : img.getWidth()/imgLayerWidth), + isReady(false) +{ + init(); +} + +template +ImageBaseKnob::PrivateData::PrivateData(PrivateData* const other) + : image(other->image), + minimum(other->minimum), + maximum(other->maximum), + step(other->step), + value(other->value), + valueDef(other->valueDef), + valueTmp(value), + usingDefault(other->usingDefault), + usingLog(other->usingLog), + orientation(other->orientation), + rotationAngle(other->rotationAngle), + dragging(false), + lastX(0.0), + lastY(0.0), + callback(other->callback), + alwaysRepaint(other->alwaysRepaint), + isImgVertical(other->isImgVertical), + imgLayerWidth(other->imgLayerWidth), + imgLayerHeight(other->imgLayerHeight), + imgLayerCount(other->imgLayerCount), + isReady(false) +{ + init(); +} + +template +void ImageBaseKnob::PrivateData::assignFrom(PrivateData* const other) +{ + cleanup(); + image = other->image; + minimum = other->minimum; + maximum = other->maximum; + step = other->step; + value = other->value; + valueDef = other->valueDef; + valueTmp = value; + usingDefault = other->usingDefault; + usingLog = other->usingLog; + orientation = other->orientation; + rotationAngle = other->rotationAngle; + dragging = false; + lastX = 0.0; + lastY = 0.0; + callback = other->callback; + alwaysRepaint = other->alwaysRepaint; + isImgVertical = other->isImgVertical; + imgLayerWidth = other->imgLayerWidth; + imgLayerHeight = other->imgLayerHeight; + imgLayerCount = other->imgLayerCount; + isReady = false; + init(); +} + +// -------------------------------------------------------------------------------------------------------------------- + +template +ImageBaseKnob::ImageBaseKnob(Widget* const parentWidget, const ImageType& image, const Orientation orientation) noexcept + : SubWidget(parentWidget), + pData(new PrivateData(image, orientation)) +{ + setSize(pData->imgLayerWidth, pData->imgLayerHeight); +} + +template +ImageBaseKnob::ImageBaseKnob(const ImageBaseKnob& imageKnob) + : SubWidget(imageKnob.getParentWidget()), + pData(new PrivateData(imageKnob.pData)) +{ + setSize(pData->imgLayerWidth, pData->imgLayerHeight); +} + +template +ImageBaseKnob& ImageBaseKnob::operator=(const ImageBaseKnob& imageKnob) +{ + pData->assignFrom(imageKnob.pData); + setSize(pData->imgLayerWidth, pData->imgLayerHeight); + return *this; +} + +template +ImageBaseKnob::~ImageBaseKnob() +{ + delete pData; +} + +template +float ImageBaseKnob::getValue() const noexcept +{ + return pData->value; +} + +// NOTE: value is assumed to be scaled if using log +template +void ImageBaseKnob::setDefault(float value) noexcept +{ + pData->valueDef = value; + pData->usingDefault = true; +} + +template +void ImageBaseKnob::setRange(float min, float max) noexcept +{ + DISTRHO_SAFE_ASSERT_RETURN(max > min,); + + if (pData->value < min) + { + pData->value = min; + repaint(); + + if (pData->callback != nullptr) + { + try { + pData->callback->imageKnobValueChanged(this, pData->value); + } DISTRHO_SAFE_EXCEPTION("ImageBaseKnob::setRange < min"); + } + } + else if (pData->value > max) + { + pData->value = max; + repaint(); + + if (pData->callback != nullptr) + { + try { + pData->callback->imageKnobValueChanged(this, pData->value); + } DISTRHO_SAFE_EXCEPTION("ImageBaseKnob::setRange > max"); + } + } + + pData->minimum = min; + pData->maximum = max; +} + +template +void ImageBaseKnob::setStep(float step) noexcept +{ + pData->step = step; +} + +// NOTE: value is assumed to be scaled if using log +template +void ImageBaseKnob::setValue(float value, bool sendCallback) noexcept +{ + if (d_isEqual(pData->value, value)) + return; + + pData->value = value; + + if (d_isZero(pData->step)) + pData->valueTmp = value; + + if (pData->rotationAngle == 0 || pData->alwaysRepaint) + pData->isReady = false; + + repaint(); + + if (sendCallback && pData->callback != nullptr) + { + try { + pData->callback->imageKnobValueChanged(this, pData->value); + } DISTRHO_SAFE_EXCEPTION("ImageBaseKnob::setValue"); + } +} + +template +void ImageBaseKnob::setUsingLogScale(bool yesNo) noexcept +{ + pData->usingLog = yesNo; +} + +template +void ImageBaseKnob::setCallback(Callback* callback) noexcept +{ + pData->callback = callback; +} + +template +void ImageBaseKnob::setOrientation(Orientation orientation) noexcept +{ + if (pData->orientation == orientation) + return; + + pData->orientation = orientation; +} + +template +void ImageBaseKnob::setRotationAngle(int angle) +{ + if (pData->rotationAngle == angle) + return; + + pData->rotationAngle = angle; + pData->isReady = false; +} + +template +void ImageBaseKnob::setImageLayerCount(uint count) noexcept +{ + DISTRHO_SAFE_ASSERT_RETURN(count > 1,); + + pData->imgLayerCount = count; + + if (pData->isImgVertical) + pData->imgLayerHeight = pData->image.getHeight()/count; + else + pData->imgLayerWidth = pData->image.getWidth()/count; + + setSize(pData->imgLayerWidth, pData->imgLayerHeight); +} + +template +bool ImageBaseKnob::onMouse(const MouseEvent& ev) +{ + if (ev.button != 1) + return false; + + if (ev.press) + { + if (! contains(ev.pos)) + return false; + + if ((ev.mod & kModifierShift) != 0 && pData->usingDefault) + { + setValue(pData->valueDef, true); + pData->valueTmp = pData->value; + return true; + } + + pData->dragging = true; + pData->lastX = ev.pos.getX(); + pData->lastY = ev.pos.getY(); + + if (pData->callback != nullptr) + pData->callback->imageKnobDragStarted(this); + + return true; + } + else if (pData->dragging) + { + if (pData->callback != nullptr) + pData->callback->imageKnobDragFinished(this); + + pData->dragging = false; + return true; + } + + return false; +} + +template +bool ImageBaseKnob::onMotion(const MotionEvent& ev) +{ + if (! pData->dragging) + return false; + + bool doVal = false; + float d, value = 0.0f; + + if (pData->orientation == ImageBaseKnob::Horizontal) + { + if (const double movX = ev.pos.getX() - pData->lastX) + { + d = (ev.mod & kModifierControl) ? 2000.0f : 200.0f; + value = (pData->usingLog ? pData->invlogscale(pData->valueTmp) : pData->valueTmp) + (float(pData->maximum - pData->minimum) / d * float(movX)); + doVal = true; + } + } + else if (pData->orientation == ImageBaseKnob::Vertical) + { + if (const double movY = pData->lastY - ev.pos.getY()) + { + d = (ev.mod & kModifierControl) ? 2000.0f : 200.0f; + value = (pData->usingLog ? pData->invlogscale(pData->valueTmp) : pData->valueTmp) + (float(pData->maximum - pData->minimum) / d * float(movY)); + doVal = true; + } + } + + if (! doVal) + return false; + + if (pData->usingLog) + value = pData->logscale(value); + + if (value < pData->minimum) + { + pData->valueTmp = value = pData->minimum; + } + else if (value > pData->maximum) + { + pData->valueTmp = value = pData->maximum; + } + else if (d_isNotZero(pData->step)) + { + pData->valueTmp = value; + const float rest = std::fmod(value, pData->step); + value = value - rest + (rest > pData->step/2.0f ? pData->step : 0.0f); + } + + setValue(value, true); + + pData->lastX = ev.pos.getX(); + pData->lastY = ev.pos.getY(); + + return true; +} + +template +bool ImageBaseKnob::onScroll(const ScrollEvent& ev) +{ + if (! contains(ev.pos)) + return false; + + const float dir = (ev.delta.getY() > 0.f) ? 1.f : -1.f; + const float d = (ev.mod & kModifierControl) ? 2000.0f : 200.0f; + float value = (pData->usingLog ? pData->invlogscale(pData->valueTmp) : pData->valueTmp) + + ((pData->maximum - pData->minimum) / d * 10.f * dir); + + if (pData->usingLog) + value = pData->logscale(value); + + if (value < pData->minimum) + { + pData->valueTmp = value = pData->minimum; + } + else if (value > pData->maximum) + { + pData->valueTmp = value = pData->maximum; + } + else if (d_isNotZero(pData->step)) + { + pData->valueTmp = value; + const float rest = std::fmod(value, pData->step); + value = value - rest + (rest > pData->step/2.0f ? pData->step : 0.0f); + } + + setValue(value, true); + return true; +} + +// -------------------------------------------------------------------------------------------------------------------- + +template +struct ImageBaseSlider::PrivateData { + ImageType image; + float minimum; + float maximum; + float step; + float value; + float valueDef; + float valueTmp; + bool usingDefault; + + bool dragging; + bool inverted; + bool valueIsSet; + double startedX; + double startedY; + + Callback* callback; + + Point startPos; + Point endPos; + Rectangle sliderArea; + + PrivateData(const ImageType& img) + : image(img), + minimum(0.0f), + maximum(1.0f), + step(0.0f), + value(0.5f), + valueDef(value), + valueTmp(value), + usingDefault(false), + dragging(false), + inverted(false), + valueIsSet(false), + startedX(0.0), + startedY(0.0), + callback(nullptr), + startPos(), + endPos(), + sliderArea() {} + + void recheckArea() noexcept + { + if (startPos.getY() == endPos.getY()) + { + // horizontal + sliderArea = Rectangle(startPos.getX(), + startPos.getY(), + endPos.getX() + static_cast(image.getWidth()) - startPos.getX(), + static_cast(image.getHeight())); + } + else + { + // vertical + sliderArea = Rectangle(startPos.getX(), + startPos.getY(), + static_cast(image.getWidth()), + endPos.getY() + static_cast(image.getHeight()) - startPos.getY()); + } + } + + DISTRHO_DECLARE_NON_COPYABLE(PrivateData) +}; + +// -------------------------------------------------------------------------------------------------------------------- + +template +ImageBaseSlider::ImageBaseSlider(Widget* const parentWidget, const ImageType& image) noexcept + : SubWidget(parentWidget), + pData(new PrivateData(image)) +{ + setNeedsFullViewportDrawing(); +} + +template +ImageBaseSlider::~ImageBaseSlider() +{ + delete pData; +} + +template +float ImageBaseSlider::getValue() const noexcept +{ + return pData->value; +} + +template +void ImageBaseSlider::setValue(float value, bool sendCallback) noexcept +{ + if (! pData->valueIsSet) + pData->valueIsSet = true; + + if (d_isEqual(pData->value, value)) + return; + + pData->value = value; + + if (d_isZero(pData->step)) + pData->valueTmp = value; + + repaint(); + + if (sendCallback && pData->callback != nullptr) + { + try { + pData->callback->imageSliderValueChanged(this, pData->value); + } DISTRHO_SAFE_EXCEPTION("ImageBaseSlider::setValue"); + } +} + +template +void ImageBaseSlider::setStartPos(const Point& startPos) noexcept +{ + pData->startPos = startPos; + pData->recheckArea(); +} + +template +void ImageBaseSlider::setStartPos(int x, int y) noexcept +{ + setStartPos(Point(x, y)); +} + +template +void ImageBaseSlider::setEndPos(const Point& endPos) noexcept +{ + pData->endPos = endPos; + pData->recheckArea(); +} + +template +void ImageBaseSlider::setEndPos(int x, int y) noexcept +{ + setEndPos(Point(x, y)); +} + +template +void ImageBaseSlider::setInverted(bool inverted) noexcept +{ + if (pData->inverted == inverted) + return; + + pData->inverted = inverted; + repaint(); +} + +template +void ImageBaseSlider::setDefault(float value) noexcept +{ + pData->valueDef = value; + pData->usingDefault = true; +} + +template +void ImageBaseSlider::setRange(float min, float max) noexcept +{ + pData->minimum = min; + pData->maximum = max; + + if (pData->value < min) + { + pData->value = min; + repaint(); + + if (pData->callback != nullptr && pData->valueIsSet) + { + try { + pData->callback->imageSliderValueChanged(this, pData->value); + } DISTRHO_SAFE_EXCEPTION("ImageBaseSlider::setRange < min"); + } + } + else if (pData->value > max) + { + pData->value = max; + repaint(); + + if (pData->callback != nullptr && pData->valueIsSet) + { + try { + pData->callback->imageSliderValueChanged(this, pData->value); + } DISTRHO_SAFE_EXCEPTION("ImageBaseSlider::setRange > max"); + } + } +} + +template +void ImageBaseSlider::setStep(float step) noexcept +{ + pData->step = step; +} + +template +void ImageBaseSlider::setCallback(Callback* callback) noexcept +{ + pData->callback = callback; +} + +template +void ImageBaseSlider::onDisplay() +{ + const GraphicsContext& context(getGraphicsContext()); + +#if 0 // DEBUG, paints slider area + Color(1.0f, 1.0f, 1.0f, 0.5f).setFor(context, true); + Rectangle(pData->sliderArea.getX(), + pData->sliderArea.getY(), + pData->sliderArea.getX()+pData->sliderArea.getWidth(), + pData->sliderArea.getY()+pData->sliderArea.getHeight()).draw(context); + Color(1.0f, 1.0f, 1.0f, 1.0f).setFor(context, true); +#endif + + const float normValue = (pData->value - pData->minimum) / (pData->maximum - pData->minimum); + + int x, y; + + if (pData->startPos.getY() == pData->endPos.getY()) + { + // horizontal + if (pData->inverted) + x = pData->endPos.getX() - static_cast(normValue*static_cast(pData->endPos.getX()-pData->startPos.getX())); + else + x = pData->startPos.getX() + static_cast(normValue*static_cast(pData->endPos.getX()-pData->startPos.getX())); + + y = pData->startPos.getY(); + } + else + { + // vertical + x = pData->startPos.getX(); + + if (pData->inverted) + y = pData->endPos.getY() - static_cast(normValue*static_cast(pData->endPos.getY()-pData->startPos.getY())); + else + y = pData->startPos.getY() + static_cast(normValue*static_cast(pData->endPos.getY()-pData->startPos.getY())); + } + + pData->image.drawAt(context, x, y); +} + +template +bool ImageBaseSlider::onMouse(const MouseEvent& ev) +{ + if (ev.button != 1) + return false; + + if (ev.press) + { + if (! pData->sliderArea.contains(ev.pos)) + return false; + + if ((ev.mod & kModifierShift) != 0 && pData->usingDefault) + { + setValue(pData->valueDef, true); + pData->valueTmp = pData->value; + return true; + } + + float vper; + const double x = ev.pos.getX(); + const double y = ev.pos.getY(); + + if (pData->startPos.getY() == pData->endPos.getY()) + { + // horizontal + vper = float(x - pData->sliderArea.getX()) / float(pData->sliderArea.getWidth()); + } + else + { + // vertical + vper = float(y - pData->sliderArea.getY()) / float(pData->sliderArea.getHeight()); + } + + float value; + + if (pData->inverted) + value = pData->maximum - vper * (pData->maximum - pData->minimum); + else + value = pData->minimum + vper * (pData->maximum - pData->minimum); + + if (value < pData->minimum) + { + pData->valueTmp = value = pData->minimum; + } + else if (value > pData->maximum) + { + pData->valueTmp = value = pData->maximum; + } + else if (d_isNotZero(pData->step)) + { + pData->valueTmp = value; + const float rest = std::fmod(value, pData->step); + value = value - rest + (rest > pData->step/2.0f ? pData->step : 0.0f); + } + + pData->dragging = true; + pData->startedX = x; + pData->startedY = y; + + if (pData->callback != nullptr) + pData->callback->imageSliderDragStarted(this); + + setValue(value, true); + + return true; + } + else if (pData->dragging) + { + if (pData->callback != nullptr) + pData->callback->imageSliderDragFinished(this); + + pData->dragging = false; + return true; + } + + return false; +} + +template +bool ImageBaseSlider::onMotion(const MotionEvent& ev) +{ + if (! pData->dragging) + return false; + + const bool horizontal = pData->startPos.getY() == pData->endPos.getY(); + const double x = ev.pos.getX(); + const double y = ev.pos.getY(); + + if ((horizontal && pData->sliderArea.containsX(x)) || (pData->sliderArea.containsY(y) && ! horizontal)) + { + float vper; + + if (horizontal) + { + // horizontal + vper = float(x - pData->sliderArea.getX()) / float(pData->sliderArea.getWidth()); + } + else + { + // vertical + vper = float(y - pData->sliderArea.getY()) / float(pData->sliderArea.getHeight()); + } + + float value; + + if (pData->inverted) + value = pData->maximum - vper * (pData->maximum - pData->minimum); + else + value = pData->minimum + vper * (pData->maximum - pData->minimum); + + if (value < pData->minimum) + { + pData->valueTmp = value = pData->minimum; + } + else if (value > pData->maximum) + { + pData->valueTmp = value = pData->maximum; + } + else if (d_isNotZero(pData->step)) + { + pData->valueTmp = value; + const float rest = std::fmod(value, pData->step); + value = value - rest + (rest > pData->step/2.0f ? pData->step : 0.0f); + } + + setValue(value, true); + } + else if (horizontal) + { + if (x < pData->sliderArea.getX()) + setValue(pData->inverted ? pData->maximum : pData->minimum, true); + else + setValue(pData->inverted ? pData->minimum : pData->maximum, true); + } + else + { + if (y < pData->sliderArea.getY()) + setValue(pData->inverted ? pData->maximum : pData->minimum, true); + else + setValue(pData->inverted ? pData->minimum : pData->maximum, true); + } + + return true; +} + +// -------------------------------------------------------------------------------------------------------------------- + +template +struct ImageBaseSwitch::PrivateData { + ImageType imageNormal; + ImageType imageDown; + bool isDown; + Callback* callback; + + PrivateData(const ImageType& normal, const ImageType& down) + : imageNormal(normal), + imageDown(down), + isDown(false), + callback(nullptr) + { + DISTRHO_SAFE_ASSERT(imageNormal.getSize() == imageDown.getSize()); + } + + PrivateData(PrivateData* const other) + : imageNormal(other->imageNormal), + imageDown(other->imageDown), + isDown(other->isDown), + callback(other->callback) + { + DISTRHO_SAFE_ASSERT(imageNormal.getSize() == imageDown.getSize()); + } + + void assignFrom(PrivateData* const other) + { + imageNormal = other->imageNormal; + imageDown = other->imageDown; + isDown = other->isDown; + callback = other->callback; + DISTRHO_SAFE_ASSERT(imageNormal.getSize() == imageDown.getSize()); + } + + DISTRHO_DECLARE_NON_COPYABLE(PrivateData) +}; + +// -------------------------------------------------------------------------------------------------------------------- + +template +ImageBaseSwitch::ImageBaseSwitch(Widget* const parentWidget, const ImageType& imageNormal, const ImageType& imageDown) noexcept + : SubWidget(parentWidget), + pData(new PrivateData(imageNormal, imageDown)) +{ + setSize(imageNormal.getSize()); +} + +template +ImageBaseSwitch::ImageBaseSwitch(const ImageBaseSwitch& imageSwitch) noexcept + : SubWidget(imageSwitch.getParentWidget()), + pData(new PrivateData(imageSwitch.pData)) +{ + setSize(pData->imageNormal.getSize()); +} + +template +ImageBaseSwitch& ImageBaseSwitch::operator=(const ImageBaseSwitch& imageSwitch) noexcept +{ + pData->assignFrom(imageSwitch.pData); + setSize(pData->imageNormal.getSize()); + return *this; +} + +template +ImageBaseSwitch::~ImageBaseSwitch() +{ + delete pData; +} + +template +bool ImageBaseSwitch::isDown() const noexcept +{ + return pData->isDown; +} + +template +void ImageBaseSwitch::setDown(const bool down) noexcept +{ + if (pData->isDown == down) + return; + + pData->isDown = down; + repaint(); +} + +template +void ImageBaseSwitch::setCallback(Callback* const callback) noexcept +{ + pData->callback = callback; +} + +template +void ImageBaseSwitch::onDisplay() +{ + const GraphicsContext& context(getGraphicsContext()); + + if (pData->isDown) + pData->imageDown.draw(context); + else + pData->imageNormal.draw(context); +} + +template +bool ImageBaseSwitch::onMouse(const MouseEvent& ev) +{ + if (ev.press && contains(ev.pos)) + { + pData->isDown = !pData->isDown; + + repaint(); + + if (pData->callback != nullptr) + pData->callback->imageSwitchClicked(this, pData->isDown); + + return true; + } + + return false; +} + +// -------------------------------------------------------------------------------------------------------------------- + +END_NAMESPACE_DGL diff --git a/dgl/src/ImageWidgets.cpp b/dgl/src/ImageWidgets.cpp deleted file mode 100644 index 94bf58a1..00000000 --- a/dgl/src/ImageWidgets.cpp +++ /dev/null @@ -1,1108 +0,0 @@ -/* - * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2019 Filipe Coelho - * - * Permission to use, copy, modify, and/or distribute this software for any purpose with - * or without fee is hereby granted, provided that the above copyright notice and this - * permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD - * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN - * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER - * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#include "../Image.hpp" -#include "Common.hpp" -#include "WidgetPrivateData.hpp" - -// FIXME make this code more generic and move GL specific bits to OpenGL.cpp -#include "../OpenGL.hpp" - -START_NAMESPACE_DGL - -// ----------------------------------------------------------------------- - -#ifndef DISTRHO_OS_HAIKU -ImageAboutWindow::ImageAboutWindow(Window& parent, const Image& image) - : Window(parent.getApp(), parent), - Widget((Window&)*this), - fImgBackground(image) -{ - Window::setResizable(false); - Window::setSize(image.getSize()); - Window::setTitle("About"); -} - -ImageAboutWindow::ImageAboutWindow(Widget* widget, const Image& image) - : Window(widget->getParentApp(), widget->getParentWindow()), - Widget((Window&)*this), - fImgBackground(image) -{ - Window::setResizable(false); - Window::setSize(image.getSize()); - Window::setTitle("About"); -} -#else -ImageAboutWindow::ImageAboutWindow(Window& parent, const Image& image) : fImgBackground(image) {} -ImageAboutWindow::ImageAboutWindow(Widget* widget, const Image& image) : fImgBackground(image) {} -#endif - -void ImageAboutWindow::setImage(const Image& image) -{ - if (fImgBackground == image) - return; - - fImgBackground = image; -#ifndef DISTRHO_OS_HAIKU - Window::setSize(image.getSize()); -#endif -} - -#ifndef DISTRHO_OS_HAIKU -void ImageAboutWindow::onDisplay() -{ - fImgBackground.draw(); -} - -bool ImageAboutWindow::onKeyboard(const KeyboardEvent& ev) -{ - if (ev.press && ev.key == kCharEscape) - { - Window::close(); - return true; - } - - return false; -} - -bool ImageAboutWindow::onMouse(const MouseEvent& ev) -{ - if (ev.press) - { - Window::close(); - return true; - } - - return false; -} - -void ImageAboutWindow::onReshape(uint width, uint height) -{ - Widget::setSize(width, height); - Window::onReshape(width, height); -} -#endif - -// ----------------------------------------------------------------------- - -struct ImageButton::PrivateData { - ButtonImpl impl; - Image imageNormal; - Image imageHover; - Image imageDown; - - PrivateData(Widget* const s, const Image& normal, const Image& hover, const Image& down) - : impl(s), - imageNormal(normal), - imageHover(hover), - imageDown(down) {} - - DISTRHO_DECLARE_NON_COPY_STRUCT(PrivateData) -}; - -// ----------------------------------------------------------------------- - -ImageButton::ImageButton(Window& parent, const Image& image) - : Widget(parent), - pData(new PrivateData(this, image, image, image)) -{ - setSize(image.getSize()); -} - -ImageButton::ImageButton(Window& parent, const Image& imageNormal, const Image& imageDown) - : Widget(parent), - pData(new PrivateData(this, imageNormal, imageNormal, imageDown)) -{ - DISTRHO_SAFE_ASSERT(imageNormal.getSize() == imageDown.getSize()); - - setSize(imageNormal.getSize()); -} - -ImageButton::ImageButton(Window& parent, const Image& imageNormal, const Image& imageHover, const Image& imageDown) - : Widget(parent), - pData(new PrivateData(this, imageNormal, imageHover, imageDown)) -{ - DISTRHO_SAFE_ASSERT(imageNormal.getSize() == imageHover.getSize() && imageHover.getSize() == imageDown.getSize()); - - setSize(imageNormal.getSize()); -} - -ImageButton::ImageButton(Widget* widget, const Image& image) - : Widget(widget->getParentWindow()), - pData(new PrivateData(this, image, image, image)) -{ - setSize(image.getSize()); -} - -ImageButton::ImageButton(Widget* widget, const Image& imageNormal, const Image& imageDown) - : Widget(widget->getParentWindow()), - pData(new PrivateData(this, imageNormal, imageNormal, imageDown)) -{ - DISTRHO_SAFE_ASSERT(imageNormal.getSize() == imageDown.getSize()); - - setSize(imageNormal.getSize()); -} - -ImageButton::ImageButton(Widget* widget, const Image& imageNormal, const Image& imageHover, const Image& imageDown) - : Widget(widget->getParentWindow()), - pData(new PrivateData(this, imageNormal, imageHover, imageDown)) -{ - DISTRHO_SAFE_ASSERT(imageNormal.getSize() == imageHover.getSize() && imageHover.getSize() == imageDown.getSize()); - - setSize(imageNormal.getSize()); -} - -ImageButton::~ImageButton() -{ - delete pData; -} - -void ImageButton::setCallback(Callback* callback) noexcept -{ - pData->impl.callback_img = callback; -} - -void ImageButton::onDisplay() -{ - switch (pData->impl.state) - { - case ButtonImpl::kStateDown: - pData->imageDown.draw(); - break; - case ButtonImpl::kStateHover: - pData->imageHover.draw(); - break; - default: - pData->imageNormal.draw(); - break; - } -} - -bool ImageButton::onMouse(const MouseEvent& ev) -{ - return pData->impl.onMouse(ev); -} - -bool ImageButton::onMotion(const MotionEvent& ev) -{ - return pData->impl.onMotion(ev); -} - -// ----------------------------------------------------------------------- - -ImageKnob::ImageKnob(Window& parent, const Image& image, Orientation orientation) noexcept - : Widget(parent), - fImage(image), - fMinimum(0.0f), - fMaximum(1.0f), - fStep(0.0f), - fValue(0.5f), - fValueDef(fValue), - fValueTmp(fValue), - fUsingDefault(false), - fUsingLog(false), - fOrientation(orientation), - fRotationAngle(0), - fDragging(false), - fLastX(0), - fLastY(0), - fCallback(nullptr), - fIsImgVertical(image.getHeight() > image.getWidth()), - fImgLayerWidth(fIsImgVertical ? image.getWidth() : image.getHeight()), - fImgLayerHeight(fImgLayerWidth), - fImgLayerCount(fIsImgVertical ? image.getHeight()/fImgLayerHeight : image.getWidth()/fImgLayerWidth), - fIsReady(false), - fTextureId(0) -{ - glGenTextures(1, &fTextureId); - setSize(fImgLayerWidth, fImgLayerHeight); -} - -ImageKnob::ImageKnob(Widget* widget, const Image& image, Orientation orientation) noexcept - : Widget(widget->getParentWindow()), - fImage(image), - fMinimum(0.0f), - fMaximum(1.0f), - fStep(0.0f), - fValue(0.5f), - fValueDef(fValue), - fValueTmp(fValue), - fUsingDefault(false), - fUsingLog(false), - fOrientation(orientation), - fRotationAngle(0), - fDragging(false), - fLastX(0), - fLastY(0), - fCallback(nullptr), - fIsImgVertical(image.getHeight() > image.getWidth()), - fImgLayerWidth(fIsImgVertical ? image.getWidth() : image.getHeight()), - fImgLayerHeight(fImgLayerWidth), - fImgLayerCount(fIsImgVertical ? image.getHeight()/fImgLayerHeight : image.getWidth()/fImgLayerWidth), - fIsReady(false), - fTextureId(0) -{ - glGenTextures(1, &fTextureId); - setSize(fImgLayerWidth, fImgLayerHeight); -} - -ImageKnob::ImageKnob(const ImageKnob& imageKnob) - : Widget(imageKnob.getParentWindow()), - fImage(imageKnob.fImage), - fMinimum(imageKnob.fMinimum), - fMaximum(imageKnob.fMaximum), - fStep(imageKnob.fStep), - fValue(imageKnob.fValue), - fValueDef(imageKnob.fValueDef), - fValueTmp(fValue), - fUsingDefault(imageKnob.fUsingDefault), - fUsingLog(imageKnob.fUsingLog), - fOrientation(imageKnob.fOrientation), - fRotationAngle(imageKnob.fRotationAngle), - fDragging(false), - fLastX(0), - fLastY(0), - fCallback(imageKnob.fCallback), - fIsImgVertical(imageKnob.fIsImgVertical), - fImgLayerWidth(imageKnob.fImgLayerWidth), - fImgLayerHeight(imageKnob.fImgLayerHeight), - fImgLayerCount(imageKnob.fImgLayerCount), - fIsReady(false), - fTextureId(0) -{ - glGenTextures(1, &fTextureId); - setSize(fImgLayerWidth, fImgLayerHeight); -} - -ImageKnob& ImageKnob::operator=(const ImageKnob& imageKnob) -{ - fImage = imageKnob.fImage; - fMinimum = imageKnob.fMinimum; - fMaximum = imageKnob.fMaximum; - fStep = imageKnob.fStep; - fValue = imageKnob.fValue; - fValueDef = imageKnob.fValueDef; - fValueTmp = fValue; - fUsingDefault = imageKnob.fUsingDefault; - fUsingLog = imageKnob.fUsingLog; - fOrientation = imageKnob.fOrientation; - fRotationAngle = imageKnob.fRotationAngle; - fDragging = false; - fLastX = 0; - fLastY = 0; - fCallback = imageKnob.fCallback; - fIsImgVertical = imageKnob.fIsImgVertical; - fImgLayerWidth = imageKnob.fImgLayerWidth; - fImgLayerHeight = imageKnob.fImgLayerHeight; - fImgLayerCount = imageKnob.fImgLayerCount; - fIsReady = false; - - if (fTextureId != 0) - { - glDeleteTextures(1, &fTextureId); - fTextureId = 0; - } - - glGenTextures(1, &fTextureId); - setSize(fImgLayerWidth, fImgLayerHeight); - - return *this; -} - -ImageKnob::~ImageKnob() -{ - if (fTextureId != 0) - { - glDeleteTextures(1, &fTextureId); - fTextureId = 0; - } -} - -float ImageKnob::getValue() const noexcept -{ - return fValue; -} - -// NOTE: value is assumed to be scaled if using log -void ImageKnob::setDefault(float value) noexcept -{ - fValueDef = value; - fUsingDefault = true; -} - -void ImageKnob::setRange(float min, float max) noexcept -{ - DISTRHO_SAFE_ASSERT_RETURN(max > min,); - - if (fValue < min) - { - fValue = min; - repaint(); - - if (fCallback != nullptr) - { - try { - fCallback->imageKnobValueChanged(this, fValue); - } DISTRHO_SAFE_EXCEPTION("ImageKnob::setRange < min"); - } - } - else if (fValue > max) - { - fValue = max; - repaint(); - - if (fCallback != nullptr) - { - try { - fCallback->imageKnobValueChanged(this, fValue); - } DISTRHO_SAFE_EXCEPTION("ImageKnob::setRange > max"); - } - } - - fMinimum = min; - fMaximum = max; -} - -void ImageKnob::setStep(float step) noexcept -{ - fStep = step; -} - -// NOTE: value is assumed to be scaled if using log -void ImageKnob::setValue(float value, bool sendCallback) noexcept -{ - if (d_isEqual(fValue, value)) - return; - - fValue = value; - - if (d_isZero(fStep)) - fValueTmp = value; - - if (fRotationAngle == 0) - fIsReady = false; - - repaint(); - - if (sendCallback && fCallback != nullptr) - { - try { - fCallback->imageKnobValueChanged(this, fValue); - } DISTRHO_SAFE_EXCEPTION("ImageKnob::setValue"); - } -} - -void ImageKnob::setUsingLogScale(bool yesNo) noexcept -{ - fUsingLog = yesNo; -} - -void ImageKnob::setCallback(Callback* callback) noexcept -{ - fCallback = callback; -} - -void ImageKnob::setOrientation(Orientation orientation) noexcept -{ - if (fOrientation == orientation) - return; - - fOrientation = orientation; -} - -void ImageKnob::setRotationAngle(int angle) -{ - if (fRotationAngle == angle) - return; - - fRotationAngle = angle; - fIsReady = false; -} - -void ImageKnob::setImageLayerCount(uint count) noexcept -{ - DISTRHO_SAFE_ASSERT_RETURN(count > 1,); - - fImgLayerCount = count; - - if (fIsImgVertical) - fImgLayerHeight = fImage.getHeight()/count; - else - fImgLayerWidth = fImage.getWidth()/count; - - setSize(fImgLayerWidth, fImgLayerHeight); -} - -void ImageKnob::onDisplay() -{ - const float normValue = ((fUsingLog ? _invlogscale(fValue) : fValue) - fMinimum) / (fMaximum - fMinimum); - - glEnable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D, fTextureId); - - if (! fIsReady) - { - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER); - - static const float trans[] = { 0.0f, 0.0f, 0.0f, 0.0f }; - glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, trans); - - glPixelStorei(GL_PACK_ALIGNMENT, 1); - glPixelStorei(GL_UNPACK_ALIGNMENT, 1); - - uint imageDataOffset = 0; - - if (fRotationAngle == 0) - { - DISTRHO_SAFE_ASSERT_RETURN(fImgLayerCount > 0,); - DISTRHO_SAFE_ASSERT_RETURN(normValue >= 0.0f,); - - const uint& v1(fIsImgVertical ? fImgLayerWidth : fImgLayerHeight); - const uint& v2(fIsImgVertical ? fImgLayerHeight : fImgLayerWidth); - - const uint layerDataSize = v1 * v2 * ((fImage.getFormat() == GL_BGRA || fImage.getFormat() == GL_RGBA) ? 4 : 3); - /* */ imageDataOffset = layerDataSize * uint(normValue * float(fImgLayerCount-1)); - } - - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, - static_cast(getWidth()), static_cast(getHeight()), 0, - fImage.getFormat(), fImage.getType(), fImage.getRawData() + imageDataOffset); - - fIsReady = true; - } - - const int w = static_cast(getWidth()); - const int h = static_cast(getHeight()); - - if (fRotationAngle != 0) - { - glPushMatrix(); - - const int w2 = w/2; - const int h2 = h/2; - - glTranslatef(static_cast(w2), static_cast(h2), 0.0f); - glRotatef(normValue*static_cast(fRotationAngle), 0.0f, 0.0f, 1.0f); - - Rectangle(-w2, -h2, w, h).draw(); - - glPopMatrix(); - } - else - { - Rectangle(0, 0, w, h).draw(); - } - - glBindTexture(GL_TEXTURE_2D, 0); - glDisable(GL_TEXTURE_2D); -} - -bool ImageKnob::onMouse(const MouseEvent& ev) -{ - if (ev.button != 1) - return false; - - if (ev.press) - { - if (! contains(ev.pos)) - return false; - - if ((ev.mod & kModifierShift) != 0 && fUsingDefault) - { - setValue(fValueDef, true); - fValueTmp = fValue; - return true; - } - - fDragging = true; - fLastX = ev.pos.getX(); - fLastY = ev.pos.getY(); - - if (fCallback != nullptr) - fCallback->imageKnobDragStarted(this); - - return true; - } - else if (fDragging) - { - if (fCallback != nullptr) - fCallback->imageKnobDragFinished(this); - - fDragging = false; - return true; - } - - return false; -} - -bool ImageKnob::onMotion(const MotionEvent& ev) -{ - if (! fDragging) - return false; - - bool doVal = false; - float d, value = 0.0f; - - if (fOrientation == ImageKnob::Horizontal) - { - if (const int movX = ev.pos.getX() - fLastX) - { - d = (ev.mod & kModifierControl) ? 2000.0f : 200.0f; - value = (fUsingLog ? _invlogscale(fValueTmp) : fValueTmp) + (float(fMaximum - fMinimum) / d * float(movX)); - doVal = true; - } - } - else if (fOrientation == ImageKnob::Vertical) - { - if (const int movY = fLastY - ev.pos.getY()) - { - d = (ev.mod & kModifierControl) ? 2000.0f : 200.0f; - value = (fUsingLog ? _invlogscale(fValueTmp) : fValueTmp) + (float(fMaximum - fMinimum) / d * float(movY)); - doVal = true; - } - } - - if (! doVal) - return false; - - if (fUsingLog) - value = _logscale(value); - - if (value < fMinimum) - { - fValueTmp = value = fMinimum; - } - else if (value > fMaximum) - { - fValueTmp = value = fMaximum; - } - else if (d_isNotZero(fStep)) - { - fValueTmp = value; - const float rest = std::fmod(value, fStep); - value = value - rest + (rest > fStep/2.0f ? fStep : 0.0f); - } - - setValue(value, true); - - fLastX = ev.pos.getX(); - fLastY = ev.pos.getY(); - - return true; -} - -bool ImageKnob::onScroll(const ScrollEvent& ev) -{ - if (! contains(ev.pos)) - return false; - - const float dir = (ev.delta.getY() > 0.f) ? 1.f : -1.f; - const float d = (ev.mod & kModifierControl) ? 2000.0f : 200.0f; - float value = (fUsingLog ? _invlogscale(fValueTmp) : fValueTmp) + (float(fMaximum - fMinimum) / d * 10.f * dir); - - if (fUsingLog) - value = _logscale(value); - - if (value < fMinimum) - { - fValueTmp = value = fMinimum; - } - else if (value > fMaximum) - { - fValueTmp = value = fMaximum; - } - else if (d_isNotZero(fStep)) - { - fValueTmp = value; - const float rest = std::fmod(value, fStep); - value = value - rest + (rest > fStep/2.0f ? fStep : 0.0f); - } - - setValue(value, true); - return true; -} - -// ----------------------------------------------------------------------- - -float ImageKnob::_logscale(float value) const -{ - const float b = std::log(fMaximum/fMinimum)/(fMaximum-fMinimum); - const float a = fMaximum/std::exp(fMaximum*b); - return a * std::exp(b*value); -} - -float ImageKnob::_invlogscale(float value) const -{ - const float b = std::log(fMaximum/fMinimum)/(fMaximum-fMinimum); - const float a = fMaximum/std::exp(fMaximum*b); - return std::log(value/a)/b; -} - -// ----------------------------------------------------------------------- - -ImageSlider::ImageSlider(Window& parent, const Image& image) noexcept - : Widget(parent), - fImage(image), - fMinimum(0.0f), - fMaximum(1.0f), - fStep(0.0f), - fValue(0.5f), - fValueDef(fValue), - fValueTmp(fValue), - fUsingDefault(false), - fDragging(false), - fInverted(false), - fValueIsSet(false), - fStartedX(0), - fStartedY(0), - fCallback(nullptr), - fStartPos(), - fEndPos(), - fSliderArea() -{ - pData->needsFullViewport = true; -} - -ImageSlider::ImageSlider(Widget* widget, const Image& image) noexcept - : Widget(widget->getParentWindow()), - fImage(image), - fMinimum(0.0f), - fMaximum(1.0f), - fStep(0.0f), - fValue(0.5f), - fValueDef(fValue), - fValueTmp(fValue), - fUsingDefault(false), - fDragging(false), - fInverted(false), - fValueIsSet(false), - fStartedX(0), - fStartedY(0), - fCallback(nullptr), - fStartPos(), - fEndPos(), - fSliderArea() -{ - pData->needsFullViewport = true; -} - -float ImageSlider::getValue() const noexcept -{ - return fValue; -} - -void ImageSlider::setValue(float value, bool sendCallback) noexcept -{ - if (! fValueIsSet) - fValueIsSet = true; - - if (d_isEqual(fValue, value)) - return; - - fValue = value; - - if (d_isZero(fStep)) - fValueTmp = value; - - repaint(); - - if (sendCallback && fCallback != nullptr) - { - try { - fCallback->imageSliderValueChanged(this, fValue); - } DISTRHO_SAFE_EXCEPTION("ImageSlider::setValue"); - } -} - -void ImageSlider::setStartPos(const Point& startPos) noexcept -{ - fStartPos = startPos; - _recheckArea(); -} - -void ImageSlider::setStartPos(int x, int y) noexcept -{ - setStartPos(Point(x, y)); -} - -void ImageSlider::setEndPos(const Point& endPos) noexcept -{ - fEndPos = endPos; - _recheckArea(); -} - -void ImageSlider::setEndPos(int x, int y) noexcept -{ - setEndPos(Point(x, y)); -} - -void ImageSlider::setInverted(bool inverted) noexcept -{ - if (fInverted == inverted) - return; - - fInverted = inverted; - repaint(); -} - -void ImageSlider::setDefault(float value) noexcept -{ - fValueDef = value; - fUsingDefault = true; -} - -void ImageSlider::setRange(float min, float max) noexcept -{ - fMinimum = min; - fMaximum = max; - - if (fValue < min) - { - fValue = min; - repaint(); - - if (fCallback != nullptr && fValueIsSet) - { - try { - fCallback->imageSliderValueChanged(this, fValue); - } DISTRHO_SAFE_EXCEPTION("ImageSlider::setRange < min"); - } - } - else if (fValue > max) - { - fValue = max; - repaint(); - - if (fCallback != nullptr && fValueIsSet) - { - try { - fCallback->imageSliderValueChanged(this, fValue); - } DISTRHO_SAFE_EXCEPTION("ImageSlider::setRange > max"); - } - } -} - -void ImageSlider::setStep(float step) noexcept -{ - fStep = step; -} - -void ImageSlider::setCallback(Callback* callback) noexcept -{ - fCallback = callback; -} - -void ImageSlider::onDisplay() -{ -#if 0 // DEBUG, paints slider area - glColor3f(0.4f, 0.5f, 0.1f); - glRecti(fSliderArea.getX(), fSliderArea.getY(), fSliderArea.getX()+fSliderArea.getWidth(), fSliderArea.getY()+fSliderArea.getHeight()); - glColor4f(1.0f, 1.0f, 1.0f, 1.0f); -#endif - - const float normValue = (fValue - fMinimum) / (fMaximum - fMinimum); - - int x, y; - - if (fStartPos.getY() == fEndPos.getY()) - { - // horizontal - if (fInverted) - x = fEndPos.getX() - static_cast(normValue*static_cast(fEndPos.getX()-fStartPos.getX())); - else - x = fStartPos.getX() + static_cast(normValue*static_cast(fEndPos.getX()-fStartPos.getX())); - - y = fStartPos.getY(); - } - else - { - // vertical - x = fStartPos.getX(); - - if (fInverted) - y = fEndPos.getY() - static_cast(normValue*static_cast(fEndPos.getY()-fStartPos.getY())); - else - y = fStartPos.getY() + static_cast(normValue*static_cast(fEndPos.getY()-fStartPos.getY())); - } - - fImage.drawAt(x, y); -} - -bool ImageSlider::onMouse(const MouseEvent& ev) -{ - if (ev.button != 1) - return false; - - if (ev.press) - { - if (! fSliderArea.contains(ev.pos)) - return false; - - if ((ev.mod & kModifierShift) != 0 && fUsingDefault) - { - setValue(fValueDef, true); - fValueTmp = fValue; - return true; - } - - float vper; - const int x = ev.pos.getX(); - const int y = ev.pos.getY(); - - if (fStartPos.getY() == fEndPos.getY()) - { - // horizontal - vper = float(x - fSliderArea.getX()) / float(fSliderArea.getWidth()); - } - else - { - // vertical - vper = float(y - fSliderArea.getY()) / float(fSliderArea.getHeight()); - } - - float value; - - if (fInverted) - value = fMaximum - vper * (fMaximum - fMinimum); - else - value = fMinimum + vper * (fMaximum - fMinimum); - - if (value < fMinimum) - { - fValueTmp = value = fMinimum; - } - else if (value > fMaximum) - { - fValueTmp = value = fMaximum; - } - else if (d_isNotZero(fStep)) - { - fValueTmp = value; - const float rest = std::fmod(value, fStep); - value = value - rest + (rest > fStep/2.0f ? fStep : 0.0f); - } - - fDragging = true; - fStartedX = x; - fStartedY = y; - - if (fCallback != nullptr) - fCallback->imageSliderDragStarted(this); - - setValue(value, true); - - return true; - } - else if (fDragging) - { - if (fCallback != nullptr) - fCallback->imageSliderDragFinished(this); - - fDragging = false; - return true; - } - - return false; -} - -bool ImageSlider::onMotion(const MotionEvent& ev) -{ - if (! fDragging) - return false; - - const bool horizontal = fStartPos.getY() == fEndPos.getY(); - const int x = ev.pos.getX(); - const int y = ev.pos.getY(); - - if ((horizontal && fSliderArea.containsX(x)) || (fSliderArea.containsY(y) && ! horizontal)) - { - float vper; - - if (horizontal) - { - // horizontal - vper = float(x - fSliderArea.getX()) / float(fSliderArea.getWidth()); - } - else - { - // vertical - vper = float(y - fSliderArea.getY()) / float(fSliderArea.getHeight()); - } - - float value; - - if (fInverted) - value = fMaximum - vper * (fMaximum - fMinimum); - else - value = fMinimum + vper * (fMaximum - fMinimum); - - if (value < fMinimum) - { - fValueTmp = value = fMinimum; - } - else if (value > fMaximum) - { - fValueTmp = value = fMaximum; - } - else if (d_isNotZero(fStep)) - { - fValueTmp = value; - const float rest = std::fmod(value, fStep); - value = value - rest + (rest > fStep/2.0f ? fStep : 0.0f); - } - - setValue(value, true); - } - else if (horizontal) - { - if (x < fSliderArea.getX()) - setValue(fInverted ? fMaximum : fMinimum, true); - else - setValue(fInverted ? fMinimum : fMaximum, true); - } - else - { - if (y < fSliderArea.getY()) - setValue(fInverted ? fMaximum : fMinimum, true); - else - setValue(fInverted ? fMinimum : fMaximum, true); - } - - return true; -} - -void ImageSlider::_recheckArea() noexcept -{ - if (fStartPos.getY() == fEndPos.getY()) - { - // horizontal - fSliderArea = Rectangle(fStartPos.getX(), - fStartPos.getY(), - fEndPos.getX() + static_cast(fImage.getWidth()) - fStartPos.getX(), - static_cast(fImage.getHeight())); - } - else - { - // vertical - fSliderArea = Rectangle(fStartPos.getX(), - fStartPos.getY(), - static_cast(fImage.getWidth()), - fEndPos.getY() + static_cast(fImage.getHeight()) - fStartPos.getY()); - } -} - -// ----------------------------------------------------------------------- - -ImageSwitch::ImageSwitch(Window& parent, const Image& imageNormal, const Image& imageDown) noexcept - : Widget(parent), - fImageNormal(imageNormal), - fImageDown(imageDown), - fIsDown(false), - fCallback(nullptr) -{ - DISTRHO_SAFE_ASSERT(fImageNormal.getSize() == fImageDown.getSize()); - - setSize(fImageNormal.getSize()); -} - -ImageSwitch::ImageSwitch(Widget* widget, const Image& imageNormal, const Image& imageDown) noexcept - : Widget(widget->getParentWindow()), - fImageNormal(imageNormal), - fImageDown(imageDown), - fIsDown(false), - fCallback(nullptr) -{ - DISTRHO_SAFE_ASSERT(fImageNormal.getSize() == fImageDown.getSize()); - - setSize(fImageNormal.getSize()); -} - -ImageSwitch::ImageSwitch(const ImageSwitch& imageSwitch) noexcept - : Widget(imageSwitch.getParentWindow()), - fImageNormal(imageSwitch.fImageNormal), - fImageDown(imageSwitch.fImageDown), - fIsDown(imageSwitch.fIsDown), - fCallback(imageSwitch.fCallback) -{ - DISTRHO_SAFE_ASSERT(fImageNormal.getSize() == fImageDown.getSize()); - - setSize(fImageNormal.getSize()); -} - -ImageSwitch& ImageSwitch::operator=(const ImageSwitch& imageSwitch) noexcept -{ - fImageNormal = imageSwitch.fImageNormal; - fImageDown = imageSwitch.fImageDown; - fIsDown = imageSwitch.fIsDown; - fCallback = imageSwitch.fCallback; - - DISTRHO_SAFE_ASSERT(fImageNormal.getSize() == fImageDown.getSize()); - - setSize(fImageNormal.getSize()); - - return *this; -} - -bool ImageSwitch::isDown() const noexcept -{ - return fIsDown; -} - -void ImageSwitch::setDown(bool down) noexcept -{ - if (fIsDown == down) - return; - - fIsDown = down; - repaint(); -} - -void ImageSwitch::setCallback(Callback* callback) noexcept -{ - fCallback = callback; -} - -void ImageSwitch::onDisplay() -{ - if (fIsDown) - fImageDown.draw(); - else - fImageNormal.draw(); -} - -bool ImageSwitch::onMouse(const MouseEvent& ev) -{ - if (ev.press && contains(ev.pos)) - { - fIsDown = !fIsDown; - - repaint(); - - if (fCallback != nullptr) - fCallback->imageSwitchClicked(this, fIsDown); - - return true; - } - - return false; -} - -// ----------------------------------------------------------------------- - -END_NAMESPACE_DGL diff --git a/dgl/src/NanoVG.cpp b/dgl/src/NanoVG.cpp index e464329e..8f9589a7 100644 --- a/dgl/src/NanoVG.cpp +++ b/dgl/src/NanoVG.cpp @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2019 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -15,7 +15,7 @@ */ #include "../NanoVG.hpp" -#include "WidgetPrivateData.hpp" +#include "SubWidgetPrivateData.hpp" #ifndef DGL_NO_SHARED_RESOURCES # include "Resources.hpp" @@ -257,11 +257,6 @@ NanoVG::NanoVG(int flags) fInFrame(false), fIsSubWidget(false) {} -NanoVG::NanoVG(NanoWidget* groupWidget) - : fContext(groupWidget->fContext), - fInFrame(false), - fIsSubWidget(true) {} - NanoVG::~NanoVG() { DISTRHO_SAFE_ASSERT(! fInFrame); @@ -277,8 +272,8 @@ void NanoVG::beginFrame(const uint width, const uint height, const float scaleFa if (fContext == nullptr) return; DISTRHO_SAFE_ASSERT_RETURN(scaleFactor > 0.0f,); DISTRHO_SAFE_ASSERT_RETURN(! fInFrame,); - fInFrame = true; + nvgBeginFrame(fContext, static_cast(width), static_cast(height), scaleFactor); } @@ -286,14 +281,13 @@ void NanoVG::beginFrame(Widget* const widget) { DISTRHO_SAFE_ASSERT_RETURN(widget != nullptr,); DISTRHO_SAFE_ASSERT_RETURN(! fInFrame,); - fInFrame = true; if (fContext == nullptr) return; - Window& window(widget->getParentWindow()); - nvgBeginFrame(fContext, static_cast(window.getWidth()), static_cast(window.getHeight()), 1.0f); + if (TopLevelWidget* const tlw = widget->getTopLevelWidget()) + nvgBeginFrame(fContext, static_cast(tlw->getWidth()), static_cast(tlw->getHeight()), 1.0f); } void NanoVG::cancelFrame() @@ -789,26 +783,26 @@ void NanoVG::stroke() NanoVG::FontId NanoVG::createFontFromFile(const char* name, const char* filename) { - if (fContext == nullptr) return -1; DISTRHO_SAFE_ASSERT_RETURN(name != nullptr && name[0] != '\0', -1); DISTRHO_SAFE_ASSERT_RETURN(filename != nullptr && filename[0] != '\0', -1); + DISTRHO_SAFE_ASSERT_RETURN(fContext != nullptr, -1); return nvgCreateFont(fContext, name, filename); } NanoVG::FontId NanoVG::createFontFromMemory(const char* name, const uchar* data, uint dataSize, bool freeData) { - if (fContext == nullptr) return -1; DISTRHO_SAFE_ASSERT_RETURN(name != nullptr && name[0] != '\0', -1); DISTRHO_SAFE_ASSERT_RETURN(data != nullptr, -1); + DISTRHO_SAFE_ASSERT_RETURN(fContext != nullptr, -1); return nvgCreateFontMem(fContext, name, const_cast(data), static_cast(dataSize), freeData); } NanoVG::FontId NanoVG::findFont(const char* name) { - if (fContext == nullptr) return -1; DISTRHO_SAFE_ASSERT_RETURN(name != nullptr && name[0] != '\0', -1); + DISTRHO_SAFE_ASSERT_RETURN(fContext != nullptr, -1); return nvgFindFont(fContext, name); } @@ -930,79 +924,56 @@ int NanoVG::textBreakLines(const char* string, const char* end, float breakRowWi } #ifndef DGL_NO_SHARED_RESOURCES -void NanoVG::loadSharedResources() +bool NanoVG::loadSharedResources() { - if (fContext == nullptr) return; + if (fContext == nullptr) return false; if (nvgFindFont(fContext, NANOVG_DEJAVU_SANS_TTF) >= 0) - return; + return true; using namespace dpf_resources; - nvgCreateFontMem(fContext, NANOVG_DEJAVU_SANS_TTF, (uchar*)dejavusans_ttf, dejavusans_ttf_size, 0); + return nvgCreateFontMem(fContext, NANOVG_DEJAVU_SANS_TTF, (uchar*)dejavusans_ttf, dejavusans_ttf_size, 0) >= 0; } #endif // ----------------------------------------------------------------------- +// NanoSubWidget -struct NanoWidget::PrivateData { - NanoWidget* const self; - std::vector subWidgets; - - PrivateData(NanoWidget* const s) - : self(s), - subWidgets() {} - - ~PrivateData() - { - subWidgets.clear(); - } -}; - -NanoWidget::NanoWidget(Window& parent, int flags) - : Widget(parent), - NanoVG(flags), - nData(new PrivateData(this)) +template <> +NanoBaseWidget::NanoBaseWidget(Widget* const parent, int flags) + : SubWidget(parent), + NanoVG(flags) { - pData->needsScaling = true; + pData->needsViewportScaling = true; } -NanoWidget::NanoWidget(Widget* groupWidget, int flags) - : Widget(groupWidget, true), - NanoVG(flags), - nData(new PrivateData(this)) -{ - pData->needsScaling = true; -} +template class NanoBaseWidget; -NanoWidget::NanoWidget(NanoWidget* groupWidget) - : Widget(groupWidget, false), - NanoVG(groupWidget), - nData(new PrivateData(this)) -{ - pData->needsScaling = true; - pData->skipDisplay = true; - groupWidget->nData->subWidgets.push_back(this); -} +// ----------------------------------------------------------------------- +// NanoTopLevelWidget -NanoWidget::~NanoWidget() -{ - delete nData; -} +template <> +NanoBaseWidget::NanoBaseWidget(Window& windowToMapTo, int flags) + : TopLevelWidget(windowToMapTo), + NanoVG(flags) {} -void NanoWidget::onDisplay() -{ - NanoVG::beginFrame(getWidth(), getHeight()); - onNanoDisplay(); +template class NanoBaseWidget; - for (std::vector::iterator it = nData->subWidgets.begin(); it != nData->subWidgets.end(); ++it) - { - NanoWidget* const widget(*it); - widget->onNanoDisplay(); - } +// ----------------------------------------------------------------------- +// NanoStandaloneWindow - NanoVG::endFrame(); -} +template <> +NanoBaseWidget::NanoBaseWidget(Application& app, int flags) + : StandaloneWindow(app), + NanoVG(flags) {} + +template <> +NanoBaseWidget::NanoBaseWidget(Application& app, Window& parentWindow, int flags) + : StandaloneWindow(app, parentWindow), + NanoVG(flags) {} + +template class NanoBaseWidget; // ----------------------------------------------------------------------- diff --git a/dgl/src/OpenGL.cpp b/dgl/src/OpenGL.cpp index 25a38619..dbd8428e 100644 --- a/dgl/src/OpenGL.cpp +++ b/dgl/src/OpenGL.cpp @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2019 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -14,136 +14,255 @@ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -#include "../Geometry.hpp" #include "../OpenGL.hpp" +#include "../Color.hpp" +#include "../ImageWidgets.hpp" + +#include "Common.hpp" +#include "SubWidgetPrivateData.hpp" +#include "TopLevelWidgetPrivateData.hpp" +#include "WidgetPrivateData.hpp" +#include "WindowPrivateData.hpp" + +// templated classes +#include "ImageBaseWidgets.cpp" START_NAMESPACE_DGL +// ----------------------------------------------------------------------- +// Color + +void Color::setFor(const GraphicsContext&, const bool includeAlpha) +{ + if (includeAlpha) + glColor4f(red, green, blue, alpha); + else + glColor3f(red, green, blue); +} + // ----------------------------------------------------------------------- // Line template -void Line::draw() +static void drawLine(const Point& posStart, const Point& posEnd) { - DISTRHO_SAFE_ASSERT_RETURN(fPosStart != fPosEnd,); + DISTRHO_SAFE_ASSERT_RETURN(posStart != posEnd,); glBegin(GL_LINES); { - glVertex2d(fPosStart.fX, fPosStart.fY); - glVertex2d(fPosEnd.fX, fPosEnd.fY); + glVertex2d(posStart.getX(), posStart.getY()); + glVertex2d(posEnd.getX(), posEnd.getY()); } glEnd(); } +template +void Line::draw(const GraphicsContext&, const T width) +{ + DISTRHO_SAFE_ASSERT_RETURN(width != 0,); + + glLineWidth(static_cast(width)); + drawLine(posStart, posEnd); +} + +// deprecated calls +template +void Line::draw() +{ + drawLine(posStart, posEnd); +} + +template class Line; +template class Line; +template class Line; +template class Line; +template class Line; +template class Line; + // ----------------------------------------------------------------------- // Circle template -void Circle::_draw(const bool outline) +static void drawCircle(const Point& pos, + const uint numSegments, + const float size, + const float sin, + const float cos, + const bool outline) { - DISTRHO_SAFE_ASSERT_RETURN(fNumSegments >= 3 && fSize > 0.0f,); + DISTRHO_SAFE_ASSERT_RETURN(numSegments >= 3 && size > 0.0f,); - double t, x = fSize, y = 0.0; + const T origx = pos.getX(); + const T origy = pos.getY(); + double t, x = size, y = 0.0; glBegin(outline ? GL_LINE_LOOP : GL_POLYGON); - for (uint i=0; i +void Circle::draw(const GraphicsContext&) +{ + drawCircle(fPos, fNumSegments, fSize, fSin, fCos, false); +} + +template +void Circle::drawOutline(const GraphicsContext&, const T lineWidth) +{ + DISTRHO_SAFE_ASSERT_RETURN(lineWidth != 0,); + + glLineWidth(static_cast(lineWidth)); + drawCircle(fPos, fNumSegments, fSize, fSin, fCos, true); +} + +// deprecated calls +template +void Circle::draw() +{ + drawCircle(fPos, fNumSegments, fSize, fSin, fCos, false); +} + +template +void Circle::drawOutline() +{ + drawCircle(fPos, fNumSegments, fSize, fSin, fCos, true); +} + +template class Circle; +template class Circle; +template class Circle; +template class Circle; +template class Circle; +template class Circle; + // ----------------------------------------------------------------------- // Triangle template -void Triangle::_draw(const bool outline) +static void drawTriangle(const Point& pos1, + const Point& pos2, + const Point& pos3, + const bool outline) { - DISTRHO_SAFE_ASSERT_RETURN(fPos1 != fPos2 && fPos1 != fPos3,); + DISTRHO_SAFE_ASSERT_RETURN(pos1 != pos2 && pos1 != pos3,); glBegin(outline ? GL_LINE_LOOP : GL_TRIANGLES); { - glVertex2d(fPos1.fX, fPos1.fY); - glVertex2d(fPos2.fX, fPos2.fY); - glVertex2d(fPos3.fX, fPos3.fY); + glVertex2d(pos1.getX(), pos1.getY()); + glVertex2d(pos2.getX(), pos2.getY()); + glVertex2d(pos3.getX(), pos3.getY()); } glEnd(); } +template +void Triangle::draw(const GraphicsContext&) +{ + drawTriangle(pos1, pos2, pos3, false); +} + +template +void Triangle::drawOutline(const GraphicsContext&, const T lineWidth) +{ + DISTRHO_SAFE_ASSERT_RETURN(lineWidth != 0,); + + glLineWidth(static_cast(lineWidth)); + drawTriangle(pos1, pos2, pos3, true); +} + +// deprecated calls +template +void Triangle::draw() +{ + drawTriangle(pos1, pos2, pos3, false); +} + +template +void Triangle::drawOutline() +{ + drawTriangle(pos1, pos2, pos3, true); +} + +template class Triangle; +template class Triangle; +template class Triangle; +template class Triangle; +template class Triangle; +template class Triangle; + // ----------------------------------------------------------------------- // Rectangle template -void Rectangle::_draw(const bool outline) +static void drawRectangle(const Rectangle& rect, const bool outline) { - DISTRHO_SAFE_ASSERT_RETURN(fSize.isValid(),); + DISTRHO_SAFE_ASSERT_RETURN(rect.isValid(),); glBegin(outline ? GL_LINE_LOOP : GL_QUADS); { + const T x = rect.getX(); + const T y = rect.getY(); + const T w = rect.getWidth(); + const T h = rect.getHeight(); + glTexCoord2f(0.0f, 0.0f); - glVertex2d(fPos.fX, fPos.fY); + glVertex2d(x, y); glTexCoord2f(1.0f, 0.0f); - glVertex2d(fPos.fX+fSize.fWidth, fPos.fY); + glVertex2d(x+w, y); glTexCoord2f(1.0f, 1.0f); - glVertex2d(fPos.fX+fSize.fWidth, fPos.fY+fSize.fHeight); + glVertex2d(x+w, y+h); glTexCoord2f(0.0f, 1.0f); - glVertex2d(fPos.fX, fPos.fY+fSize.fHeight); + glVertex2d(x, y+h); } glEnd(); } -// ----------------------------------------------------------------------- -// Possible template data types - -template class Point; -template class Point; -template class Point; -template class Point; -template class Point; -template class Point; - -template class Size; -template class Size; -template class Size; -template class Size; -template class Size; -template class Size; +template +void Rectangle::draw(const GraphicsContext&) +{ + drawRectangle(*this, false); +} -template class Line; -template class Line; -template class Line; -template class Line; -template class Line; -template class Line; +template +void Rectangle::drawOutline(const GraphicsContext&, const T lineWidth) +{ + DISTRHO_SAFE_ASSERT_RETURN(lineWidth != 0,); -template class Circle; -template class Circle; -template class Circle; -template class Circle; -template class Circle; -template class Circle; + glLineWidth(static_cast(lineWidth)); + drawRectangle(*this, true); +} -template class Triangle; -template class Triangle; -template class Triangle; -template class Triangle; -template class Triangle; -template class Triangle; +// deprecated calls +template +void Rectangle::draw() +{ + drawRectangle(*this, false); +} + +template +void Rectangle::drawOutline() +{ + drawRectangle(*this, true); +} template class Rectangle; template class Rectangle; @@ -152,6 +271,387 @@ template class Rectangle; template class Rectangle; template class Rectangle; +// ----------------------------------------------------------------------- +// OpenGLImage + +static void setupOpenGLImage(const OpenGLImage& image, GLuint textureId) +{ + DISTRHO_SAFE_ASSERT_RETURN(image.isValid(),); + + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, textureId); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER); + + static const float trans[] = { 0.0f, 0.0f, 0.0f, 0.0f }; + glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, trans); + + glPixelStorei(GL_PACK_ALIGNMENT, 1); + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, + static_cast(image.getWidth()), + static_cast(image.getHeight()), + 0, + asOpenGLImageFormat(image.getFormat()), GL_UNSIGNED_BYTE, image.getRawData()); + + glBindTexture(GL_TEXTURE_2D, 0); + glDisable(GL_TEXTURE_2D); +} + +static void drawOpenGLImage(const OpenGLImage& image, const Point& pos, const GLuint textureId, bool& setupCalled) +{ + if (textureId == 0 || image.isInvalid()) + return; + + if (! setupCalled) + { + setupOpenGLImage(image, textureId); + setupCalled = true; + } + + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, textureId); + + glBegin(GL_QUADS); + + { + const int x = pos.getX(); + const int y = pos.getY(); + const int w = static_cast(image.getWidth()); + const int h = static_cast(image.getHeight()); + + glTexCoord2f(0.0f, 0.0f); + glVertex2d(x, y); + + glTexCoord2f(1.0f, 0.0f); + glVertex2d(x+w, y); + + glTexCoord2f(1.0f, 1.0f); + glVertex2d(x+w, y+h); + + glTexCoord2f(0.0f, 1.0f); + glVertex2d(x, y+h); + } + + glEnd(); + + glBindTexture(GL_TEXTURE_2D, 0); + glDisable(GL_TEXTURE_2D); +} + +OpenGLImage::OpenGLImage() + : ImageBase(), + textureId(0), + setupCalled(false) +{ + glGenTextures(1, &textureId); + DISTRHO_SAFE_ASSERT(textureId != 0); +} + +OpenGLImage::OpenGLImage(const char* const rdata, const uint w, const uint h, const ImageFormat fmt) + : ImageBase(rdata, w, h, fmt), + textureId(0), + setupCalled(false) +{ + glGenTextures(1, &textureId); + DISTRHO_SAFE_ASSERT(textureId != 0); +} + +OpenGLImage::OpenGLImage(const char* const rdata, const Size& s, const ImageFormat fmt) + : ImageBase(rdata, s, fmt), + textureId(0), + setupCalled(false) +{ + glGenTextures(1, &textureId); + DISTRHO_SAFE_ASSERT(textureId != 0); +} + +OpenGLImage::OpenGLImage(const OpenGLImage& image) + : ImageBase(image), + textureId(0), + setupCalled(false) +{ + glGenTextures(1, &textureId); + DISTRHO_SAFE_ASSERT(textureId != 0); +} + +OpenGLImage::~OpenGLImage() +{ + if (textureId != 0) + glDeleteTextures(1, &textureId); +} + +void OpenGLImage::loadFromMemory(const char* const rdata, const Size& s, const ImageFormat fmt) noexcept +{ + setupCalled = false; + ImageBase::loadFromMemory(rdata, s, fmt); +} + +void OpenGLImage::drawAt(const GraphicsContext&, const Point& pos) +{ + drawOpenGLImage(*this, pos, textureId, setupCalled); +} + +OpenGLImage& OpenGLImage::operator=(const OpenGLImage& image) noexcept +{ + rawData = image.rawData; + size = image.size; + format = image.format; + setupCalled = false; + return *this; +} + +// deprecated calls +OpenGLImage::OpenGLImage(const char* const rdata, const uint w, const uint h, const GLenum fmt) + : ImageBase(rdata, w, h, asDISTRHOImageFormat(fmt)), + textureId(0), + setupCalled(false) +{ + glGenTextures(1, &textureId); + DISTRHO_SAFE_ASSERT(textureId != 0); +} + +OpenGLImage::OpenGLImage(const char* const rdata, const Size& s, const GLenum fmt) + : ImageBase(rdata, s, asDISTRHOImageFormat(fmt)), + textureId(0), + setupCalled(false) +{ + glGenTextures(1, &textureId); + DISTRHO_SAFE_ASSERT(textureId != 0); +} + +void OpenGLImage::draw() +{ + drawOpenGLImage(*this, Point(0, 0), textureId, setupCalled); +} + +void OpenGLImage::drawAt(const int x, const int y) +{ + drawOpenGLImage(*this, Point(x, y), textureId, setupCalled); +} + +void OpenGLImage::drawAt(const Point& pos) +{ + drawOpenGLImage(*this, pos, textureId, setupCalled); +} + +// ----------------------------------------------------------------------- +// ImageBaseAboutWindow + +#if 0 +template <> +void ImageBaseAboutWindow::onDisplay() +{ + const GraphicsContext& context(getGraphicsContext()); + img.draw(context); +} +#endif + +template class ImageBaseAboutWindow; + +// ----------------------------------------------------------------------- +// ImageBaseButton + +template class ImageBaseButton; + +// ----------------------------------------------------------------------- +// ImageBaseKnob + +template <> +void ImageBaseKnob::PrivateData::init() +{ + glTextureId = 0; + glGenTextures(1, &glTextureId); +} + +template <> +void ImageBaseKnob::PrivateData::cleanup() +{ + if (glTextureId == 0) + return; + + glDeleteTextures(1, &glTextureId); + glTextureId = 0; +} + +template <> +void ImageBaseKnob::onDisplay() +{ + const GraphicsContext& context(getGraphicsContext()); + const float normValue = ((pData->usingLog ? pData->invlogscale(pData->value) : pData->value) - pData->minimum) + / (pData->maximum - pData->minimum); + + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, pData->glTextureId); + + if (! pData->isReady) + { + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER); + + static const float trans[] = { 0.0f, 0.0f, 0.0f, 0.0f }; + glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, trans); + + glPixelStorei(GL_PACK_ALIGNMENT, 1); + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + + uint imageDataOffset = 0; + + if (pData->rotationAngle == 0) + { + DISTRHO_SAFE_ASSERT_RETURN(pData->imgLayerCount > 0,); + DISTRHO_SAFE_ASSERT_RETURN(normValue >= 0.0f,); + + const uint& v1(pData->isImgVertical ? pData->imgLayerWidth : pData->imgLayerHeight); + const uint& v2(pData->isImgVertical ? pData->imgLayerHeight : pData->imgLayerWidth); + + // TODO kImageFormatGreyscale + const uint layerDataSize = v1 * v2 * ((pData->image.getFormat() == kImageFormatBGRA || + pData->image.getFormat() == kImageFormatRGBA) ? 4 : 3); + /* */ imageDataOffset = layerDataSize * uint(normValue * float(pData->imgLayerCount-1)); + } + + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, + static_cast(getWidth()), static_cast(getHeight()), 0, + asOpenGLImageFormat(pData->image.getFormat()), GL_UNSIGNED_BYTE, pData->image.getRawData() + imageDataOffset); + + pData->isReady = true; + } + + const int w = static_cast(getWidth()); + const int h = static_cast(getHeight()); + + if (pData->rotationAngle != 0) + { + glPushMatrix(); + + const int w2 = w/2; + const int h2 = h/2; + + glTranslatef(static_cast(w2), static_cast(h2), 0.0f); + glRotatef(normValue*static_cast(pData->rotationAngle), 0.0f, 0.0f, 1.0f); + + Rectangle(-w2, -h2, w, h).draw(context); + + glPopMatrix(); + } + else + { + Rectangle(0, 0, w, h).draw(context); + } + + glBindTexture(GL_TEXTURE_2D, 0); + glDisable(GL_TEXTURE_2D); +} + +template class ImageBaseKnob; + +// ----------------------------------------------------------------------- +// ImageBaseSlider + +template class ImageBaseSlider; + +// ----------------------------------------------------------------------- +// ImageBaseSwitch + +template class ImageBaseSwitch; + +// ----------------------------------------------------------------------- + +void SubWidget::PrivateData::display(const uint width, const uint height, const double autoScaleFactor) +{ + bool needsDisableScissor = false; + + if (needsFullViewportForDrawing || (absolutePos.isZero() && self->getSize() == Size(width, height))) + { + // full viewport size + glViewport(0, + -static_cast(height * autoScaleFactor - height + 0.5), + static_cast(width * autoScaleFactor + 0.5), + static_cast(height * autoScaleFactor + 0.5)); + } + else if (needsViewportScaling) + { + // limit viewport to widget bounds + glViewport(absolutePos.getX(), + static_cast(height - self->getHeight()) - absolutePos.getY(), + static_cast(self->getWidth()), + static_cast(self->getHeight())); + } + else + { + // set viewport pos + glViewport(static_cast(absolutePos.getX() * autoScaleFactor + 0.5), + -static_cast(std::round((height * autoScaleFactor - height) + + (absolutePos.getY() * autoScaleFactor))), + static_cast(std::round(width * autoScaleFactor)), + static_cast(std::round(height * autoScaleFactor))); + + // then cut the outer bounds + glScissor(static_cast(absolutePos.getX() * autoScaleFactor + 0.5), + static_cast(height - std::round((static_cast(self->getHeight()) + absolutePos.getY()) + * autoScaleFactor)), + static_cast(std::round(self->getWidth() * autoScaleFactor)), + static_cast(std::round(self->getHeight() * autoScaleFactor))); + + glEnable(GL_SCISSOR_TEST); + needsDisableScissor = true; + } + + // display widget + self->onDisplay(); + + if (needsDisableScissor) + glDisable(GL_SCISSOR_TEST); + + selfw->pData->displaySubWidgets(width, height, autoScaleFactor); +} + +// ----------------------------------------------------------------------- + +void TopLevelWidget::PrivateData::display() +{ + if (! selfw->pData->visible) + return; + + const Size size(window.getSize()); + const uint width = size.getWidth(); + const uint height = size.getHeight(); + + const double autoScaleFactor = window.pData->autoScaleFactor; + + // full viewport size + if (window.pData->autoScaling) + { + glViewport(0, + -static_cast(height * autoScaleFactor - height), + static_cast(width * autoScaleFactor), + static_cast(height * autoScaleFactor)); + } + else + { + glViewport(0, 0, static_cast(width), static_cast(height)); + } + + // main widget drawing + self->onDisplay(); + + // now draw subwidgets if there are any + selfw->pData->displaySubWidgets(width, height, autoScaleFactor); +} + +// ----------------------------------------------------------------------- + +const GraphicsContext& Window::PrivateData::getGraphicsContext() const noexcept +{ + return (const GraphicsContext&)graphicsContext; +} + // ----------------------------------------------------------------------- END_NAMESPACE_DGL diff --git a/dgl/src/SubWidget.cpp b/dgl/src/SubWidget.cpp new file mode 100644 index 00000000..3e0ef59d --- /dev/null +++ b/dgl/src/SubWidget.cpp @@ -0,0 +1,144 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "SubWidgetPrivateData.hpp" +#include "../TopLevelWidget.hpp" + +START_NAMESPACE_DGL + +// -------------------------------------------------------------------------------------------------------------------- + +SubWidget::SubWidget(Widget* const parentWidget) + : Widget(parentWidget), + pData(new PrivateData(this, parentWidget)) {} + +SubWidget::~SubWidget() +{ + delete pData; +} + +template +bool SubWidget::contains(T x, T y) const noexcept +{ + return Rectangle(0, 0, getWidth(), getHeight()).contains(x, y); +} + +template +bool SubWidget::contains(const Point& pos) const noexcept +{ + return contains(pos.getX(), pos.getY()); +} + +int SubWidget::getAbsoluteX() const noexcept +{ + return pData->absolutePos.getX(); +} + +int SubWidget::getAbsoluteY() const noexcept +{ + return pData->absolutePos.getY(); +} + +Point SubWidget::getAbsolutePos() const noexcept +{ + return pData->absolutePos; +} + +Rectangle SubWidget::getAbsoluteArea() const noexcept +{ + return Rectangle(getAbsolutePos(), getSize().toInt()); +} + +Rectangle SubWidget::getConstrainedAbsoluteArea() const noexcept +{ + return Rectangle(static_cast(std::max(0, getAbsoluteX())), + static_cast(std::max(0, getAbsoluteY())), + getSize()); +} + +void SubWidget::setAbsoluteX(int x) noexcept +{ + setAbsolutePos(Point(x, getAbsoluteY())); +} + +void SubWidget::setAbsoluteY(int y) noexcept +{ + setAbsolutePos(Point(getAbsoluteX(), y)); +} + +void SubWidget::setAbsolutePos(int x, int y) noexcept +{ + setAbsolutePos(Point(x, y)); +} + +void SubWidget::setAbsolutePos(const Point& pos) noexcept +{ + if (pData->absolutePos == pos) + return; + + PositionChangedEvent ev; + ev.oldPos = pData->absolutePos; + ev.pos = pos; + + pData->absolutePos = pos; + onPositionChanged(ev); + + // repaint the bounds of parent + pData->parentWidget->repaint(); +} + +Widget* SubWidget::getParentWidget() const noexcept +{ + return pData->parentWidget; +} + +void SubWidget::repaint() noexcept +{ + if (! isVisible()) + return; + + if (TopLevelWidget* const topw = getTopLevelWidget()) + { + if (pData->needsFullViewportForDrawing) + topw->repaint(); + else + topw->repaint(getConstrainedAbsoluteArea()); + } +} + +void SubWidget::setNeedsFullViewportDrawing(const bool needsFullViewportForDrawing) +{ + pData->needsFullViewportForDrawing = needsFullViewportForDrawing; +} + +void SubWidget::onPositionChanged(const PositionChangedEvent&) +{ +} + +// -------------------------------------------------------------------------------------------------------------------- +// Possible template data types + +template<> +bool SubWidget::contains(const Point& pos) const noexcept +{ + return contains(pos.getX(), pos.getY()); +} + +// float, int, uint, short, ushort + +// -------------------------------------------------------------------------------------------------------------------- + +END_NAMESPACE_DGL diff --git a/dgl/src/SubWidgetPrivateData.cpp b/dgl/src/SubWidgetPrivateData.cpp new file mode 100644 index 00000000..342d017a --- /dev/null +++ b/dgl/src/SubWidgetPrivateData.cpp @@ -0,0 +1,42 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "SubWidgetPrivateData.hpp" +#include "WidgetPrivateData.hpp" + +START_NAMESPACE_DGL + +// -------------------------------------------------------------------------------------------------------------------- + +SubWidget::PrivateData::PrivateData(SubWidget* const s, Widget* const pw) + : self(s), + selfw((Widget*)s), + parentWidget(pw), + absolutePos(), + needsFullViewportForDrawing(false), + needsViewportScaling(false) +{ + parentWidget->pData->subWidgets.push_back(self); +} + +SubWidget::PrivateData::~PrivateData() +{ + parentWidget->pData->subWidgets.remove(self); +} + +// -------------------------------------------------------------------------------------------------------------------- + +END_NAMESPACE_DGL diff --git a/dgl/src/SubWidgetPrivateData.hpp b/dgl/src/SubWidgetPrivateData.hpp new file mode 100644 index 00000000..bb8f7bad --- /dev/null +++ b/dgl/src/SubWidgetPrivateData.hpp @@ -0,0 +1,47 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef DGL_SUBWIDGET_PRIVATE_DATA_HPP_INCLUDED +#define DGL_SUBWIDGET_PRIVATE_DATA_HPP_INCLUDED + +#include "../SubWidget.hpp" + +START_NAMESPACE_DGL + +// -------------------------------------------------------------------------------------------------------------------- + +struct SubWidget::PrivateData { + SubWidget* const self; + Widget* const selfw; + Widget* const parentWidget; + Point absolutePos; + bool needsFullViewportForDrawing; // needed for widgets drawing out of bounds + bool needsViewportScaling; // needed for NanoVG + + explicit PrivateData(SubWidget* const s, Widget* const pw); + ~PrivateData(); + + // NOTE display function is different depending on build type, must call displaySubWidgets at the end + void display(uint width, uint height, double autoScaleFactor); + + DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(PrivateData) +}; + +// -------------------------------------------------------------------------------------------------------------------- + +END_NAMESPACE_DGL + +#endif // DGL_SUBWIDGET_PRIVATE_DATA_HPP_INCLUDED diff --git a/dgl/src/TopLevelWidget.cpp b/dgl/src/TopLevelWidget.cpp new file mode 100644 index 00000000..9f68360e --- /dev/null +++ b/dgl/src/TopLevelWidget.cpp @@ -0,0 +1,78 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "TopLevelWidgetPrivateData.hpp" +#include "../Window.hpp" + +START_NAMESPACE_DGL + +// ----------------------------------------------------------------------- + +TopLevelWidget::TopLevelWidget(Window& windowToMapTo) + : Widget(this), + pData(new PrivateData(this, windowToMapTo)) {} + +TopLevelWidget::~TopLevelWidget() +{ + delete pData; +} + +Application& TopLevelWidget::getApp() const noexcept +{ + return pData->window.getApp(); +} + +Window& TopLevelWidget::getWindow() const noexcept +{ + return pData->window; +} + +bool TopLevelWidget::addIdleCallback(IdleCallback* const callback, const uint timerFrequencyInMs) +{ + return pData->window.addIdleCallback(callback, timerFrequencyInMs); +} + +bool TopLevelWidget::removeIdleCallback(IdleCallback* const callback) +{ + return pData->window.removeIdleCallback(callback); +} + +double TopLevelWidget::getScaleFactor() const noexcept +{ + return pData->window.getScaleFactor(); +} + +void TopLevelWidget::repaint() noexcept +{ + pData->window.repaint(); +} + +void TopLevelWidget::repaint(const Rectangle& rect) noexcept +{ + pData->window.repaint(rect); +} + +void TopLevelWidget::setGeometryConstraints(const uint minimumWidth, + const uint minimumHeight, + const bool keepAspectRatio, + const bool automaticallyScale) +{ + pData->window.setGeometryConstraints(minimumWidth, minimumHeight, keepAspectRatio, automaticallyScale); +} + +// ----------------------------------------------------------------------- + +END_NAMESPACE_DGL diff --git a/dgl/src/TopLevelWidgetPrivateData.cpp b/dgl/src/TopLevelWidgetPrivateData.cpp new file mode 100644 index 00000000..5adbca95 --- /dev/null +++ b/dgl/src/TopLevelWidgetPrivateData.cpp @@ -0,0 +1,163 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "TopLevelWidgetPrivateData.hpp" +#include "WidgetPrivateData.hpp" +#include "WindowPrivateData.hpp" +#include "pugl.hpp" + +START_NAMESPACE_DGL + +// ----------------------------------------------------------------------- + +TopLevelWidget::PrivateData::PrivateData(TopLevelWidget* const s, Window& w) + : self(s), + selfw(s), + window(w) +{ + window.pData->topLevelWidget = self; +} + +TopLevelWidget::PrivateData::~PrivateData() +{ + // FIXME? + window.pData->topLevelWidget = nullptr; +} + +bool TopLevelWidget::PrivateData::keyboardEvent(const KeyboardEvent& ev) +{ + // ignore event if we are not visible + if (! selfw->pData->visible) + return false; + + // give top-level widget chance to catch this event first + if (self->onKeyboard(ev)) + return true; + + // propagate event to all subwidgets recursively + return selfw->pData->giveKeyboardEventForSubWidgets(ev); +} + +bool TopLevelWidget::PrivateData::specialEvent(const SpecialEvent& ev) +{ + // ignore event if we are not visible + if (! selfw->pData->visible) + return false; + + // give top-level widget chance to catch this event first + if (self->onSpecial(ev)) + return true; + + // propagate event to all subwidgets recursively + return selfw->pData->giveSpecialEventForSubWidgets(ev); +} + +bool TopLevelWidget::PrivateData::characterInputEvent(const CharacterInputEvent& ev) +{ + // ignore event if we are not visible + if (! selfw->pData->visible) + return false; + + // give top-level widget chance to catch this event first + if (self->onCharacterInput(ev)) + return true; + + // propagate event to all subwidgets recursively + return selfw->pData->giveCharacterInputEventForSubWidgets(ev); +} + +bool TopLevelWidget::PrivateData::mouseEvent(const MouseEvent& ev) +{ + // ignore event if we are not visible + if (! selfw->pData->visible) + return false; + + MouseEvent rev = ev; + + if (window.pData->autoScaling) + { + const double autoScaleFactor = window.pData->autoScaleFactor; + + rev.pos.setX(ev.pos.getX() / autoScaleFactor); + rev.pos.setY(ev.pos.getY() / autoScaleFactor); + } + + // give top-level widget chance to catch this event first + if (self->onMouse(ev)) + return true; + + // propagate event to all subwidgets recursively + return selfw->pData->giveMouseEventForSubWidgets(rev); +} + +bool TopLevelWidget::PrivateData::motionEvent(const MotionEvent& ev) +{ + // ignore event if we are not visible + if (! selfw->pData->visible) + return false; + + MotionEvent rev = ev; + + if (window.pData->autoScaling) + { + const double autoScaleFactor = window.pData->autoScaleFactor; + + rev.pos.setX(ev.pos.getX() / autoScaleFactor); + rev.pos.setY(ev.pos.getY() / autoScaleFactor); + } + + // give top-level widget chance to catch this event first + if (self->onMotion(ev)) + return true; + + // propagate event to all subwidgets recursively + return selfw->pData->giveMotionEventForSubWidgets(rev); +} + +bool TopLevelWidget::PrivateData::scrollEvent(const ScrollEvent& ev) +{ + // ignore event if we are not visible + if (! selfw->pData->visible) + return false; + + ScrollEvent rev = ev; + + if (window.pData->autoScaling) + { + const double autoScaleFactor = window.pData->autoScaleFactor; + + rev.pos.setX(ev.pos.getX() / autoScaleFactor); + rev.pos.setY(ev.pos.getY() / autoScaleFactor); + rev.delta.setX(ev.delta.getX() / autoScaleFactor); + rev.delta.setY(ev.delta.getY() / autoScaleFactor); + } + + // give top-level widget chance to catch this event first + if (self->onScroll(ev)) + return true; + + // propagate event to all subwidgets recursively + return selfw->pData->giveScrollEventForSubWidgets(rev); +} + +void TopLevelWidget::PrivateData::fallbackOnResize() +{ + puglFallbackOnResize(window.pData->view); +} + +// ----------------------------------------------------------------------- + +END_NAMESPACE_DGL diff --git a/dgl/src/TopLevelWidgetPrivateData.hpp b/dgl/src/TopLevelWidgetPrivateData.hpp new file mode 100644 index 00000000..6c882868 --- /dev/null +++ b/dgl/src/TopLevelWidgetPrivateData.hpp @@ -0,0 +1,51 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef DGL_TOP_LEVEL_WIDGET_PRIVATE_DATA_HPP_INCLUDED +#define DGL_TOP_LEVEL_WIDGET_PRIVATE_DATA_HPP_INCLUDED + +#include "../TopLevelWidget.hpp" + +#include + +START_NAMESPACE_DGL + +// ----------------------------------------------------------------------- + +struct TopLevelWidget::PrivateData { + TopLevelWidget* const self; + Widget* const selfw; + Window& window; + + explicit PrivateData(TopLevelWidget* const s, Window& w); + ~PrivateData(); + void display(); + bool keyboardEvent(const KeyboardEvent& ev); + bool specialEvent(const SpecialEvent& ev); + bool characterInputEvent(const CharacterInputEvent& ev); + bool mouseEvent(const MouseEvent& ev); + bool motionEvent(const MotionEvent& ev); + bool scrollEvent(const ScrollEvent& ev); + void fallbackOnResize(); + + DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(PrivateData) +}; + +// ----------------------------------------------------------------------- + +END_NAMESPACE_DGL + +#endif // DGL_TOP_LEVEL_WIDGET_PRIVATE_DATA_HPP_INCLUDED diff --git a/dgl/src/Vulkan.cpp b/dgl/src/Vulkan.cpp new file mode 100644 index 00000000..d18b3c32 --- /dev/null +++ b/dgl/src/Vulkan.cpp @@ -0,0 +1,243 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "../Vulkan.hpp" +#include "../Color.hpp" + +#include "SubWidgetPrivateData.hpp" +#include "TopLevelWidgetPrivateData.hpp" +#include "WidgetPrivateData.hpp" +#include "WindowPrivateData.hpp" + +START_NAMESPACE_DGL + +// ----------------------------------------------------------------------- + +static void notImplemented(const char* const name) +{ + d_stderr2("vulkan function not implemented: %s", name); +} + +// ----------------------------------------------------------------------- +// Color + +void Color::setFor(const GraphicsContext&, bool) +{ + notImplemented("Color::setFor"); +} + +// ----------------------------------------------------------------------- +// Line + +template +void Line::draw(const GraphicsContext&, T) +{ + notImplemented("Line::draw"); +} + +template +void Line::draw() +{ + notImplemented("Line::draw"); +} + +template class Line; +template class Line; +template class Line; +template class Line; +template class Line; +template class Line; + +// ----------------------------------------------------------------------- +// Circle + +template +void Circle::draw(const GraphicsContext&) +{ + notImplemented("Circle::draw"); +} + +template +void Circle::drawOutline(const GraphicsContext&, T) +{ + notImplemented("Circle::drawOutline"); +} + +template +void Circle::draw() +{ + notImplemented("Circle::draw"); +} + +template +void Circle::drawOutline() +{ + notImplemented("Circle::drawOutline"); +} + +template class Circle; +template class Circle; +template class Circle; +template class Circle; +template class Circle; +template class Circle; + +// ----------------------------------------------------------------------- +// Triangle + +template +void Triangle::draw(const GraphicsContext&) +{ + notImplemented("Triangle::draw"); +} + +template +void Triangle::drawOutline(const GraphicsContext&, T) +{ + notImplemented("Triangle::drawOutline"); +} + +template +void Triangle::draw() +{ + notImplemented("Triangle::draw"); +} + +template +void Triangle::drawOutline() +{ + notImplemented("Triangle::drawOutline"); +} + +template class Triangle; +template class Triangle; +template class Triangle; +template class Triangle; +template class Triangle; +template class Triangle; + + +// ----------------------------------------------------------------------- +// Rectangle + +template +void Rectangle::draw(const GraphicsContext&) +{ + notImplemented("Rectangle::draw"); +} + +template +void Rectangle::drawOutline(const GraphicsContext&, T) +{ + notImplemented("Rectangle::drawOutline"); +} + +template +void Rectangle::draw() +{ + notImplemented("Rectangle::draw"); +} + +template +void Rectangle::drawOutline() +{ + notImplemented("Rectangle::drawOutline"); +} + +template class Rectangle; +template class Rectangle; +template class Rectangle; +template class Rectangle; +template class Rectangle; +template class Rectangle; + +// ----------------------------------------------------------------------- +// VulkanImage + +VulkanImage::VulkanImage() + : ImageBase() {} + +VulkanImage::VulkanImage(const char* const rdata, const uint w, const uint h, const ImageFormat fmt) + : ImageBase(rdata, w, h, fmt) {} + +VulkanImage::VulkanImage(const char* const rdata, const Size& s, const ImageFormat fmt) + : ImageBase(rdata, s, fmt) {} + +VulkanImage::VulkanImage(const VulkanImage& image) + : ImageBase(image.rawData, image.size, image.format) {} + +VulkanImage::~VulkanImage() {} + +void VulkanImage::loadFromMemory(const char* const rdata, const Size& s, const ImageFormat fmt) noexcept +{ + ImageBase::loadFromMemory(rdata, s, fmt); +} + +void VulkanImage::drawAt(const GraphicsContext&, const Point&) +{ +} + +VulkanImage& VulkanImage::operator=(const VulkanImage& image) noexcept +{ + rawData = image.rawData; + size = image.size; + format = image.format; + return *this; +} + +// ----------------------------------------------------------------------- + +void SubWidget::PrivateData::display(const uint width, const uint height, const double autoScaleFactor) +{ + // TODO + + selfw->pData->displaySubWidgets(width, height, autoScaleFactor); +} + +// ----------------------------------------------------------------------- + +void TopLevelWidget::PrivateData::display() +{ + if (! selfw->pData->visible) + return; + + const Size size(window.getSize()); + const uint width = size.getWidth(); + const uint height = size.getHeight(); + + const double autoScaleFactor = window.pData->autoScaleFactor; + + // TODO + + // main widget drawing + self->onDisplay(); + + // now draw subwidgets if there are any + selfw->pData->displaySubWidgets(width, height, autoScaleFactor); +} + +// ----------------------------------------------------------------------- + +const GraphicsContext& Window::PrivateData::getGraphicsContext() const noexcept +{ + return (const GraphicsContext&)graphicsContext; +} + +// ----------------------------------------------------------------------- + +END_NAMESPACE_DGL + +// ----------------------------------------------------------------------- diff --git a/dgl/src/Widget.cpp b/dgl/src/Widget.cpp index 4ef69b8e..31095002 100644 --- a/dgl/src/Widget.cpp +++ b/dgl/src/Widget.cpp @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2019 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -15,33 +15,22 @@ */ #include "WidgetPrivateData.hpp" +#include "../TopLevelWidget.hpp" +#include "../Window.hpp" START_NAMESPACE_DGL -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- // Widget -Widget::Widget(Window& parent) - : pData(new PrivateData(this, parent, nullptr, false)) -{ - parent._addWidget(this); -} - -Widget::Widget(Widget* groupWidget) - : pData(new PrivateData(this, groupWidget->getParentWindow(), groupWidget, true)) -{ - pData->parent._addWidget(this); -} +Widget::Widget(TopLevelWidget* const topLevelWidget) + : pData(new PrivateData(this, topLevelWidget)) {} -Widget::Widget(Widget* groupWidget, bool addToSubWidgets) - : pData(new PrivateData(this, groupWidget->getParentWindow(), groupWidget, addToSubWidgets)) -{ - pData->parent._addWidget(this); -} +Widget::Widget(Widget* const parentWidget) + : pData(new PrivateData(this, parentWidget)) {} Widget::~Widget() { - pData->parent._removeWidget(this); delete pData; } @@ -50,13 +39,13 @@ bool Widget::isVisible() const noexcept return pData->visible; } -void Widget::setVisible(bool yesNo) +void Widget::setVisible(bool visible) { - if (pData->visible == yesNo) + if (pData->visible == visible) return; - pData->visible = yesNo; - pData->parent.repaint(); + pData->visible = visible; + repaint(); } void Widget::show() @@ -79,7 +68,7 @@ uint Widget::getHeight() const noexcept return pData->size.getHeight(); } -const Size& Widget::getSize() const noexcept +const Size Widget::getSize() const noexcept { return pData->size; } @@ -96,7 +85,7 @@ void Widget::setWidth(uint width) noexcept pData->size.setWidth(width); onResize(ev); - pData->parent.repaint(); + repaint(); } void Widget::setHeight(uint height) noexcept @@ -111,7 +100,7 @@ void Widget::setHeight(uint height) noexcept pData->size.setHeight(height); onResize(ev); - pData->parent.repaint(); + repaint(); } void Widget::setSize(uint width, uint height) noexcept @@ -131,77 +120,34 @@ void Widget::setSize(const Size& size) noexcept pData->size = size; onResize(ev); - pData->parent.repaint(); -} - -int Widget::getAbsoluteX() const noexcept -{ - return pData->absolutePos.getX(); -} - -int Widget::getAbsoluteY() const noexcept -{ - return pData->absolutePos.getY(); -} - -const Point& Widget::getAbsolutePos() const noexcept -{ - return pData->absolutePos; + repaint(); } -void Widget::setAbsoluteX(int x) noexcept +Application& Widget::getApp() const noexcept { - setAbsolutePos(Point(x, getAbsoluteY())); + DISTRHO_SAFE_ASSERT(pData->topLevelWidget != nullptr); + return pData->topLevelWidget->getApp(); } -void Widget::setAbsoluteY(int y) noexcept +Window& Widget::getWindow() const noexcept { - setAbsolutePos(Point(getAbsoluteX(), y)); + DISTRHO_SAFE_ASSERT(pData->topLevelWidget != nullptr); + return pData->topLevelWidget->getWindow(); } -void Widget::setAbsolutePos(int x, int y) noexcept +const GraphicsContext& Widget::getGraphicsContext() const noexcept { - setAbsolutePos(Point(x, y)); + DISTRHO_SAFE_ASSERT(pData->topLevelWidget != nullptr); + return pData->topLevelWidget->getWindow().getGraphicsContext(); } -void Widget::setAbsolutePos(const Point& pos) noexcept +TopLevelWidget* Widget::getTopLevelWidget() const noexcept { - if (pData->absolutePos == pos) - return; - - PositionChangedEvent ev; - ev.oldPos = pData->absolutePos; - ev.pos = pos; - - pData->absolutePos = pos; - onPositionChanged(ev); - - pData->parent.repaint(); -} - -Application& Widget::getParentApp() const noexcept -{ - return pData->parent.getApp(); -} - -Window& Widget::getParentWindow() const noexcept -{ - return pData->parent; -} - -bool Widget::contains(int x, int y) const noexcept -{ - return (x >= 0 && y >= 0 && static_cast(x) < pData->size.getWidth() && static_cast(y) < pData->size.getHeight()); -} - -bool Widget::contains(const Point& pos) const noexcept -{ - return contains(pos.getX(), pos.getY()); + return pData->topLevelWidget; } void Widget::repaint() noexcept { - pData->parent.repaint(); } uint Widget::getId() const noexcept @@ -224,6 +170,11 @@ bool Widget::onSpecial(const SpecialEvent&) return false; } +bool Widget::onCharacterInput(const CharacterInputEvent&) +{ + return false; +} + bool Widget::onMouse(const MouseEvent&) { return false; @@ -243,10 +194,6 @@ void Widget::onResize(const ResizeEvent&) { } -void Widget::onPositionChanged(const PositionChangedEvent&) -{ -} - -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- END_NAMESPACE_DGL diff --git a/dgl/src/WidgetPrivateData.cpp b/dgl/src/WidgetPrivateData.cpp index cef082b1..0b016490 100644 --- a/dgl/src/WidgetPrivateData.cpp +++ b/dgl/src/WidgetPrivateData.cpp @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2019 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -15,91 +15,204 @@ */ #include "WidgetPrivateData.hpp" - -#ifdef DGL_CAIRO -# include "../Cairo.hpp" -#endif -#ifdef DGL_OPENGL -# include "../OpenGL.hpp" -#endif +#include "SubWidgetPrivateData.hpp" +#include "../TopLevelWidget.hpp" START_NAMESPACE_DGL +#define FOR_EACH_SUBWIDGET(it) \ + for (std::list::iterator it = subWidgets.begin(); it != subWidgets.end(); ++it) + +#define FOR_EACH_SUBWIDGET_INV(rit) \ + for (std::list::reverse_iterator rit = subWidgets.rbegin(); rit != subWidgets.rend(); ++rit) + // ----------------------------------------------------------------------- -void Widget::PrivateData::display(const uint width, - const uint height, - const double scaling, - const bool renderingSubWidget) +Widget::PrivateData::PrivateData(Widget* const s, TopLevelWidget* const tlw) + : self(s), + topLevelWidget(tlw), + parentWidget(nullptr), + id(0), + needsScaling(false), + visible(true), + size(0, 0), + subWidgets() {} + +Widget::PrivateData::PrivateData(Widget* const s, Widget* const pw) + : self(s), + topLevelWidget(findTopLevelWidget(pw)), + parentWidget(pw), + id(0), + needsScaling(false), + visible(true), + size(0, 0), + subWidgets() {} + +Widget::PrivateData::~PrivateData() +{ + subWidgets.clear(); +} + +void Widget::PrivateData::displaySubWidgets(const uint width, const uint height, const double autoScaleFactor) { - if ((skipDisplay && ! renderingSubWidget) || size.isInvalid() || ! visible) + if (subWidgets.size() == 0) return; -#ifdef DGL_OPENGL - bool needsDisableScissor = false; + for (std::list::iterator it = subWidgets.begin(); it != subWidgets.end(); ++it) + { + SubWidget* const subwidget(*it); - // reset color - glColor4f(1.0f, 1.0f, 1.0f, 1.0f); + if (subwidget->isVisible()) + subwidget->pData->display(width, height, autoScaleFactor); + } +} + +// ----------------------------------------------------------------------- + +bool Widget::PrivateData::giveKeyboardEventForSubWidgets(const KeyboardEvent& ev) +{ + if (! visible) + return false; + if (subWidgets.size() == 0) + return false; + + FOR_EACH_SUBWIDGET_INV(rit) + { + SubWidget* const widget(*rit); + + if (widget->isVisible() && widget->onKeyboard(ev)) + return true; + } + + return false; +} + +bool Widget::PrivateData::giveSpecialEventForSubWidgets(const SpecialEvent& ev) +{ + if (! visible) + return false; + if (subWidgets.size() == 0) + return false; + + FOR_EACH_SUBWIDGET_INV(rit) + { + SubWidget* const widget(*rit); + + if (widget->isVisible() && widget->onSpecial(ev)) + return true; + } + + return false; +} + +bool Widget::PrivateData::giveCharacterInputEventForSubWidgets(const CharacterInputEvent& ev) +{ + if (! visible) + return false; + if (subWidgets.size() == 0) + return false; - if (needsFullViewport || (absolutePos.isZero() && size == Size(width, height))) + FOR_EACH_SUBWIDGET_INV(rit) { - // full viewport size - glViewport(0, - -(height * scaling - height), - width * scaling, - height * scaling); + SubWidget* const widget(*rit); + + if (widget->isVisible() && widget->onCharacterInput(ev)) + return true; } - else if (needsScaling) + + return false; +} + +bool Widget::PrivateData::giveMouseEventForSubWidgets(MouseEvent& ev) +{ + if (! visible) + return false; + if (subWidgets.size() == 0) + return false; + + const double x = ev.pos.getX(); + const double y = ev.pos.getY(); + + FOR_EACH_SUBWIDGET_INV(rit) { - // limit viewport to widget bounds - glViewport(absolutePos.getX(), - height - self->getHeight() - absolutePos.getY(), - self->getWidth(), - self->getHeight()); + SubWidget* const widget(*rit); + + if (! widget->isVisible()) + continue; + + ev.pos = Point(x - widget->getAbsoluteX(), + y - widget->getAbsoluteY()); + + if (widget->onMouse(ev)) + return true; } - else + + return false; +} + +bool Widget::PrivateData::giveMotionEventForSubWidgets(MotionEvent& ev) +{ + if (! visible) + return false; + if (subWidgets.size() == 0) + return false; + + const double x = ev.pos.getX(); + const double y = ev.pos.getY(); + + FOR_EACH_SUBWIDGET_INV(rit) { - // only set viewport pos - glViewport(absolutePos.getX() * scaling, - -std::round((height * scaling - height) + (absolutePos.getY() * scaling)), - std::round(width * scaling), - std::round(height * scaling)); - - // then cut the outer bounds - glScissor(absolutePos.getX() * scaling, - height - std::round((self->getHeight() + absolutePos.getY()) * scaling), - std::round(self->getWidth() * scaling), - std::round(self->getHeight() * scaling)); - - glEnable(GL_SCISSOR_TEST); - needsDisableScissor = true; + SubWidget* const widget(*rit); + + if (! widget->isVisible()) + continue; + + ev.pos = Point(x - widget->getAbsoluteX(), + y - widget->getAbsoluteY()); + + if (widget->onMotion(ev)) + return true; } -#endif -#ifdef DGL_CAIRO - cairo_t* cr = parent.getGraphicsContext().cairo; - cairo_matrix_t matrix; - cairo_get_matrix(cr, &matrix); - cairo_translate(cr, absolutePos.getX(), absolutePos.getY()); - // TODO: scaling and cropping -#endif + return false; +} - // display widget - self->onDisplay(); +bool Widget::PrivateData::giveScrollEventForSubWidgets(ScrollEvent& ev) +{ + if (! visible) + return false; + if (subWidgets.size() == 0) + return false; -#ifdef DGL_CAIRO - cairo_set_matrix(cr, &matrix); -#endif + const double x = ev.pos.getX(); + const double y = ev.pos.getY(); -#ifdef DGL_OPENGL - if (needsDisableScissor) + FOR_EACH_SUBWIDGET_INV(rit) { - glDisable(GL_SCISSOR_TEST); - needsDisableScissor = false; + SubWidget* const widget(*rit); + + if (! widget->isVisible()) + continue; + + ev.pos = Point(x - widget->getAbsoluteX(), + y - widget->getAbsoluteY()); + + if (widget->onScroll(ev)) + return true; } -#endif - displaySubWidgets(width, height, scaling); + return false; +} + +// ----------------------------------------------------------------------- + +TopLevelWidget* Widget::PrivateData::findTopLevelWidget(Widget* const pw) +{ + if (pw->pData->topLevelWidget != nullptr) + return pw->pData->topLevelWidget; + if (pw->pData->parentWidget != nullptr) + return findTopLevelWidget(pw->pData->parentWidget); + return nullptr; } // ----------------------------------------------------------------------- diff --git a/dgl/src/WidgetPrivateData.hpp b/dgl/src/WidgetPrivateData.hpp index f48a33bc..ab388522 100644 --- a/dgl/src/WidgetPrivateData.hpp +++ b/dgl/src/WidgetPrivateData.hpp @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2019 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -18,69 +18,44 @@ #define DGL_WIDGET_PRIVATE_DATA_HPP_INCLUDED #include "../Widget.hpp" -#include "../Window.hpp" -#include +#include START_NAMESPACE_DGL -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- struct Widget::PrivateData { Widget* const self; - Window& parent; - Point absolutePos; - Size size; - std::vector subWidgets; - + TopLevelWidget* const topLevelWidget; + Widget* const parentWidget; uint id; - bool needsFullViewport; bool needsScaling; - bool skipDisplay; bool visible; + Size size; + std::list subWidgets; - PrivateData(Widget* const s, Window& p, Widget* groupWidget, bool addToSubWidgets) - : self(s), - parent(p), - absolutePos(0, 0), - size(0, 0), - subWidgets(), - id(0), - needsFullViewport(false), - needsScaling(false), - skipDisplay(false), - visible(true) - { - if (addToSubWidgets && groupWidget != nullptr) - { - skipDisplay = true; - groupWidget->pData->subWidgets.push_back(self); - } - } - - ~PrivateData() - { - subWidgets.clear(); - } + // called via TopLevelWidget + explicit PrivateData(Widget* const s, TopLevelWidget* const tlw); + // called via SubWidget + explicit PrivateData(Widget* const s, Widget* const pw); + ~PrivateData(); - // display function is different depending on build type - void display(const uint width, const uint height, const double scaling, const bool renderingSubWidget); + void displaySubWidgets(uint width, uint height, double autoScaleFactor); - void displaySubWidgets(const uint width, const uint height, const double scaling) - { - for (std::vector::iterator it = subWidgets.begin(); it != subWidgets.end(); ++it) - { - Widget* const widget(*it); - DISTRHO_SAFE_ASSERT_CONTINUE(widget->pData != this); + bool giveKeyboardEventForSubWidgets(const KeyboardEvent& ev); + bool giveSpecialEventForSubWidgets(const SpecialEvent& ev); + bool giveCharacterInputEventForSubWidgets(const CharacterInputEvent& ev); + bool giveMouseEventForSubWidgets(MouseEvent& ev); + bool giveMotionEventForSubWidgets(MotionEvent& ev); + bool giveScrollEventForSubWidgets(ScrollEvent& ev); - widget->pData->display(width, height, scaling, true); - } - } + static TopLevelWidget* findTopLevelWidget(Widget* const w); - DISTRHO_DECLARE_NON_COPY_STRUCT(PrivateData) + DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(PrivateData) }; -// ----------------------------------------------------------------------- +// -------------------------------------------------------------------------------------------------------------------- END_NAMESPACE_DGL diff --git a/dgl/src/Window.cpp b/dgl/src/Window.cpp index 61218b08..27774c2c 100644 --- a/dgl/src/Window.cpp +++ b/dgl/src/Window.cpp @@ -1,8 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2019 Filipe Coelho - * Copyright (C) 2019 Jean Pierre Cimalando - * Copyright (C) 2019 Robin Gareus + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -16,1332 +14,12 @@ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -// we need this for now -//#define PUGL_GRAB_FOCUS 1 +#include "WindowPrivateData.hpp" -#include "../Base.hpp" - -#ifdef DGL_CAIRO -# define PUGL_CAIRO -# include "../Cairo.hpp" -#endif -#ifdef DGL_OPENGL -# define PUGL_OPENGL -# include "../OpenGL.hpp" -#endif - -#include "pugl/pugl.h" - -#if defined(__GNUC__) && (__GNUC__ >= 7) -# pragma GCC diagnostic push -# pragma GCC diagnostic ignored "-Wimplicit-fallthrough" -#endif - -#if defined(DISTRHO_OS_HAIKU) -# define DGL_DEBUG_EVENTS -# include "pugl/pugl_haiku.cpp" -#elif defined(DISTRHO_OS_MAC) -# define PuglWindow DISTRHO_JOIN_MACRO(PuglWindow, DGL_NAMESPACE) -# define PuglOpenGLView DISTRHO_JOIN_MACRO(PuglOpenGLView, DGL_NAMESPACE) -# include "pugl/pugl_osx.m" -#elif defined(DISTRHO_OS_WINDOWS) -# include "pugl/pugl_win.cpp" -# undef max -# undef min -#else -# include -# include -extern "C" { -# include "pugl/pugl_x11.c" -} -#endif - -#if defined(__GNUC__) && (__GNUC__ >= 7) -# pragma GCC diagnostic pop -#endif - -#include "ApplicationPrivateData.hpp" -#include "WidgetPrivateData.hpp" -#include "../StandaloneWindow.hpp" -#include "../../distrho/extra/String.hpp" - -#define FOR_EACH_WIDGET(it) \ - for (std::list::iterator it = fWidgets.begin(); it != fWidgets.end(); ++it) - -#define FOR_EACH_WIDGET_INV(rit) \ - for (std::list::reverse_iterator rit = fWidgets.rbegin(); rit != fWidgets.rend(); ++rit) - -#if defined(DEBUG) && defined(DGL_DEBUG_EVENTS) -# define DBG(msg) std::fprintf(stderr, "%s", msg); -# define DBGp(...) std::fprintf(stderr, __VA_ARGS__); -# define DBGF std::fflush(stderr); -#else -# define DBG(msg) -# define DBGp(...) -# define DBGF -#endif +#include "pugl.hpp" START_NAMESPACE_DGL -// ----------------------------------------------------------------------- -// Window Private - -struct Window::PrivateData { - PrivateData(Application& app, Window* const self) - : fApp(app), - fSelf(self), - fView(puglInit()), - fFirstInit(true), - fVisible(false), - fResizable(true), - fUsingEmbed(false), - fWidth(1), - fHeight(1), - fScaling(1.0), - fAutoScaling(1.0), - fTitle(nullptr), - fWidgets(), - fModal(), -#if defined(DISTRHO_OS_HAIKU) - bApplication(nullptr), - bView(nullptr), - bWindow(nullptr) -#elif defined(DISTRHO_OS_MAC) - fNeedsIdle(true), - mView(nullptr), - mWindow(nullptr), - mParentWindow(nullptr) -# ifndef DGL_FILE_BROWSER_DISABLED - , fOpenFilePanel(nullptr), - fFilePanelDelegate(nullptr) -# endif -#elif defined(DISTRHO_OS_WINDOWS) - hwnd(nullptr), - hwndParent(nullptr) -#else - xDisplay(nullptr), - xWindow(0) -#endif - { - DBG("Creating window without parent..."); DBGF; - init(); - } - - PrivateData(Application& app, Window* const self, Window& parent) - : fApp(app), - fSelf(self), - fView(puglInit()), - fFirstInit(true), - fVisible(false), - fResizable(true), - fUsingEmbed(false), - fWidth(1), - fHeight(1), - fScaling(1.0), - fAutoScaling(1.0), - fTitle(nullptr), - fWidgets(), - fModal(parent.pData), -#if defined(DISTRHO_OS_HAIKU) - bApplication(nullptr), - bView(nullptr), - bWindow(nullptr) -#elif defined(DISTRHO_OS_MAC) - fNeedsIdle(false), - mView(nullptr), - mWindow(nullptr), - mParentWindow(nullptr) -# ifndef DGL_FILE_BROWSER_DISABLED - , fOpenFilePanel(nullptr), - fFilePanelDelegate(nullptr) -# endif -#elif defined(DISTRHO_OS_WINDOWS) - hwnd(nullptr), - hwndParent(nullptr) -#else - xDisplay(nullptr), - xWindow(0) -#endif - { - DBG("Creating window with parent..."); DBGF; - init(); - - const PuglInternals* const parentImpl(parent.pData->fView->impl); - - // NOTE: almost a 1:1 copy of setTransientWinId() -#if defined(DISTRHO_OS_HAIKU) - // TODO -#elif defined(DISTRHO_OS_MAC) - mParentWindow = parentImpl->window; -#elif defined(DISTRHO_OS_WINDOWS) - hwndParent = parentImpl->hwnd; - SetWindowLongPtr(hwnd, GWLP_HWNDPARENT, (LONG_PTR)hwndParent); -#else - XSetTransientForHint(xDisplay, xWindow, parentImpl->win); -#endif - } - - PrivateData(Application& app, Window* const self, const intptr_t parentId, const double scaling, const bool resizable) - : fApp(app), - fSelf(self), - fView(puglInit()), - fFirstInit(true), - fVisible(parentId != 0), - fResizable(resizable), - fUsingEmbed(parentId != 0), - fWidth(1), - fHeight(1), - fScaling(scaling), - fAutoScaling(1.0), - fTitle(nullptr), - fWidgets(), - fModal(), -#if defined(DISTRHO_OS_HAIKU) - bApplication(nullptr), - bView(nullptr), - bWindow(nullptr) -#elif defined(DISTRHO_OS_MAC) - fNeedsIdle(parentId == 0), - mView(nullptr), - mWindow(nullptr), - mParentWindow(nullptr) -# ifndef DGL_FILE_BROWSER_DISABLED - , fOpenFilePanel(nullptr), - fFilePanelDelegate(nullptr) -# endif -#elif defined(DISTRHO_OS_WINDOWS) - hwnd(nullptr), - hwndParent(nullptr) -#else - xDisplay(nullptr), - xWindow(0) -#endif - { - if (fUsingEmbed) - { - DBG("Creating embedded window..."); DBGF; - puglInitWindowParent(fView, parentId); - } - else - { - DBG("Creating window without parent..."); DBGF; - } - - init(); - - if (fUsingEmbed) - { - DBG("NOTE: Embed window is always visible and non-resizable\n"); - puglShowWindow(fView); - fApp.pData->oneShown(); - fFirstInit = false; - } - } - - void init() - { - if (fSelf == nullptr || fView == nullptr) - { - DBG("Failed!\n"); - return; - } - - puglInitUserResizable(fView, fResizable); - puglInitWindowSize(fView, static_cast(fWidth), static_cast(fHeight)); - - puglSetHandle(fView, this); - puglSetDisplayFunc(fView, onDisplayCallback); - puglSetKeyboardFunc(fView, onKeyboardCallback); - puglSetMotionFunc(fView, onMotionCallback); - puglSetMouseFunc(fView, onMouseCallback); - puglSetScrollFunc(fView, onScrollCallback); - puglSetSpecialFunc(fView, onSpecialCallback); - puglSetReshapeFunc(fView, onReshapeCallback); - puglSetCloseFunc(fView, onCloseCallback); -#ifndef DGL_FILE_BROWSER_DISABLED - puglSetFileSelectedFunc(fView, fileBrowserSelectedCallback); -#endif - - puglCreateWindow(fView, nullptr); - - PuglInternals* impl = fView->impl; - -#if defined(DISTRHO_OS_HAIKU) - bApplication = impl->app; - bView = impl->view; - bWindow = impl->window; -#elif defined(DISTRHO_OS_MAC) - mView = impl->view; - mWindow = impl->window; - DISTRHO_SAFE_ASSERT(mView != nullptr); - if (fUsingEmbed) { - DISTRHO_SAFE_ASSERT(mWindow == nullptr); - } else { - DISTRHO_SAFE_ASSERT(mWindow != nullptr); - } -#elif defined(DISTRHO_OS_WINDOWS) - hwnd = impl->hwnd; - DISTRHO_SAFE_ASSERT(hwnd != 0); -#else - xDisplay = impl->display; - xWindow = impl->win; - DISTRHO_SAFE_ASSERT(xWindow != 0); - - if (! fUsingEmbed) - { - const pid_t pid = getpid(); - const Atom _nwp = XInternAtom(xDisplay, "_NET_WM_PID", False); - XChangeProperty(xDisplay, xWindow, _nwp, XA_CARDINAL, 32, PropModeReplace, (const uchar*)&pid, 1); - - const Atom _wt = XInternAtom(xDisplay, "_NET_WM_WINDOW_TYPE", False); - - // Setting the window to both dialog and normal will produce a decorated floating dialog - // Order is important: DIALOG needs to come before NORMAL - const Atom _wts[2] = { - XInternAtom(xDisplay, "_NET_WM_WINDOW_TYPE_DIALOG", False), - XInternAtom(xDisplay, "_NET_WM_WINDOW_TYPE_NORMAL", False) - }; - XChangeProperty(xDisplay, xWindow, _wt, XA_ATOM, 32, PropModeReplace, (const uchar*)&_wts, 2); - } -#endif - puglEnterContext(fView); - - fApp.pData->windows.push_back(fSelf); - - DBG("Success!\n"); - } - - ~PrivateData() - { - DBG("Destroying window..."); DBGF; - - if (fModal.enabled) - { - exec_fini(); - close(); - } - - fWidgets.clear(); - - if (fUsingEmbed) - { - puglHideWindow(fView); - fApp.pData->oneHidden(); - } - - if (fSelf != nullptr) - { - fApp.pData->windows.remove(fSelf); - fSelf = nullptr; - } - - if (fView != nullptr) - { - puglDestroy(fView); - fView = nullptr; - } - - if (fTitle != nullptr) - { - std::free(fTitle); - fTitle = nullptr; - } - -#if defined(DISTRHO_OS_HAIKU) - bApplication = nullptr; - bView = nullptr; - bWindow = nullptr; -#elif defined(DISTRHO_OS_MAC) - mView = nullptr; - mWindow = nullptr; -#elif defined(DISTRHO_OS_WINDOWS) - hwnd = 0; -#else - xDisplay = nullptr; - xWindow = 0; -#endif - -#if defined(DISTRHO_OS_MAC) && !defined(DGL_FILE_BROWSER_DISABLED) - if (fOpenFilePanel) - { - [fOpenFilePanel release]; - fOpenFilePanel = nullptr; - } - if (fFilePanelDelegate) - { - [fFilePanelDelegate release]; - fFilePanelDelegate = nullptr; - } -#endif - - DBG("Success!\n"); - } - - // ------------------------------------------------------------------- - - void close() - { - DBG("Window close\n"); - - if (fUsingEmbed) - return; - - setVisible(false); - - if (! fFirstInit) - { - fApp.pData->oneHidden(); - fFirstInit = true; - } - } - - void exec(const bool lockWait) - { - DBG("Window exec\n"); - exec_init(); - - if (lockWait) - { - for (; fVisible && fModal.enabled;) - { - idle(); - d_msleep(10); - } - - exec_fini(); - } - else - { - idle(); - } - } - - // ------------------------------------------------------------------- - - void exec_init() - { - DBG("Window modal loop starting..."); DBGF; - DISTRHO_SAFE_ASSERT_RETURN(fModal.parent != nullptr, setVisible(true)); - - fModal.enabled = true; - fModal.parent->fModal.childFocus = this; - - fModal.parent->setVisible(true); - setVisible(true); - - DBG("Ok\n"); - } - - void exec_fini() - { - DBG("Window modal loop stopping..."); DBGF; - fModal.enabled = false; - - if (fModal.parent != nullptr) - { - fModal.parent->fModal.childFocus = nullptr; - - // the mouse position probably changed since the modal appeared, - // so send a mouse motion event to the modal's parent window -#if defined(DISTRHO_OS_HAIKU) - // TODO -#elif defined(DISTRHO_OS_MAC) - // TODO -#elif defined(DISTRHO_OS_WINDOWS) - // TODO -#else - int i, wx, wy; - uint u; - ::Window w; - if (XQueryPointer(fModal.parent->xDisplay, fModal.parent->xWindow, &w, &w, &i, &i, &wx, &wy, &u) == True) - fModal.parent->onPuglMotion(wx, wy); -#endif - } - - DBG("Ok\n"); - } - - // ------------------------------------------------------------------- - - void focus() - { - DBG("Window focus\n"); -#if defined(DISTRHO_OS_HAIKU) - if (bWindow != nullptr) - { - if (bWindow->LockLooper()) - { - bWindow->Activate(true); - bWindow->UnlockLooper(); - } - } - else - { - bView->MakeFocus(true); - } -#elif defined(DISTRHO_OS_MAC) - if (mWindow != nullptr) - [mWindow makeKeyWindow]; -#elif defined(DISTRHO_OS_WINDOWS) - SetForegroundWindow(hwnd); - SetActiveWindow(hwnd); - SetFocus(hwnd); -#else - XRaiseWindow(xDisplay, xWindow); - XSetInputFocus(xDisplay, xWindow, RevertToPointerRoot, CurrentTime); - XFlush(xDisplay); -#endif - } - - // ------------------------------------------------------------------- - - void setVisible(const bool yesNo) - { - if (fVisible == yesNo) - { - DBG("Window setVisible matches current state, ignoring request\n"); - return; - } - if (fUsingEmbed) - { - DBG("Window setVisible cannot be called when embedded\n"); - return; - } - - DBG("Window setVisible called\n"); - - fVisible = yesNo; - - if (yesNo && fFirstInit) - setSize(fWidth, fHeight, true); - -#if defined(DISTRHO_OS_HAIKU) - if (bWindow != nullptr) - { - if (bWindow->LockLooper()) - { - if (yesNo) - bWindow->Show(); - else - bWindow->Hide(); - - // TODO use flush? - bWindow->Sync(); - bWindow->UnlockLooper(); - } - } - else - { - if (yesNo) - bView->Show(); - else - bView->Hide(); - } -#elif defined(DISTRHO_OS_MAC) - if (yesNo) - { - if (mWindow != nullptr) - { - if (mParentWindow != nullptr) - [mParentWindow addChildWindow:mWindow - ordered:NSWindowAbove]; - - [mWindow setIsVisible:YES]; - } - else - { - [mView setHidden:NO]; - } - } - else - { - if (mWindow != nullptr) - { - if (mParentWindow != nullptr) - [mParentWindow removeChildWindow:mWindow]; - - [mWindow setIsVisible:NO]; - } - else - { - [mView setHidden:YES]; - } - } -#elif defined(DISTRHO_OS_WINDOWS) - if (yesNo) - { - if (fFirstInit) - { - RECT rectChild, rectParent; - - if (hwndParent != nullptr && - GetWindowRect(hwnd, &rectChild) && - GetWindowRect(hwndParent, &rectParent)) - { - SetWindowPos(hwnd, hwndParent, - rectParent.left + (rectChild.right-rectChild.left)/2, - rectParent.top + (rectChild.bottom-rectChild.top)/2, - 0, 0, SWP_SHOWWINDOW|SWP_NOSIZE); - } - else - { - ShowWindow(hwnd, SW_SHOWNORMAL); - } - } - else - { - ShowWindow(hwnd, SW_RESTORE); - } - } - else - { - ShowWindow(hwnd, SW_HIDE); - } - - UpdateWindow(hwnd); -#else - if (yesNo) - XMapRaised(xDisplay, xWindow); - else - XUnmapWindow(xDisplay, xWindow); - - XFlush(xDisplay); -#endif - - if (yesNo) - { - if (fFirstInit) - { - fApp.pData->oneShown(); - fFirstInit = false; - } - } - else if (fModal.enabled) - exec_fini(); - } - - // ------------------------------------------------------------------- - - void setResizable(const bool yesNo) - { - if (fResizable == yesNo) - { - DBG("Window setResizable matches current state, ignoring request\n"); - return; - } - if (fUsingEmbed) - { - DBG("Window setResizable cannot be called when embedded\n"); - return; - } - - DBG("Window setResizable called\n"); - - fResizable = yesNo; - fView->user_resizable = yesNo; - -#if defined(DISTRHO_OS_HAIKU) - // TODO - // B_NO_BORDER - // B_TITLED_WINDOW_LOOK - // bWindow->SetFlags(); -#elif defined(DISTRHO_OS_MAC) - const uint flags = yesNo ? (NSViewWidthSizable|NSViewHeightSizable) : 0x0; - [mView setAutoresizingMask:flags]; -#elif defined(DISTRHO_OS_WINDOWS) - const int winFlags = fResizable ? GetWindowLong(hwnd, GWL_STYLE) | WS_SIZEBOX - : GetWindowLong(hwnd, GWL_STYLE) & ~WS_SIZEBOX; - SetWindowLong(hwnd, GWL_STYLE, winFlags); -#endif - - setSize(fWidth, fHeight, true); - } - - // ------------------------------------------------------------------- - - void setGeometryConstraints(uint width, uint height, bool aspect) - { - // Did you forget to set DISTRHO_UI_USER_RESIZABLE ? - DISTRHO_SAFE_ASSERT_RETURN(fResizable,); - - fView->min_width = width; - fView->min_height = height; - puglUpdateGeometryConstraints(fView, width, height, aspect); - } - - // ------------------------------------------------------------------- - - void setSize(uint width, uint height, const bool forced = false) - { - if (width <= 1 || height <= 1) - { - DBGp("Window setSize called with invalid value(s) %i %i, ignoring request\n", width, height); - return; - } - - if (fWidth == width && fHeight == height && ! forced) - { - DBGp("Window setSize matches current size, ignoring request (%i %i)\n", width, height); - return; - } - - fWidth = width; - fHeight = height; - - DBGp("Window setSize called %s, size %i %i, resizable %s\n", forced ? "(forced)" : "(not forced)", width, height, fResizable?"true":"false"); - -#if defined(DISTRHO_OS_HAIKU) - bView->ResizeTo(width, height); - - if (bWindow != nullptr && bWindow->LockLooper()) - { - bWindow->MoveTo(50, 50); - bWindow->ResizeTo(width, height); - - if (! forced) - bWindow->Flush(); - - bWindow->UnlockLooper(); - } - // TODO resizable -#elif defined(DISTRHO_OS_MAC) - [mView setFrame:NSMakeRect(0, 0, width, height)]; - - if (mWindow != nullptr) - { - const NSSize size = NSMakeSize(width, height); - [mWindow setContentSize:size]; - - if (fResizable) - { - [mWindow setContentMinSize:NSMakeSize(1, 1)]; - [mWindow setContentMaxSize:NSMakeSize(99999, 99999)]; - [[mWindow standardWindowButton:NSWindowZoomButton] setHidden:NO]; - } - else - { - [mWindow setContentMinSize:size]; - [mWindow setContentMaxSize:size]; - [[mWindow standardWindowButton:NSWindowZoomButton] setHidden:YES]; - } - } -#elif defined(DISTRHO_OS_WINDOWS) - const int winFlags = WS_POPUPWINDOW | WS_CAPTION | (fResizable ? WS_SIZEBOX : 0x0); - RECT wr = { 0, 0, static_cast(width), static_cast(height) }; - AdjustWindowRectEx(&wr, fUsingEmbed ? WS_CHILD : winFlags, FALSE, WS_EX_TOPMOST); - - SetWindowPos(hwnd, 0, 0, 0, wr.right-wr.left, wr.bottom-wr.top, - SWP_NOACTIVATE|SWP_NOMOVE|SWP_NOOWNERZORDER|SWP_NOZORDER); - - if (! forced) - UpdateWindow(hwnd); -#else - - if (! fResizable) - { - XSizeHints sizeHints; - memset(&sizeHints, 0, sizeof(sizeHints)); - - sizeHints.flags = PSize|PMinSize|PMaxSize; - sizeHints.width = static_cast(width); - sizeHints.height = static_cast(height); - sizeHints.min_width = static_cast(width); - sizeHints.min_height = static_cast(height); - sizeHints.max_width = static_cast(width); - sizeHints.max_height = static_cast(height); - - XSetWMNormalHints(xDisplay, xWindow, &sizeHints); - } - - XResizeWindow(xDisplay, xWindow, width, height); - - if (! forced) - XFlush(xDisplay); -#endif - - puglPostRedisplay(fView); - } - - // ------------------------------------------------------------------- - - const char* getTitle() const noexcept - { - static const char* const kFallback = ""; - - return fTitle != nullptr ? fTitle : kFallback; - } - - void setTitle(const char* const title) - { - DBGp("Window setTitle \"%s\"\n", title); - - if (fTitle != nullptr) - std::free(fTitle); - - fTitle = strdup(title); - -#if defined(DISTRHO_OS_HAIKU) - if (bWindow != nullptr&& bWindow->LockLooper()) - { - bWindow->SetTitle(title); - bWindow->UnlockLooper(); - } -#elif defined(DISTRHO_OS_MAC) - if (mWindow != nullptr) - { - NSString* titleString = [[NSString alloc] - initWithBytes:title - length:strlen(title) - encoding:NSUTF8StringEncoding]; - - [mWindow setTitle:titleString]; - } -#elif defined(DISTRHO_OS_WINDOWS) - SetWindowTextA(hwnd, title); -#else - XStoreName(xDisplay, xWindow, title); - Atom netWmName = XInternAtom(xDisplay, "_NET_WM_NAME", False); - Atom utf8String = XInternAtom(xDisplay, "UTF8_STRING", False); - XChangeProperty(xDisplay, xWindow, netWmName, utf8String, 8, PropModeReplace, (unsigned char *)title, strlen(title)); -#endif - } - - void setTransientWinId(const uintptr_t winId) - { - DISTRHO_SAFE_ASSERT_RETURN(winId != 0,); - -#if defined(DISTRHO_OS_HAIKU) - // TODO -#elif defined(DISTRHO_OS_MAC) - NSWindow* const parentWindow = [NSApp windowWithWindowNumber:winId]; - DISTRHO_SAFE_ASSERT_RETURN(parentWindow != nullptr,); - - [parentWindow addChildWindow:mWindow - ordered:NSWindowAbove]; -#elif defined(DISTRHO_OS_WINDOWS) - hwndParent = (HWND)winId; - SetWindowLongPtr(hwnd, GWLP_HWNDPARENT, (LONG_PTR)winId); -#else - XSetTransientForHint(xDisplay, xWindow, static_cast< ::Window>(winId)); -#endif - } - - // ------------------------------------------------------------------- - - double getScaling() const noexcept - { - return fScaling; - } - - void setAutoScaling(const double scaling) noexcept - { - DISTRHO_SAFE_ASSERT_RETURN(scaling > 0.0,); - - fAutoScaling = scaling; - } - - // ------------------------------------------------------------------- - - bool getIgnoringKeyRepeat() const noexcept - { - return fView->ignoreKeyRepeat; - } - - void setIgnoringKeyRepeat(bool ignore) noexcept - { - puglIgnoreKeyRepeat(fView, ignore); - } - - // ------------------------------------------------------------------- - - void addWidget(Widget* const widget) - { - fWidgets.push_back(widget); - } - - void removeWidget(Widget* const widget) - { - fWidgets.remove(widget); - } - - void idle() - { - puglProcessEvents(fView); - -#ifdef DISTRHO_OS_HAIKU - if (bApplication != nullptr) - { - // bApplication->Lock(); - // bApplication->Loop(); - // bApplication->Unlock(); - } -#endif - -#ifdef DISTRHO_OS_MAC - if (fNeedsIdle) - { - NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; - NSEvent* event; - - for (;;) - { - event = [NSApp - nextEventMatchingMask:NSAnyEventMask - untilDate:[NSDate distantPast] - inMode:NSDefaultRunLoopMode - dequeue:YES]; - - if (event == nil) - break; - - [NSApp sendEvent: event]; - } - - [pool release]; - } -#endif - -#if defined(DISTRHO_OS_WINDOWS) && !defined(DGL_FILE_BROWSER_DISABLED) - if (fSelectedFile.isNotEmpty()) - { - char* const buffer = fSelectedFile.getAndReleaseBuffer(); - fView->fileSelectedFunc(fView, buffer); - std::free(buffer); - } -#endif - - if (fModal.enabled && fModal.parent != nullptr) - fModal.parent->idle(); - } - - // ------------------------------------------------------------------- - - void onPuglDisplay() - { - fSelf->onDisplayBefore(); - - FOR_EACH_WIDGET(it) - { - Widget* const widget(*it); - widget->pData->display(fWidth, fHeight, fAutoScaling, false); - } - - fSelf->onDisplayAfter(); - } - - int onPuglKeyboard(const bool press, const uint key) - { - DBGp("PUGL: onKeyboard : %i %i\n", press, key); - - if (fModal.childFocus != nullptr) - { - fModal.childFocus->focus(); - return 0; - } - - Widget::KeyboardEvent ev; - ev.press = press; - ev.key = key; - ev.mod = static_cast(puglGetModifiers(fView)); - ev.time = puglGetEventTimestamp(fView); - - FOR_EACH_WIDGET_INV(rit) - { - Widget* const widget(*rit); - - if (widget->isVisible() && widget->onKeyboard(ev)) - return 0; - } - - return 1; - } - - int onPuglSpecial(const bool press, const Key key) - { - DBGp("PUGL: onSpecial : %i %i\n", press, key); - - if (fModal.childFocus != nullptr) - { - fModal.childFocus->focus(); - return 0; - } - - Widget::SpecialEvent ev; - ev.press = press; - ev.key = key; - ev.mod = static_cast(puglGetModifiers(fView)); - ev.time = puglGetEventTimestamp(fView); - - FOR_EACH_WIDGET_INV(rit) - { - Widget* const widget(*rit); - - if (widget->isVisible() && widget->onSpecial(ev)) - return 0; - } - - return 1; - } - - void onPuglMouse(const int button, const bool press, int x, int y) - { - DBGp("PUGL: onMouse : %i %i %i %i\n", button, press, x, y); - - // FIXME - pugl sends 2 of these for each window on init, don't ask me why. we'll ignore it - if (press && button == 0 && x == 0 && y == 0) return; - - if (fModal.childFocus != nullptr) - return fModal.childFocus->focus(); - - x /= fAutoScaling; - y /= fAutoScaling; - - Widget::MouseEvent ev; - ev.button = button; - ev.press = press; - ev.mod = static_cast(puglGetModifiers(fView)); - ev.time = puglGetEventTimestamp(fView); - - FOR_EACH_WIDGET_INV(rit) - { - Widget* const widget(*rit); - - ev.pos = Point(x-widget->getAbsoluteX(), y-widget->getAbsoluteY()); - - if (widget->isVisible() && widget->onMouse(ev)) - break; - } - } - - void onPuglMotion(int x, int y) - { - // DBGp("PUGL: onMotion : %i %i\n", x, y); - - if (fModal.childFocus != nullptr) - return; - - x /= fAutoScaling; - y /= fAutoScaling; - - Widget::MotionEvent ev; - ev.mod = static_cast(puglGetModifiers(fView)); - ev.time = puglGetEventTimestamp(fView); - - FOR_EACH_WIDGET_INV(rit) - { - Widget* const widget(*rit); - - ev.pos = Point(x-widget->getAbsoluteX(), y-widget->getAbsoluteY()); - - if (widget->isVisible() && widget->onMotion(ev)) - break; - } - } - - void onPuglScroll(int x, int y, float dx, float dy) - { - DBGp("PUGL: onScroll : %i %i %f %f\n", x, y, dx, dy); - - if (fModal.childFocus != nullptr) - return; - - x /= fAutoScaling; - y /= fAutoScaling; - dx /= fAutoScaling; - dy /= fAutoScaling; - - Widget::ScrollEvent ev; - ev.delta = Point(dx, dy); - ev.mod = static_cast(puglGetModifiers(fView)); - ev.time = puglGetEventTimestamp(fView); - - FOR_EACH_WIDGET_INV(rit) - { - Widget* const widget(*rit); - - ev.pos = Point(x-widget->getAbsoluteX(), y-widget->getAbsoluteY()); - - if (widget->isVisible() && widget->onScroll(ev)) - break; - } - } - - void onPuglReshape(const int width, const int height) - { - DBGp("PUGL: onReshape : %i %i\n", width, height); - - if (width <= 1 && height <= 1) - return; - - fWidth = static_cast(width); - fHeight = static_cast(height); - - fSelf->onReshape(fWidth, fHeight); - - FOR_EACH_WIDGET(it) - { - Widget* const widget(*it); - - if (widget->pData->needsFullViewport) - widget->setSize(fWidth, fHeight); - } - } - - void onPuglClose() - { - DBG("PUGL: onClose\n"); - - if (fModal.enabled) - exec_fini(); - - fSelf->onClose(); - - if (fModal.childFocus != nullptr) - fModal.childFocus->fSelf->onClose(); - - close(); - } - - // ------------------------------------------------------------------- - - bool handlePluginKeyboard(const bool press, const uint key) - { - DBGp("PUGL: handlePluginKeyboard : %i %i\n", press, key); - - if (fModal.childFocus != nullptr) - { - fModal.childFocus->focus(); - return true; - } - - Widget::KeyboardEvent ev; - ev.press = press; - ev.key = key; - ev.mod = static_cast(fView->mods); - ev.time = 0; - - if ((ev.mod & kModifierShift) != 0 && ev.key >= 'a' && ev.key <= 'z') - ev.key -= 'a' - 'A'; // a-z -> A-Z - - FOR_EACH_WIDGET_INV(rit) - { - Widget* const widget(*rit); - - if (widget->isVisible() && widget->onKeyboard(ev)) - return true; - } - - return false; - } - - bool handlePluginSpecial(const bool press, const Key key) - { - DBGp("PUGL: handlePluginSpecial : %i %i\n", press, key); - - if (fModal.childFocus != nullptr) - { - fModal.childFocus->focus(); - return true; - } - - int mods = 0x0; - - switch (key) - { - case kKeyShift: - mods |= kModifierShift; - break; - case kKeyControl: - mods |= kModifierControl; - break; - case kKeyAlt: - mods |= kModifierAlt; - break; - default: - break; - } - - if (mods != 0x0) - { - if (press) - fView->mods |= mods; - else - fView->mods &= ~(mods); - } - - Widget::SpecialEvent ev; - ev.press = press; - ev.key = key; - ev.mod = static_cast(fView->mods); - ev.time = 0; - - FOR_EACH_WIDGET_INV(rit) - { - Widget* const widget(*rit); - - if (widget->isVisible() && widget->onSpecial(ev)) - return true; - } - - return false; - } - -#if defined(DISTRHO_OS_MAC) && !defined(DGL_FILE_BROWSER_DISABLED) - static void openPanelDidEnd(NSOpenPanel* panel, int returnCode, void *userData) - { - PrivateData* pData = (PrivateData*)userData; - - if (returnCode == NSOKButton) - { - NSArray* urls = [panel URLs]; - NSURL* fileUrl = nullptr; - - for (NSUInteger i = 0, n = [urls count]; i < n && !fileUrl; ++i) - { - NSURL* url = (NSURL*)[urls objectAtIndex:i]; - if ([url isFileURL]) - fileUrl = url; - } - - if (fileUrl) - { - PuglView* view = pData->fView; - if (view->fileSelectedFunc) - { - const char* fileName = [fileUrl.path UTF8String]; - view->fileSelectedFunc(view, fileName); - } - } - } - - [pData->fOpenFilePanel release]; - pData->fOpenFilePanel = nullptr; - } -#endif - - // ------------------------------------------------------------------- - - Application& fApp; - Window* fSelf; - GraphicsContext fContext; - PuglView* fView; - - bool fFirstInit; - bool fVisible; - bool fResizable; - bool fUsingEmbed; - uint fWidth; - uint fHeight; - double fScaling; - double fAutoScaling; - char* fTitle; - std::list fWidgets; - - struct Modal { - bool enabled; - PrivateData* parent; - PrivateData* childFocus; - - Modal() - : enabled(false), - parent(nullptr), - childFocus(nullptr) {} - - Modal(PrivateData* const p) - : enabled(false), - parent(p), - childFocus(nullptr) {} - - ~Modal() - { - DISTRHO_SAFE_ASSERT(! enabled); - DISTRHO_SAFE_ASSERT(childFocus == nullptr); - } - - DISTRHO_DECLARE_NON_COPY_STRUCT(Modal) - } fModal; - -#if defined(DISTRHO_OS_HAIKU) - BApplication* bApplication; - BView* bView; - BWindow* bWindow; -#elif defined(DISTRHO_OS_MAC) - bool fNeedsIdle; - NSView* mView; - id mWindow; - id mParentWindow; -# ifndef DGL_FILE_BROWSER_DISABLED - NSOpenPanel* fOpenFilePanel; - id fFilePanelDelegate; -# endif -#elif defined(DISTRHO_OS_WINDOWS) - HWND hwnd; - HWND hwndParent; -# ifndef DGL_FILE_BROWSER_DISABLED - String fSelectedFile; -# endif -#else - Display* xDisplay; - ::Window xWindow; -#endif - - // ------------------------------------------------------------------- - // Callbacks - - #define handlePtr ((PrivateData*)puglGetHandle(view)) - - static void onDisplayCallback(PuglView* view) - { - handlePtr->onPuglDisplay(); - } - - static int onKeyboardCallback(PuglView* view, bool press, uint32_t key) - { - return handlePtr->onPuglKeyboard(press, key); - } - - static int onSpecialCallback(PuglView* view, bool press, PuglKey key) - { - return handlePtr->onPuglSpecial(press, static_cast(key)); - } - - static void onMouseCallback(PuglView* view, int button, bool press, int x, int y) - { - handlePtr->onPuglMouse(button, press, x, y); - } - - static void onMotionCallback(PuglView* view, int x, int y) - { - handlePtr->onPuglMotion(x, y); - } - - static void onScrollCallback(PuglView* view, int x, int y, float dx, float dy) - { - handlePtr->onPuglScroll(x, y, dx, dy); - } - - static void onReshapeCallback(PuglView* view, int width, int height) - { - handlePtr->onPuglReshape(width, height); - } - - static void onCloseCallback(PuglView* view) - { - handlePtr->onPuglClose(); - } - -#ifndef DGL_FILE_BROWSER_DISABLED - static void fileBrowserSelectedCallback(PuglView* view, const char* filename) - { - handlePtr->fSelf->fileBrowserSelected(filename); - } -#endif - - #undef handlePtr - - DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(PrivateData) -}; - // ----------------------------------------------------------------------- // Window @@ -1349,478 +27,286 @@ Window::Window(Application& app) : pData(new PrivateData(app, this)) {} Window::Window(Application& app, Window& parent) - : pData(new PrivateData(app, this, parent)) {} - -Window::Window(Application& app, intptr_t parentId, double scaling, bool resizable) - : pData(new PrivateData(app, this, parentId, scaling, resizable)) {} + : pData(new PrivateData(app, this, parent.pData)) {} + +Window::Window(Application& app, + const uintptr_t parentWindowHandle, + const double scaleFactor, + const bool resizable) + : pData(new PrivateData(app, this, parentWindowHandle, scaleFactor, resizable)) {} + +Window::Window(Application& app, + const uintptr_t parentWindowHandle, + const uint width, + const uint height, + const double scaleFactor, + const bool resizable) + : pData(new PrivateData(app, this, parentWindowHandle, width, height, scaleFactor, resizable)) {} Window::~Window() { delete pData; } -void Window::show() +bool Window::isEmbed() const noexcept { - pData->setVisible(true); + return pData->isEmbed; } -void Window::hide() +bool Window::isVisible() const noexcept { - pData->setVisible(false); + return pData->isVisible; } -void Window::close() +void Window::setVisible(const bool visible) { - pData->close(); + if (visible) + pData->show(); + else + pData->hide(); } -void Window::exec(bool lockWait) +void Window::show() { - pData->exec(lockWait); + pData->show(); } -void Window::focus() +void Window::hide() { - pData->focus(); + pData->hide(); } -void Window::repaint() noexcept +void Window::close() { - puglPostRedisplay(pData->fView); + pData->close(); } -// static int fib_filter_filename_filter(const char* const name) -// { -// return 1; -// (void)name; -// } - -#ifndef DGL_FILE_BROWSER_DISABLED - -#ifdef DISTRHO_OS_MAC -END_NAMESPACE_DGL -@interface FilePanelDelegate : NSObject +bool Window::isResizable() const noexcept { - void (*fCallback)(NSOpenPanel*, int, void*); - void* fUserData; + return puglGetViewHint(pData->view, PUGL_RESIZABLE) == PUGL_TRUE; } --(id)initWithCallback:(void(*)(NSOpenPanel*, int, void*))callback userData:(void*)userData; --(void)openPanelDidEnd:(NSOpenPanel *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo; -@end -START_NAMESPACE_DGL -#endif -bool Window::openFileBrowser(const FileBrowserOptions& options) +void Window::setResizable(const bool resizable) { -# ifdef SOFD_HAVE_X11 - using DISTRHO_NAMESPACE::String; - - // -------------------------------------------------------------------------- - // configure start dir - - // TODO: get abspath if needed - // TODO: cross-platform - - String startDir(options.startDir); - -# ifdef DISTRHO_OS_LINUX - if (startDir.isEmpty()) - { - if (char* const dir_name = get_current_dir_name()) - { - startDir = dir_name; - std::free(dir_name); - } - } -# endif - - DISTRHO_SAFE_ASSERT_RETURN(startDir.isNotEmpty(), false); - - if (! startDir.endsWith('/')) - startDir += "/"; - - DISTRHO_SAFE_ASSERT_RETURN(x_fib_configure(0, startDir) == 0, false); - - // -------------------------------------------------------------------------- - // configure title - - String title(options.title); - - if (title.isEmpty()) - { - title = pData->getTitle(); - - if (title.isEmpty()) - title = "FileBrowser"; - } - - DISTRHO_SAFE_ASSERT_RETURN(x_fib_configure(1, title) == 0, false); - - // -------------------------------------------------------------------------- - // configure filters - - x_fib_cfg_filter_callback(nullptr); //fib_filter_filename_filter); - - // -------------------------------------------------------------------------- - // configure buttons - - x_fib_cfg_buttons(3, options.buttons.listAllFiles-1); - x_fib_cfg_buttons(1, options.buttons.showHidden-1); - x_fib_cfg_buttons(2, options.buttons.showPlaces-1); - - // -------------------------------------------------------------------------- - // show - - return (x_fib_show(pData->xDisplay, pData->xWindow, /*options.width*/0, /*options.height*/0) == 0); -# elif defined(DISTRHO_OS_WINDOWS) - // the old and compatible dialog API - OPENFILENAMEW ofn; - memset(&ofn, 0, sizeof(ofn)); - - ofn.lStructSize = sizeof(ofn); - ofn.hwndOwner = pData->hwnd; - - // set initial directory in UTF-16 coding - std::vector startDirW; - if (options.startDir) - { - startDirW.resize(strlen(options.startDir) + 1); - if (MultiByteToWideChar(CP_UTF8, 0, options.startDir, -1, startDirW.data(), startDirW.size())) - ofn.lpstrInitialDir = startDirW.data(); - } - - // set title in UTF-16 coding - std::vector titleW; - if (options.title) - { - titleW.resize(strlen(options.title) + 1); - if (MultiByteToWideChar(CP_UTF8, 0, options.title, -1, titleW.data(), titleW.size())) - ofn.lpstrTitle = titleW.data(); - } - - // prepare a buffer to receive the result - std::vector fileNameW(32768); // the Unicode maximum - ofn.lpstrFile = fileNameW.data(); - ofn.nMaxFile = (DWORD)fileNameW.size(); - - // TODO synchronous only, can't do better with WinAPI native dialogs. - // threading might work, if someone is motivated to risk it. - if (GetOpenFileNameW(&ofn)) - { - // back to UTF-8 - std::vector fileNameA(4 * 32768); - if (WideCharToMultiByte(CP_UTF8, 0, fileNameW.data(), -1, fileNameA.data(), (int)fileNameA.size(), nullptr, nullptr)) - { - // handle it during the next idle cycle (fake async) - pData->fSelectedFile = fileNameA.data(); - } - } - - return true; -# elif defined(DISTRHO_OS_MAC) - if (pData->fOpenFilePanel) // permit one dialog at most - { - [pData->fOpenFilePanel makeKeyAndOrderFront:nil]; - return false; - } - - NSOpenPanel* panel = [NSOpenPanel openPanel]; - pData->fOpenFilePanel = [panel retain]; - - [panel setCanChooseFiles:YES]; - [panel setCanChooseDirectories:NO]; - [panel setAllowsMultipleSelection:NO]; - - if (options.startDir) - [panel setDirectory:[NSString stringWithUTF8String:options.startDir]]; - - if (options.title) - { - NSString* titleString = [[NSString alloc] - initWithBytes:options.title - length:strlen(options.title) - encoding:NSUTF8StringEncoding]; - [panel setTitle:titleString]; - } - - id delegate = pData->fFilePanelDelegate; - if (!delegate) - { - delegate = [[FilePanelDelegate alloc] initWithCallback:&PrivateData::openPanelDidEnd - userData:pData]; - pData->fFilePanelDelegate = [delegate retain]; - } - - [panel beginSheetForDirectory:nullptr - file:nullptr - modalForWindow:nullptr - modalDelegate:delegate - didEndSelector:@selector(openPanelDidEnd:returnCode:contextInfo:) - contextInfo:nullptr]; - - return true; -# else - // not implemented - return false; - - // unused - (void)options; -# endif + pData->setResizable(resizable); } -#ifdef DISTRHO_OS_MAC -END_NAMESPACE_DGL -@implementation FilePanelDelegate --(id)initWithCallback:(void(*)(NSOpenPanel*, int, void*))callback userData:(void *)userData +uint Window::getWidth() const noexcept { - [super init]; - self->fCallback = callback; - self->fUserData = userData; - return self; + const double width = puglGetFrame(pData->view).width; + DISTRHO_SAFE_ASSERT_RETURN(width >= 0.0, 0); + return static_cast(width + 0.5); } --(void)openPanelDidEnd:(NSOpenPanel *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo +uint Window::getHeight() const noexcept { - self->fCallback(sheet, returnCode, self->fUserData); - (void)contextInfo; + const double height = puglGetFrame(pData->view).height; + DISTRHO_SAFE_ASSERT_RETURN(height >= 0.0, 0); + return static_cast(height + 0.5); } -@end -START_NAMESPACE_DGL -#endif -#endif // !defined(DGL_FILE_BROWSER_DISABLED) - -bool Window::isEmbed() const noexcept +Size Window::getSize() const noexcept { - return pData->fUsingEmbed; + const PuglRect rect = puglGetFrame(pData->view); + DISTRHO_SAFE_ASSERT_RETURN(rect.width >= 0.0, Size()); + DISTRHO_SAFE_ASSERT_RETURN(rect.height >= 0.0, Size()); + return Size(static_cast(rect.width + 0.5), + static_cast(rect.height + 0.5)); } -bool Window::isVisible() const noexcept +void Window::setWidth(const uint width) { - return pData->fVisible; + setSize(width, getHeight()); } -void Window::setVisible(bool yesNo) +void Window::setHeight(const uint height) { - pData->setVisible(yesNo); + setSize(getWidth(), height); } -bool Window::isResizable() const noexcept +void Window::setSize(const uint width, const uint height) { - return pData->fResizable; -} + DISTRHO_SAFE_ASSERT_UINT2_RETURN(width > 1 && height > 1, width, height,); -void Window::setResizable(bool yesNo) -{ - pData->setResizable(yesNo); -} + // FIXME add default and min props for this + if (pData->minWidth == 0 && pData->minHeight == 0) + puglSetDefaultSize(pData->view, static_cast(width), static_cast(height)); -void Window::setGeometryConstraints(uint width, uint height, bool aspect) -{ - pData->setGeometryConstraints(width, height, aspect); + puglSetWindowSize(pData->view, width, height); } -uint Window::getWidth() const noexcept +void Window::setSize(const Size& size) { - return pData->fWidth; + setSize(size.getWidth(), size.getHeight()); } -uint Window::getHeight() const noexcept +const char* Window::getTitle() const noexcept { - return pData->fHeight; + return puglGetWindowTitle(pData->view); } -Size Window::getSize() const noexcept +void Window::setTitle(const char* const title) { - return Size(pData->fWidth, pData->fHeight); + puglSetWindowTitle(pData->view, title); } -void Window::setSize(uint width, uint height) +bool Window::isIgnoringKeyRepeat() const noexcept { - pData->setSize(width, height); + return puglGetViewHint(pData->view, PUGL_IGNORE_KEY_REPEAT) == PUGL_TRUE; } -void Window::setSize(Size size) +void Window::setIgnoringKeyRepeat(const bool ignore) noexcept { - pData->setSize(size.getWidth(), size.getHeight()); + puglSetViewHint(pData->view, PUGL_IGNORE_KEY_REPEAT, ignore); } -const char* Window::getTitle() const noexcept +bool Window::addIdleCallback(IdleCallback* const callback, const uint timerFrequencyInMs) { - return pData->getTitle(); -} + DISTRHO_SAFE_ASSERT_RETURN(callback != nullptr, false) -void Window::setTitle(const char* title) -{ - pData->setTitle(title); + return pData->addIdleCallback(callback, timerFrequencyInMs); } -void Window::setTransientWinId(uintptr_t winId) +bool Window::removeIdleCallback(IdleCallback* const callback) { - pData->setTransientWinId(winId); -} + DISTRHO_SAFE_ASSERT_RETURN(callback != nullptr, false) -double Window::getScaling() const noexcept -{ - return pData->getScaling(); + return pData->removeIdleCallback(callback); } -bool Window::getIgnoringKeyRepeat() const noexcept +Application& Window::getApp() const noexcept { - return pData->getIgnoringKeyRepeat(); + return pData->app; } -void Window::setIgnoringKeyRepeat(bool ignore) noexcept +#ifndef DPF_TEST_WINDOW_CPP +const GraphicsContext& Window::getGraphicsContext() const noexcept { - pData->setIgnoringKeyRepeat(ignore); + return pData->getGraphicsContext(); } +#endif -Application& Window::getApp() const noexcept +uintptr_t Window::getNativeWindowHandle() const noexcept { - return pData->fApp; + return puglGetNativeWindow(pData->view); } -intptr_t Window::getWindowId() const noexcept +double Window::getScaleFactor() const noexcept { - return puglGetNativeWindow(pData->fView); + return pData->scaleFactor; } -const GraphicsContext& Window::getGraphicsContext() const noexcept +void Window::focus() { - GraphicsContext& context = pData->fContext; -#ifdef DGL_CAIRO - context.cairo = (cairo_t*)puglGetContext(pData->fView); -#endif - return context; + pData->focus(); } -void Window::_setAutoScaling(double scaling) noexcept +#ifndef DGL_FILE_BROWSER_DISABLED +bool Window::openFileBrowser(const FileBrowserOptions& options) { - pData->setAutoScaling(scaling); + return pData->openFileBrowser(options); } +#endif -void Window::_addWidget(Widget* const widget) +void Window::repaint() noexcept { - pData->addWidget(widget); + puglPostRedisplay(pData->view); } -void Window::_removeWidget(Widget* const widget) +void Window::repaint(const Rectangle& rect) noexcept { - pData->removeWidget(widget); + const PuglRect prect = { + static_cast(rect.getX()), + static_cast(rect.getY()), + static_cast(rect.getWidth()), + static_cast(rect.getHeight()), + }; + puglPostRedisplayRect(pData->view, prect); } -void Window::_idle() +void Window::runAsModal(bool blockWait) { - pData->idle(); + pData->runAsModal(blockWait); } -// ----------------------------------------------------------------------- - -void Window::addIdleCallback(IdleCallback* const callback) +void Window::setGeometryConstraints(const uint minimumWidth, + const uint minimumHeight, + const bool keepAspectRatio, + const bool automaticallyScale) { - DISTRHO_SAFE_ASSERT_RETURN(callback != nullptr,) + DISTRHO_SAFE_ASSERT_RETURN(minimumWidth > 0,); + DISTRHO_SAFE_ASSERT_RETURN(minimumHeight > 0,); - pData->fApp.pData->idleCallbacks.push_back(callback); -} + if (pData->isEmbed) { + // Did you forget to set DISTRHO_UI_USER_RESIZABLE ? + DISTRHO_SAFE_ASSERT_RETURN(isResizable(),); + } else if (! isResizable()) { + setResizable(true); + } -void Window::removeIdleCallback(IdleCallback* const callback) -{ - DISTRHO_SAFE_ASSERT_RETURN(callback != nullptr,) + pData->minWidth = minimumWidth; + pData->minHeight = minimumHeight; + pData->autoScaling = automaticallyScale; - pData->fApp.pData->idleCallbacks.remove(callback); -} + const double scaleFactor = pData->scaleFactor; -// ----------------------------------------------------------------------- + puglSetGeometryConstraints(pData->view, + static_cast(minimumWidth * scaleFactor + 0.5), + static_cast(minimumHeight * scaleFactor + 0.5), + keepAspectRatio); -void Window::onDisplayBefore() -{ -#ifdef DGL_OPENGL - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glLoadIdentity(); -#endif + if (scaleFactor != 1.0) + { + const Size size(getSize()); + + setSize(static_cast(size.getWidth() * scaleFactor + 0.5), + static_cast(size.getHeight() * scaleFactor + 0.5)); + } } -void Window::onDisplayAfter() +bool Window::onClose() { + return true; } -void Window::onReshape(uint width, uint height) +void Window::onFocus(bool, CrossingMode) { -#ifdef DGL_OPENGL - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0.0, static_cast(width), static_cast(height), 0.0, 0.0, 1.0); - glViewport(0, 0, static_cast(width), static_cast(height)); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -#endif } -void Window::onClose() +void Window::onReshape(uint, uint) { + puglFallbackOnResize(pData->view); } #ifndef DGL_FILE_BROWSER_DISABLED -void Window::fileBrowserSelected(const char*) +void Window::onFileSelected(const char*) { } #endif -bool Window::handlePluginKeyboard(const bool press, const uint key) +#if 0 +void Window::setTransientWinId(const uintptr_t winId) { - return pData->handlePluginKeyboard(press, key); -} - -bool Window::handlePluginSpecial(const bool press, const Key key) -{ - return pData->handlePluginSpecial(press, key); + puglSetTransientFor(pData->view, winId); } // ----------------------------------------------------------------------- -StandaloneWindow::StandaloneWindow() - : Application(), - Window((Application&)*this), - fWidget(nullptr) {} - -void StandaloneWindow::exec() -{ - Window::show(); - Application::exec(); -} - -void StandaloneWindow::onReshape(uint width, uint height) -{ - if (fWidget != nullptr) - fWidget->setSize(width, height); - Window::onReshape(width, height); -} - -void StandaloneWindow::_addWidget(Widget* widget) +bool Window::handlePluginKeyboard(const bool press, const uint key) { - if (fWidget == nullptr) - { - fWidget = widget; - fWidget->pData->needsFullViewport = true; - } - Window::_addWidget(widget); + // TODO + return false; + // return pData->handlePluginKeyboard(press, key); } -void StandaloneWindow::_removeWidget(Widget* widget) +bool Window::handlePluginSpecial(const bool press, const Key key) { - if (fWidget == widget) - { - fWidget->pData->needsFullViewport = false; - fWidget = nullptr; - } - Window::_removeWidget(widget); + // TODO + return false; + // return pData->handlePluginSpecial(press, key); } +#endif // ----------------------------------------------------------------------- END_NAMESPACE_DGL - -#undef DBG -#undef DBGF diff --git a/dgl/src/WindowFileBrowser.cpp b/dgl/src/WindowFileBrowser.cpp new file mode 100644 index 00000000..b5044ca7 --- /dev/null +++ b/dgl/src/WindowFileBrowser.cpp @@ -0,0 +1,223 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2020 Filipe Coelho + * Copyright (C) 2019 Jean Pierre Cimalando + * Copyright (C) 2019 Robin Gareus + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "../StandaloneWindow.hpp" + +// static int fib_filter_filename_filter(const char* const name) +// { +// return 1; +// (void)name; +// } + +// TODO use DGL_NAMESPACE for class names + +#ifdef DISTRHO_OS_MAC +@interface FilePanelDelegate : NSObject +{ + void (*fCallback)(NSOpenPanel*, int, void*); + void* fUserData; +} +-(id)initWithCallback:(void(*)(NSOpenPanel*, int, void*))callback userData:(void*)userData; +-(void)openPanelDidEnd:(NSOpenPanel *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo; +@end + +@implementation FilePanelDelegate +-(id)initWithCallback:(void(*)(NSOpenPanel*, int, void*))callback userData:(void *)userData +{ + [super init]; + self->fCallback = callback; + self->fUserData = userData; + return self; +} + +-(void)openPanelDidEnd:(NSOpenPanel *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo +{ + self->fCallback(sheet, returnCode, self->fUserData); + (void)contextInfo; +} +@end +#endif + +START_NAMESPACE_DGL + +// ----------------------------------------------------------------------- + +bool Window::openFileBrowser(const FileBrowserOptions& options) +{ +#if defined(DISTRHO_OS_WINDOWS) + // the old and compatible dialog API + OPENFILENAMEW ofn; + memset(&ofn, 0, sizeof(ofn)); + + ofn.lStructSize = sizeof(ofn); + ofn.hwndOwner = pData->hwnd; + + // set initial directory in UTF-16 coding + std::vector startDirW; + if (options.startDir) + { + startDirW.resize(strlen(options.startDir) + 1); + if (MultiByteToWideChar(CP_UTF8, 0, options.startDir, -1, startDirW.data(), startDirW.size())) + ofn.lpstrInitialDir = startDirW.data(); + } + + // set title in UTF-16 coding + std::vector titleW; + if (options.title) + { + titleW.resize(strlen(options.title) + 1); + if (MultiByteToWideChar(CP_UTF8, 0, options.title, -1, titleW.data(), titleW.size())) + ofn.lpstrTitle = titleW.data(); + } + + // prepare a buffer to receive the result + std::vector fileNameW(32768); // the Unicode maximum + ofn.lpstrFile = fileNameW.data(); + ofn.nMaxFile = (DWORD)fileNameW.size(); + + // TODO synchronous only, can't do better with WinAPI native dialogs. + // threading might work, if someone is motivated to risk it. + if (GetOpenFileNameW(&ofn)) + { + // back to UTF-8 + std::vector fileNameA(4 * 32768); + if (WideCharToMultiByte(CP_UTF8, 0, fileNameW.data(), -1, fileNameA.data(), (int)fileNameA.size(), nullptr, nullptr)) + { + // handle it during the next idle cycle (fake async) + pData->fSelectedFile = fileNameA.data(); + } + } + + return true; + +#elif defined(DISTRHO_OS_MAC) + if (pData->fOpenFilePanel) // permit one dialog at most + { + [pData->fOpenFilePanel makeKeyAndOrderFront:nil]; + return false; + } + + NSOpenPanel* panel = [NSOpenPanel openPanel]; + pData->fOpenFilePanel = [panel retain]; + + [panel setCanChooseFiles:YES]; + [panel setCanChooseDirectories:NO]; + [panel setAllowsMultipleSelection:NO]; + + if (options.startDir) + [panel setDirectory:[NSString stringWithUTF8String:options.startDir]]; + + if (options.title) + { + NSString* titleString = [[NSString alloc] + initWithBytes:options.title + length:strlen(options.title) + encoding:NSUTF8StringEncoding]; + [panel setTitle:titleString]; + } + + id delegate = pData->fFilePanelDelegate; + if (!delegate) + { + delegate = [[FilePanelDelegate alloc] initWithCallback:&PrivateData::openPanelDidEnd + userData:pData]; + pData->fFilePanelDelegate = [delegate retain]; + } + + [panel beginSheetForDirectory:nullptr + file:nullptr + modalForWindow:nullptr + modalDelegate:delegate + didEndSelector:@selector(openPanelDidEnd:returnCode:contextInfo:) + contextInfo:nullptr]; + + return true; + +#elif defined(SOFD_HAVE_X11) + using DISTRHO_NAMESPACE::String; + + // -------------------------------------------------------------------------- + // configure start dir + + // TODO: get abspath if needed + // TODO: cross-platform + + String startDir(options.startDir); + +# ifdef DISTRHO_OS_LINUX + if (startDir.isEmpty()) + { + if (char* const dir_name = get_current_dir_name()) + { + startDir = dir_name; + std::free(dir_name); + } + } +# endif + + DISTRHO_SAFE_ASSERT_RETURN(startDir.isNotEmpty(), false); + + if (! startDir.endsWith('/')) + startDir += "/"; + + DISTRHO_SAFE_ASSERT_RETURN(x_fib_configure(0, startDir) == 0, false); + + // -------------------------------------------------------------------------- + // configure title + + String title(options.title); + + if (title.isEmpty()) + { + title = pData->getTitle(); + + if (title.isEmpty()) + title = "FileBrowser"; + } + + DISTRHO_SAFE_ASSERT_RETURN(x_fib_configure(1, title) == 0, false); + + // -------------------------------------------------------------------------- + // configure filters + + x_fib_cfg_filter_callback(nullptr); //fib_filter_filename_filter); + + // -------------------------------------------------------------------------- + // configure buttons + + x_fib_cfg_buttons(3, options.buttons.listAllFiles-1); + x_fib_cfg_buttons(1, options.buttons.showHidden-1); + x_fib_cfg_buttons(2, options.buttons.showPlaces-1); + + // -------------------------------------------------------------------------- + // show + + return (x_fib_show(pData->xDisplay, pData->xWindow, /*options.width*/0, /*options.height*/0) == 0); + +#else + // not implemented + return false; + + // unused + (void)options; +#endif +} + +// ----------------------------------------------------------------------- + +END_NAMESPACE_DGL diff --git a/dgl/src/WindowPrivateData.cpp b/dgl/src/WindowPrivateData.cpp new file mode 100644 index 00000000..4a1da9d4 --- /dev/null +++ b/dgl/src/WindowPrivateData.cpp @@ -0,0 +1,1090 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "WindowPrivateData.hpp" +#include "TopLevelWidgetPrivateData.hpp" + +#include "pugl.hpp" + +#include "../../distrho/extra/String.hpp" + +#ifdef DISTRHO_OS_WINDOWS +# include +# include +# include +# include +#else +# include +#endif + +#define DGL_DEBUG_EVENTS + +#if defined(DEBUG) && defined(DGL_DEBUG_EVENTS) +# include +#endif + +START_NAMESPACE_DGL + +#if defined(DEBUG) && defined(DGL_DEBUG_EVENTS) +# define DGL_DBG(msg) std::fprintf(stderr, "%s", msg); +# define DGL_DBGp(...) std::fprintf(stderr, __VA_ARGS__); +# define DGL_DBGF std::fflush(stderr); +#else +# define DGL_DBG(msg) +# define DGL_DBGp(...) +# define DGL_DBGF +#endif + +#define DEFAULT_WIDTH 640 +#define DEFAULT_HEIGHT 480 + +// ----------------------------------------------------------------------- + +#ifdef DISTRHO_OS_WINDOWS +// static pointer used for direct comparisons +static const char* const kWin32SelectedFileCancelled = "__dpf_cancelled__"; +#endif + +static double getDesktopScaleFactor() +{ + if (const char* const scale = getenv("DPF_SCALE_FACTOR")) + return std::max(1.0, std::atof(scale)); + + return 1.0; +} + +// ----------------------------------------------------------------------- + +Window::PrivateData::PrivateData(Application& a, Window* const s) + : app(a), + appData(a.pData), + self(s), + view(puglNewView(appData->world)), + topLevelWidget(nullptr), + isClosed(true), + isVisible(false), + isEmbed(false), + scaleFactor(getDesktopScaleFactor()), + autoScaling(false), + autoScaleFactor(1.0), + minWidth(0), + minHeight(0), +#ifdef DISTRHO_OS_WINDOWS + win32SelectedFile(nullptr), +#endif + modal() +{ + init(DEFAULT_WIDTH, DEFAULT_HEIGHT, false); +} + +Window::PrivateData::PrivateData(Application& a, Window* const s, PrivateData* const ppData) + : app(a), + appData(a.pData), + self(s), + view(puglNewView(appData->world)), + topLevelWidget(nullptr), + isClosed(true), + isVisible(false), + isEmbed(false), + scaleFactor(ppData->scaleFactor), + autoScaling(false), + autoScaleFactor(1.0), + minWidth(0), + minHeight(0), +#ifdef DISTRHO_OS_WINDOWS + win32SelectedFile(nullptr), +#endif + modal(ppData) +{ + init(DEFAULT_WIDTH, DEFAULT_HEIGHT, false); + + puglSetTransientFor(view, puglGetNativeWindow(ppData->view)); +} + +Window::PrivateData::PrivateData(Application& a, Window* const s, + const uintptr_t parentWindowHandle, + const double scale, const bool resizable) + : app(a), + appData(a.pData), + self(s), + view(puglNewView(appData->world)), + topLevelWidget(nullptr), + isClosed(parentWindowHandle == 0), + isVisible(parentWindowHandle != 0), + isEmbed(parentWindowHandle != 0), + scaleFactor(scale != 0.0 ? scale : getDesktopScaleFactor()), + autoScaling(false), + autoScaleFactor(1.0), + minWidth(0), + minHeight(0), +#ifdef DISTRHO_OS_WINDOWS + win32SelectedFile(nullptr), +#endif + modal() +{ + if (isEmbed) + { + // puglSetDefaultSize(DEFAULT_WIDTH, DEFAULT_HEIGHT, height); + puglSetParentWindow(view, parentWindowHandle); + } + + init(DEFAULT_WIDTH, DEFAULT_HEIGHT, resizable); + + if (isEmbed) + { + appData->oneWindowShown(); + puglShow(view); + } +} + +Window::PrivateData::PrivateData(Application& a, Window* const s, + const uintptr_t parentWindowHandle, + const uint width, const uint height, + const double scale, const bool resizable) + : app(a), + appData(a.pData), + self(s), + view(puglNewView(appData->world)), + topLevelWidget(nullptr), + isClosed(parentWindowHandle == 0), + isVisible(parentWindowHandle != 0), + isEmbed(parentWindowHandle != 0), + scaleFactor(scale != 0.0 ? scale : getDesktopScaleFactor()), + autoScaling(false), + autoScaleFactor(1.0), + minWidth(0), + minHeight(0), +#ifdef DISTRHO_OS_WINDOWS + win32SelectedFile(nullptr), +#endif + modal() +{ + if (isEmbed) + { + puglSetDefaultSize(view, static_cast(width), static_cast(height)); + puglSetParentWindow(view, parentWindowHandle); + } + + init(width, height, resizable); + + if (isEmbed) + { + appData->oneWindowShown(); + puglShow(view); + } +} + +Window::PrivateData::~PrivateData() +{ + if (isEmbed) + { +#ifdef HAVE_X11 + sofdFileDialogClose(view); +#endif + puglHide(view); + appData->oneWindowClosed(); + isClosed = true; + isVisible = false; + } + + appData->idleCallbacks.remove(this); + appData->windows.remove(self); + +#ifdef DISTRHO_OS_WINDOWS + if (win32SelectedFile != nullptr && win32SelectedFile != kWin32SelectedFileCancelled) + std::free(const_cast(win32SelectedFile)); +#endif + + if (view != nullptr) + puglFreeView(view); +} + +// ----------------------------------------------------------------------- + +void Window::PrivateData::init(const uint width, const uint height, const bool resizable) +{ + appData->windows.push_back(self); + appData->idleCallbacks.push_back(this); + memset(graphicsContext, 0, sizeof(graphicsContext)); + + if (view == nullptr) + { + DGL_DBG("Failed to create Pugl view, everything will fail!\n"); + return; + } + + puglSetMatchingBackendForCurrentBuild(view); + + puglSetHandle(view, this); + puglSetViewHint(view, PUGL_RESIZABLE, resizable ? PUGL_TRUE : PUGL_FALSE); + puglSetViewHint(view, PUGL_IGNORE_KEY_REPEAT, PUGL_FALSE); + puglSetViewHint(view, PUGL_DEPTH_BITS, 16); + puglSetViewHint(view, PUGL_STENCIL_BITS, 8); + // PUGL_SAMPLES ?? + puglSetEventFunc(view, puglEventCallback); + + PuglRect rect = puglGetFrame(view); + rect.width = width; + rect.height = height; + puglSetFrame(view, rect); + + // FIXME this is bad + puglRealize(view); + puglBackendEnter(view); +} + +// ----------------------------------------------------------------------- + +void Window::PrivateData::close() +{ + DGL_DBG("Window close\n"); + // DGL_DBGp("Window close DBG %i %i %p\n", isEmbed, isClosed, appData); + + if (isEmbed || isClosed) + return; + + isClosed = true; + hide(); + appData->oneWindowClosed(); +} + +// ----------------------------------------------------------------------- + +void Window::PrivateData::show() +{ + if (isVisible) + { + DGL_DBG("Window show matches current visible state, ignoring request\n"); + return; + } + if (isEmbed) + { + DGL_DBG("Window show cannot be called when embedded\n"); + return; + } + + DGL_DBG("Window show called\n"); + +#if 0 && defined(DISTRHO_OS_MAC) +// if (mWindow != nullptr) +// { +// if (mParentWindow != nullptr) +// [mParentWindow addChildWindow:mWindow +// ordered:NSWindowAbove]; +// } +#endif + + if (isClosed) + { + isClosed = false; + appData->oneWindowShown(); + + // FIXME + PuglRect rect = puglGetFrame(view); + puglSetDefaultSize(view, static_cast(rect.width), static_cast(rect.height)); + puglSetWindowSize(view, static_cast(rect.width), static_cast(rect.height)); + +#ifdef DISTRHO_OS_WINDOWS + puglWin32ShowWindowCentered(view); +#else + puglShow(view); +#endif + } + else + { +#ifdef DISTRHO_OS_WINDOWS + puglWin32RestoreWindow(view); +#else + puglShow(view); +#endif + } + + isVisible = true; +} + +void Window::PrivateData::hide() +{ + if (isEmbed) + { + DGL_DBG("Window hide cannot be called when embedded\n"); + return; + } + if (! isVisible) + { + DGL_DBG("Window hide matches current visible state, ignoring request\n"); + return; + } + + DGL_DBG("Window hide called\n"); + +#if 0 && defined(DISTRHO_OS_MAC) +// if (mWindow != nullptr) +// { +// if (mParentWindow != nullptr) +// [mParentWindow removeChildWindow:mWindow]; +// } +#endif + + if (modal.enabled) + stopModal(); + +#ifdef HAVE_X11 + sofdFileDialogClose(view); +#endif + puglHide(view); + + isVisible = false; +} + +// ----------------------------------------------------------------------- + +void Window::PrivateData::focus() +{ + if (! isEmbed) + puglRaiseWindow(view); + + puglGrabFocus(view); +} + +// ----------------------------------------------------------------------- + +void Window::PrivateData::setResizable(const bool resizable) +{ + DISTRHO_SAFE_ASSERT_RETURN(! isEmbed,); + + DGL_DBG("Window setResizable called\n"); + + puglSetViewHint(view, PUGL_RESIZABLE, resizable ? PUGL_TRUE : PUGL_FALSE); +#ifdef DISTRHO_OS_WINDOWS + puglWin32SetWindowResizable(view, resizable); +#endif +} + +// ----------------------------------------------------------------------- + +void Window::PrivateData::idleCallback() +{ +#ifndef DGL_FILE_BROWSER_DISABLED +# ifdef DISTRHO_OS_WINDOWS + if (const char* path = win32SelectedFile) + { + win32SelectedFile = nullptr; + if (path == kWin32SelectedFileCancelled) + path = nullptr; + self->onFileSelected(path); + std::free(const_cast(path)); + } +# endif +# ifdef HAVE_X11 + char* path; + if (sofdFileDialogGetPath(&path)) + { + // TODO ignore null path?? + self->onFileSelected(path); + sofdFileDialogFree(path); + } +# endif +#endif +} + +// ----------------------------------------------------------------------- +// idle callback stuff + +bool Window::PrivateData::addIdleCallback(IdleCallback* const callback, const uint timerFrequencyInMs) +{ + if (timerFrequencyInMs == 0) + { + appData->idleCallbacks.push_back(callback); + return true; + } + + return puglStartTimer(view, (uintptr_t)callback, static_cast(timerFrequencyInMs) / 1000.0) == PUGL_SUCCESS; +} + +bool Window::PrivateData::removeIdleCallback(IdleCallback* const callback) +{ + if (std::find(appData->idleCallbacks.begin(), + appData->idleCallbacks.end(), callback) != appData->idleCallbacks.end()) + { + appData->idleCallbacks.remove(callback); + return true; + } + + return puglStopTimer(view, (uintptr_t)callback) == PUGL_SUCCESS; +} + +// ----------------------------------------------------------------------- +// file handling + +bool Window::PrivateData::openFileBrowser(const Window::FileBrowserOptions& options) +{ + using DISTRHO_NAMESPACE::String; + + // -------------------------------------------------------------------------- + // configure start dir + + // TODO: get abspath if needed + // TODO: cross-platform + + String startDir(options.startDir); + + if (startDir.isEmpty()) + { + // TESTING verify this whole thing... +#ifdef DISTRHO_OS_WINDOWS + if (char* const cwd = _getcwd(nullptr, 0)) + { + startDir = cwd; + std::free(cwd); + } +#else + if (char* const cwd = getcwd(nullptr, 0)) + { + startDir = cwd; + std::free(cwd); + } +#endif + } + + DISTRHO_SAFE_ASSERT_RETURN(startDir.isNotEmpty(), false); + + if (! startDir.endsWith(DISTRHO_OS_SEP)) + startDir += DISTRHO_OS_SEP_STR; + + // -------------------------------------------------------------------------- + // configure title + + String title(options.title); + + if (title.isEmpty()) + { + title = puglGetWindowTitle(view); + + if (title.isEmpty()) + title = "FileBrowser"; + } + + // -------------------------------------------------------------------------- + // show + +#ifdef DISTRHO_OS_WINDOWS + // the old and compatible dialog API + OPENFILENAMEW ofn; + memset(&ofn, 0, sizeof(ofn)); + if (win32SelectedFile != nullptr && win32SelectedFile != kWin32SelectedFileCancelled) + std::free(const_cast(win32SelectedFile)); + win32SelectedFile = nullptr; + + ofn.lStructSize = sizeof(ofn); + ofn.hwndOwner = (HWND)puglGetNativeWindow(view); + + // set start directory in UTF-16 encoding + std::vector startDirW; + startDirW.resize(startDir.length() + 1); + if (MultiByteToWideChar(CP_UTF8, 0, startDir.buffer(), -1, startDirW.data(), startDirW.size())) + ofn.lpstrInitialDir = startDirW.data(); + + // set title in UTF-16 encoding + std::vector titleW; + titleW.resize(title.length() + 1); + if (MultiByteToWideChar(CP_UTF8, 0, title.buffer(), -1, titleW.data(), titleW.size())) + ofn.lpstrTitle = titleW.data(); + + // prepare a buffer to receive the result + std::vector fileNameW(32768); // the Unicode maximum + ofn.lpstrFile = fileNameW.data(); + ofn.nMaxFile = (DWORD)fileNameW.size(); + + // TODO synchronous only, can't do better with WinAPI native dialogs. + // threading might work, if someone is motivated to risk it. + if (GetOpenFileNameW(&ofn)) + { + // back to UTF-8 + std::vector fileNameA(4 * 32768); + if (WideCharToMultiByte(CP_UTF8, 0, fileNameW.data(), -1, + fileNameA.data(), (int)fileNameA.size(), + nullptr, nullptr)) + { + // handle it during the next idle cycle (fake async) + win32SelectedFile = strdup(fileNameA.data()); + } + } + + if (win32SelectedFile == nullptr) + win32SelectedFile = kWin32SelectedFileCancelled; + + return true; +#endif +#ifdef HAVE_X11 + uint flags = 0x0; + // TODO flags + return sofdFileDialogShow(view, startDir, title, flags, options.width, options.height); +#endif + + return false; +} + +// ----------------------------------------------------------------------- +// modal handling + +void Window::PrivateData::startModal() +{ + DGL_DBG("Window modal loop starting..."); DGL_DBGF; + DISTRHO_SAFE_ASSERT_RETURN(modal.parent != nullptr, show()); + + // activate modal mode for this window + modal.enabled = true; + + // make parent give focus to us + modal.parent->modal.child = this; + + // FIXME? + PuglRect rect = puglGetFrame(view); + puglSetDefaultSize(view, static_cast(rect.width), static_cast(rect.height)); + + // make sure both parent and ourselves are visible + modal.parent->show(); + show(); + + DGL_DBG("Ok\n"); +} + +void Window::PrivateData::stopModal() +{ + DGL_DBG("Window modal loop stopping..."); DGL_DBGF; + + // deactivate modal mode + modal.enabled = false; + + // safety checks, make sure we have a parent and we are currently active as the child to give focus to + if (modal.parent == nullptr) + return; + if (modal.parent->modal.child != this) + return; + + // stop parent from giving focus to us, so it behaves like normal + modal.parent->modal.child = nullptr; + + // the mouse position probably changed since the modal appeared, + // so send a mouse motion event to the modal's parent window +#if 0 +#if defined(DISTRHO_OS_HAIKU) + // TODO +#elif defined(DISTRHO_OS_MAC) + // TODO +#elif defined(DISTRHO_OS_WINDOWS) + // TODO +#else + int i, wx, wy; + uint u; + ::Window w; + if (XQueryPointer(fModal.parent->xDisplay, fModal.parent->xWindow, &w, &w, &i, &i, &wx, &wy, &u) == True) + fModal.parent->onPuglMotion(wx, wy); +#endif +#endif + + DGL_DBG("Ok\n"); +} + +void Window::PrivateData::runAsModal(const bool blockWait) +{ + DGL_DBGp("Window::PrivateData::runAsModal %i\n", blockWait); + startModal(); + + if (blockWait) + { + DISTRHO_SAFE_ASSERT_RETURN(appData->isStandalone,); + + while (isVisible && modal.enabled) + appData->idle(10); + + stopModal(); + } + else + { + appData->idle(0); + } +} + +// ----------------------------------------------------------------------- +// pugl events + +void Window::PrivateData::onPuglConfigure(const double width, const double height) +{ + DISTRHO_SAFE_ASSERT_INT2_RETURN(width > 1 && height > 1, width, height,); + + DGL_DBGp("PUGL: onReshape : %f %f\n", width, height); + + if (autoScaling) + { + const double scaleHorizontal = width / static_cast(minWidth); + const double scaleVertical = height / static_cast(minHeight); + autoScaleFactor = scaleHorizontal < scaleVertical ? scaleHorizontal : scaleVertical; + } + + const uint uwidth = static_cast(width + 0.5); + const uint uheight = static_cast(height + 0.5); + + if (self != nullptr) + self->onReshape(uwidth, uheight); + +#ifndef DPF_TEST_WINDOW_CPP + if (topLevelWidget != nullptr) + topLevelWidget->setSize(uwidth, uheight); +#endif + + // always repaint after a resize + puglPostRedisplay(view); +} + +void Window::PrivateData::onPuglExpose() +{ + DGL_DBGp("PUGL: onPuglExpose : %p\n", topLevelWidget); + + puglOnDisplayPrepare(view); + +#ifndef DPF_TEST_WINDOW_CPP + if (topLevelWidget != nullptr) + topLevelWidget->pData->display(); +#endif +} + +void Window::PrivateData::onPuglClose() +{ + DGL_DBG("PUGL: onClose\n"); + + // if we have a parent or running as standalone we can prevent closing in certain conditions + if (modal.parent != nullptr || appData->isStandalone) + { + // parent gives focus to us as modal, prevent closing + if (modal.child != nullptr) + return modal.child->focus(); + + // ask window if we should close + if (! self->onClose()) + return; + } + + if (modal.enabled) + stopModal(); + + if (PrivateData* const child = modal.child) + { + modal.child = nullptr; + child->close(); + } + + close(); +} + +void Window::PrivateData::onPuglFocus(const bool focus, const CrossingMode mode) +{ + DGL_DBGp("onPuglFocus : %i %i | %i\n", focus, mode, isClosed); + + if (isClosed) + return; + + if (modal.child != nullptr) + return modal.child->focus(); + + self->onFocus(focus, mode); +} + +void Window::PrivateData::onPuglKey(const Widget::KeyboardEvent& ev) +{ + DGL_DBGp("onPuglKey : %i %u %u\n", ev.press, ev.key, ev.keycode); + + if (modal.child != nullptr) + return modal.child->focus(); + +#ifndef DPF_TEST_WINDOW_CPP + if (topLevelWidget != nullptr) + topLevelWidget->pData->keyboardEvent(ev); +#endif +} + +void Window::PrivateData::onPuglSpecial(const Widget::SpecialEvent& ev) +{ + DGL_DBGp("onPuglSpecial : %i %u\n", ev.press, ev.key); + + if (modal.child != nullptr) + return modal.child->focus(); + +#ifndef DPF_TEST_WINDOW_CPP + if (topLevelWidget != nullptr) + topLevelWidget->pData->specialEvent(ev); +#endif +} + +void Window::PrivateData::onPuglText(const Widget::CharacterInputEvent& ev) +{ + DGL_DBGp("onPuglText : %u %u %s\n", ev.keycode, ev.character, ev.string); + + if (modal.child != nullptr) + return modal.child->focus(); + +#ifndef DPF_TEST_WINDOW_CPP + if (topLevelWidget != nullptr) + topLevelWidget->pData->characterInputEvent(ev); +#endif +} + +void Window::PrivateData::onPuglMouse(const Widget::MouseEvent& ev) +{ + DGL_DBGp("onPuglMouse : %i %i %f %f\n", ev.button, ev.press, ev.pos.getX(), ev.pos.getY()); + + if (modal.child != nullptr) + return modal.child->focus(); + +#ifndef DPF_TEST_WINDOW_CPP + if (topLevelWidget != nullptr) + topLevelWidget->pData->mouseEvent(ev); +#endif +} + +void Window::PrivateData::onPuglMotion(const Widget::MotionEvent& ev) +{ + DGL_DBGp("onPuglMotion : %f %f\n", ev.pos.getX(), ev.pos.getY()); + + if (modal.child != nullptr) + return modal.child->focus(); + +#ifndef DPF_TEST_WINDOW_CPP + if (topLevelWidget != nullptr) + topLevelWidget->pData->motionEvent(ev); +#endif +} + +void Window::PrivateData::onPuglScroll(const Widget::ScrollEvent& ev) +{ + DGL_DBGp("onPuglScroll : %f %f %f %f\n", ev.pos.getX(), ev.pos.getY(), ev.delta.getX(), ev.delta.getY()); + + if (modal.child != nullptr) + return modal.child->focus(); + +#ifndef DPF_TEST_WINDOW_CPP + if (topLevelWidget != nullptr) + topLevelWidget->pData->scrollEvent(ev); +#endif +} + +#if defined(DEBUG) && defined(DGL_DEBUG_EVENTS) +static int printEvent(const PuglEvent* event, const char* prefix, const bool verbose); +#endif + +PuglStatus Window::PrivateData::puglEventCallback(PuglView* const view, const PuglEvent* const event) +{ + Window::PrivateData* const pData = (Window::PrivateData*)puglGetHandle(view); +#if defined(DEBUG) && defined(DGL_DEBUG_EVENTS) + printEvent(event, "pugl event: ", true); +#endif + + switch (event->type) + { + ///< No event + case PUGL_NOTHING: + break; + + ///< View created, a #PuglEventCreate + case PUGL_CREATE: +#ifdef DGL_PUGL_USING_X11 + if (! pData->isEmbed) + puglExtraSetWindowTypeAndPID(view); +#endif + break; + + ///< View destroyed, a #PuglEventDestroy + case PUGL_DESTROY: + break; + + ///< View moved/resized, a #PuglEventConfigure + case PUGL_CONFIGURE: + // unused x, y (double) + pData->onPuglConfigure(event->configure.width, event->configure.height); + break; + + ///< View made visible, a #PuglEventMap + case PUGL_MAP: + break; + + ///< View made invisible, a #PuglEventUnmap + case PUGL_UNMAP: + break; + + ///< View ready to draw, a #PuglEventUpdate + case PUGL_UPDATE: + break; + + ///< View must be drawn, a #PuglEventExpose + case PUGL_EXPOSE: + // unused x, y, width, height (double) + pData->onPuglExpose(); + break; + + ///< View will be closed, a #PuglEventClose + case PUGL_CLOSE: + pData->onPuglClose(); + break; + + ///< Keyboard focus entered view, a #PuglEventFocus + case PUGL_FOCUS_IN: + ///< Keyboard focus left view, a #PuglEventFocus + case PUGL_FOCUS_OUT: + pData->onPuglFocus(event->type == PUGL_FOCUS_IN, + static_cast(event->focus.mode)); + break; + + ///< Key pressed, a #PuglEventKey + case PUGL_KEY_PRESS: + ///< Key released, a #PuglEventKey + case PUGL_KEY_RELEASE: + { + // unused x, y, xRoot, yRoot (double) + // TODO special keys? + Widget::KeyboardEvent ev; + ev.mod = event->key.state; + ev.flags = event->key.flags; + ev.time = static_cast(event->key.time * 1000.0 + 0.5); + ev.press = event->type == PUGL_KEY_PRESS; + ev.key = event->key.key; + ev.keycode = event->key.keycode; + if ((ev.mod & kModifierShift) != 0 && ev.key >= 'a' && ev.key <= 'z') + ev.key -= 'a' - 'A'; // a-z -> A-Z + pData->onPuglKey(ev); + break; + } + + ///< Character entered, a #PuglEventText + case PUGL_TEXT: + { + // unused x, y, xRoot, yRoot (double) + Widget::CharacterInputEvent ev; + ev.mod = event->text.state; + ev.flags = event->text.flags; + ev.time = static_cast(event->text.time * 1000.0 + 0.5); + ev.keycode = event->text.keycode; + ev.character = event->text.character; + std::strncpy(ev.string, event->text.string, sizeof(ev.string)); + pData->onPuglText(ev); + break; + } + + ///< Pointer entered view, a #PuglEventCrossing + case PUGL_POINTER_IN: + break; + ///< Pointer left view, a #PuglEventCrossing + case PUGL_POINTER_OUT: + break; + + ///< Mouse button pressed, a #PuglEventButton + case PUGL_BUTTON_PRESS: + ///< Mouse button released, a #PuglEventButton + case PUGL_BUTTON_RELEASE: + { + Widget::MouseEvent ev; + ev.mod = event->button.state; + ev.flags = event->button.flags; + ev.time = static_cast(event->button.time * 1000.0 + 0.5); + ev.button = event->button.button; + ev.press = event->type == PUGL_BUTTON_PRESS; + ev.pos = Point(event->button.x, event->button.y); + pData->onPuglMouse(ev); + break; + } + + ///< Pointer moved, a #PuglEventMotion + case PUGL_MOTION: + { + Widget::MotionEvent ev; + ev.mod = event->motion.state; + ev.flags = event->motion.flags; + ev.time = static_cast(event->motion.time * 1000.0 + 0.5); + ev.pos = Point(event->motion.x, event->motion.y); + pData->onPuglMotion(ev); + break; + } + + ///< Scrolled, a #PuglEventScroll + case PUGL_SCROLL: + { + Widget::ScrollEvent ev; + ev.mod = event->scroll.state; + ev.flags = event->scroll.flags; + ev.time = static_cast(event->scroll.time * 1000.0 + 0.5); + ev.pos = Point(event->scroll.x, event->scroll.y); + ev.delta = Point(event->scroll.dx, event->scroll.dy); + ev.direction = static_cast(event->scroll.direction); + pData->onPuglScroll(ev); + break; + } + + ///< Custom client message, a #PuglEventClient + case PUGL_CLIENT: + break; + + ///< Timer triggered, a #PuglEventTimer + case PUGL_TIMER: + if (IdleCallback* const idleCallback = reinterpret_cast(event->timer.id)) + idleCallback->idleCallback(); + break; + + ///< Recursive loop entered, a #PuglEventLoopEnter + case PUGL_LOOP_ENTER: + break; + + ///< Recursive loop left, a #PuglEventLoopLeave + case PUGL_LOOP_LEAVE: + break; + } + + return PUGL_SUCCESS; +} + +// ----------------------------------------------------------------------- + +#if defined(DEBUG) && defined(DGL_DEBUG_EVENTS) +static int printModifiers(const uint32_t mods) +{ + return fprintf(stderr, "Modifiers:%s%s%s%s\n", + (mods & PUGL_MOD_SHIFT) ? " Shift" : "", + (mods & PUGL_MOD_CTRL) ? " Ctrl" : "", + (mods & PUGL_MOD_ALT) ? " Alt" : "", + (mods & PUGL_MOD_SUPER) ? " Super" : ""); +} + +static int printEvent(const PuglEvent* event, const char* prefix, const bool verbose) +{ +#define FFMT "%6.1f" +#define PFMT FFMT " " FFMT +#define PRINT(fmt, ...) fprintf(stderr, fmt, __VA_ARGS__) + + switch (event->type) { + case PUGL_NOTHING: + return 0; + case PUGL_KEY_PRESS: + return PRINT("%sKey press code %3u key U+%04X\n", + prefix, + event->key.keycode, + event->key.key); + case PUGL_KEY_RELEASE: + return PRINT("%sKey release code %3u key U+%04X\n", + prefix, + event->key.keycode, + event->key.key); + case PUGL_TEXT: + return PRINT("%sText entry code %3u char U+%04X (%s)\n", + prefix, + event->text.keycode, + event->text.character, + event->text.string); + case PUGL_BUTTON_PRESS: + case PUGL_BUTTON_RELEASE: + return (PRINT("%sMouse %u %s at " PFMT " ", + prefix, + event->button.button, + (event->type == PUGL_BUTTON_PRESS) ? "down" : "up ", + event->button.x, + event->button.y) + + printModifiers(event->scroll.state)); + case PUGL_SCROLL: + return (PRINT("%sScroll %5.1f %5.1f at " PFMT " ", + prefix, + event->scroll.dx, + event->scroll.dy, + event->scroll.x, + event->scroll.y) + + printModifiers(event->scroll.state)); + case PUGL_POINTER_IN: + return PRINT("%sMouse enter at " PFMT "\n", + prefix, + event->crossing.x, + event->crossing.y); + case PUGL_POINTER_OUT: + return PRINT("%sMouse leave at " PFMT "\n", + prefix, + event->crossing.x, + event->crossing.y); + case PUGL_FOCUS_IN: + return PRINT("%sFocus in %i\n", + prefix, + event->focus.mode); + case PUGL_FOCUS_OUT: + return PRINT("%sFocus out %i\n", + prefix, + event->focus.mode); + case PUGL_CLIENT: + return PRINT("%sClient %" PRIXPTR " %" PRIXPTR "\n", + prefix, + event->client.data1, + event->client.data2); + case PUGL_TIMER: + return PRINT("%sTimer %" PRIuPTR "\n", prefix, event->timer.id); + default: + break; + } + + if (verbose) { + switch (event->type) { + case PUGL_CREATE: + return fprintf(stderr, "%sCreate\n", prefix); + case PUGL_DESTROY: + return fprintf(stderr, "%sDestroy\n", prefix); + case PUGL_MAP: + return fprintf(stderr, "%sMap\n", prefix); + case PUGL_UNMAP: + return fprintf(stderr, "%sUnmap\n", prefix); + case PUGL_UPDATE: + return 0; // fprintf(stderr, "%sUpdate\n", prefix); + case PUGL_CONFIGURE: + return PRINT("%sConfigure " PFMT " " PFMT "\n", + prefix, + event->configure.x, + event->configure.y, + event->configure.width, + event->configure.height); + case PUGL_EXPOSE: + return PRINT("%sExpose " PFMT " " PFMT "\n", + prefix, + event->expose.x, + event->expose.y, + event->expose.width, + event->expose.height); + case PUGL_CLOSE: + return PRINT("%sClose\n", prefix); + case PUGL_MOTION: + return PRINT("%sMouse motion at " PFMT "\n", + prefix, + event->motion.x, + event->motion.y); + default: + return PRINT("%sUnknown event type %d\n", prefix, (int)event->type); + } + } + +#undef PRINT +#undef PFMT +#undef FFMT + + return 0; +} +#endif + +#undef DGL_DBG +#undef DGL_DBGF + +// ----------------------------------------------------------------------- + +END_NAMESPACE_DGL diff --git a/dgl/src/WindowPrivateData.hpp b/dgl/src/WindowPrivateData.hpp new file mode 100644 index 00000000..83b9d86a --- /dev/null +++ b/dgl/src/WindowPrivateData.hpp @@ -0,0 +1,296 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef DGL_WINDOW_PRIVATE_DATA_HPP_INCLUDED +#define DGL_WINDOW_PRIVATE_DATA_HPP_INCLUDED + +#include "../Window.hpp" +#include "../Widget.hpp" +#include "ApplicationPrivateData.hpp" + +#include "pugl.hpp" + +START_NAMESPACE_DGL + +class TopLevelWidget; + +// ----------------------------------------------------------------------- + +struct Window::PrivateData : IdleCallback { + /** Reference to the DGL Application class this (private data) window associates with. */ + Application& app; + + /** Direct access to the DGL Application private data where we registers ourselves in. */ + Application::PrivateData* const appData; + + /** Pointer to the the DGL Window class that this private data belongs to. */ + Window* const self; + + /** Pugl view instance. */ + PuglView* const view; + + /** Reserved space for graphics context. */ + mutable uint8_t graphicsContext[sizeof(void*)]; + + /** The top-level widget associated with this Window. */ + TopLevelWidget* topLevelWidget; + + /** Whether this Window is closed (not visible or counted in the Application it is tied to). + Defaults to true unless embed (embed windows are never closed). */ + bool isClosed; + + /** Whether this Window is currently visible/mapped. Defaults to false. */ + bool isVisible; + + /** Whether this Window is embed into another (usually not DGL-controlled) Window. */ + const bool isEmbed; + + /** Scale factor to report to widgets on request, purely informational. */ + double scaleFactor; + + /** Automatic scaling to apply on widgets, implemented internally. */ + bool autoScaling; + double autoScaleFactor; + + /** Pugl minWidth, minHeight access. */ + uint minWidth, minHeight; + +#ifdef DISTRHO_OS_WINDOWS + /** Selected file for openFileBrowser on windows, stored for fake async operation. */ + const char* win32SelectedFile; +#endif + + /** Modal window setup. */ + struct Modal { + PrivateData* parent; // parent of this window (so we can become modal) + PrivateData* child; // child window to give focus to when modal mode is enabled + bool enabled; // wherever modal mode is enabled (only possible if parent != null) + + /** Constructor for a non-modal window. */ + Modal() noexcept + : parent(nullptr), + child(nullptr), + enabled(false) {} + + /** Constructor for a modal window (with a parent). */ + Modal(PrivateData* const p) noexcept + : parent(p), + child(nullptr), + enabled(false) {} + + /** Destructor. */ + ~Modal() noexcept + { + DISTRHO_SAFE_ASSERT(! enabled); + } + + DISTRHO_DECLARE_NON_COPYABLE(Modal) + DISTRHO_PREVENT_HEAP_ALLOCATION + } modal; + + /** Constructor for a regular, standalone window. */ + explicit PrivateData(Application& app, Window* self); + + /** Constructor for a modal window. */ + explicit PrivateData(Application& app, Window* self, PrivateData* ppData); + + /** Constructor for an embed Window, with a few extra hints from the host side. */ + explicit PrivateData(Application& app, Window* self, uintptr_t parentWindowHandle, double scaling, bool resizable); + + /** Constructor for an embed Window, with a few extra hints from the host side. */ + explicit PrivateData(Application& app, Window* self, uintptr_t parentWindowHandle, + uint width, uint height, double scaling, bool resizable); + + /** Destructor. */ + ~PrivateData() override; + + /** Helper initialization function called at the end of all this class constructors. */ + void init(uint width, uint height, bool resizable); + + /** Hide window and notify application of a window close event. + * Does nothing if window is embed (that is, not standalone). + * The application event-loop will stop when all windows have been closed. + * + * @note It is possible to hide the window while not stopping the event-loop. + * A closed window is always hidden, but the reverse is not always true. + */ + void close(); + + void show(); + void hide(); + + void focus(); + + void setResizable(bool resizable); + + const GraphicsContext& getGraphicsContext() const noexcept; + + // idle callback stuff + void idleCallback() override; + bool addIdleCallback(IdleCallback* callback, uint timerFrequencyInMs); + bool removeIdleCallback(IdleCallback* callback); + + // file handling + bool openFileBrowser(const Window::FileBrowserOptions& options); + + // modal handling + void startModal(); + void stopModal(); + void runAsModal(bool blockWait); + + // pugl events + void onPuglConfigure(double width, double height); + void onPuglExpose(); + void onPuglClose(); + void onPuglFocus(bool focus, CrossingMode mode); + void onPuglKey(const Widget::KeyboardEvent& ev); + void onPuglSpecial(const Widget::SpecialEvent& ev); + void onPuglText(const Widget::CharacterInputEvent& ev); + void onPuglMouse(const Widget::MouseEvent& ev); + void onPuglMotion(const Widget::MotionEvent& ev); + void onPuglScroll(const Widget::ScrollEvent& ev); + + // Pugl event handling entry point + static PuglStatus puglEventCallback(PuglView* view, const PuglEvent* event); + + DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(PrivateData) +}; + +// ----------------------------------------------------------------------- + +END_NAMESPACE_DGL + +#if 0 +// #if defined(DISTRHO_OS_HAIKU) +// BApplication* bApplication; +// BView* bView; +// BWindow* bWindow; +#if defined(DISTRHO_OS_MAC) +// NSView* mView; +// id mWindow; +// id mParentWindow; +# ifndef DGL_FILE_BROWSER_DISABLED + NSOpenPanel* fOpenFilePanel; + id fFilePanelDelegate; +# endif +#elif defined(DISTRHO_OS_WINDOWS) +// HWND hwnd; +// HWND hwndParent; +# ifndef DGL_FILE_BROWSER_DISABLED + String fSelectedFile; +# endif +#endif +#endif + +#if 0 +// ----------------------------------------------------------------------- +// Window Private + +struct Window::PrivateData { + // ------------------------------------------------------------------- + + bool handlePluginSpecial(const bool press, const Key key) + { + DBGp("PUGL: handlePluginSpecial : %i %i\n", press, key); + + if (fModal.childFocus != nullptr) + { + fModal.childFocus->focus(); + return true; + } + + int mods = 0x0; + + switch (key) + { + case kKeyShift: + mods |= kModifierShift; + break; + case kKeyControl: + mods |= kModifierControl; + break; + case kKeyAlt: + mods |= kModifierAlt; + break; + default: + break; + } + + if (mods != 0x0) + { + if (press) + fView->mods |= mods; + else + fView->mods &= ~(mods); + } + + Widget::SpecialEvent ev; + ev.press = press; + ev.key = key; + ev.mod = static_cast(fView->mods); + ev.time = 0; + + FOR_EACH_WIDGET_INV(rit) + { + Widget* const widget(*rit); + + if (widget->isVisible() && widget->onSpecial(ev)) + return true; + } + + return false; + } + +#if defined(DISTRHO_OS_MAC) && !defined(DGL_FILE_BROWSER_DISABLED) + static void openPanelDidEnd(NSOpenPanel* panel, int returnCode, void *userData) + { + PrivateData* pData = (PrivateData*)userData; + + if (returnCode == NSOKButton) + { + NSArray* urls = [panel URLs]; + NSURL* fileUrl = nullptr; + + for (NSUInteger i = 0, n = [urls count]; i < n && !fileUrl; ++i) + { + NSURL* url = (NSURL*)[urls objectAtIndex:i]; + if ([url isFileURL]) + fileUrl = url; + } + + if (fileUrl) + { + PuglView* view = pData->fView; + if (view->fileSelectedFunc) + { + const char* fileName = [fileUrl.path UTF8String]; + view->fileSelectedFunc(view, fileName); + } + } + } + + [pData->fOpenFilePanel release]; + pData->fOpenFilePanel = nullptr; + } +#endif + + // ------------------------------------------------------------------- + + DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(PrivateData) +}; +#endif + +#endif // DGL_WINDOW_PRIVATE_DATA_HPP_INCLUDED diff --git a/dgl/src/pugl/pugl.h b/dgl/src/pugl-custom/pugl.h similarity index 100% rename from dgl/src/pugl/pugl.h rename to dgl/src/pugl-custom/pugl.h diff --git a/dgl/src/pugl/pugl_haiku.cpp b/dgl/src/pugl-custom/pugl_haiku.cpp similarity index 100% rename from dgl/src/pugl/pugl_haiku.cpp rename to dgl/src/pugl-custom/pugl_haiku.cpp diff --git a/dgl/src/pugl/pugl_internal.h b/dgl/src/pugl-custom/pugl_internal.h similarity index 100% rename from dgl/src/pugl/pugl_internal.h rename to dgl/src/pugl-custom/pugl_internal.h diff --git a/dgl/src/pugl/pugl_osx.m b/dgl/src/pugl-custom/pugl_osx.m similarity index 100% rename from dgl/src/pugl/pugl_osx.m rename to dgl/src/pugl-custom/pugl_osx.m diff --git a/dgl/src/pugl/pugl_win.cpp b/dgl/src/pugl-custom/pugl_win.cpp similarity index 100% rename from dgl/src/pugl/pugl_win.cpp rename to dgl/src/pugl-custom/pugl_win.cpp diff --git a/dgl/src/pugl/pugl_x11.c b/dgl/src/pugl-custom/pugl_x11.c similarity index 100% rename from dgl/src/pugl/pugl_x11.c rename to dgl/src/pugl-custom/pugl_x11.c diff --git a/dgl/src/pugl-extra/extras.c b/dgl/src/pugl-extra/extras.c new file mode 100644 index 00000000..01e90192 --- /dev/null +++ b/dgl/src/pugl-extra/extras.c @@ -0,0 +1,29 @@ +/* + Copyright (C) 2012-2020 Filipe Coelho + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ + +/** + @file extras.c pugl extra implementations for DPF. +*/ + +#include "extras.h" + +#include "../pugl-upstream/src/implementation.h" + +const char* +puglGetWindowTitle(const PuglView* view) +{ + return view->title; +} diff --git a/dgl/src/pugl-extra/extras.h b/dgl/src/pugl-extra/extras.h new file mode 100644 index 00000000..f9ff4d61 --- /dev/null +++ b/dgl/src/pugl-extra/extras.h @@ -0,0 +1,50 @@ +/* + Copyright (C) 2012-2020 Filipe Coelho + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ + +/** + @file pugl.h pugl extra API for DPF. +*/ + +#ifndef PUGL_EXTRAS_PUGL_H +#define PUGL_EXTRAS_PUGL_H + +#include "../pugl-upstream/include/pugl/pugl.h" + +PUGL_BEGIN_DECLS + +PUGL_API const char* +puglGetWindowTitle(const PuglView* view); + +PUGL_API int +puglGetViewHint(const PuglView* view, PuglViewHint hint); + +PUGL_API void +puglRaiseWindow(PuglView* view); + +PUGL_API void +puglSetWindowSize(PuglView* view, unsigned int width, unsigned int height); + +PUGL_API void +puglUpdateGeometryConstraints(PuglView* view, unsigned int width, unsigned int height, bool aspect); + +#ifdef DISTRHO_OS_WINDOWS +PUGL_API void +puglWin32SetWindowResizable(PuglView* view, bool resizable); +#endif + +PUGL_END_DECLS + +#endif // PUGL_EXTRAS_PUGL_H diff --git a/dgl/src/pugl-extra/haiku.cpp b/dgl/src/pugl-extra/haiku.cpp new file mode 100644 index 00000000..b01b6629 --- /dev/null +++ b/dgl/src/pugl-extra/haiku.cpp @@ -0,0 +1,81 @@ +/* + Copyright 2012-2019 David Robillard + Copyright 2019-2020 Filipe Coelho + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ + +/** + @file mac.cpp HaikuOS implementation. +*/ + +#include "haiku.h" + +#include "pugl/detail/implementation.h" + +PuglStatus +puglGrabFocus(PuglView* view) +{ + view->impl->bView->MakeFocus(true); + return PUGL_SUCCESS; +} + +// extras follow + +void +puglRaiseWindow(PuglView* view) +{ +} + +void +puglSetWindowSize(PuglView* view, unsigned int width, unsigned int height) +{ + bView->ResizeTo(width, height); + + if (bWindow != nullptr && bWindow->LockLooper()) + { + bWindow->MoveTo(50, 50); + bWindow->ResizeTo(width, height); + + if (! forced) + bWindow->Flush(); + + bWindow->UnlockLooper(); + } + // TODO resizable +} + +void setVisible(const bool yesNo) +{ + if (bWindow != nullptr) + { + if (bWindow->LockLooper()) + { + if (yesNo) + bWindow->Show(); + else + bWindow->Hide(); + + // TODO use flush? + bWindow->Sync(); + bWindow->UnlockLooper(); + } + } + else + { + if (yesNo) + bView->Show(); + else + bView->Hide(); + } +} diff --git a/dgl/src/pugl-extra/haiku.h b/dgl/src/pugl-extra/haiku.h new file mode 100644 index 00000000..9930a8df --- /dev/null +++ b/dgl/src/pugl-extra/haiku.h @@ -0,0 +1,35 @@ +/* + Copyright 2012-2019 David Robillard + Copyright 2019-2020 Filipe Coelho + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ + +/** + @file haiku.h Shared definitions for HaikuOS implementation. +*/ + +#include "pugl/pugl.h" + +#include +#include +// using? interface/ + +struct PuglWorldInternalsImpl { + BApplication* app; +}; + +struct PuglInternalsImpl { + BViewType* view; + BWindow* window; +}; diff --git a/dgl/src/pugl-extra/mac.m b/dgl/src/pugl-extra/mac.m new file mode 100644 index 00000000..853ac246 --- /dev/null +++ b/dgl/src/pugl-extra/mac.m @@ -0,0 +1,48 @@ +/* + Copyright (C) 2012-2020 Filipe Coelho + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ + +/** + @file mac.m MacOS extra implementation for DPF. +*/ + +#include "pugl/detail/mac.h" + +void +puglRaiseWindow(PuglView* view) +{ +} + +void +puglSetWindowSize(PuglView* view, unsigned int width, unsigned int height) +{ + // NOTE: pugl mac code does nothing with x and y + const PuglRect frame = { 0.0, 0.0, (double)width, (double)height }; + puglSetFrame(view, frame); +} + +void +puglUpdateGeometryConstraints(PuglView* view, unsigned int width, unsigned int height, bool aspect) +{ + // NOTE this is a combination of puglSetMinSize and puglSetAspectRatio + view->minWidth = width; + view->minHeight = height; + + [view->impl->window setContentMinSize:sizePoints(view, width, height)]; + + if (aspect) { + [view->impl->window setContentAspectRatio:sizePoints(view, width, height)]; + } +} diff --git a/dgl/src/pugl-extra/win.c b/dgl/src/pugl-extra/win.c new file mode 100644 index 00000000..dca0db02 --- /dev/null +++ b/dgl/src/pugl-extra/win.c @@ -0,0 +1,118 @@ +/* + Copyright (C) 2012-2020 Filipe Coelho + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ + +/** + @file win.c Windows extra implementation for DPF. +*/ + +#include "pugl/detail/win.h" + +#include "pugl/detail/implementation.h" + +void +puglRaiseWindow(PuglView* view) +{ + SetForegroundWindow(view->impl->hwnd); + SetActiveWindow(view->impl->hwnd); + return PUGL_SUCCESS; +} + +void +puglSetWindowSize(PuglView* view, unsigned int width, unsigned int height) +{ + view->frame.width = width; + view->frame.height = height; + + // NOTE the following code matches upstream pugl, except we add SWP_NOMOVE flag + if (view->impl->hwnd) { + RECT rect = { (long)frame.x, + (long)frame.y, + (long)frame.x + (long)frame.width, + (long)frame.y + (long)frame.height }; + + AdjustWindowRectEx(&rect, puglWinGetWindowFlags(view), + FALSE, + puglWinGetWindowExFlags(view)); + + SetWindowPos(view->impl->hwnd, + HWND_TOP, + rect.left, + rect.top, + rect.right - rect.left, + rect.bottom - rect.top, + SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOOWNERZORDER | SWP_NOZORDER); + } +} + +void +puglUpdateGeometryConstraints(PuglView* view, unsigned int width, unsigned int height, bool aspect) +{ + // NOTE this is a combination of puglSetMinSize and puglSetAspectRatio, but stilL TODO on pugl + Display* display = view->world->impl->display; + + view->minWidth = width; + view->minHeight = height; + + if (aspect) { + view->minAspectX = width; + view->minAspectY = height; + view->maxAspectX = width; + view->maxAspectY = height; + } +} + +void +puglWin32RestoreWindow(PuglView* view) +{ + PuglInternals* impl = view->impl; + + ShowWindow(impl->hwnd, SW_RESTORE); + SetFocus(impl->hwnd); +} + +void +puglWin32ShowWindowCentered(PuglView* view) +{ + PuglInternals* impl = view->impl; + + RECT rectChild, rectParent; + + if (impl->transientParent != 0 && + GetWindowRect(impl->hwnd, &rectChild) && + GetWindowRect(impl->transientParent, &rectParent)) + { + SetWindowPos(impl->hwnd, (HWND)impl->transientParent, + rectParent.left + (rectChild.right-rectChild.left)/2, + rectParent.top + (rectChild.bottom-rectChild.top)/2, + 0, 0, SWP_SHOWWINDOW|SWP_NOSIZE); + } + else + { + ShowWindow(hwnd, SW_SHOWNORMAL); + } + + SetFocus(impl->hwnd); +} + +void +puglWin32SetWindowResizable(PuglView* view, bool resizable) +{ + PuglInternals* impl = view->impl; + + const int winFlags = resizable ? GetWindowLong(hwnd, GWL_STYLE) | WS_SIZEBOX + : GetWindowLong(hwnd, GWL_STYLE) & ~WS_SIZEBOX; + SetWindowLong(impl->hwnd, GWL_STYLE, winFlags); +} diff --git a/dgl/src/pugl-extra/x11.c b/dgl/src/pugl-extra/x11.c new file mode 100644 index 00000000..595473db --- /dev/null +++ b/dgl/src/pugl-extra/x11.c @@ -0,0 +1,111 @@ +/* + Copyright (C) 2012-2020 Filipe Coelho + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ + +/** + @file x11.c X11 extra implementation for DPF. +*/ + +// NOTE can't import this file twice! +#ifndef PUGL_DETAIL_X11_H_INCLUDED +#include "../pugl-upstream/src/x11.h" +#endif + +#include "../pugl-upstream/src/implementation.h" + +#include +#include + +void +puglRaiseWindow(PuglView* view) +{ + XRaiseWindow(view->impl->display, view->impl->win); +} + +void +puglSetWindowSize(PuglView* view, unsigned int width, unsigned int height) +{ + view->frame.width = width; + view->frame.height = height; + + if (view->impl->win) { +#if 0 + if (! fResizable) + { + XSizeHints sizeHints; + memset(&sizeHints, 0, sizeof(sizeHints)); + + sizeHints.flags = PSize|PMinSize|PMaxSize; + sizeHints.width = static_cast(width); + sizeHints.height = static_cast(height); + sizeHints.min_width = static_cast(width); + sizeHints.min_height = static_cast(height); + sizeHints.max_width = static_cast(width); + sizeHints.max_height = static_cast(height); + + XSetWMNormalHints(xDisplay, xWindow, &sizeHints); + } +#endif + + XResizeWindow(view->world->impl->display, view->impl->win, width, height); + } +} + +void +puglUpdateGeometryConstraints(PuglView* view, unsigned int width, unsigned int height, bool aspect) +{ + // NOTE this is a combination of puglSetMinSize and puglSetAspectRatio + Display* display = view->world->impl->display; + + view->minWidth = width; + view->minHeight = height; + + if (aspect) { + view->minAspectX = width; + view->minAspectY = height; + view->maxAspectX = width; + view->maxAspectY = height; + } + +#if 0 + if (view->impl->win) { + XSizeHints sizeHints = getSizeHints(view); + XSetNormalHints(display, view->impl->win, &sizeHints); + // NOTE old code used this instead + // XSetWMNormalHints(display, view->impl->win, &sizeHints); + } +#endif +} + +void +puglExtraSetWindowTypeAndPID(PuglView* view) +{ + PuglInternals* const impl = view->impl; + + const pid_t pid = getpid(); + const Atom _nwp = XInternAtom(impl->display, "_NET_WM_PID", False); + XChangeProperty(impl->display, impl->win, _nwp, XA_CARDINAL, 32, PropModeReplace, (const uchar*)&pid, 1); + + const Atom _wt = XInternAtom(impl->display, "_NET_WM_WINDOW_TYPE", False); + + // Setting the window to both dialog and normal will produce a decorated floating dialog + // Order is important: DIALOG needs to come before NORMAL + const Atom _wts[2] = { + XInternAtom(impl->display, "_NET_WM_WINDOW_TYPE_DIALOG", False), + XInternAtom(impl->display, "_NET_WM_WINDOW_TYPE_NORMAL", False) + }; + + XChangeProperty(impl->display, impl->win, _wt, XA_ATOM, 32, PropModeReplace, (const uchar*)&_wts, 2); +} diff --git a/dgl/src/pugl-upstream b/dgl/src/pugl-upstream new file mode 160000 index 00000000..c5a5eb4c --- /dev/null +++ b/dgl/src/pugl-upstream @@ -0,0 +1 @@ +Subproject commit c5a5eb4cdcb12dc8d74be4f5fbb335e8b3eac711 diff --git a/dgl/src/pugl.cpp b/dgl/src/pugl.cpp new file mode 100644 index 00000000..5a013bda --- /dev/null +++ b/dgl/src/pugl.cpp @@ -0,0 +1,458 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "pugl.hpp" + +/* we will include all header files used in pugl in their C++ friendly form, then pugl stuff in custom namespace */ +#include +#include +#include +#include +#include + +#if defined(DISTRHO_OS_HAIKU) +#elif defined(DISTRHO_OS_MAC) +# import +# include +# include +# ifdef DGL_CAIRO +# include +# include +# endif +# ifdef DGL_OPENGL +# include +# endif +# ifdef DGL_VULKAN +# import +# include +# include +# endif +#elif defined(DISTRHO_OS_WINDOWS) +# include +# include +# include +# ifdef DGL_CAIRO +# include +# include +# endif +# ifdef DGL_OPENGL +# include +# endif +# ifdef DGL_VULKAN +# include +# include +# endif +#else +# include +# include +# include +# include +# include +# include +# include +# include +# ifdef HAVE_XCURSOR +# include +# include +# endif +# ifdef HAVE_XRANDR +# include +# endif +# ifdef HAVE_XSYNC +# include +# include +# endif +# ifdef DGL_CAIRO +# include +# include +# endif +# ifdef DGL_OPENGL +# include +# include +# endif +# ifdef DGL_VULKAN +# include +# include +# endif +#endif + +#ifdef HAVE_X11 +# define DBLCLKTME 400 +# include "sofd/libsofd.h" +# include "sofd/libsofd.c" +#endif + +#ifndef DISTRHO_OS_MAC +START_NAMESPACE_DGL +#endif + +// -------------------------------------------------------------------------------------------------------------------- + +#if defined(DISTRHO_OS_HAIKU) +#elif defined(DISTRHO_OS_MAC) +# ifndef DISTRHO_MACOS_NAMESPACE_MACRO +# define DISTRHO_MACOS_NAMESPACE_MACRO_HELPER(NS, SEP, INTERFACE) NS ## SEP ## INTERFACE +# define DISTRHO_MACOS_NAMESPACE_MACRO(NS, INTERFACE) DISTRHO_MACOS_NAMESPACE_MACRO_HELPER(NS, _, INTERFACE) +# define PuglStubView DISTRHO_MACOS_NAMESPACE_MACRO(DGL_NAMESPACE, PuglStubView) +# define PuglWrapperView DISTRHO_MACOS_NAMESPACE_MACRO(DGL_NAMESPACE, PuglWrapperView) +# define PuglWindow DISTRHO_MACOS_NAMESPACE_MACRO(DGL_NAMESPACE, PuglWindow) +# endif +# import "pugl-upstream/src/mac.m" +# import "pugl-upstream/src/mac_stub.m" +# ifdef DGL_CAIRO +# import "pugl-upstream/src/mac_cairo.m" +# endif +# ifdef DGL_OPENGL +# import "pugl-upstream/src/mac_gl.m" +# endif +# ifdef DGL_VULKAN +# import "pugl-upstream/src/mac_vulkan.m" +# endif +#elif defined(DISTRHO_OS_WINDOWS) +# include "pugl-upstream/src/win.c" +# include "pugl-upstream/src/win_stub.c" +# ifdef DGL_CAIRO +# include "pugl-upstream/src/win_cairo.c" +# endif +# ifdef DGL_OPENGL +# include "pugl-upstream/src/win_gl.c" +# endif +# ifdef DGL_VULKAN +# include "pugl-upstream/src/win_vulkan.c" +# endif +#else +# include "pugl-upstream/src/x11.c" +# include "pugl-upstream/src/x11_stub.c" +# ifdef DGL_CAIRO +# include "pugl-upstream/src/x11_cairo.c" +# endif +# ifdef DGL_OPENGL +# include "pugl-upstream/src/x11_gl.c" +# endif +# ifdef DGL_VULKAN +# include "pugl-upstream/src/x11_vulkan.c" +# endif +#endif + +#include "pugl-upstream/src/implementation.c" + +// -------------------------------------------------------------------------------------------------------------------- +// expose backend enter + +void puglBackendEnter(PuglView* view) +{ + view->backend->enter(view, NULL); +} + +// -------------------------------------------------------------------------------------------------------------------- +// missing in pugl, directly returns title char* pointer + +const char* puglGetWindowTitle(const PuglView* view) +{ + return view->title; +} + +// -------------------------------------------------------------------------------------------------------------------- +// bring view window into the foreground, aka "raise" window + +void puglRaiseWindow(PuglView* view) +{ +#if defined(DISTRHO_OS_HAIKU) || defined(DISTRHO_OS_MAC) + // nothing here yet +#elif defined(DISTRHO_OS_WINDOWS) + SetForegroundWindow(view->impl->hwnd); + SetActiveWindow(view->impl->hwnd); +#else + XRaiseWindow(view->impl->display, view->impl->win); +#endif +} + +// -------------------------------------------------------------------------------------------------------------------- +// set backend that matches current build + +void puglSetMatchingBackendForCurrentBuild(PuglView* const view) +{ +#ifdef DGL_CAIRO + puglSetBackend(view, puglCairoBackend()); +#endif +#ifdef DGL_OPENGL + puglSetBackend(view, puglGlBackend()); +#endif +#ifdef DGL_VULKAN + puglSetBackend(view, puglVulkanBackend()); +#endif + if (view->backend == nullptr) + puglSetBackend(view, puglStubBackend()); +} + +// -------------------------------------------------------------------------------------------------------------------- +// Combine puglSetMinSize and puglSetAspectRatio + +PuglStatus puglSetGeometryConstraints(PuglView* const view, const uint width, const uint height, const bool aspect) +{ + view->minWidth = (int)width; + view->minHeight = (int)height; + + if (aspect) { + view->minAspectX = (int)width; + view->minAspectY = (int)height; + view->maxAspectX = (int)width; + view->maxAspectY = (int)height; + } + +#if defined(DISTRHO_OS_HAIKU) + // nothing? +#elif defined(DISTRHO_OS_MAC) + /* + if (view->impl->window) + { + [view->impl->window setContentMinSize:sizePoints(view, view->minWidth, view->minHeight)]; + + if (aspect) + [view->impl->window setContentAspectRatio:sizePoints(view, view->minAspectX, view->minAspectY)]; + } + */ + puglSetMinSize(view, width, height); + puglSetAspectRatio(view, width, height, width, height); +#elif defined(DISTRHO_OS_WINDOWS) + // nothing +#else + return updateSizeHints(view); +#endif + + return PUGL_SUCCESS; +} + +// -------------------------------------------------------------------------------------------------------------------- +// set window size without changing frame x/y position + +PuglStatus puglSetWindowSize(PuglView* const view, const uint width, const uint height) +{ +#if defined(DISTRHO_OS_HAIKU) || defined(DISTRHO_OS_MAC) + // keep upstream behaviour + const PuglRect frame = { view->frame.x, view->frame.y, (double)width, (double)height }; + return puglSetFrame(view, frame); +#elif defined(DISTRHO_OS_WINDOWS) + // matches upstream pugl, except we add SWP_NOMOVE flag + if (view->impl->hwnd) + { + const PuglRect frame = view->frame; + + RECT rect = { (long)frame.x, + (long)frame.y, + (long)frame.x + (long)frame.width, + (long)frame.y + (long)frame.height }; + + AdjustWindowRectEx(&rect, puglWinGetWindowFlags(view), FALSE, puglWinGetWindowExFlags(view)); + + if (! SetWindowPos(view->impl->hwnd, + HWND_TOP, + rect.left, + rect.top, + rect.right - rect.left, + rect.bottom - rect.top, + SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOOWNERZORDER | SWP_NOZORDER)) + return PUGL_UNKNOWN_ERROR; + } +#else + // matches upstream pugl, except we use XResizeWindow instead of XMoveResizeWindow + if (view->impl->win) + { + if (! XResizeWindow(view->world->impl->display, view->impl->win, width, height)) + return PUGL_UNKNOWN_ERROR; + } +#endif + + view->frame.width = width; + view->frame.height = height; + return PUGL_SUCCESS; +} + +// -------------------------------------------------------------------------------------------------------------------- +// DGL specific, build-specific drawing prepare + +void puglOnDisplayPrepare(PuglView*) +{ +#ifdef DGL_OPENGL + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glLoadIdentity(); +#endif +} + +// -------------------------------------------------------------------------------------------------------------------- +// DGL specific, build-specific fallback resize + +void puglFallbackOnResize(PuglView* const view) +{ +#ifdef DGL_OPENGL + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(0.0, static_cast(view->frame.width), static_cast(view->frame.height), 0.0, 0.0, 1.0); + glViewport(0, 0, static_cast(view->frame.width), static_cast(view->frame.height)); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); +#endif +} + +#ifdef DISTRHO_OS_WINDOWS +// -------------------------------------------------------------------------------------------------------------------- +// win32 specific, call ShowWindow with SW_RESTORE + +void puglWin32RestoreWindow(PuglView* const view) +{ + PuglInternals* impl = view->impl; + DISTRHO_SAFE_ASSERT_RETURN(impl->hwnd != nullptr,); + + ShowWindow(impl->hwnd, SW_RESTORE); + SetFocus(impl->hwnd); +} + +// -------------------------------------------------------------------------------------------------------------------- +// win32 specific, center view based on parent coordinates (if there is one) + +void puglWin32ShowWindowCentered(PuglView* const view) +{ + PuglInternals* impl = view->impl; + DISTRHO_SAFE_ASSERT_RETURN(impl->hwnd != nullptr,); + + RECT rectChild, rectParent; + + if (view->transientParent != 0 && + GetWindowRect(impl->hwnd, &rectChild) && + GetWindowRect((HWND)view->transientParent, &rectParent)) + { + SetWindowPos(impl->hwnd, (HWND)view->transientParent, + rectParent.left + (rectChild.right-rectChild.left)/2, + rectParent.top + (rectChild.bottom-rectChild.top)/2, + 0, 0, SWP_SHOWWINDOW|SWP_NOSIZE); + } + else + { + ShowWindow(impl->hwnd, SW_SHOWNORMAL); + } + + SetFocus(impl->hwnd); +} + +// -------------------------------------------------------------------------------------------------------------------- +// win32 specific, set or unset WS_SIZEBOX style flag + +void puglWin32SetWindowResizable(PuglView* const view, const bool resizable) +{ + PuglInternals* impl = view->impl; + DISTRHO_SAFE_ASSERT_RETURN(impl->hwnd != nullptr,); + + const int winFlags = resizable ? GetWindowLong(impl->hwnd, GWL_STYLE) | WS_SIZEBOX + : GetWindowLong(impl->hwnd, GWL_STYLE) & ~WS_SIZEBOX; + SetWindowLong(impl->hwnd, GWL_STYLE, winFlags); +} + +// -------------------------------------------------------------------------------------------------------------------- +#endif + +#ifdef HAVE_X11 +// -------------------------------------------------------------------------------------------------------------------- +// X11 specific, setup event loop filter for sofd file dialog + +static bool sofd_has_action; +static char* sofd_filename; + +static bool sofd_event_filter(Display* const display, XEvent* const xevent) +{ + if (x_fib_handle_events(display, xevent) == 0) + return false; + + if (sofd_filename != nullptr) + std::free(sofd_filename); + + if (x_fib_status() > 0) + sofd_filename = x_fib_filename(); + else + sofd_filename = nullptr; + + x_fib_close(display); + sofd_has_action = true; + return true; +} + +void sofdFileDialogSetup(PuglWorld* const world) +{ + puglX11SetEventFilter(world, sofd_event_filter); +} + +// -------------------------------------------------------------------------------------------------------------------- +// X11 specific, show file dialog via sofd + +bool sofdFileDialogShow(PuglView* const view, + const char* const startDir, const char* const title, + const uint flags, const uint width, const uint height) +{ + DISTRHO_SAFE_ASSERT_RETURN(x_fib_configure(0, startDir) == 0, false); + DISTRHO_SAFE_ASSERT_RETURN(x_fib_configure(1, title) == 0, false); + + /* + x_fib_cfg_buttons(3, options.buttons.listAllFiles-1); + x_fib_cfg_buttons(1, options.buttons.showHidden-1); + x_fib_cfg_buttons(2, options.buttons.showPlaces-1); + */ + + PuglInternals* const impl = view->impl; + return (x_fib_show(impl->display, impl->win, width, height) == 0); +} + +// -------------------------------------------------------------------------------------------------------------------- +// X11 specific, close sofd file dialog + +void sofdFileDialogClose(PuglView* const view) +{ + PuglInternals* const impl = view->impl; + x_fib_close(impl->display); +} + +// -------------------------------------------------------------------------------------------------------------------- +// X11 specific, get path chosen via sofd file dialog + +bool sofdFileDialogGetPath(char** path) +{ + if (! sofd_has_action) + return false; + + sofd_has_action = false; + *path = sofd_filename; + return true; +} + +// -------------------------------------------------------------------------------------------------------------------- +// X11 specific, free path of sofd file dialog, no longer needed + +void sofdFileDialogFree(char* const path) +{ + DISTRHO_SAFE_ASSERT_RETURN(path == nullptr || path == sofd_filename,); + + std::free(sofd_filename); + sofd_filename = nullptr; +} + +// -------------------------------------------------------------------------------------------------------------------- +#endif + +// -------------------------------------------------------------------------------------------------------------------- + +#ifndef DISTRHO_OS_MAC +END_NAMESPACE_DGL +#endif diff --git a/dgl/src/pugl.hpp b/dgl/src/pugl.hpp new file mode 100644 index 00000000..f89e2847 --- /dev/null +++ b/dgl/src/pugl.hpp @@ -0,0 +1,121 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef DGL_PUGL_HPP_INCLUDED +#define DGL_PUGL_HPP_INCLUDED + +#include "../Base.hpp" + +/* we will include all header files used in pugl in their C++ friendly form, then pugl stuff in custom namespace */ +#include +#include +#include + +#define PUGL_API +#define PUGL_DISABLE_DEPRECATED +#define PUGL_NO_INCLUDE_GLU_H + +// -------------------------------------------------------------------------------------------------------------------- + +#ifndef DISTRHO_OS_MAC +START_NAMESPACE_DGL +#else +USE_NAMESPACE_DGL +#endif + +#include "pugl-upstream/include/pugl/pugl.h" + +// -------------------------------------------------------------------------------------------------------------------- + +PUGL_BEGIN_DECLS + +// expose backend enter +PUGL_API void +puglBackendEnter(PuglView* view); + +// missing in pugl, directly returns title char* pointer +PUGL_API const char* +puglGetWindowTitle(const PuglView* view); + +// bring view window into the foreground, aka "raise" window +PUGL_API void +puglRaiseWindow(PuglView* view); + +// DGL specific, assigns backend that matches current DGL build +PUGL_API void +puglSetMatchingBackendForCurrentBuild(PuglView* view); + +// Combine puglSetMinSize and puglSetAspectRatio +PUGL_API PuglStatus +puglSetGeometryConstraints(PuglView* view, unsigned int width, unsigned int height, bool aspect); + +// set window size without changing frame x/y position +PUGL_API PuglStatus +puglSetWindowSize(PuglView* view, unsigned int width, unsigned int height); + +// DGL specific, build-specific drawing prepare +PUGL_API void +puglOnDisplayPrepare(PuglView* view); + +// DGL specific, build-specific fallback resize +PUGL_API void +puglFallbackOnResize(PuglView* view); + +#ifdef DISTRHO_OS_WINDOWS +// win32 specific, call ShowWindow with SW_RESTORE +PUGL_API void +puglWin32RestoreWindow(PuglView* view); + +// win32 specific, center view based on parent coordinates (if there is one) +PUGL_API void +puglWin32ShowWindowCentered(PuglView* view); + +// win32 specific, set or unset WS_SIZEBOX style flag +PUGL_API void +puglWin32SetWindowResizable(PuglView* view, bool resizable); +#endif + +#ifdef HAVE_X11 +// X11 specific, setup event loop filter for sofd file dialog +PUGL_API void +sofdFileDialogSetup(PuglWorld* world); + +// X11 specific, show file dialog via sofd +PUGL_API bool +sofdFileDialogShow(PuglView* view, const char* startDir, const char* title, uint flags, uint width, uint height); + +// X11 specific, close sofd file dialog +PUGL_API void +sofdFileDialogClose(PuglView* view); + +// X11 specific, get path chosen via sofd file dialog +PUGL_API bool +sofdFileDialogGetPath(char** path); + +// X11 specific, free path of sofd file dialog, no longer needed +PUGL_API void +sofdFileDialogFree(char* path); +#endif + +PUGL_END_DECLS + +// -------------------------------------------------------------------------------------------------------------------- + +#ifndef DISTRHO_OS_MAC +END_NAMESPACE_DGL +#endif + +#endif // DGL_PUGL_HPP_INCLUDED diff --git a/dgl/src/pugl.mm b/dgl/src/pugl.mm new file mode 120000 index 00000000..8ea74827 --- /dev/null +++ b/dgl/src/pugl.mm @@ -0,0 +1 @@ +pugl.cpp \ No newline at end of file diff --git a/dgl/src/sofd/libsofd.c b/dgl/src/sofd/libsofd.c index 06273d4c..288e37b4 100644 --- a/dgl/src/sofd/libsofd.c +++ b/dgl/src/sofd/libsofd.c @@ -32,7 +32,7 @@ */ #ifdef SOFD_TEST -#define SOFD_HAVE_X11 +#define HAVE_X11 #include "libsofd.h" #endif @@ -337,7 +337,7 @@ const char *x_fib_recent_file(const char *appname) { return NULL; } -#ifdef SOFD_HAVE_X11 +#ifdef HAVE_X11 #include #include @@ -475,7 +475,10 @@ static int (*_fib_filter_function)(const char *filename); #define FAREATEXTL (FAREAMRGL + TEXTSEP) //px; filename text-left FAREAMRGL + TEXTSEP #define SORTBTNOFF -10 //px; -#define DBLCLKTME 400 //msec; double click time +#ifndef DBLCLKTME +#define DBLCLKTME 200 //msec; double click time +#endif + #define DRAW_OUTLINE #define DOUBLE_BUFFER @@ -1208,7 +1211,7 @@ static int fib_dirlistadd (Display *dpy, const int i, const char* path, const ch static int fib_openrecent (Display *dpy, const char *sel) { int i; - unsigned int j; + unsigned int j; assert (_recentcnt > 0); fib_pre_opendir (dpy); query_font_geometry (dpy, _fib_gc, "Last Used", &_fib_font_time_width, NULL, NULL, NULL); @@ -1332,8 +1335,8 @@ static int fib_open (Display *dpy, int item) { static void cb_cancel (Display *dpy) { _status = -1; - // unused - return; (void)dpy; + // unused + return; (void)dpy; } static void cb_open (Display *dpy) { @@ -1478,8 +1481,8 @@ static int fib_widget_at_pos (Display *dpy, int x, int y, int *it) { return 0; - // unused - (void)dpy; + // unused + (void)dpy; } static void fib_update_hover (Display *dpy, int need_expose, const int type, const int item) { @@ -1592,9 +1595,11 @@ static void fib_mousedown (Display *dpy, int x, int y, int btn, unsigned long ti fib_select (dpy, it); _dblclk = time; } - /*if (_fsel >= 0) { + /* + if (_fsel >= 0) { if (!(_dirlist[_fsel].flags & 4)); - }*/ + } + */ } break; case 1: // paths @@ -1656,8 +1661,8 @@ static void fib_mousedown (Display *dpy, int x, int y, int btn, unsigned long ti static void fib_mouseup (Display *dpy, int x, int y, int btn, unsigned long time) { _scrl_my = -1; - // unused - return; (void)dpy; (void)x; (void)y; (void)btn; (void)time; + // unused + return; (void)dpy; (void)x; (void)y; (void)btn; (void)time; } static void add_place_raw (Display *dpy, const char *name, const char *path) { @@ -1885,8 +1890,8 @@ static int x_error_handler (Display *d, XErrorEvent *e) { font_err = 1; return 0; - // unused - (void)d; (void)e; + // unused + (void)d; (void)e; } int x_fib_show (Display *dpy, Window parent, int x, int y) { @@ -2340,7 +2345,7 @@ char *x_fib_filename () { else return NULL; } -#endif // SOFD_HAVE_X11 +#endif // HAVE_X11 #if defined(__clang__) # pragma clang diagnostic pop diff --git a/dgl/src/sofd/libsofd.h b/dgl/src/sofd/libsofd.h index ba8a254f..2abf7881 100644 --- a/dgl/src/sofd/libsofd.h +++ b/dgl/src/sofd/libsofd.h @@ -22,10 +22,15 @@ */ #ifndef LIBSOFD_H -#define LIBSOFD_H +#define LIBSOFD_H 1 +#ifdef HAVE_X11 #include +#ifdef __cplusplus +extern "C" { +#endif + /////////////////////////////////////////////////////////////////////////////// /* public API */ @@ -110,6 +115,16 @@ int x_fib_cfg_buttons (int k, int v); */ int x_fib_cfg_filter_callback (int (*cb)(const char*)); +#ifdef __cplusplus +} +#endif + +#endif /* END X11 specific functions */ + +#ifdef __cplusplus +extern "C" { +#endif + /* 'recently used' API. x-platform * NOTE: all functions use a static cache and are not reentrant. * It is expected that none of these functions are called in @@ -172,4 +187,8 @@ unsigned int x_fib_recent_count (); */ const char *x_fib_recent_at (unsigned int i); -#endif // LIBSOFD_H +#ifdef __cplusplus +} +#endif + +#endif // header guard diff --git a/distrho/DistrhoInfo.hpp b/distrho/DistrhoInfo.hpp index 41177907..c06a7a16 100644 --- a/distrho/DistrhoInfo.hpp +++ b/distrho/DistrhoInfo.hpp @@ -563,6 +563,28 @@ START_NAMESPACE_DISTRHO */ #define DISTRHO_PLUGIN_WANT_TIMEPOS 1 +/** + Wherever the %UI uses a custom toolkit implementation based on OpenGL.@n + When enabled, the macros @ref DISTRHO_UI_CUSTOM_INCLUDE_PATH and @ref DISTRHO_UI_CUSTOM_WIDGET_TYPE are required. + */ +#define DISTRHO_UI_USE_CUSTOM 1 + +/** + The include path to the header file used by the custom toolkit implementation. + This path must be relative to dpf/distrho/DistrhoUI.hpp + @see DISTRHO_UI_USE_CUSTOM + */ +#define DISTRHO_UI_CUSTOM_INCLUDE_PATH + +/** + The top-level-widget typedef to use for the custom toolkit. + This widget class MUST be a subclass of DGL TopLevelWindow class. + It is recommended that you keep this widget class inside the DGL namespace, + and define widget type as e.g. DGL_NAMESPACE::MyCustomTopLevelWidget. + @see DISTRHO_UI_USE_CUSTOM + */ +#define DISTRHO_UI_CUSTOM_WIDGET_TYPE + /** Wherever the %UI uses NanoVG for drawing instead of the default raw OpenGL calls.@n When enabled your %UI instance will subclass @ref NanoWidget instead of @ref Widget. diff --git a/distrho/DistrhoPlugin.hpp b/distrho/DistrhoPlugin.hpp index 9e55c87f..83315665 100644 --- a/distrho/DistrhoPlugin.hpp +++ b/distrho/DistrhoPlugin.hpp @@ -369,7 +369,7 @@ struct ParameterEnumerationValues { } } - DISTRHO_DECLARE_NON_COPY_STRUCT(ParameterEnumerationValues) + DISTRHO_DECLARE_NON_COPYABLE(ParameterEnumerationValues) }; /** diff --git a/distrho/DistrhoUI.hpp b/distrho/DistrhoUI.hpp index 69dafdec..cded5826 100644 --- a/distrho/DistrhoUI.hpp +++ b/distrho/DistrhoUI.hpp @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2020 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -20,23 +20,32 @@ #include "extra/LeakDetector.hpp" #include "src/DistrhoPluginChecks.h" +#ifdef DGL_CAIRO +# include "Cairo.hpp" +#endif +#ifdef DGL_OPENGL +# include "OpenGL.hpp" +#endif +#ifdef DGL_VULKAN +# include "Vulkan.hpp" +#endif + #if DISTRHO_PLUGIN_HAS_EXTERNAL_UI # include "../dgl/Base.hpp" # include "extra/ExternalWindow.hpp" typedef DISTRHO_NAMESPACE::ExternalWindow UIWidget; +#elif DISTRHO_UI_USE_CUSTOM +# include DISTRHO_UI_CUSTOM_INCLUDE_PATH +typedef DISTRHO_UI_CUSTOM_WIDGET_TYPE UIWidget; +#elif DISTRHO_UI_USE_CAIRO +# include "../dgl/Cairo.hpp" +typedef DGL_NAMESPACE::CairoTopLevelWidget UIWidget; #elif DISTRHO_UI_USE_NANOVG # include "../dgl/NanoVG.hpp" -typedef DGL_NAMESPACE::NanoWidget UIWidget; +typedef DGL_NAMESPACE::NanoTopLevelWidget UIWidget; #else -# include "../dgl/Widget.hpp" -typedef DGL_NAMESPACE::Widget UIWidget; -#endif - -#ifdef DGL_CAIRO -# include "Cairo.hpp" -#endif -#ifdef DGL_OPENGL -# include "OpenGL.hpp" +# include "../dgl/TopLevelWidget.hpp" +typedef DGL_NAMESPACE::TopLevelWidget UIWidget; #endif START_NAMESPACE_DISTRHO @@ -69,27 +78,32 @@ public: */ virtual ~UI(); -#if DISTRHO_UI_USER_RESIZABLE && !DISTRHO_PLUGIN_HAS_EXTERNAL_UI - /** - Set geometry constraints for the UI when resized by the user, and optionally scale UI automatically. - @see Window::setGeometryConstraints(uint,uint,bool) - @see Window::setScaling(double) - */ - void setGeometryConstraints(uint minWidth, uint minHeight, bool keepAspectRatio, bool automaticallyScale = false); -#endif - /* -------------------------------------------------------------------------------------------------------- * Host state */ /** Get the color used for UI background (i.e. window color) in RGBA format. Returns 0 by default, in case of error or lack of host support. + + The following example code can be use to extract individual colors: + ``` + const int red = (bgColor >> 24) & 0xff; + const int green = (bgColor >> 16) & 0xff; + const int blue = (bgColor >> 8) & 0xff; + ``` */ uint getBackgroundColor() const noexcept; /** Get the color used for UI foreground (i.e. text color) in RGBA format. Returns 0xffffffff by default, in case of error or lack of host support. + + The following example code can be use to extract individual colors: + ``` + const int red = (fgColor >> 24) & 0xff; + const int green = (fgColor >> 16) & 0xff; + const int blue = (fgColor >> 8) & 0xff; + ``` */ uint getForegroundColor() const noexcept; @@ -232,7 +246,7 @@ protected: # ifndef DGL_FILE_BROWSER_DISABLED /** File browser selected function. - @see Window::fileBrowserSelected(const char*) + @see Window::onFileSelected(const char*) */ virtual void uiFileBrowserSelected(const char* filename); # endif @@ -259,18 +273,10 @@ protected: private: struct PrivateData; - PrivateData* const pData; + PrivateData* const uiData; friend class UIExporter; friend class UIExporterWindow; -#if !DISTRHO_PLUGIN_HAS_EXTERNAL_UI - // these should not be used - void setAbsoluteX(int) const noexcept {} - void setAbsoluteY(int) const noexcept {} - void setAbsolutePos(int, int) const noexcept {} - void setAbsolutePos(const DGL_NAMESPACE::Point&) const noexcept {} -#endif - DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(UI) }; diff --git a/distrho/DistrhoUI_macOS.mm b/distrho/DistrhoUI_macOS.mm new file mode 100644 index 00000000..2cdbe151 --- /dev/null +++ b/distrho/DistrhoUI_macOS.mm @@ -0,0 +1,33 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef PUGL_NAMESPACE +# error PUGL_NAMESPACE must be set when compiling this file +#endif + +#include "src/DistrhoPluginChecks.h" +#include "../dgl/Base.hpp" + +#define DISTRHO_MACOS_NAMESPACE_MACRO_HELPER(DGL_NS, SEP, PUGL_NS, INTERFACE) DGL_NS ## SEP ## PUGL_NS ## SEP ## INTERFACE +#define DISTRHO_MACOS_NAMESPACE_MACRO(DGL_NS, PUGL_NS, INTERFACE) DISTRHO_MACOS_NAMESPACE_MACRO_HELPER(DGL_NS, _, PUGL_NS, INTERFACE) + +#define PuglOpenGLView DISTRHO_MACOS_NAMESPACE_MACRO(DGL_NAMESPACE, PUGL_NAMESPACE, OpenGLView) +#define PuglStubView DISTRHO_MACOS_NAMESPACE_MACRO(DGL_NAMESPACE, PUGL_NAMESPACE, StubView) +#define PuglWindow DISTRHO_MACOS_NAMESPACE_MACRO(DGL_NAMESPACE, PUGL_NAMESPACE, Window) +#define PuglWindowDelegate DISTRHO_MACOS_NAMESPACE_MACRO(DGL_NAMESPACE, PUGL_NAMESPACE, WindowDelegate) +#define PuglWrapperView DISTRHO_MACOS_NAMESPACE_MACRO(DGL_NAMESPACE, PUGL_NAMESPACE, WrapperView) + +#import "src/pugl.mm" diff --git a/distrho/DistrhoUtils.hpp b/distrho/DistrhoUtils.hpp index 4cf8ac73..9741d82b 100644 --- a/distrho/DistrhoUtils.hpp +++ b/distrho/DistrhoUtils.hpp @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2018 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -50,6 +50,9 @@ inline float round(float __x) # define M_PI 3.14159265358979323846 #endif +#define DISTRHO_MACRO_AS_STRING_VALUE(MACRO) #MACRO +#define DISTRHO_MACRO_AS_STRING(MACRO) DISTRHO_MACRO_AS_STRING_VALUE(MACRO) + // ----------------------------------------------------------------------- // misc functions @@ -196,6 +199,16 @@ void d_safe_assert_uint2(const char* const assertion, const char* const file, d_stderr2("assertion failure: \"%s\" in file %s, line %i, v1 %u, v2 %u", assertion, file, line, v1, v2); } +/* + * Print a safe assertion error message, with a custom error message. + */ +static inline +void d_custom_safe_assert(const char* const message, const char* const assertion, const char* const file, + const int line) noexcept +{ + d_stderr2("assertion failure: %s, condition \"%s\" in file %s, line %i", message, assertion, file, line); +} + /* * Print a safe exception error message. */ diff --git a/distrho/extra/ExternalWindow.hpp b/distrho/extra/ExternalWindow.hpp index c39f55c7..68c35c41 100644 --- a/distrho/extra/ExternalWindow.hpp +++ b/distrho/extra/ExternalWindow.hpp @@ -192,7 +192,7 @@ private: friend class UIExporter; - DISTRHO_DECLARE_NON_COPY_CLASS(ExternalWindow) + DISTRHO_DECLARE_NON_COPYABLE(ExternalWindow) }; // ----------------------------------------------------------------------- diff --git a/distrho/extra/LeakDetector.hpp b/distrho/extra/LeakDetector.hpp index b146efc7..765e4676 100644 --- a/distrho/extra/LeakDetector.hpp +++ b/distrho/extra/LeakDetector.hpp @@ -54,13 +54,13 @@ START_NAMESPACE_DISTRHO DISTRHO_NAMESPACE::LeakedObjectDetector DISTRHO_JOIN_MACRO(leakDetector_, ClassName); # define DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(ClassName) \ - DISTRHO_DECLARE_NON_COPY_CLASS(ClassName) \ + DISTRHO_DECLARE_NON_COPYABLE(ClassName) \ DISTRHO_LEAK_DETECTOR(ClassName) #else /** Don't use leak detection on release builds. */ # define DISTRHO_LEAK_DETECTOR(ClassName) # define DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(ClassName) \ - DISTRHO_DECLARE_NON_COPY_CLASS(ClassName) + DISTRHO_DECLARE_NON_COPYABLE(ClassName) #endif //============================================================================== diff --git a/distrho/extra/Mutex.hpp b/distrho/extra/Mutex.hpp index 2f80515a..9843bfcb 100644 --- a/distrho/extra/Mutex.hpp +++ b/distrho/extra/Mutex.hpp @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2016 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -39,7 +39,7 @@ public: /* * Constructor. */ - Mutex(bool inheritPriority = true) noexcept + Mutex(const bool inheritPriority = true) noexcept : fMutex() { pthread_mutexattr_t attr; @@ -61,9 +61,9 @@ public: /* * Lock the mutex. */ - void lock() const noexcept + bool lock() const noexcept { - pthread_mutex_lock(&fMutex); + return (pthread_mutex_lock(&fMutex) == 0); } /* @@ -86,8 +86,7 @@ public: private: mutable pthread_mutex_t fMutex; - DISTRHO_PREVENT_HEAP_ALLOCATION - DISTRHO_DECLARE_NON_COPY_CLASS(Mutex) + DISTRHO_DECLARE_NON_COPYABLE(Mutex) }; // ----------------------------------------------------------------------- @@ -133,12 +132,13 @@ public: /* * Lock the mutex. */ - void lock() const noexcept + bool lock() const noexcept { #ifdef DISTRHO_OS_WINDOWS EnterCriticalSection(&fSection); + return true; #else - pthread_mutex_lock(&fMutex); + return (pthread_mutex_lock(&fMutex) == 0); #endif } @@ -174,8 +174,7 @@ private: mutable pthread_mutex_t fMutex; #endif - DISTRHO_PREVENT_HEAP_ALLOCATION - DISTRHO_DECLARE_NON_COPY_CLASS(RecursiveMutex) + DISTRHO_DECLARE_NON_COPYABLE(RecursiveMutex) }; // ----------------------------------------------------------------------- @@ -256,7 +255,7 @@ private: volatile bool fTriggered; DISTRHO_PREVENT_HEAP_ALLOCATION - DISTRHO_DECLARE_NON_COPY_CLASS(Signal) + DISTRHO_DECLARE_NON_COPYABLE(Signal) }; // ----------------------------------------------------------------------- @@ -281,7 +280,7 @@ private: const Mutex& fMutex; DISTRHO_PREVENT_HEAP_ALLOCATION - DISTRHO_DECLARE_NON_COPY_CLASS(ScopeLocker) + DISTRHO_DECLARE_NON_COPYABLE(ScopeLocker) }; // ----------------------------------------------------------------------- @@ -295,6 +294,10 @@ public: : fMutex(mutex), fLocked(mutex.tryLock()) {} + ScopeTryLocker(const Mutex& mutex, const bool forceLock) noexcept + : fMutex(mutex), + fLocked(forceLock ? mutex.lock() : mutex.tryLock()) {} + ~ScopeTryLocker() noexcept { if (fLocked) @@ -316,7 +319,7 @@ private: const bool fLocked; DISTRHO_PREVENT_HEAP_ALLOCATION - DISTRHO_DECLARE_NON_COPY_CLASS(ScopeTryLocker) + DISTRHO_DECLARE_NON_COPYABLE(ScopeTryLocker) }; // ----------------------------------------------------------------------- @@ -341,7 +344,7 @@ private: const Mutex& fMutex; DISTRHO_PREVENT_HEAP_ALLOCATION - DISTRHO_DECLARE_NON_COPY_CLASS(ScopeUnlocker) + DISTRHO_DECLARE_NON_COPYABLE(ScopeUnlocker) }; // ----------------------------------------------------------------------- diff --git a/distrho/extra/ScopedSafeLocale.hpp b/distrho/extra/ScopedSafeLocale.hpp new file mode 100644 index 00000000..9c6293c2 --- /dev/null +++ b/distrho/extra/ScopedSafeLocale.hpp @@ -0,0 +1,136 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef DISTRHO_SCOPED_SAFE_LOCALE_HPP_INCLUDED +#define DISTRHO_SCOPED_SAFE_LOCALE_HPP_INCLUDED + +#include "../DistrhoUtils.hpp" + +#include + +#if ! (defined(DISTRHO_OS_HAIKU) || defined(DISTRHO_OS_MAC) || defined(DISTRHO_OS_WINDOWS)) +# define DISTRHO_USE_NEWLOCALE +#endif + +#if defined(DISTRHO_OS_WINDOWS) && __MINGW64_VERSION_MAJOR >= 5 +# define DISTRHO_USE_CONFIGTHREADLOCALE +#endif + +START_NAMESPACE_DISTRHO + +// ----------------------------------------------------------------------- +// ScopedSafeLocale class definition + +/** + ScopedSafeLocale is a handy class for setting current locale to C on constructor, and revert back on destructor. + It tries to be thread-safe, but it is not always possible. + + Put it inside a scope of code where string conversions happen to ensure they are consistent across many systems. + For example: + + ``` + // stack buffer to put converted float value in + char strbuf[0xff]; + + { + // safe locale operations during this scope + const ScopedSafeLocale sl; + snprintf(strbuf, 0xff, "%f", value); + } + + // do something with `strbuf` now, locale is reverted and left just as it was before + ``` + */ +class ScopedSafeLocale { +public: + /* + * Constructor. + * Current system locale will saved, while "C" is set as the next one to use. + */ + inline ScopedSafeLocale() noexcept; + + /* + * Destructor. + * System locale will revert back to the one saved during constructor. + */ + inline ~ScopedSafeLocale() noexcept; + +private: +#ifdef DISTRHO_USE_NEWLOCALE + locale_t newloc, oldloc; +#else +# ifdef DISTRHO_USE_CONFIGTHREADLOCALE + const int oldthreadloc; +# endif + char* const oldloc; +#endif + + DISTRHO_DECLARE_NON_COPYABLE(ScopedSafeLocale) + DISTRHO_PREVENT_HEAP_ALLOCATION +}; + +// ----------------------------------------------------------------------- +// ScopedSafeLocale class implementation + +#ifdef DISTRHO_USE_NEWLOCALE +static constexpr const locale_t kNullLocale = (locale_t)nullptr; +#endif + +inline ScopedSafeLocale::ScopedSafeLocale() noexcept +#ifdef DISTRHO_USE_NEWLOCALE + : newloc(::newlocale(LC_NUMERIC_MASK, "C", kNullLocale)), + oldloc(newloc != kNullLocale ? ::uselocale(newloc) : kNullLocale) {} +#else +# ifdef DISTRHO_USE_CONFIGTHREADLOCALE + : oldthreadloc(_configthreadlocale(_ENABLE_PER_THREAD_LOCALE)), +# else + : +# endif + oldloc(strdup(::setlocale(LC_NUMERIC, nullptr))) +{ + ::setlocale(LC_NUMERIC, "C"); +} +#endif + +inline ScopedSafeLocale::~ScopedSafeLocale() noexcept +{ +#ifdef DISTRHO_USE_NEWLOCALE + if (oldloc != kNullLocale) + ::uselocale(oldloc); + if (newloc != kNullLocale) + ::freelocale(newloc); +#else // DISTRHO_USE_NEWLOCALE + if (oldloc != nullptr) + { + ::setlocale(LC_NUMERIC, oldloc); + std::free(oldloc); + } + +# ifdef DISTRHO_USE_CONFIGTHREADLOCALE + if (oldthreadloc != -1) + _configthreadlocale(oldthreadloc); +# endif +#endif // DISTRHO_USE_NEWLOCALE +} + +// ----------------------------------------------------------------------- + +#undef DISTRHO_USE_CONFIGTHREADLOCALE +#undef DISTRHO_USE_NEWLOCALE + +END_NAMESPACE_DISTRHO + +#endif // DISTRHO_SCOPED_SAFE_LOCALE_HPP_INCLUDED diff --git a/distrho/extra/String.hpp b/distrho/extra/String.hpp index 72d2ca20..335cd9b8 100644 --- a/distrho/extra/String.hpp +++ b/distrho/extra/String.hpp @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2016 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -18,6 +18,7 @@ #define DISTRHO_STRING_HPP_INCLUDED #include "../DistrhoUtils.hpp" +#include "../extra/ScopedSafeLocale.hpp" #include @@ -37,14 +38,16 @@ public: */ explicit String() noexcept : fBuffer(_null()), - fBufferLen(0) {} + fBufferLen(0), + fBufferAlloc(false) {} /* * Simple character. */ explicit String(const char c) noexcept : fBuffer(_null()), - fBufferLen(0) + fBufferLen(0), + fBufferAlloc(false) { char ch[2]; ch[0] = c; @@ -58,7 +61,8 @@ public: */ explicit String(char* const strBuf, const bool copyData = true) noexcept : fBuffer(_null()), - fBufferLen(0) + fBufferLen(0), + fBufferAlloc(false) { if (copyData || strBuf == nullptr) { @@ -66,10 +70,10 @@ public: } else { - fBuffer = strBuf; - fBufferLen = std::strlen(strBuf); + fBuffer = strBuf; + fBufferLen = std::strlen(strBuf); + fBufferAlloc = true; } - } /* @@ -77,7 +81,8 @@ public: */ explicit String(const char* const strBuf) noexcept : fBuffer(_null()), - fBufferLen(0) + fBufferLen(0), + fBufferAlloc(false) { _dup(strBuf); } @@ -87,7 +92,8 @@ public: */ explicit String(const int value) noexcept : fBuffer(_null()), - fBufferLen(0) + fBufferLen(0), + fBufferAlloc(false) { char strBuf[0xff+1]; std::snprintf(strBuf, 0xff, "%d", value); @@ -101,7 +107,8 @@ public: */ explicit String(const unsigned int value, const bool hexadecimal = false) noexcept : fBuffer(_null()), - fBufferLen(0) + fBufferLen(0), + fBufferAlloc(false) { char strBuf[0xff+1]; std::snprintf(strBuf, 0xff, hexadecimal ? "0x%x" : "%u", value); @@ -115,7 +122,8 @@ public: */ explicit String(const long value) noexcept : fBuffer(_null()), - fBufferLen(0) + fBufferLen(0), + fBufferAlloc(false) { char strBuf[0xff+1]; std::snprintf(strBuf, 0xff, "%ld", value); @@ -129,7 +137,8 @@ public: */ explicit String(const unsigned long value, const bool hexadecimal = false) noexcept : fBuffer(_null()), - fBufferLen(0) + fBufferLen(0), + fBufferAlloc(false) { char strBuf[0xff+1]; std::snprintf(strBuf, 0xff, hexadecimal ? "0x%lx" : "%lu", value); @@ -143,7 +152,8 @@ public: */ explicit String(const long long value) noexcept : fBuffer(_null()), - fBufferLen(0) + fBufferLen(0), + fBufferAlloc(false) { char strBuf[0xff+1]; std::snprintf(strBuf, 0xff, "%lld", value); @@ -157,7 +167,8 @@ public: */ explicit String(const unsigned long long value, const bool hexadecimal = false) noexcept : fBuffer(_null()), - fBufferLen(0) + fBufferLen(0), + fBufferAlloc(false) { char strBuf[0xff+1]; std::snprintf(strBuf, 0xff, hexadecimal ? "0x%llx" : "%llu", value); @@ -171,10 +182,16 @@ public: */ explicit String(const float value) noexcept : fBuffer(_null()), - fBufferLen(0) + fBufferLen(0), + fBufferAlloc(false) { char strBuf[0xff+1]; - std::snprintf(strBuf, 0xff, "%.12g", static_cast(value)); + + { + const ScopedSafeLocale ssl; + std::snprintf(strBuf, 0xff, "%.12g", static_cast(value)); + } + strBuf[0xff] = '\0'; _dup(strBuf); @@ -185,10 +202,16 @@ public: */ explicit String(const double value) noexcept : fBuffer(_null()), - fBufferLen(0) + fBufferLen(0), + fBufferAlloc(false) { char strBuf[0xff+1]; - std::snprintf(strBuf, 0xff, "%.24g", value); + + { + const ScopedSafeLocale ssl; + std::snprintf(strBuf, 0xff, "%.24g", value); + } + strBuf[0xff] = '\0'; _dup(strBuf); @@ -202,7 +225,8 @@ public: */ String(const String& str) noexcept : fBuffer(_null()), - fBufferLen(0) + fBufferLen(0), + fBufferAlloc(false) { _dup(str.fBuffer); } @@ -217,13 +241,12 @@ public: { DISTRHO_SAFE_ASSERT_RETURN(fBuffer != nullptr,); - if (fBuffer == _null()) - return; - - std::free(fBuffer); + if (fBufferAlloc) + std::free(fBuffer); - fBuffer = nullptr; - fBufferLen = 0; + fBuffer = nullptr; + fBufferLen = 0; + fBufferAlloc = false; } // ------------------------------------------------------------------- @@ -253,6 +276,20 @@ public: return (fBufferLen != 0); } + /* + * Check if the string contains a specific character, case-sensitive. + */ + bool contains(const char c) const noexcept + { + for (std::size_t i=0; i= 0", __FILE__, __LINE__); + d_safe_assert_int("ret >= 0", __FILE__, __LINE__, int(ret)); if (found != nullptr) *found = false; @@ -490,6 +527,29 @@ public: return *this; } + /* + * Remove all occurrences of character 'c', shifting and truncating the string as necessary. + */ + String& remove(const char c) noexcept + { + DISTRHO_SAFE_ASSERT_RETURN(c != '\0', *this); + + if (fBufferLen == 0) + return *this; + + for (std::size_t i=0; i < fBufferLen; ++i) + { + if (fBuffer[i] == c) + { + --fBufferLen; + std::memmove(fBuffer+i, fBuffer+i+1, fBufferLen-i); + } + } + + fBuffer[fBufferLen] = '\0'; + return *this; + } + /* * Truncate the string to size 'n'. */ @@ -498,9 +558,7 @@ public: if (n >= fBufferLen) return *this; - for (std::size_t i=n; i < fBufferLen; ++i) - fBuffer[i] = '\0'; - + fBuffer[n] = '\0'; fBufferLen = n; return *this; @@ -529,7 +587,7 @@ public: } /* - * Convert to all ascii characters to lowercase. + * Convert all ascii characters to lowercase. */ String& toLower() noexcept { @@ -545,7 +603,7 @@ public: } /* - * Convert to all ascii characters to uppercase. + * Convert all ascii characters to uppercase. */ String& toUpper() noexcept { @@ -570,13 +628,15 @@ public: /* * Get and release the string buffer, while also clearing this string. + * This allows to keep a pointer to the buffer after this object is deleted. * Result must be freed. */ char* getAndReleaseBuffer() noexcept { - char* const ret = fBuffer; + char* ret = fBufferLen > 0 ? fBuffer : nullptr; fBuffer = _null(); fBufferLen = 0; + fBufferAlloc = false; return ret; } @@ -591,7 +651,7 @@ public: "abcdefghijklmnopqrstuvwxyz" "0123456789+/"; - const std::size_t kTmpBufSize = std::min(d_nextPowerOf2(dataSize/3), 65536U); + const std::size_t kTmpBufSize = std::min(d_nextPowerOf2(static_cast(dataSize/3)), 65536U); const uchar* bytesToEncode((const uchar*)data); @@ -723,16 +783,26 @@ public: String& operator+=(const char* const strBuf) noexcept { - if (strBuf == nullptr) + if (strBuf == nullptr || strBuf[0] == '\0') + return *this; + + const std::size_t strBufLen = std::strlen(strBuf); + + // for empty strings, we can just take the appended string as our entire data + if (isEmpty()) + { + _dup(strBuf, strBufLen); return *this; + } - const std::size_t newBufSize = fBufferLen + std::strlen(strBuf) + 1; - char newBuf[newBufSize]; + // we have some data ourselves, reallocate to add the new stuff + char* const newBuf = (char*)realloc(fBuffer, fBufferLen + strBufLen + 1); + DISTRHO_SAFE_ASSERT_RETURN(newBuf != nullptr, *this); - std::strcpy(newBuf, fBuffer); - std::strcat(newBuf, strBuf); + std::memcpy(newBuf + fBufferLen, strBuf, strBufLen + 1); - _dup(newBuf, newBufSize-1); + fBuffer = newBuf; + fBufferLen += strBufLen; return *this; } @@ -744,13 +814,18 @@ public: String operator+(const char* const strBuf) noexcept { - const std::size_t newBufSize = fBufferLen + ((strBuf != nullptr) ? std::strlen(strBuf) : 0) + 1; - char newBuf[newBufSize]; + if (strBuf == nullptr || strBuf[0] == '\0') + return *this; + if (isEmpty()) + return String(strBuf); - std::strcpy(newBuf, fBuffer); + const std::size_t strBufLen = std::strlen(strBuf); + const std::size_t newBufSize = fBufferLen + strBufLen; + char* const newBuf = (char*)malloc(newBufSize + 1); + DISTRHO_SAFE_ASSERT_RETURN(newBuf != nullptr, String()); - if (strBuf != nullptr) - std::strcat(newBuf, strBuf); + std::memcpy(newBuf, fBuffer, fBufferLen); + std::memcpy(newBuf + fBufferLen, strBuf, strBufLen + 1); return String(newBuf); } @@ -763,8 +838,9 @@ public: // ------------------------------------------------------------------- private: - char* fBuffer; // the actual string buffer - std::size_t fBufferLen; // string length + char* fBuffer; // the actual string buffer + std::size_t fBufferLen; // string length + bool fBufferAlloc; // wherever the buffer is allocated, not using _null() /* * Static null string. @@ -792,7 +868,7 @@ private: if (std::strcmp(fBuffer, strBuf) == 0) return; - if (fBuffer != _null()) + if (fBufferAlloc) std::free(fBuffer); fBufferLen = (size > 0) ? size : std::strlen(strBuf); @@ -800,28 +876,31 @@ private: if (fBuffer == nullptr) { - fBuffer = _null(); - fBufferLen = 0; + fBuffer = _null(); + fBufferLen = 0; + fBufferAlloc = false; return; } - std::strcpy(fBuffer, strBuf); + fBufferAlloc = true; + std::strcpy(fBuffer, strBuf); fBuffer[fBufferLen] = '\0'; } else { - DISTRHO_SAFE_ASSERT(size == 0); + DISTRHO_SAFE_ASSERT_UINT(size == 0, static_cast(size)); // don't recreate null string - if (fBuffer == _null()) + if (! fBufferAlloc) return; DISTRHO_SAFE_ASSERT(fBuffer != nullptr); std::free(fBuffer); - fBuffer = _null(); - fBufferLen = 0; + fBuffer = _null(); + fBufferLen = 0; + fBufferAlloc = false; } } @@ -833,12 +912,19 @@ private: static inline String operator+(const String& strBefore, const char* const strBufAfter) noexcept { - const char* const strBufBefore = strBefore.buffer(); - const std::size_t newBufSize = strBefore.length() + ((strBufAfter != nullptr) ? std::strlen(strBufAfter) : 0) + 1; - char newBuf[newBufSize]; + if (strBufAfter == nullptr || strBufAfter[0] == '\0') + return strBefore; + if (strBefore.isEmpty()) + return String(strBufAfter); + + const std::size_t strBeforeLen = strBefore.length(); + const std::size_t strBufAfterLen = std::strlen(strBufAfter); + const std::size_t newBufSize = strBeforeLen + strBufAfterLen; + char* const newBuf = (char*)malloc(newBufSize + 1); + DISTRHO_SAFE_ASSERT_RETURN(newBuf != nullptr, String()); - std::strcpy(newBuf, strBufBefore); - std::strcat(newBuf, strBufAfter); + std::memcpy(newBuf, strBefore.buffer(), strBeforeLen); + std::memcpy(newBuf + strBeforeLen, strBufAfter, strBufAfterLen + 1); return String(newBuf); } @@ -846,12 +932,19 @@ String operator+(const String& strBefore, const char* const strBufAfter) noexcep static inline String operator+(const char* const strBufBefore, const String& strAfter) noexcept { - const char* const strBufAfter = strAfter.buffer(); - const std::size_t newBufSize = ((strBufBefore != nullptr) ? std::strlen(strBufBefore) : 0) + strAfter.length() + 1; - char newBuf[newBufSize]; - - std::strcpy(newBuf, strBufBefore); - std::strcat(newBuf, strBufAfter); + if (strAfter.isEmpty()) + return String(strBufBefore); + if (strBufBefore == nullptr || strBufBefore[0] == '\0') + return strAfter; + + const std::size_t strBufBeforeLen = std::strlen(strBufBefore); + const std::size_t strAfterLen = strAfter.length(); + const std::size_t newBufSize = strBufBeforeLen + strAfterLen; + char* const newBuf = (char*)malloc(newBufSize + 1); + DISTRHO_SAFE_ASSERT_RETURN(newBuf != nullptr, String()); + + std::memcpy(newBuf, strBufBefore, strBufBeforeLen); + std::memcpy(newBuf + strBufBeforeLen, strAfter.buffer(), strAfterLen + 1); return String(newBuf); } diff --git a/distrho/extra/Thread.hpp b/distrho/extra/Thread.hpp index b3d92c98..ec6f13d9 100644 --- a/distrho/extra/Thread.hpp +++ b/distrho/extra/Thread.hpp @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2016 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -88,33 +88,70 @@ public: /* * Start the thread. */ - bool startThread() noexcept + bool startThread(const bool withRealtimePriority = false) noexcept { // check if already running DISTRHO_SAFE_ASSERT_RETURN(! isThreadRunning(), true); + pthread_t handle; + + pthread_attr_t attr; + pthread_attr_init(&attr); + + struct sched_param sched_param; + std::memset(&sched_param, 0, sizeof(sched_param)); + + if (withRealtimePriority) + { + sched_param.sched_priority = 80; + +#ifndef DISTRHO_OS_HAIKU + if (pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM) == 0 && + pthread_attr_setinheritsched(&attr, PTHREAD_EXPLICIT_SCHED) == 0 && +# ifndef DISTRHO_OS_WINDOWS + (pthread_attr_setschedpolicy(&attr, SCHED_FIFO) == 0 || + pthread_attr_setschedpolicy(&attr, SCHED_RR) == 0) && +# endif + pthread_attr_setschedparam(&attr, &sched_param) == 0) + { + d_stdout("Thread setup with realtime priority successful"); + } + else +#endif + { + d_stdout("Thread setup with realtime priority failed, going with normal priority instead"); + pthread_attr_destroy(&attr); + pthread_attr_init(&attr); + } + } + const MutexLocker ml(fLock); fShouldExit = false; - pthread_t handle; + bool ok = pthread_create(&handle, &attr, _entryPoint, this) == 0; + pthread_attr_destroy(&attr); - if (pthread_create(&handle, nullptr, _entryPoint, this) == 0) - { + if (withRealtimePriority && !ok) + { + d_stdout("Thread with realtime priority failed on creation, going with normal priority instead"); + pthread_attr_init(&attr); + ok = pthread_create(&handle, &attr, _entryPoint, this) == 0; + pthread_attr_destroy(&attr); + } + + DISTRHO_SAFE_ASSERT_RETURN(ok, false); #ifdef PTW32_DLLPORT - DISTRHO_SAFE_ASSERT_RETURN(handle.p != nullptr, false); + DISTRHO_SAFE_ASSERT_RETURN(handle.p != nullptr, false); #else - DISTRHO_SAFE_ASSERT_RETURN(handle != 0, false); + DISTRHO_SAFE_ASSERT_RETURN(handle != 0, false); #endif - pthread_detach(handle); - _copyFrom(handle); + pthread_detach(handle); + _copyFrom(handle); - // wait for thread to start - fSignal.wait(); - return true; - } - - return false; + // wait for thread to start + fSignal.wait(); + return true; } /* @@ -161,10 +198,7 @@ public: _copyTo(threadId); _init(); - try { - pthread_cancel(threadId); - } DISTRHO_SAFE_EXCEPTION("pthread_cancel"); - + pthread_detach(threadId); return false; } } @@ -191,6 +225,14 @@ public: return fName; } + /* + * Returns the Id/handle of the thread. + */ + pthread_t getThreadId() const noexcept + { + return fHandle; + } + /* * Changes the name of the caller thread. */ @@ -201,7 +243,7 @@ public: #ifdef DISTRHO_OS_LINUX prctl(PR_SET_NAME, name, 0, 0, 0); #endif -#if defined(__GLIBC__) && (__GLIBC__ * 1000 + __GLIBC_MINOR__) >= 2012 +#if defined(__GLIBC__) && (__GLIBC__ * 1000 + __GLIBC_MINOR__) >= 2012 && !defined(DISTRHO_OS_GNU_HURD) pthread_setname_np(pthread_self(), name); #endif } @@ -259,7 +301,8 @@ private: */ void _runEntryPoint() noexcept { - setCurrentThreadName(fName); + if (fName.isNotEmpty()) + setCurrentThreadName(fName); // report ready fSignal.signal(); @@ -281,7 +324,7 @@ private: return nullptr; } - DISTRHO_DECLARE_NON_COPY_CLASS(Thread) + DISTRHO_DECLARE_NON_COPYABLE(Thread) }; // ----------------------------------------------------------------------- diff --git a/distrho/src/DistrhoDefines.h b/distrho/src/DistrhoDefines.h index a2e5522c..583c4468 100644 --- a/distrho/src/DistrhoDefines.h +++ b/distrho/src/DistrhoDefines.h @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2019 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -39,6 +39,10 @@ # define DISTRHO_OS_HAIKU 1 # elif defined(__linux__) || defined(__linux) # define DISTRHO_OS_LINUX 1 +# elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) +# define DISTRHO_OS_BSD 1 +# elif defined(__GNU__) +# define DISTRHO_OS_GNU_HURD 1 # endif #endif @@ -75,12 +79,35 @@ # define DISTRHO_DEPRECATED #endif +/* Define DISTRHO_DEPRECATED_BY */ +#if defined(__clang__) +# define DISTRHO_DEPRECATED_BY(other) __attribute__((deprecated("", other))) +#elif defined(__GNUC__) +# define DISTRHO_DEPRECATED_BY(other) __attribute__((deprecated("Use " other))) +#else +# define DISTRHO_DEPRECATED_BY(other) DISTRHO_DEPRECATED +#endif + /* Define DISTRHO_SAFE_ASSERT* */ -#define DISTRHO_SAFE_ASSERT(cond) if (! (cond)) d_safe_assert(#cond, __FILE__, __LINE__); +#define DISTRHO_SAFE_ASSERT(cond) if (! (cond)) d_safe_assert (#cond, __FILE__, __LINE__); +#define DISTRHO_SAFE_ASSERT_INT(cond, value) if (! (cond)) d_safe_assert_int (#cond, __FILE__, __LINE__, static_cast(value)); +#define DISTRHO_SAFE_ASSERT_INT2(cond, v1, v2) if (! (cond)) d_safe_assert_int2 (#cond, __FILE__, __LINE__, static_cast(v1), static_cast(v2)); +#define DISTRHO_SAFE_ASSERT_UINT(cond, value) if (! (cond)) d_safe_assert_uint (#cond, __FILE__, __LINE__, static_cast(value)); +#define DISTRHO_SAFE_ASSERT_UINT2(cond, v1, v2) if (! (cond)) d_safe_assert_uint2(#cond, __FILE__, __LINE__, static_cast(v1), static_cast(v2)); + #define DISTRHO_SAFE_ASSERT_BREAK(cond) if (! (cond)) { d_safe_assert(#cond, __FILE__, __LINE__); break; } #define DISTRHO_SAFE_ASSERT_CONTINUE(cond) if (! (cond)) { d_safe_assert(#cond, __FILE__, __LINE__); continue; } #define DISTRHO_SAFE_ASSERT_RETURN(cond, ret) if (! (cond)) { d_safe_assert(#cond, __FILE__, __LINE__); return ret; } +#define DISTRHO_CUSTOM_SAFE_ASSERT(msg, cond) if (! (cond)) d_custom_safe_assert(msg, #cond, __FILE__, __LINE__); +#define DISTRHO_CUSTOM_SAFE_ASSERT_BREAK(msg, cond) if (! (cond)) { d_custom_safe_assert(msg, #cond, __FILE__, __LINE__); break; } +#define DISTRHO_CUSTOM_SAFE_ASSERT_CONTINUE(msg, cond) if (! (cond)) { d_custom_safe_assert(msg, #cond, __FILE__, __LINE__); continue; } +#define DISTRHO_CUSTOM_SAFE_ASSERT_RETURN(msg, cond, ret) if (! (cond)) { d_custom_safe_assert(msg, #cond, __FILE__, __LINE__); return ret; } + +#define DISTRHO_CUSTOM_SAFE_ASSERT_ONCE_BREAK(msg, cond) if (! (cond)) { static bool _p; if (!_p) { _p = true; d_custom_safe_assert(msg, #cond, __FILE__, __LINE__); } break; } +#define DISTRHO_CUSTOM_SAFE_ASSERT_ONCE_CONTINUE(msg, cond) if (! (cond)) { static bool _p; if (!_p) { _p = true; d_custom_safe_assert(msg, #cond, __FILE__, __LINE__); } continue; } +#define DISTRHO_CUSTOM_SAFE_ASSERT_ONCE_RETURN(msg, cond, ret) if (! (cond)) { static bool _p; if (!_p) { _p = true; d_custom_safe_assert(msg, #cond, __FILE__, __LINE__); } return ret; } + #define DISTRHO_SAFE_ASSERT_INT_BREAK(cond, value) if (! (cond)) { d_safe_assert_int(#cond, __FILE__, __LINE__, static_cast(value); break; } #define DISTRHO_SAFE_ASSERT_INT_CONTINUE(cond, value) if (! (cond)) { d_safe_assert_int(#cond, __FILE__, __LINE__, static_cast(value)); continue; } #define DISTRHO_SAFE_ASSERT_INT_RETURN(cond, value, ret) if (! (cond)) { d_safe_assert_int(#cond, __FILE__, __LINE__, static_cast(value)); return ret; } @@ -103,39 +130,23 @@ #define DISTRHO_SAFE_EXCEPTION_CONTINUE(msg) catch(...) { d_safe_exception(msg, __FILE__, __LINE__); continue; } #define DISTRHO_SAFE_EXCEPTION_RETURN(msg, ret) catch(...) { d_safe_exception(msg, __FILE__, __LINE__); return ret; } -/* Define DISTRHO_DECLARE_NON_COPY_CLASS */ +/* Define DISTRHO_DECLARE_NON_COPYABLE */ #ifdef DISTRHO_PROPER_CPP11_SUPPORT -# define DISTRHO_DECLARE_NON_COPY_CLASS(ClassName) \ -private: \ - ClassName(ClassName&) = delete; \ - ClassName(const ClassName&) = delete; \ - ClassName& operator=(ClassName&) = delete ; \ +# define DISTRHO_DECLARE_NON_COPYABLE(ClassName) \ +private: \ + ClassName(ClassName&) = delete; \ + ClassName(const ClassName&) = delete; \ + ClassName& operator=(ClassName&) = delete; \ ClassName& operator=(const ClassName&) = delete; #else -# define DISTRHO_DECLARE_NON_COPY_CLASS(ClassName) \ -private: \ - ClassName(ClassName&); \ - ClassName(const ClassName&); \ - ClassName& operator=(ClassName&); \ +# define DISTRHO_DECLARE_NON_COPYABLE(ClassName) \ +private: \ + ClassName(ClassName&); \ + ClassName(const ClassName&); \ + ClassName& operator=(ClassName&); \ ClassName& operator=(const ClassName&); #endif -/* Define DISTRHO_DECLARE_NON_COPY_STRUCT */ -#ifdef DISTRHO_PROPER_CPP11_SUPPORT -# define DISTRHO_DECLARE_NON_COPY_STRUCT(StructName) \ - StructName(StructName&) = delete; \ - StructName(const StructName&) = delete; \ - StructName& operator=(StructName&) = delete; \ - StructName& operator=(const StructName&) = delete; -#else -# define DISTRHO_DECLARE_NON_COPY_STRUCT(StructName) \ -private: \ - StructName(StructName&); \ - StructName(const StructName&); \ - StructName& operator=(StructName&); \ - StructName& operator=(const StructName&); -#endif - /* Define DISTRHO_PREVENT_HEAP_ALLOCATION */ #ifdef DISTRHO_PROPER_CPP11_SUPPORT # define DISTRHO_PREVENT_HEAP_ALLOCATION \ @@ -157,10 +168,27 @@ private: \ #define END_NAMESPACE_DISTRHO } #define USE_NAMESPACE_DISTRHO using namespace DISTRHO_NAMESPACE; +/* Define DISTRHO_OS_SEP and DISTRHO_OS_SPLIT */ +#ifdef DISTRHO_OS_WINDOWS +# define DISTRHO_OS_SEP '\\' +# define DISTRHO_OS_SEP_STR "\\" +# define DISTRHO_OS_SPLIT ';' +# define DISTRHO_OS_SPLIT_STR ";" +#else +# define DISTRHO_OS_SEP '/' +# define DISTRHO_OS_SEP_STR "/" +# define DISTRHO_OS_SPLIT ':' +# define DISTRHO_OS_SPLIT_STR ":" +#endif + /* Useful typedefs */ typedef unsigned char uchar; typedef unsigned short int ushort; typedef unsigned int uint; typedef unsigned long int ulong; +/* Deprecated macros */ +#define DISTRHO_DECLARE_NON_COPY_CLASS(ClassName) DISTRHO_DECLARE_NON_COPYABLE(ClassName) +#define DISTRHO_DECLARE_NON_COPY_STRUCT(StructName) DISTRHO_DECLARE_NON_COPYABLE(StructName) + #endif // DISTRHO_DEFINES_H_INCLUDED diff --git a/distrho/src/DistrhoPluginChecks.h b/distrho/src/DistrhoPluginChecks.h index 69033dee..d8a3b0f8 100644 --- a/distrho/src/DistrhoPluginChecks.h +++ b/distrho/src/DistrhoPluginChecks.h @@ -142,11 +142,12 @@ // ----------------------------------------------------------------------- // Enable full state if plugin exports presets -#if DISTRHO_PLUGIN_WANT_PROGRAMS && DISTRHO_PLUGIN_WANT_STATE && ! DISTRHO_PLUGIN_WANT_FULL_STATE -# warning Plugins with programs and state need to implement full state API -# undef DISTRHO_PLUGIN_WANT_FULL_STATE -# define DISTRHO_PLUGIN_WANT_FULL_STATE 1 -#endif +// FIXME +// #if DISTRHO_PLUGIN_WANT_PROGRAMS && DISTRHO_PLUGIN_WANT_STATE && ! DISTRHO_PLUGIN_WANT_FULL_STATE +// # warning Plugins with programs and state need to implement full state API +// # undef DISTRHO_PLUGIN_WANT_FULL_STATE +// # define DISTRHO_PLUGIN_WANT_FULL_STATE 1 +// #endif // ----------------------------------------------------------------------- // Disable UI if DGL or External UI is not available @@ -161,6 +162,14 @@ # define DISTRHO_PLUGIN_HAS_UI 0 #endif +// ----------------------------------------------------------------------- +// Prevent users from messing about with DPF internals + +#ifdef DISTRHO_UI_IS_STANDALONE +# error DISTRHO_UI_IS_STANDALONE must not be defined +#endif + + // ----------------------------------------------------------------------- #endif // DISTRHO_PLUGIN_CHECKS_H_INCLUDED diff --git a/distrho/src/DistrhoPluginInternal.hpp b/distrho/src/DistrhoPluginInternal.hpp index c2f2aa3c..088ffe1b 100644 --- a/distrho/src/DistrhoPluginInternal.hpp +++ b/distrho/src/DistrhoPluginInternal.hpp @@ -113,7 +113,7 @@ struct Plugin::PrivateData { #endif #ifdef DISTRHO_PLUGIN_TARGET_LV2 -# if (DISTRHO_PLUGIN_IS_SYNTH || DISTRHO_PLUGIN_WANT_TIMEPOS || DISTRHO_PLUGIN_WANT_STATE) +# if (DISTRHO_PLUGIN_WANT_MIDI_INPUT || DISTRHO_PLUGIN_WANT_TIMEPOS || DISTRHO_PLUGIN_WANT_STATE) parameterOffset += 1; # if DISTRHO_PLUGIN_WANT_STATE parameterOffset += 1; diff --git a/distrho/src/DistrhoPluginJack.cpp b/distrho/src/DistrhoPluginJack.cpp index a99892d9..5e4f3d98 100644 --- a/distrho/src/DistrhoPluginJack.cpp +++ b/distrho/src/DistrhoPluginJack.cpp @@ -17,6 +17,7 @@ #include "DistrhoPluginInternal.hpp" #if DISTRHO_PLUGIN_HAS_UI +# define DISTRHO_UI_IS_STANDALONE true # include "DistrhoUIInternal.hpp" #else # include "../extra/Sleep.hpp" @@ -81,16 +82,6 @@ static void initSignalHandler() // ----------------------------------------------------------------------- -#if DISTRHO_PLUGIN_HAS_UI -// TODO -static double getDesktopScaleFactor() noexcept -{ - return 1.0; -} -#endif - -// ----------------------------------------------------------------------- - #if DISTRHO_PLUGIN_HAS_UI class PluginJack : public IdleCallback #else @@ -110,7 +101,7 @@ public: nullptr, // file request nullptr, // bundle fPlugin.getInstancePointer(), - getDesktopScaleFactor()), + 0.0), #endif fClient(client) { diff --git a/distrho/src/DistrhoPluginVST.cpp b/distrho/src/DistrhoPluginVST.cpp index b5501840..31b64e2b 100644 --- a/distrho/src/DistrhoPluginVST.cpp +++ b/distrho/src/DistrhoPluginVST.cpp @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2020 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -15,6 +15,7 @@ */ #include "DistrhoPluginInternal.hpp" +#include "../extra/ScopedSafeLocale.hpp" #if DISTRHO_PLUGIN_HAS_UI && ! DISTRHO_PLUGIN_HAS_EMBED_UI # undef DISTRHO_PLUGIN_HAS_UI @@ -22,6 +23,9 @@ #endif #if DISTRHO_PLUGIN_HAS_UI +# undef DISTRHO_UI_USER_RESIZABLE +# define DISTRHO_UI_USER_RESIZABLE 0 +# define DISTRHO_UI_IS_STANDALONE 0 # include "DistrhoUIInternal.hpp" #endif @@ -29,14 +33,16 @@ # define __cdecl #endif -#define VESTIGE_HEADER +#ifndef VESTIGE_HEADER +# define VESTIGE_HEADER 1 +#endif #define VST_FORCE_DEPRECATED 0 #include #include #include -#ifdef VESTIGE_HEADER +#if VESTIGE_HEADER # include "vestige/vestige.h" #define effFlagsProgramChunks (1 << 5) #define effSetProgramName 4 @@ -101,35 +107,11 @@ void snprintf_iparam(char* const dst, const int32_t value, const size_t size) // ----------------------------------------------------------------------- -class ScopedSafeLocale { -public: - ScopedSafeLocale() noexcept - : locale(::strdup(::setlocale(LC_NUMERIC, nullptr))) - { - ::setlocale(LC_NUMERIC, "C"); - } - - ~ScopedSafeLocale() noexcept - { - if (locale != nullptr) - { - ::setlocale(LC_NUMERIC, locale); - std::free(locale); - } - } - -private: - char* const locale; - - DISTRHO_DECLARE_NON_COPY_CLASS(ScopedSafeLocale) - DISTRHO_PREVENT_HEAP_ALLOCATION -}; - -// ----------------------------------------------------------------------- - -class ParameterCheckHelper +struct ParameterCheckHelper { -public: + bool* parameterChecks; + float* parameterValues; + ParameterCheckHelper() : parameterChecks(nullptr), parameterValues(nullptr) {} @@ -148,9 +130,6 @@ public: } } - bool* parameterChecks; - float* parameterValues; - #if DISTRHO_PLUGIN_WANT_STATE virtual void setStateFromUI(const char* const newKey, const char* const newValue) = 0; #endif @@ -181,19 +160,8 @@ public: nullptr, plugin->getInstancePointer(), scaleFactor), - fShouldCaptureVstKeys(false) + fKeyboardModifiers(0) { - // FIXME only needed for windows? -//#ifdef DISTRHO_OS_WINDOWS - char strBuf[0xff+1]; - std::memset(strBuf, 0, sizeof(char)*(0xff+1)); - hostCallback(audioMasterGetProductString, 0, 0, strBuf); - d_stdout("Plugin UI running in '%s'", strBuf); - - // TODO make a white-list of needed hosts - if (/*std::strcmp(strBuf, "") == 0*/ true) - fShouldCaptureVstKeys = true; -//#endif } // ------------------------------------------------------------------- @@ -237,12 +205,9 @@ public: } # endif +# if !DISTRHO_PLUGIN_HAS_EXTERNAL_UI int handlePluginKeyEvent(const bool down, int32_t index, const intptr_t value) { -# if !DISTRHO_PLUGIN_HAS_EXTERNAL_UI - if (! fShouldCaptureVstKeys) - return 0; - d_stdout("handlePluginKeyEvent %i %i %li\n", down, index, (long int)value); using namespace DGL_NAMESPACE; @@ -250,62 +215,127 @@ public: int special = 0; switch (value) { - // convert some specials to normal keys - case 1: index = kCharBackspace; break; - case 6: index = kCharEscape; break; - case 7: index = ' '; break; - case 22: index = kCharDelete; break; + // convert some VST special values to normal keys + case 1: index = kKeyBackspace; break; + case 2: index = '\t'; break; + // 3 clear + case 4: index = '\r'; break; + case 6: index = kKeyEscape; break; + case 7: index = ' '; break; + // 8 next + // 17 select + // 18 print + case 19: index = '\n'; break; + // 20 snapshot + case 22: index = kKeyDelete; break; + // 23 help + case 57: index = '='; break; + + // numpad stuff follows + case 24: index = '0'; break; + case 25: index = '1'; break; + case 26: index = '2'; break; + case 27: index = '3'; break; + case 28: index = '4'; break; + case 29: index = '5'; break; + case 30: index = '6'; break; + case 31: index = '7'; break; + case 32: index = '8'; break; + case 33: index = '9'; break; + case 34: index = '*'; break; + case 35: index = '+'; break; + // 36 separator + case 37: index = '-'; break; + case 38: index = '.'; break; + case 39: index = '/'; break; // handle rest of special keys - case 40: special = kKeyF1; break; - case 41: special = kKeyF2; break; - case 42: special = kKeyF3; break; - case 43: special = kKeyF4; break; - case 44: special = kKeyF5; break; - case 45: special = kKeyF6; break; - case 46: special = kKeyF7; break; - case 47: special = kKeyF8; break; - case 48: special = kKeyF9; break; - case 49: special = kKeyF10; break; - case 50: special = kKeyF11; break; - case 51: special = kKeyF12; break; - case 11: special = kKeyLeft; break; - case 12: special = kKeyUp; break; - case 13: special = kKeyRight; break; - case 14: special = kKeyDown; break; - case 15: special = kKeyPageUp; break; - case 16: special = kKeyPageDown; break; - case 10: special = kKeyHome; break; - case 9: special = kKeyEnd; break; - case 21: special = kKeyInsert; break; - case 54: special = kKeyShift; break; - case 55: special = kKeyControl; break; - case 56: special = kKeyAlt; break; + /* these special keys are missing: + - kKeySuper + - kKeyCapsLock + - kKeyPrintScreen + */ + case 40: special = kKeyF1; break; + case 41: special = kKeyF2; break; + case 42: special = kKeyF3; break; + case 43: special = kKeyF4; break; + case 44: special = kKeyF5; break; + case 45: special = kKeyF6; break; + case 46: special = kKeyF7; break; + case 47: special = kKeyF8; break; + case 48: special = kKeyF9; break; + case 49: special = kKeyF10; break; + case 50: special = kKeyF11; break; + case 51: special = kKeyF12; break; + case 11: special = kKeyLeft; break; + case 12: special = kKeyUp; break; + case 13: special = kKeyRight; break; + case 14: special = kKeyDown; break; + case 15: special = kKeyPageUp; break; + case 16: special = kKeyPageDown; break; + case 10: special = kKeyHome; break; + case 9: special = kKeyEnd; break; + case 21: special = kKeyInsert; break; + case 54: special = kKeyShift; break; + case 55: special = kKeyControl; break; + case 56: special = kKeyAlt; break; + case 58: special = kKeyMenu; break; + case 52: special = kKeyNumLock; break; + case 53: special = kKeyScrollLock; break; + case 5: special = kKeyPause; break; + } + + switch (special) + { + case kKeyShift: + if (down) + fKeyboardModifiers |= kModifierShift; + else + fKeyboardModifiers &= ~kModifierShift; + break; + case kKeyControl: + if (down) + fKeyboardModifiers |= kModifierControl; + else + fKeyboardModifiers &= ~kModifierControl; + break; + case kKeyAlt: + if (down) + fKeyboardModifiers |= kModifierAlt; + else + fKeyboardModifiers &= ~kModifierAlt; + break; } if (special != 0) - return fUI.handlePluginSpecial(down, static_cast(special)); + { + fUI.handlePluginSpecial(down, static_cast(special), fKeyboardModifiers); + return 1; + } - if (index >= 0) - return fUI.handlePluginKeyboard(down, static_cast(index)); -# endif + if (index > 0) + { + fUI.handlePluginKeyboard(down, static_cast(index), fKeyboardModifiers); + return 1; + } return 0; } +# endif // !DISTRHO_PLUGIN_HAS_EXTERNAL_UI // ------------------------------------------------------------------- protected: - intptr_t hostCallback(const int32_t opcode, - const int32_t index = 0, - const intptr_t value = 0, - void* const ptr = nullptr, - const float opt = 0.0f) + inline intptr_t hostCallback(const int32_t opcode, + const int32_t index = 0, + const intptr_t value = 0, + void* const ptr = nullptr, + const float opt = 0.0f) const { return fAudioMaster(fEffect, opcode, index, value, ptr, opt); } - void editParameter(const uint32_t index, const bool started) + void editParameter(const uint32_t index, const bool started) const { hostCallback(started ? audioMasterBeginEdit : audioMasterEndEdit, index); } @@ -357,7 +387,7 @@ private: // Plugin UI UIExporter fUI; - bool fShouldCaptureVstKeys; + uint16_t fKeyboardModifiers; // ------------------------------------------------------------------- // Callbacks @@ -654,12 +684,12 @@ public: } break; - //case effIdle: case effEditIdle: if (fVstUI != nullptr) fVstUI->idle(); break; +# if !DISTRHO_PLUGIN_HAS_EXTERNAL_UI case effEditKeyDown: if (fVstUI != nullptr) return fVstUI->handlePluginKeyEvent(true, index, value); @@ -669,6 +699,7 @@ public: if (fVstUI != nullptr) return fVstUI->handlePluginKeyEvent(false, index, value); break; +# endif #endif // DISTRHO_PLUGIN_HAS_UI #if DISTRHO_PLUGIN_WANT_STATE @@ -724,9 +755,6 @@ public: // add another separator chunkStr += "\xff"; - // temporarily set locale to "C" while converting floats - const ScopedSafeLocale ssl; - for (uint32_t i=0; i + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -14,15 +14,18 @@ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -#include "DistrhoUIInternal.hpp" +#include "DistrhoUIPrivateData.hpp" +#include "src/WindowPrivateData.hpp" #if !DISTRHO_PLUGIN_HAS_EXTERNAL_UI -# include "src/WidgetPrivateData.hpp" +# include "src/TopLevelWidgetPrivateData.hpp" #endif +#include "NanoVG.hpp" + START_NAMESPACE_DISTRHO /* ------------------------------------------------------------------------------------------------------------ - * Static data, see DistrhoUIInternal.hpp */ + * Static data, see DistrhoUIInternal.hpp and DistrhoUIPrivateData.hpp */ double d_lastUiSampleRate = 0.0; void* d_lastUiDspPtr = nullptr; @@ -34,20 +37,46 @@ uintptr_t g_nextWindowId = 0; Window* d_lastUiWindow = nullptr; #endif +// ----------------------------------------------------------------------------------------------------------- + +#if DISTRHO_PLUGIN_HAS_EXTERNAL_UI +UI* createUiWrapper(void* const dspPtr, const uintptr_t winId, const double scaleFactor, const char* const bundlePath) +{ + d_lastUiDspPtr = dspPtr; + g_nextWindowId = winId; + g_nextScaleFactor = scaleFactor; + g_nextBundlePath = bundlePath; + UI* const ret = createUI(); + d_lastUiDspPtr = nullptr; + g_nextWindowId = 0; + g_nextScaleFactor = 1.0; + g_nextBundlePath = nullptr; + return ret; +} +#else +UI* createUiWrapper(void* const dspPtr, Window* const window) +{ + d_lastUiDspPtr = dspPtr; + d_lastUiWindow = window; + UI* const ret = createUI(); + d_lastUiDspPtr = nullptr; + d_lastUiWindow = nullptr; + return ret; +} +#endif // DISTRHO_PLUGIN_HAS_EXTERNAL_UI + /* ------------------------------------------------------------------------------------------------------------ * UI */ #if DISTRHO_PLUGIN_HAS_EXTERNAL_UI UI::UI(uint width, uint height) : UIWidget(width, height), - pData(new PrivateData()) {} + uiData(new PrivateData()) {} #else UI::UI(uint width, uint height) : UIWidget(*d_lastUiWindow), - pData(new PrivateData()) + uiData(new PrivateData()) { - ((UIWidget*)this)->pData->needsFullViewport = false; - if (width > 0 && height > 0) setSize(width, height); } @@ -55,75 +84,55 @@ UI::UI(uint width, uint height) UI::~UI() { - delete pData; -} - -#if DISTRHO_UI_USER_RESIZABLE && !DISTRHO_PLUGIN_HAS_EXTERNAL_UI -void UI::setGeometryConstraints(uint minWidth, uint minHeight, bool keepAspectRatio, bool automaticallyScale) -{ - DISTRHO_SAFE_ASSERT_RETURN(minWidth > 0,); - DISTRHO_SAFE_ASSERT_RETURN(minHeight > 0,); - - pData->automaticallyScale = automaticallyScale; - pData->minWidth = minWidth; - pData->minHeight = minHeight; - - Window& window(getParentWindow()); - - const double uiScaleFactor = window.getScaling(); - window.setGeometryConstraints(minWidth * uiScaleFactor, minHeight * uiScaleFactor, keepAspectRatio); - - if (d_isNotZero(uiScaleFactor - 1.0)) - setSize(getWidth() * uiScaleFactor, getHeight() * uiScaleFactor); + delete uiData; } -#endif /* ------------------------------------------------------------------------------------------------------------ * Host state */ uint UI::getBackgroundColor() const noexcept { - return pData->bgColor; + return uiData->bgColor; } uint UI::getForegroundColor() const noexcept { - return pData->fgColor; + return uiData->fgColor; } double UI::getSampleRate() const noexcept { - return pData->sampleRate; + return uiData->sampleRate; } void UI::editParameter(uint32_t index, bool started) { - pData->editParamCallback(index + pData->parameterOffset, started); + uiData->editParamCallback(index + uiData->parameterOffset, started); } void UI::setParameterValue(uint32_t index, float value) { - pData->setParamCallback(index + pData->parameterOffset, value); + uiData->setParamCallback(index + uiData->parameterOffset, value); } #if DISTRHO_PLUGIN_WANT_STATE void UI::setState(const char* key, const char* value) { - pData->setStateCallback(key, value); + uiData->setStateCallback(key, value); } #endif #if DISTRHO_PLUGIN_WANT_STATEFILES bool UI::requestStateFile(const char* key) { - return pData->fileRequestCallback(key); + return uiData->fileRequestCallback(key); } #endif #if DISTRHO_PLUGIN_WANT_MIDI_INPUT void UI::sendNote(uint8_t channel, uint8_t note, uint8_t velocity) { - pData->sendNoteCallback(channel, note, velocity); + uiData->sendNoteCallback(channel, note, velocity); } #endif @@ -133,7 +142,7 @@ void UI::sendNote(uint8_t channel, uint8_t note, uint8_t velocity) void* UI::getPluginInstancePointer() const noexcept { - return pData->dspPtr; + return uiData->dspPtr; } #endif @@ -157,7 +166,7 @@ uintptr_t UI::getNextWindowId() noexcept return g_nextWindowId; } # endif -#endif +#endif // DISTRHO_PLUGIN_HAS_EXTERNAL_UI /* ------------------------------------------------------------------------------------------------------------ * DSP/Plugin Callbacks (optional) */ @@ -174,22 +183,10 @@ void UI::uiFileBrowserSelected(const char*) } # endif -void UI::uiReshape(uint width, uint height) -{ -#ifdef DGL_OPENGL - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0.0, static_cast(width), static_cast(height), 0.0, 0.0, 1.0); - glViewport(0, 0, static_cast(width), static_cast(height)); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); -#else - // unused - (void)width; - (void)height; -#endif +void UI::uiReshape(uint, uint) +{ + // NOTE this must be the same as Window::onReshape + pData->fallbackOnResize(); } /* ------------------------------------------------------------------------------------------------------------ @@ -197,13 +194,28 @@ void UI::uiReshape(uint width, uint height) void UI::onResize(const ResizeEvent& ev) { - if (pData->resizeInProgress) + if (uiData->resizeInProgress) return; - pData->setSizeCallback(ev.size.getWidth(), ev.size.getHeight()); + UIWidget::onResize(ev); + + const uint width = ev.size.getWidth(); + const uint height = ev.size.getHeight(); + + /* + pData->window.setSize(width, height); + */ + uiData->setSizeCallback(width, height); } #endif // !DISTRHO_PLUGIN_HAS_EXTERNAL_UI // ----------------------------------------------------------------------------------------------------------- END_NAMESPACE_DISTRHO + +// ----------------------------------------------------------------------- +// Possible template data types + +// template class NanoBaseWidget; +// template class NanoBaseWidget; +// template class NanoBaseWidget; diff --git a/distrho/src/DistrhoUIDSSI.cpp b/distrho/src/DistrhoUIDSSI.cpp index ef3fc365..41504af4 100644 --- a/distrho/src/DistrhoUIDSSI.cpp +++ b/distrho/src/DistrhoUIDSSI.cpp @@ -14,6 +14,7 @@ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#define DISTRHO_UI_IS_STANDALONE 1 #include "DistrhoUIInternal.hpp" #if DISTRHO_PLUGIN_WANT_DIRECT_ACCESS diff --git a/distrho/src/DistrhoUIInternal.hpp b/distrho/src/DistrhoUIInternal.hpp index 80fc4257..21a0625e 100644 --- a/distrho/src/DistrhoUIInternal.hpp +++ b/distrho/src/DistrhoUIInternal.hpp @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2020 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -17,7 +17,7 @@ #ifndef DISTRHO_UI_INTERNAL_HPP_INCLUDED #define DISTRHO_UI_INTERNAL_HPP_INCLUDED -#include "../DistrhoUI.hpp" +#include "DistrhoUIPrivateData.hpp" #if DISTRHO_PLUGIN_HAS_EXTERNAL_UI # include "../extra/Sleep.hpp" @@ -46,163 +46,48 @@ extern Window* d_lastUiWindow; #endif // ----------------------------------------------------------------------- -// UI callbacks -typedef void (*editParamFunc) (void* ptr, uint32_t rindex, bool started); -typedef void (*setParamFunc) (void* ptr, uint32_t rindex, float value); -typedef void (*setStateFunc) (void* ptr, const char* key, const char* value); -typedef void (*sendNoteFunc) (void* ptr, uint8_t channel, uint8_t note, uint8_t velo); -typedef void (*setSizeFunc) (void* ptr, uint width, uint height); -typedef bool (*fileRequestFunc) (void* ptr, const char* key); - -// ----------------------------------------------------------------------- -// UI private data - -struct UI::PrivateData { - // DSP - double sampleRate; - uint32_t parameterOffset; -#if DISTRHO_PLUGIN_WANT_DIRECT_ACCESS - void* dspPtr; -#endif - - // UI - bool automaticallyScale; - bool resizeInProgress; - uint minWidth; - uint minHeight; - uint bgColor; - uint fgColor; - - // Callbacks - void* callbacksPtr; - editParamFunc editParamCallbackFunc; - setParamFunc setParamCallbackFunc; - setStateFunc setStateCallbackFunc; - sendNoteFunc sendNoteCallbackFunc; - setSizeFunc setSizeCallbackFunc; - fileRequestFunc fileRequestCallbackFunc; - - PrivateData() noexcept - : sampleRate(d_lastUiSampleRate), - parameterOffset(0), -#if DISTRHO_PLUGIN_WANT_DIRECT_ACCESS - dspPtr(d_lastUiDspPtr), -#endif - automaticallyScale(false), - resizeInProgress(false), - minWidth(0), - minHeight(0), - bgColor(0), - fgColor(0), - callbacksPtr(nullptr), - editParamCallbackFunc(nullptr), - setParamCallbackFunc(nullptr), - setStateCallbackFunc(nullptr), - sendNoteCallbackFunc(nullptr), - setSizeCallbackFunc(nullptr), - fileRequestCallbackFunc(nullptr) - { - DISTRHO_SAFE_ASSERT(d_isNotZero(sampleRate)); - -#if defined(DISTRHO_PLUGIN_TARGET_DSSI) || defined(DISTRHO_PLUGIN_TARGET_LV2) - parameterOffset += DISTRHO_PLUGIN_NUM_INPUTS + DISTRHO_PLUGIN_NUM_OUTPUTS; -# if DISTRHO_PLUGIN_WANT_LATENCY - parameterOffset += 1; -# endif -#endif - -#ifdef DISTRHO_PLUGIN_TARGET_LV2 -# if (DISTRHO_PLUGIN_IS_SYNTH || DISTRHO_PLUGIN_WANT_TIMEPOS || DISTRHO_PLUGIN_WANT_STATE) - parameterOffset += 1; -# if DISTRHO_PLUGIN_WANT_STATE - parameterOffset += 1; -# endif -# endif +#if DISTRHO_PLUGIN_HAS_EXTERNAL_UI +UI* createUiWrapper(void* dspPtr, uintptr_t winId, double scaleFactor, const char* bundlePath); +#else // DISTRHO_PLUGIN_HAS_EXTERNAL_UI +UI* createUiWrapper(void* dspPtr, Window* window); #endif - } - void editParamCallback(const uint32_t rindex, const bool started) - { - if (editParamCallbackFunc != nullptr) - editParamCallbackFunc(callbacksPtr, rindex, started); - } - - void setParamCallback(const uint32_t rindex, const float value) - { - if (setParamCallbackFunc != nullptr) - setParamCallbackFunc(callbacksPtr, rindex, value); - } - - void setStateCallback(const char* const key, const char* const value) - { - if (setStateCallbackFunc != nullptr) - setStateCallbackFunc(callbacksPtr, key, value); - } - - void sendNoteCallback(const uint8_t channel, const uint8_t note, const uint8_t velocity) - { - if (sendNoteCallbackFunc != nullptr) - sendNoteCallbackFunc(callbacksPtr, channel, note, velocity); - } - - void setSizeCallback(const uint width, const uint height) - { - if (setSizeCallbackFunc != nullptr) - setSizeCallbackFunc(callbacksPtr, width, height); - } +#if !DISTRHO_PLUGIN_HAS_EXTERNAL_UI +// ----------------------------------------------------------------------- +// Plugin Application, will set class name based on plugin details - bool fileRequestCallback(const char* key) +class PluginApplication : public Application +{ +public: + PluginApplication() + : Application(DISTRHO_UI_IS_STANDALONE) { - if (fileRequestCallbackFunc != nullptr) - return fileRequestCallbackFunc(callbacksPtr, key); - - // TODO use old style DPF dialog here - - return false; + const char* const className = ( +#ifdef DISTRHO_PLUGIN_BRAND + DISTRHO_PLUGIN_BRAND +#else + DISTRHO_MACRO_AS_STRING(DISTRHO_NAMESPACE) +#endif + "-" DISTRHO_PLUGIN_NAME + ); + setClassName(className); } }; // ----------------------------------------------------------------------- // Plugin Window, needed to take care of resize properly -#if DISTRHO_PLUGIN_HAS_EXTERNAL_UI -static inline -UI* createUiWrapper(void* const dspPtr, const uintptr_t winId, const double scaleFactor, const char* const bundlePath) -{ - d_lastUiDspPtr = dspPtr; - g_nextWindowId = winId; - g_nextScaleFactor = scaleFactor; - g_nextBundlePath = bundlePath; - UI* const ret = createUI(); - d_lastUiDspPtr = nullptr; - g_nextWindowId = 0; - g_nextScaleFactor = 1.0; - g_nextBundlePath = nullptr; - return ret; -} -#else // DISTRHO_PLUGIN_HAS_EXTERNAL_UI -static inline -UI* createUiWrapper(void* const dspPtr, Window* const window) -{ - d_lastUiDspPtr = dspPtr; - d_lastUiWindow = window; - UI* const ret = createUI(); - d_lastUiDspPtr = nullptr; - d_lastUiWindow = nullptr; - return ret; -} - class UIExporterWindow : public Window { public: - UIExporterWindow(Application& app, const intptr_t winId, const double scaleFactor, void* const dspPtr) + UIExporterWindow(PluginApplication& app, const intptr_t winId, const double scaleFactor, void* const dspPtr) : Window(app, winId, scaleFactor, DISTRHO_UI_USER_RESIZABLE), fUI(createUiWrapper(dspPtr, this)), fIsReady(false) { DISTRHO_SAFE_ASSERT_RETURN(fUI != nullptr,); - DISTRHO_SAFE_ASSERT_RETURN(fUI->pData != nullptr,); + DISTRHO_SAFE_ASSERT_RETURN(fUI->uiData != nullptr,); setSize(fUI->getWidth(), fUI->getHeight()); } @@ -228,19 +113,14 @@ protected: { DISTRHO_SAFE_ASSERT_RETURN(fUI != nullptr,); - UI::PrivateData* const pData = fUI->pData; - DISTRHO_SAFE_ASSERT_RETURN(pData != nullptr,); - - if (pData->automaticallyScale) - { - const double scaleHorizontal = static_cast(width) / static_cast(pData->minWidth); - const double scaleVertical = static_cast(height) / static_cast(pData->minHeight); - _setAutoScaling(scaleHorizontal < scaleVertical ? scaleHorizontal : scaleVertical); - } + UI::PrivateData* const uiData = fUI->uiData; + DISTRHO_SAFE_ASSERT_RETURN(uiData != nullptr,); - pData->resizeInProgress = true; + /* + uiData->resizeInProgress = true; fUI->setSize(width, height); - pData->resizeInProgress = false; + uiData->resizeInProgress = false; + */ fUI->uiReshape(width, height); fIsReady = true; @@ -248,7 +128,7 @@ protected: # ifndef DGL_FILE_BROWSER_DISABLED // custom file-browser selected - void fileBrowserSelected(const char* filename) override + void onFileSelected(const char* const filename) override { DISTRHO_SAFE_ASSERT_RETURN(fUI != nullptr,); @@ -278,7 +158,7 @@ public: const fileRequestFunc fileRequestCall, const char* const bundlePath = nullptr, void* const dspPtr = nullptr, - const float scaleFactor = 1.0f, + const double scaleFactor = 1.0, const uint32_t bgColor = 0, const uint32_t fgColor = 0xffffffff) #if DISTRHO_PLUGIN_HAS_EXTERNAL_UI @@ -289,7 +169,7 @@ public: fChangingSize(false), fUI(glWindow.getUI()), #endif - fData((fUI != nullptr) ? fUI->pData : nullptr) + fData((fUI != nullptr) ? fUI->uiData : nullptr) { DISTRHO_SAFE_ASSERT_RETURN(fUI != nullptr,); DISTRHO_SAFE_ASSERT_RETURN(fData != nullptr,); @@ -339,7 +219,7 @@ public: return fUI->isRunning(); } - intptr_t getWindowId() const noexcept + uintptr_t getNativeWindowHandle() const noexcept { return 0; } @@ -359,9 +239,9 @@ public: return glWindow.isVisible(); } - intptr_t getWindowId() const noexcept + uintptr_t getNativeWindowHandle() const noexcept { - return glWindow.getWindowId(); + return glWindow.getNativeWindowHandle(); } #endif @@ -461,8 +341,8 @@ public: DISTRHO_SAFE_ASSERT_RETURN(cb != nullptr,); DISTRHO_SAFE_ASSERT_RETURN(fUI != nullptr,); - glWindow.addIdleCallback(cb); glWindow.setVisible(true); + glApp.addIdleCallback(cb); glApp.exec(); } @@ -549,9 +429,11 @@ public: fChangingSize = false; } - void setWindowTransientWinId(const uintptr_t winId) + void setWindowTransientWinId(const uintptr_t /*winId*/) { +#if 0 /* TODO */ glWindow.setTransientWinId(winId); +#endif } bool setWindowVisible(const bool yesNo) @@ -561,14 +443,20 @@ public: return ! glApp.isQuiting(); } - bool handlePluginKeyboard(const bool press, const uint key) + bool handlePluginKeyboard(const bool /*press*/, const uint /*key*/, const uint16_t /*mods*/) { +#if 0 /* TODO */ return glWindow.handlePluginKeyboard(press, key); +#endif + return false; } - bool handlePluginSpecial(const bool press, const DGL_NAMESPACE::Key key) + bool handlePluginSpecial(const bool /*press*/, const DGL_NAMESPACE::Key /*key*/, const uint16_t /*mods*/) { +#if 0 /* TODO */ return glWindow.handlePluginSpecial(press, key); +#endif + return false; } #endif @@ -594,8 +482,8 @@ private: // ------------------------------------------------------------------- // DGL Application and Window for this widget - Application glApp; - UIExporterWindow glWindow; + PluginApplication glApp; + UIExporterWindow glWindow; // prevent recursion bool fChangingSize; diff --git a/distrho/src/DistrhoUILV2.cpp b/distrho/src/DistrhoUILV2.cpp index 0aa2d691..3d8ba55a 100644 --- a/distrho/src/DistrhoUILV2.cpp +++ b/distrho/src/DistrhoUILV2.cpp @@ -14,6 +14,7 @@ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ +#define DISTRHO_UI_IS_STANDALONE 0 #include "DistrhoUIInternal.hpp" #include "../extra/String.hpp" @@ -100,7 +101,7 @@ public: fUiResize->ui_resize(fUiResize->handle, fUI.getWidth(), fUI.getHeight()); if (widget != nullptr) - *widget = (LV2UI_Widget)fUI.getWindowId(); + *widget = (LV2UI_Widget)fUI.getNativeWindowHandle(); #if DISTRHO_PLUGIN_WANT_STATE // tell the DSP we're ready to receive msgs diff --git a/distrho/src/DistrhoUIPrivateData.hpp b/distrho/src/DistrhoUIPrivateData.hpp new file mode 100644 index 00000000..7f871e09 --- /dev/null +++ b/distrho/src/DistrhoUIPrivateData.hpp @@ -0,0 +1,152 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2020 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef DISTRHO_UI_PRIVATE_DATA_HPP_INCLUDED +#define DISTRHO_UI_PRIVATE_DATA_HPP_INCLUDED + +#include "../DistrhoUI.hpp" + +START_NAMESPACE_DISTRHO + +// ----------------------------------------------------------------------- +// Static data, see DistrhoUI.cpp + +extern double d_lastUiSampleRate; +extern void* d_lastUiDspPtr; + +// ----------------------------------------------------------------------- +// UI callbacks + +typedef void (*editParamFunc) (void* ptr, uint32_t rindex, bool started); +typedef void (*setParamFunc) (void* ptr, uint32_t rindex, float value); +typedef void (*setStateFunc) (void* ptr, const char* key, const char* value); +typedef void (*sendNoteFunc) (void* ptr, uint8_t channel, uint8_t note, uint8_t velo); +typedef void (*setSizeFunc) (void* ptr, uint width, uint height); +typedef bool (*fileRequestFunc) (void* ptr, const char* key); + +// ----------------------------------------------------------------------- +// UI private data + +struct UI::PrivateData { + // DSP + double sampleRate; + uint32_t parameterOffset; +#if DISTRHO_PLUGIN_WANT_DIRECT_ACCESS + void* dspPtr; +#endif + + // UI + bool automaticallyScale; + bool resizeInProgress; + uint minWidth; + uint minHeight; + uint bgColor; + uint fgColor; + + // Callbacks + void* callbacksPtr; + editParamFunc editParamCallbackFunc; + setParamFunc setParamCallbackFunc; + setStateFunc setStateCallbackFunc; + sendNoteFunc sendNoteCallbackFunc; + setSizeFunc setSizeCallbackFunc; + fileRequestFunc fileRequestCallbackFunc; + + PrivateData() noexcept + : sampleRate(d_lastUiSampleRate), + parameterOffset(0), +#if DISTRHO_PLUGIN_WANT_DIRECT_ACCESS + dspPtr(d_lastUiDspPtr), +#endif + automaticallyScale(false), + resizeInProgress(false), + minWidth(0), + minHeight(0), + bgColor(0), + fgColor(0), + callbacksPtr(nullptr), + editParamCallbackFunc(nullptr), + setParamCallbackFunc(nullptr), + setStateCallbackFunc(nullptr), + sendNoteCallbackFunc(nullptr), + setSizeCallbackFunc(nullptr), + fileRequestCallbackFunc(nullptr) + { + DISTRHO_SAFE_ASSERT(d_isNotZero(sampleRate)); + +#if defined(DISTRHO_PLUGIN_TARGET_DSSI) || defined(DISTRHO_PLUGIN_TARGET_LV2) + parameterOffset += DISTRHO_PLUGIN_NUM_INPUTS + DISTRHO_PLUGIN_NUM_OUTPUTS; +# if DISTRHO_PLUGIN_WANT_LATENCY + parameterOffset += 1; +# endif +#endif + +#ifdef DISTRHO_PLUGIN_TARGET_LV2 +# if (DISTRHO_PLUGIN_WANT_MIDI_INPUT || DISTRHO_PLUGIN_WANT_TIMEPOS || DISTRHO_PLUGIN_WANT_STATE) + parameterOffset += 1; +# if DISTRHO_PLUGIN_WANT_STATE + parameterOffset += 1; +# endif +# endif +#endif + } + + void editParamCallback(const uint32_t rindex, const bool started) + { + if (editParamCallbackFunc != nullptr) + editParamCallbackFunc(callbacksPtr, rindex, started); + } + + void setParamCallback(const uint32_t rindex, const float value) + { + if (setParamCallbackFunc != nullptr) + setParamCallbackFunc(callbacksPtr, rindex, value); + } + + void setStateCallback(const char* const key, const char* const value) + { + if (setStateCallbackFunc != nullptr) + setStateCallbackFunc(callbacksPtr, key, value); + } + + void sendNoteCallback(const uint8_t channel, const uint8_t note, const uint8_t velocity) + { + if (sendNoteCallbackFunc != nullptr) + sendNoteCallbackFunc(callbacksPtr, channel, note, velocity); + } + + void setSizeCallback(const uint width, const uint height) + { + if (setSizeCallbackFunc != nullptr) + setSizeCallbackFunc(callbacksPtr, width, height); + } + + bool fileRequestCallback(const char* key) + { + if (fileRequestCallbackFunc != nullptr) + return fileRequestCallbackFunc(callbacksPtr, key); + + // TODO use old style DPF dialog here + + return false; + } +}; + +// ----------------------------------------------------------------------- + +END_NAMESPACE_DISTRHO + +#endif // DISTRHO_UI_PRIVATE_DATA_HPP_INCLUDED diff --git a/examples/CairoUI/Artwork.cpp b/examples/CairoUI/Artwork.cpp new file mode 100644 index 00000000..bfce3185 --- /dev/null +++ b/examples/CairoUI/Artwork.cpp @@ -0,0 +1,2600 @@ +/* (Auto-generated binary data file). */ + +#include "Artwork.hpp" + +static const unsigned char temp_buttonOff_1[] = { + 137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 50, 0, + 0, 0, 30, 8, 3, 0, 0, 0, 89, 143, 189, 206, 0, 0, 1, 242, 80, 76, 84, 69, 0, + 0, 0, 40, 65, 89, 126, 151, 175, 163, 187, 211, 253, 253, 253, 40, 65, 89, 103, 128, 152, 184, + 208, 233, 253, 253, 253, 40, 65, 89, 146, 170, 194, 253, 253, 253, 2, 3, 3, 5, 6, 6, 8, + 9, 11, 9, 10, 11, 15, 17, 19, 16, 18, 21, 19, 21, 24, 21, 24, 28, 22, 25, 28, 25, + 28, 32, 27, 31, 35, 28, 32, 36, 36, 41, 46, 38, 43, 49, 38, 44, 50, 40, 65, 89, 42, + 48, 54, 42, 48, 55, 43, 49, 56, 44, 50, 57, 44, 51, 57, 46, 52, 59, 46, 53, 60, 50, + 57, 64, 50, 74, 99, 52, 60, 68, 53, 60, 68, 55, 63, 71, 57, 65, 74, 57, 66, 74, 60, + 69, 78, 61, 70, 79, 63, 72, 81, 64, 73, 83, 65, 74, 84, 65, 75, 85, 67, 77, 87, 71, + 81, 91, 72, 82, 93, 73, 83, 94, 75, 100, 124, 77, 88, 100, 78, 102, 126, 80, 91, 103, 81, + 92, 104, 81, 93, 105, 84, 96, 108, 84, 97, 109, 90, 103, 116, 92, 106, 119, 93, 17, 19, 94, + 107, 121, 96, 109, 124, 96, 110, 125, 98, 112, 126, 105, 120, 136, 106, 121, 137, 108, 124, 140, 108, + 133, 157, 111, 127, 143, 111, 135, 159, 112, 128, 144, 112, 136, 160, 113, 130, 147, 114, 91, 103, 114, + 131, 148, 114, 138, 163, 115, 132, 149, 116, 133, 150, 117, 134, 152, 118, 135, 153, 119, 137, 154, 120, + 145, 169, 121, 139, 157, 122, 140, 158, 123, 140, 159, 124, 142, 160, 125, 143, 161, 126, 144, 163, 129, + 147, 166, 135, 155, 175, 136, 155, 176, 137, 156, 177, 138, 158, 178, 139, 158, 179, 140, 160, 181, 141, + 149, 168, 142, 162, 183, 144, 137, 154, 144, 164, 186, 144, 165, 187, 146, 167, 188, 146, 167, 189, 148, + 169, 191, 148, 170, 192, 149, 137, 154, 150, 42, 45, 151, 91, 103, 151, 173, 195, 152, 173, 196, 153, + 175, 198, 154, 176, 199, 157, 182, 206, 159, 175, 198, 160, 179, 202, 160, 182, 206, 160, 183, 207, 161, + 184, 208, 162, 185, 209, 162, 185, 210, 163, 20, 20, 164, 175, 198, 164, 187, 211, 165, 17, 19, 165, + 188, 213, 166, 42, 45, 166, 190, 215, 168, 179, 202, 168, 192, 217, 171, 181, 204, 172, 149, 168, 173, + 189, 212, 175, 182, 205, 175, 186, 209, 176, 152, 172, 187, 183, 202, 191, 216, 240, 192, 166, 184, 192, + 171, 188, 195, 40, 43, 200, 221, 234, 203, 20, 20, 203, 31, 31, 203, 220, 233, 206, 219, 234, 208, + 221, 234, 209, 234, 254, 213, 127, 139, 213, 164, 176, 218, 31, 31, 218, 32, 32, 222, 59, 61, 223, + 32, 32, 224, 33, 33, 224, 48, 49, 228, 82, 86, 228, 98, 102, 230, 237, 244, 234, 74, 74, 235, + 58, 60, 237, 254, 254, 243, 129, 131, 248, 254, 254, 253, 253, 253, 111, 147, 172, 98, 0, 0, 0, + 12, 116, 82, 78, 83, 0, 5, 5, 5, 5, 86, 86, 86, 86, 147, 147, 147, 101, 64, 116, 119, + 0, 0, 1, 123, 73, 68, 65, 84, 56, 203, 99, 96, 96, 225, 88, 186, 116, 9, 145, 96, 209, + 20, 118, 102, 6, 6, 22, 238, 165, 243, 39, 79, 36, 18, 244, 117, 53, 113, 49, 49, 112, 44, + 157, 212, 68, 2, 40, 10, 97, 99, 88, 58, 191, 137, 36, 224, 97, 198, 176, 116, 50, 105, 90, + 252, 84, 24, 150, 76, 36, 77, 139, 151, 244, 80, 208, 50, 109, 222, 204, 185, 83, 17, 114, 149, + 65, 170, 2, 124, 98, 166, 137, 64, 102, 190, 185, 128, 81, 60, 16, 23, 162, 106, 233, 92, 48, + 11, 4, 102, 119, 64, 117, 148, 219, 136, 234, 135, 199, 184, 200, 74, 6, 55, 53, 5, 42, 219, + 151, 5, 0, 113, 3, 138, 150, 214, 57, 179, 32, 96, 122, 35, 68, 139, 183, 132, 85, 5, 144, + 138, 83, 211, 74, 109, 242, 212, 244, 6, 99, 84, 135, 45, 158, 5, 3, 181, 96, 126, 141, 133, + 98, 52, 152, 225, 36, 227, 233, 44, 194, 195, 43, 44, 196, 195, 107, 92, 128, 172, 165, 125, 22, + 2, 84, 131, 4, 178, 244, 116, 50, 192, 90, 2, 228, 29, 154, 220, 53, 188, 193, 24, 197, 150, + 30, 36, 45, 217, 32, 129, 52, 109, 195, 66, 176, 146, 8, 37, 27, 236, 90, 186, 145, 180, 164, + 128, 4, 242, 12, 180, 211, 193, 74, 252, 21, 28, 177, 107, 105, 67, 210, 82, 12, 18, 168, 179, + 86, 140, 130, 248, 69, 193, 23, 187, 150, 166, 133, 112, 29, 118, 144, 16, 11, 148, 178, 44, 5, + 82, 9, 234, 186, 153, 56, 180, 52, 207, 128, 234, 152, 80, 2, 141, 73, 91, 81, 157, 176, 88, + 87, 5, 185, 200, 38, 28, 90, 154, 90, 250, 193, 58, 170, 146, 96, 177, 95, 19, 170, 46, 200, + 47, 110, 158, 220, 132, 83, 75, 83, 83, 110, 125, 111, 142, 207, 48, 73, 252, 68, 107, 89, 212, + 71, 154, 22, 55, 105, 134, 41, 93, 164, 105, 49, 145, 102, 96, 111, 42, 34, 205, 93, 172, 12, + 204, 92, 33, 30, 126, 94, 68, 2, 55, 19, 105, 78, 70, 6, 6, 38, 54, 51, 21, 105, 162, + 1, 43, 35, 3, 0, 57, 197, 173, 141, 128, 129, 207, 13, 0, 0, 0, 0, 73, 69, 78, 68, + 174, 66, 96, 130,}; +const char* Artwork::buttonOffData = (const char*)temp_buttonOff_1; + +static const unsigned char temp_buttonOn_2[] = { + 137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 50, 0, + 0, 0, 30, 8, 3, 0, 0, 0, 89, 143, 189, 206, 0, 0, 1, 254, 80, 76, 84, 69, 0, + 0, 0, 40, 65, 89, 126, 151, 175, 163, 187, 211, 253, 253, 253, 40, 65, 89, 103, 128, 152, 184, + 208, 233, 253, 253, 253, 40, 65, 89, 146, 170, 194, 253, 253, 253, 8, 9, 11, 9, 10, 11, 11, + 12, 14, 15, 17, 19, 15, 94, 19, 15, 166, 19, 16, 18, 21, 17, 19, 22, 20, 163, 20, 20, + 203, 20, 25, 28, 32, 27, 31, 35, 28, 32, 36, 30, 35, 39, 30, 203, 31, 30, 218, 31, 31, + 219, 32, 32, 223, 32, 33, 224, 33, 36, 41, 46, 38, 43, 49, 38, 44, 50, 38, 153, 45, 38, + 169, 45, 38, 197, 43, 40, 65, 89, 42, 48, 54, 42, 48, 55, 43, 49, 56, 44, 50, 57, 44, + 51, 57, 46, 52, 59, 46, 53, 60, 48, 225, 49, 49, 56, 63, 50, 57, 65, 50, 74, 99, 52, + 60, 68, 53, 60, 68, 55, 63, 71, 56, 64, 72, 56, 64, 73, 56, 236, 60, 57, 65, 74, 57, + 224, 61, 58, 67, 75, 60, 69, 78, 61, 70, 79, 63, 72, 81, 64, 73, 83, 65, 74, 84, 65, + 75, 85, 67, 77, 87, 69, 79, 90, 71, 81, 91, 73, 84, 95, 74, 234, 74, 75, 100, 124, 77, + 88, 100, 78, 102, 126, 79, 231, 86, 80, 91, 103, 80, 126, 103, 80, 162, 103, 81, 92, 104, 81, + 93, 105, 83, 95, 108, 84, 96, 108, 84, 97, 109, 86, 98, 111, 87, 100, 113, 90, 103, 116, 92, + 106, 119, 95, 231, 102, 96, 109, 124, 96, 110, 125, 98, 112, 126, 106, 121, 137, 108, 124, 140, 108, + 133, 157, 111, 135, 159, 112, 128, 144, 112, 136, 160, 113, 130, 147, 114, 131, 148, 114, 138, 163, 115, + 132, 149, 115, 224, 139, 116, 133, 150, 117, 134, 152, 118, 135, 153, 119, 137, 154, 119, 161, 154, 119, + 166, 154, 120, 145, 169, 121, 139, 157, 122, 140, 158, 123, 140, 159, 123, 141, 159, 124, 142, 160, 125, + 143, 161, 126, 144, 163, 127, 145, 164, 127, 245, 131, 129, 147, 166, 129, 148, 167, 130, 160, 168, 130, + 191, 168, 134, 195, 172, 135, 155, 175, 136, 155, 176, 137, 156, 177, 137, 157, 177, 139, 158, 179, 139, + 159, 180, 140, 160, 181, 140, 161, 182, 142, 162, 183, 144, 164, 186, 144, 165, 187, 146, 167, 188, 146, + 167, 189, 148, 169, 191, 148, 170, 192, 149, 210, 184, 151, 173, 195, 153, 175, 198, 153, 181, 198, 153, + 186, 198, 153, 210, 188, 153, 224, 176, 154, 176, 199, 156, 182, 202, 156, 190, 202, 157, 182, 206, 159, + 194, 204, 160, 182, 206, 160, 197, 205, 161, 184, 208, 162, 185, 209, 162, 185, 210, 164, 187, 211, 164, + 206, 202, 165, 188, 213, 165, 197, 209, 167, 191, 216, 167, 196, 212, 168, 192, 217, 191, 216, 240, 200, + 221, 234, 203, 220, 233, 206, 219, 234, 208, 221, 234, 209, 234, 254, 230, 237, 244, 237, 254, 254, 248, + 254, 254, 253, 253, 253, 121, 47, 149, 249, 0, 0, 0, 12, 116, 82, 78, 83, 0, 5, 5, 5, + 5, 86, 86, 86, 86, 147, 147, 147, 101, 64, 116, 119, 0, 0, 1, 124, 73, 68, 65, 84, 56, + 203, 99, 96, 96, 225, 88, 185, 114, 5, 145, 96, 249, 82, 118, 102, 6, 6, 22, 238, 149, 203, + 150, 44, 34, 18, 44, 92, 48, 159, 139, 137, 129, 99, 229, 226, 249, 36, 128, 73, 89, 108, 12, + 43, 151, 205, 39, 9, 196, 184, 51, 172, 92, 66, 154, 150, 68, 3, 134, 21, 139, 72, 211, 18, + 167, 58, 20, 180, 244, 133, 90, 120, 36, 35, 228, 102, 164, 25, 242, 243, 136, 187, 213, 227, 214, + 50, 203, 69, 22, 4, 228, 42, 160, 82, 211, 130, 197, 236, 115, 43, 35, 213, 21, 210, 113, 105, + 153, 167, 43, 11, 1, 210, 19, 33, 82, 241, 242, 254, 211, 129, 84, 181, 145, 85, 19, 14, 45, + 197, 178, 48, 32, 8, 230, 207, 244, 209, 46, 1, 51, 34, 212, 98, 231, 7, 90, 250, 73, 242, + 233, 23, 161, 106, 153, 35, 139, 0, 61, 32, 129, 118, 59, 155, 86, 176, 146, 20, 205, 176, 249, + 65, 194, 206, 13, 165, 122, 142, 93, 40, 90, 122, 145, 180, 100, 130, 4, 154, 173, 157, 250, 193, + 90, 242, 117, 130, 231, 7, 105, 228, 205, 159, 27, 96, 94, 135, 162, 165, 3, 73, 75, 6, 72, + 160, 211, 193, 186, 5, 172, 37, 73, 43, 124, 126, 144, 105, 245, 252, 249, 65, 38, 85, 40, 90, + 166, 34, 105, 233, 6, 9, 204, 14, 208, 46, 132, 248, 69, 43, 97, 126, 144, 121, 13, 166, 150, + 249, 102, 112, 29, 2, 144, 144, 73, 85, 244, 157, 2, 164, 106, 141, 109, 219, 112, 104, 153, 44, + 3, 213, 33, 53, 1, 26, 147, 33, 98, 54, 57, 85, 81, 90, 26, 5, 243, 113, 104, 153, 95, + 46, 10, 214, 33, 82, 6, 139, 128, 153, 217, 198, 66, 188, 18, 158, 141, 243, 113, 106, 153, 63, + 223, 91, 89, 69, 201, 107, 152, 36, 126, 162, 181, 44, 95, 72, 154, 150, 104, 85, 134, 165, 11, + 72, 211, 226, 170, 202, 192, 62, 127, 18, 105, 238, 98, 101, 96, 230, 202, 138, 73, 140, 35, 18, + 68, 187, 170, 114, 50, 50, 48, 48, 177, 185, 27, 168, 18, 13, 88, 25, 25, 0, 137, 242, 6, + 61, 121, 125, 59, 85, 0, 0, 0, 0, 73, 69, 78, 68, 174, 66, 96, 130,}; +const char* Artwork::buttonOnData = (const char*)temp_buttonOn_2; + +static const unsigned char temp_knob_3[] = { + 137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 64, 0, + 0, 16, 0, 8, 6, 0, 0, 0, 194, 239, 231, 124, 0, 0, 204, 63, 73, 68, 65, 84, 120, + 218, 236, 157, 7, 124, 27, 85, 242, 199, 77, 232, 28, 252, 129, 227, 40, 71, 63, 32, 192, 209, + 107, 122, 1, 210, 123, 181, 12, 7, 7, 119, 128, 34, 41, 157, 36, 132, 244, 80, 66, 56, 90, + 66, 13, 164, 82, 82, 44, 59, 78, 33, 182, 83, 156, 222, 27, 233, 133, 20, 72, 111, 54, 9, + 9, 41, 164, 162, 247, 159, 89, 207, 202, 79, 235, 93, 73, 150, 118, 181, 107, 123, 222, 231, 51, + 89, 91, 86, 164, 55, 179, 175, 237, 238, 251, 125, 39, 41, 41, 65, 229, 201, 209, 203, 46, 4, + 123, 0, 172, 1, 216, 43, 96, 157, 193, 122, 146, 117, 166, 215, 26, 208, 123, 46, 76, 42, 238, + 5, 156, 184, 2, 172, 5, 216, 231, 96, 43, 192, 68, 245, 180, 31, 69, 253, 241, 171, 68, 243, + 31, 214, 136, 148, 172, 181, 226, 95, 217, 235, 20, 195, 159, 241, 53, 252, 27, 190, 7, 223, 75, + 255, 231, 115, 250, 140, 43, 138, 147, 227, 88, 225, 140, 114, 224, 68, 157, 140, 149, 226, 165, 41, + 235, 197, 235, 115, 183, 136, 15, 150, 109, 23, 195, 215, 238, 17, 25, 155, 15, 136, 41, 219, 126, + 21, 179, 119, 30, 18, 243, 118, 255, 166, 24, 254, 140, 175, 225, 223, 240, 61, 248, 94, 252, 63, + 248, 127, 241, 51, 202, 229, 7, 36, 3, 63, 219, 169, 78, 95, 72, 205, 120, 219, 211, 233, 43, + 196, 171, 57, 27, 197, 135, 203, 118, 136, 113, 224, 208, 146, 189, 135, 197, 206, 35, 127, 136, 63, + 206, 156, 21, 127, 254, 249, 167, 174, 157, 59, 119, 46, 228, 103, 124, 47, 254, 31, 252, 191, 248, + 25, 248, 89, 248, 153, 248, 217, 248, 29, 244, 93, 23, 58, 197, 249, 54, 96, 251, 107, 142, 93, + 41, 186, 194, 89, 27, 189, 113, 159, 88, 113, 224, 119, 241, 219, 31, 167, 163, 114, 56, 26, 195, + 207, 194, 207, 196, 207, 198, 239, 192, 239, 194, 239, 196, 239, 182, 211, 241, 202, 96, 11, 171, 250, + 127, 84, 42, 53, 113, 107, 174, 248, 249, 183, 227, 97, 207, 116, 36, 139, 20, 24, 252, 108, 252, + 14, 252, 46, 252, 78, 252, 110, 172, 3, 214, 37, 209, 206, 247, 44, 63, 102, 153, 120, 97, 242, + 122, 229, 172, 96, 165, 78, 21, 209, 241, 19, 167, 207, 138, 35, 39, 79, 43, 134, 63, 23, 229, + 255, 158, 162, 64, 224, 119, 99, 29, 176, 46, 88, 167, 68, 141, 236, 202, 0, 247, 230, 162, 95, + 196, 250, 95, 143, 138, 163, 167, 206, 132, 173, 236, 153, 179, 231, 196, 174, 223, 255, 16, 179, 96, + 160, 251, 118, 253, 94, 241, 222, 210, 237, 162, 243, 156, 45, 162, 205, 204, 77, 194, 59, 253, 39, + 197, 240, 103, 124, 13, 255, 134, 239, 193, 247, 226, 255, 193, 255, 27, 238, 179, 241, 187, 177, 14, + 88, 23, 105, 160, 188, 194, 42, 231, 239, 194, 169, 169, 138, 127, 185, 50, 82, 239, 59, 122, 82, + 105, 178, 70, 205, 118, 207, 209, 63, 148, 166, 218, 99, 254, 86, 229, 44, 53, 153, 184, 90, 212, + 130, 17, 189, 10, 52, 91, 170, 108, 136, 225, 107, 248, 55, 124, 15, 190, 23, 255, 15, 254, 95, + 252, 12, 252, 172, 112, 221, 5, 235, 130, 117, 194, 186, 209, 244, 121, 151, 217, 206, 227, 226, 100, + 27, 206, 211, 147, 127, 249, 85, 252, 126, 242, 140, 97, 191, 197, 209, 251, 171, 213, 187, 131, 83, + 88, 165, 212, 229, 170, 147, 216, 87, 7, 130, 189, 12, 86, 29, 236, 94, 176, 155, 201, 238, 165, + 215, 94, 166, 247, 224, 123, 149, 255, 171, 78, 165, 248, 153, 248, 217, 70, 99, 7, 214, 9, 235, + 134, 117, 164, 153, 226, 1, 51, 207, 252, 182, 198, 112, 86, 22, 238, 249, 205, 112, 144, 203, 59, + 113, 74, 124, 15, 205, 247, 57, 88, 216, 84, 75, 11, 158, 229, 28, 114, 234, 170, 24, 190, 247, + 42, 250, 191, 57, 248, 89, 248, 153, 248, 217, 248, 29, 248, 93, 70, 131, 36, 214, 17, 235, 74, + 65, 184, 203, 140, 62, 191, 2, 163, 138, 31, 124, 18, 190, 64, 123, 198, 79, 67, 63, 93, 155, + 119, 84, 116, 152, 181, 89, 109, 130, 104, 163, 193, 158, 48, 177, 5, 62, 65, 159, 169, 124, 7, + 126, 23, 126, 231, 105, 205, 24, 129, 117, 59, 73, 65, 160, 150, 176, 34, 174, 49, 1, 7, 21, + 252, 66, 108, 90, 127, 232, 56, 143, 163, 55, 246, 209, 58, 227, 86, 202, 205, 188, 186, 133, 131, + 112, 117, 181, 123, 224, 119, 226, 119, 107, 103, 16, 117, 33, 133, 117, 166, 19, 146, 17, 243, 84, + 135, 77, 15, 7, 23, 236, 95, 218, 213, 218, 241, 211, 103, 196, 80, 248, 155, 52, 144, 245, 75, + 224, 52, 220, 79, 253, 94, 172, 3, 214, 69, 173, 159, 122, 196, 58, 99, 221, 169, 43, 246, 44, + 242, 34, 7, 231, 86, 156, 94, 112, 132, 85, 63, 88, 253, 112, 252, 194, 65, 171, 118, 169, 142, + 159, 6, 75, 177, 97, 33, 150, 66, 223, 173, 212, 5, 235, 164, 29, 19, 176, 238, 232, 3, 173, + 19, 42, 23, 229, 195, 23, 226, 52, 132, 115, 172, 182, 121, 97, 147, 147, 206, 252, 97, 43, 155, + 124, 148, 93, 226, 176, 218, 18, 244, 22, 84, 232, 3, 250, 130, 62, 69, 189, 182, 199, 37, 38, + 174, 178, 112, 161, 33, 55, 125, 28, 116, 176, 223, 73, 103, 222, 54, 231, 53, 65, 80, 90, 2, + 214, 77, 30, 24, 177, 238, 232, 3, 250, 66, 203, 230, 54, 209, 92, 213, 237, 199, 117, 54, 46, + 53, 181, 103, 31, 71, 94, 105, 192, 75, 73, 114, 72, 161, 238, 160, 212, 13, 235, 168, 109, 5, + 232, 11, 250, 68, 23, 80, 23, 134, 251, 160, 206, 120, 165, 133, 145, 84, 215, 246, 106, 223, 199, + 185, 23, 167, 159, 68, 15, 120, 69, 29, 24, 177, 142, 88, 87, 185, 229, 162, 47, 232, 19, 93, + 69, 118, 14, 247, 33, 219, 244, 206, 62, 26, 46, 64, 104, 90, 89, 152, 228, 208, 130, 117, 195, + 58, 98, 93, 181, 83, 182, 212, 10, 182, 25, 222, 201, 193, 27, 14, 216, 95, 180, 171, 61, 92, + 130, 226, 42, 140, 206, 126, 117, 7, 7, 0, 199, 3, 165, 174, 218, 101, 51, 250, 132, 190, 209, + 77, 149, 22, 186, 139, 30, 188, 235, 130, 55, 30, 180, 103, 31, 215, 225, 213, 242, 239, 213, 141, + 46, 6, 183, 228, 70, 99, 93, 177, 206, 90, 63, 208, 55, 244, 177, 208, 226, 8, 151, 139, 184, + 96, 192, 91, 79, 218, 59, 57, 120, 37, 134, 23, 35, 180, 160, 120, 162, 24, 4, 224, 9, 172, + 43, 214, 89, 123, 21, 137, 190, 161, 143, 228, 203, 21, 33, 205, 31, 175, 186, 240, 254, 155, 54, + 106, 202, 82, 55, 67, 25, 60, 114, 138, 209, 141, 217, 28, 172, 51, 214, 93, 123, 197, 138, 62, + 146, 63, 45, 228, 255, 240, 57, 70, 12, 111, 66, 106, 111, 102, 224, 53, 57, 93, 210, 190, 92, + 140, 2, 240, 50, 214, 25, 235, 174, 189, 169, 130, 62, 162, 175, 232, 179, 252, 31, 86, 224, 109, + 104, 237, 192, 129, 119, 101, 104, 21, 37, 98, 185, 164, 149, 75, 138, 199, 159, 200, 0, 224, 165, + 180, 82, 119, 244, 65, 59, 160, 191, 158, 63, 27, 172, 144, 23, 63, 202, 189, 120, 237, 232, 143, + 183, 166, 154, 228, 95, 91, 199, 61, 245, 65, 0, 90, 130, 221, 153, 200, 41, 17, 235, 142, 62, + 104, 103, 3, 244, 149, 78, 234, 133, 202, 221, 30, 124, 26, 131, 87, 78, 218, 254, 143, 247, 231, + 106, 229, 247, 151, 129, 113, 58, 127, 31, 216, 72, 176, 223, 93, 173, 82, 27, 37, 40, 0, 3, + 177, 238, 232, 131, 214, 47, 244, 149, 158, 64, 61, 128, 111, 108, 128, 55, 15, 50, 116, 6, 64, + 188, 73, 89, 37, 127, 13, 253, 114, 28, 206, 95, 224, 242, 164, 165, 192, 81, 128, 5, 232, 216, + 54, 17, 227, 0, 214, 29, 125, 208, 250, 133, 190, 210, 13, 147, 6, 248, 198, 87, 240, 185, 28, + 62, 154, 210, 190, 17, 239, 212, 150, 139, 115, 241, 3, 206, 222, 2, 182, 14, 236, 79, 114, 94, + 181, 143, 172, 94, 20, 97, 221, 209, 7, 173, 95, 232, 43, 250, 140, 190, 43, 235, 127, 124, 56, + 57, 91, 211, 87, 240, 210, 18, 111, 87, 83, 95, 185, 55, 70, 231, 203, 128, 245, 6, 219, 163, + 113, 94, 109, 9, 99, 193, 46, 182, 40, 0, 120, 163, 85, 241, 65, 123, 153, 140, 190, 162, 207, + 202, 117, 1, 222, 45, 193, 39, 180, 248, 144, 82, 126, 19, 62, 176, 192, 123, 246, 20, 128, 155, + 99, 12, 192, 147, 208, 252, 39, 160, 179, 112, 20, 154, 32, 168, 182, 12, 236, 110, 11, 2, 128, + 119, 155, 21, 31, 208, 23, 217, 55, 244, 245, 95, 249, 75, 251, 158, 150, 5, 0, 167, 189, 20, + 183, 223, 27, 193, 121, 213, 242, 192, 106, 219, 21, 128, 96, 23, 144, 239, 171, 197, 219, 5, 192, + 161, 123, 192, 14, 134, 113, 58, 160, 243, 154, 219, 142, 46, 16, 50, 8, 202, 203, 198, 88, 7, + 65, 112, 228, 18, 28, 228, 224, 204, 231, 169, 206, 193, 244, 23, 234, 188, 91, 227, 124, 193, 239, + 239, 90, 53, 8, 170, 247, 54, 180, 131, 160, 233, 211, 32, 56, 81, 29, 44, 39, 194, 217, 54, + 108, 13, 16, 172, 81, 241, 174, 28, 139, 50, 13, 154, 186, 16, 130, 138, 255, 5, 236, 13, 157, + 51, 171, 107, 6, 227, 67, 26, 216, 51, 86, 44, 132, 176, 5, 104, 23, 66, 166, 46, 133, 161, + 226, 143, 225, 138, 207, 232, 204, 195, 217, 13, 215, 26, 142, 131, 125, 1, 65, 123, 50, 97, 75, + 97, 189, 139, 33, 117, 28, 40, 234, 197, 16, 84, 254, 255, 192, 134, 129, 3, 71, 12, 250, 190, + 177, 185, 253, 171, 192, 222, 131, 159, 47, 5, 59, 63, 97, 23, 67, 102, 94, 14, 67, 197, 27, + 128, 45, 140, 212, 236, 165, 191, 171, 131, 97, 150, 201, 51, 64, 145, 47, 135, 227, 190, 33, 2, + 14, 92, 1, 253, 185, 127, 17, 6, 59, 252, 249, 24, 88, 6, 216, 195, 96, 151, 89, 117, 67, + 68, 54, 163, 27, 34, 113, 223, 18, 163, 145, 95, 68, 28, 252, 10, 94, 95, 3, 246, 37, 45, + 151, 203, 216, 122, 75, 44, 222, 155, 162, 112, 230, 175, 5, 39, 198, 129, 157, 8, 183, 234, 147, + 198, 131, 249, 96, 173, 192, 254, 150, 136, 155, 162, 234, 152, 102, 120, 83, 52, 158, 219, 226, 224, + 196, 121, 96, 41, 112, 102, 87, 22, 26, 244, 220, 249, 211, 156, 244, 218, 111, 96, 115, 224, 245, + 123, 192, 254, 234, 168, 219, 226, 177, 62, 24, 1, 135, 174, 3, 39, 191, 48, 152, 211, 229, 62, + 191, 25, 236, 27, 176, 91, 227, 29, 229, 45, 121, 48, 98, 244, 104, 76, 222, 2, 163, 247, 104, + 12, 156, 105, 4, 118, 182, 144, 195, 238, 144, 197, 206, 38, 28, 229, 173, 188, 37, 166, 125, 52, + 166, 221, 86, 23, 237, 163, 177, 66, 15, 71, 229, 72, 106, 31, 142, 210, 217, 156, 13, 118, 90, + 109, 1, 154, 121, 255, 16, 216, 79, 16, 140, 114, 86, 244, 119, 211, 31, 142, 210, 135, 133, 60, + 30, 215, 238, 7, 10, 62, 30, 31, 185, 244, 76, 163, 55, 126, 248, 72, 113, 80, 127, 186, 219, + 11, 246, 45, 24, 58, 127, 158, 197, 143, 195, 116, 31, 143, 171, 123, 9, 163, 126, 60, 46, 247, + 165, 72, 27, 36, 42, 14, 95, 36, 234, 247, 202, 58, 163, 211, 247, 207, 210, 82, 184, 13, 216, + 131, 9, 120, 22, 168, 187, 65, 66, 189, 242, 43, 242, 6, 9, 250, 224, 66, 91, 100, 100, 59, + 118, 234, 180, 232, 11, 163, 169, 206, 153, 63, 10, 182, 21, 172, 9, 216, 95, 45, 118, 190, 190, + 101, 91, 100, 232, 11, 66, 54, 73, 201, 145, 221, 13, 203, 201, 214, 189, 179, 160, 191, 251, 69, + 50, 158, 253, 252, 1, 239, 36, 180, 4, 28, 229, 235, 38, 232, 182, 119, 121, 176, 51, 88, 199, + 185, 187, 14, 153, 187, 73, 74, 94, 28, 105, 183, 201, 157, 132, 15, 254, 106, 220, 42, 209, 162, + 93, 6, 141, 240, 193, 245, 252, 27, 48, 0, 62, 158, 224, 71, 96, 174, 39, 105, 139, 237, 138, + 253, 71, 204, 221, 38, 167, 46, 145, 181, 27, 37, 103, 194, 28, 219, 180, 87, 166, 234, 60, 222, + 234, 94, 75, 171, 186, 191, 216, 244, 28, 240, 117, 12, 194, 51, 208, 37, 215, 228, 254, 110, 238, + 70, 73, 250, 130, 224, 86, 217, 180, 77, 251, 69, 163, 1, 179, 84, 231, 113, 202, 195, 167, 61, + 174, 68, 63, 251, 211, 169, 227, 151, 24, 132, 218, 112, 145, 131, 117, 52, 109, 171, 172, 244, 5, + 202, 102, 233, 170, 67, 230, 139, 230, 237, 51, 68, 75, 143, 255, 28, 244, 119, 188, 118, 119, 204, + 126, 1, 168, 95, 22, 6, 129, 6, 60, 243, 54, 75, 171, 165, 234, 151, 115, 31, 170, 251, 246, + 228, 253, 141, 187, 78, 60, 214, 178, 117, 250, 59, 248, 64, 195, 202, 249, 61, 198, 155, 32, 235, + 45, 217, 46, 175, 150, 22, 109, 199, 54, 105, 246, 218, 184, 46, 73, 14, 45, 224, 248, 237, 96, + 151, 91, 250, 37, 102, 94, 187, 115, 225, 194, 133, 11, 23, 46, 165, 164, 48, 63, 128, 249, 1, + 204, 15, 96, 126, 0, 243, 3, 152, 31, 192, 252, 0, 230, 7, 48, 63, 128, 249, 1, 69, 186, + 197, 197, 252, 0, 170, 7, 243, 3, 168, 62, 204, 15, 160, 186, 49, 63, 128, 249, 1, 73, 204, + 15, 144, 131, 192, 252, 0, 230, 7, 48, 63, 128, 249, 1, 204, 15, 32, 63, 152, 31, 192, 252, + 0, 230, 7, 56, 147, 31, 80, 38, 81, 59, 74, 28, 199, 15, 80, 84, 164, 30, 127, 51, 176, + 255, 185, 60, 105, 23, 37, 106, 74, 116, 18, 63, 224, 6, 176, 65, 180, 155, 116, 6, 10, 163, + 18, 16, 0, 103, 240, 3, 40, 0, 30, 141, 100, 14, 119, 152, 95, 97, 245, 56, 224, 20, 126, + 64, 13, 176, 141, 58, 154, 2, 148, 205, 92, 101, 97, 0, 28, 193, 15, 184, 3, 236, 99, 146, + 202, 232, 233, 8, 23, 89, 165, 35, 176, 157, 31, 128, 232, 140, 20, 183, 114, 246, 127, 145, 28, + 15, 104, 132, 211, 1, 226, 7, 92, 111, 65, 0, 108, 231, 7, 92, 9, 182, 212, 80, 61, 30, + 122, 92, 1, 118, 147, 93, 1, 48, 157, 31, 64, 187, 72, 7, 128, 29, 214, 19, 75, 203, 2, + 11, 233, 103, 212, 17, 222, 106, 71, 23, 48, 149, 31, 64, 11, 158, 166, 224, 216, 2, 93, 1, + 117, 120, 89, 237, 122, 28, 55, 172, 26, 4, 45, 231, 7, 208, 130, 231, 90, 112, 242, 107, 93, + 103, 163, 147, 210, 163, 194, 172, 108, 34, 167, 65, 179, 249, 1, 109, 8, 153, 19, 80, 133, 147, + 133, 156, 119, 23, 10, 70, 64, 51, 86, 160, 216, 234, 74, 43, 22, 66, 150, 242, 3, 160, 210, + 181, 148, 190, 236, 246, 159, 147, 157, 211, 136, 170, 2, 210, 25, 151, 7, 67, 245, 255, 124, 65, + 42, 244, 196, 44, 133, 245, 46, 134, 98, 225, 7, 208, 156, 255, 33, 216, 17, 3, 193, 116, 64, + 23, 165, 145, 255, 183, 99, 164, 60, 105, 7, 65, 249, 43, 188, 118, 94, 156, 206, 39, 150, 31, + 128, 87, 121, 208, 116, 107, 64, 197, 119, 26, 73, 103, 13, 68, 213, 248, 247, 131, 240, 127, 63, + 195, 179, 174, 142, 35, 118, 92, 14, 199, 117, 67, 4, 245, 195, 10, 1, 66, 223, 193, 128, 238, + 56, 128, 218, 66, 183, 127, 63, 81, 230, 238, 177, 242, 134, 136, 165, 252, 0, 168, 252, 229, 52, + 231, 31, 52, 24, 233, 245, 244, 196, 56, 221, 141, 130, 192, 60, 96, 246, 61, 130, 132, 242, 3, + 148, 229, 174, 199, 223, 24, 108, 65, 52, 211, 28, 13, 116, 136, 215, 249, 183, 153, 139, 158, 72, + 55, 69, 45, 225, 7, 208, 156, 127, 13, 216, 16, 3, 199, 181, 11, 160, 173, 202, 123, 97, 221, + 111, 213, 165, 112, 194, 249, 1, 208, 132, 59, 128, 51, 103, 34, 14, 120, 110, 255, 88, 120, 173, + 181, 89, 131, 156, 37, 15, 70, 140, 30, 141, 25, 241, 3, 192, 145, 58, 116, 17, 115, 78, 239, + 204, 195, 200, 126, 146, 130, 131, 56, 189, 39, 147, 44, 46, 9, 229, 7, 84, 28, 182, 80, 52, + 233, 50, 97, 18, 138, 165, 181, 156, 32, 58, 251, 7, 225, 56, 13, 206, 252, 115, 86, 209, 34, + 44, 121, 56, 170, 247, 120, 92, 187, 31, 104, 60, 76, 35, 213, 190, 152, 35, 90, 180, 27, 171, + 215, 223, 177, 53, 236, 2, 235, 10, 86, 209, 234, 38, 31, 233, 241, 184, 37, 252, 128, 111, 102, + 252, 42, 92, 29, 50, 67, 251, 122, 254, 32, 184, 151, 110, 110, 84, 194, 155, 160, 9, 124, 22, + 152, 56, 126, 192, 23, 83, 14, 139, 74, 222, 5, 162, 185, 103, 92, 240, 194, 5, 53, 196, 45, + 219, 164, 35, 69, 226, 61, 248, 253, 246, 4, 62, 252, 72, 44, 63, 160, 223, 248, 35, 226, 159, + 222, 13, 162, 174, 103, 114, 16, 143, 147, 236, 75, 19, 13, 122, 102, 6, 234, 247, 201, 106, 99, + 37, 35, 196, 160, 126, 137, 227, 7, 116, 155, 152, 43, 110, 111, 11, 139, 33, 239, 156, 96, 191, + 111, 218, 121, 162, 168, 253, 238, 84, 81, 254, 219, 197, 255, 130, 223, 47, 74, 178, 161, 36, 140, + 31, 80, 115, 204, 26, 209, 168, 199, 143, 34, 217, 147, 174, 52, 251, 134, 111, 77, 17, 79, 125, + 50, 11, 63, 252, 117, 59, 101, 243, 84, 71, 235, 249, 1, 213, 63, 157, 125, 160, 249, 27, 153, + 194, 213, 118, 130, 168, 247, 209, 108, 101, 26, 68, 205, 190, 131, 30, 134, 90, 203, 15, 104, 220, + 117, 98, 151, 122, 125, 178, 143, 86, 255, 124, 142, 186, 16, 202, 114, 224, 19, 97, 107, 249, 1, + 208, 223, 159, 166, 38, 181, 62, 222, 39, 197, 22, 62, 17, 182, 150, 31, 128, 218, 124, 212, 232, + 39, 57, 180, 36, 132, 31, 192, 133, 11, 23, 46, 92, 184, 112, 137, 101, 142, 102, 126, 0, 243, + 3, 152, 31, 192, 252, 0, 230, 7, 48, 63, 128, 249, 1, 204, 15, 96, 126, 0, 243, 3, 162, + 191, 197, 197, 252, 0, 170, 7, 243, 3, 168, 62, 204, 15, 160, 186, 49, 63, 128, 249, 1, 73, + 204, 15, 144, 131, 192, 252, 0, 230, 7, 48, 63, 128, 249, 1, 204, 15, 32, 63, 152, 31, 192, + 252, 0, 230, 7, 56, 144, 31, 128, 5, 179, 78, 37, 40, 0, 142, 227, 7, 156, 79, 59, 72, + 199, 131, 245, 75, 80, 16, 28, 197, 15, 192, 84, 188, 159, 75, 123, 139, 219, 38, 32, 0, 206, + 225, 7, 184, 60, 105, 111, 130, 211, 127, 104, 36, 116, 45, 172, 30, 7, 108, 231, 7, 144, 140, + 246, 37, 176, 149, 90, 33, 21, 241, 4, 42, 91, 24, 0, 123, 249, 1, 228, 252, 195, 148, 69, + 90, 17, 73, 234, 72, 231, 118, 155, 165, 21, 214, 9, 128, 189, 252, 0, 10, 194, 231, 81, 164, + 223, 93, 102, 102, 202, 93, 41, 0, 182, 243, 3, 80, 42, 115, 66, 39, 215, 112, 64, 71, 47, + 60, 201, 206, 0, 152, 202, 15, 0, 135, 46, 196, 252, 99, 152, 129, 218, 40, 9, 171, 246, 117, + 74, 213, 57, 216, 174, 46, 96, 26, 63, 64, 233, 247, 110, 255, 63, 224, 56, 58, 76, 194, 101, + 35, 1, 53, 218, 91, 86, 14, 130, 150, 243, 3, 104, 202, 251, 44, 66, 198, 233, 2, 153, 188, + 91, 55, 57, 179, 55, 209, 211, 160, 41, 11, 33, 69, 64, 237, 73, 235, 6, 199, 3, 81, 136, + 166, 67, 147, 175, 187, 11, 113, 70, 170, 90, 181, 16, 178, 132, 31, 128, 120, 44, 48, 204, 63, + 60, 43, 82, 214, 121, 165, 201, 235, 235, 139, 85, 253, 33, 166, 237, 124, 57, 222, 156, 102, 9, + 227, 7, 144, 132, 246, 175, 96, 35, 117, 156, 213, 37, 70, 104, 181, 134, 164, 56, 219, 2, 134, + 242, 155, 187, 19, 122, 49, 100, 198, 229, 48, 205, 247, 129, 40, 19, 175, 107, 207, 252, 84, 176, + 183, 81, 66, 111, 86, 38, 187, 132, 241, 3, 80, 44, 5, 214, 73, 133, 37, 73, 164, 8, 17, + 1, 164, 112, 132, 168, 17, 184, 86, 40, 143, 18, 124, 43, 111, 136, 88, 194, 15, 192, 249, 30, + 206, 234, 211, 96, 83, 117, 207, 176, 113, 48, 86, 17, 36, 165, 134, 218, 133, 108, 191, 37, 22, + 203, 77, 81, 148, 192, 131, 211, 223, 71, 224, 5, 168, 103, 253, 52, 157, 241, 17, 96, 245, 33, + 56, 183, 36, 242, 166, 168, 233, 252, 0, 26, 248, 62, 193, 100, 203, 212, 247, 141, 154, 125, 128, + 180, 196, 83, 105, 100, 191, 194, 74, 141, 97, 66, 248, 1, 229, 190, 95, 178, 4, 156, 104, 77, + 24, 12, 17, 225, 98, 103, 6, 180, 18, 116, 252, 81, 199, 63, 24, 49, 122, 52, 38, 111, 129, + 105, 63, 99, 147, 168, 252, 245, 124, 209, 180, 211, 248, 173, 97, 156, 63, 74, 87, 120, 239, 16, + 80, 237, 202, 4, 57, 111, 61, 63, 96, 193, 246, 195, 162, 73, 159, 201, 161, 115, 122, 254, 168, + 174, 44, 100, 224, 108, 111, 130, 191, 245, 69, 184, 130, 21, 3, 156, 229, 15, 71, 245, 30, 143, + 171, 31, 50, 125, 237, 9, 81, 183, 227, 66, 112, 120, 172, 222, 10, 111, 43, 216, 24, 8, 198, + 189, 112, 188, 41, 41, 129, 37, 33, 252, 128, 79, 178, 143, 136, 135, 188, 171, 69, 125, 119, 86, + 16, 135, 135, 178, 249, 228, 214, 105, 162, 121, 135, 140, 44, 8, 194, 127, 213, 171, 65, 27, 156, + 183, 142, 31, 208, 103, 193, 47, 162, 221, 200, 67, 226, 54, 223, 118, 81, 195, 51, 61, 120, 198, + 155, 181, 202, 16, 41, 157, 178, 68, 245, 207, 102, 139, 74, 67, 22, 156, 65, 45, 191, 13, 15, + 63, 172, 231, 7, 60, 57, 106, 153, 112, 13, 221, 43, 106, 180, 158, 173, 156, 113, 116, 30, 3, + 81, 206, 187, 88, 212, 253, 96, 175, 120, 114, 228, 82, 252, 96, 12, 64, 121, 27, 2, 96, 61, + 63, 160, 252, 119, 139, 39, 214, 237, 55, 77, 36, 183, 157, 168, 80, 35, 30, 243, 254, 40, 202, + 250, 54, 139, 167, 223, 203, 19, 149, 70, 175, 80, 215, 5, 46, 27, 31, 129, 89, 203, 15, 128, + 254, 93, 171, 94, 159, 236, 188, 38, 125, 166, 136, 186, 253, 182, 139, 91, 219, 238, 21, 213, 223, + 205, 19, 213, 71, 7, 183, 201, 188, 238, 128, 231, 128, 214, 242, 3, 26, 118, 159, 244, 47, 104, + 9, 59, 106, 143, 89, 39, 90, 124, 117, 64, 60, 61, 102, 181, 234, 124, 233, 225, 7, 168, 155, + 165, 165, 93, 222, 165, 143, 31, 160, 110, 151, 103, 126, 0, 243, 3, 184, 112, 225, 194, 133, 11, + 23, 46, 69, 159, 163, 153, 31, 192, 252, 0, 230, 7, 48, 63, 128, 249, 1, 204, 15, 96, 126, + 0, 243, 3, 152, 31, 192, 252, 128, 232, 111, 113, 49, 63, 128, 234, 193, 252, 0, 170, 15, 243, + 3, 168, 110, 204, 15, 96, 126, 64, 18, 243, 3, 228, 32, 48, 63, 128, 249, 1, 204, 15, 96, + 126, 0, 243, 3, 200, 15, 230, 7, 48, 63, 128, 249, 1, 14, 228, 7, 164, 184, 149, 29, 230, + 245, 193, 106, 38, 32, 0, 142, 227, 7, 148, 113, 121, 210, 238, 2, 27, 70, 251, 138, 43, 36, + 98, 74, 116, 12, 63, 192, 213, 42, 245, 60, 104, 1, 195, 165, 253, 197, 171, 49, 89, 163, 197, + 1, 112, 6, 63, 0, 156, 191, 21, 156, 29, 172, 147, 134, 123, 152, 213, 227, 128, 19, 248, 1, + 55, 193, 153, 127, 77, 217, 70, 239, 209, 213, 16, 121, 45, 12, 128, 189, 252, 0, 10, 64, 51, + 232, 247, 219, 34, 104, 138, 30, 183, 40, 0, 246, 242, 3, 224, 204, 63, 27, 76, 193, 173, 127, + 246, 81, 105, 134, 175, 253, 104, 81, 0, 236, 225, 7, 16, 57, 162, 25, 216, 28, 176, 83, 97, + 196, 84, 242, 107, 95, 217, 25, 0, 211, 248, 1, 148, 134, 247, 62, 56, 251, 163, 116, 206, 116, + 64, 87, 88, 229, 14, 74, 111, 94, 177, 171, 11, 152, 201, 15, 184, 20, 44, 53, 10, 213, 184, + 54, 0, 42, 84, 229, 97, 43, 7, 65, 75, 249, 1, 80, 249, 187, 72, 64, 125, 76, 39, 9, + 171, 110, 0, 116, 254, 182, 216, 142, 105, 48, 238, 133, 16, 156, 197, 219, 161, 242, 61, 52, 26, + 226, 240, 137, 152, 141, 3, 244, 185, 149, 11, 33, 211, 249, 1, 52, 232, 189, 0, 142, 236, 213, + 29, 233, 117, 120, 33, 218, 215, 37, 221, 49, 254, 127, 76, 231, 251, 207, 132, 45, 133, 245, 46, + 134, 138, 200, 15, 248, 175, 214, 113, 35, 169, 124, 72, 48, 10, 248, 2, 56, 85, 238, 131, 159, + 49, 127, 57, 230, 41, 174, 16, 175, 222, 48, 33, 252, 0, 162, 197, 96, 133, 23, 7, 211, 111, + 71, 78, 190, 174, 125, 15, 42, 80, 135, 147, 20, 23, 63, 243, 18, 187, 46, 135, 139, 116, 67, + 132, 156, 127, 20, 206, 90, 70, 52, 125, 61, 63, 61, 111, 240, 236, 31, 34, 130, 212, 215, 116, + 182, 239, 177, 250, 134, 136, 233, 252, 0, 112, 232, 42, 168, 248, 196, 136, 112, 148, 130, 223, 85, + 62, 200, 116, 176, 15, 192, 106, 171, 235, 6, 71, 220, 18, 43, 202, 77, 81, 168, 244, 253, 200, + 5, 132, 32, 252, 33, 45, 114, 242, 251, 52, 245, 253, 144, 49, 192, 237, 223, 14, 246, 51, 53, + 243, 71, 145, 55, 146, 232, 155, 162, 166, 241, 3, 48, 219, 108, 211, 78, 227, 71, 66, 115, 222, + 21, 210, 167, 245, 81, 56, 39, 8, 152, 128, 136, 141, 91, 19, 148, 132, 221, 58, 126, 192, 183, + 107, 118, 139, 218, 31, 207, 16, 45, 124, 105, 103, 245, 48, 56, 212, 18, 112, 237, 191, 1, 108, + 2, 178, 128, 192, 238, 77, 74, 96, 177, 140, 31, 112, 236, 143, 115, 194, 247, 241, 154, 160, 124, + 86, 179, 132, 253, 147, 250, 248, 10, 176, 119, 193, 146, 105, 68, 63, 207, 206, 71, 99, 166, 241, + 3, 210, 23, 29, 21, 213, 59, 175, 17, 245, 61, 89, 210, 34, 38, 132, 7, 136, 80, 148, 183, + 192, 254, 1, 65, 185, 177, 88, 63, 28, 149, 31, 143, 143, 88, 189, 79, 180, 251, 238, 144, 184, + 203, 183, 69, 212, 240, 228, 20, 76, 105, 222, 124, 249, 124, 131, 158, 153, 127, 54, 126, 125, 226, + 23, 42, 41, 54, 209, 103, 60, 154, 199, 227, 113, 241, 3, 154, 248, 127, 18, 213, 222, 218, 45, + 106, 146, 243, 120, 214, 27, 120, 50, 69, 93, 239, 84, 225, 250, 96, 173, 168, 56, 124, 33, 242, + 68, 142, 56, 117, 131, 68, 220, 252, 128, 42, 131, 231, 139, 148, 55, 166, 136, 150, 158, 177, 162, + 153, 103, 156, 168, 224, 93, 36, 30, 244, 174, 17, 55, 250, 246, 136, 219, 58, 28, 16, 41, 195, + 247, 202, 27, 37, 74, 22, 63, 0, 201, 78, 208, 196, 103, 130, 9, 87, 175, 185, 226, 159, 29, + 119, 136, 155, 125, 187, 196, 117, 173, 115, 243, 205, 183, 95, 212, 253, 56, 79, 32, 95, 160, 196, + 242, 3, 32, 8, 143, 61, 53, 112, 214, 188, 74, 163, 127, 20, 77, 62, 203, 21, 183, 180, 219, + 47, 174, 111, 125, 64, 9, 64, 169, 225, 7, 168, 27, 37, 107, 142, 89, 35, 106, 127, 152, 39, + 110, 110, 151, 91, 250, 248, 1, 234, 86, 89, 230, 7, 48, 63, 128, 249, 1, 204, 15, 224, 194, + 133, 11, 23, 46, 92, 184, 196, 58, 71, 51, 63, 128, 249, 1, 204, 15, 96, 126, 0, 243, 3, + 152, 31, 192, 252, 0, 230, 7, 48, 63, 128, 249, 1, 209, 223, 226, 98, 126, 0, 213, 131, 249, + 1, 84, 31, 230, 7, 80, 221, 152, 31, 192, 252, 128, 36, 230, 7, 200, 65, 96, 126, 0, 243, + 3, 152, 31, 192, 252, 0, 230, 7, 144, 31, 204, 15, 96, 126, 128, 147, 249, 1, 86, 239, 22, + 39, 127, 28, 200, 15, 200, 215, 22, 149, 35, 161, 196, 237, 22, 7, 192, 89, 252, 0, 10, 192, + 213, 148, 154, 19, 55, 86, 143, 75, 196, 148, 232, 24, 126, 0, 137, 44, 126, 208, 40, 200, 94, + 180, 56, 0, 246, 243, 3, 104, 219, 124, 85, 69, 77, 234, 246, 31, 212, 104, 12, 246, 129, 253, + 159, 149, 227, 128, 19, 248, 1, 183, 186, 90, 165, 126, 9, 199, 227, 6, 162, 233, 65, 86, 46, + 138, 108, 229, 7, 128, 115, 119, 130, 101, 193, 153, 15, 24, 72, 234, 212, 96, 212, 182, 40, 0, + 246, 241, 3, 192, 169, 167, 192, 166, 104, 117, 196, 133, 90, 64, 126, 80, 86, 90, 20, 128, 196, + 243, 3, 72, 79, 248, 16, 12, 118, 67, 192, 185, 35, 69, 16, 81, 246, 177, 51, 0, 230, 241, + 3, 220, 254, 155, 192, 153, 140, 40, 69, 210, 90, 123, 216, 174, 46, 96, 10, 63, 0, 28, 124, + 6, 156, 152, 15, 199, 147, 33, 14, 71, 175, 36, 159, 98, 245, 32, 104, 9, 63, 0, 51, 207, + 67, 229, 43, 195, 241, 123, 112, 246, 183, 66, 34, 234, 104, 244, 196, 5, 93, 194, 99, 199, 52, + 24, 243, 66, 136, 230, 121, 76, 173, 235, 143, 134, 21, 64, 250, 194, 112, 65, 64, 214, 208, 245, + 86, 46, 132, 76, 229, 7, 224, 104, 15, 103, 126, 105, 84, 168, 140, 200, 32, 21, 85, 99, 220, + 53, 161, 75, 97, 189, 139, 161, 72, 252, 0, 168, 228, 197, 96, 181, 148, 1, 15, 71, 123, 183, + 33, 51, 192, 104, 48, 148, 157, 255, 13, 254, 63, 42, 202, 179, 17, 172, 4, 214, 40, 222, 236, + 181, 150, 242, 3, 168, 217, 223, 2, 54, 38, 196, 41, 119, 33, 71, 3, 70, 253, 159, 222, 255, + 135, 34, 194, 246, 164, 125, 10, 199, 6, 40, 212, 50, 107, 105, 108, 41, 63, 64, 25, 240, 90, + 165, 46, 137, 122, 96, 11, 149, 212, 239, 0, 135, 87, 147, 168, 186, 26, 252, 142, 106, 242, 11, + 45, 88, 3, 88, 192, 15, 24, 185, 84, 52, 236, 49, 9, 149, 224, 211, 104, 109, 31, 60, 243, + 58, 115, 188, 76, 143, 58, 74, 77, 252, 83, 106, 226, 229, 213, 251, 3, 142, 185, 37, 22, 233, + 166, 232, 160, 149, 187, 196, 51, 195, 23, 138, 198, 93, 39, 238, 36, 177, 116, 104, 147, 119, 235, + 246, 115, 60, 211, 99, 193, 122, 147, 124, 254, 134, 68, 200, 107, 45, 225, 7, 140, 152, 182, 75, + 36, 119, 153, 20, 110, 101, 167, 130, 144, 182, 194, 235, 27, 136, 25, 128, 11, 163, 187, 139, 205, + 109, 113, 189, 7, 35, 107, 119, 158, 18, 47, 126, 176, 73, 212, 243, 100, 195, 40, 175, 187, 148, + 61, 169, 0, 84, 220, 254, 89, 112, 124, 7, 236, 37, 26, 204, 18, 154, 131, 220, 148, 7, 35, + 242, 163, 177, 49, 235, 115, 69, 215, 209, 135, 242, 179, 76, 123, 102, 138, 100, 73, 54, 175, 152, + 87, 57, 219, 115, 104, 221, 239, 162, 89, 225, 250, 36, 27, 139, 169, 252, 128, 148, 209, 219, 68, + 229, 30, 191, 136, 90, 158, 105, 65, 199, 81, 64, 221, 210, 55, 78, 52, 237, 145, 45, 158, 30, + 56, 75, 212, 126, 119, 106, 63, 104, 238, 142, 216, 174, 106, 58, 63, 160, 230, 39, 115, 132, 171, + 221, 68, 56, 243, 233, 162, 185, 39, 67, 60, 229, 157, 37, 202, 123, 23, 139, 127, 250, 126, 18, + 77, 63, 223, 143, 178, 249, 98, 241, 120, 60, 38, 126, 0, 156, 241, 7, 234, 247, 201, 218, 215, + 242, 141, 44, 81, 191, 243, 66, 113, 135, 239, 103, 113, 187, 111, 91, 80, 57, 126, 75, 251, 253, + 194, 53, 108, 159, 227, 55, 72, 196, 197, 15, 104, 208, 43, 243, 141, 202, 131, 231, 139, 103, 71, + 238, 20, 15, 118, 203, 45, 144, 205, 147, 221, 214, 49, 183, 100, 243, 3, 232, 11, 122, 34, 31, + 192, 53, 116, 175, 184, 163, 83, 94, 104, 16, 74, 3, 63, 64, 93, 28, 49, 63, 128, 249, 1, + 204, 15, 96, 126, 128, 212, 18, 152, 31, 192, 252, 0, 46, 92, 184, 112, 225, 194, 133, 75, 12, + 115, 52, 243, 3, 152, 31, 192, 252, 0, 230, 7, 48, 63, 128, 249, 1, 204, 15, 96, 126, 0, + 243, 3, 152, 31, 16, 253, 45, 46, 230, 7, 80, 61, 152, 31, 64, 245, 97, 126, 0, 213, 141, + 249, 1, 204, 15, 72, 98, 126, 128, 28, 4, 230, 7, 48, 63, 128, 249, 1, 204, 15, 96, 126, + 0, 249, 193, 252, 0, 230, 7, 56, 156, 31, 128, 59, 199, 255, 102, 113, 0, 28, 201, 15, 56, + 159, 50, 211, 246, 112, 181, 74, 253, 200, 226, 0, 56, 146, 31, 240, 55, 151, 39, 109, 144, 180, + 211, 188, 134, 213, 83, 162, 35, 248, 1, 224, 116, 25, 18, 66, 45, 214, 164, 226, 206, 177, 56, + 0, 142, 224, 7, 92, 9, 1, 104, 72, 169, 116, 143, 233, 136, 167, 154, 88, 57, 14, 216, 206, + 15, 128, 190, 142, 25, 232, 55, 134, 73, 193, 187, 200, 202, 69, 145, 109, 252, 0, 148, 202, 80, + 114, 213, 35, 81, 136, 168, 159, 183, 40, 0, 137, 231, 7, 4, 179, 207, 123, 252, 253, 225, 236, + 255, 108, 164, 34, 213, 136, 44, 215, 90, 20, 0, 27, 248, 1, 249, 57, 200, 71, 70, 74, 182, + 174, 211, 10, 60, 118, 6, 32, 110, 126, 0, 102, 140, 6, 83, 251, 251, 233, 8, 205, 94, 213, + 13, 203, 169, 184, 183, 217, 217, 5, 98, 230, 7, 144, 140, 246, 26, 74, 180, 58, 189, 16, 59, + 64, 39, 3, 117, 24, 65, 117, 103, 171, 7, 65, 211, 249, 1, 40, 132, 68, 205, 63, 28, 119, + 132, 85, 139, 187, 141, 243, 146, 75, 140, 129, 60, 179, 114, 143, 23, 117, 26, 140, 105, 33, 132, + 172, 16, 194, 98, 29, 141, 66, 50, 175, 21, 82, 27, 241, 5, 250, 90, 189, 16, 138, 155, 31, + 0, 149, 188, 8, 154, 248, 163, 138, 22, 216, 237, 223, 165, 109, 222, 114, 243, 151, 48, 26, 198, + 1, 113, 135, 4, 5, 21, 229, 87, 153, 20, 0, 107, 248, 1, 80, 193, 7, 41, 179, 180, 126, + 255, 14, 211, 220, 117, 222, 255, 39, 101, 163, 63, 173, 124, 166, 91, 201, 95, 252, 72, 66, 47, + 134, 162, 189, 28, 174, 56, 108, 97, 27, 168, 220, 43, 96, 191, 144, 78, 88, 158, 211, 3, 58, + 86, 152, 39, 144, 79, 136, 56, 71, 45, 99, 42, 216, 16, 176, 238, 20, 212, 191, 195, 235, 127, + 51, 171, 255, 155, 202, 15, 168, 11, 209, 172, 249, 126, 206, 122, 168, 228, 2, 69, 43, 28, 142, + 5, 18, 170, 42, 255, 83, 82, 155, 207, 131, 99, 38, 216, 255, 192, 158, 160, 49, 228, 134, 68, + 220, 16, 137, 139, 31, 176, 235, 200, 9, 241, 236, 128, 57, 162, 101, 219, 116, 99, 71, 11, 7, + 1, 157, 94, 73, 134, 8, 189, 122, 68, 151, 186, 57, 201, 226, 98, 26, 63, 224, 212, 153, 115, + 226, 131, 244, 221, 162, 97, 135, 217, 34, 197, 151, 30, 150, 5, 2, 63, 43, 210, 121, 176, 3, + 224, 252, 112, 56, 254, 7, 172, 25, 222, 253, 81, 7, 78, 59, 111, 138, 22, 137, 31, 48, 108, + 213, 62, 241, 206, 248, 223, 196, 35, 175, 109, 21, 85, 189, 115, 69, 83, 207, 120, 82, 141, 135, + 44, 110, 206, 208, 188, 125, 130, 88, 34, 221, 192, 254, 11, 239, 185, 141, 238, 252, 252, 165, 216, + 221, 22, 87, 31, 140, 184, 70, 109, 19, 85, 186, 111, 17, 53, 61, 83, 131, 14, 163, 124, 222, + 229, 77, 87, 2, 209, 248, 245, 137, 8, 75, 250, 12, 172, 35, 173, 253, 175, 51, 107, 234, 178, + 245, 193, 8, 150, 74, 67, 23, 244, 169, 247, 193, 44, 225, 106, 59, 65, 113, 26, 13, 37, 244, + 207, 120, 102, 136, 234, 237, 151, 138, 150, 67, 215, 139, 138, 67, 22, 224, 140, 48, 192, 233, 143, + 198, 98, 226, 7, 36, 183, 78, 171, 93, 175, 111, 246, 31, 174, 46, 153, 162, 78, 167, 69, 10, + 64, 225, 46, 223, 22, 113, 147, 111, 183, 34, 153, 173, 214, 47, 87, 60, 83, 32, 156, 44, 121, + 15, 71, 17, 144, 84, 171, 255, 180, 47, 171, 126, 3, 103, 123, 240, 126, 113, 71, 199, 253, 138, + 227, 170, 102, 248, 198, 54, 251, 69, 211, 47, 138, 207, 227, 241, 152, 248, 1, 106, 95, 106, 156, + 186, 73, 84, 233, 151, 87, 72, 58, 95, 42, 248, 1, 184, 157, 4, 231, 74, 133, 31, 208, 61, + 143, 249, 1, 204, 15, 96, 126, 0, 243, 3, 152, 31, 192, 252, 0, 230, 7, 48, 63, 128, 11, + 23, 46, 92, 184, 112, 225, 18, 243, 28, 205, 252, 0, 230, 7, 48, 63, 128, 249, 1, 204, 15, + 96, 126, 0, 243, 3, 152, 31, 192, 252, 0, 230, 7, 68, 127, 139, 139, 249, 1, 84, 15, 230, + 7, 80, 125, 152, 31, 64, 117, 99, 126, 0, 243, 3, 146, 152, 31, 32, 7, 129, 249, 1, 204, + 15, 96, 126, 0, 243, 3, 152, 31, 64, 126, 48, 63, 128, 249, 1, 14, 231, 7, 92, 107, 85, + 182, 105, 201, 31, 71, 242, 3, 208, 174, 38, 213, 201, 124, 176, 250, 22, 6, 192, 145, 252, 128, + 242, 46, 79, 218, 104, 73, 78, 51, 201, 234, 41, 209, 118, 126, 0, 157, 117, 212, 16, 180, 74, + 113, 195, 89, 119, 251, 143, 147, 118, 72, 85, 156, 60, 104, 97, 0, 28, 193, 15, 64, 49, 117, + 87, 176, 245, 178, 212, 70, 18, 90, 125, 102, 229, 56, 96, 27, 63, 0, 156, 188, 8, 156, 68, + 201, 204, 162, 16, 161, 164, 91, 55, 97, 227, 229, 22, 5, 32, 241, 252, 0, 146, 203, 220, 1, + 214, 70, 25, 232, 220, 254, 19, 81, 36, 93, 127, 205, 162, 0, 216, 194, 15, 192, 236, 243, 3, + 193, 126, 45, 66, 6, 234, 141, 22, 5, 32, 113, 252, 0, 20, 61, 42, 3, 93, 190, 114, 236, + 108, 24, 109, 176, 94, 90, 94, 60, 54, 179, 51, 0, 49, 243, 3, 80, 61, 14, 125, 253, 54, + 104, 230, 157, 193, 150, 147, 154, 44, 178, 144, 186, 240, 123, 38, 219, 217, 5, 226, 225, 7, 84, + 198, 244, 217, 6, 10, 241, 112, 66, 203, 128, 206, 207, 143, 90, 61, 8, 154, 198, 15, 128, 202, + 150, 5, 235, 130, 252, 15, 210, 3, 7, 10, 129, 19, 36, 197, 184, 33, 80, 33, 244, 245, 65, + 118, 77, 131, 69, 90, 8, 81, 127, 127, 27, 108, 147, 246, 12, 107, 2, 16, 57, 31, 121, 232, + 123, 112, 236, 184, 218, 234, 133, 80, 204, 252, 0, 76, 146, 78, 156, 144, 229, 154, 179, 23, 136, + 114, 196, 15, 149, 214, 235, 7, 168, 107, 194, 151, 194, 122, 23, 67, 50, 63, 224, 249, 172, 117, + 162, 242, 144, 5, 162, 101, 235, 244, 247, 148, 124, 226, 238, 16, 72, 138, 225, 104, 175, 11, 82, + 40, 108, 191, 193, 32, 138, 4, 138, 223, 193, 178, 192, 250, 153, 228, 188, 121, 252, 128, 174, 83, + 55, 136, 250, 111, 78, 22, 201, 222, 180, 227, 17, 161, 40, 110, 131, 150, 144, 255, 250, 33, 210, + 27, 227, 107, 217, 96, 95, 128, 125, 8, 246, 2, 174, 31, 224, 179, 30, 0, 187, 201, 174, 203, + 225, 66, 55, 68, 102, 174, 58, 44, 90, 127, 184, 90, 184, 218, 140, 143, 212, 119, 181, 127, 11, + 40, 103, 214, 147, 182, 29, 143, 4, 74, 248, 0, 156, 123, 19, 94, 123, 17, 33, 9, 240, 251, + 237, 178, 148, 222, 236, 172, 244, 49, 243, 3, 250, 45, 216, 33, 62, 158, 114, 68, 212, 236, 187, + 67, 201, 52, 221, 208, 51, 73, 184, 220, 105, 70, 14, 159, 163, 22, 112, 140, 248, 65, 72, 146, + 193, 36, 236, 253, 40, 251, 252, 191, 201, 81, 196, 236, 252, 221, 209, 183, 196, 212, 155, 162, 205, + 198, 108, 17, 181, 251, 110, 22, 53, 60, 211, 67, 153, 32, 193, 190, 172, 156, 221, 53, 202, 88, + 224, 241, 207, 6, 195, 179, 138, 172, 128, 231, 192, 254, 73, 215, 2, 127, 51, 251, 140, 198, 123, + 83, 52, 42, 126, 192, 211, 3, 102, 182, 175, 255, 110, 14, 229, 28, 79, 83, 6, 174, 250, 158, + 44, 81, 199, 51, 69, 52, 106, 59, 77, 52, 123, 111, 182, 168, 62, 112, 150, 168, 223, 43, 171, + 55, 56, 248, 48, 53, 221, 43, 32, 64, 142, 217, 214, 26, 215, 109, 113, 112, 166, 82, 189, 62, + 217, 71, 93, 221, 166, 136, 218, 157, 150, 136, 123, 125, 27, 21, 195, 220, 227, 40, 150, 76, 30, + 188, 79, 84, 26, 185, 172, 228, 62, 24, 65, 204, 197, 83, 3, 103, 13, 120, 106, 244, 106, 69, + 33, 126, 115, 219, 253, 33, 114, 217, 127, 118, 205, 19, 45, 71, 255, 34, 158, 24, 85, 60, 30, + 141, 197, 196, 15, 80, 31, 142, 34, 69, 226, 201, 190, 133, 69, 211, 213, 222, 205, 43, 217, 252, + 0, 245, 241, 120, 229, 209, 43, 242, 249, 1, 175, 229, 50, 63, 128, 249, 1, 204, 15, 96, 126, + 0, 243, 3, 152, 31, 192, 252, 0, 230, 7, 48, 63, 128, 190, 132, 249, 1, 92, 184, 112, 225, + 194, 133, 11, 151, 88, 230, 104, 230, 7, 48, 63, 128, 249, 1, 204, 15, 96, 126, 0, 243, 3, + 152, 31, 192, 252, 0, 230, 7, 48, 63, 32, 250, 91, 92, 204, 15, 160, 122, 48, 63, 128, 234, + 195, 252, 0, 170, 27, 243, 3, 152, 31, 144, 196, 252, 0, 57, 8, 204, 15, 96, 126, 0, 243, + 3, 152, 31, 192, 252, 0, 242, 131, 249, 1, 204, 15, 112, 56, 63, 224, 42, 176, 103, 192, 170, + 90, 24, 0, 231, 241, 3, 200, 249, 139, 83, 220, 254, 20, 82, 140, 204, 179, 48, 0, 206, 226, + 7, 184, 60, 105, 152, 145, 238, 89, 56, 206, 208, 232, 140, 30, 181, 48, 8, 246, 243, 3, 232, + 172, 223, 3, 103, 189, 7, 28, 151, 128, 105, 117, 71, 239, 88, 24, 0, 123, 249, 1, 164, 28, + 113, 131, 45, 13, 163, 29, 220, 104, 229, 56, 144, 112, 126, 128, 146, 137, 218, 227, 191, 206, 213, + 42, 181, 49, 28, 17, 151, 177, 87, 22, 74, 27, 200, 231, 202, 91, 20, 0, 91, 248, 1, 151, + 67, 115, 71, 193, 212, 178, 136, 170, 209, 2, 251, 192, 162, 0, 36, 134, 31, 64, 156, 16, 212, + 18, 183, 3, 251, 73, 145, 192, 186, 11, 105, 6, 3, 97, 132, 150, 63, 91, 20, 0, 235, 249, + 1, 80, 249, 50, 96, 247, 130, 125, 4, 142, 174, 151, 156, 215, 242, 66, 34, 105, 14, 171, 218, + 25, 128, 152, 248, 1, 80, 233, 251, 193, 185, 183, 193, 161, 3, 145, 100, 180, 134, 138, 210, 2, + 251, 196, 206, 46, 16, 53, 63, 128, 206, 248, 141, 36, 162, 30, 175, 228, 25, 246, 68, 150, 201, + 27, 137, 171, 165, 247, 239, 74, 196, 32, 24, 55, 63, 128, 154, 251, 0, 82, 137, 26, 10, 166, + 161, 101, 4, 194, 180, 8, 189, 217, 0, 223, 91, 211, 174, 105, 48, 252, 66, 8, 254, 86, 253, + 211, 217, 152, 92, 249, 77, 98, 132, 156, 9, 194, 144, 162, 80, 145, 71, 193, 17, 177, 10, 160, + 16, 63, 63, 96, 198, 246, 95, 69, 211, 111, 22, 137, 6, 61, 38, 161, 234, 123, 151, 122, 150, + 101, 118, 128, 242, 179, 134, 9, 80, 40, 64, 110, 127, 88, 149, 57, 189, 63, 215, 150, 165, 176, + 222, 197, 208, 193, 35, 167, 196, 208, 204, 157, 226, 213, 183, 230, 235, 113, 0, 2, 225, 242, 144, + 107, 156, 14, 104, 166, 65, 197, 89, 122, 255, 17, 248, 219, 33, 34, 71, 236, 195, 139, 35, 85, + 146, 155, 208, 139, 33, 245, 114, 248, 133, 204, 245, 226, 131, 28, 24, 28, 62, 220, 39, 30, 242, + 174, 86, 50, 78, 55, 247, 100, 136, 24, 154, 54, 58, 121, 4, 142, 71, 213, 1, 14, 108, 33, + 45, 142, 144, 57, 50, 12, 254, 254, 22, 56, 175, 170, 204, 107, 194, 239, 143, 192, 177, 26, 174, + 34, 237, 186, 28, 110, 129, 138, 208, 22, 255, 219, 40, 158, 246, 206, 84, 196, 211, 5, 205, 189, + 144, 131, 72, 123, 248, 131, 254, 190, 29, 28, 89, 2, 131, 222, 122, 56, 174, 5, 27, 6, 175, + 191, 71, 96, 4, 197, 57, 212, 36, 131, 213, 64, 117, 57, 13, 164, 255, 135, 215, 9, 242, 242, + 217, 234, 27, 34, 17, 249, 1, 77, 59, 143, 47, 95, 247, 173, 201, 34, 229, 181, 73, 224, 124, + 126, 146, 245, 70, 173, 38, 40, 234, 241, 102, 190, 137, 34, 185, 243, 15, 162, 94, 159, 108, 209, + 172, 253, 88, 28, 12, 63, 37, 231, 106, 145, 131, 181, 193, 238, 198, 41, 18, 2, 129, 176, 196, + 107, 37, 231, 206, 47, 22, 183, 196, 160, 162, 183, 214, 235, 157, 185, 185, 197, 155, 51, 69, 253, + 110, 63, 42, 170, 241, 127, 250, 54, 136, 123, 189, 27, 197, 173, 190, 29, 34, 101, 232, 110, 81, + 237, 155, 165, 162, 226, 240, 133, 227, 164, 255, 115, 65, 113, 185, 41, 26, 21, 63, 160, 242, 224, + 249, 255, 169, 54, 122, 165, 162, 25, 190, 181, 93, 168, 114, 252, 209, 94, 121, 162, 97, 234, 79, + 170, 114, 188, 100, 222, 22, 87, 31, 140, 24, 41, 199, 147, 135, 236, 23, 149, 70, 151, 224, 7, + 35, 234, 163, 49, 149, 31, 112, 83, 187, 92, 230, 7, 48, 63, 128, 249, 1, 204, 15, 96, 126, + 0, 243, 3, 152, 31, 192, 252, 0, 230, 7, 48, 63, 32, 137, 249, 1, 234, 151, 48, 63, 128, + 11, 23, 46, 92, 184, 112, 225, 18, 203, 28, 205, 252, 0, 230, 7, 48, 63, 128, 249, 1, 204, + 15, 96, 126, 0, 243, 3, 152, 31, 192, 252, 0, 230, 7, 68, 127, 139, 139, 249, 1, 84, 15, + 230, 7, 80, 125, 152, 31, 64, 117, 99, 126, 0, 243, 3, 146, 152, 31, 32, 7, 129, 249, 1, + 204, 15, 96, 126, 0, 243, 3, 152, 31, 64, 126, 48, 63, 128, 249, 1, 78, 229, 7, 144, 200, + 242, 18, 151, 39, 237, 97, 218, 114, 127, 181, 69, 1, 112, 44, 63, 224, 106, 176, 23, 83, 220, + 254, 9, 112, 220, 143, 217, 38, 45, 10, 128, 115, 248, 1, 224, 228, 101, 96, 143, 208, 25, 95, + 76, 9, 26, 3, 164, 40, 29, 102, 229, 148, 104, 59, 63, 0, 69, 21, 96, 45, 192, 252, 224, + 240, 78, 29, 125, 209, 86, 11, 3, 96, 15, 63, 128, 206, 56, 246, 241, 142, 96, 63, 146, 98, + 44, 80, 72, 67, 92, 96, 119, 89, 53, 14, 216, 193, 15, 64, 107, 8, 246, 61, 56, 252, 51, + 101, 165, 22, 58, 42, 114, 89, 142, 247, 170, 85, 139, 162, 132, 240, 3, 192, 129, 75, 193, 30, + 2, 107, 79, 152, 140, 211, 69, 16, 81, 163, 141, 180, 40, 0, 214, 243, 3, 72, 76, 93, 7, + 206, 230, 8, 56, 110, 54, 116, 222, 173, 43, 174, 86, 69, 149, 187, 45, 10, 128, 53, 252, 0, + 5, 133, 227, 241, 223, 15, 230, 35, 181, 103, 52, 41, 184, 3, 58, 201, 154, 101, 187, 223, 206, + 0, 68, 205, 15, 192, 69, 12, 156, 181, 103, 224, 76, 14, 1, 71, 48, 215, 240, 201, 88, 148, + 165, 58, 214, 198, 206, 46, 16, 158, 31, 48, 106, 169, 120, 230, 131, 233, 255, 38, 34, 204, 204, + 112, 178, 248, 72, 103, 63, 204, 152, 48, 54, 17, 131, 96, 145, 249, 1, 239, 46, 250, 69, 60, + 243, 213, 60, 209, 164, 243, 132, 57, 80, 201, 13, 112, 214, 79, 70, 155, 130, 187, 80, 127, 55, + 152, 9, 232, 125, 121, 118, 78, 131, 133, 22, 66, 203, 126, 58, 44, 62, 30, 189, 73, 252, 167, + 247, 52, 61, 237, 112, 120, 115, 135, 170, 201, 213, 159, 141, 232, 18, 210, 235, 143, 39, 98, 33, + 100, 200, 15, 232, 152, 181, 83, 164, 124, 154, 43, 30, 239, 184, 89, 84, 241, 206, 203, 207, 59, + 238, 77, 23, 81, 84, 92, 219, 18, 140, 216, 1, 70, 242, 123, 245, 247, 78, 182, 44, 133, 177, + 84, 28, 190, 112, 157, 107, 224, 114, 81, 191, 253, 44, 209, 194, 51, 214, 240, 172, 75, 249, 200, + 181, 32, 132, 63, 53, 206, 156, 36, 46, 128, 172, 56, 63, 46, 189, 7, 129, 12, 123, 32, 32, + 71, 233, 247, 61, 102, 130, 84, 138, 116, 49, 132, 114, 246, 6, 189, 50, 151, 183, 236, 150, 37, + 146, 125, 25, 138, 243, 77, 61, 227, 149, 22, 208, 216, 51, 81, 164, 120, 211, 68, 139, 246, 25, + 162, 69, 187, 177, 184, 178, 91, 160, 72, 230, 243, 121, 65, 147, 225, 231, 12, 8, 194, 76, 186, + 200, 241, 131, 125, 129, 23, 56, 96, 233, 240, 183, 65, 112, 236, 69, 28, 177, 247, 145, 27, 70, + 3, 41, 38, 106, 111, 13, 214, 22, 172, 37, 88, 5, 176, 122, 96, 77, 108, 187, 28, 174, 223, + 59, 235, 179, 250, 31, 204, 22, 45, 250, 175, 21, 119, 249, 182, 136, 123, 188, 27, 197, 253, 190, + 117, 138, 138, 188, 217, 128, 237, 162, 214, 176, 101, 162, 250, 103, 179, 151, 67, 37, 43, 130, 221, + 68, 12, 128, 178, 180, 30, 184, 142, 16, 90, 248, 218, 45, 234, 53, 62, 101, 162, 199, 215, 46, + 215, 44, 149, 47, 214, 44, 166, 206, 183, 96, 0, 44, 26, 63, 64, 121, 10, 60, 106, 153, 120, + 246, 219, 221, 226, 238, 206, 161, 26, 193, 135, 123, 228, 138, 38, 99, 54, 169, 18, 185, 146, 121, + 75, 76, 189, 41, 218, 108, 204, 22, 69, 18, 167, 21, 74, 162, 72, 178, 202, 152, 21, 197, 246, + 166, 104, 84, 252, 0, 108, 18, 42, 63, 224, 150, 246, 185, 204, 15, 96, 126, 0, 243, 3, 152, + 31, 192, 252, 0, 230, 7, 48, 63, 128, 249, 1, 204, 15, 96, 126, 0, 243, 3, 152, 31, 32, + 183, 4, 230, 7, 48, 63, 128, 11, 23, 46, 92, 184, 112, 225, 18, 195, 28, 205, 252, 0, 230, + 7, 48, 63, 128, 249, 1, 204, 15, 96, 126, 0, 243, 3, 152, 31, 192, 252, 0, 230, 7, 68, + 127, 139, 139, 249, 1, 84, 15, 230, 7, 80, 125, 152, 31, 64, 117, 99, 126, 0, 243, 3, 146, + 152, 31, 32, 7, 129, 249, 1, 204, 15, 96, 126, 0, 243, 3, 152, 31, 64, 126, 48, 63, 160, + 216, 240, 3, 80, 119, 104, 81, 16, 156, 201, 15, 32, 167, 47, 32, 93, 1, 138, 37, 254, 99, + 81, 0, 156, 199, 15, 32, 118, 64, 133, 20, 183, 191, 51, 28, 179, 72, 38, 99, 85, 214, 105, + 71, 241, 3, 206, 119, 121, 210, 80, 22, 211, 207, 213, 42, 117, 62, 216, 111, 146, 108, 22, 237, + 10, 139, 130, 96, 15, 63, 64, 201, 60, 233, 73, 251, 27, 201, 107, 16, 154, 48, 11, 243, 143, + 134, 145, 207, 87, 180, 40, 0, 182, 241, 3, 238, 34, 199, 51, 41, 65, 243, 89, 29, 217, 188, + 44, 157, 115, 91, 53, 14, 88, 206, 15, 32, 17, 20, 10, 163, 30, 35, 49, 53, 246, 237, 19, + 81, 200, 106, 229, 215, 63, 179, 106, 81, 100, 57, 63, 128, 146, 173, 162, 4, 46, 3, 206, 236, + 86, 53, 27, 173, 70, 56, 169, 159, 134, 187, 96, 12, 152, 101, 81, 0, 204, 231, 7, 64, 101, + 47, 2, 187, 147, 146, 175, 127, 7, 182, 51, 10, 113, 116, 72, 118, 106, 37, 203, 116, 104, 82, + 230, 60, 139, 2, 96, 30, 63, 160, 218, 103, 115, 238, 134, 202, 62, 10, 149, 111, 131, 103, 27, + 236, 23, 248, 249, 140, 44, 128, 14, 73, 193, 29, 185, 249, 7, 52, 65, 186, 201, 206, 0, 24, + 242, 3, 90, 79, 219, 32, 170, 126, 49, 87, 52, 111, 155, 49, 68, 66, 224, 136, 34, 37, 94, + 119, 27, 171, 203, 165, 214, 80, 215, 206, 46, 16, 50, 8, 238, 206, 61, 46, 166, 44, 62, 32, + 62, 254, 126, 189, 120, 190, 247, 20, 209, 162, 237, 216, 72, 10, 242, 200, 1, 112, 71, 12, 78, + 151, 68, 12, 130, 134, 252, 128, 218, 105, 171, 197, 171, 35, 15, 136, 7, 59, 237, 20, 143, 123, + 151, 139, 26, 158, 233, 162, 137, 103, 130, 48, 133, 14, 161, 229, 135, 184, 117, 179, 208, 127, 107, + 219, 52, 88, 187, 223, 212, 198, 117, 62, 156, 41, 92, 93, 115, 68, 75, 79, 122, 36, 135, 34, + 209, 35, 2, 133, 128, 9, 238, 144, 85, 95, 64, 135, 51, 128, 182, 34, 81, 11, 161, 66, 252, + 128, 100, 111, 90, 109, 204, 43, 142, 121, 199, 81, 58, 175, 42, 199, 27, 121, 126, 16, 46, 95, + 6, 157, 61, 165, 194, 40, 121, 207, 131, 74, 159, 148, 164, 244, 103, 228, 169, 79, 34, 66, 252, + 169, 142, 242, 74, 63, 15, 165, 198, 232, 217, 105, 219, 150, 194, 240, 229, 127, 135, 129, 110, 179, + 107, 200, 122, 241, 68, 143, 61, 226, 14, 223, 207, 74, 222, 241, 7, 188, 107, 69, 149, 215, 55, + 136, 166, 131, 150, 163, 114, 92, 180, 108, 147, 222, 13, 222, 219, 19, 172, 43, 56, 213, 14, 142, + 221, 72, 46, 63, 10, 130, 129, 83, 226, 151, 112, 28, 6, 78, 78, 129, 159, 215, 129, 45, 2, + 155, 2, 191, 231, 192, 113, 141, 2, 85, 114, 251, 247, 209, 223, 208, 246, 195, 231, 168, 140, 1, + 12, 238, 157, 182, 92, 12, 169, 151, 195, 168, 16, 175, 249, 65, 168, 56, 234, 134, 54, 185, 34, + 101, 228, 54, 81, 49, 95, 28, 245, 178, 180, 0, 250, 139, 124, 17, 67, 60, 161, 191, 131, 221, + 6, 78, 254, 149, 94, 187, 6, 126, 126, 16, 142, 229, 192, 240, 120, 21, 45, 156, 48, 91, 125, + 11, 8, 86, 99, 56, 86, 135, 99, 77, 226, 10, 220, 102, 231, 229, 112, 11, 84, 132, 54, 31, + 116, 160, 144, 68, 174, 217, 151, 185, 170, 90, 212, 146, 27, 34, 86, 220, 20, 137, 143, 31, 208, + 37, 143, 249, 1, 204, 15, 96, 126, 0, 243, 3, 152, 31, 192, 252, 0, 230, 7, 48, 63, 128, + 249, 1, 204, 15, 96, 126, 0, 243, 3, 152, 31, 64, 95, 192, 252, 0, 230, 7, 36, 49, 63, + 128, 11, 23, 46, 92, 184, 112, 225, 18, 243, 28, 205, 252, 0, 230, 7, 48, 63, 128, 249, 1, + 204, 15, 96, 126, 0, 243, 3, 152, 31, 192, 252, 0, 230, 7, 68, 127, 139, 139, 249, 1, 84, + 15, 230, 7, 80, 125, 152, 31, 64, 117, 99, 126, 0, 243, 3, 146, 152, 31, 32, 7, 129, 249, + 1, 204, 15, 96, 126, 0, 243, 3, 152, 31, 64, 126, 48, 63, 160, 216, 240, 3, 176, 36, 98, + 187, 188, 163, 248, 1, 228, 52, 202, 109, 43, 145, 234, 228, 94, 11, 2, 224, 44, 126, 0, 57, + 252, 80, 138, 91, 81, 156, 126, 12, 54, 31, 126, 62, 224, 242, 164, 97, 110, 242, 151, 44, 8, + 128, 189, 252, 0, 69, 84, 237, 246, 95, 238, 106, 149, 138, 50, 219, 90, 120, 166, 225, 231, 116, + 210, 14, 29, 146, 242, 145, 162, 160, 234, 13, 171, 166, 68, 187, 248, 1, 87, 80, 243, 238, 11, + 78, 79, 131, 99, 174, 70, 49, 170, 149, 222, 125, 98, 81, 0, 172, 231, 7, 72, 242, 249, 199, + 193, 94, 6, 27, 78, 73, 216, 67, 164, 114, 70, 169, 123, 201, 210, 44, 10, 128, 249, 252, 0, + 114, 24, 21, 228, 55, 128, 61, 1, 246, 60, 56, 247, 49, 24, 158, 105, 148, 207, 31, 149, 53, + 131, 58, 25, 168, 245, 108, 174, 85, 139, 34, 211, 249, 1, 212, 188, 235, 130, 253, 143, 242, 144, + 239, 215, 146, 33, 164, 220, 196, 145, 20, 227, 170, 109, 177, 40, 0, 241, 243, 3, 60, 48, 93, + 84, 249, 106, 158, 104, 222, 33, 163, 23, 38, 72, 167, 1, 172, 64, 250, 154, 239, 108, 64, 146, + 207, 43, 1, 208, 4, 33, 160, 163, 21, 150, 91, 198, 49, 139, 2, 80, 52, 126, 192, 140, 237, + 135, 196, 206, 220, 147, 74, 222, 241, 137, 115, 118, 139, 79, 71, 173, 19, 207, 189, 61, 77, 52, + 237, 60, 30, 165, 179, 168, 236, 60, 21, 162, 3, 118, 235, 136, 163, 221, 209, 169, 202, 117, 128, + 42, 255, 103, 103, 0, 58, 55, 28, 189, 78, 52, 120, 127, 167, 34, 151, 173, 236, 157, 47, 234, + 120, 166, 136, 102, 158, 113, 138, 102, 88, 163, 250, 142, 86, 45, 30, 86, 47, 172, 126, 166, 212, + 10, 238, 182, 173, 11, 52, 232, 149, 57, 166, 121, 183, 108, 225, 106, 61, 206, 56, 231, 120, 228, + 129, 44, 156, 56, 58, 16, 238, 51, 169, 53, 84, 79, 196, 32, 168, 203, 15, 104, 216, 125, 210, + 231, 77, 123, 77, 22, 201, 175, 77, 22, 245, 60, 217, 162, 174, 103, 178, 168, 239, 201, 202, 231, + 7, 120, 211, 180, 142, 96, 31, 15, 196, 12, 83, 48, 14, 214, 179, 182, 77, 131, 21, 135, 47, + 124, 180, 202, 232, 21, 194, 53, 116, 159, 184, 201, 183, 91, 220, 233, 219, 42, 238, 243, 173, 23, + 15, 122, 215, 8, 215, 123, 43, 69, 253, 15, 103, 9, 104, 37, 203, 192, 241, 52, 74, 186, 190, + 27, 17, 88, 56, 122, 211, 207, 39, 228, 49, 64, 106, 45, 17, 131, 33, 189, 183, 99, 162, 22, + 66, 133, 248, 1, 184, 28, 124, 130, 116, 195, 90, 197, 104, 253, 1, 112, 37, 56, 114, 181, 168, + 48, 98, 209, 50, 82, 127, 151, 33, 38, 216, 147, 224, 108, 10, 28, 219, 131, 97, 118, 249, 183, + 192, 62, 133, 32, 101, 40, 203, 93, 183, 178, 30, 56, 78, 171, 192, 92, 3, 182, 144, 12, 85, + 122, 223, 182, 165, 176, 122, 49, 228, 26, 189, 77, 145, 200, 106, 37, 179, 168, 30, 11, 119, 49, + 68, 153, 231, 47, 7, 187, 25, 2, 240, 15, 60, 66, 0, 174, 87, 224, 74, 110, 255, 191, 225, + 136, 83, 232, 167, 96, 131, 17, 149, 1, 54, 9, 28, 95, 5, 199, 195, 228, 60, 94, 16, 13, + 182, 237, 98, 72, 189, 28, 54, 228, 7, 140, 218, 46, 42, 142, 94, 94, 84, 156, 150, 222, 107, + 151, 130, 221, 1, 246, 48, 4, 0, 151, 206, 15, 211, 53, 195, 139, 96, 207, 217, 125, 57, 156, + 112, 126, 0, 45, 171, 207, 183, 104, 17, 196, 252, 0, 230, 7, 48, 63, 128, 249, 1, 204, 15, + 96, 126, 0, 243, 3, 152, 31, 192, 252, 0, 230, 7, 48, 63, 128, 249, 1, 204, 15, 48, 227, + 11, 152, 31, 192, 252, 128, 36, 230, 7, 112, 225, 194, 133, 11, 23, 46, 92, 98, 158, 163, 153, + 31, 192, 252, 0, 230, 7, 48, 63, 128, 249, 1, 204, 15, 96, 126, 0, 243, 3, 152, 31, 192, + 252, 128, 232, 111, 113, 49, 63, 128, 234, 193, 252, 0, 170, 15, 243, 3, 168, 110, 204, 15, 96, + 126, 64, 18, 243, 3, 228, 32, 48, 63, 128, 249, 1, 204, 15, 96, 126, 0, 243, 3, 200, 15, + 230, 7, 20, 55, 126, 192, 121, 22, 4, 193, 241, 252, 128, 243, 193, 110, 119, 121, 210, 80, 78, + 223, 213, 130, 0, 56, 142, 31, 112, 81, 138, 219, 95, 1, 142, 109, 193, 70, 194, 207, 155, 21, + 33, 102, 190, 206, 120, 155, 5, 1, 176, 143, 31, 64, 194, 170, 155, 193, 26, 80, 142, 210, 241, + 96, 219, 149, 188, 162, 110, 37, 113, 243, 105, 114, 92, 21, 79, 237, 182, 106, 74, 180, 156, 31, + 64, 178, 151, 139, 73, 255, 243, 47, 104, 210, 239, 81, 6, 250, 181, 96, 59, 72, 107, 124, 50, + 140, 186, 20, 117, 199, 7, 44, 10, 128, 249, 252, 0, 82, 136, 221, 0, 149, 174, 2, 78, 188, + 2, 246, 17, 252, 156, 13, 182, 20, 126, 70, 249, 252, 65, 58, 195, 33, 194, 106, 35, 233, 45, + 253, 237, 144, 69, 1, 136, 159, 31, 208, 105, 230, 38, 81, 105, 216, 66, 81, 175, 111, 118, 23, + 168, 168, 15, 108, 0, 216, 56, 176, 133, 196, 11, 56, 172, 43, 171, 117, 231, 139, 38, 53, 242, + 88, 173, 234, 92, 181, 163, 86, 45, 138, 162, 230, 7, 180, 152, 184, 78, 124, 179, 252, 160, 152, + 185, 250, 168, 152, 188, 36, 87, 140, 155, 185, 83, 140, 24, 191, 81, 188, 248, 209, 76, 209, 160, + 103, 166, 72, 246, 165, 173, 130, 74, 111, 135, 202, 255, 161, 57, 155, 129, 48, 249, 196, 3, 97, + 116, 195, 242, 235, 39, 45, 10, 64, 116, 226, 233, 167, 62, 153, 245, 101, 147, 207, 151, 138, 70, + 189, 87, 137, 10, 222, 69, 226, 233, 86, 51, 21, 253, 176, 162, 30, 167, 51, 229, 242, 24, 74, + 228, 141, 51, 205, 187, 35, 58, 174, 254, 126, 206, 162, 0, 68, 39, 159, 135, 51, 60, 179, 101, + 247, 108, 56, 203, 224, 176, 59, 246, 228, 234, 58, 114, 88, 57, 96, 65, 57, 189, 252, 154, 212, + 21, 202, 216, 22, 128, 90, 239, 77, 27, 222, 244, 163, 121, 162, 105, 247, 197, 162, 170, 119, 174, + 146, 121, 190, 190, 39, 27, 90, 192, 120, 67, 57, 125, 152, 86, 16, 189, 96, 218, 29, 242, 57, + 23, 219, 214, 5, 112, 32, 168, 55, 102, 189, 104, 252, 89, 174, 162, 30, 87, 115, 143, 63, 226, + 93, 37, 146, 251, 207, 23, 245, 222, 156, 44, 90, 180, 29, 139, 121, 196, 87, 131, 29, 9, 235, + 164, 212, 255, 117, 40, 17, 186, 227, 5, 5, 228, 242, 68, 12, 130, 186, 252, 0, 156, 10, 112, + 59, 188, 158, 108, 54, 229, 219, 157, 162, 234, 136, 37, 226, 153, 143, 102, 188, 77, 240, 148, 231, + 193, 112, 70, 248, 28, 167, 63, 68, 230, 16, 13, 42, 234, 46, 162, 219, 109, 90, 165, 94, 109, + 231, 52, 248, 128, 202, 15, 208, 6, 0, 95, 163, 237, 241, 3, 165, 197, 207, 229, 224, 244, 109, + 112, 124, 4, 201, 15, 96, 152, 68, 189, 35, 102, 159, 151, 200, 50, 127, 26, 141, 11, 26, 110, + 128, 250, 218, 117, 137, 90, 8, 21, 141, 31, 48, 48, 79, 212, 25, 179, 46, 236, 82, 152, 22, + 71, 87, 130, 221, 130, 96, 52, 176, 71, 169, 181, 96, 80, 134, 130, 45, 85, 23, 71, 18, 61, + 34, 160, 153, 38, 111, 178, 109, 41, 172, 94, 12, 197, 202, 15, 48, 8, 202, 133, 68, 152, 186, + 14, 156, 197, 235, 130, 219, 224, 88, 7, 175, 252, 224, 152, 10, 77, 126, 11, 216, 89, 194, 239, + 96, 107, 185, 205, 182, 139, 33, 245, 114, 216, 76, 126, 64, 152, 160, 32, 67, 224, 47, 96, 151, + 209, 5, 83, 125, 100, 142, 129, 93, 99, 247, 229, 176, 93, 252, 0, 171, 238, 10, 49, 63, 128, + 249, 1, 204, 15, 96, 126, 0, 243, 3, 152, 31, 192, 252, 0, 230, 7, 48, 63, 128, 249, 1, + 204, 15, 96, 126, 0, 243, 3, 204, 248, 2, 230, 7, 48, 63, 32, 137, 249, 1, 92, 184, 112, + 225, 194, 133, 11, 151, 152, 231, 104, 230, 7, 48, 63, 128, 249, 1, 204, 15, 96, 126, 0, 243, + 3, 152, 31, 192, 252, 0, 230, 7, 48, 63, 32, 250, 91, 92, 204, 15, 160, 122, 48, 63, 128, + 234, 195, 252, 0, 170, 27, 243, 3, 152, 31, 144, 196, 252, 0, 57, 8, 204, 15, 96, 126, 0, + 243, 3, 152, 31, 192, 252, 0, 242, 131, 249, 1, 197, 130, 31, 64, 74, 147, 50, 22, 5, 193, + 121, 252, 0, 18, 73, 220, 160, 168, 71, 242, 237, 46, 176, 167, 92, 158, 52, 76, 219, 89, 222, + 228, 0, 216, 203, 15, 32, 85, 72, 89, 112, 174, 42, 28, 155, 144, 218, 12, 217, 1, 168, 46, + 79, 7, 91, 71, 57, 73, 81, 47, 116, 14, 222, 247, 111, 147, 3, 96, 29, 63, 128, 232, 15, + 23, 169, 217, 34, 233, 119, 116, 22, 29, 237, 12, 54, 16, 236, 59, 248, 125, 92, 138, 219, 63, + 203, 213, 42, 117, 131, 228, 172, 145, 53, 183, 98, 74, 140, 155, 31, 240, 13, 188, 86, 123, 204, + 114, 204, 63, 62, 2, 42, 121, 31, 216, 3, 224, 24, 230, 9, 125, 1, 156, 123, 31, 142, 83, + 40, 5, 239, 14, 120, 29, 33, 9, 123, 41, 3, 253, 185, 40, 51, 83, 171, 86, 195, 130, 0, + 68, 207, 15, 168, 157, 182, 90, 244, 157, 114, 64, 12, 206, 249, 77, 140, 154, 190, 79, 164, 229, + 236, 16, 19, 114, 182, 138, 215, 70, 44, 22, 245, 250, 231, 136, 166, 157, 198, 207, 135, 74, 206, + 2, 219, 7, 118, 86, 114, 224, 156, 44, 127, 211, 72, 233, 3, 145, 212, 165, 146, 112, 242, 9, + 11, 2, 16, 157, 112, 178, 94, 223, 236, 17, 77, 223, 153, 33, 90, 188, 62, 75, 209, 13, 215, + 246, 76, 13, 102, 158, 118, 121, 98, 16, 83, 199, 102, 101, 173, 88, 20, 69, 197, 15, 104, 208, + 51, 115, 114, 243, 238, 217, 194, 229, 203, 144, 100, 242, 178, 234, 179, 104, 234, 113, 131, 22, 16, + 73, 84, 109, 133, 114, 52, 58, 241, 116, 165, 161, 11, 250, 55, 30, 186, 74, 52, 120, 123, 147, + 120, 220, 187, 92, 84, 243, 204, 38, 126, 192, 120, 45, 253, 33, 16, 166, 25, 7, 162, 76, 208, + 94, 184, 249, 123, 210, 80, 104, 125, 137, 5, 1, 136, 78, 62, 143, 255, 52, 26, 243, 147, 168, + 243, 81, 174, 184, 209, 183, 71, 220, 238, 219, 38, 238, 245, 110, 20, 149, 218, 254, 40, 90, 190, + 57, 67, 52, 122, 227, 7, 145, 236, 73, 253, 153, 248, 32, 103, 11, 57, 225, 46, 72, 166, 174, + 4, 75, 254, 93, 51, 38, 232, 4, 41, 96, 33, 65, 34, 234, 0, 116, 110, 144, 186, 65, 212, + 31, 16, 186, 37, 254, 150, 14, 185, 162, 197, 200, 45, 162, 242, 224, 249, 162, 241, 235, 19, 187, + 128, 115, 31, 66, 101, 231, 128, 99, 152, 112, 253, 152, 44, 144, 86, 206, 98, 254, 153, 212, 6, + 198, 168, 249, 203, 175, 89, 69, 145, 41, 58, 63, 160, 144, 82, 108, 244, 54, 85, 19, 80, 157, + 230, 124, 148, 191, 222, 3, 134, 57, 197, 135, 128, 109, 208, 155, 218, 66, 2, 33, 113, 2, 180, + 8, 13, 178, 45, 86, 93, 25, 198, 205, 15, 120, 246, 187, 93, 170, 46, 64, 119, 25, 12, 142, + 254, 5, 12, 215, 7, 30, 176, 225, 96, 63, 130, 253, 30, 12, 128, 59, 108, 198, 121, 53, 24, + 203, 45, 10, 128, 53, 252, 0, 205, 146, 55, 9, 156, 44, 67, 217, 231, 81, 62, 255, 36, 88, + 50, 216, 155, 96, 99, 193, 86, 17, 76, 169, 128, 40, 81, 56, 40, 51, 44, 10, 64, 98, 248, + 1, 58, 65, 193, 165, 241, 53, 68, 151, 106, 14, 14, 247, 130, 35, 74, 230, 23, 17, 82, 235, + 119, 101, 1, 85, 16, 136, 113, 86, 221, 29, 178, 141, 31, 160, 19, 148, 43, 168, 117, 188, 10, + 54, 24, 108, 5, 65, 152, 112, 37, 57, 194, 2, 231, 157, 199, 15, 208, 4, 4, 57, 2, 15, + 210, 216, 209, 212, 138, 254, 239, 120, 126, 128, 220, 101, 172, 190, 33, 194, 252, 0, 230, 7, 48, + 63, 128, 249, 1, 204, 15, 96, 126, 0, 243, 3, 152, 31, 80, 148, 15, 102, 126, 0, 243, 3, + 146, 152, 31, 192, 252, 0, 250, 2, 230, 7, 48, 63, 32, 137, 249, 1, 234, 151, 48, 63, 128, + 11, 23, 46, 92, 184, 112, 225, 18, 203, 28, 205, 252, 0, 230, 7, 48, 63, 128, 249, 1, 204, + 15, 96, 126, 0, 243, 3, 152, 31, 192, 252, 0, 230, 7, 68, 127, 139, 139, 249, 1, 84, 15, + 230, 7, 80, 125, 152, 31, 64, 117, 99, 126, 0, 243, 3, 146, 152, 31, 32, 7, 129, 249, 1, + 204, 15, 96, 126, 0, 243, 3, 152, 31, 64, 126, 48, 63, 160, 88, 240, 3, 176, 40, 234, 18, + 183, 223, 138, 32, 36, 142, 31, 160, 151, 55, 144, 224, 8, 151, 147, 116, 230, 114, 233, 181, 187, + 193, 170, 130, 211, 53, 225, 88, 5, 172, 2, 10, 38, 92, 173, 82, 95, 55, 83, 55, 96, 26, + 63, 96, 231, 145, 19, 226, 249, 172, 181, 162, 220, 200, 37, 65, 201, 140, 146, 109, 62, 63, 141, + 38, 42, 62, 30, 134, 202, 223, 73, 96, 132, 103, 224, 245, 255, 194, 177, 147, 203, 147, 214, 69, + 145, 210, 187, 253, 152, 173, 246, 91, 176, 249, 240, 190, 149, 168, 59, 132, 227, 28, 18, 83, 253, + 74, 114, 58, 212, 31, 174, 55, 185, 5, 68, 47, 153, 105, 218, 105, 252, 141, 21, 70, 44, 18, + 47, 167, 110, 23, 175, 125, 151, 39, 62, 206, 216, 35, 190, 207, 222, 46, 166, 206, 253, 69, 12, + 153, 178, 65, 52, 251, 106, 158, 168, 245, 222, 180, 109, 80, 201, 143, 81, 252, 4, 150, 65, 71, + 76, 194, 62, 23, 108, 15, 137, 159, 114, 81, 70, 79, 10, 243, 63, 100, 129, 100, 48, 53, 175, + 219, 80, 83, 60, 215, 138, 41, 49, 42, 209, 84, 227, 174, 19, 187, 52, 234, 153, 45, 92, 237, + 39, 42, 138, 241, 134, 158, 73, 138, 122, 188, 81, 171, 9, 34, 197, 151, 46, 203, 219, 206, 144, + 99, 231, 162, 209, 4, 23, 49, 35, 181, 21, 194, 169, 232, 248, 1, 117, 223, 154, 220, 183, 241, + 219, 211, 132, 171, 221, 68, 145, 28, 65, 0, 13, 205, 183, 64, 35, 92, 20, 231, 221, 17, 133, + 212, 189, 44, 8, 64, 212, 194, 201, 160, 116, 182, 172, 111, 179, 40, 239, 93, 172, 48, 4, 180, + 252, 0, 146, 190, 70, 206, 41, 94, 68, 163, 96, 62, 103, 197, 162, 40, 42, 126, 128, 44, 158, + 190, 222, 183, 95, 220, 236, 219, 165, 4, 162, 92, 155, 31, 69, 114, 207, 169, 162, 121, 251, 12, + 145, 220, 42, 245, 180, 70, 238, 26, 142, 17, 16, 40, 170, 132, 222, 108, 138, 12, 5, 32, 106, + 241, 116, 190, 124, 254, 227, 208, 13, 209, 119, 118, 202, 19, 205, 71, 110, 18, 85, 7, 205, 19, + 45, 218, 141, 253, 0, 42, 57, 91, 74, 190, 30, 208, 61, 235, 249, 163, 122, 160, 8, 236, 16, + 213, 254, 102, 65, 0, 138, 206, 15, 80, 55, 67, 163, 221, 213, 41, 87, 52, 31, 179, 85, 29, + 45, 113, 218, 251, 43, 88, 53, 236, 175, 96, 153, 4, 79, 57, 97, 208, 191, 3, 58, 57, 198, + 3, 58, 77, 31, 237, 55, 139, 86, 132, 38, 240, 3, 198, 252, 172, 6, 224, 222, 224, 202, 205, + 227, 191, 22, 172, 34, 114, 129, 20, 84, 14, 206, 231, 250, 221, 35, 100, 0, 212, 140, 33, 242, + 123, 127, 180, 40, 0, 230, 243, 3, 116, 86, 129, 231, 145, 106, 252, 191, 224, 232, 40, 56, 110, + 70, 34, 68, 4, 106, 140, 54, 88, 105, 86, 93, 25, 90, 206, 15, 144, 2, 129, 96, 165, 91, + 193, 106, 131, 245, 14, 233, 34, 30, 205, 180, 233, 46, 52, 54, 188, 103, 81, 0, 172, 231, 7, + 24, 4, 3, 153, 97, 247, 131, 211, 47, 210, 50, 248, 80, 132, 217, 224, 85, 139, 2, 96, 15, + 63, 64, 39, 32, 151, 224, 5, 15, 216, 231, 96, 139, 9, 198, 114, 78, 26, 12, 159, 177, 234, + 238, 144, 147, 248, 1, 151, 194, 0, 120, 7, 28, 235, 17, 93, 98, 6, 97, 183, 112, 44, 184, + 205, 2, 231, 157, 203, 15, 160, 203, 231, 107, 160, 239, 215, 129, 99, 127, 171, 250, 127, 177, 224, + 7, 224, 44, 98, 81, 0, 152, 31, 192, 252, 0, 230, 7, 48, 63, 128, 249, 1, 204, 15, 96, + 126, 0, 243, 3, 152, 31, 192, 252, 0, 230, 7, 48, 63, 128, 249, 1, 102, 124, 1, 243, 3, + 152, 31, 144, 196, 252, 0, 46, 92, 184, 112, 225, 194, 133, 75, 204, 115, 52, 243, 3, 152, 31, + 192, 252, 0, 230, 7, 48, 63, 128, 249, 1, 204, 15, 96, 126, 0, 243, 3, 152, 31, 16, 253, + 45, 46, 230, 7, 80, 61, 152, 31, 64, 245, 97, 126, 0, 213, 141, 249, 1, 204, 15, 72, 98, + 126, 128, 28, 4, 230, 7, 48, 63, 128, 249, 1, 204, 15, 96, 126, 0, 249, 193, 252, 128, 152, + 248, 1, 181, 199, 234, 243, 3, 38, 108, 57, 80, 136, 31, 144, 226, 241, 151, 145, 191, 148, 52, + 0, 231, 105, 94, 43, 163, 173, 156, 206, 255, 59, 47, 17, 233, 246, 194, 242, 3, 48, 27, 100, + 205, 247, 114, 166, 52, 251, 108, 169, 120, 118, 192, 47, 162, 253, 208, 189, 226, 243, 140, 237, 98, + 242, 156, 237, 98, 57, 52, 163, 206, 147, 214, 138, 167, 190, 158, 47, 234, 188, 61, 101, 16, 188, + 55, 5, 19, 165, 131, 61, 226, 242, 164, 213, 78, 113, 251, 159, 195, 28, 163, 240, 51, 178, 0, + 30, 7, 107, 70, 25, 105, 155, 131, 85, 86, 88, 1, 30, 229, 61, 168, 31, 106, 168, 240, 2, + 220, 202, 241, 63, 244, 90, 61, 226, 8, 224, 231, 86, 48, 49, 0, 209, 11, 38, 48, 171, 124, + 189, 62, 217, 121, 174, 206, 153, 34, 217, 51, 86, 17, 80, 55, 242, 252, 160, 168, 200, 93, 109, + 198, 43, 42, 175, 150, 109, 210, 81, 71, 188, 21, 28, 221, 34, 169, 71, 247, 193, 223, 54, 145, + 100, 94, 205, 65, 188, 19, 94, 219, 66, 82, 250, 179, 240, 126, 84, 141, 161, 244, 254, 23, 85, + 65, 70, 34, 170, 95, 72, 118, 255, 7, 41, 199, 246, 187, 90, 165, 254, 203, 196, 0, 68, 47, + 153, 105, 220, 117, 226, 53, 85, 190, 152, 43, 82, 222, 94, 32, 26, 122, 51, 195, 10, 161, 181, + 175, 23, 146, 195, 185, 11, 114, 12, 27, 42, 199, 141, 149, 166, 21, 204, 158, 18, 163, 18, 77, + 201, 178, 185, 155, 124, 187, 197, 131, 222, 53, 226, 41, 239, 44, 209, 216, 51, 81, 184, 188, 105, + 198, 9, 216, 221, 209, 73, 228, 13, 181, 196, 161, 1, 61, 171, 55, 102, 196, 25, 128, 232, 248, + 1, 90, 225, 228, 13, 190, 125, 226, 31, 190, 95, 196, 35, 222, 149, 34, 229, 141, 169, 34, 217, + 151, 22, 57, 3, 125, 248, 204, 244, 1, 35, 231, 165, 0, 44, 180, 96, 32, 44, 58, 63, 160, + 144, 72, 98, 228, 207, 162, 42, 116, 143, 102, 29, 199, 161, 70, 120, 37, 245, 227, 112, 234, 112, + 17, 131, 116, 30, 109, 160, 21, 139, 162, 34, 243, 3, 140, 196, 211, 53, 62, 152, 142, 170, 241, + 70, 96, 131, 224, 172, 253, 92, 20, 199, 229, 113, 35, 12, 100, 193, 10, 128, 130, 9, 252, 0, + 73, 62, 79, 51, 6, 170, 64, 31, 2, 123, 3, 108, 38, 41, 199, 11, 247, 121, 55, 201, 231, + 181, 168, 13, 183, 190, 148, 30, 236, 78, 11, 2, 96, 46, 63, 64, 179, 128, 249, 11, 101, 146, + 198, 64, 204, 147, 166, 184, 136, 77, 95, 233, 251, 200, 34, 41, 8, 194, 62, 139, 86, 132, 230, + 243, 3, 116, 86, 118, 184, 146, 187, 141, 22, 63, 233, 202, 58, 32, 159, 54, 83, 208, 53, 220, + 97, 103, 5, 252, 121, 162, 69, 1, 176, 158, 31, 160, 9, 198, 237, 180, 234, 27, 69, 139, 163, + 104, 73, 51, 61, 172, 186, 50, 76, 24, 63, 64, 190, 38, 128, 51, 124, 13, 52, 241, 186, 164, + 22, 95, 167, 81, 138, 235, 5, 165, 166, 69, 1, 176, 135, 31, 32, 5, 227, 10, 98, 142, 244, + 7, 91, 42, 209, 165, 130, 179, 1, 29, 255, 207, 162, 0, 56, 134, 31, 128, 64, 133, 114, 96, + 61, 145, 41, 134, 215, 18, 210, 116, 184, 214, 202, 187, 67, 142, 225, 7, 72, 193, 40, 11, 230, + 129, 174, 48, 145, 248, 1, 195, 44, 114, 222, 209, 252, 128, 139, 193, 238, 1, 123, 25, 90, 66, + 69, 171, 250, 127, 113, 225, 7, 148, 177, 40, 0, 204, 15, 96, 126, 0, 243, 3, 152, 31, 192, + 252, 0, 230, 7, 48, 63, 128, 249, 1, 204, 15, 96, 126, 0, 243, 3, 152, 31, 192, 252, 0, + 51, 190, 128, 249, 1, 204, 15, 72, 98, 126, 0, 23, 46, 92, 184, 112, 225, 194, 37, 230, 57, + 154, 249, 1, 204, 15, 96, 126, 0, 243, 3, 152, 31, 192, 252, 0, 230, 7, 48, 63, 128, 249, + 1, 204, 15, 136, 254, 22, 23, 243, 3, 168, 30, 204, 15, 160, 250, 48, 63, 128, 234, 198, 252, + 0, 230, 7, 36, 49, 63, 64, 14, 2, 243, 3, 152, 31, 192, 252, 0, 230, 7, 196, 190, 81, + 18, 51, 70, 226, 130, 225, 63, 217, 27, 197, 143, 251, 143, 20, 138, 94, 137, 231, 7, 52, 111, + 159, 209, 180, 118, 191, 169, 34, 229, 221, 197, 162, 126, 239, 141, 162, 219, 240, 29, 98, 204, 212, + 109, 98, 229, 218, 189, 98, 237, 142, 131, 226, 197, 31, 86, 139, 202, 67, 22, 136, 154, 239, 231, + 52, 163, 128, 161, 88, 234, 255, 80, 61, 38, 5, 241, 60, 135, 4, 160, 232, 155, 165, 235, 247, + 202, 250, 162, 41, 230, 31, 111, 59, 65, 81, 143, 183, 244, 164, 43, 234, 241, 230, 109, 50, 197, + 115, 109, 51, 68, 203, 78, 227, 69, 227, 46, 19, 243, 192, 201, 177, 46, 79, 26, 234, 5, 71, + 166, 184, 149, 196, 137, 93, 225, 216, 23, 142, 237, 72, 86, 143, 18, 153, 198, 240, 90, 117, 120, + 31, 166, 233, 189, 214, 213, 42, 245, 94, 176, 91, 164, 64, 97, 224, 46, 146, 126, 47, 99, 65, + 16, 162, 231, 7, 208, 127, 248, 188, 233, 208, 85, 162, 97, 247, 101, 162, 129, 59, 51, 146, 246, + 239, 44, 56, 40, 39, 96, 255, 149, 36, 245, 170, 52, 126, 53, 252, 125, 45, 4, 0, 83, 107, + 46, 131, 159, 211, 40, 91, 125, 22, 216, 80, 210, 26, 118, 2, 235, 14, 129, 121, 133, 248, 1, + 85, 137, 37, 112, 185, 73, 1, 40, 178, 96, 66, 145, 204, 60, 214, 243, 128, 34, 156, 46, 231, + 93, 34, 234, 182, 202, 82, 120, 2, 90, 181, 151, 129, 242, 75, 86, 135, 6, 244, 84, 227, 174, + 252, 244, 221, 234, 239, 127, 194, 251, 14, 192, 241, 48, 189, 23, 89, 2, 11, 204, 234, 70, 69, + 146, 204, 232, 137, 166, 80, 70, 127, 159, 111, 189, 104, 222, 101, 102, 36, 241, 115, 32, 37, 86, + 101, 121, 225, 192, 141, 55, 123, 74, 44, 50, 63, 160, 208, 22, 249, 193, 123, 69, 237, 65, 139, + 68, 227, 55, 38, 174, 135, 74, 110, 37, 157, 127, 100, 49, 164, 91, 55, 201, 114, 32, 130, 154, + 252, 85, 147, 3, 16, 27, 63, 160, 144, 112, 114, 228, 114, 241, 244, 128, 153, 125, 149, 1, 47, + 63, 153, 242, 185, 40, 212, 224, 133, 178, 78, 71, 124, 175, 199, 127, 147, 201, 1, 48, 129, 31, + 160, 145, 206, 66, 63, 70, 245, 184, 15, 156, 193, 180, 185, 191, 235, 158, 105, 119, 76, 93, 96, + 145, 21, 139, 34, 211, 248, 1, 82, 242, 245, 252, 148, 185, 30, 127, 45, 100, 9, 40, 26, 225, + 24, 28, 214, 105, 13, 189, 45, 8, 128, 249, 252, 0, 109, 33, 84, 206, 87, 97, 196, 210, 225, + 29, 47, 8, 222, 19, 22, 4, 192, 58, 126, 128, 188, 250, 3, 187, 25, 236, 89, 232, 30, 99, + 73, 13, 122, 14, 167, 74, 205, 116, 25, 208, 58, 173, 4, 35, 255, 231, 237, 22, 173, 8, 173, + 231, 7, 104, 130, 241, 15, 176, 182, 148, 95, 60, 234, 41, 18, 2, 49, 200, 162, 0, 36, 150, + 31, 64, 65, 56, 95, 9, 132, 91, 89, 26, 207, 4, 231, 14, 69, 17, 132, 70, 86, 93, 25, + 38, 156, 31, 32, 5, 226, 74, 26, 40, 135, 210, 76, 17, 8, 153, 10, 11, 250, 254, 41, 176, + 11, 44, 10, 128, 189, 252, 0, 181, 128, 211, 247, 129, 147, 31, 163, 84, 158, 28, 150, 207, 254, + 4, 11, 175, 10, 29, 195, 15, 184, 0, 206, 248, 221, 112, 108, 133, 243, 189, 38, 8, 173, 172, + 188, 59, 228, 68, 126, 192, 121, 68, 142, 155, 72, 87, 145, 183, 88, 228, 188, 51, 249, 1, 180, + 144, 186, 28, 172, 34, 216, 75, 22, 158, 253, 226, 193, 15, 176, 48, 0, 204, 15, 96, 126, 0, + 243, 3, 152, 31, 192, 252, 0, 230, 7, 48, 63, 128, 249, 1, 204, 15, 96, 126, 0, 243, 3, + 152, 31, 192, 252, 0, 51, 190, 128, 249, 1, 204, 15, 72, 98, 126, 0, 23, 46, 92, 184, 112, + 225, 194, 37, 230, 57, 154, 249, 1, 204, 15, 96, 126, 0, 243, 3, 152, 31, 192, 252, 0, 230, + 7, 48, 63, 128, 249, 1, 204, 15, 136, 254, 22, 23, 243, 3, 168, 30, 204, 15, 160, 250, 48, + 63, 128, 234, 198, 252, 0, 230, 7, 36, 49, 63, 64, 14, 2, 243, 3, 152, 31, 16, 47, 63, + 0, 165, 47, 229, 191, 93, 188, 163, 221, 180, 173, 98, 51, 244, 27, 237, 148, 87, 226, 249, 1, + 13, 123, 76, 26, 218, 184, 103, 150, 72, 238, 57, 87, 52, 236, 185, 86, 188, 159, 186, 93, 44, + 89, 185, 91, 236, 218, 115, 88, 108, 255, 237, 132, 120, 246, 135, 213, 162, 220, 247, 75, 130, 27, + 37, 113, 227, 179, 3, 3, 16, 51, 63, 224, 178, 154, 255, 203, 89, 150, 252, 6, 4, 192, 59, + 86, 73, 180, 220, 220, 147, 33, 26, 250, 178, 197, 139, 157, 179, 197, 43, 189, 179, 69, 131, 126, + 83, 49, 1, 251, 10, 120, 111, 123, 176, 250, 164, 10, 185, 35, 197, 237, 191, 85, 13, 136, 19, + 36, 244, 49, 241, 3, 212, 205, 210, 41, 67, 183, 137, 170, 237, 150, 41, 201, 215, 101, 117, 151, + 162, 2, 43, 200, 20, 189, 139, 146, 171, 163, 58, 124, 18, 216, 16, 176, 193, 240, 158, 206, 164, + 4, 71, 9, 125, 121, 74, 180, 120, 190, 204, 24, 72, 80, 0, 138, 190, 89, 90, 222, 46, 127, + 163, 111, 143, 184, 199, 247, 147, 168, 238, 157, 45, 154, 120, 38, 4, 211, 110, 187, 244, 51, 200, + 170, 63, 31, 83, 179, 205, 194, 107, 40, 141, 65, 101, 233, 114, 176, 17, 196, 22, 248, 175, 34, + 148, 112, 251, 239, 165, 220, 197, 183, 200, 82, 121, 179, 187, 83, 76, 252, 0, 173, 96, 2, 101, + 244, 149, 188, 11, 69, 138, 55, 205, 56, 225, 186, 129, 144, 154, 116, 131, 231, 20, 153, 124, 1, + 99, 96, 19, 29, 151, 146, 216, 242, 67, 48, 212, 36, 55, 81, 186, 82, 126, 30, 227, 219, 76, + 10, 64, 108, 252, 128, 66, 146, 153, 158, 185, 162, 201, 208, 85, 162, 126, 159, 44, 108, 1, 121, + 49, 38, 95, 87, 91, 138, 86, 60, 121, 142, 186, 17, 38, 99, 205, 131, 215, 114, 224, 248, 47, + 147, 2, 16, 31, 63, 32, 68, 52, 53, 106, 141, 168, 58, 104, 238, 26, 168, 220, 59, 224, 200, + 6, 56, 158, 142, 50, 159, 112, 65, 139, 208, 87, 142, 235, 165, 224, 46, 111, 230, 148, 24, 63, + 63, 96, 232, 254, 16, 217, 28, 105, 1, 39, 132, 147, 201, 199, 161, 32, 95, 106, 242, 56, 96, + 18, 63, 64, 18, 78, 146, 234, 235, 38, 176, 214, 148, 115, 252, 184, 70, 66, 95, 120, 144, 116, + 71, 37, 159, 197, 255, 219, 206, 228, 0, 152, 207, 15, 144, 70, 109, 36, 196, 36, 131, 205, 82, + 207, 120, 136, 88, 218, 109, 56, 96, 6, 194, 72, 232, 175, 54, 123, 81, 100, 58, 63, 64, 103, + 249, 92, 6, 243, 8, 131, 45, 145, 154, 126, 64, 146, 203, 70, 215, 29, 220, 254, 145, 22, 172, + 7, 18, 194, 15, 64, 170, 196, 223, 136, 29, 132, 168, 156, 125, 210, 212, 167, 183, 102, 8, 24, + 4, 164, 142, 5, 1, 176, 158, 31, 160, 9, 198, 173, 152, 73, 30, 28, 220, 27, 118, 128, 44, + 108, 155, 45, 90, 17, 38, 150, 31, 64, 65, 184, 8, 236, 65, 176, 47, 225, 140, 255, 98, 16, + 8, 203, 241, 25, 69, 237, 2, 166, 241, 3, 164, 153, 226, 33, 176, 55, 193, 233, 61, 58, 11, + 34, 109, 64, 254, 97, 213, 149, 161, 109, 252, 0, 41, 24, 40, 157, 31, 6, 246, 155, 78, 23, + 192, 223, 51, 45, 188, 40, 178, 159, 31, 64, 179, 68, 89, 186, 132, 158, 143, 23, 77, 154, 233, + 239, 89, 11, 3, 224, 12, 126, 0, 5, 2, 47, 139, 235, 210, 42, 82, 37, 73, 228, 89, 125, + 119, 200, 137, 252, 128, 43, 192, 158, 7, 155, 14, 246, 158, 133, 206, 59, 147, 31, 32, 173, 34, + 27, 131, 221, 104, 101, 255, 103, 126, 0, 243, 3, 152, 31, 192, 252, 0, 230, 7, 48, 63, 128, + 249, 1, 204, 15, 96, 126, 0, 243, 3, 152, 31, 192, 252, 128, 120, 190, 128, 249, 1, 204, 15, + 72, 98, 126, 128, 220, 18, 152, 31, 192, 252, 0, 46, 92, 184, 112, 225, 194, 133, 75, 12, 115, + 52, 243, 3, 152, 31, 192, 252, 0, 230, 7, 48, 63, 128, 249, 1, 204, 15, 96, 126, 0, 243, + 3, 152, 31, 16, 253, 45, 46, 230, 7, 80, 61, 152, 31, 64, 245, 97, 126, 0, 213, 141, 249, + 1, 204, 15, 72, 98, 126, 128, 28, 4, 115, 248, 1, 45, 219, 164, 63, 89, 121, 240, 252, 95, + 219, 78, 205, 87, 144, 151, 42, 126, 64, 138, 199, 127, 113, 131, 158, 153, 147, 155, 244, 200, 18, + 45, 187, 206, 20, 45, 223, 92, 35, 190, 155, 178, 91, 252, 132, 81, 133, 254, 149, 123, 252, 164, + 104, 63, 99, 83, 137, 230, 7, 156, 95, 253, 211, 217, 7, 92, 221, 166, 40, 185, 199, 113, 59, + 123, 99, 247, 68, 145, 210, 57, 71, 116, 233, 63, 83, 244, 254, 102, 177, 120, 102, 240, 124, 81, + 237, 243, 57, 235, 212, 36, 105, 86, 228, 13, 143, 51, 8, 177, 111, 147, 11, 110, 148, 252, 122, + 159, 168, 216, 122, 169, 104, 234, 25, 31, 76, 181, 157, 220, 42, 127, 127, 127, 178, 39, 85, 64, + 55, 89, 77, 170, 241, 47, 48, 91, 100, 138, 91, 209, 252, 62, 64, 1, 177, 85, 66, 31, 215, + 70, 73, 121, 171, 44, 166, 222, 126, 208, 187, 70, 212, 246, 76, 13, 182, 6, 29, 201, 203, 73, + 82, 129, 173, 130, 227, 56, 176, 239, 41, 167, 96, 89, 120, 237, 81, 85, 7, 152, 232, 128, 196, + 197, 15, 144, 55, 75, 223, 224, 219, 39, 238, 247, 173, 19, 141, 91, 103, 7, 69, 145, 46, 61, + 189, 112, 129, 114, 244, 4, 29, 115, 169, 133, 140, 65, 117, 56, 4, 173, 2, 182, 16, 89, 27, + 100, 37, 125, 34, 110, 126, 64, 161, 237, 242, 159, 237, 21, 141, 222, 201, 17, 201, 173, 211, 206, + 162, 179, 6, 194, 39, 61, 97, 244, 25, 69, 90, 155, 223, 114, 230, 192, 241, 27, 176, 129, 96, + 77, 21, 126, 128, 219, 127, 15, 170, 204, 172, 8, 136, 41, 252, 128, 160, 96, 98, 228, 54, 81, + 117, 216, 34, 1, 51, 132, 31, 28, 89, 174, 168, 199, 221, 133, 20, 224, 145, 164, 177, 170, 96, + 242, 136, 170, 21, 4, 27, 9, 239, 65, 121, 93, 27, 248, 249, 78, 178, 235, 77, 10, 128, 73, + 252, 0, 73, 50, 83, 227, 253, 233, 152, 96, 249, 101, 176, 157, 133, 84, 161, 161, 73, 150, 11, + 126, 119, 135, 145, 217, 187, 149, 32, 161, 248, 250, 48, 177, 4, 48, 13, 231, 39, 102, 4, 193, + 92, 126, 128, 70, 52, 133, 208, 20, 100, 134, 128, 29, 13, 155, 81, 222, 29, 150, 41, 96, 196, + 21, 152, 108, 230, 148, 104, 58, 63, 128, 250, 235, 5, 96, 143, 64, 229, 223, 131, 227, 79, 202, + 217, 115, 27, 182, 8, 189, 92, 195, 129, 66, 1, 42, 248, 91, 93, 19, 3, 96, 62, 63, 32, + 100, 225, 228, 246, 95, 13, 21, 238, 8, 118, 82, 231, 140, 7, 34, 81, 37, 116, 198, 139, 57, + 38, 15, 132, 214, 241, 3, 164, 214, 112, 30, 156, 109, 212, 10, 163, 114, 252, 15, 109, 147, 214, + 142, 13, 17, 172, 185, 217, 139, 34, 203, 249, 1, 20, 132, 75, 136, 29, 52, 28, 108, 79, 136, + 124, 222, 45, 49, 5, 244, 90, 66, 193, 223, 150, 89, 176, 30, 176, 158, 31, 160, 9, 196, 117, + 40, 152, 134, 86, 112, 38, 194, 153, 214, 11, 198, 11, 22, 4, 32, 177, 252, 0, 181, 53, 64, + 179, 175, 1, 199, 44, 8, 196, 233, 176, 179, 68, 129, 173, 183, 104, 69, 152, 120, 126, 0, 5, + 1, 229, 177, 13, 105, 57, 124, 88, 62, 243, 242, 236, 32, 29, 91, 89, 20, 0, 123, 248, 1, + 106, 1, 103, 111, 161, 133, 141, 238, 204, 64, 173, 99, 155, 149, 87, 134, 78, 224, 7, 96, 158, + 241, 231, 112, 138, 35, 180, 150, 182, 249, 119, 180, 48, 0, 246, 243, 3, 40, 8, 215, 40, 138, + 113, 183, 127, 145, 116, 197, 136, 118, 192, 202, 27, 42, 142, 226, 7, 208, 194, 233, 46, 162, 73, + 168, 1, 232, 97, 245, 221, 33, 71, 241, 3, 136, 38, 113, 35, 209, 36, 230, 200, 56, 61, 11, + 156, 119, 52, 63, 224, 239, 8, 89, 177, 248, 236, 51, 63, 128, 249, 1, 204, 15, 96, 126, 0, + 243, 3, 152, 31, 192, 252, 0, 230, 7, 48, 63, 128, 249, 1, 204, 15, 96, 126, 0, 243, 3, + 226, 253, 2, 230, 7, 48, 63, 32, 137, 249, 1, 234, 151, 48, 63, 128, 11, 23, 46, 92, 184, + 112, 225, 18, 203, 28, 205, 252, 0, 230, 7, 48, 63, 128, 249, 1, 204, 15, 96, 126, 0, 243, + 3, 152, 31, 192, 252, 0, 230, 7, 68, 127, 139, 139, 249, 1, 84, 15, 230, 7, 80, 125, 152, + 31, 64, 117, 99, 126, 128, 101, 252, 128, 20, 143, 255, 137, 234, 159, 206, 222, 144, 50, 113, 67, + 233, 227, 7, 128, 243, 23, 54, 232, 153, 57, 177, 81, 207, 44, 225, 122, 61, 71, 252, 187, 255, + 58, 49, 99, 217, 1, 177, 119, 255, 239, 165, 131, 31, 128, 87, 88, 149, 191, 158, 127, 208, 213, + 123, 186, 146, 131, 28, 37, 45, 245, 61, 217, 162, 245, 59, 243, 69, 234, 196, 53, 34, 103, 205, + 30, 81, 23, 230, 230, 242, 223, 45, 41, 153, 91, 100, 228, 77, 82, 21, 124, 75, 66, 133, 211, + 190, 12, 69, 4, 213, 160, 87, 166, 168, 215, 39, 27, 83, 107, 187, 48, 175, 56, 37, 89, 44, + 227, 128, 32, 196, 199, 15, 160, 15, 81, 182, 201, 149, 235, 155, 43, 110, 241, 237, 20, 143, 121, + 127, 20, 13, 220, 153, 122, 234, 113, 220, 246, 190, 1, 2, 178, 17, 142, 61, 225, 245, 154, 112, + 124, 156, 186, 145, 157, 65, 48, 129, 31, 32, 109, 148, 188, 217, 7, 35, 189, 119, 169, 104, 238, + 27, 31, 84, 143, 187, 66, 19, 169, 158, 35, 189, 224, 54, 69, 39, 212, 42, 117, 56, 252, 94, + 15, 149, 226, 86, 38, 83, 139, 48, 30, 196, 207, 15, 40, 180, 85, 246, 131, 85, 162, 69, 135, + 140, 80, 231, 245, 53, 129, 199, 73, 10, 55, 27, 142, 31, 82, 230, 249, 127, 144, 114, 228, 146, + 4, 5, 193, 28, 126, 64, 193, 102, 233, 60, 209, 100, 228, 6, 68, 103, 136, 22, 173, 211, 150, + 232, 165, 213, 45, 164, 14, 43, 144, 194, 238, 130, 159, 49, 193, 250, 32, 146, 206, 96, 234, 238, + 11, 172, 236, 42, 230, 243, 3, 104, 187, 124, 185, 239, 150, 204, 68, 233, 11, 156, 249, 31, 225, + 120, 42, 66, 16, 2, 58, 63, 31, 134, 247, 44, 130, 255, 63, 157, 72, 19, 15, 131, 221, 99, + 81, 16, 76, 228, 7, 104, 4, 19, 152, 33, 158, 20, 31, 193, 174, 96, 164, 15, 212, 123, 29, + 94, 59, 171, 234, 5, 193, 190, 131, 223, 251, 195, 177, 18, 34, 55, 204, 74, 191, 109, 9, 63, + 64, 189, 164, 37, 245, 248, 125, 208, 180, 81, 255, 243, 187, 174, 18, 212, 29, 54, 209, 186, 246, + 53, 236, 34, 71, 137, 31, 208, 217, 12, 5, 185, 165, 252, 0, 181, 255, 130, 85, 7, 71, 199, + 129, 29, 50, 76, 171, 237, 214, 85, 139, 107, 37, 245, 170, 160, 50, 64, 227, 75, 77, 179, 166, + 68, 75, 248, 1, 154, 64, 160, 56, 242, 219, 34, 40, 196, 3, 17, 254, 62, 197, 196, 113, 192, + 90, 126, 128, 218, 18, 224, 236, 97, 18, 213, 158, 136, 214, 40, 160, 205, 164, 69, 28, 11, 130, + 83, 105, 104, 171, 41, 111, 98, 0, 172, 231, 7, 72, 129, 248, 39, 166, 209, 5, 251, 89, 154, + 38, 3, 81, 181, 138, 130, 0, 124, 105, 246, 162, 40, 33, 252, 0, 41, 8, 151, 80, 75, 56, + 29, 77, 243, 15, 182, 150, 86, 169, 1, 133, 71, 210, 42, 245, 90, 147, 3, 144, 88, 126, 128, + 20, 132, 150, 96, 63, 70, 41, 157, 87, 91, 64, 39, 11, 214, 2, 137, 231, 7, 80, 16, 174, + 7, 123, 21, 28, 91, 40, 45, 152, 2, 97, 90, 195, 106, 139, 22, 67, 246, 240, 3, 164, 64, + 60, 7, 205, 250, 96, 20, 235, 128, 166, 22, 5, 192, 94, 126, 128, 52, 56, 78, 10, 179, 82, + 28, 111, 229, 149, 161, 19, 248, 1, 151, 65, 87, 168, 13, 199, 116, 176, 223, 116, 90, 192, 67, + 22, 6, 192, 25, 252, 0, 10, 68, 85, 8, 196, 44, 66, 102, 169, 206, 127, 100, 241, 101, 177, + 195, 248, 1, 249, 247, 4, 62, 167, 32, 228, 194, 248, 112, 185, 197, 1, 112, 36, 63, 0, 161, + 75, 239, 131, 165, 88, 236, 188, 163, 249, 1, 55, 37, 224, 174, 16, 243, 3, 152, 31, 192, 252, + 0, 230, 7, 48, 63, 128, 249, 1, 204, 15, 96, 126, 0, 243, 3, 152, 31, 192, 252, 0, 230, + 7, 48, 63, 32, 222, 47, 96, 126, 0, 243, 3, 146, 152, 31, 160, 126, 9, 243, 3, 184, 112, + 225, 194, 133, 11, 23, 46, 177, 204, 209, 204, 15, 96, 126, 0, 243, 3, 152, 31, 192, 252, 0, + 230, 7, 48, 63, 128, 249, 1, 204, 15, 96, 126, 64, 244, 183, 184, 152, 31, 64, 245, 96, 126, + 0, 213, 39, 49, 252, 0, 220, 240, 92, 251, 221, 169, 169, 21, 190, 93, 92, 58, 249, 1, 13, + 187, 79, 122, 179, 94, 239, 44, 145, 210, 117, 178, 120, 229, 163, 245, 98, 227, 182, 35, 226, 240, + 145, 19, 165, 131, 31, 128, 165, 252, 55, 139, 151, 54, 127, 119, 182, 72, 246, 101, 136, 100, 79, + 154, 104, 216, 54, 71, 244, 31, 186, 82, 44, 254, 113, 167, 210, 228, 134, 192, 136, 92, 34, 249, + 1, 234, 218, 30, 55, 72, 36, 15, 222, 47, 42, 181, 93, 30, 148, 203, 182, 240, 140, 21, 255, + 238, 148, 41, 94, 123, 111, 186, 168, 254, 217, 108, 81, 249, 235, 249, 103, 43, 124, 179, 168, 102, + 146, 205, 197, 116, 126, 128, 188, 69, 6, 197, 211, 143, 123, 151, 137, 198, 158, 137, 133, 182, 186, + 55, 111, 151, 129, 73, 152, 63, 82, 228, 115, 249, 74, 145, 139, 109, 12, 130, 249, 252, 128, 155, + 218, 238, 87, 30, 133, 223, 238, 219, 38, 170, 122, 231, 138, 22, 222, 113, 218, 220, 227, 138, 232, + 209, 229, 73, 251, 141, 242, 141, 98, 146, 197, 39, 105, 16, 181, 35, 8, 230, 242, 3, 66, 246, + 6, 249, 246, 8, 87, 143, 217, 193, 0, 200, 123, 254, 225, 103, 85, 254, 178, 23, 37, 244, 96, + 31, 82, 26, 237, 107, 109, 8, 130, 185, 252, 128, 224, 70, 201, 158, 185, 162, 225, 119, 107, 69, + 157, 183, 167, 96, 16, 206, 68, 144, 202, 162, 12, 246, 56, 4, 102, 0, 28, 95, 66, 213, 8, + 181, 138, 243, 18, 52, 30, 88, 192, 15, 160, 173, 178, 213, 63, 157, 157, 3, 142, 124, 175, 52, + 253, 232, 114, 10, 99, 146, 245, 197, 96, 189, 40, 227, 252, 45, 9, 8, 130, 5, 252, 0, 105, + 179, 52, 169, 199, 23, 66, 0, 206, 26, 74, 98, 221, 5, 93, 133, 82, 109, 158, 37, 181, 248, + 135, 138, 162, 204, 227, 191, 202, 194, 0, 88, 195, 15, 144, 183, 203, 83, 206, 192, 9, 134, 114, + 88, 79, 225, 188, 226, 210, 184, 177, 21, 108, 29, 152, 135, 130, 121, 131, 5, 65, 176, 142, 31, + 64, 1, 184, 24, 167, 63, 112, 42, 67, 209, 6, 186, 141, 85, 162, 122, 93, 69, 82, 155, 207, + 133, 227, 215, 74, 78, 210, 252, 207, 252, 139, 73, 1, 176, 142, 31, 160, 185, 102, 104, 1, 182, + 70, 129, 169, 132, 215, 5, 23, 158, 61, 242, 37, 179, 249, 220, 17, 143, 63, 15, 254, 54, 131, + 6, 205, 167, 227, 197, 242, 88, 206, 15, 208, 4, 225, 105, 26, 236, 98, 149, 208, 203, 124, 129, + 115, 148, 200, 253, 18, 51, 166, 68, 203, 249, 1, 20, 128, 139, 40, 249, 250, 156, 40, 103, 134, + 66, 1, 208, 0, 21, 146, 77, 234, 6, 214, 243, 3, 164, 32, 32, 255, 195, 11, 182, 10, 156, + 56, 87, 132, 214, 160, 56, 45, 117, 141, 175, 76, 28, 8, 19, 199, 15, 144, 2, 209, 26, 156, + 57, 17, 238, 236, 135, 81, 149, 111, 54, 243, 122, 34, 225, 252, 128, 96, 119, 112, 43, 188, 160, + 159, 117, 154, 125, 32, 2, 88, 161, 158, 201, 83, 97, 226, 249, 1, 20, 132, 155, 145, 7, 64, + 11, 159, 104, 73, 50, 31, 90, 176, 22, 176, 135, 31, 64, 65, 184, 142, 86, 125, 39, 162, 24, + 7, 86, 88, 180, 34, 180, 151, 31, 64, 129, 232, 19, 5, 60, 165, 170, 69, 1, 176, 151, 31, + 64, 172, 161, 219, 192, 250, 130, 237, 49, 24, 15, 250, 90, 121, 101, 104, 59, 63, 128, 2, 241, + 48, 156, 237, 145, 42, 63, 64, 2, 39, 205, 181, 248, 170, 208, 81, 252, 0, 228, 138, 140, 209, + 12, 128, 143, 88, 28, 0, 231, 240, 3, 240, 102, 8, 94, 245, 17, 86, 239, 156, 21, 212, 152, + 152, 151, 194, 241, 92, 12, 197, 16, 4, 188, 129, 218, 62, 1, 206, 59, 154, 31, 112, 81, 2, + 2, 192, 252, 0, 230, 7, 48, 63, 128, 249, 1, 204, 15, 96, 126, 0, 243, 3, 152, 31, 192, + 252, 0, 230, 7, 48, 63, 128, 249, 1, 204, 15, 136, 247, 11, 152, 31, 192, 252, 128, 36, 230, + 7, 168, 95, 194, 252, 0, 46, 92, 184, 112, 225, 194, 133, 75, 44, 115, 52, 243, 3, 152, 31, + 192, 252, 0, 230, 7, 48, 63, 128, 249, 1, 204, 15, 96, 126, 0, 243, 3, 152, 31, 16, 253, + 45, 46, 123, 249, 1, 205, 59, 100, 52, 168, 252, 245, 252, 141, 165, 146, 31, 144, 226, 241, 223, + 81, 191, 119, 214, 230, 198, 221, 38, 137, 87, 7, 172, 22, 219, 15, 28, 23, 39, 254, 56, 85, + 58, 248, 1, 234, 84, 247, 212, 128, 89, 194, 213, 254, 7, 37, 5, 119, 147, 142, 179, 68, 218, + 148, 159, 197, 246, 157, 135, 74, 62, 63, 64, 126, 56, 90, 165, 211, 154, 160, 100, 182, 169, 119, + 162, 232, 210, 127, 150, 152, 4, 83, 215, 23, 63, 238, 16, 229, 190, 95, 82, 50, 249, 1, 234, + 227, 241, 170, 253, 242, 196, 77, 190, 221, 226, 113, 239, 114, 209, 204, 51, 78, 9, 2, 242, 4, + 158, 109, 157, 46, 26, 118, 159, 36, 158, 26, 56, 235, 68, 173, 254, 211, 94, 181, 113, 53, 106, + 45, 63, 64, 221, 32, 113, 135, 239, 103, 81, 221, 59, 91, 52, 247, 100, 132, 108, 123, 111, 233, + 77, 207, 131, 227, 15, 184, 251, 147, 36, 244, 151, 217, 20, 4, 107, 248, 1, 234, 227, 112, 124, + 42, 124, 167, 119, 171, 104, 222, 54, 83, 79, 15, 120, 150, 4, 211, 83, 72, 71, 248, 24, 13, + 162, 137, 238, 14, 214, 240, 3, 130, 155, 164, 94, 207, 21, 45, 7, 175, 19, 77, 59, 142, 15, + 167, 0, 219, 239, 242, 164, 141, 131, 159, 95, 3, 59, 31, 236, 210, 68, 15, 140, 150, 240, 3, + 212, 109, 114, 149, 191, 93, 42, 106, 124, 56, 125, 11, 169, 69, 245, 117, 64, 110, 69, 12, 113, + 136, 210, 115, 99, 139, 120, 60, 129, 65, 176, 136, 31, 128, 27, 37, 199, 108, 84, 182, 200, 85, + 255, 116, 54, 58, 53, 16, 83, 230, 41, 93, 65, 205, 46, 173, 159, 110, 251, 32, 37, 91, 236, + 2, 127, 79, 50, 67, 17, 26, 197, 120, 96, 29, 63, 64, 221, 42, 75, 185, 3, 83, 163, 144, + 194, 169, 175, 227, 96, 57, 95, 30, 35, 44, 12, 130, 181, 252, 0, 10, 192, 121, 148, 118, 59, + 221, 136, 27, 96, 16, 144, 99, 96, 126, 176, 174, 74, 58, 78, 24, 39, 44, 8, 128, 245, 252, + 0, 10, 2, 78, 123, 205, 193, 102, 71, 72, 171, 171, 23, 144, 125, 96, 107, 81, 39, 12, 246, + 168, 5, 65, 176, 150, 31, 160, 9, 4, 142, 248, 191, 70, 145, 95, 88, 143, 50, 113, 134, 90, + 196, 27, 96, 215, 128, 93, 104, 82, 0, 18, 195, 15, 144, 186, 67, 207, 40, 149, 227, 186, 51, + 7, 252, 223, 221, 112, 92, 137, 169, 56, 81, 101, 102, 66, 0, 18, 202, 15, 64, 187, 29, 206, + 232, 199, 112, 252, 67, 15, 156, 16, 65, 74, 31, 160, 217, 68, 109, 33, 216, 34, 106, 155, 49, + 37, 38, 132, 31, 32, 5, 226, 25, 90, 13, 158, 144, 157, 147, 250, 127, 192, 160, 75, 4, 52, + 45, 98, 141, 73, 0, 133, 196, 241, 3, 164, 32, 52, 66, 129, 164, 206, 160, 23, 8, 139, 215, + 40, 248, 249, 148, 89, 131, 162, 93, 252, 128, 243, 193, 153, 166, 170, 84, 214, 104, 92, 208, 5, + 171, 228, 191, 246, 172, 153, 139, 162, 132, 243, 3, 148, 32, 184, 21, 249, 124, 87, 112, 104, 71, + 180, 131, 32, 89, 31, 147, 167, 66, 123, 248, 1, 212, 18, 238, 3, 203, 128, 32, 28, 143, 114, + 48, 28, 101, 193, 90, 192, 62, 126, 0, 5, 1, 103, 134, 197, 81, 204, 10, 203, 33, 80, 23, + 216, 25, 0, 75, 248, 1, 52, 61, 62, 68, 87, 133, 194, 224, 234, 241, 119, 176, 251, 45, 186, + 38, 176, 151, 31, 64, 65, 184, 26, 28, 245, 21, 186, 124, 46, 104, 17, 205, 172, 188, 50, 116, + 10, 63, 0, 47, 122, 62, 166, 187, 70, 114, 43, 120, 195, 226, 171, 66, 71, 241, 3, 46, 130, + 22, 240, 149, 228, 252, 136, 4, 220, 28, 113, 20, 63, 0, 111, 143, 61, 12, 131, 221, 40, 56, + 46, 72, 212, 221, 33, 71, 241, 3, 164, 149, 226, 245, 9, 112, 222, 185, 252, 128, 4, 157, 125, + 230, 7, 48, 63, 128, 249, 1, 204, 15, 96, 126, 0, 243, 3, 152, 31, 192, 252, 0, 230, 7, + 48, 63, 128, 249, 1, 204, 15, 96, 126, 64, 188, 95, 192, 252, 0, 230, 7, 36, 49, 63, 64, + 253, 18, 230, 7, 112, 225, 194, 133, 11, 23, 46, 92, 98, 153, 163, 153, 31, 192, 252, 0, 230, + 7, 48, 63, 128, 249, 1, 204, 15, 96, 126, 0, 243, 3, 138, 31, 63, 160, 238, 155, 147, 93, + 165, 150, 31, 208, 228, 245, 9, 109, 234, 245, 201, 62, 218, 248, 131, 89, 34, 123, 243, 33, 113, + 244, 228, 233, 210, 195, 15, 192, 254, 84, 121, 240, 252, 141, 205, 186, 103, 138, 150, 173, 39, 138, + 198, 29, 103, 137, 249, 43, 15, 136, 131, 135, 142, 151, 124, 126, 0, 125, 113, 254, 131, 145, 255, + 109, 21, 205, 60, 249, 138, 209, 102, 109, 179, 197, 160, 81, 43, 197, 166, 159, 243, 74, 62, 63, + 32, 255, 209, 216, 62, 113, 231, 107, 251, 197, 3, 222, 181, 65, 241, 116, 75, 223, 56, 209, 166, + 103, 150, 120, 11, 86, 102, 21, 70, 44, 42, 217, 252, 0, 124, 56, 138, 143, 196, 48, 7, 121, + 101, 239, 252, 66, 10, 114, 24, 32, 255, 172, 247, 102, 246, 64, 179, 20, 95, 69, 168, 99, 98, + 248, 1, 178, 130, 252, 94, 223, 70, 209, 208, 155, 169, 151, 132, 125, 41, 166, 203, 116, 121, 210, + 254, 102, 86, 234, 220, 34, 116, 9, 235, 249, 1, 106, 0, 110, 108, 155, 43, 154, 191, 189, 218, + 72, 251, 115, 156, 164, 111, 40, 134, 124, 32, 193, 65, 176, 158, 31, 128, 199, 170, 253, 114, 69, + 141, 239, 126, 20, 117, 250, 77, 13, 39, 131, 219, 15, 246, 13, 152, 139, 52, 133, 231, 37, 168, + 59, 88, 204, 15, 144, 54, 73, 213, 248, 96, 250, 104, 112, 108, 178, 170, 6, 11, 10, 32, 241, + 152, 223, 34, 80, 63, 184, 203, 213, 42, 181, 63, 28, 239, 69, 177, 117, 162, 6, 70, 75, 249, + 1, 56, 37, 170, 125, 137, 176, 25, 7, 13, 50, 201, 202, 50, 185, 44, 176, 14, 16, 152, 91, + 19, 16, 4, 235, 249, 1, 242, 60, 79, 28, 1, 163, 148, 219, 74, 96, 40, 56, 152, 112, 29, + 83, 107, 87, 129, 191, 93, 109, 241, 120, 96, 61, 63, 128, 156, 47, 3, 246, 79, 104, 230, 227, + 140, 114, 141, 107, 236, 20, 201, 231, 187, 97, 186, 110, 11, 131, 96, 61, 63, 64, 10, 2, 102, + 140, 127, 21, 130, 176, 198, 8, 162, 128, 73, 214, 53, 122, 161, 63, 225, 119, 28, 63, 186, 210, + 103, 92, 96, 114, 0, 18, 195, 15, 208, 4, 97, 48, 73, 225, 3, 36, 130, 214, 71, 106, 184, + 67, 90, 201, 97, 248, 121, 60, 28, 43, 96, 174, 98, 147, 131, 144, 80, 126, 0, 218, 133, 96, + 57, 82, 159, 15, 68, 236, 18, 5, 127, 91, 5, 246, 1, 88, 37, 19, 3, 144, 56, 126, 0, + 5, 225, 82, 148, 188, 99, 18, 229, 48, 76, 17, 185, 85, 4, 52, 250, 97, 100, 140, 32, 157, + 230, 101, 68, 115, 152, 16, 128, 196, 241, 3, 164, 32, 220, 8, 14, 126, 68, 120, 140, 72, 204, + 128, 2, 250, 76, 129, 144, 242, 44, 5, 229, 107, 20, 81, 227, 32, 27, 239, 148, 152, 80, 126, + 0, 5, 161, 44, 74, 97, 41, 179, 108, 56, 181, 184, 46, 106, 67, 26, 44, 59, 152, 208, 10, + 108, 225, 7, 36, 209, 160, 182, 61, 162, 100, 222, 173, 27, 16, 60, 126, 107, 214, 56, 144, 112, + 126, 128, 18, 4, 183, 146, 120, 189, 163, 166, 43, 104, 7, 69, 117, 12, 208, 182, 132, 116, 51, + 23, 69, 182, 240, 3, 168, 37, 60, 14, 150, 169, 147, 125, 62, 16, 102, 70, 200, 54, 121, 42, + 180, 143, 31, 64, 65, 168, 7, 125, 250, 207, 136, 211, 96, 254, 113, 182, 217, 249, 136, 109, 231, + 7, 80, 16, 60, 96, 127, 134, 1, 42, 161, 45, 3, 51, 125, 227, 165, 237, 252, 0, 10, 192, + 253, 52, 173, 157, 54, 232, 6, 235, 193, 110, 178, 232, 154, 192, 126, 126, 0, 5, 1, 113, 91, + 171, 181, 83, 35, 205, 20, 101, 173, 188, 50, 116, 4, 63, 0, 11, 52, 253, 206, 154, 0, 228, + 130, 61, 98, 241, 189, 1, 103, 240, 3, 104, 109, 112, 21, 216, 231, 210, 189, 195, 74, 73, 22, + 23, 167, 241, 3, 240, 222, 65, 45, 176, 105, 120, 76, 208, 205, 82, 71, 242, 3, 110, 73, 144, + 243, 204, 15, 96, 126, 0, 243, 3, 152, 31, 192, 252, 0, 230, 7, 48, 63, 128, 249, 1, 204, + 15, 96, 126, 0, 243, 3, 152, 31, 192, 252, 128, 120, 190, 128, 249, 1, 204, 15, 72, 98, 126, + 128, 220, 18, 152, 31, 192, 252, 0, 46, 92, 184, 112, 225, 194, 133, 75, 12, 115, 52, 243, 3, + 152, 31, 192, 252, 0, 230, 7, 48, 63, 128, 249, 1, 197, 153, 31, 80, 231, 237, 41, 55, 151, + 90, 126, 0, 170, 200, 33, 0, 251, 171, 126, 187, 184, 244, 241, 3, 112, 113, 82, 227, 253, 233, + 7, 155, 117, 203, 20, 174, 46, 57, 98, 218, 138, 95, 197, 177, 227, 167, 74, 7, 63, 32, 120, + 83, 116, 212, 90, 209, 172, 211, 12, 209, 194, 51, 86, 52, 109, 155, 45, 178, 103, 111, 19, 251, + 115, 143, 150, 124, 126, 128, 124, 91, 188, 108, 155, 109, 162, 177, 103, 98, 126, 14, 242, 118, 153, + 226, 171, 239, 150, 138, 109, 176, 144, 89, 3, 83, 84, 137, 230, 7, 224, 46, 82, 220, 52, 129, + 137, 216, 159, 240, 46, 83, 90, 1, 6, 225, 217, 54, 227, 132, 167, 103, 166, 168, 63, 124, 161, + 42, 163, 47, 153, 252, 0, 249, 209, 216, 221, 190, 77, 162, 182, 103, 106, 136, 130, 188, 121, 135, + 12, 81, 175, 79, 54, 10, 35, 31, 74, 208, 52, 156, 120, 126, 128, 44, 164, 174, 216, 122, 153, + 72, 241, 166, 105, 101, 244, 187, 104, 35, 100, 69, 171, 51, 76, 83, 29, 19, 207, 15, 192, 227, + 173, 29, 14, 8, 215, 144, 61, 162, 97, 143, 73, 122, 219, 223, 81, 32, 177, 55, 197, 173, 40, + 199, 239, 78, 64, 16, 18, 207, 15, 192, 13, 18, 229, 190, 95, 130, 57, 200, 207, 38, 251, 210, + 118, 24, 40, 65, 246, 43, 9, 214, 220, 254, 106, 9, 10, 66, 226, 248, 1, 234, 22, 25, 8, + 0, 170, 199, 191, 167, 156, 129, 122, 90, 128, 131, 208, 66, 86, 83, 122, 173, 43, 19, 208, 29, + 18, 199, 15, 80, 55, 73, 129, 99, 117, 192, 14, 201, 178, 55, 141, 58, 236, 44, 73, 106, 95, + 131, 191, 61, 153, 136, 129, 49, 97, 252, 0, 10, 0, 102, 145, 235, 33, 171, 193, 12, 114, 143, + 99, 174, 193, 49, 96, 77, 45, 14, 66, 194, 249, 1, 104, 143, 129, 77, 138, 34, 195, 236, 113, + 101, 128, 244, 248, 221, 86, 237, 26, 79, 40, 63, 64, 10, 194, 37, 148, 60, 125, 123, 33, 45, + 96, 168, 50, 44, 160, 10, 168, 32, 24, 239, 91, 165, 27, 72, 40, 63, 64, 10, 194, 77, 96, + 139, 194, 106, 133, 67, 237, 12, 4, 107, 58, 28, 95, 81, 91, 146, 153, 203, 230, 132, 242, 3, + 200, 1, 164, 197, 60, 5, 103, 250, 68, 17, 178, 207, 159, 33, 170, 68, 47, 179, 87, 144, 9, + 229, 7, 168, 5, 154, 245, 45, 224, 200, 251, 97, 198, 128, 64, 152, 204, 211, 223, 130, 61, 103, + 98, 0, 18, 203, 15, 144, 90, 66, 51, 104, 5, 75, 180, 66, 105, 3, 193, 164, 214, 86, 193, + 251, 122, 192, 241, 255, 76, 144, 206, 39, 158, 31, 32, 5, 225, 19, 73, 51, 28, 208, 81, 139, + 7, 66, 184, 67, 5, 127, 195, 1, 242, 52, 4, 239, 51, 248, 253, 41, 51, 166, 196, 132, 243, + 3, 40, 0, 120, 6, 23, 71, 41, 152, 54, 250, 29, 133, 215, 247, 197, 25, 128, 196, 243, 3, + 40, 0, 87, 128, 51, 207, 211, 156, 95, 184, 27, 184, 163, 234, 26, 175, 154, 49, 14, 216, 194, + 15, 160, 32, 60, 2, 206, 141, 165, 81, 62, 114, 255, 15, 93, 73, 182, 48, 107, 81, 100, 27, + 63, 128, 130, 240, 111, 176, 35, 58, 14, 26, 173, 17, 14, 153, 9, 88, 178, 157, 31, 64, 65, + 248, 194, 168, 169, 107, 186, 196, 86, 179, 181, 196, 182, 243, 3, 240, 66, 9, 70, 244, 10, 224, + 224, 124, 157, 179, 45, 211, 165, 144, 31, 112, 155, 5, 75, 98, 71, 240, 3, 144, 48, 249, 30, + 221, 32, 41, 132, 206, 1, 155, 138, 131, 166, 69, 215, 4, 142, 225, 7, 60, 74, 172, 0, 45, + 63, 32, 213, 234, 59, 69, 142, 224, 7, 40, 151, 204, 110, 255, 139, 154, 51, 111, 249, 78, 115, + 199, 240, 3, 40, 8, 255, 128, 62, 63, 148, 120, 66, 9, 145, 220, 57, 138, 31, 64, 65, 120, + 9, 57, 163, 9, 124, 132, 239, 44, 126, 0, 206, 10, 9, 116, 158, 249, 1, 204, 15, 96, 126, + 0, 243, 3, 152, 31, 192, 252, 0, 230, 7, 48, 63, 128, 249, 1, 204, 15, 96, 126, 0, 243, + 3, 152, 31, 16, 207, 23, 48, 63, 128, 249, 1, 73, 204, 15, 144, 91, 2, 243, 3, 152, 31, + 192, 133, 11, 23, 46, 92, 184, 112, 137, 97, 142, 102, 126, 0, 243, 3, 152, 31, 192, 252, 0, + 230, 7, 20, 123, 126, 0, 42, 68, 158, 249, 112, 198, 176, 82, 201, 15, 104, 208, 43, 243, 142, + 122, 189, 51, 55, 55, 232, 153, 41, 124, 35, 87, 151, 46, 126, 128, 122, 67, 164, 198, 192, 217, + 194, 213, 254, 7, 209, 220, 55, 65, 76, 154, 183, 91, 28, 58, 124, 188, 116, 240, 3, 112, 244, + 197, 155, 163, 184, 157, 174, 102, 235, 89, 34, 185, 85, 170, 104, 209, 54, 83, 76, 157, 181, 89, + 28, 252, 237, 120, 41, 224, 7, 140, 89, 167, 220, 25, 190, 181, 221, 126, 81, 214, 183, 89, 52, + 241, 76, 80, 182, 188, 189, 208, 49, 75, 12, 27, 189, 92, 28, 56, 118, 82, 124, 183, 110, 79, + 201, 230, 7, 220, 76, 79, 140, 49, 17, 123, 53, 239, 156, 224, 166, 199, 231, 219, 101, 136, 151, + 250, 231, 136, 234, 35, 22, 138, 39, 71, 45, 45, 185, 252, 128, 144, 77, 19, 222, 21, 162, 41, + 180, 2, 151, 180, 27, 188, 97, 143, 73, 121, 48, 80, 246, 178, 112, 234, 181, 159, 31, 16, 124, + 62, 136, 42, 242, 215, 38, 235, 101, 162, 159, 5, 246, 162, 149, 57, 199, 109, 231, 7, 40, 15, + 71, 135, 237, 65, 1, 181, 112, 121, 11, 5, 224, 52, 233, 4, 80, 47, 112, 171, 133, 65, 176, + 145, 31, 64, 143, 199, 43, 127, 61, 255, 88, 139, 246, 99, 103, 25, 232, 130, 48, 47, 121, 119, + 176, 7, 44, 238, 18, 137, 231, 7, 200, 27, 36, 80, 234, 230, 106, 149, 186, 71, 47, 199, 48, + 188, 190, 19, 142, 40, 157, 185, 205, 170, 46, 97, 27, 63, 64, 221, 34, 67, 178, 217, 173, 36, + 123, 11, 20, 74, 181, 157, 207, 23, 152, 7, 175, 253, 211, 66, 109, 128, 61, 252, 0, 10, 192, + 69, 164, 8, 215, 147, 196, 200, 186, 193, 41, 96, 47, 89, 61, 48, 38, 148, 31, 32, 5, 225, + 73, 176, 172, 40, 68, 211, 75, 105, 92, 40, 99, 166, 96, 90, 30, 187, 18, 202, 15, 8, 6, + 192, 237, 191, 140, 164, 49, 7, 194, 138, 37, 243, 13, 103, 136, 158, 96, 119, 89, 52, 30, 36, + 150, 31, 32, 5, 225, 9, 41, 0, 34, 138, 64, 96, 154, 238, 106, 22, 4, 33, 241, 252, 0, + 234, 6, 216, 172, 123, 71, 80, 133, 6, 52, 45, 1, 185, 67, 85, 77, 14, 64, 226, 249, 1, + 20, 128, 243, 40, 237, 246, 2, 93, 135, 221, 186, 66, 234, 19, 36, 177, 173, 6, 118, 189, 137, + 65, 72, 60, 63, 128, 130, 112, 3, 229, 22, 61, 28, 86, 44, 93, 120, 205, 176, 18, 172, 29, + 216, 181, 38, 5, 192, 30, 126, 0, 5, 161, 62, 52, 255, 125, 81, 100, 152, 215, 34, 119, 214, + 83, 240, 202, 196, 43, 175, 177, 155, 31, 128, 14, 12, 210, 57, 203, 1, 131, 68, 236, 242, 207, + 184, 104, 26, 2, 129, 185, 207, 140, 41, 209, 46, 126, 192, 5, 52, 22, 108, 12, 113, 222, 29, + 130, 209, 8, 24, 96, 54, 212, 227, 183, 240, 254, 166, 113, 6, 192, 30, 126, 0, 5, 225, 78, + 56, 139, 131, 21, 249, 124, 152, 190, 31, 50, 83, 132, 254, 109, 79, 188, 96, 21, 91, 249, 1, + 20, 132, 23, 201, 17, 189, 166, 31, 208, 8, 168, 229, 86, 49, 197, 140, 124, 228, 182, 243, 3, + 40, 8, 89, 65, 130, 140, 59, 42, 180, 206, 7, 38, 78, 133, 246, 242, 3, 104, 44, 168, 9, + 150, 103, 208, 236, 229, 113, 0, 73, 19, 47, 152, 188, 32, 178, 151, 31, 64, 65, 120, 128, 144, + 123, 1, 45, 63, 64, 106, 17, 203, 193, 30, 182, 96, 73, 108, 63, 63, 0, 11, 12, 134, 175, + 41, 99, 129, 91, 106, 1, 5, 206, 143, 136, 151, 25, 100, 70, 23, 176, 154, 31, 128, 176, 181, + 37, 242, 226, 135, 186, 65, 71, 139, 31, 222, 58, 134, 31, 112, 49, 88, 138, 212, 252, 17, 166, + 80, 35, 1, 79, 175, 29, 197, 15, 120, 28, 108, 28, 113, 7, 175, 75, 208, 227, 123, 199, 241, + 3, 42, 36, 120, 255, 130, 179, 248, 1, 9, 118, 158, 249, 1, 204, 15, 96, 126, 0, 243, 3, + 152, 31, 192, 252, 0, 230, 7, 48, 63, 128, 249, 1, 204, 15, 96, 126, 0, 243, 3, 152, 31, + 16, 207, 23, 48, 63, 128, 249, 1, 73, 204, 15, 144, 91, 2, 243, 3, 152, 31, 192, 133, 11, + 23, 46, 92, 184, 112, 137, 97, 142, 102, 126, 0, 243, 3, 152, 31, 80, 194, 248, 1, 41, 30, + 255, 101, 165, 146, 31, 128, 217, 164, 26, 117, 251, 161, 95, 205, 255, 229, 252, 82, 234, 248, 1, + 88, 202, 125, 183, 164, 111, 221, 183, 167, 136, 150, 111, 100, 137, 78, 195, 86, 138, 205, 191, 30, + 45, 29, 252, 0, 26, 217, 51, 240, 102, 104, 202, 167, 107, 68, 178, 47, 67, 180, 244, 164, 139, + 169, 11, 118, 138, 223, 14, 159, 40, 29, 252, 0, 188, 73, 138, 123, 135, 30, 234, 118, 64, 60, + 237, 157, 169, 108, 124, 122, 238, 181, 108, 49, 117, 214, 22, 113, 70, 106, 5, 37, 154, 31, 128, + 183, 201, 111, 240, 237, 19, 15, 120, 215, 6, 19, 177, 123, 123, 76, 17, 147, 166, 110, 20, 219, + 127, 59, 81, 178, 249, 1, 242, 163, 115, 37, 17, 123, 171, 169, 180, 1, 210, 47, 254, 213, 118, + 172, 120, 246, 235, 249, 226, 169, 239, 151, 148, 108, 126, 128, 108, 79, 121, 103, 139, 100, 111, 122, + 112, 47, 112, 139, 246, 25, 162, 214, 187, 211, 150, 86, 255, 116, 118, 109, 19, 91, 160, 243, 248, + 1, 248, 144, 4, 159, 19, 54, 251, 223, 79, 133, 37, 244, 110, 69, 3, 212, 151, 166, 76, 51, + 187, 162, 131, 248, 1, 29, 115, 149, 135, 164, 21, 70, 44, 18, 13, 186, 103, 234, 109, 125, 71, + 13, 97, 71, 176, 107, 44, 24, 144, 29, 192, 15, 160, 135, 163, 176, 38, 56, 211, 176, 219, 164, + 209, 148, 47, 48, 184, 33, 26, 236, 79, 202, 61, 238, 5, 187, 195, 130, 32, 216, 207, 15, 80, + 31, 143, 187, 90, 165, 214, 7, 39, 215, 25, 104, 128, 126, 130, 46, 241, 46, 28, 47, 52, 91, + 47, 236, 8, 126, 128, 180, 60, 158, 136, 25, 229, 180, 41, 119, 213, 13, 210, 240, 122, 127, 84, + 154, 91, 208, 18, 236, 229, 7, 144, 243, 120, 118, 27, 232, 73, 102, 229, 124, 228, 240, 183, 78, + 112, 188, 199, 162, 238, 96, 15, 63, 64, 45, 224, 232, 227, 148, 46, 55, 127, 12, 80, 91, 66, + 168, 106, 108, 31, 24, 182, 132, 155, 173, 26, 24, 109, 225, 7, 80, 43, 248, 11, 216, 167, 186, + 178, 217, 208, 64, 252, 2, 193, 249, 154, 192, 11, 231, 153, 28, 4, 123, 248, 1, 82, 16, 26, + 194, 217, 63, 84, 40, 179, 116, 97, 93, 32, 138, 166, 223, 130, 64, 220, 109, 193, 120, 96, 15, + 63, 128, 2, 112, 62, 137, 34, 140, 37, 179, 5, 134, 41, 56, 251, 153, 77, 153, 177, 141, 31, + 64, 1, 184, 156, 4, 147, 39, 195, 228, 30, 151, 109, 39, 169, 202, 46, 52, 49, 0, 246, 240, + 3, 130, 131, 161, 39, 13, 181, 130, 115, 35, 36, 89, 150, 95, 59, 14, 134, 99, 194, 237, 38, + 6, 193, 30, 126, 0, 181, 2, 84, 143, 251, 33, 16, 127, 232, 201, 228, 13, 214, 9, 104, 239, + 131, 149, 51, 41, 0, 246, 241, 3, 40, 8, 141, 32, 0, 103, 117, 21, 226, 6, 1, 128, 247, + 35, 121, 42, 21, 142, 255, 136, 119, 197, 104, 43, 63, 128, 2, 112, 51, 216, 15, 6, 103, 58, + 96, 24, 8, 183, 255, 32, 37, 109, 255, 91, 188, 130, 74, 219, 248, 1, 20, 128, 171, 192, 186, + 5, 147, 175, 27, 15, 130, 162, 208, 194, 41, 223, 48, 103, 121, 165, 56, 3, 96, 31, 63, 128, + 130, 208, 152, 176, 24, 133, 166, 66, 131, 110, 16, 124, 15, 252, 29, 167, 200, 119, 112, 86, 137, + 103, 28, 176, 149, 31, 64, 65, 152, 38, 143, 254, 26, 199, 3, 6, 45, 3, 95, 255, 196, 4, + 142, 136, 189, 252, 0, 37, 229, 182, 199, 223, 44, 44, 77, 166, 176, 164, 30, 47, 169, 235, 152, + 52, 19, 216, 203, 15, 160, 32, 60, 73, 68, 136, 112, 211, 159, 233, 240, 4, 10, 128, 35, 248, + 1, 87, 42, 68, 153, 124, 58, 140, 209, 130, 104, 5, 216, 211, 22, 92, 29, 58, 131, 31, 0, + 206, 181, 128, 179, 255, 171, 129, 243, 150, 105, 143, 156, 196, 15, 184, 140, 6, 67, 25, 163, 131, + 60, 129, 42, 22, 63, 198, 115, 12, 63, 224, 10, 176, 87, 232, 234, 79, 168, 183, 203, 19, 240, + 28, 211, 81, 252, 128, 58, 96, 3, 205, 90, 235, 199, 179, 16, 178, 133, 31, 16, 239, 156, 110, + 233, 82, 216, 138, 139, 33, 187, 11, 243, 3, 152, 31, 192, 252, 0, 230, 7, 48, 63, 128, 249, + 1, 204, 15, 96, 126, 0, 243, 3, 152, 31, 192, 252, 0, 230, 7, 48, 63, 128, 249, 1, 204, + 15, 48, 229, 11, 152, 31, 192, 252, 128, 36, 230, 7, 112, 225, 194, 133, 11, 23, 46, 92, 98, + 158, 163, 153, 31, 192, 252, 128, 146, 200, 15, 192, 252, 1, 205, 59, 100, 220, 81, 90, 249, 1, + 215, 52, 232, 153, 57, 177, 206, 219, 83, 142, 215, 76, 91, 81, 122, 248, 1, 212, 212, 43, 227, + 141, 198, 186, 253, 115, 132, 171, 75, 150, 232, 240, 197, 114, 177, 41, 239, 104, 233, 224, 7, 224, + 200, 141, 253, 18, 239, 28, 39, 15, 216, 44, 146, 189, 99, 149, 189, 126, 139, 87, 238, 22, 191, + 31, 61, 89, 58, 248, 1, 120, 199, 24, 117, 133, 101, 59, 238, 17, 53, 60, 211, 149, 93, 95, + 175, 116, 207, 17, 243, 150, 108, 47, 29, 252, 0, 245, 118, 249, 141, 190, 61, 226, 9, 239, 178, + 224, 70, 200, 158, 239, 207, 16, 171, 55, 236, 19, 187, 127, 63, 81, 178, 249, 1, 242, 109, 242, + 135, 188, 171, 69, 35, 247, 15, 74, 0, 158, 109, 61, 86, 188, 218, 43, 75, 188, 8, 78, 212, + 25, 187, 162, 100, 243, 3, 212, 103, 4, 183, 249, 182, 139, 166, 190, 31, 20, 21, 121, 50, 237, + 251, 173, 247, 230, 100, 81, 237, 243, 57, 75, 75, 60, 63, 0, 229, 180, 85, 223, 57, 32, 146, + 251, 204, 212, 108, 128, 246, 163, 100, 230, 171, 20, 119, 252, 34, 73, 71, 243, 3, 240, 97, 233, + 51, 163, 86, 138, 106, 159, 204, 86, 90, 128, 70, 58, 187, 139, 182, 190, 95, 108, 82, 107, 116, + 30, 63, 64, 29, 196, 158, 249, 112, 198, 104, 24, 8, 231, 147, 224, 65, 14, 194, 105, 104, 5, + 255, 133, 227, 141, 38, 142, 73, 206, 225, 7, 208, 3, 202, 20, 112, 242, 90, 176, 28, 112, 244, + 140, 78, 254, 113, 84, 142, 120, 76, 30, 152, 157, 195, 15, 144, 150, 198, 61, 41, 119, 160, 94, + 242, 229, 69, 96, 207, 155, 169, 23, 118, 26, 63, 160, 12, 56, 124, 47, 28, 127, 51, 208, 3, + 97, 96, 48, 29, 239, 93, 240, 190, 75, 77, 14, 130, 189, 252, 0, 41, 8, 247, 131, 165, 71, + 200, 59, 158, 1, 99, 196, 83, 22, 116, 7, 123, 249, 1, 20, 128, 75, 193, 62, 131, 177, 224, + 168, 164, 13, 10, 72, 93, 66, 253, 25, 245, 194, 143, 154, 28, 4, 123, 249, 1, 82, 16, 94, + 10, 2, 85, 220, 186, 217, 102, 49, 16, 185, 208, 10, 210, 41, 25, 163, 153, 65, 176, 157, 31, + 160, 36, 91, 5, 7, 183, 135, 81, 138, 169, 249, 70, 79, 131, 245, 48, 147, 48, 99, 59, 63, + 128, 130, 112, 61, 56, 56, 64, 118, 90, 203, 21, 209, 176, 134, 58, 163, 210, 212, 196, 32, 216, + 199, 15, 160, 0, 156, 7, 214, 30, 108, 127, 56, 237, 176, 100, 171, 32, 64, 157, 77, 12, 128, + 189, 252, 0, 37, 8, 110, 69, 34, 243, 83, 36, 213, 56, 181, 12, 4, 46, 29, 3, 123, 10, + 245, 69, 38, 5, 193, 62, 126, 128, 212, 18, 230, 66, 32, 254, 140, 2, 165, 161, 190, 134, 203, + 232, 122, 38, 5, 192, 118, 126, 192, 165, 212, 13, 68, 88, 233, 108, 104, 70, 122, 65, 137, 89, + 107, 155, 16, 0, 123, 249, 1, 20, 132, 134, 96, 155, 244, 28, 47, 52, 40, 186, 131, 221, 228, + 8, 181, 132, 255, 51, 65, 60, 109, 31, 63, 128, 2, 240, 40, 56, 54, 61, 204, 12, 16, 186, + 70, 112, 7, 3, 113, 154, 248, 1, 247, 198, 25, 0, 123, 249, 1, 20, 132, 239, 229, 171, 67, + 189, 46, 96, 48, 77, 226, 216, 241, 22, 216, 109, 241, 140, 3, 78, 224, 7, 52, 52, 156, 2, + 221, 17, 185, 34, 157, 226, 129, 175, 217, 206, 15, 160, 0, 60, 12, 182, 80, 14, 0, 177, 6, + 195, 117, 139, 145, 102, 0, 215, 156, 194, 15, 184, 29, 108, 120, 24, 164, 150, 220, 50, 240, 102, + 74, 53, 19, 23, 68, 246, 243, 3, 40, 8, 111, 130, 29, 148, 91, 128, 166, 59, 172, 1, 51, + 125, 195, 181, 147, 248, 1, 143, 19, 60, 77, 239, 58, 160, 157, 133, 79, 177, 28, 195, 15, 64, + 38, 208, 4, 229, 204, 187, 131, 221, 160, 31, 12, 124, 151, 38, 89, 88, 156, 195, 15, 112, 251, + 255, 74, 151, 189, 216, 228, 135, 154, 201, 12, 51, 107, 26, 76, 4, 63, 160, 10, 216, 125, 9, + 126, 130, 237, 28, 126, 128, 77, 251, 23, 152, 31, 192, 252, 0, 230, 7, 48, 63, 128, 249, 1, + 204, 15, 96, 126, 0, 243, 3, 152, 31, 192, 252, 0, 230, 7, 48, 63, 128, 249, 1, 177, 126, + 9, 243, 3, 152, 31, 192, 252, 0, 230, 7, 200, 45, 129, 249, 1, 204, 15, 224, 194, 133, 11, + 23, 46, 92, 184, 196, 48, 71, 51, 63, 160, 68, 243, 3, 80, 25, 134, 91, 219, 74, 29, 63, + 0, 75, 157, 183, 167, 252, 165, 65, 207, 204, 201, 245, 250, 100, 31, 173, 241, 253, 146, 210, 195, + 15, 160, 166, 222, 6, 239, 182, 214, 251, 112, 182, 112, 117, 206, 20, 173, 7, 44, 20, 203, 247, + 29, 41, 61, 252, 0, 188, 131, 140, 183, 209, 155, 125, 180, 45, 40, 163, 223, 0, 103, 237, 68, + 152, 0, 148, 44, 126, 192, 224, 253, 202, 51, 132, 219, 218, 238, 22, 181, 60, 211, 148, 61, 64, + 157, 250, 207, 17, 171, 215, 239, 43, 29, 252, 0, 124, 118, 128, 247, 10, 111, 246, 237, 18, 21, + 189, 11, 243, 119, 126, 122, 211, 197, 192, 175, 23, 138, 35, 196, 0, 40, 209, 252, 0, 245, 193, + 9, 90, 57, 239, 18, 209, 204, 51, 78, 9, 194, 75, 29, 199, 139, 126, 48, 32, 118, 159, 179, + 185, 228, 243, 3, 212, 187, 197, 247, 123, 215, 137, 22, 222, 113, 193, 29, 161, 201, 190, 116, 241, + 244, 160, 121, 162, 220, 200, 37, 37, 155, 31, 128, 199, 251, 186, 230, 138, 228, 175, 246, 136, 228, + 54, 25, 170, 124, 94, 57, 54, 107, 63, 110, 69, 243, 14, 25, 205, 99, 188, 197, 85, 76, 248, + 1, 253, 114, 149, 39, 199, 85, 71, 44, 17, 245, 123, 101, 105, 119, 132, 162, 8, 98, 124, 60, + 137, 85, 157, 207, 15, 24, 179, 90, 121, 108, 94, 225, 155, 69, 203, 154, 118, 26, 63, 74, 171, + 11, 114, 181, 74, 61, 10, 199, 46, 241, 202, 227, 28, 205, 15, 80, 247, 12, 128, 147, 93, 117, + 36, 115, 184, 73, 26, 83, 236, 214, 55, 35, 231, 144, 35, 249, 1, 210, 53, 65, 21, 24, 0, + 127, 55, 208, 2, 96, 87, 168, 105, 210, 216, 228, 60, 126, 0, 5, 224, 90, 74, 161, 167, 23, + 0, 148, 214, 79, 160, 212, 188, 102, 4, 193, 57, 252, 0, 41, 0, 183, 65, 115, 31, 20, 70, + 41, 138, 73, 215, 218, 194, 184, 112, 173, 73, 45, 193, 57, 252, 0, 10, 192, 249, 224, 220, 255, + 224, 120, 84, 87, 51, 232, 86, 6, 197, 141, 240, 123, 178, 137, 235, 20, 103, 240, 3, 164, 32, + 120, 80, 34, 31, 34, 145, 41, 204, 19, 200, 4, 171, 110, 98, 16, 28, 195, 15, 80, 186, 65, + 36, 213, 40, 4, 72, 29, 15, 46, 49, 49, 8, 246, 242, 3, 164, 32, 220, 10, 205, 60, 91, + 171, 20, 13, 81, 141, 228, 219, 89, 120, 205, 3, 199, 27, 76, 28, 15, 236, 229, 7, 80, 0, + 110, 34, 128, 82, 164, 76, 179, 200, 28, 90, 9, 65, 120, 193, 196, 86, 96, 47, 63, 64, 45, + 224, 20, 102, 142, 254, 85, 195, 19, 18, 58, 60, 17, 65, 146, 185, 10, 38, 5, 192, 126, 126, + 0, 181, 130, 166, 116, 29, 16, 48, 74, 177, 45, 141, 13, 191, 67, 64, 50, 80, 117, 110, 82, + 16, 236, 229, 7, 208, 64, 136, 11, 162, 157, 97, 5, 211, 90, 221, 176, 219, 143, 227, 193, 223, + 77, 8, 128, 189, 252, 0, 10, 194, 157, 224, 220, 40, 137, 28, 35, 12, 166, 69, 217, 150, 130, + 253, 215, 132, 0, 56, 130, 31, 128, 12, 128, 79, 96, 144, 59, 83, 8, 157, 33, 139, 165, 221, + 154, 89, 194, 227, 95, 0, 246, 96, 188, 200, 45, 219, 249, 1, 20, 132, 55, 192, 193, 131, 170, + 115, 232, 184, 1, 75, 68, 30, 39, 142, 131, 125, 139, 93, 40, 206, 0, 56, 130, 31, 240, 184, + 230, 140, 7, 34, 81, 101, 130, 107, 5, 183, 223, 139, 72, 158, 120, 198, 1, 39, 240, 3, 110, + 35, 138, 156, 190, 98, 220, 29, 22, 175, 179, 24, 172, 82, 60, 139, 34, 251, 249, 1, 110, 255, + 29, 36, 151, 21, 209, 44, 138, 164, 35, 94, 77, 62, 16, 103, 23, 176, 159, 31, 64, 173, 224, + 19, 8, 196, 17, 3, 134, 144, 60, 35, 228, 17, 54, 227, 122, 147, 214, 2, 142, 225, 7, 188, + 170, 4, 192, 45, 177, 3, 220, 33, 205, 125, 3, 252, 222, 22, 111, 146, 152, 124, 43, 223, 126, + 126, 0, 97, 181, 110, 77, 201, 39, 204, 106, 87, 127, 115, 224, 104, 153, 236, 198, 73, 252, 128, + 123, 192, 38, 73, 103, 124, 44, 204, 10, 79, 39, 224, 49, 158, 67, 248, 1, 176, 180, 5, 251, + 218, 140, 129, 205, 170, 105, 48, 17, 252, 128, 75, 147, 18, 92, 152, 31, 192, 252, 0, 230, 7, + 48, 63, 128, 249, 1, 204, 15, 96, 126, 0, 243, 3, 152, 31, 192, 252, 0, 230, 7, 48, 63, + 128, 249, 1, 204, 15, 96, 126, 64, 204, 95, 192, 252, 0, 230, 7, 36, 49, 63, 64, 110, 9, + 204, 15, 96, 126, 0, 23, 46, 92, 184, 112, 225, 194, 37, 134, 57, 186, 244, 240, 3, 82, 60, + 254, 91, 74, 29, 63, 64, 45, 245, 250, 102, 127, 84, 191, 119, 214, 230, 42, 95, 207, 47, 61, + 252, 0, 106, 222, 216, 140, 183, 213, 250, 108, 158, 72, 126, 35, 75, 188, 242, 193, 220, 210, 197, + 15, 192, 219, 233, 120, 55, 185, 229, 23, 59, 21, 25, 61, 218, 47, 59, 14, 137, 211, 58, 66, + 166, 18, 201, 15, 80, 238, 22, 247, 205, 19, 255, 104, 183, 91, 212, 246, 76, 85, 182, 195, 244, + 255, 114, 137, 216, 182, 227, 80, 233, 224, 7, 168, 15, 82, 110, 241, 237, 20, 85, 188, 243, 148, + 0, 60, 223, 97, 162, 24, 155, 185, 174, 116, 240, 3, 212, 231, 7, 55, 248, 246, 137, 202, 222, + 249, 34, 217, 157, 191, 37, 174, 83, 223, 201, 98, 225, 250, 125, 98, 230, 142, 131, 37, 159, 31, + 160, 254, 94, 222, 187, 88, 180, 132, 49, 64, 217, 21, 230, 245, 139, 103, 251, 79, 19, 77, 136, + 13, 80, 162, 249, 1, 202, 147, 228, 158, 185, 34, 229, 195, 213, 33, 59, 65, 91, 182, 78, 23, + 53, 62, 156, 190, 229, 201, 145, 75, 63, 45, 217, 252, 128, 33, 251, 21, 117, 217, 211, 67, 22, + 41, 78, 107, 182, 194, 162, 78, 176, 106, 17, 111, 113, 21, 47, 126, 0, 118, 15, 124, 122, 252, + 212, 192, 89, 51, 146, 91, 167, 173, 211, 236, 15, 254, 149, 54, 78, 159, 23, 67, 61, 138, 7, + 63, 128, 154, 110, 117, 112, 242, 33, 37, 231, 104, 232, 78, 112, 180, 147, 164, 46, 191, 52, 198, + 250, 56, 159, 31, 32, 93, 15, 44, 39, 161, 180, 150, 35, 128, 58, 162, 242, 113, 182, 76, 231, + 242, 3, 200, 249, 203, 104, 123, 172, 208, 209, 11, 29, 64, 113, 181, 9, 99, 147, 51, 249, 1, + 20, 128, 43, 49, 163, 180, 162, 17, 82, 69, 147, 161, 234, 144, 173, 240, 122, 53, 19, 132, 81, + 206, 227, 7, 72, 65, 120, 77, 85, 142, 234, 201, 98, 32, 0, 99, 226, 201, 41, 170, 9, 130, + 115, 248, 1, 82, 0, 254, 3, 182, 75, 163, 19, 150, 131, 129, 26, 130, 86, 102, 168, 199, 157, + 200, 15, 64, 189, 208, 67, 112, 150, 207, 160, 36, 78, 82, 130, 105, 37, 51, 51, 224, 88, 199, + 164, 245, 138, 51, 248, 1, 82, 16, 110, 6, 91, 175, 57, 235, 90, 101, 216, 97, 176, 180, 120, + 178, 203, 106, 199, 46, 71, 240, 3, 40, 0, 247, 163, 58, 36, 10, 181, 216, 89, 176, 6, 102, + 36, 94, 119, 12, 63, 128, 2, 112, 29, 52, 239, 84, 131, 156, 194, 122, 120, 157, 234, 38, 181, + 2, 103, 240, 3, 40, 8, 223, 210, 234, 207, 72, 39, 24, 160, 197, 209, 33, 56, 126, 105, 82, + 0, 28, 195, 15, 56, 159, 166, 194, 128, 238, 130, 168, 112, 242, 229, 221, 96, 117, 227, 93, 27, + 144, 63, 246, 242, 3, 40, 0, 23, 194, 168, 223, 32, 130, 227, 1, 13, 100, 229, 7, 147, 178, + 78, 219, 207, 15, 160, 32, 180, 0, 251, 201, 168, 21, 104, 97, 10, 116, 237, 208, 57, 222, 1, + 209, 17, 252, 0, 44, 112, 182, 159, 6, 103, 86, 135, 105, 246, 122, 134, 185, 202, 155, 153, 49, + 37, 58, 129, 31, 240, 23, 76, 187, 45, 59, 110, 16, 4, 89, 81, 122, 12, 142, 147, 241, 130, + 42, 206, 0, 56, 130, 31, 112, 121, 80, 53, 234, 214, 37, 70, 4, 116, 0, 10, 170, 61, 7, + 83, 232, 213, 241, 140, 3, 78, 224, 7, 160, 106, 244, 67, 29, 140, 86, 164, 108, 244, 104, 83, + 113, 86, 136, 103, 81, 100, 59, 63, 0, 206, 44, 78, 133, 255, 163, 11, 159, 64, 36, 118, 0, + 156, 113, 249, 61, 163, 227, 145, 218, 58, 137, 31, 208, 13, 199, 1, 237, 89, 215, 96, 53, 2, + 210, 0, 216, 14, 87, 145, 38, 12, 130, 246, 243, 3, 240, 170, 16, 28, 173, 7, 199, 83, 97, + 6, 193, 173, 68, 157, 50, 117, 103, 167, 35, 248, 1, 20, 132, 127, 18, 99, 84, 110, 222, 136, + 220, 28, 12, 246, 140, 133, 79, 177, 28, 195, 15, 168, 8, 54, 139, 28, 71, 124, 222, 179, 102, + 44, 119, 99, 25, 4, 237, 226, 7, 32, 89, 174, 150, 89, 108, 16, 43, 166, 65, 203, 249, 1, + 54, 61, 190, 103, 126, 0, 243, 3, 152, 31, 192, 252, 0, 230, 7, 48, 63, 128, 249, 1, 204, + 15, 96, 126, 0, 243, 3, 152, 31, 192, 252, 0, 230, 7, 48, 63, 32, 198, 47, 97, 126, 0, + 243, 3, 152, 31, 192, 252, 0, 185, 37, 48, 63, 128, 249, 1, 92, 184, 112, 225, 194, 133, 11, + 151, 104, 139, 154, 108, 181, 84, 241, 3, 176, 52, 233, 50, 225, 177, 134, 221, 39, 13, 125, 230, + 195, 25, 147, 74, 21, 63, 128, 42, 156, 81, 105, 200, 2, 209, 164, 103, 150, 112, 189, 157, 83, + 186, 248, 1, 248, 108, 1, 31, 176, 224, 83, 38, 87, 251, 73, 34, 165, 117, 134, 88, 190, 37, + 79, 28, 63, 117, 166, 148, 240, 3, 6, 239, 87, 110, 152, 220, 219, 121, 159, 168, 233, 201, 81, + 50, 80, 15, 73, 93, 45, 242, 126, 61, 86, 58, 248, 1, 234, 83, 37, 69, 70, 239, 153, 171, + 236, 9, 106, 213, 125, 178, 88, 184, 124, 71, 233, 224, 7, 168, 118, 147, 111, 183, 168, 12, 1, + 80, 114, 144, 183, 74, 19, 31, 127, 189, 160, 116, 240, 3, 228, 32, 84, 247, 204, 18, 45, 61, + 233, 202, 214, 184, 151, 94, 27, 39, 62, 130, 202, 246, 95, 178, 173, 228, 243, 3, 148, 199, 234, + 221, 115, 69, 203, 30, 243, 67, 50, 209, 55, 125, 107, 178, 168, 254, 205, 226, 18, 206, 15, 232, + 149, 167, 60, 51, 104, 50, 114, 163, 104, 240, 254, 44, 197, 241, 100, 218, 28, 217, 178, 77, 250, + 209, 122, 125, 179, 71, 148, 108, 126, 64, 234, 79, 202, 94, 130, 114, 223, 45, 17, 181, 250, 79, + 251, 73, 71, 49, 130, 187, 199, 111, 140, 242, 22, 87, 241, 228, 7, 144, 214, 255, 9, 218, 39, + 156, 167, 229, 8, 64, 16, 94, 86, 151, 200, 81, 214, 163, 120, 241, 3, 164, 235, 128, 118, 234, + 70, 105, 73, 19, 240, 39, 252, 60, 45, 197, 237, 47, 27, 67, 125, 138, 21, 63, 0, 243, 140, + 53, 4, 71, 79, 235, 108, 141, 199, 237, 243, 222, 88, 19, 172, 57, 158, 31, 32, 5, 160, 2, + 216, 233, 48, 130, 136, 199, 226, 104, 157, 206, 229, 7, 72, 65, 104, 74, 170, 177, 194, 219, 228, + 221, 138, 180, 190, 111, 60, 105, 246, 28, 205, 15, 160, 0, 52, 4, 91, 23, 38, 205, 38, 6, + 231, 238, 56, 7, 106, 103, 242, 3, 40, 0, 15, 128, 195, 121, 17, 148, 163, 93, 193, 254, 26, + 103, 16, 156, 197, 15, 144, 2, 112, 37, 137, 37, 244, 8, 18, 234, 107, 115, 227, 17, 71, 105, + 7, 70, 199, 240, 3, 40, 0, 15, 131, 205, 142, 32, 148, 252, 141, 248, 66, 101, 76, 8, 130, + 115, 248, 1, 20, 128, 71, 193, 178, 245, 50, 79, 75, 45, 0, 91, 197, 49, 232, 42, 119, 197, + 27, 4, 71, 241, 3, 40, 0, 215, 81, 254, 224, 16, 193, 164, 158, 102, 16, 254, 214, 31, 142, + 183, 155, 208, 10, 28, 197, 15, 56, 143, 164, 112, 231, 12, 166, 66, 57, 0, 8, 94, 122, 222, + 132, 0, 56, 131, 31, 64, 1, 248, 43, 216, 247, 26, 109, 176, 209, 88, 128, 57, 199, 77, 217, + 120, 225, 8, 126, 0, 5, 224, 38, 37, 241, 114, 193, 217, 15, 132, 85, 144, 230, 7, 167, 42, + 216, 197, 113, 6, 192, 33, 252, 0, 183, 255, 98, 24, 240, 134, 225, 5, 80, 84, 218, 225, 252, + 159, 135, 192, 241, 254, 56, 3, 224, 12, 126, 0, 181, 130, 97, 82, 226, 101, 185, 37, 232, 103, + 159, 111, 149, 186, 25, 142, 109, 205, 152, 18, 109, 231, 7, 80, 0, 250, 134, 227, 5, 72, 82, + 122, 153, 34, 177, 12, 217, 66, 40, 189, 141, 35, 0, 142, 224, 7, 32, 64, 193, 19, 36, 73, + 145, 66, 92, 254, 221, 32, 48, 39, 224, 125, 255, 194, 255, 31, 207, 56, 96, 59, 63, 128, 198, + 129, 246, 202, 66, 39, 50, 58, 67, 27, 20, 148, 217, 62, 17, 207, 162, 200, 118, 126, 0, 5, + 0, 161, 40, 123, 195, 66, 19, 220, 186, 124, 161, 92, 176, 14, 113, 4, 192, 25, 252, 0, 104, + 238, 207, 131, 35, 71, 12, 103, 129, 194, 23, 71, 184, 112, 122, 11, 209, 155, 113, 14, 130, 142, + 224, 7, 156, 79, 119, 133, 130, 215, 0, 58, 125, 127, 39, 216, 112, 82, 149, 255, 205, 196, 91, + 249, 142, 225, 7, 212, 128, 179, 187, 71, 106, 1, 127, 210, 237, 176, 46, 96, 143, 88, 248, 20, + 203, 49, 252, 128, 38, 96, 233, 180, 34, 108, 24, 239, 42, 47, 158, 65, 208, 46, 126, 192, 69, + 73, 54, 20, 230, 7, 48, 63, 128, 249, 1, 204, 15, 96, 126, 0, 243, 3, 152, 31, 192, 252, + 0, 230, 7, 48, 63, 128, 249, 1, 204, 15, 96, 126, 0, 243, 3, 152, 31, 192, 252, 128, 88, + 191, 128, 249, 1, 204, 15, 72, 98, 126, 128, 220, 18, 152, 31, 192, 252, 0, 46, 92, 184, 112, + 225, 194, 133, 75, 180, 133, 246, 8, 220, 215, 178, 77, 122, 229, 82, 197, 15, 160, 11, 169, 22, + 79, 142, 90, 250, 69, 189, 62, 217, 121, 245, 250, 102, 139, 234, 169, 203, 75, 15, 63, 0, 239, + 21, 224, 253, 67, 124, 168, 226, 234, 61, 93, 60, 219, 105, 146, 24, 56, 99, 83, 233, 226, 7, + 224, 163, 182, 154, 239, 231, 138, 58, 237, 231, 41, 26, 226, 145, 227, 215, 137, 99, 199, 79, 149, + 14, 126, 128, 250, 136, 237, 70, 223, 30, 81, 209, 187, 80, 145, 207, 118, 238, 55, 83, 108, 254, + 57, 175, 116, 240, 3, 84, 187, 217, 183, 75, 84, 242, 46, 16, 46, 183, 95, 188, 208, 110, 130, + 152, 56, 101, 67, 233, 224, 7, 4, 31, 177, 251, 246, 137, 167, 188, 179, 130, 10, 242, 158, 239, + 229, 136, 147, 167, 206, 148, 14, 126, 128, 186, 199, 160, 97, 219, 28, 104, 1, 249, 251, 0, 159, + 109, 157, 38, 218, 248, 87, 136, 214, 196, 14, 40, 185, 252, 128, 30, 121, 202, 222, 130, 148, 239, + 127, 17, 45, 123, 76, 9, 182, 0, 180, 186, 111, 77, 22, 21, 135, 45, 44, 225, 252, 0, 152, + 254, 112, 26, 172, 50, 124, 145, 168, 215, 59, 59, 100, 115, 100, 203, 214, 233, 155, 26, 119, 157, + 216, 190, 68, 243, 3, 232, 153, 65, 78, 181, 207, 231, 188, 145, 236, 75, 75, 211, 166, 219, 117, + 121, 210, 190, 142, 226, 22, 87, 241, 230, 7, 208, 82, 248, 74, 87, 171, 212, 89, 218, 109, 178, + 16, 0, 148, 213, 95, 19, 141, 38, 160, 216, 242, 3, 164, 235, 129, 213, 170, 114, 76, 179, 97, + 250, 191, 24, 160, 34, 212, 167, 248, 240, 3, 36, 231, 81, 59, 56, 221, 96, 135, 184, 31, 142, + 143, 199, 80, 55, 231, 243, 3, 130, 1, 112, 251, 239, 7, 71, 199, 203, 25, 39, 165, 150, 176, + 37, 86, 125, 80, 177, 224, 7, 80, 11, 120, 0, 250, 127, 54, 57, 31, 208, 72, 233, 79, 130, + 229, 196, 65, 146, 112, 54, 63, 0, 11, 56, 127, 3, 56, 184, 150, 24, 34, 1, 3, 150, 192, + 67, 113, 6, 193, 153, 252, 0, 233, 134, 72, 94, 56, 173, 16, 4, 233, 237, 104, 208, 58, 17, + 186, 131, 243, 248, 1, 20, 128, 178, 96, 75, 35, 8, 166, 144, 33, 80, 59, 206, 41, 219, 121, + 252, 0, 10, 0, 38, 92, 156, 105, 148, 115, 152, 36, 116, 216, 66, 222, 51, 97, 209, 230, 44, + 126, 128, 20, 128, 197, 154, 236, 178, 90, 237, 208, 57, 90, 43, 92, 23, 103, 0, 156, 197, 15, + 80, 6, 65, 79, 218, 157, 224, 216, 62, 201, 233, 130, 32, 104, 85, 164, 173, 82, 93, 69, 33, + 76, 25, 4, 193, 57, 252, 0, 106, 1, 215, 130, 29, 213, 85, 139, 186, 11, 229, 26, 70, 169, + 253, 93, 113, 6, 192, 57, 252, 0, 10, 64, 57, 176, 13, 70, 90, 65, 205, 184, 128, 194, 233, + 231, 76, 24, 11, 156, 193, 15, 160, 0, 96, 222, 225, 229, 97, 166, 64, 249, 247, 51, 96, 35, + 75, 12, 63, 128, 2, 80, 27, 108, 163, 180, 240, 9, 24, 200, 102, 213, 215, 127, 65, 177, 101, + 156, 1, 112, 20, 63, 224, 97, 37, 243, 180, 246, 90, 32, 92, 66, 118, 143, 191, 15, 216, 37, + 241, 78, 137, 182, 243, 3, 148, 212, 219, 158, 180, 178, 210, 165, 112, 180, 54, 15, 3, 23, 103, + 0, 236, 231, 7, 72, 99, 192, 118, 3, 98, 68, 64, 151, 35, 224, 246, 31, 6, 107, 23, 207, + 148, 232, 28, 126, 128, 199, 255, 47, 149, 40, 23, 134, 32, 19, 208, 65, 105, 32, 122, 243, 142, + 120, 22, 69, 206, 224, 7, 120, 252, 46, 137, 31, 16, 48, 12, 64, 225, 224, 236, 129, 215, 158, + 143, 35, 0, 246, 243, 3, 240, 18, 23, 156, 168, 161, 133, 42, 6, 167, 62, 205, 64, 40, 45, + 138, 14, 129, 205, 0, 107, 132, 87, 147, 49, 6, 192, 17, 252, 128, 50, 96, 79, 25, 156, 121, + 245, 181, 3, 96, 83, 192, 16, 165, 149, 28, 239, 74, 48, 150, 0, 88, 221, 5, 94, 36, 39, + 243, 155, 181, 199, 159, 9, 246, 54, 209, 38, 111, 179, 240, 41, 150, 99, 248, 1, 15, 128, 85, + 71, 170, 84, 130, 159, 95, 58, 131, 31, 96, 227, 211, 107, 230, 7, 48, 63, 128, 249, 1, 204, + 15, 96, 126, 0, 243, 3, 152, 31, 192, 252, 0, 230, 7, 48, 63, 128, 249, 1, 204, 15, 96, + 126, 0, 243, 3, 152, 31, 16, 219, 151, 48, 63, 128, 249, 1, 204, 15, 96, 126, 128, 220, 18, + 152, 31, 192, 252, 0, 46, 92, 184, 112, 225, 194, 133, 75, 12, 115, 244, 133, 245, 123, 103, 189, + 216, 176, 219, 164, 207, 171, 127, 58, 187, 103, 233, 225, 7, 228, 51, 0, 86, 224, 189, 196, 90, + 3, 102, 139, 166, 61, 179, 69, 243, 193, 11, 74, 25, 63, 96, 244, 54, 229, 161, 139, 171, 255, + 10, 225, 106, 59, 65, 244, 30, 186, 164, 20, 241, 3, 62, 200, 83, 158, 43, 220, 218, 110, 191, + 120, 196, 187, 74, 225, 8, 116, 233, 63, 75, 252, 122, 232, 120, 233, 224, 7, 4, 5, 150, 190, + 61, 226, 113, 239, 114, 101, 115, 244, 127, 58, 103, 138, 101, 171, 118, 151, 14, 126, 128, 106, 127, + 247, 237, 21, 149, 60, 243, 21, 17, 245, 115, 173, 199, 138, 239, 210, 87, 150, 14, 126, 128, 108, + 181, 60, 211, 130, 42, 242, 78, 111, 78, 22, 191, 30, 253, 163, 116, 240, 3, 112, 12, 168, 63, + 224, 128, 112, 117, 204, 12, 217, 37, 254, 106, 218, 10, 225, 129, 190, 93, 178, 249, 1, 163, 182, + 43, 45, 165, 238, 136, 149, 162, 121, 231, 137, 33, 123, 5, 107, 245, 207, 17, 229, 191, 89, 92, + 178, 249, 1, 180, 187, 68, 84, 251, 124, 206, 186, 230, 29, 50, 246, 231, 43, 69, 242, 3, 144, + 236, 75, 155, 214, 176, 251, 164, 6, 37, 154, 31, 64, 78, 93, 69, 27, 35, 87, 107, 182, 204, + 162, 118, 248, 63, 97, 110, 113, 21, 127, 126, 128, 90, 104, 27, 236, 94, 205, 118, 217, 147, 96, + 95, 69, 202, 69, 84, 18, 248, 1, 23, 192, 160, 151, 12, 107, 128, 211, 218, 20, 155, 208, 10, + 150, 68, 155, 127, 188, 88, 242, 3, 40, 0, 151, 17, 44, 65, 79, 48, 133, 251, 136, 95, 40, + 98, 221, 138, 15, 63, 128, 2, 112, 9, 166, 222, 212, 147, 206, 146, 156, 230, 155, 24, 78, 80, + 241, 224, 7, 72, 65, 24, 13, 77, 254, 76, 33, 225, 100, 126, 80, 80, 41, 118, 67, 81, 115, + 140, 22, 11, 126, 0, 57, 143, 25, 168, 103, 129, 157, 13, 163, 25, 140, 41, 19, 157, 227, 249, + 1, 20, 128, 171, 193, 230, 232, 40, 71, 3, 146, 120, 226, 35, 176, 91, 99, 28, 175, 156, 203, + 15, 160, 0, 60, 66, 18, 24, 189, 65, 80, 13, 2, 182, 144, 103, 226, 152, 177, 156, 201, 15, + 160, 0, 212, 160, 92, 162, 129, 48, 210, 89, 84, 147, 116, 138, 115, 221, 226, 60, 126, 0, 5, + 160, 46, 17, 99, 194, 37, 95, 62, 77, 153, 41, 47, 143, 35, 0, 206, 227, 7, 224, 0, 8, + 14, 214, 162, 236, 242, 90, 231, 3, 193, 110, 144, 191, 64, 218, 20, 11, 87, 72, 227, 135, 227, + 248, 1, 23, 145, 252, 77, 43, 149, 15, 104, 166, 66, 65, 9, 154, 219, 199, 25, 0, 199, 241, + 3, 206, 7, 39, 219, 24, 76, 125, 122, 106, 210, 31, 192, 46, 141, 51, 8, 206, 225, 7, 80, + 16, 62, 149, 51, 208, 235, 130, 20, 10, 102, 4, 4, 170, 220, 19, 103, 0, 156, 195, 15, 80, + 2, 224, 246, 143, 85, 168, 81, 250, 206, 235, 137, 42, 95, 137, 115, 48, 116, 20, 63, 224, 34, + 18, 75, 26, 167, 220, 118, 23, 154, 30, 71, 128, 221, 27, 239, 148, 104, 59, 63, 128, 2, 80, + 150, 50, 201, 135, 83, 142, 107, 133, 213, 136, 220, 104, 22, 103, 0, 28, 195, 15, 40, 79, 169, + 182, 195, 13, 124, 218, 4, 236, 7, 97, 76, 232, 31, 239, 56, 224, 20, 126, 64, 21, 176, 149, + 145, 90, 128, 102, 118, 192, 75, 228, 217, 96, 87, 197, 17, 0, 251, 249, 1, 120, 121, 75, 24, + 157, 131, 6, 77, 221, 112, 90, 132, 214, 176, 15, 236, 233, 56, 2, 224, 16, 126, 128, 199, 95, + 193, 144, 32, 163, 15, 85, 8, 208, 173, 178, 63, 225, 248, 102, 28, 1, 176, 159, 31, 128, 5, + 206, 98, 10, 216, 185, 66, 119, 131, 10, 198, 129, 223, 193, 214, 129, 33, 116, 241, 107, 176, 30, + 96, 255, 38, 197, 249, 53, 69, 189, 73, 18, 75, 0, 172, 230, 7, 248, 192, 217, 41, 202, 29, + 33, 143, 255, 61, 176, 214, 116, 243, 3, 33, 138, 87, 91, 248, 20, 203, 25, 252, 0, 27, 31, + 222, 50, 63, 128, 249, 1, 204, 15, 96, 126, 0, 243, 3, 152, 31, 192, 252, 0, 230, 7, 48, + 63, 128, 249, 1, 204, 15, 96, 126, 0, 243, 3, 152, 31, 192, 252, 0, 230, 7, 196, 244, 37, + 204, 15, 96, 126, 0, 243, 3, 152, 31, 32, 183, 4, 230, 7, 48, 63, 128, 11, 23, 46, 92, + 184, 112, 225, 18, 195, 28, 125, 33, 173, 40, 27, 84, 25, 52, 175, 115, 131, 158, 153, 147, 235, + 190, 53, 121, 66, 169, 226, 7, 224, 67, 88, 188, 176, 170, 63, 124, 165, 104, 209, 45, 91, 36, + 191, 155, 83, 202, 248, 1, 67, 247, 41, 79, 159, 154, 124, 180, 67, 184, 124, 25, 226, 229, 238, + 217, 202, 181, 124, 169, 224, 7, 4, 159, 53, 248, 14, 136, 178, 190, 205, 138, 122, 244, 223, 237, + 199, 139, 61, 112, 29, 95, 42, 248, 1, 65, 249, 141, 47, 31, 164, 128, 123, 132, 158, 109, 157, + 33, 230, 46, 218, 86, 58, 248, 1, 114, 0, 170, 120, 231, 5, 55, 74, 13, 29, 181, 188, 244, + 240, 3, 84, 171, 231, 201, 14, 10, 168, 95, 235, 155, 45, 142, 157, 60, 83, 10, 248, 1, 3, + 243, 148, 189, 199, 41, 223, 236, 16, 201, 208, 244, 93, 210, 246, 88, 111, 214, 186, 146, 207, 15, + 192, 173, 54, 120, 59, 237, 169, 175, 22, 138, 150, 190, 244, 144, 253, 130, 79, 125, 50, 75, 148, + 27, 185, 180, 100, 243, 3, 168, 175, 14, 172, 223, 39, 235, 91, 151, 215, 127, 84, 222, 52, 217, + 162, 221, 216, 111, 171, 124, 53, 175, 97, 137, 230, 7, 168, 159, 7, 14, 15, 164, 221, 161, 114, + 43, 152, 167, 77, 186, 84, 226, 248, 1, 82, 0, 178, 73, 34, 39, 239, 17, 62, 12, 246, 4, + 42, 204, 12, 234, 81, 188, 249, 1, 146, 243, 215, 129, 45, 210, 106, 6, 113, 199, 56, 24, 238, + 15, 190, 44, 66, 125, 138, 39, 63, 64, 10, 64, 101, 176, 85, 6, 122, 129, 1, 112, 188, 57, + 202, 186, 21, 47, 126, 128, 20, 128, 23, 11, 41, 72, 221, 193, 76, 212, 57, 240, 251, 99, 69, + 168, 99, 241, 226, 7, 80, 0, 122, 129, 229, 26, 8, 38, 118, 210, 46, 242, 162, 212, 179, 120, + 240, 3, 200, 121, 20, 79, 12, 138, 144, 128, 181, 125, 36, 160, 138, 65, 16, 156, 205, 15, 160, + 0, 220, 12, 54, 70, 71, 57, 34, 15, 136, 95, 197, 146, 131, 208, 241, 252, 0, 10, 0, 170, + 199, 166, 25, 40, 197, 84, 17, 245, 116, 176, 170, 49, 14, 218, 206, 229, 7, 40, 1, 112, 251, + 27, 107, 65, 74, 65, 5, 57, 201, 105, 224, 184, 21, 222, 247, 82, 28, 211, 182, 51, 249, 1, + 212, 2, 16, 163, 243, 107, 184, 132, 203, 16, 128, 19, 112, 236, 23, 71, 162, 85, 231, 241, 3, + 200, 249, 75, 193, 186, 232, 13, 128, 164, 29, 14, 72, 162, 42, 63, 216, 223, 227, 104, 5, 206, + 226, 7, 80, 0, 110, 4, 251, 56, 66, 186, 109, 148, 203, 97, 32, 16, 181, 81, 45, 142, 0, + 56, 139, 31, 64, 1, 184, 15, 108, 108, 152, 204, 211, 90, 166, 144, 55, 206, 107, 24, 199, 241, + 3, 202, 133, 145, 207, 202, 205, 31, 23, 70, 120, 165, 56, 40, 206, 0, 56, 140, 31, 0, 83, + 155, 14, 64, 33, 160, 167, 31, 166, 233, 112, 94, 164, 11, 163, 8, 1, 112, 20, 63, 0, 57, + 98, 207, 70, 232, 255, 5, 203, 226, 252, 110, 130, 201, 218, 203, 199, 217, 10, 28, 195, 15, 64, + 138, 84, 31, 35, 86, 128, 70, 60, 29, 160, 153, 225, 128, 9, 227, 128, 99, 248, 1, 215, 210, + 212, 166, 199, 9, 48, 106, 5, 184, 30, 24, 17, 239, 56, 224, 12, 126, 128, 91, 9, 192, 70, + 77, 166, 249, 64, 24, 245, 56, 6, 1, 197, 214, 235, 138, 122, 97, 164, 93, 20, 57, 129, 31, + 128, 20, 185, 219, 9, 157, 169, 11, 76, 33, 134, 72, 225, 64, 184, 21, 166, 208, 61, 113, 4, + 192, 17, 252, 0, 12, 64, 45, 109, 147, 15, 98, 115, 220, 33, 8, 157, 80, 152, 138, 91, 89, + 53, 198, 115, 93, 224, 12, 126, 0, 56, 241, 6, 56, 249, 103, 24, 124, 6, 66, 22, 143, 128, + 237, 131, 64, 252, 12, 182, 22, 126, 94, 162, 208, 229, 220, 10, 78, 167, 140, 213, 1, 176, 154, + 31, 80, 22, 2, 80, 141, 22, 67, 15, 128, 221, 129, 107, 125, 176, 43, 193, 44, 123, 194, 203, + 252, 0, 230, 7, 48, 63, 128, 249, 1, 204, 15, 96, 126, 0, 243, 3, 152, 31, 192, 252, 0, + 230, 7, 48, 63, 128, 249, 1, 204, 15, 96, 126, 0, 243, 3, 152, 31, 192, 252, 128, 24, 191, + 132, 249, 1, 204, 15, 96, 126, 0, 243, 3, 228, 150, 192, 252, 0, 230, 7, 112, 225, 194, 133, + 11, 23, 46, 92, 98, 152, 163, 131, 252, 0, 98, 5, 160, 0, 186, 39, 50, 4, 144, 37, 128, + 76, 129, 82, 195, 15, 192, 199, 241, 184, 39, 1, 55, 102, 52, 127, 107, 134, 104, 217, 35, 75, + 52, 79, 93, 94, 122, 248, 1, 184, 23, 1, 55, 100, 224, 174, 148, 22, 237, 179, 197, 115, 109, + 51, 68, 250, 202, 93, 165, 132, 31, 32, 223, 89, 242, 109, 23, 77, 91, 101, 40, 219, 101, 54, + 108, 206, 21, 103, 207, 158, 43, 249, 252, 0, 217, 30, 244, 174, 17, 45, 61, 233, 202, 102, 169, + 156, 185, 91, 197, 233, 211, 103, 74, 62, 63, 64, 54, 228, 8, 36, 227, 46, 49, 176, 33, 208, + 101, 140, 2, 80, 226, 248, 1, 249, 119, 151, 97, 44, 240, 102, 6, 119, 140, 117, 239, 63, 173, + 116, 240, 3, 112, 223, 17, 110, 190, 106, 241, 205, 198, 144, 45, 179, 207, 182, 30, 43, 222, 93, + 248, 75, 201, 231, 7, 40, 55, 83, 191, 95, 170, 48, 3, 148, 237, 241, 202, 198, 73, 191, 104, + 217, 38, 93, 60, 61, 100, 65, 201, 231, 7, 40, 187, 183, 190, 154, 215, 176, 121, 219, 244, 111, + 101, 5, 9, 50, 5, 144, 45, 80, 226, 249, 1, 88, 80, 28, 73, 162, 8, 121, 127, 240, 239, + 16, 144, 129, 154, 91, 92, 37, 146, 31, 112, 30, 52, 253, 39, 192, 217, 195, 154, 109, 179, 200, + 20, 200, 54, 168, 71, 201, 224, 7, 80, 0, 46, 131, 193, 239, 223, 6, 89, 104, 145, 45, 112, + 93, 152, 250, 20, 111, 126, 0, 5, 0, 53, 196, 3, 130, 98, 169, 80, 29, 1, 178, 5, 42, + 71, 81, 183, 226, 201, 15, 160, 0, 60, 6, 150, 99, 176, 123, 124, 11, 4, 228, 197, 40, 235, + 88, 44, 249, 1, 104, 13, 97, 12, 216, 105, 16, 128, 92, 8, 64, 175, 34, 212, 179, 248, 240, + 3, 176, 64, 147, 191, 136, 24, 1, 1, 131, 228, 139, 231, 136, 49, 80, 166, 136, 65, 112, 62, + 63, 64, 105, 1, 110, 255, 109, 112, 246, 191, 50, 18, 77, 210, 120, 48, 38, 90, 150, 136, 166, + 59, 56, 155, 31, 64, 45, 160, 42, 216, 116, 73, 46, 175, 167, 26, 155, 22, 139, 102, 208, 241, + 252, 0, 26, 3, 94, 2, 219, 138, 226, 41, 21, 156, 160, 211, 13, 86, 35, 107, 32, 198, 153, + 203, 209, 252, 128, 243, 21, 54, 64, 190, 38, 48, 92, 254, 97, 100, 12, 252, 55, 198, 0, 56, + 147, 31, 64, 1, 64, 157, 144, 63, 255, 2, 40, 45, 92, 210, 229, 115, 196, 26, 184, 52, 198, + 32, 56, 143, 31, 64, 1, 64, 225, 212, 66, 149, 23, 82, 40, 223, 112, 168, 33, 107, 224, 198, + 24, 3, 224, 60, 126, 0, 5, 192, 11, 77, 254, 151, 16, 237, 160, 126, 230, 121, 161, 176, 6, + 60, 254, 251, 226, 88, 194, 59, 139, 31, 64, 1, 24, 68, 108, 0, 237, 242, 87, 79, 75, 136, + 172, 129, 114, 113, 4, 192, 113, 252, 128, 203, 130, 151, 191, 238, 16, 90, 132, 81, 50, 230, 63, + 98, 197, 233, 72, 151, 210, 206, 224, 7, 80, 0, 202, 19, 19, 64, 20, 193, 144, 57, 112, 73, + 28, 65, 112, 6, 63, 32, 216, 255, 61, 254, 3, 146, 70, 88, 68, 202, 70, 175, 48, 7, 220, + 177, 103, 166, 118, 12, 63, 128, 2, 48, 2, 236, 68, 4, 199, 133, 148, 164, 93, 197, 233, 92, + 27, 207, 56, 224, 12, 126, 128, 199, 143, 23, 64, 235, 144, 9, 16, 162, 28, 55, 30, 4, 85, + 67, 230, 64, 60, 1, 176, 159, 31, 64, 1, 184, 135, 88, 0, 114, 243, 15, 232, 224, 51, 180, + 118, 146, 216, 3, 231, 197, 24, 0, 251, 249, 1, 210, 250, 255, 156, 238, 217, 14, 63, 29, 162, + 213, 138, 35, 0, 246, 243, 3, 240, 186, 30, 206, 242, 43, 10, 11, 32, 159, 9, 176, 22, 25, + 1, 200, 10, 64, 102, 0, 116, 135, 51, 210, 69, 81, 64, 19, 24, 100, 14, 188, 17, 71, 23, + 112, 6, 63, 32, 138, 32, 93, 72, 44, 129, 191, 19, 91, 224, 1, 98, 13, 224, 210, 185, 108, + 28, 1, 96, 126, 0, 243, 3, 152, 31, 192, 252, 0, 230, 7, 48, 63, 128, 249, 1, 204, 15, + 96, 126, 0, 243, 3, 152, 31, 192, 252, 0, 230, 7, 48, 63, 128, 249, 1, 204, 15, 96, 126, + 64, 44, 95, 194, 252, 0, 230, 7, 48, 63, 128, 249, 1, 114, 75, 96, 126, 0, 243, 3, 184, + 112, 225, 194, 133, 11, 23, 46, 49, 204, 209, 186, 252, 0, 178, 206, 213, 63, 157, 221, 179, 97, + 183, 73, 159, 215, 239, 157, 245, 98, 169, 226, 7, 160, 41, 63, 127, 182, 72, 52, 237, 149, 45, + 234, 124, 50, 171, 20, 241, 3, 62, 206, 55, 252, 185, 121, 175, 197, 34, 165, 221, 4, 241, 86, + 234, 143, 165, 135, 31, 160, 218, 205, 190, 93, 162, 166, 39, 71, 217, 65, 150, 51, 103, 139, 248, + 253, 196, 169, 210, 193, 15, 8, 222, 114, 247, 109, 16, 141, 61, 19, 149, 253, 65, 63, 76, 221, + 40, 142, 30, 59, 89, 58, 248, 1, 170, 85, 244, 46, 204, 7, 41, 64, 0, 134, 67, 23, 56, + 118, 252, 84, 41, 224, 7, 116, 200, 223, 138, 87, 246, 181, 125, 162, 33, 114, 4, 104, 203, 220, + 59, 3, 103, 149, 18, 126, 192, 152, 159, 69, 243, 209, 91, 68, 139, 175, 87, 7, 37, 244, 24, + 128, 87, 123, 100, 138, 25, 219, 127, 45, 225, 252, 128, 252, 187, 201, 162, 252, 55, 139, 69, 173, + 247, 114, 130, 206, 163, 181, 232, 60, 65, 52, 73, 93, 94, 178, 249, 1, 244, 64, 227, 222, 134, + 221, 39, 53, 72, 246, 165, 133, 164, 226, 109, 222, 33, 99, 127, 181, 207, 231, 172, 43, 209, 252, + 0, 181, 128, 195, 255, 41, 148, 139, 60, 63, 53, 111, 211, 18, 203, 15, 144, 156, 199, 93, 228, + 95, 169, 137, 216, 36, 219, 11, 150, 172, 169, 71, 201, 225, 7, 72, 1, 184, 155, 246, 15, 107, + 55, 72, 159, 118, 181, 74, 77, 134, 227, 5, 58, 245, 41, 254, 252, 0, 41, 0, 47, 192, 212, + 119, 192, 64, 68, 241, 223, 112, 57, 71, 139, 53, 63, 64, 10, 192, 55, 114, 34, 102, 13, 76, + 161, 47, 252, 126, 73, 132, 58, 22, 63, 126, 0, 57, 142, 118, 3, 56, 248, 139, 129, 70, 0, + 211, 239, 141, 142, 178, 158, 197, 139, 31, 64, 1, 184, 24, 33, 10, 97, 132, 18, 103, 73, 95, + 112, 94, 17, 130, 80, 60, 248, 1, 20, 128, 91, 225, 236, 127, 100, 168, 29, 206, 239, 6, 115, + 48, 91, 109, 17, 90, 108, 241, 224, 7, 80, 0, 158, 161, 51, 92, 88, 62, 87, 240, 251, 12, + 176, 71, 138, 56, 110, 57, 159, 31, 64, 1, 232, 4, 182, 39, 130, 132, 30, 69, 214, 53, 98, + 152, 185, 156, 203, 15, 32, 231, 47, 7, 75, 135, 230, 126, 90, 23, 161, 33, 211, 100, 60, 254, + 186, 49, 4, 192, 185, 252, 0, 10, 192, 227, 96, 155, 12, 20, 99, 242, 241, 120, 172, 138, 49, + 199, 242, 3, 40, 0, 72, 144, 57, 22, 2, 81, 201, 215, 14, 234, 205, 6, 141, 98, 73, 188, + 236, 100, 126, 192, 165, 96, 63, 104, 4, 147, 1, 41, 33, 179, 54, 8, 109, 16, 187, 17, 227, + 42, 214, 145, 252, 128, 123, 192, 242, 36, 229, 104, 64, 183, 27, 228, 75, 235, 255, 128, 32, 125, + 26, 199, 53, 140, 227, 248, 1, 56, 248, 189, 18, 116, 88, 79, 49, 234, 14, 97, 11, 225, 21, + 226, 216, 56, 2, 224, 56, 126, 192, 189, 164, 32, 151, 23, 62, 1, 194, 104, 20, 102, 10, 229, + 7, 35, 51, 206, 228, 235, 142, 226, 7, 52, 3, 91, 110, 4, 79, 210, 53, 183, 127, 66, 156, + 202, 81, 231, 240, 3, 160, 63, 247, 7, 103, 14, 26, 128, 18, 140, 2, 48, 53, 22, 162, 148, + 60, 14, 56, 133, 31, 112, 21, 156, 245, 217, 33, 151, 190, 225, 101, 243, 106, 0, 16, 164, 82, + 37, 142, 0, 56, 132, 31, 224, 246, 63, 77, 106, 113, 35, 71, 245, 90, 68, 128, 90, 12, 138, + 168, 99, 13, 128, 99, 248, 1, 111, 146, 20, 62, 28, 47, 196, 232, 231, 10, 69, 65, 235, 105, + 2, 224, 8, 126, 0, 246, 255, 107, 224, 88, 29, 12, 57, 162, 61, 192, 190, 70, 120, 42, 97, + 53, 126, 215, 220, 9, 18, 210, 204, 128, 93, 38, 37, 142, 46, 80, 108, 248, 1, 87, 131, 61, + 68, 55, 73, 90, 131, 189, 135, 119, 132, 192, 166, 128, 249, 226, 8, 0, 243, 3, 152, 31, 192, + 252, 0, 230, 7, 48, 63, 128, 249, 1, 204, 15, 96, 126, 0, 243, 3, 152, 31, 192, 252, 0, + 230, 7, 48, 63, 128, 249, 1, 204, 15, 96, 126, 0, 243, 3, 98, 249, 18, 230, 7, 48, 63, + 128, 249, 1, 204, 15, 144, 91, 2, 243, 3, 152, 31, 192, 133, 11, 23, 46, 92, 184, 112, 137, + 97, 142, 14, 203, 15, 160, 215, 240, 111, 15, 180, 108, 147, 94, 25, 19, 45, 197, 186, 81, 210, + 41, 14, 23, 137, 31, 128, 175, 225, 223, 170, 140, 252, 81, 212, 237, 147, 37, 234, 245, 201, 206, + 123, 114, 212, 210, 47, 74, 13, 63, 160, 17, 188, 134, 127, 115, 125, 178, 89, 164, 116, 152, 36, + 254, 211, 63, 167, 244, 240, 3, 84, 251, 187, 111, 175, 120, 194, 187, 76, 36, 123, 210, 197, 128, + 225, 139, 197, 98, 184, 172, 45, 21, 252, 128, 224, 190, 36, 223, 22, 81, 203, 51, 77, 217, 43, + 244, 253, 216, 149, 226, 8, 61, 217, 45, 241, 252, 0, 213, 30, 247, 46, 23, 77, 61, 227, 149, + 0, 124, 227, 95, 33, 14, 253, 118, 162, 228, 243, 3, 112, 55, 26, 254, 140, 205, 191, 174, 103, + 114, 112, 183, 216, 192, 33, 11, 197, 201, 83, 103, 74, 56, 63, 96, 204, 86, 197, 90, 140, 222, + 42, 254, 191, 189, 243, 128, 115, 162, 218, 254, 248, 162, 239, 169, 79, 253, 63, 223, 179, 247, 94, + 158, 229, 217, 17, 21, 41, 74, 239, 176, 176, 187, 32, 246, 231, 144, 13, 85, 138, 32, 29, 65, + 193, 174, 8, 98, 3, 68, 80, 201, 46, 75, 223, 165, 87, 233, 168, 128, 72, 81, 4, 41, 210, + 165, 73, 145, 34, 228, 252, 207, 153, 61, 179, 123, 51, 153, 73, 38, 201, 194, 206, 196, 115, 63, + 159, 243, 153, 36, 155, 77, 238, 57, 115, 219, 220, 204, 239, 123, 210, 250, 47, 131, 140, 38, 124, + 31, 177, 63, 27, 186, 190, 61, 61, 249, 249, 1, 134, 61, 52, 112, 30, 84, 125, 121, 66, 104, + 26, 190, 30, 19, 160, 227, 172, 159, 146, 155, 31, 192, 55, 51, 94, 89, 187, 253, 152, 150, 13, + 154, 102, 255, 168, 222, 69, 138, 235, 0, 40, 243, 217, 130, 228, 230, 7, 24, 133, 239, 30, 221, + 171, 6, 32, 205, 159, 149, 85, 182, 223, 172, 14, 73, 203, 15, 96, 199, 201, 46, 224, 27, 163, + 67, 213, 35, 154, 46, 174, 60, 143, 235, 145, 124, 252, 0, 14, 192, 121, 216, 231, 159, 85, 132, + 20, 70, 16, 142, 227, 243, 101, 22, 245, 73, 30, 126, 0, 7, 224, 62, 116, 52, 96, 115, 23, + 249, 84, 180, 139, 109, 234, 230, 125, 126, 0, 7, 160, 121, 122, 147, 225, 107, 44, 133, 212, 90, + 96, 20, 62, 190, 61, 66, 29, 189, 201, 15, 80, 156, 63, 13, 109, 10, 51, 68, 194, 116, 131, + 24, 24, 186, 165, 254, 142, 40, 245, 244, 30, 63, 64, 113, 254, 78, 83, 147, 55, 75, 232, 150, + 19, 104, 193, 65, 125, 189, 197, 15, 224, 0, 92, 142, 103, 184, 167, 133, 116, 38, 168, 8, 170, + 119, 58, 221, 16, 241, 20, 63, 128, 3, 80, 25, 109, 182, 109, 2, 230, 252, 113, 96, 81, 44, + 178, 57, 207, 240, 3, 56, 0, 125, 248, 12, 135, 167, 220, 45, 12, 202, 116, 180, 135, 98, 28, + 188, 221, 205, 15, 96, 231, 47, 102, 90, 212, 113, 59, 21, 25, 7, 96, 65, 28, 1, 112, 61, + 63, 224, 239, 232, 92, 186, 154, 122, 87, 113, 60, 104, 210, 21, 110, 197, 247, 222, 16, 199, 250, + 197, 213, 252, 128, 27, 209, 134, 170, 35, 127, 129, 118, 24, 157, 54, 173, 6, 247, 199, 147, 121, + 218, 181, 252, 0, 14, 64, 35, 180, 159, 212, 81, 223, 106, 16, 100, 233, 220, 74, 18, 78, 198, + 185, 138, 117, 37, 63, 128, 248, 65, 195, 24, 148, 4, 14, 116, 196, 36, 182, 174, 22, 103, 0, + 220, 197, 15, 224, 0, 144, 10, 116, 93, 52, 205, 176, 66, 147, 88, 69, 211, 101, 156, 1, 112, + 29, 63, 224, 44, 180, 110, 142, 100, 243, 133, 118, 4, 237, 174, 4, 174, 100, 93, 197, 15, 184, + 11, 207, 236, 215, 22, 83, 94, 48, 4, 168, 80, 56, 16, 26, 151, 196, 55, 37, 32, 158, 118, + 7, 63, 128, 83, 107, 183, 64, 103, 247, 198, 216, 2, 214, 199, 59, 6, 24, 227, 128, 91, 248, + 1, 215, 163, 243, 227, 44, 251, 187, 153, 35, 16, 42, 162, 94, 141, 199, 199, 19, 8, 128, 107, + 248, 1, 141, 117, 116, 150, 22, 253, 172, 155, 166, 68, 66, 107, 166, 39, 16, 128, 226, 231, 7, + 208, 213, 28, 3, 145, 8, 142, 182, 219, 140, 204, 137, 194, 19, 33, 220, 86, 5, 79, 243, 3, + 108, 86, 130, 196, 11, 237, 205, 242, 248, 237, 38, 160, 146, 57, 8, 229, 79, 69, 0, 138, 155, + 31, 112, 13, 97, 116, 209, 122, 50, 58, 103, 51, 143, 7, 20, 156, 167, 78, 69, 23, 112, 29, + 63, 0, 29, 191, 130, 169, 19, 119, 20, 229, 32, 40, 252, 0, 225, 7, 8, 63, 64, 248, 1, + 194, 15, 16, 126, 128, 240, 3, 132, 31, 32, 252, 0, 225, 7, 56, 249, 105, 76, 248, 1, 194, + 15, 16, 126, 128, 240, 3, 132, 31, 32, 252, 0, 225, 7, 8, 63, 64, 248, 1, 194, 15, 80, + 91, 130, 240, 3, 132, 31, 32, 69, 138, 20, 41, 82, 164, 72, 137, 99, 142, 118, 204, 15, 48, + 118, 109, 232, 254, 34, 47, 59, 28, 31, 63, 0, 223, 195, 251, 142, 223, 61, 246, 230, 180, 113, + 53, 59, 142, 251, 180, 78, 187, 209, 247, 122, 201, 241, 196, 248, 1, 248, 30, 253, 189, 36, 175, + 237, 62, 21, 234, 118, 201, 133, 210, 159, 206, 253, 107, 240, 3, 10, 182, 221, 90, 108, 135, 7, + 94, 90, 15, 13, 50, 71, 192, 179, 237, 199, 253, 117, 248, 1, 5, 1, 240, 111, 132, 82, 190, + 249, 122, 78, 242, 62, 239, 207, 130, 173, 123, 14, 254, 53, 248, 1, 134, 221, 238, 255, 1, 170, + 251, 242, 244, 27, 165, 62, 25, 182, 24, 118, 238, 58, 144, 252, 252, 0, 245, 14, 181, 71, 125, + 211, 33, 77, 203, 191, 99, 236, 19, 28, 75, 246, 154, 126, 230, 74, 62, 126, 0, 62, 166, 215, + 50, 134, 224, 223, 222, 94, 5, 105, 153, 35, 245, 230, 255, 120, 179, 17, 208, 247, 211, 249, 201, + 207, 15, 208, 13, 95, 43, 51, 112, 1, 212, 238, 62, 177, 240, 62, 193, 204, 0, 116, 253, 104, + 14, 108, 218, 119, 40, 185, 249, 1, 252, 184, 92, 181, 238, 121, 131, 27, 52, 203, 222, 175, 222, + 44, 89, 251, 237, 233, 240, 84, 238, 242, 228, 230, 7, 240, 170, 239, 114, 180, 176, 155, 170, 43, + 245, 158, 188, 186, 212, 208, 133, 201, 201, 15, 80, 156, 167, 91, 234, 159, 203, 208, 2, 191, 133, + 104, 9, 52, 93, 91, 248, 82, 210, 242, 3, 148, 0, 144, 48, 98, 178, 145, 148, 77, 185, 141, + 158, 192, 10, 45, 148, 250, 36, 23, 63, 128, 157, 39, 33, 117, 38, 158, 237, 63, 44, 116, 3, + 71, 57, 7, 89, 9, 83, 221, 146, 131, 31, 192, 1, 184, 23, 109, 146, 162, 32, 15, 154, 2, + 240, 160, 85, 2, 102, 207, 243, 3, 148, 179, 223, 29, 237, 183, 48, 9, 93, 126, 16, 72, 53, + 82, 55, 66, 61, 189, 201, 15, 80, 2, 112, 51, 59, 105, 173, 28, 209, 244, 156, 132, 53, 163, + 212, 215, 123, 252, 0, 118, 254, 124, 180, 246, 166, 36, 139, 102, 219, 233, 228, 150, 121, 207, 241, + 3, 56, 0, 85, 117, 134, 64, 33, 51, 4, 44, 164, 52, 219, 12, 148, 142, 131, 32, 120, 138, + 31, 64, 125, 255, 83, 180, 61, 17, 101, 180, 90, 96, 102, 44, 226, 73, 175, 240, 3, 78, 99, + 237, 208, 1, 7, 185, 135, 9, 164, 114, 79, 12, 1, 112, 55, 63, 128, 3, 112, 45, 139, 166, + 130, 97, 208, 132, 112, 174, 192, 2, 59, 150, 80, 132, 32, 184, 151, 31, 192, 1, 104, 108, 164, + 225, 182, 104, 250, 65, 37, 16, 68, 152, 152, 103, 181, 6, 136, 18, 0, 247, 242, 3, 56, 0, + 185, 104, 7, 29, 202, 103, 9, 182, 112, 126, 28, 171, 88, 215, 242, 3, 202, 20, 140, 246, 90, + 88, 158, 225, 160, 5, 75, 224, 61, 82, 144, 197, 17, 0, 23, 242, 3, 180, 192, 237, 104, 159, + 56, 72, 188, 110, 172, 4, 233, 194, 104, 32, 5, 46, 142, 0, 184, 139, 31, 192, 45, 160, 121, + 1, 62, 35, 146, 118, 184, 176, 133, 252, 129, 54, 48, 129, 43, 89, 119, 240, 3, 244, 244, 219, + 190, 172, 51, 240, 184, 216, 22, 157, 99, 223, 18, 186, 39, 16, 0, 151, 240, 3, 180, 192, 57, + 36, 131, 199, 32, 28, 82, 207, 176, 186, 244, 101, 108, 134, 85, 215, 240, 161, 157, 19, 103, 0, + 92, 194, 15, 208, 2, 247, 163, 19, 163, 109, 174, 246, 130, 182, 52, 169, 38, 195, 15, 96, 96, + 90, 38, 208, 2, 92, 194, 15, 240, 5, 90, 161, 237, 112, 48, 248, 153, 255, 78, 252, 128, 182, + 9, 4, 160, 248, 249, 1, 74, 16, 30, 65, 123, 153, 23, 54, 209, 240, 57, 198, 107, 251, 104, + 209, 148, 64, 0, 220, 199, 15, 224, 96, 92, 136, 205, 187, 33, 30, 7, 161, 109, 44, 88, 10, + 211, 62, 160, 22, 134, 215, 120, 48, 222, 28, 3, 94, 226, 7, 220, 141, 214, 142, 183, 197, 78, + 40, 173, 128, 56, 2, 21, 78, 69, 23, 112, 13, 63, 128, 87, 139, 53, 121, 5, 152, 141, 173, + 160, 78, 81, 14, 130, 158, 227, 7, 96, 16, 206, 72, 32, 0, 194, 15, 16, 126, 128, 240, 3, + 132, 31, 32, 252, 0, 225, 7, 8, 63, 64, 248, 1, 194, 15, 16, 126, 128, 240, 3, 132, 31, + 32, 252, 0, 225, 7, 8, 63, 32, 190, 47, 17, 126, 128, 240, 3, 132, 31, 32, 252, 0, 181, + 37, 8, 63, 64, 248, 1, 82, 164, 72, 145, 34, 69, 138, 148, 56, 230, 232, 152, 249, 1, 94, + 119, 56, 97, 126, 0, 255, 47, 125, 198, 255, 101, 248, 2, 87, 121, 197, 241, 34, 227, 7, 24, + 226, 203, 210, 31, 206, 129, 234, 93, 115, 127, 170, 214, 61, 239, 45, 55, 55, 239, 162, 227, 7, + 180, 204, 255, 45, 130, 254, 151, 62, 35, 163, 199, 215, 144, 209, 49, 23, 170, 12, 248, 250, 175, + 193, 15, 40, 144, 234, 248, 183, 193, 245, 254, 181, 144, 230, 203, 134, 198, 45, 70, 194, 224, 111, + 55, 252, 53, 248, 1, 134, 93, 135, 206, 151, 201, 156, 173, 223, 48, 245, 242, 219, 211, 97, 199, + 158, 131, 127, 13, 126, 128, 254, 24, 207, 126, 201, 204, 69, 80, 71, 27, 173, 223, 53, 246, 233, + 23, 223, 192, 142, 223, 14, 36, 55, 63, 160, 225, 231, 191, 234, 239, 169, 254, 206, 14, 120, 176, + 195, 90, 168, 217, 100, 156, 126, 75, 109, 67, 127, 54, 12, 250, 234, 91, 56, 124, 248, 88, 114, + 243, 3, 232, 111, 244, 158, 170, 159, 45, 129, 250, 61, 166, 22, 220, 51, 248, 116, 171, 28, 248, + 106, 212, 178, 228, 231, 7, 232, 127, 27, 182, 168, 111, 133, 55, 167, 174, 169, 239, 15, 213, 17, + 190, 156, 179, 20, 54, 236, 61, 148, 188, 252, 0, 163, 232, 170, 146, 252, 132, 75, 5, 206, 167, + 53, 205, 130, 199, 6, 206, 131, 134, 185, 203, 147, 147, 31, 160, 56, 95, 130, 244, 132, 216, 239, + 127, 83, 239, 35, 198, 0, 252, 80, 254, 221, 25, 211, 146, 150, 31, 160, 59, 175, 5, 254, 193, + 55, 85, 31, 86, 157, 231, 123, 134, 73, 97, 122, 103, 82, 242, 3, 148, 179, 95, 10, 237, 11, + 38, 71, 168, 98, 10, 82, 153, 124, 99, 170, 91, 242, 240, 3, 148, 0, 188, 102, 206, 62, 167, + 216, 71, 104, 103, 155, 234, 232, 125, 126, 128, 210, 239, 203, 226, 89, 255, 57, 68, 53, 18, 74, + 147, 104, 107, 37, 162, 246, 60, 63, 128, 251, 62, 165, 219, 251, 42, 66, 58, 78, 26, 16, 91, + 71, 168, 175, 55, 249, 1, 124, 246, 41, 29, 111, 19, 150, 200, 217, 9, 168, 55, 225, 241, 153, + 40, 245, 246, 30, 63, 128, 10, 14, 112, 85, 56, 29, 103, 36, 29, 17, 101, 170, 190, 51, 90, + 250, 93, 79, 241, 3, 248, 236, 159, 129, 205, 60, 11, 143, 123, 109, 50, 207, 6, 185, 27, 172, + 64, 187, 210, 233, 216, 229, 122, 126, 0, 59, 79, 91, 92, 53, 208, 254, 116, 160, 34, 27, 129, + 118, 187, 195, 0, 184, 159, 31, 192, 1, 40, 135, 103, 119, 148, 197, 148, 23, 84, 206, 190, 49, + 27, 12, 143, 133, 33, 224, 122, 126, 0, 7, 224, 3, 116, 112, 183, 85, 0, 20, 69, 41, 5, + 225, 48, 62, 31, 18, 227, 26, 198, 189, 252, 0, 158, 243, 9, 158, 242, 171, 42, 159, 13, 33, + 200, 104, 97, 74, 210, 214, 177, 74, 231, 92, 201, 15, 224, 0, 220, 130, 54, 214, 166, 217, 171, + 193, 80, 91, 66, 141, 88, 249, 194, 238, 228, 7, 228, 15, 124, 109, 245, 172, 242, 249, 163, 123, + 208, 129, 148, 126, 53, 30, 99, 70, 233, 186, 149, 31, 80, 79, 151, 206, 106, 150, 121, 198, 237, + 22, 65, 203, 48, 88, 143, 198, 121, 49, 231, 14, 126, 0, 59, 127, 54, 218, 4, 70, 231, 196, + 194, 15, 216, 149, 128, 124, 222, 37, 252, 0, 95, 224, 223, 120, 182, 27, 133, 73, 228, 11, 31, + 7, 149, 181, 127, 208, 52, 16, 18, 97, 242, 220, 56, 3, 224, 18, 126, 64, 254, 168, 63, 201, + 114, 181, 23, 189, 59, 188, 137, 118, 89, 156, 1, 112, 13, 63, 224, 14, 116, 240, 75, 203, 129, + 174, 240, 138, 207, 28, 132, 32, 3, 22, 95, 75, 64, 61, 238, 30, 126, 0, 7, 226, 98, 194, + 99, 90, 48, 4, 236, 140, 250, 255, 75, 9, 108, 231, 185, 147, 31, 160, 180, 138, 94, 120, 252, + 57, 194, 116, 120, 4, 173, 90, 180, 171, 192, 162, 8, 64, 113, 243, 3, 30, 67, 251, 24, 237, + 119, 83, 0, 8, 165, 119, 107, 2, 45, 192, 91, 252, 0, 125, 153, 172, 5, 26, 42, 192, 149, + 25, 104, 15, 37, 16, 0, 239, 242, 3, 208, 241, 75, 208, 42, 197, 131, 209, 138, 103, 26, 20, + 126, 128, 240, 3, 132, 31, 32, 252, 0, 225, 7, 8, 63, 64, 248, 1, 194, 15, 16, 126, 128, + 240, 3, 132, 31, 32, 252, 128, 130, 190, 36, 252, 0, 225, 7, 8, 63, 64, 248, 1, 194, 15, + 72, 17, 126, 128, 241, 5, 194, 15, 16, 126, 64, 138, 240, 3, 164, 72, 145, 34, 69, 138, 20, + 41, 113, 207, 209, 194, 15, 72, 132, 31, 224, 37, 199, 139, 156, 31, 192, 251, 14, 36, 139, 173, + 159, 225, 11, 252, 39, 158, 228, 75, 167, 162, 121, 159, 52, 126, 0, 125, 22, 125, 102, 249, 65, + 139, 160, 90, 183, 188, 253, 53, 58, 143, 159, 80, 165, 231, 196, 115, 220, 226, 252, 73, 227, 7, + 24, 70, 159, 245, 104, 239, 29, 144, 214, 125, 62, 52, 106, 63, 30, 106, 188, 59, 227, 175, 193, + 15, 48, 118, 164, 47, 245, 111, 133, 155, 50, 127, 130, 6, 77, 2, 208, 184, 249, 8, 24, 186, + 240, 151, 191, 6, 63, 192, 120, 126, 139, 127, 53, 60, 234, 155, 174, 223, 60, 213, 235, 221, 153, + 176, 115, 247, 193, 36, 231, 7, 188, 155, 63, 110, 208, 255, 94, 238, 223, 12, 229, 155, 204, 128, + 6, 190, 108, 61, 0, 195, 70, 44, 133, 93, 232, 124, 82, 243, 3, 232, 189, 244, 63, 233, 67, + 215, 65, 253, 110, 139, 160, 126, 230, 72, 221, 249, 231, 91, 143, 134, 236, 113, 63, 36, 57, 63, + 32, 255, 61, 243, 30, 24, 182, 16, 202, 127, 240, 53, 164, 53, 205, 46, 184, 167, 248, 127, 109, + 71, 195, 188, 69, 27, 146, 155, 31, 96, 148, 212, 86, 57, 169, 245, 94, 24, 249, 93, 254, 125, + 196, 124, 243, 36, 14, 128, 131, 151, 110, 74, 94, 126, 128, 81, 72, 34, 131, 70, 170, 178, 125, + 234, 13, 213, 213, 187, 228, 66, 217, 33, 11, 146, 147, 31, 160, 56, 255, 47, 78, 189, 181, 223, + 124, 23, 121, 221, 54, 163, 190, 120, 240, 179, 249, 139, 147, 146, 31, 192, 206, 159, 142, 86, 157, + 147, 176, 5, 195, 238, 29, 214, 2, 237, 185, 110, 201, 199, 15, 224, 0, 84, 228, 166, 111, 165, + 45, 160, 155, 169, 31, 81, 234, 152, 28, 252, 0, 118, 220, 72, 201, 61, 90, 207, 71, 174, 89, + 10, 168, 104, 64, 188, 200, 84, 79, 239, 243, 3, 168, 224, 217, 189, 8, 251, 122, 243, 176, 164, + 172, 161, 40, 141, 1, 120, 188, 198, 162, 190, 222, 229, 7, 40, 45, 32, 13, 109, 149, 133, 114, + 212, 48, 26, 16, 95, 195, 64, 157, 110, 83, 111, 111, 242, 3, 216, 249, 114, 5, 220, 32, 205, + 82, 69, 10, 156, 179, 212, 23, 229, 228, 121, 139, 31, 192, 206, 159, 85, 208, 239, 77, 205, 222, + 156, 130, 147, 81, 27, 81, 199, 46, 79, 240, 3, 216, 249, 75, 209, 41, 159, 193, 16, 40, 56, + 219, 154, 69, 255, 111, 50, 60, 15, 143, 87, 59, 24, 191, 188, 193, 15, 208, 7, 62, 95, 214, + 19, 232, 212, 18, 43, 209, 148, 133, 142, 208, 113, 18, 118, 175, 240, 3, 40, 155, 236, 20, 11, + 165, 184, 213, 12, 64, 20, 153, 94, 49, 76, 225, 238, 229, 7, 176, 243, 255, 64, 135, 115, 76, + 42, 177, 96, 132, 124, 196, 148, 127, 184, 110, 140, 11, 57, 151, 242, 3, 180, 192, 101, 232, 188, + 47, 236, 140, 107, 17, 19, 49, 211, 178, 248, 162, 88, 244, 131, 174, 228, 7, 240, 217, 127, 22, + 7, 180, 69, 182, 205, 93, 179, 148, 212, 126, 129, 199, 27, 98, 108, 1, 238, 226, 7, 48, 58, + 227, 191, 104, 115, 85, 80, 74, 20, 118, 128, 193, 16, 162, 1, 240, 159, 113, 92, 204, 185, 138, + 31, 64, 77, 120, 8, 218, 65, 243, 104, 79, 103, 219, 86, 61, 174, 233, 250, 225, 14, 113, 94, + 205, 186, 134, 31, 112, 9, 58, 146, 105, 110, 218, 54, 200, 12, 8, 131, 171, 104, 129, 251, 226, + 12, 128, 107, 248, 1, 15, 163, 45, 48, 53, 237, 160, 9, 150, 16, 180, 105, 1, 243, 173, 46, + 128, 28, 6, 192, 29, 252, 0, 14, 194, 29, 104, 3, 204, 211, 156, 185, 233, 171, 12, 33, 62, + 126, 138, 118, 125, 156, 1, 112, 23, 63, 160, 160, 59, 248, 2, 47, 163, 237, 180, 165, 199, 21, + 158, 253, 125, 104, 239, 37, 176, 157, 231, 106, 126, 192, 105, 232, 28, 93, 255, 175, 84, 160, 105, + 230, 41, 144, 22, 64, 207, 159, 138, 0, 20, 55, 63, 32, 3, 131, 49, 203, 180, 253, 69, 203, + 99, 66, 104, 92, 77, 83, 232, 201, 238, 2, 174, 224, 7, 16, 47, 136, 201, 113, 70, 16, 136, + 32, 115, 75, 2, 45, 192, 155, 252, 0, 101, 192, 252, 40, 94, 130, 76, 172, 211, 160, 43, 249, + 1, 116, 209, 148, 224, 143, 58, 194, 15, 16, 126, 128, 240, 3, 132, 31, 32, 252, 0, 225, 7, + 8, 63, 64, 248, 1, 194, 15, 16, 126, 128, 240, 3, 132, 31, 32, 252, 0, 225, 7, 196, 249, + 37, 194, 15, 16, 126, 128, 240, 3, 132, 31, 160, 182, 4, 225, 7, 8, 63, 64, 138, 20, 41, + 82, 164, 72, 145, 18, 199, 28, 45, 252, 0, 225, 7, 20, 1, 63, 192, 205, 205, 251, 164, 243, + 3, 202, 230, 95, 134, 211, 133, 78, 219, 212, 86, 57, 215, 187, 2, 164, 112, 202, 248, 1, 248, + 153, 244, 217, 244, 29, 229, 135, 45, 133, 42, 61, 39, 30, 172, 209, 121, 252, 24, 12, 194, 5, + 197, 229, 248, 41, 227, 7, 168, 45, 163, 100, 183, 237, 80, 191, 251, 55, 58, 72, 161, 90, 159, + 41, 127, 13, 126, 64, 129, 76, 215, 191, 25, 254, 227, 95, 5, 105, 90, 22, 60, 209, 34, 7, + 250, 207, 248, 49, 249, 249, 1, 234, 103, 221, 145, 185, 28, 42, 251, 38, 233, 55, 81, 189, 222, + 127, 54, 108, 219, 115, 48, 185, 249, 1, 244, 191, 244, 25, 119, 117, 220, 174, 83, 36, 200, 121, + 227, 110, 210, 49, 19, 87, 194, 239, 251, 15, 39, 47, 63, 128, 254, 135, 254, 247, 177, 47, 151, + 66, 157, 207, 87, 64, 70, 155, 60, 72, 99, 138, 196, 11, 93, 243, 96, 230, 188, 117, 201, 205, + 15, 224, 45, 174, 231, 202, 246, 159, 181, 168, 90, 143, 9, 250, 29, 164, 105, 116, 107, 61, 90, + 243, 206, 227, 97, 203, 182, 223, 147, 151, 31, 96, 20, 202, 55, 140, 14, 127, 152, 158, 159, 120, + 173, 224, 78, 210, 103, 94, 159, 6, 203, 182, 255, 158, 156, 252, 0, 197, 249, 51, 89, 45, 178, + 73, 189, 155, 156, 90, 65, 185, 190, 51, 161, 202, 136, 111, 147, 143, 31, 160, 56, 127, 57, 158, + 249, 103, 241, 120, 212, 66, 96, 53, 231, 177, 55, 167, 125, 153, 148, 252, 0, 37, 0, 164, 44, + 91, 17, 150, 137, 210, 23, 56, 134, 175, 79, 33, 9, 78, 82, 241, 3, 20, 199, 75, 160, 131, + 141, 241, 56, 223, 70, 68, 117, 4, 255, 222, 89, 169, 103, 114, 240, 3, 168, 160, 99, 255, 64, + 39, 111, 68, 39, 183, 226, 227, 35, 22, 1, 32, 93, 193, 30, 166, 201, 157, 102, 10, 130, 183, + 249, 1, 122, 0, 154, 12, 47, 143, 142, 229, 68, 209, 16, 103, 91, 37, 98, 247, 52, 63, 128, + 155, 254, 61, 104, 67, 13, 45, 177, 13, 72, 129, 32, 10, 239, 219, 221, 69, 238, 85, 126, 128, + 193, 16, 200, 102, 72, 130, 57, 31, 185, 170, 38, 163, 100, 237, 79, 71, 27, 187, 60, 195, 15, + 224, 126, 79, 155, 26, 157, 104, 186, 83, 212, 98, 65, 203, 1, 80, 11, 172, 199, 199, 127, 139, + 164, 33, 246, 20, 63, 128, 129, 73, 148, 139, 124, 123, 4, 229, 184, 250, 248, 29, 12, 216, 37, + 14, 6, 113, 247, 243, 3, 56, 0, 228, 252, 210, 104, 138, 82, 254, 59, 37, 96, 109, 233, 68, + 64, 229, 5, 126, 0, 101, 161, 47, 143, 103, 147, 242, 144, 159, 176, 26, 245, 45, 70, 255, 213, + 216, 5, 170, 196, 176, 142, 113, 39, 63, 128, 3, 64, 185, 132, 231, 152, 154, 120, 80, 213, 14, + 155, 154, 62, 5, 105, 118, 140, 43, 89, 215, 242, 3, 42, 163, 147, 35, 149, 51, 30, 116, 152, + 138, 187, 101, 44, 34, 42, 55, 242, 3, 8, 146, 246, 79, 62, 243, 251, 172, 70, 121, 213, 97, + 147, 243, 63, 162, 213, 140, 227, 98, 206, 85, 252, 0, 90, 190, 246, 215, 167, 59, 11, 74, 132, + 149, 148, 94, 9, 194, 84, 90, 40, 197, 17, 0, 215, 240, 3, 174, 65, 167, 95, 182, 28, 240, + 52, 107, 21, 185, 137, 32, 49, 52, 206, 203, 121, 215, 240, 3, 206, 64, 107, 99, 49, 181, 69, + 66, 103, 4, 149, 247, 213, 140, 51, 0, 238, 225, 7, 112, 32, 110, 65, 27, 102, 177, 232, 9, + 70, 8, 196, 60, 180, 187, 226, 12, 128, 251, 248, 1, 28, 136, 178, 4, 81, 50, 161, 242, 66, + 90, 134, 242, 124, 16, 218, 181, 113, 6, 192, 189, 252, 0, 14, 68, 58, 218, 247, 22, 23, 61, + 134, 237, 194, 32, 245, 72, 96, 63, 211, 51, 252, 128, 22, 124, 61, 16, 52, 117, 139, 67, 24, + 156, 251, 18, 8, 128, 119, 248, 1, 180, 200, 65, 123, 197, 52, 67, 16, 102, 239, 194, 4, 2, + 224, 61, 126, 0, 245, 119, 28, 3, 62, 229, 22, 208, 9, 131, 112, 126, 2, 1, 240, 46, 63, + 0, 157, 191, 77, 37, 200, 198, 25, 0, 225, 7, 8, 63, 64, 248, 1, 194, 15, 16, 126, 128, + 240, 3, 132, 31, 32, 252, 0, 225, 7, 8, 63, 64, 248, 1, 194, 15, 16, 126, 128, 240, 3, + 226, 252, 18, 225, 7, 8, 63, 64, 248, 1, 194, 15, 80, 91, 130, 240, 3, 132, 31, 32, 69, + 138, 20, 41, 82, 164, 72, 137, 99, 142, 22, 126, 128, 240, 3, 132, 31, 80, 116, 252, 0, 215, + 116, 147, 98, 225, 7, 124, 185, 204, 216, 225, 109, 150, 225, 11, 156, 93, 92, 142, 23, 15, 63, + 0, 191, 131, 190, 139, 190, 147, 190, 187, 226, 107, 83, 214, 213, 122, 105, 236, 43, 241, 164, 227, + 74, 196, 249, 98, 225, 7, 24, 70, 223, 69, 32, 133, 180, 222, 75, 33, 237, 165, 241, 80, 181, + 231, 68, 120, 224, 243, 133, 221, 79, 213, 200, 94, 108, 252, 128, 130, 0, 248, 127, 133, 91, 253, + 43, 161, 129, 47, 27, 158, 106, 53, 18, 218, 141, 88, 146, 228, 252, 128, 78, 74, 64, 253, 91, + 225, 110, 223, 18, 168, 238, 203, 213, 239, 40, 123, 231, 227, 185, 176, 105, 207, 193, 36, 230, 7, + 240, 84, 74, 159, 121, 79, 231, 29, 112, 159, 239, 27, 116, 62, 79, 119, 254, 233, 150, 57, 48, + 103, 193, 122, 56, 244, 199, 145, 228, 229, 7, 232, 159, 129, 159, 85, 246, 179, 69, 80, 231, 189, + 249, 144, 238, 31, 161, 43, 200, 41, 0, 47, 191, 57, 29, 126, 88, 189, 45, 121, 249, 1, 70, + 41, 215, 119, 102, 229, 74, 175, 78, 90, 148, 138, 103, 220, 184, 153, 178, 113, 243, 108, 232, 59, + 112, 126, 242, 242, 3, 168, 24, 26, 65, 60, 118, 231, 20, 189, 33, 247, 19, 127, 52, 117, 117, + 114, 242, 3, 148, 0, 92, 128, 246, 66, 186, 47, 203, 172, 45, 132, 26, 157, 199, 195, 131, 131, + 231, 39, 39, 63, 128, 157, 39, 85, 105, 38, 103, 166, 62, 81, 32, 169, 203, 239, 255, 187, 107, + 117, 24, 251, 37, 206, 253, 199, 146, 138, 31, 96, 52, 123, 180, 191, 163, 189, 74, 122, 65, 43, + 57, 13, 190, 246, 3, 6, 162, 122, 82, 241, 3, 148, 0, 144, 196, 166, 55, 218, 122, 155, 12, + 149, 199, 209, 198, 40, 245, 77, 14, 126, 0, 59, 127, 75, 134, 198, 250, 34, 205, 86, 67, 76, + 127, 171, 65, 173, 68, 169, 183, 183, 249, 1, 236, 252, 149, 120, 134, 233, 204, 111, 141, 0, 80, + 32, 27, 143, 118, 159, 69, 221, 189, 199, 15, 96, 199, 41, 41, 243, 25, 216, 167, 41, 191, 224, + 186, 48, 120, 66, 40, 72, 97, 47, 90, 95, 180, 115, 236, 198, 46, 79, 241, 3, 168, 160, 227, + 55, 235, 137, 88, 181, 192, 33, 43, 237, 176, 169, 21, 236, 198, 247, 212, 140, 112, 2, 189, 195, + 15, 208, 207, 190, 166, 103, 151, 124, 133, 7, 54, 136, 144, 141, 222, 8, 6, 165, 225, 60, 61, + 202, 56, 230, 25, 126, 0, 77, 117, 67, 57, 187, 124, 129, 144, 210, 54, 13, 183, 47, 112, 24, + 237, 41, 180, 115, 163, 4, 192, 221, 252, 0, 118, 254, 90, 206, 41, 122, 48, 66, 18, 246, 160, + 138, 208, 65, 155, 141, 193, 169, 232, 112, 42, 119, 53, 63, 224, 1, 180, 215, 163, 56, 109, 150, + 213, 19, 76, 45, 160, 242, 131, 162, 4, 192, 125, 252, 0, 90, 225, 225, 25, 188, 14, 143, 195, + 57, 171, 124, 84, 29, 177, 210, 29, 254, 196, 199, 181, 98, 188, 148, 118, 21, 63, 224, 52, 210, + 0, 114, 94, 225, 93, 97, 200, 12, 53, 0, 154, 37, 72, 97, 44, 30, 99, 82, 175, 186, 141, + 31, 240, 48, 243, 3, 66, 29, 212, 66, 179, 77, 135, 77, 127, 90, 65, 10, 238, 151, 240, 249, + 191, 98, 12, 128, 107, 248, 1, 231, 162, 245, 226, 169, 46, 104, 179, 192, 9, 207, 68, 95, 216, + 10, 136, 42, 87, 59, 142, 203, 121, 119, 240, 3, 56, 8, 167, 51, 28, 17, 98, 178, 252, 32, + 77, 142, 115, 63, 195, 93, 252, 0, 14, 68, 21, 180, 31, 34, 78, 121, 225, 173, 161, 94, 36, + 122, 84, 132, 0, 184, 147, 31, 192, 129, 120, 195, 230, 108, 155, 109, 34, 90, 201, 56, 91, 128, + 235, 249, 1, 148, 109, 254, 59, 155, 169, 143, 90, 196, 239, 156, 132, 253, 188, 147, 29, 128, 226, + 230, 7, 188, 98, 211, 29, 126, 67, 139, 251, 231, 112, 175, 241, 3, 30, 65, 91, 104, 10, 196, + 228, 68, 126, 249, 245, 42, 63, 160, 59, 59, 79, 83, 230, 255, 136, 59, 150, 64, 0, 188, 201, + 15, 224, 107, 133, 119, 105, 198, 72, 240, 71, 29, 111, 243, 3, 162, 93, 247, 23, 217, 82, 248, + 84, 93, 12, 157, 226, 155, 55, 132, 31, 32, 252, 0, 225, 7, 8, 63, 64, 248, 1, 194, 15, + 16, 126, 128, 240, 3, 132, 31, 32, 252, 0, 225, 7, 8, 63, 64, 248, 1, 137, 124, 129, 240, + 3, 132, 31, 144, 34, 252, 0, 181, 37, 8, 63, 64, 248, 1, 82, 164, 72, 145, 34, 69, 138, + 148, 56, 230, 104, 225, 7, 8, 63, 64, 248, 1, 194, 15, 40, 114, 126, 64, 113, 58, 238, 10, + 126, 0, 139, 53, 75, 159, 106, 231, 139, 159, 31, 208, 61, 191, 69, 80, 29, 168, 46, 143, 189, + 57, 109, 96, 134, 22, 184, 247, 84, 140, 236, 197, 206, 15, 48, 140, 190, 155, 182, 238, 51, 250, + 45, 215, 149, 164, 213, 187, 228, 254, 84, 163, 203, 248, 235, 79, 150, 243, 174, 224, 7, 168, 223, + 67, 32, 133, 155, 253, 63, 66, 106, 230, 104, 120, 250, 197, 177, 80, 169, 239, 204, 36, 231, 7, + 40, 183, 240, 92, 233, 223, 4, 247, 248, 190, 131, 26, 190, 241, 250, 109, 117, 111, 125, 52, 55, + 185, 249, 1, 244, 153, 244, 217, 105, 31, 111, 133, 91, 95, 220, 1, 165, 51, 231, 64, 77, 223, + 56, 221, 121, 127, 135, 177, 176, 106, 205, 14, 216, 127, 248, 104, 114, 242, 3, 232, 179, 232, 51, + 239, 31, 182, 8, 202, 14, 156, 7, 105, 221, 166, 65, 154, 191, 144, 37, 48, 96, 200, 66, 216, + 180, 101, 111, 242, 241, 3, 204, 5, 7, 184, 46, 53, 59, 141, 219, 169, 230, 39, 205, 196, 179, + 63, 113, 198, 79, 201, 201, 15, 48, 10, 171, 75, 73, 50, 55, 35, 52, 53, 103, 0, 124, 61, + 38, 192, 129, 35, 71, 147, 143, 31, 160, 56, 127, 53, 218, 147, 44, 157, 9, 73, 217, 153, 158, + 25, 128, 114, 56, 242, 127, 240, 221, 198, 228, 225, 7, 152, 156, 191, 3, 29, 238, 200, 169, 247, + 194, 4, 21, 245, 91, 142, 152, 81, 250, 163, 57, 7, 146, 138, 31, 160, 52, 249, 107, 88, 101, + 182, 209, 70, 82, 179, 25, 3, 209, 41, 169, 248, 1, 84, 208, 41, 202, 76, 125, 43, 218, 215, + 44, 154, 176, 18, 88, 81, 2, 215, 159, 177, 27, 92, 193, 245, 246, 62, 63, 64, 57, 251, 79, + 179, 84, 6, 162, 104, 139, 52, 146, 221, 43, 117, 247, 38, 63, 128, 157, 54, 196, 149, 212, 223, + 23, 89, 57, 110, 18, 87, 230, 162, 149, 180, 26, 187, 60, 199, 15, 224, 102, 127, 35, 58, 214, + 153, 71, 250, 104, 98, 106, 66, 234, 244, 193, 0, 156, 109, 225, 131, 183, 248, 1, 124, 246, 41, + 11, 237, 91, 49, 232, 9, 183, 163, 243, 247, 71, 104, 197, 222, 224, 7, 176, 243, 101, 72, 27, + 132, 45, 96, 159, 157, 132, 182, 32, 51, 125, 225, 243, 174, 145, 84, 228, 94, 225, 7, 92, 66, + 103, 30, 29, 219, 66, 217, 101, 163, 144, 35, 212, 215, 230, 162, 61, 72, 211, 100, 148, 217, 204, + 213, 252, 128, 139, 40, 213, 46, 58, 191, 196, 36, 156, 12, 218, 41, 200, 21, 128, 74, 63, 180, + 75, 29, 172, 101, 92, 201, 15, 56, 157, 71, 250, 126, 44, 136, 182, 84, 139, 154, 29, 55, 132, + 148, 248, 58, 225, 117, 28, 221, 143, 232, 58, 126, 0, 7, 128, 50, 201, 126, 194, 139, 155, 208, + 126, 173, 89, 76, 123, 161, 253, 158, 158, 15, 112, 74, 144, 48, 166, 68, 55, 241, 3, 234, 162, + 147, 67, 98, 81, 142, 155, 90, 194, 42, 238, 251, 127, 139, 33, 0, 238, 224, 7, 112, 0, 238, + 164, 181, 187, 221, 0, 71, 103, 59, 66, 139, 56, 130, 246, 49, 218, 13, 49, 94, 209, 186, 135, + 31, 192, 65, 184, 130, 151, 184, 65, 171, 179, 29, 1, 159, 67, 129, 123, 42, 142, 253, 12, 247, + 241, 3, 56, 16, 111, 132, 244, 243, 40, 36, 9, 90, 246, 198, 185, 161, 227, 106, 126, 192, 19, + 220, 180, 33, 10, 71, 96, 39, 62, 175, 24, 75, 223, 87, 2, 224, 122, 126, 192, 93, 104, 223, + 88, 156, 113, 245, 249, 80, 194, 109, 197, 217, 2, 220, 207, 15, 192, 190, 79, 235, 130, 193, 54, + 83, 33, 109, 120, 180, 78, 96, 67, 215, 59, 252, 0, 116, 244, 5, 139, 203, 95, 226, 9, 156, + 149, 64, 0, 188, 197, 15, 192, 22, 80, 129, 48, 154, 10, 84, 45, 3, 143, 103, 38, 16, 0, + 239, 241, 3, 208, 249, 139, 209, 105, 66, 230, 141, 180, 162, 70, 198, 24, 0, 239, 242, 3, 104, + 213, 87, 4, 191, 38, 9, 63, 64, 248, 1, 194, 15, 16, 126, 128, 240, 3, 132, 31, 32, 252, + 0, 225, 7, 8, 63, 64, 248, 1, 194, 15, 16, 126, 128, 240, 3, 226, 253, 18, 225, 7, 8, + 63, 64, 248, 1, 194, 15, 80, 91, 130, 240, 3, 132, 31, 32, 69, 138, 20, 41, 82, 164, 72, + 137, 99, 142, 22, 126, 128, 240, 3, 132, 31, 32, 252, 0, 225, 7, 8, 63, 224, 36, 241, 3, + 226, 222, 247, 139, 99, 100, 119, 29, 63, 128, 234, 98, 12, 148, 85, 122, 78, 188, 242, 100, 57, + 239, 58, 126, 128, 97, 84, 23, 218, 189, 46, 51, 120, 33, 96, 0, 182, 213, 110, 55, 186, 89, + 81, 59, 239, 58, 126, 128, 250, 189, 151, 249, 183, 192, 173, 47, 108, 132, 6, 173, 167, 64, 106, + 199, 113, 80, 225, 245, 169, 187, 146, 151, 31, 128, 223, 65, 63, 212, 26, 223, 127, 181, 127, 3, + 220, 145, 185, 28, 170, 249, 242, 160, 97, 211, 17, 208, 241, 157, 25, 80, 187, 16, 162, 144, 100, + 252, 0, 189, 155, 124, 163, 127, 87, 89, 252, 206, 27, 154, 174, 133, 50, 153, 179, 161, 166, 150, + 15, 82, 104, 209, 105, 60, 172, 221, 184, 59, 121, 249, 1, 220, 77, 230, 149, 26, 60, 31, 42, + 127, 56, 31, 26, 180, 202, 133, 84, 95, 142, 126, 135, 249, 147, 45, 115, 96, 244, 196, 149, 176, + 123, 207, 193, 228, 227, 7, 168, 133, 196, 23, 213, 186, 229, 77, 75, 109, 149, 163, 220, 90, 63, + 28, 186, 191, 57, 13, 150, 175, 218, 150, 124, 252, 0, 197, 241, 179, 208, 30, 226, 28, 100, 155, + 212, 123, 139, 27, 54, 205, 130, 236, 220, 31, 146, 143, 31, 160, 56, 127, 115, 134, 22, 72, 199, + 163, 89, 103, 168, 91, 205, 78, 227, 224, 227, 165, 155, 146, 135, 31, 96, 114, 158, 164, 181, 111, + 163, 109, 179, 18, 88, 164, 249, 179, 54, 148, 235, 59, 243, 207, 7, 134, 46, 76, 14, 126, 128, + 226, 248, 121, 104, 181, 210, 155, 12, 95, 134, 125, 125, 151, 141, 158, 136, 36, 120, 67, 49, 0, + 45, 147, 134, 31, 192, 206, 151, 68, 107, 141, 118, 140, 146, 46, 155, 181, 68, 74, 86, 202, 221, + 70, 86, 58, 79, 243, 3, 76, 206, 215, 69, 251, 10, 109, 127, 20, 77, 17, 137, 174, 58, 169, + 89, 233, 60, 203, 15, 160, 130, 77, 253, 42, 166, 66, 108, 209, 147, 178, 107, 129, 104, 217, 232, + 73, 87, 112, 175, 154, 145, 214, 147, 252, 0, 118, 190, 146, 158, 144, 61, 223, 233, 19, 118, 73, + 216, 11, 90, 128, 22, 88, 143, 129, 233, 128, 118, 150, 133, 31, 222, 224, 7, 24, 103, 142, 82, + 107, 162, 35, 83, 245, 254, 174, 69, 76, 193, 171, 142, 1, 243, 73, 136, 105, 183, 108, 118, 61, + 63, 192, 88, 209, 161, 117, 97, 253, 224, 177, 136, 26, 98, 45, 36, 23, 57, 173, 3, 202, 71, + 98, 8, 184, 154, 31, 192, 77, 190, 17, 58, 48, 196, 172, 24, 85, 250, 123, 48, 164, 21, 132, + 182, 140, 215, 209, 174, 138, 50, 157, 187, 144, 31, 160, 233, 236, 128, 127, 162, 209, 200, 189, 212, + 82, 52, 109, 223, 228, 141, 241, 128, 164, 116, 245, 28, 94, 74, 187, 142, 31, 64, 205, 246, 125, + 230, 129, 157, 176, 65, 100, 4, 237, 196, 213, 220, 244, 223, 139, 101, 57, 239, 38, 126, 0, 193, + 19, 198, 219, 136, 164, 131, 209, 6, 61, 14, 194, 2, 106, 65, 49, 4, 192, 61, 252, 0, 14, + 194, 243, 42, 47, 36, 100, 101, 103, 230, 133, 104, 97, 45, 131, 214, 6, 141, 99, 73, 196, 236, + 58, 126, 0, 7, 161, 126, 88, 19, 215, 108, 193, 73, 42, 64, 129, 160, 106, 119, 199, 186, 121, + 226, 86, 126, 192, 163, 188, 134, 55, 186, 66, 208, 110, 169, 203, 143, 247, 225, 241, 201, 56, 54, + 116, 92, 205, 15, 184, 155, 104, 112, 17, 70, 124, 213, 250, 199, 185, 163, 229, 122, 126, 0, 241, + 2, 23, 71, 92, 246, 250, 2, 115, 24, 158, 114, 250, 201, 12, 64, 177, 241, 3, 104, 80, 67, + 155, 100, 195, 12, 220, 134, 175, 245, 193, 199, 23, 198, 217, 2, 188, 195, 15, 64, 39, 135, 155, + 206, 252, 113, 146, 210, 163, 221, 147, 200, 14, 178, 183, 248, 1, 190, 192, 7, 166, 5, 209, 83, + 234, 165, 110, 28, 1, 240, 30, 63, 0, 29, 126, 133, 3, 240, 41, 218, 117, 9, 254, 134, 224, + 77, 126, 0, 58, 78, 187, 191, 79, 23, 193, 143, 40, 222, 229, 7, 196, 51, 234, 199, 125, 49, + 84, 28, 151, 195, 167, 224, 62, 6, 225, 7, 8, 63, 64, 248, 1, 194, 15, 16, 126, 128, 240, + 3, 132, 31, 32, 252, 0, 225, 7, 8, 63, 64, 248, 1, 194, 15, 16, 126, 64, 162, 95, 32, + 252, 0, 225, 7, 164, 8, 63, 192, 248, 18, 225, 7, 72, 145, 34, 69, 138, 20, 41, 82, 226, + 153, 163, 133, 31, 32, 252, 0, 225, 7, 8, 63, 64, 248, 1, 194, 15, 16, 126, 192, 201, 229, + 7, 156, 180, 25, 195, 11, 252, 0, 22, 117, 21, 253, 134, 136, 219, 249, 1, 122, 107, 192, 58, + 209, 238, 53, 213, 145, 234, 90, 181, 199, 132, 244, 162, 60, 243, 174, 229, 7, 168, 193, 184, 186, + 197, 54, 189, 142, 181, 94, 155, 9, 213, 186, 229, 237, 175, 243, 98, 130, 36, 9, 87, 243, 3, + 94, 221, 169, 255, 86, 105, 212, 227, 74, 255, 38, 184, 193, 255, 51, 84, 240, 79, 135, 39, 94, + 24, 13, 169, 157, 115, 161, 244, 199, 115, 86, 37, 37, 63, 224, 126, 94, 101, 210, 119, 83, 29, + 110, 244, 175, 129, 7, 51, 231, 67, 117, 45, 87, 191, 209, 178, 201, 139, 99, 224, 243, 185, 107, + 147, 147, 31, 192, 117, 211, 239, 5, 120, 112, 240, 124, 72, 127, 109, 9, 212, 242, 141, 133, 122, + 190, 145, 186, 243, 255, 107, 51, 10, 190, 94, 176, 30, 126, 251, 253, 112, 114, 241, 3, 212, 146, + 161, 5, 254, 142, 131, 220, 187, 213, 122, 228, 169, 218, 35, 120, 186, 101, 14, 12, 196, 46, 178, + 105, 243, 222, 228, 226, 7, 20, 56, 238, 11, 156, 67, 119, 143, 163, 125, 72, 57, 202, 211, 245, + 187, 202, 57, 0, 153, 1, 104, 213, 53, 23, 150, 44, 223, 146, 92, 252, 0, 197, 249, 59, 208, + 210, 208, 150, 232, 218, 98, 11, 149, 201, 219, 163, 150, 37, 15, 63, 128, 157, 46, 193, 70, 247, + 15, 127, 102, 3, 81, 208, 133, 22, 149, 123, 77, 132, 170, 195, 191, 73, 14, 126, 0, 247, 243, + 115, 209, 177, 255, 160, 245, 102, 102, 200, 31, 54, 114, 122, 10, 192, 132, 10, 111, 78, 253, 50, + 41, 248, 1, 124, 230, 175, 70, 107, 133, 150, 27, 69, 81, 74, 206, 19, 93, 162, 165, 49, 118, + 121, 150, 31, 192, 142, 255, 27, 237, 17, 60, 171, 211, 204, 162, 42, 59, 137, 45, 190, 254, 174, + 105, 157, 224, 61, 126, 0, 59, 79, 114, 186, 151, 208, 14, 132, 101, 164, 213, 108, 3, 65, 137, + 25, 111, 85, 83, 114, 123, 134, 31, 192, 78, 255, 141, 143, 237, 169, 31, 51, 60, 193, 172, 39, + 12, 83, 149, 113, 16, 190, 103, 53, 234, 153, 230, 101, 179, 87, 248, 1, 87, 178, 36, 110, 20, + 218, 94, 43, 217, 172, 69, 74, 94, 35, 8, 199, 56, 29, 247, 153, 54, 221, 217, 221, 252, 0, + 172, 248, 195, 156, 129, 122, 169, 131, 228, 203, 86, 66, 234, 41, 120, 252, 187, 157, 168, 202, 149, + 252, 0, 118, 156, 64, 41, 207, 161, 173, 161, 172, 210, 97, 162, 233, 200, 129, 48, 206, 254, 119, + 104, 149, 209, 254, 17, 229, 82, 218, 61, 252, 0, 26, 164, 208, 26, 162, 125, 196, 78, 253, 25, + 97, 100, 143, 36, 167, 223, 138, 246, 22, 218, 229, 78, 150, 243, 174, 225, 7, 112, 16, 90, 57, + 109, 226, 54, 118, 28, 91, 204, 55, 104, 55, 57, 92, 210, 187, 139, 31, 192, 65, 24, 162, 80, + 34, 130, 150, 138, 113, 251, 0, 172, 231, 65, 211, 233, 53, 141, 251, 248, 1, 28, 132, 108, 171, + 181, 124, 88, 151, 208, 194, 154, 62, 165, 231, 190, 56, 150, 205, 19, 87, 242, 3, 56, 8, 121, + 14, 225, 9, 6, 59, 100, 124, 172, 153, 168, 221, 206, 15, 56, 3, 109, 166, 69, 43, 8, 233, + 30, 220, 34, 104, 113, 84, 45, 142, 93, 35, 215, 243, 3, 254, 197, 252, 0, 203, 254, 79, 83, + 36, 6, 128, 156, 247, 197, 185, 109, 230, 9, 126, 192, 21, 104, 43, 108, 154, 254, 81, 12, 194, + 71, 120, 188, 61, 206, 0, 120, 131, 31, 128, 14, 222, 68, 35, 188, 105, 77, 64, 252, 0, 2, + 41, 166, 38, 178, 131, 236, 25, 126, 0, 51, 69, 118, 40, 253, 159, 2, 208, 54, 193, 157, 99, + 111, 241, 3, 248, 250, 192, 216, 235, 235, 199, 99, 68, 34, 1, 240, 30, 63, 0, 29, 174, 196, + 216, 220, 74, 234, 53, 126, 156, 1, 240, 38, 63, 32, 26, 41, 46, 134, 223, 21, 133, 31, 32, + 252, 0, 225, 7, 8, 63, 64, 248, 1, 194, 15, 16, 126, 128, 240, 3, 132, 31, 32, 252, 0, + 225, 7, 8, 63, 64, 248, 1, 241, 126, 129, 240, 3, 132, 31, 144, 34, 252, 0, 181, 37, 8, + 63, 64, 248, 1, 82, 164, 72, 145, 34, 69, 138, 148, 56, 230, 104, 225, 7, 8, 63, 64, 248, + 1, 194, 15, 16, 126, 128, 240, 3, 132, 31, 32, 252, 0, 225, 7, 156, 10, 126, 64, 145, 109, + 137, 121, 137, 31, 64, 117, 163, 58, 86, 206, 191, 177, 43, 241, 77, 81, 47, 241, 3, 10, 56, + 2, 45, 242, 131, 64, 117, 46, 253, 209, 156, 85, 169, 173, 114, 106, 36, 242, 197, 158, 224, 7, + 132, 12, 186, 254, 173, 112, 109, 139, 205, 80, 175, 199, 18, 168, 221, 113, 28, 84, 239, 146, 251, + 83, 134, 47, 112, 125, 92, 83, 157, 219, 249, 1, 100, 84, 7, 170, 11, 213, 233, 58, 255, 58, + 184, 35, 115, 57, 60, 234, 155, 6, 13, 155, 142, 128, 103, 59, 140, 133, 71, 223, 157, 145, 124, + 252, 0, 174, 35, 221, 19, 112, 148, 178, 206, 103, 124, 250, 43, 60, 208, 28, 47, 180, 124, 83, + 160, 182, 111, 76, 193, 61, 199, 99, 102, 172, 73, 46, 126, 128, 185, 84, 234, 61, 249, 249, 242, + 239, 206, 56, 84, 19, 155, 122, 122, 147, 236, 2, 197, 137, 214, 118, 52, 140, 155, 188, 26, 246, + 254, 254, 71, 242, 240, 3, 140, 130, 78, 158, 141, 78, 158, 69, 130, 105, 180, 177, 13, 88, 126, + 103, 72, 240, 158, 107, 61, 18, 250, 15, 94, 0, 235, 54, 236, 246, 62, 63, 192, 40, 74, 154, + 238, 123, 57, 111, 233, 68, 206, 78, 31, 34, 191, 163, 99, 243, 46, 121, 240, 211, 186, 223, 188, + 207, 15, 80, 156, 255, 7, 229, 30, 67, 107, 141, 14, 142, 204, 208, 236, 33, 10, 117, 95, 24, + 5, 77, 71, 46, 133, 29, 7, 15, 123, 155, 31, 160, 56, 127, 31, 159, 241, 89, 156, 168, 213, + 78, 83, 172, 139, 169, 43, 188, 49, 117, 77, 153, 97, 11, 189, 203, 15, 96, 167, 207, 66, 135, + 232, 216, 142, 36, 118, 216, 183, 119, 217, 74, 106, 11, 143, 36, 182, 120, 183, 92, 223, 153, 245, + 61, 203, 15, 48, 245, 113, 74, 182, 186, 51, 138, 152, 82, 85, 154, 81, 202, 206, 115, 217, 15, + 239, 240, 3, 216, 105, 234, 223, 103, 51, 67, 32, 192, 0, 133, 232, 82, 218, 66, 205, 97, 54, + 139, 178, 75, 24, 203, 102, 79, 240, 3, 216, 249, 123, 24, 141, 179, 156, 212, 161, 17, 50, 209, + 7, 109, 94, 35, 237, 97, 42, 117, 27, 211, 9, 117, 47, 63, 128, 117, 255, 23, 160, 117, 224, + 51, 126, 204, 98, 112, 11, 154, 130, 17, 180, 248, 219, 111, 52, 51, 216, 140, 103, 174, 229, 7, + 220, 133, 150, 193, 48, 164, 95, 213, 129, 76, 101, 9, 68, 104, 9, 170, 117, 54, 154, 189, 205, + 165, 180, 123, 248, 1, 236, 124, 101, 62, 227, 193, 48, 149, 104, 225, 66, 38, 24, 53, 0, 154, + 206, 19, 122, 27, 237, 218, 72, 170, 50, 55, 242, 3, 206, 98, 240, 9, 56, 144, 205, 7, 173, + 254, 134, 129, 57, 196, 171, 192, 199, 28, 44, 233, 93, 201, 15, 184, 39, 12, 145, 99, 51, 205, + 25, 93, 66, 93, 230, 226, 113, 15, 90, 45, 135, 215, 52, 174, 229, 7, 52, 180, 96, 135, 4, + 89, 44, 29, 30, 144, 194, 150, 176, 25, 31, 215, 117, 154, 146, 215, 237, 252, 128, 110, 106, 255, + 183, 27, 0, 149, 199, 27, 244, 117, 130, 22, 112, 172, 98, 119, 53, 63, 128, 131, 240, 133, 131, + 145, 158, 90, 195, 65, 12, 80, 14, 30, 111, 139, 113, 195, 196, 221, 252, 0, 116, 234, 111, 232, + 212, 55, 14, 166, 188, 5, 52, 226, 199, 177, 99, 228, 9, 126, 192, 237, 104, 191, 91, 0, 210, + 140, 199, 116, 21, 120, 103, 60, 34, 106, 47, 241, 3, 234, 21, 12, 118, 90, 200, 168, 255, 61, + 154, 159, 8, 115, 241, 238, 32, 123, 137, 31, 208, 65, 157, 18, 209, 241, 253, 188, 216, 57, 59, + 129, 77, 83, 207, 241, 3, 6, 43, 93, 128, 160, 169, 103, 36, 184, 107, 236, 73, 126, 192, 92, + 125, 118, 208, 244, 107, 134, 211, 19, 12, 128, 247, 248, 1, 232, 244, 37, 78, 87, 122, 14, 126, + 87, 20, 126, 128, 240, 3, 132, 31, 32, 252, 0, 225, 7, 8, 63, 64, 248, 1, 194, 15, 16, + 126, 128, 240, 3, 132, 31, 32, 252, 0, 225, 7, 196, 251, 5, 194, 15, 16, 126, 64, 138, 240, + 3, 212, 150, 32, 252, 0, 225, 7, 72, 145, 34, 69, 138, 20, 41, 82, 226, 152, 163, 133, 31, + 32, 252, 0, 225, 7, 8, 63, 64, 248, 1, 194, 15, 16, 126, 128, 240, 3, 132, 31, 32, 252, + 0, 231, 91, 92, 194, 15, 224, 122, 196, 197, 15, 72, 120, 91, 220, 139, 252, 0, 99, 186, 172, + 221, 119, 187, 49, 38, 228, 196, 61, 213, 121, 141, 31, 160, 118, 75, 170, 51, 213, 189, 212, 103, + 11, 160, 210, 171, 147, 72, 87, 120, 73, 76, 139, 28, 175, 240, 3, 168, 14, 84, 23, 53, 8, + 87, 100, 110, 130, 107, 252, 235, 225, 145, 54, 203, 161, 209, 75, 19, 160, 122, 183, 92, 168, 217, + 113, 92, 143, 88, 62, 220, 19, 252, 0, 245, 231, 113, 154, 6, 105, 65, 117, 155, 127, 5, 60, + 144, 185, 16, 42, 249, 38, 67, 70, 102, 22, 60, 243, 194, 72, 104, 244, 246, 116, 106, 9, 139, + 28, 175, 237, 221, 204, 15, 48, 151, 7, 63, 155, 95, 177, 244, 71, 115, 254, 44, 247, 254, 76, + 104, 208, 110, 42, 212, 108, 50, 22, 210, 124, 35, 244, 59, 207, 27, 102, 6, 32, 59, 111, 133, + 247, 249, 1, 230, 66, 25, 167, 89, 133, 86, 142, 210, 240, 166, 182, 202, 249, 198, 156, 201, 182, + 89, 199, 113, 48, 102, 226, 74, 248, 109, 247, 65, 111, 243, 3, 20, 167, 141, 99, 73, 180, 154, + 233, 190, 172, 65, 232, 52, 169, 200, 118, 229, 171, 73, 11, 157, 255, 95, 219, 81, 240, 209, 208, + 69, 176, 113, 243, 30, 111, 243, 3, 20, 231, 47, 66, 103, 111, 64, 123, 51, 189, 201, 240, 92, + 60, 110, 49, 233, 11, 66, 206, 126, 219, 247, 102, 194, 239, 166, 187, 68, 61, 195, 15, 96, 135, + 75, 240, 241, 86, 180, 167, 209, 222, 225, 92, 132, 251, 35, 201, 107, 211, 124, 89, 199, 170, 244, + 156, 8, 13, 71, 45, 133, 13, 123, 15, 121, 143, 31, 160, 59, 173, 233, 82, 120, 178, 46, 44, + 152, 250, 41, 154, 162, 156, 165, 119, 212, 21, 134, 150, 235, 59, 115, 138, 167, 248, 1, 202, 89, + 167, 12, 147, 207, 163, 189, 201, 137, 88, 255, 228, 212, 155, 78, 228, 244, 244, 222, 121, 104, 165, + 188, 198, 15, 184, 20, 207, 120, 41, 74, 173, 139, 246, 3, 218, 207, 138, 60, 62, 24, 53, 43, + 189, 86, 16, 140, 209, 104, 151, 41, 254, 184, 154, 31, 112, 14, 79, 99, 141, 41, 27, 61, 58, + 59, 219, 161, 92, 62, 104, 33, 175, 35, 29, 114, 14, 79, 135, 103, 42, 254, 184, 143, 31, 64, + 57, 68, 209, 30, 213, 7, 53, 45, 48, 141, 25, 33, 7, 237, 68, 211, 14, 16, 26, 199, 89, + 141, 94, 223, 230, 82, 218, 117, 252, 128, 179, 24, 118, 114, 220, 50, 211, 180, 179, 86, 160, 106, + 141, 127, 194, 32, 60, 26, 105, 57, 239, 42, 126, 0, 7, 33, 205, 228, 112, 48, 130, 106, 52, + 212, 233, 80, 81, 245, 44, 116, 190, 108, 36, 105, 157, 43, 249, 1, 28, 132, 15, 45, 251, 183, + 230, 8, 156, 66, 173, 103, 41, 90, 102, 52, 69, 169, 155, 249, 1, 103, 226, 25, 252, 201, 226, + 44, 7, 185, 105, 7, 13, 25, 173, 69, 139, 56, 132, 175, 55, 117, 122, 165, 232, 102, 126, 64, + 53, 43, 118, 136, 229, 153, 47, 108, 25, 107, 49, 64, 141, 156, 42, 74, 189, 192, 15, 120, 211, + 202, 81, 243, 216, 192, 173, 130, 22, 70, 109, 208, 98, 1, 40, 184, 155, 31, 192, 65, 248, 206, + 110, 206, 215, 3, 161, 113, 179, 207, 15, 214, 197, 49, 110, 150, 120, 130, 31, 80, 166, 64, 54, + 111, 51, 255, 227, 235, 221, 226, 220, 45, 242, 6, 63, 0, 207, 116, 247, 144, 190, 95, 216, 21, + 54, 227, 145, 254, 118, 77, 156, 0, 5, 79, 241, 3, 102, 155, 232, 112, 123, 48, 16, 195, 240, + 236, 223, 149, 192, 126, 161, 119, 248, 1, 232, 240, 221, 198, 128, 199, 51, 194, 87, 49, 109, 99, + 199, 176, 16, 114, 45, 63, 128, 71, 249, 227, 120, 230, 7, 232, 87, 137, 54, 156, 176, 88, 118, + 182, 61, 199, 15, 192, 22, 208, 146, 175, 236, 18, 117, 222, 155, 252, 128, 68, 177, 25, 137, 92, + 14, 11, 63, 64, 248, 1, 194, 15, 16, 126, 128, 240, 3, 132, 31, 32, 252, 0, 225, 7, 20, + 244, 37, 225, 7, 8, 63, 64, 248, 1, 194, 15, 16, 126, 64, 138, 240, 3, 140, 47, 16, 126, + 128, 240, 3, 82, 132, 31, 32, 69, 138, 20, 41, 82, 164, 72, 137, 123, 142, 22, 126, 128, 240, + 3, 132, 31, 32, 252, 0, 225, 7, 8, 63, 64, 248, 1, 194, 15, 16, 126, 128, 240, 3, 156, + 111, 113, 9, 63, 128, 235, 33, 252, 0, 174, 143, 240, 3, 184, 110, 142, 249, 1, 220, 21, 59, + 199, 188, 200, 241, 50, 63, 128, 2, 64, 245, 164, 186, 147, 15, 188, 78, 40, 29, 203, 135, 123, + 143, 31, 128, 117, 162, 5, 149, 185, 155, 210, 58, 129, 124, 41, 215, 119, 230, 202, 12, 95, 224, + 126, 39, 31, 234, 41, 126, 128, 122, 131, 4, 213, 141, 234, 168, 119, 81, 255, 122, 184, 193, 191, + 22, 74, 182, 88, 6, 141, 59, 76, 134, 218, 93, 198, 67, 141, 206, 227, 199, 80, 222, 227, 104, + 87, 117, 174, 231, 7, 88, 117, 135, 82, 159, 47, 132, 10, 159, 127, 11, 143, 118, 95, 7, 165, + 50, 23, 64, 217, 204, 89, 80, 61, 51, 79, 191, 253, 254, 169, 150, 57, 240, 220, 107, 83, 160, + 244, 71, 115, 118, 121, 150, 31, 96, 46, 44, 196, 60, 131, 148, 168, 233, 77, 134, 167, 87, 235, + 150, 55, 13, 207, 48, 16, 71, 160, 126, 102, 78, 129, 224, 226, 169, 22, 35, 32, 107, 204, 114, + 111, 243, 3, 20, 167, 245, 99, 186, 47, 235, 62, 124, 92, 145, 179, 79, 175, 194, 231, 43, 241, + 76, 31, 74, 55, 169, 77, 218, 245, 156, 8, 19, 166, 253, 8, 59, 119, 29, 240, 22, 63, 192, + 92, 240, 12, 95, 142, 14, 93, 199, 106, 179, 65, 104, 185, 104, 191, 176, 220, 230, 184, 89, 115, + 72, 122, 163, 231, 219, 141, 134, 156, 220, 31, 96, 215, 238, 131, 222, 226, 7, 240, 153, 38, 153, + 237, 185, 236, 116, 11, 116, 136, 68, 83, 51, 89, 76, 17, 85, 111, 92, 191, 85, 14, 244, 192, + 230, 238, 25, 126, 128, 194, 7, 161, 76, 180, 149, 208, 72, 31, 56, 128, 249, 32, 155, 236, 28, + 181, 144, 217, 158, 104, 208, 44, 123, 97, 185, 126, 179, 224, 169, 241, 203, 221, 207, 15, 208, 157, + 214, 2, 183, 232, 89, 233, 181, 64, 19, 116, 112, 42, 62, 158, 143, 182, 215, 86, 50, 111, 159, + 165, 158, 164, 244, 223, 146, 44, 255, 129, 207, 23, 78, 119, 51, 63, 224, 223, 108, 15, 163, 3, + 189, 209, 161, 207, 89, 24, 73, 14, 253, 25, 171, 154, 92, 17, 94, 82, 138, 222, 82, 236, 143, + 251, 248, 1, 236, 124, 85, 180, 182, 104, 99, 24, 136, 178, 75, 85, 142, 42, 98, 73, 48, 191, + 110, 40, 74, 11, 228, 182, 133, 45, 129, 242, 22, 15, 164, 204, 212, 212, 133, 148, 75, 105, 119, + 241, 3, 56, 0, 21, 209, 161, 19, 106, 158, 97, 135, 103, 56, 104, 243, 124, 55, 218, 72, 252, + 156, 114, 102, 109, 161, 43, 249, 1, 28, 132, 137, 49, 53, 109, 95, 196, 64, 13, 33, 226, 140, + 205, 180, 238, 90, 126, 64, 169, 16, 8, 82, 184, 100, 54, 104, 215, 255, 149, 46, 178, 145, 23, + 65, 231, 219, 169, 74, 93, 203, 15, 224, 133, 205, 7, 17, 32, 9, 102, 57, 189, 241, 190, 32, + 119, 31, 146, 209, 247, 193, 247, 220, 26, 237, 34, 201, 181, 252, 0, 116, 224, 34, 149, 10, 101, + 35, 154, 182, 154, 9, 142, 242, 153, 63, 203, 193, 5, 146, 235, 249, 1, 109, 84, 189, 48, 143, + 244, 118, 131, 93, 144, 231, 248, 6, 78, 156, 231, 0, 120, 130, 31, 176, 204, 228, 164, 21, 80, + 225, 8, 83, 162, 158, 143, 69, 79, 236, 21, 126, 64, 93, 7, 40, 157, 93, 248, 122, 163, 56, + 246, 8, 188, 193, 15, 64, 7, 71, 69, 152, 251, 199, 17, 81, 46, 222, 157, 34, 79, 240, 3, + 208, 193, 59, 45, 250, 60, 129, 18, 179, 209, 42, 163, 157, 29, 103, 0, 60, 197, 15, 120, 203, + 196, 10, 154, 65, 120, 141, 4, 183, 201, 188, 195, 15, 192, 41, 143, 174, 253, 119, 176, 243, 253, + 104, 47, 160, 8, 246, 9, 189, 197, 15, 64, 167, 51, 208, 94, 71, 251, 47, 237, 247, 37, 232, + 188, 103, 249, 1, 87, 20, 209, 46, 177, 240, 3, 132, 31, 32, 252, 0, 225, 7, 8, 63, 64, + 248, 1, 194, 15, 16, 126, 128, 240, 3, 132, 31, 32, 252, 0, 225, 7, 8, 63, 32, 209, 47, + 16, 126, 128, 240, 3, 82, 132, 31, 96, 124, 137, 240, 3, 164, 72, 145, 34, 69, 138, 20, 41, + 241, 204, 209, 194, 15, 16, 126, 128, 240, 3, 132, 31, 32, 252, 0, 225, 7, 8, 63, 64, 248, + 1, 194, 15, 16, 126, 128, 243, 45, 46, 225, 7, 112, 61, 132, 31, 192, 245, 17, 126, 0, 215, + 77, 248, 1, 194, 15, 72, 137, 141, 31, 224, 248, 231, 241, 100, 225, 7, 168, 139, 37, 242, 133, + 151, 205, 205, 156, 92, 213, 121, 146, 31, 160, 255, 64, 138, 117, 43, 243, 234, 206, 176, 53, 66, + 201, 110, 219, 243, 175, 29, 62, 158, 243, 91, 131, 102, 217, 37, 35, 125, 144, 103, 248, 1, 86, + 3, 35, 213, 173, 193, 23, 107, 225, 182, 23, 113, 101, 138, 227, 192, 141, 254, 53, 112, 139, 127, + 53, 220, 219, 116, 25, 52, 238, 60, 29, 234, 118, 210, 41, 18, 19, 212, 44, 213, 230, 15, 113, + 53, 63, 192, 170, 24, 55, 86, 147, 126, 176, 108, 191, 89, 63, 148, 31, 48, 23, 210, 94, 94, + 8, 21, 125, 83, 160, 146, 111, 50, 212, 111, 58, 86, 191, 13, 255, 201, 102, 35, 224, 233, 30, + 19, 136, 37, 178, 29, 159, 159, 110, 185, 147, 227, 86, 126, 128, 226, 108, 9, 69, 105, 126, 71, + 134, 22, 40, 137, 199, 90, 104, 253, 73, 93, 130, 205, 123, 89, 154, 47, 95, 135, 152, 230, 203, + 46, 208, 29, 53, 121, 113, 12, 4, 198, 46, 135, 47, 86, 110, 241, 6, 63, 64, 117, 152, 143, + 36, 182, 190, 7, 237, 38, 180, 38, 104, 67, 117, 201, 44, 37, 97, 206, 119, 242, 176, 149, 222, + 232, 137, 230, 57, 240, 242, 219, 51, 96, 246, 130, 95, 96, 207, 222, 67, 238, 229, 7, 176, 147, + 234, 227, 235, 210, 155, 12, 191, 3, 143, 15, 114, 222, 209, 175, 88, 63, 180, 131, 53, 133, 135, + 156, 72, 108, 219, 190, 60, 17, 230, 125, 179, 1, 14, 31, 57, 230, 62, 126, 128, 194, 3, 57, + 3, 141, 24, 2, 87, 177, 138, 236, 93, 180, 207, 88, 14, 15, 76, 140, 56, 102, 163, 37, 12, + 85, 155, 105, 249, 175, 53, 104, 154, 253, 103, 157, 222, 147, 97, 196, 202, 45, 174, 228, 7, 92, + 130, 118, 3, 25, 86, 188, 25, 26, 201, 104, 135, 41, 233, 184, 247, 133, 52, 103, 205, 86, 63, + 108, 165, 55, 36, 101, 233, 55, 56, 210, 7, 202, 12, 158, 15, 29, 191, 94, 227, 58, 126, 0, + 57, 255, 30, 243, 3, 8, 126, 178, 23, 155, 243, 65, 11, 141, 112, 88, 42, 238, 130, 188, 228, + 246, 250, 194, 32, 139, 170, 159, 171, 240, 250, 212, 43, 93, 201, 15, 208, 155, 124, 147, 225, 19, + 28, 242, 2, 130, 17, 4, 214, 230, 215, 72, 135, 252, 49, 218, 213, 234, 114, 222, 149, 252, 0, + 60, 123, 85, 157, 128, 18, 148, 179, 28, 41, 16, 164, 50, 91, 141, 214, 135, 83, 247, 254, 77, + 9, 128, 59, 249, 1, 220, 21, 102, 69, 160, 66, 216, 182, 6, 101, 176, 51, 254, 118, 24, 237, + 5, 154, 38, 45, 166, 117, 247, 242, 3, 176, 194, 169, 97, 103, 92, 165, 195, 216, 228, 33, 87, + 6, 198, 63, 240, 61, 195, 89, 98, 87, 194, 238, 34, 201, 181, 252, 0, 61, 8, 90, 96, 113, + 36, 225, 180, 205, 64, 71, 0, 133, 205, 76, 147, 42, 27, 73, 74, 239, 5, 126, 192, 19, 81, + 48, 25, 86, 127, 163, 245, 64, 15, 180, 139, 29, 92, 28, 121, 130, 31, 176, 34, 10, 36, 5, + 120, 90, 60, 202, 252, 176, 10, 39, 3, 160, 80, 156, 252, 128, 38, 33, 131, 159, 86, 64, 147, + 80, 71, 254, 189, 250, 50, 88, 11, 212, 196, 163, 227, 29, 94, 47, 241, 3, 126, 41, 128, 35, + 89, 244, 123, 124, 237, 61, 28, 240, 174, 138, 103, 167, 200, 43, 252, 128, 23, 194, 150, 189, 90, + 224, 56, 58, 62, 11, 29, 111, 20, 175, 146, 220, 51, 252, 0, 38, 67, 110, 87, 230, 250, 67, + 12, 84, 107, 140, 118, 65, 2, 59, 68, 222, 225, 7, 160, 163, 157, 148, 38, 79, 92, 176, 132, + 127, 220, 244, 20, 63, 0, 155, 60, 1, 20, 102, 161, 243, 45, 241, 120, 249, 95, 146, 31, 192, + 44, 145, 203, 138, 104, 131, 84, 248, 1, 194, 15, 16, 126, 128, 240, 3, 132, 31, 32, 252, 0, + 225, 7, 8, 63, 64, 248, 1, 194, 15, 16, 126, 128, 240, 3, 132, 31, 144, 232, 23, 8, 63, + 64, 248, 1, 41, 194, 15, 48, 190, 68, 248, 1, 82, 164, 72, 145, 34, 69, 138, 148, 120, 230, + 104, 225, 7, 8, 63, 64, 248, 1, 194, 15, 16, 126, 128, 240, 3, 132, 31, 32, 252, 0, 225, + 7, 8, 63, 192, 249, 22, 151, 240, 3, 184, 30, 194, 15, 224, 250, 8, 63, 128, 235, 38, 252, + 0, 225, 7, 164, 8, 63, 64, 13, 130, 240, 3, 34, 242, 3, 208, 23, 221, 167, 104, 183, 200, + 36, 5, 63, 0, 235, 72, 107, 18, 245, 228, 209, 181, 3, 249, 196, 87, 145, 17, 111, 146, 242, + 28, 63, 192, 60, 118, 81, 29, 169, 174, 161, 179, 194, 246, 2, 138, 68, 169, 33, 11, 54, 100, + 248, 2, 87, 90, 238, 228, 184, 157, 31, 96, 87, 12, 33, 182, 62, 30, 124, 190, 16, 106, 14, + 91, 1, 247, 116, 222, 1, 215, 250, 127, 129, 255, 248, 87, 229, 83, 36, 154, 45, 131, 39, 122, + 204, 134, 58, 93, 114, 161, 102, 167, 113, 159, 90, 46, 122, 188, 112, 171, 172, 9, 162, 112, 53, + 218, 245, 104, 231, 161, 85, 71, 107, 89, 165, 231, 196, 239, 170, 247, 154, 4, 25, 109, 243, 160, + 186, 47, 23, 170, 249, 242, 32, 163, 233, 200, 124, 138, 68, 203, 28, 120, 188, 203, 120, 168, 248, + 218, 148, 197, 33, 153, 44, 221, 192, 15, 176, 113, 246, 28, 194, 93, 80, 101, 57, 99, 53, 105, + 5, 31, 225, 4, 238, 164, 21, 254, 132, 185, 2, 187, 210, 155, 12, 39, 182, 192, 166, 124, 209, + 69, 120, 222, 226, 150, 120, 230, 191, 26, 183, 28, 122, 127, 253, 179, 187, 248, 1, 252, 248, 92, + 230, 7, 156, 149, 161, 5, 254, 195, 201, 23, 159, 69, 107, 129, 142, 12, 38, 73, 60, 218, 52, + 180, 229, 236, 16, 233, 7, 15, 24, 66, 43, 179, 220, 62, 93, 17, 93, 249, 59, 140, 133, 126, + 131, 230, 195, 210, 31, 182, 192, 254, 3, 135, 93, 193, 15, 184, 6, 173, 36, 55, 221, 58, 76, + 136, 120, 19, 29, 253, 16, 143, 139, 208, 126, 67, 251, 145, 143, 134, 90, 244, 184, 34, 167, 13, + 70, 208, 25, 134, 234, 143, 253, 89, 240, 121, 246, 18, 248, 69, 145, 205, 20, 43, 63, 128, 3, + 240, 56, 218, 20, 180, 157, 104, 127, 80, 243, 101, 150, 64, 88, 234, 109, 147, 140, 62, 90, 102, + 122, 69, 100, 29, 216, 89, 189, 107, 46, 52, 30, 254, 45, 108, 216, 123, 200, 93, 252, 0, 37, + 251, 188, 21, 43, 32, 81, 35, 133, 233, 74, 180, 94, 101, 6, 204, 254, 190, 206, 200, 37, 238, + 227, 7, 112, 16, 22, 89, 52, 227, 160, 85, 2, 246, 40, 108, 1, 48, 41, 79, 71, 227, 177, + 18, 159, 88, 87, 243, 3, 90, 68, 232, 191, 193, 144, 129, 77, 179, 5, 42, 128, 2, 89, 249, + 26, 173, 41, 37, 109, 53, 228, 244, 110, 231, 7, 252, 59, 18, 254, 38, 66, 203, 8, 90, 140, + 1, 148, 164, 57, 13, 237, 124, 243, 69, 146, 219, 249, 1, 195, 204, 205, 93, 17, 77, 91, 82, + 36, 76, 77, 127, 33, 154, 207, 78, 99, 232, 5, 126, 64, 21, 101, 74, 11, 154, 30, 23, 206, + 233, 161, 244, 24, 154, 18, 183, 162, 17, 61, 162, 54, 218, 133, 234, 122, 194, 20, 0, 79, 240, + 3, 126, 138, 101, 6, 192, 96, 108, 193, 160, 116, 82, 105, 49, 17, 46, 140, 60, 193, 15, 232, + 234, 96, 126, 39, 199, 215, 225, 241, 3, 102, 134, 156, 225, 240, 202, 208, 253, 252, 0, 98, 134, + 69, 33, 71, 0, 51, 67, 122, 176, 180, 182, 68, 44, 59, 69, 94, 225, 7, 140, 47, 232, 6, + 161, 4, 169, 61, 104, 164, 36, 191, 45, 206, 189, 1, 207, 240, 3, 26, 154, 206, 60, 93, 228, + 204, 161, 75, 91, 198, 231, 157, 22, 103, 0, 60, 197, 15, 216, 105, 90, 205, 85, 181, 164, 62, + 198, 184, 59, 228, 29, 126, 64, 62, 10, 107, 42, 83, 35, 18, 254, 121, 219, 115, 252, 0, 134, + 38, 212, 54, 175, 230, 18, 8, 128, 240, 3, 132, 31, 32, 252, 0, 225, 7, 8, 63, 64, 248, + 1, 194, 15, 16, 126, 128, 240, 3, 132, 31, 32, 252, 0, 225, 7, 8, 63, 32, 209, 47, 16, + 126, 128, 240, 3, 82, 132, 31, 96, 124, 137, 240, 3, 164, 72, 145, 34, 69, 138, 20, 41, 241, + 204, 209, 194, 15, 16, 126, 128, 240, 3, 132, 31, 32, 252, 0, 225, 7, 8, 63, 64, 248, 1, + 194, 15, 16, 126, 128, 243, 45, 46, 225, 7, 112, 61, 132, 31, 192, 245, 17, 126, 0, 215, 77, + 248, 1, 194, 15, 72, 17, 126, 128, 26, 4, 225, 7, 8, 63, 64, 248, 1, 17, 248, 1, 161, + 173, 224, 23, 219, 157, 28, 175, 242, 3, 212, 241, 128, 234, 72, 43, 70, 243, 178, 153, 124, 34, + 223, 120, 83, 165, 190, 229, 162, 39, 89, 110, 149, 165, 186, 82, 157, 205, 20, 137, 71, 123, 239, + 208, 119, 150, 200, 215, 16, 237, 145, 91, 249, 1, 118, 69, 213, 14, 49, 99, 224, 159, 198, 107, + 21, 95, 159, 82, 239, 225, 143, 231, 66, 157, 207, 87, 192, 253, 29, 54, 234, 4, 137, 219, 50, + 87, 192, 77, 254, 159, 160, 100, 171, 21, 240, 68, 159, 5, 80, 249, 149, 73, 144, 218, 50, 167, + 110, 72, 243, 47, 142, 219, 229, 85, 57, 12, 157, 17, 114, 196, 120, 78, 137, 86, 209, 136, 37, + 112, 17, 233, 8, 50, 180, 64, 57, 214, 20, 148, 197, 199, 21, 210, 125, 89, 45, 88, 122, 223, + 158, 69, 85, 195, 240, 181, 233, 120, 28, 81, 187, 253, 152, 157, 245, 91, 143, 130, 244, 166, 57, + 80, 211, 55, 14, 82, 155, 141, 131, 134, 254, 108, 104, 228, 207, 130, 103, 219, 141, 134, 122, 93, + 115, 161, 122, 151, 220, 254, 106, 0, 78, 37, 63, 128, 96, 9, 213, 208, 202, 48, 13, 226, 127, + 232, 104, 71, 60, 182, 65, 235, 128, 78, 124, 202, 57, 134, 73, 28, 153, 69, 25, 170, 241, 181, + 93, 12, 79, 88, 134, 182, 155, 229, 53, 251, 136, 49, 192, 106, 210, 32, 39, 98, 255, 51, 95, + 119, 108, 173, 68, 107, 211, 35, 15, 250, 6, 190, 133, 39, 243, 245, 66, 197, 198, 15, 32, 6, + 200, 92, 146, 195, 113, 229, 247, 114, 210, 213, 19, 38, 25, 124, 36, 101, 121, 208, 78, 115, 108, + 38, 74, 60, 217, 98, 4, 116, 234, 61, 5, 178, 198, 126, 175, 131, 20, 214, 237, 58, 80, 188, + 252, 0, 61, 8, 90, 96, 84, 204, 108, 0, 205, 86, 104, 109, 150, 220, 134, 240, 8, 94, 122, + 119, 6, 44, 248, 118, 35, 236, 229, 219, 231, 221, 194, 15, 120, 62, 66, 130, 117, 176, 57, 219, + 249, 142, 106, 81, 161, 11, 127, 162, 253, 92, 171, 195, 216, 21, 213, 62, 153, 11, 131, 191, 255, + 213, 149, 252, 128, 43, 84, 86, 128, 169, 9, 7, 99, 164, 74, 168, 239, 163, 113, 96, 45, 13, + 140, 143, 190, 51, 189, 251, 35, 95, 45, 118, 39, 63, 128, 131, 48, 223, 166, 79, 7, 29, 1, + 82, 66, 187, 199, 239, 24, 56, 162, 204, 248, 141, 228, 236, 238, 231, 7, 68, 18, 78, 59, 85, + 147, 231, 183, 30, 66, 99, 13, 32, 116, 6, 101, 170, 86, 168, 82, 174, 231, 7, 220, 111, 69, + 136, 176, 76, 192, 30, 202, 18, 49, 222, 71, 142, 19, 122, 167, 180, 205, 138, 208, 19, 252, 128, + 245, 81, 16, 26, 193, 144, 209, 93, 211, 251, 248, 22, 90, 236, 176, 230, 248, 74, 59, 69, 185, + 39, 248, 1, 120, 22, 7, 56, 236, 235, 198, 107, 11, 208, 154, 227, 255, 93, 231, 224, 154, 192, + 19, 252, 128, 90, 81, 70, 123, 106, 234, 180, 242, 155, 78, 75, 95, 236, 10, 215, 57, 21, 85, + 123, 130, 31, 128, 206, 252, 13, 237, 136, 178, 156, 5, 245, 177, 30, 128, 38, 195, 63, 69, 163, + 1, 238, 188, 24, 175, 10, 61, 195, 15, 24, 109, 58, 235, 71, 176, 175, 211, 186, 255, 237, 120, + 225, 9, 28, 0, 111, 240, 3, 208, 201, 38, 33, 206, 227, 250, 0, 91, 1, 189, 118, 51, 181, + 144, 68, 118, 135, 60, 193, 15, 32, 140, 30, 58, 76, 228, 184, 49, 140, 209, 43, 145, 232, 103, + 122, 145, 31, 240, 52, 218, 67, 124, 169, 92, 20, 187, 66, 194, 15, 16, 126, 128, 240, 3, 132, + 31, 32, 252, 0, 225, 7, 8, 63, 64, 248, 1, 194, 15, 16, 126, 128, 240, 3, 132, 31, 32, + 252, 128, 68, 191, 64, 248, 1, 194, 15, 72, 17, 126, 128, 241, 37, 194, 15, 144, 34, 69, 138, + 20, 41, 82, 164, 196, 51, 71, 11, 63, 64, 248, 1, 194, 15, 16, 126, 128, 240, 3, 132, 31, + 32, 252, 0, 225, 7, 8, 63, 64, 248, 1, 206, 183, 184, 132, 31, 192, 245, 16, 126, 0, 215, + 71, 248, 1, 92, 55, 225, 7, 8, 63, 32, 69, 248, 1, 106, 16, 132, 31, 32, 252, 0, 225, + 7, 8, 63, 64, 248, 1, 236, 135, 53, 63, 128, 239, 108, 49, 248, 1, 225, 75, 94, 15, 241, + 3, 162, 46, 155, 177, 174, 84, 103, 170, 187, 121, 103, 137, 124, 100, 95, 254, 47, 164, 249, 23, + 19, 63, 224, 116, 179, 64, 194, 42, 197, 166, 249, 53, 86, 160, 219, 190, 135, 234, 74, 117, 174, + 215, 63, 220, 31, 242, 145, 253, 9, 185, 93, 254, 148, 10, 38, 176, 178, 15, 178, 58, 228, 17, + 102, 9, 60, 133, 246, 12, 90, 77, 254, 91, 77, 126, 173, 17, 115, 6, 74, 163, 165, 162, 61, + 137, 86, 15, 237, 62, 253, 127, 181, 64, 26, 26, 189, 167, 50, 218, 221, 104, 21, 232, 115, 171, + 244, 156, 56, 160, 220, 135, 115, 32, 227, 227, 149, 112, 155, 127, 37, 220, 158, 185, 28, 110, 197, + 227, 181, 254, 95, 160, 74, 207, 117, 144, 218, 127, 33, 84, 124, 109, 202, 196, 130, 236, 150, 167, + 90, 50, 131, 95, 252, 56, 218, 54, 214, 9, 253, 193, 169, 117, 215, 49, 28, 129, 20, 99, 135, + 248, 249, 47, 244, 56, 189, 201, 240, 63, 209, 209, 29, 248, 120, 13, 218, 70, 254, 191, 19, 44, + 155, 253, 49, 221, 151, 181, 149, 255, 143, 160, 10, 107, 210, 125, 129, 159, 27, 248, 179, 117, 29, + 82, 125, 255, 40, 168, 157, 57, 14, 26, 182, 200, 167, 72, 52, 110, 62, 2, 158, 236, 52, 14, + 170, 117, 203, 219, 169, 139, 178, 138, 133, 31, 144, 127, 150, 99, 209, 9, 231, 75, 106, 13, 249, + 188, 230, 80, 92, 109, 241, 190, 182, 61, 38, 64, 171, 1, 95, 67, 153, 15, 102, 67, 237, 246, + 99, 46, 40, 46, 126, 192, 105, 172, 243, 15, 169, 184, 67, 158, 64, 44, 114, 122, 200, 192, 179, + 222, 188, 115, 46, 188, 251, 201, 60, 152, 189, 224, 23, 216, 179, 247, 80, 241, 243, 3, 56, 8, + 243, 148, 172, 243, 5, 73, 151, 67, 130, 160, 69, 62, 155, 102, 103, 241, 179, 148, 96, 6, 32, + 205, 159, 5, 207, 247, 156, 8, 147, 103, 174, 129, 245, 155, 246, 192, 225, 35, 199, 92, 197, 15, + 120, 87, 81, 134, 135, 180, 2, 147, 90, 60, 104, 165, 34, 183, 105, 45, 198, 248, 177, 164, 222, + 11, 35, 71, 150, 197, 102, 222, 102, 250, 143, 174, 229, 7, 52, 42, 130, 230, 174, 183, 12, 35, + 24, 120, 92, 203, 44, 129, 90, 21, 222, 152, 90, 214, 237, 252, 128, 27, 34, 64, 17, 204, 205, + 62, 168, 18, 98, 10, 72, 49, 249, 127, 39, 209, 37, 241, 131, 58, 112, 130, 118, 131, 32, 225, + 9, 126, 192, 214, 2, 231, 76, 93, 193, 129, 81, 83, 255, 154, 29, 47, 73, 68, 41, 211, 138, + 208, 253, 252, 0, 150, 203, 198, 194, 11, 57, 198, 235, 128, 108, 94, 20, 93, 19, 1, 160, 224, + 9, 126, 64, 39, 171, 1, 205, 102, 128, 163, 69, 207, 23, 52, 118, 224, 223, 175, 117, 114, 101, + 232, 5, 126, 64, 69, 203, 49, 64, 83, 176, 56, 90, 224, 7, 60, 246, 227, 140, 244, 23, 56, + 213, 22, 123, 130, 31, 192, 20, 184, 160, 201, 105, 125, 121, 140, 175, 45, 194, 215, 122, 51, 60, + 45, 230, 31, 55, 188, 196, 15, 88, 174, 52, 251, 125, 232, 236, 28, 60, 118, 70, 123, 0, 237, + 236, 68, 118, 135, 188, 194, 15, 24, 200, 100, 24, 26, 16, 125, 104, 55, 21, 193, 158, 128, 119, + 248, 1, 204, 13, 120, 14, 237, 22, 180, 51, 139, 104, 83, 196, 59, 252, 0, 171, 13, 144, 34, + 8, 128, 240, 3, 132, 31, 32, 252, 0, 225, 7, 8, 63, 64, 248, 1, 194, 15, 16, 126, 128, + 240, 3, 132, 31, 32, 252, 0, 225, 7, 8, 63, 160, 40, 190, 64, 248, 1, 194, 15, 72, 17, + 126, 128, 20, 41, 82, 164, 72, 145, 34, 37, 238, 57, 90, 248, 1, 194, 15, 16, 126, 128, 240, + 3, 132, 31, 32, 252, 0, 225, 7, 8, 63, 64, 248, 1, 194, 15, 112, 190, 197, 37, 252, 0, + 174, 135, 240, 3, 184, 62, 194, 15, 224, 186, 9, 63, 64, 248, 1, 41, 194, 15, 80, 131, 32, + 252, 0, 225, 7, 8, 63, 64, 248, 1, 194, 15, 96, 63, 132, 31, 224, 29, 126, 128, 22, 72, + 113, 154, 68, 53, 198, 32, 228, 243, 3, 62, 216, 225, 90, 126, 0, 129, 19, 94, 68, 171, 203, + 74, 242, 71, 88, 64, 85, 134, 83, 109, 150, 224, 0, 157, 203, 66, 169, 115, 45, 64, 11, 41, + 118, 2, 42, 170, 43, 213, 153, 234, 126, 89, 179, 208, 147, 74, 62, 234, 45, 218, 36, 152, 56, + 229, 146, 25, 172, 252, 10, 116, 240, 4, 139, 164, 72, 253, 185, 20, 159, 207, 194, 35, 217, 18, + 52, 210, 14, 13, 73, 111, 50, 188, 39, 30, 219, 226, 223, 218, 225, 177, 13, 218, 179, 104, 143, + 161, 93, 202, 234, 211, 187, 208, 254, 203, 73, 152, 207, 52, 46, 165, 31, 24, 182, 16, 106, 127, + 185, 10, 238, 233, 108, 26, 208, 241, 57, 249, 90, 32, 153, 41, 46, 209, 20, 86, 118, 182, 141, + 72, 210, 72, 191, 125, 92, 73, 198, 30, 100, 208, 194, 86, 124, 109, 3, 6, 101, 7, 43, 205, + 54, 243, 231, 140, 196, 231, 195, 241, 152, 131, 175, 209, 241, 237, 74, 125, 38, 255, 82, 243, 189, + 185, 80, 251, 229, 31, 224, 142, 204, 229, 112, 155, 127, 5, 220, 224, 255, 25, 174, 107, 177, 25, + 7, 200, 13, 80, 106, 208, 124, 168, 219, 102, 212, 229, 197, 194, 15, 160, 130, 78, 12, 86, 69, + 146, 138, 88, 50, 24, 3, 39, 192, 252, 222, 227, 28, 168, 99, 249, 162, 106, 52, 127, 54, 212, + 201, 28, 3, 13, 90, 228, 66, 227, 214, 185, 240, 84, 235, 49, 240, 84, 155, 49, 80, 171, 91, + 30, 1, 20, 218, 21, 39, 63, 160, 75, 132, 228, 234, 102, 33, 101, 48, 74, 6, 122, 199, 127, + 107, 228, 207, 130, 103, 219, 141, 134, 122, 175, 76, 130, 170, 47, 79, 232, 94, 156, 252, 128, 70, + 49, 211, 32, 204, 103, 63, 66, 96, 210, 116, 133, 121, 254, 227, 38, 232, 240, 203, 111, 207, 128, + 175, 70, 46, 131, 21, 63, 110, 119, 13, 63, 160, 20, 159, 165, 96, 188, 236, 128, 200, 103, 63, + 112, 52, 181, 85, 14, 60, 217, 115, 34, 140, 158, 180, 74, 119, 252, 183, 221, 7, 225, 232, 177, + 63, 93, 195, 15, 184, 48, 74, 23, 8, 154, 1, 9, 42, 64, 133, 73, 19, 65, 243, 255, 226, + 235, 68, 146, 153, 89, 191, 197, 136, 55, 202, 12, 248, 26, 124, 19, 87, 184, 154, 31, 176, 39, + 66, 16, 130, 166, 51, 28, 180, 57, 235, 135, 48, 40, 68, 142, 24, 79, 227, 10, 254, 189, 44, + 30, 207, 247, 10, 63, 224, 219, 144, 209, 95, 139, 136, 193, 9, 42, 173, 64, 63, 243, 104, 191, + 225, 255, 143, 196, 215, 155, 179, 2, 245, 34, 99, 101, 233, 9, 126, 0, 58, 144, 165, 76, 103, + 65, 139, 179, 14, 42, 105, 6, 237, 48, 62, 255, 137, 57, 2, 180, 32, 186, 42, 2, 64, 193, + 19, 252, 128, 62, 150, 103, 62, 116, 6, 32, 84, 134, 209, 196, 187, 50, 54, 235, 106, 180, 51, + 162, 92, 15, 120, 130, 31, 240, 188, 29, 48, 133, 109, 55, 190, 62, 132, 185, 98, 183, 199, 34, + 167, 247, 4, 63, 128, 215, 244, 234, 42, 110, 23, 218, 2, 38, 70, 212, 53, 136, 48, 241, 238, + 14, 185, 158, 31, 192, 16, 148, 32, 243, 3, 166, 161, 245, 208, 233, 114, 90, 224, 122, 60, 254, + 35, 1, 231, 61, 197, 15, 232, 141, 14, 87, 137, 133, 15, 226, 32, 0, 158, 226, 7, 148, 56, + 25, 27, 34, 194, 15, 16, 126, 128, 240, 3, 132, 31, 32, 252, 0, 225, 7, 8, 63, 64, 248, + 1, 194, 15, 16, 126, 128, 240, 3, 132, 31, 144, 232, 23, 8, 63, 64, 248, 1, 41, 194, 15, + 48, 190, 68, 248, 1, 82, 164, 72, 145, 34, 69, 138, 148, 120, 230, 104, 225, 7, 8, 63, 64, + 248, 1, 194, 15, 16, 126, 128, 240, 3, 132, 31, 32, 252, 0, 225, 7, 8, 63, 192, 249, 22, + 151, 240, 3, 184, 30, 194, 15, 224, 250, 8, 63, 128, 235, 38, 252, 0, 225, 7, 164, 8, 63, + 64, 13, 130, 240, 3, 132, 31, 32, 252, 0, 225, 7, 8, 63, 128, 253, 16, 126, 128, 103, 248, + 1, 84, 56, 15, 121, 137, 34, 14, 130, 187, 249, 1, 236, 120, 169, 116, 95, 86, 203, 12, 45, + 80, 30, 31, 223, 200, 234, 145, 107, 88, 22, 127, 118, 130, 1, 112, 63, 63, 0, 157, 127, 146, + 117, 66, 164, 23, 58, 136, 207, 41, 187, 108, 54, 30, 251, 96, 80, 154, 163, 53, 198, 231, 117, + 8, 170, 128, 175, 221, 100, 78, 172, 236, 224, 82, 90, 175, 123, 152, 79, 46, 226, 7, 164, 42, + 74, 208, 2, 189, 160, 162, 32, 61, 136, 182, 18, 109, 6, 241, 1, 208, 62, 231, 132, 237, 109, + 57, 48, 55, 25, 34, 73, 38, 82, 156, 161, 226, 56, 168, 206, 84, 119, 242, 193, 60, 27, 144, + 175, 60, 163, 253, 189, 216, 248, 1, 88, 217, 10, 54, 82, 88, 59, 49, 245, 113, 124, 239, 126, + 22, 88, 173, 231, 68, 204, 164, 39, 156, 136, 246, 58, 218, 19, 104, 15, 163, 221, 129, 118, 219, + 35, 31, 126, 61, 248, 177, 207, 105, 77, 96, 45, 7, 124, 36, 127, 105, 124, 71, 113, 242, 3, + 238, 143, 146, 116, 217, 137, 106, 60, 104, 116, 35, 126, 237, 79, 162, 76, 96, 43, 154, 81, 183, + 205, 168, 57, 85, 95, 157, 2, 25, 125, 22, 193, 157, 153, 203, 224, 86, 255, 74, 157, 32, 113, + 133, 159, 127, 176, 201, 223, 48, 169, 81, 156, 252, 128, 155, 194, 156, 211, 18, 144, 209, 107, 182, + 50, 122, 72, 205, 28, 5, 245, 91, 228, 65, 70, 155, 41, 240, 116, 199, 233, 160, 245, 156, 1, + 169, 125, 166, 66, 181, 238, 121, 131, 139, 147, 31, 112, 113, 188, 220, 128, 16, 149, 169, 102, 33, + 174, 142, 242, 255, 79, 189, 48, 18, 50, 186, 230, 66, 141, 206, 227, 39, 20, 27, 63, 0, 155, + 233, 89, 81, 156, 139, 55, 40, 60, 168, 22, 190, 246, 124, 219, 81, 208, 169, 207, 20, 232, 63, + 120, 1, 140, 155, 188, 26, 190, 156, 253, 51, 52, 10, 124, 11, 15, 127, 58, 183, 119, 113, 243, + 3, 14, 71, 66, 103, 176, 98, 220, 30, 175, 17, 174, 55, 38, 89, 253, 159, 248, 63, 187, 210, + 51, 3, 107, 107, 117, 24, 11, 79, 190, 54, 5, 70, 78, 90, 9, 75, 150, 111, 129, 77, 91, + 246, 194, 129, 131, 71, 92, 197, 15, 216, 110, 57, 234, 107, 17, 206, 178, 102, 137, 207, 56, 129, + 207, 15, 224, 241, 87, 60, 18, 135, 232, 205, 58, 47, 142, 110, 87, 250, 227, 57, 208, 116, 242, + 42, 247, 242, 3, 176, 162, 107, 172, 166, 63, 229, 204, 7, 237, 88, 67, 74, 144, 86, 226, 227, + 79, 240, 248, 36, 167, 239, 254, 187, 113, 101, 232, 5, 126, 192, 55, 198, 34, 168, 192, 84, 148, + 70, 225, 25, 55, 22, 74, 191, 19, 117, 2, 109, 16, 39, 106, 191, 205, 110, 133, 232, 21, 126, + 192, 52, 181, 89, 91, 112, 4, 118, 235, 136, 45, 95, 96, 4, 6, 128, 148, 229, 105, 104, 37, + 153, 28, 113, 46, 95, 72, 217, 45, 135, 61, 193, 15, 24, 105, 48, 65, 120, 65, 67, 103, 120, + 61, 182, 130, 249, 120, 28, 206, 176, 165, 84, 230, 133, 93, 16, 11, 121, 206, 19, 252, 0, 198, + 105, 145, 227, 123, 49, 8, 223, 225, 241, 99, 166, 74, 208, 89, 142, 251, 39, 45, 207, 240, 3, + 176, 89, 215, 213, 251, 178, 166, 211, 224, 254, 81, 84, 159, 235, 25, 126, 192, 201, 128, 41, 26, + 27, 34, 194, 15, 16, 126, 128, 240, 3, 132, 31, 32, 252, 0, 225, 7, 8, 63, 64, 248, 1, + 194, 15, 16, 126, 128, 240, 3, 132, 31, 144, 232, 23, 8, 63, 64, 248, 1, 41, 194, 15, 48, + 190, 68, 248, 1, 82, 164, 72, 145, 34, 69, 138, 148, 120, 230, 104, 225, 7, 8, 63, 64, 248, + 1, 194, 15, 16, 126, 128, 240, 3, 132, 31, 32, 252, 0, 225, 7, 8, 63, 192, 249, 22, 151, + 240, 3, 184, 30, 194, 15, 224, 250, 8, 63, 128, 235, 38, 252, 0, 225, 7, 164, 8, 63, 64, + 13, 130, 240, 3, 132, 31, 32, 252, 0, 225, 7, 8, 63, 128, 253, 16, 126, 128, 103, 248, 1, + 39, 35, 213, 30, 251, 227, 126, 126, 0, 7, 160, 61, 90, 67, 180, 107, 139, 82, 59, 224, 9, + 126, 0, 7, 224, 23, 210, 252, 161, 29, 225, 116, 186, 195, 56, 135, 240, 131, 209, 178, 202, 58, + 184, 148, 118, 55, 63, 128, 3, 240, 171, 162, 249, 165, 64, 28, 69, 35, 1, 228, 78, 150, 200, + 143, 66, 235, 140, 127, 171, 129, 199, 43, 73, 37, 22, 203, 148, 232, 106, 126, 0, 7, 96, 123, + 72, 54, 121, 83, 26, 110, 60, 30, 70, 231, 119, 51, 43, 96, 57, 90, 46, 231, 42, 126, 28, + 255, 70, 74, 178, 51, 35, 201, 230, 168, 238, 228, 131, 43, 249, 1, 28, 128, 221, 170, 102, 176, + 64, 52, 169, 217, 38, 97, 62, 202, 169, 121, 127, 70, 91, 148, 238, 203, 202, 195, 227, 91, 104, + 255, 67, 123, 132, 249, 35, 37, 140, 113, 128, 234, 78, 27, 173, 86, 3, 97, 177, 243, 3, 56, + 0, 251, 11, 180, 192, 228, 188, 73, 12, 109, 82, 145, 6, 109, 216, 1, 123, 57, 32, 243, 24, + 181, 241, 14, 154, 191, 90, 247, 188, 118, 15, 125, 58, 15, 210, 134, 173, 13, 243, 139, 124, 37, + 159, 13, 233, 108, 113, 138, 167, 15, 43, 142, 4, 45, 20, 164, 193, 8, 146, 249, 160, 254, 63, + 161, 226, 106, 122, 237, 15, 26, 63, 210, 124, 89, 75, 171, 119, 206, 133, 180, 94, 51, 225, 254, + 102, 75, 116, 130, 196, 117, 254, 117, 112, 121, 230, 38, 221, 87, 242, 217, 16, 79, 23, 11, 63, + 128, 3, 112, 60, 146, 124, 222, 82, 66, 175, 133, 80, 35, 130, 10, 61, 66, 77, 220, 30, 146, + 196, 61, 205, 63, 10, 82, 91, 228, 65, 106, 155, 153, 144, 250, 210, 66, 120, 246, 77, 92, 243, + 124, 184, 0, 202, 191, 55, 227, 131, 98, 227, 7, 208, 136, 94, 48, 216, 229, 59, 25, 140, 17, + 154, 16, 140, 151, 64, 241, 84, 171, 28, 131, 32, 49, 189, 56, 17, 26, 103, 218, 194, 17, 180, + 24, 29, 143, 66, 157, 208, 218, 141, 134, 151, 94, 157, 12, 125, 250, 206, 134, 15, 134, 44, 132, + 62, 159, 45, 132, 140, 126, 179, 160, 82, 159, 201, 131, 138, 109, 16, 196, 179, 127, 110, 152, 84, + 222, 217, 25, 14, 70, 9, 206, 62, 180, 101, 245, 155, 143, 152, 95, 173, 199, 4, 208, 250, 207, + 134, 41, 179, 127, 134, 197, 75, 127, 133, 181, 235, 127, 131, 61, 123, 15, 185, 131, 31, 128, 149, + 252, 183, 169, 5, 4, 99, 101, 136, 224, 255, 31, 231, 21, 100, 30, 254, 95, 63, 12, 104, 59, + 52, 34, 80, 85, 125, 236, 173, 105, 61, 203, 226, 217, 238, 189, 224, 23, 119, 242, 3, 176, 242, + 23, 199, 216, 143, 79, 160, 147, 219, 240, 56, 29, 237, 3, 180, 23, 208, 106, 163, 149, 67, 187, + 27, 255, 70, 28, 178, 115, 213, 133, 144, 171, 249, 1, 88, 217, 43, 194, 206, 184, 22, 194, 6, + 57, 138, 143, 23, 225, 241, 83, 118, 182, 42, 218, 61, 248, 158, 255, 224, 89, 38, 128, 194, 121, + 145, 174, 38, 93, 207, 15, 32, 114, 28, 58, 114, 130, 157, 37, 2, 212, 26, 116, 120, 56, 95, + 33, 86, 209, 201, 114, 154, 190, 254, 191, 24, 95, 255, 167, 193, 6, 137, 229, 98, 200, 213, 252, + 0, 38, 66, 116, 71, 171, 206, 23, 58, 103, 19, 15, 132, 56, 2, 177, 56, 107, 119, 57, 236, + 9, 126, 0, 7, 34, 197, 238, 130, 38, 145, 13, 17, 225, 7, 8, 63, 64, 248, 1, 194, 15, + 16, 126, 128, 240, 3, 132, 31, 32, 252, 0, 225, 7, 8, 63, 64, 248, 1, 194, 15, 72, 244, + 11, 132, 31, 32, 252, 128, 20, 225, 7, 24, 95, 34, 252, 0, 41, 82, 164, 72, 145, 34, 69, + 74, 60, 115, 180, 240, 3, 132, 31, 32, 252, 0, 225, 7, 8, 63, 64, 248, 1, 194, 15, 16, + 126, 128, 240, 3, 132, 31, 224, 124, 139, 75, 248, 1, 92, 15, 225, 7, 112, 125, 132, 31, 192, + 117, 19, 126, 128, 240, 3, 82, 132, 31, 160, 6, 65, 248, 1, 194, 15, 16, 126, 128, 240, 3, + 132, 31, 192, 126, 8, 63, 192, 75, 252, 128, 211, 78, 82, 16, 60, 195, 15, 32, 249, 203, 75, + 156, 52, 253, 159, 69, 24, 0, 207, 240, 3, 158, 102, 245, 232, 118, 12, 196, 28, 60, 190, 205, + 64, 133, 59, 19, 9, 136, 151, 248, 1, 29, 20, 145, 212, 159, 156, 101, 246, 123, 180, 108, 52, + 106, 25, 149, 48, 48, 55, 100, 104, 122, 134, 217, 152, 167, 68, 215, 243, 3, 208, 185, 247, 76, + 58, 192, 160, 73, 56, 189, 3, 109, 50, 107, 139, 30, 142, 37, 17, 171, 39, 248, 1, 24, 128, + 172, 24, 181, 194, 63, 113, 210, 229, 231, 48, 72, 247, 81, 55, 137, 0, 80, 240, 4, 63, 96, + 54, 201, 103, 21, 225, 116, 161, 132, 94, 179, 212, 20, 159, 208, 153, 3, 249, 188, 128, 201, 60, + 102, 144, 82, 244, 126, 134, 39, 156, 97, 4, 68, 191, 72, 194, 186, 147, 15, 110, 230, 7, 172, + 177, 200, 39, 30, 140, 144, 113, 222, 202, 182, 225, 255, 145, 154, 244, 53, 18, 87, 226, 255, 254, + 31, 7, 128, 54, 90, 117, 31, 66, 46, 147, 253, 219, 92, 197, 15, 56, 96, 202, 36, 31, 52, + 1, 18, 28, 137, 167, 85, 134, 0, 15, 164, 35, 82, 91, 229, 116, 41, 253, 225, 28, 72, 29, + 250, 163, 238, 139, 234, 27, 249, 74, 62, 235, 59, 69, 197, 200, 15, 248, 103, 136, 19, 170, 146, + 188, 240, 53, 115, 246, 249, 130, 99, 8, 114, 67, 203, 255, 127, 37, 99, 253, 145, 116, 95, 96, + 103, 221, 182, 163, 32, 173, 235, 20, 120, 168, 197, 119, 112, 139, 127, 53, 92, 237, 223, 0, 151, + 250, 183, 134, 5, 160, 184, 248, 1, 55, 71, 109, 222, 90, 236, 192, 4, 181, 213, 164, 27, 199, + 166, 163, 32, 181, 229, 36, 168, 214, 122, 46, 60, 252, 194, 114, 168, 251, 214, 70, 168, 241, 229, + 15, 5, 93, 160, 88, 6, 65, 86, 125, 7, 163, 142, 252, 90, 108, 12, 1, 35, 0, 233, 54, + 50, 252, 134, 153, 1, 120, 186, 245, 72, 108, 25, 185, 80, 163, 203, 248, 175, 138, 147, 31, 208, + 48, 226, 96, 167, 133, 114, 68, 226, 197, 106, 52, 244, 103, 65, 179, 142, 227, 160, 125, 175, 73, + 208, 233, 213, 41, 208, 177, 247, 100, 104, 218, 99, 2, 164, 118, 207, 131, 154, 29, 199, 245, 43, + 54, 126, 0, 75, 226, 99, 117, 204, 76, 141, 57, 196, 52, 42, 154, 77, 214, 242, 227, 213, 104, + 89, 120, 118, 23, 215, 124, 123, 58, 244, 202, 254, 14, 102, 205, 255, 5, 22, 45, 217, 4, 107, + 214, 229, 19, 36, 12, 126, 192, 67, 131, 230, 221, 83, 108, 75, 97, 28, 180, 94, 143, 114, 102, + 15, 225, 223, 119, 240, 106, 240, 32, 207, 255, 180, 76, 206, 65, 235, 139, 246, 50, 90, 39, 180, + 150, 248, 89, 25, 120, 44, 73, 84, 10, 186, 194, 68, 251, 215, 131, 131, 231, 47, 174, 147, 179, + 4, 166, 111, 216, 229, 90, 126, 192, 199, 10, 70, 135, 96, 72, 75, 209, 198, 161, 13, 225, 191, + 145, 147, 93, 208, 158, 196, 64, 220, 139, 199, 75, 72, 102, 143, 206, 94, 199, 114, 251, 115, 237, + 0, 10, 94, 225, 7, 52, 66, 123, 10, 29, 122, 152, 184, 96, 232, 36, 45, 109, 137, 15, 118, + 61, 49, 4, 44, 222, 31, 211, 229, 176, 151, 248, 1, 167, 11, 63, 160, 136, 183, 196, 132, 31, + 32, 252, 0, 225, 7, 8, 63, 64, 248, 1, 194, 15, 16, 126, 128, 240, 3, 132, 31, 32, 252, + 0, 225, 7, 8, 63, 160, 168, 190, 64, 248, 1, 194, 15, 72, 17, 126, 128, 20, 41, 82, 164, + 72, 145, 34, 37, 238, 57, 90, 248, 1, 194, 15, 16, 126, 128, 240, 3, 132, 31, 32, 252, 0, + 225, 7, 8, 63, 64, 248, 1, 194, 15, 112, 190, 197, 37, 252, 0, 174, 135, 240, 3, 184, 62, + 194, 15, 224, 186, 9, 63, 64, 248, 1, 41, 194, 15, 80, 131, 32, 252, 0, 225, 7, 8, 63, + 64, 248, 1, 194, 15, 96, 63, 132, 31, 224, 25, 126, 0, 149, 147, 193, 16, 240, 12, 63, 128, + 74, 186, 47, 235, 25, 12, 66, 3, 52, 74, 163, 249, 183, 34, 10, 128, 55, 248, 1, 220, 2, + 72, 236, 180, 25, 3, 145, 155, 222, 100, 120, 91, 124, 252, 32, 105, 127, 18, 12, 128, 103, 248, + 1, 255, 103, 82, 134, 237, 65, 35, 144, 194, 43, 28, 136, 211, 19, 153, 18, 93, 207, 15, 64, + 7, 31, 178, 148, 199, 229, 139, 30, 73, 37, 54, 3, 31, 183, 225, 247, 93, 24, 203, 120, 225, + 9, 126, 0, 58, 164, 69, 209, 11, 18, 85, 98, 3, 218, 120, 52, 10, 196, 141, 177, 140, 3, + 238, 231, 7, 104, 129, 247, 99, 145, 202, 227, 24, 65, 66, 201, 92, 52, 63, 218, 189, 81, 0, + 10, 158, 224, 7, 204, 80, 208, 25, 65, 135, 2, 233, 63, 24, 160, 144, 131, 1, 108, 74, 34, + 108, 155, 0, 120, 130, 31, 176, 211, 224, 4, 152, 91, 130, 89, 78, 207, 140, 128, 160, 89, 87, + 140, 182, 17, 237, 115, 166, 207, 220, 64, 20, 9, 14, 0, 237, 54, 67, 234, 151, 63, 187, 150, + 31, 112, 69, 132, 179, 174, 106, 133, 195, 64, 10, 22, 221, 230, 24, 218, 58, 150, 213, 54, 195, + 191, 223, 83, 246, 253, 89, 55, 59, 13, 64, 113, 241, 3, 170, 90, 65, 19, 20, 18, 68, 180, + 140, 244, 36, 173, 183, 162, 76, 28, 192, 207, 93, 144, 218, 60, 231, 147, 50, 31, 204, 134, 250, + 67, 127, 138, 218, 5, 138, 139, 31, 208, 46, 66, 159, 15, 90, 62, 214, 2, 177, 176, 69, 160, + 126, 243, 17, 144, 222, 97, 34, 220, 235, 251, 22, 110, 240, 255, 12, 151, 251, 55, 235, 126, 213, + 234, 187, 61, 100, 16, 44, 46, 126, 192, 16, 171, 25, 64, 193, 102, 128, 173, 227, 90, 97, 75, + 177, 108, 69, 5, 153, 236, 241, 152, 137, 214, 124, 12, 212, 105, 53, 13, 30, 106, 241, 173, 142, + 209, 48, 79, 131, 197, 197, 15, 248, 46, 130, 163, 97, 228, 8, 59, 208, 138, 93, 43, 178, 35, + 72, 60, 129, 173, 194, 215, 107, 10, 84, 125, 123, 58, 84, 126, 101, 82, 237, 98, 91, 10, 99, + 101, 142, 42, 253, 61, 24, 66, 142, 209, 10, 193, 40, 138, 163, 39, 44, 167, 68, 77, 31, 0, + 141, 224, 29, 198, 227, 78, 50, 131, 31, 242, 100, 203, 17, 208, 170, 107, 46, 180, 233, 49, 1, + 50, 219, 143, 197, 0, 100, 195, 51, 47, 141, 133, 106, 221, 243, 32, 173, 105, 86, 229, 98, 185, + 24, 226, 233, 106, 167, 178, 218, 35, 22, 208, 15, 108, 91, 153, 43, 64, 176, 132, 41, 104, 19, + 209, 230, 163, 253, 160, 63, 214, 2, 3, 241, 248, 1, 79, 125, 95, 160, 245, 103, 238, 88, 11, + 252, 91, 123, 60, 118, 110, 208, 44, 251, 165, 114, 239, 207, 132, 199, 135, 46, 132, 9, 243, 127, + 129, 57, 139, 214, 195, 226, 165, 191, 194, 186, 13, 187, 96, 197, 175, 123, 160, 213, 216, 239, 161, + 76, 255, 217, 68, 165, 186, 172, 88, 46, 135, 241, 139, 175, 225, 101, 112, 69, 60, 203, 4, 83, + 169, 141, 103, 190, 62, 30, 43, 51, 93, 230, 95, 104, 255, 69, 123, 128, 143, 23, 240, 165, 243, + 249, 252, 191, 151, 169, 215, 5, 124, 81, 117, 78, 200, 50, 248, 171, 197, 208, 241, 235, 53, 238, + 230, 7, 48, 238, 226, 164, 108, 136, 8, 63, 64, 248, 1, 194, 15, 16, 126, 128, 240, 3, 132, + 31, 32, 252, 0, 225, 7, 8, 63, 64, 248, 1, 194, 15, 16, 126, 64, 162, 95, 32, 252, 0, + 225, 7, 164, 8, 63, 192, 248, 18, 225, 7, 72, 145, 34, 69, 138, 20, 41, 82, 226, 153, 163, + 133, 31, 32, 252, 0, 225, 7, 8, 63, 64, 248, 1, 194, 15, 16, 126, 128, 240, 3, 132, 31, + 32, 252, 0, 231, 91, 92, 194, 15, 224, 122, 8, 63, 128, 235, 35, 252, 0, 174, 155, 240, 3, + 132, 31, 144, 34, 252, 0, 53, 8, 194, 15, 16, 126, 128, 240, 3, 132, 31, 32, 252, 0, 246, + 67, 248, 1, 158, 226, 7, 156, 164, 32, 120, 135, 31, 192, 105, 50, 219, 112, 178, 197, 179, 138, + 34, 247, 160, 215, 248, 1, 79, 232, 146, 25, 95, 96, 180, 158, 129, 210, 151, 245, 239, 34, 8, + 128, 55, 248, 1, 28, 128, 129, 170, 232, 49, 67, 11, 44, 224, 22, 113, 55, 218, 217, 137, 76, + 137, 174, 231, 7, 112, 0, 126, 14, 75, 154, 236, 203, 34, 61, 112, 0, 173, 126, 188, 88, 13, + 175, 240, 3, 110, 12, 19, 73, 135, 74, 229, 232, 248, 45, 182, 138, 23, 120, 140, 56, 59, 150, + 113, 192, 253, 252, 0, 95, 224, 121, 7, 146, 249, 227, 204, 25, 25, 138, 86, 211, 233, 32, 233, + 9, 126, 0, 158, 237, 97, 78, 84, 160, 138, 29, 69, 91, 72, 201, 150, 209, 238, 180, 74, 207, + 171, 4, 192, 19, 252, 128, 95, 163, 50, 3, 194, 229, 181, 20, 4, 18, 61, 14, 198, 191, 87, + 177, 147, 221, 121, 129, 31, 112, 123, 212, 228, 233, 154, 125, 118, 121, 69, 95, 252, 53, 35, 53, + 110, 199, 231, 103, 198, 19, 128, 226, 226, 7, 52, 115, 152, 69, 62, 24, 229, 239, 135, 177, 229, + 172, 194, 227, 39, 120, 124, 140, 22, 83, 33, 93, 224, 203, 181, 174, 229, 7, 140, 136, 0, 78, + 176, 151, 205, 71, 2, 43, 228, 163, 53, 166, 147, 44, 183, 194, 27, 83, 159, 44, 57, 108, 145, + 190, 232, 49, 251, 229, 22, 126, 192, 78, 139, 62, 30, 140, 7, 148, 96, 146, 219, 31, 70, 91, + 89, 167, 237, 232, 89, 143, 246, 159, 3, 25, 159, 109, 140, 58, 13, 158, 114, 126, 0, 86, 240, + 62, 91, 118, 128, 2, 71, 80, 30, 135, 181, 16, 211, 128, 25, 52, 15, 166, 233, 190, 124, 128, + 66, 90, 251, 41, 112, 103, 230, 50, 29, 156, 80, 112, 121, 111, 90, 8, 157, 242, 165, 48, 45, + 117, 109, 201, 15, 118, 12, 161, 208, 214, 226, 20, 185, 3, 13, 253, 217, 208, 176, 213, 120, 168, + 210, 106, 14, 220, 156, 249, 35, 92, 219, 98, 115, 232, 82, 184, 56, 46, 134, 176, 98, 239, 17, + 64, 141, 207, 236, 126, 253, 177, 86, 192, 19, 160, 51, 120, 16, 237, 119, 149, 40, 133, 207, 15, + 155, 156, 59, 97, 213, 125, 212, 64, 153, 187, 216, 83, 45, 115, 160, 221, 235, 179, 224, 153, 143, + 22, 195, 67, 3, 231, 253, 80, 108, 151, 195, 88, 153, 58, 104, 213, 24, 152, 214, 0, 157, 111, + 142, 71, 130, 34, 53, 98, 174, 64, 47, 180, 215, 209, 58, 161, 117, 65, 71, 6, 224, 49, 27, + 143, 3, 25, 152, 64, 215, 9, 11, 120, 192, 35, 116, 206, 4, 12, 208, 106, 60, 174, 71, 155, + 155, 218, 34, 103, 109, 125, 116, 54, 195, 159, 5, 205, 59, 141, 215, 233, 17, 77, 218, 141, 46, + 8, 66, 163, 46, 227, 161, 70, 151, 241, 223, 16, 137, 170, 88, 55, 68, 204, 180, 56, 124, 126, + 166, 186, 212, 69, 167, 206, 101, 92, 214, 233, 202, 222, 193, 85, 252, 90, 9, 12, 200, 197, 188, + 158, 184, 137, 95, 35, 54, 209, 67, 229, 222, 159, 249, 77, 181, 207, 23, 194, 176, 197, 235, 97, + 201, 242, 45, 48, 239, 155, 13, 176, 244, 135, 45, 176, 122, 205, 14, 120, 111, 252, 114, 168, 245, + 206, 116, 168, 222, 53, 247, 125, 135, 91, 98, 201, 195, 15, 216, 117, 240, 136, 240, 3, 132, 31, + 32, 252, 0, 225, 7, 8, 63, 192, 209, 207, 227, 194, 15, 16, 126, 128, 240, 3, 132, 31, 32, + 252, 0, 225, 7, 8, 63, 192, 248, 2, 225, 7, 8, 63, 32, 69, 248, 1, 82, 164, 72, 145, + 34, 69, 138, 148, 184, 231, 104, 225, 7, 8, 63, 64, 248, 1, 194, 15, 16, 126, 128, 240, 3, + 132, 31, 32, 252, 0, 225, 7, 8, 63, 192, 249, 22, 151, 240, 3, 184, 30, 194, 15, 224, 250, + 8, 63, 128, 235, 38, 252, 0, 225, 7, 164, 8, 63, 64, 13, 130, 240, 3, 132, 31, 32, 252, + 0, 225, 7, 8, 63, 128, 253, 16, 126, 128, 240, 3, 188, 196, 15, 160, 146, 225, 11, 148, 65, + 35, 201, 219, 191, 138, 40, 0, 222, 225, 7, 112, 0, 72, 252, 152, 135, 150, 65, 162, 137, 34, + 8, 128, 167, 248, 1, 247, 168, 186, 159, 244, 38, 195, 167, 113, 26, 237, 139, 19, 157, 18, 189, + 194, 15, 232, 101, 210, 255, 29, 100, 129, 52, 233, 133, 110, 73, 32, 0, 238, 231, 7, 112, 0, + 86, 69, 144, 204, 46, 98, 17, 213, 133, 241, 140, 3, 94, 224, 7, 148, 178, 202, 40, 173, 100, + 163, 167, 32, 108, 193, 215, 190, 164, 204, 180, 212, 45, 72, 44, 229, 248, 34, 201, 237, 252, 0, + 116, 230, 141, 24, 164, 177, 139, 153, 45, 114, 174, 195, 0, 120, 130, 31, 176, 214, 46, 111, 184, + 77, 32, 40, 73, 243, 106, 61, 201, 114, 190, 84, 46, 82, 0, 92, 207, 15, 40, 99, 238, 247, + 145, 18, 169, 43, 74, 80, 10, 194, 10, 124, 239, 91, 120, 252, 79, 81, 0, 20, 138, 139, 31, + 240, 94, 84, 128, 130, 141, 66, 220, 8, 20, 30, 183, 227, 177, 39, 137, 39, 109, 187, 128, 139, + 249, 1, 155, 76, 243, 191, 245, 153, 143, 46, 165, 167, 32, 140, 226, 181, 195, 229, 70, 139, 48, + 6, 65, 87, 242, 3, 40, 231, 184, 165, 240, 185, 201, 240, 160, 169, 37, 4, 237, 90, 136, 69, + 192, 54, 160, 189, 67, 221, 34, 214, 105, 176, 56, 248, 1, 3, 28, 194, 16, 34, 33, 52, 130, + 22, 45, 230, 24, 6, 134, 192, 76, 61, 202, 245, 157, 249, 213, 163, 95, 44, 129, 180, 79, 194, + 253, 114, 3, 63, 96, 71, 76, 116, 136, 104, 51, 69, 120, 55, 217, 84, 179, 227, 184, 157, 213, + 63, 92, 4, 53, 222, 217, 22, 178, 187, 117, 85, 203, 237, 197, 203, 15, 192, 202, 222, 197, 23, + 63, 91, 121, 68, 223, 141, 182, 207, 82, 243, 239, 4, 165, 161, 41, 173, 193, 226, 253, 85, 91, + 205, 134, 155, 253, 63, 194, 165, 254, 173, 5, 62, 133, 92, 12, 157, 234, 203, 97, 125, 53, 167, + 5, 202, 18, 44, 13, 157, 173, 200, 139, 155, 87, 208, 94, 198, 230, 75, 124, 128, 229, 104, 180, + 232, 153, 199, 3, 37, 57, 71, 144, 133, 125, 220, 239, 131, 78, 121, 35, 244, 254, 198, 205, 71, + 66, 70, 219, 169, 112, 119, 211, 101, 112, 149, 127, 35, 84, 124, 125, 135, 229, 229, 112, 113, 241, + 3, 74, 40, 143, 47, 52, 128, 6, 120, 188, 21, 173, 2, 218, 195, 122, 144, 52, 61, 72, 111, + 162, 245, 97, 250, 220, 114, 116, 142, 214, 2, 11, 25, 154, 64, 14, 255, 129, 246, 187, 93, 48, + 30, 111, 154, 5, 29, 222, 248, 26, 90, 13, 90, 5, 21, 134, 135, 111, 136, 184, 150, 31, 160, + 66, 22, 240, 241, 69, 108, 167, 161, 221, 140, 86, 153, 102, 20, 12, 68, 37, 110, 73, 125, 83, + 91, 229, 124, 85, 189, 91, 30, 52, 108, 63, 6, 252, 47, 141, 131, 246, 189, 38, 66, 139, 206, + 227, 245, 32, 60, 209, 124, 4, 60, 211, 113, 28, 84, 237, 145, 7, 117, 219, 142, 42, 149, 52, + 155, 162, 42, 114, 239, 161, 65, 243, 70, 150, 255, 124, 33, 124, 240, 221, 70, 216, 186, 227, 119, + 248, 110, 249, 102, 88, 188, 116, 19, 30, 183, 192, 71, 163, 150, 193, 19, 175, 79, 33, 122, 4, + 161, 184, 174, 142, 109, 91, 220, 227, 252, 128, 253, 135, 143, 22, 240, 3, 74, 127, 60, 231, 153, + 136, 63, 140, 8, 63, 64, 248, 1, 194, 15, 16, 126, 128, 240, 3, 132, 31, 32, 252, 0, 225, + 7, 8, 63, 32, 69, 248, 1, 198, 23, 8, 63, 64, 248, 1, 41, 194, 15, 144, 34, 69, 138, + 20, 41, 82, 164, 196, 61, 71, 11, 63, 64, 248, 1, 194, 15, 16, 126, 128, 240, 3, 132, 31, + 32, 252, 0, 225, 7, 8, 63, 64, 248, 1, 206, 183, 184, 132, 31, 192, 245, 16, 126, 0, 215, + 71, 248, 1, 92, 55, 225, 7, 8, 63, 32, 69, 248, 1, 106, 16, 132, 31, 32, 252, 0, 225, + 7, 8, 63, 64, 248, 1, 236, 135, 240, 3, 132, 31, 224, 53, 126, 0, 21, 190, 245, 253, 162, + 34, 10, 128, 231, 248, 1, 213, 209, 230, 160, 253, 143, 147, 42, 38, 26, 0, 239, 240, 3, 56, + 0, 227, 12, 209, 52, 62, 38, 161, 116, 169, 34, 104, 5, 158, 225, 7, 252, 215, 148, 93, 246, + 32, 183, 134, 38, 104, 215, 196, 219, 26, 188, 196, 15, 120, 63, 76, 15, 152, 175, 24, 93, 129, + 214, 94, 85, 131, 196, 58, 14, 120, 129, 31, 112, 174, 158, 59, 188, 144, 21, 96, 37, 120, 154, + 143, 86, 15, 237, 140, 152, 47, 146, 60, 192, 15, 104, 29, 69, 38, 75, 118, 136, 187, 4, 37, + 107, 191, 222, 156, 169, 54, 66, 0, 60, 193, 15, 88, 165, 166, 214, 182, 200, 69, 174, 218, 111, + 233, 77, 134, 191, 75, 169, 117, 29, 6, 192, 245, 252, 128, 122, 86, 162, 71, 12, 66, 48, 76, + 28, 173, 133, 0, 20, 72, 27, 220, 4, 223, 119, 89, 81, 5, 160, 184, 248, 1, 19, 116, 39, + 237, 149, 159, 65, 149, 37, 162, 168, 70, 143, 161, 81, 214, 232, 182, 60, 75, 148, 136, 216, 5, + 220, 200, 15, 8, 99, 7, 21, 54, 253, 96, 148, 110, 96, 180, 16, 99, 188, 32, 110, 64, 233, + 72, 131, 160, 91, 249, 1, 3, 248, 204, 7, 45, 84, 226, 65, 187, 228, 233, 38, 148, 6, 217, + 113, 124, 141, 180, 198, 237, 136, 41, 18, 239, 52, 120, 74, 249, 1, 188, 212, 253, 83, 119, 66, + 179, 103, 135, 88, 188, 102, 213, 58, 140, 96, 253, 200, 40, 141, 203, 194, 22, 66, 110, 227, 7, + 96, 37, 219, 219, 52, 109, 39, 252, 128, 96, 20, 105, 253, 55, 140, 210, 248, 187, 177, 20, 174, + 241, 238, 14, 151, 241, 3, 124, 129, 87, 208, 217, 92, 180, 223, 89, 22, 191, 39, 66, 127, 47, + 4, 166, 240, 236, 16, 5, 180, 112, 20, 3, 179, 172, 65, 211, 236, 62, 165, 63, 153, 11, 181, + 191, 92, 109, 233, 83, 113, 243, 3, 174, 64, 187, 131, 143, 79, 232, 178, 120, 45, 208, 159, 105, + 114, 52, 218, 239, 100, 168, 130, 10, 72, 176, 166, 71, 216, 204, 32, 105, 153, 89, 7, 171, 119, + 207, 131, 140, 65, 63, 134, 221, 99, 96, 119, 57, 124, 202, 55, 68, 76, 236, 128, 43, 209, 174, + 101, 134, 192, 83, 232, 88, 15, 166, 76, 77, 226, 22, 178, 190, 160, 165, 104, 14, 187, 9, 45, + 172, 154, 142, 132, 123, 51, 191, 213, 193, 9, 209, 54, 68, 92, 199, 15, 160, 1, 13, 237, 2, + 14, 204, 147, 10, 105, 98, 6, 19, 99, 8, 194, 118, 160, 96, 54, 176, 104, 9, 13, 155, 100, + 193, 211, 109, 115, 161, 90, 219, 69, 112, 157, 127, 29, 220, 210, 118, 187, 245, 150, 152, 23, 54, + 69, 169, 197, 224, 56, 64, 45, 228, 116, 60, 187, 68, 152, 104, 132, 246, 12, 181, 22, 236, 54, + 51, 169, 239, 227, 243, 239, 211, 185, 5, 52, 204, 12, 157, 81, 58, 188, 62, 11, 218, 12, 250, + 25, 82, 3, 107, 172, 127, 49, 246, 34, 63, 128, 70, 123, 180, 255, 227, 199, 119, 213, 232, 50, + 190, 107, 249, 247, 102, 64, 195, 119, 166, 67, 167, 55, 166, 65, 247, 55, 167, 65, 251, 94, 147, + 242, 17, 26, 205, 70, 192, 179, 237, 198, 64, 205, 62, 147, 225, 209, 119, 166, 183, 140, 248, 195, + 136, 167, 249, 1, 95, 45, 134, 33, 203, 55, 235, 2, 202, 117, 27, 118, 193, 146, 229, 91, 116, + 251, 40, 235, 59, 120, 186, 199, 4, 168, 214, 45, 143, 102, 158, 135, 163, 255, 52, 150, 68, 252, + 128, 131, 127, 28, 45, 224, 7, 148, 127, 119, 198, 59, 182, 123, 11, 194, 15, 72, 17, 126, 64, + 65, 95, 18, 126, 128, 240, 3, 132, 31, 32, 252, 0, 225, 7, 164, 8, 63, 192, 248, 2, 225, + 7, 8, 63, 32, 69, 248, 1, 82, 164, 72, 145, 34, 69, 138, 148, 184, 231, 104, 225, 7, 8, + 63, 64, 248, 1, 194, 15, 16, 126, 128, 240, 3, 132, 31, 32, 252, 0, 225, 7, 8, 63, 192, + 249, 22, 151, 240, 3, 184, 30, 194, 15, 224, 250, 8, 63, 128, 235, 38, 252, 0, 225, 7, 164, + 8, 63, 64, 13, 130, 240, 3, 132, 31, 32, 252, 0, 225, 7, 8, 63, 128, 253, 16, 126, 128, + 240, 3, 60, 202, 15, 184, 48, 44, 3, 92, 252, 1, 240, 22, 63, 128, 3, 240, 86, 186, 47, + 139, 50, 206, 223, 232, 84, 30, 27, 229, 82, 218, 83, 252, 128, 10, 5, 26, 33, 95, 214, 128, + 120, 178, 205, 91, 77, 137, 158, 224, 7, 112, 0, 166, 40, 18, 186, 35, 120, 92, 128, 86, 203, + 46, 173, 182, 195, 0, 120, 134, 31, 80, 199, 66, 51, 120, 0, 109, 28, 62, 174, 137, 118, 94, + 188, 227, 128, 235, 249, 1, 28, 128, 249, 118, 234, 48, 12, 2, 169, 203, 27, 198, 125, 145, 228, + 1, 126, 64, 99, 7, 73, 149, 247, 177, 130, 236, 230, 24, 3, 224, 9, 126, 192, 242, 8, 9, + 149, 213, 231, 107, 241, 121, 111, 60, 222, 230, 20, 169, 225, 5, 126, 128, 79, 21, 67, 59, 200, + 56, 77, 93, 100, 24, 254, 237, 218, 162, 14, 64, 113, 241, 3, 126, 137, 114, 214, 173, 236, 40, + 235, 5, 73, 31, 124, 150, 163, 46, 224, 82, 126, 64, 91, 199, 34, 233, 252, 193, 176, 48, 205, + 182, 22, 56, 140, 143, 167, 98, 139, 73, 99, 97, 101, 196, 65, 208, 117, 252, 0, 58, 115, 104, + 59, 11, 152, 33, 90, 192, 137, 116, 62, 84, 70, 159, 31, 144, 13, 248, 255, 190, 8, 4, 9, + 215, 242, 3, 186, 219, 241, 1, 28, 168, 195, 205, 175, 237, 199, 207, 249, 8, 143, 119, 218, 46, + 132, 220, 196, 15, 192, 138, 254, 139, 146, 164, 27, 3, 94, 20, 92, 70, 208, 52, 56, 6, 195, + 120, 3, 249, 173, 135, 50, 212, 247, 197, 231, 247, 168, 122, 64, 87, 242, 3, 176, 130, 119, 99, + 165, 95, 198, 227, 104, 30, 208, 72, 38, 127, 194, 209, 25, 143, 62, 64, 142, 198, 247, 252, 55, + 234, 197, 80, 113, 243, 3, 88, 0, 125, 25, 51, 196, 58, 162, 125, 194, 50, 121, 67, 5, 126, + 92, 33, 198, 152, 161, 74, 133, 156, 145, 240, 128, 16, 98, 103, 29, 17, 233, 30, 26, 56, 175, + 153, 113, 57, 236, 90, 126, 128, 210, 42, 46, 165, 62, 140, 129, 185, 31, 143, 175, 161, 141, 71, + 251, 154, 157, 58, 129, 142, 158, 136, 114, 230, 65, 69, 236, 224, 231, 204, 173, 248, 250, 148, 21, + 21, 134, 124, 27, 211, 134, 136, 107, 248, 1, 232, 204, 149, 232, 116, 121, 116, 166, 26, 62, 238, + 135, 199, 37, 108, 39, 34, 49, 71, 212, 65, 181, 65, 243, 108, 72, 125, 109, 54, 220, 213, 113, + 135, 179, 45, 49, 55, 110, 138, 26, 3, 26, 6, 227, 106, 180, 122, 232, 48, 177, 2, 6, 225, + 235, 219, 137, 38, 133, 207, 255, 140, 220, 50, 178, 161, 124, 230, 12, 184, 209, 191, 38, 250, 166, + 168, 163, 109, 241, 98, 230, 7, 160, 243, 231, 232, 240, 132, 124, 122, 212, 179, 248, 252, 37, 60, + 126, 197, 176, 181, 157, 76, 152, 10, 105, 29, 207, 180, 30, 13, 79, 116, 158, 163, 7, 225, 154, + 22, 91, 35, 111, 139, 171, 63, 140, 120, 129, 31, 128, 77, 158, 166, 212, 139, 25, 177, 241, 2, + 113, 9, 107, 181, 31, 187, 39, 29, 7, 199, 70, 77, 179, 225, 113, 127, 97, 23, 233, 248, 218, + 116, 104, 55, 232, 23, 200, 248, 50, 194, 15, 35, 97, 63, 141, 121, 140, 31, 128, 35, 255, 59, + 15, 127, 58, 23, 154, 141, 249, 30, 62, 31, 185, 12, 222, 250, 112, 14, 244, 124, 107, 134, 30, + 136, 199, 155, 102, 193, 179, 237, 70, 67, 141, 183, 167, 3, 190, 167, 91, 204, 63, 142, 122, 137, + 31, 64, 234, 81, 146, 208, 238, 217, 119, 8, 86, 175, 217, 1, 43, 126, 220, 14, 253, 241, 164, + 61, 217, 105, 28, 84, 235, 158, 247, 71, 90, 211, 172, 202, 142, 126, 30, 79, 22, 126, 192, 222, + 67, 71, 116, 126, 64, 185, 161, 11, 161, 82, 239, 201, 31, 96, 215, 57, 211, 209, 142, 170, 240, + 3, 132, 31, 32, 252, 0, 225, 7, 8, 63, 32, 69, 248, 1, 198, 23, 8, 63, 64, 248, 1, + 41, 194, 15, 144, 34, 69, 138, 20, 41, 82, 164, 196, 61, 71, 11, 63, 64, 248, 1, 194, 15, + 16, 126, 128, 240, 3, 132, 31, 32, 252, 0, 225, 7, 8, 63, 64, 248, 1, 206, 183, 184, 132, + 31, 192, 245, 16, 126, 0, 215, 71, 248, 1, 92, 55, 225, 7, 8, 63, 32, 69, 248, 1, 106, + 16, 132, 31, 32, 252, 0, 225, 7, 8, 63, 64, 248, 1, 236, 135, 240, 3, 132, 31, 224, 69, + 126, 0, 149, 12, 95, 224, 252, 34, 10, 128, 39, 249, 1, 215, 166, 251, 178, 72, 0, 245, 0, + 30, 79, 75, 48, 0, 222, 226, 7, 112, 0, 70, 178, 100, 134, 68, 18, 255, 46, 138, 41, 209, + 75, 252, 128, 167, 66, 180, 65, 90, 96, 44, 30, 111, 79, 48, 0, 158, 225, 7, 252, 19, 109, + 171, 73, 250, 178, 11, 187, 193, 112, 60, 150, 177, 83, 134, 58, 25, 7, 188, 194, 15, 24, 96, + 163, 33, 62, 136, 246, 65, 188, 96, 21, 175, 240, 3, 42, 219, 200, 226, 84, 203, 69, 187, 33, + 142, 0, 120, 130, 31, 176, 196, 82, 16, 169, 133, 232, 5, 41, 179, 236, 68, 180, 242, 49, 6, + 192, 229, 252, 0, 45, 208, 205, 228, 104, 36, 109, 224, 62, 124, 47, 9, 44, 239, 164, 68, 171, + 69, 29, 128, 83, 222, 5, 112, 160, 187, 43, 70, 145, 180, 97, 57, 148, 177, 58, 166, 46, 224, + 82, 126, 192, 68, 75, 217, 124, 132, 4, 236, 44, 150, 62, 140, 54, 7, 159, 63, 230, 116, 16, + 116, 35, 63, 192, 103, 98, 1, 88, 183, 2, 205, 22, 170, 178, 7, 255, 103, 40, 62, 46, 109, + 155, 61, 54, 197, 165, 252, 0, 172, 240, 37, 104, 123, 45, 29, 215, 66, 52, 192, 224, 192, 2, + 196, 24, 138, 64, 144, 112, 37, 63, 160, 125, 65, 158, 112, 45, 228, 108, 7, 29, 142, 7, 65, + 83, 203, 89, 132, 93, 163, 124, 164, 165, 176, 107, 248, 1, 132, 197, 98, 60, 86, 38, 86, 62, + 143, 217, 1, 123, 204, 142, 69, 99, 5, 152, 198, 137, 125, 248, 156, 6, 198, 74, 104, 103, 58, + 186, 24, 42, 110, 126, 0, 47, 125, 207, 197, 138, 215, 64, 71, 251, 226, 227, 81, 68, 149, 136, + 2, 76, 8, 218, 5, 130, 143, 164, 33, 190, 202, 232, 14, 234, 229, 176, 171, 249, 1, 156, 60, + 157, 208, 23, 101, 209, 145, 193, 216, 50, 150, 225, 113, 131, 58, 8, 70, 146, 201, 155, 108, 33, + 254, 173, 116, 188, 27, 34, 197, 202, 15, 48, 168, 113, 120, 44, 69, 93, 132, 90, 6, 58, 190, + 27, 109, 63, 90, 208, 225, 154, 129, 174, 29, 38, 215, 236, 52, 174, 77, 201, 161, 139, 98, 219, + 18, 115, 211, 166, 40, 97, 113, 152, 42, 113, 53, 90, 87, 180, 17, 104, 203, 44, 150, 200, 86, + 129, 56, 81, 187, 253, 152, 141, 229, 63, 153, 15, 25, 3, 55, 59, 223, 20, 117, 180, 45, 94, + 76, 252, 0, 130, 168, 209, 194, 7, 173, 13, 6, 96, 37, 193, 19, 136, 23, 98, 181, 104, 74, + 231, 99, 253, 118, 99, 225, 161, 14, 107, 99, 219, 22, 87, 127, 24, 113, 35, 63, 128, 186, 9, + 58, 125, 46, 30, 159, 70, 235, 133, 54, 131, 161, 9, 135, 205, 129, 104, 232, 207, 130, 186, 205, + 243, 224, 54, 255, 10, 92, 250, 110, 119, 246, 195, 72, 216, 79, 99, 46, 230, 7, 96, 75, 184, + 68, 31, 245, 181, 64, 58, 95, 31, 204, 74, 207, 212, 41, 50, 5, 131, 102, 99, 127, 54, 52, + 237, 57, 11, 238, 126, 97, 13, 92, 213, 124, 171, 227, 159, 198, 60, 199, 15, 160, 153, 164, 242, + 171, 147, 94, 41, 255, 206, 116, 168, 215, 45, 23, 158, 109, 61, 18, 180, 182, 163, 11, 90, 67, + 215, 55, 166, 65, 199, 97, 27, 157, 253, 56, 170, 254, 60, 238, 53, 126, 192, 3, 67, 23, 194, + 168, 31, 183, 193, 178, 149, 91, 97, 248, 232, 239, 161, 239, 167, 243, 224, 217, 23, 114, 160, 113, + 179, 108, 120, 230, 197, 209, 80, 241, 253, 89, 224, 248, 214, 218, 100, 224, 7, 108, 220, 188, 7, + 214, 174, 223, 5, 111, 15, 89, 8, 13, 59, 143, 135, 234, 221, 114, 105, 223, 241, 14, 167, 31, + 156, 20, 252, 128, 205, 251, 254, 208, 249, 1, 143, 124, 50, 7, 106, 116, 25, 223, 33, 214, 47, + 16, 126, 128, 240, 3, 132, 31, 32, 252, 0, 227, 11, 132, 31, 32, 252, 128, 20, 225, 7, 72, + 145, 34, 69, 138, 20, 41, 82, 226, 158, 163, 133, 31, 32, 252, 0, 225, 7, 8, 63, 64, 248, + 1, 194, 15, 16, 126, 128, 240, 3, 132, 31, 32, 252, 0, 231, 91, 92, 194, 15, 224, 122, 8, + 63, 128, 235, 35, 252, 0, 174, 155, 240, 3, 132, 31, 144, 34, 252, 0, 53, 8, 194, 15, 16, + 126, 128, 240, 3, 132, 31, 32, 252, 0, 246, 67, 248, 1, 194, 15, 240, 42, 63, 160, 8, 3, + 224, 61, 126, 0, 149, 12, 95, 160, 98, 186, 47, 171, 122, 134, 22, 72, 52, 0, 158, 228, 7, + 60, 200, 98, 168, 129, 120, 188, 209, 16, 81, 36, 50, 37, 122, 137, 31, 240, 55, 22, 69, 24, + 106, 176, 65, 120, 44, 145, 96, 0, 188, 193, 15, 160, 162, 159, 245, 66, 141, 80, 144, 181, 133, + 31, 199, 43, 157, 55, 198, 1, 175, 240, 3, 50, 205, 50, 24, 110, 5, 63, 162, 181, 198, 192, + 92, 17, 103, 0, 60, 193, 15, 184, 207, 82, 51, 92, 168, 13, 162, 4, 237, 245, 226, 12, 128, + 39, 248, 1, 223, 218, 74, 226, 10, 131, 64, 217, 102, 27, 198, 17, 0, 151, 243, 3, 124, 129, + 15, 45, 242, 6, 135, 235, 4, 125, 89, 71, 208, 102, 161, 213, 195, 247, 157, 118, 50, 2, 112, + 202, 187, 0, 101, 135, 14, 147, 194, 106, 81, 21, 163, 95, 160, 221, 70, 51, 70, 76, 93, 192, + 109, 252, 0, 116, 224, 46, 78, 147, 29, 180, 21, 66, 106, 182, 82, 122, 34, 203, 252, 35, 150, + 65, 208, 125, 252, 0, 45, 176, 192, 177, 74, 92, 51, 205, 14, 190, 44, 226, 137, 12, 163, 133, + 82, 81, 78, 131, 167, 146, 31, 208, 79, 117, 80, 233, 239, 78, 153, 1, 192, 9, 214, 59, 17, + 122, 203, 209, 66, 200, 45, 252, 0, 172, 240, 173, 104, 227, 34, 56, 27, 140, 32, 142, 54, 255, + 109, 11, 218, 19, 145, 150, 203, 110, 228, 7, 24, 235, 253, 70, 232, 200, 92, 166, 71, 157, 176, + 232, 231, 78, 91, 3, 189, 239, 217, 152, 47, 134, 92, 192, 15, 56, 139, 131, 209, 148, 214, 252, + 172, 5, 118, 162, 14, 55, 243, 5, 72, 54, 75, 227, 73, 35, 51, 90, 199, 51, 252, 0, 108, + 9, 183, 112, 171, 248, 8, 31, 255, 74, 146, 121, 243, 90, 192, 252, 24, 223, 23, 52, 253, 45, + 7, 131, 113, 143, 26, 4, 79, 241, 3, 140, 121, 157, 177, 90, 111, 160, 51, 83, 217, 193, 227, + 81, 208, 58, 106, 171, 24, 131, 246, 175, 184, 183, 196, 220, 178, 41, 138, 206, 158, 207, 68, 137, + 166, 120, 166, 215, 226, 243, 245, 78, 198, 2, 124, 239, 31, 140, 226, 184, 61, 174, 77, 81, 71, + 219, 226, 167, 144, 31, 128, 142, 156, 206, 0, 133, 54, 104, 131, 209, 14, 57, 8, 196, 166, 186, + 109, 70, 13, 123, 240, 211, 121, 241, 109, 139, 171, 63, 140, 184, 137, 31, 128, 142, 253, 135, 185, + 130, 163, 209, 86, 210, 181, 129, 221, 76, 209, 160, 105, 246, 159, 149, 222, 156, 14, 105, 31, 111, + 137, 253, 135, 145, 176, 159, 198, 92, 196, 15, 96, 172, 6, 29, 211, 48, 0, 175, 98, 147, 255, + 142, 199, 136, 19, 97, 123, 9, 56, 102, 60, 210, 106, 73, 216, 109, 117, 73, 195, 15, 64, 39, + 47, 199, 129, 242, 58, 60, 190, 140, 182, 20, 31, 255, 170, 14, 150, 68, 143, 120, 162, 77, 30, + 220, 153, 185, 12, 46, 245, 111, 141, 237, 199, 81, 245, 231, 113, 55, 243, 3, 168, 69, 240, 241, + 129, 218, 47, 142, 233, 95, 163, 243, 120, 189, 37, 52, 242, 23, 206, 24, 237, 250, 204, 132, 138, + 93, 215, 194, 13, 47, 108, 211, 125, 113, 244, 243, 184, 186, 140, 244, 10, 63, 224, 129, 161, 11, + 247, 61, 52, 104, 30, 188, 58, 122, 25, 116, 127, 107, 58, 180, 125, 121, 98, 193, 101, 117, 175, + 119, 103, 64, 247, 156, 109, 177, 221, 32, 193, 31, 236, 57, 126, 192, 129, 35, 71, 225, 247, 253, + 135, 97, 246, 130, 95, 224, 139, 145, 75, 117, 140, 198, 83, 45, 115, 224, 185, 30, 19, 160, 204, + 199, 115, 32, 230, 251, 137, 189, 204, 15, 216, 181, 231, 32, 172, 217, 184, 27, 218, 246, 155, 5, + 53, 59, 143, 7, 236, 34, 211, 9, 223, 21, 207, 151, 120, 158, 31, 80, 254, 221, 25, 95, 163, + 243, 247, 198, 251, 5, 194, 15, 16, 126, 64, 138, 240, 3, 212, 150, 32, 252, 0, 225, 7, 72, + 145, 34, 69, 138, 20, 41, 82, 226, 152, 163, 133, 31, 32, 252, 0, 225, 7, 8, 63, 64, 248, + 1, 194, 15, 16, 126, 128, 240, 3, 132, 31, 32, 252, 0, 231, 91, 92, 194, 15, 224, 122, 8, + 63, 128, 235, 35, 252, 0, 174, 155, 240, 3, 132, 31, 144, 34, 252, 0, 53, 8, 194, 15, 16, + 126, 128, 240, 3, 132, 31, 32, 252, 0, 246, 67, 248, 1, 194, 15, 16, 126, 128, 71, 249, 1, + 84, 232, 238, 207, 34, 8, 128, 247, 248, 1, 236, 252, 43, 124, 223, 255, 195, 116, 203, 124, 162, + 83, 162, 103, 248, 1, 236, 124, 115, 69, 74, 75, 242, 186, 115, 18, 12, 128, 119, 248, 1, 232, + 108, 125, 211, 189, 255, 164, 0, 233, 145, 232, 56, 224, 13, 126, 128, 166, 103, 144, 14, 205, 32, + 153, 47, 161, 91, 194, 201, 21, 79, 139, 51, 0, 30, 224, 7, 104, 129, 235, 209, 193, 95, 35, + 228, 16, 205, 98, 173, 241, 105, 113, 4, 192, 221, 252, 0, 116, 234, 108, 180, 197, 97, 57, 132, + 195, 147, 46, 247, 139, 179, 5, 184, 155, 31, 128, 3, 221, 56, 203, 68, 235, 225, 70, 130, 169, + 174, 39, 51, 0, 167, 158, 31, 160, 233, 128, 148, 48, 117, 184, 165, 229, 191, 103, 30, 6, 44, + 221, 172, 16, 117, 212, 5, 92, 200, 15, 120, 217, 46, 197, 182, 174, 12, 181, 76, 167, 171, 191, + 246, 37, 218, 117, 78, 199, 3, 87, 242, 3, 240, 44, 102, 90, 157, 225, 16, 132, 134, 125, 106, + 109, 178, 247, 79, 198, 52, 120, 74, 248, 1, 172, 253, 139, 230, 96, 164, 108, 243, 20, 160, 237, + 104, 47, 25, 162, 41, 71, 11, 33, 55, 240, 3, 168, 217, 162, 61, 135, 206, 127, 198, 65, 56, + 110, 211, 215, 195, 3, 16, 30, 48, 74, 184, 92, 11, 3, 115, 134, 147, 165, 176, 107, 248, 1, + 28, 8, 74, 163, 253, 56, 218, 26, 134, 32, 24, 103, 56, 24, 73, 58, 175, 42, 198, 249, 245, + 97, 172, 51, 142, 253, 98, 200, 5, 252, 0, 106, 13, 36, 155, 239, 137, 54, 201, 82, 12, 29, + 73, 49, 174, 69, 95, 31, 120, 130, 31, 128, 142, 80, 30, 241, 82, 156, 97, 158, 224, 40, 251, + 44, 97, 9, 154, 53, 71, 128, 89, 34, 36, 174, 62, 163, 40, 54, 68, 138, 133, 31, 96, 52, + 97, 116, 178, 2, 62, 30, 162, 75, 97, 35, 140, 7, 33, 65, 201, 127, 15, 181, 160, 71, 77, + 240, 4, 111, 242, 3, 244, 100, 234, 190, 0, 193, 20, 7, 99, 159, 167, 22, 113, 212, 50, 24, + 225, 193, 25, 138, 246, 127, 9, 109, 138, 58, 218, 22, 63, 5, 252, 0, 106, 206, 228, 12, 205, + 24, 124, 118, 55, 217, 180, 6, 117, 80, 60, 140, 246, 30, 181, 166, 132, 182, 197, 213, 31, 70, + 220, 192, 15, 208, 73, 18, 26, 6, 66, 11, 76, 139, 66, 151, 161, 215, 87, 16, 117, 226, 129, + 161, 11, 23, 198, 253, 195, 72, 216, 79, 99, 46, 224, 7, 224, 96, 119, 30, 58, 70, 214, 139, + 175, 28, 247, 219, 205, 10, 117, 219, 140, 250, 185, 244, 135, 115, 160, 193, 23, 107, 195, 110, 161, + 241, 52, 63, 160, 96, 160, 244, 5, 170, 160, 117, 103, 208, 226, 113, 171, 214, 80, 167, 235, 4, + 40, 243, 202, 246, 72, 103, 223, 219, 252, 0, 116, 242, 10, 70, 106, 124, 101, 240, 135, 210, 141, + 169, 17, 91, 66, 195, 166, 35, 224, 97, 255, 60, 184, 132, 110, 220, 226, 155, 36, 200, 135, 164, + 226, 7, 24, 87, 131, 68, 145, 74, 109, 149, 147, 155, 214, 52, 116, 209, 148, 217, 121, 34, 148, + 106, 249, 61, 92, 154, 185, 89, 175, 111, 204, 55, 72, 112, 0, 60, 193, 15, 120, 248, 147, 185, + 199, 202, 189, 63, 19, 254, 215, 101, 60, 104, 237, 70, 23, 4, 161, 251, 219, 179, 160, 222, 235, + 191, 194, 127, 95, 218, 17, 223, 45, 50, 252, 5, 222, 224, 7, 124, 177, 8, 166, 172, 217, 14, + 89, 99, 151, 195, 107, 253, 102, 23, 4, 225, 157, 79, 230, 193, 139, 227, 183, 196, 119, 147, 148, + 186, 56, 242, 18, 63, 96, 213, 154, 29, 144, 59, 117, 53, 60, 223, 118, 20, 60, 247, 226, 24, + 168, 254, 234, 36, 40, 245, 249, 130, 49, 137, 124, 129, 231, 248, 1, 123, 15, 28, 134, 113, 75, + 54, 65, 106, 207, 9, 80, 173, 107, 222, 78, 28, 39, 42, 37, 250, 5, 158, 228, 7, 224, 153, + 223, 80, 179, 227, 184, 199, 139, 234, 11, 132, 31, 32, 252, 128, 20, 225, 7, 72, 145, 34, 69, + 138, 20, 41, 82, 226, 158, 163, 133, 31, 32, 252, 0, 225, 7, 8, 63, 64, 248, 1, 194, 15, + 16, 126, 128, 240, 3, 132, 31, 32, 252, 0, 231, 91, 92, 194, 15, 224, 122, 8, 63, 128, 235, + 35, 252, 0, 174, 155, 240, 3, 132, 31, 144, 34, 252, 0, 53, 8, 194, 15, 16, 126, 128, 240, + 3, 132, 31, 32, 252, 0, 246, 67, 248, 1, 194, 15, 16, 126, 128, 183, 249, 1, 37, 226, 213, + 11, 155, 46, 165, 189, 199, 15, 72, 111, 50, 156, 110, 151, 127, 141, 242, 141, 219, 233, 129, 98, + 153, 18, 189, 198, 15, 248, 7, 154, 113, 107, 252, 0, 180, 75, 19, 12, 128, 167, 248, 1, 36, + 146, 152, 105, 82, 143, 250, 18, 29, 7, 188, 193, 15, 240, 5, 254, 133, 54, 199, 36, 164, 166, + 212, 220, 171, 208, 42, 36, 116, 145, 228, 122, 126, 128, 47, 112, 33, 218, 124, 27, 41, 204, 30, + 28, 19, 222, 198, 227, 245, 113, 6, 192, 245, 252, 128, 75, 204, 252, 0, 155, 52, 219, 21, 156, + 102, 156, 55, 5, 192, 189, 252, 0, 22, 62, 124, 199, 103, 60, 24, 69, 70, 191, 136, 100, 51, + 39, 51, 0, 167, 180, 11, 112, 54, 217, 239, 35, 102, 157, 15, 181, 189, 104, 239, 160, 157, 25, + 87, 23, 112, 19, 63, 128, 250, 51, 43, 188, 192, 1, 52, 65, 53, 202, 85, 94, 55, 150, 5, + 146, 235, 248, 1, 88, 249, 155, 88, 240, 20, 116, 226, 180, 105, 92, 160, 255, 249, 8, 237, 34, + 167, 11, 36, 87, 241, 3, 168, 15, 227, 136, 62, 36, 234, 153, 142, 44, 153, 165, 196, 170, 205, + 98, 104, 1, 174, 226, 7, 144, 213, 64, 235, 143, 103, 54, 200, 178, 183, 160, 19, 199, 21, 126, + 0, 253, 207, 247, 248, 255, 149, 28, 6, 192, 93, 252, 0, 190, 200, 57, 31, 29, 104, 129, 199, + 229, 232, 244, 1, 7, 78, 135, 50, 70, 154, 12, 39, 133, 249, 155, 209, 214, 6, 174, 229, 7, + 40, 34, 200, 26, 24, 136, 247, 241, 184, 43, 14, 156, 198, 70, 94, 27, 148, 112, 114, 57, 236, + 94, 126, 64, 62, 68, 161, 1, 58, 181, 13, 143, 191, 71, 232, 14, 86, 131, 38, 201, 236, 47, + 46, 202, 13, 145, 226, 226, 7, 80, 183, 184, 3, 237, 11, 108, 222, 43, 108, 17, 26, 161, 152, + 141, 32, 190, 119, 151, 190, 54, 208, 194, 83, 233, 122, 146, 31, 192, 139, 163, 39, 209, 166, 24, + 186, 96, 179, 211, 5, 143, 181, 144, 181, 65, 109, 243, 50, 217, 179, 252, 0, 190, 36, 190, 4, + 29, 255, 164, 64, 23, 92, 56, 24, 6, 205, 72, 29, 158, 77, 232, 189, 23, 24, 99, 139, 231, + 249, 1, 202, 32, 217, 20, 109, 132, 10, 84, 209, 247, 9, 194, 145, 58, 199, 208, 90, 21, 201, + 15, 35, 97, 63, 141, 21, 51, 63, 0, 29, 43, 201, 128, 149, 99, 76, 137, 176, 154, 25, 142, + 243, 69, 85, 21, 245, 167, 177, 164, 225, 7, 16, 87, 20, 251, 124, 35, 60, 78, 142, 48, 101, + 238, 175, 211, 110, 244, 184, 135, 6, 206, 11, 249, 113, 52, 41, 248, 1, 74, 151, 120, 8, 173, + 61, 118, 129, 77, 10, 133, 170, 96, 150, 168, 223, 98, 4, 148, 237, 63, 11, 234, 246, 219, 94, + 248, 243, 120, 178, 241, 3, 104, 147, 148, 105, 179, 139, 177, 85, 108, 9, 107, 9, 173, 199, 195, + 141, 45, 55, 132, 221, 189, 150, 116, 252, 0, 116, 254, 90, 108, 5, 125, 26, 52, 203, 94, 173, + 6, 224, 233, 86, 163, 160, 98, 139, 121, 112, 153, 127, 75, 200, 13, 148, 73, 201, 15, 160, 189, + 196, 234, 221, 114, 155, 213, 232, 60, 62, 152, 230, 47, 188, 108, 110, 247, 202, 20, 168, 210, 121, + 149, 142, 208, 184, 190, 245, 246, 248, 111, 146, 82, 23, 71, 110, 229, 7, 16, 115, 168, 212, 144, + 5, 143, 87, 126, 117, 18, 212, 107, 91, 72, 143, 120, 111, 224, 2, 200, 120, 111, 135, 94, 231, + 132, 110, 147, 43, 88, 34, 187, 152, 31, 192, 240, 164, 23, 203, 191, 55, 3, 106, 247, 154, 168, + 7, 224, 137, 102, 217, 208, 47, 123, 9, 84, 206, 90, 150, 248, 141, 146, 28, 4, 79, 240, 3, + 104, 26, 172, 137, 129, 120, 166, 237, 40, 104, 208, 105, 28, 148, 235, 59, 115, 123, 145, 221, 52, + 237, 37, 126, 64, 57, 156, 14, 171, 117, 203, 219, 95, 187, 253, 152, 118, 69, 253, 5, 158, 225, + 7, 224, 184, 240, 232, 201, 250, 18, 225, 7, 72, 145, 34, 69, 138, 20, 41, 82, 226, 153, 163, + 133, 31, 32, 252, 0, 225, 7, 8, 63, 64, 248, 1, 194, 15, 16, 126, 128, 240, 3, 132, 31, + 32, 252, 0, 231, 91, 92, 194, 15, 224, 122, 8, 63, 128, 235, 35, 252, 0, 174, 155, 240, 3, + 132, 31, 144, 34, 252, 0, 53, 8, 194, 15, 16, 126, 128, 240, 3, 132, 31, 32, 252, 0, 246, + 67, 248, 1, 194, 15, 16, 126, 128, 135, 249, 1, 84, 138, 64, 58, 239, 77, 126, 0, 59, 127, + 3, 41, 73, 138, 98, 74, 244, 20, 63, 128, 157, 175, 69, 242, 153, 116, 95, 214, 48, 60, 222, + 150, 96, 0, 188, 195, 15, 96, 231, 155, 155, 84, 99, 25, 241, 136, 166, 213, 113, 192, 19, 252, + 0, 221, 121, 45, 240, 150, 73, 43, 116, 2, 91, 193, 15, 148, 134, 51, 161, 139, 36, 15, 240, + 3, 206, 100, 101, 72, 126, 10, 110, 69, 29, 130, 199, 205, 44, 152, 56, 45, 206, 0, 184, 158, + 31, 112, 51, 58, 189, 56, 138, 60, 110, 52, 41, 71, 226, 12, 128, 171, 249, 1, 149, 209, 118, + 154, 84, 97, 230, 64, 24, 92, 129, 204, 120, 166, 69, 55, 243, 3, 52, 91, 37, 152, 146, 133, + 94, 49, 146, 202, 220, 18, 119, 23, 112, 25, 63, 224, 85, 199, 204, 128, 194, 231, 212, 82, 104, + 144, 60, 43, 158, 65, 208, 21, 252, 0, 106, 194, 120, 118, 191, 136, 146, 62, 55, 146, 136, 154, + 4, 149, 229, 78, 214, 52, 120, 42, 248, 1, 143, 161, 101, 57, 164, 69, 216, 89, 7, 180, 115, + 98, 94, 8, 185, 129, 31, 192, 65, 40, 137, 103, 148, 248, 1, 7, 45, 232, 16, 209, 178, 75, + 7, 89, 96, 125, 111, 172, 75, 97, 215, 240, 3, 208, 233, 211, 25, 151, 213, 167, 32, 201, 186, + 189, 133, 234, 132, 243, 143, 196, 14, 24, 136, 246, 207, 132, 46, 134, 138, 147, 31, 160, 206, 4, + 24, 144, 220, 40, 1, 176, 34, 76, 204, 35, 246, 64, 44, 151, 195, 174, 228, 7, 160, 19, 103, + 163, 221, 133, 150, 131, 118, 64, 119, 80, 179, 108, 254, 86, 221, 163, 183, 154, 109, 190, 168, 54, + 68, 78, 57, 63, 128, 150, 184, 108, 31, 224, 216, 240, 125, 132, 5, 145, 121, 208, 12, 70, 154, + 17, 60, 199, 15, 96, 158, 88, 19, 5, 168, 6, 81, 200, 82, 135, 208, 70, 18, 82, 167, 200, + 54, 69, 29, 109, 139, 159, 68, 126, 0, 193, 85, 104, 181, 135, 227, 194, 44, 130, 168, 69, 224, + 9, 25, 182, 132, 47, 151, 75, 20, 217, 182, 184, 250, 195, 72, 113, 240, 3, 116, 165, 120, 62, + 73, 226, 51, 180, 159, 108, 0, 42, 170, 245, 55, 115, 68, 146, 130, 31, 64, 91, 98, 232, 44, + 205, 18, 63, 90, 45, 152, 244, 64, 228, 143, 3, 196, 28, 172, 101, 245, 211, 152, 231, 249, 1, + 60, 46, 60, 128, 70, 2, 233, 221, 54, 3, 227, 81, 166, 80, 94, 109, 245, 227, 168, 231, 249, + 1, 76, 152, 121, 0, 207, 56, 33, 184, 182, 216, 12, 136, 171, 107, 117, 24, 251, 86, 201, 97, + 139, 142, 133, 253, 60, 158, 44, 252, 0, 116, 242, 191, 196, 16, 195, 169, 242, 119, 110, 246, 33, + 65, 168, 222, 37, 247, 216, 67, 131, 230, 235, 117, 162, 155, 55, 146, 146, 31, 160, 207, 18, 90, + 160, 14, 211, 101, 246, 135, 181, 132, 215, 151, 194, 53, 173, 172, 111, 160, 76, 42, 126, 0, 58, + 91, 149, 103, 137, 195, 133, 179, 67, 0, 26, 180, 24, 15, 215, 100, 174, 11, 57, 243, 73, 203, + 15, 64, 167, 239, 227, 75, 99, 114, 94, 31, 20, 235, 183, 204, 129, 234, 47, 125, 11, 151, 250, + 183, 22, 204, 249, 73, 205, 15, 160, 125, 1, 94, 61, 46, 79, 215, 2, 39, 104, 138, 172, 211, + 41, 23, 30, 235, 177, 190, 104, 111, 148, 228, 32, 184, 142, 31, 160, 208, 101, 210, 113, 112, 28, + 86, 48, 32, 190, 57, 83, 175, 99, 145, 221, 42, 171, 4, 193, 181, 252, 0, 116, 252, 126, 218, + 99, 72, 203, 204, 58, 158, 138, 93, 225, 145, 143, 231, 20, 237, 205, 210, 166, 150, 224, 58, 126, + 0, 175, 23, 206, 108, 208, 52, 187, 87, 237, 246, 99, 14, 84, 237, 57, 97, 91, 153, 15, 102, + 223, 121, 82, 190, 204, 237, 252, 128, 122, 173, 71, 182, 171, 223, 98, 68, 157, 148, 191, 106, 73, + 52, 47, 129, 20, 41, 82, 164, 72, 249, 171, 149, 255, 7, 209, 226, 81, 116, 250, 197, 13, 118, + 0, 0, 0, 0, 73, 69, 78, 68, 174, 66, 96, 130,}; +const char* Artwork::knobData = (const char*)temp_knob_3; + diff --git a/examples/CairoUI/Artwork.hpp b/examples/CairoUI/Artwork.hpp new file mode 100644 index 00000000..95ab9d59 --- /dev/null +++ b/examples/CairoUI/Artwork.hpp @@ -0,0 +1,19 @@ +/* (Auto-generated binary data file). */ + +#ifndef BINARY_ARTWORK_HPP +#define BINARY_ARTWORK_HPP + +namespace Artwork +{ + extern const char* buttonOffData; + const unsigned int buttonOffDataSize = 970; + + extern const char* buttonOnData; + const unsigned int buttonOnDataSize = 983; + + extern const char* knobData; + const unsigned int knobDataSize = 52344; +} + +#endif // BINARY_ARTWORK_HPP + diff --git a/examples/CairoUI/CairoExamplePlugin.cpp b/examples/CairoUI/CairoExamplePlugin.cpp index b6df8799..b43065aa 100644 --- a/examples/CairoUI/CairoExamplePlugin.cpp +++ b/examples/CairoUI/CairoExamplePlugin.cpp @@ -1,6 +1,7 @@ /* * DISTRHO Plugin Framework (DPF) * Copyright (C) 2012-2019 Filipe Coelho + * Copyright (C) 2019-2021 Jean Pierre Cimalando * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -77,7 +78,13 @@ public: void run(const float** inputs, float** outputs, uint32_t frames) { - memcpy(outputs[0], inputs[0], frames * sizeof(float)); + /** + This plugin does nothing, it just demonstrates cairo UI usage. + So here we directly copy inputs over outputs, leaving the audio untouched. + We need to be careful in case the host re-uses the same buffer for both inputs and outputs. + */ + if (outputs[0] != inputs[0]) + std::memcpy(outputs[0], inputs[0], sizeof(float)*frames); } }; diff --git a/examples/CairoUI/CairoExampleUI.cpp b/examples/CairoUI/CairoExampleUI.cpp index cd80d10e..f02810ab 100644 --- a/examples/CairoUI/CairoExampleUI.cpp +++ b/examples/CairoUI/CairoExampleUI.cpp @@ -1,6 +1,7 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2019 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho + * Copyright (C) 2019-2021 Jean Pierre Cimalando * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -15,9 +16,10 @@ */ #include "DistrhoUI.hpp" + +#include "Artwork.hpp" #include "DemoWidgetBanner.hpp" #include "DemoWidgetClickable.hpp" -#include "Window.hpp" START_NAMESPACE_DISTRHO @@ -36,16 +38,29 @@ public: fWidgetBanner = widgetBanner; widgetBanner->setSize(180, 80); widgetBanner->setAbsolutePos(10, 10); - } - ~CairoExampleUI() - { + CairoImage knobSkin; + knobSkin.loadFromPNG(Artwork::knobData, Artwork::knobDataSize); + + CairoImageKnob* knob = new CairoImageKnob(this, knobSkin); + fKnob = knob; + knob->setSize(80, 80); + knob->setAbsolutePos(10, 100); + + CairoImage buttonOn, buttonOff; + buttonOn.loadFromPNG(Artwork::buttonOnData, Artwork::buttonOnDataSize); + buttonOff.loadFromPNG(Artwork::buttonOffData, Artwork::buttonOffDataSize); + + CairoImageButton* button = new CairoImageButton(this, buttonOff, buttonOn); + fButton = button; + button->setSize(60, 35); + button->setAbsolutePos(100, 160); } - void onDisplay() +protected: + void onCairoDisplay(const CairoGraphicsContext& context) { - cairo_t* cr = getParentWindow().getGraphicsContext().cairo; - + cairo_t* const cr = context.handle; cairo_set_source_rgb(cr, 1.0, 0.8, 0.5); cairo_paint(cr); } @@ -60,6 +75,8 @@ public: private: ScopedPointer fWidgetClickable; ScopedPointer fWidgetBanner; + ScopedPointer fKnob; + ScopedPointer fButton; }; UI* createUI() diff --git a/examples/CairoUI/DemoWidgetBanner.cpp b/examples/CairoUI/DemoWidgetBanner.cpp index 200598e9..422378c8 100644 --- a/examples/CairoUI/DemoWidgetBanner.cpp +++ b/examples/CairoUI/DemoWidgetBanner.cpp @@ -1,6 +1,7 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2019 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho + * Copyright (C) 2019-2021 Jean Pierre Cimalando * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -16,9 +17,6 @@ #include "DemoWidgetBanner.hpp" -#include "Cairo.hpp" -#include "Window.hpp" - START_NAMESPACE_DGL // ----------------------------------------------------------------------- @@ -54,14 +52,15 @@ enum columns = 72, }; -DemoWidgetBanner::DemoWidgetBanner(Widget* group) - : Widget(group) -{ -} +DemoWidgetBanner::DemoWidgetBanner(SubWidget* parent) + : CairoSubWidget(parent) {} + +DemoWidgetBanner::DemoWidgetBanner(TopLevelWidget* parent) + : CairoSubWidget(parent) {} -void DemoWidgetBanner::onDisplay() +void DemoWidgetBanner::onCairoDisplay(const CairoGraphicsContext& context) { - cairo_t* cr = getParentWindow().getGraphicsContext().cairo; + cairo_t* cr = context.handle; Size sz = getSize(); int w = sz.getWidth(); diff --git a/examples/CairoUI/DemoWidgetBanner.hpp b/examples/CairoUI/DemoWidgetBanner.hpp index 8571b58e..c05df37b 100644 --- a/examples/CairoUI/DemoWidgetBanner.hpp +++ b/examples/CairoUI/DemoWidgetBanner.hpp @@ -1,6 +1,7 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2019 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho + * Copyright (C) 2019-2021 Jean Pierre Cimalando * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -14,17 +15,21 @@ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -#include "Widget.hpp" +#pragma once + +#include "Cairo.hpp" START_NAMESPACE_DGL // ----------------------------------------------------------------------- -class DemoWidgetBanner : public Widget +class DemoWidgetBanner : public CairoSubWidget { public: - explicit DemoWidgetBanner(Widget* group); - void onDisplay() override; + explicit DemoWidgetBanner(SubWidget* parent); + explicit DemoWidgetBanner(TopLevelWidget* parent); +protected: + void onCairoDisplay(const CairoGraphicsContext& context) override; }; // ----------------------------------------------------------------------- diff --git a/examples/CairoUI/DemoWidgetClickable.cpp b/examples/CairoUI/DemoWidgetClickable.cpp index 23fec617..6720c7ed 100644 --- a/examples/CairoUI/DemoWidgetClickable.cpp +++ b/examples/CairoUI/DemoWidgetClickable.cpp @@ -1,6 +1,7 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2019 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho + * Copyright (C) 2019-2021 Jean Pierre Cimalando * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -16,21 +17,19 @@ #include "DemoWidgetClickable.hpp" -#include "Cairo.hpp" -#include "Window.hpp" - START_NAMESPACE_DGL // ----------------------------------------------------------------------- -DemoWidgetClickable::DemoWidgetClickable(Widget* group) - : Widget(group) -{ -} +DemoWidgetClickable::DemoWidgetClickable(SubWidget* parent) + : CairoSubWidget(parent) {} + +DemoWidgetClickable::DemoWidgetClickable(TopLevelWidget* parent) + : CairoSubWidget(parent) {} -void DemoWidgetClickable::onDisplay() +void DemoWidgetClickable::onCairoDisplay(const CairoGraphicsContext& context) { - cairo_t* cr = getParentWindow().getGraphicsContext().cairo; + cairo_t* cr = context.handle; Size sz = getSize(); int w = sz.getWidth(); diff --git a/examples/CairoUI/DemoWidgetClickable.hpp b/examples/CairoUI/DemoWidgetClickable.hpp index a63c85fe..19454724 100644 --- a/examples/CairoUI/DemoWidgetClickable.hpp +++ b/examples/CairoUI/DemoWidgetClickable.hpp @@ -1,6 +1,7 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2019 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho + * Copyright (C) 2019-2021 Jean Pierre Cimalando * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -14,17 +15,21 @@ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -#include "Widget.hpp" +#pragma once + +#include "Cairo.hpp" START_NAMESPACE_DGL // ----------------------------------------------------------------------- -class DemoWidgetClickable : public Widget +class DemoWidgetClickable : public CairoSubWidget { public: - explicit DemoWidgetClickable(Widget* group); - void onDisplay() override; + explicit DemoWidgetClickable(SubWidget* group); + explicit DemoWidgetClickable(TopLevelWidget* parent); +protected: + void onCairoDisplay(const CairoGraphicsContext& context) override; bool onMouse(const MouseEvent& event) override; private: diff --git a/examples/CairoUI/DistrhoPluginInfo.h b/examples/CairoUI/DistrhoPluginInfo.h index 8ab79fb4..ce9c04c0 100644 --- a/examples/CairoUI/DistrhoPluginInfo.h +++ b/examples/CairoUI/DistrhoPluginInfo.h @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2019 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -116,3 +116,5 @@ By default this is set to @ref DISTRHO_PLUGIN_URI with "#UI" as suffix. */ #define DISTRHO_UI_URI DISTRHO_PLUGIN_URI "#UI" + +#define DISTRHO_UI_USE_CAIRO 1 diff --git a/examples/CairoUI/Makefile b/examples/CairoUI/Makefile index 828029e3..7ebf2994 100644 --- a/examples/CairoUI/Makefile +++ b/examples/CairoUI/Makefile @@ -16,6 +16,7 @@ FILES_DSP = \ CairoExamplePlugin.cpp FILES_UI = \ + Artwork.cpp \ DemoWidgetBanner.cpp \ DemoWidgetClickable.cpp \ CairoExampleUI.cpp @@ -29,28 +30,23 @@ include ../../Makefile.plugins.mk # -------------------------------------------------------------- # Enable all possible plugin types -ifeq ($(HAVE_JACK),true) ifeq ($(HAVE_CAIRO),true) + +ifeq ($(HAVE_JACK),true) TARGETS += jack -endif -endif +endif # HAVE_JACK ifneq ($(MACOS_OR_WINDOWS),true) -ifeq ($(HAVE_CAIRO),true) ifeq ($(HAVE_LIBLO),true) TARGETS += dssi -endif -endif -endif +endif # HAVE_LIBLO +endif # MACOS_OR_WINDOWS -ifeq ($(HAVE_CAIRO),true) TARGETS += lv2_sep -else -TARGETS += lv2_dsp -endif - TARGETS += vst +endif # HAVE_CAIRO + all: $(TARGETS) # -------------------------------------------------------------- diff --git a/examples/CairoUI/artwork/buttonOff.png b/examples/CairoUI/artwork/buttonOff.png new file mode 100644 index 00000000..d4d6efdc Binary files /dev/null and b/examples/CairoUI/artwork/buttonOff.png differ diff --git a/examples/CairoUI/artwork/buttonOn.png b/examples/CairoUI/artwork/buttonOn.png new file mode 100644 index 00000000..b51acfb1 Binary files /dev/null and b/examples/CairoUI/artwork/buttonOn.png differ diff --git a/examples/CairoUI/artwork/knob.png b/examples/CairoUI/artwork/knob.png new file mode 100644 index 00000000..88f8b551 Binary files /dev/null and b/examples/CairoUI/artwork/knob.png differ diff --git a/examples/ExternalUI/ExternalExamplePlugin.cpp b/examples/ExternalUI/ExternalExamplePlugin.cpp index dbecdcc6..92b1b12e 100644 --- a/examples/ExternalUI/ExternalExamplePlugin.cpp +++ b/examples/ExternalUI/ExternalExamplePlugin.cpp @@ -157,7 +157,7 @@ protected: /** This plugin does nothing, it just demonstrates information usage. So here we directly copy inputs over outputs, leaving the audio untouched. - We need to be careful in case the host re-uses the same buffer for both ins and outs. + We need to be careful in case the host re-uses the same buffer for both inputs and outputs. */ if (outputs[0] != inputs[0]) std::memcpy(outputs[0], inputs[0], sizeof(float)*frames); diff --git a/examples/FileHandling/FileHandlingPlugin.cpp b/examples/FileHandling/FileHandlingPlugin.cpp index 074e5ec4..db134ce3 100644 --- a/examples/FileHandling/FileHandlingPlugin.cpp +++ b/examples/FileHandling/FileHandlingPlugin.cpp @@ -227,7 +227,7 @@ protected: /** This plugin doesn't do audio, it just demonstrates file handling usage. So here we directly copy inputs over outputs, leaving the audio untouched. - We need to be careful in case the host re-uses the same buffer for both ins and outs. + We need to be careful in case the host re-uses the same buffer for both inputs and outputs. */ if (outputs[0] != inputs[0]) std::memcpy(outputs[0], inputs[0], sizeof(float)*frames); diff --git a/examples/FileHandling/NanoButton.cpp b/examples/FileHandling/NanoButton.cpp index a3850403..6b77dccd 100644 --- a/examples/FileHandling/NanoButton.cpp +++ b/examples/FileHandling/NanoButton.cpp @@ -84,10 +84,10 @@ void Button::setBackgroundColor(const Color color) bool Button::onMouse(const MouseEvent &ev) { - if (ev.press & contains(ev.pos)) + if (ev.press && contains(ev.pos)) { buttonActive = true; - setLabelColor(labelColor); + setLabelColor(labelColor); fCallback->buttonClicked(this, true); return true; } diff --git a/examples/ImguiSimpleGain/CParamSmooth.hpp b/examples/ImguiSimpleGain/CParamSmooth.hpp new file mode 100644 index 00000000..b2b96ce0 --- /dev/null +++ b/examples/ImguiSimpleGain/CParamSmooth.hpp @@ -0,0 +1,41 @@ +/** + * One-pole LPF for smooth parameter changes + * + * https://www.musicdsp.org/en/latest/Filters/257-1-pole-lpf-for-smooth-parameter-changes.html + */ + +#ifndef C_PARAM_SMOOTH_H +#define C_PARAM_SMOOTH_H + +#include + +#define TWO_PI 6.283185307179586476925286766559f + +class CParamSmooth { +public: + CParamSmooth(float smoothingTimeMs, float samplingRate) + : t(smoothingTimeMs) + { + setSampleRate(samplingRate); + } + + ~CParamSmooth() { } + + void setSampleRate(float samplingRate) { + if (samplingRate != fs) { + fs = samplingRate; + a = exp(-TWO_PI / (t * 0.001f * samplingRate)); + b = 1.0f - a; + z = 0.0f; + } + } + + inline float process(float in) { + return z = (in * b) + (z * a); + } +private: + float a, b, t, z; + double fs = 0.0; +}; + +#endif // #ifndef C_PARAM_SMOOTH_H diff --git a/examples/ImguiSimpleGain/DistrhoPluginInfo.h b/examples/ImguiSimpleGain/DistrhoPluginInfo.h new file mode 100644 index 00000000..0deddd7b --- /dev/null +++ b/examples/ImguiSimpleGain/DistrhoPluginInfo.h @@ -0,0 +1,145 @@ +/* + * Simple Gain audio effect for DISTRHO Plugin Framework (DPF) + * SPDX-License-Identifier: MIT + * + * Copyright (C) 2021 Jean Pierre Cimalando + * Copyright (C) 2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/** + The plugin name.@n + This is used to identify your plugin before a Plugin instance can be created. + @note This macro is required. + */ +#define DISTRHO_PLUGIN_NAME "ImguiSimpleGain" + +/** + Number of audio inputs the plugin has. + @note This macro is required. + */ +#define DISTRHO_PLUGIN_NUM_INPUTS 2 + +/** + Number of audio outputs the plugin has. + @note This macro is required. + */ +#define DISTRHO_PLUGIN_NUM_OUTPUTS 2 + +/** + The plugin URI when exporting in LV2 format. + @note This macro is required. + */ +#define DISTRHO_PLUGIN_URI "http://distrho.sf.net/examples/imguisimplegain" + +/** + Wherever the plugin has a custom %UI. + @see DISTRHO_UI_USE_NANOVG + @see UI + */ +#define DISTRHO_PLUGIN_HAS_UI 1 + +/** + Wherever the plugin processing is realtime-safe.@n + TODO - list rtsafe requirements + */ +#define DISTRHO_PLUGIN_IS_RT_SAFE 1 + +/** + Wherever the plugin is a synth.@n + @ref DISTRHO_PLUGIN_WANT_MIDI_INPUT is automatically enabled when this is too. + @see DISTRHO_PLUGIN_WANT_MIDI_INPUT + */ +#define DISTRHO_PLUGIN_IS_SYNTH 0 + +/** + Enable direct access between the %UI and plugin code. + @see UI::getPluginInstancePointer() + @note DO NOT USE THIS UNLESS STRICTLY NECESSARY!! + Try to avoid it at all costs! + */ +#define DISTRHO_PLUGIN_WANT_DIRECT_ACCESS 0 + +/** + Wherever the plugin introduces latency during audio or midi processing. + @see Plugin::setLatency(uint32_t) + */ +#define DISTRHO_PLUGIN_WANT_LATENCY 0 + +/** + Wherever the plugin wants MIDI input.@n + This is automatically enabled if @ref DISTRHO_PLUGIN_IS_SYNTH is true. + */ +#define DISTRHO_PLUGIN_WANT_MIDI_INPUT 0 + +/** + Wherever the plugin wants MIDI output. + @see Plugin::writeMidiEvent(const MidiEvent&) + */ +#define DISTRHO_PLUGIN_WANT_MIDI_OUTPUT 0 + +/** + Wherever the plugin provides its own internal programs. + @see Plugin::initProgramName(uint32_t, String&) + @see Plugin::loadProgram(uint32_t) + */ +#define DISTRHO_PLUGIN_WANT_PROGRAMS 1 + +/** + Wherever the plugin uses internal non-parameter data. + @see Plugin::initState(uint32_t, String&, String&) + @see Plugin::setState(const char*, const char*) + */ +#define DISTRHO_PLUGIN_WANT_STATE 0 + +/** + Wherever the plugin wants time position information from the host. + @see Plugin::getTimePosition() + */ +#define DISTRHO_PLUGIN_WANT_TIMEPOS 0 + +/** + Wherever the %UI uses NanoVG for drawing instead of the default raw OpenGL calls.@n + When enabled your %UI instance will subclass @ref NanoWidget instead of @ref Widget. + */ +#define DISTRHO_UI_USE_NANOVG 0 + +/** + The %UI URI when exporting in LV2 format.@n + By default this is set to @ref DISTRHO_PLUGIN_URI with "#UI" as suffix. + */ +#define DISTRHO_UI_URI DISTRHO_PLUGIN_URI "#UI" + +/** + Wherever the %UI uses a custom toolkit implementation based on OpenGL.@n + When enabled, the macros @ref DISTRHO_UI_CUSTOM_INCLUDE_PATH and @ref DISTRHO_UI_CUSTOM_WIDGET_TYPE are required. + */ +#define DISTRHO_UI_USE_CUSTOM 1 + +/** + The include path to the header file used by the custom toolkit implementation. + This path must be relative to dpf/distrho/DistrhoUI.hpp + @see DISTRHO_UI_USE_CUSTOM + */ +#define DISTRHO_UI_CUSTOM_INCLUDE_PATH "ImGuiUI.hpp" + +/** + The top-level-widget typedef to use for the custom toolkit. + This widget class MUST be a subclass of DGL TopLevelWindow class. + It is recommended that you keep this widget class inside the DGL namespace, + and define widget type as e.g. DGL_NAMESPACE::MyCustomTopLevelWidget. + @see DISTRHO_UI_USE_CUSTOM + */ +#define DISTRHO_UI_CUSTOM_WIDGET_TYPE DGL_NAMESPACE::ImGuiUI + +#define DISTRHO_UI_USER_RESIZABLE 1 diff --git a/examples/ImguiSimpleGain/ImGuiSrc.cpp b/examples/ImguiSimpleGain/ImGuiSrc.cpp new file mode 100644 index 00000000..ad4c106c --- /dev/null +++ b/examples/ImguiSimpleGain/ImGuiSrc.cpp @@ -0,0 +1,35 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2021 Jean Pierre Cimalando + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#if !defined(IMGUI_GL2) && !defined(IMGUI_GL3) +# define IMGUI_GL2 1 +#endif +#if defined(IMGUI_GL2) +# include +#elif defined(IMGUI_GL3) +# include +#endif + +#include +#include +#include +#include +#if defined(IMGUI_GL2) +#include +#elif defined(IMGUI_GL3) +#include +#endif diff --git a/examples/ImguiSimpleGain/ImGuiUI.cpp b/examples/ImguiSimpleGain/ImGuiUI.cpp new file mode 100644 index 00000000..fae28d5f --- /dev/null +++ b/examples/ImguiSimpleGain/ImGuiUI.cpp @@ -0,0 +1,314 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2021 Jean Pierre Cimalando + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "Application.hpp" + +#include + +#include "ImGuiUI.hpp" +#include +#if !defined(IMGUI_GL2) && !defined(IMGUI_GL3) +# define IMGUI_GL2 1 +#endif +#if defined(IMGUI_GL2) +# include +#elif defined(IMGUI_GL3) +# include +#endif +#include +#include + +START_NAMESPACE_DGL + +struct ImGuiUI::Impl +{ + explicit Impl(ImGuiUI* self); + ~Impl(); + + void setupGL(); + void cleanupGL(); + + static int mouseButtonToImGui(int button); + + ImGuiUI* fSelf = nullptr; + ImGuiContext* fContext = nullptr; + Color fBackgroundColor{0.25f, 0.25f, 0.25f}; + int fRepaintIntervalMs = 15; + + using Clock = std::chrono::steady_clock; + Clock::time_point fLastRepainted; + bool fWasEverPainted = false; +}; + +ImGuiUI::ImGuiUI(Window& windowToMapTo) + : TopLevelWidget(windowToMapTo), + fImpl(new ImGuiUI::Impl(this)) +{ + getApp().addIdleCallback(this); +} + +ImGuiUI::~ImGuiUI() +{ + delete fImpl; +} + +void ImGuiUI::setBackgroundColor(Color color) +{ + fImpl->fBackgroundColor = color; +} + +void ImGuiUI::setRepaintInterval(int intervalMs) +{ + fImpl->fRepaintIntervalMs = intervalMs; +} + +void ImGuiUI::onDisplay() +{ + ImGui::SetCurrentContext(fImpl->fContext); + +#if defined(IMGUI_GL2) + ImGui_ImplOpenGL2_NewFrame(); +#elif defined(IMGUI_GL3) + ImGui_ImplOpenGL3_NewFrame(); +#endif + + ImGui::NewFrame(); + onImGuiDisplay(); + ImGui::Render(); + + ImGuiIO &io = ImGui::GetIO(); + + glViewport(0, 0, (int)io.DisplaySize.x, (int)io.DisplaySize.y); + + Color backgroundColor = fImpl->fBackgroundColor; + glClearColor( + backgroundColor.red, backgroundColor.green, + backgroundColor.blue, backgroundColor.alpha); + glClear(GL_COLOR_BUFFER_BIT); + glLoadIdentity(); + +#if defined(IMGUI_GL2) + ImGui_ImplOpenGL2_RenderDrawData(ImGui::GetDrawData()); +#elif defined(IMGUI_GL3) + ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); +#endif + + fImpl->fLastRepainted = Impl::Clock::now(); + fImpl->fWasEverPainted = true; +} + +bool ImGuiUI::onKeyboard(const KeyboardEvent& event) +{ + ImGui::SetCurrentContext(fImpl->fContext); + ImGuiIO &io = ImGui::GetIO(); + + if (event.press) + io.AddInputCharacter(event.key); + + int imGuiKey = event.key; + if (imGuiKey >= 0 && imGuiKey < 128) + { + if (imGuiKey >= 'a' && imGuiKey <= 'z') + imGuiKey = imGuiKey - 'a' + 'A'; + io.KeysDown[imGuiKey] = event.press; + } + + return io.WantCaptureKeyboard; +} + +bool ImGuiUI::onSpecial(const SpecialEvent& event) +{ + ImGui::SetCurrentContext(fImpl->fContext); + ImGuiIO &io = ImGui::GetIO(); + + int imGuiKey = IM_ARRAYSIZE(io.KeysDown) - event.key; + io.KeysDown[imGuiKey] = event.press; + + switch (event.key) + { + case kKeyShift: + io.KeyShift = event.press; + break; + case kKeyControl: + io.KeyCtrl = event.press; + break; + case kKeyAlt: + io.KeyAlt = event.press; + break; + case kKeySuper: + io.KeySuper = event.press; + break; + default: + break; + } + + return io.WantCaptureKeyboard; +} + +bool ImGuiUI::onMouse(const MouseEvent& event) +{ + ImGui::SetCurrentContext(fImpl->fContext); + ImGuiIO &io = ImGui::GetIO(); + + int imGuiButton = Impl::mouseButtonToImGui(event.button); + if (imGuiButton != -1) + io.MouseDown[imGuiButton] = event.press; + + return io.WantCaptureMouse; +} + +bool ImGuiUI::onMotion(const MotionEvent& event) +{ + ImGui::SetCurrentContext(fImpl->fContext); + ImGuiIO &io = ImGui::GetIO(); + + // FIXME + const double scaleFactor = 1; // getScaleFactor(); + io.MousePos.x = std::round(scaleFactor * event.pos.getX()); + io.MousePos.y = std::round(scaleFactor * event.pos.getY()); + + return false; +} + +bool ImGuiUI::onScroll(const ScrollEvent& event) +{ + ImGui::SetCurrentContext(fImpl->fContext); + ImGuiIO &io = ImGui::GetIO(); + + io.MouseWheel += event.delta.getY(); + io.MouseWheelH += event.delta.getX(); + + return io.WantCaptureMouse; +} + +void ImGuiUI::onResize(const ResizeEvent& event) +{ + TopLevelWidget::onResize(event); + + const uint width = event.size.getWidth(); + const uint height = event.size.getHeight(); + + ImGui::SetCurrentContext(fImpl->fContext); + ImGuiIO &io = ImGui::GetIO(); + + const double scaleFactor = getScaleFactor(); + io.DisplaySize.x = std::round(scaleFactor * width); + io.DisplaySize.y = std::round(scaleFactor * height); +} + +void ImGuiUI::idleCallback() +{ + bool shouldRepaint; + + if (fImpl->fWasEverPainted) + { + Impl::Clock::duration elapsed = + Impl::Clock::now() - fImpl->fLastRepainted; + std::chrono::milliseconds elapsedMs = + std::chrono::duration_cast(elapsed); + shouldRepaint = elapsedMs.count() > fImpl->fRepaintIntervalMs; + } + else + { + shouldRepaint = true; + } + + if (shouldRepaint) + repaint(); +} + +ImGuiUI::Impl::Impl(ImGuiUI* self) + : fSelf(self) +{ + setupGL(); +} + +ImGuiUI::Impl::~Impl() +{ + cleanupGL(); +} + +void ImGuiUI::Impl::setupGL() +{ + DISTRHO_SAFE_ASSERT_RETURN(glewInit() == 0,); + + IMGUI_CHECKVERSION(); + fContext = ImGui::CreateContext(); + ImGui::SetCurrentContext(fContext); + + ImGuiIO &io = ImGui::GetIO(); + const double scaleFactor = fSelf->getScaleFactor(); + io.DisplaySize.x = std::round(scaleFactor * fSelf->getWidth()); + io.DisplaySize.y = std::round(scaleFactor * fSelf->getHeight()); + io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; + io.IniFilename = nullptr; + + io.KeyMap[ImGuiKey_Tab] = '\t'; + io.KeyMap[ImGuiKey_LeftArrow] = IM_ARRAYSIZE(io.KeysDown) - kKeyLeft; + io.KeyMap[ImGuiKey_RightArrow] = IM_ARRAYSIZE(io.KeysDown) - kKeyRight; + io.KeyMap[ImGuiKey_UpArrow] = IM_ARRAYSIZE(io.KeysDown) - kKeyUp; + io.KeyMap[ImGuiKey_DownArrow] = IM_ARRAYSIZE(io.KeysDown) - kKeyDown; + io.KeyMap[ImGuiKey_PageUp] = IM_ARRAYSIZE(io.KeysDown) - kKeyPageUp; + io.KeyMap[ImGuiKey_PageDown] = IM_ARRAYSIZE(io.KeysDown) - kKeyPageDown; + io.KeyMap[ImGuiKey_Home] = IM_ARRAYSIZE(io.KeysDown) - kKeyHome; + io.KeyMap[ImGuiKey_End] = IM_ARRAYSIZE(io.KeysDown) - kKeyEnd; + io.KeyMap[ImGuiKey_Insert] = IM_ARRAYSIZE(io.KeysDown) - kKeyInsert; + io.KeyMap[ImGuiKey_Delete] = 127; + io.KeyMap[ImGuiKey_Backspace] = '\b'; + io.KeyMap[ImGuiKey_Space] = ' '; + io.KeyMap[ImGuiKey_Enter] = '\r'; + io.KeyMap[ImGuiKey_Escape] = 27; + io.KeyMap[ImGuiKey_A] = 'A'; + io.KeyMap[ImGuiKey_C] = 'C'; + io.KeyMap[ImGuiKey_V] = 'V'; + io.KeyMap[ImGuiKey_X] = 'X'; + io.KeyMap[ImGuiKey_Y] = 'Y'; + io.KeyMap[ImGuiKey_Z] = 'Z'; + +#if defined(IMGUI_GL2) + ImGui_ImplOpenGL2_Init(); +#elif defined(IMGUI_GL3) + ImGui_ImplOpenGL3_Init(); +#endif +} + +void ImGuiUI::Impl::cleanupGL() +{ + ImGui::SetCurrentContext(fContext); +#if defined(IMGUI_GL2) + ImGui_ImplOpenGL2_Shutdown(); +#elif defined(IMGUI_GL3) + ImGui_ImplOpenGL3_Shutdown(); +#endif + ImGui::DestroyContext(fContext); +} + +int ImGuiUI::Impl::mouseButtonToImGui(int button) +{ + switch (button) + { + default: + return -1; + case 1: + return 0; + case 2: + return 2; + case 3: + return 1; + } +} + +END_NAMESPACE_DGL diff --git a/examples/ImguiSimpleGain/ImGuiUI.hpp b/examples/ImguiSimpleGain/ImGuiUI.hpp new file mode 100644 index 00000000..589d3bef --- /dev/null +++ b/examples/ImguiSimpleGain/ImGuiUI.hpp @@ -0,0 +1,56 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2021 Jean Pierre Cimalando + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#pragma once + +#include "TopLevelWidget.hpp" +#include "Color.hpp" + +#ifndef DGL_OPENGL +# error ImGUI is only available in OpenGL mode +#endif + +START_NAMESPACE_DGL + +/** + ImGui user interface class. +*/ +class ImGuiUI : public TopLevelWidget, + public IdleCallback { +public: + ImGuiUI(Window& windowToMapTo); + ~ImGuiUI() override; + void setBackgroundColor(Color color); + void setRepaintInterval(int intervalMs); + +protected: + virtual void onImGuiDisplay() = 0; + + virtual void onDisplay() override; + virtual bool onKeyboard(const KeyboardEvent& event) override; + virtual bool onSpecial(const SpecialEvent& event) override; + virtual bool onMouse(const MouseEvent& event) override; + virtual bool onMotion(const MotionEvent& event) override; + virtual bool onScroll(const ScrollEvent& event) override; + virtual void onResize(const ResizeEvent& event) override; + virtual void idleCallback() override; + +private: + struct Impl; + Impl* fImpl; +}; + +END_NAMESPACE_DGL diff --git a/examples/ImguiSimpleGain/Makefile b/examples/ImguiSimpleGain/Makefile new file mode 100644 index 00000000..f398a122 --- /dev/null +++ b/examples/ImguiSimpleGain/Makefile @@ -0,0 +1,54 @@ +#!/usr/bin/make -f +# Makefile for DISTRHO Plugins # +# ---------------------------- # +# Created by falkTX, Christopher Arndt, and Patrick Desaulniers +# + +# -------------------------------------------------------------- +# Project name, used for binaries + +NAME = d_ImguiSimpleGain + +# -------------------------------------------------------------- +# Files to build + +FILES_DSP = \ + PluginSimpleGain.cpp + +FILES_UI = \ + UISimpleGain.cpp \ + ImGuiUI.cpp \ + ImGuiSrc.cpp + +# -------------------------------------------------------------- +# Do some magic + +include ../../Makefile.plugins.mk + +BUILD_CXX_FLAGS += -I../../../imgui -I../../../imgui/backends +BUILD_CXX_FLAGS += $(shell $(PKG_CONFIG) glew --cflags) +LINK_FLAGS += $(shell $(PKG_CONFIG) glew --libs) + +# -------------------------------------------------------------- +# Enable all selected plugin types + +ifeq ($(HAVE_OPENGL),true) + +ifeq ($(HAVE_JACK),true) +TARGETS += jack +endif # HAVE_JACK + +ifneq ($(MACOS_OR_WINDOWS),true) +ifeq ($(HAVE_LIBLO),true) +TARGETS += dssi +endif # HAVE_LIBLO +endif # MACOS_OR_WINDOWS + +TARGETS += lv2_sep +TARGETS += vst + +endif # HAVE_OPENGL + +all: $(TARGETS) + +# -------------------------------------------------------------- diff --git a/examples/ImguiSimpleGain/PluginSimpleGain.cpp b/examples/ImguiSimpleGain/PluginSimpleGain.cpp new file mode 100644 index 00000000..6c38238b --- /dev/null +++ b/examples/ImguiSimpleGain/PluginSimpleGain.cpp @@ -0,0 +1,161 @@ +/* + * Simple Gain audio effect based on DISTRHO Plugin Framework (DPF) + * + * SPDX-License-Identifier: MIT + * + * Copyright (C) 2021 Jean Pierre Cimalando + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +#include "PluginSimpleGain.hpp" + +START_NAMESPACE_DISTRHO + +// ----------------------------------------------------------------------- + +PluginSimpleGain::PluginSimpleGain() + : Plugin(paramCount, presetCount, 0) // paramCount param(s), presetCount program(s), 0 states +{ + smooth_gain = new CParamSmooth(20.0f, getSampleRate()); + + for (unsigned p = 0; p < paramCount; ++p) { + Parameter param; + initParameter(p, param); + setParameterValue(p, param.ranges.def); + } +} + +PluginSimpleGain::~PluginSimpleGain() { + delete smooth_gain; +} + +// ----------------------------------------------------------------------- +// Init + +void PluginSimpleGain::initParameter(uint32_t index, Parameter& parameter) { + if (index >= paramCount) + return; + + parameter.ranges.min = -90.0f; + parameter.ranges.max = 30.0f; + parameter.ranges.def = -0.0f; + parameter.unit = "db"; + parameter.hints = kParameterIsAutomable; + + switch (index) { + case paramGain: + parameter.name = "Gain (dB)"; + parameter.shortName = "Gain"; + parameter.symbol = "gain"; + break; + } +} + +/** + Set the name of the program @a index. + This function will be called once, shortly after the plugin is created. +*/ +void PluginSimpleGain::initProgramName(uint32_t index, String& programName) { + if (index < presetCount) { + programName = factoryPresets[index].name; + } +} + +// ----------------------------------------------------------------------- +// Internal data + +/** + Optional callback to inform the plugin about a sample rate change. +*/ +void PluginSimpleGain::sampleRateChanged(double newSampleRate) { + fSampleRate = newSampleRate; + smooth_gain->setSampleRate(newSampleRate); +} + +/** + Get the current value of a parameter. +*/ +float PluginSimpleGain::getParameterValue(uint32_t index) const { + return fParams[index]; +} + +/** + Change a parameter value. +*/ +void PluginSimpleGain::setParameterValue(uint32_t index, float value) { + fParams[index] = value; + + switch (index) { + case paramGain: + gain = DB_CO(CLAMP(fParams[paramGain], -90.0, 30.0)); + break; + } +} + +/** + Load a program. + The host may call this function from any context, + including realtime processing. +*/ +void PluginSimpleGain::loadProgram(uint32_t index) { + if (index < presetCount) { + for (int i=0; i < paramCount; i++) { + setParameterValue(i, factoryPresets[index].params[i]); + } + } +} + +// ----------------------------------------------------------------------- +// Process + +void PluginSimpleGain::activate() { + // plugin is activated +} + + + +void PluginSimpleGain::run(const float** inputs, float** outputs, + uint32_t frames) { + + // get the left and right audio inputs + const float* const inpL = inputs[0]; + const float* const inpR = inputs[1]; + + // get the left and right audio outputs + float* const outL = outputs[0]; + float* const outR = outputs[1]; + + // apply gain against all samples + for (uint32_t i=0; i < frames; ++i) { + float gainval = smooth_gain->process(gain); + outL[i] = inpL[i] * gainval; + outR[i] = inpR[i] * gainval; + } +} + +// ----------------------------------------------------------------------- + +Plugin* createPlugin() { + return new PluginSimpleGain(); +} + +// ----------------------------------------------------------------------- + +END_NAMESPACE_DISTRHO diff --git a/examples/ImguiSimpleGain/PluginSimpleGain.hpp b/examples/ImguiSimpleGain/PluginSimpleGain.hpp new file mode 100644 index 00000000..69da27d0 --- /dev/null +++ b/examples/ImguiSimpleGain/PluginSimpleGain.hpp @@ -0,0 +1,161 @@ +/* + * Simple Gain audio effect based on DISTRHO Plugin Framework (DPF) + * + * SPDX-License-Identifier: MIT + * + * Copyright (C) 2021 Jean Pierre Cimalando + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +#ifndef PLUGIN_SIMPLEGAIN_H +#define PLUGIN_SIMPLEGAIN_H + +#include "DistrhoPlugin.hpp" +#include "CParamSmooth.hpp" + +START_NAMESPACE_DISTRHO + +#ifndef MIN +#define MIN(a,b) ( (a) < (b) ? (a) : (b) ) +#endif + +#ifndef MAX +#define MAX(a,b) ( (a) > (b) ? (a) : (b) ) +#endif + +#ifndef CLAMP +#define CLAMP(v, min, max) (MIN((max), MAX((min), (v)))) +#endif + +#ifndef DB_CO +#define DB_CO(g) ((g) > -90.0f ? powf(10.0f, (g) * 0.05f) : 0.0f) +#endif + +// ----------------------------------------------------------------------- + +class PluginSimpleGain : public Plugin { +public: + enum Parameters { + paramGain = 0, + paramCount + }; + + PluginSimpleGain(); + + ~PluginSimpleGain(); + +protected: + // ------------------------------------------------------------------- + // Information + + const char* getLabel() const noexcept override { + return "SimpleGain"; + } + + const char* getDescription() const override { + return "A simple audio volume gain plugin"; + } + + const char* getMaker() const noexcept override { + return "example.com"; + } + + const char* getHomePage() const override { + return "https://example.com/plugins/simplegain"; + } + + const char* getLicense() const noexcept override { + return "https://spdx.org/licenses/MIT"; + } + + uint32_t getVersion() const noexcept override { + return d_version(0, 1, 0); + } + + // Go to: + // + // http://service.steinberg.de/databases/plugin.nsf/plugIn + // + // Get a proper plugin UID and fill it in here! + int64_t getUniqueId() const noexcept override { + return d_cconst('a', 'b', 'c', 'd'); + } + + // ------------------------------------------------------------------- + // Init + + void initParameter(uint32_t index, Parameter& parameter) override; + void initProgramName(uint32_t index, String& programName) override; + + // ------------------------------------------------------------------- + // Internal data + + float getParameterValue(uint32_t index) const override; + void setParameterValue(uint32_t index, float value) override; + void loadProgram(uint32_t index) override; + + // ------------------------------------------------------------------- + // Optional + + // Optional callback to inform the plugin about a sample rate change. + void sampleRateChanged(double newSampleRate) override; + + // ------------------------------------------------------------------- + // Process + + void activate() override; + + void run(const float**, float** outputs, uint32_t frames) override; + + + // ------------------------------------------------------------------- + +private: + float fParams[paramCount]; + double fSampleRate; + float gain; + CParamSmooth *smooth_gain; + + DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(PluginSimpleGain) +}; + +struct Preset { + const char* name; + float params[PluginSimpleGain::paramCount]; +}; + +const Preset factoryPresets[] = { + { + "Unity Gain", + {0.0f} + } + //,{ + // "Another preset", // preset name + // {-14.0f, ...} // array of presetCount float param values + //} +}; + +const uint presetCount = sizeof(factoryPresets) / sizeof(Preset); + +// ----------------------------------------------------------------------- + +END_NAMESPACE_DISTRHO + +#endif // #ifndef PLUGIN_SIMPLEGAIN_H diff --git a/examples/ImguiSimpleGain/UISimpleGain.cpp b/examples/ImguiSimpleGain/UISimpleGain.cpp new file mode 100644 index 00000000..70af1d5c --- /dev/null +++ b/examples/ImguiSimpleGain/UISimpleGain.cpp @@ -0,0 +1,130 @@ +/* + * Simple Gain audio effect based on DISTRHO Plugin Framework (DPF) + * + * SPDX-License-Identifier: MIT + * + * Copyright (C) 2021 Jean Pierre Cimalando + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +#include "UISimpleGain.hpp" +#include +// #include "Window.hpp" + +START_NAMESPACE_DISTRHO + +// ----------------------------------------------------------------------- +// Init / Deinit + +UISimpleGain::UISimpleGain() +: UI(600, 400) +{ + setGeometryConstraints(600, 400, true); +} + +UISimpleGain::~UISimpleGain() { + +} + +// ----------------------------------------------------------------------- +// DSP/Plugin callbacks + +/** + A parameter has changed on the plugin side. + This is called by the host to inform the UI about parameter changes. +*/ +void UISimpleGain::parameterChanged(uint32_t index, float value) { + params[index] = value; + + switch (index) { + case PluginSimpleGain::paramGain: + // do something when Gain param is set, such as update a widget + break; + } + + (void)value; +} + +/** + A program has been loaded on the plugin side. + This is called by the host to inform the UI about program changes. +*/ +void UISimpleGain::programLoaded(uint32_t index) { + if (index < presetCount) { + for (int i=0; i < PluginSimpleGain::paramCount; i++) { + // set values for each parameter and update their widgets + parameterChanged(i, factoryPresets[index].params[i]); + } + } +} + +/** + Optional callback to inform the UI about a sample rate change on the plugin side. +*/ +void UISimpleGain::sampleRateChanged(double newSampleRate) { + (void)newSampleRate; +} + +// ----------------------------------------------------------------------- +// Widget callbacks + + +/** + A function called to draw the view contents. +*/ +void UISimpleGain::onImGuiDisplay() { + float width = getWidth(); + float height = getHeight(); + float margin = 20.0f; + + ImGui::SetNextWindowPos(ImVec2(margin, margin)); + ImGui::SetNextWindowSize(ImVec2(width - 2 * margin, height - 2 * margin)); + + if (ImGui::Begin("Simple gain")) { + static char aboutText[256] = + "This is a demo plugin made with ImGui.\n"; + ImGui::InputTextMultiline("About", aboutText, sizeof(aboutText)); + + float& gain = params[PluginSimpleGain::paramGain]; + if (ImGui::SliderFloat("Gain (dB)", &gain, -90.0f, 30.0f)) + { + if (ImGui::IsItemActivated()) + { + editParameter(PluginSimpleGain::paramGain, true); + } + setParameterValue(PluginSimpleGain::paramGain, gain); + } + if (ImGui::IsItemDeactivated()) + { + editParameter(PluginSimpleGain::paramGain, false); + } + } + ImGui::End(); +} + +// ----------------------------------------------------------------------- + +UI* createUI() { + return new UISimpleGain(); +} + +// ----------------------------------------------------------------------- + +END_NAMESPACE_DISTRHO diff --git a/examples/ImguiSimpleGain/UISimpleGain.hpp b/examples/ImguiSimpleGain/UISimpleGain.hpp new file mode 100644 index 00000000..cf28dd8e --- /dev/null +++ b/examples/ImguiSimpleGain/UISimpleGain.hpp @@ -0,0 +1,55 @@ +/* + * Simple Gain audio effect based on DISTRHO Plugin Framework (DPF) + * + * SPDX-License-Identifier: MIT + * + * Copyright (C) 2021 Jean Pierre Cimalando + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +#ifndef UI_SIMPLEGAIN_H +#define UI_SIMPLEGAIN_H + +#include "DistrhoUI.hpp" +#include "PluginSimpleGain.hpp" + +START_NAMESPACE_DISTRHO + +class UISimpleGain : public UI { +public: + UISimpleGain(); + ~UISimpleGain(); + +protected: + void parameterChanged(uint32_t, float value) override; + void programLoaded(uint32_t index) override; + void sampleRateChanged(double newSampleRate) override; + + void onImGuiDisplay() override; + +private: + float params[PluginSimpleGain::paramCount] {}; + + DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(UISimpleGain) +}; + +END_NAMESPACE_DISTRHO + +#endif diff --git a/examples/Info/InfoExamplePlugin.cpp b/examples/Info/InfoExamplePlugin.cpp index bd4829ea..15c4f41e 100644 --- a/examples/Info/InfoExamplePlugin.cpp +++ b/examples/Info/InfoExamplePlugin.cpp @@ -208,7 +208,7 @@ protected: /** This plugin does nothing, it just demonstrates information usage. So here we directly copy inputs over outputs, leaving the audio untouched. - We need to be careful in case the host re-uses the same buffer for both ins and outs. + We need to be careful in case the host re-uses the same buffer for both inputs and outputs. */ if (outputs[0] != inputs[0]) std::memcpy(outputs[0], inputs[0], sizeof(float)*frames); diff --git a/examples/Info/Makefile b/examples/Info/Makefile index 4fe4fa54..2ffdae11 100644 --- a/examples/Info/Makefile +++ b/examples/Info/Makefile @@ -29,8 +29,8 @@ include ../../Makefile.plugins.mk ifeq ($(HAVE_JACK),true) ifeq ($(HAVE_OPENGL),true) TARGETS += jack -endif -endif +endif # HAVE_OPENGL +endif # HAVE_JACK ifeq ($(HAVE_OPENGL),true) TARGETS += lv2_sep diff --git a/examples/Latency/Makefile b/examples/Latency/Makefile index 2cac959a..4b0067b9 100644 --- a/examples/Latency/Makefile +++ b/examples/Latency/Makefile @@ -23,10 +23,7 @@ include ../../Makefile.plugins.mk # -------------------------------------------------------------- # Enable all possible plugin types -ifneq ($(MACOS_OR_WINDOWS),true) TARGETS += ladspa -endif - TARGETS += lv2_dsp TARGETS += vst diff --git a/examples/Meters/Makefile b/examples/Meters/Makefile index 9ac485a5..1fdbfa24 100644 --- a/examples/Meters/Makefile +++ b/examples/Meters/Makefile @@ -26,28 +26,23 @@ include ../../Makefile.plugins.mk # -------------------------------------------------------------- # Enable all possible plugin types -ifeq ($(HAVE_JACK),true) ifeq ($(HAVE_OPENGL),true) + +ifeq ($(HAVE_JACK),true) TARGETS += jack -endif -endif +endif # HAVE_JACK ifneq ($(MACOS_OR_WINDOWS),true) ifeq ($(HAVE_LIBLO),true) -ifeq ($(HAVE_OPENGL),true) TARGETS += dssi -endif -endif -endif +endif # HAVE_LIBLO +endif # MACOS_OR_WINDOWS -ifeq ($(HAVE_OPENGL),true) TARGETS += lv2_sep -else -TARGETS += lv2_dsp -endif - TARGETS += vst +endif # HAVE_OPENGL + all: $(TARGETS) # -------------------------------------------------------------- diff --git a/examples/MidiThrough/Makefile b/examples/MidiThrough/Makefile index 79c50beb..084fb2c7 100644 --- a/examples/MidiThrough/Makefile +++ b/examples/MidiThrough/Makefile @@ -23,10 +23,9 @@ include ../../Makefile.plugins.mk # -------------------------------------------------------------- # Enable all possible plugin types -ifeq ($(LINUX),true) +ifeq ($(HAVE_JACK),true) TARGETS += jack endif - TARGETS += lv2_dsp TARGETS += vst diff --git a/examples/Parameters/ExamplePluginParameters.cpp b/examples/Parameters/ExamplePluginParameters.cpp index ea6ec6d1..3d995ed8 100644 --- a/examples/Parameters/ExamplePluginParameters.cpp +++ b/examples/Parameters/ExamplePluginParameters.cpp @@ -251,7 +251,7 @@ The plugin will be treated as an effect, but it will not change the host audio." /** This plugin does nothing, it just demonstrates parameter usage. So here we directly copy inputs over outputs, leaving the audio untouched. - We need to be careful in case the host re-uses the same buffer for both ins and outs. + We need to be careful in case the host re-uses the same buffer for both inputs and outputs. */ if (outputs[0] != inputs[0]) std::memcpy(outputs[0], inputs[0], sizeof(float)*frames); diff --git a/examples/Parameters/ExampleUIParameters.cpp b/examples/Parameters/ExampleUIParameters.cpp index aa0a0b3a..7b5e2c49 100644 --- a/examples/Parameters/ExampleUIParameters.cpp +++ b/examples/Parameters/ExampleUIParameters.cpp @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2019 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -15,9 +15,15 @@ */ #include "DistrhoUI.hpp" +#include "Color.hpp" START_NAMESPACE_DISTRHO +/** + We need the Color class from DGL. + */ +using DGL_NAMESPACE::Color; + /** We need the rectangle class from DGL. */ @@ -102,20 +108,22 @@ protected: */ void onDisplay() override { + const GraphicsContext& context(getGraphicsContext()); + const uint width = getWidth(); const uint height = getHeight(); const uint minwh = std::min(width, height); const uint bgColor = getBackgroundColor(); - Rectangle r; + Rectangle r; // if host doesn't respect aspect-ratio but supports ui background, draw out-of-bounds color from it if (width != height && bgColor != 0) { - const GLubyte red = (bgColor >> 24) & 0xff; - const GLubyte green = (bgColor >> 16) & 0xff; - const GLubyte blue = (bgColor >> 8) & 0xff; - glColor3ub(red, green, blue); + const int red = (bgColor >> 24) & 0xff; + const int green = (bgColor >> 16) & 0xff; + const int blue = (bgColor >> 8) & 0xff; + Color(red, green, blue).setFor(context); if (width > height) { @@ -128,7 +136,7 @@ protected: r.setSize(width, height-width); } - r.draw(); + r.draw(context); } r.setWidth(minwh/3 - 6); @@ -143,31 +151,31 @@ protected: r.setY(3); if (fParamGrid[0+i]) - glColor3f(0.8f, 0.5f, 0.3f); + Color(0.8f, 0.5f, 0.3f).setFor(context); else - glColor3f(0.3f, 0.5f, 0.8f); + Color(0.3f, 0.5f, 0.8f).setFor(context); - r.draw(); + r.draw(context); // middle r.setY(3 + minwh/3); if (fParamGrid[3+i]) - glColor3f(0.8f, 0.5f, 0.3f); + Color(0.8f, 0.5f, 0.3f).setFor(context); else - glColor3f(0.3f, 0.5f, 0.8f); + Color(0.3f, 0.5f, 0.8f).setFor(context); - r.draw(); + r.draw(context); // bottom r.setY(3 + minwh*2/3); if (fParamGrid[6+i]) - glColor3f(0.8f, 0.5f, 0.3f); + Color(0.8f, 0.5f, 0.3f).setFor(context); else - glColor3f(0.3f, 0.5f, 0.8f); + Color(0.3f, 0.5f, 0.8f).setFor(context); - r.draw(); + r.draw(context); } } @@ -185,7 +193,7 @@ protected: const uint height = getHeight(); const uint minwh = std::min(width, height); - Rectangle r; + Rectangle r; r.setWidth(minwh/3 - 6); r.setHeight(minwh/3 - 6); diff --git a/examples/Parameters/Makefile b/examples/Parameters/Makefile index c8c7cafc..2d899211 100644 --- a/examples/Parameters/Makefile +++ b/examples/Parameters/Makefile @@ -29,17 +29,17 @@ include ../../Makefile.plugins.mk ifeq ($(HAVE_JACK),true) ifeq ($(HAVE_OPENGL),true) TARGETS += jack -endif -endif +endif # HAVE_OPENGL +endif # HAVE_JACK ifneq ($(MACOS_OR_WINDOWS),true) +TARGETS += ladspa ifeq ($(HAVE_LIBLO),true) ifeq ($(HAVE_OPENGL),true) -TARGETS += ladspa TARGETS += dssi -endif -endif -endif +endif # HAVE_OPENGL +endif # HAVE_LIBLO +endif # MACOS_OR_WINDOWS ifeq ($(HAVE_OPENGL),true) TARGETS += lv2_sep diff --git a/examples/States/DistrhoPluginInfo.h b/examples/States/DistrhoPluginInfo.h index 2b888245..52e13568 100644 --- a/examples/States/DistrhoPluginInfo.h +++ b/examples/States/DistrhoPluginInfo.h @@ -27,7 +27,6 @@ #define DISTRHO_PLUGIN_NUM_OUTPUTS 2 #define DISTRHO_PLUGIN_WANT_PROGRAMS 1 #define DISTRHO_PLUGIN_WANT_STATE 1 -#define DISTRHO_PLUGIN_WANT_FULL_STATE 1 #define DISTRHO_UI_USER_RESIZABLE 1 #endif // DISTRHO_PLUGIN_INFO_H_INCLUDED diff --git a/examples/States/ExamplePluginStates.cpp b/examples/States/ExamplePluginStates.cpp index b9f9ee57..8d1c6c94 100644 --- a/examples/States/ExamplePluginStates.cpp +++ b/examples/States/ExamplePluginStates.cpp @@ -208,6 +208,7 @@ The plugin will be treated as an effect, but it will not change the host audio." } } +#if DISTRHO_PLUGIN_WANT_FULL_STATE /* FIXME */ /** Get the value of an internal state. The host may call this function from any non-realtime context. @@ -239,6 +240,7 @@ The plugin will be treated as an effect, but it will not change the host audio." return sFalse; } +#endif /** Change an internal state. @@ -279,7 +281,7 @@ The plugin will be treated as an effect, but it will not change the host audio." /** This plugin does nothing, it just demonstrates state usage. So here we directly copy inputs over outputs, leaving the audio untouched. - We need to be careful in case the host re-uses the same buffer for both ins and outs. + We need to be careful in case the host re-uses the same buffer for both inputs and outputs. */ if (outputs[0] != inputs[0]) std::memcpy(outputs[0], inputs[0], sizeof(float)*frames); @@ -296,7 +298,6 @@ private: */ bool fParamGrid[9]; - /** Set our plugin class as non-copyable and add a leak detector just in case. */ diff --git a/examples/States/ExampleUIStates.cpp b/examples/States/ExampleUIStates.cpp index 1f197f75..4d271fc9 100644 --- a/examples/States/ExampleUIStates.cpp +++ b/examples/States/ExampleUIStates.cpp @@ -1,6 +1,6 @@ /* * DISTRHO Plugin Framework (DPF) - * Copyright (C) 2012-2019 Filipe Coelho + * Copyright (C) 2012-2021 Filipe Coelho * * Permission to use, copy, modify, and/or distribute this software for any purpose with * or without fee is hereby granted, provided that the above copyright notice and this @@ -15,9 +15,15 @@ */ #include "DistrhoUI.hpp" +#include "Color.hpp" START_NAMESPACE_DISTRHO +/** + We need the Color class from DGL. + */ +using DGL_NAMESPACE::Color; + /** We need the rectangle class from DGL. */ @@ -146,48 +152,74 @@ protected: */ void onDisplay() override { + const GraphicsContext& context(getGraphicsContext()); + const uint width = getWidth(); const uint height = getHeight(); + const uint minwh = std::min(width, height); + const uint bgColor = getBackgroundColor(); - Rectangle r; + Rectangle r; - r.setWidth(width/3 - 6); - r.setHeight(height/3 - 6); + // if host doesn't respect aspect-ratio but supports ui background, draw out-of-bounds color from it + if (width != height && bgColor != 0) + { + const int red = (bgColor >> 24) & 0xff; + const int green = (bgColor >> 16) & 0xff; + const int blue = (bgColor >> 8) & 0xff; + Color(red, green, blue).setFor(context); + + if (width > height) + { + r.setPos(height, 0); + r.setSize(width-height, height); + } + else + { + r.setPos(0, width); + r.setSize(width, height-width); + } + + r.draw(context); + } + + r.setWidth(minwh/3 - 6); + r.setHeight(minwh/3 - 6); // draw left, center and right columns for (int i=0; i<3; ++i) { - r.setX(3 + i*width/3); + r.setX(3 + i*minwh/3); // top r.setY(3); if (fParamGrid[0+i]) - glColor3f(0.8f, 0.5f, 0.3f); + Color(0.8f, 0.5f, 0.3f).setFor(context); else - glColor3f(0.3f, 0.5f, 0.8f); + Color(0.3f, 0.5f, 0.8f).setFor(context); - r.draw(); + r.draw(context); // middle - r.setY(3 + height/3); + r.setY(3 + minwh/3); if (fParamGrid[3+i]) - glColor3f(0.8f, 0.5f, 0.3f); + Color(0.8f, 0.5f, 0.3f).setFor(context); else - glColor3f(0.3f, 0.5f, 0.8f); + Color(0.3f, 0.5f, 0.8f).setFor(context); - r.draw(); + r.draw(context); // bottom - r.setY(3 + height*2/3); + r.setY(3 + minwh*2/3); if (fParamGrid[6+i]) - glColor3f(0.8f, 0.5f, 0.3f); + Color(0.8f, 0.5f, 0.3f).setFor(context); else - glColor3f(0.3f, 0.5f, 0.8f); + Color(0.3f, 0.5f, 0.8f).setFor(context); - r.draw(); + r.draw(context); } } @@ -204,7 +236,7 @@ protected: const uint width = getWidth(); const uint height = getHeight(); - Rectangle r; + Rectangle r; r.setWidth(width/3 - 6); r.setHeight(height/3 - 6); diff --git a/examples/States/Makefile b/examples/States/Makefile index a9117e84..25489a34 100644 --- a/examples/States/Makefile +++ b/examples/States/Makefile @@ -29,8 +29,12 @@ include ../../Makefile.plugins.mk ifeq ($(HAVE_JACK),true) ifeq ($(HAVE_OPENGL),true) TARGETS += jack -endif -endif +endif # HAVE_OPENGL +endif # HAVE_JACK + +ifneq ($(MACOS_OR_WINDOWS),true) +TARGETS += dssi +endif # MACOS_OR_WINDOWS ifeq ($(HAVE_OPENGL),true) TARGETS += lv2_sep diff --git a/tests/Application.cpp b/tests/Application.cpp new file mode 100644 index 00000000..b9859804 --- /dev/null +++ b/tests/Application.cpp @@ -0,0 +1,91 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "tests.hpp" + +#define DPF_TEST_APPLICATION_CPP +#include "dgl/src/pugl.cpp" +#include "dgl/src/Application.cpp" +#include "dgl/src/ApplicationPrivateData.cpp" + +START_NAMESPACE_DGL + +// -------------------------------------------------------------------------------------------------------------------- + +struct IdleCallbackCounter : IdleCallback +{ + int counter; + + IdleCallbackCounter() + : counter(0) {} + + void idleCallback() override + { + ++counter; + } +}; + +// -------------------------------------------------------------------------------------------------------------------- + +END_NAMESPACE_DGL + +int main() +{ + USE_NAMESPACE_DGL; + + // regular usage + { + Application app(true); + IdleCallbackCounter idleCounter; + app.addIdleCallback(&idleCounter); + DISTRHO_ASSERT_EQUAL(app.isQuiting(), false, "app MUST NOT be set as quitting during init"); + DISTRHO_ASSERT_EQUAL(idleCounter.counter, 0, "app MUST NOT have triggered idle callbacks yet"); + app.idle(); + DISTRHO_ASSERT_EQUAL(app.isQuiting(), false, "app MUST NOT be set as quitting after idle()"); + DISTRHO_ASSERT_EQUAL(idleCounter.counter, 1, "app MUST have triggered 1 idle callback"); + app.idle(); + DISTRHO_ASSERT_EQUAL(idleCounter.counter, 2, "app MUST have triggered 2 idle callbacks"); + app.quit(); + DISTRHO_ASSERT_EQUAL(app.isQuiting(), true, "app MUST be set as quitting after quit()"); + DISTRHO_ASSERT_EQUAL(idleCounter.counter, 2, "app MUST have triggered only 2 idle callbacks in its lifetime"); + } + + // standalone exec, must not block forever due to quit() called from another thread + { + Application app(true); + ApplicationQuitter appQuitter(app); + IdleCallbackCounter idleCounter; + app.addIdleCallback(&idleCounter); + app.exec(); + DISTRHO_ASSERT_EQUAL(appQuitter.isThreadRunning(), false, "app quit triggered because we told it so"); + DISTRHO_ASSERT_NOT_EQUAL(idleCounter.counter, 0, "app idle callbacks MUST have been triggered"); + } + + // standalone exec, but with 0 as timeout + { + Application app(true); + ApplicationQuitter appQuitter(app); + IdleCallbackCounter idleCounter; + app.addIdleCallback(&idleCounter); + app.exec(0); + DISTRHO_ASSERT_EQUAL(appQuitter.isThreadRunning(), false, "app quit triggered because we told it so"); + DISTRHO_ASSERT_NOT_EQUAL(idleCounter.counter, 0, "app idle callbacks MUST have been triggered"); + } + + return 0; +} + +// -------------------------------------------------------------------------------------------------------------------- diff --git a/tests/Circle.cpp b/tests/Circle.cpp new file mode 100644 index 00000000..e00d80be --- /dev/null +++ b/tests/Circle.cpp @@ -0,0 +1,30 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "tests.hpp" + +// -------------------------------------------------------------------------------------------------------------------- + +int main() +{ + USE_NAMESPACE_DGL; + + // TODO + + return 0; +} + +// -------------------------------------------------------------------------------------------------------------------- diff --git a/tests/Color.cpp b/tests/Color.cpp new file mode 100644 index 00000000..412de3a7 --- /dev/null +++ b/tests/Color.cpp @@ -0,0 +1,219 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "tests.hpp" + +#define DPF_TEST_COLOR_CPP +#include "dgl/src/Color.cpp" + +// -------------------------------------------------------------------------------------------------------------------- + +int main() +{ + USE_NAMESPACE_DGL; + + // constructor with no arguments, must give solid black + { + Color c; + DISTRHO_ASSERT_EQUAL(c.red, 0.0f, "red value is 0"); + DISTRHO_ASSERT_EQUAL(c.green, 0.0f, "green value is 0"); + DISTRHO_ASSERT_EQUAL(c.blue, 0.0f, "blue value is 0"); + DISTRHO_ASSERT_EQUAL(c.alpha, 1.0f, "alpha value is 1"); + } + + // constructor gives correct floating-point values (arguments are r, g, b, a; in order) + { + Color c(0.1f, 0.2f, 0.3f, 0.4f); + DISTRHO_ASSERT_EQUAL(c.red, 0.1f, "red value is 0.1"); + DISTRHO_ASSERT_EQUAL(c.green, 0.2f, "green value is 0.2"); + DISTRHO_ASSERT_EQUAL(c.blue, 0.3f, "blue value is 0.3"); + DISTRHO_ASSERT_EQUAL(c.alpha, 0.4f, "alpha value is 0.4"); + } + + // constructor gives correct integer values normalized to float (arguments are r, g, b, a; in order) + { + Color c(51, 102, 153); + DISTRHO_ASSERT_SAFE_EQUAL(c.red, 0.2f, "red value is 0.2 (integer 51)"); + DISTRHO_ASSERT_SAFE_EQUAL(c.green, 0.4f, "green value is 0.4 (integer 102)"); + DISTRHO_ASSERT_SAFE_EQUAL(c.blue, 0.6f, "blue value is 0.6 (integer 153)"); + DISTRHO_ASSERT_SAFE_EQUAL(c.alpha, 1.0f, "alpha value is 1"); + + Color white(255, 255, 255); + DISTRHO_ASSERT_EQUAL(white.red, 1.0f, "white's red value is 1"); + DISTRHO_ASSERT_EQUAL(white.green, 1.0f, "white's green value is 1"); + DISTRHO_ASSERT_EQUAL(white.blue, 1.0f, "white's blue value is 1"); + DISTRHO_ASSERT_EQUAL(white.alpha, 1.0f, "white alpha value is 1"); + } + + // copy colors around + { + Color black; + Color halfTransparentWhite(1.0f, 1.0f, 1.0f, 0.5f); + + // constructor copy + Color test(halfTransparentWhite); + DISTRHO_ASSERT_EQUAL(test.red, 1.0f, "copied white's red value is 1.0"); + DISTRHO_ASSERT_EQUAL(test.green, 1.0f, "copied white's green value is 1"); + DISTRHO_ASSERT_EQUAL(test.blue, 1.0f, "copied white's blue value is 1"); + DISTRHO_ASSERT_EQUAL(test.alpha, 0.5f, "copied white's alpha value is 0.5"); + + // assign operator + test = black; + DISTRHO_ASSERT_EQUAL(test.red, 0.0f, "assigned black's red value is 0"); + DISTRHO_ASSERT_EQUAL(test.green, 0.0f, "assigned black's green value is 0"); + DISTRHO_ASSERT_EQUAL(test.blue, 0.0f, "assigned black's blue value is 0"); + DISTRHO_ASSERT_EQUAL(test.alpha, 1.0f, "assigned black's alpha value is 1"); + } + + // simple color comparisons + { + Color black1, black2; + Color white(1.0f, 1.0f, 1.0f); + Color halfTransparentWhite(1.0f, 1.0f, 1.0f, 0.5f); + + // logic operators + DISTRHO_ASSERT_EQUAL(black1, black1, "color equals itself"); + DISTRHO_ASSERT_EQUAL(black1, black2, "black equals black"); + DISTRHO_ASSERT_NOT_EQUAL(black1, white, "black is not white"); + DISTRHO_ASSERT_NOT_EQUAL(black1, halfTransparentWhite, "black is not half-transparent white"); + DISTRHO_ASSERT_NOT_EQUAL(white, halfTransparentWhite, "white is not half-transparent white"); + + // class functions (truthful) + DISTRHO_ASSERT_EQUAL(black1.isEqual(black1), true, "color equals itself"); + DISTRHO_ASSERT_EQUAL(black1.isEqual(black2), true, "black equals black"); + DISTRHO_ASSERT_EQUAL(black1.isNotEqual(white), true, "black is not white"); + DISTRHO_ASSERT_EQUAL(white.isNotEqual(halfTransparentWhite), true, "white is not half-transparent white"); + + // class functions (inverted) + DISTRHO_ASSERT_EQUAL(black1.isNotEqual(black1), false, "color equals itself"); + DISTRHO_ASSERT_EQUAL(black1.isNotEqual(black2), false, "black equals black"); + DISTRHO_ASSERT_EQUAL(black1.isEqual(white), false, "black is not white"); + DISTRHO_ASSERT_EQUAL(white.isEqual(halfTransparentWhite), false, "white is not half-transparent white"); + + // class functions ignoring alpha + DISTRHO_ASSERT_EQUAL(black1.isEqual(black1, false), true, "color equals itself"); + DISTRHO_ASSERT_EQUAL(black1.isEqual(black2, false), true, "black equals black"); + DISTRHO_ASSERT_EQUAL(black1.isNotEqual(white, false), true, "black is not white"); + DISTRHO_ASSERT_EQUAL(white.isEqual(halfTransparentWhite, false), true, + "white is half-transparent white if we ignore alpha"); + } + + // TODO advanced color comparisons + { + } + + // TODO fromHSL + { + } + + // create colors from html strings + { + Color c000 = Color::fromHTML("#000"); + DISTRHO_ASSERT_EQUAL(c000.red, 0.0f, "#000 red value is 0"); + DISTRHO_ASSERT_EQUAL(c000.green, 0.0f, "#000 green value is 0"); + DISTRHO_ASSERT_EQUAL(c000.blue, 0.0f, "#000 blue value is 0"); + DISTRHO_ASSERT_EQUAL(c000.alpha, 1.0f, "#000 alpha value is 1"); + + Color c000000 = Color::fromHTML("#000000"); + DISTRHO_ASSERT_EQUAL(c000000.red, 0.0f, "#000000 red value is 0"); + DISTRHO_ASSERT_EQUAL(c000000.green, 0.0f, "#000000 green value is 0"); + DISTRHO_ASSERT_EQUAL(c000000.blue, 0.0f, "#000000 blue value is 0"); + DISTRHO_ASSERT_EQUAL(c000000.alpha, 1.0f, "#000000 alpha value is 1"); + + Color cfff = Color::fromHTML("#fff"); + DISTRHO_ASSERT_EQUAL(cfff.red, 1.0f, "#fff red value is 1"); + DISTRHO_ASSERT_EQUAL(cfff.green, 1.0f, "#fff green value is 1"); + DISTRHO_ASSERT_EQUAL(cfff.blue, 1.0f, "#fff blue value is 1"); + DISTRHO_ASSERT_EQUAL(cfff.alpha, 1.0f, "#fff alpha value is 1"); + + Color cffffff = Color::fromHTML("#ffffff"); + DISTRHO_ASSERT_EQUAL(cffffff.red, 1.0f, "#ffffff red value is 1"); + DISTRHO_ASSERT_EQUAL(cffffff.green, 1.0f, "#ffffff green value is 1"); + DISTRHO_ASSERT_EQUAL(cffffff.blue, 1.0f, "#ffffff blue value is 1"); + DISTRHO_ASSERT_EQUAL(cffffff.alpha, 1.0f, "#ffffff alpha value is 1"); + + Color cf00 = Color::fromHTML("#f00"); + DISTRHO_ASSERT_EQUAL(cf00.red, 1.0f, "#f00 red value is 1"); + DISTRHO_ASSERT_EQUAL(cf00.green, 0.0f, "#f00 green value is 0"); + DISTRHO_ASSERT_EQUAL(cf00.blue, 0.0f, "#f00 blue value is 0"); + + Color cff0000 = Color::fromHTML("#ff0000"); + DISTRHO_ASSERT_EQUAL(cff0000.red, 1.0f, "#ff0000 red value is 1"); + DISTRHO_ASSERT_EQUAL(cff0000.green, 0.0f, "#ff0000 green value is 0"); + DISTRHO_ASSERT_EQUAL(cff0000.blue, 0.0f, "#ff0000 blue value is 0"); + + Color c0f0 = Color::fromHTML("#0f0"); + DISTRHO_ASSERT_EQUAL(c0f0.red, 0.0f, "#0f0 red value is 0"); + DISTRHO_ASSERT_EQUAL(c0f0.green, 1.0f, "#0f0 green value is 1"); + DISTRHO_ASSERT_EQUAL(c0f0.blue, 0.0f, "#0f0 blue value is 0"); + + Color c00ff00 = Color::fromHTML("#00ff00"); + DISTRHO_ASSERT_EQUAL(c00ff00.red, 0.0f, "#00ff00 red value is 0"); + DISTRHO_ASSERT_EQUAL(c00ff00.green, 1.0f, "#00ff00 green value is 1"); + DISTRHO_ASSERT_EQUAL(c00ff00.blue, 0.0f, "#00ff00 blue value is 0"); + + Color c00f = Color::fromHTML("#00f"); + DISTRHO_ASSERT_EQUAL(c00f.red, 0.0f, "#00f red value is 0"); + DISTRHO_ASSERT_EQUAL(c00f.green, 0.0f, "#00f green value is 0"); + DISTRHO_ASSERT_EQUAL(c00f.blue, 1.0f, "#00f blue value is 1"); + + Color c0000ff = Color::fromHTML("#0000ff"); + DISTRHO_ASSERT_EQUAL(c0000ff.red, 0.0f, "#0000ff red value is 0"); + DISTRHO_ASSERT_EQUAL(c0000ff.green, 0.0f, "#0000ff green value is 0"); + DISTRHO_ASSERT_EQUAL(c0000ff.blue, 1.0f, "#0000ff blue value is 1"); + + // half point, round to 1 decimal point due to precision loss + Color grey = Color::fromHTML("#7b7b7b"); + DISTRHO_ASSERT_SAFE_EQUAL(std::round(grey.red*10)/10, 0.5f, "grey's rounded red value is 0.5"); + DISTRHO_ASSERT_SAFE_EQUAL(std::round(grey.green*10)/10, 0.5f, "grey's rounded green value is 0.5"); + DISTRHO_ASSERT_SAFE_EQUAL(std::round(grey.blue*10)/10, 0.5f, "grey's rounded blue value is 0.5"); + } + + // check bounds + { + Color negativeInteger(-1, -1, -1, -1.0f); + DISTRHO_ASSERT_EQUAL(negativeInteger.red, 0.0f, "red value is 0"); + DISTRHO_ASSERT_EQUAL(negativeInteger.green, 0.0f, "green value is 0"); + DISTRHO_ASSERT_EQUAL(negativeInteger.blue, 0.0f, "blue value is 0"); + DISTRHO_ASSERT_EQUAL(negativeInteger.alpha, 0.0f, "alpha value is 0"); + + Color negativeFloat(-1.0f, -1.0f, -1.0f, -1.0f); + DISTRHO_ASSERT_EQUAL(negativeFloat.red, 0.0f, "red value is 0"); + DISTRHO_ASSERT_EQUAL(negativeFloat.green, 0.0f, "green value is 0"); + DISTRHO_ASSERT_EQUAL(negativeFloat.blue, 0.0f, "blue value is 0"); + DISTRHO_ASSERT_EQUAL(negativeFloat.alpha, 0.0f, "alpha value is 0"); + + Color overflowInteger(0xfff, 0xfff, 0xfff, 0xfff); + DISTRHO_ASSERT_EQUAL(overflowInteger.red, 1.0f, "red value is 1"); + DISTRHO_ASSERT_EQUAL(overflowInteger.green, 1.0f, "green value is 1"); + DISTRHO_ASSERT_EQUAL(overflowInteger.blue, 1.0f, "blue value is 1"); + DISTRHO_ASSERT_EQUAL(overflowInteger.alpha, 1.0f, "alpha value is 1"); + + Color overflowFloat(2.0f, 2.0f, 2.0f, 2.0f); + DISTRHO_ASSERT_EQUAL(overflowFloat.red, 1.0f, "red value is 1"); + DISTRHO_ASSERT_EQUAL(overflowFloat.green, 1.0f, "green value is 1"); + DISTRHO_ASSERT_EQUAL(overflowFloat.blue, 1.0f, "blue value is 1"); + DISTRHO_ASSERT_EQUAL(overflowFloat.alpha, 1.0f, "alpha value is 1"); + } + + // TODO interpolation + { + } + + return 0; +} + +// -------------------------------------------------------------------------------------------------------------------- diff --git a/tests/Demo.cpp b/tests/Demo.cpp new file mode 100644 index 00000000..751ce106 --- /dev/null +++ b/tests/Demo.cpp @@ -0,0 +1,407 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "tests.hpp" + +#include "widgets/ExampleColorWidget.hpp" +#include "widgets/ExampleImagesWidget.hpp" +#include "widgets/ExampleRectanglesWidget.hpp" +#include "widgets/ExampleShapesWidget.hpp" +#ifdef DGL_OPENGL +#include "widgets/ExampleTextWidget.hpp" +#endif + +#include "demo_res/DemoArtwork.cpp" +#include "images_res/CatPics.cpp" + +#ifdef DGL_CAIRO +#include "../dgl/Cairo.hpp" +typedef DGL_NAMESPACE::CairoImage DemoImage; +#endif +#ifdef DGL_OPENGL +#include "../dgl/OpenGL.hpp" +typedef DGL_NAMESPACE::OpenGLImage DemoImage; +#endif +#ifdef DGL_VULKAN +#include "../dgl/Vulkan.hpp" +typedef DGL_NAMESPACE::VulkanImage DemoImage; +#endif + +START_NAMESPACE_DGL + +typedef ExampleImagesWidget ExampleImagesSubWidget; +typedef ExampleImagesWidget ExampleImagesTopLevelWidget; +typedef ExampleImagesWidget ExampleImagesStandaloneWindow; + +// -------------------------------------------------------------------------------------------------------------------- +// Left side tab-like widget + +class LeftSideWidget : public SubWidget +{ +public: +#ifdef DGL_OPENGL + static const int kPageCount = 5; +#else + static const int kPageCount = 4; +#endif + + class Callback + { + public: + virtual ~Callback() {} + virtual void curPageChanged(int curPage) = 0; + }; + + LeftSideWidget(Widget* parent, Callback* const cb) + : SubWidget(parent), + callback(cb), + curPage(0), + curHover(-1) + { + + using namespace DemoArtwork; + img1.loadFromMemory(ico1Data, ico1Width, ico1Height, kImageFormatBGR); + img2.loadFromMemory(ico2Data, ico2Width, ico2Height, kImageFormatBGR); + img3.loadFromMemory(ico3Data, ico3Width, ico2Height, kImageFormatBGR); + img4.loadFromMemory(ico4Data, ico4Width, ico4Height, kImageFormatBGR); + +#ifdef DGL_OPENGL + img5.loadFromMemory(ico5Data, ico5Width, ico5Height, kImageFormatBGR); + + // for text + nvg.loadSharedResources(); +#endif + } + +protected: + void onDisplay() override + { + const GraphicsContext& context(getGraphicsContext()); + const int iconSize = bgIcon.getWidth(); + + Color(0.027f, 0.027f, 0.027f).setFor(context); + Rectangle(0, 0, getSize()).draw(context); + + bgIcon.setY(curPage*iconSize + curPage*3); + + Color(0.129f, 0.129f, 0.129f).setFor(context); + bgIcon.draw(context); + + Color(0.184f, 0.184f, 0.184f).setFor(context); + bgIcon.drawOutline(context); + + if (curHover != curPage && curHover != -1) + { + Rectangle rHover(1, curHover*iconSize + curHover*3, iconSize-2, iconSize-2); + + Color(0.071f, 0.071f, 0.071f).setFor(context); + rHover.draw(context); + + Color(0.102f, 0.102f, 0.102f).setFor(context); + rHover.drawOutline(context); + } + + Color(0.184f, 0.184f, 0.184f).setFor(context); + lineSep.draw(context); + + // reset color + Color(1.0f, 1.0f, 1.0f, 1.0f).setFor(context, true); + + const int pad = iconSize/2 - DemoArtwork::ico1Width/2; + + img1.drawAt(context, pad, pad); + img2.drawAt(context, pad, pad + 3 + iconSize); + img3.drawAt(context, pad, pad + 6 + iconSize*2); + img4.drawAt(context, pad, pad + 9 + iconSize*3); + +#ifdef DGL_OPENGL + img5.drawAt(context, pad, pad + 12 + iconSize*4); + + // draw some text + nvg.beginFrame(this); + + nvg.fontSize(23.0f); + nvg.textAlign(NanoVG::ALIGN_LEFT|NanoVG::ALIGN_TOP); + //nvg.textLineHeight(20.0f); + + nvg.fillColor(220,220,220,220); + nvg.textBox(10, 420, iconSize, "Haha,", nullptr); + nvg.textBox(15, 440, iconSize, "Look!", nullptr); + + nvg.endFrame(); +#endif + } + + bool onMouse(const MouseEvent& ev) override + { + if (ev.button != 1 || ! ev.press) + return false; + if (! contains(ev.pos)) + return false; + + const int iconSize = bgIcon.getWidth(); + + for (int i=0; icurPageChanged(i); + repaint(); + break; + } + } + + return true; + } + + bool onMotion(const MotionEvent& ev) override + { + if (contains(ev.pos)) + { + const int iconSize = bgIcon.getWidth(); + + for (int i=0; i bgIcon; + Line lineSep; + DemoImage img1, img2, img3, img4, img5; + +#ifdef DGL_OPENGL + // for text + NanoVG nvg; +#endif +}; + +// -------------------------------------------------------------------------------------------------------------------- +// Main Demo Window, having a left-side tab-like widget and main area for current widget + +class DemoWindow : public StandaloneWindow, + public LeftSideWidget::Callback +{ + static const int kSidebarWidth = 81; + +public: +#ifdef DGL_CAIRO + static constexpr const char* const kExampleWidgetName = "Demo - Cairo"; +#endif +#ifdef DGL_OPENGL + static constexpr const char* const kExampleWidgetName = "Demo - OpenGL"; +#endif +#ifdef DGL_VULKAN + static constexpr const char* const kExampleWidgetName = "Demo - Vulkan"; +#endif + + DemoWindow(Application& app) + : StandaloneWindow(app), + wColor(this), + wImages(this), + wRects(this), + wShapes(this), +#ifdef DGL_OPENGL + wText(this), +#endif + wLeft(this, this), + curWidget(nullptr) + { + wColor.hide(); + wImages.hide(); + wRects.hide(); + wShapes.hide(); +#ifdef DGL_OPENGL + wText.hide(); +#endif + + wColor.setAbsoluteX(kSidebarWidth); + wImages.setAbsoluteX(kSidebarWidth); + wRects.setAbsoluteX(kSidebarWidth); + wShapes.setAbsoluteX(kSidebarWidth); +#ifdef DGL_OPENGL + wText.setAbsoluteX(kSidebarWidth); +#endif + wLeft.setAbsolutePos(2, 2); + + curPageChanged(0); + } + +protected: + void curPageChanged(int curPage) override + { + if (curWidget != nullptr) + curWidget->hide(); + + switch (curPage) + { + case 0: + curWidget = &wColor; + break; + case 1: + curWidget = &wImages; + break; + case 2: + curWidget = &wRects; + break; + case 3: + curWidget = &wShapes; + break; +#ifdef DGL_OPENGL + case 4: + curWidget = &wText; + break; +#endif + default: + curWidget = nullptr; + break; + } + + if (curWidget != nullptr) + curWidget->show(); + } + + void onDisplay() override + { + } + + void onReshape(uint width, uint height) override + { + StandaloneWindow::onReshape(width, height); + + if (width < kSidebarWidth) + return; + + Size size(width-kSidebarWidth, height); + wColor.setSize(size); + wImages.setSize(size); + wRects.setSize(size); + wShapes.setSize(size); +#ifdef DGL_OPENGL + wText.setSize(size); +#endif + wLeft.setSize(kSidebarWidth-4, height-4); + } + +private: + ExampleColorSubWidget wColor; + ExampleImagesSubWidget wImages; + ExampleRectanglesSubWidget wRects; + ExampleShapesSubWidget wShapes; +#ifdef DGL_OPENGL + ExampleTextSubWidget wText; +#endif + LeftSideWidget wLeft; + + Widget* curWidget; +}; + +// -------------------------------------------------------------------------------------------------------------------- +// Special handy function that runs a StandaloneWindow inside the function scope + +template +void createAndShowExampleWidgetStandaloneWindow(Application& app) +{ + ExampleWidgetStandaloneWindow swin(app); + swin.setResizable(true); + swin.setSize(600, 500); + swin.setTitle(ExampleWidgetStandaloneWindow::kExampleWidgetName); + swin.show(); + app.exec(); +} + +// -------------------------------------------------------------------------------------------------------------------- + +END_NAMESPACE_DGL + +int main(int argc, char* argv[]) +{ + USE_NAMESPACE_DGL; + using DGL_NAMESPACE::Window; + + Application app; + + if (argc > 1) + { + /**/ if (std::strcmp(argv[1], "color") == 0) + createAndShowExampleWidgetStandaloneWindow(app); + else if (std::strcmp(argv[1], "images") == 0) + createAndShowExampleWidgetStandaloneWindow(app); + else if (std::strcmp(argv[1], "rectangles") == 0) + createAndShowExampleWidgetStandaloneWindow(app); + else if (std::strcmp(argv[1], "shapes") == 0) + createAndShowExampleWidgetStandaloneWindow(app); +#ifdef DGL_OPENGL + else if (std::strcmp(argv[1], "text") == 0) + createAndShowExampleWidgetStandaloneWindow(app); +#endif + else + d_stderr2("Invalid demo mode, must be one of: color, images, rectangles or shapes"); + } + else + { + createAndShowExampleWidgetStandaloneWindow(app); + } + + return 0; +} + +// -------------------------------------------------------------------------------------------------------------------- diff --git a/tests/FileBrowserDialog.cpp b/tests/FileBrowserDialog.cpp new file mode 100644 index 00000000..aa70ac51 --- /dev/null +++ b/tests/FileBrowserDialog.cpp @@ -0,0 +1,181 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "tests.hpp" + +#include "dgl/NanoVG.hpp" + +START_NAMESPACE_DGL + +// -------------------------------------------------------------------------------------------------------------------- + +class NanoFilePicker : public NanoStandaloneWindow +{ + Rectangle buttonBounds; + bool buttonClick = false; + bool buttonHover = false; + String selectedFile; + +public: + NanoFilePicker(Application& app) + : NanoStandaloneWindow(app), + selectedFile("No file selected yet") + { +#ifndef DGL_NO_SHARED_RESOURCES + loadSharedResources(); +#endif + } + +protected: + void onNanoDisplay() override + { + // Selected file + beginPath(); + fontSize(14); + textAlign(ALIGN_LEFT | ALIGN_MIDDLE); + fillColor(255, 255, 255, 255); + text(20, getHeight()/2, selectedFile, NULL); + closePath(); + + // Button background + beginPath(); + fillColor(Color(32, buttonClick ? 128 : 32, buttonHover ? 128 : 32)); + strokeColor(Color()); + rect(buttonBounds.getX(), buttonBounds.getY(), buttonBounds.getWidth(), buttonBounds.getHeight()); + fill(); + stroke(); + closePath(); + + // Button label + beginPath(); + fontSize(14); + Rectangle buttonTextBounds; + textBounds(0, 0, "Press me", NULL, buttonTextBounds); + textAlign(ALIGN_CENTER | ALIGN_MIDDLE); + fillColor(255, 255, 255, 255); + text(buttonBounds.getX() + buttonBounds.getWidth()/2, + buttonBounds.getY() + buttonBounds.getHeight()/2, + "Press me", NULL); + closePath(); + } + + bool onMotion(const MotionEvent& ev) override + { + const bool newButtonHover = buttonBounds.contains(ev.pos); + + if (newButtonHover != buttonHover) + { + buttonHover = newButtonHover; + repaint(); + return true; + } + + return newButtonHover; + } + + bool onMouse(const MouseEvent& ev) override + { + if (ev.button != 1) + return false; + + if (! buttonBounds.contains(ev.pos)) + { + if (buttonClick) + { + buttonClick = false; + repaint(); + return true; + } + return false; + } + + const bool newButtonClick = ev.press; + + if (newButtonClick != buttonClick) + { + buttonClick = newButtonClick; + repaint(); + + if (newButtonClick) + { + selectedFile = "(in progress)"; + repaint(); + + FileBrowserOptions opts; + opts.title = "Look at me"; + if (! openFileBrowser(opts)) + { + selectedFile = "(Failed to start file browser)"; + repaint(); + } + } + + return true; + } + + return newButtonClick; + } + + void onResize(const ResizeEvent& ev) override + { + const uint width = ev.size.getWidth(); + const uint height = ev.size.getHeight(); + + buttonBounds = Rectangle(width - 120, height/2 - 20, 100, 40); + } + + void onFocus(const bool focus, CrossingMode) override + { + if (focus) + return; + + buttonClick = false; + buttonHover = false; + repaint(); + } + + void onFileSelected(const char* filename) override + { + if (filename == nullptr) + filename = "Cancelled"; + + if (selectedFile == filename) + return; + + selectedFile = filename; + repaint(); + } +}; + +// -------------------------------------------------------------------------------------------------------------------- + +END_NAMESPACE_DGL + +int main() +{ + USE_NAMESPACE_DGL; + + Application app(true); + NanoFilePicker win(app); + win.setSize(500, 200); + win.setTitle("FileBrowserDialog"); + win.show(); + app.exec(); + + return 0; +} + +// -------------------------------------------------------------------------------------------------------------------- diff --git a/tests/Line.cpp b/tests/Line.cpp new file mode 100644 index 00000000..e00d80be --- /dev/null +++ b/tests/Line.cpp @@ -0,0 +1,30 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "tests.hpp" + +// -------------------------------------------------------------------------------------------------------------------- + +int main() +{ + USE_NAMESPACE_DGL; + + // TODO + + return 0; +} + +// -------------------------------------------------------------------------------------------------------------------- diff --git a/tests/Makefile b/tests/Makefile new file mode 100644 index 00000000..a0a9c31e --- /dev/null +++ b/tests/Makefile @@ -0,0 +1,161 @@ +#!/usr/bin/make -f +# Makefile for DGL # +# ---------------- # +# Created by falkTX +# + +include ../Makefile.base.mk + +# --------------------------------------------------------------------------------------------------------------------- + +BUILD_C_FLAGS += $(DGL_FLAGS) -I.. +BUILD_CXX_FLAGS += $(DGL_FLAGS) -I.. -I../dgl/src/pugl-upstream/include -DDONT_SET_USING_DGL_NAMESPACE +LINK_FLAGS += -lpthread + +# TODO fix within pugl +BUILD_CXX_FLAGS += -Wno-extra -Wno-missing-field-initializers + +ifeq ($(MACOS),true) +BUILD_CXX_FLAGS += -ObjC++ -DGL_SILENCE_DEPRECATION -Wno-deprecated-declarations +endif + +# --------------------------------------------------------------------------------------------------------------------- + +MANUAL_TESTS = +UNIT_TESTS = Application Color Point + +ifeq ($(HAVE_CAIRO),true) +MANUAL_TESTS += Demo.cairo +UNIT_TESTS += Window.cairo +endif +ifeq ($(HAVE_OPENGL),true) +MANUAL_TESTS += Demo.opengl +MANUAL_TESTS += FileBrowserDialog +MANUAL_TESTS += NanoSubWidgets +UNIT_TESTS += Window.opengl +endif +ifeq ($(HAVE_STUB),true) +UNIT_TESTS += Window.stub +endif +ifeq ($(HAVE_VULKAN),true) +UNIT_TESTS += Window.vulkan +endif + +MANUAL_TARGETS = $(MANUAL_TESTS:%=../build/tests/%$(APP_EXT)) +UNIT_TARGET = $(UNIT_TESTS:%=../build/tests/%$(APP_EXT)) + +ALL_OBJS = $(MANUAL_TESTS:%=../build/tests/%.cpp.o) +ALL_OBJS += $(UNIT_TESTS:%=../build/tests/%.cpp.o) + +# --------------------------------------------------------------------------------------------------------------------- + +all: $(MANUAL_TARGETS) $(UNIT_TARGET) + +# --------------------------------------------------------------------------------------------------------------------- + +define RUN_TEST + + ${1} +endef + +# valgrind --leak-check=full $@ + +run: $(UNIT_TARGET) + $(foreach TEST,$^,$(call RUN_TEST,$(TEST))) + +# --------------------------------------------------------------------------------------------------------------------- + +clean: + rm -rf ../build/tests + +# --------------------------------------------------------------------------------------------------------------------- +# building steps + +../build/tests/%.c.o: %.c + -@mkdir -p ../build/tests + @echo "Compiling $<" + $(SILENT)$(CC) $< $(BUILD_C_FLAGS) -c -o $@ + +../build/tests/%.cpp.o: %.cpp + -@mkdir -p ../build/tests + @echo "Compiling $<" + $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ + +../build/tests/%.cpp.cairo.o: %.cpp + -@mkdir -p ../build/tests + @echo "Compiling $< (Cairo)" + $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(CAIRO_FLAGS) -DDGL_CAIRO -c -o $@ + +../build/tests/%.cpp.opengl.o: %.cpp + -@mkdir -p ../build/tests + @echo "Compiling $< (OpenGL)" + $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(OPENGL_FLAGS) -DDGL_OPENGL -c -o $@ + +../build/tests/%.cpp.stub.o: %.cpp + -@mkdir -p ../build/tests + @echo "Compiling $< (Stub)" + $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ + +../build/tests/%.cpp.vulkan.o: %.cpp + -@mkdir -p ../build/tests + @echo "Compiling $< (Vulkan)" + $(SILENT)$(CXX) $< $(BUILD_CXX_FLAGS) $(OPENGL_FLAGS) -DDGL_VULKAN -c -o $@ + +# --------------------------------------------------------------------------------------------------------------------- +# linking steps + +../build/tests/%$(APP_EXT): ../build/tests/%.cpp.o + @echo "Linking $*" + $(SILENT)$(CXX) $< $(LINK_FLAGS) $(DGL_SYSTEM_LIBS) -o $@ + +../build/tests/%.cairo$(APP_EXT): ../build/tests/%.cpp.cairo.o + @echo "Linking $*" + $(SILENT)$(CXX) $< $(LINK_FLAGS) $(DGL_SYSTEM_LIBS) $(CAIRO_LIBS) -o $@ + +../build/tests/%.opengl$(APP_EXT): ../build/tests/%.cpp.opengl.o + @echo "Linking $*" + $(SILENT)$(CXX) $< $(LINK_FLAGS) $(DGL_SYSTEM_LIBS) $(OPENGL_LIBS) -o $@ + +../build/tests/%.stub$(APP_EXT): ../build/tests/%.cpp.stub.o + @echo "Linking $*" + $(SILENT)$(CXX) $< $(LINK_FLAGS) $(DGL_SYSTEM_LIBS) -o $@ + +../build/tests/%.vulkan$(APP_EXT): ../build/tests/%.cpp.vulkan.o + @echo "Linking $*" + $(SILENT)$(CXX) $< $(LINK_FLAGS) $(DGL_SYSTEM_LIBS) $(VULKAN_LIBS) -o $@ + +# --------------------------------------------------------------------------------------------------------------------- +# linking steps (special, links against DGL static lib) + +../build/tests/Demo.cairo$(APP_EXT): ../build/tests/Demo.cpp.cairo.o ../build/libdgl-cairo.a + @echo "Linking Demo (Cairo)" + $(SILENT)$(CXX) $^ $(LINK_FLAGS) $(DGL_SYSTEM_LIBS) $(CAIRO_LIBS) -o $@ + +../build/tests/Demo.opengl$(APP_EXT): ../build/tests/Demo.cpp.opengl.o ../build/libdgl-opengl.a + @echo "Linking Demo (OpenGL)" + $(SILENT)$(CXX) $^ $(LINK_FLAGS) $(DGL_SYSTEM_LIBS) $(OPENGL_LIBS) -o $@ + +../build/tests/Demo.vulkan$(APP_EXT): ../build/tests/Demo.cpp.vulkan.o ../build/libdgl-vulkan.a + @echo "Linking Demo (OpenGL)" + $(SILENT)$(CXX) $^ $(LINK_FLAGS) $(DGL_SYSTEM_LIBS) $(VULKAN_LIBS) -o $@ + +../build/tests/FileBrowserDialog$(APP_EXT): ../build/tests/FileBrowserDialog.cpp.o ../build/libdgl-opengl.a + @echo "Linking Demo (OpenGL)" + $(SILENT)$(CXX) $^ $(LINK_FLAGS) $(DGL_SYSTEM_LIBS) $(OPENGL_LIBS) -o $@ + +../build/tests/NanoSubWidgets$(APP_EXT): ../build/tests/NanoSubWidgets.cpp.o ../build/libdgl-opengl.a + @echo "Linking Demo (OpenGL)" + $(SILENT)$(CXX) $^ $(LINK_FLAGS) $(DGL_SYSTEM_LIBS) $(OPENGL_LIBS) -o $@ + +# --------------------------------------------------------------------------------------------------------------------- + +-include $(OBJS:%.o=%.d) +-include ../build/tests/Demo.cpp.cairo.d +-include ../build/tests/Demo.cpp.opengl.d +-include ../build/tests/Demo.cpp.vulkan.d +-include ../build/tests/Window.cpp.cairo.d +-include ../build/tests/Window.cpp.opengl.d +-include ../build/tests/Window.cpp.stub.d +-include ../build/tests/Window.cpp.vulkan.d + +# --------------------------------------------------------------------------------------------------------------------- diff --git a/tests/NanoSubWidgets.cpp b/tests/NanoSubWidgets.cpp new file mode 100644 index 00000000..267d5878 --- /dev/null +++ b/tests/NanoSubWidgets.cpp @@ -0,0 +1,161 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "tests.hpp" + +#include "../dgl/NanoVG.hpp" + +START_NAMESPACE_DGL + +// -------------------------------------------------------------------------------------------------------------------- + +class NanoRectangle : public NanoSubWidget +{ +public: + explicit NanoRectangle(Widget* const parent) + : NanoSubWidget(parent), + color() {} + + void setColor(const Color c) noexcept + { + color = c; + } + +protected: + void onNanoDisplay() override + { + beginPath(); + + fillColor(color); + rect(0, 0, getWidth(), getHeight()); + fill(); + + closePath(); + } + +private: + Color color; +}; + +// -------------------------------------------------------------------------------------------------------------------- + +class NanoRectanglesContainer : public NanoTopLevelWidget, + public IdleCallback +{ +public: + explicit NanoRectanglesContainer(Window& parent) + : NanoTopLevelWidget(parent), + rect1(this), + rect2(this), + rect3(this), + rectToHide(1) + { + rect1.setAbsolutePos(100, 100); + rect1.setSize(25, 25); + rect1.setColor(Color(255, 0, 0)); + + rect2.setAbsolutePos(200, 200); + rect2.setSize(25, 25); + rect2.setColor(Color(0, 255, 0)); + + rect3.setAbsolutePos(300, 300); + rect3.setSize(25, 25); + rect3.setColor(Color(0, 0, 255)); + + idleCallback(); + addIdleCallback(this, 500); + } + +protected: + void onNanoDisplay() override + { + beginPath(); + + fillColor(Color(0.5f, 0.5f, 0.5f)); + rect(0, 0, getWidth(), getHeight()); + fill(); + + closePath(); + } + + void idleCallback() override + { + switch (rectToHide) + { + case 1: + rect1.hide(); + rect2.show(); + rect3.show(); + rectToHide = 2; + break; + case 2: + rect1.show(); + rect2.hide(); + rect3.show(); + rectToHide = 3; + break; + case 3: + rect1.show(); + rect2.show(); + rect3.hide(); + rectToHide = 1; + break; + } + } + +private: + NanoRectangle rect1, rect2, rect3; + int rectToHide; +}; + +// -------------------------------------------------------------------------------------------------------------------- + +class NanoExampleWindow : public Window +{ +public: + explicit NanoExampleWindow(Application& app) + : Window(app), + container(*this) + { + const uint targetWidth = 400; + const uint targetHeight = 400; + + setSize(targetWidth, targetHeight); + setTitle("NanoVG SubWidgets test"); + } + +private: + NanoRectanglesContainer container; +}; + +// -------------------------------------------------------------------------------------------------------------------- + +END_NAMESPACE_DGL + +int main() +{ + USE_NAMESPACE_DGL; + + Application app; + NanoExampleWindow win(app); + + win.show(); + app.exec(); + + return 0; +} + +// -------------------------------------------------------------------------------------------------------------------- diff --git a/tests/Point.cpp b/tests/Point.cpp new file mode 100644 index 00000000..f51e5552 --- /dev/null +++ b/tests/Point.cpp @@ -0,0 +1,90 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "tests.hpp" + +#define DPF_TEST_POINT_CPP +#include "dgl/src/Geometry.cpp" + +// -------------------------------------------------------------------------------------------------------------------- + +template +static int runTestsPerType() +{ + USE_NAMESPACE_DGL; + + // basic usage + { + Point p; + DISTRHO_ASSERT_EQUAL(p.getX(), 0, "point start X value is 0"); + DISTRHO_ASSERT_EQUAL(p.getY(), 0, "point start Y value is 0"); + DISTRHO_ASSERT_EQUAL(p.isZero(), true, "point start is zero"); + DISTRHO_ASSERT_EQUAL(p.isNotZero(), false, "point start is for sure zero"); + + p.setX(5); + DISTRHO_ASSERT_EQUAL(p.getX(), 5, "point X value changed to 5"); + DISTRHO_ASSERT_EQUAL(p.getY(), 0, "point start Y value remains 0"); + DISTRHO_ASSERT_EQUAL(p.isZero(), false, "point after custom X is not zero"); + DISTRHO_ASSERT_EQUAL(p.isNotZero(), true, "point after custom X is for sure not zero"); + + p.setY(7); + DISTRHO_ASSERT_EQUAL(p.getX(), 5, "point X value remains 5"); + DISTRHO_ASSERT_EQUAL(p.getY(), 7, "point Y value changed to 7"); + DISTRHO_ASSERT_EQUAL(p.isZero(), false, "point after custom X and Y is not zero"); + DISTRHO_ASSERT_EQUAL(p.isNotZero(), true, "point after custom X and Y is for sure not zero"); + + // TODO everything else + } + + return 0; +} + +int main() +{ + if (const int ret = runTestsPerType()) + return ret; + + if (const int ret = runTestsPerType()) + return ret; + + if (const int ret = runTestsPerType()) + return ret; + + if (const int ret = runTestsPerType()) + return ret; + + if (const int ret = runTestsPerType()) + return ret; + + if (const int ret = runTestsPerType()) + return ret; + + if (const int ret = runTestsPerType()) + return ret; + + if (const int ret = runTestsPerType()) + return ret; + + if (const int ret = runTestsPerType()) + return ret; + + if (const int ret = runTestsPerType()) + return ret; + + return 0; +} + +// -------------------------------------------------------------------------------------------------------------------- diff --git a/tests/README.txt b/tests/README.txt new file mode 100644 index 00000000..953e9397 --- /dev/null +++ b/tests/README.txt @@ -0,0 +1,42 @@ +This directory contains several tests for DPF related things, from graphics to plugin stuff to utilities. +Each *.cpp file is meant to be its own test. + +In order to test DPF components individually, some of these tests do not link against DGL but import/include its files. +All test files must be self-contained, in order to prevent surprises in regards global state and initialization stuff. + +The following tests are present: + + - Application + Verifies that creating an application instance and its event loop is working correctly. + This test should automatically close itself without errors after a few seconds + + - Circle + TODO + + - Color + Runs a few unit-tests on top of the Color class. Mostly complete but still WIP. + + - Demo + A full window with widgets to verify that contents are being drawn correctly, window can be resized and events work. + Can be used in both Cairo and OpenGL modes, the Vulkan variant does not work right now. + + - Line + TODO + + - NanoSubWidgets + Verifies that NanoVG subwidgets are being drawn properly, and that hide/show calls work as intended. + There should be a grey background with 3 squares on top, one of hiding every half second in a sequence. + + - Point + Runs a few unit-tests on top of the Point class. Mostly complete but still WIP. + + - Rectangle + TODO + + - Triangle + TODO + + - Window + Runs a few basic tests with Window showing, hiding and event loop. + Will try to create a window on screen. + Should automatically close after a few seconds. diff --git a/tests/Rectangle.cpp b/tests/Rectangle.cpp new file mode 100644 index 00000000..e00d80be --- /dev/null +++ b/tests/Rectangle.cpp @@ -0,0 +1,30 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "tests.hpp" + +// -------------------------------------------------------------------------------------------------------------------- + +int main() +{ + USE_NAMESPACE_DGL; + + // TODO + + return 0; +} + +// -------------------------------------------------------------------------------------------------------------------- diff --git a/tests/Triangle.cpp b/tests/Triangle.cpp new file mode 100644 index 00000000..e00d80be --- /dev/null +++ b/tests/Triangle.cpp @@ -0,0 +1,30 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "tests.hpp" + +// -------------------------------------------------------------------------------------------------------------------- + +int main() +{ + USE_NAMESPACE_DGL; + + // TODO + + return 0; +} + +// -------------------------------------------------------------------------------------------------------------------- diff --git a/tests/Window.cpp b/tests/Window.cpp new file mode 100644 index 00000000..81dd37c5 --- /dev/null +++ b/tests/Window.cpp @@ -0,0 +1,64 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "tests.hpp" + +#define DPF_TEST_POINT_CPP +#define DPF_TEST_WINDOW_CPP +#include "dgl/src/pugl.cpp" +#include "dgl/src/Application.cpp" +#include "dgl/src/ApplicationPrivateData.cpp" +#include "dgl/src/Geometry.cpp" +#include "dgl/src/Window.cpp" +#include "dgl/src/WindowPrivateData.cpp" + +// -------------------------------------------------------------------------------------------------------------------- + +int main() +{ + USE_NAMESPACE_DGL; + + using DGL_NAMESPACE::Window; + + // creating and destroying simple window + { + Application app(true); + Window win(app); + } + + // creating and destroying simple window, with a delay + { + Application app(true); + ApplicationQuitter appQuitter(app); + Window win(app); + app.exec(); + } + + // showing and closing simple window, MUST be visible on screen + { + Application app(true); + ApplicationQuitter appQuitter(app); + Window win(app); + win.show(); + app.exec(); + } + + // TODO + + return 0; +} + +// -------------------------------------------------------------------------------------------------------------------- diff --git a/tests/demo_res/DemoArtwork.cpp b/tests/demo_res/DemoArtwork.cpp new file mode 100644 index 00000000..6875a665 --- /dev/null +++ b/tests/demo_res/DemoArtwork.cpp @@ -0,0 +1,569 @@ +/* (Auto-generated binary data file). */ + +#include "DemoArtwork.hpp" + +static const unsigned char temp_ico1_1[] = { + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 2, 2, 73, 15, 15, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, + 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 15, 15, 77, 2, 2, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 15, 15, 77, 172, 172, 121, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, + 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, + 186, 186, 125, 186, 186, 125, 186, 186, 125, 172, 172, 121, 15, 15, 77, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 16, 16, 77, 186, 186, 125, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 186, 186, 125, 16, 16, 77, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 16, 16, 77, 186, 186, 125, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 186, 186, 125, 16, 16, 77, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 16, 16, 77, 186, 186, 125, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 186, 186, 125, 16, 16, 77, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 16, 16, 77, 186, 186, 125, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 186, 186, 125, 16, 16, 77, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 16, 16, 77, 186, 186, 125, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 186, 186, 125, 16, 16, 77, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 16, 16, 77, 186, 186, 125, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 186, 186, 125, 16, 16, 77, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 16, 16, 77, 186, 186, 125, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 186, 186, 125, 16, 16, 77, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 16, 16, 77, 186, 186, 125, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 186, 186, 125, 16, 16, 77, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 16, 16, 77, 186, 186, 125, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 186, 186, 125, 16, 16, 77, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 16, 16, 77, 186, 186, 125, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 186, 186, 125, 16, 16, 77, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 16, 16, 77, 186, 186, 125, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 186, 186, 125, 16, 16, 77, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 16, 16, 77, 186, 186, 125, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 186, 186, 125, 16, 16, 77, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 16, 16, 77, 186, 186, 125, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 186, 186, 125, 16, 16, 77, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 16, 16, 77, 186, 186, 125, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 186, 186, 125, 16, 16, 77, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 16, 16, 77, 186, 186, 125, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 186, 186, 125, 16, 16, 77, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 16, 16, 77, 186, 186, 125, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 186, 186, 125, 16, 16, 77, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 16, 16, 77, 186, 186, 125, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 186, 186, 125, 16, 16, 77, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 16, 16, 77, 186, 186, 125, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 186, 186, 125, 16, 16, 77, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 16, 16, 77, 186, 186, 125, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 186, 186, 125, 16, 16, 77, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 16, 16, 77, 186, 186, 125, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 186, 186, 125, 16, 16, 77, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 16, 16, 77, 186, 186, 125, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 186, 186, 125, 16, 16, 77, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 16, 16, 77, 186, 186, 125, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 186, 186, 125, 16, 16, 77, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 16, 16, 77, 186, 186, 125, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 186, 186, 125, 16, 16, 77, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 16, 16, 77, 186, 186, 125, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 186, 186, 125, 16, 16, 77, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 16, 16, 77, 186, 186, 125, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 186, 186, 125, 16, 16, 77, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 16, 16, 77, 186, 186, 125, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 186, 186, 125, 16, 16, 77, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 16, 16, 77, 186, 186, 125, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 186, 186, 125, 16, 16, 77, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 16, 16, 77, 186, 186, 125, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 186, 186, 125, 16, 16, 77, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 16, 16, 77, 186, 186, 125, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 186, 186, 125, 16, 16, 77, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 16, 16, 77, 186, 186, 125, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, + 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 201, 201, 129, 186, 186, 125, 16, 16, 77, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 15, 15, 77, 172, 172, 121, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, + 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, 186, 186, 125, + 172, 172, 121, 15, 15, 77, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 2, 2, 73, 15, 15, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, + 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, + 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 16, 16, 77, 15, 15, 77, 2, 2, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, + 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73, 1, 1, 73,}; +const char* DemoArtwork::ico1Data = (const char*)temp_ico1_1; + +static const unsigned char temp_ico2_2[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 1, 2, 46, 12, 43, 64, 17, 57, 67, 19, 60, 72, 23, 65, 78, 26, 71, 84, 28, 78, 90, 31, 83, + 93, 35, 87, 83, 32, 78, 76, 47, 77, 49, 18, 46, 40, 9, 36, 38, 9, 34, 37, 9, 34, 38, 10, 35, 40, 11, 37, 42, 12, 40, 43, 16, 42, 56, 42, 62, 91, 96, 111, 117, 132, 149, 108, 124, 146, 87, 99, 120, 74, 83, 106, 59, 66, 91, 40, 39, 47, 40, 30, 37, 57, 54, 69, + 110, 110, 127, 114, 98, 111, 20, 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 45, 12, 42, + 63, 16, 57, 66, 18, 59, 71, 22, 64, 78, 25, 70, 84, 28, 78, 90, 31, 83, 90, 33, 84, 85, 49, 86, 117, 118, 134, 110, 109, 124, 61, 46, 67, 37, 14, 36, 34, 7, 32, 35, 8, 32, 35, 7, 33, 37, 11, 36, 45, 24, 46, 69, 63, 81, 95, 104, 120, 111, 127, 146, 104, 121, 143, + 88, 99, 119, 77, 87, 110, 68, 74, 101, 43, 43, 54, 28, 23, 27, 54, 56, 71, 121, 123, 144, 117, 108, 120, 19, 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 44, 12, 41, 61, 16, 55, 64, 18, 57, 69, 20, 62, 77, 25, 68, 85, 30, 79, 91, 33, 84, 86, 32, 79, 75, 40, 75, 80, 76, 98, 141, 154, 163, 148, 159, 168, 114, 115, 128, 80, 71, 89, 68, 54, 75, 96, 87, 104, + 117, 111, 125, 129, 128, 139, 150, 156, 166, 159, 172, 181, 148, 165, 178, 73, 90, 105, 64, 83, 99, 79, 96, 114, 106, 118, 137, 78, 86, 97, 37, 42, 50, 54, 62, 80, 116, 122, 149, 119, 112, 124, 19, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 43, 11, 39, 59, 16, 54, 63, 17, 55, 68, 20, 61, 76, 24, 67, 83, 27, 76, 87, 29, 80, 78, 25, 71, 65, 25, 60, 72, 65, 89, + 85, 100, 117, 148, 164, 169, 164, 180, 186, 165, 179, 186, 176, 188, 194, 208, 217, 221, 227, 234, 236, 235, 241, 242, 237, 244, 245, 241, 250, 252, 124, 138, 146, 31, 50, 65, 45, 69, 87, 66, 91, 109, 170, 185, 193, 212, 222, 224, 177, 187, 192, 128, 143, 155, 115, 126, 154, 116, 111, 130, 20, 17, 19, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 43, 11, 40, 60, 17, 55, 64, 20, 58, 69, 24, 63, + 74, 26, 68, 81, 29, 75, 86, 33, 79, 77, 28, 70, 60, 19, 55, 68, 57, 82, 85, 96, 117, 89, 107, 123, 133, 150, 157, 167, 185, 191, 206, 219, 223, 228, 236, 238, 237, 244, 245, 233, 241, 242, 210, 224, 229, 154, 173, 180, 52, 69, 81, 33, 53, 68, 39, 62, 80, 49, 78, 104, 95, 123, 142, + 202, 216, 220, 236, 244, 244, 233, 239, 240, 195, 206, 214, 145, 145, 161, 23, 21, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2, 1, 2, 44, 12, 40, 61, 16, 55, 64, 17, 56, 68, 20, 60, 71, 22, 64, 77, 25, 69, 79, 25, 71, 74, 26, 66, 69, 31, 63, 71, 52, 79, 91, 101, 121, 108, 128, 144, 112, 134, 144, 158, 177, 182, 198, 213, 217, 207, 220, 224, 204, 218, 223, 183, 201, 208, 113, 139, 152, + 47, 63, 72, 32, 49, 58, 48, 69, 85, 50, 73, 93, 46, 68, 96, 45, 76, 104, 140, 160, 169, 225, 234, 234, 240, 246, 246, 242, 247, 246, 229, 235, 236, 37, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 44, 13, 41, 61, 16, 55, 63, 18, 57, 66, 20, 59, 70, 22, 62, 77, 26, 68, 82, 29, 74, 79, 29, 72, 76, 36, 72, 83, 56, 83, 117, 120, 137, 152, 168, 178, 165, 181, 188, + 180, 196, 202, 160, 181, 189, 156, 177, 186, 149, 173, 183, 167, 187, 194, 125, 147, 156, 63, 82, 93, 45, 64, 76, 70, 92, 107, 62, 83, 103, 45, 65, 90, 31, 57, 85, 103, 124, 136, 213, 225, 227, 236, 242, 242, 242, 248, 247, 255, 255, 255, 46, 48, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 43, 12, 40, 61, 17, 55, 63, 18, 56, 66, 22, 59, 70, 24, 63, 74, 24, 66, 84, 40, 78, + 95, 63, 95, 117, 100, 123, 154, 152, 165, 176, 185, 192, 183, 197, 202, 180, 194, 199, 143, 164, 172, 122, 146, 157, 118, 143, 153, 116, 143, 155, 154, 177, 185, 162, 182, 189, 133, 155, 164, 111, 133, 145, 101, 123, 134, 86, 106, 120, 64, 86, 104, 47, 68, 88, 97, 120, 132, 193, 209, 213, 222, 232, 233, + 241, 247, 246, 255, 255, 255, 46, 48, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 39, 12, 37, + 57, 16, 51, 62, 19, 56, 68, 25, 60, 78, 46, 76, 100, 78, 105, 129, 122, 142, 170, 176, 188, 187, 200, 209, 195, 212, 218, 188, 205, 212, 169, 187, 195, 141, 161, 171, 94, 116, 124, 101, 122, 131, 83, 107, 118, 98, 127, 143, 151, 176, 188, 164, 184, 194, 158, 179, 188, 145, 168, 177, 144, 164, 171, + 147, 167, 175, 97, 119, 132, 57, 72, 86, 114, 136, 146, 184, 201, 207, 208, 221, 224, 235, 242, 242, 255, 255, 255, 46, 48, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 36, 13, 34, 53, 18, 49, 59, 24, 56, 83, 62, 89, 145, 151, 166, 178, 194, 203, 187, 207, 215, 184, 205, 214, 182, 203, 213, 180, 201, 211, 165, 187, 197, 128, 151, 162, 90, 111, 121, 53, 69, 77, 79, 101, 110, 62, 83, 92, + 95, 118, 133, 109, 138, 153, 164, 185, 196, 186, 202, 209, 168, 188, 196, 163, 182, 189, 157, 176, 184, 117, 140, 150, 67, 84, 93, 106, 129, 138, 181, 197, 204, 189, 207, 213, 222, 232, 233, 255, 255, 255, 46, 48, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 2, 37, 23, 39, 84, 72, 91, 115, 111, 127, 139, 147, 161, 176, 198, 209, 177, 199, 210, 173, 195, 208, 171, 194, 206, 169, 194, 206, 168, 193, 205, + 125, 154, 167, 62, 80, 87, 54, 68, 74, 44, 55, 59, 46, 58, 64, 40, 54, 60, 37, 47, 54, 82, 99, 107, 149, 167, 176, 175, 191, 200, 181, 198, 207, 181, 200, 207, 180, 198, 204, 152, 173, 181, 91, 110, 117, 89, 110, 118, 102, 126, 138, 164, 184, 191, 220, 231, 232, 250, 255, 255, 46, 47, 47, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 3, 64, 67, 76, 166, 181, 190, 192, 211, 219, 184, 205, 215, + 168, 193, 205, 161, 187, 201, 158, 183, 198, 151, 178, 192, 145, 173, 188, 142, 171, 186, 105, 131, 143, 53, 59, 59, 21, 22, 22, 63, 75, 79, 73, 86, 90, 51, 63, 68, 27, 27, 26, 10, 10, 14, 102, 107, 108, 120, 143, 156, 125, 150, 163, 167, 189, 197, 190, 209, 215, 185, 204, 211, 174, 195, 202, + 156, 178, 187, 149, 171, 180, 168, 190, 198, 217, 229, 231, 251, 255, 255, 46, 48, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 7, 8, 8, 134, 147, 153, 192, 211, 219, 184, 205, 214, 172, 194, 206, 151, 178, 193, 144, 172, 188, 135, 164, 181, 109, 140, 158, 85, 118, 133, 96, 130, 145, 99, 124, 136, 48, 62, 67, 57, 69, 72, 111, 124, 127, 121, 134, 136, 116, 130, 140, 64, 70, 76, 53, 55, 55, 82, 96, 103, + 82, 103, 113, 97, 121, 132, 124, 149, 160, 171, 192, 200, 183, 202, 208, 178, 197, 203, 178, 197, 203, 186, 204, 210, 197, 213, 218, 222, 233, 235, 253, 255, 255, 46, 48, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 9, 153, 167, 172, 194, 214, 221, 177, 199, 209, 162, 186, 199, 143, 171, 188, 132, 161, 178, 102, 134, 151, 81, 110, 125, 60, 88, 101, 80, 113, 125, 101, 126, 138, 48, 62, 69, 137, 151, 155, + 136, 148, 150, 119, 132, 135, 110, 123, 130, 92, 110, 119, 76, 94, 104, 67, 86, 96, 79, 98, 107, 107, 129, 138, 136, 158, 166, 140, 164, 174, 170, 189, 194, 177, 195, 199, 187, 204, 209, 196, 212, 216, 211, 224, 226, 228, 237, 237, 251, 255, 255, 46, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 9, 155, 167, 173, 194, 213, 221, 176, 196, 207, 168, 189, 201, 149, 175, 188, 120, 150, 167, 96, 126, 143, + 82, 109, 124, 67, 94, 106, 87, 118, 130, 109, 136, 148, 93, 107, 113, 97, 104, 105, 110, 121, 123, 104, 119, 124, 91, 108, 114, 55, 70, 77, 59, 77, 85, 70, 89, 97, 85, 104, 111, 101, 124, 132, 125, 146, 154, 129, 152, 160, 145, 168, 177, 164, 185, 191, 173, 191, 196, 189, 205, 209, 204, 218, 220, + 222, 232, 231, 247, 253, 252, 45, 46, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 10, 158, 171, 175, + 200, 218, 225, 182, 202, 211, 170, 191, 202, 151, 176, 190, 138, 164, 179, 114, 143, 159, 84, 113, 128, 77, 103, 118, 91, 121, 133, 132, 160, 172, 96, 117, 124, 20, 23, 24, 76, 85, 88, 157, 173, 177, 159, 176, 182, 102, 122, 128, 67, 86, 91, 66, 80, 86, 66, 83, 88, 69, 88, 95, 82, 104, 110, + 118, 141, 148, 147, 169, 175, 158, 178, 184, 161, 182, 187, 187, 204, 207, 211, 223, 224, 215, 226, 225, 236, 245, 243, 43, 45, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 10, 164, 175, 178, 208, 224, 229, 190, 208, 215, 176, 197, 206, 157, 180, 194, 131, 159, 174, 105, 136, 152, 88, 117, 133, 88, 114, 127, 90, 117, 127, 123, 152, 162, 108, 130, 137, 58, 67, 69, 90, 101, 104, 144, 159, 162, 166, 183, 186, + 163, 181, 187, 125, 145, 147, 91, 109, 111, 71, 85, 89, 68, 80, 85, 69, 84, 91, 89, 110, 115, 106, 131, 138, 140, 162, 168, 166, 186, 189, 193, 207, 210, 220, 229, 227, 217, 226, 224, 235, 243, 240, 37, 40, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 10, 166, 176, 179, 208, 224, 229, 192, 211, 217, 178, 198, 209, 141, 168, 182, 117, 147, 163, 108, 137, 154, 96, 123, 138, 83, 107, 119, 78, 104, 114, + 115, 142, 149, 115, 137, 143, 81, 95, 99, 69, 83, 87, 102, 115, 116, 130, 146, 149, 148, 165, 169, 125, 140, 142, 96, 112, 113, 79, 94, 98, 67, 85, 91, 82, 99, 104, 84, 103, 108, 100, 121, 127, 137, 159, 163, 186, 200, 201, 204, 215, 213, 217, 225, 223, 216, 224, 222, 231, 240, 237, 119, 107, 103, + 76, 93, 110, 94, 71, 60, 116, 56, 6, 111, 54, 8, 104, 50, 8, 96, 44, 7, 85, 38, 6, 80, 37, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 10, 160, 172, 176, 199, 217, 224, 189, 207, 215, 174, 195, 204, + 140, 168, 182, 121, 149, 165, 104, 133, 150, 80, 107, 122, 76, 101, 113, 92, 117, 124, 97, 124, 131, 115, 138, 144, 100, 122, 128, 97, 118, 124, 81, 96, 100, 78, 93, 96, 109, 121, 121, 102, 116, 116, 93, 109, 109, 89, 105, 107, 98, 113, 116, 102, 121, 124, 120, 138, 140, 135, 153, 153, 165, 179, 179, + 186, 198, 198, 200, 210, 208, 212, 220, 217, 214, 222, 219, 228, 235, 230, 157, 179, 197, 136, 144, 166, 183, 114, 76, 188, 93, 11, 180, 86, 7, 163, 77, 11, 154, 71, 5, 141, 63, 9, 136, 60, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 9, 9, 9, 154, 166, 171, 193, 212, 218, 184, 203, 209, 161, 185, 194, 141, 168, 181, 114, 145, 161, 99, 128, 147, 89, 115, 129, 97, 120, 130, 80, 105, 113, 93, 117, 123, 103, 127, 133, 108, 127, 131, 101, 121, 126, 107, 127, 131, 101, 118, 121, 106, 122, 123, 121, 131, 132, 92, 107, 109, + 90, 105, 106, 99, 115, 115, 135, 146, 146, 155, 167, 165, 154, 167, 166, 157, 171, 169, 177, 188, 186, 189, 200, 197, 213, 220, 217, 211, 221, 217, 228, 234, 229, 178, 198, 216, 173, 176, 188, 183, 125, 100, 186, 93, 24, 167, 80, 18, 164, 77, 12, 167, 78, 10, 153, 70, 10, 148, 66, 5, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 9, 9, 149, 167, 172, 182, 206, 215, 176, 200, 209, 169, 195, 205, 144, 175, 191, 112, 148, 169, 88, 121, 142, 91, 121, 137, 79, 110, 123, 80, 109, 119, 97, 126, 134, 92, 121, 128, 89, 116, 123, + 90, 113, 118, 99, 117, 119, 104, 119, 119, 103, 121, 123, 108, 125, 125, 107, 121, 123, 96, 114, 113, 107, 121, 122, 126, 140, 137, 130, 147, 147, 143, 161, 161, 127, 148, 148, 157, 173, 169, 191, 200, 197, 207, 216, 212, 213, 223, 218, 222, 231, 226, 201, 218, 231, 180, 197, 214, 170, 145, 143, 176, 91, 43, + 176, 88, 24, 186, 91, 14, 186, 91, 11, 167, 79, 11, 160, 73, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 13, 6, 129, 96, 89, 152, 119, 109, 153, 118, 107, 161, 123, 109, 154, 117, 104, 135, 100, 88, 127, 90, 75, + 125, 86, 69, 121, 83, 64, 126, 88, 67, 132, 94, 72, 128, 89, 67, 120, 81, 58, 120, 78, 59, 80, 80, 97, 73, 91, 119, 124, 90, 87, 125, 92, 89, 128, 98, 99, 108, 80, 79, 73, 76, 93, 64, 72, 80, 99, 69, 65, 110, 76, 74, 114, 115, 115, 145, 162, 160, 180, 192, 190, 197, 207, 203, + 217, 225, 221, 223, 231, 227, 219, 235, 245, 185, 202, 219, 180, 174, 179, 196, 120, 67, 209, 112, 27, 203, 104, 15, 190, 92, 11, 164, 77, 10, 162, 76, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 21, 2, 122, 28, 4, + 136, 36, 4, 148, 43, 4, 158, 48, 4, 165, 54, 4, 171, 58, 5, 173, 60, 5, 173, 62, 4, 173, 62, 3, 174, 63, 3, 175, 63, 3, 176, 63, 3, 179, 64, 3, 182, 64, 5, 92, 29, 14, 3, 34, 87, 15, 60, 129, 13, 59, 127, 12, 53, 119, 10, 37, 94, 3, 16, 62, 17, 4, 14, + 117, 20, 3, 102, 8, 0, 120, 93, 92, 149, 165, 163, 175, 187, 185, 186, 199, 194, 217, 224, 221, 230, 234, 231, 229, 243, 248, 205, 215, 225, 194, 161, 150, 198, 129, 88, 199, 109, 48, 184, 96, 38, 165, 81, 30, 153, 73, 18, 156, 75, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 26, 2, 130, 32, 2, 141, 39, 2, 154, 46, 2, 162, 53, 2, 168, 57, 3, 171, 61, 5, 174, 65, 6, 177, 67, 4, 180, 68, 3, 183, 70, 2, 173, 65, 3, 157, 60, 14, 182, 69, 10, 181, 71, 18, 119, 48, 53, 55, 23, 75, + 41, 22, 99, 64, 18, 83, 59, 13, 60, 48, 14, 58, 50, 14, 55, 23, 10, 52, 95, 25, 25, 87, 13, 12, 104, 85, 84, 145, 160, 158, 165, 176, 172, 170, 184, 180, 193, 203, 200, 212, 218, 216, 234, 245, 246, 226, 239, 244, 186, 169, 170, 180, 118, 89, 189, 108, 59, 195, 106, 40, 193, 98, 17, + 190, 95, 13, 184, 94, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 28, 2, 133, 36, 2, 146, 43, 2, 158, 51, 3, 166, 57, 3, 170, 63, 11, 171, 68, 36, 174, 71, 42, 181, 74, 27, 186, 75, 13, 190, 77, 6, + 153, 57, 6, 94, 50, 75, 106, 68, 106, 64, 59, 122, 40, 48, 117, 28, 38, 107, 23, 34, 104, 29, 23, 75, 21, 18, 68, 13, 20, 84, 14, 20, 79, 11, 13, 74, 6, 20, 82, 12, 11, 63, 55, 59, 77, 112, 129, 130, 134, 151, 151, 137, 155, 155, 142, 164, 165, 142, 170, 174, 193, 215, 233, + 242, 254, 255, 212, 219, 223, 133, 107, 98, 109, 63, 33, 143, 79, 29, 137, 71, 12, 120, 59, 10, 138, 71, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 31, 2, 131, 38, 2, 145, 46, 3, 158, 55, 3, 167, 62, 6, + 169, 70, 41, 177, 115, 132, 189, 150, 172, 187, 88, 79, 192, 82, 37, 195, 83, 17, 168, 67, 12, 142, 52, 28, 105, 99, 137, 38, 63, 138, 50, 46, 111, 27, 63, 137, 13, 53, 127, 18, 36, 92, 4, 21, 76, 14, 28, 81, 20, 27, 80, 32, 23, 70, 18, 18, 59, 27, 8, 41, 85, 90, 107, + 159, 174, 186, 203, 218, 223, 213, 224, 226, 194, 214, 222, 99, 156, 195, 205, 226, 245, 252, 255, 255, 239, 252, 254, 161, 177, 189, 48, 57, 65, 8, 4, 3, 8, 3, 2, 2, 0, 1, 15, 6, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 116, 31, 0, 124, 35, 0, 143, 50, 4, 158, 58, 6, 167, 66, 14, 169, 74, 58, 181, 138, 166, 204, 202, 231, 208, 147, 163, 199, 105, 88, 200, 89, 34, 185, 79, 25, 148, 53, 14, 160, 109, 107, 16, 65, 132, 24, 56, 116, 16, 83, 161, 28, 77, 153, 68, 53, 110, 12, 31, 90, + 30, 47, 103, 21, 44, 103, 18, 39, 97, 6, 29, 84, 25, 10, 39, 166, 149, 149, 225, 239, 246, 225, 239, 249, 243, 252, 254, 252, 255, 255, 222, 234, 243, 245, 251, 254, 250, 255, 255, 242, 254, 255, 224, 240, 247, 93, 104, 112, 1, 1, 2, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 52, 55, 175, 153, 152, 88, 29, 24, 109, 43, 28, 118, 49, 30, 123, 65, 75, 137, 91, 112, 186, 184, 202, 221, 220, 228, 174, 111, 99, 179, 94, 67, 187, 95, 62, 135, 57, 42, 50, 88, 142, + 27, 105, 174, 16, 90, 169, 14, 92, 175, 13, 61, 133, 36, 45, 109, 14, 41, 107, 14, 32, 96, 5, 22, 91, 3, 12, 79, 5, 12, 76, 49, 8, 32, 198, 163, 152, 255, 255, 255, 231, 244, 250, 179, 197, 224, 190, 209, 237, 227, 239, 247, 242, 253, 254, 246, 254, 254, 244, 254, 254, 233, 246, 252, + 201, 214, 222, 59, 65, 71, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 83, 97, 138, 129, 143, 66, 32, 58, 70, 36, 69, 130, 121, 32, 127, 118, 132, 103, 86, 122, 108, 95, 135, + 183, 186, 200, 226, 225, 208, 158, 154, 168, 155, 152, 173, 96, 98, 133, 22, 107, 180, 12, 76, 140, 12, 78, 143, 9, 56, 123, 7, 56, 127, 4, 26, 83, 5, 22, 78, 4, 18, 64, 3, 10, 50, 3, 7, 35, 3, 4, 21, 9, 0, 6, 154, 153, 155, 245, 254, 255, 238, 246, 249, 102, 124, 181, + 95, 124, 220, 187, 208, 240, 232, 245, 251, 235, 249, 253, 243, 253, 254, 232, 246, 251, 211, 224, 232, 145, 156, 164, 14, 17, 19, 0, 0, 0, 9, 11, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 73, 112, 92, 76, 114, + 72, 46, 78, 66, 42, 74, 98, 87, 69, 77, 52, 75, 91, 70, 112, 124, 142, 176, 159, 190, 210, 209, 204, 173, 159, 117, 106, 142, 75, 79, 128, 82, 95, 23, 100, 176, 12, 84, 156, 12, 82, 156, 9, 49, 107, 6, 24, 75, 4, 6, 23, 8, 12, 32, 5, 7, 24, 5, 9, 29, 4, 6, 20, + 6, 9, 28, 0, 0, 15, 127, 138, 148, 221, 236, 242, 225, 239, 244, 198, 213, 234, 121, 143, 203, 219, 236, 249, 227, 240, 245, 227, 241, 248, 233, 247, 253, 225, 239, 246, 210, 224, 232, 164, 176, 184, 51, 57, 62, 6, 7, 10, 83, 96, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 50, 87, 63, 56, 94, 47, 50, 87, 53, 50, 85, 49, 49, 89, 39, 59, 108, 81, 115, 185, 102, 148, 217, 111, 147, 207, 217, 217, 201, 179, 119, 95, 162, 83, 81, 166, 75, 55, 102, 84, 108, 39, 113, 192, 6, 46, 100, 6, 29, 76, + 8, 19, 58, 12, 24, 59, 9, 15, 42, 8, 18, 51, 8, 24, 66, 5, 14, 47, 5, 14, 44, 0, 6, 38, 104, 115, 129, 184, 202, 210, 162, 179, 190, 110, 126, 146, 148, 164, 181, 217, 231, 238, 220, 233, 239, 219, 235, 242, 221, 236, 245, 213, 229, 236, 201, 215, 222, 169, 182, 190, 127, 138, 146, + 116, 127, 135, 158, 175, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 62, 106, 74, 69, 114, 54, 24, 49, 60, 30, 50, 65, 44, 84, 27, 82, 150, 33, 98, 173, 39, 83, 150, 58, 89, 153, 57, 69, 114, 122, 90, 140, + 140, 75, 106, 130, 74, 114, 103, 87, 143, 29, 88, 162, 6, 35, 85, 7, 22, 63, 10, 25, 67, 13, 35, 87, 11, 29, 78, 11, 35, 85, 9, 35, 84, 7, 30, 80, 5, 12, 40, 0, 8, 42, 73, 84, 102, 100, 116, 126, 133, 150, 164, 112, 130, 146, 104, 121, 135, 176, 192, 200, 215, 229, 237, + 220, 235, 244, 210, 225, 232, 200, 215, 222, 191, 205, 213, 175, 186, 194, 173, 185, 193, 181, 195, 203, 170, 187, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 26, 63, 23, 19, 53, 37, 10, 44, 36, 12, 46, 30, 34, 78, + 26, 57, 114, 22, 70, 133, 22, 50, 107, 28, 51, 109, 44, 51, 105, 51, 53, 108, 61, 30, 52, 69, 23, 48, 46, 104, 174, 23, 85, 151, 6, 25, 65, 6, 20, 62, 7, 29, 77, 13, 48, 106, 10, 34, 86, 10, 37, 86, 9, 36, 83, 7, 36, 87, 3, 9, 37, 0, 3, 27, 57, 68, 80, + 102, 120, 130, 142, 160, 171, 134, 153, 165, 152, 170, 184, 185, 202, 212, 201, 217, 225, 205, 220, 228, 191, 207, 214, 182, 197, 205, 175, 188, 196, 168, 181, 189, 174, 188, 195, 178, 193, 200, 168, 185, 194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 16, 17, 56, 24, 11, 42, 32, 16, 49, 33, 22, 62, 32, 33, 75, 30, 34, 79, 33, 41, 93, 44, 53, 112, 65, 61, 122, 56, 56, 106, 20, 18, 41, 62, 25, 33, 100, 60, 89, 30, 54, 109, 8, 45, 99, 7, 35, 77, 5, 20, 53, 4, 16, 47, 5, 22, 60, 5, 14, 45, + 5, 17, 46, 5, 25, 68, 5, 27, 72, 4, 14, 47, 0, 5, 31, 41, 49, 60, 72, 86, 95, 80, 95, 104, 104, 119, 128, 136, 149, 157, 134, 147, 155, 133, 146, 153, 132, 144, 150, 135, 147, 153, 126, 137, 143, 123, 133, 140, 124, 134, 140, 125, 135, 141, 123, 134, 140, 117, 130, 137, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 42, 94, 17, 51, 111, 22, 58, 120, 33, 71, 138, 40, 80, 149, 37, 76, 144, 40, 81, 151, 55, 91, 164, 62, 92, 165, 46, 84, 152, 37, 68, 125, 44, 78, 135, 44, 96, 169, 36, 93, 168, + 35, 88, 163, 31, 76, 143, 19, 54, 107, 10, 31, 72, 5, 19, 51, 3, 10, 29, 3, 9, 27, 3, 13, 41, 4, 16, 50, 3, 7, 31, 2, 5, 22, 4, 5, 9, 7, 8, 8, 7, 8, 9, 8, 9, 10, 9, 10, 11, 10, 11, 11, 11, 12, 12, 10, 11, 11, 10, 11, 11, 10, 10, 11, + 9, 10, 10, 10, 11, 11, 11, 11, 12, 10, 11, 11, 9, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 36, 93, 5, 45, 106, 13, 56, 122, 20, 71, 142, 29, 81, 155, 26, 79, 152, 30, 84, 158, 35, 90, 166, + 46, 101, 181, 36, 80, 149, 14, 60, 123, 7, 64, 129, 10, 63, 128, 22, 86, 159, 37, 109, 190, 36, 105, 185, 32, 91, 168, 26, 79, 151, 20, 66, 132, 12, 50, 107, 6, 34, 80, 4, 22, 61, 3, 15, 48, 3, 8, 34, 3, 6, 23, 0, 1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 27, 78, 3, 35, 90, + 4, 40, 96, 7, 49, 109, 12, 58, 123, 16, 64, 131, 16, 68, 136, 21, 73, 143, 26, 75, 145, 11, 46, 101, 4, 52, 111, 3, 43, 99, 4, 47, 105, 3, 48, 107, 5, 54, 116, 5, 56, 118, 8, 63, 127, 10, 65, 130, 13, 72, 139, 9, 61, 126, 6, 50, 110, 5, 43, 99, 4, 36, 88, + 3, 28, 76, 3, 20, 61, 1, 6, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}; +const char* DemoArtwork::ico2Data = (const char*)temp_ico2_2; + +static const unsigned char temp_ico3_3[] = { + 37, 23, 14, 88, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 88, 55, 33, 37, 23, 14, 37, 23, 14, 88, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, + 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 88, 55, 33, 38, 23, 13, 13, 23, 38, 33, 55, 88, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, + 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 88, 14, 23, 37, 88, 55, 33, 207, 130, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 207, 130, 77, + 88, 55, 33, 88, 55, 33, 207, 130, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 207, 130, 77, 90, 55, 30, 30, 55, 90, 77, 130, 207, 77, 129, 206, 77, 129, 206, + 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 130, 207, 33, 55, 88, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, + 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 87, 55, 33, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, + 206, 129, 77, 90, 55, 30, 30, 55, 90, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 87, 55, 33, 206, 129, 77, 204, 128, 76, + 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 87, 55, 33, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, + 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 90, 55, 30, 30, 55, 90, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, + 76, 128, 204, 77, 129, 206, 33, 55, 87, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 87, 55, 33, 87, 55, 33, 206, 129, 77, + 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 90, 55, 30, 30, 55, 90, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, + 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, + 204, 128, 76, 204, 128, 76, 206, 129, 77, 87, 55, 33, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 90, 55, 30, 30, 55, 90, + 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, + 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 87, 55, 33, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, + 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 90, 55, 30, 30, 55, 90, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, + 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 87, 55, 33, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, + 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 90, 55, 30, 30, 55, 90, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, + 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, + 87, 55, 33, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 90, 55, 30, 30, 55, 90, 77, 129, 206, 76, 128, 204, 76, 128, 204, + 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, + 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 87, 55, 33, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, + 206, 129, 77, 90, 55, 30, 30, 55, 90, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 87, 55, 33, 206, 129, 77, 204, 128, 76, + 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 87, 55, 33, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, + 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 90, 55, 30, 30, 55, 90, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, + 76, 128, 204, 77, 129, 206, 33, 55, 87, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 87, 55, 33, 87, 55, 33, 206, 129, 77, + 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 90, 55, 30, 30, 55, 90, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, + 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, + 204, 128, 76, 204, 128, 76, 206, 129, 77, 87, 55, 33, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 90, 55, 30, 30, 55, 90, + 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, + 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 87, 55, 33, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, + 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 90, 55, 30, 30, 55, 90, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, + 88, 55, 33, 207, 130, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 207, 130, 77, 88, 55, 33, 88, 55, 33, 207, 130, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, + 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 207, 130, 77, 90, 55, 30, 30, 55, 90, 77, 130, 207, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, + 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 130, 207, 33, 55, 88, 37, 23, 14, 88, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 88, 55, 33, + 37, 23, 14, 39, 23, 13, 90, 55, 30, 90, 55, 30, 90, 55, 30, 90, 55, 30, 90, 55, 30, 90, 55, 30, 90, 55, 30, 90, 55, 30, 90, 55, 30, 90, 55, 30, 90, 55, 30, 90, 55, 30, 90, 55, 30, 90, 55, 30, 40, 23, 12, 13, 23, 39, 33, 55, 88, 33, 55, 87, 33, 55, 87, + 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 88, 14, 23, 37, 37, 23, 14, 88, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, + 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 88, 55, 33, 39, 23, 13, 12, 23, 40, 30, 55, 90, 30, 55, 90, 30, 55, 90, 30, 55, 90, 30, 55, 90, 30, 55, 90, 30, 55, 90, 30, 55, 90, 30, 55, 90, 30, 55, 90, 30, 55, 90, 30, 55, 90, 30, 55, 90, + 30, 55, 90, 13, 23, 39, 14, 23, 37, 33, 55, 88, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 88, 14, 23, 37, 88, 55, 33, 207, 130, 77, 206, 129, 77, + 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 207, 130, 77, 90, 55, 30, 30, 55, 90, 77, 130, 207, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, + 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 130, 207, 33, 55, 88, 33, 55, 88, 77, 130, 207, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, + 77, 129, 206, 77, 130, 207, 33, 55, 88, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 90, 55, 30, 30, 55, 90, 77, 129, 206, + 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 33, 55, 87, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, + 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, + 204, 128, 76, 204, 128, 76, 206, 129, 77, 90, 55, 30, 30, 55, 90, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 33, 55, 87, + 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, + 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 90, 55, 30, 30, 55, 90, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, + 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 33, 55, 87, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, + 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 90, 55, 30, 30, 55, 90, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, + 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 33, 55, 87, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, + 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, + 90, 55, 30, 30, 55, 90, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 33, 55, 87, 77, 129, 206, 76, 128, 204, 76, 128, 204, + 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, + 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 90, 55, 30, 30, 55, 90, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, + 77, 129, 206, 33, 55, 87, 33, 55, 87, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 87, 55, 33, 206, 129, 77, 204, 128, 76, + 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 90, 55, 30, 30, 55, 90, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, + 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 33, 55, 87, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, + 76, 128, 204, 77, 129, 206, 33, 55, 87, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 90, 55, 30, 30, 55, 90, 77, 129, 206, + 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 33, 55, 87, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, + 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, + 204, 128, 76, 204, 128, 76, 206, 129, 77, 90, 55, 30, 30, 55, 90, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 33, 55, 87, + 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, + 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 90, 55, 30, 30, 55, 90, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, + 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 33, 55, 87, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, + 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 90, 55, 30, 30, 55, 90, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, + 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 33, 55, 87, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, + 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, + 90, 55, 30, 30, 55, 90, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 33, 55, 87, 77, 129, 206, 76, 128, 204, 76, 128, 204, + 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 88, 55, 33, 207, 130, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, + 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 207, 130, 77, 90, 55, 30, 30, 55, 90, 77, 130, 207, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, + 77, 130, 207, 33, 55, 88, 33, 55, 88, 77, 130, 207, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 130, 207, 33, 55, 88, 37, 23, 14, 88, 55, 33, 87, 55, 33, + 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 88, 55, 33, 39, 23, 13, 12, 23, 40, 30, 55, 90, 30, 55, 90, 30, 55, 90, 30, 55, 90, 30, 55, 90, 30, 55, 90, 30, 55, 90, + 30, 55, 90, 30, 55, 90, 30, 55, 90, 30, 55, 90, 30, 55, 90, 30, 55, 90, 30, 55, 90, 13, 23, 39, 14, 23, 37, 33, 55, 88, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, + 33, 55, 87, 33, 55, 88, 14, 23, 37, 37, 23, 14, 88, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 88, 55, 33, 37, 23, 14, 39, 23, 13, 90, 55, 30, + 90, 55, 30, 90, 55, 30, 90, 55, 30, 90, 55, 30, 90, 55, 30, 90, 55, 30, 90, 55, 30, 90, 55, 30, 90, 55, 30, 90, 55, 30, 90, 55, 30, 90, 55, 30, 90, 55, 30, 40, 23, 12, 13, 23, 39, 33, 55, 88, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, + 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 88, 14, 23, 37, 88, 55, 33, 207, 130, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, + 206, 129, 77, 206, 129, 77, 207, 130, 77, 88, 55, 33, 88, 55, 33, 207, 130, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 207, 130, 77, 90, 55, 30, 30, 55, 90, + 77, 130, 207, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 130, 207, 33, 55, 88, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, + 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 87, 55, 33, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, + 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 90, 55, 30, 30, 55, 90, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, + 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 87, 55, 33, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, + 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 90, 55, 30, 30, 55, 90, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, + 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, + 87, 55, 33, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 90, 55, 30, 30, 55, 90, 77, 129, 206, 76, 128, 204, 76, 128, 204, + 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, + 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 87, 55, 33, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, + 206, 129, 77, 90, 55, 30, 30, 55, 90, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 87, 55, 33, 206, 129, 77, 204, 128, 76, + 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 87, 55, 33, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, + 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 90, 55, 30, 30, 55, 90, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, + 76, 128, 204, 77, 129, 206, 33, 55, 87, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 87, 55, 33, 87, 55, 33, 206, 129, 77, + 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 90, 55, 30, 30, 55, 90, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, + 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, + 204, 128, 76, 204, 128, 76, 206, 129, 77, 87, 55, 33, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 90, 55, 30, 30, 55, 90, + 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, + 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 87, 55, 33, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, + 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 90, 55, 30, 30, 55, 90, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, + 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 87, 55, 33, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, + 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 90, 55, 30, 30, 55, 90, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, + 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, + 87, 55, 33, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 90, 55, 30, 30, 55, 90, 77, 129, 206, 76, 128, 204, 76, 128, 204, + 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, + 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 87, 55, 33, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, + 206, 129, 77, 90, 55, 30, 30, 55, 90, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 77, 129, 206, 33, 55, 87, 87, 55, 33, 206, 129, 77, 204, 128, 76, + 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 87, 55, 33, 87, 55, 33, 206, 129, 77, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, + 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 204, 128, 76, 206, 129, 77, 90, 55, 30, 30, 55, 90, 77, 129, 206, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, 76, 128, 204, + 76, 128, 204, 77, 129, 206, 33, 55, 87, 88, 55, 33, 207, 130, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 207, 130, 77, 88, 55, 33, 88, 55, 33, 207, 130, 77, + 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 206, 129, 77, 207, 130, 77, 90, 55, 30, 30, 55, 90, 77, 130, 207, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, + 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 129, 206, 77, 130, 207, 33, 55, 88, 37, 23, 14, 88, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, + 87, 55, 33, 87, 55, 33, 88, 55, 33, 37, 23, 14, 37, 23, 14, 88, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 87, 55, 33, 88, 55, 33, 38, 23, 13, 13, 23, 38, + 33, 55, 88, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 87, 33, 55, 88, 14, 23, 37,}; +const char* DemoArtwork::ico3Data = (const char*)temp_ico3_3; + +static const unsigned char temp_ico4_4[] = { + 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, + 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, + 92, 86, 77, 92, 86, 77, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 91, 85, 76, 78, 72, 63, 78, 72, 63, 78, 72, 63, 78, 72, 63, 78, 72, 63, 78, 72, 63, 78, 72, 63, 78, 72, 63, 78, 72, 63, 78, 72, 63, 78, 72, 63, 78, 72, 63, + 78, 72, 63, 78, 72, 63, 78, 72, 63, 78, 72, 63, 78, 72, 63, 78, 72, 63, 78, 72, 63, 78, 72, 63, 78, 72, 63, 78, 72, 63, 78, 72, 63, 78, 72, 63, 78, 72, 63, 78, 72, 63, 78, 72, 63, 78, 72, 63, 78, 72, 63, 78, 72, 63, 78, 72, 63, 78, 72, 63, 78, 72, 63, + 78, 72, 63, 78, 72, 63, 78, 72, 63, 78, 72, 63, 78, 72, 63, 78, 72, 63, 78, 72, 63, 78, 72, 63, 76, 70, 61, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, + 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 74, 68, 59, 74, 68, 59, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 76, 70, 61, 67, 62, 55, 67, 62, 55, 76, 70, 61, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 67, 61, 53, 126, 118, 106, 126, 118, 106, 67, 61, 53, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, + 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 68, 63, 56, 194, 181, 162, 194, 181, 162, 68, 63, 56, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 74, 69, 60, 140, 131, 117, 185, 172, 154, 185, 172, 154, 140, 131, 117, 74, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 76, 70, 61, 66, 62, 55, 178, 166, 149, 184, 172, 154, 184, 172, 154, 178, 166, 149, 66, 62, 55, 76, 70, 61, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 65, 60, 52, 132, 124, 111, 186, 174, 156, 184, 172, 154, + 184, 172, 154, 186, 174, 156, 132, 124, 111, 65, 60, 52, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, + 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 76, 71, 63, 191, 178, 160, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 191, 178, 160, 76, 71, 63, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 131, 122, 109, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 131, 122, 109, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 76, 70, 61, 59, 55, 49, 182, 171, 153, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, + 182, 171, 153, 59, 55, 49, 76, 70, 61, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, + 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 67, 61, 53, 139, 131, 117, 186, 174, 156, + 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 186, 174, 156, 139, 131, 117, 67, 61, 53, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 80, 75, 66, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 80, 75, 66, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 58, 123, 115, 103, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 123, 115, 103, + 72, 66, 58, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 76, 69, 60, 58, 54, 48, 189, 177, 158, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, + 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 189, 177, 158, 58, 54, 48, 76, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, + 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 69, 64, 56, 144, 135, 121, + 186, 174, 156, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 186, 174, 156, 144, 135, 121, 69, 64, 56, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 76, 70, 61, 77, 72, 64, 179, 167, 150, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 179, 167, 150, 77, 72, 64, 76, 70, 61, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 68, 63, 55, 122, 115, 103, 185, 173, 155, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, + 184, 172, 154, 184, 172, 154, 184, 172, 154, 185, 173, 155, 122, 115, 103, 68, 63, 55, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, + 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 63, 59, 52, 194, 181, 162, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, + 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 194, 181, 162, 63, 59, 52, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 73, 67, 59, + 143, 134, 120, 185, 173, 155, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 185, 173, 155, 143, 134, 120, 73, 67, 59, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 76, 70, 61, 71, 66, 58, 177, 166, 148, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 186, 174, 155, 182, 170, 152, 170, 159, 143, 165, 154, 138, 165, 154, 138, 170, 159, 143, 182, 170, 152, 186, 174, 155, 184, 172, 154, 184, 172, 154, + 184, 172, 154, 184, 172, 154, 177, 166, 148, 71, 66, 58, 76, 70, 61, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 66, 60, 52, 128, 120, 108, 186, 174, 156, 184, 172, 154, 184, 172, 154, 184, 172, 154, 190, 178, 159, 123, 116, 103, 69, 64, 56, 77, 70, 62, 72, 67, 58, + 72, 67, 58, 77, 70, 62, 69, 64, 56, 123, 116, 103, 190, 178, 159, 184, 172, 154, 184, 172, 154, 184, 172, 154, 186, 174, 156, 128, 120, 108, 66, 60, 52, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, + 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 68, 60, 193, 180, 162, 184, 172, 154, 184, 172, 154, 184, 172, 154, + 171, 159, 143, 84, 78, 68, 66, 60, 52, 77, 70, 61, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 77, 70, 61, 66, 60, 52, 84, 78, 68, 171, 159, 143, 184, 172, 154, 184, 172, 154, 184, 172, 154, 193, 180, 162, 72, 68, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 136, 127, 114, 184, 172, 154, 184, 172, 154, 184, 172, 154, 185, 172, 154, 67, 63, 54, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 67, 63, 54, 185, 172, 154, 184, 172, 154, 184, 172, 154, + 184, 172, 154, 136, 127, 114, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 76, 70, 61, 62, 58, 51, 180, 168, 151, 184, 172, 154, 184, 172, 154, 180, 169, 151, 72, 67, 59, 76, 70, 61, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 76, 70, 61, 72, 67, 59, 180, 169, 151, 184, 172, 154, 184, 172, 154, 180, 168, 151, 62, 58, 51, 76, 70, 61, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, + 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 66, 60, 53, 136, 127, 114, 186, 174, 156, 184, 172, 154, 185, 173, 155, 144, 134, 119, 72, 66, 57, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, 144, 134, 119, 185, 173, 155, 184, 172, 154, 186, 174, 156, 136, 127, 114, 66, 60, 53, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 79, 74, 65, 188, 175, 157, 184, 172, 154, 184, 172, 154, + 191, 178, 160, 80, 74, 65, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 80, 74, 65, 191, 178, 160, 184, 172, 154, 184, 172, 154, 188, 175, 157, + 79, 74, 65, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 74, 68, 59, 126, 118, 106, 184, 172, 154, 184, 172, 154, 184, 172, 154, 191, 179, 160, 42, 39, 33, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 42, 39, 33, 191, 179, 160, 184, 172, 154, 184, 172, 154, 184, 172, 154, 126, 118, 106, 74, 68, 59, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 76, 70, 61, 58, 54, 48, 186, 174, 156, 184, 172, 154, 184, 172, 154, 184, 172, 154, 159, 149, 133, 57, 53, 45, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 57, 53, 45, 159, 149, 133, 184, 172, 154, 184, 172, 154, 184, 172, 154, 186, 174, 156, 58, 54, 48, 76, 70, 61, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, + 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 68, 62, 54, 142, 134, 120, 186, 174, 156, 184, 172, 154, 184, 172, 154, 184, 172, 154, 159, 149, 133, 57, 53, 45, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 57, 53, 45, 159, 149, 133, 184, 172, 154, 184, 172, 154, 184, 172, 154, 186, 174, 156, 142, 134, 120, 68, 62, 54, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 76, 70, 60, 79, 74, 65, 181, 169, 152, 184, 172, 154, + 184, 172, 154, 184, 172, 154, 184, 172, 154, 191, 179, 160, 42, 39, 33, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 42, 39, 33, 191, 179, 160, + 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 181, 169, 152, 79, 74, 65, 76, 70, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 70, 64, 56, 121, 114, 102, 185, 173, 155, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 191, 178, 160, 80, 74, 65, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 80, 74, 65, 191, 178, 160, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 185, 173, 155, 121, 114, 102, 70, 64, 56, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, + 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 60, 56, 49, 192, 180, 161, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 185, 173, 155, 144, 134, 119, 72, 66, 57, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, 144, 134, 119, 185, 173, 155, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 192, 180, 161, 60, 56, 49, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 71, 66, 57, 145, 135, 121, 185, 173, 155, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, + 184, 172, 154, 180, 169, 151, 72, 67, 59, 76, 70, 61, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 76, 70, 61, 72, 67, 59, 180, 169, 151, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, + 184, 172, 154, 184, 172, 154, 185, 173, 155, 145, 135, 121, 71, 66, 57, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, 76, 70, 61, 75, 69, 61, 177, 166, 149, + 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 185, 172, 154, 67, 63, 54, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 67, 63, 54, + 185, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 177, 166, 149, 75, 69, 61, 76, 70, 61, 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 67, 61, 53, 124, 117, 105, 186, 174, 155, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 171, 159, 143, 84, 78, 68, 66, 60, 52, 77, 70, 61, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 77, 70, 61, 66, 60, 52, 84, 78, 68, 171, 159, 143, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 186, 174, 155, 124, 117, 105, 67, 61, 53, 75, 69, 60, 75, 69, 60, 72, 66, 57, + 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, 68, 63, 56, 194, 181, 163, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, + 184, 172, 154, 190, 178, 159, 123, 116, 103, 69, 64, 56, 77, 70, 62, 72, 67, 58, 72, 67, 58, 77, 70, 62, 69, 64, 56, 123, 116, 103, 190, 178, 159, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, + 184, 172, 154, 194, 181, 163, 68, 63, 56, 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 74, 69, 60, 140, 131, 117, 185, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, + 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 186, 174, 155, 182, 170, 152, 170, 159, 143, 165, 154, 138, 165, 154, 138, 170, 159, 143, 182, 170, 152, 186, 174, 155, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, + 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 185, 172, 154, 140, 131, 117, 74, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 76, 70, 61, 66, 62, 55, + 178, 166, 149, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, + 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 184, 172, 154, 178, 166, 149, 66, 62, 55, 76, 70, 61, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, + 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 65, 60, 52, 137, 129, 115, 191, 179, 160, 189, 177, 158, 189, 177, 158, 189, 177, 158, 189, 177, 158, 189, 177, 158, 189, 177, 158, 189, 177, 158, 189, 177, 158, 189, 177, 158, 189, 177, 158, 189, 177, 158, 189, 177, 158, 189, 177, 158, 189, 177, 158, + 189, 177, 158, 189, 177, 158, 189, 177, 158, 189, 177, 158, 189, 177, 158, 189, 177, 158, 189, 177, 158, 189, 177, 158, 189, 177, 158, 189, 177, 158, 189, 177, 158, 189, 177, 158, 189, 177, 158, 189, 177, 158, 189, 177, 158, 189, 177, 158, 189, 177, 158, 189, 177, 158, 189, 177, 158, 189, 177, 158, 191, 179, 160, + 137, 129, 115, 65, 60, 52, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 71, 66, 57, 58, 53, 47, 55, 51, 45, 55, 51, 45, 55, 51, 45, 55, 51, 45, 55, 51, 45, 55, 51, 45, 55, 51, 45, 55, 51, 45, 55, 51, 45, + 55, 51, 45, 55, 51, 45, 55, 51, 45, 55, 51, 45, 55, 51, 45, 55, 51, 45, 55, 51, 45, 55, 51, 45, 55, 51, 45, 55, 51, 45, 55, 51, 45, 55, 51, 45, 55, 51, 45, 55, 51, 45, 55, 51, 45, 55, 51, 45, 55, 51, 45, 55, 51, 45, 55, 51, 45, 55, 51, 45, 55, 51, 45, + 55, 51, 45, 55, 51, 45, 55, 51, 45, 55, 51, 45, 55, 51, 45, 55, 51, 45, 58, 53, 47, 72, 66, 58, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 89, 83, 74, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, + 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 75, 69, 60, 72, 66, 57, + 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 91, 85, 76, 82, 76, 67, 82, 76, 67, 82, 76, 67, 82, 76, 67, 82, 76, 67, 82, 76, 67, 82, 76, 67, 82, 76, 67, 82, 76, 67, 82, 76, 67, 82, 76, 67, 82, 76, 67, 82, 76, 67, 82, 76, 67, 82, 76, 67, + 82, 76, 67, 82, 76, 67, 82, 76, 67, 82, 76, 67, 82, 76, 67, 82, 76, 67, 82, 76, 67, 82, 76, 67, 82, 76, 67, 82, 76, 67, 82, 76, 67, 82, 76, 67, 82, 76, 67, 82, 76, 67, 82, 76, 67, 82, 76, 67, 82, 76, 67, 82, 76, 67, 82, 76, 67, 82, 76, 67, 82, 76, 67, + 82, 76, 67, 82, 76, 67, 82, 76, 67, 82, 76, 67, 82, 76, 67, 81, 75, 66, 93, 87, 78, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, + 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, + 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77, 92, 86, 77,}; +const char* DemoArtwork::ico4Data = (const char*)temp_ico4_4; + +static const unsigned char temp_ico5_5[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 5, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 0, 0, 0, 12, 12, 12, 148, 148, 148, 161, 161, 161, + 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, + 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, + 156, 156, 156, 155, 155, 155, 10, 10, 10, 18, 18, 18, 215, 215, 215, 229, 229, 229, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 221, 221, 221, 222, 222, 222, 19, 19, 19, 17, 17, 17, 208, 208, 208, 222, 222, 222, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 215, 215, 215, 215, 215, 215, 18, 18, 18, 17, 17, 17, 208, 208, 208, 222, 222, 222, 220, 220, 220, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 219, 219, 219, 220, 220, 220, 220, 220, 220, 220, 220, 220, 219, 219, 219, 220, 220, 220, 220, 220, 220, 220, 220, 220, 219, 219, 219, 219, 219, 219, 220, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 219, 219, 219, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 215, 215, 215, 215, 215, 215, 18, 18, 18, + 17, 17, 17, 208, 208, 208, 222, 222, 222, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 223, 223, 223, 220, 220, 220, 219, 219, 219, 219, 219, 219, 226, 226, 226, + 220, 220, 220, 218, 218, 218, 221, 221, 221, 223, 223, 223, 225, 225, 225, 218, 218, 218, 217, 217, 217, 221, 221, 221, 222, 222, 222, 219, 219, 219, 226, 226, 226, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 215, 215, 215, 215, 215, 215, 18, 18, 18, 17, 17, 17, 208, 208, 208, 222, 222, 222, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 219, 219, 219, + 225, 225, 225, 184, 184, 184, 207, 207, 207, 209, 209, 209, 215, 215, 215, 165, 165, 165, 203, 203, 203, 224, 224, 224, 210, 210, 210, 182, 182, 182, 174, 174, 174, 222, 222, 222, 223, 223, 223, 203, 203, 203, 195, 195, 195, 213, 213, 213, 166, 166, 166, 217, 217, 217, 219, 219, 219, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 215, 215, 215, 215, 215, 215, 18, 18, 18, 17, 17, 17, 208, 208, 208, 222, 222, 222, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 218, 218, 218, 232, 232, 232, 127, 127, 127, 164, 164, 164, 126, 126, 126, 145, 145, 145, 148, 148, 148, 141, 141, 141, 140, 140, 140, 218, 218, 218, 105, 105, 105, 137, 137, 137, 146, 146, 146, 129, 129, 129, 149, 149, 149, 152, 152, 152, + 142, 142, 142, 145, 145, 145, 214, 214, 214, 219, 219, 219, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 215, 215, 215, 215, 215, 215, 18, 18, 18, 17, 17, 17, 208, 208, 208, 222, 222, 222, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 219, 219, 219, 225, 225, 225, 187, 187, 187, 213, 213, 213, 166, 166, 166, 194, 194, 194, 182, 182, 182, 182, 182, 182, 181, 181, 181, 217, 217, 217, + 178, 178, 178, 190, 190, 190, 184, 184, 184, 176, 176, 176, 199, 199, 199, 184, 184, 184, 187, 187, 187, 192, 192, 192, 219, 219, 219, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, + 215, 215, 215, 215, 215, 215, 18, 18, 18, 17, 17, 17, 208, 208, 208, 222, 222, 222, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 221, 221, 221, 220, 220, 220, + 221, 221, 221, 221, 221, 221, 222, 222, 222, 220, 220, 220, 222, 222, 222, 220, 220, 220, 223, 223, 223, 221, 221, 221, 222, 222, 222, 221, 221, 221, 221, 221, 221, 222, 222, 222, 219, 219, 219, 221, 221, 221, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 215, 215, 215, 215, 215, 215, 18, 18, 18, 17, 17, 17, 208, 208, 208, 222, 222, 222, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 215, 215, 215, 215, 215, 215, 18, 18, 18, 17, 17, 17, 208, 208, 208, 222, 222, 222, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, + 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 214, 214, 214, 215, 215, 215, 18, 18, 18, + 17, 17, 17, 206, 206, 206, 219, 219, 219, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, + 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, + 217, 217, 217, 217, 217, 217, 217, 217, 217, 212, 212, 212, 213, 213, 213, 19, 19, 19, 14, 14, 14, 177, 177, 177, 194, 194, 194, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, + 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 187, 187, 187, 187, 187, 187, 10, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}; +const char* DemoArtwork::ico5Data = (const char*)temp_ico5_5; + diff --git a/tests/demo_res/DemoArtwork.hpp b/tests/demo_res/DemoArtwork.hpp new file mode 100644 index 00000000..2a00e2fe --- /dev/null +++ b/tests/demo_res/DemoArtwork.hpp @@ -0,0 +1,35 @@ +/* (Auto-generated binary data file). */ + +#ifndef BINARY_DEMOARTWORK_HPP +#define BINARY_DEMOARTWORK_HPP + +namespace DemoArtwork +{ + extern const char* ico1Data; + const unsigned int ico1DataSize = 6912; + const unsigned int ico1Width = 48; + const unsigned int ico1Height = 48; + + extern const char* ico2Data; + const unsigned int ico2DataSize = 6912; + const unsigned int ico2Width = 48; + const unsigned int ico2Height = 48; + + extern const char* ico3Data; + const unsigned int ico3DataSize = 6912; + const unsigned int ico3Width = 48; + const unsigned int ico3Height = 48; + + extern const char* ico4Data; + const unsigned int ico4DataSize = 6912; + const unsigned int ico4Width = 48; + const unsigned int ico4Height = 48; + + extern const char* ico5Data; + const unsigned int ico5DataSize = 6912; + const unsigned int ico5Width = 48; + const unsigned int ico5Height = 48; +} + +#endif // BINARY_DEMOARTWORK_HPP + diff --git a/tests/demo_res/ico1.png b/tests/demo_res/ico1.png new file mode 100644 index 00000000..d8a00bf3 Binary files /dev/null and b/tests/demo_res/ico1.png differ diff --git a/tests/demo_res/ico2.png b/tests/demo_res/ico2.png new file mode 100644 index 00000000..9f22da6d Binary files /dev/null and b/tests/demo_res/ico2.png differ diff --git a/tests/demo_res/ico3.png b/tests/demo_res/ico3.png new file mode 100644 index 00000000..955df6f1 Binary files /dev/null and b/tests/demo_res/ico3.png differ diff --git a/tests/demo_res/ico4.png b/tests/demo_res/ico4.png new file mode 100644 index 00000000..79998963 Binary files /dev/null and b/tests/demo_res/ico4.png differ diff --git a/tests/demo_res/ico5.png b/tests/demo_res/ico5.png new file mode 100644 index 00000000..dc85b73d Binary files /dev/null and b/tests/demo_res/ico5.png differ diff --git a/tests/images_res/CREDITS.txt b/tests/images_res/CREDITS.txt new file mode 100644 index 00000000..4f92f092 --- /dev/null +++ b/tests/images_res/CREDITS.txt @@ -0,0 +1,3 @@ +cat1.png: http://www.flickr.com/photos/tomitapio/4305303148/ +cat2.png: http://www.flickr.com/photos/aigle_dore/6672148713/ +cat3.png: http://www.flickr.com/photos/aigle_dore/5889008066/ diff --git a/tests/images_res/CatPics.cpp b/tests/images_res/CatPics.cpp new file mode 100644 index 00000000..59116d7a --- /dev/null +++ b/tests/images_res/CatPics.cpp @@ -0,0 +1,7083 @@ +/* (Auto-generated binary data file). */ + +#include "CatPics.hpp" + +static const unsigned char temp_cat1_1[] = { + 58, 15, 55, 56, 12, 52, 58, 17, 56, 58, 18, 55, 57, 13, 52, 60, 16, 55, 61, 17, 56, 59, 15, 53, 60, 17, 54, 61, 18, 55, 60, 16, 55, 63, 19, 56, 63, 16, 55, 63, 18, 55, 62, 16, 55, 64, 17, 56, 66, 20, 59, 65, 18, 57, 65, 18, 57, 67, 18, 58, 69, 22, 60, + 67, 17, 59, 67, 18, 59, 69, 22, 61, 68, 22, 62, 68, 24, 62, 68, 21, 61, 69, 19, 61, 71, 21, 64, 71, 22, 64, 70, 20, 64, 73, 23, 66, 72, 22, 65, 76, 26, 68, 73, 22, 66, 75, 24, 68, 74, 22, 67, 75, 25, 68, 76, 25, 70, 77, 25, 71, 77, 25, 70, 81, 31, 74, + 77, 25, 70, 79, 27, 72, 78, 25, 72, 78, 25, 72, 81, 26, 74, 82, 27, 76, 80, 23, 75, 83, 28, 77, 82, 27, 76, 84, 29, 77, 85, 31, 78, 84, 29, 77, 84, 28, 77, 85, 30, 79, 88, 29, 81, 87, 30, 81, 85, 27, 80, 88, 30, 82, 87, 27, 80, 91, 31, 83, 91, 32, 83, + 89, 31, 83, 90, 31, 83, 93, 36, 88, 95, 37, 88, 96, 40, 89, 97, 39, 89, 96, 37, 89, 95, 36, 89, 93, 30, 86, 93, 31, 88, 92, 31, 87, 92, 30, 86, 90, 29, 84, 90, 29, 82, 89, 30, 82, 88, 29, 81, 85, 27, 79, 85, 28, 80, 82, 27, 77, 81, 28, 76, 79, 27, 75, + 80, 31, 76, 83, 38, 79, 82, 35, 77, 76, 27, 70, 69, 17, 60, 67, 17, 59, 65, 19, 60, 66, 20, 60, 61, 17, 57, 59, 14, 54, 58, 15, 52, 51, 12, 48, 54, 17, 49, 48, 14, 44, 50, 17, 46, 46, 12, 42, 45, 11, 41, 44, 11, 38, 43, 9, 38, 42, 9, 36, 42, 10, 36, + 41, 9, 36, 40, 9, 37, 41, 10, 39, 39, 9, 38, 43, 9, 39, 42, 9, 37, 40, 7, 34, 42, 9, 36, 40, 8, 35, 40, 9, 37, 39, 8, 36, 39, 9, 36, 39, 9, 36, 38, 10, 35, 38, 9, 35, 38, 8, 34, 38, 10, 36, 38, 10, 36, 35, 8, 33, 37, 10, 34, 37, 9, 34, + 38, 11, 35, 35, 7, 31, 37, 9, 32, 37, 8, 32, 37, 8, 33, 37, 8, 33, 38, 9, 34, 39, 9, 35, 38, 9, 34, 38, 9, 34, 39, 10, 35, 38, 8, 34, 40, 11, 37, 39, 10, 36, 39, 9, 35, 40, 9, 36, 40, 9, 36, 41, 11, 38, 41, 11, 37, 41, 12, 38, 40, 11, 37, + 40, 10, 36, 39, 9, 36, 41, 12, 38, 39, 10, 36, 41, 11, 38, 41, 10, 39, 43, 12, 41, 40, 9, 38, 41, 10, 39, 40, 10, 40, 42, 12, 42, 42, 12, 41, 41, 11, 40, 43, 13, 42, 41, 10, 39, 46, 16, 45, 43, 12, 42, 44, 13, 42, 43, 12, 41, 46, 15, 42, 43, 12, 41, + 43, 12, 40, 44, 13, 40, 44, 13, 40, 45, 13, 40, 43, 14, 40, 45, 18, 44, 46, 19, 45, 48, 21, 46, 49, 25, 49, 49, 27, 51, 51, 34, 56, 52, 37, 60, 53, 38, 61, 60, 48, 68, 63, 51, 71, 67, 58, 78, 67, 61, 80, 72, 67, 86, 77, 76, 94, 81, 83, 98, 86, 91, 105, + 89, 97, 110, 96, 105, 118, 103, 112, 126, 110, 121, 133, 113, 124, 138, 117, 127, 141, 121, 132, 147, 123, 136, 151, 121, 135, 151, 120, 135, 151, 123, 137, 154, 122, 138, 156, 122, 137, 156, 123, 138, 157, 120, 135, 154, 120, 135, 154, 115, 131, 153, 114, 130, 152, 115, 132, 153, 113, 128, 150, 111, 126, 149, + 108, 124, 146, 102, 119, 141, 100, 116, 138, 98, 112, 136, 94, 108, 131, 91, 104, 128, 88, 102, 124, 88, 101, 123, 87, 98, 119, 87, 98, 117, 85, 97, 115, 85, 94, 113, 85, 94, 113, 84, 93, 113, 80, 88, 108, 78, 89, 109, 73, 85, 107, 69, 80, 104, 68, 80, 104, 65, 75, 100, 66, 76, 100, + 64, 74, 99, 64, 73, 99, 63, 72, 100, 63, 72, 99, 63, 71, 98, 58, 66, 95, 54, 63, 90, 50, 59, 84, 49, 56, 79, 48, 55, 76, 47, 54, 73, 47, 53, 71, 47, 49, 64, 46, 48, 60, 42, 44, 52, 41, 42, 48, 39, 38, 42, 39, 33, 38, 39, 33, 38, 40, 34, 39, 39, 32, 38, + 40, 33, 40, 40, 33, 40, 41, 33, 40, 43, 32, 40, 45, 34, 42, 47, 33, 42, 46, 33, 44, 49, 35, 46, 50, 35, 48, 51, 36, 48, 50, 36, 46, 46, 34, 44, 47, 37, 48, 46, 42, 56, 47, 46, 62, 58, 57, 76, 61, 62, 81, 68, 71, 88, 78, 83, 101, 79, 86, 104, 87, 94, 111, + 93, 98, 116, 96, 101, 116, 100, 101, 118, 104, 103, 119, 106, 102, 118, 112, 106, 121, 112, 104, 117, 116, 105, 117, 115, 102, 114, 115, 103, 114, 118, 105, 116, 115, 101, 112, 111, 96, 107, 107, 87, 99, 105, 82, 95, 102, 78, 91, 96, 71, 85, 97, 73, 87, 98, 77, 90, 101, 83, 97, 109, 96, 109, + 59, 18, 55, 58, 16, 53, 58, 14, 52, 59, 17, 55, 59, 15, 54, 61, 16, 56, 60, 14, 55, 61, 16, 55, 61, 18, 55, 62, 19, 56, 63, 19, 56, 62, 18, 57, 61, 14, 53, 63, 16, 55, 64, 18, 57, 64, 18, 57, 66, 20, 58, 64, 17, 57, 66, 19, 58, 67, 20, 58, 65, 16, 56, + 66, 19, 58, 67, 21, 60, 65, 20, 59, 68, 21, 60, 69, 22, 61, 68, 20, 62, 71, 23, 63, 71, 21, 64, 71, 22, 65, 72, 24, 65, 73, 25, 67, 74, 24, 67, 72, 21, 65, 72, 22, 66, 75, 24, 67, 75, 23, 68, 74, 23, 67, 76, 24, 69, 77, 24, 69, 77, 25, 71, 78, 27, 71, + 78, 26, 70, 78, 26, 72, 78, 25, 72, 80, 26, 73, 82, 28, 75, 82, 27, 74, 81, 27, 75, 82, 27, 76, 84, 30, 77, 83, 27, 75, 83, 28, 77, 84, 29, 78, 85, 29, 78, 86, 28, 79, 85, 26, 80, 86, 28, 81, 88, 31, 82, 88, 30, 81, 89, 29, 81, 90, 32, 83, 90, 31, 83, + 90, 30, 83, 92, 33, 86, 90, 28, 84, 94, 37, 88, 95, 39, 89, 95, 39, 89, 97, 40, 90, 98, 39, 90, 94, 34, 88, 93, 32, 87, 92, 32, 87, 91, 31, 85, 90, 30, 84, 90, 30, 83, 87, 27, 80, 87, 30, 81, 84, 26, 79, 84, 28, 79, 81, 25, 76, 81, 27, 76, 80, 28, 75, + 78, 28, 74, 83, 38, 79, 85, 44, 82, 79, 37, 75, 71, 25, 65, 66, 19, 59, 65, 20, 60, 64, 19, 60, 64, 20, 58, 61, 17, 55, 55, 12, 51, 54, 16, 51, 55, 20, 51, 54, 20, 50, 51, 17, 46, 48, 14, 44, 45, 11, 41, 43, 10, 37, 43, 9, 38, 42, 9, 36, 44, 11, 38, + 40, 9, 36, 42, 11, 38, 41, 10, 39, 40, 9, 38, 42, 8, 38, 41, 8, 37, 42, 9, 37, 41, 8, 35, 40, 8, 36, 40, 9, 36, 40, 10, 36, 38, 8, 35, 38, 8, 35, 39, 10, 35, 38, 9, 35, 38, 9, 35, 37, 8, 34, 38, 9, 35, 39, 10, 36, 37, 8, 34, 38, 9, 35, + 35, 8, 33, 36, 9, 33, 37, 10, 33, 39, 10, 34, 38, 9, 34, 38, 9, 34, 38, 9, 34, 38, 9, 34, 37, 8, 33, 37, 8, 33, 38, 9, 34, 39, 10, 35, 40, 11, 37, 38, 9, 35, 40, 10, 36, 41, 10, 37, 39, 9, 36, 39, 8, 35, 39, 10, 36, 38, 9, 35, 41, 11, 37, + 39, 9, 36, 40, 11, 36, 40, 9, 35, 40, 10, 35, 40, 9, 36, 42, 11, 39, 42, 10, 38, 41, 10, 39, 42, 12, 40, 41, 11, 40, 43, 13, 42, 41, 11, 40, 41, 11, 40, 42, 12, 41, 43, 13, 42, 44, 13, 42, 43, 12, 41, 43, 12, 41, 43, 12, 41, 43, 12, 40, 44, 14, 41, + 44, 14, 40, 43, 13, 40, 44, 13, 40, 46, 16, 42, 46, 17, 43, 47, 19, 45, 48, 21, 47, 49, 24, 48, 47, 24, 48, 50, 29, 53, 51, 34, 54, 53, 37, 59, 56, 42, 64, 62, 50, 71, 60, 49, 70, 67, 58, 78, 72, 65, 84, 72, 69, 87, 79, 78, 94, 83, 85, 100, 86, 92, 105, + 90, 98, 111, 97, 106, 119, 104, 115, 127, 111, 122, 135, 113, 124, 140, 117, 128, 145, 119, 132, 148, 120, 134, 149, 122, 136, 151, 122, 136, 153, 121, 135, 154, 120, 135, 154, 122, 137, 157, 120, 135, 154, 119, 135, 154, 117, 133, 153, 117, 132, 153, 114, 129, 152, 112, 127, 150, 112, 127, 150, 112, 127, 149, + 105, 122, 144, 103, 119, 141, 101, 117, 140, 94, 111, 134, 95, 108, 131, 91, 104, 127, 88, 101, 123, 86, 99, 120, 88, 99, 119, 88, 100, 118, 85, 97, 115, 87, 97, 115, 82, 92, 111, 81, 90, 110, 80, 89, 109, 77, 88, 108, 74, 85, 107, 72, 82, 106, 68, 79, 102, 66, 76, 100, 64, 74, 99, + 66, 77, 100, 64, 73, 101, 64, 73, 100, 63, 72, 99, 62, 71, 98, 58, 67, 94, 57, 65, 91, 55, 61, 87, 48, 55, 79, 49, 55, 77, 47, 54, 74, 48, 53, 72, 48, 48, 65, 45, 46, 59, 43, 45, 53, 39, 41, 46, 40, 37, 42, 40, 35, 40, 37, 31, 35, 37, 31, 36, 36, 30, 35, + 38, 31, 37, 39, 31, 38, 40, 31, 38, 43, 32, 40, 43, 32, 40, 45, 32, 41, 46, 33, 44, 46, 32, 43, 51, 35, 47, 49, 33, 44, 50, 34, 44, 47, 33, 44, 47, 37, 48, 45, 40, 53, 48, 47, 62, 56, 55, 74, 61, 63, 83, 69, 71, 91, 81, 84, 103, 83, 87, 106, 90, 96, 113, + 97, 101, 119, 100, 104, 122, 103, 105, 122, 106, 105, 121, 108, 106, 122, 112, 108, 122, 113, 107, 121, 116, 106, 118, 120, 108, 120, 119, 108, 119, 119, 107, 117, 115, 101, 112, 112, 96, 108, 108, 90, 103, 105, 85, 98, 98, 74, 87, 96, 72, 84, 96, 74, 87, 96, 76, 90, 102, 86, 100, 108, 95, 109, + 56, 12, 51, 59, 17, 54, 58, 14, 54, 59, 16, 55, 59, 15, 54, 59, 14, 55, 61, 16, 56, 61, 16, 55, 61, 17, 56, 60, 15, 54, 61, 16, 55, 61, 16, 55, 62, 17, 56, 64, 17, 56, 64, 17, 56, 63, 17, 56, 66, 20, 59, 64, 17, 57, 65, 18, 57, 65, 18, 57, 66, 20, 58, + 66, 20, 59, 65, 19, 58, 68, 22, 61, 67, 20, 59, 68, 21, 60, 68, 21, 60, 70, 21, 63, 70, 21, 63, 70, 19, 63, 70, 22, 64, 69, 21, 64, 71, 23, 65, 74, 23, 66, 73, 22, 65, 75, 25, 69, 75, 25, 68, 74, 23, 68, 76, 25, 69, 77, 24, 69, 77, 25, 70, 79, 27, 71, + 79, 26, 71, 79, 26, 71, 80, 27, 72, 79, 25, 72, 80, 26, 73, 81, 27, 74, 82, 28, 76, 83, 29, 76, 83, 28, 76, 83, 28, 76, 84, 30, 77, 85, 29, 78, 85, 28, 78, 86, 29, 79, 86, 27, 81, 87, 30, 81, 86, 28, 81, 87, 28, 81, 88, 31, 82, 87, 27, 82, 91, 33, 84, + 90, 31, 83, 90, 31, 84, 92, 33, 87, 91, 32, 85, 94, 37, 88, 94, 38, 88, 98, 41, 91, 96, 39, 90, 95, 37, 88, 92, 34, 86, 91, 33, 84, 91, 34, 86, 89, 29, 82, 89, 30, 81, 88, 29, 80, 85, 27, 79, 85, 28, 78, 83, 27, 77, 82, 26, 76, 80, 28, 76, 80, 28, 75, + 77, 27, 74, 83, 38, 79, 86, 46, 84, 82, 46, 82, 74, 36, 71, 67, 24, 62, 63, 18, 58, 65, 21, 59, 62, 19, 57, 62, 19, 57, 55, 13, 51, 54, 15, 51, 54, 18, 50, 53, 19, 49, 51, 17, 47, 47, 14, 43, 44, 10, 40, 44, 10, 38, 43, 10, 37, 43, 10, 37, 42, 10, 37, + 42, 10, 37, 41, 10, 37, 41, 10, 39, 41, 10, 39, 41, 9, 38, 42, 7, 38, 42, 8, 38, 40, 8, 37, 39, 8, 37, 39, 8, 35, 38, 7, 34, 39, 9, 35, 39, 9, 35, 36, 8, 33, 37, 8, 33, 38, 9, 35, 37, 8, 34, 38, 9, 35, 38, 9, 35, 38, 10, 36, 35, 8, 34, + 36, 10, 35, 37, 9, 33, 36, 9, 34, 37, 8, 33, 37, 8, 33, 37, 9, 34, 37, 8, 33, 38, 10, 35, 38, 9, 34, 36, 7, 32, 38, 9, 34, 36, 8, 35, 38, 10, 36, 38, 9, 35, 38, 9, 35, 39, 11, 36, 40, 10, 37, 39, 10, 36, 39, 10, 36, 39, 10, 35, 39, 10, 35, + 40, 11, 36, 40, 11, 37, 38, 8, 35, 41, 11, 37, 40, 10, 37, 40, 9, 36, 41, 10, 40, 42, 12, 41, 41, 11, 40, 41, 11, 40, 41, 11, 40, 43, 13, 42, 42, 12, 41, 42, 12, 41, 42, 12, 41, 40, 10, 39, 43, 11, 40, 44, 13, 42, 43, 12, 42, 43, 12, 39, 42, 13, 40, + 43, 14, 40, 42, 13, 39, 44, 14, 41, 44, 15, 41, 46, 18, 44, 45, 18, 44, 46, 19, 45, 49, 23, 47, 47, 24, 49, 51, 32, 53, 51, 33, 55, 54, 39, 61, 56, 43, 65, 57, 46, 67, 65, 54, 75, 66, 58, 78, 70, 65, 83, 73, 71, 87, 76, 76, 92, 82, 86, 100, 87, 93, 106, + 90, 98, 111, 97, 106, 119, 102, 112, 126, 108, 119, 134, 113, 123, 140, 117, 127, 145, 117, 130, 147, 118, 132, 148, 118, 133, 149, 120, 134, 152, 121, 137, 155, 120, 136, 155, 120, 135, 154, 119, 135, 154, 117, 132, 151, 116, 130, 152, 116, 130, 153, 112, 127, 150, 111, 127, 150, 110, 126, 149, 109, 125, 148, + 107, 124, 145, 102, 119, 141, 98, 114, 137, 95, 111, 134, 92, 106, 129, 90, 103, 125, 88, 102, 124, 87, 99, 121, 87, 98, 118, 85, 97, 116, 86, 98, 115, 86, 97, 115, 83, 93, 112, 82, 91, 111, 80, 89, 109, 77, 86, 109, 73, 84, 106, 70, 80, 103, 68, 78, 102, 65, 75, 99, 66, 77, 100, + 65, 74, 101, 68, 78, 102, 64, 73, 100, 64, 73, 100, 64, 73, 100, 59, 69, 95, 60, 67, 92, 54, 61, 87, 54, 60, 84, 50, 56, 78, 48, 53, 75, 49, 54, 73, 49, 52, 68, 45, 47, 60, 45, 47, 56, 40, 41, 49, 41, 39, 45, 38, 34, 38, 37, 32, 33, 34, 29, 32, 36, 30, 35, + 38, 31, 36, 37, 29, 36, 38, 28, 36, 41, 30, 38, 42, 31, 39, 42, 32, 41, 46, 32, 41, 46, 32, 43, 48, 32, 43, 48, 32, 43, 49, 33, 44, 47, 34, 45, 46, 35, 46, 46, 41, 53, 49, 48, 63, 56, 56, 74, 62, 63, 83, 70, 74, 93, 80, 84, 103, 87, 91, 110, 92, 96, 114, + 98, 102, 120, 101, 105, 123, 106, 108, 126, 109, 108, 127, 111, 109, 127, 114, 110, 126, 116, 110, 125, 116, 107, 119, 118, 108, 120, 116, 105, 117, 122, 110, 121, 116, 102, 113, 115, 98, 111, 108, 90, 103, 103, 85, 98, 99, 76, 89, 96, 73, 85, 95, 74, 86, 96, 77, 90, 101, 85, 98, 107, 95, 108, + 58, 16, 54, 58, 14, 53, 59, 15, 54, 59, 15, 54, 59, 15, 55, 59, 14, 56, 59, 14, 55, 61, 16, 55, 61, 16, 55, 61, 16, 55, 62, 17, 56, 62, 17, 56, 61, 16, 56, 63, 16, 55, 62, 17, 56, 64, 19, 57, 65, 18, 57, 64, 17, 58, 64, 17, 57, 66, 19, 58, 66, 19, 59, + 66, 20, 59, 66, 19, 58, 68, 20, 61, 67, 19, 61, 68, 21, 60, 69, 22, 62, 69, 21, 62, 70, 21, 63, 70, 21, 63, 70, 22, 65, 71, 24, 65, 72, 22, 65, 72, 22, 64, 73, 22, 66, 73, 24, 67, 73, 24, 68, 75, 24, 68, 77, 25, 69, 76, 24, 68, 77, 25, 70, 76, 22, 68, + 78, 25, 70, 80, 27, 72, 81, 28, 73, 79, 25, 72, 80, 27, 73, 81, 27, 74, 81, 27, 74, 83, 29, 76, 82, 26, 76, 84, 29, 77, 84, 28, 77, 83, 26, 77, 86, 29, 79, 86, 30, 79, 87, 29, 80, 87, 30, 81, 86, 28, 81, 88, 30, 83, 89, 30, 83, 89, 29, 83, 89, 28, 82, + 90, 30, 84, 91, 31, 84, 92, 33, 86, 92, 32, 86, 92, 33, 86, 94, 34, 87, 95, 39, 88, 96, 41, 89, 98, 43, 91, 94, 38, 88, 91, 32, 83, 89, 29, 83, 89, 31, 83, 87, 30, 82, 88, 30, 81, 85, 27, 78, 85, 29, 79, 84, 29, 78, 82, 27, 75, 80, 28, 75, 79, 29, 76, + 75, 25, 72, 79, 33, 76, 86, 49, 86, 89, 57, 90, 83, 51, 83, 71, 34, 68, 64, 22, 58, 62, 20, 56, 63, 22, 57, 62, 22, 56, 56, 18, 52, 53, 16, 50, 54, 20, 52, 55, 21, 51, 51, 17, 47, 48, 15, 45, 44, 13, 42, 43, 12, 39, 43, 10, 37, 42, 10, 37, 42, 10, 37, + 40, 9, 36, 41, 10, 37, 41, 10, 39, 40, 9, 38, 40, 11, 38, 42, 11, 39, 39, 8, 36, 40, 8, 38, 41, 9, 39, 39, 7, 35, 39, 9, 35, 39, 8, 35, 38, 9, 34, 37, 8, 33, 38, 9, 34, 38, 9, 35, 36, 7, 33, 38, 9, 34, 38, 9, 35, 37, 9, 35, 35, 8, 34, + 35, 8, 34, 37, 9, 34, 35, 8, 33, 36, 8, 33, 37, 8, 33, 38, 9, 34, 38, 9, 34, 37, 10, 34, 36, 9, 34, 39, 10, 36, 36, 9, 33, 37, 9, 35, 38, 11, 37, 38, 9, 35, 37, 8, 34, 38, 10, 36, 39, 9, 35, 38, 9, 35, 40, 11, 37, 39, 10, 35, 39, 10, 36, + 39, 10, 36, 40, 11, 37, 40, 11, 37, 40, 10, 36, 40, 11, 37, 40, 10, 36, 39, 9, 38, 41, 11, 40, 39, 9, 38, 40, 10, 39, 40, 10, 39, 40, 10, 39, 42, 12, 41, 42, 12, 41, 42, 12, 41, 42, 12, 41, 42, 12, 41, 43, 12, 41, 42, 11, 40, 42, 13, 39, 43, 14, 41, + 44, 15, 41, 45, 16, 42, 43, 14, 40, 43, 14, 40, 43, 16, 42, 45, 18, 44, 46, 20, 45, 47, 23, 46, 48, 28, 50, 50, 31, 53, 51, 33, 55, 56, 42, 64, 58, 45, 66, 60, 48, 70, 63, 53, 73, 66, 59, 78, 70, 66, 82, 74, 72, 88, 78, 78, 94, 80, 83, 97, 85, 92, 106, + 91, 99, 112, 97, 105, 118, 104, 114, 128, 110, 121, 136, 112, 122, 139, 116, 127, 143, 117, 130, 146, 117, 132, 148, 118, 133, 149, 117, 132, 149, 118, 134, 152, 118, 135, 154, 119, 135, 155, 116, 133, 153, 115, 132, 152, 113, 130, 150, 112, 129, 151, 111, 125, 148, 108, 124, 147, 108, 124, 147, 106, 122, 145, + 105, 121, 144, 100, 116, 139, 99, 115, 138, 92, 108, 131, 94, 107, 131, 90, 103, 125, 88, 101, 123, 87, 99, 121, 87, 98, 119, 85, 96, 116, 85, 96, 116, 85, 95, 115, 84, 93, 113, 82, 91, 111, 79, 87, 108, 78, 86, 109, 75, 84, 107, 71, 81, 104, 68, 78, 102, 66, 76, 101, 66, 75, 101, + 67, 76, 103, 65, 75, 102, 66, 75, 102, 64, 74, 101, 62, 71, 99, 60, 70, 96, 58, 65, 91, 56, 64, 88, 54, 59, 84, 51, 57, 80, 49, 55, 77, 50, 55, 75, 47, 50, 67, 49, 50, 64, 45, 45, 56, 43, 43, 53, 41, 39, 46, 36, 33, 37, 33, 29, 33, 33, 28, 30, 34, 29, 32, + 36, 29, 34, 38, 31, 36, 38, 30, 36, 39, 29, 37, 42, 31, 39, 42, 31, 40, 43, 32, 42, 45, 31, 42, 47, 33, 44, 46, 31, 42, 46, 32, 43, 46, 34, 44, 45, 35, 47, 47, 39, 52, 47, 47, 62, 57, 56, 75, 63, 64, 84, 70, 74, 94, 79, 85, 104, 89, 94, 113, 94, 98, 116, + 99, 103, 121, 102, 106, 124, 109, 109, 130, 111, 111, 130, 113, 111, 130, 113, 111, 127, 117, 111, 127, 120, 112, 125, 119, 109, 121, 120, 109, 121, 121, 109, 120, 117, 103, 116, 113, 98, 111, 109, 92, 105, 105, 88, 101, 97, 77, 89, 95, 74, 86, 94, 74, 86, 96, 78, 90, 101, 86, 98, 104, 93, 105, + 58, 14, 54, 58, 15, 54, 59, 15, 55, 58, 13, 54, 59, 15, 54, 60, 15, 54, 61, 17, 55, 60, 16, 55, 61, 16, 55, 61, 16, 55, 61, 16, 55, 60, 15, 54, 62, 17, 55, 62, 18, 57, 62, 16, 55, 62, 15, 56, 64, 18, 58, 64, 18, 58, 64, 18, 57, 66, 19, 58, 65, 18, 59, + 65, 18, 59, 65, 17, 60, 67, 18, 61, 68, 20, 62, 69, 21, 62, 70, 22, 62, 69, 22, 63, 69, 20, 62, 69, 20, 62, 70, 23, 64, 71, 22, 64, 71, 23, 65, 72, 23, 65, 73, 23, 66, 73, 24, 67, 72, 24, 66, 74, 24, 68, 76, 26, 69, 75, 24, 69, 76, 25, 69, 77, 27, 70, + 78, 25, 72, 78, 26, 72, 80, 26, 72, 81, 27, 72, 81, 27, 74, 82, 28, 75, 83, 29, 76, 81, 26, 75, 83, 28, 77, 83, 28, 77, 82, 27, 76, 86, 30, 79, 84, 27, 78, 85, 28, 79, 84, 27, 78, 87, 31, 81, 87, 29, 81, 88, 29, 82, 87, 29, 83, 89, 29, 84, 90, 32, 84, + 90, 30, 85, 90, 30, 84, 91, 31, 85, 92, 32, 86, 93, 33, 86, 92, 34, 85, 94, 36, 87, 95, 38, 88, 97, 41, 90, 95, 39, 88, 93, 37, 86, 88, 31, 83, 87, 29, 82, 88, 30, 83, 85, 28, 80, 86, 29, 79, 84, 28, 77, 83, 29, 76, 82, 30, 76, 80, 28, 75, 78, 33, 77, + 77, 33, 77, 78, 36, 76, 81, 49, 84, 91, 63, 94, 94, 67, 96, 78, 48, 78, 66, 32, 64, 62, 25, 59, 60, 22, 56, 63, 27, 59, 62, 28, 58, 56, 21, 54, 51, 18, 49, 51, 19, 49, 52, 20, 49, 47, 15, 44, 43, 12, 41, 42, 11, 38, 43, 11, 39, 42, 12, 37, 41, 10, 37, + 41, 10, 37, 40, 9, 36, 41, 10, 37, 40, 10, 38, 39, 10, 36, 39, 8, 35, 38, 9, 35, 39, 10, 36, 38, 9, 35, 39, 9, 36, 39, 9, 35, 38, 9, 35, 37, 8, 33, 38, 9, 34, 38, 9, 34, 36, 7, 32, 37, 8, 33, 38, 9, 35, 37, 8, 33, 37, 8, 34, 36, 10, 34, + 35, 9, 34, 34, 8, 32, 37, 8, 33, 38, 8, 34, 36, 8, 33, 37, 8, 33, 35, 10, 33, 36, 10, 34, 36, 10, 34, 38, 10, 35, 36, 10, 34, 37, 11, 35, 37, 10, 36, 38, 10, 36, 38, 9, 35, 39, 10, 36, 38, 9, 36, 39, 10, 36, 40, 11, 36, 39, 10, 35, 38, 9, 35, + 42, 13, 38, 39, 10, 36, 40, 11, 37, 40, 11, 37, 40, 11, 37, 41, 12, 38, 41, 12, 37, 40, 10, 38, 41, 11, 39, 40, 11, 39, 40, 10, 39, 42, 12, 41, 41, 11, 40, 40, 11, 40, 41, 12, 41, 41, 11, 40, 42, 12, 41, 42, 12, 41, 43, 14, 40, 42, 12, 39, 43, 14, 39, + 43, 14, 40, 42, 13, 39, 44, 15, 41, 44, 17, 43, 44, 18, 44, 46, 21, 44, 48, 24, 48, 49, 27, 48, 48, 28, 50, 52, 33, 54, 53, 37, 59, 55, 41, 62, 60, 49, 69, 61, 50, 70, 65, 58, 76, 67, 61, 79, 72, 69, 85, 74, 72, 88, 79, 79, 95, 81, 85, 99, 88, 95, 108, + 92, 100, 113, 97, 106, 120, 102, 113, 127, 110, 121, 135, 111, 122, 137, 114, 125, 140, 116, 130, 146, 116, 131, 147, 117, 132, 148, 118, 132, 150, 120, 135, 153, 118, 134, 153, 116, 133, 154, 116, 133, 154, 115, 132, 153, 113, 130, 151, 111, 128, 150, 110, 127, 149, 108, 125, 147, 108, 124, 147, 108, 124, 146, + 104, 120, 143, 101, 117, 140, 98, 114, 137, 97, 112, 135, 92, 105, 128, 90, 103, 125, 88, 101, 123, 90, 100, 122, 87, 98, 117, 85, 96, 116, 86, 97, 117, 86, 95, 115, 84, 94, 113, 81, 90, 110, 79, 88, 108, 78, 86, 108, 75, 85, 107, 68, 78, 102, 68, 79, 102, 67, 76, 102, 67, 75, 103, + 68, 76, 105, 68, 76, 105, 68, 77, 104, 66, 75, 102, 66, 75, 101, 61, 70, 96, 62, 69, 94, 57, 63, 88, 57, 61, 87, 53, 59, 82, 49, 55, 78, 49, 54, 75, 48, 51, 68, 46, 48, 62, 45, 45, 58, 44, 44, 54, 41, 40, 48, 36, 34, 39, 33, 30, 34, 30, 25, 29, 34, 28, 33, + 32, 26, 31, 34, 26, 32, 36, 29, 35, 37, 29, 36, 42, 31, 39, 41, 30, 38, 42, 31, 39, 43, 32, 41, 44, 33, 42, 43, 31, 41, 46, 33, 44, 45, 34, 45, 46, 36, 49, 46, 39, 53, 48, 46, 62, 55, 55, 73, 61, 62, 82, 69, 75, 94, 79, 85, 104, 89, 96, 113, 97, 101, 119, + 101, 105, 123, 105, 109, 128, 111, 113, 133, 113, 114, 134, 113, 114, 132, 117, 116, 133, 118, 114, 129, 119, 112, 126, 122, 112, 124, 122, 111, 123, 123, 111, 122, 121, 108, 120, 115, 100, 113, 110, 93, 106, 104, 87, 100, 97, 79, 92, 93, 73, 85, 92, 74, 85, 95, 78, 89, 99, 86, 97, 105, 94, 106, + 59, 16, 55, 59, 15, 56, 60, 16, 54, 59, 15, 55, 58, 12, 54, 60, 15, 54, 60, 15, 54, 60, 15, 54, 60, 15, 54, 61, 16, 55, 62, 17, 56, 61, 16, 55, 62, 17, 56, 63, 18, 56, 62, 18, 55, 62, 17, 56, 64, 19, 57, 63, 18, 56, 64, 19, 58, 65, 19, 59, 66, 18, 58, + 65, 17, 59, 68, 20, 62, 67, 19, 62, 68, 20, 62, 67, 19, 61, 68, 20, 61, 68, 21, 61, 68, 20, 62, 70, 22, 63, 71, 21, 62, 71, 21, 64, 72, 22, 64, 74, 25, 66, 72, 21, 65, 72, 23, 66, 72, 25, 67, 74, 23, 67, 75, 24, 68, 75, 23, 68, 77, 26, 70, 76, 25, 70, + 78, 25, 70, 79, 25, 71, 79, 25, 72, 80, 28, 74, 80, 26, 73, 80, 26, 73, 82, 28, 75, 82, 27, 76, 82, 27, 76, 83, 27, 76, 84, 29, 78, 84, 27, 78, 86, 30, 79, 85, 28, 78, 85, 28, 79, 87, 30, 81, 87, 28, 81, 87, 29, 82, 88, 29, 83, 89, 29, 83, 89, 30, 84, + 90, 31, 84, 91, 30, 84, 91, 31, 85, 91, 29, 84, 91, 31, 86, 91, 31, 85, 92, 33, 85, 94, 37, 87, 96, 38, 89, 96, 40, 89, 96, 40, 89, 91, 34, 86, 87, 30, 82, 86, 29, 81, 86, 28, 80, 84, 28, 78, 85, 30, 77, 82, 27, 75, 81, 27, 74, 79, 29, 74, 79, 35, 78, + 81, 39, 80, 80, 42, 78, 82, 55, 86, 89, 67, 96, 97, 77, 102, 89, 69, 94, 71, 47, 75, 60, 29, 60, 61, 25, 56, 64, 29, 59, 62, 28, 58, 59, 26, 56, 56, 26, 55, 52, 22, 51, 51, 20, 49, 47, 16, 45, 46, 15, 42, 42, 11, 38, 42, 10, 37, 42, 12, 37, 42, 11, 38, + 40, 9, 36, 40, 10, 37, 40, 10, 36, 39, 10, 36, 38, 9, 35, 38, 9, 35, 39, 10, 36, 38, 9, 36, 39, 10, 36, 38, 9, 35, 38, 9, 34, 37, 8, 33, 36, 7, 32, 38, 9, 34, 38, 9, 34, 36, 7, 32, 36, 7, 32, 37, 8, 34, 37, 8, 33, 36, 7, 33, 35, 9, 34, + 35, 9, 33, 36, 10, 34, 37, 7, 32, 38, 8, 33, 37, 9, 33, 38, 10, 35, 35, 9, 33, 36, 10, 34, 36, 10, 34, 39, 13, 37, 36, 10, 34, 36, 10, 34, 36, 9, 36, 37, 8, 35, 39, 10, 36, 38, 9, 35, 39, 10, 35, 38, 9, 34, 39, 10, 35, 38, 9, 34, 39, 10, 36, + 40, 11, 36, 40, 11, 37, 39, 10, 36, 39, 10, 36, 39, 10, 36, 39, 10, 36, 40, 11, 37, 41, 12, 38, 40, 11, 37, 41, 12, 38, 39, 10, 38, 40, 10, 39, 41, 12, 39, 41, 11, 40, 41, 11, 40, 42, 13, 40, 41, 12, 38, 42, 13, 39, 41, 12, 38, 42, 13, 39, 43, 13, 40, + 42, 13, 39, 44, 14, 40, 43, 15, 41, 43, 17, 43, 42, 17, 43, 45, 21, 45, 46, 22, 46, 48, 27, 50, 49, 29, 51, 52, 34, 55, 54, 40, 60, 55, 44, 64, 60, 49, 69, 62, 53, 72, 65, 59, 76, 65, 61, 77, 69, 67, 83, 74, 73, 89, 78, 80, 95, 81, 86, 100, 84, 92, 105, + 90, 98, 111, 99, 109, 122, 103, 114, 128, 110, 121, 135, 110, 121, 135, 113, 124, 138, 114, 129, 142, 115, 130, 146, 117, 132, 148, 116, 131, 149, 116, 131, 150, 118, 134, 153, 115, 132, 153, 113, 131, 152, 115, 132, 153, 112, 129, 150, 111, 128, 150, 109, 126, 148, 107, 125, 146, 106, 124, 145, 106, 123, 144, + 103, 120, 142, 101, 115, 138, 98, 112, 135, 95, 109, 131, 92, 106, 129, 90, 103, 125, 87, 101, 123, 88, 99, 118, 86, 97, 117, 85, 96, 115, 86, 96, 115, 86, 95, 114, 81, 92, 110, 82, 91, 111, 80, 89, 109, 77, 86, 105, 72, 83, 105, 71, 82, 104, 68, 78, 102, 67, 76, 102, 67, 76, 104, + 67, 75, 104, 67, 75, 104, 67, 75, 103, 66, 76, 103, 64, 73, 100, 63, 73, 98, 62, 69, 94, 58, 64, 89, 57, 62, 87, 54, 60, 83, 53, 57, 81, 50, 56, 76, 50, 53, 71, 48, 49, 64, 45, 45, 58, 46, 45, 55, 39, 38, 46, 35, 34, 38, 36, 33, 38, 30, 24, 29, 31, 24, 28, + 31, 24, 27, 32, 23, 28, 34, 25, 31, 34, 27, 34, 39, 28, 36, 40, 29, 37, 41, 30, 38, 42, 31, 40, 42, 31, 41, 43, 33, 43, 42, 32, 42, 43, 34, 45, 45, 38, 50, 44, 38, 52, 48, 46, 62, 55, 55, 72, 61, 63, 81, 69, 75, 94, 78, 84, 103, 90, 96, 114, 96, 102, 119, + 102, 106, 124, 109, 113, 132, 112, 116, 136, 114, 116, 136, 116, 116, 135, 117, 117, 134, 120, 117, 132, 121, 116, 128, 123, 115, 128, 123, 113, 125, 124, 112, 124, 120, 107, 119, 116, 101, 113, 110, 92, 106, 104, 87, 101, 98, 80, 91, 94, 76, 88, 91, 74, 85, 95, 79, 90, 98, 85, 96, 104, 93, 105, + 57, 15, 54, 58, 15, 55, 59, 15, 55, 59, 15, 54, 60, 16, 55, 60, 15, 54, 59, 15, 54, 61, 18, 56, 61, 17, 56, 59, 14, 53, 62, 18, 56, 62, 16, 56, 62, 17, 56, 61, 16, 54, 63, 18, 56, 64, 20, 57, 63, 18, 57, 63, 18, 57, 64, 19, 58, 65, 20, 58, 66, 17, 59, + 66, 18, 60, 67, 19, 61, 67, 19, 61, 68, 20, 61, 66, 18, 60, 68, 21, 60, 68, 21, 60, 69, 22, 61, 69, 21, 62, 70, 23, 63, 70, 22, 63, 72, 23, 65, 72, 22, 64, 72, 22, 65, 73, 24, 66, 73, 23, 65, 75, 24, 68, 74, 24, 67, 77, 26, 69, 76, 25, 69, 76, 24, 69, + 78, 27, 72, 79, 25, 72, 79, 25, 72, 81, 26, 73, 81, 27, 74, 81, 27, 74, 81, 27, 74, 81, 26, 75, 82, 27, 76, 85, 30, 78, 84, 29, 78, 85, 29, 78, 85, 30, 79, 85, 29, 79, 87, 30, 80, 85, 28, 79, 87, 29, 81, 88, 30, 83, 88, 28, 82, 88, 30, 84, 89, 29, 83, + 90, 31, 85, 90, 31, 85, 91, 30, 85, 92, 32, 86, 92, 31, 85, 92, 32, 86, 91, 31, 85, 93, 31, 85, 93, 34, 87, 97, 41, 90, 96, 41, 90, 94, 41, 89, 87, 30, 82, 86, 30, 80, 86, 30, 79, 85, 29, 77, 85, 31, 78, 80, 25, 73, 80, 27, 74, 78, 30, 74, 79, 35, 77, + 82, 42, 79, 84, 49, 82, 89, 65, 94, 96, 79, 104, 102, 89, 110, 98, 85, 106, 84, 68, 89, 69, 45, 69, 62, 31, 58, 62, 30, 59, 63, 32, 61, 61, 31, 60, 58, 31, 59, 56, 30, 56, 51, 24, 52, 51, 23, 48, 49, 19, 46, 46, 16, 40, 41, 11, 37, 41, 11, 36, 41, 11, 36, + 40, 11, 37, 40, 11, 37, 39, 10, 36, 40, 11, 37, 39, 10, 36, 40, 11, 36, 39, 10, 35, 39, 10, 35, 38, 9, 34, 38, 8, 34, 38, 9, 34, 38, 9, 34, 38, 9, 34, 37, 8, 33, 37, 8, 33, 37, 8, 33, 37, 8, 33, 36, 7, 32, 37, 8, 34, 38, 9, 35, 34, 9, 33, + 35, 9, 33, 35, 9, 33, 35, 8, 32, 36, 9, 34, 37, 8, 33, 36, 8, 33, 35, 9, 33, 35, 9, 33, 36, 10, 34, 35, 9, 33, 36, 10, 34, 36, 7, 33, 36, 10, 34, 36, 10, 35, 38, 10, 35, 36, 9, 34, 38, 9, 34, 39, 10, 35, 38, 9, 34, 39, 10, 35, 38, 9, 34, + 40, 11, 37, 40, 11, 37, 39, 10, 36, 40, 11, 37, 39, 10, 36, 40, 11, 37, 40, 11, 36, 38, 9, 36, 40, 11, 37, 41, 12, 38, 40, 11, 37, 41, 12, 39, 40, 11, 38, 41, 11, 39, 42, 12, 40, 41, 13, 39, 40, 12, 38, 42, 13, 39, 43, 14, 40, 42, 14, 40, 40, 13, 39, + 40, 14, 40, 41, 14, 40, 41, 16, 42, 42, 17, 43, 43, 18, 44, 45, 21, 45, 46, 24, 48, 49, 29, 50, 50, 33, 54, 53, 37, 56, 56, 42, 63, 58, 46, 66, 61, 52, 69, 63, 55, 72, 65, 59, 76, 69, 65, 82, 69, 67, 83, 74, 74, 89, 79, 81, 96, 81, 87, 100, 86, 94, 107, + 91, 100, 113, 98, 107, 121, 101, 113, 127, 110, 121, 135, 112, 122, 136, 110, 123, 137, 112, 126, 141, 115, 130, 146, 116, 131, 147, 117, 132, 150, 116, 132, 149, 116, 132, 151, 116, 133, 154, 114, 131, 152, 112, 130, 151, 112, 129, 150, 110, 126, 148, 109, 126, 147, 105, 123, 144, 104, 122, 143, 103, 121, 142, + 102, 119, 140, 99, 114, 137, 97, 111, 134, 95, 109, 132, 92, 106, 128, 90, 103, 125, 86, 99, 121, 88, 99, 119, 86, 97, 117, 85, 97, 115, 86, 96, 114, 84, 94, 112, 82, 92, 111, 80, 89, 109, 79, 88, 108, 77, 86, 106, 74, 83, 105, 71, 81, 104, 68, 78, 103, 67, 76, 103, 67, 75, 104, + 68, 76, 105, 68, 76, 105, 67, 75, 104, 67, 76, 103, 65, 74, 101, 64, 73, 99, 63, 70, 97, 62, 68, 93, 57, 62, 87, 56, 60, 84, 54, 59, 80, 50, 56, 75, 49, 53, 71, 48, 50, 65, 46, 46, 59, 45, 44, 55, 41, 40, 49, 37, 35, 41, 34, 31, 35, 32, 27, 31, 31, 24, 27, + 30, 21, 24, 31, 21, 27, 33, 23, 28, 35, 25, 31, 37, 26, 34, 40, 29, 37, 40, 29, 37, 41, 30, 39, 39, 30, 38, 41, 32, 41, 41, 33, 41, 41, 33, 43, 42, 37, 48, 44, 39, 55, 48, 46, 62, 54, 54, 70, 62, 64, 80, 71, 75, 93, 82, 86, 105, 89, 96, 113, 98, 103, 121, + 104, 109, 129, 110, 113, 134, 111, 114, 135, 118, 121, 142, 119, 119, 139, 120, 119, 138, 122, 120, 136, 124, 118, 133, 124, 117, 130, 123, 114, 126, 125, 115, 127, 121, 108, 120, 117, 103, 114, 110, 95, 106, 105, 89, 100, 97, 80, 92, 91, 74, 85, 91, 74, 85, 93, 78, 89, 97, 84, 95, 104, 95, 105, + 56, 14, 52, 57, 14, 53, 57, 13, 53, 58, 14, 53, 57, 13, 52, 60, 16, 55, 60, 15, 54, 59, 15, 54, 60, 16, 54, 62, 17, 56, 62, 17, 55, 60, 14, 54, 61, 16, 55, 62, 16, 55, 63, 18, 55, 63, 18, 55, 61, 17, 55, 63, 18, 57, 63, 17, 57, 65, 18, 58, 65, 18, 58, + 67, 19, 61, 66, 18, 60, 65, 18, 59, 68, 20, 62, 66, 18, 60, 66, 18, 60, 69, 22, 62, 69, 21, 61, 68, 20, 61, 69, 21, 62, 71, 22, 64, 70, 23, 63, 70, 22, 64, 72, 23, 65, 72, 23, 65, 74, 23, 65, 75, 25, 66, 74, 23, 67, 75, 24, 68, 75, 24, 68, 77, 26, 70, + 76, 22, 69, 78, 24, 71, 78, 23, 71, 81, 27, 74, 80, 26, 73, 83, 29, 76, 82, 27, 75, 82, 26, 75, 83, 27, 76, 84, 28, 77, 83, 27, 76, 84, 28, 78, 85, 30, 78, 85, 28, 79, 85, 28, 79, 85, 28, 79, 85, 28, 79, 88, 30, 81, 88, 28, 81, 89, 30, 83, 89, 32, 84, + 89, 29, 83, 90, 30, 85, 90, 30, 84, 92, 31, 85, 91, 30, 85, 92, 31, 85, 93, 33, 87, 92, 32, 85, 92, 32, 86, 94, 36, 88, 94, 38, 89, 94, 40, 89, 92, 37, 86, 86, 31, 79, 84, 30, 77, 84, 29, 76, 82, 29, 76, 81, 28, 75, 79, 28, 74, 77, 29, 73, 78, 35, 75, + 80, 41, 77, 86, 54, 84, 94, 74, 101, 104, 94, 116, 120, 118, 138, 119, 117, 136, 103, 100, 118, 78, 70, 90, 67, 47, 70, 60, 34, 61, 58, 29, 58, 57, 29, 58, 61, 35, 64, 61, 36, 63, 60, 35, 61, 55, 29, 55, 50, 23, 47, 45, 16, 40, 42, 12, 37, 41, 11, 36, 41, 12, 37, + 39, 10, 36, 40, 11, 37, 40, 11, 37, 38, 9, 35, 38, 9, 34, 39, 10, 35, 36, 8, 33, 37, 10, 35, 37, 10, 34, 36, 8, 33, 36, 7, 33, 37, 8, 33, 34, 9, 33, 36, 9, 33, 35, 8, 31, 35, 8, 33, 36, 9, 33, 35, 9, 33, 36, 7, 32, 36, 8, 33, 36, 8, 33, + 35, 8, 32, 35, 8, 32, 37, 8, 33, 37, 8, 33, 37, 8, 33, 37, 9, 33, 35, 9, 33, 36, 10, 34, 34, 8, 32, 36, 10, 34, 35, 9, 33, 36, 8, 33, 37, 10, 35, 36, 10, 35, 36, 8, 33, 37, 9, 33, 38, 10, 34, 37, 9, 34, 39, 10, 35, 37, 8, 33, 38, 11, 35, + 37, 9, 35, 38, 9, 34, 39, 10, 36, 39, 10, 36, 40, 11, 37, 39, 10, 36, 40, 11, 37, 39, 10, 36, 40, 10, 36, 41, 12, 38, 39, 10, 36, 39, 10, 36, 41, 12, 38, 41, 12, 38, 39, 10, 36, 41, 13, 39, 42, 13, 39, 41, 13, 39, 40, 12, 38, 41, 12, 38, 42, 15, 41, + 41, 14, 40, 40, 14, 40, 43, 18, 44, 43, 19, 43, 43, 19, 44, 43, 21, 45, 48, 27, 50, 49, 31, 51, 50, 33, 54, 55, 39, 59, 58, 45, 65, 61, 50, 70, 61, 53, 69, 65, 57, 74, 64, 58, 75, 69, 65, 81, 71, 69, 85, 74, 75, 90, 77, 82, 95, 82, 88, 101, 87, 95, 108, + 92, 101, 114, 98, 107, 121, 103, 115, 129, 110, 121, 135, 111, 122, 136, 111, 124, 138, 114, 130, 144, 114, 129, 145, 117, 131, 149, 116, 132, 149, 116, 131, 150, 115, 132, 151, 115, 132, 151, 113, 130, 151, 111, 128, 149, 110, 127, 148, 109, 126, 147, 106, 124, 146, 103, 121, 143, 103, 122, 143, 103, 120, 141, + 101, 118, 139, 100, 114, 137, 97, 111, 133, 94, 108, 130, 92, 106, 128, 90, 103, 125, 85, 99, 119, 87, 98, 118, 86, 97, 117, 84, 96, 114, 86, 96, 114, 84, 94, 112, 82, 91, 110, 79, 88, 108, 79, 88, 108, 76, 85, 105, 73, 81, 104, 70, 80, 103, 69, 78, 103, 66, 75, 102, 68, 75, 105, + 68, 76, 105, 69, 77, 106, 68, 76, 105, 67, 76, 103, 68, 77, 104, 66, 75, 102, 63, 71, 98, 61, 67, 92, 59, 64, 89, 55, 60, 83, 55, 59, 80, 53, 57, 76, 49, 53, 71, 52, 54, 68, 45, 45, 58, 45, 46, 56, 40, 39, 49, 35, 33, 39, 36, 32, 37, 32, 27, 31, 29, 23, 25, + 29, 21, 22, 29, 21, 22, 29, 21, 22, 32, 23, 26, 35, 25, 32, 37, 26, 33, 39, 28, 36, 38, 30, 38, 39, 31, 39, 39, 31, 38, 39, 32, 39, 40, 32, 42, 42, 37, 48, 43, 40, 54, 46, 45, 61, 54, 54, 70, 62, 64, 81, 69, 72, 90, 81, 85, 103, 91, 98, 115, 98, 104, 123, + 105, 111, 130, 111, 115, 136, 114, 119, 140, 116, 120, 140, 119, 120, 140, 122, 121, 139, 125, 124, 140, 126, 121, 137, 124, 117, 132, 126, 116, 129, 124, 114, 126, 123, 110, 122, 117, 103, 114, 112, 96, 107, 105, 89, 100, 97, 81, 92, 93, 76, 87, 92, 75, 86, 94, 79, 90, 96, 84, 95, 103, 93, 103, + 57, 17, 54, 58, 15, 53, 57, 14, 53, 58, 14, 54, 59, 15, 54, 60, 15, 54, 58, 14, 53, 60, 16, 55, 61, 16, 55, 61, 16, 54, 61, 16, 55, 62, 17, 56, 62, 17, 56, 63, 16, 55, 63, 17, 55, 63, 17, 56, 63, 17, 56, 63, 17, 57, 64, 18, 58, 65, 18, 58, 65, 17, 58, + 66, 18, 59, 66, 17, 59, 66, 17, 60, 67, 19, 60, 67, 19, 61, 67, 20, 60, 69, 21, 61, 68, 20, 61, 70, 21, 63, 69, 22, 62, 71, 23, 63, 70, 22, 64, 72, 25, 66, 70, 22, 64, 72, 23, 65, 73, 23, 66, 74, 24, 67, 75, 24, 68, 75, 24, 68, 76, 25, 69, 77, 26, 70, + 77, 24, 69, 79, 26, 71, 79, 26, 72, 79, 24, 71, 81, 27, 74, 81, 25, 73, 81, 26, 74, 83, 27, 75, 82, 27, 74, 83, 27, 76, 85, 30, 77, 83, 27, 76, 84, 28, 77, 85, 28, 78, 86, 30, 79, 86, 29, 80, 86, 29, 80, 87, 30, 81, 88, 30, 81, 88, 28, 82, 90, 30, 82, + 90, 32, 83, 90, 30, 83, 92, 32, 85, 92, 32, 85, 93, 33, 85, 93, 34, 85, 92, 31, 85, 93, 32, 86, 91, 30, 84, 91, 33, 85, 93, 36, 87, 96, 41, 90, 94, 40, 88, 89, 35, 82, 83, 29, 76, 82, 30, 74, 81, 29, 75, 79, 27, 73, 78, 29, 74, 78, 31, 74, 78, 34, 74, + 80, 42, 78, 83, 52, 84, 92, 74, 100, 112, 108, 130, 149, 148, 163, 154, 156, 169, 134, 140, 156, 102, 108, 126, 78, 75, 94, 64, 48, 68, 56, 34, 58, 54, 29, 57, 61, 37, 64, 65, 43, 68, 63, 41, 66, 62, 39, 64, 56, 33, 55, 48, 23, 45, 44, 17, 40, 41, 13, 38, 41, 12, 38, + 39, 10, 36, 40, 11, 37, 38, 9, 35, 37, 8, 34, 38, 9, 34, 38, 11, 35, 37, 11, 35, 37, 11, 35, 37, 9, 34, 37, 8, 34, 36, 9, 33, 35, 9, 33, 35, 9, 33, 35, 9, 32, 35, 9, 32, 35, 9, 32, 34, 8, 32, 35, 9, 33, 35, 9, 33, 37, 9, 34, 36, 8, 33, + 37, 8, 33, 38, 9, 34, 37, 8, 33, 37, 8, 33, 37, 8, 33, 35, 9, 33, 36, 10, 34, 35, 9, 33, 36, 10, 34, 35, 9, 33, 36, 10, 34, 36, 10, 34, 37, 11, 34, 37, 10, 35, 36, 10, 34, 36, 10, 34, 36, 10, 34, 36, 10, 34, 38, 9, 34, 39, 10, 35, 40, 11, 36, + 39, 10, 35, 39, 10, 35, 39, 10, 36, 38, 9, 35, 39, 10, 36, 40, 11, 37, 40, 11, 37, 39, 11, 37, 39, 12, 38, 38, 11, 37, 39, 11, 37, 41, 12, 38, 42, 13, 39, 41, 12, 38, 41, 12, 38, 40, 12, 38, 40, 12, 38, 40, 13, 39, 40, 13, 39, 42, 14, 40, 41, 14, 40, + 42, 14, 40, 39, 15, 39, 42, 18, 42, 44, 19, 44, 43, 20, 44, 45, 23, 47, 48, 28, 50, 51, 34, 55, 55, 38, 59, 56, 42, 62, 60, 48, 67, 61, 50, 70, 62, 53, 73, 64, 56, 75, 67, 61, 79, 69, 65, 81, 71, 69, 85, 75, 77, 91, 79, 84, 97, 82, 89, 101, 88, 95, 109, + 93, 102, 115, 99, 108, 122, 103, 114, 128, 109, 120, 134, 109, 120, 134, 112, 125, 139, 112, 127, 143, 115, 129, 146, 113, 130, 147, 116, 132, 148, 115, 132, 151, 115, 132, 151, 113, 130, 149, 113, 130, 150, 112, 129, 150, 107, 125, 148, 108, 124, 147, 106, 123, 145, 104, 122, 145, 103, 121, 144, 102, 118, 141, + 101, 116, 139, 100, 114, 137, 96, 110, 133, 94, 108, 131, 91, 104, 127, 89, 103, 124, 90, 101, 121, 85, 96, 116, 86, 96, 116, 85, 96, 115, 85, 95, 113, 84, 93, 112, 81, 90, 109, 80, 89, 109, 79, 88, 108, 75, 85, 105, 74, 83, 105, 68, 80, 102, 68, 78, 102, 67, 76, 103, 68, 77, 104, + 69, 77, 106, 68, 76, 105, 68, 77, 105, 68, 77, 104, 69, 78, 105, 65, 74, 101, 66, 73, 100, 61, 68, 95, 60, 65, 90, 57, 61, 85, 55, 59, 81, 55, 59, 78, 52, 55, 74, 51, 52, 68, 47, 48, 59, 44, 44, 54, 42, 41, 50, 38, 36, 42, 34, 33, 37, 32, 28, 32, 27, 22, 24, + 29, 23, 24, 28, 20, 21, 28, 19, 20, 31, 20, 22, 33, 24, 25, 35, 26, 30, 38, 28, 34, 38, 28, 36, 38, 30, 37, 38, 30, 38, 38, 31, 39, 40, 33, 43, 40, 36, 46, 40, 39, 53, 46, 44, 62, 54, 54, 72, 63, 63, 81, 71, 73, 90, 85, 89, 105, 90, 97, 114, 99, 106, 124, + 103, 108, 128, 113, 116, 137, 116, 118, 139, 118, 121, 143, 123, 124, 145, 124, 123, 143, 125, 122, 142, 125, 121, 137, 127, 120, 135, 126, 116, 131, 124, 114, 127, 124, 112, 124, 119, 105, 116, 111, 96, 109, 106, 90, 100, 98, 82, 93, 95, 78, 89, 91, 74, 85, 92, 78, 89, 95, 84, 94, 102, 94, 104, + 56, 17, 53, 57, 16, 54, 57, 13, 52, 58, 14, 53, 58, 13, 52, 58, 15, 54, 59, 14, 53, 60, 15, 54, 61, 16, 54, 60, 15, 54, 60, 15, 54, 60, 15, 55, 62, 16, 56, 62, 16, 55, 63, 18, 56, 63, 17, 56, 63, 18, 57, 63, 17, 57, 64, 17, 57, 65, 18, 59, 66, 19, 59, + 65, 17, 59, 66, 17, 59, 66, 18, 60, 66, 18, 60, 67, 19, 60, 67, 21, 61, 68, 21, 60, 67, 19, 61, 68, 20, 61, 70, 22, 62, 69, 21, 62, 70, 22, 64, 69, 21, 63, 70, 22, 65, 72, 24, 66, 73, 22, 66, 74, 23, 67, 75, 24, 68, 75, 24, 68, 75, 24, 68, 75, 24, 68, + 76, 23, 69, 79, 25, 70, 79, 25, 71, 80, 25, 72, 81, 25, 74, 82, 26, 75, 82, 26, 75, 82, 27, 75, 83, 28, 76, 82, 26, 75, 83, 28, 76, 83, 27, 75, 85, 29, 77, 85, 30, 78, 84, 27, 78, 86, 29, 80, 86, 29, 81, 86, 29, 80, 88, 30, 81, 89, 29, 82, 89, 30, 81, + 90, 31, 83, 89, 31, 83, 91, 33, 84, 90, 31, 82, 90, 30, 81, 92, 33, 84, 93, 31, 85, 92, 32, 85, 90, 29, 84, 90, 31, 83, 91, 34, 85, 95, 39, 89, 96, 43, 90, 91, 39, 84, 85, 34, 78, 84, 34, 78, 84, 34, 77, 82, 36, 78, 82, 36, 78, 83, 38, 80, 82, 40, 79, + 81, 44, 79, 84, 54, 85, 89, 71, 98, 114, 111, 133, 154, 154, 168, 174, 175, 186, 166, 171, 181, 140, 149, 163, 107, 114, 131, 79, 78, 96, 58, 48, 68, 52, 33, 53, 57, 35, 58, 68, 47, 72, 72, 52, 75, 70, 50, 73, 63, 43, 64, 56, 34, 56, 47, 25, 46, 40, 15, 39, 40, 13, 38, + 40, 10, 37, 38, 9, 35, 39, 10, 36, 38, 9, 34, 39, 10, 35, 36, 11, 34, 38, 12, 36, 36, 10, 34, 36, 8, 32, 35, 8, 33, 35, 9, 33, 35, 9, 32, 34, 8, 31, 35, 9, 32, 34, 8, 32, 33, 8, 33, 33, 9, 33, 36, 10, 34, 33, 7, 30, 35, 9, 32, 35, 9, 33, + 37, 8, 33, 37, 8, 33, 37, 8, 33, 36, 7, 32, 37, 8, 33, 35, 9, 33, 35, 9, 33, 35, 9, 33, 36, 10, 34, 35, 9, 33, 35, 9, 33, 34, 8, 32, 36, 10, 34, 36, 9, 35, 36, 10, 34, 35, 9, 33, 36, 10, 34, 36, 10, 34, 38, 9, 34, 38, 9, 34, 38, 9, 35, + 40, 10, 35, 38, 10, 35, 39, 10, 35, 40, 11, 36, 39, 10, 36, 39, 10, 36, 39, 11, 37, 37, 10, 36, 39, 12, 38, 38, 11, 37, 40, 13, 39, 38, 11, 37, 38, 12, 38, 40, 11, 37, 39, 11, 37, 39, 12, 38, 40, 13, 39, 39, 12, 38, 41, 14, 40, 40, 13, 39, 39, 12, 38, + 40, 13, 39, 40, 16, 40, 43, 19, 43, 43, 20, 44, 44, 22, 45, 48, 28, 50, 49, 30, 52, 55, 38, 59, 57, 42, 63, 59, 46, 66, 62, 51, 70, 62, 51, 71, 62, 53, 73, 66, 58, 78, 67, 61, 80, 69, 68, 85, 74, 74, 90, 77, 80, 95, 79, 84, 98, 84, 90, 104, 87, 95, 109, + 93, 102, 116, 99, 109, 123, 104, 115, 129, 107, 119, 133, 110, 123, 137, 112, 125, 139, 113, 127, 144, 113, 128, 145, 115, 131, 148, 114, 130, 147, 112, 129, 148, 113, 130, 149, 112, 131, 150, 111, 129, 149, 110, 128, 150, 107, 125, 148, 105, 123, 146, 105, 122, 145, 105, 121, 144, 104, 120, 143, 101, 117, 140, + 101, 115, 138, 98, 112, 135, 96, 110, 133, 94, 108, 131, 90, 103, 127, 89, 102, 124, 88, 99, 119, 87, 97, 117, 85, 95, 115, 87, 96, 116, 83, 93, 113, 82, 92, 112, 79, 88, 109, 79, 88, 108, 79, 88, 108, 75, 84, 105, 74, 82, 105, 68, 80, 102, 68, 78, 102, 65, 75, 102, 68, 76, 104, + 68, 76, 105, 68, 76, 105, 69, 77, 106, 71, 79, 107, 69, 78, 105, 68, 77, 104, 65, 72, 99, 63, 69, 96, 62, 67, 92, 59, 63, 88, 58, 62, 84, 55, 58, 79, 53, 55, 74, 51, 52, 68, 48, 49, 61, 44, 46, 55, 42, 41, 51, 37, 36, 43, 35, 34, 38, 30, 29, 32, 28, 24, 26, + 28, 22, 24, 29, 21, 22, 28, 19, 20, 29, 18, 20, 32, 21, 23, 31, 23, 26, 35, 25, 31, 38, 29, 35, 37, 29, 36, 39, 30, 39, 38, 31, 38, 39, 32, 42, 41, 37, 47, 40, 39, 54, 47, 46, 63, 53, 53, 72, 61, 63, 81, 71, 73, 91, 82, 85, 103, 91, 96, 113, 101, 106, 125, + 107, 112, 132, 114, 117, 138, 116, 119, 140, 121, 124, 145, 123, 124, 145, 127, 125, 145, 128, 126, 145, 129, 124, 142, 129, 120, 137, 127, 117, 134, 127, 117, 129, 125, 113, 125, 120, 107, 119, 112, 98, 109, 104, 90, 101, 98, 83, 94, 91, 75, 86, 92, 77, 88, 91, 78, 89, 97, 86, 96, 103, 94, 104, + 57, 18, 55, 57, 17, 55, 60, 16, 55, 59, 16, 54, 60, 16, 55, 59, 15, 54, 61, 17, 56, 59, 15, 54, 60, 16, 54, 61, 16, 54, 62, 17, 56, 61, 16, 56, 61, 17, 55, 62, 17, 56, 62, 16, 55, 63, 18, 56, 62, 17, 56, 63, 18, 57, 65, 17, 58, 65, 17, 58, 66, 19, 58, + 66, 18, 59, 65, 16, 59, 66, 18, 60, 67, 18, 60, 66, 18, 61, 68, 19, 60, 69, 22, 61, 68, 20, 62, 68, 21, 61, 69, 21, 63, 70, 22, 63, 69, 21, 63, 72, 24, 65, 71, 24, 63, 71, 22, 65, 74, 24, 66, 73, 24, 67, 75, 24, 67, 76, 25, 68, 76, 25, 68, 76, 24, 68, + 78, 24, 71, 79, 26, 70, 79, 25, 72, 80, 25, 72, 80, 24, 73, 82, 26, 75, 81, 26, 75, 82, 27, 76, 82, 27, 76, 83, 28, 77, 85, 29, 77, 84, 28, 77, 85, 30, 77, 86, 30, 80, 87, 31, 80, 86, 30, 80, 87, 31, 81, 87, 30, 81, 89, 30, 81, 88, 29, 80, 91, 32, 83, + 91, 32, 83, 91, 32, 83, 90, 31, 82, 92, 33, 84, 92, 34, 84, 92, 31, 82, 92, 31, 86, 91, 31, 85, 91, 33, 84, 90, 33, 84, 89, 32, 82, 92, 37, 86, 96, 44, 91, 94, 44, 88, 89, 41, 85, 86, 38, 82, 86, 40, 82, 86, 41, 83, 84, 42, 83, 84, 44, 82, 84, 48, 84, + 84, 52, 86, 84, 57, 87, 87, 68, 95, 101, 97, 119, 145, 146, 162, 173, 177, 186, 180, 185, 194, 172, 177, 187, 149, 156, 167, 118, 125, 139, 89, 92, 108, 62, 60, 77, 58, 44, 62, 64, 46, 67, 79, 62, 85, 79, 62, 84, 72, 56, 75, 60, 41, 63, 55, 34, 56, 48, 25, 47, 41, 15, 39, + 39, 12, 36, 39, 12, 37, 39, 9, 35, 38, 9, 34, 36, 9, 33, 38, 12, 36, 36, 10, 34, 35, 9, 32, 35, 9, 32, 35, 9, 32, 35, 9, 32, 34, 8, 31, 34, 8, 32, 34, 8, 31, 32, 9, 32, 33, 9, 33, 32, 8, 32, 34, 10, 32, 34, 8, 31, 35, 9, 32, 35, 9, 32, + 36, 10, 34, 36, 11, 35, 37, 7, 32, 36, 7, 32, 36, 9, 33, 35, 9, 33, 36, 10, 34, 34, 8, 32, 34, 8, 32, 35, 9, 33, 36, 10, 34, 36, 10, 34, 35, 9, 33, 36, 10, 34, 36, 10, 34, 36, 10, 34, 37, 11, 35, 37, 10, 34, 38, 11, 36, 36, 9, 34, 38, 10, 35, + 38, 10, 34, 38, 11, 35, 39, 10, 35, 40, 11, 36, 40, 11, 37, 40, 11, 37, 37, 10, 36, 39, 12, 38, 39, 12, 38, 38, 11, 38, 38, 11, 37, 37, 10, 36, 39, 12, 38, 39, 12, 38, 39, 12, 38, 41, 14, 40, 42, 15, 41, 40, 13, 39, 40, 13, 39, 40, 14, 39, 40, 14, 39, + 42, 18, 42, 44, 20, 44, 45, 21, 44, 45, 24, 46, 48, 27, 49, 50, 31, 52, 53, 36, 57, 55, 40, 61, 61, 46, 67, 62, 49, 69, 61, 50, 70, 62, 51, 71, 63, 54, 74, 67, 59, 79, 69, 64, 83, 72, 70, 88, 74, 74, 90, 75, 78, 93, 80, 85, 100, 84, 91, 106, 90, 99, 113, + 94, 105, 119, 98, 109, 123, 103, 116, 130, 108, 121, 135, 109, 122, 136, 114, 127, 142, 113, 127, 144, 116, 130, 148, 115, 131, 148, 114, 131, 147, 114, 130, 149, 114, 133, 152, 112, 130, 149, 112, 129, 149, 109, 128, 149, 106, 124, 147, 105, 123, 146, 104, 119, 143, 105, 121, 144, 103, 119, 142, 102, 118, 141, + 100, 114, 137, 97, 111, 134, 97, 111, 134, 93, 106, 130, 92, 105, 127, 89, 102, 124, 89, 100, 120, 86, 95, 115, 87, 96, 116, 86, 95, 115, 84, 93, 113, 84, 92, 112, 81, 90, 110, 80, 88, 108, 78, 87, 107, 76, 85, 105, 70, 80, 103, 68, 79, 101, 67, 77, 101, 67, 77, 104, 69, 78, 105, + 69, 77, 106, 69, 77, 106, 71, 79, 108, 71, 80, 108, 71, 79, 106, 67, 76, 103, 66, 73, 100, 65, 71, 96, 62, 67, 92, 60, 65, 89, 56, 60, 83, 57, 60, 81, 55, 58, 77, 52, 55, 72, 48, 49, 63, 47, 48, 58, 41, 41, 50, 37, 36, 44, 33, 32, 36, 31, 30, 34, 26, 24, 26, + 27, 21, 23, 26, 19, 21, 28, 19, 21, 28, 18, 20, 32, 21, 23, 31, 22, 24, 33, 25, 28, 35, 28, 34, 37, 29, 36, 38, 31, 38, 39, 31, 40, 39, 33, 43, 39, 35, 47, 41, 39, 54, 46, 45, 63, 53, 53, 73, 62, 63, 83, 73, 74, 94, 83, 85, 104, 92, 98, 116, 103, 107, 126, + 109, 112, 133, 117, 120, 141, 119, 122, 143, 123, 126, 148, 125, 128, 148, 129, 128, 149, 129, 128, 147, 130, 125, 143, 129, 122, 140, 129, 120, 137, 127, 118, 130, 124, 113, 125, 121, 108, 119, 112, 100, 112, 106, 92, 103, 96, 82, 93, 94, 79, 90, 89, 76, 87, 92, 79, 90, 94, 83, 93, 100, 92, 102, + 57, 15, 53, 56, 14, 52, 59, 15, 53, 58, 14, 53, 59, 15, 54, 59, 15, 54, 59, 15, 54, 59, 15, 54, 58, 14, 52, 60, 17, 54, 60, 17, 55, 60, 16, 55, 61, 16, 55, 62, 16, 54, 61, 16, 55, 62, 15, 55, 62, 16, 56, 63, 17, 56, 65, 17, 57, 64, 16, 56, 64, 17, 58, + 65, 18, 58, 66, 18, 59, 65, 16, 59, 66, 18, 60, 66, 18, 60, 67, 19, 61, 68, 21, 62, 68, 19, 61, 69, 22, 62, 68, 20, 62, 69, 22, 63, 71, 23, 64, 70, 22, 64, 70, 21, 63, 71, 21, 63, 73, 24, 66, 73, 22, 66, 74, 24, 67, 75, 24, 68, 76, 23, 68, 77, 25, 69, + 77, 23, 69, 78, 24, 70, 79, 26, 72, 81, 27, 74, 82, 27, 75, 81, 26, 74, 81, 26, 75, 83, 28, 76, 83, 28, 77, 83, 27, 76, 83, 27, 77, 85, 29, 78, 86, 30, 79, 84, 27, 77, 85, 30, 80, 87, 30, 81, 86, 28, 79, 87, 29, 80, 89, 31, 82, 89, 29, 81, 90, 29, 82, + 90, 31, 83, 90, 32, 83, 91, 32, 83, 91, 33, 83, 90, 30, 83, 92, 31, 83, 91, 30, 83, 89, 30, 83, 90, 31, 83, 89, 31, 82, 90, 33, 84, 88, 31, 81, 95, 41, 88, 94, 45, 89, 90, 44, 87, 87, 42, 85, 86, 40, 83, 84, 41, 82, 85, 45, 85, 81, 45, 82, 82, 50, 85, + 83, 54, 87, 83, 56, 86, 83, 63, 91, 91, 83, 105, 119, 122, 139, 158, 164, 176, 178, 184, 192, 183, 189, 196, 174, 181, 190, 155, 163, 174, 126, 135, 148, 99, 104, 119, 76, 76, 93, 62, 58, 74, 74, 64, 85, 82, 73, 93, 78, 67, 86, 68, 56, 77, 63, 48, 67, 55, 36, 57, 45, 23, 46, + 40, 15, 39, 36, 11, 35, 37, 11, 35, 35, 9, 33, 37, 11, 35, 38, 12, 35, 35, 9, 33, 35, 9, 32, 34, 8, 31, 34, 8, 31, 36, 10, 33, 35, 9, 32, 35, 9, 33, 35, 9, 33, 36, 9, 33, 32, 8, 32, 33, 10, 34, 34, 9, 33, 35, 9, 32, 35, 9, 32, 36, 10, 33, + 34, 8, 32, 35, 9, 33, 35, 8, 32, 36, 8, 33, 35, 8, 32, 36, 10, 34, 35, 9, 33, 36, 10, 34, 34, 8, 32, 36, 10, 34, 36, 10, 34, 36, 10, 34, 36, 10, 34, 37, 11, 35, 36, 10, 34, 36, 9, 33, 35, 9, 33, 37, 10, 35, 37, 10, 36, 37, 10, 36, 37, 10, 36, + 37, 11, 36, 38, 10, 35, 40, 10, 35, 39, 10, 36, 37, 11, 36, 38, 11, 37, 37, 10, 36, 37, 10, 36, 38, 11, 38, 38, 11, 38, 39, 12, 38, 40, 13, 39, 39, 12, 38, 38, 11, 37, 40, 13, 39, 38, 10, 37, 39, 12, 37, 40, 14, 39, 39, 13, 38, 41, 15, 40, 43, 17, 41, + 44, 20, 44, 45, 21, 45, 47, 25, 47, 49, 28, 50, 49, 29, 51, 51, 34, 55, 58, 42, 63, 62, 47, 68, 63, 51, 71, 62, 50, 70, 61, 50, 70, 63, 52, 72, 65, 56, 76, 67, 60, 79, 70, 66, 85, 71, 70, 89, 75, 75, 91, 79, 82, 97, 83, 89, 104, 86, 92, 108, 91, 100, 114, + 92, 104, 118, 100, 111, 125, 105, 118, 132, 107, 120, 134, 111, 124, 138, 114, 127, 143, 113, 127, 145, 114, 129, 147, 113, 129, 146, 114, 130, 149, 114, 131, 150, 112, 131, 149, 113, 130, 151, 109, 128, 149, 109, 126, 147, 105, 124, 145, 105, 122, 143, 103, 120, 141, 101, 118, 140, 102, 118, 140, 102, 119, 140, + 99, 114, 136, 97, 111, 134, 95, 109, 132, 93, 105, 129, 91, 104, 126, 89, 102, 123, 86, 98, 118, 84, 94, 114, 87, 96, 116, 84, 93, 113, 82, 91, 111, 82, 92, 110, 79, 89, 108, 79, 88, 108, 77, 86, 106, 76, 85, 105, 73, 81, 104, 70, 78, 102, 67, 76, 101, 66, 76, 103, 67, 77, 104, + 69, 78, 107, 70, 78, 107, 71, 79, 108, 71, 80, 108, 71, 80, 108, 67, 75, 102, 69, 76, 101, 65, 72, 97, 63, 68, 93, 60, 65, 89, 58, 62, 85, 58, 61, 82, 56, 59, 78, 54, 56, 73, 50, 51, 65, 47, 48, 59, 42, 44, 52, 39, 38, 46, 32, 33, 37, 29, 30, 32, 28, 26, 28, + 27, 22, 25, 27, 19, 21, 27, 19, 20, 28, 19, 21, 27, 20, 20, 30, 21, 24, 30, 22, 24, 33, 26, 30, 34, 27, 32, 35, 29, 35, 36, 30, 37, 36, 32, 40, 39, 36, 48, 42, 40, 56, 46, 45, 63, 52, 52, 71, 63, 64, 84, 74, 75, 95, 82, 84, 104, 94, 98, 117, 104, 107, 127, + 110, 113, 135, 116, 119, 141, 121, 123, 147, 123, 125, 149, 127, 128, 152, 129, 130, 151, 130, 129, 149, 130, 126, 145, 132, 124, 142, 132, 123, 139, 129, 119, 131, 125, 115, 127, 121, 110, 122, 114, 102, 114, 105, 94, 104, 96, 84, 94, 92, 78, 89, 90, 76, 87, 91, 78, 89, 93, 82, 92, 101, 93, 103, + 58, 16, 53, 58, 15, 52, 59, 16, 53, 58, 14, 52, 59, 16, 54, 58, 15, 53, 59, 15, 53, 58, 15, 53, 59, 15, 53, 61, 18, 55, 60, 17, 55, 60, 16, 55, 61, 17, 56, 61, 16, 55, 61, 15, 54, 64, 18, 57, 63, 18, 56, 64, 18, 56, 62, 15, 57, 64, 16, 58, 64, 17, 56, + 65, 17, 58, 66, 18, 59, 66, 18, 60, 65, 18, 59, 66, 17, 60, 66, 18, 60, 67, 18, 61, 67, 20, 61, 68, 21, 61, 69, 21, 62, 70, 23, 63, 69, 21, 63, 70, 23, 63, 71, 24, 64, 72, 24, 66, 72, 24, 66, 74, 24, 66, 74, 23, 67, 75, 23, 67, 75, 24, 68, 76, 24, 68, + 78, 25, 69, 78, 24, 70, 80, 26, 72, 80, 26, 74, 81, 27, 74, 80, 25, 73, 81, 27, 74, 81, 26, 76, 83, 27, 76, 83, 28, 77, 84, 28, 77, 85, 29, 78, 86, 30, 79, 85, 29, 79, 87, 30, 80, 86, 29, 80, 88, 30, 81, 88, 29, 80, 87, 28, 79, 90, 31, 81, 90, 31, 82, + 89, 32, 83, 89, 31, 83, 91, 32, 84, 92, 34, 85, 91, 33, 84, 90, 30, 83, 90, 31, 83, 90, 31, 83, 90, 31, 83, 89, 32, 83, 90, 33, 84, 90, 33, 82, 90, 37, 85, 94, 46, 89, 95, 49, 91, 92, 48, 91, 90, 47, 89, 89, 48, 88, 87, 48, 88, 82, 49, 84, 82, 53, 86, + 84, 55, 86, 84, 58, 88, 81, 61, 87, 82, 70, 92, 95, 93, 112, 128, 137, 152, 164, 172, 182, 182, 188, 195, 183, 189, 196, 175, 183, 192, 163, 172, 181, 146, 155, 166, 123, 129, 141, 99, 102, 117, 87, 88, 105, 86, 84, 103, 84, 82, 100, 77, 74, 93, 71, 61, 79, 65, 50, 68, 53, 34, 55, + 43, 21, 45, 40, 16, 40, 35, 10, 34, 36, 11, 33, 36, 9, 32, 37, 11, 34, 38, 12, 35, 35, 9, 32, 35, 9, 32, 35, 9, 32, 35, 9, 32, 35, 9, 33, 34, 8, 32, 35, 9, 33, 36, 10, 34, 35, 8, 32, 35, 8, 32, 34, 8, 32, 36, 10, 34, 36, 10, 32, 35, 9, 32, + 35, 9, 32, 35, 9, 33, 34, 8, 32, 36, 10, 34, 36, 10, 34, 34, 8, 32, 35, 9, 33, 36, 10, 34, 35, 9, 33, 35, 9, 33, 35, 9, 33, 36, 10, 34, 37, 11, 35, 35, 9, 33, 37, 10, 34, 36, 10, 34, 36, 10, 34, 36, 10, 35, 37, 10, 36, 37, 10, 36, 37, 10, 36, + 36, 9, 35, 36, 10, 35, 37, 12, 35, 39, 11, 36, 38, 12, 36, 37, 11, 35, 39, 12, 38, 39, 12, 38, 39, 11, 38, 38, 11, 37, 38, 11, 37, 38, 11, 37, 40, 13, 39, 40, 13, 39, 38, 10, 37, 39, 12, 38, 40, 14, 38, 39, 13, 37, 41, 15, 39, 45, 19, 43, 43, 19, 42, + 46, 22, 46, 45, 23, 45, 44, 24, 46, 49, 29, 51, 51, 33, 54, 57, 41, 62, 61, 46, 67, 63, 50, 70, 64, 52, 72, 67, 56, 76, 65, 55, 73, 64, 54, 73, 68, 60, 79, 69, 64, 83, 73, 69, 88, 74, 73, 91, 77, 78, 94, 82, 86, 100, 85, 90, 105, 88, 95, 110, 95, 104, 118, + 98, 109, 123, 102, 113, 127, 105, 118, 132, 110, 123, 137, 113, 126, 142, 114, 127, 143, 113, 127, 145, 116, 130, 148, 116, 131, 150, 112, 129, 148, 114, 131, 151, 113, 130, 151, 114, 131, 152, 112, 129, 150, 107, 125, 146, 107, 124, 145, 106, 123, 144, 103, 120, 141, 103, 120, 141, 103, 120, 141, 100, 117, 138, + 99, 113, 136, 98, 111, 135, 95, 109, 132, 93, 104, 128, 89, 101, 125, 89, 102, 124, 86, 97, 118, 86, 96, 116, 89, 98, 118, 84, 93, 113, 84, 95, 112, 81, 91, 109, 77, 88, 107, 79, 88, 108, 78, 87, 107, 73, 82, 103, 72, 80, 103, 69, 77, 101, 68, 77, 101, 66, 76, 103, 67, 77, 104, + 71, 80, 107, 72, 80, 109, 70, 78, 107, 72, 80, 109, 71, 80, 108, 71, 80, 107, 69, 77, 101, 68, 74, 99, 65, 70, 95, 63, 68, 91, 60, 65, 89, 58, 61, 82, 59, 60, 80, 56, 57, 75, 52, 53, 68, 47, 48, 60, 42, 44, 53, 40, 40, 48, 34, 35, 39, 29, 30, 31, 27, 25, 27, + 28, 24, 26, 27, 21, 23, 26, 19, 21, 27, 19, 21, 29, 21, 23, 30, 21, 24, 31, 23, 26, 31, 24, 27, 33, 26, 29, 32, 26, 31, 36, 30, 36, 38, 34, 43, 39, 38, 49, 40, 40, 56, 47, 47, 63, 51, 52, 70, 61, 63, 81, 69, 74, 92, 83, 87, 107, 94, 97, 117, 103, 106, 127, + 110, 113, 135, 119, 121, 145, 122, 124, 148, 125, 127, 151, 126, 128, 152, 130, 131, 154, 131, 130, 150, 132, 127, 147, 131, 125, 143, 132, 124, 139, 130, 120, 132, 126, 116, 128, 120, 110, 122, 114, 104, 116, 105, 94, 104, 96, 85, 95, 93, 80, 91, 89, 75, 86, 91, 80, 90, 95, 84, 94, 99, 90, 100, + 56, 14, 50, 58, 15, 52, 57, 14, 51, 59, 15, 53, 57, 13, 52, 59, 16, 54, 60, 16, 54, 60, 16, 54, 59, 15, 54, 58, 15, 53, 59, 15, 54, 59, 15, 54, 61, 17, 56, 62, 17, 56, 62, 16, 55, 62, 17, 56, 62, 18, 56, 62, 16, 56, 64, 18, 57, 64, 17, 57, 64, 17, 57, + 64, 16, 58, 64, 16, 58, 65, 17, 59, 65, 17, 60, 66, 18, 59, 66, 18, 60, 68, 20, 61, 68, 19, 61, 68, 19, 61, 68, 19, 61, 70, 23, 63, 69, 20, 62, 70, 21, 62, 70, 21, 63, 71, 23, 65, 71, 23, 64, 73, 22, 65, 74, 24, 67, 76, 24, 68, 76, 23, 67, 77, 24, 67, + 77, 25, 68, 79, 25, 71, 78, 25, 71, 78, 24, 72, 81, 26, 73, 80, 26, 73, 81, 27, 73, 82, 26, 75, 82, 26, 75, 83, 28, 77, 83, 27, 76, 85, 29, 77, 85, 29, 78, 86, 29, 79, 85, 28, 79, 86, 29, 80, 89, 30, 81, 89, 30, 81, 89, 29, 81, 89, 29, 81, 89, 31, 81, + 90, 31, 83, 89, 31, 82, 91, 32, 85, 90, 31, 84, 91, 31, 85, 91, 32, 84, 92, 31, 84, 90, 29, 82, 89, 30, 81, 90, 30, 82, 88, 30, 81, 87, 31, 80, 89, 36, 84, 92, 46, 89, 95, 51, 92, 94, 52, 94, 92, 50, 92, 91, 53, 93, 89, 55, 92, 87, 55, 89, 84, 54, 87, + 81, 55, 85, 81, 57, 86, 77, 56, 83, 80, 66, 88, 83, 76, 96, 93, 101, 118, 134, 147, 159, 170, 177, 185, 182, 189, 195, 180, 189, 195, 176, 185, 192, 167, 176, 184, 160, 166, 176, 142, 150, 161, 123, 132, 147, 109, 117, 133, 101, 107, 123, 91, 94, 111, 85, 82, 98, 72, 66, 83, 63, 52, 72, + 50, 34, 55, 46, 27, 48, 40, 18, 40, 32, 10, 32, 37, 15, 37, 40, 17, 40, 39, 14, 38, 38, 11, 35, 35, 11, 35, 34, 10, 33, 35, 10, 33, 34, 10, 33, 36, 10, 34, 34, 8, 32, 36, 10, 34, 34, 7, 33, 35, 9, 34, 35, 8, 34, 36, 9, 34, 36, 10, 34, 36, 10, 33, + 35, 9, 32, 34, 8, 32, 35, 9, 34, 36, 9, 34, 35, 8, 34, 35, 8, 35, 35, 8, 33, 36, 10, 34, 35, 9, 33, 35, 9, 33, 34, 8, 32, 35, 9, 33, 37, 11, 35, 36, 10, 34, 37, 10, 34, 36, 9, 34, 36, 10, 34, 37, 10, 35, 37, 10, 36, 36, 9, 35, 37, 10, 36, + 37, 10, 36, 38, 11, 37, 37, 10, 35, 37, 11, 35, 37, 11, 35, 38, 11, 36, 38, 11, 37, 40, 12, 38, 37, 10, 36, 40, 12, 38, 40, 12, 38, 39, 9, 35, 39, 12, 38, 40, 13, 39, 40, 13, 39, 40, 13, 39, 39, 13, 37, 41, 15, 39, 44, 19, 43, 47, 21, 44, 45, 22, 45, + 50, 27, 49, 47, 26, 48, 48, 27, 49, 49, 30, 51, 55, 36, 57, 59, 42, 63, 58, 44, 65, 64, 52, 72, 67, 55, 75, 69, 58, 78, 72, 61, 81, 70, 61, 81, 67, 61, 80, 70, 65, 85, 75, 72, 91, 75, 74, 92, 80, 81, 96, 83, 87, 101, 87, 92, 106, 91, 98, 113, 97, 106, 120, + 97, 108, 122, 104, 114, 128, 108, 121, 135, 111, 124, 137, 112, 125, 141, 113, 127, 143, 116, 130, 147, 117, 131, 149, 114, 129, 148, 114, 130, 151, 115, 132, 153, 114, 131, 152, 111, 128, 149, 112, 129, 150, 108, 126, 147, 106, 122, 143, 106, 121, 143, 106, 121, 143, 103, 120, 140, 101, 118, 137, 101, 115, 137, + 100, 114, 136, 97, 111, 134, 96, 110, 133, 93, 104, 129, 90, 103, 126, 88, 101, 123, 86, 98, 120, 91, 101, 120, 86, 95, 115, 84, 93, 113, 82, 92, 110, 80, 90, 108, 78, 88, 107, 77, 87, 107, 77, 86, 106, 74, 83, 103, 73, 81, 104, 68, 76, 100, 69, 76, 101, 67, 75, 102, 68, 77, 104, + 70, 80, 107, 72, 81, 108, 73, 81, 110, 74, 82, 110, 73, 81, 109, 71, 80, 107, 69, 77, 104, 67, 74, 100, 65, 72, 95, 64, 70, 93, 61, 66, 90, 60, 62, 84, 59, 60, 80, 58, 58, 77, 52, 53, 68, 49, 50, 62, 43, 44, 54, 39, 41, 48, 35, 36, 41, 29, 31, 34, 26, 26, 28, + 25, 22, 24, 26, 21, 23, 25, 19, 22, 27, 19, 22, 28, 18, 21, 25, 18, 21, 30, 22, 25, 30, 23, 26, 32, 25, 28, 32, 26, 31, 37, 33, 38, 36, 33, 41, 38, 37, 48, 41, 41, 56, 45, 45, 62, 51, 53, 71, 59, 63, 83, 69, 73, 92, 83, 87, 107, 93, 97, 116, 105, 108, 129, + 111, 114, 136, 117, 120, 144, 124, 125, 151, 127, 128, 153, 128, 129, 153, 130, 132, 154, 132, 131, 152, 132, 130, 150, 131, 126, 145, 131, 126, 142, 130, 122, 134, 126, 115, 128, 122, 112, 124, 113, 103, 115, 105, 96, 106, 96, 85, 95, 92, 81, 91, 87, 76, 86, 90, 79, 89, 92, 82, 92, 100, 91, 101, + 57, 14, 51, 57, 14, 51, 58, 15, 52, 57, 14, 52, 58, 14, 53, 58, 14, 53, 60, 15, 54, 59, 14, 53, 59, 15, 54, 60, 15, 54, 60, 16, 55, 60, 16, 55, 60, 15, 54, 61, 16, 55, 61, 16, 55, 62, 17, 56, 62, 17, 56, 62, 16, 56, 64, 18, 57, 64, 17, 57, 64, 17, 57, + 64, 16, 57, 64, 17, 57, 66, 19, 59, 67, 19, 60, 66, 18, 60, 67, 19, 61, 66, 18, 60, 67, 19, 61, 68, 20, 62, 70, 20, 62, 69, 21, 62, 69, 22, 62, 71, 21, 63, 70, 23, 64, 71, 23, 65, 72, 23, 65, 72, 23, 65, 75, 25, 67, 75, 24, 66, 77, 23, 67, 77, 24, 67, + 77, 24, 68, 78, 25, 70, 78, 24, 72, 79, 25, 72, 80, 26, 73, 81, 28, 74, 82, 28, 75, 82, 29, 75, 82, 26, 75, 83, 28, 77, 83, 27, 76, 85, 30, 78, 85, 29, 78, 86, 30, 78, 85, 28, 78, 87, 30, 80, 88, 31, 81, 88, 30, 80, 89, 30, 81, 90, 31, 81, 90, 31, 82, + 90, 31, 82, 90, 32, 83, 90, 32, 85, 91, 31, 85, 92, 31, 85, 91, 30, 84, 92, 32, 84, 91, 30, 83, 90, 29, 82, 90, 31, 82, 88, 30, 81, 86, 30, 81, 84, 32, 80, 91, 45, 89, 95, 52, 93, 95, 53, 94, 90, 49, 91, 88, 49, 90, 85, 50, 88, 87, 55, 90, 90, 62, 92, + 86, 62, 91, 83, 61, 89, 82, 64, 89, 78, 61, 86, 79, 67, 90, 83, 81, 99, 103, 112, 125, 142, 153, 164, 173, 181, 189, 183, 190, 197, 180, 189, 196, 174, 184, 189, 169, 178, 185, 167, 174, 183, 156, 163, 173, 144, 153, 165, 136, 144, 157, 125, 132, 146, 108, 113, 128, 91, 93, 108, 73, 73, 90, + 64, 58, 77, 58, 48, 67, 47, 31, 52, 40, 19, 41, 39, 18, 40, 41, 18, 42, 41, 17, 41, 38, 15, 39, 38, 14, 38, 37, 13, 37, 36, 12, 35, 34, 10, 34, 35, 8, 32, 37, 11, 34, 38, 12, 36, 35, 8, 33, 36, 9, 34, 36, 9, 35, 35, 8, 33, 36, 10, 34, 35, 9, 33, + 35, 9, 33, 37, 11, 35, 37, 11, 35, 35, 9, 34, 35, 9, 34, 35, 8, 34, 37, 10, 36, 34, 9, 33, 34, 8, 32, 35, 9, 33, 34, 8, 32, 35, 9, 33, 37, 11, 35, 36, 10, 34, 36, 10, 34, 35, 9, 33, 36, 10, 34, 36, 9, 34, 37, 10, 36, 37, 10, 36, 36, 9, 35, + 37, 10, 36, 37, 10, 36, 38, 11, 37, 38, 12, 37, 37, 11, 35, 37, 10, 36, 40, 12, 38, 40, 12, 38, 40, 10, 36, 39, 10, 35, 41, 12, 37, 39, 12, 37, 39, 12, 38, 40, 13, 39, 40, 13, 39, 41, 15, 41, 41, 14, 39, 42, 16, 40, 46, 20, 44, 47, 22, 46, 47, 24, 46, + 46, 23, 45, 46, 24, 46, 45, 24, 46, 47, 28, 49, 53, 34, 55, 54, 36, 59, 57, 43, 65, 64, 52, 74, 67, 56, 77, 72, 62, 82, 70, 61, 81, 71, 63, 83, 71, 66, 85, 74, 70, 89, 76, 73, 93, 77, 78, 95, 81, 84, 101, 84, 89, 104, 89, 94, 110, 91, 98, 113, 96, 106, 119, + 96, 107, 121, 103, 115, 129, 108, 121, 136, 110, 123, 137, 113, 126, 142, 116, 128, 144, 116, 130, 148, 114, 129, 148, 115, 130, 150, 114, 131, 151, 114, 131, 152, 113, 131, 152, 111, 129, 150, 112, 129, 150, 108, 125, 146, 105, 120, 142, 106, 120, 142, 105, 119, 141, 104, 120, 141, 101, 117, 138, 100, 114, 136, + 97, 111, 133, 94, 108, 131, 98, 112, 135, 98, 111, 134, 91, 104, 126, 86, 99, 121, 89, 100, 122, 91, 99, 121, 85, 94, 115, 86, 96, 115, 85, 95, 113, 83, 93, 111, 82, 92, 111, 81, 90, 110, 76, 86, 106, 75, 85, 105, 72, 81, 102, 70, 78, 102, 69, 76, 101, 67, 74, 100, 68, 77, 104, + 70, 79, 106, 72, 81, 109, 79, 88, 115, 74, 82, 111, 72, 80, 109, 74, 82, 109, 71, 78, 105, 70, 77, 103, 66, 73, 96, 65, 71, 94, 62, 67, 91, 62, 64, 86, 60, 61, 82, 59, 60, 79, 56, 56, 74, 52, 53, 67, 44, 45, 56, 40, 40, 49, 36, 36, 41, 31, 32, 36, 27, 27, 30, + 26, 25, 27, 25, 22, 24, 26, 20, 25, 27, 20, 24, 28, 21, 26, 28, 21, 25, 29, 22, 25, 29, 22, 25, 32, 25, 29, 33, 27, 31, 34, 30, 36, 37, 34, 43, 40, 38, 49, 43, 42, 56, 46, 47, 65, 50, 54, 73, 61, 64, 83, 69, 74, 93, 83, 90, 108, 93, 97, 118, 103, 108, 129, + 110, 113, 136, 119, 122, 146, 124, 127, 152, 128, 129, 155, 129, 131, 155, 131, 133, 156, 134, 133, 154, 133, 131, 150, 132, 128, 146, 132, 125, 142, 131, 123, 136, 127, 119, 130, 122, 113, 124, 114, 105, 115, 105, 95, 105, 99, 90, 98, 91, 80, 90, 88, 77, 87, 88, 79, 89, 90, 80, 91, 100, 92, 102, + 56, 15, 52, 57, 13, 52, 58, 15, 52, 58, 14, 53, 58, 14, 53, 58, 14, 53, 60, 16, 55, 59, 15, 54, 58, 13, 52, 60, 15, 53, 59, 14, 53, 60, 15, 54, 60, 16, 55, 60, 15, 54, 60, 16, 55, 61, 16, 55, 63, 18, 57, 63, 17, 56, 63, 16, 55, 64, 17, 56, 63, 16, 56, + 65, 18, 58, 66, 18, 59, 64, 16, 58, 66, 18, 59, 66, 18, 60, 66, 18, 60, 68, 20, 62, 69, 19, 61, 69, 19, 61, 67, 20, 62, 69, 22, 64, 70, 22, 64, 71, 20, 62, 71, 20, 63, 72, 22, 64, 73, 24, 66, 73, 23, 66, 74, 24, 67, 75, 24, 67, 75, 24, 67, 77, 26, 69, + 78, 26, 70, 78, 25, 71, 78, 24, 72, 80, 26, 73, 79, 25, 72, 80, 25, 73, 82, 28, 75, 82, 27, 76, 83, 28, 76, 82, 26, 76, 84, 29, 78, 84, 29, 78, 85, 28, 78, 86, 30, 80, 86, 28, 79, 87, 29, 79, 88, 28, 80, 89, 30, 81, 89, 30, 81, 89, 30, 81, 89, 31, 81, + 90, 32, 83, 90, 33, 84, 89, 29, 83, 91, 33, 85, 91, 30, 85, 91, 30, 83, 91, 29, 83, 91, 31, 83, 90, 31, 83, 90, 31, 82, 88, 30, 81, 89, 37, 84, 91, 43, 88, 94, 49, 92, 93, 51, 91, 91, 50, 89, 82, 39, 81, 78, 37, 78, 76, 40, 79, 82, 50, 85, 87, 58, 89, + 86, 62, 90, 85, 62, 90, 83, 65, 92, 82, 66, 92, 82, 70, 94, 87, 80, 103, 90, 92, 108, 117, 129, 141, 154, 165, 174, 177, 186, 193, 183, 191, 198, 175, 185, 191, 168, 179, 183, 168, 179, 185, 166, 176, 183, 163, 172, 181, 166, 174, 183, 155, 163, 174, 142, 149, 163, 123, 130, 145, 101, 108, 125, + 83, 90, 107, 76, 73, 92, 60, 52, 72, 45, 34, 54, 40, 23, 44, 43, 21, 46, 43, 21, 45, 39, 15, 39, 37, 14, 38, 39, 15, 39, 39, 15, 39, 38, 15, 38, 37, 10, 34, 36, 10, 33, 37, 10, 34, 37, 10, 34, 36, 9, 34, 38, 11, 36, 37, 10, 36, 36, 10, 34, 35, 9, 33, + 36, 10, 34, 38, 12, 36, 38, 12, 36, 38, 11, 36, 36, 10, 34, 35, 8, 34, 36, 9, 35, 37, 9, 36, 35, 9, 34, 35, 8, 34, 36, 10, 34, 36, 10, 34, 35, 9, 33, 36, 10, 34, 36, 10, 34, 36, 10, 34, 36, 10, 35, 35, 8, 34, 38, 11, 37, 37, 10, 36, 37, 10, 36, + 37, 10, 37, 38, 11, 37, 37, 10, 36, 38, 10, 36, 37, 10, 36, 38, 10, 36, 40, 11, 37, 39, 10, 36, 40, 11, 37, 40, 11, 36, 40, 11, 37, 41, 12, 37, 40, 12, 38, 40, 13, 39, 41, 14, 40, 41, 14, 40, 42, 16, 41, 45, 19, 43, 47, 23, 47, 47, 22, 46, 46, 22, 46, + 43, 19, 43, 42, 21, 44, 45, 24, 46, 48, 29, 50, 52, 33, 54, 58, 39, 60, 57, 42, 64, 63, 52, 73, 65, 57, 77, 70, 61, 81, 75, 67, 87, 75, 69, 87, 74, 70, 88, 76, 73, 90, 76, 74, 93, 81, 81, 99, 83, 85, 103, 86, 90, 106, 88, 97, 109, 95, 103, 116, 95, 105, 118, + 102, 113, 126, 105, 117, 131, 108, 121, 135, 113, 126, 140, 114, 127, 143, 116, 129, 145, 114, 128, 146, 116, 131, 149, 115, 130, 150, 114, 131, 151, 114, 131, 152, 112, 129, 150, 110, 128, 149, 110, 128, 149, 108, 125, 147, 105, 119, 142, 107, 121, 144, 104, 120, 141, 102, 119, 140, 101, 119, 140, 100, 115, 136, + 98, 113, 136, 98, 112, 135, 97, 112, 135, 95, 109, 132, 96, 109, 131, 88, 101, 123, 88, 99, 121, 91, 101, 122, 83, 91, 112, 83, 93, 112, 82, 92, 110, 94, 105, 123, 92, 102, 121, 81, 91, 111, 70, 81, 101, 80, 91, 111, 74, 85, 105, 69, 80, 102, 70, 78, 103, 66, 75, 99, 69, 78, 105, + 77, 86, 113, 77, 87, 113, 73, 82, 109, 71, 79, 108, 73, 81, 110, 74, 82, 110, 73, 80, 107, 72, 78, 103, 69, 75, 98, 66, 73, 96, 62, 67, 90, 63, 66, 88, 62, 63, 84, 58, 60, 79, 56, 57, 74, 52, 53, 67, 47, 47, 59, 42, 42, 51, 36, 38, 44, 32, 33, 39, 28, 29, 33, + 28, 27, 31, 26, 23, 27, 26, 20, 26, 28, 21, 27, 28, 22, 27, 27, 21, 26, 30, 23, 27, 29, 23, 25, 31, 25, 29, 30, 25, 30, 35, 32, 38, 39, 36, 45, 40, 38, 50, 42, 42, 58, 46, 48, 66, 51, 56, 75, 58, 64, 83, 69, 75, 95, 80, 87, 106, 92, 97, 118, 102, 108, 129, + 109, 113, 138, 117, 121, 145, 123, 127, 152, 125, 129, 154, 131, 133, 157, 131, 132, 156, 136, 133, 156, 134, 131, 152, 133, 128, 147, 134, 127, 143, 133, 125, 139, 129, 120, 132, 123, 114, 124, 115, 107, 114, 105, 97, 103, 97, 87, 95, 92, 81, 90, 88, 78, 88, 88, 79, 89, 91, 83, 93, 100, 92, 102, + 55, 16, 52, 56, 15, 53, 57, 16, 53, 57, 16, 53, 59, 16, 53, 59, 15, 54, 58, 15, 53, 59, 14, 53, 60, 15, 54, 59, 14, 53, 60, 15, 54, 61, 17, 55, 60, 16, 55, 60, 16, 55, 61, 17, 56, 60, 15, 54, 62, 16, 55, 63, 18, 57, 63, 16, 55, 64, 18, 57, 64, 17, 56, + 64, 17, 57, 64, 17, 58, 67, 19, 59, 66, 19, 59, 66, 19, 60, 67, 16, 58, 68, 19, 61, 68, 19, 61, 69, 22, 61, 69, 21, 62, 69, 20, 62, 71, 21, 63, 70, 22, 63, 70, 21, 63, 71, 23, 65, 73, 22, 65, 75, 24, 67, 74, 23, 66, 74, 24, 67, 76, 25, 68, 75, 22, 67, + 77, 23, 68, 77, 26, 71, 79, 28, 72, 79, 27, 73, 80, 26, 74, 82, 27, 76, 80, 25, 74, 82, 27, 75, 83, 27, 76, 83, 29, 77, 83, 28, 77, 84, 29, 78, 86, 31, 80, 85, 28, 78, 86, 29, 80, 87, 27, 79, 88, 29, 80, 87, 27, 79, 89, 30, 81, 90, 32, 82, 88, 30, 81, + 91, 33, 84, 89, 32, 83, 89, 31, 85, 91, 32, 85, 91, 31, 84, 92, 32, 84, 92, 31, 83, 91, 29, 81, 89, 30, 81, 90, 33, 82, 91, 37, 84, 92, 42, 87, 90, 44, 88, 86, 41, 84, 87, 44, 83, 82, 38, 79, 82, 37, 78, 76, 34, 76, 72, 32, 73, 73, 36, 73, 74, 41, 75, + 73, 45, 75, 77, 51, 80, 80, 58, 85, 79, 61, 87, 80, 66, 92, 80, 71, 94, 88, 88, 108, 95, 102, 116, 133, 145, 157, 164, 174, 182, 177, 185, 192, 174, 184, 191, 172, 183, 189, 167, 178, 185, 169, 179, 186, 171, 181, 188, 175, 184, 191, 170, 181, 189, 158, 168, 178, 147, 156, 168, 135, 144, 158, + 116, 127, 143, 100, 107, 124, 82, 83, 101, 64, 61, 80, 49, 44, 62, 45, 33, 52, 47, 29, 49, 43, 22, 44, 40, 19, 42, 41, 19, 43, 41, 19, 43, 40, 15, 39, 39, 13, 36, 39, 13, 36, 38, 12, 35, 39, 13, 37, 37, 11, 35, 38, 11, 36, 39, 13, 37, 36, 10, 34, 37, 10, 34, + 35, 9, 33, 38, 12, 36, 40, 15, 39, 39, 12, 36, 36, 9, 35, 35, 9, 33, 37, 11, 35, 36, 10, 35, 35, 8, 34, 38, 9, 35, 37, 9, 34, 36, 10, 34, 36, 9, 35, 37, 10, 36, 36, 9, 34, 37, 10, 35, 36, 9, 35, 36, 9, 35, 36, 9, 35, 39, 12, 38, 38, 10, 36, + 38, 11, 37, 38, 11, 37, 37, 10, 36, 38, 12, 37, 37, 10, 36, 39, 11, 37, 39, 10, 36, 41, 12, 38, 40, 11, 36, 39, 10, 35, 40, 11, 36, 41, 13, 38, 39, 12, 39, 43, 16, 42, 41, 14, 40, 42, 14, 41, 44, 17, 42, 47, 22, 46, 48, 24, 48, 49, 25, 48, 47, 23, 47, + 43, 19, 43, 45, 23, 45, 46, 25, 47, 49, 30, 51, 53, 34, 55, 58, 39, 60, 59, 44, 65, 64, 53, 73, 65, 54, 76, 68, 62, 81, 74, 67, 86, 78, 72, 88, 80, 77, 93, 77, 76, 92, 80, 79, 97, 80, 81, 99, 86, 88, 106, 86, 90, 108, 90, 97, 111, 93, 101, 115, 99, 108, 121, + 100, 111, 124, 105, 117, 131, 108, 121, 135, 113, 126, 141, 114, 127, 143, 118, 131, 147, 116, 130, 148, 116, 130, 150, 117, 132, 151, 113, 130, 151, 114, 132, 152, 112, 131, 152, 109, 128, 149, 109, 126, 147, 111, 128, 149, 105, 121, 144, 104, 120, 142, 102, 118, 141, 101, 118, 139, 102, 119, 140, 100, 117, 138, + 98, 114, 137, 99, 116, 139, 97, 114, 138, 103, 118, 141, 94, 109, 131, 87, 100, 124, 85, 98, 120, 92, 103, 124, 80, 91, 111, 80, 92, 111, 102, 114, 133, 93, 104, 122, 76, 87, 107, 75, 86, 106, 79, 89, 109, 73, 84, 105, 76, 87, 108, 76, 87, 110, 70, 79, 104, 66, 76, 101, 83, 92, 117, + 76, 86, 112, 74, 83, 110, 73, 82, 110, 73, 81, 109, 73, 81, 110, 77, 84, 111, 74, 80, 108, 72, 77, 105, 70, 76, 99, 68, 74, 97, 66, 71, 94, 66, 69, 90, 64, 66, 86, 61, 62, 82, 57, 60, 76, 54, 53, 69, 50, 50, 62, 42, 43, 53, 37, 40, 47, 33, 35, 40, 29, 30, 36, + 27, 27, 31, 26, 24, 28, 25, 21, 27, 27, 21, 27, 27, 21, 27, 29, 23, 28, 30, 24, 28, 30, 24, 29, 30, 26, 31, 31, 27, 33, 34, 32, 38, 37, 34, 44, 40, 40, 52, 43, 42, 58, 44, 47, 65, 50, 55, 74, 57, 64, 83, 68, 75, 95, 79, 86, 106, 91, 98, 118, 103, 107, 131, + 110, 114, 138, 119, 123, 147, 124, 128, 153, 127, 131, 155, 131, 134, 158, 134, 135, 158, 135, 133, 155, 134, 131, 152, 136, 131, 150, 134, 127, 144, 134, 124, 140, 130, 120, 132, 124, 115, 126, 114, 106, 113, 108, 100, 107, 98, 91, 97, 93, 82, 90, 86, 77, 87, 88, 79, 89, 91, 83, 93, 100, 92, 102, + 55, 14, 52, 55, 14, 52, 56, 15, 53, 56, 13, 51, 57, 14, 52, 59, 15, 53, 59, 15, 54, 59, 14, 53, 59, 14, 53, 60, 15, 53, 59, 14, 53, 59, 14, 54, 60, 15, 54, 60, 15, 54, 60, 15, 55, 60, 15, 55, 61, 15, 55, 61, 16, 55, 62, 17, 55, 62, 17, 56, 63, 18, 57, + 63, 16, 56, 65, 19, 58, 64, 17, 57, 66, 19, 59, 65, 16, 58, 67, 20, 59, 67, 18, 58, 68, 20, 60, 67, 17, 60, 68, 20, 61, 71, 22, 64, 68, 20, 62, 70, 22, 63, 71, 21, 63, 71, 21, 64, 73, 23, 65, 75, 24, 67, 74, 23, 66, 75, 23, 67, 75, 24, 67, 77, 24, 69, + 76, 24, 69, 77, 24, 71, 76, 23, 71, 79, 25, 72, 80, 28, 75, 80, 26, 74, 81, 26, 75, 81, 25, 75, 82, 27, 75, 84, 29, 78, 83, 28, 77, 85, 30, 79, 85, 29, 79, 85, 28, 79, 86, 30, 80, 87, 29, 80, 87, 31, 81, 88, 31, 82, 88, 30, 82, 90, 31, 82, 89, 31, 82, + 89, 30, 82, 90, 31, 82, 89, 31, 83, 90, 31, 83, 91, 32, 84, 90, 29, 83, 91, 30, 82, 91, 29, 82, 90, 32, 82, 88, 33, 82, 87, 35, 82, 85, 36, 82, 84, 36, 82, 80, 33, 78, 79, 33, 75, 82, 38, 78, 83, 41, 80, 78, 37, 77, 72, 30, 72, 71, 29, 68, 67, 30, 66, + 65, 32, 66, 67, 36, 68, 67, 42, 72, 69, 47, 75, 69, 51, 77, 72, 59, 83, 78, 72, 94, 86, 86, 102, 109, 116, 130, 144, 154, 164, 167, 177, 184, 172, 182, 189, 173, 183, 190, 172, 183, 187, 173, 184, 188, 172, 184, 187, 170, 181, 186, 163, 176, 181, 156, 169, 178, 154, 166, 176, 151, 161, 173, + 145, 154, 168, 132, 142, 157, 116, 125, 141, 99, 103, 118, 75, 77, 93, 62, 61, 78, 59, 47, 66, 48, 32, 53, 41, 20, 41, 43, 22, 44, 42, 21, 44, 42, 17, 40, 40, 14, 37, 40, 14, 37, 41, 15, 38, 39, 13, 36, 39, 13, 37, 37, 11, 36, 39, 13, 37, 38, 11, 35, 38, 9, 34, + 37, 8, 33, 40, 14, 38, 40, 15, 39, 39, 13, 37, 36, 11, 35, 35, 9, 33, 35, 9, 33, 35, 9, 34, 36, 8, 35, 37, 8, 34, 37, 9, 35, 36, 8, 34, 37, 10, 36, 36, 9, 35, 37, 10, 36, 36, 9, 35, 36, 9, 35, 36, 9, 35, 36, 9, 35, 38, 11, 37, 37, 10, 36, + 37, 10, 36, 37, 10, 36, 37, 10, 36, 38, 11, 37, 38, 11, 37, 38, 11, 37, 40, 11, 37, 38, 9, 35, 40, 11, 37, 42, 13, 38, 42, 13, 38, 40, 13, 37, 43, 15, 42, 41, 15, 41, 43, 16, 42, 43, 17, 42, 47, 22, 46, 47, 23, 47, 49, 25, 49, 48, 24, 48, 47, 23, 47, + 45, 22, 46, 45, 23, 47, 49, 30, 51, 52, 33, 53, 54, 35, 55, 57, 40, 61, 62, 47, 68, 65, 53, 73, 65, 55, 76, 69, 63, 82, 76, 71, 89, 79, 76, 92, 82, 79, 95, 77, 77, 92, 79, 81, 97, 83, 85, 103, 86, 88, 106, 87, 92, 109, 91, 99, 113, 94, 102, 116, 98, 108, 122, + 101, 112, 126, 105, 117, 131, 110, 123, 137, 112, 125, 140, 115, 128, 145, 118, 130, 148, 114, 129, 146, 116, 130, 148, 117, 132, 151, 115, 132, 152, 115, 132, 153, 115, 132, 153, 111, 129, 150, 108, 125, 146, 108, 124, 146, 107, 123, 146, 104, 120, 143, 102, 118, 141, 99, 117, 139, 103, 122, 143, 96, 115, 137, + 101, 120, 143, 96, 115, 140, 98, 115, 141, 91, 107, 132, 87, 103, 126, 88, 102, 125, 83, 97, 120, 88, 101, 121, 82, 94, 114, 104, 116, 134, 95, 108, 126, 81, 91, 109, 81, 91, 109, 77, 89, 108, 95, 106, 125, 78, 90, 110, 72, 83, 105, 79, 90, 111, 77, 88, 111, 85, 95, 120, 67, 78, 104, + 71, 82, 109, 74, 83, 110, 74, 83, 111, 76, 84, 113, 78, 86, 114, 75, 83, 110, 75, 82, 110, 75, 81, 108, 73, 78, 103, 71, 78, 100, 68, 73, 95, 69, 72, 93, 67, 70, 90, 64, 65, 85, 59, 62, 78, 55, 56, 71, 49, 49, 62, 42, 43, 53, 38, 40, 48, 34, 37, 42, 30, 33, 38, + 26, 25, 31, 27, 24, 30, 25, 22, 27, 25, 21, 27, 27, 23, 29, 28, 22, 27, 28, 24, 29, 29, 25, 30, 30, 28, 33, 30, 29, 36, 35, 34, 42, 37, 38, 47, 39, 41, 53, 41, 41, 58, 44, 48, 66, 50, 56, 75, 58, 66, 85, 67, 76, 96, 81, 88, 107, 91, 98, 118, 100, 105, 129, + 109, 113, 138, 118, 122, 147, 124, 128, 152, 127, 131, 155, 132, 134, 158, 132, 133, 157, 136, 134, 158, 135, 132, 154, 135, 131, 150, 134, 128, 146, 133, 123, 140, 129, 119, 133, 124, 114, 125, 117, 109, 116, 107, 99, 105, 98, 91, 97, 91, 80, 88, 87, 78, 86, 88, 80, 86, 92, 84, 93, 95, 88, 96, + 55, 14, 51, 56, 15, 52, 55, 14, 52, 58, 16, 52, 56, 13, 50, 58, 15, 52, 58, 14, 53, 59, 16, 53, 60, 17, 54, 59, 14, 53, 60, 15, 53, 60, 15, 54, 60, 15, 54, 59, 14, 54, 61, 17, 56, 61, 16, 55, 62, 16, 55, 61, 15, 54, 63, 18, 56, 62, 17, 56, 61, 16, 56, + 64, 19, 58, 64, 16, 56, 65, 18, 57, 66, 19, 58, 64, 18, 56, 67, 20, 59, 68, 19, 59, 67, 17, 58, 69, 19, 60, 68, 21, 61, 68, 19, 61, 69, 20, 62, 70, 22, 63, 70, 21, 63, 72, 24, 65, 73, 23, 66, 73, 23, 65, 74, 23, 67, 75, 23, 67, 76, 24, 68, 77, 24, 68, + 76, 26, 69, 77, 25, 70, 77, 25, 71, 78, 25, 73, 79, 25, 74, 80, 26, 75, 83, 28, 76, 82, 27, 76, 83, 28, 77, 83, 27, 77, 83, 26, 77, 84, 28, 78, 85, 29, 79, 86, 30, 79, 86, 29, 79, 86, 30, 80, 88, 32, 80, 87, 30, 82, 90, 33, 83, 89, 30, 82, 89, 30, 81, + 91, 32, 83, 89, 32, 83, 89, 32, 83, 91, 31, 84, 89, 29, 83, 92, 30, 84, 91, 31, 84, 91, 31, 83, 89, 32, 83, 87, 32, 81, 85, 32, 79, 83, 34, 80, 82, 33, 80, 82, 36, 80, 82, 37, 78, 84, 40, 79, 83, 42, 79, 79, 39, 77, 74, 32, 73, 70, 30, 68, 69, 31, 68, + 68, 35, 69, 63, 31, 66, 61, 34, 67, 60, 36, 66, 60, 40, 67, 63, 48, 75, 70, 62, 85, 80, 79, 97, 91, 97, 113, 118, 129, 142, 147, 158, 168, 164, 174, 182, 171, 181, 188, 173, 184, 189, 173, 184, 188, 171, 182, 186, 168, 180, 185, 161, 175, 182, 156, 171, 179, 155, 168, 178, 156, 170, 179, + 154, 168, 179, 149, 161, 174, 145, 156, 169, 136, 146, 160, 118, 126, 141, 93, 99, 115, 75, 79, 96, 62, 56, 73, 53, 42, 59, 47, 31, 48, 46, 26, 47, 42, 18, 41, 38, 12, 36, 39, 14, 37, 40, 15, 39, 41, 16, 40, 39, 15, 39, 39, 14, 37, 40, 16, 38, 40, 14, 37, 40, 14, 37, + 39, 12, 35, 40, 14, 37, 40, 14, 37, 38, 12, 36, 37, 11, 34, 37, 11, 34, 35, 9, 32, 37, 10, 34, 37, 8, 34, 38, 9, 35, 37, 9, 35, 38, 8, 34, 38, 9, 35, 38, 10, 36, 38, 11, 37, 37, 10, 36, 36, 9, 35, 39, 12, 38, 37, 10, 36, 37, 9, 35, 38, 11, 37, + 38, 11, 37, 38, 12, 36, 39, 13, 37, 38, 12, 37, 38, 11, 37, 38, 11, 37, 40, 13, 39, 41, 13, 39, 42, 13, 39, 42, 14, 39, 42, 15, 39, 42, 16, 40, 43, 18, 42, 48, 25, 49, 47, 23, 48, 45, 23, 47, 44, 22, 46, 48, 26, 50, 52, 30, 54, 49, 27, 51, 49, 27, 51, + 49, 27, 51, 48, 27, 51, 51, 32, 52, 54, 37, 58, 56, 40, 60, 59, 44, 63, 63, 50, 70, 66, 54, 74, 67, 59, 79, 68, 62, 81, 75, 71, 90, 83, 81, 97, 88, 89, 102, 82, 85, 99, 81, 84, 99, 83, 86, 101, 87, 92, 107, 89, 94, 110, 93, 101, 115, 97, 106, 120, 102, 112, 126, + 100, 113, 128, 105, 118, 133, 110, 123, 138, 113, 126, 140, 114, 128, 142, 118, 130, 147, 114, 128, 146, 117, 132, 150, 118, 133, 152, 115, 132, 151, 115, 132, 153, 113, 131, 152, 111, 129, 150, 110, 125, 147, 108, 124, 144, 107, 123, 144, 105, 121, 143, 103, 120, 142, 98, 116, 139, 100, 119, 141, 101, 120, 141, + 107, 126, 148, 104, 123, 146, 101, 118, 142, 89, 105, 131, 87, 102, 127, 91, 105, 128, 80, 95, 117, 97, 111, 131, 104, 119, 136, 104, 118, 136, 76, 87, 106, 79, 90, 109, 86, 98, 117, 113, 128, 145, 79, 91, 110, 84, 95, 116, 79, 91, 113, 82, 94, 116, 83, 94, 118, 75, 87, 112, 71, 83, 109, + 83, 93, 118, 79, 89, 115, 74, 82, 110, 77, 86, 113, 76, 85, 112, 78, 84, 112, 78, 85, 112, 75, 82, 109, 74, 79, 103, 73, 79, 102, 69, 74, 96, 69, 73, 93, 65, 69, 88, 67, 69, 88, 62, 65, 81, 59, 60, 75, 50, 50, 63, 43, 44, 54, 39, 41, 50, 34, 37, 42, 32, 34, 39, + 28, 27, 33, 27, 24, 30, 25, 23, 29, 26, 23, 28, 26, 22, 28, 28, 24, 29, 31, 27, 33, 30, 27, 33, 30, 30, 36, 31, 32, 37, 32, 34, 41, 36, 38, 48, 39, 41, 53, 46, 47, 63, 46, 50, 68, 49, 56, 75, 57, 66, 85, 66, 75, 96, 78, 88, 107, 91, 97, 119, 100, 106, 129, + 109, 114, 139, 119, 123, 148, 125, 129, 154, 126, 130, 155, 132, 134, 159, 132, 133, 158, 134, 134, 158, 136, 134, 156, 135, 130, 150, 134, 128, 147, 133, 124, 141, 130, 121, 135, 126, 117, 126, 117, 108, 116, 109, 100, 107, 101, 93, 100, 92, 85, 92, 87, 78, 85, 88, 79, 86, 89, 81, 88, 94, 88, 93, + 56, 15, 52, 55, 14, 51, 55, 13, 50, 57, 14, 51, 57, 15, 52, 57, 14, 52, 57, 13, 52, 58, 15, 53, 58, 14, 52, 59, 15, 53, 60, 15, 54, 59, 14, 53, 59, 14, 54, 60, 15, 54, 60, 16, 55, 60, 16, 55, 61, 17, 56, 61, 16, 55, 61, 16, 55, 62, 17, 56, 64, 19, 58, + 62, 18, 57, 64, 18, 57, 65, 19, 57, 65, 18, 57, 65, 18, 57, 66, 18, 57, 66, 19, 58, 68, 17, 57, 68, 20, 60, 68, 20, 61, 70, 22, 62, 69, 21, 63, 70, 20, 63, 71, 20, 63, 71, 21, 63, 71, 21, 63, 73, 22, 65, 74, 23, 67, 76, 23, 67, 76, 22, 68, 76, 24, 68, + 76, 23, 69, 76, 24, 70, 78, 25, 71, 78, 27, 73, 79, 24, 73, 79, 24, 74, 82, 27, 76, 81, 26, 75, 82, 26, 75, 83, 27, 76, 84, 28, 78, 85, 29, 78, 85, 29, 78, 85, 28, 78, 87, 31, 80, 88, 31, 81, 86, 29, 80, 88, 31, 82, 87, 30, 81, 90, 32, 83, 90, 30, 84, + 90, 33, 84, 89, 31, 83, 90, 33, 84, 91, 31, 84, 89, 29, 83, 91, 31, 84, 90, 30, 84, 90, 32, 84, 87, 29, 81, 87, 32, 81, 85, 31, 79, 84, 30, 78, 82, 33, 78, 81, 33, 78, 80, 34, 76, 79, 33, 73, 77, 33, 72, 75, 33, 74, 73, 32, 73, 76, 40, 75, 76, 43, 77, + 75, 49, 82, 73, 50, 82, 73, 52, 81, 72, 52, 80, 69, 50, 77, 68, 53, 80, 68, 59, 83, 75, 73, 93, 86, 91, 107, 101, 109, 123, 126, 138, 149, 151, 163, 172, 169, 179, 186, 174, 183, 189, 176, 185, 189, 173, 184, 188, 168, 180, 185, 164, 178, 184, 158, 171, 179, 153, 168, 176, 153, 169, 177, + 152, 168, 177, 153, 167, 176, 158, 168, 179, 157, 166, 179, 150, 158, 171, 132, 142, 157, 113, 123, 139, 93, 101, 117, 74, 77, 92, 60, 55, 70, 51, 38, 56, 49, 29, 49, 45, 23, 45, 43, 21, 43, 41, 18, 42, 41, 17, 41, 39, 16, 40, 38, 15, 37, 39, 17, 36, 42, 19, 38, 42, 17, 37, + 36, 9, 33, 39, 13, 36, 41, 15, 39, 40, 14, 37, 37, 11, 34, 35, 9, 32, 35, 9, 32, 37, 12, 35, 37, 8, 33, 38, 9, 34, 40, 11, 36, 38, 9, 34, 38, 9, 35, 39, 10, 37, 38, 11, 37, 37, 10, 36, 37, 10, 36, 38, 11, 37, 39, 12, 38, 38, 12, 38, 39, 12, 38, + 40, 14, 39, 40, 14, 38, 40, 14, 38, 40, 13, 38, 39, 14, 38, 39, 15, 39, 37, 13, 37, 40, 15, 40, 39, 13, 38, 43, 18, 41, 41, 15, 40, 44, 20, 44, 55, 33, 56, 49, 27, 51, 46, 24, 48, 44, 22, 46, 45, 23, 47, 50, 27, 51, 54, 33, 55, 52, 31, 55, 50, 30, 53, + 50, 30, 53, 50, 32, 53, 53, 35, 56, 55, 40, 61, 58, 44, 65, 61, 48, 66, 63, 52, 71, 68, 57, 77, 68, 61, 81, 72, 67, 85, 77, 75, 91, 86, 85, 101, 94, 94, 109, 92, 95, 109, 86, 90, 103, 83, 89, 102, 85, 92, 105, 90, 97, 112, 93, 102, 116, 96, 106, 120, 99, 109, 125, + 104, 118, 133, 109, 122, 139, 111, 124, 139, 113, 127, 142, 114, 128, 144, 116, 131, 147, 115, 130, 148, 117, 133, 150, 116, 132, 150, 114, 131, 151, 117, 133, 154, 112, 130, 151, 111, 128, 149, 110, 126, 146, 105, 122, 141, 104, 121, 140, 104, 122, 142, 103, 121, 142, 101, 119, 141, 97, 116, 137, 108, 127, 148, + 101, 122, 143, 100, 120, 141, 90, 111, 133, 93, 109, 132, 92, 106, 130, 79, 95, 119, 109, 123, 144, 98, 113, 132, 103, 118, 136, 87, 100, 119, 80, 90, 110, 96, 106, 124, 116, 131, 148, 74, 89, 108, 84, 98, 117, 78, 91, 110, 75, 87, 108, 87, 99, 120, 76, 89, 111, 77, 90, 113, 78, 90, 115, + 71, 83, 109, 81, 92, 118, 85, 94, 121, 79, 88, 115, 76, 85, 112, 77, 86, 113, 77, 85, 112, 76, 83, 109, 77, 82, 106, 71, 76, 99, 70, 74, 97, 67, 72, 92, 68, 72, 90, 67, 68, 87, 64, 65, 81, 60, 60, 75, 53, 53, 66, 45, 47, 56, 40, 42, 50, 36, 39, 47, 34, 35, 44, + 30, 32, 38, 25, 26, 32, 27, 25, 31, 25, 23, 29, 27, 25, 31, 30, 28, 34, 33, 31, 37, 32, 31, 37, 30, 30, 36, 31, 33, 39, 35, 37, 45, 36, 38, 48, 41, 43, 54, 43, 46, 60, 48, 53, 71, 51, 57, 77, 56, 66, 86, 66, 75, 98, 79, 87, 109, 90, 97, 120, 101, 107, 131, + 109, 113, 139, 116, 121, 147, 125, 128, 154, 127, 131, 156, 131, 133, 158, 132, 133, 158, 133, 134, 158, 135, 133, 155, 133, 130, 151, 134, 129, 149, 132, 126, 143, 130, 120, 134, 125, 115, 126, 118, 109, 119, 108, 100, 107, 100, 92, 99, 93, 85, 92, 88, 80, 87, 86, 77, 84, 86, 79, 85, 95, 88, 93, + 53, 12, 49, 57, 16, 53, 56, 15, 52, 57, 14, 51, 58, 15, 52, 58, 14, 52, 59, 16, 52, 58, 14, 52, 59, 16, 54, 59, 16, 53, 59, 14, 52, 60, 15, 54, 59, 14, 54, 60, 16, 54, 60, 16, 55, 61, 17, 56, 61, 16, 55, 60, 16, 55, 62, 17, 56, 63, 18, 57, 62, 17, 56, + 63, 17, 57, 62, 16, 56, 64, 16, 56, 65, 19, 58, 66, 19, 58, 66, 18, 58, 67, 20, 59, 66, 18, 60, 67, 19, 59, 67, 21, 59, 69, 21, 62, 68, 20, 62, 70, 22, 64, 70, 21, 63, 71, 21, 63, 71, 21, 63, 73, 23, 65, 73, 22, 66, 75, 22, 67, 76, 23, 68, 76, 24, 69, + 77, 26, 70, 77, 24, 71, 79, 25, 71, 79, 26, 73, 79, 24, 74, 81, 26, 74, 82, 27, 76, 80, 25, 75, 84, 28, 78, 83, 26, 77, 84, 29, 78, 85, 29, 78, 85, 28, 78, 86, 29, 79, 87, 30, 80, 87, 29, 79, 87, 30, 81, 89, 31, 82, 90, 33, 83, 90, 31, 83, 89, 30, 82, + 90, 32, 84, 89, 32, 84, 90, 31, 85, 91, 33, 85, 90, 30, 84, 90, 29, 83, 90, 30, 85, 89, 31, 83, 87, 31, 81, 87, 32, 81, 85, 32, 80, 81, 27, 76, 79, 25, 74, 77, 26, 73, 75, 28, 73, 76, 31, 72, 79, 37, 76, 79, 40, 78, 80, 44, 81, 80, 48, 82, 82, 57, 89, + 81, 58, 89, 82, 62, 90, 79, 60, 89, 78, 61, 89, 74, 58, 85, 71, 59, 84, 69, 60, 84, 69, 66, 88, 72, 74, 93, 80, 88, 103, 103, 114, 127, 132, 144, 155, 161, 170, 178, 175, 184, 188, 177, 186, 190, 174, 185, 189, 168, 180, 185, 164, 176, 183, 162, 175, 181, 157, 172, 178, 152, 169, 176, + 149, 167, 176, 149, 166, 175, 152, 167, 176, 159, 170, 181, 159, 169, 182, 154, 164, 177, 142, 154, 167, 130, 143, 157, 110, 124, 137, 90, 96, 109, 70, 71, 86, 60, 52, 69, 50, 36, 54, 46, 29, 50, 45, 26, 49, 43, 22, 46, 44, 23, 45, 41, 20, 42, 42, 21, 41, 42, 20, 39, 44, 19, 39, + 40, 15, 36, 39, 15, 37, 40, 16, 38, 38, 13, 36, 36, 11, 34, 40, 15, 37, 38, 12, 35, 38, 12, 35, 36, 10, 34, 37, 11, 35, 37, 10, 35, 40, 11, 36, 38, 9, 35, 40, 12, 37, 38, 11, 37, 37, 10, 36, 38, 11, 37, 37, 10, 36, 41, 14, 40, 36, 10, 37, 38, 13, 39, + 40, 16, 41, 43, 17, 41, 41, 15, 39, 40, 15, 39, 41, 17, 41, 41, 17, 41, 39, 15, 39, 37, 13, 37, 40, 15, 39, 40, 16, 40, 48, 25, 48, 58, 39, 60, 50, 29, 52, 43, 21, 45, 45, 22, 46, 47, 27, 49, 47, 26, 48, 52, 32, 54, 56, 37, 59, 55, 37, 59, 52, 34, 57, + 51, 35, 55, 52, 35, 57, 53, 38, 59, 60, 46, 66, 63, 52, 70, 66, 56, 73, 67, 59, 75, 66, 61, 76, 67, 63, 78, 70, 70, 85, 77, 78, 93, 91, 91, 108, 100, 101, 117, 100, 106, 120, 94, 101, 114, 85, 95, 107, 85, 93, 106, 90, 100, 112, 93, 104, 117, 98, 109, 124, 100, 114, 130, + 105, 119, 136, 109, 123, 140, 113, 128, 144, 115, 131, 146, 115, 131, 147, 113, 129, 145, 116, 131, 149, 115, 131, 149, 117, 132, 151, 116, 133, 152, 117, 133, 152, 115, 132, 151, 112, 129, 148, 108, 124, 144, 106, 122, 141, 103, 120, 139, 104, 121, 140, 104, 121, 142, 101, 120, 142, 98, 118, 140, 104, 124, 145, + 98, 120, 141, 105, 126, 146, 93, 114, 136, 96, 111, 134, 90, 104, 128, 131, 146, 165, 112, 132, 151, 105, 122, 139, 106, 122, 139, 96, 111, 129, 105, 118, 135, 100, 115, 133, 95, 111, 129, 87, 101, 119, 77, 90, 110, 75, 89, 110, 73, 86, 107, 72, 85, 107, 87, 100, 121, 68, 83, 105, 71, 86, 108, + 97, 108, 132, 80, 91, 118, 75, 85, 112, 78, 87, 114, 77, 86, 113, 78, 87, 114, 77, 85, 112, 78, 85, 112, 75, 80, 105, 71, 77, 100, 69, 75, 97, 67, 71, 92, 65, 70, 89, 66, 67, 86, 64, 65, 81, 62, 62, 76, 57, 56, 70, 47, 48, 57, 42, 44, 52, 36, 39, 47, 36, 38, 46, + 31, 34, 40, 29, 30, 36, 25, 25, 31, 26, 26, 32, 28, 28, 34, 31, 30, 37, 33, 32, 41, 33, 31, 41, 31, 31, 40, 32, 35, 40, 35, 37, 44, 39, 41, 50, 40, 43, 53, 44, 48, 62, 46, 51, 70, 50, 57, 79, 56, 66, 89, 67, 79, 101, 77, 88, 110, 87, 96, 118, 100, 105, 130, + 108, 112, 140, 117, 121, 149, 123, 127, 154, 126, 130, 156, 130, 133, 159, 132, 133, 159, 133, 134, 158, 134, 132, 155, 133, 130, 152, 133, 129, 150, 129, 124, 142, 128, 120, 134, 125, 117, 129, 118, 109, 118, 110, 102, 109, 101, 93, 100, 93, 85, 92, 86, 78, 85, 87, 79, 86, 87, 80, 85, 93, 86, 91, + 55, 16, 53, 55, 15, 52, 54, 13, 50, 57, 14, 51, 58, 15, 52, 57, 14, 52, 57, 14, 52, 58, 15, 53, 57, 14, 52, 58, 14, 53, 59, 15, 54, 60, 15, 54, 60, 16, 55, 59, 14, 53, 59, 16, 55, 59, 14, 54, 61, 17, 56, 60, 16, 54, 61, 15, 55, 62, 17, 55, 60, 15, 55, + 62, 17, 57, 63, 16, 57, 64, 17, 58, 65, 18, 57, 67, 17, 58, 66, 18, 58, 67, 19, 59, 67, 19, 60, 68, 20, 60, 68, 21, 60, 67, 20, 60, 69, 20, 62, 70, 22, 63, 69, 20, 63, 71, 22, 64, 72, 22, 64, 73, 23, 65, 73, 23, 66, 75, 24, 67, 75, 22, 67, 75, 22, 68, + 76, 24, 70, 78, 25, 71, 78, 24, 72, 78, 24, 72, 80, 25, 73, 80, 25, 74, 80, 25, 74, 82, 27, 76, 83, 27, 77, 85, 29, 78, 85, 29, 79, 86, 30, 80, 85, 28, 79, 86, 30, 80, 88, 31, 82, 85, 27, 79, 88, 31, 82, 88, 28, 80, 88, 29, 81, 90, 31, 82, 90, 31, 83, + 89, 30, 82, 90, 30, 85, 91, 31, 85, 91, 31, 86, 91, 29, 85, 91, 30, 85, 88, 28, 83, 88, 28, 82, 87, 30, 81, 86, 30, 80, 84, 30, 79, 82, 27, 77, 80, 28, 76, 80, 32, 77, 80, 35, 78, 80, 37, 78, 82, 44, 82, 87, 51, 87, 85, 54, 88, 82, 57, 90, 80, 57, 87, + 77, 55, 85, 75, 55, 85, 73, 55, 85, 71, 55, 84, 65, 51, 80, 67, 55, 81, 67, 59, 83, 66, 63, 86, 65, 65, 86, 70, 77, 95, 81, 91, 108, 104, 117, 132, 138, 149, 160, 164, 173, 182, 175, 185, 189, 176, 187, 191, 172, 183, 187, 167, 179, 183, 166, 178, 184, 164, 177, 183, 157, 172, 179, + 154, 170, 177, 151, 168, 176, 150, 167, 175, 151, 167, 178, 155, 170, 179, 159, 172, 182, 158, 170, 180, 155, 166, 178, 147, 158, 172, 132, 146, 159, 110, 122, 134, 88, 95, 110, 70, 72, 88, 60, 55, 72, 54, 44, 64, 48, 34, 56, 51, 35, 55, 49, 32, 53, 46, 28, 48, 47, 28, 47, 47, 27, 47, + 44, 24, 43, 39, 19, 38, 43, 23, 41, 40, 17, 38, 37, 13, 36, 35, 11, 35, 38, 16, 38, 37, 14, 37, 37, 14, 36, 38, 12, 36, 38, 12, 36, 39, 10, 35, 41, 13, 38, 38, 10, 36, 38, 11, 37, 38, 11, 37, 38, 12, 38, 37, 12, 37, 37, 10, 37, 37, 11, 37, 36, 12, 37, + 40, 15, 40, 41, 17, 41, 41, 17, 41, 41, 16, 41, 43, 19, 43, 42, 20, 44, 43, 19, 43, 41, 17, 41, 40, 18, 42, 47, 25, 49, 61, 42, 63, 54, 34, 56, 44, 24, 46, 47, 27, 50, 47, 27, 50, 54, 35, 56, 51, 31, 53, 55, 36, 57, 60, 40, 61, 60, 43, 65, 56, 41, 63, + 54, 40, 61, 55, 40, 61, 61, 47, 66, 67, 54, 72, 78, 70, 85, 81, 75, 90, 79, 75, 89, 73, 72, 87, 68, 69, 83, 75, 78, 91, 79, 84, 97, 89, 95, 110, 108, 115, 129, 118, 125, 141, 112, 122, 135, 94, 106, 118, 88, 100, 112, 89, 101, 113, 92, 104, 116, 101, 114, 127, 106, 120, 136, + 110, 124, 142, 113, 127, 145, 114, 128, 146, 117, 133, 150, 116, 132, 149, 115, 131, 148, 116, 132, 149, 116, 131, 149, 116, 132, 151, 115, 132, 151, 117, 133, 152, 113, 129, 148, 112, 129, 148, 109, 126, 145, 103, 120, 139, 106, 122, 142, 103, 121, 141, 105, 124, 143, 107, 125, 146, 106, 126, 147, 103, 124, 145, + 102, 124, 145, 110, 133, 151, 119, 139, 156, 142, 160, 174, 155, 178, 189, 129, 155, 167, 113, 135, 146, 130, 152, 160, 137, 157, 166, 150, 169, 177, 149, 169, 177, 143, 165, 176, 118, 138, 153, 83, 97, 116, 72, 86, 108, 89, 102, 122, 78, 92, 114, 81, 95, 116, 69, 83, 105, 79, 93, 115, 84, 98, 121, + 72, 85, 111, 76, 88, 114, 78, 89, 116, 82, 91, 118, 81, 89, 116, 81, 89, 116, 81, 89, 116, 79, 86, 113, 73, 79, 104, 73, 79, 102, 70, 74, 98, 67, 71, 92, 68, 71, 90, 65, 66, 85, 65, 65, 82, 63, 63, 77, 57, 57, 71, 49, 49, 60, 45, 47, 55, 41, 44, 52, 41, 43, 51, + 33, 36, 42, 28, 31, 36, 26, 28, 35, 27, 28, 36, 32, 32, 40, 34, 34, 43, 36, 35, 44, 33, 34, 42, 32, 34, 42, 32, 34, 42, 36, 39, 47, 38, 42, 51, 41, 45, 57, 46, 51, 66, 49, 55, 74, 53, 60, 82, 56, 67, 89, 63, 77, 99, 76, 88, 110, 87, 97, 120, 97, 104, 130, + 110, 114, 142, 116, 120, 148, 122, 126, 154, 127, 131, 157, 129, 133, 158, 130, 134, 159, 134, 135, 161, 135, 133, 158, 133, 130, 154, 132, 129, 151, 130, 127, 144, 128, 122, 136, 124, 116, 128, 119, 110, 120, 109, 100, 108, 103, 92, 100, 94, 86, 93, 88, 80, 87, 86, 78, 86, 90, 83, 88, 95, 88, 93, + 53, 15, 52, 53, 14, 51, 55, 14, 51, 55, 14, 51, 57, 13, 51, 59, 15, 53, 58, 14, 52, 58, 16, 53, 59, 15, 54, 59, 15, 54, 59, 14, 54, 59, 13, 53, 60, 15, 54, 60, 16, 55, 59, 15, 54, 61, 18, 56, 60, 15, 54, 62, 17, 56, 62, 17, 56, 61, 16, 55, 61, 16, 55, + 62, 17, 56, 63, 17, 57, 63, 16, 59, 65, 20, 59, 66, 19, 59, 66, 19, 58, 66, 21, 60, 67, 19, 60, 66, 19, 59, 66, 19, 60, 68, 21, 60, 68, 20, 62, 69, 21, 63, 70, 22, 64, 70, 22, 64, 72, 21, 64, 72, 22, 65, 74, 23, 66, 75, 25, 67, 76, 24, 68, 74, 23, 67, + 76, 24, 69, 76, 24, 71, 77, 24, 70, 80, 26, 73, 80, 26, 73, 79, 24, 73, 80, 26, 75, 82, 30, 79, 82, 28, 78, 84, 27, 78, 85, 29, 79, 85, 29, 79, 85, 28, 79, 86, 29, 80, 89, 33, 82, 87, 29, 81, 89, 32, 82, 89, 32, 82, 89, 32, 83, 89, 30, 81, 90, 33, 83, + 90, 33, 83, 90, 32, 83, 92, 32, 86, 91, 30, 86, 90, 30, 86, 92, 33, 87, 90, 31, 84, 88, 29, 83, 87, 30, 81, 86, 30, 80, 84, 29, 78, 82, 30, 77, 82, 31, 77, 84, 38, 81, 82, 40, 81, 82, 40, 81, 83, 45, 83, 88, 54, 89, 85, 54, 88, 77, 51, 84, 73, 49, 81, + 72, 50, 80, 72, 51, 81, 71, 52, 81, 69, 53, 81, 67, 54, 81, 65, 57, 83, 67, 64, 88, 73, 72, 94, 74, 75, 98, 75, 80, 101, 79, 86, 106, 85, 97, 113, 106, 121, 135, 140, 153, 163, 163, 174, 180, 174, 185, 190, 175, 186, 190, 170, 182, 187, 166, 180, 184, 166, 178, 183, 167, 179, 185, + 163, 177, 184, 158, 173, 180, 153, 170, 177, 149, 165, 176, 153, 169, 178, 160, 175, 184, 160, 174, 184, 160, 175, 186, 160, 172, 184, 157, 169, 181, 151, 162, 174, 132, 144, 157, 106, 118, 132, 93, 99, 114, 75, 77, 93, 66, 61, 78, 63, 50, 68, 60, 47, 65, 55, 40, 61, 54, 40, 59, 53, 37, 57, + 51, 34, 52, 46, 26, 45, 45, 24, 44, 48, 27, 48, 42, 19, 42, 39, 15, 39, 41, 17, 41, 41, 19, 40, 39, 16, 39, 39, 14, 37, 40, 14, 38, 39, 14, 38, 41, 16, 40, 40, 14, 40, 40, 13, 39, 40, 13, 39, 39, 13, 39, 40, 16, 41, 38, 14, 40, 41, 18, 43, 38, 15, 40, + 40, 17, 42, 44, 21, 45, 43, 20, 45, 45, 22, 46, 45, 22, 46, 47, 24, 48, 49, 27, 51, 46, 23, 48, 44, 22, 46, 60, 42, 62, 53, 35, 56, 53, 34, 55, 54, 34, 56, 53, 33, 56, 57, 38, 60, 56, 38, 60, 58, 39, 60, 58, 41, 62, 66, 50, 71, 68, 55, 75, 64, 52, 72, + 61, 49, 68, 60, 48, 66, 65, 53, 70, 75, 66, 82, 89, 82, 97, 98, 94, 108, 98, 99, 111, 89, 94, 106, 83, 89, 100, 85, 92, 104, 90, 99, 111, 101, 110, 124, 120, 128, 142, 140, 146, 159, 133, 141, 154, 112, 125, 135, 96, 110, 121, 94, 106, 118, 98, 111, 123, 102, 115, 129, 109, 123, 140, + 116, 131, 147, 118, 132, 150, 118, 132, 150, 119, 134, 152, 117, 131, 150, 115, 131, 149, 117, 133, 151, 116, 132, 151, 116, 132, 151, 115, 132, 151, 118, 135, 154, 113, 132, 150, 111, 128, 147, 110, 127, 145, 103, 123, 141, 106, 126, 143, 102, 122, 141, 102, 123, 143, 101, 123, 142, 107, 128, 147, 108, 130, 148, + 118, 140, 157, 133, 154, 168, 111, 133, 145, 75, 91, 104, 53, 67, 78, 55, 67, 77, 53, 65, 75, 50, 62, 72, 59, 70, 78, 61, 72, 80, 72, 83, 92, 88, 107, 117, 125, 145, 156, 131, 146, 159, 118, 137, 155, 110, 127, 146, 96, 114, 134, 78, 95, 117, 84, 98, 119, 69, 83, 106, 70, 84, 108, + 82, 96, 119, 82, 94, 119, 91, 102, 126, 84, 94, 121, 81, 90, 117, 80, 88, 116, 81, 88, 116, 83, 90, 117, 75, 81, 107, 72, 78, 101, 70, 75, 98, 67, 70, 93, 67, 71, 91, 68, 71, 89, 65, 65, 82, 63, 64, 79, 58, 58, 71, 55, 56, 66, 49, 50, 59, 41, 44, 52, 43, 46, 54, + 36, 39, 44, 32, 35, 40, 29, 32, 38, 31, 33, 42, 34, 34, 43, 38, 38, 47, 38, 39, 49, 35, 37, 45, 32, 34, 42, 32, 34, 42, 36, 39, 46, 40, 44, 55, 42, 47, 61, 43, 49, 67, 48, 55, 74, 52, 59, 81, 56, 66, 89, 64, 77, 99, 75, 88, 110, 86, 97, 120, 98, 106, 133, + 107, 114, 141, 116, 120, 148, 123, 126, 154, 127, 130, 158, 130, 133, 160, 131, 134, 160, 134, 135, 161, 133, 132, 158, 133, 132, 157, 131, 129, 151, 128, 125, 144, 127, 122, 137, 125, 118, 130, 117, 109, 119, 111, 103, 109, 102, 92, 98, 96, 87, 93, 88, 80, 86, 86, 79, 85, 88, 81, 87, 93, 87, 92, + 53, 14, 50, 54, 16, 52, 55, 15, 51, 56, 15, 52, 54, 13, 51, 55, 14, 52, 56, 15, 53, 57, 14, 53, 56, 15, 52, 60, 16, 55, 58, 13, 53, 59, 14, 54, 59, 14, 53, 60, 16, 54, 59, 16, 53, 60, 15, 54, 61, 17, 56, 60, 14, 53, 61, 16, 55, 61, 16, 55, 62, 17, 56, + 63, 18, 57, 62, 17, 56, 63, 18, 58, 64, 16, 56, 65, 19, 58, 65, 18, 58, 65, 20, 59, 66, 19, 58, 68, 21, 60, 67, 20, 59, 67, 20, 60, 69, 20, 61, 69, 22, 61, 69, 20, 62, 70, 22, 64, 71, 22, 64, 72, 22, 65, 73, 23, 65, 75, 24, 67, 74, 24, 67, 76, 26, 69, + 75, 24, 68, 76, 24, 69, 78, 26, 70, 78, 25, 71, 80, 27, 73, 81, 27, 75, 81, 29, 77, 82, 30, 78, 82, 30, 78, 83, 30, 78, 83, 26, 78, 85, 29, 80, 85, 29, 80, 84, 26, 80, 85, 28, 80, 87, 31, 82, 88, 32, 83, 90, 34, 84, 91, 36, 85, 88, 32, 82, 91, 35, 84, + 90, 35, 84, 91, 35, 84, 91, 32, 85, 91, 32, 85, 90, 29, 84, 88, 28, 83, 89, 32, 83, 87, 28, 80, 85, 29, 80, 85, 30, 79, 84, 31, 78, 84, 33, 78, 83, 34, 78, 83, 38, 80, 80, 36, 78, 79, 36, 78, 80, 41, 79, 82, 45, 81, 80, 46, 80, 70, 40, 75, 70, 44, 77, + 75, 51, 81, 77, 57, 85, 74, 55, 85, 69, 55, 83, 65, 55, 83, 70, 65, 90, 78, 76, 98, 80, 81, 103, 77, 78, 102, 71, 76, 98, 74, 79, 101, 73, 82, 102, 79, 93, 110, 108, 121, 134, 141, 153, 163, 164, 174, 182, 174, 185, 189, 174, 185, 189, 171, 182, 187, 168, 180, 185, 169, 181, 187, + 167, 179, 185, 165, 178, 185, 158, 173, 180, 153, 169, 177, 155, 171, 179, 158, 174, 181, 158, 174, 182, 159, 174, 182, 159, 174, 183, 160, 175, 184, 161, 174, 183, 157, 171, 181, 149, 160, 172, 134, 144, 156, 115, 124, 137, 93, 100, 115, 82, 87, 103, 70, 70, 88, 66, 59, 77, 63, 54, 71, 63, 52, 70, + 61, 46, 64, 54, 37, 56, 54, 36, 55, 55, 36, 57, 49, 29, 50, 39, 17, 41, 41, 19, 43, 45, 22, 44, 42, 19, 42, 42, 18, 41, 42, 18, 42, 44, 21, 44, 46, 23, 47, 45, 21, 46, 45, 21, 46, 43, 18, 44, 44, 22, 47, 48, 26, 51, 52, 32, 56, 52, 32, 55, 42, 20, 44, + 41, 19, 43, 48, 26, 50, 47, 25, 49, 49, 28, 51, 49, 28, 51, 52, 31, 53, 54, 33, 55, 53, 33, 55, 57, 39, 62, 55, 40, 61, 52, 38, 59, 59, 46, 66, 64, 51, 71, 64, 50, 70, 66, 51, 72, 65, 49, 69, 64, 49, 67, 63, 53, 72, 77, 70, 88, 81, 77, 93, 73, 68, 85, + 69, 62, 79, 74, 68, 84, 73, 68, 83, 82, 83, 97, 100, 101, 116, 110, 114, 127, 118, 122, 135, 113, 120, 130, 109, 118, 129, 110, 119, 132, 112, 123, 134, 119, 132, 144, 140, 150, 162, 159, 166, 179, 158, 167, 177, 138, 155, 164, 112, 132, 139, 104, 124, 132, 106, 124, 134, 108, 125, 137, 114, 131, 146, + 125, 141, 156, 126, 142, 159, 128, 144, 161, 127, 143, 160, 127, 143, 160, 122, 138, 155, 116, 134, 152, 117, 135, 152, 117, 135, 154, 113, 133, 151, 115, 134, 152, 113, 133, 151, 117, 135, 153, 108, 129, 146, 108, 128, 146, 109, 129, 146, 97, 119, 137, 105, 127, 145, 107, 132, 148, 126, 149, 163, 129, 153, 166, + 106, 127, 138, 63, 77, 88, 37, 48, 61, 23, 37, 50, 20, 36, 49, 45, 57, 68, 23, 38, 49, 32, 45, 54, 26, 40, 49, 23, 37, 47, 29, 42, 52, 34, 47, 60, 64, 74, 84, 105, 118, 127, 126, 146, 157, 143, 165, 175, 112, 130, 148, 81, 99, 120, 75, 91, 113, 75, 90, 111, 75, 90, 113, + 70, 85, 109, 79, 94, 118, 86, 99, 122, 87, 97, 120, 85, 95, 121, 84, 93, 120, 87, 95, 123, 78, 87, 115, 75, 82, 109, 74, 81, 105, 72, 79, 101, 81, 86, 105, 72, 76, 95, 72, 75, 92, 66, 66, 82, 63, 64, 79, 59, 59, 72, 60, 61, 71, 52, 54, 63, 50, 52, 60, 43, 46, 54, + 39, 43, 48, 32, 36, 41, 32, 35, 41, 33, 35, 43, 38, 40, 49, 39, 40, 50, 40, 41, 51, 36, 37, 47, 33, 35, 44, 34, 35, 45, 39, 42, 52, 41, 44, 57, 44, 50, 64, 46, 51, 70, 49, 55, 74, 54, 62, 82, 57, 67, 89, 63, 76, 98, 75, 87, 111, 84, 96, 119, 97, 106, 132, + 106, 113, 140, 114, 121, 148, 122, 126, 154, 125, 129, 157, 129, 132, 160, 131, 134, 162, 133, 135, 161, 131, 132, 158, 132, 132, 157, 131, 129, 153, 128, 124, 145, 126, 121, 137, 123, 116, 130, 118, 110, 120, 111, 102, 110, 105, 96, 102, 96, 87, 91, 89, 80, 84, 86, 79, 84, 89, 81, 86, 95, 88, 94, + 55, 15, 51, 54, 14, 51, 54, 13, 50, 57, 16, 53, 55, 14, 51, 56, 15, 52, 56, 15, 52, 56, 15, 52, 57, 16, 53, 58, 15, 53, 60, 15, 54, 60, 15, 54, 58, 13, 52, 59, 16, 53, 60, 17, 54, 61, 16, 53, 61, 16, 55, 61, 16, 55, 62, 17, 56, 62, 18, 56, 62, 17, 56, + 62, 17, 56, 64, 19, 58, 62, 17, 56, 66, 18, 57, 67, 20, 59, 65, 18, 58, 65, 19, 58, 66, 19, 58, 67, 20, 59, 68, 21, 60, 68, 21, 60, 69, 22, 61, 70, 20, 60, 70, 22, 62, 72, 22, 64, 72, 24, 66, 72, 22, 64, 73, 23, 65, 73, 23, 65, 74, 24, 67, 74, 24, 67, + 77, 27, 70, 77, 26, 70, 77, 26, 70, 79, 25, 72, 80, 28, 74, 78, 26, 74, 81, 29, 76, 80, 28, 76, 84, 32, 79, 84, 31, 80, 88, 38, 85, 94, 43, 89, 97, 48, 89, 98, 48, 91, 98, 48, 91, 99, 49, 92, 100, 49, 94, 101, 49, 97, 102, 51, 98, 104, 51, 98, 103, 52, 98, + 103, 52, 96, 104, 53, 98, 103, 49, 96, 104, 50, 96, 102, 48, 94, 100, 45, 91, 95, 41, 87, 91, 35, 83, 88, 33, 81, 85, 30, 79, 82, 28, 77, 86, 36, 80, 81, 33, 77, 80, 34, 77, 79, 34, 75, 76, 33, 73, 75, 33, 71, 75, 36, 73, 73, 36, 72, 72, 39, 74, 73, 45, 77, + 73, 48, 77, 73, 51, 79, 73, 56, 82, 75, 61, 89, 80, 72, 98, 83, 79, 104, 83, 80, 106, 76, 76, 101, 69, 72, 96, 65, 68, 92, 64, 69, 92, 66, 72, 92, 67, 76, 96, 78, 93, 108, 106, 122, 135, 140, 153, 164, 166, 175, 183, 178, 187, 191, 178, 188, 192, 173, 184, 189, 167, 179, 184, + 170, 182, 188, 167, 179, 185, 164, 177, 183, 158, 174, 181, 157, 173, 180, 158, 174, 181, 158, 174, 181, 158, 174, 182, 159, 174, 183, 159, 174, 183, 161, 176, 185, 164, 177, 187, 164, 175, 185, 159, 170, 180, 148, 159, 171, 136, 149, 162, 116, 129, 144, 98, 112, 126, 79, 87, 102, 71, 76, 91, 75, 74, 89, + 73, 65, 82, 67, 57, 75, 62, 50, 68, 64, 49, 67, 56, 39, 60, 48, 29, 51, 43, 23, 45, 47, 26, 48, 49, 28, 50, 52, 30, 52, 53, 32, 54, 52, 31, 53, 52, 32, 55, 53, 32, 56, 51, 29, 53, 51, 28, 52, 53, 33, 56, 55, 36, 61, 62, 45, 68, 65, 48, 71, 51, 34, 57, + 50, 33, 55, 52, 36, 57, 53, 36, 56, 55, 37, 57, 60, 43, 61, 65, 51, 67, 67, 57, 74, 66, 55, 74, 67, 58, 75, 64, 56, 73, 66, 58, 75, 69, 61, 78, 75, 67, 84, 78, 70, 89, 83, 78, 94, 80, 75, 91, 75, 71, 85, 83, 78, 92, 101, 100, 112, 105, 105, 116, 92, 93, 104, + 96, 96, 109, 95, 95, 109, 91, 97, 111, 101, 109, 122, 115, 123, 135, 132, 140, 150, 143, 152, 161, 147, 156, 165, 145, 154, 163, 142, 152, 162, 143, 152, 162, 149, 160, 169, 159, 173, 179, 175, 183, 192, 180, 189, 196, 166, 181, 187, 143, 164, 169, 131, 152, 158, 128, 149, 155, 127, 147, 155, 129, 147, 158, + 137, 155, 166, 146, 163, 174, 145, 160, 173, 143, 160, 172, 137, 153, 167, 131, 147, 161, 119, 140, 154, 117, 137, 153, 117, 137, 154, 116, 137, 155, 122, 141, 158, 124, 141, 158, 122, 141, 156, 121, 138, 155, 112, 131, 148, 113, 132, 149, 105, 126, 143, 114, 137, 154, 127, 151, 165, 102, 126, 139, 59, 77, 90, + 36, 54, 66, 20, 36, 48, 20, 34, 45, 17, 31, 45, 55, 67, 79, 30, 45, 58, 29, 43, 56, 26, 41, 53, 25, 40, 52, 31, 44, 56, 27, 41, 54, 26, 39, 53, 30, 41, 53, 37, 50, 62, 70, 86, 96, 107, 125, 133, 142, 157, 166, 105, 123, 140, 82, 99, 118, 77, 93, 114, 65, 83, 105, + 77, 93, 116, 84, 100, 121, 86, 100, 123, 85, 96, 120, 81, 92, 117, 101, 112, 136, 97, 108, 132, 80, 90, 117, 74, 84, 109, 76, 85, 108, 91, 99, 119, 78, 84, 103, 74, 78, 96, 72, 77, 93, 68, 72, 86, 65, 66, 79, 61, 63, 73, 63, 64, 74, 57, 60, 69, 52, 55, 63, 47, 51, 58, + 37, 42, 49, 34, 38, 43, 34, 38, 42, 33, 35, 44, 39, 41, 51, 41, 42, 52, 41, 43, 53, 38, 40, 51, 35, 37, 48, 35, 37, 48, 38, 41, 52, 42, 46, 58, 46, 51, 66, 44, 51, 68, 51, 57, 76, 54, 62, 81, 58, 68, 89, 64, 77, 99, 76, 88, 111, 84, 96, 121, 95, 105, 132, + 103, 112, 140, 112, 119, 146, 120, 126, 153, 127, 131, 158, 127, 131, 159, 130, 133, 161, 131, 133, 160, 132, 133, 158, 129, 128, 154, 129, 128, 151, 128, 125, 147, 126, 121, 140, 123, 116, 131, 118, 110, 120, 112, 104, 112, 104, 97, 101, 99, 90, 93, 90, 81, 84, 89, 80, 83, 90, 82, 85, 92, 86, 91, + 54, 13, 50, 55, 15, 51, 55, 13, 51, 55, 14, 51, 55, 14, 50, 55, 14, 51, 56, 15, 52, 57, 15, 52, 58, 15, 52, 57, 13, 52, 58, 13, 52, 59, 14, 53, 59, 16, 53, 59, 16, 52, 60, 15, 52, 59, 14, 53, 60, 15, 54, 60, 15, 54, 62, 15, 56, 63, 17, 56, 61, 16, 55, + 63, 18, 57, 63, 19, 57, 63, 17, 56, 64, 17, 56, 66, 19, 58, 65, 18, 58, 66, 19, 59, 66, 19, 58, 66, 19, 58, 66, 20, 58, 67, 20, 59, 70, 23, 61, 70, 20, 60, 70, 20, 61, 70, 19, 62, 71, 22, 64, 72, 23, 65, 72, 21, 65, 74, 24, 66, 74, 24, 66, 76, 24, 67, + 76, 26, 69, 76, 25, 68, 76, 25, 69, 79, 25, 70, 79, 26, 73, 80, 28, 75, 84, 32, 79, 85, 34, 81, 86, 37, 84, 91, 42, 87, 99, 50, 93, 99, 51, 93, 98, 49, 92, 97, 46, 91, 96, 45, 90, 96, 44, 90, 95, 43, 90, 95, 41, 91, 96, 42, 92, 95, 41, 91, 96, 43, 92, + 96, 42, 92, 98, 43, 91, 100, 46, 93, 100, 46, 93, 101, 47, 94, 103, 51, 93, 102, 49, 92, 103, 52, 93, 101, 52, 92, 98, 49, 91, 95, 47, 88, 91, 44, 84, 85, 37, 80, 77, 30, 72, 71, 23, 65, 73, 29, 67, 73, 31, 68, 73, 32, 69, 73, 33, 69, 72, 37, 71, 70, 38, 72, + 66, 39, 68, 70, 48, 75, 76, 59, 84, 80, 68, 93, 81, 73, 99, 78, 73, 99, 73, 70, 97, 70, 68, 94, 70, 69, 94, 66, 68, 92, 66, 69, 91, 66, 72, 92, 72, 80, 99, 73, 86, 103, 82, 98, 114, 105, 121, 135, 141, 153, 164, 168, 178, 185, 178, 187, 191, 174, 185, 189, 169, 180, 185, + 168, 180, 186, 168, 180, 186, 164, 177, 183, 160, 173, 180, 158, 173, 180, 158, 174, 181, 158, 175, 182, 158, 174, 181, 158, 174, 181, 158, 174, 183, 158, 174, 183, 161, 178, 185, 163, 177, 184, 164, 177, 185, 165, 176, 185, 162, 174, 183, 156, 166, 177, 144, 155, 167, 126, 137, 152, 105, 116, 130, 93, 100, 114, + 88, 91, 106, 76, 74, 91, 69, 65, 81, 68, 60, 77, 69, 57, 75, 61, 46, 66, 50, 33, 54, 55, 35, 55, 56, 36, 57, 58, 38, 58, 60, 40, 60, 60, 41, 62, 58, 40, 61, 58, 39, 60, 58, 39, 61, 58, 38, 61, 60, 41, 64, 62, 47, 70, 69, 56, 77, 69, 60, 80, 65, 57, 77, + 67, 59, 78, 66, 58, 76, 58, 52, 67, 66, 59, 72, 78, 71, 84, 90, 85, 98, 89, 92, 106, 89, 94, 108, 91, 96, 108, 88, 92, 104, 84, 89, 100, 84, 90, 101, 88, 97, 109, 107, 114, 128, 121, 127, 140, 114, 121, 134, 104, 115, 124, 110, 122, 132, 130, 138, 148, 138, 144, 153, 129, 136, 144, + 126, 132, 141, 130, 136, 147, 133, 145, 156, 130, 144, 154, 136, 150, 158, 148, 160, 167, 165, 175, 182, 176, 184, 190, 173, 183, 190, 173, 183, 191, 169, 180, 187, 172, 183, 190, 181, 192, 197, 190, 199, 205, 198, 206, 212, 193, 205, 210, 181, 196, 200, 171, 188, 194, 164, 182, 188, 158, 178, 183, 159, 178, 184, + 162, 179, 186, 171, 185, 192, 169, 184, 189, 168, 182, 187, 156, 173, 181, 138, 160, 168, 131, 153, 162, 121, 146, 157, 118, 141, 157, 124, 147, 162, 130, 150, 164, 136, 153, 166, 135, 153, 166, 136, 153, 166, 128, 149, 163, 122, 144, 158, 124, 146, 160, 134, 154, 166, 83, 108, 122, 38, 48, 60, 28, 41, 52, + 18, 33, 44, 20, 37, 49, 23, 39, 51, 46, 61, 74, 34, 50, 65, 31, 48, 65, 30, 47, 63, 31, 47, 64, 36, 53, 69, 38, 54, 69, 28, 47, 61, 32, 49, 62, 26, 40, 53, 37, 50, 62, 25, 42, 53, 45, 59, 68, 96, 111, 120, 132, 148, 157, 108, 123, 139, 80, 98, 119, 66, 87, 109, + 86, 103, 125, 83, 99, 121, 80, 95, 119, 107, 123, 146, 118, 131, 152, 94, 108, 131, 82, 95, 121, 87, 101, 126, 86, 99, 124, 98, 112, 132, 91, 102, 121, 90, 97, 115, 87, 91, 107, 80, 84, 99, 72, 78, 91, 66, 70, 82, 70, 71, 82, 66, 67, 78, 61, 63, 73, 54, 58, 67, 50, 55, 63, + 43, 49, 56, 34, 39, 45, 37, 40, 46, 37, 40, 49, 44, 46, 56, 45, 47, 58, 46, 48, 59, 40, 42, 53, 34, 37, 48, 35, 38, 49, 39, 45, 56, 43, 49, 62, 47, 52, 67, 49, 57, 73, 53, 60, 78, 55, 63, 82, 58, 68, 89, 66, 79, 102, 76, 88, 112, 85, 97, 122, 95, 106, 132, + 104, 112, 141, 112, 120, 148, 120, 126, 155, 127, 131, 159, 127, 130, 159, 130, 133, 161, 130, 133, 161, 129, 131, 157, 130, 131, 156, 127, 127, 151, 125, 123, 145, 125, 120, 141, 124, 117, 134, 118, 112, 123, 112, 104, 113, 104, 97, 101, 97, 87, 90, 93, 84, 86, 90, 79, 81, 90, 80, 83, 93, 86, 89, + 54, 13, 49, 54, 13, 49, 54, 13, 49, 56, 14, 51, 54, 14, 51, 57, 15, 52, 56, 14, 51, 57, 14, 51, 58, 15, 52, 58, 15, 52, 58, 14, 52, 58, 14, 52, 58, 15, 52, 60, 16, 53, 60, 17, 54, 60, 16, 53, 61, 16, 55, 60, 16, 55, 62, 16, 54, 62, 15, 54, 64, 18, 57, + 63, 16, 55, 62, 15, 54, 64, 19, 56, 65, 18, 57, 65, 18, 57, 65, 19, 58, 65, 18, 57, 66, 19, 58, 66, 19, 58, 68, 18, 58, 68, 20, 59, 70, 20, 60, 69, 19, 60, 71, 22, 62, 70, 20, 62, 72, 22, 64, 71, 21, 64, 74, 24, 65, 73, 22, 65, 75, 24, 66, 75, 24, 67, + 77, 24, 68, 76, 23, 67, 79, 26, 70, 78, 26, 70, 80, 28, 73, 84, 33, 76, 83, 32, 78, 85, 33, 80, 86, 36, 82, 85, 33, 80, 84, 33, 79, 84, 31, 78, 84, 30, 78, 85, 30, 79, 86, 30, 80, 85, 28, 80, 87, 30, 82, 87, 28, 84, 88, 30, 85, 89, 32, 84, 88, 32, 83, + 88, 32, 84, 89, 32, 83, 89, 30, 81, 89, 31, 82, 88, 32, 81, 86, 30, 79, 89, 32, 80, 88, 32, 80, 89, 36, 83, 89, 39, 84, 91, 41, 86, 94, 48, 88, 96, 53, 90, 94, 53, 86, 86, 44, 80, 81, 40, 75, 73, 30, 67, 70, 27, 65, 72, 31, 67, 70, 33, 68, 64, 31, 64, + 65, 34, 64, 72, 48, 73, 73, 57, 81, 75, 61, 86, 71, 62, 88, 75, 68, 95, 73, 69, 95, 75, 72, 98, 72, 69, 94, 71, 73, 94, 69, 72, 93, 70, 75, 96, 76, 83, 102, 75, 84, 103, 82, 95, 114, 85, 100, 117, 106, 122, 135, 147, 157, 167, 170, 179, 186, 178, 187, 191, 173, 184, 188, + 168, 179, 183, 168, 180, 185, 163, 176, 182, 159, 173, 179, 160, 173, 180, 162, 175, 182, 160, 174, 181, 157, 174, 180, 157, 173, 180, 157, 174, 181, 159, 176, 183, 162, 178, 185, 163, 179, 185, 165, 179, 186, 166, 179, 186, 168, 179, 187, 168, 178, 187, 166, 176, 186, 160, 170, 181, 145, 159, 171, 131, 145, 159, + 117, 131, 146, 102, 112, 129, 88, 91, 107, 78, 78, 95, 80, 75, 90, 75, 66, 82, 69, 57, 74, 63, 49, 66, 61, 45, 63, 61, 46, 63, 70, 55, 73, 67, 52, 70, 66, 50, 70, 61, 47, 67, 64, 50, 69, 65, 50, 71, 64, 52, 72, 69, 59, 78, 86, 78, 96, 87, 83, 100, 92, 90, 105, + 104, 102, 117, 104, 103, 116, 96, 96, 108, 91, 95, 106, 114, 118, 129, 131, 139, 149, 141, 151, 161, 146, 156, 166, 144, 155, 165, 139, 151, 161, 136, 148, 157, 131, 144, 154, 137, 149, 158, 160, 169, 178, 169, 179, 187, 170, 180, 189, 153, 172, 179, 160, 177, 184, 171, 182, 189, 170, 183, 189, 163, 176, 182, + 158, 170, 178, 167, 178, 184, 169, 180, 187, 165, 178, 184, 157, 171, 177, 168, 180, 185, 182, 193, 198, 192, 203, 207, 194, 204, 208, 191, 201, 208, 189, 200, 207, 188, 200, 206, 198, 207, 213, 203, 212, 216, 210, 218, 222, 209, 218, 222, 208, 218, 222, 201, 212, 215, 196, 208, 212, 188, 203, 208, 185, 202, 206, + 187, 202, 207, 194, 207, 212, 193, 206, 211, 191, 204, 209, 181, 197, 203, 165, 185, 191, 150, 176, 183, 140, 165, 173, 140, 163, 171, 142, 163, 172, 148, 167, 176, 153, 171, 181, 156, 173, 183, 156, 174, 184, 152, 170, 182, 142, 162, 173, 131, 154, 164, 72, 92, 103, 46, 54, 65, 25, 34, 45, 28, 38, 50, + 27, 41, 52, 28, 47, 59, 51, 71, 83, 43, 64, 79, 50, 71, 86, 42, 63, 79, 59, 76, 92, 43, 63, 80, 41, 61, 78, 38, 58, 76, 33, 55, 72, 36, 56, 71, 33, 51, 65, 34, 49, 61, 34, 49, 61, 31, 47, 59, 57, 74, 85, 98, 115, 124, 135, 153, 162, 107, 123, 140, 78, 97, 118, + 79, 97, 119, 85, 103, 126, 117, 132, 152, 106, 123, 145, 94, 112, 135, 91, 108, 131, 92, 109, 131, 91, 109, 132, 111, 128, 147, 108, 125, 143, 107, 123, 140, 95, 105, 120, 90, 97, 113, 81, 88, 103, 75, 82, 95, 73, 82, 92, 72, 77, 86, 71, 75, 84, 65, 70, 79, 65, 71, 78, 51, 58, 64, + 46, 51, 59, 38, 44, 50, 37, 41, 48, 45, 46, 57, 52, 54, 65, 53, 55, 66, 46, 48, 59, 43, 47, 58, 34, 40, 51, 33, 40, 50, 41, 47, 59, 46, 52, 65, 50, 55, 71, 50, 57, 74, 53, 60, 78, 56, 65, 84, 63, 73, 94, 70, 83, 105, 76, 89, 112, 85, 98, 124, 93, 104, 131, + 102, 114, 141, 111, 119, 148, 119, 125, 156, 123, 128, 158, 128, 132, 160, 127, 132, 160, 130, 133, 161, 127, 130, 155, 128, 130, 155, 125, 126, 150, 126, 124, 146, 123, 119, 141, 121, 117, 134, 118, 112, 124, 114, 105, 115, 107, 97, 103, 100, 91, 94, 92, 81, 83, 90, 79, 81, 90, 79, 81, 95, 85, 88, + 54, 15, 49, 55, 15, 50, 55, 13, 49, 57, 15, 51, 56, 14, 51, 56, 15, 52, 58, 16, 52, 56, 13, 50, 57, 14, 51, 59, 15, 52, 58, 14, 51, 59, 15, 52, 59, 15, 52, 58, 15, 52, 60, 16, 53, 59, 15, 52, 61, 16, 54, 61, 16, 55, 61, 15, 54, 63, 17, 55, 63, 16, 55, + 63, 16, 55, 64, 18, 56, 63, 17, 55, 64, 17, 56, 65, 18, 57, 65, 18, 57, 67, 20, 59, 67, 19, 58, 67, 20, 59, 67, 19, 58, 68, 18, 58, 70, 20, 59, 71, 21, 61, 69, 20, 60, 71, 21, 62, 72, 22, 64, 72, 22, 64, 74, 24, 66, 73, 23, 65, 73, 22, 65, 76, 26, 68, + 77, 23, 67, 77, 24, 68, 78, 25, 68, 80, 26, 70, 80, 28, 71, 79, 25, 71, 80, 25, 73, 81, 28, 74, 80, 24, 73, 82, 29, 76, 82, 28, 75, 83, 29, 76, 84, 29, 76, 85, 30, 77, 84, 26, 77, 85, 28, 79, 84, 27, 79, 84, 27, 79, 85, 27, 80, 88, 31, 82, 86, 29, 81, + 88, 30, 81, 88, 30, 81, 88, 29, 80, 89, 30, 81, 88, 29, 79, 88, 31, 81, 86, 30, 79, 85, 29, 78, 84, 28, 77, 83, 29, 76, 79, 25, 72, 80, 30, 74, 78, 29, 72, 82, 36, 74, 85, 44, 78, 92, 54, 85, 93, 57, 87, 85, 49, 80, 76, 39, 72, 71, 35, 68, 68, 36, 66, + 69, 39, 68, 69, 44, 70, 64, 46, 71, 62, 48, 73, 72, 62, 87, 76, 70, 95, 71, 66, 93, 70, 67, 93, 71, 68, 93, 69, 71, 92, 67, 70, 91, 71, 76, 97, 74, 80, 100, 80, 88, 108, 79, 91, 111, 80, 94, 112, 85, 101, 116, 114, 128, 140, 153, 163, 172, 176, 185, 189, 178, 187, 190, + 173, 184, 187, 167, 179, 182, 160, 174, 180, 159, 173, 179, 159, 173, 179, 162, 176, 182, 162, 176, 182, 158, 173, 180, 156, 172, 178, 157, 173, 181, 160, 176, 183, 162, 178, 185, 164, 179, 185, 165, 179, 185, 164, 178, 184, 165, 179, 185, 165, 178, 186, 168, 180, 188, 167, 180, 189, 166, 177, 188, 161, 174, 184, + 154, 165, 177, 140, 152, 166, 118, 134, 149, 98, 112, 127, 89, 100, 113, 93, 93, 108, 88, 83, 98, 77, 71, 86, 69, 62, 78, 70, 62, 80, 75, 67, 84, 79, 69, 86, 74, 65, 81, 69, 60, 76, 72, 64, 80, 76, 69, 85, 78, 70, 87, 89, 86, 102, 105, 103, 118, 121, 122, 135, 126, 130, 144, + 144, 151, 162, 153, 161, 171, 149, 159, 168, 146, 160, 166, 160, 171, 179, 178, 187, 195, 190, 196, 202, 194, 200, 206, 191, 200, 206, 188, 198, 203, 186, 197, 202, 181, 194, 200, 184, 197, 203, 195, 205, 211, 204, 212, 218, 202, 210, 216, 199, 210, 215, 201, 212, 217, 202, 213, 218, 198, 210, 215, 192, 206, 210, + 190, 203, 208, 196, 205, 210, 196, 207, 211, 189, 203, 208, 180, 197, 201, 187, 201, 204, 196, 207, 211, 205, 214, 218, 207, 216, 220, 204, 215, 221, 204, 215, 220, 203, 215, 220, 205, 216, 220, 209, 221, 225, 214, 225, 229, 218, 228, 231, 221, 228, 231, 217, 226, 230, 212, 224, 228, 208, 220, 224, 207, 218, 221, + 206, 218, 221, 211, 220, 223, 210, 220, 223, 211, 221, 225, 204, 215, 219, 195, 210, 216, 181, 200, 206, 170, 193, 200, 171, 191, 198, 171, 187, 194, 170, 187, 194, 176, 191, 199, 174, 192, 200, 176, 191, 200, 175, 189, 198, 142, 164, 173, 64, 81, 92, 33, 44, 54, 19, 28, 38, 23, 32, 43, 27, 37, 47, + 22, 38, 50, 34, 55, 68, 39, 60, 74, 41, 62, 78, 52, 74, 90, 52, 74, 90, 35, 60, 76, 50, 70, 87, 39, 61, 78, 51, 71, 89, 44, 65, 83, 39, 62, 81, 38, 61, 78, 40, 61, 77, 38, 59, 74, 40, 59, 73, 40, 60, 72, 54, 71, 83, 83, 99, 109, 134, 149, 158, 87, 110, 128, + 106, 127, 146, 101, 121, 143, 102, 120, 143, 104, 122, 145, 102, 121, 142, 99, 117, 138, 101, 120, 140, 133, 151, 167, 134, 151, 167, 131, 149, 162, 119, 137, 152, 110, 127, 142, 99, 116, 133, 96, 112, 125, 92, 106, 119, 93, 106, 118, 85, 95, 104, 81, 91, 100, 81, 91, 100, 71, 79, 87, 61, 69, 76, + 52, 60, 66, 46, 54, 60, 49, 57, 64, 52, 56, 67, 58, 60, 71, 60, 62, 73, 51, 54, 65, 45, 50, 61, 37, 46, 56, 36, 45, 55, 46, 54, 65, 51, 58, 71, 54, 60, 75, 55, 63, 78, 56, 64, 81, 63, 72, 90, 70, 80, 101, 74, 86, 109, 78, 92, 115, 84, 97, 124, 94, 107, 133, + 102, 112, 141, 111, 119, 149, 118, 126, 156, 121, 126, 157, 126, 129, 159, 128, 131, 160, 128, 132, 160, 127, 131, 156, 126, 127, 153, 125, 126, 150, 125, 124, 146, 123, 120, 142, 121, 118, 136, 117, 111, 123, 114, 105, 114, 108, 97, 104, 101, 90, 94, 94, 84, 87, 93, 79, 81, 94, 82, 84, 96, 84, 87, + 54, 14, 49, 54, 14, 49, 54, 13, 49, 56, 15, 51, 55, 12, 50, 56, 13, 50, 57, 14, 51, 58, 15, 52, 58, 14, 51, 57, 13, 50, 58, 14, 51, 58, 14, 51, 59, 15, 52, 59, 16, 53, 59, 15, 52, 59, 15, 52, 61, 17, 54, 61, 17, 54, 60, 15, 54, 62, 15, 54, 63, 16, 55, + 63, 16, 55, 63, 16, 54, 64, 16, 56, 63, 17, 56, 64, 17, 56, 65, 18, 57, 66, 19, 58, 66, 19, 58, 67, 20, 58, 67, 19, 58, 68, 19, 58, 69, 20, 60, 68, 18, 59, 69, 19, 60, 71, 21, 62, 71, 21, 63, 71, 21, 63, 72, 22, 64, 73, 23, 65, 73, 21, 65, 75, 23, 65, + 76, 23, 66, 75, 21, 65, 77, 24, 67, 78, 25, 68, 79, 25, 69, 78, 24, 70, 79, 24, 71, 81, 26, 73, 81, 27, 73, 81, 28, 75, 82, 28, 75, 81, 25, 74, 84, 27, 76, 84, 24, 75, 85, 28, 78, 84, 28, 78, 85, 28, 79, 86, 30, 79, 86, 30, 80, 85, 28, 78, 86, 28, 79, + 86, 29, 80, 88, 29, 79, 88, 29, 80, 88, 29, 80, 87, 29, 80, 85, 26, 77, 84, 27, 76, 85, 29, 76, 82, 28, 74, 81, 27, 73, 79, 25, 72, 78, 26, 71, 74, 23, 67, 72, 23, 66, 72, 25, 64, 72, 28, 65, 74, 32, 66, 80, 44, 74, 91, 60, 88, 94, 65, 92, 83, 53, 80, + 69, 39, 68, 59, 33, 61, 62, 44, 70, 66, 52, 77, 70, 60, 85, 68, 61, 86, 64, 58, 85, 68, 64, 89, 71, 70, 94, 70, 72, 93, 69, 72, 94, 72, 74, 96, 76, 80, 101, 79, 86, 106, 76, 84, 104, 76, 86, 104, 79, 92, 108, 89, 103, 117, 126, 139, 150, 163, 172, 178, 178, 186, 189, + 180, 188, 191, 172, 185, 187, 165, 178, 182, 163, 177, 182, 161, 175, 180, 163, 177, 183, 163, 177, 183, 162, 176, 182, 156, 171, 177, 155, 170, 176, 158, 172, 180, 161, 175, 182, 165, 179, 185, 164, 179, 183, 164, 178, 184, 166, 180, 186, 166, 180, 186, 161, 177, 183, 165, 180, 187, 166, 181, 188, 169, 181, 191, + 169, 181, 191, 160, 173, 185, 152, 166, 179, 136, 152, 166, 116, 134, 147, 112, 124, 138, 106, 110, 124, 101, 100, 115, 88, 88, 103, 85, 87, 102, 95, 99, 114, 99, 102, 117, 90, 95, 108, 85, 86, 101, 92, 90, 106, 102, 102, 117, 102, 104, 120, 111, 114, 129, 135, 143, 156, 149, 158, 171, 159, 171, 182, + 174, 184, 193, 182, 191, 199, 184, 195, 203, 188, 198, 204, 194, 204, 209, 204, 212, 217, 212, 218, 222, 215, 221, 224, 213, 222, 225, 212, 220, 224, 212, 220, 224, 210, 218, 221, 210, 218, 221, 215, 223, 226, 221, 227, 231, 222, 229, 232, 221, 228, 232, 222, 228, 233, 222, 229, 233, 219, 227, 231, 214, 224, 227, + 212, 222, 226, 215, 223, 227, 216, 224, 227, 209, 220, 224, 204, 215, 219, 202, 213, 217, 206, 218, 220, 212, 222, 225, 215, 223, 228, 215, 225, 228, 214, 225, 229, 214, 224, 229, 213, 224, 228, 215, 226, 230, 218, 229, 233, 223, 232, 236, 224, 233, 237, 223, 232, 236, 222, 232, 235, 219, 230, 233, 216, 228, 230, + 218, 228, 231, 220, 229, 232, 222, 231, 234, 222, 231, 234, 218, 227, 231, 212, 223, 227, 208, 220, 225, 203, 216, 220, 199, 211, 216, 194, 209, 214, 189, 206, 212, 192, 208, 214, 192, 206, 213, 192, 204, 211, 166, 183, 192, 86, 103, 114, 33, 44, 54, 15, 26, 36, 31, 40, 50, 31, 43, 55, 36, 49, 61, + 60, 72, 85, 37, 56, 72, 35, 58, 73, 48, 68, 84, 59, 82, 98, 39, 67, 84, 42, 70, 86, 40, 68, 84, 51, 76, 93, 53, 77, 95, 51, 75, 96, 51, 75, 95, 52, 77, 94, 44, 70, 87, 48, 71, 87, 43, 63, 79, 40, 59, 74, 35, 55, 68, 36, 55, 67, 88, 100, 110, 142, 157, 167, + 105, 128, 147, 108, 130, 151, 116, 133, 154, 125, 140, 161, 126, 143, 161, 117, 139, 156, 139, 165, 180, 142, 168, 181, 154, 173, 185, 157, 174, 184, 162, 175, 186, 141, 160, 171, 136, 155, 166, 139, 156, 164, 133, 148, 155, 125, 140, 149, 117, 130, 139, 113, 125, 135, 96, 110, 119, 88, 101, 109, 73, 84, 91, + 60, 72, 75, 53, 65, 68, 56, 64, 69, 62, 67, 79, 66, 69, 80, 63, 67, 78, 60, 65, 74, 52, 58, 68, 44, 54, 63, 47, 57, 67, 53, 61, 73, 55, 62, 75, 56, 64, 78, 55, 64, 79, 63, 70, 88, 67, 77, 95, 69, 80, 100, 75, 88, 111, 78, 92, 116, 83, 96, 121, 93, 106, 131, + 103, 114, 142, 111, 119, 149, 117, 125, 155, 124, 129, 159, 126, 129, 160, 127, 131, 160, 128, 132, 160, 126, 129, 157, 124, 127, 152, 123, 124, 149, 122, 123, 146, 122, 120, 142, 119, 116, 135, 118, 111, 125, 115, 107, 116, 110, 98, 105, 101, 89, 95, 100, 85, 90, 92, 79, 81, 91, 78, 80, 95, 84, 86, + 54, 14, 49, 54, 14, 50, 54, 14, 49, 55, 14, 50, 55, 13, 49, 57, 15, 52, 57, 14, 51, 56, 14, 51, 57, 14, 51, 58, 14, 51, 59, 15, 52, 59, 15, 52, 59, 15, 52, 59, 16, 53, 59, 16, 53, 60, 15, 52, 61, 17, 54, 61, 17, 54, 59, 14, 53, 61, 16, 55, 62, 17, 55, + 64, 18, 56, 64, 18, 55, 63, 16, 55, 64, 17, 56, 63, 16, 55, 65, 17, 57, 65, 18, 57, 65, 18, 57, 65, 18, 57, 67, 19, 58, 67, 19, 58, 69, 20, 60, 70, 20, 60, 69, 19, 61, 70, 21, 62, 71, 21, 63, 71, 21, 63, 72, 22, 64, 73, 23, 65, 74, 23, 65, 74, 23, 65, + 76, 24, 66, 77, 24, 67, 77, 24, 67, 77, 24, 67, 77, 24, 67, 78, 23, 70, 80, 26, 72, 82, 27, 74, 80, 25, 74, 80, 25, 73, 83, 28, 76, 83, 29, 77, 84, 29, 77, 83, 27, 77, 85, 28, 79, 86, 28, 79, 85, 28, 78, 85, 28, 79, 86, 29, 78, 87, 30, 80, 87, 29, 79, + 87, 29, 80, 87, 29, 80, 87, 28, 80, 88, 30, 80, 85, 28, 78, 85, 28, 77, 82, 27, 74, 81, 25, 71, 80, 25, 72, 80, 25, 72, 77, 24, 70, 75, 22, 68, 76, 26, 67, 73, 25, 65, 73, 26, 65, 71, 26, 64, 71, 27, 63, 70, 27, 61, 67, 29, 61, 73, 40, 70, 84, 56, 84, + 88, 64, 89, 86, 66, 91, 75, 58, 84, 69, 55, 81, 65, 54, 80, 61, 53, 80, 64, 59, 84, 72, 69, 94, 71, 70, 94, 70, 72, 96, 71, 73, 97, 71, 73, 96, 76, 80, 100, 67, 73, 92, 60, 67, 86, 58, 67, 86, 70, 83, 99, 76, 91, 107, 90, 106, 119, 129, 142, 152, 165, 174, 178, + 182, 190, 193, 180, 190, 192, 172, 184, 187, 165, 180, 183, 165, 180, 183, 165, 180, 183, 163, 177, 183, 161, 175, 181, 161, 175, 181, 158, 171, 178, 157, 170, 177, 160, 175, 181, 162, 176, 182, 165, 180, 184, 167, 182, 186, 165, 180, 184, 167, 181, 186, 163, 179, 185, 163, 179, 186, 166, 182, 189, 168, 183, 190, + 167, 182, 190, 170, 183, 193, 169, 181, 192, 165, 177, 188, 153, 167, 179, 142, 157, 170, 133, 145, 158, 125, 134, 147, 116, 123, 138, 110, 118, 133, 121, 130, 144, 128, 136, 150, 122, 131, 145, 111, 121, 135, 116, 124, 138, 125, 133, 147, 128, 139, 153, 125, 142, 155, 149, 163, 175, 170, 182, 192, 182, 194, 203, + 189, 201, 208, 195, 208, 213, 198, 210, 214, 204, 214, 218, 208, 218, 223, 212, 223, 226, 218, 227, 231, 219, 228, 231, 220, 229, 232, 221, 229, 233, 220, 229, 232, 221, 230, 233, 222, 230, 234, 224, 233, 236, 227, 234, 237, 229, 236, 239, 230, 237, 239, 233, 238, 241, 231, 237, 240, 230, 237, 240, 227, 234, 237, + 227, 234, 237, 228, 235, 237, 227, 234, 237, 223, 231, 234, 215, 226, 228, 216, 227, 229, 219, 229, 231, 221, 230, 233, 223, 232, 236, 223, 232, 235, 218, 229, 234, 219, 231, 233, 219, 229, 233, 218, 230, 233, 221, 233, 235, 222, 234, 236, 225, 235, 238, 226, 234, 238, 226, 234, 237, 223, 235, 237, 221, 233, 236, + 223, 234, 237, 224, 234, 237, 226, 234, 238, 227, 235, 239, 224, 234, 238, 223, 232, 236, 219, 229, 233, 217, 228, 232, 214, 225, 229, 211, 222, 226, 207, 219, 225, 199, 212, 219, 199, 213, 219, 170, 186, 196, 74, 91, 108, 23, 37, 50, 24, 34, 44, 15, 25, 34, 21, 34, 43, 31, 47, 60, 29, 44, 61, + 28, 46, 62, 26, 49, 66, 41, 61, 79, 36, 61, 80, 48, 75, 93, 41, 70, 88, 58, 84, 100, 47, 77, 94, 54, 83, 101, 46, 76, 95, 52, 80, 100, 53, 79, 99, 58, 83, 102, 53, 78, 97, 56, 79, 96, 44, 65, 82, 43, 64, 80, 30, 53, 65, 33, 52, 64, 40, 57, 69, 100, 112, 124, + 131, 150, 161, 131, 149, 165, 147, 163, 176, 152, 167, 179, 150, 174, 186, 164, 185, 195, 162, 184, 196, 174, 193, 202, 187, 201, 208, 191, 203, 210, 187, 198, 205, 178, 191, 199, 174, 188, 195, 171, 182, 189, 167, 180, 186, 160, 174, 181, 151, 167, 174, 143, 157, 164, 129, 145, 153, 114, 130, 139, 91, 107, 114, + 72, 87, 88, 64, 78, 80, 71, 84, 86, 76, 86, 93, 76, 83, 92, 76, 83, 91, 71, 78, 87, 59, 66, 76, 60, 66, 77, 63, 68, 79, 61, 69, 80, 60, 68, 81, 60, 69, 83, 60, 71, 85, 68, 76, 94, 71, 81, 100, 72, 84, 105, 78, 91, 115, 79, 93, 117, 84, 98, 124, 93, 106, 132, + 103, 114, 142, 111, 120, 150, 117, 125, 156, 121, 126, 157, 124, 129, 159, 127, 131, 160, 126, 130, 158, 123, 127, 155, 124, 126, 152, 121, 122, 149, 121, 121, 145, 121, 119, 142, 119, 117, 137, 119, 112, 128, 115, 107, 118, 109, 98, 105, 103, 91, 97, 100, 85, 90, 93, 80, 83, 94, 81, 83, 96, 85, 87, + 55, 17, 50, 55, 15, 50, 56, 16, 51, 53, 13, 49, 57, 15, 52, 57, 14, 51, 56, 13, 50, 57, 14, 51, 57, 14, 51, 57, 14, 51, 57, 13, 50, 57, 14, 51, 59, 15, 52, 60, 16, 53, 59, 15, 52, 59, 16, 53, 59, 16, 52, 60, 15, 54, 60, 16, 54, 61, 17, 55, 63, 19, 56, + 61, 17, 55, 63, 16, 55, 63, 17, 56, 64, 17, 56, 65, 17, 57, 65, 17, 57, 65, 18, 57, 66, 17, 57, 67, 20, 59, 66, 19, 57, 66, 18, 57, 70, 20, 60, 71, 21, 62, 71, 21, 61, 71, 21, 63, 72, 22, 63, 73, 23, 64, 72, 22, 63, 72, 21, 64, 74, 22, 64, 74, 22, 65, + 76, 24, 67, 76, 24, 67, 77, 26, 68, 78, 24, 67, 78, 25, 69, 79, 24, 71, 79, 25, 72, 80, 25, 73, 80, 23, 72, 82, 26, 75, 82, 27, 75, 82, 26, 75, 84, 28, 76, 85, 29, 78, 85, 29, 78, 85, 28, 79, 84, 27, 78, 85, 28, 79, 86, 30, 79, 86, 29, 80, 87, 28, 79, + 87, 28, 80, 88, 30, 80, 87, 29, 80, 87, 28, 79, 85, 28, 77, 83, 28, 76, 83, 28, 74, 82, 28, 72, 79, 24, 70, 78, 24, 70, 78, 25, 70, 75, 24, 67, 74, 23, 65, 73, 24, 64, 71, 24, 63, 70, 24, 63, 68, 20, 59, 65, 19, 56, 63, 22, 55, 64, 27, 59, 67, 34, 66, + 71, 48, 76, 89, 71, 96, 99, 85, 109, 90, 78, 102, 69, 59, 85, 65, 58, 84, 73, 67, 92, 68, 66, 91, 69, 70, 93, 69, 71, 94, 68, 70, 94, 69, 72, 96, 62, 67, 90, 57, 63, 84, 53, 60, 80, 61, 71, 91, 71, 84, 103, 77, 92, 109, 80, 96, 110, 94, 111, 123, 133, 148, 154, + 170, 179, 183, 187, 194, 198, 181, 192, 195, 171, 183, 188, 166, 179, 183, 165, 180, 183, 164, 179, 183, 163, 177, 183, 163, 177, 183, 164, 177, 183, 162, 176, 182, 164, 178, 184, 166, 180, 185, 166, 181, 184, 166, 181, 184, 166, 181, 185, 167, 181, 186, 166, 181, 187, 166, 182, 188, 169, 182, 189, 171, 184, 192, + 167, 183, 190, 168, 183, 190, 172, 185, 194, 172, 185, 194, 171, 184, 193, 165, 180, 189, 162, 173, 185, 150, 165, 177, 140, 156, 169, 136, 153, 165, 143, 157, 169, 151, 164, 175, 146, 160, 170, 137, 153, 165, 137, 153, 165, 146, 160, 172, 147, 162, 175, 147, 166, 177, 168, 182, 193, 183, 196, 204, 193, 207, 214, + 199, 211, 217, 203, 215, 219, 204, 216, 220, 208, 220, 224, 212, 223, 227, 218, 227, 231, 221, 230, 233, 222, 231, 234, 222, 231, 234, 225, 233, 235, 225, 233, 236, 228, 235, 238, 226, 236, 239, 228, 236, 239, 232, 239, 242, 232, 240, 240, 233, 240, 244, 236, 242, 244, 235, 242, 244, 234, 241, 244, 234, 241, 243, + 234, 241, 244, 234, 241, 244, 234, 240, 243, 229, 237, 240, 225, 234, 238, 228, 236, 239, 227, 236, 239, 228, 236, 239, 227, 236, 239, 228, 237, 240, 227, 236, 239, 224, 234, 237, 223, 235, 237, 222, 234, 237, 224, 234, 237, 224, 234, 236, 224, 236, 238, 224, 237, 238, 225, 238, 240, 226, 238, 240, 225, 236, 240, + 225, 237, 240, 227, 239, 241, 228, 238, 240, 227, 238, 240, 227, 237, 239, 224, 235, 239, 223, 234, 239, 223, 233, 237, 221, 232, 236, 218, 229, 233, 217, 227, 231, 208, 219, 225, 194, 209, 216, 92, 111, 126, 38, 49, 65, 42, 54, 64, 23, 32, 41, 12, 25, 34, 19, 33, 43, 23, 39, 55, 27, 43, 60, + 28, 45, 62, 33, 53, 70, 34, 57, 75, 48, 70, 89, 44, 71, 91, 46, 74, 93, 51, 79, 98, 52, 82, 100, 72, 100, 118, 64, 93, 113, 60, 91, 112, 50, 83, 105, 63, 92, 113, 60, 89, 110, 55, 82, 103, 58, 84, 105, 50, 78, 97, 45, 65, 81, 43, 60, 75, 39, 55, 70, 34, 50, 66, + 97, 114, 127, 166, 180, 189, 169, 182, 192, 174, 191, 200, 175, 194, 202, 183, 201, 209, 198, 211, 218, 204, 215, 222, 210, 220, 225, 212, 221, 227, 207, 219, 223, 201, 213, 219, 200, 212, 217, 198, 209, 213, 194, 207, 212, 186, 202, 208, 180, 195, 201, 171, 187, 193, 161, 178, 185, 144, 162, 169, 114, 138, 142, + 93, 116, 118, 93, 114, 116, 91, 111, 113, 92, 108, 111, 97, 109, 115, 87, 100, 104, 79, 91, 97, 72, 82, 92, 74, 82, 92, 71, 80, 90, 67, 76, 89, 64, 74, 88, 62, 73, 87, 62, 74, 89, 74, 83, 102, 75, 86, 106, 77, 90, 112, 78, 93, 116, 78, 93, 118, 84, 98, 124, 95, 108, 133, + 106, 117, 145, 111, 120, 150, 115, 123, 153, 123, 128, 159, 124, 129, 159, 125, 128, 159, 126, 130, 158, 122, 126, 154, 120, 123, 151, 121, 121, 147, 121, 121, 146, 121, 121, 144, 120, 117, 138, 117, 110, 129, 114, 106, 119, 112, 102, 112, 105, 93, 101, 100, 87, 92, 96, 82, 85, 94, 81, 83, 99, 87, 89, + 52, 12, 48, 55, 15, 50, 54, 13, 49, 55, 15, 51, 54, 13, 50, 55, 14, 51, 56, 13, 50, 57, 14, 51, 56, 13, 51, 59, 15, 52, 58, 15, 53, 59, 14, 52, 59, 14, 53, 60, 16, 53, 59, 16, 53, 59, 15, 52, 61, 17, 54, 60, 15, 54, 60, 15, 54, 61, 16, 55, 61, 17, 55, + 62, 17, 55, 62, 15, 54, 62, 16, 55, 63, 16, 56, 65, 18, 57, 64, 17, 57, 67, 20, 58, 66, 20, 58, 66, 18, 57, 67, 18, 57, 69, 21, 60, 69, 19, 59, 69, 19, 60, 70, 20, 62, 71, 21, 63, 70, 19, 62, 71, 21, 63, 73, 23, 65, 72, 21, 65, 72, 22, 66, 74, 23, 68, + 74, 22, 67, 76, 24, 68, 79, 25, 69, 79, 26, 69, 78, 24, 70, 80, 25, 72, 81, 26, 72, 81, 25, 74, 81, 25, 75, 80, 24, 74, 82, 26, 75, 82, 27, 76, 83, 27, 76, 84, 28, 77, 84, 27, 78, 85, 28, 79, 85, 28, 79, 86, 30, 80, 86, 29, 80, 86, 28, 80, 86, 29, 80, + 86, 28, 80, 87, 29, 80, 86, 27, 79, 85, 27, 78, 84, 29, 78, 83, 27, 75, 81, 27, 73, 80, 26, 71, 78, 24, 70, 77, 23, 69, 76, 25, 69, 74, 23, 67, 73, 24, 65, 70, 22, 62, 69, 22, 61, 71, 24, 62, 66, 19, 58, 65, 18, 56, 63, 21, 54, 66, 29, 60, 69, 36, 66, + 71, 48, 76, 71, 51, 79, 74, 58, 85, 87, 74, 99, 100, 91, 113, 95, 89, 112, 76, 73, 95, 72, 69, 94, 68, 69, 92, 69, 71, 94, 69, 72, 96, 70, 73, 98, 70, 77, 98, 70, 79, 99, 74, 84, 105, 81, 92, 113, 85, 98, 116, 84, 98, 116, 80, 96, 112, 80, 99, 111, 95, 115, 125, + 135, 151, 158, 172, 180, 184, 188, 195, 197, 184, 193, 196, 172, 184, 187, 165, 180, 183, 164, 178, 183, 164, 178, 184, 161, 175, 181, 163, 177, 183, 164, 178, 184, 167, 181, 187, 167, 181, 186, 166, 180, 186, 167, 181, 187, 166, 181, 185, 168, 183, 187, 166, 181, 187, 166, 182, 187, 167, 182, 188, 166, 181, 188, + 169, 182, 190, 167, 183, 190, 169, 184, 190, 173, 187, 194, 174, 187, 195, 172, 186, 194, 173, 185, 194, 168, 183, 191, 163, 179, 188, 157, 174, 185, 163, 179, 188, 162, 178, 187, 164, 180, 189, 159, 175, 187, 155, 171, 182, 157, 173, 184, 162, 178, 188, 168, 184, 193, 182, 196, 204, 194, 206, 213, 201, 212, 219, + 206, 216, 222, 209, 220, 224, 208, 220, 224, 211, 223, 227, 215, 227, 230, 219, 228, 231, 222, 231, 234, 223, 232, 235, 224, 233, 236, 225, 235, 235, 229, 236, 238, 229, 236, 240, 231, 238, 241, 232, 239, 242, 232, 240, 242, 234, 241, 244, 237, 242, 243, 239, 244, 244, 238, 243, 245, 238, 243, 245, 238, 243, 244, + 238, 243, 245, 238, 245, 245, 236, 243, 245, 230, 238, 241, 234, 242, 242, 234, 241, 244, 233, 240, 243, 233, 240, 243, 232, 240, 243, 231, 239, 242, 232, 240, 243, 229, 238, 241, 228, 237, 240, 225, 238, 240, 225, 237, 239, 225, 238, 240, 225, 237, 239, 227, 238, 240, 227, 239, 241, 226, 238, 240, 228, 239, 241, + 228, 238, 241, 230, 239, 242, 230, 239, 242, 227, 239, 241, 227, 238, 241, 226, 238, 241, 225, 236, 241, 226, 238, 241, 225, 236, 239, 221, 233, 236, 219, 230, 234, 197, 211, 216, 133, 157, 169, 43, 57, 71, 24, 37, 47, 10, 20, 31, 14, 24, 34, 29, 41, 50, 18, 34, 46, 24, 41, 57, 19, 39, 55, + 22, 42, 59, 32, 53, 70, 31, 55, 75, 31, 58, 78, 50, 75, 94, 49, 77, 97, 56, 82, 102, 49, 79, 99, 59, 88, 108, 67, 95, 115, 51, 83, 106, 67, 95, 117, 61, 91, 113, 71, 100, 121, 65, 96, 116, 61, 91, 112, 57, 87, 107, 52, 80, 99, 49, 72, 90, 44, 63, 81, 42, 58, 74, + 47, 61, 77, 127, 140, 151, 182, 195, 201, 183, 199, 205, 193, 210, 216, 206, 219, 224, 220, 229, 234, 213, 223, 230, 222, 229, 234, 221, 229, 234, 219, 230, 232, 218, 228, 230, 219, 227, 230, 218, 226, 229, 212, 222, 225, 208, 219, 222, 203, 215, 218, 198, 209, 213, 189, 201, 206, 172, 188, 193, 153, 171, 175, + 137, 160, 162, 126, 152, 156, 126, 151, 156, 127, 150, 155, 116, 136, 141, 103, 123, 128, 85, 102, 107, 84, 96, 103, 82, 92, 101, 75, 86, 96, 71, 85, 96, 65, 81, 94, 69, 83, 97, 71, 84, 99, 72, 85, 103, 79, 92, 112, 81, 94, 117, 81, 95, 118, 80, 95, 120, 87, 101, 128, 98, 111, 136, + 105, 116, 144, 112, 122, 152, 119, 127, 157, 120, 127, 157, 123, 129, 159, 123, 128, 158, 123, 127, 156, 121, 125, 154, 119, 122, 150, 119, 121, 148, 119, 120, 146, 120, 120, 144, 119, 116, 138, 118, 113, 132, 115, 108, 122, 111, 103, 113, 106, 95, 104, 100, 88, 94, 95, 82, 87, 94, 81, 83, 95, 82, 84, + 54, 13, 49, 53, 12, 49, 54, 13, 50, 54, 13, 50, 55, 14, 51, 54, 13, 50, 56, 14, 51, 55, 12, 50, 56, 12, 52, 59, 14, 53, 58, 14, 53, 57, 12, 51, 58, 13, 52, 58, 14, 52, 58, 14, 51, 59, 15, 52, 59, 15, 53, 60, 15, 54, 61, 17, 55, 60, 15, 54, 62, 18, 55, + 62, 16, 54, 63, 16, 55, 64, 16, 55, 64, 17, 56, 63, 17, 56, 63, 18, 57, 65, 18, 57, 67, 20, 59, 66, 18, 58, 69, 19, 59, 67, 18, 58, 69, 20, 60, 69, 19, 61, 71, 21, 62, 69, 22, 62, 71, 21, 63, 71, 21, 64, 73, 23, 65, 73, 23, 65, 74, 24, 67, 74, 23, 67, + 75, 23, 68, 77, 24, 69, 76, 23, 69, 77, 23, 70, 79, 25, 71, 79, 25, 72, 81, 26, 73, 80, 23, 73, 82, 25, 75, 82, 24, 74, 83, 26, 76, 83, 26, 76, 85, 29, 78, 84, 28, 77, 85, 28, 78, 84, 27, 78, 85, 28, 79, 86, 30, 79, 86, 28, 79, 87, 29, 81, 86, 29, 80, + 86, 28, 80, 86, 28, 80, 87, 28, 80, 84, 27, 77, 84, 28, 76, 82, 28, 75, 82, 28, 73, 81, 27, 72, 79, 25, 70, 77, 24, 69, 76, 24, 68, 72, 22, 66, 73, 24, 66, 70, 23, 63, 67, 20, 59, 68, 21, 60, 66, 19, 58, 64, 18, 56, 65, 23, 56, 65, 25, 57, 69, 34, 64, + 68, 41, 71, 64, 41, 70, 66, 47, 75, 67, 51, 78, 80, 68, 93, 101, 95, 117, 105, 103, 123, 78, 76, 98, 66, 65, 89, 68, 69, 93, 73, 76, 100, 76, 81, 104, 78, 87, 108, 76, 88, 108, 82, 93, 112, 81, 94, 112, 78, 92, 111, 75, 90, 109, 76, 93, 110, 74, 93, 107, 80, 102, 113, + 95, 116, 127, 135, 152, 158, 171, 180, 184, 188, 194, 197, 183, 193, 196, 172, 185, 188, 165, 179, 183, 163, 178, 182, 163, 177, 183, 164, 178, 184, 165, 178, 184, 168, 181, 187, 169, 183, 189, 168, 183, 187, 166, 181, 187, 164, 178, 185, 167, 181, 186, 166, 181, 186, 164, 181, 185, 163, 179, 185, 165, 180, 187, + 167, 181, 188, 166, 182, 188, 167, 183, 189, 172, 187, 193, 174, 188, 194, 173, 189, 195, 173, 190, 197, 172, 188, 195, 173, 189, 196, 171, 187, 194, 171, 187, 194, 172, 188, 196, 173, 188, 197, 169, 186, 195, 168, 185, 194, 168, 186, 195, 176, 193, 201, 182, 197, 205, 191, 204, 212, 201, 212, 218, 206, 217, 222, + 212, 222, 226, 214, 224, 227, 212, 225, 227, 216, 228, 229, 219, 229, 232, 219, 230, 233, 223, 232, 235, 226, 235, 238, 226, 235, 238, 227, 236, 239, 229, 238, 238, 231, 238, 240, 233, 240, 242, 233, 240, 242, 234, 241, 243, 236, 243, 243, 236, 242, 243, 239, 244, 246, 239, 244, 245, 239, 244, 245, 240, 245, 246, + 240, 245, 246, 238, 245, 245, 239, 245, 245, 236, 242, 244, 237, 245, 245, 237, 244, 244, 237, 244, 245, 236, 244, 244, 235, 242, 245, 236, 243, 245, 236, 244, 245, 233, 242, 245, 232, 241, 244, 229, 240, 242, 228, 239, 241, 231, 240, 243, 231, 241, 242, 231, 239, 243, 228, 239, 242, 230, 240, 243, 229, 240, 242, + 231, 240, 243, 232, 241, 244, 232, 241, 244, 231, 240, 243, 229, 239, 242, 229, 240, 243, 227, 237, 241, 229, 239, 241, 225, 236, 239, 222, 234, 238, 208, 223, 228, 149, 173, 184, 60, 72, 88, 47, 57, 69, 11, 24, 35, 6, 18, 27, 36, 48, 59, 33, 48, 60, 13, 31, 43, 28, 46, 61, 28, 46, 63, + 33, 52, 68, 25, 46, 65, 33, 56, 74, 35, 62, 79, 51, 77, 95, 37, 67, 88, 54, 80, 100, 50, 77, 99, 60, 87, 107, 53, 83, 102, 61, 88, 111, 60, 88, 111, 51, 83, 107, 65, 96, 114, 65, 96, 114, 68, 98, 117, 59, 89, 109, 64, 94, 112, 61, 89, 108, 53, 80, 99, 42, 62, 80, + 34, 50, 69, 77, 87, 100, 146, 159, 167, 197, 210, 215, 214, 226, 230, 220, 231, 234, 221, 231, 237, 223, 232, 237, 229, 238, 241, 228, 237, 241, 226, 236, 239, 227, 235, 239, 229, 236, 239, 228, 235, 238, 224, 232, 235, 221, 230, 233, 216, 227, 230, 214, 224, 227, 206, 217, 221, 195, 208, 211, 186, 201, 204, + 176, 193, 195, 178, 192, 197, 176, 189, 195, 168, 182, 188, 149, 168, 172, 126, 145, 149, 112, 130, 135, 102, 121, 125, 93, 110, 116, 80, 98, 103, 75, 93, 99, 73, 91, 98, 76, 91, 104, 75, 91, 104, 81, 95, 111, 84, 98, 115, 81, 97, 117, 81, 98, 119, 87, 102, 127, 92, 108, 132, 100, 113, 139, + 108, 119, 148, 112, 122, 152, 120, 128, 158, 123, 130, 160, 121, 127, 158, 119, 125, 156, 121, 124, 155, 120, 124, 153, 119, 122, 151, 116, 119, 146, 120, 121, 147, 117, 117, 142, 119, 115, 139, 116, 112, 133, 114, 107, 122, 111, 103, 113, 106, 96, 105, 101, 89, 96, 96, 82, 87, 96, 82, 87, 98, 85, 87, + 54, 13, 50, 54, 13, 50, 55, 15, 51, 55, 15, 51, 54, 13, 50, 56, 14, 51, 56, 15, 52, 58, 15, 52, 56, 12, 51, 56, 12, 51, 58, 13, 52, 59, 14, 53, 59, 15, 54, 58, 15, 53, 58, 15, 52, 59, 16, 53, 59, 15, 52, 60, 16, 54, 60, 15, 54, 61, 17, 54, 61, 14, 54, + 61, 16, 54, 63, 17, 55, 62, 16, 54, 62, 15, 54, 63, 17, 56, 64, 17, 57, 65, 18, 57, 65, 18, 57, 66, 18, 57, 67, 17, 58, 68, 19, 58, 66, 19, 59, 68, 20, 61, 68, 19, 62, 71, 23, 63, 70, 20, 62, 73, 23, 65, 71, 20, 64, 74, 24, 66, 73, 21, 65, 75, 23, 66, + 75, 23, 67, 77, 24, 69, 77, 24, 69, 79, 26, 70, 79, 25, 70, 79, 24, 70, 80, 25, 72, 82, 26, 74, 82, 27, 75, 83, 28, 75, 82, 25, 74, 82, 25, 75, 84, 28, 77, 85, 29, 78, 85, 29, 78, 85, 27, 78, 85, 28, 78, 86, 28, 79, 84, 27, 77, 86, 29, 79, 85, 28, 79, + 86, 30, 81, 86, 26, 79, 84, 27, 78, 84, 27, 77, 84, 29, 76, 82, 26, 74, 82, 28, 73, 80, 25, 71, 78, 25, 70, 77, 23, 69, 75, 23, 67, 74, 23, 67, 72, 23, 65, 69, 21, 62, 69, 22, 61, 66, 19, 58, 65, 19, 57, 63, 19, 57, 62, 19, 55, 63, 23, 55, 66, 31, 62, + 67, 38, 68, 68, 43, 72, 68, 45, 73, 68, 50, 77, 67, 52, 79, 66, 55, 80, 72, 67, 90, 99, 96, 118, 93, 91, 114, 73, 74, 97, 70, 73, 97, 75, 82, 105, 75, 86, 107, 77, 88, 108, 76, 89, 108, 68, 82, 101, 66, 80, 100, 63, 80, 98, 68, 85, 104, 73, 91, 107, 76, 96, 110, + 81, 103, 114, 96, 117, 126, 133, 149, 156, 168, 178, 181, 183, 192, 195, 182, 193, 196, 173, 185, 189, 164, 180, 183, 164, 179, 182, 164, 178, 184, 165, 179, 185, 164, 178, 184, 167, 180, 186, 168, 181, 187, 166, 180, 186, 163, 179, 185, 163, 179, 185, 164, 180, 186, 164, 180, 186, 165, 180, 186, 163, 179, 185, + 164, 180, 186, 166, 181, 187, 166, 182, 188, 171, 185, 191, 175, 189, 195, 174, 189, 195, 172, 188, 195, 174, 190, 196, 172, 189, 196, 173, 189, 196, 173, 189, 196, 176, 192, 199, 179, 194, 203, 177, 194, 201, 176, 193, 202, 182, 198, 206, 186, 202, 209, 190, 205, 211, 200, 212, 218, 205, 216, 221, 210, 221, 225, + 214, 224, 227, 216, 226, 229, 219, 228, 231, 221, 230, 233, 221, 230, 233, 222, 233, 235, 224, 234, 237, 227, 236, 239, 229, 237, 238, 229, 237, 239, 231, 238, 240, 232, 240, 241, 233, 241, 241, 234, 241, 242, 236, 243, 243, 236, 243, 243, 237, 244, 244, 238, 244, 245, 239, 244, 245, 240, 245, 246, 239, 244, 245, + 240, 245, 246, 240, 247, 247, 236, 243, 243, 240, 246, 247, 240, 245, 246, 241, 246, 247, 240, 246, 247, 239, 246, 246, 238, 246, 246, 239, 246, 247, 239, 246, 246, 238, 246, 247, 237, 245, 247, 234, 242, 245, 234, 242, 245, 235, 243, 244, 236, 243, 245, 232, 241, 244, 233, 242, 245, 233, 241, 245, 232, 241, 244, + 234, 242, 245, 234, 242, 244, 234, 242, 244, 232, 241, 244, 233, 242, 244, 230, 241, 244, 232, 241, 244, 224, 236, 240, 224, 235, 238, 218, 232, 236, 173, 192, 200, 79, 105, 118, 46, 59, 70, 20, 33, 46, 44, 56, 65, 32, 46, 56, 29, 44, 55, 15, 32, 45, 32, 49, 62, 25, 47, 64, 24, 45, 62, + 33, 54, 70, 38, 58, 75, 37, 60, 77, 41, 63, 80, 48, 73, 90, 40, 67, 87, 44, 70, 91, 46, 71, 92, 46, 71, 93, 60, 84, 105, 51, 78, 100, 58, 84, 106, 53, 80, 102, 61, 93, 111, 60, 93, 110, 61, 93, 111, 61, 94, 112, 75, 105, 124, 63, 96, 115, 64, 96, 115, 49, 78, 97, + 31, 55, 74, 46, 61, 80, 93, 99, 110, 192, 203, 207, 212, 224, 228, 218, 229, 233, 228, 237, 240, 228, 237, 240, 231, 240, 242, 231, 240, 243, 232, 240, 243, 233, 241, 242, 232, 240, 242, 231, 238, 241, 232, 239, 242, 226, 235, 238, 225, 234, 237, 224, 232, 235, 218, 228, 231, 213, 225, 228, 208, 220, 224, + 207, 217, 221, 207, 216, 220, 205, 214, 218, 194, 205, 209, 174, 190, 196, 158, 177, 183, 147, 166, 171, 134, 153, 158, 119, 139, 144, 109, 128, 132, 95, 115, 120, 89, 108, 114, 90, 109, 117, 92, 109, 120, 88, 104, 118, 82, 101, 115, 80, 100, 116, 86, 105, 123, 94, 111, 135, 101, 116, 142, 105, 119, 147, + 112, 124, 152, 118, 129, 157, 118, 127, 156, 120, 128, 158, 121, 128, 158, 121, 126, 157, 119, 123, 155, 119, 122, 152, 117, 120, 149, 117, 120, 149, 118, 121, 146, 118, 119, 144, 119, 117, 142, 116, 113, 134, 117, 110, 126, 112, 103, 113, 109, 99, 108, 101, 89, 96, 101, 86, 92, 98, 84, 88, 96, 83, 86, + 54, 15, 51, 54, 13, 50, 55, 15, 51, 54, 13, 50, 55, 15, 50, 56, 15, 51, 55, 13, 50, 56, 13, 51, 58, 15, 52, 58, 15, 53, 58, 13, 52, 58, 13, 52, 58, 14, 52, 59, 16, 53, 59, 16, 53, 59, 16, 53, 59, 16, 53, 59, 15, 54, 60, 16, 55, 61, 17, 55, 62, 18, 55, + 62, 17, 55, 63, 16, 54, 62, 15, 54, 63, 16, 54, 66, 19, 57, 64, 17, 55, 66, 19, 58, 65, 19, 58, 66, 20, 59, 66, 19, 58, 67, 17, 58, 67, 21, 59, 69, 20, 61, 69, 21, 61, 69, 21, 62, 71, 22, 63, 72, 22, 64, 73, 22, 65, 73, 22, 65, 74, 24, 67, 74, 22, 66, + 74, 21, 66, 76, 23, 68, 78, 26, 70, 78, 24, 69, 78, 25, 70, 80, 25, 71, 80, 26, 72, 80, 25, 72, 82, 27, 74, 81, 25, 74, 83, 28, 75, 85, 29, 77, 82, 25, 75, 84, 28, 77, 84, 27, 78, 85, 27, 78, 85, 28, 78, 86, 30, 79, 86, 30, 79, 86, 30, 79, 87, 31, 79, + 85, 29, 79, 87, 30, 81, 86, 29, 80, 83, 27, 76, 83, 28, 75, 83, 29, 75, 81, 27, 72, 79, 26, 72, 77, 23, 69, 77, 25, 69, 76, 25, 68, 72, 22, 65, 72, 23, 65, 70, 23, 62, 68, 21, 60, 66, 18, 57, 64, 20, 58, 62, 20, 56, 60, 18, 53, 63, 24, 56, 60, 23, 56, + 65, 33, 64, 69, 41, 71, 66, 41, 69, 64, 42, 69, 63, 42, 70, 60, 45, 72, 59, 50, 75, 66, 62, 86, 96, 94, 116, 108, 110, 130, 84, 89, 112, 71, 80, 103, 76, 87, 108, 79, 92, 111, 81, 93, 111, 74, 88, 107, 67, 82, 102, 70, 86, 107, 72, 89, 108, 73, 90, 109, 73, 92, 109, + 77, 96, 111, 81, 104, 115, 96, 118, 126, 132, 150, 156, 166, 178, 181, 184, 193, 196, 181, 192, 195, 170, 183, 186, 162, 178, 181, 162, 177, 183, 162, 176, 182, 161, 176, 182, 163, 176, 183, 164, 179, 185, 163, 178, 184, 162, 178, 184, 162, 178, 184, 163, 179, 185, 164, 180, 186, 166, 182, 188, 164, 180, 186, + 162, 178, 185, 165, 181, 187, 167, 183, 189, 167, 183, 189, 173, 188, 194, 172, 187, 193, 170, 186, 192, 169, 188, 194, 171, 188, 194, 171, 188, 194, 174, 191, 197, 179, 195, 202, 184, 198, 205, 184, 200, 207, 185, 202, 209, 192, 206, 213, 195, 209, 215, 198, 212, 218, 202, 215, 220, 206, 218, 222, 211, 222, 226, + 214, 225, 229, 216, 228, 230, 219, 229, 232, 222, 231, 234, 224, 233, 236, 224, 233, 236, 226, 235, 238, 230, 237, 240, 230, 238, 239, 230, 238, 239, 231, 239, 240, 232, 239, 242, 234, 241, 244, 235, 242, 242, 237, 244, 244, 236, 244, 244, 236, 244, 244, 237, 243, 244, 239, 244, 245, 240, 245, 246, 239, 244, 245, + 241, 247, 247, 242, 247, 247, 237, 243, 244, 242, 247, 248, 242, 247, 248, 242, 247, 248, 241, 246, 247, 241, 247, 248, 242, 247, 248, 242, 247, 248, 242, 247, 248, 240, 246, 248, 240, 246, 247, 239, 245, 248, 238, 245, 247, 237, 244, 247, 237, 244, 246, 237, 245, 245, 235, 242, 246, 237, 245, 246, 236, 243, 246, + 237, 244, 247, 235, 243, 246, 235, 242, 246, 235, 243, 244, 232, 241, 244, 230, 241, 243, 232, 241, 244, 225, 236, 239, 217, 230, 234, 209, 225, 230, 106, 125, 136, 42, 59, 71, 27, 40, 52, 13, 27, 39, 25, 37, 50, 31, 46, 57, 16, 33, 46, 34, 52, 65, 18, 41, 55, 25, 48, 64, 28, 51, 67, + 35, 56, 73, 38, 58, 75, 35, 56, 73, 38, 59, 77, 24, 54, 72, 40, 66, 84, 42, 68, 85, 51, 75, 91, 55, 79, 95, 52, 76, 92, 60, 81, 101, 60, 82, 103, 53, 78, 98, 62, 92, 110, 58, 90, 107, 60, 94, 110, 67, 98, 118, 69, 102, 121, 69, 101, 120, 69, 100, 119, 77, 107, 126, + 54, 79, 98, 37, 59, 81, 52, 69, 87, 120, 132, 142, 209, 222, 227, 216, 228, 231, 216, 229, 233, 232, 240, 243, 232, 240, 243, 235, 242, 244, 235, 242, 243, 234, 242, 243, 235, 242, 244, 233, 240, 243, 233, 240, 243, 231, 239, 242, 230, 239, 242, 229, 238, 241, 226, 236, 238, 223, 234, 237, 224, 233, 236, + 224, 231, 234, 223, 230, 233, 218, 227, 230, 211, 221, 226, 200, 213, 217, 192, 206, 209, 181, 197, 200, 174, 191, 195, 162, 181, 187, 147, 168, 173, 127, 149, 155, 120, 143, 150, 123, 142, 150, 110, 131, 138, 102, 123, 130, 94, 119, 125, 94, 119, 128, 97, 118, 135, 106, 123, 148, 112, 126, 153, 115, 128, 155, + 119, 132, 158, 118, 129, 157, 118, 129, 158, 121, 129, 159, 120, 127, 158, 120, 126, 157, 118, 123, 154, 114, 121, 151, 115, 120, 149, 115, 120, 149, 117, 122, 148, 116, 119, 144, 118, 117, 142, 118, 114, 136, 115, 109, 125, 111, 101, 113, 107, 97, 106, 102, 90, 97, 101, 87, 93, 97, 84, 87, 99, 85, 88, + 51, 10, 47, 54, 14, 50, 55, 14, 50, 53, 12, 50, 55, 14, 49, 56, 15, 50, 57, 14, 50, 57, 14, 51, 57, 14, 51, 58, 15, 52, 57, 14, 51, 56, 12, 49, 57, 14, 51, 59, 16, 53, 58, 15, 52, 58, 15, 52, 59, 18, 54, 57, 14, 53, 59, 15, 53, 59, 13, 53, 62, 17, 54, + 61, 15, 54, 63, 16, 55, 63, 16, 55, 63, 18, 55, 63, 16, 55, 63, 19, 56, 63, 19, 57, 65, 19, 58, 66, 19, 58, 67, 19, 58, 69, 19, 59, 68, 21, 60, 68, 19, 60, 67, 19, 60, 70, 23, 62, 71, 21, 64, 73, 23, 65, 72, 22, 64, 72, 21, 65, 74, 23, 66, 75, 22, 66, + 75, 23, 66, 75, 23, 67, 77, 24, 69, 79, 26, 71, 78, 25, 70, 79, 25, 71, 79, 25, 70, 82, 28, 72, 81, 27, 72, 82, 26, 74, 83, 28, 75, 83, 27, 76, 83, 26, 76, 85, 30, 78, 85, 29, 78, 85, 28, 78, 84, 28, 78, 86, 30, 79, 85, 29, 78, 84, 29, 77, 86, 31, 79, + 85, 29, 78, 84, 26, 77, 84, 26, 78, 84, 28, 77, 84, 29, 76, 81, 26, 72, 80, 27, 72, 80, 27, 72, 76, 22, 69, 77, 26, 69, 76, 26, 68, 73, 23, 65, 72, 24, 63, 69, 21, 60, 67, 21, 59, 67, 21, 58, 64, 21, 57, 64, 22, 57, 62, 21, 56, 60, 21, 55, 60, 21, 56, + 62, 29, 60, 66, 36, 66, 63, 35, 65, 60, 35, 63, 61, 39, 67, 60, 44, 71, 62, 52, 78, 69, 65, 89, 76, 75, 98, 90, 93, 114, 115, 120, 140, 101, 108, 129, 79, 90, 110, 79, 93, 112, 78, 92, 111, 78, 92, 111, 79, 94, 113, 79, 95, 114, 80, 95, 115, 76, 92, 112, 74, 92, 109, + 72, 92, 109, 78, 98, 112, 81, 104, 115, 96, 117, 126, 133, 151, 157, 170, 180, 184, 186, 194, 197, 179, 191, 193, 164, 180, 182, 161, 177, 181, 161, 176, 183, 159, 174, 180, 157, 172, 178, 153, 170, 176, 160, 176, 182, 162, 178, 184, 164, 180, 186, 164, 180, 186, 165, 181, 187, 169, 184, 190, 169, 183, 189, + 165, 181, 187, 166, 182, 188, 166, 182, 188, 167, 183, 189, 170, 186, 192, 171, 187, 193, 171, 187, 193, 170, 186, 193, 171, 188, 194, 173, 190, 196, 176, 193, 199, 184, 199, 204, 190, 205, 209, 191, 205, 211, 193, 207, 213, 196, 210, 215, 201, 214, 218, 205, 217, 221, 207, 219, 223, 209, 220, 224, 210, 221, 225, + 213, 224, 228, 217, 228, 231, 219, 229, 232, 222, 231, 234, 223, 232, 235, 226, 235, 238, 229, 237, 237, 231, 238, 239, 230, 237, 240, 232, 240, 240, 232, 240, 240, 233, 240, 243, 234, 241, 244, 236, 242, 244, 237, 244, 244, 236, 244, 244, 236, 244, 244, 237, 244, 244, 239, 244, 245, 240, 245, 246, 240, 245, 246, + 242, 247, 248, 238, 245, 246, 243, 247, 248, 242, 247, 249, 242, 247, 248, 242, 247, 248, 243, 248, 249, 242, 247, 248, 242, 247, 248, 242, 247, 248, 243, 248, 249, 240, 246, 247, 241, 247, 248, 242, 246, 248, 241, 246, 248, 240, 245, 246, 237, 245, 245, 234, 243, 243, 234, 243, 245, 236, 243, 245, 237, 245, 245, + 239, 246, 248, 235, 243, 246, 232, 241, 244, 233, 242, 245, 234, 243, 246, 235, 243, 246, 235, 243, 246, 216, 229, 232, 211, 223, 227, 138, 160, 170, 48, 60, 73, 10, 22, 34, 35, 45, 55, 29, 41, 53, 17, 31, 44, 16, 31, 43, 19, 39, 50, 26, 46, 59, 22, 46, 58, 37, 57, 75, 29, 51, 68, + 26, 49, 67, 20, 45, 64, 29, 51, 69, 32, 54, 73, 43, 67, 83, 38, 65, 81, 36, 64, 81, 44, 70, 86, 46, 70, 86, 49, 75, 91, 52, 76, 93, 43, 70, 87, 55, 79, 96, 58, 81, 99, 60, 86, 103, 56, 86, 103, 67, 96, 114, 66, 96, 115, 66, 96, 116, 69, 101, 119, 68, 100, 119, + 79, 109, 128, 54, 80, 100, 29, 53, 73, 57, 68, 85, 139, 153, 161, 199, 214, 219, 217, 229, 233, 230, 238, 241, 231, 240, 242, 232, 241, 244, 231, 241, 242, 234, 242, 243, 232, 239, 242, 236, 243, 244, 233, 241, 242, 234, 242, 242, 233, 241, 242, 233, 240, 243, 231, 240, 243, 233, 240, 241, 231, 238, 241, + 232, 239, 240, 229, 237, 240, 226, 235, 238, 222, 230, 233, 220, 227, 230, 215, 224, 227, 210, 220, 222, 203, 213, 217, 197, 209, 212, 186, 200, 203, 174, 190, 196, 165, 183, 188, 154, 171, 178, 142, 161, 167, 131, 153, 159, 118, 142, 148, 118, 140, 149, 122, 140, 156, 130, 144, 166, 127, 141, 164, 123, 136, 161, + 120, 132, 159, 119, 130, 158, 119, 130, 158, 118, 127, 157, 118, 126, 156, 118, 126, 155, 115, 123, 154, 114, 121, 152, 115, 122, 151, 114, 120, 149, 117, 121, 148, 117, 121, 147, 117, 117, 143, 116, 112, 136, 114, 109, 126, 113, 103, 116, 108, 97, 107, 104, 91, 98, 102, 88, 94, 98, 85, 88, 97, 84, 86, + 52, 12, 48, 53, 13, 49, 55, 15, 50, 55, 15, 50, 54, 13, 48, 56, 14, 48, 55, 14, 50, 57, 14, 51, 58, 15, 52, 57, 14, 51, 57, 14, 51, 57, 14, 51, 58, 16, 52, 58, 16, 52, 58, 15, 51, 57, 13, 51, 58, 17, 55, 60, 15, 54, 59, 16, 55, 61, 17, 55, 61, 16, 55, + 62, 17, 56, 61, 16, 55, 61, 17, 54, 61, 16, 54, 63, 18, 56, 63, 19, 56, 63, 19, 57, 65, 18, 57, 66, 19, 58, 67, 19, 59, 68, 20, 59, 68, 21, 60, 67, 19, 60, 69, 21, 60, 70, 22, 62, 71, 21, 63, 71, 21, 63, 72, 22, 64, 73, 23, 65, 72, 22, 65, 75, 24, 67, + 75, 24, 67, 75, 24, 68, 77, 26, 70, 76, 24, 70, 79, 25, 72, 79, 26, 71, 79, 25, 70, 80, 26, 71, 80, 26, 72, 83, 29, 76, 82, 26, 74, 82, 27, 76, 85, 30, 78, 84, 27, 78, 85, 29, 79, 84, 27, 77, 85, 29, 78, 86, 31, 79, 85, 30, 77, 85, 30, 77, 85, 31, 78, + 85, 28, 78, 86, 31, 79, 85, 28, 78, 85, 27, 76, 83, 28, 74, 82, 27, 73, 81, 26, 72, 80, 27, 71, 77, 25, 70, 77, 24, 69, 75, 24, 67, 72, 22, 64, 71, 23, 63, 68, 21, 60, 66, 19, 58, 65, 19, 58, 63, 19, 57, 62, 19, 56, 62, 21, 55, 59, 17, 52, 59, 19, 54, + 59, 25, 57, 62, 30, 61, 62, 32, 60, 60, 35, 63, 59, 36, 64, 65, 48, 75, 69, 58, 84, 77, 71, 96, 84, 83, 106, 83, 86, 109, 85, 89, 111, 105, 113, 132, 113, 123, 141, 80, 94, 112, 77, 91, 110, 78, 93, 112, 77, 92, 112, 79, 94, 114, 83, 98, 117, 81, 96, 115, 77, 93, 112, + 78, 96, 113, 79, 97, 113, 81, 102, 115, 81, 106, 115, 96, 119, 127, 135, 153, 159, 176, 185, 188, 189, 196, 198, 177, 190, 191, 162, 178, 181, 163, 179, 181, 159, 176, 181, 153, 170, 175, 147, 166, 171, 153, 171, 176, 159, 176, 182, 162, 178, 184, 163, 179, 185, 164, 180, 186, 170, 185, 191, 171, 185, 191, + 172, 186, 192, 171, 185, 191, 168, 184, 190, 168, 184, 190, 170, 186, 192, 170, 186, 192, 172, 188, 194, 173, 189, 195, 176, 192, 198, 180, 196, 200, 184, 199, 203, 189, 205, 207, 193, 207, 211, 195, 210, 213, 195, 211, 213, 200, 212, 216, 204, 217, 221, 207, 219, 223, 209, 220, 224, 210, 222, 226, 212, 224, 228, + 214, 225, 229, 215, 227, 230, 218, 230, 232, 222, 231, 234, 224, 233, 236, 225, 234, 237, 231, 238, 239, 231, 239, 239, 231, 239, 239, 232, 240, 240, 233, 241, 241, 232, 240, 243, 235, 243, 244, 237, 244, 246, 236, 244, 244, 235, 243, 243, 237, 244, 244, 240, 245, 246, 240, 245, 246, 239, 246, 246, 242, 247, 248, + 243, 248, 249, 238, 245, 245, 243, 248, 249, 243, 248, 248, 242, 247, 247, 242, 247, 247, 242, 247, 248, 240, 246, 247, 242, 247, 248, 243, 248, 249, 242, 247, 248, 241, 247, 248, 242, 247, 248, 241, 246, 247, 240, 247, 248, 241, 246, 247, 237, 244, 246, 235, 242, 244, 232, 242, 242, 233, 241, 244, 239, 245, 248, + 239, 245, 246, 239, 245, 247, 234, 242, 243, 232, 240, 244, 239, 245, 248, 235, 244, 246, 233, 241, 245, 222, 234, 236, 161, 179, 188, 59, 72, 85, 25, 39, 46, 3, 17, 26, 46, 56, 66, 31, 43, 54, 27, 42, 54, 22, 39, 51, 19, 40, 52, 22, 46, 59, 30, 52, 65, 23, 46, 60, 26, 50, 65, + 26, 49, 68, 28, 49, 68, 41, 60, 79, 36, 57, 76, 33, 58, 75, 34, 58, 76, 46, 67, 83, 49, 70, 86, 37, 62, 79, 41, 66, 83, 54, 77, 93, 47, 72, 89, 60, 81, 98, 50, 72, 91, 60, 82, 99, 59, 83, 101, 60, 85, 105, 60, 85, 105, 66, 90, 110, 66, 97, 118, 72, 104, 123, + 82, 113, 132, 75, 106, 125, 45, 70, 89, 39, 58, 77, 95, 112, 125, 181, 197, 202, 223, 233, 236, 224, 234, 238, 226, 237, 240, 233, 242, 242, 232, 243, 243, 230, 240, 240, 236, 244, 244, 235, 243, 243, 236, 244, 244, 236, 244, 244, 234, 242, 242, 235, 243, 243, 235, 243, 242, 234, 242, 242, 235, 242, 242, + 234, 242, 242, 234, 242, 242, 232, 240, 241, 230, 237, 239, 229, 237, 240, 227, 234, 237, 224, 231, 234, 221, 230, 233, 217, 226, 229, 213, 221, 227, 205, 215, 218, 198, 209, 212, 187, 199, 202, 175, 190, 195, 161, 180, 185, 155, 175, 180, 153, 171, 179, 156, 171, 182, 146, 159, 177, 138, 152, 172, 124, 140, 163, + 120, 136, 160, 120, 134, 161, 119, 132, 159, 120, 131, 160, 117, 126, 157, 118, 126, 156, 114, 122, 152, 113, 121, 151, 113, 122, 150, 116, 122, 151, 117, 121, 150, 116, 120, 148, 118, 118, 144, 117, 115, 139, 113, 109, 127, 112, 103, 118, 108, 97, 109, 103, 90, 98, 104, 90, 95, 98, 84, 88, 101, 88, 90, + 55, 16, 50, 54, 14, 49, 54, 13, 49, 55, 15, 50, 54, 14, 48, 56, 13, 49, 57, 16, 50, 57, 14, 51, 58, 15, 52, 57, 14, 51, 56, 14, 51, 57, 15, 52, 58, 17, 52, 56, 15, 49, 57, 14, 51, 59, 17, 54, 57, 16, 53, 59, 15, 53, 60, 17, 55, 60, 16, 54, 61, 16, 55, + 62, 17, 56, 62, 17, 56, 61, 16, 55, 63, 18, 56, 63, 19, 56, 64, 20, 58, 64, 20, 57, 65, 18, 57, 66, 19, 58, 66, 19, 59, 67, 18, 59, 67, 19, 60, 67, 21, 60, 68, 21, 61, 69, 22, 61, 70, 20, 62, 72, 22, 64, 73, 22, 64, 72, 21, 63, 73, 23, 65, 74, 24, 67, + 74, 24, 66, 75, 25, 68, 76, 26, 70, 78, 26, 72, 76, 24, 71, 78, 25, 71, 79, 27, 73, 79, 26, 72, 81, 28, 74, 81, 26, 74, 82, 28, 75, 84, 28, 77, 84, 28, 78, 84, 28, 79, 84, 26, 79, 84, 27, 77, 84, 28, 78, 85, 29, 78, 85, 30, 77, 85, 29, 77, 84, 30, 77, + 85, 29, 78, 85, 28, 79, 86, 29, 79, 83, 27, 76, 83, 27, 75, 81, 26, 73, 81, 26, 72, 79, 24, 72, 78, 25, 70, 75, 22, 68, 74, 24, 68, 72, 24, 66, 69, 22, 61, 69, 22, 61, 68, 22, 61, 65, 18, 58, 63, 19, 57, 63, 20, 57, 61, 19, 54, 60, 18, 53, 56, 16, 51, + 57, 19, 54, 58, 25, 57, 59, 27, 57, 57, 30, 58, 56, 32, 60, 66, 49, 76, 73, 62, 88, 79, 75, 100, 78, 77, 101, 74, 75, 99, 65, 70, 94, 63, 72, 94, 90, 100, 119, 115, 126, 146, 84, 99, 119, 75, 92, 112, 75, 92, 112, 76, 91, 111, 78, 93, 112, 82, 97, 116, 82, 96, 115, + 85, 100, 118, 82, 99, 116, 80, 99, 115, 78, 101, 114, 87, 109, 120, 100, 124, 132, 136, 155, 160, 176, 187, 190, 184, 193, 196, 171, 185, 188, 160, 177, 180, 159, 176, 178, 158, 173, 180, 153, 169, 175, 157, 172, 178, 155, 172, 178, 154, 172, 178, 160, 175, 182, 162, 178, 184, 165, 181, 187, 168, 184, 190, + 173, 187, 193, 175, 189, 195, 174, 189, 195, 171, 187, 193, 172, 188, 194, 174, 189, 194, 177, 192, 195, 181, 195, 199, 183, 198, 202, 189, 204, 206, 190, 205, 209, 192, 206, 209, 195, 208, 212, 196, 210, 214, 198, 213, 216, 203, 215, 219, 205, 217, 221, 208, 219, 224, 210, 223, 226, 213, 224, 228, 214, 225, 229, + 214, 225, 229, 216, 227, 231, 219, 230, 233, 220, 232, 235, 221, 231, 234, 227, 236, 239, 232, 239, 240, 231, 239, 240, 232, 239, 240, 232, 240, 240, 233, 241, 241, 234, 242, 243, 236, 244, 244, 237, 245, 245, 236, 244, 244, 237, 244, 245, 240, 245, 246, 240, 245, 246, 240, 245, 246, 240, 245, 246, 242, 247, 248, + 245, 249, 250, 237, 244, 245, 243, 248, 249, 243, 248, 249, 242, 247, 248, 242, 247, 248, 243, 248, 249, 241, 246, 247, 243, 248, 249, 243, 248, 249, 242, 247, 248, 238, 247, 247, 243, 247, 249, 238, 246, 246, 240, 246, 247, 242, 247, 248, 239, 245, 246, 233, 240, 243, 230, 238, 241, 230, 239, 240, 238, 245, 245, + 240, 245, 247, 236, 244, 246, 236, 243, 245, 226, 238, 240, 238, 245, 248, 236, 243, 245, 233, 241, 240, 205, 219, 224, 89, 111, 122, 23, 38, 48, 17, 30, 36, 23, 35, 42, 35, 47, 57, 56, 68, 80, 21, 40, 53, 16, 39, 51, 27, 49, 62, 16, 40, 53, 35, 57, 69, 23, 47, 60, 31, 52, 68, + 29, 50, 67, 31, 53, 71, 28, 51, 70, 37, 58, 75, 39, 62, 79, 46, 66, 83, 44, 64, 81, 39, 60, 77, 41, 63, 80, 42, 67, 84, 41, 66, 84, 45, 69, 87, 43, 67, 85, 56, 77, 94, 62, 83, 100, 59, 80, 99, 54, 79, 100, 58, 83, 105, 58, 84, 105, 60, 92, 112, 62, 95, 115, + 69, 102, 121, 79, 111, 130, 78, 109, 128, 36, 63, 84, 43, 65, 82, 135, 149, 157, 200, 217, 223, 226, 237, 240, 233, 241, 244, 227, 238, 239, 226, 238, 239, 234, 243, 243, 236, 243, 243, 235, 243, 243, 236, 244, 244, 236, 244, 244, 235, 243, 243, 233, 243, 243, 234, 243, 243, 235, 243, 243, 235, 243, 243, + 235, 243, 243, 234, 242, 242, 234, 242, 242, 234, 241, 242, 233, 241, 242, 231, 239, 241, 231, 238, 240, 229, 236, 239, 226, 234, 236, 225, 232, 235, 221, 229, 230, 217, 224, 225, 209, 218, 221, 200, 211, 214, 192, 205, 209, 187, 201, 206, 182, 196, 202, 175, 187, 197, 158, 174, 186, 142, 160, 175, 130, 151, 168, + 124, 143, 165, 120, 138, 164, 117, 134, 161, 120, 133, 161, 115, 126, 155, 112, 122, 154, 113, 123, 153, 113, 123, 153, 115, 122, 152, 115, 123, 151, 116, 122, 151, 116, 118, 148, 116, 118, 144, 113, 111, 136, 112, 108, 127, 109, 101, 116, 108, 97, 110, 106, 93, 102, 105, 91, 96, 101, 87, 91, 103, 90, 94, + 54, 14, 49, 53, 13, 49, 54, 11, 48, 55, 15, 50, 54, 14, 49, 54, 14, 49, 55, 15, 50, 57, 16, 52, 57, 15, 52, 58, 14, 51, 58, 16, 52, 56, 14, 51, 57, 15, 51, 57, 14, 50, 58, 17, 54, 59, 17, 54, 58, 17, 54, 58, 16, 53, 58, 14, 52, 59, 16, 54, 59, 14, 53, + 63, 19, 57, 62, 17, 56, 61, 16, 55, 61, 17, 55, 64, 19, 57, 64, 18, 57, 62, 17, 58, 65, 18, 57, 66, 19, 58, 67, 19, 59, 68, 20, 61, 67, 20, 60, 69, 21, 61, 67, 19, 61, 70, 23, 62, 70, 23, 63, 71, 20, 62, 72, 22, 63, 72, 24, 64, 72, 22, 64, 72, 24, 65, + 73, 26, 67, 73, 24, 66, 75, 24, 67, 77, 26, 69, 77, 25, 71, 76, 24, 71, 78, 26, 72, 78, 24, 71, 80, 26, 73, 82, 28, 76, 83, 27, 76, 83, 27, 76, 82, 26, 77, 83, 26, 77, 84, 27, 78, 84, 27, 78, 83, 27, 76, 84, 28, 77, 85, 29, 77, 84, 28, 77, 85, 30, 79, + 85, 28, 78, 83, 27, 78, 84, 26, 77, 83, 27, 76, 81, 25, 73, 81, 26, 73, 79, 24, 71, 78, 25, 70, 78, 24, 70, 76, 25, 68, 74, 24, 68, 70, 21, 65, 69, 23, 62, 67, 22, 60, 65, 20, 59, 65, 21, 60, 65, 21, 59, 61, 18, 55, 61, 18, 54, 60, 17, 53, 57, 14, 51, + 54, 14, 50, 54, 21, 53, 57, 26, 56, 54, 27, 54, 55, 32, 59, 66, 48, 75, 72, 59, 85, 72, 66, 92, 69, 67, 92, 59, 61, 86, 57, 62, 86, 66, 75, 97, 74, 86, 106, 91, 104, 125, 123, 136, 155, 98, 114, 133, 75, 92, 111, 70, 87, 107, 71, 86, 105, 70, 84, 103, 71, 85, 104, + 78, 91, 109, 76, 91, 109, 77, 94, 111, 79, 97, 113, 84, 104, 118, 88, 111, 123, 98, 125, 133, 139, 161, 167, 177, 187, 190, 181, 192, 194, 169, 182, 185, 163, 178, 181, 160, 175, 178, 154, 170, 174, 153, 169, 175, 153, 169, 176, 153, 170, 177, 157, 174, 181, 159, 177, 183, 159, 177, 183, 162, 180, 186, + 170, 185, 191, 174, 188, 194, 176, 190, 196, 175, 190, 196, 179, 193, 198, 181, 196, 199, 185, 200, 203, 185, 200, 203, 186, 201, 204, 190, 205, 208, 194, 207, 211, 192, 207, 210, 191, 207, 210, 194, 210, 213, 202, 214, 218, 206, 218, 222, 207, 219, 222, 208, 221, 224, 212, 223, 227, 215, 227, 230, 215, 226, 230, + 215, 227, 230, 217, 228, 231, 219, 231, 233, 218, 230, 234, 223, 235, 237, 227, 236, 239, 231, 239, 241, 231, 240, 240, 230, 239, 241, 234, 242, 242, 234, 242, 242, 235, 243, 243, 239, 245, 245, 239, 244, 245, 239, 243, 244, 239, 244, 244, 239, 244, 245, 240, 245, 246, 240, 245, 246, 241, 246, 247, 241, 246, 247, + 238, 243, 244, 241, 247, 248, 243, 248, 248, 243, 248, 249, 243, 248, 249, 241, 247, 248, 243, 248, 249, 242, 247, 248, 244, 249, 250, 243, 248, 249, 240, 247, 247, 238, 245, 246, 241, 246, 247, 239, 246, 246, 238, 245, 245, 243, 248, 249, 236, 243, 246, 230, 239, 242, 217, 230, 233, 224, 234, 237, 233, 241, 242, + 240, 246, 246, 234, 242, 244, 231, 239, 242, 220, 232, 234, 231, 238, 241, 237, 243, 245, 225, 234, 237, 159, 178, 185, 37, 49, 58, 23, 37, 47, 23, 35, 41, 36, 48, 56, 42, 56, 68, 67, 78, 91, 24, 44, 61, 21, 41, 59, 26, 47, 63, 36, 56, 72, 36, 57, 72, 22, 45, 60, 46, 64, 80, + 28, 49, 66, 25, 46, 64, 20, 44, 61, 37, 59, 76, 26, 51, 68, 44, 65, 81, 32, 54, 71, 37, 58, 76, 47, 67, 85, 41, 65, 82, 47, 68, 85, 48, 70, 88, 52, 73, 90, 58, 78, 97, 57, 79, 96, 61, 81, 100, 57, 81, 103, 60, 84, 106, 64, 89, 110, 59, 87, 109, 59, 92, 112, + 63, 97, 116, 73, 105, 125, 77, 108, 128, 67, 95, 114, 38, 60, 79, 65, 81, 94, 164, 180, 188, 209, 223, 227, 208, 223, 227, 212, 225, 229, 226, 236, 239, 231, 239, 242, 230, 239, 242, 233, 242, 243, 234, 242, 243, 235, 243, 243, 236, 244, 244, 237, 244, 244, 236, 244, 244, 235, 243, 243, 235, 243, 244, + 235, 243, 243, 235, 244, 244, 235, 243, 243, 235, 243, 243, 235, 243, 243, 234, 241, 242, 234, 241, 244, 232, 239, 241, 233, 241, 240, 231, 238, 241, 228, 235, 235, 226, 234, 234, 221, 229, 232, 217, 225, 229, 212, 222, 225, 209, 218, 222, 202, 213, 217, 191, 203, 209, 173, 189, 197, 157, 175, 185, 149, 166, 180, + 137, 154, 173, 130, 149, 170, 124, 141, 165, 119, 133, 159, 114, 124, 154, 115, 126, 156, 115, 125, 156, 113, 123, 153, 116, 125, 154, 116, 123, 152, 116, 122, 151, 117, 120, 149, 113, 115, 141, 112, 111, 135, 111, 108, 128, 110, 103, 119, 109, 99, 112, 108, 95, 105, 107, 93, 101, 103, 87, 95, 107, 92, 98, + 54, 14, 50, 54, 13, 50, 55, 14, 50, 53, 14, 49, 56, 16, 51, 54, 14, 49, 56, 16, 51, 56, 16, 51, 56, 14, 49, 56, 13, 50, 56, 14, 52, 59, 17, 53, 58, 18, 53, 61, 20, 55, 59, 18, 55, 60, 20, 55, 58, 17, 54, 59, 17, 54, 59, 16, 53, 60, 17, 54, 59, 16, 54, + 60, 17, 55, 60, 15, 54, 63, 19, 57, 62, 16, 55, 62, 16, 57, 65, 20, 59, 63, 17, 56, 64, 18, 58, 65, 20, 59, 65, 19, 58, 66, 19, 58, 67, 20, 59, 67, 20, 59, 67, 19, 59, 67, 22, 61, 68, 21, 60, 67, 20, 58, 70, 23, 62, 70, 23, 62, 70, 23, 62, 71, 23, 64, + 72, 23, 64, 72, 24, 65, 73, 23, 65, 74, 24, 66, 77, 27, 70, 74, 24, 67, 78, 25, 72, 78, 26, 72, 79, 25, 72, 80, 25, 73, 81, 25, 74, 81, 25, 75, 83, 27, 77, 82, 26, 77, 81, 26, 76, 83, 27, 76, 84, 28, 77, 83, 27, 76, 84, 28, 77, 83, 28, 77, 84, 27, 77, + 84, 28, 79, 83, 26, 77, 82, 26, 76, 82, 27, 76, 81, 25, 74, 80, 25, 72, 79, 24, 70, 78, 24, 70, 77, 24, 69, 75, 22, 69, 72, 21, 67, 70, 21, 65, 67, 22, 62, 66, 21, 60, 64, 19, 58, 63, 19, 58, 64, 20, 58, 60, 17, 55, 60, 18, 53, 60, 17, 53, 59, 17, 52, + 54, 16, 51, 53, 19, 52, 57, 26, 56, 55, 26, 55, 53, 29, 54, 63, 41, 69, 70, 53, 80, 62, 54, 80, 60, 58, 82, 58, 61, 85, 71, 79, 101, 80, 93, 115, 89, 101, 123, 87, 100, 123, 94, 108, 130, 122, 135, 154, 99, 116, 132, 70, 88, 106, 67, 82, 101, 65, 79, 98, 63, 77, 96, + 63, 77, 95, 67, 82, 99, 75, 91, 108, 80, 99, 116, 82, 101, 117, 84, 106, 119, 84, 108, 119, 104, 129, 138, 151, 167, 172, 178, 188, 192, 179, 190, 194, 170, 182, 186, 163, 177, 180, 159, 173, 177, 152, 168, 174, 151, 167, 174, 149, 166, 173, 154, 170, 177, 155, 173, 179, 155, 173, 180, 159, 177, 184, + 164, 183, 188, 170, 186, 192, 175, 190, 196, 178, 193, 198, 183, 198, 201, 185, 200, 203, 187, 202, 205, 190, 205, 207, 190, 206, 209, 188, 204, 209, 189, 205, 210, 189, 205, 211, 190, 207, 210, 194, 209, 212, 201, 212, 216, 207, 218, 223, 209, 221, 224, 211, 222, 225, 213, 225, 227, 214, 227, 229, 216, 228, 231, + 215, 227, 231, 218, 230, 232, 220, 231, 233, 221, 233, 235, 224, 234, 237, 228, 237, 239, 232, 240, 240, 230, 239, 239, 232, 240, 241, 235, 242, 242, 234, 242, 242, 238, 243, 244, 239, 245, 246, 240, 245, 246, 239, 244, 245, 239, 244, 245, 240, 245, 246, 241, 246, 247, 242, 246, 248, 242, 247, 248, 240, 247, 247, + 234, 242, 243, 242, 248, 248, 241, 246, 247, 242, 247, 248, 244, 248, 249, 240, 247, 247, 243, 248, 249, 241, 247, 248, 244, 249, 250, 240, 247, 248, 241, 246, 247, 237, 245, 246, 240, 245, 246, 237, 244, 245, 236, 244, 244, 240, 246, 247, 237, 244, 246, 224, 235, 237, 216, 228, 231, 209, 223, 227, 227, 236, 239, + 234, 241, 243, 234, 242, 244, 223, 233, 236, 215, 227, 230, 230, 238, 239, 222, 232, 235, 202, 216, 221, 90, 115, 124, 20, 33, 43, 15, 29, 38, 16, 29, 42, 17, 30, 48, 56, 67, 83, 23, 42, 60, 42, 59, 76, 29, 49, 67, 19, 41, 59, 28, 48, 64, 23, 43, 58, 37, 54, 70, 33, 51, 66, + 27, 47, 63, 26, 47, 62, 24, 46, 61, 32, 51, 68, 27, 51, 66, 40, 61, 77, 33, 56, 72, 43, 63, 79, 36, 59, 76, 40, 64, 81, 36, 60, 78, 39, 62, 83, 44, 65, 87, 34, 60, 79, 45, 68, 87, 61, 80, 101, 58, 81, 104, 62, 86, 108, 65, 89, 111, 66, 92, 114, 66, 96, 118, + 59, 92, 115, 67, 100, 121, 76, 108, 128, 77, 110, 129, 58, 91, 110, 31, 55, 71, 112, 131, 142, 157, 176, 184, 190, 208, 215, 203, 217, 223, 218, 230, 234, 216, 230, 233, 230, 239, 241, 235, 243, 244, 236, 243, 244, 236, 244, 244, 236, 244, 244, 233, 243, 243, 234, 242, 242, 236, 244, 244, 236, 244, 244, + 235, 243, 243, 236, 243, 245, 236, 244, 244, 235, 243, 243, 235, 243, 244, 234, 242, 243, 235, 242, 245, 234, 242, 243, 234, 241, 242, 233, 241, 241, 232, 240, 240, 231, 239, 239, 229, 236, 236, 227, 234, 237, 226, 233, 236, 223, 230, 233, 214, 223, 227, 205, 216, 219, 190, 205, 211, 181, 194, 201, 170, 182, 193, + 158, 172, 187, 146, 162, 179, 130, 148, 168, 118, 135, 160, 114, 131, 157, 115, 126, 156, 116, 126, 156, 117, 128, 157, 114, 124, 154, 120, 127, 155, 118, 124, 151, 115, 118, 146, 110, 112, 138, 110, 111, 134, 112, 109, 130, 110, 105, 123, 108, 99, 114, 111, 99, 110, 108, 94, 103, 110, 95, 102, 106, 90, 97, + 53, 13, 49, 54, 14, 50, 55, 15, 51, 55, 14, 51, 55, 15, 50, 55, 15, 50, 55, 14, 49, 56, 14, 49, 57, 15, 50, 57, 14, 51, 58, 15, 51, 57, 17, 52, 59, 18, 55, 61, 20, 56, 65, 25, 59, 64, 24, 59, 64, 26, 60, 67, 29, 64, 68, 30, 64, 67, 27, 62, 66, 26, 62, + 66, 25, 62, 66, 24, 61, 65, 22, 60, 64, 19, 59, 66, 21, 60, 64, 18, 58, 65, 20, 59, 64, 19, 58, 65, 20, 59, 64, 19, 57, 65, 20, 59, 63, 16, 57, 69, 24, 63, 65, 20, 59, 68, 23, 61, 65, 19, 58, 68, 22, 59, 68, 23, 62, 68, 22, 61, 70, 22, 63, 70, 23, 62, + 71, 23, 63, 72, 22, 64, 72, 24, 65, 73, 23, 65, 75, 26, 68, 76, 26, 69, 75, 25, 69, 78, 24, 71, 79, 26, 73, 79, 23, 71, 80, 25, 74, 81, 25, 74, 81, 26, 76, 80, 24, 75, 83, 30, 78, 81, 27, 76, 82, 26, 77, 82, 25, 76, 82, 25, 76, 83, 25, 76, 83, 27, 77, + 83, 26, 77, 83, 27, 77, 81, 25, 75, 81, 27, 75, 81, 27, 75, 80, 26, 74, 78, 25, 72, 78, 24, 71, 77, 23, 70, 74, 23, 68, 73, 22, 66, 69, 22, 65, 68, 22, 63, 66, 21, 60, 65, 21, 60, 65, 20, 58, 61, 18, 56, 61, 18, 55, 59, 16, 53, 59, 16, 53, 57, 16, 52, + 54, 17, 52, 53, 18, 52, 56, 24, 55, 54, 25, 54, 51, 26, 52, 54, 30, 56, 60, 40, 65, 55, 45, 70, 61, 60, 84, 70, 77, 100, 85, 95, 119, 92, 103, 125, 90, 103, 125, 88, 102, 124, 84, 100, 123, 83, 100, 120, 120, 136, 150, 101, 116, 133, 71, 87, 104, 68, 83, 102, 68, 82, 101, + 67, 81, 100, 70, 85, 104, 76, 91, 111, 79, 95, 112, 76, 94, 111, 73, 94, 111, 74, 95, 111, 84, 106, 118, 108, 131, 140, 152, 167, 173, 178, 188, 191, 180, 190, 194, 168, 179, 183, 159, 173, 178, 150, 165, 171, 149, 165, 172, 142, 160, 168, 147, 165, 172, 150, 167, 174, 153, 171, 178, 157, 175, 182, + 161, 179, 185, 168, 185, 191, 175, 191, 197, 179, 194, 198, 182, 197, 202, 183, 198, 203, 184, 200, 203, 186, 201, 208, 191, 206, 212, 187, 204, 210, 189, 205, 210, 191, 206, 213, 193, 210, 213, 195, 210, 213, 201, 214, 218, 204, 218, 221, 208, 220, 224, 211, 223, 225, 214, 227, 229, 215, 227, 229, 215, 227, 230, + 216, 228, 230, 220, 231, 233, 224, 233, 236, 223, 233, 236, 226, 235, 238, 229, 238, 240, 233, 241, 241, 232, 241, 240, 233, 241, 241, 236, 244, 244, 237, 244, 244, 239, 244, 245, 240, 245, 246, 240, 245, 246, 239, 244, 245, 240, 245, 246, 241, 246, 247, 242, 247, 248, 243, 248, 249, 242, 247, 248, 242, 248, 249, + 232, 241, 241, 241, 246, 247, 241, 246, 247, 242, 247, 248, 243, 248, 249, 239, 245, 245, 244, 249, 250, 241, 246, 247, 241, 247, 248, 236, 243, 244, 239, 246, 247, 237, 244, 245, 235, 243, 243, 233, 241, 242, 233, 240, 243, 238, 244, 244, 238, 244, 247, 213, 226, 229, 209, 223, 227, 187, 209, 215, 215, 227, 230, + 227, 236, 239, 230, 238, 241, 217, 229, 232, 199, 216, 221, 216, 226, 229, 222, 233, 235, 137, 162, 169, 37, 61, 69, 26, 37, 47, 44, 53, 62, 17, 30, 43, 43, 54, 69, 43, 57, 74, 26, 43, 61, 35, 52, 70, 32, 50, 69, 34, 52, 70, 26, 44, 60, 7, 31, 46, 23, 45, 60, 28, 47, 64, + 36, 54, 70, 19, 41, 56, 27, 48, 63, 25, 46, 61, 27, 49, 64, 39, 60, 75, 34, 57, 73, 31, 55, 71, 38, 60, 78, 35, 60, 78, 40, 63, 82, 39, 63, 83, 46, 68, 88, 34, 60, 81, 47, 70, 91, 50, 72, 94, 46, 73, 96, 49, 76, 100, 53, 80, 104, 65, 90, 113, 56, 88, 113, + 63, 94, 120, 67, 96, 122, 69, 103, 124, 72, 107, 126, 76, 109, 128, 44, 76, 94, 51, 71, 86, 132, 153, 165, 162, 184, 194, 189, 209, 216, 196, 215, 221, 223, 234, 236, 219, 231, 234, 232, 240, 243, 229, 239, 240, 233, 241, 241, 234, 243, 243, 235, 244, 244, 234, 242, 242, 236, 244, 244, 236, 244, 244, + 235, 243, 244, 235, 243, 244, 236, 244, 244, 235, 243, 243, 235, 243, 243, 236, 243, 244, 235, 244, 243, 235, 243, 243, 234, 242, 242, 234, 242, 242, 234, 241, 241, 233, 241, 241, 232, 241, 240, 234, 238, 239, 232, 239, 239, 228, 235, 237, 226, 233, 235, 217, 226, 229, 210, 221, 224, 203, 213, 219, 192, 201, 209, + 182, 192, 202, 161, 175, 190, 142, 159, 176, 124, 144, 164, 117, 137, 159, 124, 136, 162, 126, 136, 163, 123, 133, 161, 124, 133, 159, 120, 129, 154, 116, 123, 149, 111, 115, 143, 112, 115, 140, 111, 111, 134, 114, 112, 133, 113, 109, 128, 114, 106, 123, 111, 100, 113, 113, 98, 110, 110, 94, 103, 111, 95, 102, + 54, 14, 50, 54, 13, 50, 55, 14, 51, 54, 12, 50, 55, 15, 51, 56, 13, 50, 56, 12, 50, 56, 14, 50, 57, 15, 50, 59, 17, 52, 57, 14, 50, 60, 18, 53, 57, 14, 51, 55, 12, 49, 59, 15, 53, 59, 19, 55, 61, 22, 58, 62, 22, 58, 65, 25, 61, 69, 29, 64, 72, 34, 67, + 73, 33, 68, 74, 34, 69, 76, 35, 71, 77, 34, 71, 76, 33, 70, 78, 37, 73, 77, 37, 73, 78, 38, 74, 77, 36, 72, 79, 39, 74, 80, 39, 74, 81, 39, 75, 80, 38, 75, 80, 39, 75, 80, 38, 74, 82, 40, 75, 80, 38, 73, 81, 39, 73, 81, 39, 75, 79, 35, 72, 80, 35, 73, + 80, 36, 73, 80, 34, 74, 80, 33, 74, 78, 30, 71, 78, 31, 72, 77, 30, 71, 78, 28, 70, 77, 24, 70, 77, 24, 70, 79, 27, 71, 80, 25, 71, 80, 26, 72, 80, 26, 73, 79, 27, 75, 79, 27, 75, 81, 28, 76, 83, 28, 76, 84, 29, 76, 83, 27, 76, 82, 26, 75, 84, 28, 77, + 83, 29, 77, 83, 28, 76, 83, 27, 75, 82, 27, 75, 79, 25, 73, 79, 26, 73, 78, 24, 71, 77, 23, 69, 77, 23, 69, 73, 20, 67, 72, 20, 66, 69, 21, 64, 66, 20, 62, 66, 21, 60, 65, 21, 58, 63, 18, 56, 62, 19, 56, 62, 19, 56, 60, 17, 54, 59, 16, 53, 57, 15, 51, + 56, 18, 52, 53, 19, 53, 56, 24, 55, 56, 26, 55, 53, 25, 52, 50, 24, 50, 50, 31, 56, 60, 53, 76, 75, 74, 99, 89, 94, 117, 90, 99, 123, 86, 98, 120, 80, 94, 116, 77, 92, 114, 76, 90, 113, 75, 90, 112, 80, 94, 115, 123, 137, 154, 108, 123, 139, 78, 94, 112, 78, 94, 111, + 80, 96, 113, 81, 96, 115, 83, 98, 117, 84, 99, 117, 76, 93, 110, 74, 92, 109, 73, 93, 108, 76, 97, 113, 81, 106, 118, 108, 132, 140, 152, 167, 173, 172, 184, 188, 171, 183, 187, 158, 172, 177, 148, 164, 171, 144, 161, 168, 141, 159, 166, 140, 158, 166, 142, 160, 168, 145, 163, 170, 154, 172, 179, + 158, 177, 183, 162, 181, 186, 170, 187, 193, 177, 194, 198, 181, 198, 202, 180, 196, 202, 181, 198, 204, 182, 200, 206, 189, 205, 211, 190, 206, 212, 191, 207, 213, 193, 209, 214, 194, 211, 213, 198, 213, 216, 199, 215, 218, 206, 218, 222, 209, 222, 225, 211, 223, 226, 214, 227, 229, 215, 227, 229, 214, 226, 229, + 218, 230, 232, 222, 232, 235, 224, 233, 235, 225, 234, 236, 226, 235, 238, 232, 239, 242, 234, 241, 242, 233, 241, 242, 236, 243, 244, 236, 244, 244, 238, 244, 245, 238, 243, 244, 239, 244, 245, 240, 245, 246, 239, 245, 246, 240, 245, 246, 241, 246, 247, 241, 246, 247, 242, 247, 248, 242, 247, 248, 234, 240, 242, + 238, 246, 246, 239, 245, 246, 240, 246, 247, 241, 247, 248, 241, 246, 247, 237, 244, 244, 241, 246, 247, 241, 246, 247, 236, 244, 244, 228, 239, 239, 233, 242, 243, 238, 244, 246, 229, 237, 240, 227, 236, 238, 222, 233, 235, 230, 239, 240, 235, 241, 243, 205, 220, 226, 197, 213, 219, 176, 200, 207, 205, 218, 222, + 217, 228, 230, 225, 233, 235, 210, 223, 226, 195, 212, 216, 182, 203, 208, 181, 201, 206, 71, 99, 107, 38, 56, 63, 31, 41, 48, 30, 44, 52, 23, 37, 50, 50, 63, 77, 18, 36, 52, 17, 36, 52, 24, 42, 59, 28, 46, 65, 26, 45, 63, 38, 55, 70, 29, 48, 64, 28, 47, 61, 47, 63, 77, + 33, 51, 66, 23, 44, 59, 32, 51, 66, 28, 48, 63, 29, 50, 64, 39, 60, 75, 41, 61, 76, 33, 56, 73, 45, 66, 83, 49, 71, 88, 52, 73, 91, 46, 69, 87, 39, 64, 85, 37, 64, 86, 30, 60, 83, 36, 67, 90, 42, 71, 95, 50, 78, 101, 53, 81, 105, 53, 83, 108, 63, 92, 117, + 64, 94, 119, 67, 98, 123, 63, 98, 121, 74, 109, 130, 70, 106, 127, 75, 106, 126, 33, 61, 84, 100, 117, 129, 147, 161, 171, 156, 178, 186, 174, 195, 203, 198, 216, 222, 208, 224, 228, 213, 228, 232, 222, 234, 237, 227, 238, 239, 230, 240, 242, 234, 242, 242, 234, 243, 243, 235, 243, 243, 235, 243, 243, + 236, 244, 244, 236, 244, 244, 235, 243, 243, 236, 243, 244, 235, 243, 243, 235, 243, 243, 236, 244, 244, 236, 244, 244, 236, 244, 244, 235, 243, 243, 235, 243, 242, 235, 243, 243, 237, 241, 243, 234, 242, 242, 234, 240, 241, 232, 239, 239, 230, 237, 237, 227, 234, 236, 222, 230, 234, 216, 224, 228, 208, 216, 222, + 196, 206, 214, 176, 191, 201, 158, 177, 189, 143, 164, 180, 138, 156, 174, 137, 152, 173, 134, 146, 171, 132, 143, 167, 130, 140, 163, 123, 132, 156, 115, 122, 148, 117, 123, 147, 115, 119, 143, 118, 118, 140, 117, 115, 136, 116, 112, 131, 116, 108, 125, 115, 105, 119, 114, 101, 112, 112, 97, 106, 113, 99, 106, + 52, 11, 49, 54, 13, 50, 52, 11, 48, 54, 14, 50, 55, 15, 52, 55, 14, 51, 56, 13, 50, 58, 17, 51, 55, 13, 49, 57, 16, 51, 58, 16, 52, 56, 13, 51, 58, 16, 52, 58, 15, 52, 60, 17, 54, 58, 15, 53, 58, 16, 53, 58, 15, 53, 58, 16, 53, 59, 16, 53, 59, 16, 52, + 58, 14, 51, 65, 22, 59, 64, 19, 58, 66, 22, 60, 68, 24, 62, 66, 23, 60, 68, 25, 63, 67, 24, 62, 68, 25, 63, 68, 25, 63, 70, 27, 65, 72, 28, 66, 73, 29, 68, 74, 31, 69, 74, 30, 68, 76, 33, 71, 77, 34, 70, 78, 35, 71, 78, 35, 71, 78, 35, 72, 81, 37, 74, + 83, 39, 77, 85, 41, 79, 87, 43, 82, 87, 44, 82, 89, 46, 82, 89, 46, 83, 91, 48, 85, 94, 51, 88, 94, 51, 89, 92, 49, 88, 94, 48, 88, 92, 46, 86, 88, 43, 84, 84, 37, 81, 82, 30, 77, 79, 28, 74, 79, 26, 73, 80, 25, 73, 82, 27, 74, 84, 29, 76, 81, 25, 74, + 83, 30, 76, 82, 27, 75, 81, 25, 74, 81, 27, 74, 79, 25, 72, 80, 27, 74, 78, 25, 70, 76, 24, 68, 75, 23, 68, 72, 20, 66, 71, 22, 65, 68, 22, 64, 67, 19, 62, 66, 21, 60, 65, 21, 58, 63, 19, 56, 61, 18, 55, 60, 17, 54, 59, 16, 53, 60, 17, 54, 56, 15, 52, + 55, 17, 51, 52, 17, 51, 56, 25, 55, 57, 27, 56, 54, 26, 53, 52, 27, 53, 56, 40, 64, 68, 64, 86, 79, 77, 102, 85, 90, 114, 83, 90, 114, 79, 87, 109, 78, 85, 108, 75, 83, 105, 73, 83, 105, 74, 83, 105, 80, 93, 115, 89, 102, 124, 126, 140, 157, 111, 126, 142, 85, 102, 119, + 82, 99, 116, 80, 95, 114, 83, 98, 117, 85, 101, 118, 85, 101, 118, 85, 101, 117, 84, 102, 118, 82, 101, 117, 79, 102, 117, 84, 108, 120, 110, 133, 142, 148, 164, 170, 167, 179, 184, 162, 174, 180, 149, 164, 170, 141, 159, 167, 137, 154, 163, 136, 153, 162, 137, 154, 163, 138, 155, 164, 147, 165, 173, + 153, 172, 179, 161, 180, 185, 165, 184, 189, 172, 191, 196, 181, 197, 203, 182, 198, 204, 182, 199, 205, 183, 202, 207, 189, 204, 210, 191, 207, 213, 195, 210, 215, 198, 213, 216, 199, 213, 216, 200, 216, 219, 203, 216, 220, 206, 219, 223, 209, 221, 226, 210, 223, 225, 216, 228, 230, 216, 227, 231, 215, 228, 230, + 218, 230, 232, 226, 234, 234, 226, 235, 235, 227, 237, 237, 229, 238, 239, 232, 240, 240, 234, 243, 243, 235, 243, 243, 235, 243, 244, 239, 245, 246, 238, 244, 245, 237, 245, 245, 240, 244, 245, 238, 245, 245, 240, 246, 247, 239, 246, 246, 241, 246, 247, 241, 246, 247, 242, 247, 248, 242, 248, 248, 231, 240, 240, + 240, 246, 246, 236, 244, 244, 239, 245, 246, 241, 246, 247, 239, 245, 245, 234, 242, 244, 236, 243, 244, 238, 243, 244, 228, 237, 238, 224, 234, 236, 226, 236, 237, 235, 241, 243, 223, 233, 236, 221, 231, 234, 206, 221, 225, 220, 231, 234, 228, 236, 239, 203, 218, 223, 183, 203, 211, 172, 193, 202, 173, 193, 200, + 193, 209, 213, 228, 235, 237, 200, 215, 219, 177, 197, 202, 168, 191, 198, 108, 135, 143, 42, 56, 62, 26, 37, 44, 17, 28, 35, 25, 40, 50, 33, 51, 63, 43, 59, 73, 26, 44, 59, 18, 38, 53, 22, 41, 58, 31, 49, 67, 23, 44, 61, 23, 43, 59, 34, 53, 68, 33, 51, 67, 37, 56, 70, + 33, 54, 68, 23, 45, 60, 29, 48, 63, 29, 49, 64, 31, 52, 67, 37, 58, 73, 42, 62, 79, 31, 55, 72, 40, 62, 80, 47, 69, 88, 48, 70, 88, 29, 56, 76, 38, 63, 85, 51, 75, 97, 52, 77, 100, 42, 71, 93, 51, 78, 101, 48, 77, 100, 50, 80, 103, 48, 81, 105, 62, 91, 116, + 56, 89, 114, 63, 94, 119, 52, 90, 115, 63, 99, 123, 67, 101, 125, 82, 114, 137, 57, 85, 107, 63, 84, 98, 133, 150, 158, 148, 169, 178, 158, 182, 192, 173, 197, 204, 189, 208, 215, 202, 220, 226, 217, 229, 233, 224, 234, 238, 227, 236, 239, 229, 239, 240, 233, 242, 242, 235, 243, 243, 235, 243, 243, + 236, 244, 244, 235, 243, 243, 235, 243, 243, 236, 244, 243, 236, 244, 244, 236, 243, 244, 237, 245, 245, 236, 244, 244, 239, 243, 244, 237, 242, 243, 235, 243, 243, 236, 241, 242, 234, 242, 242, 236, 241, 242, 235, 242, 242, 234, 240, 240, 231, 240, 240, 231, 239, 239, 230, 236, 237, 224, 233, 235, 217, 226, 229, + 207, 218, 221, 195, 208, 211, 182, 198, 204, 175, 192, 201, 166, 184, 197, 161, 177, 192, 154, 167, 186, 147, 157, 177, 133, 145, 165, 125, 135, 157, 122, 130, 152, 122, 129, 152, 121, 126, 149, 122, 124, 145, 122, 121, 141, 118, 114, 135, 119, 112, 129, 117, 107, 121, 117, 106, 118, 113, 98, 108, 115, 101, 108, + 53, 12, 49, 52, 11, 49, 55, 14, 51, 53, 13, 49, 52, 15, 50, 54, 13, 50, 56, 15, 50, 57, 15, 50, 57, 15, 50, 57, 15, 50, 59, 16, 52, 57, 14, 51, 58, 15, 51, 57, 14, 51, 59, 16, 53, 58, 14, 53, 57, 13, 52, 60, 17, 55, 60, 16, 54, 59, 17, 53, 62, 19, 56, + 60, 16, 53, 60, 15, 54, 62, 17, 55, 61, 17, 55, 60, 16, 54, 61, 16, 55, 60, 16, 55, 62, 19, 57, 63, 18, 57, 64, 20, 59, 64, 19, 59, 64, 18, 59, 63, 17, 58, 65, 17, 59, 65, 18, 60, 67, 20, 60, 66, 20, 59, 68, 22, 61, 68, 21, 61, 69, 22, 61, 69, 22, 61, + 70, 22, 64, 70, 23, 65, 70, 24, 67, 73, 24, 68, 75, 24, 68, 76, 26, 70, 76, 24, 70, 77, 25, 72, 77, 27, 72, 79, 29, 74, 83, 35, 78, 88, 39, 83, 92, 46, 87, 97, 51, 91, 97, 53, 93, 100, 57, 95, 102, 59, 96, 97, 51, 90, 94, 44, 86, 84, 32, 75, 82, 28, 74, + 81, 27, 74, 83, 30, 75, 81, 27, 74, 80, 27, 73, 80, 26, 72, 78, 26, 70, 77, 26, 68, 75, 24, 68, 73, 22, 66, 71, 19, 65, 70, 20, 65, 70, 22, 64, 67, 20, 60, 67, 20, 58, 66, 22, 59, 63, 20, 57, 62, 18, 55, 60, 17, 54, 60, 17, 54, 57, 15, 52, 57, 17, 53, + 54, 15, 50, 54, 18, 52, 57, 26, 57, 56, 26, 55, 57, 30, 58, 59, 39, 64, 66, 58, 82, 74, 71, 95, 75, 74, 99, 70, 74, 98, 70, 76, 99, 75, 80, 103, 75, 77, 99, 71, 72, 95, 63, 70, 93, 72, 80, 104, 81, 91, 115, 84, 97, 120, 88, 104, 126, 126, 141, 157, 101, 117, 133, + 78, 93, 112, 81, 96, 115, 79, 94, 113, 81, 97, 116, 87, 103, 119, 88, 104, 120, 87, 103, 120, 84, 103, 119, 76, 98, 114, 77, 100, 113, 86, 110, 121, 112, 134, 142, 148, 163, 170, 163, 176, 182, 152, 167, 173, 143, 160, 167, 133, 151, 159, 129, 148, 156, 133, 152, 160, 134, 152, 161, 137, 158, 165, + 147, 167, 173, 153, 174, 179, 159, 180, 185, 166, 186, 191, 176, 196, 201, 179, 198, 203, 184, 201, 206, 186, 203, 209, 191, 207, 213, 191, 207, 213, 198, 213, 217, 200, 215, 218, 201, 216, 218, 203, 215, 218, 203, 217, 220, 208, 221, 224, 210, 223, 225, 214, 226, 228, 218, 229, 231, 218, 230, 232, 217, 229, 231, + 222, 232, 234, 229, 237, 237, 229, 237, 237, 230, 238, 238, 231, 239, 239, 233, 241, 241, 234, 241, 243, 234, 242, 242, 236, 244, 244, 238, 245, 245, 237, 245, 245, 235, 243, 243, 236, 244, 244, 238, 246, 246, 241, 246, 247, 240, 246, 247, 241, 246, 247, 241, 246, 247, 243, 247, 248, 241, 247, 248, 234, 240, 241, + 240, 244, 245, 234, 243, 242, 238, 245, 245, 239, 245, 246, 235, 242, 243, 229, 238, 240, 233, 241, 242, 231, 238, 241, 227, 236, 238, 212, 226, 229, 215, 229, 231, 229, 237, 239, 216, 229, 232, 206, 221, 224, 196, 214, 219, 207, 220, 225, 218, 228, 231, 198, 214, 219, 170, 193, 202, 161, 184, 195, 156, 180, 188, + 170, 189, 196, 202, 213, 217, 185, 201, 206, 174, 193, 199, 132, 162, 170, 54, 77, 84, 22, 36, 43, 20, 31, 38, 23, 34, 42, 43, 59, 68, 27, 48, 61, 26, 48, 61, 77, 90, 101, 41, 58, 73, 32, 52, 67, 28, 49, 63, 35, 55, 69, 34, 54, 69, 31, 50, 66, 17, 40, 56, 19, 42, 58, + 52, 69, 83, 35, 56, 71, 46, 64, 79, 29, 50, 65, 34, 54, 70, 30, 53, 69, 45, 66, 82, 39, 62, 79, 45, 68, 85, 30, 56, 77, 49, 72, 90, 46, 70, 88, 41, 66, 88, 41, 68, 90, 53, 77, 100, 51, 78, 100, 48, 76, 99, 50, 78, 101, 59, 87, 110, 53, 84, 108, 55, 86, 110, + 61, 94, 119, 67, 99, 122, 64, 101, 125, 60, 98, 124, 64, 102, 127, 69, 105, 128, 78, 110, 132, 39, 66, 82, 102, 122, 130, 134, 152, 159, 139, 160, 168, 158, 180, 188, 176, 200, 208, 196, 214, 222, 206, 220, 227, 212, 225, 231, 210, 224, 230, 221, 231, 234, 224, 235, 235, 228, 238, 238, 232, 241, 241, + 234, 242, 242, 235, 243, 243, 237, 243, 244, 237, 243, 243, 239, 244, 244, 238, 243, 244, 237, 245, 245, 236, 244, 244, 238, 243, 244, 238, 243, 243, 237, 242, 243, 237, 242, 243, 237, 242, 242, 234, 243, 243, 234, 241, 241, 235, 241, 242, 234, 240, 241, 235, 241, 242, 232, 238, 239, 229, 235, 235, 225, 233, 234, + 219, 228, 230, 213, 223, 226, 208, 219, 223, 202, 214, 219, 196, 207, 214, 186, 196, 206, 171, 184, 195, 160, 174, 188, 144, 160, 176, 131, 145, 162, 131, 141, 159, 126, 134, 153, 126, 133, 154, 126, 129, 151, 127, 128, 148, 125, 124, 143, 125, 120, 137, 123, 112, 129, 122, 111, 124, 117, 104, 114, 118, 103, 110, + 53, 13, 50, 53, 12, 49, 55, 14, 51, 56, 15, 52, 56, 15, 51, 55, 15, 50, 56, 16, 51, 55, 15, 50, 57, 15, 50, 56, 14, 50, 59, 17, 53, 59, 16, 52, 58, 14, 51, 59, 16, 52, 58, 13, 52, 60, 17, 54, 61, 18, 55, 59, 15, 53, 61, 18, 56, 60, 16, 55, 60, 16, 55, + 62, 18, 56, 62, 17, 56, 62, 18, 56, 61, 16, 55, 63, 19, 57, 63, 18, 57, 63, 19, 58, 63, 20, 58, 63, 18, 57, 64, 19, 58, 67, 22, 60, 65, 20, 60, 65, 19, 60, 67, 20, 62, 67, 19, 61, 67, 20, 62, 69, 22, 62, 69, 22, 61, 70, 23, 62, 70, 22, 63, 70, 22, 64, + 70, 22, 65, 70, 22, 65, 73, 23, 67, 73, 23, 67, 75, 24, 69, 75, 24, 69, 76, 22, 69, 76, 25, 70, 78, 27, 73, 78, 27, 72, 78, 25, 72, 79, 27, 74, 78, 26, 73, 80, 27, 76, 82, 30, 77, 81, 31, 76, 86, 35, 80, 88, 41, 81, 96, 52, 91, 105, 63, 98, 109, 67, 101, + 106, 64, 100, 94, 45, 87, 84, 34, 77, 77, 26, 71, 78, 29, 71, 77, 27, 70, 76, 26, 68, 76, 26, 67, 74, 24, 67, 71, 22, 65, 70, 22, 64, 70, 22, 62, 69, 21, 60, 66, 22, 58, 63, 20, 57, 63, 20, 57, 61, 17, 55, 60, 17, 54, 59, 17, 54, 58, 15, 52, 56, 15, 51, + 56, 17, 51, 54, 19, 52, 57, 26, 56, 59, 31, 60, 62, 38, 64, 71, 57, 80, 75, 71, 95, 76, 76, 98, 76, 77, 99, 76, 78, 99, 77, 78, 100, 72, 73, 94, 74, 74, 96, 74, 74, 98, 73, 78, 102, 78, 85, 110, 87, 96, 120, 91, 102, 126, 83, 97, 120, 80, 97, 116, 127, 140, 155, + 94, 109, 127, 81, 96, 115, 83, 97, 116, 81, 96, 115, 81, 96, 115, 86, 103, 120, 87, 105, 122, 85, 103, 120, 82, 103, 118, 78, 100, 114, 77, 102, 112, 87, 112, 121, 113, 136, 143, 145, 161, 168, 152, 168, 174, 148, 164, 171, 138, 156, 163, 128, 147, 155, 126, 145, 153, 129, 147, 155, 129, 150, 158, + 137, 160, 166, 142, 166, 171, 158, 179, 184, 166, 185, 191, 172, 191, 196, 178, 197, 202, 186, 202, 208, 188, 204, 210, 195, 209, 215, 195, 210, 217, 198, 214, 218, 200, 215, 218, 203, 217, 220, 206, 218, 221, 205, 219, 220, 209, 221, 225, 210, 223, 225, 215, 227, 229, 220, 229, 231, 220, 230, 233, 221, 232, 234, + 224, 234, 234, 230, 238, 238, 231, 239, 239, 231, 239, 239, 232, 240, 240, 233, 242, 242, 234, 242, 242, 235, 243, 243, 235, 243, 243, 235, 243, 243, 238, 245, 245, 235, 243, 243, 235, 244, 244, 237, 245, 245, 238, 245, 245, 238, 246, 246, 240, 245, 246, 241, 246, 247, 238, 246, 246, 233, 241, 242, 240, 245, 247, + 237, 244, 245, 233, 241, 243, 233, 240, 242, 237, 243, 244, 231, 239, 240, 224, 235, 237, 222, 234, 236, 224, 233, 236, 223, 232, 235, 200, 217, 222, 205, 220, 225, 211, 225, 229, 206, 222, 226, 197, 215, 220, 193, 210, 216, 185, 204, 211, 199, 215, 219, 194, 211, 216, 164, 190, 199, 146, 173, 185, 120, 156, 169, + 143, 170, 179, 172, 192, 198, 168, 187, 194, 153, 173, 181, 95, 124, 136, 30, 45, 54, 21, 32, 40, 20, 30, 39, 16, 27, 37, 34, 51, 62, 55, 70, 84, 47, 65, 80, 37, 56, 72, 41, 60, 75, 46, 62, 76, 32, 55, 70, 13, 40, 54, 30, 51, 67, 46, 63, 78, 53, 69, 84, 33, 54, 69, + 50, 67, 82, 28, 50, 66, 44, 65, 79, 50, 69, 84, 41, 63, 79, 28, 54, 71, 49, 70, 86, 28, 55, 73, 43, 66, 86, 36, 60, 81, 40, 63, 86, 38, 63, 87, 42, 67, 90, 41, 67, 90, 43, 70, 95, 50, 77, 99, 51, 79, 102, 50, 81, 103, 53, 82, 107, 50, 81, 106, 53, 83, 110, + 59, 91, 118, 63, 95, 121, 72, 106, 132, 61, 101, 128, 62, 103, 128, 67, 105, 129, 63, 103, 127, 75, 104, 120, 48, 76, 87, 120, 138, 146, 140, 158, 165, 147, 171, 179, 163, 188, 197, 176, 196, 206, 190, 207, 215, 194, 211, 218, 202, 218, 224, 215, 227, 231, 219, 231, 234, 221, 233, 235, 227, 237, 239, + 231, 240, 241, 234, 242, 242, 235, 243, 243, 236, 244, 243, 236, 244, 244, 236, 243, 244, 237, 244, 244, 236, 243, 243, 236, 244, 244, 235, 243, 242, 237, 242, 243, 238, 244, 244, 238, 243, 243, 236, 243, 244, 234, 243, 243, 235, 242, 242, 235, 241, 242, 235, 241, 242, 233, 240, 241, 232, 238, 239, 230, 238, 238, + 227, 234, 235, 225, 232, 234, 221, 229, 232, 219, 227, 230, 213, 221, 225, 202, 212, 216, 191, 203, 209, 174, 190, 198, 160, 178, 189, 152, 168, 182, 146, 159, 174, 144, 152, 168, 139, 147, 164, 135, 142, 160, 133, 138, 157, 129, 128, 148, 128, 124, 143, 127, 118, 135, 121, 111, 125, 119, 106, 117, 118, 105, 111, + 53, 12, 49, 54, 13, 50, 54, 13, 50, 53, 14, 49, 53, 14, 49, 54, 16, 50, 56, 16, 50, 55, 15, 50, 58, 16, 51, 57, 15, 51, 59, 16, 53, 58, 14, 52, 59, 15, 52, 59, 15, 53, 59, 16, 53, 59, 15, 53, 60, 16, 54, 58, 14, 53, 61, 18, 56, 62, 18, 57, 62, 17, 57, + 61, 17, 56, 61, 16, 55, 61, 16, 55, 63, 18, 57, 62, 18, 56, 64, 19, 57, 64, 20, 58, 63, 18, 57, 63, 18, 56, 64, 18, 57, 65, 19, 58, 66, 21, 60, 67, 22, 61, 68, 21, 63, 69, 21, 63, 67, 19, 61, 69, 21, 63, 70, 22, 62, 71, 23, 64, 70, 22, 63, 72, 24, 65, + 72, 24, 66, 72, 21, 65, 74, 25, 68, 73, 23, 67, 74, 23, 68, 75, 23, 69, 77, 26, 70, 78, 25, 71, 77, 23, 70, 78, 24, 71, 80, 27, 74, 79, 25, 72, 80, 27, 73, 81, 26, 75, 80, 25, 74, 82, 26, 74, 81, 26, 75, 81, 27, 75, 81, 28, 75, 81, 28, 75, 84, 30, 75, + 88, 39, 80, 100, 53, 92, 108, 70, 105, 111, 73, 106, 99, 59, 94, 82, 38, 76, 74, 24, 66, 72, 22, 66, 73, 25, 66, 72, 25, 67, 69, 23, 64, 69, 21, 62, 66, 19, 58, 67, 22, 59, 64, 19, 57, 62, 19, 56, 62, 18, 56, 60, 16, 55, 59, 15, 54, 59, 16, 53, 55, 15, 51, + 54, 14, 49, 54, 20, 52, 58, 27, 58, 62, 38, 65, 70, 53, 78, 78, 69, 92, 78, 76, 98, 77, 77, 98, 77, 77, 99, 79, 77, 99, 78, 76, 98, 66, 63, 87, 66, 63, 88, 74, 73, 97, 84, 88, 111, 86, 92, 117, 87, 95, 120, 84, 94, 118, 75, 87, 111, 75, 89, 109, 83, 98, 117, + 133, 145, 162, 92, 106, 127, 83, 97, 118, 81, 97, 116, 80, 98, 117, 80, 98, 115, 86, 104, 121, 86, 106, 120, 84, 104, 119, 83, 104, 119, 84, 106, 117, 82, 104, 113, 93, 116, 124, 117, 137, 144, 140, 157, 163, 149, 164, 171, 143, 160, 166, 126, 143, 151, 118, 137, 145, 118, 137, 145, 126, 146, 154, + 128, 150, 157, 139, 161, 168, 158, 178, 184, 166, 185, 191, 169, 188, 193, 177, 194, 200, 184, 200, 206, 188, 204, 210, 194, 210, 216, 198, 212, 218, 197, 212, 217, 201, 215, 219, 202, 216, 219, 207, 219, 222, 209, 221, 223, 211, 223, 225, 212, 225, 227, 215, 227, 229, 221, 230, 232, 223, 232, 235, 226, 234, 236, + 226, 235, 236, 230, 238, 238, 230, 238, 238, 232, 240, 240, 234, 242, 242, 235, 243, 242, 232, 240, 244, 234, 243, 242, 236, 244, 244, 235, 243, 243, 234, 242, 242, 233, 242, 241, 234, 243, 242, 236, 244, 244, 237, 244, 245, 237, 245, 245, 238, 245, 245, 240, 246, 247, 238, 246, 246, 229, 237, 239, 237, 244, 244, + 234, 241, 242, 230, 238, 240, 226, 235, 238, 230, 238, 240, 221, 232, 235, 223, 233, 236, 213, 226, 229, 215, 226, 230, 213, 224, 228, 200, 215, 221, 195, 213, 219, 196, 213, 219, 195, 212, 219, 184, 205, 212, 181, 201, 208, 175, 198, 205, 176, 198, 206, 177, 199, 206, 159, 185, 195, 138, 166, 178, 115, 148, 163, + 117, 149, 162, 142, 166, 175, 137, 162, 173, 116, 145, 156, 36, 61, 72, 27, 38, 48, 16, 28, 37, 44, 53, 62, 25, 36, 46, 30, 46, 58, 35, 53, 66, 50, 68, 83, 32, 53, 69, 42, 59, 75, 46, 65, 78, 36, 58, 71, 23, 47, 60, 28, 52, 66, 39, 61, 75, 18, 43, 60, 25, 49, 65, + 49, 67, 83, 34, 56, 72, 31, 55, 70, 44, 66, 81, 39, 62, 79, 25, 52, 69, 44, 67, 85, 34, 60, 78, 43, 66, 84, 35, 61, 82, 38, 62, 86, 42, 66, 90, 43, 67, 91, 47, 72, 95, 46, 72, 95, 49, 75, 97, 48, 77, 100, 59, 86, 109, 48, 79, 103, 55, 84, 110, 45, 78, 105, + 49, 81, 113, 69, 98, 127, 66, 99, 128, 61, 101, 127, 65, 105, 130, 57, 99, 124, 64, 103, 128, 70, 106, 130, 59, 81, 105, 84, 102, 120, 131, 147, 153, 146, 162, 168, 140, 165, 175, 153, 176, 188, 178, 196, 205, 194, 208, 215, 200, 215, 222, 205, 219, 224, 211, 224, 228, 218, 231, 233, 224, 234, 237, + 228, 237, 240, 230, 240, 240, 234, 242, 242, 235, 243, 243, 238, 244, 244, 238, 243, 244, 236, 244, 244, 237, 245, 245, 236, 244, 244, 235, 243, 242, 237, 243, 243, 237, 243, 243, 237, 243, 244, 236, 243, 244, 235, 242, 243, 236, 241, 242, 235, 242, 241, 236, 242, 242, 236, 241, 242, 235, 240, 241, 234, 240, 240, + 232, 239, 239, 231, 237, 239, 230, 236, 239, 227, 234, 237, 220, 228, 231, 212, 222, 225, 205, 216, 220, 197, 209, 213, 188, 200, 207, 181, 193, 201, 169, 179, 190, 162, 171, 184, 154, 160, 175, 146, 153, 169, 139, 145, 162, 134, 135, 153, 127, 124, 143, 129, 120, 137, 124, 113, 128, 119, 106, 116, 113, 98, 105, + 54, 14, 51, 53, 14, 50, 55, 13, 51, 53, 11, 49, 54, 15, 50, 54, 15, 51, 56, 15, 52, 56, 15, 51, 56, 15, 50, 57, 14, 51, 57, 14, 52, 59, 15, 53, 58, 14, 53, 59, 15, 52, 57, 14, 52, 58, 15, 53, 58, 14, 52, 59, 15, 53, 60, 16, 54, 59, 14, 54, 60, 17, 56, + 62, 18, 57, 61, 17, 56, 62, 17, 56, 63, 19, 56, 63, 19, 56, 62, 17, 55, 64, 19, 57, 61, 16, 56, 65, 20, 58, 65, 20, 58, 65, 19, 58, 68, 24, 61, 66, 21, 61, 67, 21, 62, 68, 21, 61, 68, 21, 62, 69, 21, 62, 68, 21, 63, 71, 23, 64, 70, 22, 64, 71, 23, 65, + 73, 24, 66, 73, 23, 66, 74, 23, 67, 74, 24, 67, 75, 23, 67, 76, 25, 69, 76, 24, 69, 77, 24, 70, 78, 24, 71, 80, 25, 73, 81, 28, 73, 79, 25, 70, 79, 24, 70, 82, 29, 74, 80, 25, 73, 82, 28, 75, 81, 26, 74, 82, 27, 76, 82, 27, 75, 83, 27, 75, 81, 26, 73, + 81, 27, 73, 82, 28, 73, 81, 28, 71, 82, 36, 75, 93, 52, 87, 108, 72, 103, 113, 79, 108, 103, 65, 97, 81, 39, 76, 69, 23, 64, 68, 22, 61, 69, 23, 62, 66, 21, 59, 65, 21, 58, 63, 19, 56, 64, 21, 57, 62, 19, 56, 59, 15, 54, 60, 16, 55, 59, 16, 53, 55, 14, 50, + 54, 15, 49, 54, 18, 51, 55, 24, 55, 66, 43, 70, 79, 64, 88, 79, 72, 95, 74, 72, 94, 73, 71, 94, 73, 71, 95, 74, 72, 94, 74, 71, 93, 72, 70, 92, 74, 72, 94, 76, 76, 99, 77, 82, 106, 75, 83, 106, 74, 84, 109, 74, 84, 108, 76, 88, 111, 77, 90, 112, 82, 97, 116, + 102, 116, 136, 131, 146, 164, 87, 104, 126, 83, 101, 120, 80, 99, 117, 80, 99, 117, 82, 100, 117, 81, 100, 117, 78, 99, 115, 80, 102, 117, 80, 102, 114, 83, 105, 116, 84, 107, 115, 96, 116, 124, 119, 137, 144, 137, 154, 160, 137, 153, 160, 123, 142, 148, 109, 128, 136, 101, 122, 130, 117, 138, 145, + 123, 144, 153, 136, 155, 163, 153, 172, 178, 164, 183, 189, 170, 189, 194, 173, 191, 197, 178, 197, 202, 188, 204, 210, 192, 208, 214, 197, 212, 218, 200, 214, 220, 200, 215, 219, 201, 216, 219, 205, 218, 221, 208, 221, 223, 213, 225, 227, 213, 225, 227, 217, 228, 230, 220, 229, 232, 225, 234, 237, 226, 235, 235, + 226, 234, 237, 227, 235, 236, 229, 238, 239, 228, 237, 238, 232, 240, 240, 233, 240, 244, 229, 239, 242, 234, 241, 244, 234, 242, 243, 234, 242, 243, 235, 243, 243, 230, 240, 242, 231, 239, 242, 234, 243, 243, 234, 243, 242, 236, 244, 244, 237, 244, 245, 237, 244, 246, 235, 242, 243, 220, 232, 234, 230, 238, 241, + 228, 237, 240, 227, 236, 239, 217, 229, 233, 224, 234, 237, 212, 225, 229, 214, 225, 229, 207, 220, 225, 203, 218, 223, 200, 216, 221, 193, 212, 218, 175, 199, 208, 181, 202, 212, 184, 203, 212, 172, 195, 203, 166, 188, 198, 169, 190, 197, 166, 187, 198, 165, 187, 198, 148, 174, 187, 136, 162, 175, 114, 145, 158, + 107, 137, 152, 116, 142, 155, 109, 133, 146, 83, 107, 120, 28, 41, 50, 21, 32, 42, 9, 22, 32, 29, 40, 49, 23, 35, 46, 20, 35, 48, 50, 64, 74, 11, 33, 47, 37, 56, 69, 46, 65, 78, 51, 70, 83, 41, 62, 74, 36, 59, 69, 22, 47, 59, 28, 51, 65, 42, 62, 78, 38, 59, 74, + 32, 54, 69, 34, 56, 72, 34, 57, 74, 29, 53, 71, 42, 64, 82, 24, 53, 71, 35, 60, 79, 36, 61, 79, 41, 65, 84, 39, 63, 84, 44, 66, 90, 40, 64, 88, 42, 65, 90, 43, 70, 92, 43, 69, 92, 49, 75, 98, 43, 72, 96, 49, 77, 102, 51, 79, 106, 54, 83, 110, 56, 84, 114, + 51, 83, 116, 57, 88, 121, 62, 93, 126, 67, 104, 136, 70, 107, 138, 72, 109, 138, 68, 105, 134, 60, 97, 126, 64, 100, 127, 53, 79, 100, 114, 130, 138, 117, 135, 143, 139, 158, 167, 147, 163, 176, 147, 170, 184, 174, 191, 202, 186, 204, 212, 199, 214, 219, 208, 222, 225, 215, 227, 229, 220, 232, 234, + 226, 236, 238, 232, 241, 240, 235, 243, 243, 236, 244, 244, 237, 245, 245, 236, 244, 244, 237, 245, 245, 237, 245, 244, 235, 243, 243, 235, 244, 242, 238, 242, 244, 238, 243, 244, 237, 243, 243, 237, 243, 243, 238, 244, 244, 238, 242, 243, 237, 242, 243, 237, 242, 243, 237, 242, 243, 237, 242, 243, 236, 241, 242, + 235, 241, 242, 235, 239, 241, 233, 239, 239, 231, 236, 237, 227, 234, 236, 224, 231, 234, 218, 226, 229, 212, 221, 224, 206, 216, 219, 200, 209, 216, 191, 201, 209, 177, 187, 197, 166, 173, 184, 151, 158, 173, 141, 147, 164, 137, 137, 154, 132, 129, 146, 129, 121, 136, 122, 109, 124, 115, 102, 112, 114, 99, 105, + 54, 13, 50, 55, 14, 50, 57, 17, 52, 56, 16, 51, 54, 13, 50, 56, 15, 52, 55, 14, 51, 55, 14, 50, 56, 15, 51, 56, 15, 51, 58, 15, 53, 58, 15, 53, 58, 14, 52, 58, 15, 53, 58, 15, 52, 58, 15, 52, 59, 15, 52, 59, 15, 53, 60, 15, 54, 59, 15, 54, 60, 15, 54, + 60, 15, 55, 62, 17, 55, 61, 17, 55, 62, 18, 55, 64, 18, 56, 64, 19, 56, 65, 20, 57, 64, 17, 56, 65, 21, 59, 65, 19, 58, 67, 21, 60, 67, 21, 60, 67, 21, 61, 66, 19, 60, 69, 22, 61, 69, 21, 62, 71, 22, 63, 70, 22, 64, 70, 22, 64, 71, 22, 64, 72, 24, 66, + 73, 23, 66, 74, 25, 66, 73, 23, 65, 76, 25, 68, 76, 26, 69, 76, 25, 69, 76, 25, 69, 76, 24, 69, 77, 23, 70, 78, 25, 71, 79, 25, 70, 79, 25, 69, 79, 27, 71, 80, 26, 71, 81, 28, 73, 81, 26, 73, 82, 27, 75, 81, 26, 74, 83, 29, 76, 82, 27, 74, 82, 27, 73, + 82, 27, 73, 81, 26, 71, 80, 24, 70, 78, 24, 70, 75, 22, 67, 74, 25, 67, 77, 33, 70, 91, 53, 85, 107, 73, 102, 112, 79, 107, 96, 59, 91, 70, 29, 65, 64, 20, 58, 67, 23, 60, 63, 20, 56, 62, 19, 55, 62, 20, 55, 61, 17, 54, 58, 15, 53, 59, 16, 53, 56, 15, 51, + 54, 14, 49, 51, 15, 47, 56, 25, 56, 71, 49, 76, 82, 68, 92, 74, 66, 90, 71, 66, 91, 70, 66, 91, 69, 65, 90, 69, 66, 90, 74, 71, 93, 78, 76, 98, 84, 86, 106, 85, 89, 110, 79, 86, 108, 82, 90, 113, 82, 91, 114, 84, 94, 117, 87, 99, 121, 85, 98, 120, 81, 97, 116, + 80, 98, 118, 118, 133, 152, 119, 135, 152, 81, 100, 120, 83, 101, 119, 84, 103, 120, 86, 104, 121, 87, 106, 122, 90, 109, 124, 87, 107, 122, 81, 103, 115, 79, 101, 113, 79, 101, 111, 84, 106, 114, 97, 118, 125, 120, 138, 145, 128, 145, 152, 124, 141, 148, 110, 129, 137, 90, 112, 119, 107, 128, 137, + 117, 137, 147, 128, 148, 158, 146, 164, 172, 159, 178, 185, 169, 188, 194, 169, 188, 194, 177, 196, 201, 181, 199, 204, 185, 204, 209, 198, 213, 217, 198, 212, 218, 199, 213, 218, 197, 214, 217, 202, 217, 219, 204, 219, 221, 210, 223, 225, 213, 225, 227, 214, 226, 228, 221, 230, 233, 222, 231, 235, 225, 233, 235, + 226, 234, 236, 227, 235, 238, 227, 235, 238, 227, 236, 239, 228, 237, 240, 228, 237, 240, 230, 238, 241, 230, 239, 242, 235, 242, 245, 231, 241, 241, 230, 239, 242, 228, 237, 240, 229, 238, 242, 230, 239, 242, 230, 238, 242, 233, 242, 243, 233, 242, 241, 231, 239, 240, 219, 230, 232, 224, 234, 237, 223, 235, 237, + 223, 233, 236, 218, 230, 233, 206, 222, 225, 217, 229, 231, 200, 217, 221, 207, 221, 224, 196, 214, 219, 189, 208, 215, 182, 202, 209, 178, 199, 207, 163, 189, 199, 160, 186, 199, 166, 189, 200, 153, 180, 192, 148, 175, 187, 156, 177, 187, 154, 177, 187, 154, 176, 188, 138, 166, 181, 124, 154, 169, 120, 148, 161, + 123, 148, 161, 100, 126, 139, 99, 125, 136, 39, 63, 73, 39, 52, 61, 5, 17, 26, 18, 29, 37, 11, 22, 32, 16, 30, 39, 28, 42, 54, 36, 52, 61, 22, 40, 52, 20, 40, 52, 34, 52, 64, 34, 53, 64, 41, 61, 73, 35, 57, 68, 59, 76, 87, 52, 72, 84, 37, 59, 75, 22, 47, 63, + 38, 58, 75, 24, 49, 67, 48, 69, 85, 27, 53, 72, 42, 65, 84, 39, 63, 81, 33, 59, 78, 33, 59, 78, 44, 68, 86, 34, 59, 81, 42, 64, 85, 44, 64, 90, 41, 63, 89, 43, 67, 92, 43, 69, 91, 49, 74, 97, 43, 71, 95, 57, 82, 106, 47, 76, 102, 54, 79, 108, 51, 80, 111, + 55, 84, 117, 56, 87, 120, 61, 94, 126, 70, 104, 135, 70, 107, 138, 70, 109, 138, 71, 109, 138, 59, 101, 129, 68, 104, 132, 63, 96, 120, 56, 81, 98, 131, 145, 153, 126, 145, 153, 135, 155, 166, 148, 172, 183, 162, 182, 192, 178, 197, 205, 189, 206, 213, 203, 217, 221, 205, 219, 223, 215, 226, 229, + 222, 232, 234, 230, 238, 238, 233, 241, 241, 235, 243, 243, 237, 243, 244, 236, 243, 244, 237, 244, 244, 237, 245, 244, 238, 244, 243, 238, 244, 243, 238, 243, 244, 236, 245, 245, 238, 244, 244, 237, 244, 243, 237, 243, 242, 237, 243, 243, 238, 243, 243, 238, 243, 244, 238, 242, 243, 238, 242, 244, 237, 242, 243, + 237, 242, 242, 236, 242, 242, 235, 241, 241, 234, 238, 240, 232, 237, 238, 230, 236, 237, 227, 234, 234, 222, 230, 232, 218, 227, 230, 213, 221, 225, 203, 212, 216, 190, 200, 207, 174, 183, 191, 160, 169, 179, 147, 153, 167, 140, 142, 157, 132, 131, 146, 126, 119, 133, 122, 110, 123, 119, 105, 116, 118, 105, 111, + 55, 15, 51, 52, 11, 48, 54, 14, 50, 54, 13, 50, 55, 14, 50, 55, 14, 51, 55, 14, 51, 55, 15, 51, 55, 15, 51, 57, 14, 51, 57, 14, 51, 58, 15, 52, 59, 16, 53, 58, 15, 52, 58, 15, 52, 59, 16, 52, 58, 14, 52, 59, 15, 53, 58, 13, 52, 62, 15, 54, 63, 16, 55, + 62, 18, 55, 62, 18, 55, 61, 17, 55, 63, 18, 56, 61, 17, 55, 65, 18, 56, 66, 19, 57, 67, 20, 58, 67, 19, 58, 66, 19, 58, 67, 20, 59, 67, 21, 61, 67, 20, 60, 68, 21, 60, 68, 21, 60, 68, 20, 61, 71, 24, 63, 70, 22, 63, 70, 21, 63, 72, 23, 65, 71, 22, 65, + 75, 25, 66, 74, 24, 66, 75, 23, 66, 74, 23, 66, 76, 26, 68, 75, 24, 68, 76, 26, 69, 77, 26, 70, 76, 23, 67, 77, 25, 69, 78, 26, 69, 78, 25, 70, 80, 26, 70, 79, 26, 70, 80, 26, 72, 80, 25, 72, 81, 26, 73, 80, 26, 74, 81, 27, 74, 80, 26, 72, 81, 26, 71, + 80, 24, 71, 81, 26, 71, 83, 30, 73, 81, 28, 71, 81, 28, 71, 77, 25, 69, 75, 24, 67, 71, 20, 63, 71, 23, 62, 75, 32, 68, 93, 58, 88, 114, 85, 110, 108, 77, 105, 80, 44, 74, 64, 23, 56, 64, 22, 54, 61, 20, 52, 58, 16, 51, 59, 16, 53, 58, 15, 52, 57, 16, 52, + 54, 15, 49, 52, 19, 49, 55, 25, 54, 70, 47, 76, 77, 61, 88, 77, 67, 93, 73, 66, 92, 74, 67, 93, 74, 70, 95, 77, 75, 100, 80, 83, 104, 86, 91, 112, 87, 94, 113, 86, 95, 113, 85, 95, 115, 87, 98, 117, 89, 100, 120, 90, 103, 124, 92, 105, 127, 86, 100, 122, 85, 101, 120, + 78, 97, 116, 79, 98, 118, 124, 141, 156, 105, 124, 140, 90, 108, 125, 90, 110, 127, 93, 113, 129, 97, 117, 132, 99, 119, 134, 100, 120, 134, 96, 116, 130, 86, 108, 120, 82, 105, 116, 78, 101, 110, 85, 107, 115, 99, 120, 126, 118, 136, 143, 128, 146, 153, 118, 137, 144, 85, 107, 115, 92, 113, 124, + 107, 128, 140, 116, 138, 149, 139, 159, 167, 148, 170, 178, 170, 189, 194, 167, 187, 192, 170, 190, 195, 178, 198, 203, 185, 203, 208, 191, 207, 213, 196, 211, 214, 197, 212, 215, 194, 211, 214, 198, 214, 216, 201, 217, 219, 209, 221, 223, 209, 222, 224, 214, 225, 227, 218, 228, 230, 218, 229, 232, 221, 230, 233, + 223, 232, 235, 224, 233, 236, 223, 233, 236, 226, 235, 238, 224, 234, 237, 224, 234, 236, 225, 235, 238, 228, 238, 241, 229, 238, 241, 229, 238, 241, 227, 236, 239, 227, 237, 239, 230, 239, 242, 231, 239, 242, 224, 236, 238, 224, 236, 238, 228, 237, 240, 226, 234, 236, 210, 224, 227, 219, 231, 234, 218, 230, 232, + 219, 230, 232, 214, 226, 230, 201, 216, 221, 204, 218, 222, 196, 213, 218, 197, 212, 218, 184, 203, 210, 178, 199, 205, 178, 199, 206, 168, 192, 203, 156, 183, 195, 152, 178, 192, 149, 174, 188, 137, 164, 178, 139, 162, 174, 133, 156, 168, 154, 171, 181, 146, 165, 176, 122, 150, 163, 96, 130, 146, 110, 134, 148, + 102, 123, 134, 96, 113, 124, 60, 75, 84, 29, 47, 54, 38, 51, 57, 39, 48, 55, 35, 46, 55, 24, 36, 44, 28, 41, 51, 35, 50, 60, 23, 40, 51, 19, 38, 46, 26, 44, 52, 11, 34, 43, 34, 53, 66, 37, 57, 69, 31, 54, 66, 41, 63, 75, 27, 51, 65, 33, 57, 71, 45, 65, 81, + 39, 59, 75, 31, 55, 73, 29, 56, 74, 38, 61, 80, 31, 58, 77, 34, 61, 80, 45, 70, 88, 43, 69, 86, 34, 61, 79, 46, 68, 88, 51, 71, 92, 44, 63, 89, 44, 64, 90, 54, 73, 97, 44, 68, 90, 44, 70, 92, 41, 68, 92, 52, 76, 102, 56, 79, 106, 49, 74, 104, 51, 76, 108, + 54, 80, 112, 52, 83, 117, 52, 86, 120, 65, 100, 130, 64, 104, 135, 70, 108, 138, 64, 105, 134, 70, 112, 140, 69, 112, 140, 73, 115, 140, 69, 101, 119, 71, 93, 106, 107, 123, 130, 130, 148, 155, 141, 163, 172, 162, 182, 190, 174, 191, 199, 190, 206, 213, 203, 216, 220, 213, 225, 227, 219, 228, 231, + 224, 232, 233, 224, 234, 234, 228, 237, 237, 230, 238, 238, 233, 240, 240, 234, 242, 242, 236, 245, 244, 238, 243, 244, 239, 245, 245, 239, 245, 244, 239, 244, 245, 239, 243, 245, 238, 244, 243, 238, 243, 244, 238, 244, 243, 237, 244, 243, 238, 243, 244, 238, 243, 244, 236, 243, 243, 236, 243, 243, 238, 243, 244, + 237, 242, 243, 236, 241, 242, 236, 241, 242, 235, 240, 241, 235, 240, 241, 233, 238, 239, 232, 237, 238, 227, 236, 235, 224, 231, 234, 220, 227, 231, 214, 220, 224, 200, 209, 214, 184, 195, 200, 166, 178, 187, 157, 167, 176, 145, 153, 164, 139, 142, 153, 132, 128, 140, 131, 121, 132, 130, 117, 127, 127, 113, 124, + 53, 12, 49, 54, 13, 50, 53, 13, 49, 54, 13, 50, 54, 13, 50, 55, 14, 51, 55, 13, 50, 55, 13, 50, 57, 14, 51, 58, 15, 52, 57, 14, 51, 58, 15, 52, 57, 14, 52, 60, 17, 53, 60, 17, 54, 58, 15, 52, 60, 17, 54, 60, 15, 54, 61, 15, 54, 62, 14, 54, 62, 14, 53, + 61, 16, 55, 62, 17, 55, 62, 17, 57, 64, 19, 57, 64, 19, 57, 65, 18, 56, 66, 20, 57, 66, 19, 57, 66, 19, 58, 66, 19, 58, 66, 19, 58, 68, 20, 61, 68, 20, 61, 67, 20, 61, 69, 21, 60, 69, 23, 62, 69, 22, 61, 69, 21, 61, 72, 22, 64, 71, 22, 64, 71, 22, 65, + 72, 22, 65, 73, 22, 65, 74, 23, 65, 74, 22, 65, 73, 23, 66, 73, 22, 66, 75, 24, 68, 75, 24, 68, 76, 26, 69, 77, 25, 68, 77, 24, 69, 77, 25, 69, 77, 24, 68, 79, 25, 70, 79, 26, 71, 80, 27, 71, 79, 24, 71, 78, 25, 70, 81, 26, 72, 80, 27, 71, 79, 25, 70, + 79, 25, 70, 80, 26, 70, 80, 27, 70, 80, 26, 71, 78, 25, 69, 78, 26, 69, 76, 23, 67, 74, 24, 66, 72, 21, 63, 69, 21, 61, 65, 19, 57, 66, 24, 60, 77, 42, 73, 103, 73, 97, 115, 88, 110, 94, 62, 87, 62, 23, 54, 58, 18, 51, 57, 14, 50, 58, 15, 52, 56, 14, 51, + 55, 16, 49, 53, 18, 48, 52, 21, 51, 59, 34, 63, 69, 51, 79, 73, 61, 87, 76, 65, 92, 77, 70, 97, 80, 75, 101, 83, 83, 107, 84, 89, 110, 85, 92, 112, 88, 95, 114, 86, 96, 115, 84, 95, 115, 82, 95, 114, 81, 95, 114, 86, 100, 119, 90, 104, 123, 88, 103, 122, 82, 99, 118, + 81, 99, 119, 79, 99, 118, 85, 103, 122, 134, 150, 165, 103, 122, 139, 95, 115, 133, 92, 114, 131, 99, 119, 136, 101, 122, 137, 98, 119, 134, 100, 122, 135, 97, 120, 132, 99, 121, 133, 86, 108, 120, 80, 103, 112, 89, 110, 118, 102, 122, 130, 117, 136, 143, 127, 144, 151, 98, 119, 127, 77, 101, 109, + 89, 113, 122, 106, 129, 138, 124, 147, 155, 138, 164, 173, 166, 185, 191, 171, 190, 195, 169, 188, 194, 179, 197, 202, 181, 200, 205, 189, 205, 211, 198, 212, 215, 196, 211, 214, 192, 209, 212, 200, 214, 217, 202, 216, 218, 208, 221, 223, 209, 221, 223, 211, 223, 225, 213, 226, 228, 219, 229, 232, 217, 229, 231, + 217, 229, 231, 223, 232, 235, 222, 232, 234, 223, 234, 236, 219, 231, 233, 220, 230, 234, 223, 234, 236, 223, 234, 237, 226, 236, 238, 226, 235, 238, 225, 235, 238, 226, 236, 238, 229, 238, 241, 225, 236, 238, 224, 235, 237, 217, 229, 232, 220, 231, 234, 222, 233, 235, 203, 219, 223, 214, 226, 230, 213, 225, 229, + 209, 223, 226, 207, 221, 225, 195, 212, 217, 188, 207, 212, 187, 205, 211, 177, 198, 204, 189, 205, 212, 175, 196, 204, 169, 192, 200, 151, 180, 191, 140, 166, 180, 129, 156, 172, 135, 160, 175, 136, 161, 174, 105, 136, 151, 114, 141, 155, 114, 140, 154, 105, 132, 145, 106, 133, 144, 94, 122, 132, 90, 113, 126, + 93, 112, 122, 64, 76, 87, 25, 38, 47, 26, 37, 45, 11, 23, 29, 26, 35, 43, 24, 35, 44, 25, 36, 44, 57, 68, 77, 39, 54, 66, 32, 49, 60, 24, 43, 50, 25, 44, 53, 21, 43, 51, 37, 56, 68, 46, 64, 76, 29, 52, 65, 48, 68, 81, 28, 53, 68, 45, 65, 80, 30, 54, 70, + 42, 62, 79, 34, 59, 76, 49, 71, 89, 54, 75, 94, 31, 58, 77, 39, 65, 82, 46, 71, 89, 37, 65, 83, 43, 67, 86, 48, 70, 90, 48, 68, 90, 48, 67, 93, 47, 65, 91, 46, 67, 91, 50, 70, 92, 50, 71, 94, 49, 72, 94, 47, 69, 95, 47, 69, 97, 50, 74, 104, 48, 73, 105, + 53, 80, 112, 52, 84, 115, 55, 90, 120, 47, 87, 117, 57, 98, 129, 67, 105, 137, 61, 103, 134, 69, 109, 141, 74, 115, 144, 82, 122, 147, 70, 104, 123, 70, 94, 111, 90, 108, 117, 122, 137, 145, 130, 150, 159, 136, 158, 167, 162, 181, 189, 180, 197, 204, 187, 205, 210, 196, 212, 214, 204, 218, 220, + 212, 225, 227, 216, 228, 230, 219, 231, 232, 224, 235, 235, 228, 236, 236, 232, 240, 240, 235, 243, 242, 239, 244, 243, 239, 244, 244, 239, 245, 244, 239, 244, 245, 239, 244, 245, 239, 244, 244, 238, 245, 244, 238, 245, 244, 240, 246, 245, 238, 244, 244, 238, 243, 244, 236, 243, 244, 239, 244, 245, 237, 242, 243, + 237, 242, 243, 236, 242, 241, 236, 241, 242, 235, 241, 241, 234, 240, 239, 234, 239, 240, 233, 237, 238, 230, 237, 237, 230, 235, 236, 226, 233, 235, 219, 226, 229, 208, 218, 222, 195, 205, 210, 183, 194, 200, 170, 180, 188, 158, 167, 175, 155, 160, 168, 150, 150, 159, 145, 141, 152, 143, 133, 142, 140, 128, 138, + 56, 14, 51, 53, 12, 50, 55, 14, 51, 54, 14, 49, 54, 13, 50, 55, 13, 51, 56, 15, 52, 57, 15, 52, 57, 15, 51, 57, 15, 51, 58, 15, 52, 57, 14, 51, 58, 15, 52, 58, 14, 51, 58, 14, 51, 59, 15, 52, 61, 18, 55, 59, 14, 53, 61, 15, 54, 62, 15, 54, 64, 17, 56, + 63, 17, 56, 63, 18, 57, 63, 18, 57, 64, 19, 58, 64, 19, 58, 66, 20, 58, 65, 18, 58, 67, 20, 58, 67, 20, 58, 67, 19, 58, 67, 20, 59, 69, 21, 61, 67, 20, 60, 68, 21, 62, 69, 22, 62, 69, 21, 62, 69, 21, 62, 69, 22, 61, 70, 23, 63, 71, 21, 63, 72, 24, 66, + 73, 23, 65, 72, 22, 65, 74, 24, 66, 73, 23, 65, 74, 24, 66, 75, 24, 68, 76, 27, 68, 76, 24, 68, 77, 24, 68, 77, 24, 68, 78, 25, 69, 77, 24, 68, 79, 26, 70, 78, 25, 70, 79, 26, 71, 78, 24, 71, 79, 25, 71, 80, 25, 70, 79, 25, 70, 79, 26, 71, 79, 27, 70, + 80, 27, 70, 78, 24, 69, 78, 24, 69, 78, 25, 69, 78, 26, 69, 76, 23, 67, 75, 25, 67, 73, 22, 63, 72, 22, 63, 68, 19, 61, 67, 22, 61, 66, 20, 58, 62, 18, 56, 62, 19, 54, 70, 34, 63, 93, 63, 86, 115, 90, 110, 95, 68, 91, 62, 28, 58, 55, 15, 50, 55, 15, 51, + 56, 16, 51, 53, 17, 48, 53, 18, 49, 58, 29, 59, 65, 41, 69, 70, 53, 80, 69, 54, 82, 71, 61, 89, 75, 69, 96, 81, 79, 103, 80, 86, 109, 86, 92, 113, 88, 95, 115, 88, 98, 117, 85, 95, 116, 77, 91, 110, 80, 94, 112, 78, 93, 112, 85, 100, 119, 83, 98, 118, 80, 98, 117, + 77, 96, 117, 80, 99, 120, 81, 100, 121, 107, 125, 142, 130, 147, 164, 93, 115, 133, 91, 113, 131, 98, 119, 135, 108, 129, 144, 106, 127, 142, 105, 126, 141, 108, 130, 141, 102, 124, 137, 102, 124, 136, 83, 105, 115, 83, 106, 115, 88, 108, 117, 100, 120, 128, 126, 143, 151, 122, 140, 148, 90, 113, 120, + 86, 112, 119, 105, 128, 135, 116, 139, 147, 144, 165, 172, 166, 183, 190, 176, 191, 197, 173, 191, 197, 177, 195, 200, 183, 199, 204, 192, 207, 211, 196, 212, 215, 198, 212, 215, 195, 211, 214, 199, 214, 217, 205, 217, 221, 207, 219, 222, 205, 218, 220, 209, 222, 224, 211, 224, 228, 219, 230, 233, 214, 227, 229, + 215, 227, 229, 216, 229, 230, 217, 229, 231, 216, 228, 232, 213, 226, 230, 218, 229, 233, 220, 231, 234, 221, 233, 235, 222, 234, 236, 219, 232, 235, 224, 234, 237, 223, 233, 236, 225, 234, 237, 222, 233, 236, 219, 230, 234, 216, 227, 231, 210, 223, 226, 205, 221, 224, 206, 221, 226, 207, 222, 225, 207, 220, 223, + 204, 218, 221, 200, 214, 220, 188, 206, 211, 182, 201, 207, 176, 196, 203, 181, 200, 206, 178, 197, 204, 172, 193, 201, 160, 184, 194, 150, 174, 185, 130, 157, 171, 116, 147, 162, 115, 145, 159, 102, 135, 149, 85, 119, 134, 80, 113, 126, 91, 115, 128, 92, 114, 126, 90, 112, 123, 80, 103, 114, 84, 105, 117, + 70, 88, 98, 30, 45, 58, 13, 27, 36, 27, 38, 46, 30, 40, 47, 23, 32, 39, 15, 29, 35, 35, 46, 54, 40, 52, 62, 39, 54, 64, 32, 50, 61, 37, 54, 64, 52, 68, 77, 39, 60, 69, 39, 58, 72, 52, 73, 86, 45, 66, 79, 50, 71, 85, 31, 55, 70, 41, 62, 78, 37, 59, 76, + 45, 65, 83, 41, 63, 81, 39, 63, 81, 41, 66, 84, 56, 78, 96, 52, 76, 93, 39, 66, 84, 43, 69, 88, 54, 76, 95, 42, 64, 86, 44, 63, 88, 60, 75, 101, 54, 71, 96, 49, 68, 94, 56, 75, 98, 47, 69, 92, 34, 58, 83, 53, 73, 99, 48, 69, 96, 49, 71, 100, 48, 69, 99, + 51, 73, 104, 57, 82, 112, 48, 78, 108, 54, 84, 115, 53, 93, 124, 58, 100, 131, 64, 104, 136, 62, 104, 136, 67, 110, 140, 83, 122, 148, 66, 104, 127, 57, 82, 104, 55, 76, 95, 122, 136, 145, 131, 147, 154, 122, 145, 155, 143, 166, 175, 176, 193, 200, 183, 198, 205, 196, 209, 213, 203, 217, 220, + 211, 224, 226, 214, 226, 228, 217, 228, 231, 221, 230, 234, 227, 236, 235, 231, 239, 238, 235, 241, 242, 236, 243, 244, 237, 245, 245, 239, 244, 245, 238, 244, 244, 239, 245, 245, 239, 244, 245, 239, 244, 245, 240, 246, 244, 239, 245, 244, 239, 244, 245, 239, 245, 245, 238, 243, 244, 238, 243, 244, 237, 243, 243, + 237, 242, 243, 237, 242, 243, 237, 243, 241, 236, 241, 242, 235, 240, 241, 234, 241, 240, 234, 240, 239, 233, 239, 239, 233, 238, 239, 230, 235, 236, 224, 232, 233, 217, 225, 228, 207, 217, 220, 197, 206, 210, 189, 198, 203, 178, 187, 192, 177, 183, 188, 170, 174, 181, 162, 162, 171, 156, 154, 164, 154, 148, 158, + 54, 12, 49, 54, 13, 50, 55, 14, 51, 54, 13, 50, 55, 15, 51, 56, 13, 50, 59, 17, 52, 59, 16, 53, 56, 13, 50, 57, 14, 51, 58, 15, 52, 58, 15, 52, 59, 16, 53, 59, 15, 52, 59, 15, 53, 60, 16, 53, 61, 15, 54, 62, 17, 55, 63, 16, 55, 64, 17, 56, 63, 16, 55, + 63, 16, 55, 63, 16, 56, 63, 17, 56, 65, 19, 58, 65, 18, 59, 67, 19, 59, 64, 17, 57, 65, 17, 58, 67, 19, 58, 66, 19, 58, 67, 20, 59, 69, 21, 60, 68, 18, 60, 69, 19, 61, 69, 21, 63, 68, 20, 61, 69, 21, 62, 69, 21, 62, 69, 21, 63, 71, 22, 64, 71, 21, 64, + 72, 22, 65, 72, 21, 65, 72, 22, 65, 73, 23, 65, 73, 22, 66, 74, 22, 66, 75, 23, 67, 76, 23, 67, 77, 24, 68, 78, 25, 68, 77, 24, 69, 79, 26, 69, 80, 26, 71, 78, 24, 71, 80, 26, 73, 79, 24, 72, 79, 24, 71, 79, 25, 69, 79, 25, 71, 77, 24, 69, 79, 26, 69, + 79, 26, 70, 78, 24, 68, 77, 23, 68, 78, 25, 68, 77, 24, 68, 76, 23, 67, 74, 21, 64, 73, 23, 63, 70, 23, 62, 69, 23, 61, 70, 23, 62, 66, 20, 59, 66, 22, 59, 63, 18, 55, 63, 19, 55, 60, 17, 52, 61, 25, 57, 88, 62, 86, 113, 91, 111, 96, 68, 93, 58, 22, 54, + 52, 12, 48, 53, 15, 50, 54, 18, 51, 56, 23, 55, 58, 27, 59, 61, 40, 69, 61, 41, 71, 66, 49, 76, 72, 62, 88, 79, 76, 101, 80, 85, 108, 83, 90, 111, 86, 93, 113, 87, 96, 116, 85, 95, 115, 81, 93, 113, 78, 92, 111, 77, 92, 111, 81, 96, 115, 84, 100, 120, 84, 102, 122, + 85, 104, 125, 85, 104, 125, 87, 106, 127, 86, 106, 127, 123, 141, 158, 116, 135, 152, 91, 114, 131, 94, 117, 133, 103, 125, 140, 110, 133, 148, 106, 129, 144, 106, 129, 145, 109, 132, 144, 117, 138, 150, 105, 128, 139, 91, 112, 125, 88, 110, 122, 95, 117, 126, 113, 132, 140, 127, 146, 153, 117, 137, 145, + 100, 123, 130, 107, 131, 137, 122, 146, 152, 138, 159, 166, 163, 180, 187, 176, 192, 198, 181, 196, 202, 180, 196, 202, 182, 199, 205, 190, 206, 210, 200, 213, 217, 202, 214, 218, 203, 215, 218, 202, 216, 219, 205, 217, 220, 205, 218, 220, 205, 218, 220, 207, 219, 221, 213, 225, 228, 217, 229, 231, 217, 229, 230, + 211, 224, 226, 211, 224, 226, 212, 225, 227, 212, 225, 228, 208, 222, 224, 214, 227, 228, 218, 229, 233, 218, 229, 233, 220, 230, 233, 220, 231, 234, 222, 232, 235, 221, 231, 234, 220, 231, 234, 219, 231, 234, 214, 226, 230, 212, 224, 228, 205, 219, 222, 191, 208, 212, 203, 218, 222, 202, 216, 221, 200, 215, 220, + 196, 211, 217, 189, 206, 212, 190, 207, 213, 170, 193, 201, 175, 196, 202, 169, 190, 198, 160, 183, 194, 159, 182, 191, 134, 166, 178, 128, 158, 172, 115, 147, 160, 99, 134, 147, 100, 131, 143, 83, 113, 124, 83, 110, 121, 74, 100, 111, 73, 92, 105, 78, 98, 109, 86, 105, 115, 81, 100, 109, 68, 86, 94, + 44, 58, 67, 28, 44, 52, 26, 37, 44, 23, 34, 41, 23, 33, 40, 40, 49, 55, 26, 36, 44, 14, 27, 34, 39, 51, 61, 55, 68, 78, 25, 44, 55, 37, 55, 67, 36, 56, 68, 41, 59, 71, 60, 76, 90, 49, 73, 88, 50, 74, 88, 49, 72, 87, 40, 64, 78, 36, 59, 77, 43, 64, 81, + 40, 62, 80, 45, 68, 84, 44, 66, 86, 49, 71, 89, 36, 64, 82, 58, 82, 100, 56, 80, 98, 43, 69, 88, 50, 72, 92, 49, 70, 92, 44, 65, 89, 44, 64, 89, 55, 73, 96, 48, 69, 92, 47, 69, 92, 53, 74, 97, 50, 70, 95, 48, 68, 95, 48, 68, 96, 49, 70, 97, 49, 70, 100, + 44, 68, 98, 48, 75, 105, 46, 75, 105, 46, 78, 109, 50, 84, 116, 58, 98, 130, 59, 99, 131, 64, 105, 135, 82, 120, 149, 55, 102, 128, 63, 101, 128, 43, 72, 94, 47, 68, 89, 92, 108, 119, 131, 145, 151, 132, 152, 159, 152, 171, 179, 170, 188, 195, 185, 200, 206, 187, 203, 208, 197, 211, 215, + 205, 218, 221, 212, 224, 227, 216, 228, 230, 220, 230, 233, 224, 234, 234, 228, 236, 236, 233, 240, 239, 236, 242, 241, 236, 244, 244, 237, 245, 245, 239, 245, 245, 239, 245, 245, 240, 246, 245, 240, 246, 246, 240, 246, 245, 240, 246, 245, 239, 245, 244, 239, 245, 244, 239, 244, 245, 238, 243, 244, 237, 244, 243, + 237, 243, 243, 236, 243, 242, 236, 242, 241, 237, 241, 243, 236, 241, 242, 236, 242, 241, 235, 241, 240, 235, 241, 240, 233, 238, 239, 233, 238, 239, 229, 235, 236, 223, 231, 232, 217, 225, 228, 210, 219, 222, 204, 213, 216, 201, 208, 211, 192, 198, 201, 185, 189, 194, 179, 182, 190, 170, 172, 180, 161, 158, 165, + 54, 13, 50, 57, 16, 52, 54, 13, 50, 54, 13, 50, 56, 14, 50, 57, 15, 51, 57, 14, 51, 57, 14, 51, 59, 16, 53, 57, 14, 51, 59, 16, 53, 58, 15, 53, 60, 16, 53, 60, 16, 53, 60, 15, 54, 61, 16, 55, 60, 16, 55, 61, 14, 54, 61, 16, 55, 62, 17, 56, 64, 17, 57, + 64, 17, 57, 64, 17, 56, 65, 18, 56, 63, 16, 57, 65, 17, 57, 66, 20, 59, 66, 19, 59, 65, 17, 58, 67, 19, 59, 67, 20, 59, 67, 20, 59, 68, 18, 60, 69, 20, 60, 68, 18, 60, 68, 20, 62, 66, 18, 60, 68, 20, 62, 68, 20, 62, 70, 21, 63, 71, 21, 63, 72, 22, 65, + 71, 22, 64, 72, 22, 66, 74, 23, 66, 74, 24, 66, 74, 23, 66, 74, 23, 67, 76, 23, 67, 77, 24, 68, 78, 25, 69, 78, 25, 70, 77, 23, 70, 78, 24, 71, 79, 26, 71, 80, 25, 72, 79, 25, 72, 79, 25, 72, 78, 24, 70, 80, 27, 71, 79, 24, 71, 79, 25, 71, 80, 27, 71, + 79, 24, 69, 78, 25, 69, 77, 24, 68, 76, 20, 66, 75, 20, 66, 75, 22, 67, 74, 22, 65, 72, 23, 63, 71, 24, 63, 71, 24, 63, 69, 22, 61, 68, 21, 59, 68, 21, 59, 67, 18, 58, 64, 20, 57, 62, 15, 54, 59, 19, 55, 55, 17, 52, 60, 27, 57, 87, 60, 84, 115, 91, 112, + 90, 62, 88, 55, 18, 52, 54, 17, 52, 53, 18, 52, 57, 24, 56, 57, 26, 59, 58, 32, 62, 62, 40, 68, 67, 50, 76, 78, 69, 95, 86, 84, 107, 87, 91, 114, 87, 95, 115, 90, 97, 117, 95, 104, 124, 94, 104, 124, 92, 103, 123, 89, 102, 122, 92, 105, 124, 93, 108, 128, 95, 110, 131, + 93, 110, 131, 92, 110, 132, 91, 111, 130, 93, 112, 132, 96, 117, 136, 142, 159, 173, 101, 123, 140, 89, 114, 131, 95, 120, 135, 107, 130, 145, 107, 130, 145, 104, 128, 143, 106, 129, 144, 122, 144, 155, 118, 140, 152, 110, 132, 146, 98, 120, 132, 96, 118, 129, 100, 122, 130, 119, 139, 146, 139, 157, 163, + 129, 149, 155, 119, 144, 151, 140, 160, 164, 140, 161, 165, 158, 177, 182, 178, 193, 199, 178, 195, 200, 182, 198, 204, 185, 202, 207, 188, 205, 209, 199, 212, 216, 203, 215, 219, 206, 219, 221, 201, 215, 219, 199, 214, 217, 204, 216, 220, 205, 217, 221, 207, 220, 222, 210, 223, 225, 215, 227, 229, 217, 227, 230, + 208, 221, 224, 204, 219, 221, 205, 220, 222, 206, 220, 223, 206, 220, 223, 210, 223, 226, 215, 227, 231, 214, 227, 230, 218, 229, 233, 221, 231, 233, 218, 229, 233, 217, 228, 231, 216, 227, 231, 214, 226, 230, 209, 222, 226, 206, 219, 223, 206, 218, 222, 182, 203, 209, 188, 207, 213, 192, 209, 214, 194, 210, 216, + 185, 203, 210, 189, 206, 213, 173, 196, 202, 177, 198, 203, 173, 195, 201, 170, 190, 198, 159, 182, 192, 149, 174, 184, 129, 158, 171, 109, 141, 155, 109, 136, 149, 89, 118, 130, 92, 118, 129, 89, 114, 123, 92, 116, 124, 67, 93, 103, 88, 107, 116, 102, 118, 128, 79, 97, 106, 82, 100, 108, 51, 71, 78, + 43, 58, 65, 47, 59, 66, 35, 45, 52, 24, 35, 40, 24, 35, 40, 29, 39, 45, 35, 45, 51, 30, 40, 49, 32, 43, 53, 17, 36, 46, 33, 53, 65, 38, 57, 68, 27, 49, 61, 40, 59, 71, 42, 60, 75, 46, 71, 86, 50, 73, 88, 64, 85, 98, 58, 79, 94, 38, 61, 79, 50, 70, 86, + 45, 67, 85, 50, 71, 89, 52, 75, 92, 56, 78, 95, 43, 69, 87, 50, 74, 93, 62, 83, 102, 45, 70, 91, 51, 72, 94, 63, 81, 101, 53, 73, 95, 43, 66, 87, 51, 74, 95, 42, 66, 88, 37, 62, 86, 54, 72, 97, 51, 69, 95, 41, 61, 88, 42, 63, 89, 43, 66, 92, 39, 64, 92, + 48, 71, 100, 40, 68, 99, 50, 75, 106, 46, 73, 104, 55, 86, 117, 56, 90, 120, 50, 89, 118, 85, 117, 144, 53, 97, 126, 61, 103, 130, 66, 104, 130, 35, 65, 88, 56, 76, 96, 46, 68, 81, 128, 142, 148, 128, 148, 156, 126, 152, 161, 160, 179, 187, 184, 197, 204, 188, 202, 209, 203, 216, 219, + 205, 218, 221, 209, 222, 224, 213, 225, 227, 217, 228, 230, 221, 231, 231, 224, 234, 234, 227, 236, 235, 232, 239, 239, 235, 242, 243, 237, 244, 244, 239, 245, 244, 240, 246, 245, 239, 245, 244, 239, 245, 244, 240, 246, 246, 240, 246, 245, 240, 246, 245, 239, 245, 244, 239, 245, 244, 238, 245, 243, 238, 243, 243, + 238, 244, 243, 237, 244, 243, 237, 243, 243, 236, 243, 242, 237, 243, 242, 237, 243, 242, 237, 243, 242, 235, 241, 240, 235, 240, 241, 234, 239, 240, 232, 237, 238, 231, 235, 236, 224, 232, 232, 220, 228, 228, 216, 223, 226, 210, 217, 220, 203, 210, 213, 203, 207, 211, 194, 200, 205, 183, 186, 193, 170, 170, 175, + 54, 13, 51, 54, 13, 51, 53, 12, 50, 55, 14, 51, 56, 15, 52, 57, 14, 51, 57, 16, 51, 56, 13, 50, 57, 14, 51, 58, 15, 52, 58, 15, 52, 58, 15, 53, 61, 17, 54, 60, 16, 53, 60, 15, 54, 60, 15, 54, 61, 16, 55, 60, 15, 54, 62, 16, 55, 61, 15, 55, 63, 16, 56, + 63, 17, 56, 63, 15, 56, 66, 19, 58, 65, 19, 58, 65, 18, 57, 66, 19, 58, 65, 17, 58, 66, 19, 58, 66, 19, 58, 67, 20, 59, 67, 20, 59, 67, 18, 59, 68, 20, 60, 68, 20, 61, 68, 20, 62, 69, 21, 62, 67, 19, 61, 70, 23, 63, 71, 22, 62, 71, 20, 63, 71, 20, 63, + 71, 22, 66, 71, 21, 66, 73, 22, 65, 71, 20, 65, 75, 24, 68, 75, 24, 68, 76, 23, 67, 76, 23, 67, 77, 24, 68, 78, 25, 70, 79, 26, 69, 78, 23, 70, 79, 24, 71, 79, 24, 71, 80, 27, 71, 79, 26, 69, 79, 26, 70, 79, 24, 72, 79, 25, 72, 79, 24, 72, 78, 23, 70, + 78, 24, 69, 79, 23, 69, 77, 22, 67, 76, 21, 67, 75, 21, 67, 75, 22, 66, 74, 24, 65, 71, 23, 65, 71, 24, 63, 69, 22, 61, 70, 23, 62, 69, 22, 61, 66, 19, 58, 67, 20, 58, 65, 19, 58, 64, 20, 57, 62, 18, 55, 62, 18, 56, 59, 16, 52, 56, 17, 49, 60, 26, 56, + 94, 69, 92, 115, 93, 114, 74, 45, 73, 54, 20, 53, 55, 21, 54, 55, 21, 55, 56, 24, 55, 56, 28, 58, 60, 38, 66, 72, 57, 82, 84, 74, 98, 93, 89, 112, 89, 92, 113, 91, 98, 118, 90, 100, 120, 96, 105, 125, 95, 106, 126, 93, 104, 125, 92, 105, 126, 91, 105, 127, 94, 109, 131, + 92, 108, 130, 93, 109, 129, 93, 110, 129, 88, 108, 127, 85, 105, 122, 113, 133, 148, 135, 154, 167, 92, 117, 133, 94, 119, 135, 106, 129, 144, 118, 139, 154, 118, 140, 153, 110, 133, 146, 118, 140, 152, 127, 146, 159, 120, 141, 154, 107, 129, 142, 100, 122, 133, 100, 122, 132, 110, 132, 140, 140, 157, 164, + 151, 168, 173, 141, 163, 168, 150, 170, 175, 156, 176, 179, 156, 177, 182, 178, 194, 200, 174, 193, 198, 179, 197, 203, 188, 203, 209, 187, 204, 209, 191, 207, 210, 202, 214, 218, 205, 218, 221, 197, 212, 217, 195, 211, 218, 201, 214, 218, 203, 215, 220, 205, 217, 221, 204, 219, 223, 212, 223, 227, 217, 228, 231, + 204, 218, 222, 194, 211, 216, 202, 217, 221, 203, 217, 221, 202, 217, 223, 207, 222, 224, 210, 222, 226, 210, 222, 226, 213, 226, 229, 216, 227, 231, 212, 225, 229, 212, 224, 228, 209, 222, 226, 205, 220, 223, 199, 216, 221, 196, 212, 219, 193, 209, 215, 181, 200, 207, 185, 203, 209, 189, 205, 212, 183, 202, 208, + 190, 206, 212, 177, 196, 203, 182, 200, 207, 180, 200, 205, 162, 187, 194, 162, 185, 193, 151, 175, 183, 142, 165, 176, 120, 150, 162, 86, 122, 137, 101, 128, 140, 95, 122, 134, 85, 112, 121, 81, 107, 115, 91, 114, 122, 87, 110, 118, 92, 110, 119, 88, 106, 116, 77, 94, 102, 53, 72, 79, 48, 65, 73, + 47, 60, 67, 26, 41, 47, 11, 23, 29, 13, 23, 27, 27, 38, 42, 15, 26, 30, 11, 24, 27, 27, 38, 46, 25, 37, 46, 42, 61, 70, 55, 74, 85, 48, 67, 79, 40, 59, 70, 51, 69, 80, 35, 54, 68, 48, 72, 86, 34, 60, 76, 61, 82, 97, 37, 62, 79, 54, 74, 90, 54, 74, 91, + 60, 80, 97, 50, 72, 89, 49, 72, 89, 54, 77, 94, 56, 78, 96, 63, 84, 102, 51, 75, 94, 57, 78, 99, 55, 74, 95, 50, 70, 92, 59, 78, 99, 60, 79, 100, 56, 77, 97, 42, 66, 89, 43, 67, 89, 35, 60, 85, 48, 66, 92, 39, 59, 86, 45, 65, 91, 43, 65, 91, 45, 67, 95, + 43, 68, 96, 51, 73, 103, 40, 67, 98, 51, 78, 107, 48, 76, 107, 51, 82, 112, 48, 87, 116, 57, 96, 124, 58, 97, 123, 63, 101, 128, 71, 105, 131, 36, 66, 87, 45, 69, 86, 32, 58, 73, 111, 126, 132, 129, 148, 154, 136, 159, 166, 146, 168, 177, 154, 175, 184, 174, 192, 199, 187, 202, 208, + 203, 215, 218, 208, 221, 223, 218, 228, 228, 223, 232, 232, 226, 235, 235, 229, 237, 237, 231, 239, 239, 233, 240, 240, 235, 241, 242, 237, 242, 244, 238, 244, 244, 239, 245, 245, 237, 245, 245, 239, 245, 246, 239, 244, 244, 240, 246, 245, 239, 245, 244, 239, 245, 244, 239, 245, 245, 239, 244, 244, 240, 245, 245, + 239, 245, 244, 238, 245, 244, 238, 244, 244, 239, 244, 244, 238, 244, 243, 238, 244, 242, 237, 243, 242, 237, 243, 242, 236, 242, 242, 235, 240, 241, 234, 239, 240, 232, 237, 238, 231, 236, 237, 227, 235, 235, 223, 231, 231, 220, 226, 226, 218, 223, 226, 212, 218, 222, 206, 211, 215, 193, 197, 201, 177, 186, 187, + 55, 15, 51, 54, 13, 49, 55, 14, 51, 55, 13, 50, 55, 14, 51, 56, 16, 52, 57, 15, 51, 58, 16, 52, 59, 16, 53, 59, 16, 53, 58, 15, 52, 59, 15, 52, 58, 14, 52, 59, 15, 53, 60, 15, 54, 60, 14, 54, 61, 16, 55, 60, 15, 54, 62, 18, 56, 62, 17, 57, 62, 17, 56, + 63, 15, 57, 63, 17, 55, 64, 17, 56, 65, 17, 57, 65, 18, 57, 65, 18, 57, 66, 18, 58, 65, 20, 58, 66, 20, 59, 65, 19, 58, 67, 20, 59, 67, 19, 60, 67, 20, 60, 68, 21, 60, 67, 19, 60, 68, 21, 61, 68, 21, 62, 69, 20, 62, 70, 21, 63, 69, 19, 63, 71, 21, 64, + 70, 22, 64, 72, 22, 65, 72, 22, 66, 75, 25, 67, 74, 24, 67, 75, 24, 67, 76, 26, 68, 75, 25, 68, 77, 25, 69, 77, 23, 68, 77, 24, 68, 78, 24, 71, 80, 26, 70, 79, 25, 71, 80, 27, 71, 78, 25, 69, 78, 25, 69, 79, 26, 72, 79, 24, 71, 80, 26, 73, 80, 25, 72, + 77, 22, 69, 78, 23, 69, 77, 23, 68, 77, 23, 67, 76, 22, 67, 76, 24, 67, 73, 24, 66, 73, 24, 65, 70, 23, 62, 71, 23, 63, 71, 24, 64, 68, 21, 61, 68, 21, 60, 67, 22, 60, 66, 22, 59, 64, 20, 58, 63, 18, 56, 62, 18, 55, 63, 19, 56, 61, 18, 54, 59, 18, 53, + 54, 17, 51, 64, 34, 62, 103, 81, 103, 102, 79, 101, 60, 29, 57, 53, 20, 52, 54, 22, 54, 54, 23, 54, 59, 33, 62, 68, 49, 76, 75, 61, 86, 82, 75, 98, 88, 85, 107, 89, 93, 113, 89, 96, 115, 91, 98, 118, 92, 100, 122, 93, 105, 125, 93, 104, 124, 88, 103, 122, 95, 109, 128, + 95, 109, 128, 92, 106, 126, 93, 110, 129, 98, 115, 134, 85, 106, 122, 88, 110, 127, 139, 158, 170, 118, 140, 154, 95, 119, 136, 105, 127, 143, 122, 143, 157, 133, 152, 165, 122, 143, 155, 108, 132, 144, 127, 148, 159, 128, 149, 160, 114, 137, 148, 113, 136, 146, 106, 130, 141, 104, 129, 138, 130, 151, 158, + 151, 168, 174, 153, 172, 177, 149, 170, 175, 161, 180, 185, 167, 186, 192, 180, 196, 201, 177, 194, 201, 179, 197, 202, 186, 201, 207, 190, 206, 209, 183, 202, 207, 197, 212, 215, 207, 219, 222, 191, 208, 214, 195, 210, 216, 199, 212, 216, 204, 216, 219, 200, 212, 217, 201, 214, 218, 202, 216, 221, 212, 223, 228, + 206, 219, 223, 186, 205, 212, 201, 215, 219, 200, 214, 219, 197, 213, 220, 205, 218, 223, 206, 220, 224, 209, 221, 225, 210, 223, 226, 207, 221, 224, 206, 219, 224, 207, 220, 224, 206, 218, 223, 200, 215, 219, 192, 210, 215, 188, 206, 213, 174, 196, 205, 183, 200, 208, 188, 206, 211, 179, 199, 206, 172, 194, 202, + 187, 205, 210, 169, 191, 200, 172, 193, 199, 179, 198, 204, 167, 189, 195, 157, 180, 188, 149, 173, 182, 134, 159, 171, 109, 141, 154, 86, 119, 136, 92, 119, 132, 84, 111, 123, 87, 112, 120, 98, 121, 129, 93, 115, 123, 89, 108, 118, 95, 112, 120, 63, 80, 88, 48, 65, 74, 46, 63, 70, 37, 51, 59, + 44, 57, 64, 25, 38, 45, 16, 27, 33, 10, 21, 25, 16, 27, 31, 16, 27, 30, 14, 26, 30, 5, 18, 26, 36, 49, 59, 35, 54, 65, 28, 52, 64, 45, 65, 77, 53, 71, 82, 45, 64, 76, 34, 54, 68, 25, 51, 66, 42, 67, 82, 54, 76, 91, 43, 66, 83, 55, 75, 92, 44, 67, 84, + 43, 66, 85, 49, 71, 88, 56, 78, 96, 59, 81, 98, 47, 70, 89, 53, 75, 93, 57, 76, 97, 56, 76, 96, 52, 70, 93, 47, 66, 89, 48, 67, 89, 56, 74, 96, 50, 71, 92, 53, 73, 94, 45, 68, 90, 40, 64, 86, 42, 63, 87, 46, 66, 89, 41, 61, 87, 44, 65, 90, 35, 59, 86, + 42, 63, 93, 46, 68, 98, 44, 69, 100, 41, 70, 102, 46, 74, 104, 59, 87, 116, 53, 85, 114, 44, 83, 111, 53, 90, 117, 48, 87, 114, 54, 88, 113, 31, 60, 81, 46, 69, 86, 35, 60, 74, 72, 92, 100, 149, 162, 166, 136, 158, 164, 155, 175, 182, 168, 186, 193, 179, 194, 200, 191, 206, 211, + 199, 212, 216, 209, 221, 223, 214, 225, 227, 218, 228, 228, 219, 229, 229, 221, 231, 231, 224, 234, 234, 229, 238, 238, 232, 240, 241, 234, 243, 243, 236, 243, 243, 237, 243, 243, 240, 244, 245, 240, 244, 246, 240, 245, 245, 240, 246, 246, 238, 245, 245, 239, 246, 246, 239, 245, 246, 239, 245, 245, 240, 245, 245, + 239, 245, 244, 239, 245, 244, 239, 245, 244, 238, 244, 244, 238, 244, 243, 237, 243, 243, 237, 243, 242, 237, 243, 242, 237, 242, 242, 237, 242, 242, 235, 241, 241, 234, 240, 240, 235, 240, 240, 233, 239, 238, 230, 236, 235, 229, 234, 233, 225, 230, 231, 219, 225, 225, 211, 218, 219, 201, 210, 212, 190, 202, 202, + 54, 14, 51, 54, 13, 50, 54, 13, 50, 54, 13, 50, 56, 15, 52, 56, 15, 52, 58, 16, 52, 58, 15, 51, 56, 13, 50, 58, 14, 51, 59, 16, 53, 58, 14, 51, 59, 15, 53, 59, 14, 53, 60, 16, 55, 60, 15, 55, 61, 16, 55, 62, 17, 56, 61, 15, 55, 63, 17, 57, 63, 18, 58, + 62, 17, 56, 64, 16, 55, 63, 19, 57, 65, 18, 57, 65, 18, 57, 65, 18, 57, 65, 18, 57, 65, 18, 57, 65, 18, 57, 66, 19, 58, 66, 19, 59, 67, 20, 59, 68, 21, 60, 66, 20, 60, 67, 18, 61, 68, 21, 61, 67, 20, 61, 70, 21, 63, 69, 20, 62, 71, 22, 64, 70, 21, 64, + 72, 24, 65, 71, 22, 64, 71, 23, 65, 74, 24, 66, 72, 21, 64, 73, 23, 66, 74, 23, 65, 77, 25, 68, 77, 24, 68, 78, 25, 69, 78, 24, 69, 77, 24, 69, 77, 22, 69, 79, 26, 70, 80, 27, 71, 79, 26, 71, 79, 26, 70, 80, 25, 72, 81, 26, 73, 80, 26, 73, 79, 24, 71, + 78, 23, 71, 80, 25, 72, 79, 25, 71, 78, 24, 69, 78, 25, 69, 74, 22, 66, 75, 25, 67, 73, 24, 66, 71, 23, 64, 72, 24, 65, 71, 25, 64, 70, 24, 62, 67, 23, 61, 67, 23, 60, 67, 25, 60, 67, 22, 58, 66, 22, 58, 65, 22, 59, 62, 18, 56, 62, 19, 55, 61, 19, 53, + 60, 21, 53, 57, 20, 52, 54, 21, 51, 76, 51, 76, 115, 94, 114, 89, 64, 87, 57, 26, 56, 59, 28, 58, 59, 31, 60, 68, 46, 72, 74, 56, 82, 79, 69, 92, 85, 78, 100, 90, 91, 110, 92, 98, 117, 93, 100, 120, 94, 102, 122, 97, 107, 127, 97, 108, 128, 97, 108, 128, 99, 113, 132, + 101, 115, 133, 104, 118, 136, 105, 120, 138, 107, 124, 141, 109, 127, 144, 101, 122, 139, 108, 129, 145, 148, 164, 176, 120, 139, 156, 108, 128, 145, 113, 132, 149, 125, 145, 159, 132, 150, 163, 121, 142, 154, 122, 142, 154, 138, 158, 165, 125, 148, 156, 115, 139, 149, 118, 142, 151, 104, 131, 141, 119, 145, 153, + 149, 167, 174, 160, 179, 185, 162, 179, 186, 167, 185, 192, 173, 191, 198, 186, 200, 205, 190, 204, 209, 184, 200, 206, 183, 200, 205, 188, 205, 209, 185, 204, 209, 189, 207, 210, 199, 212, 218, 192, 207, 213, 195, 209, 214, 198, 211, 215, 199, 211, 215, 196, 210, 214, 195, 209, 215, 191, 209, 215, 197, 213, 218, + 206, 218, 222, 182, 201, 208, 191, 208, 213, 195, 210, 216, 194, 210, 216, 202, 217, 222, 204, 219, 222, 204, 218, 222, 207, 219, 223, 203, 216, 220, 202, 216, 222, 202, 216, 220, 194, 211, 216, 195, 211, 216, 186, 205, 211, 182, 201, 208, 167, 190, 200, 182, 200, 207, 186, 202, 208, 185, 201, 207, 169, 188, 197, + 159, 183, 191, 190, 203, 209, 167, 189, 196, 177, 196, 202, 171, 191, 197, 159, 181, 189, 132, 161, 172, 131, 157, 169, 114, 144, 157, 88, 119, 134, 82, 107, 120, 71, 98, 111, 75, 102, 112, 82, 107, 116, 111, 130, 138, 75, 96, 106, 69, 86, 94, 44, 63, 72, 38, 56, 64, 36, 52, 58, 38, 52, 59, + 39, 52, 59, 12, 25, 32, 23, 34, 41, 12, 21, 28, 14, 24, 31, 9, 18, 26, 19, 30, 37, 36, 50, 58, 23, 39, 49, 55, 73, 84, 46, 65, 76, 42, 61, 74, 38, 58, 69, 43, 62, 74, 36, 56, 69, 42, 65, 79, 48, 71, 85, 35, 61, 78, 64, 84, 99, 51, 74, 91, 45, 68, 84, + 59, 78, 95, 48, 69, 88, 62, 81, 99, 48, 70, 88, 53, 74, 92, 49, 70, 89, 51, 73, 93, 50, 70, 92, 59, 76, 98, 51, 69, 92, 61, 77, 99, 64, 80, 101, 48, 67, 90, 60, 77, 99, 45, 67, 89, 41, 63, 86, 38, 62, 84, 35, 57, 82, 46, 65, 91, 34, 55, 82, 41, 59, 89, + 49, 66, 95, 42, 62, 92, 42, 63, 95, 43, 68, 99, 54, 79, 108, 48, 78, 108, 56, 85, 113, 56, 87, 116, 42, 81, 111, 64, 97, 124, 39, 77, 102, 39, 64, 83, 40, 65, 80, 45, 68, 82, 34, 60, 71, 128, 143, 148, 140, 163, 168, 161, 181, 186, 169, 188, 193, 177, 194, 199, 185, 202, 207, + 201, 214, 217, 207, 219, 221, 215, 225, 228, 217, 228, 228, 222, 231, 231, 227, 235, 235, 228, 236, 236, 230, 238, 238, 232, 240, 240, 233, 241, 241, 235, 242, 242, 238, 244, 244, 239, 244, 245, 239, 244, 245, 240, 246, 246, 240, 245, 245, 240, 245, 246, 240, 245, 246, 240, 245, 246, 239, 245, 246, 240, 245, 245, + 239, 244, 245, 239, 245, 244, 239, 245, 244, 238, 244, 243, 238, 244, 243, 238, 244, 243, 238, 243, 243, 238, 244, 244, 238, 243, 244, 237, 243, 243, 237, 243, 242, 237, 243, 242, 236, 241, 240, 235, 240, 239, 233, 238, 237, 231, 237, 237, 229, 234, 234, 222, 230, 230, 219, 225, 226, 209, 218, 217, 205, 214, 216, + 55, 15, 52, 55, 15, 51, 56, 15, 52, 55, 14, 51, 57, 16, 53, 57, 15, 52, 58, 15, 51, 57, 14, 51, 59, 16, 52, 58, 15, 52, 60, 16, 53, 59, 15, 52, 60, 15, 53, 60, 16, 53, 59, 14, 53, 61, 16, 55, 61, 16, 55, 59, 14, 53, 61, 16, 55, 62, 16, 55, 62, 17, 56, + 63, 18, 57, 62, 17, 56, 64, 19, 57, 62, 17, 56, 65, 18, 57, 65, 18, 57, 65, 19, 58, 64, 18, 57, 65, 20, 58, 65, 19, 58, 65, 18, 57, 66, 19, 59, 67, 20, 59, 67, 20, 59, 68, 20, 60, 67, 20, 60, 68, 20, 62, 69, 20, 61, 70, 20, 61, 70, 21, 63, 69, 21, 63, + 71, 23, 65, 71, 22, 64, 73, 22, 64, 73, 24, 66, 73, 23, 65, 74, 24, 66, 74, 24, 66, 75, 23, 66, 76, 25, 67, 77, 25, 68, 76, 24, 67, 80, 27, 71, 78, 25, 69, 80, 27, 71, 80, 25, 72, 80, 27, 72, 79, 25, 72, 81, 26, 73, 80, 27, 74, 80, 25, 72, 81, 27, 74, + 81, 26, 73, 80, 25, 74, 80, 25, 72, 79, 25, 70, 78, 25, 69, 76, 25, 68, 75, 25, 68, 75, 25, 67, 73, 25, 66, 72, 24, 64, 73, 26, 65, 71, 24, 63, 70, 26, 63, 70, 26, 62, 68, 24, 60, 68, 24, 60, 67, 23, 59, 65, 20, 58, 65, 21, 58, 65, 22, 58, 62, 20, 55, + 63, 21, 56, 61, 22, 54, 58, 19, 52, 56, 22, 52, 62, 32, 59, 99, 77, 98, 107, 86, 107, 64, 36, 63, 57, 26, 56, 66, 42, 69, 73, 56, 80, 80, 66, 90, 88, 80, 101, 90, 88, 108, 89, 96, 115, 101, 107, 126, 104, 111, 131, 103, 112, 131, 100, 111, 130, 95, 108, 127, 97, 111, 129, + 100, 114, 132, 107, 123, 141, 115, 131, 148, 114, 130, 147, 120, 137, 154, 124, 142, 159, 116, 135, 153, 138, 154, 169, 140, 158, 171, 121, 139, 156, 115, 135, 150, 120, 141, 155, 130, 149, 161, 137, 156, 167, 129, 150, 159, 140, 160, 168, 144, 164, 171, 126, 148, 156, 132, 154, 162, 131, 153, 161, 134, 155, 163, + 148, 168, 175, 165, 182, 188, 172, 188, 194, 177, 193, 199, 179, 197, 199, 196, 208, 212, 190, 205, 210, 184, 202, 208, 187, 203, 208, 182, 201, 206, 184, 203, 208, 182, 202, 207, 194, 208, 215, 193, 207, 213, 198, 209, 214, 195, 208, 212, 190, 206, 210, 185, 202, 208, 184, 201, 208, 185, 204, 210, 181, 202, 209, + 199, 212, 218, 180, 200, 207, 186, 204, 209, 187, 205, 210, 188, 207, 211, 194, 212, 217, 204, 218, 223, 199, 216, 220, 201, 215, 218, 202, 215, 220, 199, 213, 219, 197, 211, 217, 188, 206, 211, 189, 206, 211, 178, 198, 205, 181, 199, 206, 158, 184, 194, 173, 194, 201, 180, 198, 204, 194, 206, 211, 170, 189, 197, + 158, 181, 190, 177, 194, 201, 172, 191, 198, 170, 191, 197, 169, 189, 196, 163, 184, 192, 146, 170, 180, 126, 153, 165, 118, 146, 159, 105, 132, 145, 79, 105, 119, 77, 102, 114, 85, 106, 120, 90, 111, 124, 80, 102, 115, 69, 88, 100, 65, 81, 89, 55, 72, 81, 47, 64, 72, 39, 55, 62, 26, 41, 48, + 28, 42, 50, 14, 26, 32, 8, 20, 27, 21, 30, 37, 15, 24, 31, 18, 27, 33, 27, 39, 46, 31, 46, 54, 22, 37, 49, 25, 45, 55, 32, 52, 64, 22, 44, 56, 17, 42, 53, 24, 47, 60, 28, 51, 64, 38, 62, 76, 50, 72, 86, 70, 90, 104, 40, 66, 82, 50, 73, 90, 62, 82, 99, + 45, 67, 86, 40, 64, 83, 43, 66, 85, 64, 82, 102, 53, 74, 94, 46, 68, 90, 46, 67, 89, 60, 78, 99, 37, 58, 83, 48, 66, 89, 39, 58, 84, 36, 56, 82, 47, 67, 90, 45, 65, 89, 49, 70, 93, 39, 63, 85, 45, 67, 89, 44, 64, 89, 39, 60, 87, 45, 62, 91, 42, 60, 90, + 32, 53, 83, 41, 61, 91, 44, 65, 95, 40, 63, 94, 41, 67, 98, 51, 78, 108, 49, 77, 108, 46, 79, 109, 60, 93, 121, 52, 87, 115, 46, 76, 102, 40, 65, 83, 39, 63, 80, 41, 65, 80, 31, 57, 67, 125, 140, 146, 148, 169, 174, 166, 184, 189, 168, 186, 192, 184, 199, 204, 193, 208, 211, + 202, 215, 218, 211, 222, 224, 214, 225, 226, 216, 226, 227, 221, 230, 230, 224, 234, 236, 228, 236, 236, 229, 237, 237, 231, 239, 239, 232, 240, 240, 235, 241, 242, 237, 243, 244, 238, 243, 244, 240, 245, 246, 240, 245, 246, 240, 245, 246, 239, 246, 246, 239, 245, 246, 239, 246, 246, 239, 245, 245, 240, 245, 246, + 240, 245, 246, 240, 246, 246, 239, 244, 245, 240, 245, 245, 239, 245, 244, 240, 245, 246, 239, 244, 245, 238, 244, 244, 238, 244, 244, 239, 245, 244, 238, 244, 243, 237, 243, 242, 236, 242, 241, 236, 242, 241, 235, 241, 240, 232, 238, 238, 230, 236, 235, 228, 234, 233, 224, 230, 230, 218, 226, 226, 215, 223, 226, + 55, 15, 51, 53, 12, 50, 54, 13, 51, 55, 14, 51, 56, 15, 52, 56, 12, 49, 58, 15, 52, 57, 14, 52, 57, 14, 51, 58, 15, 52, 59, 16, 53, 59, 14, 54, 61, 17, 54, 58, 13, 51, 60, 15, 53, 60, 15, 54, 60, 15, 54, 62, 17, 56, 61, 16, 55, 63, 16, 56, 62, 16, 55, + 64, 18, 57, 61, 15, 55, 63, 18, 57, 63, 18, 57, 64, 17, 56, 65, 18, 57, 63, 17, 56, 66, 19, 57, 66, 19, 58, 66, 19, 58, 66, 19, 58, 67, 20, 59, 68, 21, 60, 66, 19, 58, 67, 20, 59, 68, 21, 61, 69, 21, 63, 69, 19, 62, 70, 21, 62, 69, 21, 62, 70, 22, 64, + 69, 21, 63, 72, 22, 64, 70, 20, 63, 73, 23, 65, 73, 23, 65, 73, 23, 64, 74, 24, 66, 75, 25, 66, 76, 25, 67, 77, 25, 68, 77, 24, 68, 78, 25, 70, 80, 26, 70, 81, 28, 72, 80, 27, 71, 79, 26, 71, 81, 27, 72, 81, 27, 73, 81, 27, 74, 82, 26, 74, 80, 26, 73, + 81, 26, 74, 80, 26, 73, 80, 26, 73, 79, 26, 71, 79, 26, 69, 78, 25, 69, 76, 25, 69, 75, 24, 68, 77, 27, 69, 74, 25, 65, 72, 25, 65, 72, 25, 64, 72, 26, 64, 70, 26, 62, 69, 25, 61, 70, 26, 62, 68, 24, 60, 66, 22, 59, 67, 23, 60, 64, 21, 58, 64, 21, 57, + 62, 20, 54, 62, 21, 54, 60, 21, 53, 59, 21, 55, 58, 22, 54, 58, 25, 56, 84, 59, 84, 116, 97, 117, 78, 54, 79, 63, 38, 67, 73, 53, 79, 77, 63, 87, 83, 73, 95, 85, 81, 103, 89, 95, 114, 99, 105, 124, 102, 108, 128, 98, 108, 127, 98, 110, 128, 96, 108, 126, 101, 115, 133, + 102, 116, 134, 106, 122, 139, 114, 131, 148, 117, 134, 152, 116, 134, 152, 134, 151, 167, 136, 151, 167, 129, 146, 163, 151, 167, 179, 126, 144, 159, 119, 138, 153, 123, 142, 156, 134, 153, 165, 145, 164, 172, 136, 157, 167, 137, 159, 166, 149, 168, 175, 149, 169, 176, 136, 158, 166, 152, 170, 177, 151, 169, 177, + 163, 179, 185, 174, 188, 194, 180, 195, 201, 183, 198, 204, 181, 198, 204, 199, 209, 213, 190, 206, 211, 185, 203, 208, 190, 206, 210, 185, 202, 208, 187, 204, 210, 186, 204, 209, 190, 205, 211, 191, 206, 212, 192, 207, 211, 189, 204, 207, 184, 201, 205, 176, 195, 201, 169, 191, 197, 176, 196, 202, 191, 207, 212, + 193, 208, 213, 179, 199, 204, 174, 196, 201, 188, 206, 211, 184, 202, 209, 190, 207, 212, 194, 209, 215, 197, 212, 215, 196, 211, 215, 191, 209, 214, 193, 210, 216, 191, 208, 214, 188, 205, 212, 176, 197, 204, 177, 196, 204, 165, 189, 197, 170, 190, 199, 167, 188, 196, 178, 196, 203, 179, 195, 203, 173, 191, 199, + 172, 190, 198, 175, 193, 200, 182, 199, 205, 179, 195, 202, 165, 187, 193, 170, 188, 195, 136, 165, 175, 117, 146, 159, 107, 137, 151, 97, 124, 138, 75, 101, 114, 69, 93, 107, 80, 102, 115, 77, 99, 112, 69, 90, 104, 55, 73, 85, 58, 76, 86, 55, 72, 81, 58, 74, 81, 32, 49, 56, 28, 44, 51, + 21, 37, 44, 19, 31, 37, 23, 34, 41, 10, 20, 27, 15, 26, 33, 14, 23, 31, 11, 26, 34, 35, 47, 56, 14, 29, 37, 26, 41, 48, 20, 41, 52, 31, 52, 64, 41, 60, 72, 20, 43, 56, 40, 60, 73, 52, 72, 85, 55, 74, 88, 71, 91, 105, 50, 73, 89, 57, 78, 95, 53, 74, 91, + 54, 74, 93, 51, 71, 91, 51, 73, 93, 57, 78, 98, 60, 80, 101, 53, 73, 96, 39, 62, 86, 37, 59, 83, 40, 60, 86, 50, 67, 93, 41, 60, 86, 41, 63, 88, 36, 58, 84, 55, 74, 98, 57, 76, 99, 38, 61, 86, 33, 57, 82, 29, 53, 80, 33, 55, 84, 39, 59, 88, 32, 55, 83, + 36, 58, 87, 38, 59, 90, 35, 58, 90, 37, 60, 92, 44, 68, 98, 37, 64, 96, 44, 73, 104, 39, 74, 104, 50, 81, 110, 37, 72, 103, 46, 73, 98, 37, 62, 82, 39, 64, 81, 47, 70, 86, 32, 56, 70, 133, 146, 153, 144, 163, 171, 152, 173, 181, 182, 196, 201, 189, 203, 208, 198, 211, 213, + 206, 218, 221, 211, 223, 225, 216, 226, 226, 221, 230, 230, 222, 231, 231, 222, 232, 233, 227, 235, 235, 229, 236, 236, 230, 238, 238, 234, 239, 240, 235, 241, 240, 236, 243, 241, 236, 243, 244, 237, 244, 244, 238, 245, 245, 238, 244, 245, 240, 245, 246, 237, 245, 245, 239, 246, 246, 239, 246, 246, 240, 245, 246, + 240, 246, 246, 240, 245, 245, 240, 245, 246, 240, 245, 245, 239, 245, 245, 239, 245, 246, 239, 244, 245, 239, 245, 245, 239, 245, 245, 239, 245, 244, 238, 244, 243, 238, 244, 243, 237, 243, 242, 235, 241, 240, 236, 242, 241, 233, 239, 239, 232, 238, 237, 229, 235, 234, 228, 233, 233, 225, 231, 232, 222, 228, 229, + 53, 13, 50, 55, 16, 53, 54, 15, 51, 56, 16, 52, 55, 14, 52, 57, 14, 51, 57, 15, 52, 57, 14, 51, 58, 14, 53, 58, 15, 52, 59, 15, 53, 60, 16, 54, 59, 16, 53, 60, 16, 54, 60, 16, 54, 60, 15, 54, 59, 16, 54, 60, 15, 54, 61, 16, 55, 62, 16, 55, 62, 16, 55, + 63, 17, 56, 63, 17, 57, 64, 19, 57, 63, 17, 56, 64, 17, 56, 64, 17, 57, 65, 18, 57, 64, 18, 57, 65, 20, 59, 65, 18, 57, 65, 20, 58, 65, 20, 58, 66, 19, 58, 67, 21, 59, 67, 21, 60, 68, 20, 60, 69, 21, 62, 69, 20, 62, 70, 21, 62, 70, 21, 63, 70, 22, 63, + 70, 21, 63, 71, 23, 64, 70, 23, 64, 71, 23, 64, 73, 24, 65, 74, 24, 66, 74, 24, 66, 74, 24, 66, 76, 26, 68, 76, 26, 68, 77, 24, 68, 78, 25, 69, 79, 26, 70, 78, 24, 70, 79, 25, 71, 80, 26, 72, 81, 27, 73, 81, 27, 72, 81, 27, 73, 81, 27, 74, 80, 26, 73, + 81, 26, 74, 81, 27, 74, 79, 26, 72, 80, 27, 71, 79, 27, 71, 79, 28, 71, 77, 26, 70, 77, 27, 71, 75, 26, 68, 76, 27, 69, 75, 26, 68, 74, 26, 67, 72, 25, 64, 72, 28, 65, 71, 26, 63, 73, 29, 65, 71, 27, 64, 71, 28, 64, 70, 26, 63, 67, 24, 61, 65, 23, 59, + 64, 23, 57, 64, 23, 57, 64, 24, 58, 62, 23, 58, 60, 23, 57, 63, 27, 60, 61, 27, 59, 71, 44, 70, 110, 91, 113, 108, 92, 112, 67, 49, 74, 71, 55, 80, 81, 69, 91, 80, 75, 96, 86, 89, 111, 96, 102, 123, 101, 108, 127, 94, 104, 123, 90, 102, 120, 97, 109, 127, 103, 117, 135, + 103, 118, 135, 107, 123, 140, 111, 129, 146, 123, 140, 157, 130, 148, 164, 126, 145, 162, 132, 152, 167, 135, 154, 168, 149, 166, 178, 144, 161, 173, 123, 144, 158, 119, 142, 154, 130, 151, 162, 139, 159, 169, 147, 165, 173, 143, 164, 172, 148, 167, 174, 159, 178, 184, 149, 169, 175, 159, 178, 184, 156, 177, 183, + 169, 185, 192, 177, 191, 197, 182, 196, 202, 184, 200, 206, 182, 199, 205, 193, 207, 211, 194, 208, 212, 183, 201, 207, 189, 205, 210, 189, 205, 210, 187, 203, 208, 186, 203, 208, 183, 201, 207, 186, 202, 208, 185, 201, 206, 180, 197, 202, 179, 197, 202, 172, 191, 197, 164, 187, 194, 176, 195, 201, 187, 204, 209, + 187, 202, 207, 184, 201, 205, 177, 196, 201, 175, 194, 201, 180, 199, 206, 189, 205, 211, 191, 207, 213, 195, 209, 214, 190, 207, 211, 192, 207, 211, 190, 206, 212, 183, 201, 208, 175, 195, 203, 171, 192, 201, 166, 188, 197, 153, 179, 189, 175, 193, 200, 168, 189, 197, 182, 198, 205, 181, 198, 205, 173, 190, 199, + 181, 197, 203, 173, 193, 200, 190, 204, 209, 172, 192, 199, 164, 185, 193, 156, 178, 187, 150, 173, 183, 135, 159, 170, 117, 145, 159, 96, 125, 138, 61, 89, 103, 78, 100, 114, 61, 87, 100, 83, 101, 115, 70, 89, 102, 54, 71, 84, 42, 60, 72, 39, 56, 67, 55, 70, 79, 34, 50, 60, 43, 58, 64, + 19, 34, 41, 10, 25, 30, 28, 40, 47, 16, 26, 33, 16, 25, 32, 13, 25, 31, 37, 48, 56, 17, 30, 38, 23, 36, 44, 17, 33, 41, 43, 58, 68, 35, 55, 67, 42, 60, 73, 37, 56, 69, 42, 62, 75, 36, 57, 71, 54, 76, 88, 71, 90, 104, 63, 83, 100, 61, 82, 99, 60, 79, 97, + 63, 82, 100, 58, 77, 96, 56, 77, 98, 51, 74, 96, 59, 80, 101, 59, 79, 100, 59, 78, 100, 50, 70, 94, 54, 72, 96, 38, 59, 85, 34, 56, 82, 39, 60, 86, 24, 51, 77, 32, 56, 82, 45, 66, 91, 53, 71, 95, 41, 62, 88, 29, 53, 80, 42, 61, 90, 37, 60, 89, 35, 58, 88, + 29, 53, 85, 37, 58, 92, 38, 60, 93, 43, 64, 97, 40, 62, 96, 42, 65, 96, 32, 63, 95, 43, 73, 103, 45, 75, 105, 47, 78, 105, 39, 67, 90, 37, 65, 84, 41, 65, 84, 50, 71, 90, 31, 55, 69, 110, 126, 134, 153, 166, 173, 156, 175, 182, 178, 193, 199, 191, 205, 209, 194, 208, 212, + 202, 216, 218, 208, 220, 222, 213, 224, 226, 215, 226, 228, 219, 229, 229, 222, 232, 232, 225, 233, 233, 226, 234, 234, 227, 235, 234, 230, 238, 237, 234, 240, 239, 235, 241, 240, 237, 242, 241, 239, 244, 244, 239, 244, 245, 240, 245, 246, 239, 245, 245, 238, 246, 245, 240, 246, 247, 241, 245, 247, 240, 245, 246, + 241, 245, 247, 241, 246, 247, 240, 245, 246, 240, 246, 245, 240, 246, 245, 240, 246, 245, 240, 246, 245, 240, 245, 245, 240, 245, 245, 239, 246, 245, 239, 245, 244, 238, 244, 243, 238, 244, 243, 237, 243, 242, 235, 241, 240, 235, 241, 240, 234, 240, 239, 232, 238, 237, 229, 235, 234, 227, 235, 233, 224, 233, 233, + 53, 17, 50, 53, 13, 50, 55, 16, 52, 55, 14, 51, 56, 15, 52, 57, 15, 52, 57, 16, 52, 59, 15, 52, 58, 15, 52, 59, 16, 53, 60, 15, 54, 60, 16, 54, 58, 15, 53, 59, 16, 54, 58, 14, 52, 60, 15, 54, 60, 17, 55, 60, 15, 54, 61, 16, 55, 62, 17, 56, 63, 17, 56, + 62, 17, 56, 62, 16, 55, 63, 18, 56, 62, 17, 56, 63, 16, 55, 64, 18, 56, 65, 20, 58, 64, 17, 56, 66, 19, 58, 65, 18, 57, 66, 20, 58, 66, 20, 59, 66, 19, 58, 66, 19, 58, 67, 20, 59, 67, 21, 60, 68, 21, 62, 68, 19, 61, 69, 20, 61, 68, 19, 61, 70, 22, 62, + 70, 21, 63, 69, 21, 62, 69, 21, 63, 71, 23, 64, 72, 23, 64, 72, 23, 65, 74, 24, 65, 76, 26, 67, 74, 24, 66, 75, 25, 67, 77, 26, 68, 77, 27, 69, 78, 24, 68, 79, 27, 71, 80, 26, 72, 80, 27, 71, 79, 25, 72, 81, 26, 73, 81, 26, 73, 80, 26, 73, 80, 26, 73, + 82, 28, 74, 82, 29, 73, 82, 28, 73, 80, 27, 71, 81, 28, 72, 79, 27, 71, 78, 26, 70, 78, 27, 70, 78, 27, 69, 77, 28, 70, 74, 27, 69, 76, 29, 70, 75, 28, 68, 74, 28, 67, 75, 31, 67, 74, 30, 67, 72, 29, 66, 73, 30, 66, 71, 29, 65, 70, 27, 64, 69, 27, 63, + 68, 27, 62, 65, 25, 60, 64, 24, 59, 63, 24, 58, 63, 24, 59, 64, 27, 60, 68, 33, 64, 67, 35, 66, 68, 41, 69, 95, 77, 101, 122, 108, 129, 72, 58, 81, 72, 58, 80, 80, 72, 93, 89, 90, 110, 102, 109, 128, 106, 113, 132, 100, 108, 128, 94, 105, 123, 95, 108, 126, 98, 112, 130, + 102, 118, 135, 108, 125, 141, 109, 128, 145, 117, 137, 154, 127, 146, 162, 134, 153, 168, 134, 154, 168, 136, 157, 169, 143, 163, 174, 161, 179, 187, 143, 164, 174, 129, 151, 163, 125, 147, 158, 131, 152, 163, 150, 169, 177, 151, 169, 176, 159, 177, 184, 163, 181, 187, 156, 175, 181, 164, 182, 187, 158, 179, 185, + 173, 190, 197, 185, 198, 203, 184, 199, 205, 181, 200, 205, 185, 203, 208, 188, 206, 209, 191, 207, 211, 188, 204, 209, 184, 201, 207, 188, 203, 209, 185, 201, 207, 177, 195, 201, 174, 193, 200, 172, 191, 198, 179, 195, 201, 172, 191, 197, 168, 188, 195, 173, 192, 198, 162, 185, 192, 172, 191, 198, 181, 198, 204, + 180, 198, 202, 182, 199, 205, 172, 193, 199, 182, 199, 205, 172, 193, 201, 184, 200, 207, 183, 201, 206, 184, 202, 208, 192, 208, 213, 185, 203, 208, 187, 203, 209, 177, 196, 204, 175, 194, 203, 166, 187, 198, 171, 190, 199, 158, 181, 191, 172, 190, 198, 173, 192, 200, 178, 195, 203, 167, 186, 195, 182, 198, 205, + 193, 205, 211, 166, 189, 195, 185, 203, 205, 176, 194, 201, 161, 181, 189, 151, 174, 184, 172, 188, 196, 143, 165, 175, 134, 158, 169, 107, 134, 147, 95, 118, 133, 96, 118, 130, 77, 99, 113, 86, 103, 116, 52, 76, 89, 61, 78, 90, 46, 63, 74, 38, 55, 67, 53, 68, 78, 49, 63, 73, 44, 59, 67, + 25, 42, 48, 9, 26, 33, 32, 47, 54, 17, 32, 39, 5, 18, 26, 42, 51, 58, 24, 37, 45, 57, 68, 76, 5, 18, 27, 13, 29, 38, 25, 41, 53, 56, 72, 85, 59, 76, 88, 40, 58, 71, 20, 43, 58, 49, 68, 80, 45, 66, 80, 59, 81, 96, 58, 81, 96, 48, 70, 89, 61, 80, 98, + 62, 82, 99, 49, 72, 90, 67, 87, 106, 65, 86, 104, 51, 73, 93, 90, 106, 124, 42, 62, 88, 60, 77, 100, 65, 80, 104, 51, 70, 93, 44, 64, 89, 30, 55, 80, 32, 55, 81, 30, 55, 81, 38, 60, 86, 40, 62, 89, 37, 59, 86, 29, 53, 80, 40, 62, 89, 33, 57, 85, 29, 54, 84, + 39, 61, 92, 42, 62, 94, 40, 61, 94, 28, 52, 87, 43, 64, 95, 35, 58, 92, 58, 80, 110, 36, 65, 97, 38, 67, 97, 42, 71, 97, 37, 67, 91, 34, 65, 85, 43, 71, 90, 52, 76, 95, 29, 53, 68, 117, 129, 136, 131, 148, 155, 158, 175, 181, 181, 194, 199, 193, 206, 210, 201, 214, 216, + 205, 217, 220, 213, 225, 227, 216, 226, 228, 222, 231, 233, 222, 231, 231, 224, 232, 232, 225, 233, 233, 229, 236, 237, 229, 237, 236, 231, 237, 236, 231, 237, 236, 233, 240, 239, 233, 241, 240, 234, 242, 242, 238, 243, 244, 239, 244, 245, 240, 246, 245, 241, 246, 247, 240, 245, 246, 240, 246, 247, 240, 245, 246, + 241, 246, 247, 241, 246, 247, 241, 246, 247, 241, 247, 246, 241, 247, 246, 240, 246, 245, 240, 246, 245, 240, 246, 245, 239, 245, 245, 240, 246, 244, 239, 245, 244, 238, 244, 243, 238, 244, 243, 238, 244, 243, 237, 243, 242, 237, 243, 242, 235, 241, 240, 233, 239, 238, 232, 238, 237, 230, 237, 236, 226, 234, 234, + 53, 16, 50, 54, 16, 52, 56, 18, 53, 55, 14, 51, 58, 18, 53, 56, 15, 52, 57, 16, 53, 59, 16, 53, 59, 16, 53, 59, 16, 53, 59, 16, 53, 60, 15, 53, 58, 15, 53, 61, 18, 56, 59, 15, 54, 61, 17, 55, 60, 16, 55, 61, 16, 55, 61, 16, 55, 62, 17, 56, 62, 17, 56, + 63, 18, 57, 62, 17, 56, 62, 16, 55, 63, 17, 56, 64, 19, 58, 63, 18, 57, 64, 18, 57, 65, 18, 57, 66, 19, 58, 65, 19, 58, 66, 20, 58, 66, 20, 59, 66, 21, 59, 65, 20, 59, 67, 22, 61, 66, 19, 58, 67, 21, 60, 68, 22, 61, 68, 19, 60, 67, 20, 60, 69, 21, 63, + 70, 21, 63, 70, 22, 63, 70, 23, 62, 70, 22, 63, 72, 23, 63, 73, 23, 64, 73, 25, 66, 73, 24, 67, 75, 25, 67, 76, 26, 69, 76, 25, 69, 76, 25, 69, 77, 25, 69, 79, 25, 70, 79, 26, 70, 79, 26, 70, 80, 26, 71, 81, 27, 72, 81, 29, 73, 81, 28, 73, 80, 26, 72, + 80, 28, 73, 80, 29, 73, 80, 29, 73, 80, 28, 72, 80, 28, 71, 80, 27, 72, 79, 25, 70, 78, 27, 71, 76, 26, 69, 77, 27, 70, 76, 28, 70, 76, 28, 70, 75, 27, 68, 75, 30, 69, 75, 30, 68, 74, 30, 67, 75, 31, 69, 74, 32, 68, 74, 34, 69, 73, 32, 69, 72, 32, 69, + 71, 31, 67, 69, 29, 65, 66, 26, 61, 66, 26, 61, 63, 23, 59, 64, 24, 59, 67, 29, 63, 70, 36, 67, 70, 39, 70, 66, 40, 70, 75, 55, 82, 117, 105, 125, 88, 75, 98, 79, 70, 92, 88, 85, 106, 100, 104, 123, 106, 113, 134, 104, 112, 132, 100, 110, 129, 104, 116, 133, 102, 116, 136, + 102, 118, 137, 111, 129, 147, 118, 136, 154, 114, 137, 154, 120, 144, 159, 132, 152, 167, 146, 165, 177, 148, 166, 177, 141, 161, 172, 146, 165, 175, 159, 177, 185, 153, 171, 179, 130, 153, 164, 130, 152, 163, 134, 155, 165, 154, 173, 180, 163, 181, 187, 175, 190, 195, 168, 184, 189, 172, 188, 191, 163, 183, 190, + 171, 188, 195, 183, 198, 203, 186, 201, 206, 185, 202, 208, 184, 202, 207, 185, 202, 207, 193, 209, 213, 189, 204, 209, 181, 198, 204, 176, 195, 201, 176, 195, 201, 170, 191, 198, 163, 185, 192, 158, 181, 189, 166, 187, 194, 173, 191, 198, 171, 191, 197, 182, 197, 203, 173, 191, 199, 168, 188, 194, 168, 188, 194, + 168, 188, 195, 173, 192, 198, 160, 182, 190, 177, 195, 203, 175, 194, 201, 165, 187, 195, 171, 191, 198, 181, 198, 205, 179, 197, 204, 179, 196, 203, 186, 201, 207, 166, 187, 196, 163, 184, 195, 158, 180, 191, 162, 184, 193, 151, 175, 186, 169, 189, 196, 175, 193, 200, 173, 192, 199, 166, 188, 196, 183, 198, 205, + 188, 202, 207, 187, 202, 208, 180, 198, 204, 180, 197, 203, 156, 178, 187, 154, 174, 184, 169, 185, 192, 145, 167, 178, 131, 157, 169, 128, 154, 168, 101, 126, 142, 69, 97, 113, 107, 128, 140, 81, 102, 115, 61, 83, 95, 74, 91, 104, 29, 48, 61, 67, 80, 92, 49, 63, 75, 91, 105, 114, 32, 51, 58, + 39, 57, 64, 10, 32, 39, 44, 62, 70, 30, 47, 56, 34, 53, 62, 30, 46, 55, 52, 65, 75, 21, 35, 45, 22, 37, 46, 46, 61, 71, 32, 48, 61, 30, 52, 66, 70, 87, 100, 50, 69, 83, 53, 73, 86, 51, 72, 85, 58, 79, 93, 79, 98, 112, 46, 71, 89, 70, 90, 107, 57, 80, 99, + 68, 87, 105, 65, 87, 103, 67, 88, 106, 81, 99, 116, 51, 73, 92, 58, 80, 98, 62, 80, 102, 38, 60, 85, 50, 68, 92, 61, 79, 100, 49, 69, 92, 52, 71, 95, 35, 57, 83, 35, 57, 83, 29, 53, 79, 41, 62, 88, 39, 60, 86, 39, 61, 87, 31, 57, 83, 49, 69, 96, 41, 63, 92, + 34, 58, 88, 38, 59, 90, 35, 55, 89, 37, 58, 93, 37, 60, 92, 49, 70, 100, 37, 62, 95, 31, 61, 94, 26, 58, 91, 38, 67, 95, 46, 74, 96, 42, 70, 93, 37, 66, 87, 54, 79, 98, 36, 58, 74, 89, 106, 114, 110, 129, 136, 162, 175, 180, 172, 187, 192, 190, 203, 206, 200, 212, 215, + 209, 221, 223, 215, 226, 228, 217, 228, 230, 216, 227, 229, 221, 230, 231, 224, 232, 234, 227, 235, 235, 226, 235, 234, 231, 237, 236, 231, 237, 236, 232, 239, 238, 234, 240, 239, 235, 242, 241, 236, 243, 242, 238, 244, 243, 240, 245, 245, 239, 244, 245, 240, 245, 246, 240, 246, 246, 241, 246, 245, 241, 247, 246, + 241, 247, 246, 241, 247, 247, 242, 247, 247, 241, 247, 246, 241, 247, 246, 241, 246, 246, 241, 247, 246, 240, 246, 245, 240, 246, 245, 240, 246, 245, 240, 246, 245, 239, 245, 244, 239, 245, 244, 239, 244, 243, 239, 245, 244, 238, 244, 243, 237, 243, 242, 234, 240, 239, 234, 240, 239, 233, 239, 238, 231, 238, 237, + 53, 16, 50, 54, 17, 52, 54, 14, 51, 56, 16, 52, 55, 14, 51, 56, 15, 52, 56, 15, 52, 59, 16, 53, 59, 17, 54, 60, 16, 54, 58, 15, 53, 60, 17, 54, 59, 16, 54, 59, 16, 53, 60, 17, 55, 59, 15, 54, 62, 17, 56, 60, 14, 54, 62, 17, 56, 62, 17, 56, 61, 15, 56, + 62, 17, 56, 64, 20, 58, 63, 18, 57, 63, 19, 57, 62, 17, 56, 64, 19, 58, 64, 18, 57, 65, 19, 58, 66, 18, 58, 65, 17, 59, 68, 20, 61, 64, 18, 59, 65, 19, 58, 65, 19, 59, 64, 19, 58, 66, 21, 59, 66, 21, 60, 68, 22, 61, 68, 21, 60, 68, 21, 60, 68, 20, 61, + 68, 20, 62, 70, 22, 63, 70, 22, 63, 69, 21, 63, 72, 23, 64, 72, 22, 64, 73, 23, 65, 72, 24, 66, 74, 25, 68, 75, 24, 68, 76, 25, 69, 76, 24, 69, 78, 25, 69, 78, 25, 69, 77, 24, 68, 79, 26, 70, 79, 26, 70, 79, 26, 71, 79, 26, 70, 79, 26, 71, 81, 28, 72, + 80, 28, 72, 81, 28, 72, 80, 28, 72, 81, 28, 72, 80, 26, 72, 79, 28, 72, 79, 25, 70, 78, 27, 70, 78, 28, 71, 78, 28, 71, 77, 27, 70, 77, 29, 71, 76, 29, 71, 76, 31, 70, 75, 30, 69, 76, 32, 70, 78, 35, 72, 76, 34, 71, 76, 35, 72, 75, 34, 72, 75, 34, 72, + 73, 32, 70, 73, 32, 69, 73, 33, 67, 69, 30, 64, 68, 29, 63, 66, 26, 60, 67, 29, 62, 70, 35, 67, 72, 40, 71, 71, 42, 72, 69, 41, 71, 72, 50, 78, 118, 107, 127, 105, 97, 118, 77, 74, 96, 93, 95, 116, 106, 111, 132, 107, 115, 136, 105, 116, 136, 114, 127, 147, 121, 136, 156, + 121, 138, 157, 122, 141, 158, 129, 148, 164, 130, 151, 166, 127, 149, 164, 127, 149, 163, 144, 163, 175, 160, 178, 186, 155, 173, 181, 145, 166, 175, 159, 176, 185, 159, 176, 184, 150, 168, 177, 139, 160, 168, 133, 155, 165, 157, 175, 182, 162, 180, 185, 170, 186, 191, 173, 189, 193, 174, 190, 195, 178, 194, 199, + 174, 192, 197, 185, 199, 204, 192, 205, 210, 184, 201, 207, 182, 200, 204, 186, 201, 206, 186, 203, 206, 184, 201, 207, 180, 197, 203, 166, 188, 195, 166, 188, 196, 161, 184, 191, 153, 176, 184, 152, 176, 184, 154, 178, 188, 168, 188, 195, 166, 187, 194, 165, 184, 192, 161, 182, 190, 167, 186, 194, 155, 178, 187, + 160, 181, 189, 162, 182, 190, 156, 177, 185, 166, 187, 194, 168, 188, 196, 157, 182, 190, 163, 186, 194, 173, 192, 199, 176, 194, 201, 172, 192, 199, 172, 192, 199, 156, 178, 188, 149, 173, 185, 144, 170, 183, 147, 171, 183, 164, 184, 193, 168, 189, 195, 170, 189, 196, 168, 188, 197, 170, 189, 197, 181, 198, 204, + 181, 198, 204, 185, 201, 206, 180, 196, 202, 178, 195, 202, 168, 186, 194, 155, 174, 184, 143, 167, 177, 148, 169, 180, 142, 166, 176, 159, 176, 186, 114, 139, 154, 79, 107, 121, 100, 124, 136, 88, 110, 123, 81, 102, 113, 73, 94, 104, 35, 57, 71, 61, 79, 91, 69, 87, 98, 75, 92, 104, 57, 76, 86, + 54, 71, 82, 27, 49, 61, 31, 49, 59, 35, 54, 62, 3, 25, 35, 15, 35, 45, 19, 39, 50, 27, 46, 58, 44, 60, 73, 21, 37, 53, 31, 47, 61, 55, 72, 86, 50, 68, 82, 78, 94, 108, 63, 83, 98, 49, 72, 88, 59, 80, 95, 53, 78, 95, 82, 103, 118, 47, 74, 93, 81, 99, 117, + 53, 76, 95, 66, 87, 104, 56, 78, 96, 85, 104, 119, 90, 108, 125, 71, 91, 109, 63, 83, 102, 44, 64, 88, 39, 59, 83, 44, 64, 87, 56, 76, 97, 55, 74, 98, 63, 80, 103, 26, 50, 77, 38, 59, 86, 24, 49, 75, 25, 50, 77, 23, 48, 75, 27, 52, 78, 33, 57, 85, 44, 65, 93, + 39, 58, 89, 29, 51, 82, 25, 50, 81, 27, 52, 82, 58, 77, 104, 30, 54, 87, 32, 58, 90, 30, 59, 91, 35, 63, 96, 42, 70, 97, 44, 73, 95, 45, 74, 96, 58, 82, 103, 47, 74, 95, 38, 60, 77, 88, 105, 113, 106, 123, 129, 93, 112, 118, 161, 175, 179, 175, 191, 194, 196, 208, 212, + 205, 218, 221, 209, 222, 224, 215, 226, 228, 220, 228, 232, 219, 229, 230, 222, 232, 233, 224, 232, 232, 226, 234, 234, 229, 236, 236, 231, 237, 237, 231, 237, 238, 233, 239, 239, 235, 241, 240, 237, 243, 242, 238, 244, 243, 239, 244, 244, 239, 244, 245, 240, 245, 246, 240, 246, 245, 241, 247, 246, 241, 247, 246, + 242, 248, 247, 240, 246, 246, 241, 246, 246, 242, 248, 247, 241, 247, 246, 240, 246, 245, 241, 247, 247, 241, 247, 246, 240, 246, 246, 241, 247, 246, 241, 247, 246, 241, 247, 246, 240, 246, 245, 239, 245, 244, 239, 245, 244, 238, 244, 243, 236, 242, 241, 235, 241, 240, 234, 240, 239, 234, 240, 239, 233, 239, 238, + 53, 15, 51, 53, 15, 50, 55, 14, 51, 55, 14, 51, 55, 14, 51, 57, 16, 53, 58, 16, 52, 59, 16, 53, 57, 14, 52, 59, 16, 53, 58, 15, 53, 60, 17, 54, 59, 16, 53, 60, 16, 53, 60, 16, 55, 61, 16, 55, 60, 15, 54, 61, 16, 55, 62, 18, 56, 62, 17, 56, 64, 18, 57, + 63, 18, 57, 62, 17, 56, 62, 17, 56, 64, 19, 58, 64, 19, 58, 64, 17, 56, 65, 18, 57, 65, 18, 57, 66, 19, 58, 66, 18, 59, 65, 17, 60, 66, 20, 60, 66, 21, 60, 66, 21, 60, 66, 20, 59, 64, 18, 58, 67, 22, 61, 67, 20, 59, 67, 20, 60, 67, 20, 60, 69, 21, 61, + 68, 20, 62, 69, 21, 62, 69, 21, 63, 70, 22, 63, 71, 23, 64, 71, 21, 63, 71, 23, 65, 73, 23, 66, 74, 26, 67, 75, 24, 68, 75, 24, 68, 76, 25, 69, 78, 26, 70, 79, 26, 69, 78, 26, 70, 79, 26, 69, 79, 26, 70, 79, 26, 70, 79, 26, 70, 80, 27, 71, 79, 26, 70, + 80, 28, 72, 80, 27, 72, 81, 27, 73, 81, 28, 74, 80, 26, 73, 79, 28, 72, 79, 27, 71, 78, 27, 70, 77, 26, 69, 77, 26, 70, 77, 29, 72, 75, 26, 70, 77, 29, 71, 77, 30, 69, 77, 32, 70, 76, 31, 69, 75, 30, 69, 75, 31, 71, 77, 36, 74, 77, 35, 73, 75, 37, 75, + 74, 33, 71, 75, 36, 72, 75, 36, 72, 72, 35, 69, 71, 33, 65, 66, 30, 62, 63, 28, 60, 65, 31, 64, 71, 39, 71, 74, 45, 74, 74, 47, 75, 73, 48, 76, 73, 56, 82, 111, 104, 124, 111, 108, 128, 91, 92, 113, 106, 110, 134, 113, 121, 143, 117, 128, 148, 125, 136, 155, 130, 144, 162, + 131, 147, 164, 133, 149, 166, 141, 158, 172, 143, 161, 174, 144, 163, 175, 144, 162, 175, 144, 164, 175, 159, 176, 185, 159, 176, 184, 159, 175, 183, 159, 177, 184, 155, 172, 180, 164, 180, 187, 155, 173, 180, 148, 168, 175, 150, 169, 176, 163, 179, 185, 162, 181, 186, 175, 191, 194, 179, 195, 199, 183, 197, 202, + 178, 194, 200, 185, 200, 203, 187, 202, 207, 189, 204, 208, 183, 199, 204, 188, 202, 207, 183, 199, 205, 176, 195, 202, 179, 197, 204, 167, 188, 196, 153, 179, 187, 155, 178, 185, 157, 179, 186, 156, 177, 185, 155, 176, 185, 169, 187, 194, 162, 183, 191, 164, 184, 192, 167, 185, 193, 151, 174, 184, 155, 176, 186, + 152, 174, 183, 156, 175, 184, 156, 175, 184, 154, 175, 183, 157, 179, 188, 159, 181, 191, 155, 178, 186, 164, 186, 194, 166, 187, 195, 162, 184, 192, 165, 186, 194, 157, 177, 187, 147, 170, 180, 137, 163, 174, 134, 164, 176, 172, 189, 196, 162, 183, 192, 163, 184, 191, 140, 169, 180, 184, 199, 205, 179, 196, 202, + 173, 191, 198, 177, 194, 200, 173, 190, 198, 189, 202, 208, 178, 193, 200, 158, 178, 186, 123, 152, 165, 162, 180, 188, 144, 167, 177, 147, 168, 177, 135, 157, 166, 92, 121, 134, 141, 158, 168, 97, 120, 134, 57, 87, 100, 83, 107, 119, 60, 86, 98, 55, 79, 92, 70, 92, 103, 74, 98, 109, 86, 107, 119, + 57, 78, 90, 41, 65, 78, 14, 37, 47, 39, 58, 67, 35, 53, 65, 15, 37, 47, 15, 36, 47, 63, 79, 89, 47, 57, 70, 61, 74, 87, 54, 69, 82, 25, 44, 57, 16, 41, 55, 21, 44, 60, 42, 64, 80, 73, 92, 106, 63, 86, 101, 66, 89, 105, 62, 87, 102, 106, 124, 138, 63, 87, 104, + 66, 88, 106, 68, 90, 107, 84, 105, 121, 62, 86, 104, 87, 109, 124, 80, 102, 118, 70, 93, 111, 58, 76, 97, 44, 63, 86, 58, 74, 96, 64, 81, 103, 72, 88, 110, 67, 85, 107, 84, 98, 119, 76, 93, 112, 63, 78, 101, 52, 70, 94, 50, 69, 92, 54, 72, 96, 39, 58, 86, 29, 50, 79, + 42, 62, 90, 36, 56, 85, 25, 49, 79, 61, 78, 104, 26, 53, 81, 30, 56, 85, 33, 57, 89, 34, 60, 91, 23, 55, 86, 30, 62, 89, 47, 74, 99, 55, 83, 105, 51, 81, 102, 54, 81, 103, 25, 52, 70, 65, 84, 94, 117, 132, 139, 49, 75, 84, 93, 116, 124, 190, 201, 204, 197, 209, 212, + 196, 211, 214, 205, 218, 221, 206, 219, 222, 209, 222, 224, 217, 228, 229, 223, 232, 232, 223, 232, 232, 225, 233, 233, 228, 236, 236, 229, 235, 236, 233, 238, 238, 235, 240, 240, 234, 241, 240, 235, 241, 240, 236, 242, 241, 238, 244, 244, 239, 244, 245, 240, 246, 245, 240, 246, 245, 241, 247, 246, 241, 247, 246, + 241, 247, 246, 241, 247, 246, 241, 247, 246, 241, 247, 246, 241, 247, 246, 241, 247, 247, 241, 247, 247, 241, 247, 246, 241, 247, 246, 241, 247, 246, 241, 247, 246, 240, 246, 245, 240, 246, 245, 239, 245, 244, 239, 244, 243, 237, 243, 242, 237, 243, 242, 235, 241, 240, 235, 241, 240, 234, 240, 239, 234, 240, 239, + 53, 15, 51, 56, 16, 53, 55, 17, 51, 55, 14, 51, 56, 15, 51, 56, 16, 52, 57, 16, 53, 58, 16, 54, 58, 15, 52, 60, 16, 54, 59, 16, 53, 59, 16, 53, 59, 16, 53, 59, 16, 53, 59, 15, 54, 59, 15, 54, 62, 17, 56, 60, 15, 54, 61, 17, 56, 62, 17, 56, 62, 17, 56, + 62, 17, 56, 62, 17, 56, 62, 17, 56, 64, 19, 58, 64, 18, 57, 64, 17, 56, 64, 17, 56, 65, 18, 57, 65, 18, 57, 65, 18, 58, 67, 19, 59, 65, 19, 59, 66, 20, 59, 64, 20, 58, 64, 18, 57, 66, 21, 60, 66, 21, 60, 67, 20, 59, 67, 20, 59, 68, 21, 60, 68, 20, 62, + 68, 21, 61, 70, 21, 63, 70, 20, 62, 70, 20, 62, 72, 21, 64, 73, 23, 64, 74, 24, 65, 73, 23, 65, 73, 24, 66, 75, 22, 66, 75, 24, 68, 76, 23, 67, 77, 24, 69, 78, 25, 69, 79, 26, 70, 81, 29, 72, 79, 26, 70, 78, 25, 69, 79, 27, 70, 79, 26, 70, 79, 26, 70, + 81, 28, 72, 80, 27, 71, 80, 26, 73, 81, 29, 75, 80, 27, 74, 80, 27, 73, 79, 27, 72, 79, 29, 71, 78, 28, 71, 76, 27, 71, 76, 27, 71, 76, 27, 71, 77, 31, 70, 75, 27, 68, 77, 31, 71, 79, 35, 73, 78, 34, 73, 77, 36, 74, 76, 37, 72, 74, 37, 72, 74, 36, 71, + 74, 37, 73, 74, 37, 73, 72, 35, 70, 92, 60, 91, 100, 71, 97, 101, 73, 97, 100, 73, 96, 104, 76, 101, 105, 79, 105, 103, 78, 104, 102, 78, 103, 106, 85, 107, 111, 94, 116, 111, 101, 121, 133, 132, 149, 142, 143, 157, 116, 122, 138, 106, 116, 133, 106, 118, 137, 120, 131, 150, 126, 141, 159, + 132, 148, 163, 138, 153, 167, 140, 156, 169, 146, 161, 173, 153, 168, 180, 157, 173, 182, 155, 170, 180, 159, 173, 183, 163, 178, 185, 162, 176, 184, 165, 179, 186, 169, 183, 190, 169, 184, 190, 159, 177, 183, 164, 180, 186, 157, 174, 181, 161, 178, 184, 167, 182, 188, 169, 186, 193, 174, 190, 196, 184, 199, 202, + 179, 194, 200, 179, 195, 201, 184, 199, 205, 190, 205, 208, 186, 201, 206, 172, 191, 197, 176, 193, 199, 171, 191, 198, 168, 189, 198, 168, 187, 195, 156, 176, 183, 140, 164, 174, 147, 169, 178, 142, 167, 176, 144, 169, 179, 160, 181, 188, 167, 186, 193, 145, 170, 179, 164, 183, 190, 145, 169, 178, 160, 179, 187, + 156, 175, 185, 144, 167, 178, 148, 169, 179, 159, 177, 187, 146, 169, 180, 149, 172, 182, 157, 177, 186, 153, 175, 183, 168, 187, 195, 156, 180, 188, 161, 183, 191, 148, 171, 181, 133, 160, 173, 127, 156, 169, 133, 161, 173, 167, 186, 193, 161, 182, 190, 174, 191, 198, 128, 161, 173, 167, 186, 194, 176, 194, 201, + 178, 195, 200, 172, 191, 198, 170, 189, 196, 184, 200, 205, 169, 188, 195, 166, 184, 191, 138, 163, 172, 156, 176, 184, 136, 160, 170, 139, 163, 171, 144, 166, 174, 143, 164, 174, 98, 128, 142, 123, 145, 157, 97, 123, 134, 93, 117, 128, 51, 77, 90, 84, 105, 116, 75, 98, 109, 70, 95, 106, 75, 100, 113, + 95, 118, 130, 68, 90, 102, 11, 34, 45, 65, 79, 88, 0, 21, 31, 57, 71, 79, 50, 67, 77, 42, 58, 67, 30, 45, 58, 42, 58, 70, 20, 39, 52, 22, 41, 54, 46, 63, 77, 24, 46, 61, 38, 61, 76, 48, 71, 86, 50, 74, 90, 76, 98, 113, 84, 105, 120, 66, 90, 106, 84, 106, 121, + 79, 103, 118, 69, 95, 110, 44, 74, 93, 74, 97, 114, 79, 102, 119, 85, 109, 124, 77, 102, 118, 58, 78, 96, 39, 58, 82, 31, 52, 77, 34, 55, 80, 20, 44, 71, 33, 54, 79, 54, 70, 93, 50, 67, 88, 67, 83, 104, 77, 91, 111, 60, 77, 99, 20, 43, 69, 30, 51, 80, 31, 52, 81, + 50, 66, 94, 32, 53, 83, 38, 57, 86, 25, 49, 79, 23, 48, 78, 29, 53, 83, 30, 55, 83, 26, 54, 83, 23, 53, 82, 39, 66, 94, 50, 76, 101, 46, 78, 100, 49, 80, 102, 41, 72, 95, 37, 60, 78, 61, 80, 91, 121, 136, 145, 44, 72, 84, 69, 94, 105, 149, 166, 172, 184, 200, 205, + 194, 208, 212, 198, 213, 216, 206, 219, 221, 208, 222, 224, 210, 223, 225, 213, 225, 227, 221, 231, 230, 224, 233, 232, 226, 234, 234, 227, 235, 235, 228, 235, 235, 230, 238, 237, 235, 241, 240, 235, 241, 240, 236, 242, 241, 238, 244, 243, 241, 246, 246, 241, 247, 246, 241, 247, 246, 241, 247, 246, 241, 247, 246, + 241, 247, 246, 241, 247, 246, 241, 247, 246, 241, 247, 246, 241, 247, 246, 241, 247, 246, 242, 247, 247, 241, 247, 246, 240, 246, 245, 240, 246, 246, 240, 246, 245, 240, 246, 245, 240, 246, 245, 239, 245, 244, 238, 244, 243, 238, 244, 243, 237, 243, 242, 237, 243, 242, 235, 241, 240, 234, 240, 240, 234, 240, 239, + 53, 15, 50, 56, 18, 54, 54, 14, 50, 56, 17, 52, 56, 15, 50, 57, 17, 52, 57, 16, 52, 56, 14, 51, 58, 15, 53, 58, 15, 52, 58, 15, 52, 59, 16, 53, 60, 17, 53, 59, 15, 53, 60, 16, 53, 60, 17, 54, 60, 16, 54, 61, 17, 55, 61, 17, 56, 62, 17, 56, 63, 18, 57, + 62, 17, 56, 62, 17, 56, 63, 18, 57, 63, 17, 56, 64, 18, 57, 64, 17, 56, 65, 18, 57, 66, 19, 58, 64, 17, 56, 65, 17, 57, 65, 18, 58, 65, 18, 57, 66, 21, 60, 65, 18, 58, 64, 19, 58, 65, 20, 59, 64, 18, 57, 67, 20, 59, 68, 21, 60, 67, 20, 59, 69, 22, 61, + 70, 19, 61, 70, 20, 62, 72, 24, 65, 71, 21, 63, 72, 22, 63, 73, 23, 63, 73, 23, 64, 73, 23, 65, 75, 25, 67, 76, 26, 68, 76, 23, 67, 77, 23, 68, 77, 24, 68, 79, 26, 70, 79, 26, 70, 80, 26, 72, 78, 26, 70, 80, 27, 71, 79, 26, 70, 79, 26, 70, 80, 27, 70, + 82, 29, 72, 79, 25, 70, 80, 27, 72, 81, 27, 74, 80, 28, 74, 78, 26, 73, 79, 28, 72, 79, 30, 72, 77, 29, 71, 77, 29, 73, 76, 29, 71, 75, 29, 71, 76, 30, 70, 75, 29, 69, 74, 28, 68, 74, 29, 68, 74, 30, 69, 74, 34, 71, 74, 36, 71, 74, 37, 72, 73, 37, 72, + 86, 53, 85, 109, 80, 107, 108, 79, 107, 89, 59, 88, 78, 47, 76, 75, 44, 73, 74, 43, 72, 72, 40, 70, 72, 41, 72, 75, 47, 77, 74, 46, 76, 73, 47, 73, 74, 50, 76, 79, 59, 82, 83, 71, 93, 110, 109, 123, 148, 152, 163, 125, 133, 146, 122, 133, 145, 119, 130, 144, 122, 134, 148, + 133, 146, 159, 143, 155, 167, 148, 161, 172, 151, 165, 177, 152, 165, 177, 157, 170, 180, 163, 175, 185, 164, 176, 186, 167, 179, 187, 162, 176, 183, 165, 180, 186, 179, 192, 197, 174, 189, 194, 174, 188, 193, 164, 180, 186, 169, 185, 190, 160, 177, 184, 167, 183, 189, 166, 182, 188, 170, 188, 194, 181, 195, 200, + 174, 191, 197, 174, 191, 197, 175, 192, 198, 184, 198, 204, 189, 202, 205, 176, 193, 198, 167, 186, 192, 169, 189, 195, 161, 183, 192, 160, 181, 189, 154, 173, 182, 143, 166, 175, 147, 169, 177, 146, 168, 177, 125, 155, 167, 156, 177, 186, 165, 182, 190, 142, 166, 177, 154, 175, 184, 141, 165, 176, 151, 171, 181, + 144, 167, 177, 139, 163, 175, 139, 163, 174, 158, 177, 185, 140, 165, 175, 132, 160, 172, 149, 172, 181, 135, 163, 174, 153, 176, 185, 148, 174, 183, 148, 174, 183, 151, 173, 182, 135, 160, 171, 122, 151, 164, 134, 160, 171, 165, 183, 191, 162, 181, 189, 136, 164, 174, 153, 175, 184, 160, 181, 190, 170, 190, 197, + 183, 199, 204, 169, 189, 196, 165, 186, 193, 178, 194, 201, 171, 190, 197, 175, 192, 198, 172, 188, 194, 134, 161, 170, 160, 179, 185, 142, 165, 173, 132, 157, 167, 127, 153, 164, 130, 153, 165, 132, 154, 165, 94, 123, 136, 95, 120, 131, 42, 70, 82, 105, 123, 132, 100, 120, 131, 46, 76, 89, 92, 115, 128, + 89, 113, 126, 96, 115, 126, 28, 52, 64, 52, 71, 82, 58, 75, 87, 31, 50, 61, 42, 60, 70, 38, 53, 64, 5, 25, 36, 27, 45, 56, 22, 40, 52, 24, 44, 56, 18, 41, 54, 35, 54, 69, 43, 65, 80, 62, 82, 97, 58, 81, 96, 51, 78, 92, 64, 88, 104, 77, 101, 114, 94, 115, 128, + 75, 100, 114, 66, 91, 108, 96, 116, 132, 94, 115, 131, 60, 86, 103, 89, 111, 127, 105, 126, 140, 80, 101, 119, 83, 101, 121, 73, 91, 112, 39, 58, 84, 27, 51, 76, 30, 53, 76, 45, 65, 86, 44, 63, 85, 61, 78, 98, 37, 58, 80, 46, 67, 89, 72, 87, 108, 74, 89, 110, 70, 85, 108, + 60, 76, 102, 59, 74, 101, 38, 58, 86, 29, 51, 81, 27, 51, 80, 13, 42, 71, 23, 49, 77, 24, 52, 81, 28, 56, 84, 35, 63, 90, 45, 74, 98, 56, 84, 107, 62, 89, 110, 48, 77, 97, 39, 61, 79, 61, 80, 92, 93, 118, 127, 42, 76, 89, 53, 85, 98, 139, 158, 164, 192, 205, 209, + 194, 208, 212, 200, 214, 218, 206, 220, 222, 209, 222, 224, 214, 226, 228, 215, 226, 228, 219, 230, 231, 222, 230, 233, 223, 231, 232, 226, 234, 234, 228, 236, 236, 229, 237, 236, 230, 238, 237, 234, 240, 239, 237, 243, 242, 238, 243, 242, 239, 245, 244, 240, 246, 245, 241, 247, 246, 241, 246, 246, 241, 247, 246, + 241, 247, 246, 241, 246, 246, 241, 247, 246, 241, 247, 246, 241, 246, 246, 241, 247, 246, 241, 247, 246, 241, 247, 246, 241, 247, 246, 240, 246, 245, 241, 247, 246, 240, 246, 245, 240, 246, 245, 240, 246, 245, 239, 245, 244, 239, 244, 243, 238, 244, 243, 237, 243, 242, 236, 242, 241, 236, 242, 241, 235, 241, 240, + 54, 15, 50, 54, 16, 51, 56, 17, 52, 56, 16, 51, 56, 17, 51, 56, 13, 50, 57, 15, 51, 58, 16, 53, 59, 17, 53, 59, 16, 53, 59, 16, 53, 60, 17, 54, 60, 18, 54, 60, 17, 54, 61, 18, 55, 61, 16, 54, 60, 16, 54, 60, 15, 54, 61, 16, 55, 61, 17, 55, 62, 16, 57, + 63, 18, 57, 63, 16, 56, 63, 17, 56, 64, 18, 57, 64, 18, 57, 65, 20, 59, 64, 19, 58, 64, 20, 58, 65, 19, 57, 66, 19, 58, 65, 19, 58, 65, 21, 60, 67, 20, 59, 66, 19, 58, 65, 20, 59, 66, 21, 60, 67, 21, 60, 67, 21, 60, 67, 21, 60, 67, 21, 60, 70, 20, 62, + 70, 20, 62, 70, 20, 62, 72, 22, 64, 71, 21, 62, 71, 21, 62, 73, 20, 62, 75, 22, 65, 75, 22, 65, 75, 25, 67, 76, 25, 67, 78, 24, 67, 77, 24, 67, 78, 25, 68, 78, 24, 69, 80, 27, 71, 80, 26, 72, 79, 26, 70, 79, 26, 70, 79, 27, 71, 82, 29, 72, 81, 28, 71, + 81, 28, 71, 79, 26, 70, 80, 27, 70, 80, 26, 73, 80, 28, 74, 78, 27, 73, 80, 31, 74, 77, 30, 71, 76, 28, 70, 81, 35, 77, 91, 47, 85, 91, 47, 86, 95, 55, 89, 94, 54, 88, 94, 56, 90, 95, 60, 92, 95, 61, 93, 96, 64, 95, 91, 61, 91, 118, 91, 116, 127, 100, 125, + 107, 79, 104, 82, 50, 80, 76, 44, 77, 75, 43, 75, 77, 46, 76, 79, 49, 78, 77, 47, 75, 81, 52, 78, 82, 53, 81, 87, 61, 88, 90, 66, 92, 88, 65, 89, 87, 66, 90, 88, 70, 92, 94, 82, 102, 95, 90, 103, 116, 118, 129, 153, 159, 167, 118, 127, 138, 117, 127, 138, 133, 143, 154, + 148, 158, 168, 152, 162, 172, 158, 169, 178, 162, 173, 183, 163, 175, 185, 161, 174, 184, 165, 177, 186, 168, 180, 189, 172, 183, 191, 166, 179, 187, 156, 174, 181, 175, 189, 195, 180, 192, 197, 177, 191, 195, 166, 183, 189, 176, 190, 194, 160, 178, 184, 163, 180, 187, 169, 184, 191, 165, 184, 189, 185, 198, 204, + 177, 194, 200, 175, 191, 197, 172, 190, 196, 179, 194, 200, 186, 199, 203, 179, 194, 200, 170, 189, 194, 167, 186, 193, 150, 175, 184, 160, 181, 190, 150, 170, 180, 147, 168, 177, 140, 163, 172, 144, 167, 176, 120, 152, 162, 155, 174, 182, 162, 181, 188, 146, 168, 178, 148, 170, 178, 133, 159, 170, 146, 169, 179, + 148, 170, 180, 139, 163, 174, 132, 158, 169, 148, 169, 179, 139, 163, 175, 126, 154, 167, 137, 162, 174, 140, 165, 176, 142, 167, 178, 137, 163, 173, 131, 160, 171, 139, 162, 173, 120, 149, 161, 119, 148, 161, 123, 152, 163, 171, 187, 194, 142, 166, 176, 141, 167, 177, 146, 168, 179, 150, 172, 182, 161, 181, 189, + 185, 200, 206, 170, 189, 196, 165, 186, 193, 162, 184, 191, 170, 190, 195, 165, 185, 190, 167, 185, 189, 160, 180, 185, 172, 188, 193, 131, 158, 167, 164, 180, 188, 154, 173, 181, 135, 157, 168, 100, 130, 143, 124, 148, 158, 97, 123, 131, 67, 94, 105, 120, 137, 145, 69, 94, 106, 54, 83, 97, 93, 117, 130, + 94, 119, 131, 108, 129, 141, 35, 59, 71, 58, 77, 90, 58, 79, 92, 63, 81, 92, 70, 88, 97, 19, 39, 50, 43, 58, 68, 18, 38, 49, 24, 41, 54, 27, 46, 58, 16, 39, 54, 33, 55, 69, 43, 64, 79, 50, 72, 86, 68, 89, 104, 77, 98, 112, 51, 80, 94, 69, 94, 108, 74, 98, 112, + 51, 80, 96, 86, 108, 123, 93, 116, 130, 67, 90, 108, 77, 98, 115, 69, 92, 109, 65, 91, 108, 102, 122, 137, 111, 131, 148, 88, 110, 129, 79, 98, 117, 80, 98, 113, 104, 118, 132, 80, 96, 111, 72, 89, 106, 63, 80, 100, 59, 77, 98, 50, 70, 91, 61, 81, 102, 52, 73, 95, 50, 71, 95, + 45, 66, 91, 45, 66, 91, 48, 65, 93, 50, 66, 93, 40, 58, 85, 42, 60, 88, 26, 50, 78, 28, 52, 80, 23, 50, 78, 31, 59, 87, 47, 76, 100, 49, 79, 103, 61, 88, 110, 44, 72, 94, 44, 63, 80, 65, 82, 94, 85, 111, 122, 60, 92, 105, 60, 92, 104, 124, 146, 154, 180, 197, 202, + 193, 207, 212, 200, 214, 217, 207, 219, 222, 212, 224, 226, 213, 225, 228, 216, 228, 230, 218, 229, 231, 221, 231, 232, 223, 233, 233, 225, 233, 233, 227, 235, 235, 228, 236, 235, 229, 237, 236, 229, 237, 236, 232, 240, 239, 235, 241, 240, 237, 243, 242, 238, 244, 243, 240, 246, 245, 240, 246, 245, 241, 247, 246, + 241, 247, 246, 241, 247, 246, 242, 248, 247, 241, 247, 246, 241, 247, 246, 241, 247, 246, 241, 247, 246, 241, 247, 246, 240, 246, 245, 240, 246, 245, 240, 246, 245, 240, 246, 245, 240, 246, 245, 240, 246, 245, 239, 245, 244, 239, 245, 244, 238, 244, 243, 238, 244, 243, 236, 242, 241, 236, 242, 241, 235, 241, 240, + 54, 16, 51, 52, 13, 49, 55, 15, 51, 55, 15, 50, 55, 15, 50, 56, 16, 52, 57, 15, 52, 57, 14, 51, 59, 16, 53, 57, 14, 51, 60, 16, 54, 59, 15, 53, 60, 17, 54, 58, 15, 52, 58, 15, 52, 60, 17, 54, 61, 17, 54, 61, 17, 54, 62, 17, 55, 62, 17, 56, 62, 17, 56, + 64, 16, 56, 65, 18, 57, 63, 16, 55, 63, 16, 55, 64, 18, 57, 63, 18, 56, 63, 19, 56, 63, 17, 56, 65, 20, 58, 64, 19, 56, 66, 19, 57, 67, 20, 59, 66, 21, 60, 66, 19, 59, 68, 21, 60, 66, 18, 60, 66, 20, 60, 67, 21, 60, 67, 20, 59, 68, 21, 60, 70, 21, 63, + 70, 21, 63, 71, 22, 64, 72, 23, 64, 72, 22, 64, 72, 22, 63, 75, 23, 63, 74, 23, 64, 74, 21, 65, 74, 23, 66, 76, 23, 66, 77, 24, 67, 77, 25, 67, 78, 25, 68, 79, 27, 70, 80, 27, 71, 80, 27, 71, 80, 29, 73, 82, 31, 74, 82, 28, 72, 82, 28, 72, 82, 30, 72, + 82, 30, 72, 81, 28, 72, 82, 30, 73, 78, 26, 71, 76, 25, 70, 88, 41, 83, 101, 56, 94, 95, 52, 90, 98, 55, 92, 86, 42, 81, 83, 37, 78, 77, 31, 73, 77, 32, 72, 77, 33, 71, 77, 33, 72, 75, 35, 72, 69, 29, 66, 89, 54, 87, 115, 86, 113, 82, 48, 81, 79, 43, 76, + 86, 52, 84, 99, 69, 97, 110, 81, 108, 112, 86, 113, 104, 77, 104, 87, 60, 86, 81, 52, 78, 86, 58, 84, 87, 61, 87, 91, 67, 93, 95, 74, 98, 99, 82, 104, 102, 85, 106, 103, 88, 108, 104, 93, 111, 106, 101, 115, 113, 115, 126, 133, 138, 148, 164, 170, 178, 141, 149, 159, 143, 152, 162, + 147, 157, 167, 163, 172, 181, 170, 181, 189, 173, 184, 192, 170, 181, 189, 170, 181, 189, 169, 182, 190, 170, 182, 190, 174, 185, 193, 175, 188, 194, 162, 178, 185, 164, 181, 187, 185, 197, 201, 182, 196, 199, 172, 188, 192, 176, 190, 194, 173, 187, 192, 158, 177, 183, 170, 186, 192, 165, 186, 190, 185, 199, 205, + 177, 193, 200, 169, 187, 194, 167, 185, 192, 179, 194, 199, 177, 193, 198, 178, 193, 198, 172, 188, 195, 160, 181, 187, 160, 180, 187, 155, 175, 184, 144, 165, 175, 160, 177, 185, 138, 161, 172, 144, 166, 176, 128, 156, 166, 160, 179, 186, 162, 180, 188, 142, 166, 175, 147, 169, 177, 129, 156, 167, 129, 156, 168, + 146, 167, 177, 134, 160, 171, 140, 164, 173, 122, 152, 163, 128, 155, 165, 125, 152, 164, 129, 155, 167, 138, 162, 174, 128, 156, 167, 132, 158, 169, 127, 153, 164, 129, 155, 166, 118, 146, 159, 105, 137, 152, 124, 151, 162, 170, 187, 195, 130, 157, 169, 161, 180, 188, 147, 170, 180, 146, 169, 178, 155, 177, 186, + 174, 192, 198, 177, 193, 200, 149, 177, 185, 166, 187, 194, 161, 182, 189, 175, 192, 197, 176, 194, 197, 168, 186, 192, 172, 189, 195, 167, 184, 191, 149, 171, 180, 157, 175, 183, 136, 157, 168, 109, 138, 149, 144, 162, 172, 133, 154, 163, 64, 96, 108, 96, 121, 132, 99, 119, 131, 72, 97, 110, 83, 107, 120, + 133, 151, 162, 112, 132, 144, 30, 57, 72, 59, 82, 96, 75, 94, 108, 100, 118, 128, 45, 65, 78, 42, 61, 74, 64, 79, 91, 36, 54, 68, 37, 57, 69, 59, 75, 87, 38, 59, 72, 38, 61, 75, 50, 71, 86, 57, 79, 94, 64, 85, 100, 94, 114, 127, 85, 111, 125, 93, 117, 130, 45, 76, 92, + 86, 108, 122, 70, 96, 111, 62, 88, 106, 72, 94, 110, 57, 79, 98, 49, 71, 90, 46, 65, 85, 44, 64, 85, 77, 100, 120, 103, 122, 140, 91, 110, 128, 82, 99, 115, 86, 101, 115, 79, 93, 110, 84, 99, 116, 74, 90, 108, 56, 75, 95, 75, 92, 112, 61, 80, 101, 46, 69, 91, 79, 97, 117, + 57, 78, 101, 34, 58, 83, 45, 63, 90, 48, 64, 91, 44, 61, 88, 45, 62, 89, 41, 58, 86, 37, 57, 84, 25, 48, 76, 34, 60, 86, 44, 73, 97, 49, 79, 102, 66, 93, 114, 46, 72, 92, 34, 58, 74, 109, 124, 134, 56, 88, 102, 70, 101, 113, 55, 92, 104, 139, 158, 166, 186, 200, 205, + 197, 210, 215, 196, 211, 216, 201, 214, 218, 207, 219, 223, 211, 223, 225, 213, 225, 227, 216, 228, 230, 220, 230, 233, 223, 232, 233, 225, 233, 233, 226, 234, 234, 228, 236, 235, 229, 237, 237, 229, 237, 236, 231, 238, 238, 232, 239, 239, 233, 241, 241, 236, 243, 242, 237, 243, 243, 240, 246, 245, 241, 247, 246, + 241, 247, 246, 242, 248, 247, 242, 248, 247, 242, 248, 247, 242, 248, 247, 241, 247, 246, 241, 247, 246, 241, 247, 246, 241, 247, 246, 241, 247, 246, 241, 247, 246, 241, 246, 245, 240, 246, 245, 240, 246, 245, 240, 246, 245, 239, 245, 244, 239, 245, 244, 238, 244, 243, 237, 243, 242, 236, 242, 241, 236, 242, 241, + 52, 15, 50, 54, 15, 51, 54, 16, 51, 53, 12, 49, 56, 16, 51, 57, 16, 52, 57, 17, 53, 57, 15, 52, 58, 15, 52, 59, 16, 53, 60, 17, 54, 58, 14, 53, 60, 17, 54, 60, 17, 54, 60, 16, 53, 60, 16, 53, 63, 19, 56, 60, 16, 54, 61, 16, 55, 61, 16, 55, 63, 18, 57, + 62, 17, 56, 63, 17, 56, 64, 16, 55, 65, 19, 58, 62, 18, 57, 64, 18, 57, 62, 17, 56, 64, 19, 57, 65, 18, 57, 65, 20, 58, 65, 18, 56, 66, 21, 59, 66, 19, 58, 68, 20, 59, 67, 19, 61, 67, 20, 61, 68, 21, 61, 68, 21, 60, 69, 22, 61, 70, 20, 61, 71, 22, 63, + 71, 21, 63, 71, 20, 63, 72, 23, 64, 72, 23, 64, 71, 21, 63, 74, 21, 62, 75, 25, 64, 75, 23, 65, 74, 23, 66, 76, 23, 66, 77, 25, 67, 78, 26, 68, 79, 26, 69, 79, 26, 69, 81, 28, 72, 80, 29, 72, 82, 31, 74, 82, 29, 72, 83, 31, 73, 83, 30, 72, 82, 31, 73, + 78, 28, 70, 87, 39, 80, 100, 55, 93, 100, 55, 93, 106, 62, 99, 88, 42, 81, 77, 29, 72, 76, 29, 72, 80, 32, 74, 80, 33, 75, 79, 32, 74, 81, 35, 76, 79, 34, 75, 80, 37, 78, 80, 40, 78, 76, 38, 74, 125, 96, 124, 95, 63, 93, 74, 36, 70, 78, 37, 74, 80, 43, 78, + 83, 46, 80, 83, 49, 82, 87, 54, 86, 87, 56, 87, 93, 66, 93, 105, 81, 106, 112, 90, 114, 108, 85, 109, 94, 72, 95, 91, 68, 92, 96, 76, 100, 104, 89, 110, 109, 98, 117, 115, 106, 124, 119, 110, 128, 118, 117, 131, 121, 123, 134, 134, 140, 149, 153, 162, 170, 173, 181, 188, 161, 170, 179, + 166, 175, 184, 170, 180, 188, 175, 186, 193, 178, 190, 197, 179, 190, 197, 175, 186, 193, 174, 186, 193, 173, 186, 192, 176, 188, 193, 179, 191, 197, 172, 187, 192, 159, 178, 184, 180, 195, 199, 187, 199, 203, 184, 196, 200, 176, 191, 196, 176, 190, 194, 158, 178, 184, 174, 189, 195, 174, 191, 196, 181, 197, 202, + 178, 194, 201, 180, 194, 201, 166, 185, 191, 172, 189, 194, 177, 191, 197, 173, 190, 195, 169, 187, 193, 157, 179, 186, 165, 183, 191, 157, 176, 185, 143, 165, 175, 154, 172, 181, 140, 163, 173, 149, 169, 178, 131, 159, 169, 157, 177, 184, 155, 176, 183, 143, 167, 176, 134, 158, 170, 141, 163, 174, 140, 163, 174, + 135, 159, 171, 129, 155, 168, 133, 158, 168, 125, 153, 163, 120, 149, 161, 121, 149, 162, 117, 145, 159, 130, 154, 167, 122, 149, 160, 109, 140, 153, 115, 145, 156, 118, 146, 159, 117, 145, 158, 107, 137, 151, 131, 156, 168, 166, 183, 190, 123, 154, 167, 151, 173, 182, 135, 161, 170, 160, 179, 187, 141, 167, 177, + 170, 188, 195, 178, 194, 201, 161, 183, 190, 154, 178, 186, 166, 186, 192, 166, 186, 192, 181, 196, 202, 168, 186, 192, 178, 193, 198, 164, 183, 189, 161, 180, 187, 167, 184, 190, 157, 174, 181, 142, 162, 171, 104, 132, 145, 147, 164, 174, 121, 145, 155, 103, 128, 140, 89, 113, 125, 87, 111, 124, 87, 112, 125, + 130, 149, 161, 106, 128, 142, 48, 77, 94, 83, 105, 119, 115, 131, 142, 51, 74, 88, 82, 100, 111, 52, 73, 86, 64, 83, 96, 51, 72, 85, 84, 99, 111, 65, 84, 96, 66, 86, 98, 54, 77, 90, 53, 76, 91, 70, 90, 104, 48, 73, 88, 59, 83, 98, 110, 132, 146, 83, 112, 126, 98, 123, 137, + 80, 107, 121, 82, 106, 120, 96, 118, 131, 58, 82, 97, 54, 76, 94, 65, 84, 102, 70, 88, 108, 84, 102, 120, 83, 102, 122, 64, 86, 106, 94, 113, 130, 101, 117, 132, 48, 70, 87, 46, 68, 85, 55, 75, 92, 74, 91, 109, 47, 69, 90, 37, 61, 84, 57, 80, 100, 60, 81, 102, 50, 73, 94, + 53, 76, 97, 54, 75, 98, 44, 64, 91, 43, 60, 87, 52, 67, 94, 48, 64, 91, 45, 61, 88, 42, 59, 85, 32, 53, 80, 35, 61, 85, 48, 76, 99, 50, 80, 102, 54, 84, 103, 45, 70, 90, 25, 47, 61, 83, 105, 117, 69, 99, 117, 66, 96, 114, 79, 108, 122, 143, 163, 170, 162, 180, 186, + 172, 188, 195, 177, 193, 199, 183, 199, 205, 197, 209, 214, 205, 217, 220, 211, 223, 226, 214, 226, 228, 215, 227, 229, 219, 230, 233, 224, 232, 235, 226, 234, 234, 228, 236, 236, 229, 237, 237, 229, 238, 236, 232, 238, 237, 234, 240, 239, 233, 241, 240, 237, 242, 243, 236, 243, 243, 239, 245, 244, 240, 246, 245, + 241, 247, 246, 242, 248, 247, 242, 248, 247, 242, 248, 248, 242, 248, 247, 242, 248, 247, 241, 247, 246, 241, 247, 246, 241, 247, 246, 241, 247, 246, 242, 247, 246, 241, 247, 246, 241, 247, 246, 239, 245, 244, 240, 246, 245, 239, 245, 244, 239, 245, 244, 239, 245, 244, 238, 243, 242, 238, 244, 243, 236, 242, 241, + 53, 15, 49, 56, 15, 51, 56, 16, 50, 55, 14, 51, 55, 15, 50, 55, 15, 51, 57, 16, 53, 58, 16, 53, 59, 17, 53, 59, 16, 53, 59, 16, 53, 61, 18, 55, 60, 17, 54, 60, 17, 54, 61, 17, 54, 61, 17, 54, 61, 17, 54, 61, 17, 54, 62, 17, 56, 63, 18, 57, 62, 17, 56, + 62, 17, 56, 63, 17, 57, 62, 17, 56, 63, 17, 56, 63, 18, 56, 64, 18, 56, 63, 18, 56, 64, 20, 57, 65, 18, 57, 65, 19, 57, 64, 18, 56, 65, 19, 57, 65, 19, 57, 67, 20, 59, 67, 20, 60, 67, 20, 60, 68, 21, 60, 69, 23, 62, 69, 20, 61, 71, 21, 61, 73, 23, 63, + 70, 20, 63, 72, 22, 64, 72, 23, 65, 73, 23, 65, 73, 23, 64, 72, 22, 63, 74, 24, 64, 74, 24, 65, 76, 26, 66, 74, 23, 66, 76, 25, 68, 78, 27, 69, 79, 27, 70, 79, 27, 70, 80, 28, 71, 80, 30, 72, 83, 33, 73, 80, 28, 72, 80, 28, 69, 95, 47, 85, 102, 57, 93, + 104, 61, 97, 93, 47, 86, 81, 33, 74, 81, 33, 75, 79, 30, 73, 80, 32, 74, 81, 34, 75, 82, 32, 75, 83, 34, 77, 82, 35, 77, 82, 35, 75, 82, 36, 76, 82, 40, 78, 76, 36, 75, 100, 65, 98, 129, 100, 127, 79, 43, 77, 79, 41, 76, 80, 43, 77, 79, 43, 76, 80, 43, 77, + 83, 46, 79, 85, 50, 82, 88, 55, 86, 90, 60, 89, 94, 65, 94, 93, 67, 93, 92, 69, 94, 98, 77, 101, 117, 100, 121, 123, 109, 130, 116, 105, 124, 113, 102, 122, 118, 110, 130, 122, 117, 136, 130, 127, 143, 135, 136, 150, 134, 139, 150, 134, 143, 153, 144, 153, 164, 161, 172, 180, 177, 189, 195, + 173, 184, 192, 179, 190, 196, 185, 194, 201, 182, 194, 200, 181, 193, 200, 180, 193, 199, 177, 191, 198, 178, 190, 196, 179, 191, 197, 181, 193, 199, 182, 194, 200, 165, 184, 189, 168, 187, 192, 189, 201, 204, 183, 198, 201, 177, 193, 196, 179, 194, 196, 160, 179, 185, 172, 189, 193, 178, 194, 200, 182, 198, 204, + 187, 200, 206, 177, 192, 199, 166, 184, 190, 172, 187, 192, 177, 191, 196, 168, 184, 189, 160, 179, 186, 149, 171, 181, 151, 172, 180, 154, 174, 183, 129, 154, 165, 142, 163, 173, 148, 167, 177, 150, 170, 179, 133, 160, 170, 153, 174, 181, 147, 171, 178, 141, 164, 173, 130, 155, 167, 143, 164, 174, 138, 160, 172, + 140, 162, 174, 111, 142, 157, 131, 156, 166, 121, 148, 160, 116, 144, 158, 117, 145, 160, 116, 144, 158, 113, 141, 156, 121, 146, 160, 127, 151, 163, 121, 147, 159, 117, 144, 157, 126, 151, 163, 105, 137, 150, 106, 138, 152, 168, 184, 191, 136, 160, 171, 132, 158, 169, 156, 175, 182, 155, 175, 182, 149, 173, 182, + 147, 171, 179, 180, 195, 201, 175, 191, 199, 144, 170, 182, 169, 188, 194, 162, 184, 190, 163, 183, 190, 178, 193, 198, 176, 192, 197, 177, 191, 198, 157, 177, 184, 158, 178, 184, 173, 188, 194, 168, 183, 190, 124, 149, 162, 135, 156, 167, 106, 132, 145, 144, 161, 169, 129, 149, 159, 82, 113, 126, 122, 146, 157, + 116, 139, 152, 109, 132, 146, 64, 92, 111, 84, 108, 123, 106, 126, 139, 69, 95, 108, 78, 101, 114, 67, 91, 104, 90, 110, 122, 80, 104, 116, 88, 109, 120, 58, 82, 93, 87, 105, 117, 75, 96, 109, 88, 106, 120, 73, 94, 107, 51, 76, 91, 64, 87, 101, 77, 101, 117, 130, 149, 161, 84, 114, 128, + 106, 130, 144, 97, 121, 134, 96, 117, 130, 102, 122, 135, 89, 105, 122, 45, 68, 89, 25, 49, 71, 5, 36, 60, 11, 40, 64, 27, 52, 76, 40, 58, 78, 71, 88, 105, 89, 106, 121, 92, 109, 125, 58, 78, 95, 56, 77, 96, 54, 75, 95, 50, 72, 94, 42, 67, 89, 56, 78, 99, 49, 72, 94, + 59, 81, 102, 48, 72, 94, 39, 63, 89, 35, 56, 83, 45, 61, 88, 47, 62, 89, 48, 63, 91, 39, 56, 83, 40, 58, 84, 30, 56, 80, 42, 67, 90, 51, 76, 99, 54, 80, 98, 38, 61, 76, 84, 95, 107, 85, 108, 121, 64, 94, 111, 67, 96, 115, 73, 101, 115, 146, 165, 173, 150, 172, 178, + 149, 172, 178, 148, 173, 180, 162, 184, 191, 174, 193, 199, 191, 205, 210, 201, 215, 218, 208, 220, 223, 212, 224, 228, 215, 228, 229, 219, 229, 232, 223, 233, 233, 226, 235, 235, 228, 237, 236, 229, 237, 236, 231, 239, 238, 231, 238, 237, 233, 240, 239, 235, 241, 240, 236, 242, 241, 238, 243, 243, 238, 244, 243, + 240, 246, 245, 241, 247, 246, 242, 248, 247, 242, 248, 247, 242, 248, 247, 242, 248, 247, 242, 248, 247, 241, 247, 246, 241, 247, 246, 241, 247, 246, 242, 247, 246, 241, 247, 246, 241, 247, 246, 240, 247, 246, 240, 246, 245, 240, 246, 245, 239, 245, 244, 240, 245, 244, 239, 244, 243, 237, 243, 242, 236, 242, 241, + 52, 15, 49, 52, 15, 50, 54, 15, 50, 54, 15, 50, 55, 16, 51, 55, 16, 51, 56, 15, 52, 58, 16, 53, 57, 15, 52, 59, 16, 53, 59, 16, 53, 59, 16, 53, 61, 18, 55, 60, 17, 54, 59, 16, 53, 61, 17, 54, 60, 15, 54, 62, 18, 55, 61, 16, 54, 60, 15, 54, 63, 19, 57, + 62, 18, 57, 62, 16, 57, 62, 17, 56, 64, 19, 57, 63, 19, 56, 62, 17, 56, 64, 19, 57, 65, 19, 57, 66, 20, 58, 65, 20, 57, 67, 20, 58, 66, 23, 59, 67, 21, 58, 65, 18, 57, 69, 22, 61, 68, 20, 61, 69, 22, 61, 68, 23, 61, 69, 22, 61, 70, 21, 63, 70, 21, 63, + 70, 21, 63, 72, 23, 65, 71, 22, 64, 73, 23, 65, 73, 23, 64, 73, 23, 63, 73, 23, 63, 75, 25, 65, 74, 24, 66, 76, 26, 67, 77, 26, 69, 77, 23, 67, 79, 26, 69, 79, 29, 71, 80, 31, 72, 78, 28, 70, 85, 37, 77, 101, 57, 92, 99, 53, 90, 89, 42, 79, 84, 37, 76, + 83, 36, 77, 84, 37, 78, 85, 37, 78, 84, 37, 78, 84, 36, 77, 84, 37, 77, 84, 37, 76, 85, 34, 76, 84, 35, 77, 81, 32, 76, 81, 36, 76, 83, 40, 77, 76, 36, 73, 123, 94, 123, 105, 72, 103, 78, 39, 76, 83, 46, 79, 84, 50, 81, 84, 49, 80, 84, 49, 80, 83, 47, 79, + 82, 46, 77, 86, 52, 82, 90, 59, 87, 92, 63, 90, 97, 69, 95, 99, 74, 100, 102, 82, 106, 107, 89, 111, 110, 93, 114, 115, 104, 123, 127, 119, 136, 140, 135, 151, 145, 144, 158, 139, 140, 155, 143, 145, 160, 147, 153, 164, 151, 158, 169, 154, 163, 172, 154, 164, 173, 160, 172, 180, 173, 185, 191, + 180, 192, 198, 181, 193, 199, 186, 197, 203, 188, 199, 205, 183, 195, 201, 180, 194, 200, 183, 195, 201, 182, 194, 200, 183, 195, 200, 185, 197, 202, 187, 199, 203, 178, 194, 199, 167, 186, 191, 183, 197, 201, 187, 200, 203, 186, 198, 202, 177, 193, 196, 168, 185, 191, 172, 189, 195, 187, 199, 205, 188, 202, 205, + 187, 200, 205, 173, 189, 195, 166, 184, 191, 162, 179, 187, 163, 180, 186, 161, 178, 186, 153, 173, 181, 144, 167, 176, 150, 171, 179, 151, 170, 178, 133, 157, 167, 135, 158, 168, 154, 171, 181, 139, 162, 170, 133, 158, 167, 158, 176, 183, 147, 170, 177, 147, 168, 177, 133, 157, 169, 149, 167, 177, 138, 160, 172, + 148, 167, 177, 134, 159, 169, 130, 155, 164, 121, 147, 159, 111, 140, 153, 124, 149, 161, 120, 145, 158, 122, 146, 159, 108, 136, 151, 89, 122, 136, 117, 143, 156, 106, 135, 148, 112, 142, 153, 97, 131, 145, 128, 155, 166, 133, 159, 170, 138, 162, 173, 132, 158, 168, 152, 171, 179, 127, 156, 166, 164, 182, 189, + 134, 163, 174, 182, 196, 202, 167, 187, 194, 155, 177, 187, 152, 176, 185, 162, 184, 190, 161, 182, 189, 179, 195, 199, 178, 193, 197, 167, 185, 191, 153, 175, 181, 156, 178, 184, 166, 184, 190, 173, 188, 195, 153, 172, 180, 140, 160, 171, 130, 151, 163, 142, 160, 169, 107, 132, 143, 99, 128, 140, 130, 152, 162, + 138, 158, 167, 113, 137, 148, 79, 108, 125, 125, 145, 158, 92, 116, 128, 103, 124, 136, 98, 120, 132, 44, 76, 91, 107, 129, 140, 66, 95, 107, 104, 127, 137, 98, 122, 132, 102, 126, 137, 101, 124, 135, 76, 100, 113, 75, 94, 107, 69, 89, 103, 65, 87, 102, 71, 95, 110, 63, 91, 106, 128, 149, 160, + 143, 161, 171, 110, 136, 149, 94, 120, 132, 98, 121, 134, 109, 128, 144, 91, 109, 126, 80, 97, 116, 68, 85, 104, 85, 103, 122, 85, 104, 118, 96, 113, 129, 48, 70, 89, 64, 84, 102, 53, 75, 92, 54, 77, 94, 61, 81, 100, 60, 81, 100, 46, 67, 89, 56, 76, 97, 41, 65, 88, 41, 66, 89, + 45, 69, 92, 45, 70, 90, 36, 63, 85, 24, 51, 75, 28, 49, 75, 32, 51, 78, 26, 47, 73, 27, 48, 73, 28, 50, 74, 23, 47, 71, 40, 64, 86, 47, 68, 91, 42, 66, 83, 25, 51, 65, 96, 110, 120, 51, 79, 97, 61, 89, 106, 54, 86, 104, 109, 132, 143, 144, 165, 172, 160, 178, 183, + 172, 188, 194, 178, 194, 200, 176, 193, 200, 181, 198, 203, 190, 205, 210, 188, 205, 211, 189, 208, 211, 200, 215, 219, 211, 224, 225, 216, 228, 230, 222, 231, 232, 225, 234, 234, 228, 236, 235, 229, 236, 236, 231, 238, 237, 231, 239, 238, 233, 240, 238, 235, 241, 240, 236, 242, 241, 238, 243, 243, 239, 245, 244, + 240, 246, 245, 242, 248, 247, 242, 248, 247, 242, 248, 247, 242, 248, 247, 242, 248, 247, 242, 248, 247, 243, 248, 247, 243, 248, 247, 242, 248, 247, 242, 248, 247, 241, 247, 246, 241, 247, 246, 241, 247, 246, 241, 247, 246, 241, 247, 246, 240, 246, 245, 240, 245, 244, 240, 245, 244, 238, 244, 243, 238, 244, 243, + 51, 14, 48, 54, 16, 51, 55, 15, 50, 55, 15, 50, 55, 16, 51, 55, 15, 51, 57, 16, 52, 57, 14, 51, 57, 15, 52, 60, 18, 55, 58, 15, 52, 59, 16, 53, 60, 17, 54, 59, 16, 53, 60, 15, 53, 61, 18, 55, 60, 17, 54, 61, 18, 55, 61, 18, 55, 61, 17, 54, 61, 17, 55, + 62, 17, 55, 62, 17, 55, 62, 18, 55, 63, 19, 56, 63, 19, 56, 64, 19, 56, 65, 20, 57, 65, 18, 56, 65, 20, 57, 64, 20, 57, 64, 20, 56, 65, 21, 58, 67, 22, 58, 67, 20, 59, 67, 21, 60, 68, 22, 61, 68, 21, 61, 70, 23, 62, 68, 21, 61, 70, 24, 62, 71, 24, 62, + 70, 23, 62, 71, 22, 64, 71, 22, 64, 72, 22, 64, 73, 23, 65, 73, 23, 63, 74, 24, 64, 73, 23, 64, 74, 26, 66, 75, 26, 67, 76, 26, 68, 78, 28, 70, 79, 29, 71, 78, 27, 69, 87, 40, 80, 96, 51, 88, 89, 44, 81, 78, 30, 70, 84, 35, 74, 85, 37, 76, 83, 36, 75, + 86, 39, 79, 85, 37, 78, 87, 39, 80, 88, 40, 80, 84, 36, 77, 85, 36, 78, 85, 34, 76, 87, 40, 79, 85, 38, 79, 85, 40, 79, 83, 39, 78, 81, 44, 79, 125, 97, 124, 83, 49, 82, 80, 42, 78, 87, 50, 83, 88, 52, 85, 87, 54, 84, 90, 59, 88, 87, 57, 86, 90, 59, 88, + 88, 58, 86, 91, 62, 88, 94, 68, 93, 98, 73, 98, 105, 83, 106, 106, 87, 110, 113, 95, 116, 117, 104, 124, 121, 112, 131, 124, 118, 136, 127, 124, 139, 134, 136, 150, 148, 151, 164, 158, 162, 172, 158, 165, 174, 157, 165, 175, 163, 172, 181, 169, 178, 187, 172, 181, 189, 171, 181, 188, 175, 187, 193, + 182, 194, 200, 186, 197, 203, 184, 197, 202, 187, 198, 205, 188, 200, 205, 183, 196, 202, 182, 195, 201, 184, 196, 200, 185, 197, 201, 186, 199, 202, 188, 200, 204, 186, 199, 203, 175, 191, 197, 179, 196, 199, 183, 196, 201, 186, 198, 202, 187, 200, 203, 176, 192, 198, 183, 197, 202, 196, 206, 211, 190, 202, 206, + 177, 192, 197, 175, 191, 197, 166, 183, 190, 156, 175, 182, 158, 176, 184, 151, 172, 180, 157, 176, 185, 145, 168, 178, 135, 160, 170, 144, 165, 174, 137, 159, 168, 109, 138, 148, 139, 161, 168, 138, 160, 167, 131, 155, 164, 145, 167, 174, 151, 172, 179, 142, 165, 175, 138, 160, 170, 141, 162, 172, 120, 147, 160, + 127, 153, 163, 125, 152, 159, 124, 149, 157, 130, 151, 162, 120, 143, 155, 120, 144, 156, 115, 140, 154, 117, 143, 157, 116, 143, 156, 104, 134, 147, 115, 141, 153, 108, 135, 147, 116, 144, 154, 117, 147, 159, 131, 157, 169, 134, 161, 172, 169, 184, 191, 115, 145, 158, 157, 176, 183, 138, 162, 172, 153, 175, 185, + 147, 172, 182, 148, 173, 183, 162, 182, 191, 169, 187, 195, 143, 171, 180, 163, 183, 190, 174, 192, 197, 151, 175, 182, 170, 188, 194, 174, 191, 195, 157, 179, 185, 174, 191, 196, 169, 187, 193, 183, 197, 201, 180, 193, 198, 153, 171, 180, 137, 158, 168, 115, 140, 153, 153, 170, 178, 130, 152, 162, 99, 130, 142, + 137, 158, 167, 81, 113, 127, 122, 145, 157, 108, 131, 145, 104, 126, 139, 109, 129, 141, 101, 125, 136, 140, 157, 166, 103, 127, 139, 100, 126, 138, 109, 133, 143, 113, 136, 146, 112, 134, 145, 114, 135, 146, 86, 109, 120, 54, 78, 91, 82, 102, 114, 79, 98, 111, 73, 95, 110, 79, 103, 116, 68, 96, 110, + 115, 139, 151, 133, 155, 165, 120, 144, 155, 99, 123, 137, 102, 125, 140, 134, 151, 165, 98, 118, 134, 86, 110, 128, 65, 82, 97, 61, 78, 98, 48, 69, 88, 66, 86, 103, 70, 89, 105, 71, 90, 107, 64, 85, 102, 66, 87, 105, 50, 73, 94, 56, 75, 96, 52, 73, 94, 49, 73, 93, 59, 80, 101, + 43, 69, 90, 46, 71, 92, 32, 60, 82, 20, 46, 70, 20, 42, 68, 29, 49, 74, 13, 36, 61, 17, 40, 63, 29, 51, 74, 22, 46, 69, 41, 63, 85, 42, 63, 85, 47, 67, 84, 44, 66, 80, 63, 81, 94, 40, 71, 91, 46, 76, 95, 100, 122, 137, 113, 134, 145, 150, 169, 176, 158, 177, 183, + 162, 182, 187, 175, 192, 197, 184, 198, 204, 183, 199, 204, 193, 208, 211, 199, 214, 216, 204, 216, 220, 207, 220, 223, 206, 220, 223, 211, 224, 226, 215, 227, 229, 220, 230, 231, 224, 234, 234, 228, 236, 236, 230, 238, 237, 231, 238, 237, 233, 240, 239, 234, 240, 239, 235, 241, 240, 238, 244, 243, 239, 245, 244, + 241, 247, 246, 241, 247, 246, 242, 248, 247, 242, 248, 247, 242, 248, 247, 242, 248, 247, 242, 248, 247, 243, 248, 247, 243, 248, 247, 242, 249, 248, 242, 248, 247, 242, 248, 247, 242, 248, 247, 241, 247, 246, 242, 247, 246, 241, 247, 246, 240, 246, 245, 239, 245, 244, 239, 245, 244, 238, 244, 244, 238, 244, 243, + 52, 16, 50, 53, 15, 49, 54, 16, 51, 54, 14, 49, 55, 15, 50, 55, 16, 50, 55, 14, 51, 57, 16, 52, 57, 15, 52, 60, 17, 54, 60, 17, 54, 60, 17, 54, 58, 15, 53, 59, 16, 53, 60, 17, 54, 61, 17, 55, 59, 16, 54, 60, 16, 55, 61, 18, 55, 61, 17, 54, 62, 18, 55, + 62, 18, 55, 61, 18, 55, 63, 19, 56, 63, 18, 55, 63, 19, 56, 65, 19, 57, 64, 18, 56, 65, 20, 57, 65, 20, 57, 65, 21, 58, 65, 21, 57, 66, 22, 59, 66, 21, 59, 67, 22, 59, 67, 22, 60, 67, 23, 62, 68, 22, 61, 69, 23, 62, 70, 23, 63, 71, 24, 63, 70, 23, 62, + 70, 23, 61, 70, 23, 64, 71, 22, 64, 72, 25, 66, 72, 23, 65, 73, 22, 65, 73, 24, 64, 73, 24, 65, 73, 24, 66, 74, 25, 67, 75, 27, 69, 75, 25, 68, 87, 41, 79, 97, 53, 90, 80, 31, 72, 78, 27, 69, 82, 35, 73, 82, 34, 73, 82, 33, 73, 84, 36, 75, 85, 39, 77, + 85, 39, 78, 87, 40, 79, 88, 42, 81, 88, 40, 80, 88, 39, 80, 87, 40, 80, 86, 38, 80, 86, 39, 80, 84, 38, 79, 83, 38, 77, 91, 55, 90, 108, 78, 107, 79, 44, 78, 82, 46, 80, 87, 52, 83, 89, 54, 85, 87, 54, 85, 91, 63, 93, 92, 65, 94, 96, 70, 97, 97, 72, 98, + 100, 76, 101, 101, 78, 102, 101, 80, 103, 104, 86, 107, 110, 94, 113, 115, 100, 120, 122, 109, 127, 128, 118, 138, 131, 126, 142, 137, 136, 152, 142, 144, 157, 149, 152, 163, 155, 161, 171, 159, 166, 175, 164, 172, 181, 172, 180, 188, 172, 182, 190, 175, 185, 192, 178, 188, 194, 179, 190, 197, 180, 192, 198, + 183, 195, 201, 184, 196, 202, 187, 199, 205, 186, 199, 205, 188, 199, 205, 186, 199, 205, 181, 195, 201, 181, 195, 200, 187, 199, 203, 186, 199, 202, 190, 202, 206, 188, 199, 204, 185, 198, 203, 182, 196, 202, 186, 201, 204, 181, 196, 202, 188, 200, 206, 189, 201, 206, 187, 200, 206, 188, 201, 205, 178, 193, 199, + 183, 196, 201, 172, 187, 194, 156, 176, 183, 164, 181, 188, 154, 174, 181, 148, 169, 178, 144, 166, 175, 144, 165, 174, 132, 156, 168, 130, 154, 165, 132, 156, 165, 114, 141, 150, 131, 153, 161, 137, 158, 165, 134, 158, 165, 142, 165, 172, 150, 171, 177, 121, 149, 161, 122, 150, 162, 142, 162, 173, 137, 159, 168, + 121, 148, 158, 124, 150, 159, 125, 150, 158, 120, 143, 154, 110, 137, 146, 117, 142, 151, 112, 138, 148, 114, 142, 153, 110, 138, 150, 116, 143, 154, 110, 137, 149, 114, 141, 152, 119, 145, 156, 100, 135, 151, 138, 162, 174, 120, 151, 164, 158, 178, 188, 102, 137, 151, 172, 187, 194, 143, 166, 177, 137, 163, 175, + 161, 180, 190, 148, 172, 182, 171, 189, 196, 158, 181, 187, 154, 179, 187, 144, 171, 181, 182, 197, 202, 154, 178, 184, 177, 193, 197, 168, 187, 192, 164, 185, 190, 162, 183, 189, 176, 193, 197, 170, 187, 193, 179, 192, 197, 125, 152, 163, 160, 177, 183, 142, 163, 171, 129, 153, 163, 132, 156, 165, 105, 134, 146, + 102, 129, 142, 138, 158, 167, 126, 149, 159, 125, 148, 158, 82, 110, 123, 104, 127, 137, 143, 160, 169, 92, 119, 131, 88, 116, 128, 134, 153, 163, 118, 142, 152, 106, 132, 145, 123, 144, 154, 101, 125, 136, 80, 106, 117, 100, 119, 127, 73, 94, 103, 113, 130, 137, 82, 104, 113, 70, 95, 108, 85, 109, 121, + 49, 80, 93, 115, 136, 146, 149, 167, 175, 146, 162, 173, 89, 116, 130, 74, 100, 114, 100, 122, 136, 114, 132, 147, 64, 88, 106, 29, 61, 83, 61, 84, 102, 57, 78, 96, 62, 83, 101, 60, 80, 97, 76, 95, 111, 68, 89, 108, 61, 83, 104, 40, 61, 83, 43, 64, 87, 52, 76, 97, 37, 63, 85, + 43, 68, 89, 44, 67, 88, 44, 65, 87, 39, 57, 79, 33, 52, 76, 26, 45, 71, 19, 41, 65, 16, 40, 63, 40, 60, 81, 36, 57, 79, 41, 62, 84, 37, 59, 81, 31, 55, 73, 42, 63, 78, 34, 63, 78, 42, 72, 92, 53, 81, 100, 99, 120, 134, 134, 152, 160, 139, 163, 168, 153, 173, 179, + 165, 184, 189, 180, 196, 201, 184, 199, 204, 194, 208, 212, 195, 210, 213, 201, 215, 218, 199, 214, 219, 206, 219, 223, 212, 223, 227, 211, 224, 227, 215, 227, 229, 216, 227, 229, 219, 230, 231, 223, 232, 232, 228, 236, 236, 231, 238, 237, 233, 239, 238, 236, 242, 241, 237, 243, 242, 238, 244, 243, 238, 244, 244, + 240, 246, 245, 241, 247, 246, 242, 248, 247, 242, 249, 248, 242, 248, 247, 243, 249, 248, 242, 248, 247, 244, 249, 248, 243, 248, 247, 243, 249, 248, 243, 249, 248, 243, 248, 247, 242, 248, 247, 241, 247, 246, 241, 247, 246, 240, 246, 245, 239, 245, 244, 239, 245, 244, 239, 245, 244, 238, 244, 243, 239, 245, 244, + 54, 19, 50, 52, 15, 50, 54, 16, 50, 55, 15, 50, 56, 14, 51, 57, 15, 53, 55, 14, 51, 57, 15, 52, 58, 16, 53, 58, 15, 52, 58, 15, 53, 59, 16, 53, 60, 17, 54, 60, 17, 54, 60, 17, 54, 60, 16, 54, 61, 17, 55, 62, 18, 55, 59, 15, 53, 60, 16, 54, 61, 17, 55, + 61, 17, 54, 62, 18, 55, 63, 19, 56, 62, 19, 56, 62, 17, 56, 64, 17, 56, 63, 17, 57, 66, 21, 59, 66, 22, 59, 65, 20, 57, 65, 21, 58, 66, 22, 59, 65, 21, 58, 67, 23, 60, 65, 21, 59, 67, 23, 60, 68, 21, 61, 68, 22, 61, 69, 24, 63, 68, 24, 63, 68, 23, 63, + 70, 24, 62, 70, 23, 63, 71, 23, 65, 71, 22, 64, 70, 22, 64, 71, 24, 66, 71, 21, 63, 71, 23, 65, 71, 23, 65, 73, 25, 67, 72, 26, 68, 95, 53, 90, 92, 48, 87, 76, 26, 68, 78, 30, 71, 78, 30, 71, 81, 34, 73, 79, 33, 72, 81, 35, 74, 83, 37, 76, 83, 38, 78, + 87, 42, 81, 87, 40, 81, 89, 43, 82, 90, 43, 82, 90, 44, 83, 89, 44, 82, 86, 45, 84, 83, 42, 82, 81, 42, 80, 96, 62, 94, 100, 66, 98, 82, 46, 81, 83, 48, 82, 84, 50, 83, 89, 57, 87, 88, 57, 89, 94, 66, 95, 95, 70, 98, 99, 76, 102, 99, 79, 102, 107, 86, 109, + 111, 93, 114, 115, 98, 120, 115, 102, 121, 117, 106, 125, 117, 109, 126, 123, 117, 134, 132, 129, 144, 136, 135, 150, 143, 143, 157, 148, 150, 164, 153, 158, 169, 159, 165, 175, 163, 170, 180, 170, 178, 186, 173, 183, 190, 178, 188, 195, 182, 192, 199, 183, 194, 199, 184, 196, 200, 184, 196, 202, 184, 196, 202, + 179, 193, 199, 180, 194, 200, 186, 199, 205, 183, 197, 203, 183, 197, 203, 187, 199, 205, 185, 198, 202, 181, 195, 201, 184, 197, 201, 190, 201, 206, 191, 203, 207, 186, 199, 203, 191, 202, 206, 184, 197, 203, 187, 200, 205, 180, 196, 202, 188, 202, 206, 193, 206, 210, 186, 200, 205, 184, 197, 203, 169, 187, 192, + 169, 184, 192, 170, 184, 192, 166, 183, 189, 157, 176, 182, 156, 175, 183, 141, 164, 172, 121, 149, 161, 130, 154, 165, 132, 155, 167, 117, 144, 157, 130, 154, 163, 111, 138, 149, 131, 152, 160, 137, 157, 164, 136, 159, 166, 135, 160, 167, 132, 158, 167, 119, 150, 160, 112, 142, 154, 121, 147, 158, 110, 139, 150, + 118, 145, 154, 118, 143, 152, 133, 154, 163, 130, 150, 159, 107, 134, 144, 107, 133, 144, 113, 139, 149, 101, 130, 140, 97, 127, 139, 115, 141, 152, 104, 132, 145, 107, 135, 147, 111, 139, 152, 117, 147, 161, 106, 140, 156, 143, 166, 178, 174, 189, 196, 123, 154, 167, 155, 175, 184, 135, 161, 173, 149, 172, 182, + 155, 177, 185, 131, 161, 173, 173, 190, 196, 154, 177, 186, 175, 192, 199, 146, 172, 183, 173, 190, 196, 171, 190, 195, 174, 192, 197, 168, 188, 193, 173, 191, 196, 155, 177, 185, 166, 186, 191, 181, 195, 200, 172, 187, 193, 182, 194, 199, 112, 143, 155, 152, 171, 178, 137, 161, 170, 133, 158, 166, 124, 149, 159, + 115, 142, 152, 153, 168, 176, 113, 138, 148, 110, 135, 146, 119, 142, 151, 122, 145, 153, 107, 132, 142, 109, 134, 144, 134, 153, 163, 115, 140, 150, 121, 145, 156, 126, 148, 159, 100, 127, 140, 111, 133, 144, 77, 107, 117, 131, 149, 157, 126, 141, 147, 85, 103, 112, 66, 87, 97, 64, 86, 97, 69, 95, 106, + 110, 131, 141, 76, 102, 114, 59, 89, 103, 107, 129, 141, 159, 179, 189, 155, 170, 178, 117, 135, 148, 87, 109, 119, 84, 110, 123, 98, 122, 134, 98, 118, 130, 88, 109, 124, 63, 88, 105, 86, 109, 125, 84, 110, 126, 82, 107, 126, 76, 100, 119, 77, 99, 119, 73, 96, 115, 54, 78, 99, 38, 63, 84, + 35, 61, 84, 14, 44, 66, 6, 34, 57, 44, 62, 83, 60, 75, 93, 39, 57, 76, 51, 68, 86, 69, 84, 101, 65, 80, 98, 36, 57, 79, 30, 54, 76, 50, 69, 90, 40, 62, 80, 32, 54, 74, 32, 62, 82, 44, 74, 94, 75, 99, 116, 104, 128, 138, 131, 150, 156, 141, 166, 172, 144, 168, 174, + 154, 177, 183, 164, 184, 191, 177, 195, 200, 186, 201, 206, 196, 209, 213, 198, 212, 216, 199, 215, 218, 201, 215, 221, 203, 217, 222, 207, 220, 224, 208, 222, 225, 212, 225, 227, 217, 229, 231, 220, 230, 229, 223, 233, 233, 227, 235, 234, 229, 237, 236, 234, 240, 239, 235, 241, 240, 238, 244, 243, 239, 245, 244, + 239, 245, 244, 240, 246, 245, 241, 247, 246, 243, 248, 247, 244, 249, 248, 243, 248, 247, 244, 249, 248, 243, 248, 247, 243, 248, 247, 242, 248, 247, 242, 248, 247, 243, 248, 247, 243, 248, 247, 241, 247, 246, 239, 245, 244, 240, 246, 245, 240, 246, 245, 240, 246, 245, 239, 245, 244, 239, 245, 244, 238, 245, 244, + 51, 15, 49, 53, 15, 49, 51, 14, 48, 54, 16, 50, 55, 14, 51, 54, 13, 50, 55, 15, 51, 57, 17, 53, 56, 15, 52, 59, 17, 54, 58, 15, 52, 58, 15, 52, 59, 17, 54, 58, 16, 53, 59, 18, 55, 60, 17, 54, 60, 17, 55, 60, 17, 54, 61, 18, 56, 61, 18, 55, 62, 17, 55, + 62, 19, 56, 62, 18, 55, 63, 19, 56, 61, 18, 55, 64, 19, 56, 63, 19, 57, 63, 18, 56, 64, 19, 58, 65, 20, 58, 66, 21, 60, 68, 23, 61, 67, 23, 61, 66, 22, 59, 67, 23, 60, 67, 23, 60, 67, 23, 60, 68, 22, 60, 68, 23, 62, 68, 24, 62, 67, 22, 61, 70, 25, 63, + 69, 23, 63, 71, 24, 64, 70, 21, 63, 70, 22, 63, 70, 21, 63, 72, 25, 64, 72, 25, 65, 73, 25, 67, 73, 27, 68, 72, 25, 67, 74, 28, 69, 75, 28, 69, 76, 29, 70, 76, 28, 70, 79, 31, 73, 78, 31, 71, 78, 31, 71, 78, 32, 71, 80, 35, 74, 82, 37, 77, 85, 42, 81, + 85, 41, 80, 87, 44, 82, 91, 48, 86, 90, 47, 85, 89, 47, 85, 87, 46, 84, 86, 49, 86, 87, 54, 89, 115, 88, 117, 106, 78, 107, 109, 79, 109, 115, 86, 115, 119, 92, 120, 122, 95, 122, 123, 100, 125, 129, 106, 130, 130, 110, 134, 133, 115, 137, 131, 115, 134, 128, 114, 133, 127, 115, 133, + 127, 117, 135, 130, 122, 139, 131, 124, 141, 134, 129, 145, 138, 137, 152, 141, 142, 155, 144, 147, 159, 151, 154, 167, 157, 162, 173, 161, 167, 177, 164, 171, 181, 167, 174, 183, 175, 183, 190, 179, 187, 194, 183, 192, 198, 185, 196, 202, 186, 196, 202, 187, 198, 203, 189, 200, 205, 186, 199, 205, 185, 198, 204, + 182, 196, 202, 179, 193, 199, 181, 195, 201, 187, 200, 205, 185, 198, 204, 184, 197, 203, 187, 198, 203, 184, 198, 204, 181, 195, 201, 188, 201, 207, 193, 205, 209, 189, 200, 205, 185, 198, 203, 186, 200, 204, 188, 200, 205, 181, 196, 202, 184, 198, 204, 187, 201, 205, 181, 196, 202, 181, 195, 200, 159, 179, 187, + 155, 174, 182, 164, 181, 188, 164, 181, 188, 147, 169, 176, 152, 172, 179, 140, 161, 171, 116, 143, 156, 127, 151, 162, 116, 143, 156, 97, 127, 141, 118, 143, 154, 97, 126, 138, 121, 145, 154, 137, 157, 164, 119, 146, 155, 134, 159, 167, 132, 157, 167, 118, 147, 158, 126, 152, 162, 118, 142, 152, 119, 142, 152, + 122, 144, 153, 119, 142, 152, 141, 159, 167, 116, 140, 151, 122, 144, 154, 104, 132, 143, 109, 136, 145, 98, 126, 137, 106, 133, 144, 95, 125, 137, 109, 136, 148, 113, 139, 152, 111, 139, 153, 114, 143, 157, 105, 137, 153, 142, 165, 178, 164, 182, 190, 139, 165, 175, 163, 181, 189, 160, 180, 188, 123, 154, 166, + 160, 180, 189, 142, 169, 178, 179, 194, 200, 143, 171, 179, 158, 180, 189, 118, 153, 166, 179, 194, 200, 185, 199, 203, 161, 184, 190, 179, 196, 200, 175, 192, 198, 152, 176, 183, 172, 190, 195, 172, 189, 195, 166, 185, 192, 177, 192, 198, 136, 161, 170, 150, 170, 179, 159, 177, 184, 154, 175, 182, 121, 151, 160, + 138, 159, 167, 125, 148, 157, 123, 147, 156, 119, 143, 152, 147, 164, 171, 97, 125, 135, 123, 145, 154, 110, 136, 145, 115, 140, 151, 132, 152, 163, 112, 138, 149, 134, 154, 163, 129, 151, 161, 105, 130, 140, 146, 162, 169, 116, 136, 144, 63, 86, 95, 71, 90, 99, 72, 91, 101, 98, 117, 125, 95, 117, 126, + 101, 124, 133, 105, 127, 137, 50, 78, 92, 78, 98, 112, 40, 63, 78, 77, 97, 111, 148, 163, 171, 177, 190, 196, 158, 175, 183, 139, 157, 167, 103, 126, 138, 71, 98, 113, 98, 123, 136, 77, 102, 119, 81, 105, 121, 94, 120, 136, 100, 123, 140, 87, 110, 128, 103, 119, 136, 102, 121, 138, 98, 117, 134, + 90, 105, 124, 63, 84, 104, 48, 71, 91, 33, 56, 77, 61, 79, 97, 66, 82, 99, 48, 65, 84, 75, 90, 104, 102, 115, 127, 112, 123, 138, 47, 67, 88, 44, 64, 86, 28, 53, 73, 38, 61, 81, 27, 58, 79, 47, 74, 92, 125, 142, 154, 98, 122, 129, 132, 153, 159, 152, 175, 181, 161, 180, 187, + 165, 185, 190, 166, 187, 192, 173, 192, 199, 181, 199, 205, 192, 207, 210, 199, 212, 216, 206, 217, 221, 201, 216, 220, 199, 215, 221, 197, 214, 220, 201, 218, 221, 210, 223, 225, 212, 224, 226, 216, 228, 229, 222, 232, 232, 227, 235, 235, 228, 236, 236, 230, 239, 239, 234, 240, 239, 236, 242, 241, 237, 243, 242, + 239, 245, 244, 240, 246, 245, 242, 247, 246, 241, 247, 247, 243, 249, 248, 243, 248, 247, 243, 248, 247, 244, 249, 248, 243, 248, 247, 243, 249, 248, 243, 248, 247, 242, 247, 246, 243, 248, 247, 242, 247, 246, 240, 247, 246, 240, 246, 245, 239, 245, 244, 240, 246, 245, 240, 246, 245, 239, 244, 243, 238, 244, 243, + 51, 17, 48, 52, 16, 49, 53, 16, 50, 53, 15, 49, 54, 16, 51, 56, 15, 52, 56, 15, 52, 55, 14, 51, 57, 14, 51, 59, 16, 53, 58, 15, 52, 59, 16, 53, 57, 17, 54, 60, 16, 53, 60, 17, 54, 59, 15, 54, 59, 15, 53, 61, 17, 56, 60, 15, 54, 60, 15, 54, 61, 18, 55, + 61, 17, 54, 61, 17, 54, 61, 19, 56, 63, 20, 57, 63, 20, 57, 64, 19, 57, 65, 20, 58, 65, 21, 58, 64, 19, 58, 66, 21, 60, 66, 21, 60, 67, 22, 61, 68, 24, 61, 68, 23, 61, 68, 23, 60, 68, 24, 61, 67, 24, 61, 69, 25, 62, 69, 24, 63, 68, 23, 62, 70, 25, 63, + 69, 23, 62, 69, 24, 63, 71, 22, 63, 70, 21, 63, 71, 22, 64, 71, 22, 64, 70, 22, 64, 71, 22, 64, 70, 24, 66, 71, 25, 65, 75, 28, 69, 73, 25, 67, 76, 28, 70, 77, 29, 71, 77, 27, 70, 79, 32, 72, 77, 32, 72, 80, 35, 74, 79, 34, 73, 84, 40, 78, 82, 39, 78, + 83, 44, 82, 85, 49, 87, 95, 60, 95, 106, 74, 105, 114, 85, 114, 117, 89, 116, 113, 88, 114, 137, 118, 140, 104, 80, 107, 97, 70, 97, 94, 64, 94, 91, 61, 91, 90, 60, 92, 91, 64, 93, 93, 66, 95, 97, 74, 100, 106, 87, 110, 111, 95, 118, 125, 113, 132, 133, 124, 140, 145, 139, 154, + 151, 147, 161, 158, 157, 169, 165, 166, 176, 166, 169, 180, 167, 170, 181, 163, 168, 178, 161, 167, 177, 164, 171, 180, 170, 178, 187, 174, 183, 191, 176, 185, 193, 181, 189, 196, 183, 192, 199, 186, 196, 202, 189, 200, 206, 191, 202, 206, 190, 203, 207, 190, 202, 207, 189, 201, 207, 190, 201, 207, 190, 202, 208, + 185, 199, 205, 182, 196, 202, 182, 195, 201, 185, 198, 204, 190, 202, 206, 187, 198, 205, 185, 197, 204, 183, 197, 202, 180, 195, 201, 177, 192, 198, 190, 202, 208, 186, 200, 205, 179, 193, 199, 186, 200, 204, 188, 201, 205, 189, 202, 207, 176, 193, 199, 184, 198, 203, 176, 192, 198, 171, 188, 193, 158, 175, 183, + 146, 167, 177, 154, 174, 182, 158, 176, 184, 151, 172, 179, 139, 164, 170, 144, 164, 173, 114, 141, 154, 101, 129, 143, 115, 139, 151, 103, 129, 142, 113, 137, 148, 104, 130, 141, 124, 146, 156, 141, 159, 169, 119, 145, 157, 134, 156, 166, 136, 160, 167, 116, 144, 154, 130, 153, 162, 117, 139, 150, 123, 144, 153, + 133, 152, 160, 121, 143, 153, 120, 142, 154, 132, 151, 162, 101, 127, 139, 126, 148, 157, 108, 134, 144, 102, 129, 141, 113, 137, 149, 111, 137, 148, 98, 126, 139, 84, 115, 130, 113, 139, 153, 114, 141, 154, 100, 133, 148, 148, 170, 180, 142, 165, 177, 163, 181, 190, 157, 177, 186, 153, 175, 185, 96, 137, 149, + 167, 185, 191, 146, 170, 179, 176, 192, 197, 152, 176, 186, 143, 169, 180, 172, 189, 197, 146, 172, 182, 174, 191, 198, 170, 188, 196, 175, 193, 199, 169, 188, 194, 165, 186, 193, 148, 173, 181, 186, 198, 204, 170, 188, 194, 173, 189, 195, 156, 177, 185, 145, 168, 177, 155, 175, 183, 166, 182, 188, 143, 166, 174, + 121, 147, 156, 135, 157, 165, 123, 147, 156, 144, 162, 171, 130, 153, 161, 122, 146, 155, 139, 161, 167, 119, 147, 156, 110, 140, 152, 139, 161, 171, 129, 153, 164, 129, 152, 163, 133, 154, 163, 129, 149, 156, 108, 131, 138, 83, 108, 117, 106, 125, 134, 107, 124, 133, 103, 121, 129, 85, 106, 115, 85, 108, 118, + 89, 113, 123, 135, 154, 163, 122, 142, 154, 81, 102, 115, 131, 142, 152, 97, 111, 123, 61, 80, 93, 59, 82, 95, 107, 131, 142, 119, 142, 154, 150, 169, 178, 177, 192, 199, 146, 168, 179, 157, 177, 188, 126, 150, 163, 117, 140, 153, 98, 125, 141, 106, 132, 148, 104, 126, 142, 100, 118, 132, 89, 105, 124, + 110, 127, 144, 129, 149, 164, 115, 139, 154, 111, 133, 147, 85, 104, 121, 66, 83, 99, 85, 98, 113, 71, 87, 100, 103, 117, 127, 108, 122, 132, 81, 96, 112, 41, 62, 82, 36, 59, 80, 28, 56, 76, 30, 60, 81, 47, 75, 93, 121, 139, 147, 105, 128, 135, 145, 163, 170, 140, 166, 173, 150, 173, 180, + 165, 185, 191, 180, 195, 201, 184, 199, 204, 182, 198, 204, 192, 207, 210, 196, 211, 214, 194, 209, 215, 198, 211, 216, 195, 212, 218, 196, 213, 219, 198, 215, 220, 204, 219, 222, 211, 223, 226, 215, 226, 229, 218, 229, 230, 224, 233, 233, 228, 236, 236, 231, 239, 239, 233, 240, 240, 235, 241, 240, 237, 243, 242, + 237, 243, 242, 239, 245, 244, 240, 246, 245, 241, 247, 246, 242, 247, 246, 242, 247, 246, 242, 248, 247, 242, 248, 247, 243, 248, 247, 243, 248, 247, 243, 248, 247, 241, 247, 246, 241, 248, 247, 241, 247, 246, 240, 246, 245, 241, 246, 245, 241, 247, 246, 239, 245, 244, 239, 245, 244, 239, 245, 244, 238, 244, 243, + 48, 14, 48, 52, 17, 49, 52, 15, 49, 52, 14, 48, 55, 16, 51, 54, 13, 50, 56, 15, 52, 56, 15, 52, 58, 16, 51, 57, 15, 52, 59, 16, 53, 57, 14, 51, 58, 15, 52, 57, 16, 53, 59, 16, 53, 58, 15, 53, 60, 16, 54, 59, 15, 54, 59, 15, 54, 60, 15, 54, 61, 17, 55, + 63, 20, 56, 61, 18, 55, 62, 17, 56, 62, 18, 56, 61, 16, 55, 63, 18, 56, 64, 20, 57, 64, 20, 57, 65, 20, 59, 65, 20, 59, 67, 22, 61, 69, 24, 62, 65, 20, 59, 66, 22, 59, 67, 24, 61, 67, 24, 61, 68, 25, 62, 67, 23, 60, 67, 23, 60, 70, 28, 64, 69, 25, 61, + 68, 24, 61, 69, 24, 62, 68, 20, 60, 70, 21, 61, 71, 22, 63, 70, 22, 63, 71, 23, 63, 69, 22, 63, 71, 24, 64, 72, 25, 66, 74, 27, 66, 75, 27, 69, 76, 28, 70, 76, 28, 70, 77, 29, 71, 77, 29, 71, 77, 32, 71, 77, 33, 71, 80, 38, 75, 84, 44, 81, 100, 65, 98, + 108, 77, 108, 111, 81, 111, 104, 73, 104, 97, 67, 96, 91, 60, 89, 94, 66, 95, 114, 91, 116, 88, 63, 90, 92, 67, 93, 91, 64, 92, 92, 64, 93, 92, 64, 93, 91, 64, 93, 93, 67, 95, 96, 72, 101, 100, 78, 103, 104, 87, 110, 114, 101, 123, 122, 113, 131, 135, 128, 144, 143, 142, 155, + 152, 153, 164, 160, 162, 172, 162, 167, 177, 169, 176, 185, 174, 182, 190, 177, 185, 194, 181, 190, 198, 183, 193, 200, 183, 194, 200, 186, 195, 200, 186, 196, 201, 188, 199, 204, 190, 201, 206, 191, 202, 208, 192, 204, 210, 194, 205, 212, 194, 206, 212, 195, 207, 212, 190, 203, 209, 187, 201, 207, 188, 202, 208, + 186, 200, 206, 184, 198, 204, 180, 195, 201, 177, 192, 198, 184, 197, 203, 188, 201, 204, 186, 199, 202, 183, 197, 203, 184, 198, 204, 180, 195, 201, 177, 193, 199, 192, 204, 210, 182, 196, 202, 175, 191, 197, 186, 201, 205, 185, 199, 206, 180, 196, 202, 172, 189, 196, 174, 191, 196, 157, 175, 182, 146, 166, 175, + 146, 164, 173, 145, 167, 176, 150, 170, 179, 135, 161, 169, 120, 150, 160, 132, 155, 165, 115, 141, 154, 111, 137, 150, 110, 135, 147, 97, 123, 136, 122, 144, 153, 119, 142, 152, 120, 143, 154, 126, 148, 159, 128, 150, 162, 136, 158, 168, 136, 158, 167, 98, 129, 141, 108, 135, 146, 124, 145, 154, 121, 142, 151, + 135, 153, 162, 134, 153, 162, 107, 132, 144, 132, 152, 162, 88, 117, 129, 135, 156, 164, 126, 147, 158, 100, 128, 140, 115, 138, 151, 106, 132, 145, 83, 113, 125, 100, 128, 142, 97, 126, 140, 99, 129, 142, 110, 141, 156, 143, 167, 177, 143, 167, 178, 158, 177, 187, 149, 171, 182, 138, 164, 175, 142, 168, 177, + 151, 174, 183, 158, 179, 188, 160, 181, 189, 177, 193, 199, 129, 160, 173, 167, 186, 194, 104, 144, 159, 174, 191, 198, 178, 193, 200, 172, 190, 196, 185, 199, 204, 168, 188, 195, 149, 175, 183, 166, 186, 193, 166, 186, 192, 171, 189, 194, 148, 171, 179, 134, 161, 170, 171, 186, 193, 144, 168, 175, 148, 169, 177, + 120, 147, 158, 138, 160, 168, 141, 162, 170, 131, 156, 165, 121, 148, 157, 138, 161, 169, 136, 159, 166, 131, 157, 163, 129, 155, 167, 138, 160, 169, 123, 149, 160, 135, 157, 166, 135, 155, 164, 95, 122, 131, 101, 125, 133, 105, 126, 135, 126, 145, 152, 101, 123, 133, 131, 149, 157, 122, 141, 149, 115, 134, 141, + 112, 131, 140, 98, 124, 135, 137, 154, 164, 111, 129, 141, 98, 115, 128, 84, 100, 112, 67, 83, 97, 63, 80, 94, 64, 88, 103, 85, 109, 124, 49, 82, 98, 67, 95, 112, 101, 123, 137, 89, 110, 124, 104, 123, 136, 102, 125, 138, 116, 142, 154, 84, 108, 123, 74, 97, 115, 79, 100, 118, 77, 100, 120, + 71, 91, 110, 71, 91, 110, 63, 84, 103, 59, 78, 97, 41, 61, 80, 60, 78, 96, 53, 70, 85, 69, 84, 97, 49, 66, 79, 85, 98, 110, 102, 116, 127, 41, 61, 80, 43, 63, 84, 22, 53, 74, 25, 57, 76, 70, 93, 110, 109, 129, 138, 111, 134, 143, 141, 160, 168, 149, 169, 178, 156, 176, 183, + 162, 181, 188, 164, 184, 191, 175, 193, 199, 192, 205, 210, 190, 206, 210, 193, 209, 212, 196, 211, 216, 195, 210, 215, 192, 210, 215, 194, 213, 218, 199, 214, 221, 205, 219, 222, 207, 221, 222, 211, 224, 225, 219, 229, 231, 221, 231, 231, 222, 232, 232, 228, 236, 236, 230, 238, 238, 235, 241, 240, 236, 242, 241, + 237, 243, 242, 239, 245, 244, 239, 245, 244, 240, 246, 245, 241, 247, 246, 242, 247, 246, 241, 247, 246, 242, 247, 246, 242, 248, 247, 242, 247, 246, 244, 248, 247, 242, 247, 246, 242, 248, 247, 242, 247, 246, 242, 247, 246, 241, 247, 246, 241, 246, 245, 240, 246, 245, 240, 246, 245, 238, 244, 243, 238, 244, 243, + 50, 16, 49, 51, 16, 48, 51, 15, 49, 53, 17, 49, 53, 15, 49, 54, 14, 50, 55, 15, 51, 57, 15, 51, 57, 16, 52, 58, 16, 51, 58, 16, 52, 59, 16, 53, 57, 16, 53, 58, 16, 53, 59, 16, 53, 57, 13, 52, 60, 16, 54, 59, 15, 53, 60, 17, 55, 61, 16, 54, 60, 16, 54, + 61, 17, 55, 60, 16, 54, 63, 19, 56, 62, 17, 56, 63, 18, 57, 63, 19, 56, 64, 20, 57, 64, 20, 57, 64, 19, 58, 68, 23, 61, 67, 23, 61, 66, 21, 60, 66, 22, 60, 68, 25, 61, 66, 23, 60, 68, 25, 62, 69, 26, 62, 69, 26, 61, 69, 25, 63, 69, 26, 61, 69, 27, 62, + 69, 26, 62, 70, 26, 64, 71, 24, 63, 71, 23, 63, 70, 23, 62, 71, 24, 62, 70, 22, 64, 70, 22, 62, 72, 24, 64, 72, 24, 63, 75, 28, 68, 73, 26, 67, 73, 25, 69, 75, 27, 71, 75, 28, 71, 77, 32, 71, 85, 43, 79, 96, 61, 92, 105, 73, 103, 99, 66, 96, 87, 52, 84, + 85, 51, 85, 85, 52, 86, 91, 60, 90, 94, 65, 93, 102, 76, 103, 119, 98, 122, 93, 70, 96, 96, 74, 99, 99, 77, 102, 102, 80, 105, 102, 80, 106, 102, 80, 105, 102, 80, 105, 103, 82, 106, 107, 88, 111, 109, 93, 115, 116, 102, 124, 122, 112, 132, 134, 128, 144, 143, 142, 154, 154, 156, 166, + 163, 168, 177, 170, 176, 185, 177, 183, 192, 182, 189, 198, 183, 191, 200, 185, 194, 203, 187, 197, 204, 189, 200, 206, 191, 202, 206, 194, 205, 209, 195, 206, 210, 195, 206, 210, 195, 206, 210, 196, 207, 211, 198, 209, 216, 196, 208, 214, 196, 208, 214, 195, 208, 214, 195, 208, 214, 191, 205, 211, 188, 202, 208, + 185, 199, 205, 182, 197, 203, 177, 193, 199, 172, 188, 194, 174, 189, 196, 182, 197, 201, 187, 200, 204, 183, 198, 201, 182, 196, 202, 185, 199, 205, 177, 193, 199, 185, 200, 206, 180, 196, 202, 174, 191, 197, 180, 196, 202, 175, 193, 199, 178, 195, 201, 164, 184, 191, 161, 180, 186, 139, 162, 170, 141, 160, 169, + 131, 153, 164, 133, 157, 168, 147, 168, 176, 131, 157, 166, 111, 140, 152, 115, 140, 152, 113, 140, 152, 107, 132, 144, 114, 137, 149, 96, 122, 134, 123, 145, 155, 109, 133, 143, 111, 135, 146, 113, 138, 151, 124, 147, 160, 130, 153, 165, 123, 147, 159, 103, 130, 141, 110, 133, 144, 120, 142, 151, 131, 150, 159, + 115, 138, 149, 133, 153, 161, 103, 130, 142, 135, 154, 163, 110, 135, 145, 118, 140, 151, 115, 139, 150, 107, 133, 146, 100, 128, 141, 84, 114, 127, 84, 113, 126, 80, 111, 124, 96, 124, 138, 100, 128, 143, 119, 148, 161, 144, 167, 179, 131, 159, 171, 159, 178, 187, 162, 180, 189, 143, 168, 179, 130, 160, 172, + 148, 173, 181, 153, 176, 185, 156, 177, 187, 182, 195, 202, 115, 152, 167, 157, 179, 188, 149, 175, 185, 164, 183, 192, 173, 191, 197, 162, 183, 191, 185, 199, 204, 167, 186, 193, 147, 173, 182, 172, 190, 196, 164, 184, 190, 155, 177, 185, 161, 181, 187, 143, 167, 175, 164, 182, 188, 140, 164, 174, 154, 174, 181, + 144, 165, 173, 119, 146, 157, 144, 166, 173, 128, 154, 163, 143, 166, 174, 145, 168, 174, 108, 142, 151, 140, 163, 171, 136, 161, 171, 121, 149, 159, 142, 163, 172, 126, 150, 160, 126, 147, 156, 123, 143, 153, 120, 139, 149, 140, 157, 164, 141, 157, 165, 104, 127, 135, 129, 148, 156, 116, 137, 145, 98, 120, 130, + 113, 132, 143, 116, 134, 147, 95, 119, 133, 117, 134, 146, 80, 101, 114, 102, 120, 132, 123, 135, 144, 125, 135, 146, 91, 109, 122, 113, 133, 147, 72, 98, 114, 78, 103, 118, 72, 97, 112, 45, 74, 90, 64, 88, 103, 53, 79, 94, 38, 66, 83, 58, 80, 96, 38, 65, 82, 26, 54, 73, 40, 64, 86, + 40, 63, 85, 33, 52, 75, 43, 62, 82, 41, 60, 80, 26, 47, 67, 33, 53, 73, 30, 52, 68, 26, 47, 63, 67, 83, 95, 85, 97, 109, 121, 133, 142, 69, 84, 100, 81, 94, 112, 51, 74, 92, 54, 77, 96, 110, 128, 140, 109, 128, 137, 116, 138, 147, 122, 148, 158, 144, 166, 174, 158, 177, 184, + 169, 187, 193, 177, 193, 200, 178, 195, 201, 182, 197, 203, 182, 201, 206, 188, 206, 210, 194, 210, 216, 196, 211, 216, 194, 210, 216, 195, 212, 218, 194, 212, 217, 200, 214, 219, 206, 220, 224, 213, 225, 228, 215, 227, 229, 220, 230, 231, 223, 233, 233, 225, 234, 234, 227, 235, 235, 231, 238, 239, 235, 241, 240, + 237, 243, 242, 238, 244, 243, 239, 245, 244, 239, 245, 244, 240, 246, 245, 241, 247, 246, 242, 247, 246, 241, 247, 246, 242, 248, 247, 242, 248, 247, 242, 248, 247, 242, 248, 247, 242, 248, 247, 243, 248, 247, 243, 248, 247, 241, 246, 245, 241, 246, 245, 240, 245, 244, 239, 245, 244, 239, 245, 244, 238, 244, 243, + 49, 16, 47, 51, 15, 49, 51, 15, 49, 52, 15, 48, 53, 16, 50, 53, 15, 49, 53, 16, 50, 55, 15, 50, 55, 15, 50, 57, 17, 52, 56, 15, 51, 57, 16, 53, 58, 16, 53, 58, 15, 52, 58, 16, 53, 57, 14, 52, 60, 18, 55, 58, 15, 52, 60, 17, 53, 59, 16, 54, 61, 18, 55, + 60, 17, 54, 61, 18, 55, 61, 17, 55, 62, 18, 56, 61, 18, 55, 64, 20, 56, 64, 20, 57, 64, 20, 57, 65, 21, 58, 65, 21, 58, 65, 21, 59, 66, 24, 60, 66, 23, 60, 65, 23, 60, 68, 26, 62, 67, 25, 61, 68, 25, 62, 69, 26, 63, 71, 28, 64, 71, 29, 64, 71, 30, 65, + 71, 29, 63, 73, 29, 65, 73, 29, 66, 72, 27, 65, 71, 25, 64, 71, 25, 64, 71, 24, 63, 71, 23, 63, 73, 26, 65, 74, 27, 66, 73, 25, 66, 73, 25, 67, 73, 27, 69, 84, 40, 79, 97, 59, 94, 95, 59, 92, 91, 55, 87, 83, 43, 79, 78, 40, 75, 79, 40, 75, 80, 44, 78, + 85, 51, 85, 88, 55, 87, 90, 60, 90, 108, 85, 110, 116, 94, 118, 102, 81, 105, 104, 84, 107, 107, 88, 110, 111, 95, 118, 111, 97, 120, 117, 104, 126, 117, 105, 126, 118, 106, 128, 119, 108, 129, 119, 111, 131, 125, 119, 138, 128, 123, 141, 134, 130, 147, 143, 144, 156, 153, 155, 166, 161, 168, 177, + 170, 177, 186, 179, 187, 195, 186, 194, 201, 190, 199, 206, 193, 202, 210, 195, 205, 212, 194, 206, 212, 195, 207, 213, 196, 208, 213, 200, 211, 215, 201, 212, 216, 200, 212, 216, 200, 212, 216, 199, 211, 215, 199, 210, 217, 198, 211, 217, 198, 211, 216, 196, 210, 216, 195, 209, 215, 193, 207, 213, 189, 203, 209, + 187, 201, 207, 181, 196, 202, 178, 194, 200, 172, 190, 196, 168, 187, 192, 172, 190, 195, 183, 199, 203, 184, 198, 202, 181, 195, 201, 181, 196, 202, 183, 198, 204, 179, 195, 201, 182, 197, 203, 167, 186, 192, 181, 196, 201, 174, 189, 195, 174, 189, 194, 168, 185, 191, 148, 169, 176, 142, 160, 169, 136, 156, 164, + 112, 138, 149, 130, 153, 162, 138, 160, 169, 131, 153, 162, 106, 133, 144, 97, 125, 136, 103, 129, 141, 96, 123, 135, 112, 135, 146, 94, 117, 128, 106, 128, 135, 103, 125, 134, 121, 142, 151, 106, 132, 145, 111, 137, 151, 110, 138, 152, 117, 142, 155, 104, 128, 142, 119, 140, 151, 114, 137, 146, 110, 134, 144, + 113, 137, 147, 116, 140, 150, 107, 132, 143, 131, 151, 160, 124, 146, 156, 87, 115, 128, 128, 149, 160, 93, 122, 135, 95, 124, 136, 71, 103, 116, 78, 109, 121, 95, 123, 135, 83, 113, 127, 89, 119, 134, 119, 149, 162, 128, 155, 169, 138, 162, 174, 145, 168, 179, 159, 179, 188, 143, 169, 180, 148, 173, 182, + 156, 177, 186, 147, 172, 181, 150, 173, 184, 168, 187, 195, 154, 178, 187, 138, 166, 178, 154, 176, 186, 142, 168, 179, 175, 192, 199, 167, 186, 193, 172, 190, 197, 180, 196, 202, 150, 175, 183, 153, 176, 185, 184, 198, 203, 162, 182, 189, 162, 182, 187, 156, 176, 184, 150, 172, 180, 156, 175, 183, 151, 170, 180, + 131, 157, 166, 141, 164, 171, 149, 170, 177, 144, 167, 175, 155, 174, 181, 127, 156, 165, 135, 162, 168, 142, 165, 172, 140, 162, 171, 148, 168, 176, 122, 148, 159, 128, 154, 163, 140, 160, 168, 143, 160, 167, 123, 143, 153, 127, 148, 157, 106, 131, 141, 123, 148, 155, 114, 138, 146, 144, 162, 169, 149, 164, 171, + 141, 157, 164, 118, 136, 146, 101, 122, 133, 86, 109, 122, 102, 122, 135, 54, 78, 93, 63, 73, 86, 62, 80, 93, 63, 85, 101, 115, 134, 147, 82, 106, 122, 89, 111, 127, 83, 106, 121, 71, 94, 109, 78, 100, 114, 67, 89, 103, 76, 96, 109, 74, 94, 108, 44, 68, 85, 60, 80, 97, 37, 61, 81, + 31, 56, 77, 35, 56, 77, 25, 46, 66, 25, 45, 65, 30, 50, 69, 39, 58, 77, 31, 52, 69, 46, 64, 80, 37, 57, 72, 68, 82, 95, 118, 130, 141, 85, 99, 113, 84, 99, 115, 66, 86, 105, 63, 86, 105, 119, 135, 149, 117, 136, 144, 131, 152, 159, 126, 151, 161, 141, 163, 173, 153, 172, 180, + 165, 183, 190, 167, 186, 193, 172, 190, 197, 179, 197, 202, 188, 204, 209, 195, 209, 215, 196, 211, 216, 200, 213, 218, 197, 213, 218, 198, 214, 219, 195, 212, 218, 197, 214, 220, 202, 216, 222, 207, 220, 224, 213, 225, 228, 220, 229, 232, 221, 231, 232, 225, 234, 234, 227, 235, 235, 229, 237, 237, 232, 240, 239, + 235, 241, 240, 238, 244, 243, 239, 245, 244, 241, 247, 246, 242, 247, 246, 241, 247, 246, 242, 248, 247, 242, 248, 247, 242, 248, 247, 243, 248, 247, 243, 248, 247, 243, 248, 247, 243, 248, 247, 242, 247, 246, 243, 248, 247, 242, 247, 246, 241, 247, 246, 240, 246, 245, 240, 246, 245, 239, 245, 244, 238, 244, 243, + 50, 17, 47, 51, 15, 49, 51, 15, 49, 52, 15, 49, 52, 15, 49, 53, 16, 51, 53, 16, 50, 57, 18, 51, 55, 15, 50, 55, 14, 50, 56, 16, 52, 57, 17, 52, 56, 17, 51, 56, 15, 50, 58, 17, 52, 58, 17, 52, 59, 16, 52, 60, 17, 54, 61, 18, 54, 60, 17, 53, 60, 16, 53, + 61, 17, 54, 60, 16, 53, 62, 18, 55, 63, 20, 56, 63, 19, 56, 64, 21, 57, 64, 19, 57, 64, 20, 57, 65, 21, 57, 64, 20, 58, 65, 21, 58, 66, 24, 59, 66, 25, 59, 68, 26, 61, 67, 25, 60, 67, 25, 61, 70, 29, 64, 69, 27, 64, 71, 30, 67, 72, 31, 68, 72, 32, 68, + 74, 35, 69, 72, 32, 67, 74, 32, 68, 74, 31, 69, 74, 30, 68, 71, 27, 65, 71, 24, 63, 72, 26, 65, 72, 25, 65, 72, 25, 65, 73, 29, 68, 91, 52, 87, 99, 63, 95, 88, 50, 86, 78, 35, 74, 75, 30, 70, 74, 32, 71, 78, 37, 74, 76, 37, 72, 81, 41, 77, 82, 46, 80, + 84, 50, 83, 88, 56, 87, 115, 93, 117, 103, 82, 107, 103, 82, 106, 109, 91, 114, 117, 102, 122, 118, 105, 126, 124, 114, 134, 128, 120, 139, 130, 124, 145, 135, 130, 147, 135, 132, 149, 138, 136, 152, 140, 140, 155, 141, 141, 156, 145, 147, 162, 150, 156, 168, 155, 161, 172, 162, 171, 179, 168, 178, 187, + 177, 187, 195, 183, 194, 201, 190, 201, 207, 193, 204, 211, 194, 206, 213, 197, 209, 216, 198, 209, 215, 199, 211, 217, 199, 212, 218, 200, 214, 220, 202, 214, 220, 203, 215, 221, 203, 215, 220, 203, 215, 220, 201, 214, 218, 198, 213, 217, 195, 208, 215, 194, 208, 214, 195, 209, 215, 194, 208, 214, 190, 203, 209, + 186, 200, 206, 183, 198, 204, 177, 193, 199, 176, 192, 198, 172, 191, 196, 168, 188, 193, 174, 190, 196, 185, 199, 204, 177, 193, 199, 179, 194, 200, 180, 196, 202, 181, 196, 203, 176, 194, 199, 173, 191, 196, 171, 190, 195, 171, 186, 193, 167, 183, 190, 168, 183, 190, 152, 171, 177, 131, 149, 156, 125, 144, 152, + 124, 143, 151, 112, 135, 145, 126, 147, 156, 117, 139, 150, 97, 121, 133, 100, 123, 135, 105, 129, 139, 91, 116, 127, 95, 119, 129, 96, 118, 125, 106, 126, 133, 115, 135, 142, 105, 128, 138, 100, 127, 139, 104, 130, 143, 122, 143, 156, 108, 133, 146, 89, 115, 128, 118, 139, 150, 99, 125, 135, 117, 139, 149, + 110, 135, 144, 102, 130, 140, 95, 123, 135, 134, 153, 162, 100, 126, 137, 100, 125, 139, 101, 128, 140, 79, 109, 121, 94, 120, 132, 65, 97, 109, 81, 109, 121, 87, 114, 125, 71, 102, 115, 94, 124, 137, 115, 144, 158, 133, 159, 171, 131, 158, 171, 158, 177, 187, 141, 167, 178, 133, 163, 175, 152, 176, 186, + 148, 173, 183, 143, 168, 179, 161, 181, 190, 158, 180, 188, 156, 179, 188, 151, 175, 186, 164, 183, 193, 155, 177, 188, 157, 179, 188, 150, 174, 185, 163, 183, 192, 180, 195, 202, 174, 192, 199, 156, 179, 187, 177, 193, 199, 166, 185, 191, 169, 187, 193, 158, 178, 185, 164, 182, 190, 150, 170, 179, 154, 173, 181, + 135, 160, 170, 152, 172, 178, 147, 169, 177, 151, 172, 180, 147, 168, 179, 139, 164, 173, 132, 159, 169, 136, 160, 171, 135, 159, 170, 132, 155, 166, 145, 166, 173, 148, 168, 176, 135, 158, 166, 127, 148, 158, 136, 156, 166, 137, 158, 168, 140, 160, 168, 160, 175, 182, 155, 172, 177, 152, 168, 174, 129, 147, 156, + 148, 164, 172, 123, 142, 150, 125, 141, 148, 85, 107, 120, 83, 108, 120, 107, 125, 137, 43, 63, 79, 90, 106, 120, 80, 100, 115, 87, 110, 126, 89, 112, 128, 94, 116, 131, 71, 96, 111, 77, 100, 115, 47, 74, 89, 63, 87, 101, 76, 97, 111, 37, 64, 81, 45, 69, 86, 42, 63, 80, 41, 62, 81, + 35, 57, 77, 44, 64, 81, 43, 58, 76, 37, 53, 71, 22, 42, 62, 32, 52, 72, 30, 50, 71, 25, 46, 67, 63, 77, 93, 46, 65, 80, 97, 111, 123, 109, 121, 134, 96, 111, 126, 93, 111, 127, 71, 94, 112, 132, 148, 160, 115, 136, 147, 108, 132, 144, 101, 133, 146, 128, 154, 165, 155, 174, 183, + 163, 182, 190, 174, 191, 198, 175, 193, 199, 175, 193, 200, 188, 201, 207, 196, 210, 215, 199, 213, 219, 200, 214, 220, 201, 216, 220, 200, 214, 219, 202, 216, 222, 200, 216, 222, 199, 216, 221, 204, 219, 222, 209, 222, 225, 213, 225, 227, 219, 230, 231, 221, 231, 231, 228, 235, 235, 229, 236, 236, 231, 237, 237, + 232, 240, 239, 238, 243, 242, 238, 244, 243, 239, 245, 244, 240, 246, 245, 241, 247, 246, 241, 247, 246, 242, 248, 247, 242, 248, 247, 242, 248, 247, 244, 249, 248, 243, 248, 247, 243, 248, 247, 242, 247, 246, 242, 247, 246, 241, 247, 246, 241, 247, 246, 240, 246, 245, 239, 245, 244, 239, 245, 244, 239, 245, 244, + 49, 16, 47, 48, 13, 47, 50, 15, 49, 51, 15, 49, 52, 15, 49, 53, 16, 50, 53, 16, 50, 54, 13, 49, 55, 15, 50, 56, 16, 51, 56, 16, 51, 55, 15, 51, 55, 15, 50, 56, 16, 51, 57, 17, 52, 56, 16, 52, 58, 17, 53, 58, 16, 52, 59, 16, 52, 59, 16, 53, 61, 18, 54, + 59, 16, 53, 61, 18, 55, 62, 18, 55, 62, 19, 56, 62, 18, 55, 62, 19, 55, 63, 20, 56, 64, 19, 57, 65, 21, 58, 64, 20, 57, 66, 22, 58, 65, 23, 58, 67, 25, 60, 66, 25, 60, 68, 26, 61, 67, 25, 61, 68, 25, 62, 70, 30, 67, 73, 32, 69, 74, 34, 70, 74, 36, 72, + 76, 39, 73, 77, 39, 73, 76, 38, 72, 77, 37, 72, 77, 35, 71, 75, 33, 70, 75, 32, 69, 72, 30, 67, 81, 40, 75, 97, 65, 97, 96, 65, 97, 76, 38, 74, 72, 29, 69, 76, 31, 71, 76, 31, 71, 76, 32, 71, 74, 31, 70, 75, 34, 72, 78, 39, 75, 80, 40, 77, 83, 46, 81, + 86, 55, 86, 113, 90, 114, 96, 75, 99, 102, 82, 106, 109, 92, 115, 114, 102, 124, 123, 113, 133, 132, 125, 144, 137, 132, 149, 142, 139, 155, 147, 146, 161, 150, 151, 166, 154, 155, 170, 157, 159, 173, 159, 161, 173, 163, 165, 176, 162, 167, 179, 163, 173, 183, 167, 177, 186, 172, 183, 191, 177, 189, 196, + 183, 195, 202, 188, 201, 207, 193, 205, 211, 197, 209, 215, 200, 211, 218, 201, 213, 219, 202, 214, 220, 202, 216, 222, 202, 216, 222, 203, 216, 222, 202, 216, 222, 203, 216, 222, 202, 216, 222, 201, 215, 221, 200, 214, 220, 200, 214, 220, 198, 213, 219, 195, 211, 217, 190, 206, 212, 190, 207, 213, 188, 204, 210, + 187, 201, 207, 183, 199, 205, 179, 195, 201, 174, 192, 198, 173, 191, 197, 172, 190, 196, 170, 188, 194, 177, 193, 199, 177, 193, 199, 184, 199, 205, 174, 191, 197, 181, 197, 202, 173, 190, 196, 185, 199, 204, 163, 182, 188, 170, 187, 194, 155, 175, 181, 145, 167, 176, 131, 155, 164, 129, 148, 155, 108, 130, 138, + 116, 137, 145, 123, 143, 150, 121, 142, 152, 101, 126, 137, 105, 126, 138, 87, 111, 122, 95, 116, 126, 72, 98, 108, 105, 125, 134, 98, 119, 127, 110, 130, 137, 104, 126, 133, 112, 133, 143, 113, 135, 145, 91, 118, 128, 104, 128, 138, 108, 131, 141, 91, 117, 128, 100, 124, 136, 119, 141, 149, 110, 134, 144, + 122, 145, 154, 117, 141, 150, 95, 122, 135, 118, 142, 151, 122, 145, 155, 98, 124, 135, 78, 104, 116, 101, 120, 131, 59, 87, 100, 68, 95, 107, 81, 109, 121, 75, 103, 116, 80, 109, 121, 92, 122, 134, 106, 136, 147, 120, 150, 162, 119, 149, 164, 126, 155, 169, 140, 166, 178, 139, 166, 178, 143, 169, 180, + 158, 180, 189, 154, 176, 186, 146, 170, 182, 133, 164, 175, 165, 185, 193, 162, 183, 192, 145, 170, 183, 154, 176, 186, 160, 181, 191, 150, 174, 185, 158, 181, 190, 179, 194, 202, 164, 184, 193, 151, 175, 185, 161, 181, 190, 175, 192, 198, 164, 184, 191, 163, 182, 190, 166, 183, 191, 146, 169, 178, 147, 169, 177, + 141, 165, 174, 168, 184, 190, 130, 157, 168, 153, 173, 182, 146, 170, 179, 125, 154, 165, 136, 161, 172, 136, 161, 171, 134, 158, 169, 140, 164, 172, 149, 169, 176, 140, 163, 170, 121, 148, 156, 142, 162, 169, 141, 161, 170, 154, 171, 179, 150, 167, 174, 140, 160, 168, 129, 152, 160, 108, 133, 143, 134, 153, 160, + 122, 143, 150, 117, 138, 146, 96, 117, 126, 107, 125, 131, 62, 87, 96, 118, 137, 145, 157, 170, 180, 125, 146, 157, 122, 143, 156, 95, 120, 135, 87, 112, 127, 71, 99, 115, 63, 92, 108, 103, 123, 136, 57, 83, 100, 84, 104, 119, 73, 94, 109, 44, 69, 86, 55, 76, 93, 45, 65, 83, 50, 67, 85, + 47, 63, 81, 39, 55, 73, 45, 60, 76, 41, 57, 74, 22, 42, 60, 35, 52, 72, 18, 39, 60, 23, 43, 65, 37, 56, 74, 35, 57, 73, 94, 108, 120, 94, 107, 122, 99, 115, 130, 86, 106, 123, 93, 115, 131, 135, 151, 162, 136, 153, 162, 93, 121, 132, 120, 146, 158, 118, 147, 160, 140, 164, 174, + 163, 182, 189, 176, 192, 199, 183, 199, 204, 179, 196, 203, 188, 202, 208, 189, 204, 211, 196, 210, 216, 197, 212, 218, 199, 213, 219, 201, 214, 220, 199, 214, 220, 202, 217, 222, 206, 221, 224, 206, 221, 224, 211, 223, 226, 213, 226, 228, 215, 227, 229, 219, 230, 231, 222, 232, 232, 228, 236, 236, 233, 238, 238, + 234, 239, 239, 235, 240, 240, 237, 243, 242, 238, 244, 243, 239, 245, 244, 239, 245, 244, 240, 246, 245, 241, 247, 246, 242, 247, 246, 241, 247, 246, 242, 248, 247, 243, 248, 247, 243, 248, 247, 242, 247, 246, 241, 247, 246, 241, 247, 246, 240, 246, 245, 240, 246, 245, 239, 245, 244, 239, 245, 244, 238, 244, 243, + 48, 14, 45, 50, 16, 47, 51, 18, 49, 49, 14, 46, 51, 15, 48, 53, 16, 48, 52, 15, 49, 53, 16, 49, 53, 16, 49, 55, 15, 50, 55, 15, 50, 55, 16, 50, 56, 16, 51, 56, 16, 51, 57, 17, 52, 58, 18, 52, 57, 17, 53, 58, 16, 53, 60, 18, 53, 60, 17, 52, 60, 17, 53, + 61, 18, 54, 61, 18, 55, 61, 18, 55, 62, 18, 55, 63, 20, 57, 62, 19, 56, 62, 19, 56, 65, 21, 58, 64, 20, 57, 65, 21, 57, 65, 21, 57, 67, 26, 60, 67, 25, 60, 67, 24, 60, 67, 25, 60, 69, 27, 61, 71, 30, 66, 70, 29, 66, 72, 32, 69, 74, 36, 72, 74, 36, 72, + 78, 41, 75, 77, 42, 76, 80, 45, 77, 82, 46, 79, 80, 43, 77, 80, 44, 78, 88, 56, 87, 104, 76, 105, 95, 64, 95, 73, 39, 75, 72, 35, 72, 74, 36, 72, 77, 38, 75, 75, 36, 73, 76, 37, 74, 76, 38, 74, 77, 40, 75, 79, 39, 76, 81, 44, 79, 79, 44, 78, 90, 62, 93, + 106, 85, 110, 89, 68, 93, 101, 82, 105, 110, 94, 115, 118, 104, 124, 127, 118, 138, 137, 131, 148, 142, 140, 156, 150, 151, 165, 156, 157, 172, 163, 164, 177, 166, 170, 182, 170, 176, 187, 171, 178, 188, 174, 181, 192, 175, 184, 194, 176, 186, 196, 178, 188, 198, 177, 189, 198, 182, 194, 202, 184, 197, 205, + 187, 200, 208, 190, 205, 212, 194, 209, 215, 197, 211, 217, 199, 214, 220, 202, 215, 221, 201, 215, 221, 202, 216, 222, 203, 217, 223, 202, 216, 222, 203, 217, 223, 202, 216, 222, 202, 217, 223, 202, 216, 222, 200, 216, 222, 197, 213, 219, 195, 211, 217, 193, 209, 215, 191, 207, 213, 188, 206, 212, 187, 204, 209, + 185, 201, 207, 182, 199, 206, 179, 196, 203, 177, 193, 200, 174, 190, 197, 171, 189, 196, 168, 186, 193, 171, 188, 195, 174, 191, 198, 174, 190, 198, 179, 194, 201, 176, 192, 200, 181, 195, 203, 164, 182, 191, 159, 179, 188, 159, 178, 188, 153, 172, 181, 130, 153, 165, 119, 143, 153, 124, 145, 151, 124, 143, 148, + 105, 127, 134, 121, 143, 150, 117, 138, 147, 112, 134, 144, 85, 110, 121, 86, 110, 119, 100, 121, 131, 76, 99, 110, 116, 136, 143, 94, 114, 125, 109, 128, 136, 105, 127, 134, 113, 133, 142, 95, 118, 127, 98, 121, 128, 103, 125, 131, 107, 129, 136, 109, 132, 141, 117, 138, 148, 108, 132, 143, 101, 126, 137, + 112, 135, 146, 107, 132, 144, 82, 111, 125, 114, 139, 148, 100, 126, 137, 84, 111, 124, 91, 116, 125, 74, 99, 110, 70, 95, 108, 64, 92, 106, 78, 105, 119, 89, 115, 129, 73, 103, 115, 97, 127, 138, 115, 143, 154, 106, 139, 153, 108, 142, 158, 112, 146, 162, 149, 171, 182, 141, 168, 181, 140, 168, 180, + 157, 179, 189, 152, 175, 185, 161, 182, 191, 155, 179, 190, 162, 183, 192, 146, 172, 183, 137, 166, 178, 165, 184, 194, 130, 160, 174, 166, 185, 194, 154, 177, 188, 167, 187, 195, 168, 188, 195, 172, 190, 198, 159, 182, 190, 161, 183, 190, 170, 188, 195, 160, 182, 190, 161, 182, 190, 155, 177, 186, 152, 175, 183, + 139, 163, 175, 157, 175, 186, 144, 166, 177, 155, 176, 184, 148, 170, 180, 138, 163, 173, 145, 168, 178, 146, 168, 178, 132, 158, 168, 155, 173, 181, 147, 169, 176, 127, 154, 162, 134, 159, 166, 132, 156, 164, 146, 165, 173, 148, 167, 174, 128, 150, 159, 97, 127, 138, 105, 132, 141, 139, 159, 165, 127, 149, 156, + 123, 144, 151, 139, 155, 162, 124, 141, 149, 106, 126, 132, 124, 143, 149, 139, 158, 165, 136, 157, 165, 151, 170, 179, 144, 164, 174, 128, 151, 162, 116, 142, 154, 113, 138, 151, 86, 115, 131, 94, 122, 136, 72, 103, 118, 112, 135, 148, 99, 122, 136, 60, 83, 98, 59, 81, 96, 38, 61, 78, 47, 65, 82, + 43, 60, 77, 44, 60, 77, 49, 64, 80, 38, 55, 72, 35, 52, 71, 27, 43, 65, 22, 40, 62, 18, 37, 58, 39, 57, 76, 59, 76, 92, 77, 93, 106, 119, 130, 143, 82, 100, 116, 74, 99, 116, 72, 98, 115, 136, 152, 164, 126, 146, 156, 116, 139, 150, 108, 137, 153, 122, 150, 162, 141, 164, 175, + 152, 174, 183, 168, 187, 194, 179, 195, 201, 188, 202, 208, 186, 202, 208, 184, 202, 208, 196, 210, 217, 200, 214, 220, 195, 211, 217, 197, 213, 219, 197, 212, 218, 199, 215, 221, 204, 220, 223, 210, 222, 226, 211, 223, 227, 215, 228, 230, 213, 226, 228, 218, 229, 232, 221, 231, 231, 225, 234, 234, 230, 237, 237, + 232, 238, 239, 235, 241, 240, 236, 242, 241, 237, 243, 242, 239, 245, 244, 241, 246, 245, 241, 247, 246, 242, 247, 246, 242, 248, 246, 242, 248, 247, 242, 248, 247, 242, 247, 246, 243, 248, 247, 243, 248, 247, 241, 247, 246, 242, 247, 246, 242, 247, 246, 240, 246, 245, 240, 246, 245, 239, 245, 244, 239, 245, 244, + 47, 15, 46, 48, 17, 47, 48, 14, 46, 50, 16, 47, 50, 16, 47, 53, 17, 49, 54, 17, 49, 54, 17, 49, 54, 16, 48, 54, 18, 51, 53, 16, 50, 56, 17, 52, 57, 18, 51, 56, 16, 51, 56, 16, 51, 56, 16, 51, 57, 17, 52, 58, 15, 52, 59, 16, 53, 60, 17, 54, 60, 16, 53, + 61, 18, 54, 61, 18, 55, 63, 20, 57, 61, 18, 55, 62, 19, 56, 63, 20, 57, 64, 21, 58, 65, 21, 58, 64, 20, 57, 65, 20, 57, 66, 22, 59, 67, 22, 59, 66, 24, 59, 69, 26, 62, 69, 27, 62, 71, 29, 64, 70, 29, 65, 72, 31, 67, 72, 33, 69, 74, 35, 71, 77, 40, 74, + 78, 41, 75, 79, 45, 78, 81, 47, 79, 78, 45, 77, 95, 65, 96, 105, 80, 108, 95, 69, 99, 82, 51, 84, 79, 47, 81, 79, 48, 81, 79, 46, 80, 81, 47, 82, 81, 48, 81, 80, 49, 80, 81, 51, 82, 82, 53, 84, 85, 53, 84, 85, 54, 85, 82, 54, 84, 98, 80, 105, 98, 84, 107, + 87, 73, 96, 98, 84, 105, 105, 93, 114, 117, 107, 127, 129, 120, 139, 135, 135, 153, 145, 149, 164, 156, 160, 173, 164, 168, 179, 167, 173, 184, 171, 179, 189, 174, 182, 193, 177, 187, 197, 180, 190, 200, 183, 193, 203, 184, 194, 204, 184, 197, 206, 185, 197, 206, 187, 200, 208, 187, 200, 208, 188, 203, 210, + 193, 206, 213, 192, 208, 215, 195, 211, 217, 197, 212, 219, 199, 214, 220, 201, 215, 221, 200, 215, 221, 200, 215, 221, 200, 215, 221, 200, 216, 222, 201, 217, 223, 200, 216, 222, 200, 216, 222, 199, 215, 221, 199, 215, 221, 197, 213, 219, 196, 212, 219, 194, 210, 216, 192, 208, 214, 186, 205, 211, 185, 202, 209, + 184, 200, 207, 181, 199, 206, 179, 197, 204, 175, 193, 200, 175, 192, 199, 171, 188, 196, 168, 186, 194, 168, 185, 193, 167, 185, 193, 178, 194, 201, 171, 189, 197, 177, 192, 200, 164, 182, 191, 163, 181, 191, 166, 183, 192, 152, 173, 184, 147, 166, 179, 113, 139, 154, 139, 158, 165, 114, 136, 144, 126, 145, 150, + 90, 114, 121, 109, 133, 140, 118, 139, 147, 105, 127, 135, 92, 116, 125, 71, 96, 105, 89, 111, 120, 85, 106, 117, 110, 128, 137, 97, 116, 126, 109, 129, 137, 105, 125, 135, 97, 120, 129, 108, 130, 139, 102, 124, 130, 109, 131, 137, 109, 129, 135, 99, 124, 130, 109, 132, 143, 110, 133, 145, 100, 124, 137, + 119, 141, 152, 93, 119, 132, 100, 126, 138, 88, 117, 128, 96, 121, 133, 67, 96, 108, 86, 110, 121, 69, 93, 104, 66, 91, 104, 63, 92, 106, 76, 103, 117, 80, 107, 122, 92, 117, 132, 88, 119, 134, 107, 137, 151, 97, 132, 149, 129, 156, 171, 129, 157, 172, 140, 166, 179, 135, 165, 178, 145, 171, 183, + 147, 173, 183, 158, 180, 190, 149, 173, 185, 168, 187, 195, 154, 178, 187, 133, 165, 177, 140, 169, 181, 155, 178, 189, 158, 180, 191, 160, 182, 192, 160, 181, 192, 168, 187, 196, 173, 191, 199, 145, 173, 184, 169, 188, 196, 157, 180, 189, 167, 186, 194, 160, 181, 189, 163, 183, 192, 172, 188, 195, 146, 170, 181, + 154, 174, 185, 171, 186, 194, 144, 168, 180, 145, 168, 179, 142, 166, 176, 138, 163, 174, 145, 168, 178, 146, 167, 178, 142, 165, 176, 154, 173, 182, 137, 162, 170, 143, 166, 173, 137, 160, 168, 139, 161, 169, 145, 165, 173, 114, 142, 151, 113, 140, 148, 145, 164, 170, 137, 159, 166, 141, 161, 168, 166, 180, 185, + 178, 190, 193, 168, 182, 188, 175, 190, 195, 160, 180, 184, 170, 188, 192, 169, 185, 191, 145, 167, 175, 146, 168, 176, 164, 182, 187, 144, 165, 174, 124, 150, 160, 134, 155, 165, 117, 144, 156, 102, 132, 145, 94, 125, 139, 111, 138, 151, 79, 110, 127, 59, 95, 109, 100, 127, 141, 84, 108, 123, 72, 90, 105, + 73, 86, 101, 76, 87, 103, 33, 49, 67, 27, 44, 63, 38, 54, 72, 20, 37, 59, 28, 43, 65, 24, 42, 62, 21, 42, 60, 63, 80, 93, 63, 79, 92, 133, 143, 153, 65, 86, 104, 52, 81, 99, 79, 105, 122, 136, 151, 162, 120, 140, 151, 103, 129, 141, 132, 155, 167, 139, 161, 171, 145, 168, 177, + 159, 180, 187, 171, 189, 196, 173, 192, 198, 179, 198, 204, 186, 203, 208, 184, 202, 208, 184, 201, 209, 192, 208, 215, 194, 209, 216, 194, 210, 216, 199, 213, 219, 199, 214, 220, 202, 217, 222, 207, 221, 224, 211, 224, 227, 217, 228, 231, 217, 229, 231, 216, 228, 230, 217, 229, 229, 224, 233, 233, 227, 235, 234, + 231, 238, 237, 234, 240, 239, 235, 241, 240, 237, 243, 242, 239, 245, 244, 239, 245, 244, 242, 248, 247, 243, 248, 247, 243, 248, 247, 243, 249, 248, 243, 248, 247, 242, 248, 247, 242, 248, 247, 243, 248, 247, 242, 248, 247, 241, 247, 246, 241, 247, 246, 242, 247, 246, 241, 246, 245, 240, 246, 245, 239, 245, 244, + 47, 15, 46, 48, 15, 46, 50, 16, 47, 49, 15, 46, 48, 14, 46, 51, 16, 47, 51, 14, 47, 52, 15, 47, 53, 16, 48, 53, 15, 47, 53, 16, 48, 55, 17, 48, 55, 15, 49, 56, 16, 50, 56, 16, 51, 56, 16, 51, 58, 17, 53, 59, 16, 53, 58, 15, 52, 60, 16, 54, 60, 17, 54, + 60, 17, 55, 60, 17, 54, 62, 19, 55, 62, 19, 56, 63, 20, 57, 63, 19, 56, 62, 19, 56, 65, 22, 59, 67, 23, 59, 65, 20, 57, 66, 21, 58, 68, 24, 60, 69, 25, 61, 68, 24, 61, 70, 28, 64, 70, 27, 65, 70, 30, 66, 73, 34, 69, 72, 34, 68, 73, 35, 69, 77, 40, 73, + 80, 44, 76, 79, 46, 78, 93, 65, 94, 111, 86, 114, 93, 66, 95, 85, 56, 86, 85, 57, 87, 86, 58, 87, 86, 55, 87, 88, 58, 89, 89, 59, 88, 91, 62, 91, 90, 64, 92, 92, 69, 95, 90, 68, 94, 92, 70, 97, 96, 77, 101, 95, 79, 102, 112, 100, 121, 99, 89, 110, 102, 92, 113, + 107, 100, 120, 115, 110, 129, 120, 115, 132, 129, 128, 144, 137, 140, 156, 145, 151, 165, 153, 162, 174, 162, 171, 181, 168, 176, 186, 174, 183, 193, 179, 189, 199, 182, 192, 202, 185, 195, 205, 189, 198, 208, 190, 201, 210, 190, 203, 212, 191, 204, 212, 191, 205, 213, 192, 207, 214, 194, 207, 215, 194, 208, 216, + 195, 210, 217, 196, 212, 219, 195, 211, 218, 197, 213, 220, 197, 213, 219, 197, 213, 219, 198, 214, 220, 199, 214, 221, 199, 215, 221, 198, 215, 220, 199, 215, 221, 199, 216, 222, 201, 216, 222, 198, 214, 219, 196, 214, 219, 195, 212, 218, 194, 211, 217, 190, 208, 214, 188, 205, 212, 186, 203, 211, 184, 202, 209, + 182, 199, 206, 180, 197, 204, 178, 195, 202, 175, 193, 200, 175, 193, 200, 173, 191, 198, 167, 185, 193, 167, 185, 193, 163, 182, 191, 159, 178, 188, 166, 184, 192, 166, 183, 192, 165, 183, 193, 165, 183, 192, 148, 169, 181, 147, 166, 177, 125, 148, 162, 124, 146, 159, 127, 148, 157, 127, 146, 154, 95, 119, 127, + 105, 127, 134, 105, 129, 135, 104, 128, 135, 91, 117, 124, 101, 123, 129, 82, 107, 113, 83, 105, 113, 84, 106, 115, 112, 129, 138, 86, 107, 115, 116, 134, 142, 106, 127, 137, 95, 118, 128, 115, 134, 144, 114, 134, 141, 113, 134, 139, 116, 136, 141, 88, 113, 120, 113, 134, 144, 107, 130, 143, 67, 96, 111, + 106, 130, 140, 91, 117, 130, 79, 108, 121, 78, 106, 119, 96, 120, 132, 76, 104, 115, 75, 100, 112, 62, 87, 99, 64, 89, 103, 71, 98, 111, 88, 113, 128, 69, 100, 116, 91, 119, 134, 94, 126, 142, 106, 137, 152, 105, 138, 155, 130, 157, 171, 134, 160, 174, 124, 153, 172, 151, 174, 188, 143, 171, 182, + 155, 178, 189, 142, 170, 183, 156, 180, 189, 154, 177, 188, 139, 168, 181, 157, 179, 190, 149, 175, 185, 160, 181, 193, 157, 180, 191, 166, 185, 195, 156, 178, 189, 160, 182, 193, 172, 190, 199, 167, 187, 197, 161, 183, 192, 174, 190, 199, 168, 187, 195, 166, 185, 193, 168, 186, 194, 158, 179, 187, 156, 177, 185, + 155, 176, 186, 156, 175, 186, 161, 179, 189, 151, 172, 184, 144, 167, 179, 154, 175, 184, 145, 169, 179, 137, 163, 175, 141, 166, 175, 156, 175, 183, 139, 162, 172, 143, 165, 173, 146, 166, 175, 144, 165, 172, 117, 145, 154, 132, 155, 162, 151, 169, 175, 140, 161, 169, 167, 182, 186, 152, 173, 178, 155, 174, 180, + 153, 172, 179, 139, 164, 172, 143, 168, 173, 160, 179, 184, 156, 177, 183, 147, 170, 177, 146, 167, 175, 161, 179, 186, 162, 181, 186, 155, 176, 183, 132, 156, 166, 109, 140, 151, 143, 163, 172, 139, 161, 171, 117, 144, 156, 114, 140, 154, 93, 123, 139, 115, 138, 151, 101, 125, 139, 91, 115, 128, 84, 102, 115, + 43, 58, 74, 33, 48, 68, 53, 66, 84, 58, 72, 88, 62, 76, 92, 57, 70, 88, 50, 64, 81, 50, 66, 80, 43, 60, 73, 84, 97, 107, 92, 106, 115, 133, 143, 151, 77, 93, 110, 63, 88, 106, 75, 99, 117, 126, 143, 155, 126, 145, 156, 106, 132, 144, 119, 147, 157, 141, 163, 172, 156, 174, 183, + 164, 183, 191, 171, 189, 196, 174, 193, 199, 181, 198, 204, 187, 203, 208, 188, 204, 210, 188, 204, 210, 188, 205, 211, 189, 205, 212, 187, 205, 212, 198, 213, 218, 200, 214, 220, 202, 217, 223, 205, 219, 224, 207, 222, 225, 211, 224, 228, 216, 229, 231, 221, 231, 232, 222, 232, 232, 223, 232, 232, 226, 234, 235, + 227, 236, 234, 232, 239, 238, 236, 242, 241, 237, 243, 242, 239, 245, 244, 240, 246, 245, 242, 247, 246, 242, 247, 246, 242, 248, 247, 242, 248, 247, 243, 249, 248, 243, 248, 247, 243, 248, 247, 243, 248, 247, 244, 249, 248, 242, 248, 247, 242, 247, 246, 241, 247, 246, 241, 247, 246, 241, 246, 245, 241, 246, 245, + 46, 14, 45, 48, 15, 46, 46, 15, 46, 49, 15, 46, 49, 15, 47, 50, 15, 47, 50, 13, 46, 52, 15, 47, 52, 15, 47, 54, 14, 47, 54, 15, 47, 54, 16, 48, 55, 16, 49, 55, 15, 49, 57, 17, 52, 55, 15, 51, 58, 16, 52, 58, 14, 52, 59, 17, 53, 60, 17, 54, 60, 17, 53, + 62, 19, 56, 60, 17, 54, 62, 19, 55, 63, 21, 57, 63, 20, 57, 63, 18, 55, 65, 21, 58, 64, 21, 57, 66, 22, 58, 66, 22, 58, 66, 22, 58, 67, 23, 59, 68, 24, 60, 69, 25, 61, 71, 27, 65, 70, 29, 66, 71, 31, 66, 71, 33, 67, 72, 35, 67, 73, 36, 70, 74, 40, 71, + 85, 56, 85, 96, 70, 98, 87, 59, 89, 81, 53, 83, 82, 55, 85, 85, 59, 89, 88, 62, 91, 91, 64, 92, 93, 67, 92, 94, 70, 95, 98, 73, 98, 99, 76, 101, 101, 79, 104, 106, 87, 111, 111, 94, 118, 114, 97, 122, 120, 111, 133, 126, 122, 142, 118, 114, 133, 122, 118, 136, 124, 121, 140, + 128, 127, 145, 132, 134, 151, 138, 144, 160, 146, 154, 168, 150, 159, 172, 158, 167, 178, 165, 175, 184, 171, 181, 190, 176, 187, 196, 180, 192, 200, 185, 196, 204, 190, 201, 209, 190, 202, 210, 192, 205, 212, 192, 205, 213, 193, 207, 215, 194, 208, 216, 192, 208, 215, 193, 209, 216, 194, 209, 217, 195, 211, 218, + 195, 211, 218, 197, 212, 219, 196, 213, 220, 197, 213, 220, 196, 213, 220, 194, 213, 219, 195, 214, 220, 196, 214, 220, 197, 214, 220, 195, 214, 219, 195, 214, 219, 193, 211, 218, 192, 211, 217, 193, 212, 218, 193, 211, 217, 191, 209, 215, 191, 210, 215, 190, 208, 215, 186, 204, 211, 184, 202, 209, 183, 200, 207, + 179, 197, 204, 177, 195, 202, 175, 193, 200, 174, 192, 199, 172, 191, 197, 171, 189, 197, 171, 188, 197, 165, 183, 192, 163, 182, 191, 156, 176, 187, 156, 177, 187, 157, 177, 186, 163, 182, 189, 163, 181, 190, 159, 176, 185, 128, 152, 165, 147, 161, 173, 122, 142, 156, 118, 138, 148, 123, 142, 151, 106, 127, 136, + 109, 131, 139, 85, 108, 116, 101, 122, 129, 89, 112, 118, 85, 110, 116, 101, 123, 129, 81, 102, 110, 91, 110, 119, 96, 116, 123, 103, 121, 129, 101, 120, 128, 95, 115, 125, 115, 134, 143, 94, 116, 126, 86, 110, 118, 116, 136, 143, 117, 135, 143, 99, 123, 132, 104, 126, 138, 97, 120, 132, 66, 95, 108, + 92, 116, 126, 78, 104, 117, 104, 126, 138, 71, 99, 113, 87, 112, 125, 89, 112, 125, 70, 95, 107, 69, 93, 106, 59, 85, 98, 65, 94, 106, 85, 111, 124, 76, 106, 120, 96, 125, 141, 107, 137, 153, 104, 136, 153, 112, 143, 159, 115, 146, 164, 123, 153, 170, 135, 161, 177, 140, 166, 181, 150, 174, 187, + 143, 171, 185, 153, 178, 189, 158, 180, 190, 154, 178, 189, 153, 177, 188, 165, 186, 195, 150, 175, 188, 153, 177, 189, 168, 187, 198, 153, 177, 189, 150, 175, 187, 166, 186, 196, 167, 186, 196, 162, 183, 194, 162, 184, 193, 157, 180, 191, 165, 185, 193, 163, 183, 193, 166, 185, 194, 160, 180, 189, 154, 175, 185, + 148, 170, 181, 167, 183, 192, 156, 175, 186, 152, 173, 186, 151, 172, 184, 150, 172, 182, 148, 171, 181, 133, 160, 171, 145, 168, 177, 152, 172, 180, 146, 168, 177, 154, 173, 181, 139, 162, 171, 137, 160, 169, 145, 165, 172, 162, 179, 185, 152, 174, 180, 150, 171, 178, 104, 136, 144, 121, 148, 156, 162, 179, 185, + 151, 172, 179, 161, 180, 185, 167, 183, 188, 159, 179, 184, 138, 163, 170, 146, 168, 176, 164, 181, 187, 167, 184, 191, 166, 184, 190, 176, 189, 194, 134, 158, 165, 132, 158, 168, 146, 170, 179, 157, 178, 186, 168, 186, 194, 158, 175, 185, 146, 166, 176, 87, 118, 133, 86, 116, 131, 82, 107, 121, 49, 72, 87, + 30, 50, 66, 34, 52, 69, 42, 57, 74, 29, 46, 64, 35, 50, 68, 29, 46, 63, 21, 40, 56, 27, 44, 60, 45, 62, 73, 69, 84, 91, 103, 114, 121, 107, 117, 128, 79, 95, 109, 64, 85, 101, 88, 109, 124, 113, 132, 146, 102, 128, 139, 123, 145, 154, 125, 149, 158, 138, 160, 168, 149, 170, 178, + 164, 183, 190, 166, 185, 191, 175, 193, 200, 178, 196, 202, 181, 198, 205, 185, 202, 208, 190, 205, 211, 188, 204, 210, 184, 202, 209, 190, 207, 213, 194, 209, 215, 202, 216, 222, 204, 218, 221, 206, 219, 225, 208, 222, 225, 210, 223, 227, 214, 226, 229, 217, 229, 231, 221, 232, 232, 224, 233, 233, 227, 235, 235, + 229, 237, 236, 229, 237, 236, 233, 240, 239, 237, 242, 242, 239, 245, 244, 240, 246, 245, 241, 247, 246, 242, 247, 246, 241, 247, 246, 242, 248, 247, 242, 248, 247, 242, 248, 247, 243, 248, 247, 243, 248, 247, 243, 248, 247, 242, 248, 247, 242, 247, 246, 243, 248, 247, 243, 248, 247, 241, 247, 246, 241, 246, 245, + 46, 13, 45, 46, 14, 46, 48, 15, 46, 48, 16, 47, 49, 15, 46, 50, 16, 47, 49, 13, 45, 52, 15, 47, 52, 15, 47, 54, 15, 47, 53, 15, 47, 54, 16, 48, 54, 16, 49, 55, 15, 50, 56, 16, 51, 56, 17, 52, 58, 17, 53, 59, 17, 52, 59, 16, 52, 59, 15, 52, 61, 18, 55, + 61, 18, 55, 61, 18, 54, 61, 19, 54, 62, 19, 55, 63, 20, 56, 65, 22, 58, 64, 20, 57, 65, 21, 58, 66, 22, 59, 66, 22, 58, 68, 23, 59, 68, 24, 60, 69, 25, 61, 69, 26, 62, 71, 30, 65, 72, 32, 67, 70, 31, 66, 71, 33, 66, 70, 37, 68, 81, 54, 83, 94, 69, 96, + 87, 61, 90, 77, 52, 80, 81, 56, 84, 83, 58, 86, 87, 60, 89, 88, 61, 90, 92, 67, 93, 95, 71, 97, 98, 76, 100, 101, 81, 103, 106, 88, 109, 110, 94, 115, 116, 103, 126, 119, 110, 133, 125, 119, 141, 138, 136, 157, 138, 141, 160, 134, 138, 156, 139, 144, 161, 144, 148, 163, 147, 151, 165, + 153, 157, 171, 153, 160, 174, 158, 167, 181, 161, 171, 184, 166, 177, 189, 172, 183, 193, 174, 186, 195, 179, 191, 199, 182, 195, 203, 186, 199, 207, 188, 201, 209, 190, 203, 211, 193, 206, 214, 193, 207, 215, 194, 209, 216, 194, 209, 217, 195, 211, 218, 195, 211, 218, 196, 212, 218, 196, 212, 219, 196, 213, 220, + 197, 212, 219, 194, 212, 219, 194, 212, 219, 196, 214, 220, 195, 213, 220, 195, 213, 220, 195, 213, 219, 195, 213, 220, 195, 213, 220, 194, 213, 220, 194, 212, 219, 193, 211, 218, 192, 210, 217, 190, 209, 216, 188, 207, 214, 187, 206, 213, 186, 205, 212, 184, 203, 210, 182, 201, 208, 181, 200, 207, 179, 197, 204, + 180, 198, 205, 176, 194, 201, 171, 190, 197, 172, 190, 197, 171, 189, 197, 171, 190, 197, 170, 188, 195, 166, 184, 192, 160, 179, 188, 151, 172, 183, 151, 172, 184, 150, 172, 183, 158, 177, 186, 160, 178, 187, 144, 166, 175, 117, 144, 155, 120, 141, 154, 115, 136, 148, 114, 136, 146, 129, 147, 155, 115, 135, 144, + 106, 127, 135, 87, 110, 118, 106, 126, 133, 80, 101, 108, 77, 99, 107, 82, 103, 111, 81, 102, 110, 77, 98, 105, 94, 113, 119, 96, 116, 123, 99, 119, 125, 94, 114, 123, 90, 111, 121, 94, 115, 126, 109, 129, 138, 107, 127, 136, 112, 131, 141, 87, 112, 123, 113, 134, 146, 102, 125, 136, 79, 106, 118, + 83, 107, 118, 85, 108, 119, 93, 114, 126, 83, 106, 119, 80, 104, 117, 78, 102, 116, 72, 96, 109, 59, 85, 97, 68, 92, 103, 61, 89, 102, 76, 104, 116, 97, 124, 138, 101, 132, 146, 109, 140, 155, 108, 139, 155, 116, 146, 163, 122, 150, 167, 112, 145, 164, 128, 156, 173, 125, 155, 173, 137, 166, 181, + 140, 169, 182, 158, 181, 192, 153, 177, 189, 148, 174, 186, 152, 176, 189, 163, 184, 194, 168, 186, 197, 160, 181, 193, 160, 181, 196, 153, 176, 190, 161, 183, 194, 169, 188, 198, 171, 190, 198, 166, 186, 195, 152, 177, 189, 162, 184, 195, 167, 187, 195, 160, 181, 191, 175, 192, 198, 159, 179, 188, 166, 183, 193, + 158, 177, 188, 160, 179, 189, 163, 182, 191, 154, 175, 187, 153, 175, 186, 155, 175, 186, 140, 165, 178, 156, 176, 185, 148, 170, 180, 158, 176, 184, 152, 171, 181, 151, 171, 180, 143, 165, 174, 150, 171, 179, 156, 174, 183, 148, 169, 179, 143, 167, 175, 136, 160, 169, 163, 179, 186, 156, 175, 182, 155, 173, 180, + 149, 169, 176, 155, 174, 181, 161, 179, 185, 160, 177, 184, 160, 179, 184, 162, 179, 186, 155, 174, 182, 169, 186, 192, 158, 177, 185, 152, 174, 182, 162, 181, 187, 173, 189, 195, 175, 191, 198, 155, 178, 187, 159, 180, 189, 135, 160, 172, 103, 133, 147, 74, 108, 124, 123, 145, 158, 87, 110, 126, 49, 71, 87, + 28, 48, 65, 22, 43, 58, 31, 49, 65, 28, 46, 60, 29, 46, 61, 28, 46, 60, 45, 61, 74, 65, 79, 91, 76, 88, 97, 111, 121, 127, 143, 150, 155, 97, 110, 121, 87, 100, 115, 54, 76, 93, 90, 109, 123, 117, 136, 148, 97, 122, 133, 118, 141, 151, 122, 148, 156, 151, 171, 177, 162, 180, 186, + 176, 191, 197, 157, 179, 186, 167, 186, 193, 185, 200, 206, 181, 198, 204, 187, 202, 209, 187, 203, 210, 182, 201, 206, 184, 202, 208, 185, 204, 210, 192, 209, 215, 199, 213, 218, 206, 218, 223, 205, 218, 222, 206, 219, 223, 205, 220, 223, 207, 221, 224, 214, 227, 229, 217, 229, 231, 222, 231, 232, 227, 235, 235, + 229, 237, 237, 231, 237, 237, 231, 239, 238, 236, 242, 241, 237, 243, 243, 240, 245, 244, 241, 247, 246, 241, 247, 246, 241, 247, 246, 242, 247, 246, 242, 248, 247, 242, 248, 247, 242, 248, 247, 243, 248, 247, 243, 248, 247, 243, 248, 247, 243, 248, 248, 242, 247, 246, 242, 247, 246, 241, 246, 245, 242, 247, 246, + 46, 16, 45, 47, 16, 45, 46, 14, 45, 46, 14, 46, 47, 15, 46, 49, 15, 46, 50, 14, 46, 51, 14, 46, 51, 13, 45, 52, 15, 47, 52, 14, 46, 53, 16, 48, 55, 17, 50, 54, 14, 49, 56, 16, 51, 56, 16, 51, 58, 18, 52, 56, 14, 50, 59, 17, 53, 58, 14, 51, 59, 16, 53, + 59, 16, 53, 61, 17, 54, 61, 19, 55, 62, 20, 55, 66, 24, 59, 64, 20, 57, 64, 20, 57, 67, 23, 60, 65, 21, 58, 67, 24, 59, 68, 26, 60, 69, 27, 59, 68, 26, 58, 71, 30, 63, 70, 29, 64, 70, 30, 64, 67, 28, 61, 77, 47, 77, 92, 66, 94, 85, 60, 87, 75, 48, 77, + 77, 52, 80, 82, 58, 85, 82, 59, 84, 88, 65, 90, 90, 67, 92, 94, 71, 95, 97, 76, 98, 100, 81, 102, 106, 90, 109, 112, 98, 116, 118, 106, 124, 121, 111, 132, 129, 123, 143, 137, 135, 155, 153, 156, 174, 148, 153, 171, 150, 155, 172, 154, 161, 176, 157, 165, 178, 163, 171, 184, 165, 173, 187, + 167, 175, 189, 170, 178, 191, 171, 182, 195, 175, 186, 197, 180, 190, 200, 181, 193, 202, 183, 196, 204, 185, 200, 207, 186, 201, 209, 189, 204, 211, 190, 206, 213, 193, 208, 215, 193, 209, 216, 194, 209, 217, 194, 210, 217, 195, 211, 218, 194, 211, 218, 195, 212, 218, 195, 212, 219, 193, 211, 218, 193, 211, 218, + 194, 212, 219, 194, 212, 219, 194, 212, 219, 195, 213, 220, 195, 213, 220, 195, 213, 220, 194, 212, 219, 193, 212, 219, 194, 213, 220, 192, 210, 217, 192, 210, 218, 191, 209, 217, 190, 209, 216, 187, 206, 213, 186, 206, 213, 183, 203, 211, 183, 203, 211, 184, 204, 210, 183, 203, 209, 181, 199, 206, 174, 193, 201, + 173, 193, 200, 172, 191, 199, 171, 190, 198, 170, 189, 196, 169, 187, 196, 166, 185, 193, 162, 182, 190, 156, 176, 186, 153, 173, 183, 142, 164, 176, 139, 162, 174, 150, 170, 180, 153, 172, 181, 156, 175, 184, 133, 157, 168, 131, 153, 164, 115, 137, 148, 101, 125, 135, 116, 136, 147, 113, 133, 143, 97, 121, 130, + 92, 115, 125, 93, 114, 124, 87, 108, 115, 65, 87, 97, 79, 99, 109, 83, 103, 112, 86, 106, 114, 87, 107, 114, 87, 108, 115, 87, 109, 116, 104, 123, 129, 71, 95, 102, 98, 118, 126, 82, 104, 114, 107, 127, 136, 102, 123, 132, 117, 135, 144, 94, 116, 128, 114, 134, 145, 97, 121, 132, 73, 98, 109, + 96, 117, 126, 78, 101, 112, 91, 112, 124, 67, 90, 104, 71, 93, 107, 55, 78, 92, 60, 82, 95, 70, 91, 102, 59, 85, 97, 83, 107, 119, 78, 105, 117, 85, 115, 129, 108, 137, 153, 99, 132, 150, 107, 139, 155, 101, 135, 152, 120, 149, 166, 126, 153, 170, 118, 150, 167, 135, 161, 178, 140, 168, 183, + 144, 171, 185, 159, 182, 193, 154, 178, 189, 145, 172, 185, 159, 182, 193, 163, 183, 194, 165, 185, 195, 169, 187, 198, 163, 182, 195, 168, 188, 198, 164, 183, 195, 170, 189, 199, 162, 183, 194, 163, 184, 194, 160, 183, 193, 162, 185, 194, 169, 189, 197, 168, 188, 197, 172, 188, 198, 169, 187, 195, 165, 184, 193, + 162, 181, 190, 171, 188, 196, 163, 182, 191, 162, 181, 191, 159, 178, 190, 147, 170, 183, 152, 173, 184, 149, 172, 182, 151, 172, 182, 148, 169, 179, 155, 174, 183, 145, 167, 177, 133, 158, 169, 147, 169, 178, 156, 175, 184, 153, 173, 182, 141, 165, 175, 151, 172, 180, 147, 168, 176, 149, 170, 177, 161, 177, 184, + 159, 177, 184, 157, 176, 182, 149, 170, 177, 145, 167, 175, 148, 169, 177, 152, 172, 179, 139, 162, 171, 147, 169, 177, 183, 196, 201, 152, 174, 182, 175, 192, 197, 182, 197, 202, 177, 194, 199, 176, 193, 199, 156, 178, 187, 178, 191, 198, 167, 182, 190, 170, 184, 191, 111, 136, 149, 86, 110, 124, 45, 69, 84, + 27, 48, 63, 26, 45, 61, 34, 52, 66, 34, 51, 64, 41, 56, 68, 37, 53, 65, 64, 77, 88, 70, 82, 92, 78, 90, 98, 92, 104, 110, 106, 117, 125, 147, 155, 163, 81, 96, 111, 57, 76, 94, 116, 132, 144, 84, 109, 120, 95, 119, 130, 105, 130, 139, 126, 150, 158, 137, 161, 169, 162, 181, 187, + 175, 190, 196, 183, 197, 202, 163, 184, 191, 173, 192, 199, 184, 200, 206, 181, 199, 205, 182, 199, 206, 184, 203, 208, 186, 204, 210, 187, 205, 211, 187, 206, 213, 190, 207, 212, 197, 212, 218, 201, 216, 220, 206, 219, 223, 207, 221, 224, 205, 219, 222, 211, 223, 228, 212, 225, 227, 216, 228, 230, 220, 231, 232, + 226, 235, 235, 230, 236, 237, 232, 239, 239, 235, 240, 240, 237, 243, 242, 237, 244, 243, 241, 246, 245, 240, 246, 245, 241, 247, 246, 242, 247, 246, 242, 248, 247, 241, 247, 246, 242, 248, 247, 242, 248, 247, 242, 248, 247, 243, 248, 247, 243, 248, 246, 242, 247, 246, 242, 248, 247, 241, 246, 245, 240, 246, 245, + 45, 15, 44, 44, 14, 43, 48, 17, 46, 46, 14, 44, 47, 14, 44, 48, 14, 45, 49, 16, 46, 51, 13, 46, 50, 13, 45, 52, 15, 47, 52, 15, 47, 52, 15, 47, 55, 17, 49, 55, 16, 50, 56, 16, 51, 56, 16, 51, 57, 17, 53, 57, 16, 51, 59, 17, 52, 58, 15, 52, 60, 17, 54, + 61, 18, 55, 59, 16, 54, 61, 19, 54, 63, 20, 56, 64, 22, 57, 64, 20, 57, 65, 21, 58, 66, 22, 59, 68, 26, 61, 67, 25, 60, 67, 26, 58, 69, 30, 61, 70, 32, 63, 66, 29, 61, 66, 31, 63, 72, 40, 70, 91, 65, 91, 87, 62, 87, 71, 43, 72, 74, 48, 75, 80, 52, 80, + 80, 55, 82, 87, 64, 88, 89, 68, 91, 94, 74, 98, 96, 78, 100, 100, 84, 105, 103, 89, 109, 113, 100, 117, 116, 106, 123, 121, 110, 128, 132, 124, 141, 137, 134, 153, 145, 146, 163, 154, 158, 174, 155, 161, 176, 162, 168, 182, 167, 175, 189, 169, 178, 190, 173, 182, 193, 175, 185, 194, 176, 186, 197, + 179, 190, 201, 181, 193, 203, 183, 195, 205, 184, 196, 206, 186, 198, 207, 188, 201, 209, 187, 203, 210, 189, 205, 212, 190, 206, 213, 192, 208, 215, 192, 208, 215, 194, 210, 217, 193, 210, 217, 194, 211, 218, 194, 211, 218, 193, 211, 218, 193, 211, 218, 193, 211, 218, 192, 210, 217, 194, 212, 219, 192, 211, 218, + 192, 211, 218, 192, 211, 218, 193, 211, 218, 192, 211, 218, 193, 211, 219, 194, 211, 219, 194, 212, 219, 192, 211, 218, 191, 210, 218, 190, 209, 216, 189, 208, 215, 187, 206, 214, 186, 206, 214, 184, 204, 212, 183, 204, 212, 180, 201, 209, 179, 200, 208, 177, 199, 207, 177, 197, 205, 177, 196, 203, 174, 193, 201, + 171, 191, 199, 167, 187, 195, 166, 185, 193, 168, 186, 195, 161, 182, 190, 166, 185, 192, 154, 175, 185, 152, 173, 182, 142, 165, 176, 130, 155, 168, 122, 148, 163, 139, 161, 173, 143, 165, 175, 148, 167, 177, 144, 165, 174, 125, 147, 159, 117, 139, 149, 107, 128, 137, 102, 123, 131, 92, 114, 124, 93, 117, 126, + 102, 123, 132, 81, 102, 113, 77, 96, 106, 56, 78, 89, 65, 84, 96, 90, 109, 117, 83, 103, 112, 74, 96, 105, 102, 123, 128, 81, 104, 110, 88, 110, 117, 106, 125, 132, 96, 117, 124, 95, 116, 123, 99, 119, 128, 98, 118, 127, 96, 117, 127, 80, 105, 118, 111, 132, 144, 89, 114, 125, 69, 96, 105, + 72, 98, 106, 83, 104, 112, 70, 92, 104, 67, 87, 101, 61, 82, 96, 65, 81, 93, 50, 70, 83, 60, 82, 93, 73, 95, 106, 81, 106, 117, 91, 115, 130, 108, 133, 149, 96, 128, 146, 103, 135, 153, 102, 136, 153, 112, 142, 159, 98, 133, 152, 119, 148, 167, 139, 164, 178, 134, 160, 178, 147, 172, 186, + 145, 171, 185, 147, 173, 187, 161, 182, 195, 166, 185, 196, 169, 188, 198, 166, 185, 196, 168, 186, 197, 157, 179, 190, 159, 181, 193, 165, 185, 195, 158, 181, 193, 167, 187, 197, 171, 191, 199, 166, 187, 197, 173, 193, 201, 176, 194, 201, 170, 191, 199, 171, 189, 198, 164, 185, 195, 170, 190, 198, 171, 190, 198, + 164, 185, 194, 172, 190, 198, 169, 186, 194, 151, 173, 184, 153, 174, 186, 160, 179, 190, 152, 175, 185, 145, 168, 178, 157, 177, 185, 153, 173, 182, 147, 169, 177, 145, 168, 176, 148, 169, 178, 162, 180, 187, 140, 165, 176, 145, 169, 179, 151, 172, 181, 155, 174, 182, 153, 173, 181, 150, 171, 179, 159, 177, 183, + 148, 169, 176, 148, 169, 175, 150, 171, 178, 150, 170, 178, 164, 180, 187, 135, 160, 168, 163, 180, 186, 167, 184, 191, 138, 163, 172, 156, 178, 185, 159, 180, 186, 158, 180, 187, 154, 178, 186, 160, 182, 190, 170, 188, 195, 145, 168, 178, 113, 143, 156, 110, 140, 154, 103, 131, 145, 80, 104, 119, 37, 63, 79, + 48, 68, 80, 49, 66, 79, 34, 52, 66, 19, 40, 53, 46, 62, 73, 65, 78, 88, 68, 81, 89, 74, 86, 94, 100, 111, 118, 113, 123, 129, 120, 131, 138, 106, 117, 128, 65, 81, 97, 66, 85, 101, 105, 123, 133, 98, 119, 129, 87, 113, 124, 106, 130, 140, 114, 140, 151, 139, 163, 171, 160, 180, 186, + 182, 196, 200, 187, 201, 206, 188, 201, 208, 176, 194, 201, 179, 197, 203, 187, 202, 208, 186, 203, 209, 188, 205, 211, 184, 203, 209, 184, 203, 209, 186, 204, 211, 189, 206, 213, 195, 210, 217, 196, 211, 218, 199, 215, 218, 206, 218, 222, 209, 221, 225, 210, 221, 225, 213, 225, 227, 215, 226, 228, 220, 229, 232, + 224, 233, 233, 227, 235, 234, 230, 238, 238, 234, 240, 239, 236, 242, 241, 236, 242, 241, 237, 243, 242, 238, 244, 243, 239, 245, 244, 240, 246, 246, 241, 247, 246, 242, 248, 247, 242, 248, 247, 242, 247, 246, 242, 248, 247, 243, 248, 247, 243, 248, 247, 242, 248, 247, 242, 247, 246, 241, 247, 246, 241, 247, 246, + 45, 15, 44, 45, 15, 44, 45, 15, 44, 46, 14, 43, 46, 13, 44, 46, 12, 43, 48, 14, 44, 50, 14, 45, 51, 14, 46, 53, 16, 47, 53, 16, 48, 53, 16, 48, 53, 15, 47, 55, 15, 49, 55, 16, 50, 56, 16, 51, 57, 17, 52, 56, 16, 51, 57, 16, 51, 59, 16, 53, 59, 16, 53, + 61, 18, 55, 60, 18, 53, 62, 20, 55, 61, 20, 55, 63, 21, 56, 66, 23, 59, 65, 21, 58, 66, 22, 59, 67, 24, 60, 69, 28, 60, 69, 31, 63, 68, 30, 62, 66, 31, 62, 69, 38, 69, 90, 64, 91, 88, 63, 90, 72, 45, 73, 71, 46, 72, 73, 50, 76, 77, 53, 79, 83, 60, 83, + 88, 67, 90, 92, 72, 95, 95, 79, 102, 95, 83, 105, 105, 95, 115, 108, 99, 119, 113, 106, 125, 119, 113, 132, 125, 125, 143, 134, 133, 151, 141, 143, 160, 149, 157, 173, 152, 164, 179, 158, 170, 183, 163, 175, 188, 170, 182, 192, 174, 186, 197, 177, 189, 199, 181, 193, 203, 184, 196, 206, 186, 198, 208, + 185, 199, 209, 189, 201, 211, 189, 201, 211, 189, 202, 211, 190, 204, 213, 190, 206, 213, 191, 207, 214, 192, 208, 215, 192, 209, 216, 192, 209, 216, 194, 210, 217, 193, 210, 217, 193, 211, 218, 192, 210, 218, 193, 211, 218, 193, 211, 218, 192, 210, 217, 193, 211, 218, 191, 211, 218, 191, 210, 217, 191, 210, 217, + 190, 211, 217, 191, 210, 217, 191, 210, 218, 192, 211, 218, 191, 210, 218, 191, 210, 218, 191, 209, 218, 190, 209, 217, 191, 209, 217, 189, 208, 216, 186, 206, 214, 182, 203, 211, 180, 202, 210, 180, 201, 209, 179, 200, 208, 179, 200, 208, 179, 200, 208, 178, 198, 206, 178, 198, 206, 177, 196, 204, 170, 191, 199, + 167, 188, 198, 168, 187, 196, 164, 184, 192, 161, 181, 189, 163, 183, 191, 156, 177, 186, 151, 173, 182, 147, 171, 179, 134, 159, 172, 119, 146, 160, 110, 138, 152, 120, 144, 157, 141, 160, 171, 126, 149, 161, 111, 138, 153, 111, 135, 149, 106, 129, 139, 115, 134, 142, 94, 116, 124, 94, 117, 124, 94, 117, 125, + 89, 110, 120, 75, 96, 106, 64, 82, 91, 60, 78, 87, 61, 79, 88, 70, 88, 97, 85, 102, 110, 76, 96, 102, 102, 121, 127, 78, 102, 108, 95, 117, 123, 103, 125, 131, 73, 99, 107, 97, 122, 131, 79, 105, 112, 84, 107, 115, 72, 96, 107, 91, 114, 124, 94, 118, 129, 94, 118, 126, 73, 99, 107, + 53, 81, 90, 95, 114, 122, 79, 98, 109, 36, 61, 73, 47, 69, 80, 57, 75, 86, 57, 77, 86, 61, 83, 93, 59, 82, 93, 73, 97, 108, 100, 124, 140, 119, 142, 158, 100, 129, 148, 112, 141, 158, 121, 147, 164, 115, 143, 162, 139, 161, 176, 133, 158, 174, 125, 153, 170, 137, 162, 178, 134, 162, 180, + 146, 171, 186, 159, 180, 193, 160, 181, 194, 160, 181, 194, 164, 184, 196, 169, 187, 198, 156, 179, 190, 176, 192, 201, 155, 178, 191, 164, 185, 195, 172, 191, 200, 172, 192, 201, 176, 194, 202, 178, 196, 204, 165, 187, 195, 158, 182, 192, 172, 192, 200, 169, 190, 200, 176, 193, 201, 177, 195, 203, 173, 191, 199, + 172, 191, 199, 161, 184, 193, 172, 190, 198, 153, 175, 187, 160, 180, 191, 154, 175, 186, 154, 174, 185, 155, 176, 184, 144, 168, 177, 158, 178, 186, 144, 168, 177, 156, 176, 183, 161, 179, 186, 150, 172, 181, 156, 176, 184, 150, 172, 182, 162, 181, 189, 162, 181, 188, 150, 172, 180, 158, 177, 183, 147, 169, 176, + 144, 167, 174, 147, 169, 176, 158, 176, 182, 143, 165, 172, 147, 168, 177, 138, 162, 171, 147, 170, 178, 157, 177, 184, 174, 191, 196, 171, 189, 196, 189, 200, 206, 172, 189, 195, 165, 184, 190, 135, 164, 173, 147, 172, 180, 162, 180, 188, 149, 171, 182, 149, 170, 179, 161, 175, 183, 100, 122, 135, 76, 92, 104, + 71, 86, 99, 43, 65, 79, 64, 81, 94, 54, 72, 84, 54, 69, 81, 71, 85, 94, 82, 93, 102, 61, 75, 82, 81, 94, 101, 98, 110, 117, 108, 115, 122, 90, 100, 110, 59, 75, 91, 100, 116, 129, 95, 116, 125, 123, 143, 151, 81, 108, 119, 100, 124, 135, 116, 141, 152, 135, 160, 170, 160, 179, 185, + 184, 197, 202, 185, 200, 204, 188, 202, 208, 189, 204, 210, 181, 198, 205, 179, 197, 204, 188, 204, 210, 187, 204, 211, 188, 205, 212, 181, 200, 208, 181, 200, 209, 186, 203, 211, 185, 203, 210, 191, 208, 215, 194, 211, 216, 198, 213, 219, 202, 217, 220, 210, 221, 225, 216, 226, 228, 218, 228, 230, 219, 228, 232, + 222, 230, 233, 227, 235, 234, 229, 237, 237, 230, 239, 239, 235, 241, 242, 237, 243, 243, 237, 243, 242, 237, 243, 242, 239, 245, 244, 239, 245, 244, 240, 246, 245, 241, 247, 246, 241, 247, 246, 242, 248, 247, 242, 248, 246, 242, 247, 246, 243, 248, 247, 242, 247, 246, 242, 248, 247, 242, 247, 246, 241, 246, 245, + 46, 16, 45, 45, 15, 43, 44, 14, 44, 46, 15, 44, 47, 14, 44, 48, 14, 44, 48, 14, 45, 50, 14, 45, 51, 16, 46, 52, 16, 46, 52, 16, 47, 52, 15, 47, 54, 17, 49, 55, 15, 50, 55, 16, 50, 55, 15, 50, 56, 16, 50, 56, 16, 51, 57, 17, 52, 57, 16, 52, 60, 18, 53, + 60, 17, 53, 61, 19, 54, 60, 18, 53, 62, 22, 57, 62, 22, 57, 65, 24, 59, 66, 25, 60, 64, 21, 58, 68, 28, 64, 68, 27, 60, 66, 31, 63, 66, 36, 66, 88, 65, 91, 93, 72, 98, 72, 50, 78, 69, 46, 74, 73, 50, 75, 78, 56, 81, 80, 60, 84, 84, 66, 89, 91, 76, 98, + 96, 82, 105, 99, 89, 110, 104, 97, 118, 111, 105, 125, 114, 111, 131, 120, 117, 136, 127, 126, 143, 133, 134, 149, 138, 141, 157, 144, 148, 164, 153, 159, 174, 159, 168, 182, 161, 172, 185, 169, 180, 192, 171, 186, 195, 177, 191, 200, 181, 195, 204, 184, 199, 208, 187, 201, 209, 187, 202, 211, 188, 204, 212, + 189, 204, 213, 190, 205, 214, 191, 206, 215, 193, 207, 216, 192, 208, 215, 192, 207, 217, 191, 207, 217, 192, 209, 216, 192, 210, 217, 193, 210, 217, 192, 210, 217, 192, 210, 217, 192, 210, 217, 192, 210, 217, 190, 209, 216, 191, 210, 217, 191, 209, 218, 190, 209, 217, 191, 210, 217, 189, 210, 216, 189, 210, 216, + 188, 209, 217, 187, 208, 216, 188, 209, 217, 190, 209, 217, 189, 208, 216, 190, 209, 217, 190, 209, 216, 189, 208, 216, 186, 207, 215, 184, 205, 213, 184, 205, 213, 183, 204, 212, 181, 202, 210, 176, 199, 207, 175, 198, 207, 177, 198, 206, 176, 198, 206, 175, 196, 204, 176, 195, 203, 175, 194, 202, 173, 192, 200, + 170, 190, 198, 165, 185, 194, 162, 182, 192, 158, 178, 188, 150, 173, 181, 153, 175, 184, 147, 169, 180, 137, 161, 173, 127, 150, 165, 120, 146, 160, 118, 144, 157, 105, 133, 147, 128, 151, 163, 115, 140, 154, 114, 138, 153, 95, 118, 133, 84, 107, 118, 93, 115, 123, 84, 106, 114, 89, 110, 118, 73, 96, 106, + 86, 107, 116, 54, 73, 83, 65, 79, 88, 50, 66, 75, 52, 69, 78, 69, 87, 95, 78, 94, 102, 64, 82, 90, 100, 116, 123, 77, 101, 108, 100, 121, 128, 95, 117, 124, 84, 109, 117, 83, 110, 117, 77, 106, 113, 82, 108, 116, 84, 107, 115, 94, 117, 124, 97, 122, 129, 85, 111, 118, 82, 106, 114, + 48, 77, 86, 100, 119, 126, 58, 81, 91, 60, 79, 90, 63, 82, 91, 50, 70, 81, 46, 68, 78, 60, 82, 93, 54, 79, 89, 69, 94, 105, 95, 119, 135, 112, 135, 153, 119, 143, 159, 128, 151, 167, 119, 146, 163, 141, 163, 176, 126, 152, 168, 126, 153, 169, 117, 145, 163, 137, 162, 177, 140, 166, 181, + 147, 171, 187, 146, 170, 186, 144, 170, 185, 152, 175, 189, 138, 166, 182, 169, 187, 199, 157, 179, 192, 149, 174, 187, 163, 184, 195, 164, 186, 195, 173, 192, 201, 172, 191, 200, 171, 190, 200, 163, 186, 196, 172, 192, 200, 185, 201, 209, 185, 200, 210, 179, 195, 206, 186, 201, 208, 185, 200, 208, 175, 193, 202, + 177, 195, 203, 183, 199, 205, 171, 190, 198, 164, 184, 194, 162, 181, 192, 170, 187, 195, 162, 181, 189, 156, 177, 185, 160, 180, 186, 160, 180, 189, 159, 179, 187, 161, 181, 188, 155, 177, 185, 158, 178, 187, 162, 180, 188, 158, 178, 187, 158, 178, 187, 157, 177, 185, 164, 182, 187, 152, 173, 179, 167, 184, 189, + 166, 182, 188, 155, 174, 181, 153, 172, 178, 141, 163, 172, 136, 161, 170, 150, 171, 180, 139, 163, 174, 163, 180, 189, 153, 173, 183, 149, 172, 181, 139, 166, 176, 144, 168, 178, 156, 177, 185, 134, 162, 171, 131, 158, 168, 99, 136, 152, 115, 147, 159, 100, 134, 147, 94, 127, 139, 102, 123, 133, 122, 139, 150, + 68, 89, 102, 62, 82, 95, 51, 72, 85, 75, 89, 101, 69, 84, 94, 72, 86, 94, 80, 93, 101, 80, 93, 100, 91, 105, 110, 103, 115, 118, 106, 113, 118, 84, 93, 101, 81, 99, 107, 85, 104, 111, 101, 123, 130, 105, 128, 136, 88, 115, 125, 89, 115, 127, 88, 118, 131, 135, 159, 170, 156, 176, 183, + 183, 197, 202, 197, 208, 213, 195, 207, 211, 193, 206, 211, 189, 203, 209, 176, 194, 202, 178, 197, 203, 185, 203, 209, 197, 211, 218, 190, 207, 214, 190, 207, 214, 177, 198, 206, 179, 199, 207, 181, 202, 209, 189, 207, 213, 190, 208, 215, 195, 212, 218, 203, 217, 221, 209, 221, 225, 215, 227, 229, 219, 228, 231, + 220, 229, 232, 223, 233, 232, 228, 236, 236, 229, 238, 238, 232, 240, 240, 235, 241, 241, 237, 243, 242, 237, 243, 243, 238, 244, 243, 239, 245, 244, 240, 246, 245, 241, 247, 246, 242, 248, 247, 242, 248, 246, 242, 247, 246, 242, 247, 246, 242, 247, 246, 241, 247, 246, 242, 248, 247, 242, 247, 246, 242, 246, 245, + 43, 15, 43, 44, 15, 42, 46, 16, 45, 46, 15, 44, 46, 14, 44, 48, 15, 45, 49, 15, 46, 50, 15, 46, 50, 13, 45, 51, 14, 46, 51, 14, 46, 53, 16, 48, 52, 15, 47, 52, 15, 48, 54, 17, 50, 55, 15, 50, 57, 17, 51, 54, 14, 49, 56, 17, 52, 56, 15, 51, 58, 18, 53, + 58, 17, 53, 60, 18, 53, 59, 19, 53, 60, 20, 55, 60, 22, 57, 63, 24, 59, 63, 22, 59, 64, 23, 60, 66, 26, 62, 64, 30, 61, 77, 50, 78, 92, 71, 96, 76, 54, 81, 70, 48, 76, 74, 51, 79, 79, 56, 83, 81, 62, 87, 84, 67, 90, 92, 77, 98, 94, 85, 104, 101, 94, 113, + 108, 103, 122, 115, 111, 132, 121, 119, 138, 126, 126, 144, 133, 134, 152, 139, 141, 157, 143, 146, 161, 147, 152, 167, 154, 160, 174, 159, 168, 181, 162, 172, 184, 164, 176, 187, 169, 181, 192, 174, 188, 198, 178, 193, 202, 182, 197, 206, 185, 200, 209, 187, 203, 210, 188, 204, 211, 189, 204, 213, 190, 205, 214, + 191, 206, 215, 191, 207, 215, 190, 208, 215, 190, 207, 216, 190, 208, 215, 191, 208, 217, 191, 208, 217, 191, 209, 217, 191, 209, 217, 192, 209, 217, 190, 209, 216, 190, 209, 217, 192, 210, 217, 190, 209, 217, 190, 209, 217, 189, 208, 216, 189, 208, 216, 188, 208, 216, 187, 208, 215, 186, 207, 215, 187, 208, 216, + 187, 208, 215, 186, 208, 215, 186, 207, 215, 189, 208, 216, 189, 208, 216, 187, 207, 215, 187, 207, 215, 185, 206, 214, 185, 206, 214, 184, 205, 213, 183, 203, 213, 182, 203, 212, 179, 200, 210, 177, 200, 208, 175, 197, 205, 172, 195, 203, 174, 195, 204, 173, 194, 203, 171, 192, 200, 170, 191, 199, 171, 190, 198, + 165, 186, 195, 160, 180, 191, 159, 179, 190, 152, 174, 184, 149, 170, 181, 138, 162, 173, 126, 152, 166, 134, 156, 170, 137, 157, 170, 112, 139, 154, 118, 144, 157, 126, 150, 162, 117, 143, 155, 117, 141, 154, 125, 146, 160, 99, 121, 135, 81, 105, 116, 91, 112, 122, 89, 106, 116, 77, 96, 106, 64, 85, 94, + 72, 87, 96, 63, 79, 88, 49, 66, 76, 39, 56, 66, 50, 65, 75, 68, 85, 93, 81, 96, 104, 52, 72, 83, 89, 106, 115, 80, 102, 110, 98, 118, 126, 102, 122, 130, 88, 112, 120, 79, 106, 115, 92, 118, 126, 86, 112, 119, 85, 107, 115, 98, 120, 126, 84, 107, 113, 87, 110, 117, 81, 104, 112, + 53, 80, 91, 86, 106, 115, 57, 78, 90, 42, 63, 74, 65, 82, 91, 34, 56, 68, 64, 84, 93, 67, 89, 98, 66, 88, 99, 79, 104, 114, 90, 116, 130, 132, 153, 165, 137, 157, 170, 124, 149, 164, 96, 127, 146, 112, 140, 158, 127, 152, 167, 118, 147, 163, 113, 141, 158, 117, 145, 161, 131, 155, 170, + 123, 152, 169, 131, 157, 174, 104, 139, 158, 120, 151, 168, 125, 154, 171, 115, 148, 167, 153, 175, 187, 142, 169, 183, 155, 179, 191, 179, 195, 203, 170, 190, 199, 171, 191, 200, 173, 192, 201, 179, 196, 204, 177, 195, 204, 175, 194, 203, 181, 196, 207, 181, 198, 207, 178, 196, 204, 179, 195, 204, 177, 195, 203, + 180, 196, 205, 179, 195, 204, 176, 193, 202, 184, 198, 205, 176, 192, 200, 166, 184, 192, 152, 174, 183, 166, 184, 190, 173, 189, 195, 159, 179, 187, 160, 181, 189, 159, 180, 189, 162, 182, 191, 160, 180, 189, 150, 173, 183, 158, 179, 186, 156, 177, 185, 155, 176, 183, 147, 169, 176, 154, 174, 180, 155, 174, 179, + 135, 158, 165, 138, 160, 168, 156, 173, 181, 143, 164, 174, 144, 166, 175, 144, 167, 177, 162, 180, 187, 147, 169, 178, 153, 174, 183, 146, 168, 178, 110, 145, 160, 119, 150, 164, 133, 157, 168, 139, 164, 173, 147, 169, 178, 155, 175, 184, 143, 169, 178, 138, 164, 174, 113, 142, 154, 83, 108, 120, 43, 71, 86, + 41, 66, 83, 79, 95, 110, 61, 78, 92, 23, 48, 62, 45, 63, 75, 56, 72, 81, 77, 90, 98, 88, 102, 108, 89, 102, 109, 128, 138, 140, 135, 141, 144, 111, 120, 125, 97, 113, 119, 97, 115, 122, 101, 123, 130, 88, 114, 121, 104, 128, 138, 110, 134, 144, 102, 129, 141, 96, 129, 141, 150, 170, 177, + 178, 192, 199, 198, 210, 214, 197, 209, 213, 201, 213, 217, 196, 209, 214, 181, 198, 205, 180, 197, 205, 183, 200, 209, 185, 202, 210, 194, 208, 216, 188, 205, 212, 189, 205, 212, 183, 202, 209, 175, 197, 205, 167, 194, 203, 184, 204, 212, 192, 211, 217, 198, 214, 220, 206, 219, 223, 211, 223, 226, 217, 228, 230, + 220, 229, 232, 221, 231, 231, 225, 235, 235, 230, 238, 238, 230, 238, 238, 232, 240, 240, 236, 241, 241, 237, 243, 242, 238, 244, 243, 238, 244, 243, 240, 246, 245, 241, 247, 246, 242, 248, 247, 241, 247, 246, 243, 248, 247, 243, 248, 247, 243, 248, 247, 241, 247, 246, 241, 247, 246, 243, 248, 247, 242, 247, 246, + 44, 17, 44, 43, 14, 42, 45, 15, 44, 46, 15, 44, 47, 16, 45, 46, 14, 43, 49, 16, 46, 49, 14, 45, 50, 13, 45, 52, 15, 47, 51, 14, 46, 53, 16, 49, 51, 14, 46, 53, 15, 47, 54, 17, 50, 54, 17, 51, 55, 15, 50, 54, 17, 51, 55, 17, 51, 56, 16, 52, 57, 17, 52, + 58, 19, 54, 58, 18, 53, 60, 21, 54, 59, 19, 54, 61, 23, 56, 61, 24, 58, 63, 23, 59, 64, 26, 62, 71, 37, 71, 90, 63, 93, 79, 56, 83, 70, 47, 74, 68, 45, 73, 73, 51, 79, 82, 61, 87, 88, 70, 94, 94, 80, 102, 95, 83, 104, 103, 95, 115, 107, 105, 124, 117, 116, 135, + 124, 126, 144, 131, 134, 152, 136, 141, 158, 143, 149, 166, 148, 155, 170, 153, 161, 176, 157, 167, 181, 159, 169, 182, 166, 176, 188, 168, 179, 191, 173, 183, 193, 175, 187, 196, 177, 189, 199, 178, 192, 201, 183, 199, 207, 183, 200, 208, 185, 203, 210, 187, 205, 212, 190, 205, 215, 188, 205, 214, 190, 206, 215, + 191, 207, 216, 190, 207, 215, 190, 207, 215, 190, 208, 216, 190, 208, 216, 189, 208, 215, 190, 208, 215, 189, 208, 216, 189, 208, 216, 189, 208, 216, 188, 208, 216, 188, 208, 216, 187, 207, 215, 188, 208, 216, 188, 208, 216, 186, 207, 215, 185, 206, 214, 186, 207, 215, 185, 206, 214, 184, 205, 213, 184, 205, 213, + 184, 205, 213, 185, 206, 214, 184, 205, 213, 184, 205, 213, 185, 206, 214, 185, 206, 214, 183, 205, 213, 184, 205, 213, 184, 205, 213, 183, 204, 213, 181, 202, 210, 180, 201, 211, 181, 201, 211, 179, 201, 209, 177, 199, 207, 175, 197, 205, 174, 195, 203, 172, 194, 201, 173, 193, 201, 170, 190, 198, 166, 187, 195, + 161, 183, 191, 156, 178, 189, 154, 175, 187, 147, 169, 181, 136, 160, 172, 137, 159, 171, 140, 159, 172, 126, 149, 164, 130, 152, 165, 134, 155, 168, 125, 149, 161, 121, 146, 158, 109, 138, 149, 126, 147, 158, 99, 124, 136, 100, 122, 133, 83, 107, 118, 83, 105, 115, 76, 94, 105, 70, 88, 98, 51, 71, 82, + 58, 75, 85, 65, 79, 90, 45, 60, 72, 53, 68, 77, 45, 61, 71, 66, 82, 90, 82, 96, 105, 64, 82, 91, 68, 87, 97, 107, 124, 134, 74, 98, 106, 102, 121, 130, 105, 126, 133, 86, 113, 121, 91, 117, 125, 76, 101, 110, 69, 94, 103, 80, 103, 110, 84, 107, 114, 89, 110, 117, 82, 103, 112, + 57, 81, 94, 75, 94, 105, 73, 92, 103, 76, 92, 102, 61, 78, 89, 47, 66, 77, 48, 71, 81, 79, 99, 109, 64, 88, 98, 85, 110, 121, 113, 135, 148, 134, 154, 166, 115, 139, 154, 113, 139, 156, 111, 139, 156, 106, 134, 152, 96, 126, 144, 105, 133, 152, 135, 157, 171, 104, 134, 152, 123, 149, 166, + 97, 129, 146, 90, 127, 144, 91, 127, 144, 107, 138, 155, 91, 127, 146, 108, 141, 158, 130, 158, 175, 136, 162, 179, 141, 169, 183, 153, 177, 189, 172, 190, 200, 176, 194, 202, 171, 190, 199, 178, 195, 204, 189, 204, 210, 189, 203, 212, 189, 203, 211, 182, 198, 209, 184, 200, 208, 180, 197, 205, 187, 203, 210, + 187, 202, 210, 182, 198, 207, 176, 193, 203, 183, 198, 205, 169, 187, 196, 168, 186, 194, 172, 189, 196, 170, 188, 195, 167, 187, 194, 158, 181, 189, 162, 183, 191, 160, 181, 189, 165, 184, 192, 150, 173, 182, 155, 178, 186, 154, 176, 184, 149, 172, 181, 158, 177, 184, 159, 177, 182, 156, 173, 179, 153, 170, 175, + 152, 169, 175, 144, 164, 172, 150, 169, 177, 157, 174, 183, 157, 176, 184, 153, 172, 181, 155, 173, 182, 151, 172, 181, 140, 164, 173, 135, 162, 172, 157, 176, 187, 142, 166, 177, 162, 180, 189, 161, 181, 188, 145, 170, 178, 161, 180, 188, 173, 190, 197, 175, 191, 198, 160, 177, 185, 86, 114, 127, 88, 111, 126, + 126, 142, 153, 78, 97, 112, 104, 119, 134, 89, 102, 114, 60, 76, 88, 62, 77, 86, 61, 79, 86, 55, 74, 81, 57, 77, 84, 108, 122, 126, 143, 152, 156, 104, 117, 124, 74, 92, 100, 89, 110, 117, 72, 98, 106, 84, 109, 117, 106, 132, 140, 109, 135, 145, 111, 137, 147, 109, 140, 149, 116, 145, 156, + 171, 188, 195, 190, 204, 209, 204, 215, 218, 195, 208, 212, 200, 211, 215, 194, 208, 213, 178, 196, 204, 177, 197, 207, 183, 201, 210, 183, 202, 210, 187, 204, 211, 184, 202, 210, 187, 204, 212, 187, 204, 212, 182, 201, 208, 171, 196, 205, 178, 203, 210, 190, 209, 215, 199, 215, 220, 210, 222, 226, 215, 226, 229, + 221, 230, 233, 221, 230, 232, 225, 234, 233, 228, 236, 236, 233, 239, 240, 233, 241, 241, 235, 240, 240, 235, 241, 240, 238, 244, 243, 239, 245, 244, 239, 245, 244, 239, 245, 244, 240, 247, 245, 241, 246, 245, 242, 248, 247, 241, 247, 246, 241, 247, 246, 242, 248, 247, 242, 247, 246, 241, 247, 245, 241, 247, 246, + 43, 16, 42, 44, 18, 43, 44, 14, 44, 46, 15, 44, 45, 14, 43, 47, 16, 45, 48, 17, 46, 47, 13, 44, 50, 15, 46, 50, 15, 45, 52, 15, 47, 51, 17, 48, 52, 16, 48, 52, 15, 47, 52, 15, 47, 53, 16, 49, 54, 15, 49, 53, 13, 49, 54, 17, 50, 56, 18, 51, 56, 16, 51, + 57, 17, 52, 56, 18, 51, 58, 21, 53, 58, 23, 56, 59, 24, 55, 59, 23, 57, 64, 29, 63, 78, 46, 77, 83, 53, 83, 69, 39, 69, 68, 39, 68, 70, 45, 73, 77, 55, 81, 81, 60, 85, 87, 69, 93, 95, 81, 103, 104, 92, 113, 111, 105, 124, 116, 116, 134, 122, 124, 142, 134, 136, 153, + 140, 146, 162, 147, 155, 170, 153, 162, 177, 158, 169, 182, 163, 174, 188, 166, 177, 191, 168, 181, 192, 171, 184, 196, 172, 186, 196, 176, 190, 199, 177, 190, 200, 180, 194, 202, 182, 197, 205, 183, 199, 207, 184, 202, 209, 185, 203, 210, 187, 205, 212, 187, 206, 212, 189, 206, 215, 188, 205, 214, 189, 206, 215, + 188, 206, 215, 188, 207, 214, 188, 207, 215, 187, 206, 214, 189, 207, 215, 187, 206, 215, 187, 206, 214, 187, 206, 214, 187, 206, 215, 187, 207, 215, 185, 206, 214, 185, 206, 214, 185, 206, 214, 185, 206, 214, 185, 206, 214, 185, 206, 214, 184, 205, 213, 183, 205, 214, 182, 205, 213, 184, 205, 213, 184, 205, 213, + 184, 205, 213, 183, 203, 214, 183, 203, 214, 184, 204, 212, 181, 203, 212, 182, 203, 211, 180, 202, 210, 181, 204, 212, 180, 202, 210, 181, 201, 213, 181, 201, 211, 179, 200, 211, 176, 198, 209, 174, 196, 207, 174, 195, 205, 172, 194, 204, 169, 191, 202, 169, 190, 198, 167, 189, 197, 166, 187, 195, 162, 183, 191, + 160, 181, 190, 155, 177, 188, 155, 176, 186, 150, 170, 181, 142, 163, 175, 132, 155, 169, 131, 151, 165, 116, 139, 155, 127, 149, 162, 124, 148, 160, 141, 160, 169, 129, 152, 162, 122, 147, 157, 114, 136, 146, 111, 133, 142, 100, 122, 131, 89, 112, 122, 73, 97, 107, 73, 90, 101, 68, 85, 97, 59, 77, 87, + 54, 71, 81, 59, 74, 84, 59, 73, 83, 46, 61, 71, 33, 50, 59, 57, 73, 81, 71, 87, 95, 90, 104, 114, 76, 95, 104, 93, 111, 120, 80, 102, 112, 84, 105, 113, 100, 121, 131, 91, 115, 124, 88, 113, 121, 84, 108, 116, 73, 97, 104, 69, 93, 101, 72, 96, 104, 84, 105, 114, 75, 96, 107, + 66, 87, 98, 63, 83, 95, 63, 82, 94, 47, 63, 75, 58, 72, 83, 37, 55, 67, 55, 76, 86, 67, 90, 101, 78, 101, 113, 83, 110, 121, 133, 152, 162, 90, 118, 134, 116, 140, 154, 96, 125, 142, 96, 123, 142, 106, 133, 150, 107, 133, 150, 101, 129, 147, 104, 131, 148, 90, 121, 137, 71, 107, 123, + 82, 116, 132, 72, 107, 125, 77, 112, 130, 65, 106, 126, 84, 121, 140, 109, 141, 159, 97, 135, 155, 130, 160, 176, 167, 185, 198, 162, 183, 195, 169, 187, 199, 175, 193, 203, 184, 199, 207, 188, 202, 210, 191, 204, 211, 195, 207, 214, 188, 202, 211, 184, 200, 209, 185, 201, 209, 182, 199, 208, 183, 200, 208, + 183, 200, 208, 187, 202, 210, 186, 200, 209, 175, 193, 201, 169, 188, 197, 172, 190, 198, 167, 187, 195, 171, 190, 198, 159, 182, 189, 167, 187, 195, 163, 184, 192, 168, 187, 195, 163, 183, 191, 154, 177, 186, 149, 172, 182, 149, 173, 181, 157, 177, 184, 162, 180, 187, 160, 176, 183, 163, 177, 182, 163, 178, 181, + 164, 179, 185, 163, 177, 184, 157, 176, 184, 162, 180, 186, 163, 181, 187, 165, 181, 188, 165, 182, 189, 167, 184, 190, 169, 185, 191, 175, 189, 195, 185, 197, 203, 177, 191, 198, 167, 185, 192, 164, 182, 190, 153, 175, 183, 141, 166, 176, 134, 161, 172, 123, 151, 161, 136, 157, 167, 151, 167, 176, 118, 139, 151, + 88, 110, 124, 73, 90, 105, 20, 42, 60, 20, 38, 52, 24, 44, 57, 31, 48, 59, 69, 84, 91, 69, 84, 92, 71, 88, 95, 107, 121, 128, 110, 125, 133, 71, 94, 102, 86, 107, 114, 87, 110, 118, 62, 90, 98, 85, 112, 119, 123, 146, 153, 125, 147, 155, 111, 139, 149, 116, 143, 154, 126, 152, 162, + 141, 166, 175, 169, 188, 195, 198, 210, 214, 206, 216, 219, 200, 212, 215, 202, 214, 217, 199, 210, 217, 182, 200, 209, 173, 194, 205, 174, 196, 206, 181, 201, 209, 185, 203, 211, 184, 203, 210, 187, 205, 212, 186, 204, 211, 188, 205, 212, 180, 201, 209, 185, 204, 212, 190, 209, 215, 203, 217, 222, 210, 222, 226, + 218, 228, 231, 221, 230, 232, 224, 233, 234, 227, 235, 235, 230, 238, 238, 231, 239, 239, 233, 241, 241, 235, 242, 241, 237, 243, 242, 238, 243, 243, 239, 244, 244, 239, 245, 244, 239, 245, 244, 240, 246, 245, 240, 246, 245, 241, 247, 246, 241, 247, 246, 241, 247, 246, 241, 246, 245, 242, 247, 246, 241, 247, 246, + 43, 16, 41, 42, 14, 41, 45, 16, 42, 45, 16, 44, 45, 13, 41, 47, 16, 43, 46, 14, 44, 49, 15, 45, 49, 15, 45, 49, 15, 46, 50, 16, 47, 51, 17, 48, 51, 17, 47, 50, 15, 47, 53, 16, 48, 53, 16, 48, 54, 17, 49, 53, 16, 48, 54, 16, 48, 55, 17, 49, 55, 18, 50, + 56, 19, 52, 57, 20, 54, 57, 22, 54, 56, 22, 53, 56, 22, 55, 71, 40, 70, 76, 46, 75, 67, 36, 66, 62, 30, 61, 65, 32, 63, 70, 42, 71, 74, 52, 77, 83, 61, 86, 89, 72, 95, 97, 86, 107, 108, 101, 121, 116, 114, 134, 125, 126, 144, 130, 134, 152, 139, 146, 161, 146, 155, 169, + 156, 165, 178, 161, 170, 184, 164, 176, 189, 168, 181, 193, 172, 185, 197, 173, 187, 199, 177, 191, 203, 178, 192, 204, 180, 195, 204, 180, 196, 205, 184, 199, 208, 183, 199, 208, 184, 200, 209, 184, 202, 211, 185, 204, 211, 187, 204, 212, 187, 206, 212, 188, 205, 214, 188, 206, 214, 187, 206, 213, 188, 207, 215, + 187, 206, 214, 188, 207, 215, 185, 206, 214, 186, 206, 214, 184, 205, 214, 184, 205, 213, 184, 205, 213, 184, 205, 213, 183, 205, 213, 182, 204, 213, 181, 203, 213, 182, 204, 214, 181, 202, 213, 182, 205, 212, 181, 204, 212, 180, 203, 212, 180, 203, 212, 180, 203, 213, 181, 203, 213, 180, 203, 212, 182, 203, 213, + 181, 202, 213, 183, 203, 214, 181, 202, 213, 179, 201, 212, 179, 201, 212, 179, 202, 212, 179, 202, 211, 179, 201, 211, 178, 201, 208, 176, 198, 209, 177, 198, 209, 173, 196, 207, 171, 195, 206, 171, 194, 205, 170, 193, 203, 171, 193, 204, 168, 190, 201, 169, 190, 200, 166, 187, 196, 162, 183, 193, 162, 183, 192, + 158, 179, 188, 154, 176, 186, 151, 172, 183, 142, 166, 176, 137, 159, 171, 134, 156, 167, 118, 143, 156, 112, 137, 152, 98, 124, 137, 120, 143, 154, 113, 139, 151, 132, 153, 163, 112, 138, 148, 94, 120, 129, 88, 114, 123, 97, 120, 128, 80, 104, 114, 75, 97, 107, 75, 93, 102, 70, 88, 98, 62, 79, 88, + 62, 78, 87, 44, 61, 72, 48, 64, 72, 35, 49, 59, 35, 50, 58, 57, 71, 79, 67, 83, 91, 67, 86, 94, 70, 88, 97, 88, 106, 115, 75, 97, 107, 81, 104, 112, 90, 114, 122, 83, 107, 117, 116, 135, 144, 78, 103, 113, 91, 113, 121, 64, 88, 98, 63, 86, 95, 64, 86, 96, 89, 108, 117, + 47, 71, 83, 68, 86, 98, 63, 82, 92, 36, 53, 66, 53, 67, 78, 51, 66, 78, 49, 68, 80, 77, 99, 110, 77, 101, 112, 91, 117, 128, 104, 128, 141, 117, 140, 153, 98, 125, 141, 106, 132, 147, 109, 133, 150, 88, 117, 134, 83, 111, 130, 90, 118, 136, 78, 110, 127, 113, 139, 152, 77, 111, 126, + 98, 125, 140, 95, 125, 141, 92, 124, 141, 106, 136, 153, 102, 135, 153, 133, 158, 174, 130, 156, 172, 149, 172, 185, 148, 173, 189, 168, 186, 198, 165, 186, 199, 179, 195, 204, 181, 197, 206, 193, 205, 213, 190, 203, 211, 187, 201, 210, 191, 204, 213, 187, 202, 210, 188, 202, 211, 188, 203, 211, 189, 204, 213, + 189, 203, 211, 184, 199, 208, 186, 200, 208, 185, 199, 208, 181, 198, 204, 176, 194, 202, 181, 197, 204, 177, 193, 202, 175, 192, 201, 161, 183, 192, 160, 182, 191, 153, 177, 187, 146, 172, 182, 158, 179, 187, 139, 167, 177, 157, 178, 186, 156, 176, 184, 161, 180, 187, 164, 180, 185, 167, 182, 186, 166, 182, 187, + 162, 180, 187, 161, 180, 186, 159, 180, 186, 164, 184, 188, 161, 181, 186, 163, 180, 189, 157, 177, 185, 156, 176, 183, 151, 172, 180, 147, 170, 179, 151, 173, 182, 163, 182, 190, 168, 185, 193, 165, 183, 192, 132, 160, 170, 143, 167, 176, 148, 170, 179, 149, 170, 178, 120, 147, 157, 123, 147, 157, 123, 142, 151, + 56, 81, 95, 57, 79, 93, 74, 89, 103, 65, 83, 95, 92, 104, 111, 104, 113, 121, 58, 74, 82, 74, 90, 97, 46, 66, 74, 101, 118, 125, 137, 152, 158, 113, 132, 139, 109, 129, 137, 78, 102, 112, 97, 119, 127, 83, 110, 120, 123, 146, 154, 130, 151, 159, 137, 158, 167, 135, 157, 167, 127, 152, 162, + 133, 158, 169, 147, 171, 181, 181, 196, 202, 198, 210, 214, 208, 219, 221, 202, 214, 218, 201, 213, 219, 195, 209, 216, 182, 200, 210, 177, 198, 207, 172, 196, 205, 186, 204, 212, 187, 204, 211, 179, 199, 206, 178, 198, 206, 186, 203, 210, 184, 203, 210, 184, 204, 210, 193, 210, 216, 195, 212, 217, 208, 221, 225, + 215, 227, 229, 219, 229, 232, 223, 232, 232, 226, 235, 235, 229, 237, 237, 230, 238, 238, 232, 240, 240, 233, 240, 240, 236, 242, 241, 237, 243, 242, 237, 243, 242, 239, 245, 244, 240, 246, 245, 240, 246, 245, 240, 246, 245, 240, 246, 245, 240, 246, 245, 240, 246, 245, 240, 246, 245, 241, 246, 245, 241, 247, 246, + 40, 14, 39, 43, 16, 42, 43, 16, 42, 44, 15, 41, 44, 14, 41, 45, 14, 41, 47, 16, 44, 47, 15, 45, 49, 16, 46, 49, 16, 46, 50, 15, 46, 50, 16, 47, 51, 17, 48, 50, 16, 46, 51, 17, 47, 51, 17, 47, 53, 15, 47, 54, 17, 48, 53, 16, 48, 55, 17, 49, 55, 18, 49, + 56, 20, 51, 54, 18, 50, 55, 22, 53, 59, 28, 58, 75, 46, 75, 70, 40, 69, 58, 26, 58, 60, 27, 57, 62, 29, 60, 64, 33, 63, 71, 43, 71, 75, 53, 79, 84, 65, 88, 96, 83, 104, 106, 101, 121, 120, 119, 137, 126, 130, 148, 139, 144, 161, 147, 154, 169, 154, 165, 179, 158, 171, 184, + 164, 177, 189, 168, 182, 194, 171, 185, 197, 175, 189, 201, 178, 193, 204, 178, 194, 206, 182, 197, 209, 184, 199, 208, 184, 200, 209, 183, 201, 210, 186, 202, 211, 184, 201, 210, 185, 202, 211, 186, 203, 212, 187, 204, 213, 187, 205, 213, 187, 205, 213, 188, 206, 214, 186, 205, 213, 185, 206, 214, 185, 205, 213, + 184, 205, 213, 184, 205, 213, 183, 205, 213, 183, 205, 213, 181, 203, 211, 181, 203, 211, 182, 203, 211, 181, 203, 210, 179, 202, 211, 180, 202, 212, 178, 201, 212, 179, 201, 212, 178, 201, 211, 178, 201, 212, 177, 202, 212, 178, 202, 212, 179, 201, 212, 179, 201, 212, 179, 201, 212, 179, 201, 212, 179, 201, 212, + 180, 200, 211, 179, 200, 211, 178, 200, 211, 178, 200, 211, 179, 200, 212, 175, 199, 210, 177, 199, 210, 177, 200, 211, 177, 199, 210, 175, 197, 208, 176, 198, 209, 176, 198, 209, 176, 198, 209, 173, 196, 206, 170, 192, 203, 171, 193, 204, 170, 192, 203, 169, 189, 201, 166, 186, 197, 162, 183, 194, 154, 177, 188, + 152, 174, 185, 148, 169, 180, 146, 166, 177, 139, 160, 171, 128, 150, 162, 135, 155, 166, 122, 144, 156, 94, 120, 134, 112, 133, 145, 108, 130, 143, 110, 134, 148, 116, 140, 151, 113, 135, 147, 95, 121, 129, 83, 106, 115, 92, 113, 121, 90, 110, 119, 74, 92, 102, 66, 85, 93, 59, 79, 87, 58, 76, 83, + 57, 73, 81, 37, 55, 65, 57, 70, 79, 36, 51, 58, 28, 44, 51, 44, 59, 66, 68, 81, 89, 73, 86, 94, 68, 84, 92, 68, 87, 96, 87, 108, 118, 94, 115, 123, 65, 90, 100, 98, 118, 127, 96, 118, 128, 110, 131, 139, 83, 106, 115, 71, 94, 103, 68, 89, 98, 75, 95, 103, 91, 106, 115, + 48, 69, 79, 46, 67, 77, 52, 71, 81, 36, 54, 64, 62, 76, 87, 33, 52, 63, 58, 76, 87, 75, 96, 107, 90, 112, 123, 88, 113, 125, 101, 125, 138, 109, 132, 145, 110, 134, 148, 65, 98, 114, 103, 128, 143, 88, 114, 131, 85, 112, 128, 91, 118, 134, 101, 127, 142, 105, 131, 145, 112, 137, 150, + 102, 130, 145, 97, 126, 142, 89, 120, 138, 105, 136, 152, 115, 144, 160, 122, 151, 166, 131, 157, 173, 128, 157, 175, 154, 177, 191, 163, 184, 196, 165, 186, 198, 170, 189, 200, 181, 197, 205, 179, 195, 204, 183, 198, 208, 179, 195, 205, 184, 199, 208, 185, 200, 209, 191, 206, 213, 183, 200, 208, 181, 198, 207, + 188, 204, 211, 189, 203, 212, 184, 200, 207, 187, 203, 210, 188, 203, 210, 186, 200, 208, 180, 197, 205, 174, 192, 200, 172, 190, 199, 170, 189, 198, 168, 187, 196, 167, 187, 196, 157, 178, 188, 151, 175, 184, 154, 177, 185, 143, 169, 179, 155, 176, 184, 163, 181, 188, 165, 182, 188, 159, 179, 184, 167, 184, 189, + 167, 185, 191, 172, 187, 194, 170, 187, 192, 162, 182, 187, 156, 176, 182, 157, 179, 184, 149, 172, 178, 168, 185, 191, 154, 175, 183, 159, 179, 186, 141, 165, 175, 141, 166, 175, 138, 164, 173, 144, 170, 178, 180, 194, 199, 183, 196, 200, 132, 158, 167, 109, 137, 149, 117, 140, 151, 120, 140, 151, 46, 77, 92, + 21, 52, 66, 3, 29, 43, 62, 80, 92, 93, 106, 117, 48, 61, 69, 24, 40, 47, 32, 46, 53, 9, 25, 33, 28, 49, 57, 42, 62, 69, 101, 120, 126, 133, 150, 156, 121, 139, 146, 83, 108, 119, 108, 129, 139, 92, 118, 129, 96, 125, 136, 123, 146, 155, 140, 159, 167, 149, 168, 176, 147, 167, 175, + 146, 166, 176, 137, 161, 172, 157, 176, 184, 181, 198, 202, 197, 210, 212, 210, 220, 222, 203, 215, 219, 199, 212, 218, 198, 211, 218, 185, 202, 211, 178, 198, 207, 185, 204, 210, 193, 209, 215, 189, 206, 213, 181, 200, 207, 183, 202, 208, 194, 210, 216, 183, 203, 210, 186, 205, 211, 197, 213, 219, 202, 216, 220, + 212, 224, 227, 216, 228, 230, 220, 230, 230, 225, 234, 234, 229, 237, 237, 229, 237, 237, 230, 238, 237, 231, 240, 239, 233, 241, 240, 236, 242, 241, 237, 243, 242, 238, 244, 243, 239, 245, 244, 240, 246, 245, 240, 246, 245, 240, 246, 245, 241, 247, 246, 240, 246, 245, 240, 246, 245, 241, 246, 245, 240, 246, 245, + 42, 16, 41, 41, 14, 40, 42, 15, 41, 43, 15, 41, 45, 16, 42, 45, 14, 41, 46, 15, 42, 47, 16, 45, 46, 15, 44, 48, 16, 45, 49, 18, 47, 50, 17, 47, 50, 18, 47, 50, 19, 48, 51, 20, 48, 51, 19, 47, 53, 20, 50, 54, 21, 50, 53, 20, 50, 53, 19, 49, 54, 19, 50, + 54, 21, 51, 57, 25, 55, 65, 35, 64, 71, 42, 69, 60, 29, 59, 57, 25, 56, 59, 28, 56, 61, 30, 59, 64, 32, 61, 67, 36, 65, 72, 46, 72, 76, 55, 80, 87, 71, 94, 98, 89, 110, 111, 107, 126, 127, 129, 147, 140, 143, 162, 151, 157, 172, 159, 168, 182, 166, 177, 190, 169, 181, 194, + 172, 185, 197, 175, 189, 201, 179, 194, 203, 180, 196, 204, 182, 198, 207, 183, 200, 209, 184, 201, 210, 185, 202, 211, 186, 202, 211, 185, 202, 211, 187, 204, 213, 186, 203, 213, 186, 203, 212, 187, 204, 213, 186, 205, 213, 187, 205, 213, 187, 206, 214, 186, 205, 213, 184, 204, 212, 185, 205, 213, 183, 204, 212, + 181, 203, 211, 181, 204, 212, 179, 202, 210, 179, 202, 210, 178, 201, 210, 180, 202, 211, 178, 201, 211, 177, 200, 210, 177, 199, 209, 178, 200, 211, 178, 200, 211, 175, 199, 209, 175, 200, 210, 176, 200, 210, 175, 200, 210, 176, 200, 210, 178, 200, 211, 178, 200, 211, 177, 199, 210, 178, 200, 211, 177, 199, 210, + 179, 200, 211, 178, 200, 210, 177, 199, 210, 178, 199, 210, 173, 198, 208, 175, 198, 209, 174, 198, 209, 174, 198, 208, 175, 197, 208, 174, 196, 207, 171, 195, 206, 174, 196, 207, 174, 196, 207, 172, 195, 206, 173, 195, 206, 171, 193, 204, 168, 190, 201, 166, 187, 198, 162, 183, 194, 155, 178, 189, 149, 173, 184, + 138, 164, 175, 137, 161, 172, 132, 154, 166, 125, 145, 159, 129, 148, 161, 133, 151, 162, 120, 141, 153, 105, 129, 142, 94, 120, 134, 110, 133, 144, 119, 142, 153, 122, 144, 154, 101, 126, 136, 108, 131, 139, 86, 108, 116, 100, 120, 126, 99, 118, 125, 57, 77, 87, 70, 87, 94, 75, 91, 98, 39, 59, 67, + 47, 65, 73, 34, 53, 62, 49, 64, 71, 33, 47, 54, 26, 41, 48, 71, 82, 87, 62, 75, 81, 52, 67, 75, 65, 80, 88, 72, 89, 98, 75, 95, 106, 88, 109, 118, 80, 100, 110, 57, 84, 93, 77, 101, 110, 102, 124, 131, 77, 102, 111, 94, 113, 120, 81, 102, 109, 67, 88, 97, 58, 78, 88, + 72, 89, 98, 50, 69, 79, 50, 68, 77, 47, 64, 73, 53, 68, 80, 55, 73, 84, 51, 70, 82, 64, 86, 97, 81, 104, 114, 84, 108, 120, 101, 124, 136, 85, 110, 125, 71, 100, 115, 104, 127, 142, 80, 108, 123, 86, 112, 126, 115, 136, 149, 98, 123, 138, 87, 116, 131, 78, 110, 126, 96, 125, 139, + 110, 138, 152, 118, 142, 158, 132, 154, 168, 111, 140, 157, 109, 139, 156, 152, 172, 183, 134, 160, 174, 134, 160, 176, 132, 163, 180, 144, 170, 185, 162, 182, 196, 168, 187, 197, 174, 191, 201, 183, 197, 206, 187, 201, 209, 192, 205, 212, 187, 202, 211, 187, 202, 210, 193, 207, 213, 189, 203, 211, 189, 203, 212, + 192, 206, 214, 179, 196, 207, 185, 201, 210, 182, 199, 209, 184, 200, 208, 177, 195, 204, 184, 199, 207, 188, 202, 210, 175, 192, 201, 175, 193, 201, 174, 191, 200, 163, 184, 193, 157, 179, 189, 153, 177, 187, 158, 181, 189, 171, 190, 197, 170, 187, 195, 167, 185, 193, 174, 190, 195, 175, 190, 195, 172, 189, 194, + 172, 188, 194, 176, 191, 196, 175, 191, 196, 164, 183, 188, 163, 182, 188, 170, 187, 192, 154, 177, 182, 147, 171, 177, 158, 178, 185, 153, 173, 182, 156, 176, 183, 154, 174, 181, 153, 175, 181, 152, 174, 180, 147, 171, 178, 120, 149, 159, 154, 172, 179, 144, 163, 172, 90, 116, 129, 60, 90, 104, 77, 102, 115, + 72, 92, 104, 101, 112, 122, 44, 63, 74, 27, 46, 58, 24, 38, 47, 34, 47, 53, 21, 34, 40, 30, 44, 50, 25, 45, 51, 40, 61, 67, 65, 87, 94, 48, 73, 80, 115, 132, 140, 125, 144, 153, 100, 124, 135, 123, 146, 156, 121, 144, 153, 105, 131, 143, 109, 136, 147, 125, 150, 159, 142, 162, 172, + 151, 169, 178, 159, 176, 185, 143, 164, 175, 159, 180, 189, 172, 190, 198, 184, 200, 206, 203, 214, 218, 197, 211, 215, 206, 217, 222, 202, 214, 220, 192, 208, 214, 184, 203, 210, 190, 207, 214, 195, 210, 216, 192, 208, 214, 186, 203, 209, 189, 206, 212, 197, 212, 218, 193, 210, 216, 190, 208, 214, 198, 214, 219, + 208, 221, 224, 215, 227, 229, 219, 230, 231, 222, 232, 232, 226, 235, 235, 230, 238, 238, 232, 240, 238, 232, 240, 239, 232, 240, 239, 235, 242, 241, 236, 242, 241, 237, 243, 242, 238, 244, 243, 238, 244, 243, 240, 246, 245, 240, 246, 245, 240, 246, 245, 240, 246, 245, 239, 245, 244, 240, 245, 244, 240, 246, 245, + 41, 14, 40, 42, 15, 41, 42, 15, 41, 42, 15, 41, 43, 14, 40, 44, 15, 41, 45, 16, 42, 47, 17, 44, 46, 17, 45, 47, 17, 45, 49, 18, 48, 51, 20, 49, 49, 18, 47, 52, 21, 50, 54, 24, 51, 54, 23, 50, 52, 22, 50, 52, 22, 50, 55, 25, 53, 54, 24, 53, 53, 22, 51, + 57, 26, 55, 62, 32, 60, 60, 30, 58, 56, 25, 56, 55, 25, 54, 56, 25, 54, 58, 27, 56, 58, 26, 56, 61, 30, 59, 64, 34, 63, 71, 46, 72, 79, 61, 85, 89, 77, 99, 103, 95, 115, 116, 112, 131, 131, 134, 152, 145, 151, 168, 156, 165, 179, 164, 174, 188, 169, 182, 194, 173, 186, 198, + 176, 190, 202, 180, 195, 206, 181, 195, 208, 181, 198, 208, 182, 199, 208, 183, 200, 209, 184, 201, 210, 185, 202, 211, 185, 203, 211, 186, 203, 212, 187, 204, 213, 185, 204, 213, 186, 205, 213, 184, 204, 212, 186, 205, 213, 186, 205, 213, 185, 204, 212, 183, 204, 212, 184, 204, 212, 184, 203, 211, 180, 202, 210, + 182, 203, 211, 179, 200, 212, 179, 201, 212, 178, 201, 211, 178, 200, 211, 176, 200, 210, 175, 198, 209, 176, 199, 210, 176, 198, 209, 174, 199, 209, 174, 199, 209, 173, 198, 208, 174, 199, 209, 174, 198, 209, 175, 197, 208, 175, 198, 209, 175, 198, 209, 174, 197, 208, 174, 198, 209, 174, 199, 209, 174, 199, 208, + 174, 198, 208, 175, 197, 209, 174, 198, 209, 174, 197, 209, 174, 198, 208, 175, 198, 209, 174, 198, 209, 174, 197, 209, 176, 198, 209, 175, 197, 208, 174, 197, 207, 171, 195, 206, 169, 194, 204, 168, 193, 203, 168, 192, 202, 167, 192, 202, 166, 188, 199, 160, 183, 194, 158, 180, 191, 145, 171, 182, 134, 162, 173, + 129, 154, 165, 126, 149, 162, 116, 141, 153, 109, 132, 145, 120, 141, 153, 115, 136, 149, 107, 130, 143, 111, 133, 145, 91, 117, 129, 85, 114, 125, 100, 126, 137, 115, 138, 146, 94, 119, 128, 93, 116, 126, 77, 102, 109, 93, 112, 120, 83, 103, 110, 65, 83, 92, 60, 77, 85, 62, 78, 85, 57, 74, 80, + 54, 71, 78, 32, 49, 58, 41, 56, 64, 27, 41, 47, 29, 43, 49, 54, 66, 72, 62, 75, 81, 49, 64, 71, 71, 84, 91, 72, 89, 97, 59, 79, 90, 55, 78, 88, 110, 126, 134, 45, 72, 81, 66, 90, 98, 89, 111, 118, 85, 107, 115, 79, 100, 107, 73, 95, 103, 56, 78, 87, 90, 106, 114, + 57, 77, 84, 60, 76, 86, 59, 74, 83, 40, 58, 69, 49, 65, 76, 54, 72, 83, 65, 82, 93, 70, 92, 101, 69, 91, 102, 102, 120, 131, 92, 114, 126, 71, 95, 110, 76, 100, 114, 75, 99, 113, 73, 98, 112, 79, 103, 116, 71, 97, 112, 121, 140, 152, 110, 134, 148, 105, 132, 147, 109, 136, 152, + 113, 138, 154, 110, 138, 153, 116, 143, 159, 138, 159, 171, 145, 166, 178, 123, 150, 166, 138, 160, 175, 154, 173, 186, 160, 179, 192, 157, 178, 191, 150, 174, 188, 167, 187, 197, 173, 191, 200, 184, 198, 207, 184, 199, 208, 188, 203, 211, 191, 205, 212, 189, 203, 210, 188, 202, 210, 192, 206, 212, 186, 200, 208, + 188, 203, 211, 192, 205, 213, 185, 201, 210, 181, 197, 209, 183, 199, 209, 183, 199, 208, 186, 202, 209, 184, 199, 207, 180, 197, 205, 182, 197, 206, 175, 193, 200, 172, 190, 199, 176, 194, 200, 174, 192, 199, 174, 192, 199, 167, 188, 195, 167, 186, 194, 180, 195, 201, 176, 193, 199, 176, 193, 198, 176, 192, 196, + 174, 191, 196, 170, 188, 193, 176, 192, 197, 169, 186, 192, 175, 191, 196, 167, 186, 191, 170, 188, 193, 169, 188, 192, 169, 187, 191, 171, 187, 193, 162, 181, 186, 160, 179, 185, 167, 186, 189, 151, 173, 180, 129, 158, 166, 153, 173, 180, 110, 138, 149, 85, 115, 127, 125, 144, 155, 123, 141, 151, 143, 159, 168, + 54, 77, 89, 25, 49, 61, 21, 42, 54, 25, 40, 51, 42, 55, 63, 20, 34, 40, 22, 36, 42, 20, 35, 42, 26, 41, 48, 34, 53, 59, 57, 76, 83, 58, 80, 86, 70, 92, 100, 79, 104, 115, 120, 141, 150, 117, 141, 150, 135, 155, 164, 134, 155, 163, 124, 147, 156, 127, 150, 159, 124, 150, 160, + 139, 160, 172, 126, 151, 163, 153, 171, 180, 150, 171, 180, 149, 174, 184, 168, 188, 195, 175, 192, 199, 193, 207, 212, 196, 209, 214, 198, 211, 216, 199, 213, 218, 195, 210, 215, 189, 207, 213, 185, 204, 210, 193, 209, 214, 190, 207, 212, 191, 208, 213, 199, 213, 217, 201, 216, 219, 202, 216, 220, 192, 212, 217, + 204, 219, 222, 211, 224, 226, 217, 228, 230, 224, 234, 233, 226, 235, 235, 229, 237, 237, 232, 240, 240, 232, 240, 239, 234, 242, 241, 235, 241, 240, 236, 242, 241, 236, 242, 242, 238, 242, 243, 238, 244, 243, 238, 244, 243, 238, 244, 243, 239, 245, 244, 239, 245, 244, 239, 245, 244, 239, 244, 244, 239, 245, 244, + 41, 14, 40, 40, 13, 40, 44, 17, 42, 41, 15, 40, 42, 15, 40, 42, 14, 40, 45, 17, 43, 46, 17, 43, 46, 18, 45, 47, 18, 44, 49, 19, 47, 50, 20, 49, 52, 22, 51, 52, 22, 52, 56, 26, 55, 54, 25, 51, 56, 26, 52, 56, 27, 53, 54, 25, 51, 55, 25, 54, 58, 28, 56, + 61, 31, 60, 58, 28, 57, 54, 24, 53, 57, 27, 56, 57, 27, 56, 58, 27, 56, 59, 28, 56, 61, 30, 60, 64, 34, 63, 67, 40, 67, 70, 46, 71, 79, 64, 87, 92, 82, 103, 107, 101, 120, 119, 119, 137, 133, 139, 155, 147, 155, 170, 157, 169, 182, 163, 177, 190, 170, 184, 196, 174, 190, 202, + 178, 194, 206, 179, 196, 207, 181, 197, 208, 182, 200, 208, 181, 200, 208, 183, 202, 210, 184, 203, 211, 183, 203, 210, 185, 203, 212, 185, 203, 211, 185, 203, 212, 184, 204, 212, 185, 204, 212, 185, 204, 212, 184, 204, 212, 184, 204, 212, 185, 204, 212, 182, 204, 212, 183, 202, 211, 182, 202, 212, 181, 202, 212, + 181, 201, 212, 177, 199, 210, 177, 199, 210, 176, 198, 209, 176, 198, 209, 174, 199, 209, 174, 199, 209, 174, 198, 208, 175, 198, 208, 173, 198, 208, 173, 198, 208, 173, 198, 209, 172, 197, 207, 172, 197, 207, 173, 197, 208, 171, 195, 207, 171, 196, 208, 172, 197, 207, 170, 196, 207, 171, 196, 208, 171, 195, 208, + 172, 197, 207, 172, 196, 208, 171, 196, 208, 172, 196, 208, 172, 196, 208, 172, 197, 207, 172, 196, 207, 173, 196, 207, 174, 196, 208, 174, 196, 208, 174, 196, 207, 174, 196, 207, 173, 194, 205, 169, 193, 204, 168, 192, 202, 167, 190, 201, 163, 186, 197, 158, 180, 191, 151, 174, 185, 139, 164, 176, 128, 154, 165, + 114, 142, 154, 112, 137, 149, 101, 128, 141, 107, 130, 143, 95, 119, 131, 104, 127, 138, 105, 127, 139, 88, 113, 125, 99, 124, 134, 91, 119, 130, 101, 128, 137, 92, 117, 127, 97, 121, 131, 74, 101, 112, 101, 120, 128, 73, 97, 102, 87, 106, 112, 54, 74, 83, 63, 79, 87, 61, 76, 84, 57, 73, 80, + 41, 58, 65, 51, 65, 72, 32, 48, 55, 27, 42, 48, 31, 46, 51, 43, 57, 60, 63, 75, 79, 40, 57, 63, 67, 80, 87, 59, 76, 84, 61, 78, 88, 78, 95, 103, 52, 74, 83, 96, 113, 120, 50, 76, 84, 57, 81, 89, 75, 97, 104, 86, 107, 115, 58, 82, 91, 91, 108, 116, 70, 88, 97, + 55, 74, 83, 63, 79, 88, 47, 63, 74, 31, 48, 60, 33, 50, 62, 65, 82, 92, 36, 60, 70, 63, 83, 94, 84, 103, 110, 81, 101, 109, 77, 97, 109, 83, 103, 116, 75, 97, 111, 59, 84, 98, 75, 97, 110, 74, 98, 113, 96, 115, 130, 80, 105, 120, 102, 127, 140, 117, 142, 155, 103, 132, 149, + 112, 139, 156, 125, 149, 162, 122, 147, 162, 108, 137, 155, 117, 146, 163, 100, 134, 154, 97, 132, 152, 130, 154, 170, 143, 166, 179, 144, 167, 182, 154, 177, 190, 163, 183, 194, 174, 192, 201, 183, 199, 207, 188, 202, 209, 188, 204, 210, 189, 203, 210, 197, 209, 216, 192, 205, 211, 195, 206, 213, 192, 205, 212, + 184, 200, 208, 189, 204, 213, 184, 200, 210, 188, 202, 211, 190, 204, 213, 189, 203, 212, 181, 198, 207, 180, 196, 206, 188, 202, 209, 178, 195, 203, 180, 197, 203, 177, 196, 202, 174, 194, 201, 178, 197, 203, 180, 198, 204, 192, 206, 211, 192, 205, 211, 185, 201, 207, 177, 194, 200, 178, 196, 200, 175, 194, 198, + 179, 196, 201, 181, 198, 202, 176, 194, 199, 178, 194, 201, 171, 188, 196, 171, 189, 195, 175, 192, 196, 159, 180, 186, 164, 183, 189, 159, 180, 186, 163, 182, 188, 159, 178, 186, 148, 171, 179, 146, 169, 178, 146, 169, 177, 124, 151, 162, 118, 141, 153, 130, 150, 159, 149, 163, 172, 115, 135, 146, 32, 65, 80, + 91, 109, 120, 65, 81, 91, 27, 47, 60, 31, 44, 54, 32, 46, 54, 25, 39, 45, 29, 43, 48, 26, 41, 48, 21, 39, 45, 39, 55, 62, 48, 66, 72, 72, 90, 96, 73, 93, 101, 90, 111, 121, 89, 113, 124, 95, 121, 133, 103, 130, 140, 121, 144, 154, 128, 150, 159, 135, 156, 164, 146, 163, 173, + 137, 157, 166, 150, 168, 177, 143, 162, 172, 151, 168, 177, 153, 170, 179, 155, 173, 182, 168, 184, 191, 176, 194, 200, 185, 200, 206, 190, 204, 209, 200, 212, 217, 196, 210, 216, 196, 210, 215, 195, 210, 215, 189, 206, 211, 196, 211, 215, 194, 210, 214, 199, 213, 217, 204, 217, 221, 209, 221, 225, 205, 219, 222, + 205, 220, 223, 211, 223, 227, 216, 227, 229, 222, 232, 232, 227, 235, 235, 228, 236, 236, 231, 239, 239, 233, 241, 241, 233, 241, 241, 234, 242, 241, 234, 241, 241, 235, 241, 241, 236, 241, 241, 236, 242, 241, 237, 243, 242, 237, 243, 242, 237, 243, 242, 237, 243, 242, 238, 244, 243, 237, 243, 242, 238, 244, 243, + 38, 13, 39, 40, 13, 40, 39, 14, 39, 40, 14, 39, 41, 15, 39, 40, 14, 39, 45, 18, 44, 44, 17, 43, 47, 20, 46, 48, 20, 46, 49, 20, 46, 51, 22, 49, 51, 23, 52, 55, 28, 54, 54, 27, 54, 56, 29, 56, 58, 31, 57, 56, 29, 55, 58, 29, 55, 59, 30, 56, 59, 29, 56, + 58, 29, 56, 58, 31, 58, 58, 31, 59, 61, 33, 61, 59, 30, 58, 61, 33, 59, 63, 35, 61, 64, 37, 63, 66, 41, 68, 67, 44, 68, 70, 50, 72, 79, 68, 86, 95, 87, 104, 109, 105, 121, 123, 124, 140, 137, 146, 160, 148, 162, 175, 157, 173, 185, 164, 180, 192, 169, 186, 198, 175, 192, 203, + 179, 195, 207, 179, 196, 207, 180, 198, 208, 180, 198, 209, 182, 200, 210, 183, 201, 211, 182, 201, 210, 182, 201, 212, 183, 201, 213, 183, 201, 212, 183, 202, 212, 183, 203, 210, 181, 201, 212, 183, 203, 211, 182, 203, 211, 182, 203, 211, 181, 202, 210, 181, 202, 210, 181, 201, 211, 181, 201, 211, 178, 199, 211, + 177, 199, 210, 177, 199, 210, 176, 198, 209, 175, 197, 209, 176, 198, 209, 173, 197, 208, 173, 197, 208, 176, 198, 209, 174, 197, 208, 175, 197, 209, 173, 197, 209, 172, 197, 208, 173, 197, 209, 172, 197, 208, 172, 196, 207, 172, 198, 208, 173, 198, 208, 172, 197, 207, 168, 195, 206, 169, 195, 207, 169, 195, 207, + 170, 194, 206, 170, 194, 206, 169, 195, 207, 171, 195, 207, 171, 195, 207, 171, 195, 207, 170, 195, 206, 171, 195, 205, 169, 194, 206, 170, 193, 205, 169, 193, 204, 166, 191, 202, 167, 191, 202, 163, 189, 200, 161, 186, 198, 157, 183, 195, 154, 179, 191, 144, 170, 183, 140, 166, 179, 126, 155, 167, 117, 145, 159, + 98, 129, 141, 79, 110, 123, 78, 103, 116, 77, 101, 112, 86, 110, 120, 89, 111, 121, 85, 107, 118, 84, 105, 116, 81, 104, 115, 83, 108, 117, 92, 116, 127, 110, 132, 141, 76, 102, 113, 102, 123, 133, 75, 99, 107, 83, 103, 110, 83, 102, 107, 91, 105, 113, 48, 65, 74, 63, 77, 86, 48, 64, 72, + 29, 47, 54, 47, 61, 68, 54, 66, 72, 25, 39, 44, 38, 51, 56, 39, 52, 56, 56, 69, 73, 56, 68, 74, 39, 52, 58, 39, 53, 59, 51, 63, 71, 64, 79, 86, 35, 55, 64, 75, 93, 99, 91, 107, 113, 57, 78, 84, 51, 74, 82, 67, 87, 95, 68, 89, 97, 40, 63, 74, 64, 83, 93, + 56, 74, 84, 23, 44, 56, 46, 62, 73, 28, 44, 56, 37, 52, 65, 62, 80, 89, 53, 72, 83, 71, 89, 97, 75, 94, 102, 76, 97, 105, 64, 88, 98, 78, 99, 110, 101, 119, 129, 108, 124, 135, 105, 122, 132, 112, 127, 139, 98, 117, 130, 104, 124, 136, 102, 126, 137, 103, 130, 142, 118, 143, 157, + 144, 163, 175, 146, 164, 176, 148, 167, 178, 161, 178, 188, 144, 167, 180, 146, 168, 181, 141, 166, 179, 152, 172, 184, 144, 164, 179, 159, 178, 190, 147, 172, 186, 163, 183, 195, 156, 179, 191, 161, 183, 195, 175, 194, 203, 173, 193, 200, 186, 202, 208, 189, 204, 210, 197, 209, 215, 201, 212, 217, 200, 211, 217, + 191, 203, 212, 186, 201, 210, 186, 201, 210, 194, 207, 215, 181, 199, 208, 183, 199, 208, 188, 201, 210, 184, 199, 208, 181, 197, 206, 190, 204, 210, 184, 201, 208, 180, 199, 206, 182, 199, 206, 177, 196, 203, 169, 191, 199, 162, 186, 194, 168, 189, 197, 172, 192, 199, 179, 196, 203, 183, 199, 205, 181, 198, 203, + 177, 196, 200, 165, 186, 192, 174, 192, 198, 175, 192, 199, 178, 194, 200, 181, 196, 202, 174, 192, 197, 180, 196, 201, 171, 189, 195, 164, 184, 191, 168, 186, 193, 164, 183, 190, 168, 186, 193, 158, 178, 187, 153, 175, 182, 146, 167, 174, 138, 158, 167, 109, 134, 146, 76, 106, 119, 88, 113, 126, 139, 156, 165, + 69, 90, 103, 61, 83, 94, 38, 57, 70, 53, 66, 74, 65, 76, 81, 78, 85, 89, 87, 96, 99, 67, 77, 82, 67, 75, 81, 45, 59, 65, 53, 70, 77, 52, 72, 79, 72, 91, 99, 70, 94, 103, 79, 101, 111, 79, 105, 117, 96, 120, 131, 96, 121, 131, 95, 119, 128, 100, 125, 134, 98, 124, 134, + 114, 135, 145, 118, 139, 150, 125, 147, 157, 114, 138, 150, 111, 137, 150, 110, 140, 153, 131, 157, 168, 149, 170, 180, 169, 186, 194, 182, 196, 202, 190, 203, 209, 190, 206, 211, 192, 207, 212, 196, 210, 215, 198, 211, 215, 199, 213, 218, 197, 211, 216, 199, 214, 217, 200, 214, 218, 209, 221, 224, 212, 224, 226, + 213, 225, 227, 211, 224, 226, 216, 228, 230, 216, 228, 230, 222, 232, 233, 228, 236, 235, 229, 237, 237, 232, 240, 240, 234, 242, 242, 235, 241, 242, 236, 242, 242, 236, 242, 241, 235, 241, 240, 235, 241, 240, 235, 241, 240, 235, 241, 240, 235, 241, 240, 235, 241, 241, 236, 242, 241, 237, 243, 242, 237, 243, 242, + 40, 18, 43, 39, 17, 42, 40, 15, 41, 40, 16, 41, 40, 16, 40, 42, 18, 42, 44, 20, 44, 43, 17, 43, 45, 17, 43, 48, 21, 46, 50, 24, 48, 50, 24, 49, 52, 24, 52, 54, 27, 54, 55, 30, 56, 57, 32, 58, 59, 35, 60, 61, 36, 60, 62, 36, 60, 63, 36, 61, 62, 36, 61, + 62, 39, 64, 61, 40, 64, 61, 40, 64, 64, 43, 67, 65, 44, 68, 67, 44, 68, 69, 46, 69, 70, 48, 71, 72, 52, 75, 74, 58, 79, 77, 65, 83, 86, 80, 97, 96, 93, 109, 110, 112, 127, 127, 133, 148, 140, 152, 166, 149, 164, 178, 159, 176, 187, 165, 184, 194, 170, 188, 199, 172, 191, 202, + 177, 195, 206, 178, 196, 207, 178, 197, 208, 179, 199, 210, 179, 199, 210, 181, 200, 211, 181, 200, 211, 180, 200, 211, 180, 200, 211, 181, 200, 211, 180, 200, 211, 180, 200, 212, 181, 201, 212, 181, 202, 210, 180, 201, 209, 181, 202, 209, 180, 200, 210, 180, 201, 210, 179, 199, 211, 178, 199, 210, 176, 198, 209, + 177, 199, 210, 176, 198, 209, 176, 198, 209, 175, 197, 209, 175, 197, 208, 176, 198, 209, 175, 198, 209, 175, 197, 208, 175, 197, 208, 176, 199, 209, 175, 197, 209, 174, 197, 209, 173, 197, 208, 173, 198, 208, 172, 197, 207, 173, 197, 208, 171, 196, 206, 171, 197, 207, 171, 196, 206, 169, 195, 206, 169, 195, 206, + 168, 195, 206, 168, 194, 206, 169, 194, 206, 170, 195, 207, 170, 194, 206, 169, 193, 205, 170, 194, 206, 169, 193, 205, 168, 193, 205, 167, 191, 203, 164, 189, 201, 165, 189, 200, 162, 188, 200, 163, 188, 200, 159, 185, 197, 156, 182, 194, 150, 177, 189, 141, 168, 181, 129, 158, 173, 115, 146, 160, 95, 128, 143, + 86, 119, 132, 71, 102, 115, 55, 86, 98, 54, 83, 94, 60, 82, 92, 71, 90, 99, 79, 96, 105, 74, 94, 104, 71, 93, 102, 84, 105, 113, 78, 101, 110, 90, 112, 120, 95, 115, 125, 69, 92, 103, 83, 100, 109, 85, 102, 107, 71, 89, 96, 75, 91, 99, 63, 79, 87, 48, 65, 74, 59, 72, 80, + 40, 55, 63, 58, 70, 76, 34, 49, 54, 25, 39, 44, 36, 50, 53, 47, 59, 63, 52, 64, 69, 47, 59, 65, 46, 59, 64, 27, 42, 47, 51, 63, 70, 65, 77, 84, 69, 83, 89, 11, 30, 37, 75, 90, 97, 61, 77, 83, 39, 60, 67, 92, 105, 113, 58, 75, 83, 55, 71, 79, 68, 81, 89, + 51, 66, 75, 41, 56, 66, 50, 62, 74, 28, 44, 56, 42, 56, 68, 53, 69, 78, 34, 54, 66, 71, 89, 97, 68, 87, 94, 70, 91, 98, 58, 82, 92, 78, 98, 109, 43, 68, 82, 49, 71, 83, 64, 86, 98, 82, 101, 112, 90, 109, 119, 87, 109, 119, 95, 116, 126, 127, 152, 164, 126, 149, 162, + 119, 144, 158, 120, 145, 159, 112, 142, 157, 110, 142, 156, 160, 178, 188, 153, 173, 185, 142, 167, 180, 126, 155, 172, 135, 162, 177, 165, 182, 193, 168, 185, 196, 162, 182, 194, 167, 186, 197, 164, 183, 195, 162, 183, 194, 179, 196, 203, 194, 208, 214, 181, 198, 206, 192, 206, 212, 196, 207, 214, 194, 206, 213, + 195, 207, 213, 191, 205, 211, 195, 209, 214, 188, 203, 210, 189, 203, 211, 190, 205, 212, 182, 198, 207, 188, 202, 210, 185, 201, 208, 188, 203, 210, 179, 198, 204, 180, 199, 206, 175, 195, 203, 178, 197, 204, 178, 198, 205, 182, 199, 206, 180, 199, 205, 179, 197, 204, 182, 198, 204, 167, 189, 196, 171, 191, 198, + 163, 185, 193, 161, 184, 192, 172, 192, 199, 181, 196, 203, 169, 189, 195, 171, 189, 195, 174, 192, 197, 165, 186, 192, 165, 186, 192, 170, 189, 195, 167, 186, 192, 175, 192, 197, 171, 188, 195, 165, 185, 191, 153, 175, 181, 140, 163, 170, 140, 161, 168, 131, 155, 162, 132, 154, 163, 123, 147, 157, 110, 135, 147, + 147, 165, 175, 116, 139, 150, 137, 157, 166, 133, 146, 151, 79, 91, 96, 39, 53, 56, 11, 22, 25, 11, 25, 30, 22, 37, 43, 17, 32, 38, 8, 28, 35, 27, 46, 54, 19, 46, 56, 40, 65, 75, 51, 73, 85, 79, 98, 108, 77, 98, 107, 91, 111, 118, 81, 103, 111, 66, 90, 99, 58, 83, 94, + 51, 78, 89, 70, 93, 104, 80, 102, 113, 81, 106, 118, 60, 90, 103, 66, 98, 110, 76, 112, 125, 99, 131, 144, 115, 146, 159, 143, 168, 179, 171, 188, 195, 184, 199, 205, 187, 203, 209, 191, 205, 210, 197, 210, 215, 198, 212, 215, 205, 217, 221, 203, 216, 220, 201, 215, 218, 203, 217, 221, 209, 221, 224, + 215, 227, 229, 218, 229, 231, 218, 229, 231, 219, 230, 231, 222, 232, 232, 225, 234, 234, 227, 235, 235, 228, 238, 238, 232, 240, 239, 234, 241, 241, 235, 242, 241, 237, 243, 242, 237, 243, 242, 235, 241, 240, 235, 241, 240, 235, 241, 240, 235, 241, 240, 235, 242, 239, 236, 243, 240, 236, 243, 241, 236, 242, 241, + 39, 19, 42, 40, 19, 42, 41, 18, 42, 41, 16, 41, 42, 18, 42, 42, 18, 42, 43, 19, 43, 46, 22, 46, 47, 24, 47, 49, 25, 48, 50, 27, 49, 51, 27, 51, 52, 28, 53, 54, 32, 56, 54, 32, 56, 58, 35, 59, 62, 38, 62, 64, 40, 64, 65, 42, 66, 68, 47, 68, 68, 50, 71, + 67, 50, 71, 68, 51, 72, 71, 55, 76, 72, 55, 77, 75, 58, 79, 75, 60, 82, 78, 64, 84, 80, 67, 85, 79, 69, 88, 84, 75, 91, 92, 85, 102, 96, 96, 112, 106, 110, 126, 117, 126, 142, 128, 143, 158, 141, 157, 169, 153, 169, 180, 159, 177, 188, 167, 185, 196, 171, 190, 201, 172, 191, 202, + 175, 194, 205, 176, 195, 206, 177, 197, 208, 177, 197, 208, 178, 198, 209, 179, 199, 210, 178, 198, 209, 179, 199, 210, 179, 199, 210, 180, 201, 211, 179, 199, 210, 180, 200, 211, 179, 199, 210, 179, 199, 210, 179, 199, 209, 179, 200, 210, 179, 200, 211, 178, 199, 210, 176, 198, 209, 175, 198, 209, 176, 198, 209, + 176, 198, 209, 175, 197, 208, 174, 197, 207, 175, 197, 208, 175, 198, 208, 175, 197, 208, 176, 197, 208, 176, 198, 209, 176, 198, 209, 176, 198, 209, 176, 198, 210, 175, 198, 210, 176, 198, 210, 174, 197, 208, 173, 197, 207, 171, 196, 206, 172, 197, 207, 173, 197, 207, 172, 196, 206, 169, 194, 205, 170, 194, 205, + 170, 194, 206, 170, 194, 206, 171, 195, 207, 169, 193, 205, 169, 193, 205, 171, 195, 207, 170, 194, 205, 167, 192, 204, 163, 189, 201, 163, 189, 201, 163, 188, 200, 160, 187, 198, 159, 185, 197, 152, 180, 193, 149, 176, 188, 143, 171, 186, 135, 165, 180, 133, 162, 177, 117, 149, 164, 103, 137, 152, 87, 123, 137, + 80, 113, 127, 68, 100, 113, 61, 90, 103, 48, 78, 89, 44, 69, 79, 37, 61, 70, 36, 58, 67, 45, 65, 73, 67, 84, 91, 65, 84, 92, 82, 101, 111, 84, 104, 114, 80, 101, 112, 74, 95, 106, 64, 83, 92, 65, 83, 90, 60, 77, 84, 66, 83, 90, 63, 79, 88, 57, 72, 81, 52, 66, 74, + 48, 60, 68, 48, 61, 66, 29, 41, 45, 36, 49, 52, 30, 42, 46, 60, 70, 74, 54, 65, 69, 53, 65, 70, 56, 68, 73, 41, 54, 59, 36, 47, 55, 60, 73, 79, 77, 89, 95, 60, 74, 81, 41, 54, 63, 82, 93, 100, 25, 45, 53, 48, 66, 73, 74, 88, 94, 24, 41, 49, 58, 70, 77, + 43, 55, 65, 64, 75, 84, 50, 61, 71, 22, 37, 47, 38, 52, 60, 52, 65, 73, 54, 70, 78, 53, 71, 81, 69, 86, 94, 53, 78, 87, 88, 106, 116, 62, 85, 97, 92, 108, 117, 61, 81, 92, 90, 107, 115, 89, 107, 116, 104, 121, 128, 83, 102, 112, 79, 100, 112, 84, 113, 126, 107, 132, 145, + 102, 130, 143, 121, 146, 157, 135, 159, 168, 148, 169, 178, 138, 162, 173, 140, 163, 175, 145, 168, 181, 145, 168, 183, 157, 177, 189, 133, 158, 174, 148, 168, 183, 152, 174, 187, 153, 176, 189, 175, 191, 201, 172, 189, 200, 167, 185, 196, 178, 193, 201, 186, 199, 206, 188, 200, 207, 192, 204, 210, 191, 203, 210, + 187, 199, 206, 190, 204, 209, 192, 205, 212, 189, 203, 210, 191, 206, 213, 193, 206, 214, 192, 205, 212, 183, 199, 207, 192, 206, 212, 184, 200, 207, 184, 200, 208, 175, 195, 203, 176, 196, 202, 175, 195, 203, 170, 192, 199, 175, 196, 204, 177, 195, 204, 165, 187, 197, 164, 186, 195, 165, 188, 195, 162, 184, 193, + 160, 182, 192, 170, 189, 197, 172, 191, 198, 168, 189, 195, 181, 197, 203, 176, 193, 198, 167, 187, 193, 167, 187, 193, 175, 193, 198, 169, 188, 195, 172, 189, 195, 163, 181, 189, 152, 174, 181, 153, 174, 182, 149, 172, 179, 150, 171, 178, 138, 163, 170, 137, 163, 170, 136, 160, 169, 134, 157, 166, 154, 171, 180, + 128, 149, 161, 92, 120, 134, 107, 130, 142, 63, 83, 92, 31, 48, 52, 45, 63, 66, 20, 33, 37, 26, 40, 44, 23, 38, 44, 25, 40, 47, 36, 51, 58, 33, 50, 56, 50, 67, 75, 52, 70, 78, 62, 79, 87, 42, 63, 73, 33, 56, 65, 35, 59, 67, 27, 54, 62, 42, 67, 76, 65, 86, 97, + 81, 101, 111, 76, 98, 107, 66, 89, 100, 79, 101, 112, 100, 120, 131, 74, 98, 110, 55, 83, 96, 66, 94, 108, 82, 112, 126, 98, 128, 142, 122, 148, 161, 155, 176, 185, 178, 193, 200, 183, 198, 204, 185, 200, 206, 195, 210, 213, 199, 212, 215, 205, 217, 220, 207, 218, 222, 205, 218, 221, 204, 217, 220, + 207, 220, 223, 217, 227, 230, 223, 232, 235, 222, 232, 234, 224, 233, 234, 225, 235, 235, 228, 237, 237, 230, 238, 238, 231, 239, 238, 231, 240, 240, 232, 240, 239, 232, 240, 239, 235, 241, 240, 235, 241, 240, 235, 241, 240, 235, 241, 240, 234, 240, 239, 235, 242, 239, 235, 242, 239, 236, 242, 241, 236, 242, 241, + 39, 19, 42, 40, 20, 43, 40, 17, 41, 43, 19, 43, 44, 20, 44, 44, 20, 44, 46, 23, 47, 46, 25, 47, 46, 24, 46, 49, 27, 49, 51, 29, 51, 51, 29, 53, 55, 33, 57, 57, 37, 60, 58, 40, 63, 61, 42, 65, 66, 47, 70, 68, 50, 72, 71, 55, 76, 76, 61, 81, 78, 65, 83, + 82, 72, 89, 85, 76, 94, 86, 77, 94, 91, 82, 98, 91, 83, 98, 94, 84, 101, 94, 87, 104, 94, 90, 106, 97, 95, 111, 103, 101, 117, 108, 109, 125, 114, 117, 132, 120, 129, 145, 128, 141, 156, 138, 152, 165, 146, 161, 173, 153, 169, 181, 161, 179, 190, 164, 185, 196, 169, 189, 200, 171, 191, 202, + 174, 194, 205, 174, 195, 205, 176, 196, 207, 176, 196, 207, 177, 197, 208, 177, 197, 208, 178, 197, 208, 179, 199, 210, 178, 199, 210, 178, 199, 210, 178, 199, 210, 179, 199, 210, 178, 198, 209, 178, 199, 210, 179, 199, 210, 178, 199, 210, 175, 197, 208, 176, 198, 209, 174, 197, 208, 174, 198, 209, 175, 197, 208, + 173, 198, 208, 174, 197, 209, 175, 197, 209, 174, 197, 208, 174, 197, 208, 175, 197, 208, 176, 198, 209, 176, 197, 208, 176, 198, 209, 176, 198, 209, 175, 198, 210, 177, 198, 209, 173, 198, 208, 173, 197, 208, 173, 197, 207, 174, 196, 207, 173, 195, 206, 172, 195, 206, 171, 195, 205, 172, 195, 206, 171, 195, 207, + 171, 194, 206, 171, 195, 207, 170, 194, 206, 170, 194, 206, 170, 194, 206, 168, 192, 205, 169, 194, 205, 168, 192, 204, 165, 191, 203, 164, 191, 203, 162, 188, 200, 158, 185, 198, 154, 182, 193, 151, 179, 190, 147, 175, 186, 143, 171, 185, 137, 166, 181, 131, 160, 176, 116, 148, 164, 109, 141, 156, 96, 129, 144, + 81, 113, 128, 75, 106, 121, 58, 92, 106, 63, 92, 104, 58, 82, 91, 37, 61, 70, 27, 49, 57, 22, 43, 50, 28, 46, 54, 76, 89, 94, 68, 84, 93, 81, 98, 107, 82, 99, 107, 66, 84, 96, 59, 76, 85, 70, 85, 93, 51, 67, 75, 70, 85, 92, 66, 80, 88, 56, 69, 79, 53, 64, 73, + 36, 50, 57, 45, 57, 62, 47, 58, 62, 32, 44, 48, 39, 50, 54, 59, 69, 72, 56, 67, 72, 73, 84, 88, 58, 70, 74, 47, 58, 62, 35, 46, 52, 37, 50, 56, 37, 51, 58, 77, 87, 93, 24, 38, 46, 51, 63, 70, 87, 94, 100, 21, 35, 40, 42, 55, 61, 46, 59, 65, 41, 54, 61, + 35, 50, 57, 42, 54, 63, 45, 57, 65, 29, 43, 50, 40, 54, 61, 41, 57, 63, 36, 54, 61, 56, 72, 80, 46, 64, 73, 67, 82, 90, 40, 59, 71, 42, 58, 70, 25, 44, 55, 37, 54, 64, 46, 60, 69, 49, 64, 73, 49, 67, 76, 59, 78, 87, 98, 116, 126, 88, 113, 125, 68, 99, 111, + 55, 89, 100, 88, 116, 126, 115, 143, 154, 128, 154, 163, 143, 166, 176, 151, 171, 180, 172, 187, 194, 159, 178, 187, 178, 194, 201, 152, 174, 187, 149, 169, 185, 156, 176, 190, 174, 191, 200, 169, 186, 197, 156, 178, 189, 168, 185, 197, 181, 195, 204, 184, 197, 206, 170, 187, 197, 190, 202, 209, 188, 200, 207, + 196, 209, 214, 188, 203, 208, 189, 203, 209, 188, 204, 209, 180, 197, 205, 189, 203, 210, 189, 203, 210, 193, 206, 213, 189, 204, 211, 188, 203, 209, 185, 201, 208, 184, 201, 207, 183, 200, 207, 182, 199, 205, 180, 198, 204, 172, 192, 201, 168, 189, 199, 172, 192, 201, 165, 187, 198, 155, 180, 190, 156, 181, 190, + 165, 186, 194, 172, 191, 198, 174, 192, 200, 169, 189, 197, 155, 181, 188, 169, 190, 195, 176, 195, 200, 180, 197, 202, 162, 184, 189, 177, 193, 198, 170, 188, 194, 169, 187, 193, 168, 184, 190, 162, 181, 187, 153, 174, 182, 144, 168, 176, 156, 176, 184, 151, 172, 181, 130, 157, 168, 128, 153, 166, 94, 124, 139, + 85, 118, 131, 89, 121, 133, 55, 89, 103, 21, 53, 62, 22, 42, 47, 3, 21, 25, 13, 26, 30, 30, 42, 48, 17, 33, 39, 10, 29, 34, 26, 42, 48, 28, 44, 50, 34, 52, 58, 45, 62, 69, 25, 48, 56, 33, 55, 63, 46, 66, 73, 66, 84, 91, 79, 97, 103, 88, 104, 111, 88, 106, 114, + 61, 84, 95, 62, 85, 96, 76, 97, 108, 94, 113, 125, 79, 103, 114, 91, 112, 123, 109, 129, 138, 107, 130, 140, 91, 117, 131, 82, 110, 125, 98, 125, 140, 110, 139, 153, 135, 161, 173, 169, 187, 193, 175, 193, 198, 191, 206, 211, 194, 208, 213, 198, 213, 217, 211, 221, 224, 207, 220, 223, 209, 222, 223, + 209, 222, 224, 211, 224, 226, 219, 229, 231, 222, 231, 232, 224, 234, 236, 225, 235, 235, 226, 235, 235, 231, 239, 238, 231, 239, 239, 232, 240, 240, 233, 241, 240, 232, 240, 239, 232, 240, 239, 234, 241, 240, 234, 240, 239, 233, 241, 240, 236, 242, 241, 236, 242, 241, 238, 243, 242, 236, 242, 242, 237, 243, 242, + 39, 20, 41, 39, 20, 42, 42, 20, 44, 44, 21, 45, 44, 22, 47, 46, 24, 47, 46, 24, 48, 48, 27, 49, 51, 31, 52, 52, 33, 53, 53, 34, 54, 55, 35, 58, 57, 39, 61, 59, 44, 66, 62, 49, 70, 67, 56, 75, 72, 62, 79, 76, 66, 83, 84, 74, 88, 86, 79, 93, 94, 89, 104, + 98, 95, 110, 101, 101, 115, 104, 110, 124, 107, 113, 127, 109, 114, 129, 111, 115, 130, 112, 116, 131, 116, 121, 134, 120, 125, 139, 121, 127, 141, 127, 135, 149, 132, 140, 155, 138, 150, 164, 142, 158, 171, 148, 166, 178, 153, 172, 184, 161, 179, 190, 163, 183, 194, 168, 188, 199, 170, 191, 202, 172, 192, 203, + 172, 193, 204, 173, 194, 205, 173, 195, 206, 174, 196, 207, 176, 197, 208, 175, 196, 207, 175, 197, 208, 175, 197, 208, 177, 198, 209, 176, 198, 209, 176, 198, 208, 178, 199, 208, 176, 198, 209, 176, 198, 209, 177, 198, 209, 175, 197, 208, 173, 196, 206, 173, 196, 207, 174, 197, 207, 173, 196, 208, 172, 196, 209, + 172, 196, 208, 173, 196, 208, 174, 197, 208, 175, 197, 209, 175, 197, 208, 175, 197, 208, 176, 197, 208, 176, 198, 209, 175, 198, 208, 175, 196, 208, 174, 197, 208, 172, 196, 208, 172, 196, 208, 172, 196, 206, 172, 196, 207, 171, 196, 207, 172, 195, 206, 174, 196, 207, 171, 196, 206, 174, 195, 207, 171, 195, 206, + 172, 195, 207, 169, 194, 206, 171, 195, 207, 171, 195, 207, 172, 195, 207, 173, 195, 206, 172, 195, 206, 170, 194, 206, 170, 194, 206, 168, 192, 204, 164, 190, 202, 163, 189, 201, 161, 187, 199, 157, 183, 194, 155, 181, 193, 150, 177, 191, 141, 170, 186, 130, 160, 176, 118, 149, 167, 110, 143, 158, 106, 137, 152, + 96, 125, 140, 91, 120, 135, 75, 106, 120, 73, 101, 113, 65, 91, 102, 53, 74, 83, 34, 54, 61, 25, 42, 48, 58, 70, 77, 73, 78, 95, 27, 40, 48, 56, 68, 77, 69, 84, 93, 73, 87, 97, 55, 71, 82, 73, 86, 95, 64, 77, 86, 63, 76, 84, 58, 71, 80, 48, 62, 70, 57, 68, 77, + 31, 44, 52, 40, 53, 59, 50, 61, 65, 23, 35, 39, 45, 55, 60, 55, 64, 68, 56, 67, 72, 55, 67, 72, 59, 70, 74, 27, 41, 45, 49, 59, 64, 27, 40, 46, 38, 51, 57, 51, 61, 68, 45, 56, 64, 18, 29, 38, 56, 66, 72, 59, 69, 74, 27, 37, 41, 39, 52, 54, 36, 51, 51, + 34, 48, 51, 31, 46, 52, 21, 37, 44, 39, 54, 59, 25, 39, 45, 32, 47, 52, 31, 46, 53, 53, 65, 73, 43, 55, 65, 35, 49, 59, 38, 54, 63, 22, 39, 49, 31, 49, 57, 27, 41, 50, 22, 37, 45, 30, 44, 51, 33, 48, 57, 56, 70, 76, 40, 57, 66, 86, 101, 109, 91, 109, 117, + 120, 142, 150, 74, 103, 113, 95, 123, 133, 107, 132, 143, 128, 151, 163, 138, 162, 170, 129, 156, 166, 137, 161, 171, 155, 175, 184, 168, 186, 195, 175, 190, 200, 162, 181, 192, 169, 186, 197, 169, 187, 197, 172, 189, 199, 160, 181, 193, 161, 181, 192, 180, 194, 204, 184, 198, 205, 190, 201, 207, 183, 198, 204, + 193, 205, 211, 195, 207, 212, 189, 204, 209, 188, 203, 209, 185, 201, 209, 185, 200, 210, 190, 205, 211, 186, 202, 209, 191, 204, 211, 190, 205, 211, 192, 206, 212, 182, 200, 206, 177, 196, 203, 174, 194, 202, 174, 194, 201, 180, 197, 205, 178, 196, 204, 176, 195, 203, 174, 193, 200, 186, 202, 208, 184, 199, 205, + 180, 197, 203, 177, 194, 202, 164, 186, 194, 169, 190, 198, 173, 193, 199, 173, 194, 199, 177, 195, 200, 170, 191, 196, 184, 200, 205, 185, 201, 206, 174, 193, 197, 166, 186, 193, 168, 185, 192, 168, 186, 192, 162, 182, 189, 157, 179, 187, 146, 172, 182, 140, 165, 176, 157, 178, 187, 157, 177, 186, 157, 178, 186, + 131, 154, 166, 134, 156, 166, 123, 147, 159, 115, 136, 147, 105, 124, 131, 112, 128, 134, 98, 115, 121, 51, 72, 78, 48, 63, 69, 27, 43, 49, 17, 35, 41, 17, 35, 40, 23, 42, 48, 25, 44, 51, 27, 48, 55, 54, 71, 78, 70, 88, 94, 92, 107, 113, 66, 87, 94, 82, 104, 109, 66, 91, 100, + 76, 100, 111, 112, 131, 140, 117, 134, 144, 90, 111, 122, 92, 114, 125, 89, 111, 122, 77, 100, 112, 93, 116, 128, 94, 120, 131, 99, 123, 135, 92, 119, 133, 102, 131, 145, 108, 142, 154, 123, 154, 166, 151, 176, 185, 172, 192, 199, 190, 206, 211, 190, 206, 212, 202, 216, 219, 210, 222, 224, 209, 221, 223, + 209, 222, 224, 212, 224, 226, 216, 227, 230, 220, 230, 233, 224, 234, 234, 226, 235, 235, 227, 236, 236, 226, 236, 236, 228, 238, 238, 232, 240, 240, 232, 240, 240, 233, 241, 240, 233, 241, 240, 236, 242, 241, 235, 241, 240, 236, 241, 240, 236, 242, 241, 236, 242, 241, 236, 243, 241, 237, 243, 242, 236, 242, 241, + 39, 22, 41, 42, 23, 44, 44, 25, 46, 45, 25, 47, 46, 26, 48, 47, 28, 49, 49, 31, 52, 51, 33, 54, 53, 36, 55, 57, 39, 58, 58, 43, 60, 61, 47, 67, 62, 51, 71, 67, 57, 76, 73, 65, 83, 79, 73, 89, 85, 82, 96, 91, 91, 103, 95, 97, 106, 103, 106, 115, 108, 111, 124, + 117, 122, 136, 122, 129, 143, 129, 137, 149, 129, 138, 151, 132, 141, 154, 135, 145, 157, 137, 146, 159, 139, 147, 160, 141, 152, 164, 144, 155, 167, 144, 157, 171, 147, 160, 174, 150, 167, 180, 155, 172, 184, 158, 177, 189, 160, 180, 192, 163, 183, 196, 168, 188, 200, 170, 190, 203, 169, 191, 203, 172, 193, 204, + 171, 193, 204, 172, 194, 205, 173, 195, 206, 173, 195, 206, 174, 196, 207, 175, 196, 207, 174, 196, 207, 175, 197, 208, 174, 196, 207, 175, 197, 208, 175, 197, 208, 175, 197, 208, 174, 197, 208, 175, 197, 208, 174, 196, 207, 174, 196, 207, 171, 195, 205, 171, 196, 206, 169, 195, 205, 169, 193, 205, 170, 195, 206, + 170, 194, 205, 172, 194, 206, 171, 194, 206, 171, 195, 207, 173, 195, 207, 173, 196, 207, 173, 196, 207, 174, 196, 207, 171, 195, 207, 171, 196, 206, 172, 195, 207, 170, 194, 206, 171, 195, 207, 170, 194, 206, 170, 195, 205, 170, 194, 206, 172, 195, 206, 172, 194, 205, 172, 194, 205, 171, 194, 205, 172, 195, 206, + 168, 193, 204, 171, 194, 206, 170, 194, 206, 172, 194, 206, 171, 195, 207, 173, 195, 207, 171, 194, 206, 171, 194, 206, 167, 192, 204, 164, 191, 203, 163, 189, 201, 163, 189, 201, 161, 187, 199, 162, 187, 199, 158, 184, 195, 153, 180, 193, 147, 173, 187, 139, 167, 183, 126, 155, 172, 117, 147, 164, 109, 139, 154, + 96, 125, 140, 83, 114, 129, 71, 102, 117, 70, 99, 111, 72, 95, 107, 58, 80, 89, 47, 65, 72, 36, 48, 54, 33, 44, 45, 32, 43, 44, 17, 28, 29, 25, 36, 41, 42, 53, 60, 65, 77, 86, 62, 74, 84, 61, 74, 83, 55, 69, 79, 54, 68, 77, 48, 62, 71, 54, 67, 75, 47, 60, 68, + 31, 45, 53, 35, 48, 54, 37, 48, 51, 94, 100, 104, 30, 40, 45, 52, 61, 65, 71, 79, 83, 36, 49, 53, 51, 61, 65, 40, 51, 55, 27, 38, 44, 27, 39, 46, 14, 26, 34, 54, 63, 70, 50, 58, 67, 41, 51, 58, 41, 52, 58, 38, 50, 54, 64, 72, 75, 39, 52, 52, 42, 55, 55, + 31, 45, 47, 31, 44, 48, 29, 44, 49, 30, 44, 50, 22, 37, 43, 52, 64, 71, 31, 44, 50, 32, 45, 51, 40, 51, 58, 37, 48, 56, 26, 34, 42, 8, 14, 22, 10, 15, 20, 9, 15, 19, 8, 12, 19, 5, 8, 15, 11, 16, 22, 14, 21, 26, 44, 50, 56, 46, 61, 67, 69, 82, 90, + 53, 72, 81, 102, 118, 126, 107, 130, 141, 84, 112, 124, 104, 132, 143, 131, 155, 164, 150, 169, 177, 134, 157, 166, 139, 163, 172, 158, 178, 184, 167, 185, 192, 162, 181, 192, 171, 187, 197, 161, 181, 190, 145, 169, 182, 170, 188, 197, 169, 186, 197, 162, 181, 192, 171, 188, 197, 185, 198, 206, 179, 195, 201, + 177, 193, 201, 178, 195, 202, 188, 202, 208, 188, 202, 209, 192, 207, 213, 190, 205, 212, 199, 211, 217, 192, 205, 212, 190, 205, 212, 188, 203, 210, 183, 200, 207, 185, 201, 208, 186, 202, 208, 195, 208, 214, 185, 202, 210, 187, 203, 212, 188, 205, 212, 182, 199, 207, 185, 202, 208, 186, 203, 209, 193, 208, 214, + 195, 210, 216, 203, 216, 220, 203, 216, 221, 203, 216, 219, 200, 214, 219, 191, 210, 214, 191, 208, 211, 198, 211, 215, 194, 207, 212, 178, 197, 204, 181, 198, 205, 186, 202, 207, 183, 201, 207, 185, 201, 206, 170, 191, 198, 169, 190, 197, 170, 191, 198, 173, 192, 199, 148, 174, 184, 138, 166, 178, 128, 157, 169, + 130, 159, 171, 149, 172, 180, 132, 160, 172, 153, 175, 183, 122, 151, 161, 98, 126, 135, 92, 114, 123, 64, 87, 93, 41, 56, 62, 31, 47, 52, 32, 47, 52, 22, 40, 45, 28, 45, 52, 67, 81, 86, 36, 57, 63, 37, 59, 66, 46, 67, 74, 52, 74, 81, 72, 95, 102, 85, 109, 116, 106, 128, 136, + 88, 110, 123, 67, 95, 108, 61, 88, 102, 87, 112, 124, 84, 109, 121, 80, 105, 118, 98, 120, 130, 73, 99, 111, 62, 91, 104, 82, 110, 122, 78, 108, 120, 89, 121, 134, 110, 140, 150, 131, 158, 169, 145, 172, 181, 161, 184, 194, 170, 191, 199, 187, 205, 210, 186, 204, 209, 195, 211, 214, 210, 221, 224, + 206, 219, 222, 212, 225, 227, 219, 229, 231, 223, 231, 235, 224, 233, 234, 228, 236, 236, 226, 236, 236, 226, 236, 236, 228, 238, 238, 229, 238, 238, 231, 239, 239, 232, 240, 240, 233, 241, 240, 235, 241, 240, 235, 241, 240, 235, 241, 240, 235, 241, 240, 235, 241, 240, 235, 241, 240, 236, 242, 241, 236, 242, 241, + 40, 24, 42, 42, 26, 45, 43, 26, 45, 42, 26, 45, 46, 30, 48, 48, 33, 51, 48, 34, 52, 49, 36, 55, 56, 43, 61, 62, 48, 66, 66, 53, 71, 70, 61, 77, 74, 69, 84, 81, 79, 93, 87, 87, 102, 97, 101, 114, 104, 111, 121, 110, 119, 129, 116, 127, 137, 126, 135, 146, 133, 142, 153, + 138, 147, 159, 143, 151, 163, 149, 157, 169, 154, 164, 174, 157, 167, 177, 157, 169, 178, 158, 170, 181, 158, 171, 182, 158, 172, 183, 158, 172, 184, 159, 173, 185, 161, 176, 188, 164, 178, 190, 164, 181, 193, 165, 184, 196, 168, 188, 200, 167, 189, 201, 169, 190, 202, 170, 192, 203, 171, 193, 204, 171, 193, 205, + 173, 195, 207, 173, 195, 207, 172, 194, 206, 173, 195, 207, 173, 195, 207, 173, 195, 206, 173, 195, 206, 174, 197, 208, 173, 197, 207, 173, 196, 207, 175, 197, 207, 174, 197, 207, 174, 196, 207, 173, 196, 207, 171, 195, 206, 170, 194, 206, 169, 193, 205, 169, 193, 205, 169, 194, 204, 167, 193, 205, 169, 193, 205, + 169, 193, 205, 170, 193, 205, 169, 193, 205, 171, 194, 206, 171, 194, 206, 170, 194, 206, 172, 195, 207, 171, 194, 207, 170, 195, 205, 169, 193, 205, 169, 194, 206, 169, 193, 205, 167, 193, 205, 169, 193, 205, 169, 194, 205, 170, 193, 206, 170, 194, 205, 172, 194, 205, 171, 193, 204, 171, 193, 204, 170, 194, 204, + 171, 195, 205, 168, 193, 204, 168, 193, 205, 169, 193, 205, 170, 194, 206, 171, 194, 206, 170, 193, 205, 169, 193, 205, 168, 192, 204, 166, 191, 203, 164, 189, 201, 163, 189, 201, 162, 188, 200, 164, 188, 200, 163, 187, 198, 157, 183, 197, 153, 179, 193, 141, 169, 184, 127, 157, 172, 108, 139, 153, 94, 126, 141, + 82, 113, 127, 68, 100, 115, 70, 102, 116, 69, 96, 109, 59, 86, 97, 54, 76, 88, 54, 69, 76, 29, 39, 42, 20, 26, 25, 26, 33, 32, 29, 34, 34, 18, 23, 24, 12, 18, 21, 16, 24, 28, 50, 60, 65, 48, 64, 71, 59, 71, 79, 50, 62, 71, 49, 62, 71, 48, 62, 68, 40, 56, 59, + 37, 51, 56, 32, 46, 50, 43, 55, 58, 42, 52, 56, 23, 35, 38, 53, 62, 66, 51, 61, 66, 39, 51, 55, 31, 41, 45, 48, 58, 61, 24, 35, 39, 25, 37, 42, 22, 35, 42, 44, 55, 61, 27, 38, 46, 60, 68, 74, 19, 30, 36, 42, 53, 57, 24, 37, 38, 41, 53, 52, 13, 28, 28, + 37, 50, 52, 29, 41, 44, 30, 43, 48, 21, 36, 41, 30, 43, 50, 40, 53, 60, 32, 44, 51, 34, 43, 50, 27, 36, 43, 28, 37, 42, 1, 6, 14, 12, 16, 20, 5, 7, 12, 5, 7, 14, 7, 10, 15, 5, 7, 13, 12, 14, 20, 0, 0, 0, 30, 32, 38, 9, 12, 18, 27, 36, 41, + 31, 41, 48, 73, 85, 93, 38, 50, 59, 113, 130, 138, 104, 127, 135, 111, 137, 146, 110, 135, 146, 138, 158, 166, 126, 151, 161, 153, 171, 178, 155, 174, 183, 150, 171, 182, 154, 175, 186, 164, 182, 192, 176, 191, 201, 154, 175, 187, 157, 176, 188, 179, 193, 201, 174, 190, 198, 172, 189, 198, 164, 184, 194, + 168, 188, 198, 172, 190, 199, 172, 189, 198, 181, 196, 205, 182, 198, 206, 183, 200, 208, 189, 205, 212, 181, 199, 206, 190, 204, 212, 192, 207, 214, 187, 202, 210, 186, 203, 210, 176, 195, 204, 167, 191, 200, 174, 194, 205, 179, 199, 208, 180, 199, 208, 182, 201, 209, 185, 203, 209, 185, 202, 208, 185, 203, 210, + 180, 201, 208, 191, 208, 214, 191, 208, 213, 186, 203, 208, 179, 200, 205, 179, 201, 206, 163, 189, 195, 154, 182, 192, 169, 191, 200, 177, 197, 204, 173, 194, 201, 170, 192, 199, 165, 188, 197, 170, 192, 200, 184, 201, 207, 183, 201, 207, 174, 195, 202, 161, 186, 195, 154, 182, 191, 159, 184, 192, 158, 183, 189, + 167, 190, 193, 166, 187, 193, 156, 179, 185, 163, 182, 189, 140, 165, 175, 138, 160, 169, 120, 144, 154, 104, 130, 141, 112, 136, 148, 115, 137, 148, 133, 152, 161, 121, 141, 150, 116, 136, 145, 109, 131, 138, 77, 105, 113, 100, 127, 135, 104, 129, 138, 107, 130, 140, 116, 138, 146, 108, 133, 141, 120, 141, 150, + 131, 151, 161, 139, 156, 164, 125, 146, 155, 112, 134, 146, 136, 153, 163, 125, 146, 155, 108, 130, 141, 97, 122, 132, 92, 118, 129, 79, 110, 121, 97, 126, 137, 105, 135, 143, 119, 146, 156, 129, 158, 168, 149, 173, 184, 167, 187, 195, 170, 191, 199, 174, 196, 203, 192, 209, 212, 196, 210, 214, 192, 207, 210, + 201, 215, 218, 210, 222, 225, 220, 229, 232, 224, 233, 235, 225, 235, 235, 227, 236, 236, 227, 237, 237, 228, 237, 237, 229, 238, 238, 229, 238, 238, 233, 241, 241, 232, 240, 239, 233, 241, 240, 232, 241, 240, 235, 241, 240, 235, 241, 240, 236, 242, 241, 235, 241, 240, 237, 243, 242, 237, 243, 242, 237, 242, 241, + 43, 27, 45, 45, 29, 48, 44, 28, 46, 45, 30, 47, 48, 34, 50, 49, 38, 54, 53, 41, 58, 57, 47, 64, 62, 53, 70, 67, 61, 77, 75, 71, 86, 82, 81, 96, 92, 94, 106, 99, 106, 118, 110, 118, 129, 118, 127, 136, 123, 135, 146, 134, 145, 155, 144, 154, 162, 149, 159, 169, 152, 164, 174, + 160, 170, 180, 163, 173, 184, 166, 177, 187, 171, 181, 191, 171, 182, 191, 171, 183, 193, 172, 183, 194, 172, 184, 194, 173, 185, 195, 172, 185, 195, 171, 186, 197, 171, 186, 198, 171, 188, 200, 172, 190, 201, 171, 190, 201, 171, 191, 202, 171, 192, 203, 171, 193, 204, 173, 194, 205, 172, 195, 206, 172, 194, 206, + 172, 194, 206, 174, 196, 207, 173, 195, 207, 173, 195, 206, 173, 195, 207, 173, 195, 207, 172, 195, 207, 171, 195, 207, 172, 197, 208, 172, 196, 207, 172, 196, 206, 172, 196, 207, 172, 196, 206, 171, 196, 206, 170, 195, 205, 170, 194, 206, 168, 193, 205, 166, 192, 204, 167, 193, 205, 166, 192, 204, 168, 193, 205, + 168, 192, 204, 168, 192, 204, 167, 191, 203, 168, 192, 204, 168, 193, 205, 168, 193, 204, 168, 193, 203, 169, 194, 204, 167, 193, 203, 167, 192, 204, 166, 191, 203, 167, 192, 204, 169, 193, 205, 169, 193, 205, 168, 192, 204, 169, 193, 204, 170, 193, 205, 171, 193, 204, 171, 193, 204, 170, 193, 204, 169, 192, 203, + 168, 192, 203, 169, 193, 205, 170, 194, 205, 168, 192, 204, 169, 193, 205, 167, 191, 203, 168, 192, 204, 168, 192, 204, 167, 191, 203, 166, 191, 203, 167, 191, 203, 164, 189, 201, 162, 187, 199, 162, 186, 199, 161, 186, 200, 155, 181, 195, 150, 176, 191, 139, 168, 183, 119, 151, 166, 102, 133, 148, 87, 116, 130, + 68, 100, 112, 71, 100, 113, 59, 87, 99, 64, 88, 99, 54, 78, 90, 54, 72, 82, 61, 71, 77, 22, 30, 32, 24, 28, 25, 69, 64, 59, 50, 53, 51, 19, 23, 23, 6, 12, 10, 2, 8, 6, 21, 29, 28, 58, 66, 67, 48, 62, 69, 45, 59, 66, 46, 60, 67, 38, 53, 57, 47, 61, 64, + 46, 60, 63, 31, 46, 48, 47, 57, 60, 28, 38, 42, 32, 43, 46, 53, 62, 66, 27, 39, 44, 57, 66, 70, 25, 36, 40, 30, 40, 44, 52, 59, 63, 17, 28, 33, 26, 37, 42, 29, 39, 47, 43, 52, 60, 21, 32, 37, 49, 59, 63, 21, 32, 35, 45, 56, 58, 28, 41, 42, 34, 47, 48, + 23, 36, 39, 35, 48, 51, 27, 39, 44, 22, 35, 41, 34, 46, 53, 28, 40, 47, 43, 54, 60, 24, 33, 37, 24, 30, 35, 3, 6, 12, 10, 13, 16, 4, 7, 11, 10, 11, 15, 8, 9, 14, 8, 10, 14, 4, 5, 11, 7, 9, 14, 5, 8, 13, 9, 11, 17, 12, 13, 19, 3, 4, 11, + 6, 11, 18, 22, 27, 34, 73, 78, 85, 91, 106, 113, 58, 78, 86, 87, 111, 121, 128, 145, 152, 121, 143, 152, 133, 153, 162, 128, 151, 160, 148, 166, 175, 168, 181, 191, 139, 160, 173, 148, 166, 179, 161, 178, 188, 166, 182, 193, 150, 170, 183, 156, 176, 186, 152, 173, 183, 168, 186, 194, 171, 190, 199, + 167, 185, 196, 171, 188, 198, 174, 190, 200, 168, 186, 198, 167, 189, 200, 183, 200, 209, 186, 202, 209, 190, 206, 213, 177, 197, 206, 187, 203, 212, 185, 202, 210, 190, 206, 213, 190, 207, 214, 194, 210, 217, 188, 204, 211, 187, 204, 211, 189, 206, 213, 193, 209, 216, 183, 201, 209, 182, 202, 208, 188, 206, 212, + 185, 204, 211, 183, 203, 209, 176, 199, 204, 176, 198, 203, 184, 204, 208, 179, 201, 206, 183, 203, 209, 191, 209, 215, 187, 207, 213, 182, 203, 210, 184, 204, 210, 181, 202, 210, 185, 204, 211, 182, 203, 209, 181, 202, 208, 185, 204, 210, 180, 201, 206, 191, 206, 212, 194, 208, 214, 190, 207, 212, 187, 205, 209, + 183, 201, 206, 149, 178, 185, 170, 190, 195, 172, 190, 194, 135, 162, 170, 137, 161, 170, 124, 150, 161, 119, 146, 159, 108, 139, 151, 118, 145, 158, 122, 148, 158, 133, 155, 166, 144, 164, 173, 142, 164, 172, 146, 168, 174, 140, 164, 170, 161, 178, 185, 152, 171, 179, 147, 164, 173, 136, 157, 167, 123, 150, 160, + 138, 161, 170, 136, 155, 165, 120, 143, 154, 146, 162, 171, 134, 153, 164, 146, 161, 170, 121, 142, 151, 89, 116, 128, 84, 113, 124, 85, 115, 126, 71, 106, 115, 84, 119, 130, 101, 135, 147, 106, 143, 157, 134, 164, 176, 157, 181, 190, 168, 191, 198, 176, 197, 204, 189, 207, 212, 192, 208, 212, 199, 214, 217, + 205, 218, 221, 206, 220, 222, 214, 226, 228, 224, 232, 235, 229, 237, 237, 226, 235, 235, 228, 237, 237, 227, 237, 237, 228, 239, 239, 231, 240, 240, 231, 239, 239, 232, 240, 239, 234, 242, 241, 234, 241, 240, 234, 241, 240, 236, 242, 241, 237, 243, 242, 236, 242, 241, 237, 243, 242, 237, 243, 242, 237, 243, 242, + 40, 25, 45, 43, 28, 46, 43, 28, 46, 48, 36, 51, 49, 37, 53, 53, 43, 59, 57, 47, 63, 61, 55, 70, 71, 68, 83, 82, 83, 98, 91, 94, 108, 99, 105, 118, 110, 117, 130, 123, 132, 142, 131, 141, 151, 140, 151, 161, 148, 159, 170, 155, 166, 176, 161, 173, 181, 164, 178, 187, 170, 182, 191, + 175, 185, 195, 175, 186, 196, 178, 189, 199, 180, 191, 201, 179, 193, 202, 180, 193, 203, 181, 195, 204, 181, 194, 203, 180, 195, 204, 181, 196, 205, 180, 195, 204, 178, 196, 205, 176, 195, 206, 176, 195, 206, 175, 194, 205, 176, 195, 206, 175, 195, 206, 174, 194, 206, 175, 195, 207, 173, 195, 207, 173, 195, 207, + 174, 196, 208, 174, 196, 208, 174, 196, 208, 175, 197, 208, 173, 195, 207, 174, 196, 208, 174, 196, 208, 172, 197, 207, 172, 196, 208, 171, 195, 207, 171, 196, 207, 170, 195, 206, 170, 194, 206, 170, 194, 206, 169, 193, 205, 167, 192, 204, 167, 192, 204, 168, 192, 204, 166, 191, 203, 166, 192, 204, 166, 191, 203, + 167, 192, 204, 167, 191, 203, 167, 191, 203, 167, 192, 204, 168, 193, 204, 166, 191, 202, 167, 192, 202, 167, 192, 202, 165, 191, 201, 166, 191, 201, 167, 191, 203, 167, 191, 203, 167, 191, 203, 167, 191, 203, 168, 192, 204, 169, 193, 204, 169, 193, 204, 170, 192, 204, 171, 193, 204, 171, 193, 205, 170, 193, 205, + 168, 192, 204, 168, 192, 204, 166, 192, 204, 166, 191, 203, 167, 192, 204, 168, 192, 204, 168, 192, 204, 167, 191, 203, 168, 192, 204, 167, 191, 203, 165, 189, 204, 162, 188, 201, 162, 187, 199, 162, 187, 199, 162, 187, 200, 162, 186, 199, 156, 180, 194, 139, 168, 182, 120, 152, 167, 98, 127, 142, 79, 106, 118, + 64, 89, 101, 53, 79, 92, 52, 75, 88, 59, 75, 87, 61, 76, 86, 50, 66, 75, 51, 59, 65, 18, 25, 26, 61, 57, 51, 92, 80, 72, 36, 37, 33, 33, 35, 32, 26, 30, 26, 19, 22, 19, 1, 5, 3, 15, 22, 23, 61, 70, 75, 57, 67, 73, 41, 55, 61, 39, 53, 56, 51, 63, 66, + 58, 69, 72, 41, 53, 56, 30, 42, 44, 42, 52, 56, 35, 45, 49, 43, 52, 57, 47, 58, 64, 37, 48, 53, 47, 56, 60, 28, 39, 43, 27, 37, 41, 53, 63, 65, 29, 40, 43, 24, 36, 39, 35, 46, 50, 39, 50, 54, 33, 44, 48, 32, 43, 46, 35, 47, 51, 18, 30, 34, 35, 46, 50, + 28, 41, 46, 40, 53, 56, 22, 35, 39, 32, 44, 49, 35, 45, 52, 33, 44, 51, 28, 38, 45, 19, 28, 32, 10, 13, 17, 7, 9, 12, 5, 8, 12, 11, 10, 14, 10, 11, 15, 7, 8, 12, 9, 9, 14, 5, 6, 12, 6, 8, 14, 11, 11, 18, 5, 6, 12, 10, 12, 16, 5, 7, 13, + 10, 12, 17, 15, 17, 23, 25, 28, 35, 47, 54, 59, 102, 114, 120, 88, 103, 111, 111, 126, 133, 131, 148, 155, 114, 138, 145, 141, 162, 170, 124, 146, 158, 141, 160, 173, 173, 184, 193, 134, 155, 171, 131, 153, 170, 137, 158, 173, 152, 171, 184, 161, 178, 188, 153, 174, 184, 142, 166, 179, 161, 181, 193, + 166, 186, 197, 161, 181, 193, 161, 182, 193, 167, 185, 198, 178, 194, 204, 188, 203, 210, 169, 191, 200, 182, 200, 208, 178, 198, 206, 174, 195, 204, 188, 206, 212, 178, 199, 206, 175, 197, 204, 178, 198, 206, 179, 200, 207, 190, 206, 213, 188, 205, 213, 191, 208, 215, 198, 212, 217, 194, 210, 216, 191, 208, 214, + 187, 205, 212, 186, 206, 212, 191, 210, 215, 195, 212, 216, 201, 217, 221, 192, 212, 216, 197, 213, 218, 193, 209, 214, 195, 211, 216, 191, 208, 215, 177, 198, 207, 172, 196, 204, 176, 200, 207, 187, 207, 213, 191, 209, 215, 192, 209, 215, 204, 217, 222, 201, 215, 220, 194, 211, 217, 188, 206, 211, 188, 206, 211, + 186, 203, 209, 184, 202, 208, 186, 203, 208, 170, 192, 198, 183, 198, 202, 173, 188, 193, 157, 175, 183, 163, 179, 187, 132, 157, 168, 111, 141, 153, 137, 160, 171, 146, 166, 175, 139, 161, 171, 129, 155, 164, 147, 168, 174, 154, 173, 179, 153, 173, 181, 141, 166, 175, 149, 168, 176, 149, 168, 177, 146, 165, 174, + 130, 153, 163, 114, 139, 150, 101, 128, 142, 115, 140, 152, 121, 144, 157, 124, 146, 158, 120, 141, 152, 106, 130, 142, 122, 143, 154, 128, 151, 158, 124, 148, 157, 120, 146, 156, 135, 160, 169, 144, 169, 178, 152, 176, 186, 165, 186, 193, 176, 196, 203, 184, 203, 209, 195, 209, 215, 200, 214, 219, 202, 216, 219, + 202, 216, 220, 204, 218, 220, 214, 226, 228, 221, 231, 231, 226, 234, 234, 228, 236, 236, 227, 236, 236, 229, 238, 238, 230, 239, 239, 230, 240, 240, 232, 240, 240, 231, 239, 239, 232, 240, 239, 234, 241, 240, 235, 242, 241, 236, 242, 241, 236, 242, 241, 237, 243, 242, 237, 243, 242, 237, 243, 242, 238, 243, 242, + 38, 23, 42, 40, 25, 43, 45, 31, 50, 45, 35, 51, 50, 41, 57, 58, 50, 66, 62, 57, 70, 72, 70, 84, 79, 80, 94, 92, 96, 110, 106, 110, 123, 124, 130, 144, 131, 142, 154, 143, 153, 163, 154, 164, 174, 159, 171, 180, 165, 178, 186, 170, 183, 191, 174, 187, 195, 178, 191, 199, 181, 194, 203, + 183, 196, 205, 185, 198, 205, 185, 198, 208, 186, 201, 209, 185, 200, 209, 187, 202, 210, 185, 201, 209, 186, 202, 209, 185, 200, 209, 184, 200, 208, 182, 199, 208, 182, 200, 208, 179, 199, 210, 179, 199, 210, 178, 198, 209, 176, 197, 208, 176, 197, 208, 177, 198, 209, 175, 197, 209, 175, 197, 209, 175, 197, 209, + 174, 196, 208, 175, 197, 209, 175, 197, 208, 174, 196, 208, 175, 197, 208, 174, 196, 208, 173, 196, 207, 172, 197, 208, 172, 196, 207, 170, 195, 206, 171, 194, 207, 170, 194, 206, 171, 194, 206, 169, 193, 205, 169, 193, 204, 167, 192, 204, 168, 192, 204, 168, 192, 204, 166, 192, 204, 164, 191, 203, 164, 190, 202, + 167, 191, 203, 166, 190, 203, 167, 191, 203, 167, 191, 203, 166, 190, 202, 166, 191, 201, 166, 191, 202, 166, 191, 201, 166, 191, 201, 165, 190, 202, 165, 190, 201, 167, 190, 202, 166, 190, 202, 167, 191, 203, 166, 190, 202, 167, 191, 203, 168, 192, 203, 168, 192, 203, 169, 192, 204, 168, 191, 203, 168, 191, 203, + 166, 191, 203, 165, 190, 202, 164, 190, 202, 166, 190, 202, 166, 190, 202, 166, 190, 202, 166, 190, 202, 166, 190, 202, 165, 189, 201, 165, 188, 202, 164, 187, 202, 162, 187, 202, 162, 187, 200, 160, 185, 199, 160, 185, 199, 158, 182, 196, 150, 176, 191, 140, 167, 184, 122, 149, 165, 91, 119, 134, 76, 101, 114, + 57, 80, 92, 51, 73, 85, 44, 68, 78, 45, 66, 74, 56, 73, 80, 58, 73, 80, 41, 48, 47, 27, 27, 24, 79, 71, 63, 87, 77, 70, 41, 43, 39, 44, 44, 40, 39, 40, 36, 44, 45, 40, 29, 31, 28, 15, 21, 20, 27, 32, 35, 54, 65, 69, 44, 57, 64, 46, 58, 62, 50, 62, 66, + 54, 65, 69, 48, 60, 63, 41, 51, 55, 34, 44, 48, 35, 45, 49, 45, 56, 60, 38, 50, 56, 57, 66, 73, 48, 58, 63, 44, 53, 57, 36, 47, 49, 55, 64, 67, 44, 55, 58, 35, 48, 50, 25, 39, 43, 46, 57, 62, 60, 71, 75, 20, 34, 39, 28, 40, 44, 49, 59, 63, 31, 42, 46, + 30, 42, 47, 29, 43, 47, 21, 33, 37, 36, 48, 52, 46, 58, 61, 34, 46, 51, 10, 23, 25, 20, 28, 30, 2, 7, 9, 6, 9, 11, 9, 10, 12, 8, 10, 11, 10, 11, 15, 10, 11, 14, 10, 12, 16, 4, 5, 11, 1, 1, 9, 11, 12, 19, 3, 4, 11, 6, 8, 14, 14, 15, 21, + 11, 13, 18, 17, 18, 23, 36, 38, 43, 21, 24, 30, 67, 76, 80, 74, 88, 93, 72, 90, 97, 111, 125, 132, 135, 150, 154, 96, 116, 123, 152, 168, 176, 136, 155, 167, 105, 132, 150, 169, 181, 192, 151, 166, 178, 133, 156, 170, 108, 138, 157, 131, 156, 171, 166, 182, 193, 144, 167, 180, 143, 169, 182, + 164, 183, 193, 159, 178, 191, 148, 170, 184, 162, 180, 192, 147, 169, 184, 142, 169, 185, 183, 200, 207, 172, 193, 203, 185, 202, 209, 182, 202, 208, 175, 197, 204, 186, 204, 210, 177, 198, 206, 182, 202, 208, 184, 203, 210, 180, 200, 208, 180, 199, 208, 177, 199, 207, 184, 203, 210, 189, 206, 213, 190, 207, 213, + 189, 208, 214, 190, 208, 214, 199, 214, 220, 198, 214, 218, 204, 217, 222, 204, 218, 222, 200, 215, 220, 202, 216, 221, 192, 210, 216, 182, 203, 211, 178, 200, 209, 181, 202, 210, 192, 210, 216, 187, 206, 212, 187, 207, 213, 192, 209, 216, 185, 204, 211, 187, 205, 212, 187, 204, 211, 190, 207, 215, 179, 200, 207, + 181, 201, 206, 177, 197, 203, 179, 199, 205, 170, 192, 199, 167, 188, 194, 171, 188, 194, 166, 184, 190, 143, 164, 175, 153, 173, 182, 137, 160, 172, 143, 165, 175, 141, 162, 174, 119, 146, 159, 126, 152, 164, 130, 156, 166, 135, 160, 170, 150, 171, 180, 170, 186, 193, 146, 169, 178, 140, 163, 172, 139, 160, 170, + 148, 167, 175, 144, 163, 172, 118, 141, 153, 110, 139, 152, 105, 136, 149, 118, 146, 158, 123, 148, 159, 115, 141, 154, 113, 140, 154, 103, 134, 148, 100, 134, 147, 98, 134, 144, 106, 141, 151, 114, 149, 162, 139, 168, 177, 159, 184, 191, 171, 192, 199, 183, 202, 207, 194, 208, 214, 200, 214, 219, 210, 222, 226, + 211, 222, 226, 205, 220, 222, 207, 221, 223, 217, 229, 230, 223, 233, 233, 228, 236, 235, 229, 237, 237, 229, 238, 238, 230, 238, 238, 229, 238, 239, 231, 239, 238, 233, 241, 240, 234, 241, 240, 233, 240, 239, 235, 242, 241, 236, 242, 241, 236, 242, 241, 236, 242, 241, 236, 242, 242, 236, 243, 241, 237, 242, 241, + 36, 22, 41, 43, 30, 48, 45, 33, 51, 47, 38, 54, 50, 45, 60, 58, 54, 68, 68, 66, 81, 78, 80, 93, 93, 98, 112, 106, 114, 127, 123, 131, 144, 139, 147, 160, 153, 162, 174, 162, 172, 182, 168, 178, 187, 174, 186, 194, 179, 190, 198, 182, 194, 202, 183, 197, 205, 186, 199, 207, 187, 201, 209, + 189, 203, 211, 189, 204, 211, 191, 205, 213, 189, 204, 213, 190, 205, 214, 189, 205, 212, 189, 205, 212, 188, 205, 212, 186, 205, 213, 185, 203, 212, 185, 204, 212, 182, 202, 210, 182, 202, 210, 180, 200, 210, 180, 200, 211, 179, 200, 211, 180, 200, 211, 179, 200, 211, 177, 199, 210, 177, 199, 211, 177, 199, 209, + 176, 198, 209, 174, 196, 209, 175, 197, 209, 173, 196, 207, 173, 196, 208, 173, 196, 207, 171, 195, 207, 170, 194, 206, 171, 195, 207, 171, 195, 207, 169, 193, 205, 170, 193, 206, 170, 193, 206, 169, 193, 205, 169, 193, 204, 166, 191, 203, 168, 192, 204, 168, 191, 205, 166, 191, 203, 166, 192, 204, 165, 190, 202, + 165, 190, 202, 166, 190, 202, 167, 191, 204, 167, 191, 202, 166, 190, 202, 166, 190, 202, 166, 189, 201, 166, 190, 202, 165, 189, 202, 166, 190, 202, 165, 189, 201, 164, 188, 201, 165, 188, 202, 164, 189, 200, 164, 189, 201, 164, 189, 201, 165, 190, 202, 166, 189, 202, 166, 190, 202, 166, 190, 203, 167, 191, 203, + 164, 189, 202, 164, 189, 202, 165, 190, 203, 165, 190, 203, 165, 190, 202, 164, 188, 200, 165, 189, 201, 165, 189, 201, 162, 187, 200, 163, 187, 202, 160, 186, 200, 158, 184, 198, 159, 185, 197, 157, 183, 197, 155, 181, 195, 152, 178, 193, 148, 174, 189, 137, 163, 181, 118, 145, 162, 85, 113, 127, 68, 94, 105, + 62, 83, 94, 44, 65, 75, 47, 68, 75, 63, 80, 86, 72, 88, 95, 58, 71, 76, 36, 41, 41, 45, 44, 42, 89, 81, 74, 82, 73, 67, 41, 42, 37, 47, 48, 44, 33, 34, 30, 39, 38, 35, 40, 40, 38, 7, 11, 10, 4, 9, 12, 43, 52, 58, 58, 68, 75, 49, 64, 69, 53, 63, 67, + 49, 62, 66, 51, 63, 67, 38, 51, 56, 42, 54, 58, 46, 58, 62, 54, 63, 68, 46, 57, 63, 54, 64, 69, 44, 55, 61, 49, 60, 64, 62, 74, 76, 34, 48, 50, 57, 69, 71, 63, 75, 78, 34, 47, 53, 45, 57, 63, 36, 50, 56, 64, 75, 80, 36, 48, 53, 38, 52, 56, 35, 47, 52, + 53, 64, 69, 34, 48, 52, 34, 47, 51, 36, 48, 52, 44, 55, 59, 38, 48, 52, 17, 29, 30, 11, 18, 20, 6, 10, 11, 9, 12, 12, 8, 10, 11, 17, 19, 20, 11, 11, 13, 18, 19, 23, 6, 9, 15, 4, 6, 12, 3, 6, 12, 7, 9, 14, 6, 9, 16, 5, 7, 13, 6, 8, 13, + 6, 8, 13, 26, 28, 31, 19, 26, 24, 33, 35, 39, 14, 18, 22, 48, 52, 56, 83, 93, 98, 93, 106, 110, 67, 86, 91, 134, 148, 153, 131, 147, 154, 133, 149, 160, 148, 163, 172, 108, 135, 153, 145, 163, 176, 144, 163, 177, 128, 151, 167, 129, 152, 167, 115, 141, 158, 150, 169, 182, 136, 159, 173, + 132, 156, 172, 139, 161, 176, 149, 169, 181, 149, 169, 181, 151, 172, 184, 160, 180, 193, 149, 174, 189, 166, 188, 199, 175, 195, 204, 172, 194, 201, 173, 194, 203, 177, 198, 205, 177, 198, 206, 181, 200, 208, 179, 199, 208, 188, 205, 212, 185, 204, 211, 185, 204, 211, 182, 202, 208, 184, 203, 209, 186, 206, 212, + 182, 203, 210, 189, 208, 214, 195, 212, 218, 198, 215, 220, 199, 216, 220, 200, 216, 222, 192, 211, 217, 197, 214, 220, 201, 216, 223, 200, 215, 222, 188, 207, 215, 182, 203, 211, 176, 201, 208, 163, 192, 201, 176, 200, 208, 174, 198, 206, 170, 195, 204, 183, 203, 210, 180, 200, 209, 186, 203, 211, 186, 204, 211, + 182, 200, 207, 180, 199, 205, 155, 182, 193, 161, 185, 195, 179, 196, 204, 170, 190, 197, 181, 197, 202, 162, 183, 191, 175, 191, 199, 165, 184, 193, 142, 165, 177, 149, 169, 178, 143, 165, 176, 116, 147, 160, 121, 148, 160, 138, 162, 173, 136, 161, 172, 139, 165, 175, 159, 179, 187, 171, 188, 194, 160, 178, 185, + 151, 169, 178, 144, 164, 173, 119, 145, 157, 120, 146, 159, 115, 145, 156, 126, 153, 163, 124, 149, 160, 122, 147, 159, 124, 149, 161, 140, 162, 174, 149, 169, 179, 140, 163, 173, 117, 148, 160, 125, 154, 165, 145, 172, 180, 152, 179, 186, 167, 190, 197, 175, 197, 202, 186, 203, 211, 190, 207, 214, 201, 216, 220, + 209, 221, 225, 213, 225, 227, 214, 226, 228, 218, 229, 230, 219, 230, 230, 228, 235, 235, 230, 238, 238, 229, 237, 237, 231, 239, 238, 233, 240, 240, 232, 241, 239, 234, 240, 240, 236, 243, 242, 235, 242, 241, 236, 242, 241, 236, 242, 241, 236, 242, 241, 236, 242, 241, 237, 243, 242, 236, 242, 241, 237, 243, 241, + 37, 25, 43, 38, 27, 45, 43, 34, 50, 46, 37, 53, 54, 48, 62, 61, 59, 70, 69, 71, 85, 84, 87, 101, 98, 105, 118, 119, 128, 142, 137, 146, 159, 150, 159, 172, 163, 172, 182, 173, 182, 192, 180, 190, 200, 185, 195, 203, 187, 199, 207, 188, 201, 209, 189, 202, 210, 191, 205, 212, 190, 206, 213, + 190, 206, 213, 191, 207, 214, 190, 206, 213, 192, 208, 215, 191, 207, 214, 189, 206, 213, 190, 207, 214, 189, 206, 214, 188, 205, 214, 186, 204, 212, 187, 206, 214, 185, 204, 212, 185, 204, 212, 182, 202, 213, 182, 203, 212, 180, 202, 213, 179, 201, 212, 179, 200, 213, 178, 200, 212, 177, 199, 210, 176, 198, 210, + 174, 196, 208, 174, 196, 208, 173, 196, 208, 171, 195, 207, 171, 194, 206, 170, 194, 206, 170, 194, 206, 171, 195, 207, 169, 193, 205, 169, 193, 205, 169, 193, 206, 170, 193, 206, 170, 193, 205, 168, 192, 204, 169, 193, 205, 166, 191, 203, 164, 190, 202, 164, 190, 203, 166, 190, 205, 163, 189, 202, 165, 189, 201, + 164, 189, 201, 164, 189, 201, 164, 188, 200, 165, 188, 202, 164, 188, 201, 164, 188, 201, 164, 188, 200, 164, 187, 200, 163, 187, 200, 163, 187, 200, 162, 187, 200, 161, 186, 199, 160, 186, 200, 160, 185, 199, 159, 185, 197, 159, 185, 197, 161, 186, 198, 161, 186, 198, 163, 187, 199, 163, 188, 200, 164, 188, 200, + 164, 188, 203, 164, 187, 202, 164, 187, 200, 165, 189, 201, 164, 188, 200, 166, 190, 202, 164, 188, 201, 163, 187, 200, 161, 186, 199, 158, 185, 199, 156, 182, 196, 152, 178, 195, 151, 178, 193, 147, 177, 191, 147, 175, 191, 146, 174, 190, 139, 168, 185, 124, 153, 173, 97, 129, 148, 84, 111, 125, 72, 96, 107, + 63, 83, 92, 54, 73, 82, 65, 82, 89, 70, 86, 92, 79, 92, 97, 51, 63, 68, 40, 43, 43, 46, 43, 40, 81, 73, 67, 70, 63, 59, 41, 41, 37, 32, 33, 28, 25, 27, 24, 32, 30, 28, 35, 32, 31, 15, 15, 16, 3, 4, 8, 23, 27, 32, 58, 68, 73, 57, 68, 74, 45, 57, 61, + 48, 61, 65, 47, 58, 63, 47, 59, 63, 47, 58, 64, 48, 59, 64, 69, 76, 81, 26, 38, 46, 50, 60, 67, 59, 70, 76, 59, 72, 75, 63, 75, 79, 49, 61, 66, 38, 50, 56, 74, 83, 88, 68, 77, 82, 47, 60, 66, 51, 63, 69, 46, 59, 64, 47, 60, 64, 35, 50, 54, 35, 49, 55, + 59, 70, 74, 31, 45, 49, 41, 53, 57, 35, 47, 51, 54, 64, 68, 26, 37, 42, 11, 21, 24, 6, 13, 15, 7, 10, 17, 7, 8, 14, 12, 13, 15, 14, 14, 16, 15, 15, 18, 23, 25, 28, 1, 3, 8, 13, 16, 21, 5, 8, 14, 6, 8, 14, 3, 3, 10, 0, 1, 9, 2, 2, 9, + 99, 95, 105, 14, 15, 14, 185, 191, 162, 37, 39, 42, 116, 117, 118, 51, 51, 50, 61, 63, 62, 99, 101, 102, 119, 122, 122, 96, 103, 104, 143, 151, 153, 165, 172, 175, 138, 152, 161, 145, 162, 171, 123, 144, 157, 142, 160, 174, 150, 165, 177, 134, 154, 168, 126, 146, 162, 118, 140, 156, 130, 151, 165, + 126, 153, 167, 147, 167, 180, 125, 151, 164, 117, 147, 161, 139, 164, 176, 141, 167, 181, 154, 176, 190, 154, 179, 193, 148, 176, 190, 161, 185, 196, 159, 186, 195, 166, 189, 198, 174, 196, 204, 169, 192, 201, 171, 193, 203, 156, 185, 196, 156, 184, 196, 165, 192, 201, 183, 203, 209, 181, 202, 208, 177, 200, 206, + 186, 206, 212, 188, 207, 214, 183, 204, 211, 189, 208, 215, 195, 212, 218, 200, 216, 222, 198, 214, 220, 197, 214, 221, 199, 216, 222, 195, 212, 220, 194, 211, 220, 199, 214, 220, 202, 216, 221, 203, 217, 222, 197, 212, 218, 179, 201, 208, 173, 197, 206, 169, 194, 203, 165, 192, 201, 160, 188, 198, 167, 191, 200, + 174, 195, 201, 180, 199, 207, 173, 194, 203, 172, 194, 203, 165, 188, 197, 164, 189, 197, 171, 192, 199, 181, 199, 205, 169, 189, 198, 170, 187, 197, 166, 183, 192, 150, 171, 181, 141, 165, 173, 142, 166, 175, 151, 170, 180, 137, 162, 173, 120, 152, 164, 127, 157, 169, 125, 154, 168, 158, 178, 186, 157, 176, 184, + 169, 184, 191, 142, 163, 173, 140, 163, 173, 136, 162, 174, 141, 163, 172, 130, 154, 165, 134, 155, 167, 143, 163, 173, 137, 159, 172, 134, 159, 172, 126, 155, 168, 137, 162, 174, 137, 163, 175, 148, 171, 181, 151, 175, 184, 157, 181, 188, 167, 191, 197, 170, 193, 200, 183, 201, 208, 196, 212, 217, 198, 214, 219, + 207, 220, 224, 216, 228, 230, 220, 231, 231, 218, 229, 232, 226, 234, 236, 222, 233, 233, 228, 236, 236, 229, 237, 237, 229, 237, 237, 230, 238, 238, 232, 240, 240, 233, 241, 241, 233, 242, 240, 235, 242, 242, 236, 242, 241, 236, 242, 241, 235, 242, 241, 236, 242, 241, 236, 242, 241, 237, 243, 242, 237, 243, 242, + 33, 23, 40, 37, 27, 44, 43, 33, 50, 47, 40, 55, 53, 50, 62, 63, 62, 74, 73, 76, 87, 88, 94, 107, 105, 114, 127, 125, 136, 148, 145, 155, 167, 160, 170, 181, 169, 181, 191, 177, 189, 199, 185, 196, 206, 189, 202, 211, 191, 205, 212, 192, 205, 213, 194, 206, 214, 193, 208, 215, 193, 207, 215, + 192, 208, 215, 191, 207, 214, 191, 208, 215, 190, 207, 214, 189, 208, 214, 190, 208, 215, 189, 207, 215, 188, 206, 215, 188, 207, 215, 188, 207, 215, 186, 205, 213, 186, 205, 213, 184, 203, 212, 182, 203, 213, 182, 203, 212, 179, 201, 212, 180, 201, 212, 177, 200, 212, 176, 199, 211, 176, 199, 210, 175, 197, 209, + 172, 195, 207, 171, 195, 207, 169, 194, 206, 169, 193, 205, 168, 192, 204, 167, 192, 204, 166, 191, 204, 166, 191, 205, 166, 192, 204, 167, 191, 203, 166, 192, 204, 168, 192, 205, 167, 191, 204, 166, 190, 203, 163, 190, 204, 165, 190, 204, 166, 189, 202, 162, 188, 202, 163, 189, 203, 164, 187, 201, 163, 186, 201, + 162, 187, 199, 161, 186, 200, 160, 186, 200, 162, 187, 200, 161, 186, 200, 159, 185, 199, 159, 184, 199, 159, 185, 199, 158, 184, 198, 157, 183, 197, 156, 183, 197, 156, 183, 197, 155, 182, 196, 155, 182, 196, 156, 183, 196, 157, 183, 196, 158, 184, 196, 159, 184, 196, 161, 185, 197, 161, 185, 197, 163, 187, 199, + 162, 185, 200, 162, 185, 200, 162, 185, 199, 161, 185, 198, 162, 186, 198, 160, 185, 198, 160, 184, 198, 159, 184, 199, 158, 184, 198, 155, 180, 196, 154, 180, 195, 150, 177, 192, 148, 176, 190, 149, 176, 190, 139, 169, 186, 135, 165, 182, 126, 158, 174, 113, 145, 161, 97, 125, 142, 86, 110, 123, 79, 101, 110, + 74, 92, 100, 70, 86, 94, 72, 88, 95, 78, 93, 100, 58, 73, 79, 48, 59, 64, 55, 58, 61, 58, 53, 50, 88, 79, 73, 65, 58, 53, 38, 37, 33, 38, 37, 32, 22, 20, 18, 27, 24, 23, 26, 23, 23, 15, 14, 15, 3, 3, 5, 7, 6, 10, 42, 43, 47, 65, 73, 77, 43, 52, 57, + 52, 62, 66, 46, 56, 61, 52, 63, 68, 45, 57, 61, 69, 77, 82, 50, 58, 65, 33, 42, 52, 60, 69, 75, 45, 57, 64, 82, 93, 97, 64, 75, 79, 80, 91, 94, 60, 71, 77, 35, 48, 55, 62, 73, 77, 55, 67, 72, 47, 60, 64, 63, 75, 79, 70, 83, 85, 59, 71, 75, 51, 65, 69, + 72, 82, 86, 40, 53, 57, 50, 62, 66, 63, 73, 76, 59, 67, 70, 29, 38, 43, 10, 19, 25, 4, 11, 17, 12, 15, 20, 10, 12, 16, 16, 16, 18, 21, 20, 22, 58, 57, 58, 23, 22, 25, 31, 30, 32, 35, 34, 36, 51, 50, 53, 2, 1, 8, 2, 1, 9, 27, 27, 32, 2, 2, 7, + 1, 1, 6, 8, 7, 12, 0, 0, 5, 6, 7, 10, 15, 15, 15, 30, 31, 30, 32, 30, 27, 49, 46, 43, 91, 87, 83, 88, 84, 80, 137, 136, 134, 158, 160, 160, 166, 174, 177, 156, 167, 173, 91, 113, 128, 129, 144, 157, 145, 156, 168, 93, 114, 133, 125, 142, 156, 101, 123, 141, 115, 138, 153, + 155, 171, 181, 115, 143, 158, 107, 138, 153, 126, 152, 165, 100, 136, 151, 123, 153, 168, 130, 160, 174, 144, 170, 184, 157, 180, 192, 141, 168, 183, 161, 183, 192, 160, 183, 192, 156, 181, 191, 164, 188, 197, 156, 182, 193, 164, 186, 198, 166, 190, 199, 170, 193, 201, 181, 200, 206, 182, 201, 207, 176, 198, 205, + 177, 199, 207, 191, 208, 215, 195, 212, 218, 181, 202, 210, 182, 203, 212, 187, 207, 215, 191, 209, 216, 188, 208, 215, 193, 211, 218, 199, 216, 222, 207, 220, 226, 197, 213, 220, 193, 211, 217, 189, 208, 214, 185, 205, 211, 185, 205, 212, 177, 199, 206, 178, 199, 206, 189, 206, 212, 203, 215, 220, 194, 208, 214, + 191, 207, 213, 180, 199, 206, 186, 203, 209, 185, 202, 209, 179, 199, 206, 182, 199, 205, 174, 195, 202, 175, 194, 201, 179, 196, 203, 174, 191, 199, 178, 193, 200, 178, 194, 198, 152, 172, 181, 134, 159, 170, 136, 159, 170, 117, 148, 161, 140, 165, 176, 159, 178, 188, 138, 164, 176, 133, 161, 171, 153, 173, 181, + 140, 164, 172, 131, 157, 168, 134, 159, 169, 138, 161, 171, 130, 155, 166, 138, 160, 170, 141, 162, 172, 145, 164, 176, 139, 163, 175, 148, 170, 180, 142, 167, 179, 148, 170, 181, 143, 168, 179, 146, 170, 181, 158, 180, 187, 160, 184, 191, 175, 195, 201, 180, 199, 206, 188, 205, 210, 197, 213, 217, 206, 220, 223, + 206, 220, 223, 210, 224, 226, 219, 231, 232, 224, 234, 234, 223, 233, 234, 228, 237, 237, 226, 235, 235, 226, 237, 235, 227, 236, 236, 228, 238, 238, 229, 238, 238, 232, 240, 240, 233, 241, 240, 233, 241, 240, 234, 241, 240, 235, 242, 241, 236, 242, 241, 237, 243, 242, 237, 243, 242, 236, 242, 241, 236, 242, 241, + 33, 23, 38, 38, 28, 44, 43, 35, 50, 45, 38, 51, 53, 50, 62, 65, 64, 76, 76, 80, 91, 92, 100, 111, 111, 123, 135, 129, 143, 155, 150, 162, 173, 162, 174, 185, 174, 186, 196, 180, 192, 202, 186, 199, 208, 190, 204, 212, 192, 206, 214, 192, 208, 215, 193, 209, 216, 193, 209, 216, 193, 209, 216, + 191, 209, 216, 191, 209, 216, 190, 208, 215, 190, 208, 215, 189, 207, 215, 188, 207, 214, 188, 207, 215, 188, 206, 215, 187, 206, 214, 187, 206, 214, 185, 204, 212, 185, 204, 212, 184, 204, 212, 182, 203, 211, 179, 201, 212, 178, 200, 211, 177, 199, 210, 176, 199, 210, 175, 199, 211, 174, 198, 210, 172, 196, 208, + 170, 194, 206, 168, 193, 205, 168, 192, 204, 164, 191, 203, 164, 191, 202, 163, 189, 201, 164, 191, 204, 163, 189, 201, 163, 189, 203, 163, 189, 203, 164, 189, 201, 162, 188, 202, 163, 188, 203, 163, 188, 202, 163, 189, 203, 162, 188, 202, 161, 187, 200, 161, 187, 200, 160, 186, 200, 160, 186, 200, 159, 185, 199, + 159, 185, 200, 158, 185, 199, 158, 184, 198, 156, 183, 197, 155, 182, 196, 156, 182, 196, 154, 181, 194, 156, 182, 196, 154, 180, 194, 154, 180, 194, 153, 180, 194, 150, 178, 192, 150, 179, 193, 152, 179, 193, 151, 178, 192, 153, 179, 193, 152, 180, 194, 155, 181, 194, 156, 181, 193, 157, 182, 194, 158, 182, 196, + 160, 183, 197, 159, 182, 197, 160, 183, 197, 158, 183, 196, 157, 183, 197, 158, 183, 197, 157, 182, 196, 154, 180, 195, 153, 179, 195, 151, 177, 193, 149, 175, 191, 147, 174, 190, 144, 172, 187, 138, 168, 183, 145, 172, 187, 144, 171, 186, 135, 161, 176, 114, 143, 157, 95, 125, 139, 79, 104, 115, 78, 98, 107, + 73, 90, 98, 70, 87, 95, 64, 80, 87, 69, 82, 89, 55, 70, 76, 34, 46, 53, 60, 61, 64, 57, 50, 48, 88, 77, 69, 66, 60, 50, 46, 45, 35, 33, 34, 24, 23, 22, 19, 22, 19, 18, 18, 14, 14, 10, 9, 10, 3, 2, 4, 4, 3, 6, 21, 22, 25, 70, 77, 80, 55, 63, 67, + 47, 57, 62, 47, 58, 63, 40, 52, 58, 42, 54, 59, 74, 82, 87, 39, 48, 55, 69, 76, 84, 41, 51, 59, 58, 69, 75, 65, 77, 81, 56, 69, 72, 81, 91, 95, 54, 65, 72, 68, 78, 84, 50, 62, 68, 50, 62, 66, 79, 90, 93, 31, 48, 50, 70, 84, 86, 83, 95, 99, 60, 75, 81, + 62, 75, 81, 55, 67, 72, 50, 63, 67, 54, 63, 68, 44, 52, 56, 25, 34, 39, 12, 20, 26, 2, 9, 15, 12, 15, 21, 12, 12, 16, 15, 16, 17, 24, 23, 25, 78, 78, 79, 30, 29, 30, 29, 27, 29, 37, 34, 35, 45, 42, 44, 34, 30, 34, 7, 6, 13, 8, 8, 15, 8, 7, 13, + 13, 12, 17, 11, 10, 14, 16, 15, 19, 15, 17, 20, 5, 6, 6, 21, 22, 20, 30, 26, 21, 47, 42, 36, 65, 60, 54, 76, 71, 65, 126, 115, 107, 177, 176, 175, 162, 169, 170, 136, 147, 154, 114, 128, 138, 115, 131, 144, 154, 165, 176, 123, 140, 154, 89, 112, 131, 131, 148, 162, 109, 130, 146, + 118, 139, 154, 166, 179, 187, 101, 129, 143, 96, 128, 142, 125, 151, 162, 120, 149, 161, 133, 158, 172, 123, 153, 168, 125, 155, 171, 139, 164, 178, 127, 157, 171, 146, 169, 181, 140, 167, 179, 153, 176, 187, 166, 186, 196, 167, 186, 197, 157, 180, 192, 182, 198, 206, 175, 196, 204, 174, 195, 203, 188, 205, 210, + 190, 206, 212, 186, 204, 212, 192, 209, 215, 196, 211, 218, 184, 204, 211, 182, 204, 211, 188, 207, 214, 195, 213, 219, 196, 212, 219, 195, 213, 219, 199, 216, 221, 206, 219, 224, 196, 212, 218, 191, 209, 215, 196, 212, 218, 190, 207, 213, 193, 209, 215, 193, 209, 214, 184, 202, 208, 165, 191, 199, 184, 202, 208, + 177, 198, 205, 176, 196, 204, 165, 189, 198, 159, 186, 194, 177, 198, 204, 175, 195, 201, 185, 202, 207, 183, 201, 207, 175, 195, 202, 160, 182, 190, 137, 168, 179, 160, 182, 189, 170, 188, 195, 145, 169, 177, 126, 152, 164, 139, 162, 173, 150, 173, 182, 158, 177, 187, 151, 172, 182, 164, 181, 189, 150, 172, 179, + 106, 140, 151, 81, 120, 135, 115, 144, 157, 116, 145, 159, 117, 146, 158, 116, 145, 158, 119, 148, 160, 130, 156, 168, 142, 166, 175, 130, 157, 173, 153, 173, 184, 161, 181, 190, 157, 178, 188, 160, 181, 189, 160, 183, 190, 168, 189, 196, 172, 194, 200, 182, 201, 207, 188, 206, 212, 194, 211, 215, 203, 218, 221, + 214, 226, 228, 216, 228, 230, 217, 229, 230, 222, 233, 232, 227, 236, 236, 226, 236, 236, 228, 237, 237, 229, 238, 237, 227, 237, 236, 227, 237, 237, 229, 239, 238, 230, 239, 238, 233, 241, 241, 234, 242, 241, 235, 242, 241, 235, 242, 241, 236, 242, 241, 237, 243, 242, 238, 244, 243, 238, 244, 243, 237, 243, 242, + 33, 24, 39, 37, 28, 44, 42, 35, 49, 47, 43, 55, 54, 52, 63, 64, 65, 75, 79, 84, 94, 96, 107, 117, 117, 131, 140, 134, 149, 157, 153, 167, 177, 166, 179, 188, 176, 188, 198, 182, 195, 204, 186, 201, 209, 189, 204, 212, 191, 207, 214, 193, 209, 216, 192, 209, 216, 191, 209, 216, 191, 209, 216, + 191, 209, 216, 190, 208, 215, 189, 208, 215, 189, 208, 215, 189, 207, 215, 189, 207, 215, 188, 206, 215, 187, 206, 214, 187, 206, 214, 186, 206, 214, 184, 204, 212, 183, 204, 212, 182, 203, 211, 180, 201, 212, 179, 201, 212, 176, 199, 210, 177, 200, 210, 174, 198, 210, 172, 196, 208, 170, 195, 207, 170, 194, 206, + 168, 192, 205, 165, 191, 203, 163, 189, 202, 161, 189, 200, 161, 189, 200, 161, 189, 199, 159, 186, 201, 160, 186, 200, 159, 187, 200, 159, 186, 200, 159, 186, 200, 160, 187, 201, 161, 187, 201, 160, 187, 201, 160, 186, 200, 160, 186, 200, 159, 187, 201, 157, 184, 198, 158, 184, 198, 157, 184, 197, 156, 182, 197, + 156, 182, 196, 154, 182, 196, 153, 180, 195, 153, 180, 195, 152, 179, 193, 151, 178, 193, 151, 177, 193, 152, 179, 194, 152, 178, 193, 149, 176, 191, 149, 177, 191, 148, 177, 191, 150, 177, 192, 150, 176, 192, 150, 177, 192, 151, 178, 192, 151, 178, 192, 152, 179, 192, 154, 180, 193, 154, 180, 193, 155, 179, 194, + 154, 179, 194, 154, 180, 194, 153, 179, 193, 153, 179, 193, 154, 180, 194, 151, 178, 193, 149, 177, 192, 150, 177, 192, 146, 174, 190, 144, 173, 189, 138, 168, 185, 137, 167, 183, 132, 164, 180, 132, 164, 179, 126, 160, 175, 133, 163, 179, 134, 160, 173, 113, 139, 150, 93, 119, 128, 76, 102, 112, 71, 91, 99, + 65, 84, 92, 64, 82, 90, 59, 75, 82, 61, 74, 81, 48, 62, 69, 34, 47, 53, 49, 55, 58, 58, 53, 48, 89, 79, 73, 73, 68, 58, 51, 50, 40, 41, 40, 31, 26, 25, 21, 25, 22, 21, 23, 21, 20, 3, 2, 2, 3, 2, 2, 2, 2, 2, 9, 10, 11, 52, 61, 64, 57, 66, 71, + 49, 61, 65, 56, 66, 70, 39, 51, 57, 44, 55, 60, 70, 79, 82, 48, 59, 60, 56, 66, 67, 77, 86, 88, 44, 58, 61, 64, 77, 80, 44, 58, 61, 65, 76, 82, 91, 101, 108, 69, 82, 89, 58, 71, 76, 47, 62, 65, 80, 92, 93, 108, 118, 119, 68, 86, 89, 79, 95, 99, 78, 94, 101, + 57, 74, 81, 72, 85, 90, 52, 66, 69, 55, 67, 70, 48, 56, 60, 31, 40, 45, 12, 20, 27, 10, 17, 22, 11, 17, 21, 17, 18, 21, 20, 20, 20, 31, 31, 31, 74, 75, 74, 29, 27, 26, 30, 27, 25, 30, 26, 23, 39, 36, 35, 46, 42, 45, 6, 5, 12, 7, 7, 12, 13, 13, 18, + 12, 12, 18, 12, 12, 17, 8, 8, 13, 11, 12, 16, 18, 19, 20, 21, 21, 19, 28, 23, 15, 54, 48, 41, 66, 61, 53, 78, 74, 67, 127, 105, 88, 185, 182, 176, 180, 181, 178, 129, 139, 148, 107, 122, 133, 128, 142, 152, 112, 131, 143, 114, 132, 145, 101, 121, 136, 115, 134, 149, 117, 137, 152, + 107, 130, 145, 125, 149, 161, 147, 165, 174, 57, 93, 106, 105, 129, 140, 97, 124, 138, 128, 150, 162, 110, 136, 150, 119, 144, 158, 114, 140, 155, 132, 155, 169, 134, 158, 171, 128, 156, 168, 137, 165, 178, 145, 170, 183, 128, 160, 175, 141, 169, 182, 151, 179, 191, 170, 192, 201, 176, 196, 204, 178, 197, 204, + 180, 199, 207, 188, 206, 213, 190, 206, 214, 194, 211, 216, 194, 211, 217, 197, 213, 219, 192, 211, 215, 190, 209, 215, 190, 210, 216, 191, 210, 216, 195, 211, 217, 196, 212, 217, 203, 217, 221, 195, 212, 217, 179, 200, 208, 183, 202, 209, 187, 205, 212, 183, 202, 208, 194, 210, 215, 187, 203, 208, 181, 200, 205, + 180, 198, 205, 156, 183, 192, 189, 205, 210, 191, 205, 211, 183, 201, 207, 188, 205, 210, 185, 202, 208, 194, 208, 213, 162, 186, 193, 178, 197, 204, 165, 186, 194, 154, 179, 186, 117, 151, 161, 139, 164, 175, 145, 168, 177, 130, 156, 169, 145, 168, 178, 146, 169, 179, 135, 162, 173, 140, 165, 174, 132, 158, 168, + 144, 166, 175, 127, 155, 166, 128, 154, 165, 141, 164, 174, 128, 155, 167, 155, 174, 182, 157, 176, 184, 141, 164, 175, 148, 170, 180, 146, 168, 179, 138, 164, 175, 132, 162, 174, 142, 170, 182, 142, 173, 183, 158, 182, 191, 172, 192, 199, 172, 194, 201, 183, 203, 209, 183, 203, 209, 191, 210, 214, 196, 214, 217, + 210, 223, 226, 221, 232, 234, 220, 232, 232, 223, 233, 233, 226, 236, 236, 227, 237, 237, 228, 237, 237, 228, 238, 238, 227, 237, 238, 229, 239, 238, 231, 239, 238, 232, 240, 239, 232, 240, 239, 235, 242, 241, 237, 243, 242, 237, 243, 242, 238, 244, 243, 237, 243, 242, 238, 244, 243, 238, 244, 243, 238, 244, 243, + 35, 29, 43, 39, 33, 46, 40, 37, 49, 47, 45, 57, 59, 59, 69, 69, 72, 82, 82, 89, 100, 97, 108, 119, 117, 133, 142, 136, 151, 160, 152, 169, 178, 166, 180, 190, 175, 190, 198, 182, 196, 204, 185, 201, 208, 189, 205, 212, 191, 207, 214, 193, 209, 216, 192, 210, 216, 191, 209, 216, 190, 208, 215, + 190, 208, 215, 190, 208, 215, 189, 208, 216, 188, 207, 215, 188, 207, 215, 188, 207, 215, 187, 206, 214, 187, 206, 214, 186, 205, 213, 183, 204, 212, 183, 204, 212, 182, 203, 211, 181, 201, 213, 178, 200, 211, 176, 199, 210, 174, 199, 209, 172, 196, 207, 171, 196, 206, 169, 195, 205, 167, 193, 205, 164, 191, 203, + 163, 190, 203, 162, 188, 202, 161, 189, 201, 160, 187, 201, 160, 188, 199, 159, 186, 201, 158, 186, 200, 160, 186, 200, 159, 186, 200, 159, 186, 200, 158, 185, 199, 158, 186, 198, 157, 184, 199, 158, 184, 198, 158, 185, 199, 156, 183, 197, 156, 183, 197, 153, 182, 196, 154, 181, 196, 154, 181, 196, 153, 179, 195, + 153, 180, 195, 152, 178, 194, 151, 178, 194, 147, 177, 192, 150, 177, 192, 149, 176, 192, 150, 176, 192, 149, 175, 191, 150, 176, 192, 149, 175, 191, 148, 176, 190, 146, 175, 189, 146, 174, 190, 146, 173, 188, 145, 173, 188, 146, 173, 189, 147, 174, 189, 147, 174, 188, 147, 174, 188, 147, 174, 188, 148, 175, 189, + 147, 174, 188, 146, 173, 187, 145, 173, 187, 143, 171, 186, 141, 170, 185, 140, 170, 185, 141, 170, 185, 140, 170, 185, 135, 167, 183, 134, 165, 182, 131, 163, 180, 124, 158, 174, 129, 162, 177, 129, 163, 177, 133, 163, 178, 123, 157, 173, 114, 145, 158, 96, 125, 134, 82, 107, 116, 71, 92, 100, 65, 82, 91, + 58, 74, 83, 60, 74, 83, 55, 70, 77, 54, 68, 76, 43, 57, 65, 25, 38, 42, 35, 43, 44, 59, 62, 61, 81, 77, 72, 92, 83, 74, 50, 49, 39, 42, 41, 31, 28, 27, 23, 27, 25, 24, 22, 20, 20, 6, 5, 5, 2, 2, 2, 2, 2, 2, 4, 4, 6, 52, 58, 61, 66, 77, 79, + 43, 55, 59, 42, 54, 59, 56, 68, 71, 64, 74, 78, 68, 78, 81, 50, 63, 63, 59, 72, 71, 84, 97, 97, 58, 73, 75, 66, 80, 82, 68, 81, 83, 62, 74, 80, 64, 77, 84, 78, 90, 97, 75, 89, 93, 65, 78, 81, 65, 78, 80, 54, 72, 74, 79, 96, 100, 80, 97, 102, 77, 94, 100, + 53, 71, 78, 73, 87, 90, 54, 69, 72, 56, 67, 70, 43, 55, 59, 26, 38, 42, 14, 26, 30, 14, 24, 29, 10, 17, 21, 22, 25, 24, 32, 34, 32, 50, 51, 48, 63, 64, 62, 27, 27, 25, 22, 21, 20, 21, 20, 17, 36, 34, 32, 29, 27, 26, 5, 5, 8, 6, 6, 12, 11, 12, 17, + 10, 11, 15, 13, 14, 18, 7, 8, 13, 2, 3, 7, 10, 10, 13, 22, 23, 20, 28, 24, 14, 45, 39, 29, 71, 64, 55, 69, 63, 55, 130, 112, 97, 186, 183, 176, 186, 187, 184, 100, 113, 122, 96, 111, 122, 112, 129, 140, 98, 119, 130, 111, 130, 141, 118, 138, 149, 99, 122, 135, 92, 116, 130, + 107, 130, 143, 89, 115, 129, 122, 146, 156, 130, 150, 161, 99, 126, 138, 84, 111, 123, 81, 110, 123, 106, 131, 145, 102, 128, 143, 94, 124, 141, 108, 137, 150, 84, 119, 134, 103, 134, 148, 109, 143, 160, 116, 151, 166, 128, 158, 173, 156, 178, 190, 163, 185, 195, 170, 191, 200, 181, 199, 206, 186, 203, 208, + 175, 196, 202, 173, 194, 202, 178, 198, 206, 191, 207, 213, 186, 204, 211, 189, 207, 213, 195, 211, 216, 199, 215, 219, 194, 212, 217, 198, 214, 220, 188, 208, 215, 187, 206, 213, 194, 211, 216, 189, 207, 213, 190, 208, 214, 190, 207, 214, 175, 197, 205, 176, 198, 204, 184, 203, 209, 185, 203, 209, 176, 198, 204, + 168, 192, 199, 171, 192, 200, 154, 180, 190, 169, 192, 200, 150, 180, 190, 161, 188, 195, 171, 193, 201, 163, 187, 196, 163, 187, 196, 170, 191, 199, 170, 190, 198, 178, 195, 200, 178, 194, 200, 152, 174, 183, 131, 159, 168, 140, 164, 174, 127, 156, 168, 131, 159, 171, 110, 146, 158, 107, 142, 154, 128, 156, 166, + 131, 158, 168, 149, 170, 179, 138, 165, 174, 149, 171, 181, 154, 175, 185, 146, 170, 181, 156, 178, 187, 151, 174, 184, 151, 175, 184, 149, 173, 184, 160, 181, 189, 162, 183, 190, 152, 178, 187, 142, 173, 182, 148, 177, 188, 163, 187, 196, 173, 195, 202, 185, 204, 210, 189, 207, 213, 190, 209, 214, 198, 215, 218, + 203, 219, 222, 212, 226, 227, 226, 235, 236, 226, 237, 237, 226, 236, 236, 230, 238, 238, 231, 239, 239, 230, 238, 238, 229, 238, 238, 229, 238, 238, 231, 240, 239, 232, 240, 239, 233, 241, 240, 233, 241, 240, 236, 243, 242, 237, 243, 243, 239, 244, 244, 238, 244, 243, 238, 244, 243, 238, 244, 243, 238, 244, 243, + 38, 33, 45, 43, 40, 52, 45, 44, 56, 50, 50, 62, 62, 66, 77, 75, 83, 93, 87, 98, 107, 106, 119, 129, 122, 138, 147, 138, 155, 164, 154, 172, 181, 165, 182, 190, 173, 191, 198, 182, 199, 206, 185, 202, 209, 189, 205, 212, 192, 208, 215, 190, 208, 215, 191, 208, 217, 190, 208, 216, 191, 208, 216, + 190, 209, 216, 189, 207, 216, 188, 208, 215, 188, 207, 215, 188, 207, 215, 187, 206, 214, 187, 206, 214, 186, 206, 214, 183, 204, 212, 182, 203, 211, 182, 203, 211, 178, 201, 211, 178, 200, 211, 177, 199, 210, 177, 199, 210, 173, 197, 208, 172, 195, 207, 171, 195, 207, 169, 193, 205, 165, 191, 203, 164, 190, 202, + 162, 188, 201, 160, 187, 201, 161, 188, 202, 159, 186, 200, 160, 187, 200, 158, 186, 200, 160, 186, 200, 158, 185, 199, 158, 185, 199, 159, 185, 199, 156, 183, 197, 157, 184, 198, 156, 183, 197, 156, 183, 197, 154, 181, 195, 154, 181, 196, 154, 181, 196, 152, 180, 195, 149, 179, 194, 150, 179, 194, 152, 178, 194, + 151, 177, 193, 151, 177, 193, 150, 176, 192, 148, 176, 191, 147, 175, 191, 147, 176, 191, 148, 175, 191, 146, 173, 189, 148, 174, 190, 147, 174, 189, 145, 173, 188, 144, 172, 187, 144, 171, 187, 144, 170, 186, 145, 170, 186, 140, 168, 184, 142, 169, 185, 142, 168, 183, 142, 169, 183, 140, 168, 182, 139, 168, 181, + 139, 168, 182, 138, 167, 181, 137, 167, 181, 136, 165, 180, 133, 164, 179, 129, 162, 177, 128, 161, 177, 126, 160, 176, 126, 160, 176, 124, 157, 173, 121, 155, 171, 122, 157, 173, 123, 158, 174, 136, 166, 180, 146, 172, 187, 139, 167, 182, 113, 144, 156, 86, 117, 126, 79, 102, 110, 67, 86, 94, 59, 77, 86, + 59, 74, 83, 49, 63, 72, 47, 62, 70, 52, 66, 71, 48, 61, 67, 23, 36, 39, 19, 30, 31, 52, 57, 56, 82, 83, 78, 102, 93, 83, 62, 62, 53, 46, 45, 34, 32, 30, 26, 31, 29, 26, 19, 17, 16, 6, 4, 5, 3, 3, 3, 4, 4, 4, 0, 0, 2, 41, 48, 50, 75, 83, 86, + 48, 58, 63, 44, 56, 60, 63, 72, 77, 85, 94, 98, 70, 80, 82, 61, 73, 73, 80, 93, 92, 71, 86, 86, 68, 82, 84, 82, 95, 97, 53, 68, 71, 70, 83, 87, 54, 70, 73, 66, 81, 86, 58, 73, 78, 77, 90, 93, 94, 107, 110, 121, 133, 135, 69, 85, 90, 109, 122, 127, 86, 102, 107, + 78, 94, 100, 80, 95, 99, 85, 96, 99, 66, 76, 80, 52, 64, 68, 33, 44, 50, 27, 38, 45, 5, 18, 23, 12, 19, 23, 18, 23, 20, 46, 47, 42, 58, 59, 51, 47, 49, 43, 46, 48, 47, 19, 20, 19, 18, 17, 16, 23, 21, 19, 28, 26, 25, 5, 4, 7, 4, 4, 9, 4, 4, 10, + 4, 4, 9, 9, 10, 14, 4, 4, 9, 3, 4, 9, 14, 13, 15, 25, 24, 20, 41, 34, 24, 64, 57, 49, 81, 74, 66, 73, 66, 56, 131, 108, 91, 187, 182, 177, 187, 187, 185, 58, 74, 85, 90, 105, 117, 130, 146, 154, 107, 125, 136, 103, 124, 134, 123, 142, 151, 119, 141, 151, 110, 134, 144, + 94, 120, 131, 102, 125, 136, 81, 107, 118, 79, 106, 118, 102, 127, 138, 85, 112, 123, 86, 112, 122, 64, 95, 106, 71, 99, 112, 81, 108, 121, 95, 122, 135, 92, 122, 137, 106, 137, 151, 125, 154, 167, 131, 158, 174, 137, 164, 178, 173, 190, 199, 161, 182, 194, 169, 189, 197, 178, 196, 203, 186, 202, 207, + 180, 198, 203, 168, 191, 199, 174, 196, 203, 174, 196, 203, 180, 198, 205, 183, 203, 208, 187, 206, 212, 194, 211, 217, 190, 209, 215, 190, 209, 216, 191, 210, 215, 195, 212, 217, 198, 214, 220, 197, 213, 219, 196, 212, 217, 189, 207, 213, 187, 205, 211, 180, 199, 206, 174, 195, 203, 162, 189, 194, 169, 193, 200, + 183, 201, 207, 187, 203, 209, 187, 203, 209, 178, 198, 204, 191, 206, 211, 180, 199, 206, 173, 194, 202, 167, 190, 199, 176, 196, 203, 149, 176, 186, 169, 190, 198, 163, 185, 192, 156, 179, 187, 165, 184, 191, 151, 176, 183, 158, 181, 187, 126, 157, 169, 119, 152, 165, 162, 181, 189, 188, 200, 205, 146, 171, 179, + 138, 165, 174, 122, 154, 166, 146, 170, 180, 142, 170, 179, 149, 174, 184, 150, 173, 184, 156, 178, 187, 160, 180, 190, 160, 181, 191, 172, 190, 196, 171, 190, 196, 165, 188, 194, 166, 189, 195, 164, 188, 195, 170, 192, 200, 177, 198, 205, 182, 201, 208, 190, 208, 214, 201, 215, 219, 190, 209, 213, 196, 213, 216, + 203, 218, 222, 208, 222, 225, 215, 227, 230, 230, 237, 238, 230, 239, 238, 230, 238, 238, 231, 239, 238, 229, 239, 239, 230, 239, 239, 232, 239, 238, 232, 241, 241, 232, 240, 240, 234, 242, 241, 235, 242, 241, 235, 242, 241, 238, 243, 243, 238, 244, 243, 238, 244, 243, 239, 244, 243, 238, 244, 243, 237, 243, 242, + 42, 42, 52, 50, 49, 60, 57, 59, 70, 63, 68, 79, 72, 83, 93, 83, 96, 106, 94, 108, 118, 113, 128, 139, 130, 148, 158, 145, 163, 172, 159, 177, 185, 166, 184, 192, 172, 191, 198, 181, 199, 206, 185, 202, 209, 188, 205, 212, 190, 208, 215, 190, 208, 215, 190, 208, 215, 189, 209, 215, 189, 208, 216, + 189, 208, 216, 189, 208, 216, 188, 207, 215, 188, 207, 215, 187, 206, 214, 187, 206, 214, 185, 205, 213, 185, 205, 213, 183, 204, 212, 182, 203, 212, 179, 201, 211, 180, 201, 212, 177, 199, 210, 177, 199, 210, 174, 197, 209, 173, 196, 208, 171, 195, 207, 169, 193, 205, 167, 192, 204, 165, 190, 202, 163, 189, 201, + 162, 189, 202, 160, 187, 201, 161, 187, 201, 160, 186, 200, 158, 185, 199, 160, 186, 200, 158, 184, 198, 160, 186, 199, 159, 185, 199, 157, 183, 197, 156, 183, 197, 156, 183, 197, 155, 181, 196, 154, 181, 196, 154, 181, 196, 152, 179, 195, 151, 179, 194, 150, 178, 194, 151, 178, 194, 149, 176, 192, 148, 176, 191, + 149, 176, 192, 148, 175, 191, 148, 175, 191, 148, 175, 191, 148, 175, 191, 147, 175, 190, 146, 174, 190, 145, 173, 188, 146, 172, 188, 141, 170, 185, 141, 170, 185, 140, 169, 184, 138, 167, 182, 141, 167, 183, 138, 166, 182, 135, 164, 179, 134, 163, 178, 134, 163, 178, 132, 162, 177, 131, 161, 176, 131, 162, 176, + 129, 161, 175, 128, 159, 175, 129, 160, 175, 124, 158, 173, 123, 156, 172, 119, 154, 170, 117, 152, 168, 117, 152, 168, 112, 148, 164, 116, 151, 167, 118, 152, 168, 121, 154, 172, 123, 156, 172, 136, 165, 181, 144, 171, 187, 146, 171, 185, 124, 152, 162, 93, 122, 131, 74, 97, 105, 67, 85, 94, 59, 77, 85, + 59, 72, 82, 54, 68, 76, 51, 66, 73, 44, 59, 66, 37, 51, 57, 27, 39, 42, 12, 22, 23, 28, 37, 35, 75, 75, 70, 106, 98, 90, 88, 83, 73, 44, 41, 29, 30, 29, 25, 20, 19, 15, 9, 7, 7, 3, 2, 3, 2, 1, 3, 3, 3, 4, 7, 9, 9, 43, 48, 50, 56, 66, 69, + 38, 51, 54, 69, 79, 83, 49, 59, 65, 96, 105, 108, 43, 57, 60, 60, 72, 72, 61, 75, 76, 93, 104, 107, 84, 96, 99, 89, 101, 104, 74, 86, 89, 83, 95, 99, 62, 78, 82, 103, 114, 117, 56, 73, 77, 76, 91, 93, 88, 102, 105, 101, 115, 119, 124, 136, 140, 92, 108, 114, 77, 94, 100, + 103, 117, 121, 98, 112, 116, 65, 78, 82, 67, 78, 81, 52, 63, 69, 55, 65, 71, 27, 39, 46, 14, 26, 34, 16, 23, 29, 35, 39, 37, 44, 46, 40, 58, 58, 51, 44, 45, 36, 46, 48, 42, 19, 21, 17, 20, 20, 20, 33, 32, 32, 13, 11, 11, 10, 9, 12, 3, 3, 8, 4, 4, 9, + 5, 4, 8, 11, 10, 14, 4, 4, 9, 6, 6, 10, 20, 19, 22, 24, 20, 18, 40, 32, 22, 66, 59, 51, 80, 72, 63, 62, 53, 41, 136, 113, 96, 184, 182, 177, 135, 138, 138, 65, 80, 90, 85, 103, 113, 119, 137, 147, 91, 113, 124, 109, 130, 140, 117, 137, 147, 117, 139, 149, 112, 136, 146, + 76, 107, 119, 84, 109, 122, 74, 102, 113, 83, 110, 121, 74, 102, 114, 70, 100, 112, 85, 113, 122, 87, 113, 123, 74, 101, 112, 82, 109, 120, 57, 92, 107, 93, 122, 137, 84, 116, 130, 73, 107, 125, 105, 137, 151, 134, 159, 173, 137, 163, 176, 159, 179, 189, 141, 168, 180, 166, 185, 193, 172, 192, 197, + 179, 197, 203, 178, 197, 203, 172, 194, 200, 175, 197, 203, 171, 195, 202, 176, 197, 204, 184, 204, 210, 186, 206, 212, 185, 206, 212, 188, 207, 212, 188, 207, 213, 188, 207, 213, 188, 208, 214, 192, 210, 216, 194, 210, 215, 187, 204, 210, 193, 207, 214, 183, 202, 209, 185, 202, 209, 181, 201, 206, 173, 195, 200, + 175, 196, 203, 172, 193, 201, 176, 196, 203, 173, 194, 202, 154, 183, 192, 172, 194, 200, 170, 192, 199, 177, 197, 203, 177, 196, 204, 180, 199, 205, 169, 191, 198, 173, 192, 199, 158, 180, 189, 149, 176, 183, 150, 176, 184, 147, 175, 182, 186, 199, 205, 164, 185, 190, 131, 162, 173, 132, 163, 172, 152, 176, 184, + 152, 177, 185, 147, 174, 182, 168, 187, 194, 164, 184, 192, 161, 182, 191, 151, 175, 187, 167, 185, 195, 162, 183, 191, 158, 181, 190, 163, 185, 194, 169, 191, 196, 181, 199, 204, 179, 198, 203, 182, 200, 207, 182, 200, 207, 180, 200, 207, 190, 206, 214, 190, 208, 214, 193, 211, 217, 202, 217, 221, 188, 209, 214, + 193, 213, 217, 207, 221, 225, 212, 225, 229, 220, 231, 234, 232, 239, 239, 232, 240, 240, 231, 239, 238, 232, 240, 240, 233, 241, 241, 233, 241, 241, 233, 241, 240, 234, 241, 240, 235, 242, 241, 236, 243, 242, 236, 243, 242, 237, 243, 242, 238, 244, 243, 238, 244, 243, 238, 244, 243, 237, 243, 242, 237, 243, 242, + 51, 53, 63, 61, 65, 75, 69, 77, 86, 80, 88, 97, 88, 101, 111, 101, 119, 127, 114, 133, 142, 128, 146, 156, 139, 158, 167, 154, 171, 180, 164, 183, 191, 171, 189, 196, 177, 195, 202, 182, 200, 207, 186, 203, 210, 188, 205, 212, 189, 207, 214, 189, 208, 215, 191, 210, 217, 190, 209, 216, 189, 208, 216, + 188, 207, 215, 189, 208, 216, 188, 207, 215, 187, 206, 215, 186, 206, 214, 186, 206, 214, 185, 205, 213, 183, 203, 213, 182, 203, 212, 182, 202, 212, 178, 201, 212, 178, 200, 211, 176, 198, 210, 176, 198, 209, 175, 197, 208, 173, 195, 207, 172, 194, 206, 169, 193, 205, 167, 191, 203, 164, 189, 202, 163, 189, 202, + 161, 187, 201, 160, 186, 200, 161, 186, 200, 160, 186, 200, 159, 185, 199, 158, 184, 198, 157, 184, 198, 157, 184, 198, 157, 182, 197, 156, 182, 197, 156, 182, 196, 153, 181, 195, 153, 180, 195, 154, 180, 194, 153, 180, 195, 152, 178, 194, 151, 177, 193, 151, 177, 193, 150, 176, 192, 149, 176, 192, 151, 176, 193, + 149, 175, 191, 149, 175, 191, 147, 174, 190, 149, 175, 191, 147, 174, 190, 147, 174, 190, 146, 174, 189, 146, 172, 188, 143, 170, 185, 140, 168, 184, 138, 167, 183, 136, 165, 181, 134, 163, 179, 132, 163, 178, 131, 161, 178, 130, 159, 176, 127, 157, 175, 125, 157, 173, 125, 157, 173, 124, 157, 172, 122, 155, 171, + 122, 155, 170, 119, 152, 168, 119, 152, 168, 119, 152, 168, 116, 150, 166, 114, 148, 164, 114, 148, 164, 111, 146, 162, 115, 149, 165, 115, 149, 166, 116, 149, 168, 121, 153, 172, 125, 158, 176, 126, 160, 177, 135, 166, 182, 134, 164, 180, 120, 150, 160, 96, 124, 133, 73, 96, 103, 72, 89, 98, 60, 77, 86, + 59, 74, 84, 58, 70, 78, 54, 65, 72, 49, 61, 68, 42, 53, 59, 28, 38, 43, 10, 21, 22, 18, 27, 24, 57, 58, 51, 91, 83, 69, 90, 87, 74, 53, 52, 38, 27, 27, 22, 18, 18, 16, 5, 4, 5, 5, 4, 6, 2, 1, 3, 5, 4, 4, 8, 10, 10, 54, 59, 61, 72, 80, 85, + 49, 62, 67, 67, 78, 83, 80, 91, 95, 102, 111, 114, 65, 76, 79, 51, 64, 66, 89, 100, 101, 71, 83, 85, 75, 88, 91, 77, 91, 95, 98, 109, 113, 66, 81, 84, 79, 92, 96, 78, 93, 96, 80, 93, 97, 79, 95, 98, 87, 102, 105, 117, 129, 133, 82, 98, 104, 130, 141, 146, 133, 143, 147, + 120, 133, 137, 83, 98, 103, 89, 102, 107, 92, 102, 106, 78, 87, 93, 62, 71, 80, 25, 37, 49, 11, 23, 34, 21, 28, 35, 36, 40, 45, 47, 47, 41, 49, 50, 41, 48, 49, 40, 35, 37, 30, 28, 29, 25, 23, 23, 22, 39, 37, 38, 15, 13, 14, 5, 4, 7, 6, 5, 10, 6, 4, 10, + 6, 5, 9, 9, 9, 12, 1, 2, 6, 10, 9, 13, 21, 17, 19, 26, 20, 15, 34, 27, 16, 72, 65, 57, 77, 69, 60, 58, 49, 38, 147, 129, 116, 175, 173, 171, 67, 76, 79, 98, 111, 120, 92, 110, 120, 111, 130, 140, 121, 139, 149, 97, 121, 131, 122, 142, 151, 111, 134, 145, 126, 147, 157, + 138, 157, 167, 132, 152, 160, 123, 144, 153, 106, 129, 139, 119, 140, 151, 125, 145, 154, 91, 118, 129, 94, 120, 130, 71, 101, 111, 86, 114, 123, 111, 133, 145, 85, 116, 130, 85, 114, 130, 103, 129, 143, 91, 121, 136, 84, 113, 130, 89, 124, 142, 99, 133, 150, 147, 172, 183, 145, 172, 182, 169, 188, 194, + 181, 197, 202, 170, 189, 197, 171, 192, 198, 172, 193, 200, 174, 195, 202, 168, 192, 200, 167, 192, 200, 179, 201, 208, 189, 207, 213, 186, 205, 212, 186, 206, 211, 189, 207, 212, 191, 209, 215, 190, 208, 212, 185, 204, 210, 184, 203, 208, 174, 196, 203, 173, 193, 202, 173, 195, 204, 181, 201, 208, 182, 201, 207, + 176, 196, 202, 176, 195, 202, 158, 184, 193, 157, 184, 193, 162, 188, 196, 172, 193, 201, 192, 207, 212, 184, 201, 208, 174, 194, 202, 169, 192, 200, 175, 194, 200, 180, 198, 203, 175, 192, 199, 173, 191, 197, 160, 183, 189, 166, 186, 193, 159, 181, 189, 167, 186, 192, 174, 192, 199, 180, 196, 203, 181, 197, 203, + 172, 192, 198, 185, 199, 205, 160, 183, 191, 161, 183, 192, 164, 184, 195, 171, 189, 198, 173, 193, 201, 174, 194, 202, 179, 197, 206, 179, 198, 205, 185, 202, 208, 187, 203, 208, 179, 199, 205, 173, 195, 202, 176, 197, 204, 187, 205, 211, 193, 209, 215, 194, 210, 217, 197, 213, 219, 203, 218, 222, 200, 217, 220, + 190, 211, 216, 196, 216, 220, 211, 225, 228, 218, 230, 233, 224, 234, 236, 232, 240, 240, 234, 241, 241, 231, 240, 239, 232, 240, 239, 232, 240, 239, 234, 242, 241, 233, 241, 240, 235, 242, 241, 236, 243, 242, 238, 244, 243, 238, 244, 243, 238, 244, 243, 239, 245, 244, 238, 244, 243, 238, 244, 243, 237, 243, 242, + 65, 70, 79, 77, 85, 95, 85, 95, 103, 93, 106, 116, 108, 126, 134, 120, 138, 147, 131, 149, 157, 144, 163, 172, 155, 173, 182, 165, 181, 190, 170, 189, 197, 177, 195, 202, 179, 197, 204, 185, 203, 210, 186, 204, 211, 189, 207, 214, 188, 207, 214, 190, 209, 216, 189, 208, 215, 189, 208, 216, 189, 208, 216, + 189, 208, 216, 187, 207, 215, 187, 206, 214, 186, 206, 214, 184, 204, 216, 184, 205, 212, 184, 203, 214, 183, 203, 214, 182, 202, 213, 178, 200, 211, 178, 200, 211, 177, 199, 210, 176, 198, 210, 174, 196, 208, 175, 197, 209, 174, 196, 207, 169, 193, 205, 169, 193, 205, 167, 191, 203, 165, 190, 203, 162, 188, 201, + 162, 187, 201, 159, 185, 199, 159, 185, 199, 158, 184, 198, 158, 184, 198, 157, 183, 197, 158, 184, 198, 157, 183, 197, 156, 182, 196, 155, 181, 195, 155, 181, 195, 155, 181, 195, 152, 179, 194, 152, 178, 193, 153, 179, 194, 152, 178, 193, 152, 178, 194, 152, 178, 194, 151, 177, 193, 151, 177, 193, 151, 177, 193, + 150, 176, 192, 149, 175, 191, 149, 175, 191, 148, 174, 191, 147, 172, 190, 147, 173, 189, 144, 171, 187, 143, 169, 185, 140, 167, 183, 137, 165, 182, 132, 163, 179, 131, 161, 178, 126, 159, 175, 126, 158, 174, 124, 156, 172, 122, 155, 172, 121, 153, 170, 120, 152, 168, 117, 151, 167, 117, 151, 167, 115, 149, 165, + 118, 151, 168, 115, 149, 166, 116, 149, 165, 113, 147, 163, 111, 145, 162, 111, 144, 163, 111, 144, 163, 112, 145, 164, 112, 144, 163, 112, 145, 164, 112, 146, 166, 115, 149, 169, 122, 156, 175, 135, 165, 182, 144, 172, 187, 134, 165, 179, 113, 145, 156, 91, 120, 129, 77, 98, 106, 66, 84, 95, 63, 78, 88, + 62, 76, 84, 51, 64, 70, 50, 62, 68, 51, 63, 69, 43, 55, 61, 30, 41, 46, 17, 28, 30, 13, 24, 22, 50, 49, 40, 79, 72, 59, 68, 67, 54, 50, 51, 38, 31, 31, 26, 26, 27, 25, 15, 15, 15, 5, 5, 5, 3, 3, 3, 8, 8, 9, 16, 17, 18, 62, 67, 70, 62, 75, 79, + 70, 83, 88, 106, 117, 121, 77, 89, 93, 75, 86, 90, 84, 95, 98, 92, 102, 102, 62, 75, 77, 105, 116, 116, 63, 79, 81, 103, 115, 118, 80, 94, 97, 69, 85, 91, 93, 107, 111, 78, 92, 96, 79, 94, 97, 79, 94, 97, 105, 119, 123, 143, 152, 156, 142, 152, 156, 121, 137, 144, 138, 149, 153, + 115, 128, 133, 107, 121, 127, 105, 117, 122, 98, 109, 115, 89, 99, 107, 46, 58, 68, 38, 49, 62, 14, 30, 39, 22, 31, 40, 31, 38, 42, 59, 58, 53, 55, 55, 45, 45, 45, 35, 48, 47, 39, 40, 42, 35, 26, 26, 25, 36, 36, 37, 25, 24, 26, 8, 7, 11, 8, 6, 13, 9, 6, 14, + 5, 5, 14, 9, 8, 16, 7, 6, 11, 14, 13, 18, 18, 12, 14, 33, 26, 20, 48, 41, 31, 61, 53, 45, 80, 72, 64, 66, 54, 41, 153, 138, 131, 70, 73, 70, 90, 105, 111, 78, 96, 105, 74, 93, 104, 123, 140, 150, 121, 141, 150, 128, 147, 156, 129, 147, 158, 110, 134, 145, 85, 115, 129, + 93, 122, 134, 95, 123, 135, 101, 126, 138, 120, 143, 152, 113, 136, 148, 106, 130, 142, 105, 129, 140, 115, 137, 146, 112, 135, 144, 112, 134, 143, 119, 141, 153, 129, 149, 160, 123, 145, 158, 87, 117, 132, 78, 105, 120, 103, 127, 141, 123, 148, 161, 130, 155, 170, 124, 156, 170, 153, 176, 184, 169, 189, 194, + 166, 186, 194, 175, 192, 199, 164, 186, 196, 159, 183, 193, 169, 190, 198, 173, 193, 202, 178, 198, 206, 177, 199, 206, 186, 206, 212, 191, 207, 212, 191, 208, 213, 192, 208, 212, 180, 201, 206, 179, 201, 207, 181, 202, 208, 187, 204, 211, 179, 198, 206, 169, 192, 201, 167, 189, 199, 174, 195, 203, 175, 196, 202, + 176, 196, 202, 175, 194, 202, 173, 194, 201, 168, 191, 199, 169, 193, 200, 173, 194, 201, 153, 180, 189, 176, 196, 203, 192, 207, 213, 178, 197, 203, 183, 199, 206, 174, 192, 198, 162, 184, 191, 168, 186, 192, 177, 193, 198, 158, 180, 188, 151, 174, 184, 154, 176, 184, 179, 195, 203, 172, 190, 198, 159, 183, 192, + 177, 196, 202, 173, 193, 200, 170, 191, 199, 169, 189, 198, 172, 190, 199, 165, 186, 196, 164, 187, 196, 162, 186, 195, 167, 190, 198, 179, 198, 206, 187, 204, 210, 187, 204, 211, 191, 206, 212, 186, 203, 211, 185, 204, 210, 185, 205, 211, 187, 206, 212, 192, 209, 216, 194, 212, 218, 200, 216, 220, 205, 220, 224, + 198, 216, 221, 196, 215, 220, 203, 220, 224, 217, 229, 232, 224, 234, 234, 227, 236, 236, 234, 241, 241, 236, 241, 242, 235, 241, 240, 232, 240, 239, 234, 242, 241, 235, 242, 241, 235, 242, 241, 234, 242, 241, 236, 243, 242, 238, 244, 243, 238, 244, 243, 239, 245, 244, 238, 244, 243, 239, 245, 244, 237, 243, 242, + 82, 91, 101, 90, 100, 110, 100, 115, 124, 115, 133, 141, 126, 145, 153, 137, 157, 165, 146, 166, 174, 157, 177, 185, 165, 184, 192, 172, 191, 199, 177, 196, 204, 179, 198, 206, 184, 203, 209, 187, 205, 212, 187, 206, 214, 188, 207, 214, 189, 208, 215, 189, 208, 215, 190, 209, 215, 189, 208, 215, 189, 208, 216, + 188, 207, 215, 186, 206, 214, 185, 206, 214, 185, 206, 214, 184, 204, 215, 183, 203, 214, 182, 202, 213, 182, 202, 213, 181, 201, 212, 180, 200, 211, 180, 200, 211, 178, 198, 210, 177, 198, 209, 175, 197, 208, 174, 196, 207, 169, 194, 205, 169, 193, 205, 167, 191, 203, 165, 190, 202, 164, 188, 202, 161, 187, 200, + 160, 186, 200, 160, 186, 200, 157, 183, 197, 157, 183, 197, 155, 182, 196, 155, 182, 197, 155, 180, 196, 154, 181, 196, 154, 180, 194, 153, 180, 194, 153, 179, 194, 152, 178, 194, 152, 179, 194, 152, 178, 193, 152, 179, 193, 151, 177, 193, 154, 179, 195, 152, 178, 194, 153, 178, 194, 154, 179, 195, 151, 176, 192, + 151, 176, 192, 150, 175, 191, 150, 175, 191, 147, 173, 190, 146, 171, 189, 143, 169, 186, 141, 167, 184, 141, 167, 184, 135, 163, 180, 132, 161, 178, 128, 159, 176, 126, 159, 175, 123, 156, 172, 121, 154, 170, 122, 152, 169, 117, 150, 167, 116, 149, 166, 115, 147, 165, 114, 147, 165, 112, 146, 161, 112, 145, 162, + 110, 144, 162, 110, 144, 162, 108, 141, 160, 109, 141, 160, 107, 139, 158, 106, 139, 158, 105, 139, 158, 107, 140, 159, 106, 141, 159, 108, 142, 162, 111, 144, 165, 119, 152, 171, 126, 158, 177, 138, 170, 185, 152, 178, 192, 143, 171, 185, 118, 147, 159, 89, 119, 128, 71, 93, 101, 58, 77, 85, 58, 74, 84, + 60, 74, 82, 66, 78, 84, 51, 65, 71, 43, 56, 62, 40, 53, 58, 34, 46, 49, 19, 32, 35, 9, 20, 20, 14, 22, 16, 54, 56, 42, 62, 64, 52, 41, 42, 29, 38, 39, 32, 30, 30, 26, 26, 27, 25, 14, 15, 14, 12, 12, 12, 21, 21, 21, 37, 39, 39, 67, 80, 84, 65, 79, 85, + 73, 87, 92, 116, 127, 131, 78, 90, 94, 90, 101, 104, 106, 116, 119, 86, 99, 100, 92, 104, 105, 91, 104, 106, 94, 108, 111, 80, 95, 98, 100, 113, 117, 85, 101, 105, 82, 98, 104, 118, 131, 135, 99, 113, 117, 57, 77, 79, 118, 130, 134, 121, 134, 137, 143, 153, 156, 134, 145, 149, 116, 129, 134, + 130, 142, 148, 106, 120, 127, 105, 120, 128, 110, 125, 132, 109, 122, 132, 63, 78, 91, 37, 49, 63, 15, 30, 43, 13, 25, 34, 20, 29, 35, 50, 49, 46, 51, 48, 43, 51, 48, 43, 47, 45, 39, 43, 44, 38, 23, 23, 22, 22, 21, 22, 3, 2, 5, 6, 5, 10, 4, 2, 8, 7, 6, 14, + 8, 7, 15, 11, 9, 16, 13, 12, 17, 15, 14, 18, 23, 17, 17, 40, 33, 25, 59, 50, 42, 76, 68, 61, 72, 62, 58, 76, 64, 61, 66, 63, 65, 85, 99, 106, 96, 112, 119, 118, 133, 139, 135, 150, 157, 104, 128, 138, 106, 130, 141, 133, 152, 162, 133, 151, 161, 133, 153, 164, 135, 154, 165, + 135, 155, 165, 133, 153, 162, 121, 144, 153, 110, 134, 144, 113, 137, 148, 107, 130, 142, 116, 136, 148, 101, 125, 137, 119, 140, 151, 104, 129, 140, 84, 111, 125, 90, 117, 132, 86, 116, 131, 111, 135, 150, 143, 162, 174, 108, 136, 149, 96, 128, 143, 120, 149, 163, 128, 157, 170, 121, 155, 167, 131, 163, 173, + 154, 178, 187, 172, 190, 199, 172, 191, 200, 186, 202, 208, 183, 200, 207, 176, 196, 204, 169, 193, 201, 181, 201, 208, 183, 203, 209, 195, 210, 214, 194, 208, 214, 195, 208, 213, 189, 207, 213, 190, 208, 213, 191, 208, 213, 196, 211, 215, 188, 204, 210, 184, 201, 208, 167, 190, 199, 163, 188, 197, 169, 191, 199, + 171, 193, 200, 178, 198, 205, 181, 198, 206, 182, 200, 207, 176, 196, 204, 174, 195, 202, 189, 204, 209, 173, 194, 201, 171, 193, 200, 172, 192, 200, 157, 180, 189, 163, 184, 192, 178, 195, 200, 160, 183, 190, 152, 176, 184, 152, 175, 183, 160, 181, 189, 161, 181, 190, 162, 184, 193, 171, 190, 198, 188, 203, 209, + 181, 199, 205, 177, 196, 203, 183, 200, 207, 173, 193, 201, 179, 197, 205, 184, 201, 207, 174, 193, 201, 171, 192, 199, 171, 192, 201, 179, 198, 207, 186, 203, 210, 189, 205, 211, 190, 207, 214, 188, 205, 212, 188, 206, 213, 196, 212, 218, 191, 209, 214, 197, 212, 218, 197, 214, 218, 202, 217, 221, 201, 216, 222, + 204, 220, 223, 199, 217, 221, 206, 222, 225, 215, 229, 231, 223, 234, 235, 227, 237, 237, 230, 238, 238, 235, 241, 241, 237, 242, 242, 236, 241, 241, 233, 241, 241, 235, 243, 242, 238, 244, 243, 238, 244, 243, 237, 243, 242, 238, 244, 243, 239, 245, 243, 239, 245, 244, 239, 246, 244, 240, 245, 244, 239, 244, 243, + 99, 114, 126, 111, 129, 140, 123, 141, 152, 134, 151, 163, 144, 162, 171, 153, 172, 181, 160, 179, 189, 168, 186, 194, 173, 192, 200, 178, 196, 204, 181, 199, 208, 184, 202, 211, 188, 205, 214, 187, 205, 213, 188, 207, 215, 189, 208, 216, 189, 208, 216, 189, 208, 216, 189, 208, 216, 189, 208, 216, 188, 207, 215, + 188, 207, 215, 184, 205, 213, 185, 206, 214, 184, 205, 213, 183, 204, 213, 182, 203, 214, 183, 202, 213, 182, 202, 213, 180, 200, 211, 179, 199, 210, 178, 199, 210, 179, 198, 210, 177, 197, 209, 173, 195, 207, 173, 195, 206, 170, 194, 206, 168, 192, 204, 166, 191, 203, 164, 189, 201, 159, 185, 199, 160, 186, 200, + 159, 185, 199, 157, 183, 197, 155, 182, 196, 154, 181, 195, 154, 179, 195, 154, 180, 195, 153, 179, 194, 153, 178, 194, 153, 179, 194, 153, 179, 194, 152, 178, 193, 151, 177, 193, 151, 177, 193, 150, 176, 192, 150, 175, 191, 150, 176, 192, 152, 177, 193, 152, 177, 193, 153, 178, 194, 151, 176, 192, 151, 176, 192, + 151, 175, 192, 149, 174, 191, 145, 171, 188, 143, 169, 186, 141, 168, 185, 141, 167, 183, 137, 164, 181, 136, 163, 180, 133, 161, 178, 129, 159, 176, 125, 157, 173, 119, 153, 169, 116, 149, 168, 116, 149, 166, 114, 147, 165, 115, 146, 165, 113, 144, 164, 113, 144, 163, 111, 143, 160, 108, 140, 159, 107, 140, 156, + 100, 134, 152, 103, 136, 154, 102, 136, 154, 101, 134, 153, 102, 135, 154, 102, 134, 153, 102, 135, 154, 103, 136, 155, 100, 135, 155, 106, 140, 159, 112, 145, 165, 123, 155, 173, 133, 164, 181, 148, 175, 191, 157, 180, 195, 144, 171, 186, 114, 143, 156, 89, 118, 128, 76, 97, 104, 64, 80, 89, 65, 78, 86, + 64, 77, 85, 61, 74, 81, 58, 71, 77, 51, 65, 71, 44, 58, 64, 39, 52, 56, 28, 43, 45, 17, 32, 33, 8, 21, 19, 19, 26, 22, 46, 47, 40, 42, 43, 35, 45, 45, 40, 34, 34, 30, 27, 26, 24, 24, 23, 20, 19, 17, 15, 24, 21, 21, 51, 57, 60, 66, 81, 85, 77, 91, 96, + 102, 114, 118, 83, 97, 100, 86, 99, 102, 97, 108, 111, 100, 111, 114, 102, 115, 118, 96, 110, 112, 122, 135, 137, 109, 123, 125, 112, 126, 127, 85, 101, 103, 87, 102, 105, 84, 101, 104, 103, 117, 121, 79, 96, 99, 110, 124, 126, 96, 111, 114, 124, 136, 139, 109, 123, 126, 124, 136, 140, 90, 106, 110, + 125, 138, 144, 102, 117, 125, 129, 144, 151, 130, 144, 153, 98, 117, 130, 63, 84, 98, 39, 53, 69, 23, 37, 52, 20, 32, 46, 11, 25, 30, 28, 32, 32, 65, 62, 58, 62, 60, 55, 55, 53, 48, 50, 49, 45, 42, 42, 40, 9, 10, 11, 7, 9, 12, 5, 4, 8, 7, 6, 13, 6, 6, 15, + 8, 7, 15, 5, 5, 13, 18, 16, 20, 22, 21, 25, 38, 29, 28, 52, 43, 35, 65, 58, 48, 64, 56, 48, 62, 52, 47, 52, 49, 50, 50, 63, 68, 78, 94, 100, 94, 111, 118, 98, 118, 125, 69, 96, 105, 107, 129, 139, 96, 121, 132, 121, 141, 151, 112, 133, 145, 105, 130, 140, 132, 151, 161, + 121, 143, 153, 97, 122, 133, 101, 125, 136, 97, 120, 132, 104, 125, 136, 105, 126, 138, 85, 109, 121, 105, 128, 139, 118, 139, 150, 116, 138, 149, 130, 149, 159, 106, 131, 145, 100, 126, 140, 120, 142, 154, 116, 140, 154, 87, 123, 139, 114, 144, 158, 114, 145, 160, 94, 133, 148, 110, 147, 159, 139, 166, 176, + 163, 183, 192, 163, 183, 193, 161, 184, 193, 152, 179, 190, 178, 197, 204, 176, 196, 204, 178, 199, 206, 171, 194, 201, 184, 203, 208, 189, 205, 211, 195, 209, 213, 187, 204, 209, 186, 204, 209, 191, 208, 213, 184, 204, 209, 184, 202, 209, 187, 203, 209, 169, 192, 200, 164, 188, 197, 169, 191, 199, 174, 195, 202, + 180, 199, 205, 184, 201, 209, 198, 212, 217, 195, 210, 215, 186, 204, 210, 181, 199, 206, 178, 196, 203, 175, 196, 202, 181, 201, 206, 198, 211, 216, 180, 197, 204, 166, 188, 194, 169, 190, 196, 154, 179, 187, 153, 177, 185, 156, 178, 186, 151, 175, 183, 163, 183, 191, 153, 178, 188, 165, 187, 195, 152, 179, 189, + 174, 194, 201, 172, 192, 200, 179, 197, 205, 181, 200, 207, 173, 195, 201, 177, 195, 202, 180, 199, 205, 187, 203, 209, 181, 199, 206, 174, 194, 203, 179, 198, 207, 193, 208, 214, 190, 207, 213, 194, 209, 216, 197, 212, 217, 194, 209, 217, 197, 213, 218, 197, 214, 218, 200, 216, 219, 204, 218, 222, 210, 223, 226, + 210, 223, 226, 209, 224, 226, 207, 223, 225, 212, 226, 228, 219, 232, 232, 227, 237, 237, 230, 239, 239, 232, 241, 241, 235, 240, 241, 236, 241, 241, 237, 242, 241, 234, 242, 241, 236, 243, 242, 238, 244, 243, 239, 245, 244, 239, 245, 244, 240, 245, 245, 240, 246, 245, 241, 246, 245, 240, 245, 244, 240, 245, 244, + 118, 137, 146, 131, 149, 158, 141, 160, 168, 152, 171, 180, 161, 180, 188, 167, 185, 194, 172, 191, 199, 178, 194, 204, 183, 199, 208, 185, 201, 210, 186, 203, 212, 188, 205, 214, 188, 206, 214, 189, 207, 216, 189, 208, 216, 190, 209, 217, 189, 208, 216, 189, 208, 216, 189, 208, 216, 188, 207, 215, 186, 207, 215, + 185, 206, 214, 185, 206, 214, 183, 204, 212, 184, 205, 213, 183, 203, 213, 182, 202, 213, 182, 202, 213, 180, 200, 211, 180, 200, 211, 180, 200, 211, 178, 198, 210, 178, 198, 209, 176, 197, 208, 172, 195, 206, 172, 195, 205, 170, 193, 205, 166, 190, 202, 162, 188, 201, 161, 187, 201, 158, 185, 199, 159, 185, 199, + 157, 183, 197, 156, 182, 196, 153, 180, 194, 154, 181, 194, 152, 179, 194, 152, 178, 194, 152, 177, 193, 152, 178, 194, 152, 178, 194, 151, 177, 193, 151, 177, 193, 150, 176, 192, 149, 175, 191, 148, 174, 191, 148, 174, 190, 149, 175, 191, 149, 175, 191, 149, 175, 191, 149, 175, 191, 149, 174, 191, 148, 173, 190, + 147, 173, 189, 144, 170, 187, 140, 167, 184, 138, 166, 183, 136, 164, 181, 134, 162, 179, 133, 161, 178, 132, 160, 177, 127, 157, 174, 123, 154, 173, 117, 150, 169, 113, 147, 166, 111, 145, 164, 112, 144, 163, 109, 141, 160, 109, 141, 160, 108, 140, 159, 105, 137, 156, 102, 134, 153, 100, 132, 151, 98, 132, 148, + 98, 132, 148, 97, 131, 147, 96, 129, 147, 97, 129, 148, 95, 128, 147, 95, 128, 147, 95, 130, 148, 97, 130, 150, 94, 131, 149, 103, 138, 156, 112, 147, 165, 127, 160, 177, 141, 170, 185, 151, 177, 192, 154, 179, 193, 140, 168, 183, 116, 144, 156, 91, 119, 129, 82, 103, 112, 68, 83, 92, 60, 76, 83, + 58, 72, 80, 64, 77, 83, 54, 68, 74, 55, 69, 75, 49, 62, 67, 40, 54, 58, 36, 50, 52, 27, 42, 44, 10, 21, 20, 8, 17, 16, 15, 22, 18, 33, 34, 28, 33, 34, 29, 31, 30, 26, 30, 29, 25, 24, 24, 18, 26, 25, 21, 34, 32, 30, 52, 65, 69, 77, 91, 94, 103, 116, 120, + 93, 107, 110, 76, 92, 95, 77, 91, 95, 79, 92, 96, 117, 129, 132, 76, 93, 97, 112, 127, 131, 109, 124, 127, 126, 140, 143, 99, 114, 116, 143, 153, 154, 107, 121, 124, 145, 155, 158, 90, 107, 112, 144, 156, 157, 137, 150, 152, 133, 144, 147, 146, 156, 159, 140, 150, 151, 114, 127, 131, 131, 144, 147, + 111, 124, 131, 139, 152, 158, 126, 140, 149, 170, 180, 185, 100, 124, 137, 67, 90, 104, 70, 88, 102, 56, 71, 86, 32, 49, 64, 12, 29, 38, 18, 25, 27, 52, 53, 51, 59, 58, 54, 67, 66, 62, 48, 49, 44, 45, 45, 42, 41, 43, 42, 15, 17, 18, 4, 4, 10, 6, 6, 12, 6, 6, 11, + 3, 4, 8, 16, 15, 18, 26, 25, 28, 42, 33, 35, 52, 43, 31, 63, 55, 44, 65, 58, 49, 67, 63, 56, 36, 36, 35, 48, 55, 62, 78, 98, 105, 77, 98, 104, 105, 123, 130, 95, 115, 122, 89, 113, 122, 91, 115, 127, 119, 138, 147, 94, 118, 129, 67, 95, 108, 78, 105, 115, 63, 93, 105, + 84, 107, 118, 76, 99, 110, 74, 97, 108, 89, 110, 121, 99, 121, 129, 99, 120, 127, 104, 125, 134, 77, 103, 115, 98, 122, 133, 103, 126, 136, 83, 110, 123, 110, 133, 146, 95, 122, 136, 94, 122, 136, 99, 126, 141, 118, 146, 159, 120, 149, 161, 137, 161, 172, 137, 162, 173, 155, 176, 185, 136, 164, 174, + 140, 168, 178, 154, 177, 188, 168, 189, 198, 174, 193, 201, 164, 188, 198, 168, 192, 200, 185, 203, 209, 176, 198, 204, 184, 203, 209, 174, 195, 202, 186, 203, 208, 176, 196, 202, 162, 187, 195, 163, 190, 198, 185, 205, 211, 187, 203, 210, 182, 200, 207, 166, 189, 198, 173, 192, 200, 182, 200, 207, 168, 192, 198, + 171, 193, 200, 164, 188, 195, 156, 183, 192, 173, 194, 201, 165, 188, 195, 159, 185, 193, 172, 192, 199, 183, 201, 207, 185, 202, 208, 184, 202, 207, 187, 204, 209, 188, 203, 208, 174, 193, 199, 167, 189, 195, 165, 185, 192, 166, 185, 193, 170, 189, 196, 159, 182, 190, 155, 180, 189, 160, 184, 192, 168, 190, 198, + 172, 193, 200, 173, 193, 201, 178, 197, 204, 190, 206, 213, 198, 212, 215, 183, 200, 206, 182, 200, 207, 184, 201, 207, 190, 206, 213, 196, 210, 216, 194, 210, 216, 190, 207, 214, 187, 204, 211, 187, 205, 212, 191, 208, 213, 195, 211, 216, 200, 214, 219, 203, 217, 221, 202, 217, 220, 206, 219, 223, 207, 222, 224, + 209, 223, 226, 213, 226, 228, 217, 230, 229, 212, 227, 229, 218, 232, 232, 224, 235, 235, 229, 238, 238, 233, 241, 241, 236, 241, 242, 236, 241, 241, 236, 242, 242, 234, 242, 241, 236, 243, 242, 237, 244, 243, 238, 244, 243, 239, 245, 244, 239, 245, 244, 239, 245, 244, 239, 246, 244, 239, 245, 244, 239, 245, 244, + 137, 158, 164, 150, 168, 177, 159, 176, 185, 165, 183, 192, 172, 190, 199, 178, 196, 204, 182, 199, 208, 184, 202, 211, 187, 204, 213, 189, 206, 214, 190, 207, 216, 189, 207, 216, 190, 208, 217, 190, 208, 217, 189, 208, 216, 189, 209, 217, 189, 208, 216, 189, 208, 215, 189, 208, 216, 185, 207, 215, 186, 207, 215, + 184, 205, 213, 183, 204, 212, 183, 204, 212, 183, 204, 212, 182, 202, 212, 181, 201, 212, 181, 201, 212, 179, 200, 211, 180, 200, 211, 177, 198, 209, 178, 198, 209, 175, 196, 207, 174, 196, 207, 171, 195, 205, 171, 193, 205, 166, 191, 203, 163, 189, 201, 162, 188, 200, 160, 186, 199, 159, 185, 198, 157, 183, 197, + 154, 181, 195, 151, 178, 194, 152, 178, 194, 151, 177, 193, 151, 178, 193, 152, 177, 193, 151, 178, 193, 150, 177, 193, 150, 176, 192, 150, 176, 192, 150, 176, 192, 148, 174, 190, 148, 174, 190, 144, 173, 188, 146, 172, 189, 144, 172, 188, 145, 171, 188, 144, 171, 188, 146, 171, 188, 143, 170, 187, 142, 170, 186, + 140, 168, 185, 137, 166, 184, 132, 162, 180, 133, 162, 179, 130, 160, 179, 129, 158, 176, 129, 157, 174, 126, 155, 172, 121, 151, 170, 118, 149, 168, 114, 146, 165, 109, 143, 161, 105, 139, 158, 104, 138, 157, 104, 136, 155, 101, 135, 153, 100, 132, 152, 96, 129, 149, 98, 131, 148, 95, 128, 147, 94, 127, 144, + 92, 126, 142, 91, 125, 141, 92, 125, 141, 87, 121, 138, 89, 123, 140, 88, 122, 141, 89, 125, 143, 91, 127, 145, 97, 132, 148, 102, 138, 156, 118, 153, 170, 133, 164, 182, 143, 171, 187, 150, 177, 191, 147, 175, 189, 137, 167, 182, 111, 142, 154, 85, 115, 126, 73, 97, 107, 72, 87, 96, 65, 78, 87, + 54, 68, 77, 58, 72, 78, 63, 76, 82, 52, 66, 72, 50, 63, 69, 50, 63, 69, 48, 61, 65, 35, 49, 52, 26, 38, 40, 15, 26, 26, 9, 18, 17, 7, 15, 12, 19, 24, 20, 24, 24, 20, 30, 30, 25, 29, 28, 24, 28, 28, 23, 42, 40, 38, 74, 88, 91, 95, 108, 112, 109, 122, 126, + 76, 92, 95, 72, 87, 90, 81, 94, 96, 111, 124, 125, 96, 111, 114, 115, 129, 133, 113, 129, 133, 117, 132, 136, 108, 125, 127, 136, 148, 150, 111, 124, 127, 124, 138, 140, 151, 161, 163, 125, 138, 141, 92, 111, 114, 138, 150, 152, 145, 156, 159, 158, 168, 169, 110, 124, 127, 105, 117, 121, 111, 123, 126, + 115, 128, 136, 116, 132, 143, 123, 141, 152, 166, 177, 184, 95, 121, 136, 88, 108, 123, 79, 100, 113, 76, 91, 106, 47, 63, 79, 20, 38, 49, 9, 21, 26, 33, 42, 44, 51, 55, 53, 68, 66, 62, 70, 67, 63, 59, 55, 51, 52, 48, 47, 49, 47, 49, 31, 32, 36, 16, 18, 22, 11, 13, 15, + 17, 18, 19, 29, 26, 27, 36, 31, 30, 48, 39, 30, 60, 52, 41, 61, 52, 41, 69, 64, 56, 45, 44, 45, 31, 44, 53, 91, 104, 113, 82, 102, 108, 86, 106, 112, 84, 106, 111, 73, 97, 104, 97, 121, 130, 89, 112, 123, 79, 104, 114, 75, 101, 112, 92, 115, 125, 95, 118, 128, 71, 99, 109, + 86, 107, 119, 99, 118, 127, 88, 107, 118, 66, 88, 100, 69, 91, 101, 60, 85, 93, 89, 112, 120, 106, 129, 138, 87, 114, 124, 87, 112, 123, 95, 119, 131, 124, 143, 154, 149, 165, 175, 109, 133, 142, 117, 142, 151, 120, 147, 157, 104, 136, 148, 101, 134, 148, 121, 150, 162, 117, 147, 159, 155, 176, 185, + 149, 172, 183, 163, 182, 192, 166, 185, 195, 171, 192, 200, 173, 194, 202, 168, 191, 200, 170, 194, 201, 189, 207, 212, 196, 210, 215, 192, 207, 213, 183, 201, 206, 182, 199, 205, 182, 201, 205, 180, 200, 206, 185, 203, 209, 184, 202, 208, 188, 206, 212, 194, 210, 213, 186, 203, 209, 176, 196, 202, 174, 195, 202, + 175, 195, 202, 178, 196, 203, 170, 192, 199, 161, 186, 194, 169, 190, 198, 182, 199, 206, 157, 182, 191, 151, 179, 189, 175, 195, 203, 186, 204, 208, 174, 195, 201, 174, 194, 200, 171, 191, 197, 170, 190, 197, 180, 196, 202, 180, 196, 202, 182, 198, 203, 180, 197, 203, 174, 192, 200, 171, 192, 198, 174, 193, 200, + 160, 185, 193, 180, 197, 204, 191, 207, 212, 181, 201, 208, 179, 198, 205, 185, 201, 207, 196, 208, 214, 180, 200, 206, 180, 200, 207, 183, 202, 209, 189, 207, 214, 192, 208, 215, 195, 211, 217, 196, 212, 218, 195, 212, 216, 195, 212, 216, 197, 214, 217, 201, 217, 220, 204, 220, 223, 206, 221, 224, 210, 223, 225, + 214, 227, 229, 210, 225, 227, 217, 229, 232, 222, 234, 235, 222, 234, 233, 226, 236, 236, 230, 239, 239, 233, 241, 241, 232, 241, 241, 235, 242, 242, 235, 242, 242, 235, 242, 241, 237, 242, 243, 237, 243, 242, 238, 244, 243, 239, 245, 244, 239, 245, 244, 239, 245, 244, 238, 244, 244, 240, 245, 244, 240, 244, 243, + 156, 175, 182, 163, 182, 190, 171, 190, 198, 176, 193, 202, 181, 198, 207, 186, 202, 210, 187, 203, 213, 190, 206, 215, 190, 208, 215, 190, 208, 215, 191, 209, 216, 191, 209, 216, 191, 209, 217, 190, 209, 217, 190, 209, 217, 189, 208, 216, 189, 208, 216, 188, 208, 216, 187, 208, 216, 185, 206, 214, 185, 206, 214, + 184, 206, 214, 183, 205, 213, 183, 204, 212, 183, 204, 212, 181, 202, 211, 180, 200, 211, 179, 201, 212, 177, 199, 210, 178, 199, 210, 177, 198, 209, 177, 197, 208, 174, 196, 207, 172, 194, 205, 170, 193, 205, 167, 192, 204, 166, 189, 201, 163, 189, 201, 160, 186, 199, 158, 184, 198, 157, 184, 198, 156, 181, 196, + 154, 181, 195, 152, 178, 194, 151, 177, 193, 151, 177, 193, 150, 177, 193, 149, 176, 192, 147, 174, 190, 146, 174, 190, 148, 174, 191, 148, 174, 191, 147, 173, 190, 148, 174, 190, 146, 172, 189, 145, 172, 187, 145, 172, 188, 143, 170, 187, 142, 169, 186, 139, 167, 184, 140, 168, 185, 137, 166, 184, 137, 165, 183, + 134, 163, 182, 129, 160, 180, 129, 160, 179, 128, 157, 176, 126, 155, 174, 125, 154, 173, 123, 150, 170, 120, 149, 168, 117, 147, 166, 111, 143, 162, 105, 138, 158, 104, 136, 156, 98, 132, 149, 95, 129, 146, 95, 128, 145, 92, 126, 142, 93, 127, 143, 91, 125, 141, 90, 125, 140, 86, 119, 135, 87, 120, 135, + 88, 118, 134, 84, 117, 132, 82, 115, 130, 80, 115, 130, 81, 115, 131, 82, 115, 132, 81, 115, 132, 87, 122, 138, 94, 129, 145, 106, 141, 157, 118, 152, 168, 136, 168, 183, 144, 173, 188, 148, 176, 191, 142, 171, 186, 134, 165, 179, 117, 147, 158, 86, 116, 126, 75, 97, 108, 73, 89, 99, 67, 80, 91, + 51, 67, 78, 48, 65, 72, 50, 66, 72, 54, 70, 75, 52, 67, 73, 47, 61, 67, 46, 60, 66, 42, 57, 61, 38, 53, 57, 27, 42, 45, 24, 39, 39, 13, 26, 26, 8, 20, 21, 11, 20, 19, 7, 15, 14, 12, 21, 18, 15, 25, 23, 26, 39, 39, 91, 104, 108, 96, 109, 114, 107, 120, 123, + 119, 131, 133, 122, 133, 136, 98, 112, 115, 103, 117, 119, 113, 128, 130, 103, 118, 123, 108, 124, 130, 124, 137, 142, 128, 143, 146, 113, 130, 133, 125, 139, 142, 143, 153, 156, 107, 121, 124, 140, 152, 153, 149, 160, 161, 136, 149, 150, 143, 154, 156, 130, 143, 145, 101, 115, 118, 72, 86, 91, 102, 113, 119, + 103, 117, 124, 92, 111, 127, 113, 132, 148, 158, 170, 181, 83, 111, 128, 140, 154, 164, 123, 137, 149, 96, 110, 123, 50, 66, 82, 34, 50, 65, 15, 31, 40, 10, 23, 29, 34, 39, 41, 47, 46, 44, 55, 49, 47, 67, 60, 59, 59, 51, 50, 61, 54, 54, 50, 45, 46, 46, 41, 42, 36, 31, 32, + 32, 29, 26, 38, 35, 29, 48, 42, 33, 60, 51, 41, 69, 61, 50, 74, 66, 57, 52, 52, 51, 42, 52, 57, 85, 98, 105, 91, 108, 116, 97, 115, 121, 105, 122, 131, 65, 89, 100, 70, 94, 105, 87, 110, 121, 92, 115, 125, 82, 105, 116, 80, 101, 111, 60, 84, 94, 74, 96, 106, 87, 106, 115, + 56, 78, 87, 59, 79, 89, 77, 95, 105, 88, 106, 117, 72, 93, 101, 103, 121, 128, 104, 124, 132, 105, 127, 135, 110, 130, 138, 115, 136, 146, 130, 147, 157, 109, 131, 142, 110, 133, 144, 84, 113, 125, 85, 115, 127, 94, 125, 136, 123, 148, 158, 133, 159, 168, 132, 156, 166, 122, 151, 163, 123, 151, 163, + 126, 154, 167, 115, 148, 163, 149, 174, 184, 152, 175, 187, 140, 170, 183, 161, 185, 195, 166, 189, 197, 169, 191, 199, 163, 188, 196, 163, 188, 195, 176, 197, 203, 179, 198, 204, 183, 200, 206, 172, 194, 200, 163, 187, 195, 172, 195, 201, 180, 199, 204, 186, 202, 208, 189, 206, 211, 175, 195, 202, 172, 193, 200, + 177, 197, 204, 172, 194, 200, 166, 189, 198, 170, 191, 198, 169, 192, 199, 162, 187, 195, 168, 190, 199, 175, 194, 201, 168, 191, 198, 166, 189, 195, 185, 202, 206, 180, 198, 203, 170, 190, 197, 170, 189, 197, 160, 182, 188, 155, 181, 188, 153, 179, 187, 157, 182, 192, 161, 185, 192, 170, 189, 195, 164, 186, 194, + 173, 193, 200, 179, 198, 205, 175, 196, 204, 182, 202, 208, 184, 204, 210, 198, 213, 218, 191, 208, 214, 191, 208, 214, 183, 203, 209, 191, 207, 214, 189, 207, 213, 188, 206, 213, 183, 202, 210, 186, 206, 212, 201, 217, 221, 201, 216, 219, 205, 219, 222, 203, 218, 221, 203, 219, 222, 208, 222, 225, 212, 224, 226, + 216, 228, 231, 218, 230, 232, 219, 231, 233, 222, 233, 235, 228, 237, 240, 229, 238, 238, 228, 238, 238, 233, 241, 241, 233, 241, 241, 234, 242, 241, 235, 242, 241, 237, 243, 242, 236, 243, 242, 237, 243, 242, 238, 244, 243, 237, 243, 242, 238, 244, 243, 238, 244, 243, 238, 245, 243, 239, 244, 243, 238, 243, 242, + 173, 191, 198, 177, 194, 201, 180, 198, 205, 185, 202, 210, 190, 205, 212, 190, 206, 214, 192, 208, 215, 193, 209, 216, 193, 210, 217, 192, 210, 217, 192, 210, 217, 191, 210, 217, 191, 210, 218, 190, 209, 217, 190, 209, 216, 190, 209, 217, 189, 208, 216, 190, 209, 217, 186, 207, 215, 185, 206, 214, 185, 206, 214, + 184, 205, 213, 184, 205, 213, 182, 204, 211, 180, 203, 211, 181, 201, 212, 179, 200, 211, 178, 200, 211, 177, 199, 210, 177, 199, 210, 174, 196, 207, 176, 197, 208, 173, 195, 206, 173, 194, 207, 168, 192, 205, 166, 190, 203, 164, 189, 201, 160, 186, 199, 158, 184, 198, 157, 183, 197, 155, 181, 195, 153, 179, 194, + 152, 177, 194, 150, 176, 192, 148, 176, 192, 149, 176, 191, 146, 174, 190, 146, 172, 188, 146, 172, 188, 145, 172, 188, 145, 171, 188, 144, 171, 188, 146, 172, 188, 146, 171, 188, 145, 171, 187, 144, 170, 187, 142, 169, 186, 141, 168, 185, 140, 168, 185, 138, 166, 184, 136, 165, 184, 135, 164, 182, 133, 162, 181, + 128, 158, 177, 128, 157, 176, 124, 154, 173, 121, 152, 170, 120, 151, 170, 121, 151, 170, 116, 146, 165, 115, 145, 164, 109, 141, 160, 106, 138, 157, 101, 133, 153, 94, 128, 143, 92, 125, 141, 88, 121, 138, 86, 120, 137, 84, 119, 134, 83, 118, 132, 80, 115, 130, 80, 114, 128, 78, 111, 125, 78, 110, 124, + 79, 110, 124, 78, 110, 124, 76, 109, 123, 75, 108, 123, 76, 109, 123, 72, 107, 123, 74, 109, 125, 81, 117, 133, 89, 124, 140, 97, 136, 151, 112, 149, 164, 132, 165, 180, 144, 173, 188, 150, 177, 191, 146, 174, 188, 137, 167, 182, 116, 148, 160, 97, 125, 136, 77, 99, 110, 69, 88, 100, 68, 84, 96, + 58, 75, 86, 60, 76, 85, 47, 65, 71, 50, 67, 73, 54, 69, 75, 51, 66, 72, 55, 69, 76, 44, 61, 67, 44, 60, 66, 47, 63, 67, 46, 59, 64, 42, 57, 60, 32, 48, 52, 23, 42, 45, 25, 44, 49, 23, 42, 45, 46, 63, 67, 66, 82, 87, 110, 123, 127, 97, 111, 114, 75, 91, 94, + 121, 132, 135, 99, 113, 116, 101, 116, 118, 122, 134, 137, 108, 122, 123, 136, 148, 151, 124, 139, 142, 133, 147, 151, 140, 151, 155, 119, 134, 138, 133, 146, 150, 108, 123, 128, 108, 121, 128, 123, 137, 139, 140, 151, 153, 145, 156, 158, 132, 145, 146, 121, 135, 137, 101, 115, 119, 89, 102, 107, 88, 100, 106, + 106, 119, 126, 80, 100, 116, 119, 139, 154, 148, 163, 175, 110, 133, 149, 144, 159, 169, 168, 179, 185, 155, 165, 173, 111, 123, 136, 44, 61, 78, 24, 42, 59, 17, 31, 44, 25, 32, 42, 33, 38, 45, 45, 40, 40, 53, 46, 45, 56, 48, 46, 51, 43, 41, 51, 45, 45, 44, 38, 36, 45, 39, 35, + 45, 37, 32, 58, 50, 43, 55, 46, 37, 69, 60, 51, 62, 52, 41, 36, 41, 36, 46, 52, 57, 90, 106, 113, 86, 102, 111, 65, 85, 94, 85, 103, 112, 110, 127, 136, 101, 120, 131, 108, 128, 138, 73, 97, 109, 85, 107, 118, 68, 91, 103, 83, 102, 112, 75, 94, 104, 59, 80, 89, 45, 69, 78, + 67, 85, 93, 70, 88, 98, 66, 84, 95, 86, 104, 114, 76, 96, 106, 80, 100, 108, 96, 117, 124, 96, 117, 125, 67, 93, 102, 87, 110, 121, 88, 112, 123, 97, 120, 132, 75, 103, 118, 107, 131, 143, 91, 119, 129, 112, 138, 147, 119, 145, 155, 105, 135, 148, 121, 148, 159, 132, 157, 167, 142, 164, 175, + 142, 165, 175, 134, 159, 171, 116, 149, 164, 145, 170, 181, 156, 179, 189, 160, 183, 193, 168, 188, 196, 168, 189, 197, 177, 197, 204, 179, 199, 205, 182, 200, 206, 185, 202, 207, 174, 196, 202, 177, 197, 204, 182, 201, 207, 181, 201, 206, 173, 194, 201, 173, 194, 201, 173, 194, 201, 179, 198, 204, 187, 203, 209, + 174, 194, 201, 179, 199, 205, 174, 194, 201, 173, 194, 200, 156, 183, 191, 172, 194, 201, 193, 208, 212, 186, 203, 208, 179, 198, 203, 172, 193, 199, 172, 194, 199, 174, 194, 200, 194, 208, 212, 187, 202, 208, 197, 209, 214, 192, 206, 210, 163, 188, 196, 163, 188, 196, 172, 193, 201, 165, 189, 197, 173, 193, 200, + 170, 192, 200, 168, 191, 200, 185, 204, 211, 187, 205, 212, 181, 203, 210, 174, 198, 205, 193, 210, 214, 199, 214, 219, 197, 212, 218, 189, 208, 213, 190, 208, 214, 189, 206, 213, 190, 208, 214, 185, 205, 212, 187, 207, 212, 198, 214, 218, 202, 217, 222, 209, 222, 226, 211, 224, 226, 210, 224, 227, 211, 223, 227, + 215, 227, 229, 217, 229, 231, 221, 232, 234, 220, 233, 235, 229, 237, 238, 232, 240, 240, 233, 241, 240, 233, 241, 241, 235, 242, 242, 234, 242, 241, 234, 242, 241, 235, 243, 242, 236, 243, 242, 237, 243, 242, 238, 244, 243, 238, 244, 243, 238, 244, 243, 239, 245, 244, 239, 245, 244, 239, 245, 244, 238, 244, 243, + 183, 200, 206, 186, 202, 209, 189, 205, 212, 191, 207, 214, 192, 208, 215, 194, 210, 217, 194, 210, 217, 195, 211, 218, 193, 211, 218, 193, 211, 218, 194, 212, 219, 193, 211, 218, 191, 210, 217, 191, 210, 217, 191, 210, 217, 190, 209, 217, 190, 209, 217, 189, 208, 216, 187, 207, 215, 185, 206, 214, 184, 205, 213, + 185, 206, 214, 183, 204, 213, 181, 203, 212, 182, 202, 213, 179, 201, 212, 179, 201, 212, 176, 199, 210, 175, 198, 209, 176, 198, 209, 175, 197, 208, 173, 195, 206, 170, 192, 204, 168, 192, 204, 166, 190, 203, 163, 188, 201, 160, 186, 200, 158, 184, 198, 157, 183, 198, 155, 181, 196, 153, 179, 195, 149, 176, 192, + 151, 176, 192, 148, 175, 191, 145, 174, 189, 143, 172, 188, 145, 172, 189, 143, 171, 188, 144, 170, 187, 141, 169, 186, 140, 168, 186, 141, 168, 185, 143, 169, 186, 142, 169, 186, 142, 169, 186, 144, 170, 187, 141, 168, 185, 141, 167, 184, 138, 165, 183, 135, 163, 182, 134, 162, 180, 130, 159, 179, 129, 158, 177, + 128, 157, 176, 123, 153, 172, 121, 151, 170, 118, 149, 168, 116, 147, 165, 114, 145, 164, 111, 143, 162, 108, 140, 158, 104, 136, 155, 98, 131, 150, 93, 127, 145, 90, 124, 140, 84, 118, 134, 83, 118, 132, 81, 115, 129, 76, 112, 126, 77, 110, 125, 76, 110, 123, 76, 108, 121, 74, 106, 119, 72, 105, 118, + 73, 105, 118, 72, 104, 117, 68, 102, 115, 69, 103, 115, 67, 101, 114, 67, 102, 116, 70, 106, 120, 81, 116, 132, 86, 122, 138, 99, 136, 151, 114, 150, 165, 133, 166, 180, 144, 174, 187, 151, 179, 193, 148, 176, 190, 137, 167, 182, 121, 152, 165, 91, 121, 133, 86, 108, 119, 75, 94, 104, 67, 84, 95, + 57, 73, 85, 53, 70, 79, 48, 65, 73, 54, 69, 76, 51, 66, 73, 50, 65, 72, 50, 65, 72, 52, 67, 74, 55, 70, 76, 58, 72, 79, 62, 75, 80, 58, 72, 77, 60, 76, 81, 52, 70, 75, 61, 81, 88, 80, 99, 106, 81, 100, 107, 102, 116, 123, 72, 88, 93, 95, 110, 114, 92, 107, 110, + 93, 108, 111, 109, 122, 126, 76, 93, 97, 79, 97, 99, 130, 143, 145, 121, 135, 138, 152, 162, 164, 143, 155, 157, 136, 149, 153, 156, 166, 169, 151, 162, 164, 93, 110, 116, 122, 136, 141, 112, 126, 130, 106, 121, 126, 139, 150, 154, 139, 151, 153, 118, 130, 134, 110, 122, 126, 115, 125, 128, 118, 126, 131, + 92, 107, 113, 89, 109, 126, 101, 126, 143, 155, 170, 180, 196, 203, 209, 151, 166, 175, 159, 171, 179, 138, 150, 161, 138, 148, 159, 94, 108, 121, 51, 65, 81, 18, 33, 49, 5, 12, 23, 30, 35, 44, 58, 62, 69, 44, 43, 43, 54, 47, 46, 52, 44, 41, 48, 42, 39, 43, 37, 32, 59, 51, 47, + 68, 58, 49, 69, 63, 57, 70, 61, 54, 57, 51, 43, 32, 40, 38, 68, 82, 88, 97, 114, 121, 83, 101, 109, 109, 123, 132, 77, 98, 107, 100, 116, 125, 80, 100, 109, 91, 110, 121, 82, 103, 115, 70, 93, 106, 61, 84, 95, 55, 79, 89, 66, 87, 98, 71, 91, 100, 69, 89, 97, 71, 90, 98, + 48, 69, 79, 73, 91, 101, 78, 96, 105, 82, 99, 110, 74, 93, 105, 53, 75, 87, 72, 96, 107, 42, 71, 82, 66, 93, 102, 74, 103, 113, 110, 132, 142, 119, 138, 149, 119, 139, 152, 121, 142, 154, 125, 147, 157, 96, 124, 135, 72, 104, 116, 99, 126, 138, 104, 134, 145, 121, 146, 156, 131, 156, 167, + 120, 149, 162, 146, 169, 179, 107, 142, 157, 145, 169, 179, 143, 170, 181, 159, 181, 190, 161, 183, 191, 154, 179, 187, 162, 186, 195, 183, 201, 207, 185, 203, 208, 188, 205, 210, 189, 205, 211, 196, 210, 215, 176, 196, 204, 187, 204, 210, 186, 203, 209, 180, 199, 205, 183, 200, 207, 181, 198, 206, 190, 205, 211, + 181, 199, 206, 181, 199, 204, 173, 194, 200, 178, 197, 203, 193, 208, 211, 175, 196, 201, 163, 188, 194, 182, 201, 205, 194, 208, 212, 187, 204, 208, 186, 202, 206, 181, 199, 203, 160, 185, 192, 188, 204, 209, 170, 192, 199, 180, 199, 204, 211, 220, 223, 198, 212, 215, 192, 208, 212, 193, 208, 212, 178, 197, 205, + 170, 193, 200, 183, 200, 207, 175, 197, 205, 182, 202, 209, 193, 211, 216, 201, 215, 219, 194, 210, 215, 190, 208, 214, 191, 208, 215, 194, 211, 217, 199, 213, 219, 198, 213, 218, 196, 212, 218, 187, 207, 212, 192, 210, 215, 195, 213, 217, 199, 216, 219, 202, 218, 220, 211, 223, 227, 214, 226, 228, 214, 227, 229, + 217, 229, 231, 216, 229, 231, 220, 232, 234, 221, 233, 235, 226, 236, 238, 232, 240, 240, 234, 242, 242, 235, 242, 243, 236, 241, 243, 238, 244, 243, 237, 244, 243, 236, 243, 242, 236, 242, 242, 237, 243, 242, 236, 242, 241, 237, 243, 242, 237, 243, 242, 237, 244, 243, 239, 245, 244, 239, 245, 244, 239, 244, 243, + 194, 208, 216, 193, 208, 215, 195, 210, 217, 195, 211, 217, 195, 211, 219, 196, 212, 219, 195, 212, 219, 195, 212, 219, 193, 211, 218, 194, 212, 219, 194, 212, 219, 192, 211, 218, 192, 210, 218, 191, 210, 217, 191, 210, 219, 190, 209, 217, 189, 208, 216, 188, 207, 215, 187, 207, 215, 185, 206, 214, 185, 206, 214, + 183, 204, 212, 183, 204, 211, 181, 202, 213, 182, 201, 212, 178, 201, 212, 177, 199, 210, 177, 199, 210, 175, 197, 208, 174, 196, 207, 173, 195, 206, 171, 193, 206, 170, 193, 205, 168, 192, 204, 163, 187, 201, 161, 186, 201, 160, 185, 199, 157, 183, 198, 154, 181, 196, 153, 178, 194, 148, 175, 192, 146, 174, 191, + 145, 173, 189, 144, 172, 188, 142, 172, 187, 142, 170, 187, 142, 170, 187, 139, 169, 186, 138, 167, 183, 140, 168, 184, 138, 165, 184, 140, 168, 185, 139, 167, 184, 139, 167, 184, 141, 167, 184, 139, 166, 183, 141, 166, 183, 138, 165, 182, 137, 164, 181, 133, 161, 178, 132, 160, 177, 130, 159, 177, 125, 155, 174, + 123, 155, 173, 123, 153, 171, 120, 150, 167, 117, 147, 164, 114, 145, 162, 112, 143, 161, 105, 137, 156, 103, 136, 153, 99, 132, 149, 94, 127, 146, 92, 124, 143, 86, 120, 136, 80, 115, 129, 75, 110, 124, 74, 109, 123, 75, 108, 123, 71, 104, 118, 67, 101, 114, 70, 102, 115, 67, 99, 112, 68, 100, 113, + 67, 99, 112, 65, 98, 111, 63, 97, 110, 63, 97, 110, 62, 97, 110, 65, 99, 112, 71, 107, 121, 79, 115, 130, 88, 124, 140, 98, 135, 150, 111, 147, 162, 127, 160, 175, 141, 172, 186, 149, 176, 190, 150, 177, 191, 142, 170, 184, 128, 157, 169, 99, 129, 140, 77, 102, 112, 73, 93, 103, 69, 85, 97, + 61, 77, 89, 57, 73, 83, 58, 74, 83, 47, 63, 72, 47, 62, 71, 43, 60, 67, 50, 65, 72, 52, 66, 74, 57, 71, 79, 62, 76, 83, 58, 73, 80, 57, 73, 79, 66, 82, 87, 77, 93, 97, 86, 105, 111, 98, 116, 123, 93, 110, 117, 99, 115, 120, 61, 80, 87, 101, 114, 119, 124, 135, 137, + 112, 126, 130, 107, 122, 126, 101, 116, 120, 104, 118, 122, 127, 138, 142, 135, 146, 149, 148, 159, 162, 145, 156, 159, 133, 146, 149, 129, 141, 144, 157, 165, 167, 145, 155, 158, 131, 143, 146, 130, 143, 146, 129, 142, 146, 120, 134, 138, 108, 122, 127, 74, 91, 97, 64, 80, 86, 93, 104, 108, 127, 135, 140, + 99, 113, 121, 131, 147, 159, 128, 147, 161, 140, 159, 171, 165, 179, 188, 170, 181, 189, 152, 164, 175, 139, 151, 162, 129, 142, 155, 115, 129, 143, 68, 82, 99, 43, 56, 71, 11, 23, 36, 4, 10, 22, 7, 12, 21, 36, 39, 44, 43, 37, 39, 47, 41, 38, 51, 47, 42, 55, 48, 45, 77, 71, 68, + 61, 54, 46, 49, 42, 36, 38, 33, 31, 49, 62, 66, 78, 94, 99, 95, 112, 119, 108, 124, 130, 124, 138, 145, 97, 115, 125, 107, 122, 133, 85, 103, 114, 63, 86, 98, 83, 103, 114, 62, 85, 97, 66, 89, 99, 62, 85, 95, 71, 91, 101, 67, 87, 96, 66, 86, 94, 61, 81, 89, 53, 73, 82, + 68, 88, 96, 75, 93, 102, 56, 76, 88, 77, 96, 107, 93, 111, 122, 111, 128, 138, 105, 124, 135, 97, 120, 130, 103, 125, 134, 108, 129, 138, 118, 138, 147, 114, 134, 144, 121, 141, 152, 85, 113, 127, 94, 121, 135, 100, 125, 139, 146, 163, 170, 109, 133, 140, 111, 136, 143, 112, 138, 146, 105, 132, 144, + 119, 143, 156, 123, 149, 160, 126, 149, 159, 124, 154, 166, 136, 164, 175, 148, 172, 182, 170, 188, 195, 181, 197, 203, 163, 186, 193, 176, 196, 202, 189, 205, 211, 185, 203, 208, 188, 205, 210, 182, 201, 207, 193, 208, 213, 190, 206, 211, 180, 199, 204, 185, 202, 208, 191, 205, 211, 190, 205, 211, 172, 192, 198, + 191, 206, 211, 187, 202, 208, 169, 191, 196, 178, 196, 201, 181, 199, 204, 190, 206, 210, 181, 199, 205, 172, 193, 200, 176, 196, 202, 182, 200, 204, 193, 208, 211, 192, 206, 210, 198, 211, 214, 183, 201, 206, 185, 203, 209, 191, 206, 211, 179, 199, 205, 199, 213, 216, 196, 212, 215, 196, 211, 215, 198, 210, 215, + 195, 209, 215, 183, 201, 207, 183, 203, 210, 185, 204, 210, 188, 206, 212, 190, 207, 214, 193, 210, 216, 203, 216, 220, 196, 213, 218, 192, 209, 215, 190, 209, 214, 198, 213, 219, 198, 214, 218, 195, 213, 217, 190, 209, 215, 189, 209, 214, 198, 216, 219, 204, 220, 223, 205, 221, 224, 211, 224, 228, 215, 227, 230, + 218, 229, 231, 218, 229, 231, 225, 234, 237, 227, 236, 239, 223, 234, 237, 231, 240, 240, 235, 242, 242, 237, 243, 242, 239, 245, 244, 239, 245, 244, 238, 244, 243, 238, 244, 243, 238, 244, 242, 238, 244, 243, 237, 243, 242, 235, 243, 242, 237, 243, 242, 238, 244, 243, 237, 243, 242, 238, 244, 243, 239, 245, 244, + 197, 211, 219, 195, 211, 218, 197, 213, 220, 195, 212, 219, 196, 213, 220, 196, 213, 220, 196, 212, 219, 194, 213, 220, 194, 212, 219, 194, 212, 219, 193, 211, 218, 193, 211, 218, 192, 211, 218, 191, 210, 217, 191, 210, 218, 190, 209, 217, 189, 208, 217, 189, 208, 216, 188, 207, 215, 186, 206, 214, 185, 205, 213, + 184, 204, 212, 181, 204, 211, 183, 202, 214, 181, 201, 212, 178, 200, 211, 177, 199, 210, 176, 198, 209, 175, 197, 208, 174, 196, 207, 172, 194, 205, 170, 193, 205, 168, 191, 203, 165, 189, 202, 162, 187, 201, 160, 186, 200, 156, 182, 197, 152, 179, 195, 148, 177, 192, 147, 175, 191, 145, 174, 191, 144, 172, 189, + 141, 170, 187, 140, 169, 186, 139, 169, 186, 135, 166, 183, 137, 167, 184, 138, 167, 184, 136, 164, 184, 135, 164, 184, 137, 164, 183, 136, 165, 182, 134, 164, 182, 137, 165, 182, 136, 163, 180, 138, 165, 182, 137, 163, 180, 134, 162, 179, 136, 163, 180, 132, 159, 177, 133, 160, 176, 128, 157, 173, 127, 154, 173, + 123, 151, 170, 119, 149, 168, 117, 147, 165, 114, 144, 163, 109, 141, 159, 105, 137, 155, 101, 134, 150, 98, 131, 147, 94, 128, 144, 91, 124, 141, 89, 122, 138, 79, 113, 129, 79, 113, 127, 74, 107, 122, 73, 105, 120, 69, 102, 116, 67, 100, 113, 68, 100, 113, 65, 97, 110, 65, 95, 109, 64, 95, 108, + 63, 94, 108, 62, 93, 106, 59, 93, 106, 61, 94, 107, 60, 94, 107, 67, 101, 114, 72, 107, 120, 80, 115, 129, 86, 121, 135, 92, 127, 143, 107, 140, 156, 121, 154, 168, 129, 162, 176, 138, 169, 182, 139, 169, 183, 136, 167, 180, 124, 153, 165, 101, 130, 141, 81, 106, 116, 76, 96, 104, 70, 86, 97, + 64, 79, 90, 52, 70, 81, 46, 63, 74, 50, 66, 75, 54, 69, 78, 46, 61, 69, 39, 55, 63, 44, 60, 67, 55, 70, 77, 61, 75, 83, 58, 75, 81, 63, 81, 86, 69, 89, 94, 64, 86, 92, 100, 119, 126, 91, 110, 118, 96, 114, 122, 89, 107, 113, 121, 133, 139, 134, 146, 150, 123, 136, 139, + 93, 110, 113, 110, 126, 129, 115, 129, 133, 120, 134, 137, 135, 145, 148, 150, 159, 162, 163, 171, 172, 158, 166, 169, 134, 147, 148, 166, 173, 174, 118, 132, 131, 146, 157, 158, 105, 121, 124, 160, 168, 171, 122, 135, 140, 129, 142, 146, 87, 105, 110, 89, 103, 109, 92, 104, 111, 121, 131, 135, 112, 121, 125, + 117, 132, 138, 145, 160, 167, 136, 155, 166, 150, 165, 176, 158, 172, 182, 154, 168, 178, 128, 145, 158, 118, 135, 149, 157, 168, 177, 127, 142, 155, 134, 147, 156, 112, 127, 138, 60, 74, 88, 39, 51, 64, 18, 27, 39, 11, 18, 29, 11, 16, 25, 25, 29, 30, 23, 26, 28, 23, 26, 28, 34, 38, 41, + 56, 68, 74, 91, 109, 117, 107, 127, 135, 109, 129, 136, 121, 139, 144, 86, 105, 112, 70, 91, 99, 78, 97, 107, 74, 94, 106, 84, 102, 113, 87, 105, 117, 67, 88, 99, 65, 87, 97, 78, 98, 107, 83, 102, 109, 81, 101, 110, 70, 91, 100, 99, 116, 123, 72, 91, 99, 71, 90, 97, 58, 78, 86, + 92, 109, 115, 82, 99, 107, 72, 92, 102, 74, 94, 104, 118, 135, 145, 118, 137, 148, 107, 127, 138, 97, 119, 130, 112, 133, 142, 114, 134, 143, 127, 145, 152, 140, 156, 164, 118, 138, 150, 134, 152, 164, 129, 148, 159, 127, 147, 158, 119, 141, 150, 110, 135, 142, 112, 136, 143, 116, 140, 148, 112, 136, 147, + 98, 125, 138, 105, 131, 144, 105, 133, 145, 125, 154, 166, 141, 165, 175, 155, 177, 185, 166, 185, 192, 172, 189, 195, 175, 191, 198, 177, 196, 202, 177, 196, 203, 178, 197, 203, 184, 202, 208, 190, 205, 210, 181, 199, 206, 180, 199, 205, 198, 211, 215, 193, 207, 211, 187, 202, 207, 186, 202, 207, 194, 208, 213, + 182, 200, 205, 185, 201, 206, 186, 201, 205, 164, 186, 191, 170, 190, 196, 169, 189, 196, 179, 197, 202, 184, 201, 206, 172, 193, 200, 184, 202, 208, 195, 209, 212, 199, 212, 215, 189, 205, 209, 185, 202, 208, 188, 205, 210, 187, 203, 209, 191, 207, 212, 188, 204, 209, 193, 208, 214, 196, 211, 216, 204, 216, 220, + 204, 216, 221, 198, 212, 216, 187, 205, 213, 180, 200, 206, 191, 208, 214, 184, 203, 211, 190, 206, 213, 195, 212, 218, 202, 216, 221, 199, 214, 219, 198, 213, 219, 196, 212, 217, 194, 212, 216, 196, 213, 216, 195, 213, 216, 196, 214, 217, 199, 216, 220, 205, 220, 225, 206, 221, 224, 209, 222, 226, 213, 225, 229, + 214, 227, 229, 220, 232, 234, 220, 232, 233, 225, 235, 235, 226, 235, 238, 226, 236, 237, 235, 242, 242, 235, 242, 241, 237, 244, 243, 240, 246, 245, 239, 245, 244, 238, 244, 243, 238, 244, 243, 238, 244, 243, 238, 244, 243, 238, 244, 243, 236, 242, 241, 237, 243, 242, 237, 243, 242, 238, 244, 243, 238, 244, 243, + 198, 214, 221, 198, 214, 221, 197, 213, 220, 196, 213, 220, 195, 213, 220, 195, 212, 219, 194, 212, 219, 195, 213, 220, 193, 212, 219, 194, 212, 219, 193, 211, 218, 193, 211, 218, 192, 210, 217, 192, 210, 217, 191, 209, 216, 189, 208, 216, 189, 208, 215, 189, 207, 215, 186, 207, 215, 188, 207, 215, 185, 206, 214, + 184, 205, 213, 181, 203, 211, 180, 202, 212, 180, 201, 212, 180, 201, 212, 179, 199, 210, 177, 198, 209, 174, 196, 207, 173, 195, 206, 171, 193, 204, 169, 191, 202, 166, 190, 202, 163, 188, 201, 160, 186, 200, 157, 184, 198, 153, 180, 196, 150, 178, 193, 148, 177, 192, 145, 173, 190, 142, 172, 189, 141, 170, 187, + 139, 169, 186, 138, 167, 185, 137, 167, 184, 135, 165, 183, 134, 164, 182, 133, 163, 181, 135, 164, 183, 134, 163, 182, 133, 162, 182, 134, 163, 182, 132, 162, 178, 135, 162, 179, 132, 160, 178, 133, 161, 178, 135, 163, 180, 133, 161, 178, 133, 161, 178, 130, 158, 176, 128, 156, 173, 124, 153, 170, 119, 149, 168, + 117, 148, 167, 114, 146, 164, 112, 145, 161, 110, 141, 157, 105, 137, 154, 102, 135, 150, 100, 133, 149, 94, 127, 144, 92, 126, 142, 89, 120, 137, 84, 115, 132, 80, 112, 127, 80, 111, 126, 73, 106, 121, 69, 100, 115, 67, 98, 111, 65, 94, 107, 62, 92, 104, 64, 91, 103, 62, 90, 104, 61, 90, 102, + 59, 89, 100, 57, 89, 100, 57, 90, 103, 58, 92, 104, 63, 96, 109, 71, 103, 116, 75, 109, 122, 80, 114, 128, 84, 119, 133, 93, 128, 142, 104, 139, 153, 115, 148, 163, 126, 159, 172, 129, 162, 176, 126, 161, 175, 131, 163, 177, 121, 152, 164, 98, 127, 138, 82, 107, 115, 73, 94, 103, 66, 83, 95, + 67, 83, 94, 61, 77, 86, 49, 66, 74, 46, 63, 72, 44, 60, 68, 53, 67, 74, 51, 64, 71, 45, 59, 67, 40, 57, 63, 54, 69, 76, 62, 78, 85, 70, 87, 92, 59, 83, 88, 88, 107, 114, 74, 97, 105, 87, 108, 116, 116, 133, 139, 111, 128, 134, 107, 124, 130, 106, 122, 128, 103, 119, 124, + 105, 121, 124, 127, 140, 143, 116, 131, 133, 130, 142, 146, 130, 143, 145, 143, 153, 156, 122, 135, 138, 154, 164, 163, 127, 140, 140, 152, 160, 160, 113, 127, 126, 147, 157, 157, 99, 117, 119, 151, 161, 163, 147, 157, 160, 108, 124, 128, 106, 120, 125, 82, 97, 103, 116, 127, 133, 125, 136, 140, 148, 157, 160, + 119, 132, 138, 106, 123, 130, 124, 143, 151, 147, 162, 169, 158, 171, 178, 136, 152, 161, 123, 142, 153, 126, 142, 155, 128, 144, 156, 134, 149, 160, 160, 173, 181, 166, 177, 183, 126, 145, 156, 135, 153, 163, 109, 131, 143, 96, 113, 125, 81, 95, 105, 69, 85, 93, 84, 99, 107, 111, 125, 132, 101, 118, 131, + 80, 101, 112, 95, 114, 125, 104, 123, 131, 115, 133, 141, 85, 107, 115, 102, 120, 127, 106, 122, 129, 82, 101, 110, 82, 101, 112, 67, 87, 100, 93, 110, 120, 77, 97, 107, 42, 68, 78, 46, 70, 80, 74, 94, 102, 72, 91, 99, 68, 90, 98, 61, 83, 91, 46, 70, 79, 69, 88, 96, 81, 99, 106, + 49, 72, 80, 61, 81, 90, 82, 100, 108, 79, 99, 108, 95, 116, 124, 118, 137, 146, 78, 103, 116, 104, 125, 136, 113, 132, 141, 109, 129, 137, 111, 132, 140, 115, 136, 144, 87, 112, 122, 97, 125, 136, 123, 146, 156, 121, 143, 153, 94, 122, 131, 98, 125, 133, 112, 139, 146, 114, 138, 147, 126, 148, 155, + 132, 153, 161, 102, 130, 140, 128, 152, 162, 125, 152, 163, 147, 169, 179, 144, 169, 179, 148, 172, 180, 151, 175, 184, 162, 182, 190, 178, 195, 201, 181, 198, 204, 187, 202, 208, 178, 196, 203, 175, 195, 201, 194, 207, 213, 185, 202, 207, 184, 201, 207, 178, 197, 203, 186, 202, 206, 178, 197, 201, 181, 197, 203, + 178, 195, 201, 188, 202, 207, 196, 209, 212, 193, 206, 209, 180, 197, 203, 163, 186, 192, 159, 183, 190, 168, 189, 196, 175, 196, 203, 170, 192, 200, 178, 198, 203, 191, 207, 211, 202, 214, 217, 199, 212, 215, 188, 204, 210, 192, 208, 213, 194, 209, 214, 197, 212, 215, 188, 205, 209, 184, 202, 207, 191, 208, 213, + 196, 211, 215, 202, 215, 219, 200, 213, 219, 202, 215, 220, 195, 210, 216, 190, 206, 214, 188, 207, 215, 191, 209, 216, 189, 208, 214, 199, 214, 220, 202, 217, 219, 199, 216, 218, 202, 217, 220, 200, 216, 219, 207, 221, 224, 203, 218, 222, 196, 215, 219, 208, 222, 225, 210, 223, 227, 210, 222, 226, 213, 226, 229, + 218, 230, 232, 218, 230, 232, 221, 233, 234, 223, 233, 235, 225, 235, 236, 230, 238, 239, 230, 238, 238, 237, 243, 243, 235, 243, 242, 238, 244, 243, 240, 245, 244, 239, 245, 244, 238, 244, 243, 237, 243, 242, 239, 244, 243, 238, 244, 243, 237, 243, 242, 238, 244, 243, 239, 244, 243, 237, 243, 242, 238, 244, 243, + 199, 215, 221, 199, 215, 220, 198, 214, 221, 197, 214, 221, 196, 213, 220, 195, 213, 220, 194, 212, 219, 194, 212, 219, 193, 212, 219, 193, 212, 218, 193, 211, 218, 192, 210, 217, 192, 210, 217, 192, 210, 217, 191, 209, 217, 189, 208, 215, 189, 208, 216, 188, 207, 215, 187, 207, 215, 186, 206, 214, 185, 205, 213, + 182, 204, 212, 182, 203, 211, 180, 202, 211, 181, 201, 212, 180, 200, 211, 179, 199, 210, 176, 198, 208, 174, 196, 207, 172, 194, 205, 170, 192, 203, 168, 191, 202, 164, 188, 200, 162, 187, 200, 157, 183, 197, 156, 183, 197, 153, 179, 195, 149, 176, 192, 146, 175, 190, 144, 172, 189, 140, 169, 186, 141, 169, 187, + 139, 167, 186, 137, 165, 185, 134, 165, 182, 136, 165, 184, 134, 163, 183, 134, 163, 183, 135, 164, 183, 136, 163, 183, 135, 162, 182, 133, 163, 181, 134, 163, 180, 133, 161, 178, 133, 160, 179, 134, 162, 179, 133, 161, 178, 132, 160, 177, 129, 157, 175, 126, 154, 171, 123, 152, 169, 119, 149, 166, 115, 146, 162, + 114, 144, 161, 110, 143, 159, 107, 139, 157, 106, 137, 153, 100, 133, 150, 97, 130, 146, 96, 128, 145, 90, 124, 140, 89, 122, 138, 86, 117, 132, 83, 113, 129, 78, 109, 124, 74, 106, 120, 70, 101, 116, 68, 100, 113, 65, 95, 109, 64, 92, 106, 62, 90, 104, 62, 89, 103, 60, 87, 101, 59, 87, 99, + 56, 86, 97, 58, 88, 99, 59, 90, 101, 65, 96, 106, 68, 99, 110, 73, 104, 115, 73, 107, 119, 75, 109, 122, 76, 112, 125, 81, 117, 130, 96, 132, 146, 109, 145, 159, 127, 160, 174, 140, 169, 183, 144, 170, 187, 132, 163, 178, 115, 148, 161, 92, 123, 134, 83, 107, 117, 75, 95, 105, 55, 73, 85, + 58, 75, 87, 49, 66, 76, 51, 68, 77, 48, 63, 73, 44, 60, 68, 50, 64, 72, 47, 61, 69, 42, 57, 66, 47, 61, 69, 55, 69, 76, 64, 80, 86, 58, 76, 83, 72, 93, 99, 81, 101, 108, 102, 122, 129, 139, 152, 160, 138, 151, 157, 102, 120, 127, 110, 125, 132, 105, 122, 128, 111, 127, 132, + 118, 133, 135, 114, 130, 131, 135, 148, 148, 129, 142, 144, 131, 142, 145, 116, 130, 133, 150, 159, 161, 133, 145, 147, 140, 151, 151, 142, 153, 152, 149, 158, 158, 125, 138, 138, 134, 145, 147, 119, 133, 136, 142, 154, 156, 138, 150, 153, 112, 126, 130, 124, 135, 139, 117, 129, 133, 97, 111, 114, 109, 123, 127, + 110, 123, 129, 122, 137, 143, 145, 156, 162, 132, 145, 154, 112, 131, 141, 144, 158, 165, 110, 131, 140, 128, 145, 153, 83, 109, 118, 133, 150, 158, 153, 168, 174, 132, 151, 159, 150, 169, 177, 125, 146, 157, 131, 148, 158, 122, 139, 149, 125, 143, 152, 110, 127, 138, 140, 156, 164, 103, 124, 133, 127, 143, 153, + 131, 145, 155, 99, 118, 128, 116, 133, 141, 83, 104, 113, 58, 81, 92, 65, 86, 97, 62, 82, 93, 86, 103, 113, 83, 103, 113, 73, 92, 103, 63, 84, 95, 69, 90, 101, 78, 97, 106, 63, 80, 88, 68, 86, 96, 66, 85, 94, 58, 80, 88, 96, 112, 121, 82, 98, 107, 56, 78, 86, 57, 77, 88, + 73, 93, 102, 101, 117, 125, 87, 106, 114, 84, 103, 112, 102, 121, 129, 127, 146, 156, 124, 142, 152, 114, 132, 142, 112, 132, 141, 62, 89, 99, 67, 94, 103, 81, 107, 115, 111, 134, 141, 122, 143, 151, 87, 118, 128, 107, 135, 143, 119, 143, 153, 129, 151, 159, 134, 155, 163, 148, 166, 173, 131, 151, 159, + 115, 140, 148, 135, 156, 165, 105, 134, 144, 114, 143, 156, 109, 142, 156, 136, 163, 174, 149, 173, 182, 167, 186, 193, 165, 185, 192, 161, 181, 188, 170, 189, 196, 178, 194, 201, 178, 196, 202, 187, 202, 207, 183, 200, 205, 189, 204, 208, 175, 195, 200, 185, 200, 205, 183, 200, 204, 183, 200, 204, 173, 191, 197, + 170, 190, 194, 176, 194, 199, 180, 196, 202, 186, 200, 205, 190, 204, 208, 190, 204, 209, 176, 194, 201, 172, 193, 198, 171, 192, 198, 165, 189, 196, 157, 184, 191, 178, 198, 203, 186, 203, 207, 197, 210, 215, 197, 211, 215, 185, 204, 208, 187, 205, 210, 191, 208, 211, 200, 215, 217, 198, 212, 215, 191, 207, 212, + 187, 205, 211, 193, 208, 214, 200, 213, 219, 187, 205, 211, 196, 211, 218, 202, 215, 222, 193, 209, 216, 194, 210, 217, 200, 216, 221, 196, 213, 219, 196, 213, 218, 206, 219, 222, 209, 221, 225, 209, 222, 225, 206, 220, 224, 208, 222, 225, 210, 223, 226, 207, 221, 225, 212, 224, 228, 212, 225, 229, 212, 225, 228, + 217, 229, 231, 221, 232, 235, 222, 232, 234, 225, 235, 235, 225, 235, 235, 227, 237, 237, 229, 238, 237, 232, 240, 239, 235, 243, 241, 235, 243, 242, 236, 243, 242, 238, 244, 243, 240, 246, 245, 237, 243, 242, 237, 243, 242, 238, 244, 243, 237, 243, 242, 238, 244, 243, 238, 244, 243, 238, 244, 243, 239, 244, 243, + 199, 215, 221, 199, 215, 222, 199, 215, 222, 196, 213, 220, 195, 214, 221, 195, 213, 220, 195, 213, 220, 194, 212, 219, 194, 211, 220, 193, 210, 219, 194, 212, 219, 192, 210, 217, 193, 211, 218, 190, 209, 216, 190, 209, 216, 190, 208, 215, 189, 208, 215, 189, 208, 216, 188, 207, 215, 185, 206, 214, 183, 204, 212, + 183, 204, 212, 181, 202, 210, 181, 201, 212, 180, 200, 211, 180, 200, 211, 179, 199, 210, 177, 198, 209, 173, 195, 206, 172, 194, 205, 170, 192, 203, 166, 189, 200, 164, 188, 200, 163, 188, 200, 159, 185, 199, 155, 182, 196, 153, 180, 194, 148, 176, 191, 146, 174, 190, 144, 172, 189, 142, 170, 187, 142, 169, 186, + 137, 167, 185, 137, 165, 185, 138, 166, 185, 137, 165, 183, 138, 165, 185, 136, 164, 184, 137, 164, 185, 136, 163, 183, 136, 164, 182, 134, 163, 181, 137, 165, 182, 134, 162, 179, 134, 162, 181, 133, 160, 180, 133, 161, 179, 129, 157, 174, 127, 155, 172, 122, 151, 168, 119, 149, 166, 114, 144, 161, 110, 142, 159, + 107, 140, 156, 102, 135, 151, 103, 136, 152, 99, 131, 148, 96, 129, 145, 94, 127, 143, 92, 124, 141, 91, 121, 138, 86, 116, 133, 84, 114, 129, 78, 110, 124, 77, 107, 122, 73, 104, 117, 70, 100, 113, 67, 97, 110, 61, 92, 105, 62, 90, 104, 60, 87, 101, 59, 86, 100, 59, 86, 100, 59, 87, 97, + 57, 86, 97, 55, 84, 96, 60, 91, 101, 64, 94, 105, 67, 97, 108, 67, 98, 109, 67, 100, 111, 66, 101, 112, 69, 104, 116, 74, 111, 123, 86, 124, 137, 110, 145, 159, 129, 161, 175, 143, 170, 185, 150, 175, 190, 141, 167, 183, 123, 152, 167, 93, 124, 136, 86, 109, 119, 79, 99, 108, 75, 90, 100, + 59, 76, 86, 59, 75, 84, 56, 71, 80, 45, 61, 69, 36, 52, 62, 41, 56, 65, 50, 62, 71, 46, 60, 69, 60, 72, 79, 64, 77, 83, 59, 74, 80, 65, 79, 85, 55, 80, 87, 86, 105, 113, 151, 164, 169, 154, 165, 170, 121, 137, 143, 119, 136, 142, 112, 128, 134, 120, 135, 141, 105, 122, 127, + 124, 138, 139, 126, 139, 139, 108, 125, 126, 96, 114, 116, 126, 139, 141, 145, 156, 158, 158, 167, 168, 125, 138, 137, 122, 136, 136, 131, 142, 143, 115, 128, 130, 123, 136, 139, 135, 147, 149, 107, 123, 126, 124, 138, 140, 133, 146, 148, 137, 149, 151, 124, 136, 139, 113, 124, 127, 99, 114, 116, 118, 131, 133, + 140, 150, 155, 124, 136, 142, 122, 133, 140, 130, 141, 147, 108, 123, 130, 132, 146, 154, 103, 124, 133, 133, 148, 156, 116, 136, 144, 130, 149, 156, 90, 115, 126, 106, 130, 138, 144, 160, 168, 124, 144, 154, 158, 171, 179, 113, 133, 145, 88, 111, 124, 129, 146, 154, 110, 129, 138, 102, 123, 132, 89, 111, 122, + 87, 109, 120, 86, 106, 117, 71, 93, 104, 65, 88, 98, 72, 93, 102, 78, 98, 107, 70, 89, 100, 80, 99, 110, 60, 79, 90, 65, 82, 93, 64, 82, 94, 60, 81, 91, 72, 90, 100, 92, 108, 116, 62, 82, 92, 65, 84, 93, 72, 91, 99, 39, 65, 75, 58, 80, 90, 79, 96, 106, 92, 109, 119, + 64, 85, 94, 77, 97, 105, 95, 112, 120, 82, 101, 111, 86, 106, 117, 83, 105, 116, 84, 107, 120, 95, 117, 128, 116, 135, 143, 115, 134, 142, 100, 122, 129, 122, 141, 147, 119, 142, 148, 131, 151, 159, 134, 156, 162, 149, 167, 172, 150, 168, 174, 143, 163, 170, 120, 145, 154, 107, 131, 141, 122, 147, 156, + 127, 150, 159, 113, 139, 149, 114, 141, 152, 138, 159, 169, 141, 164, 174, 151, 173, 183, 150, 172, 181, 155, 176, 186, 169, 186, 194, 158, 179, 188, 173, 189, 196, 165, 185, 192, 172, 191, 197, 176, 194, 200, 182, 198, 204, 191, 204, 208, 187, 202, 205, 178, 195, 201, 174, 192, 198, 179, 197, 201, 179, 196, 199, + 173, 191, 195, 174, 192, 196, 170, 191, 196, 190, 204, 208, 182, 199, 204, 194, 206, 211, 188, 202, 209, 190, 205, 208, 186, 203, 208, 180, 198, 204, 174, 195, 200, 182, 200, 206, 179, 198, 203, 192, 207, 211, 195, 209, 213, 198, 212, 216, 188, 206, 209, 195, 210, 214, 187, 205, 208, 193, 209, 212, 196, 211, 215, + 198, 212, 218, 198, 213, 218, 196, 212, 216, 201, 215, 219, 195, 211, 216, 193, 210, 216, 204, 217, 222, 197, 213, 218, 199, 215, 219, 203, 218, 221, 202, 217, 221, 200, 215, 219, 208, 221, 224, 210, 222, 225, 212, 225, 227, 213, 225, 227, 211, 225, 227, 215, 227, 231, 213, 226, 228, 215, 227, 229, 216, 229, 231, + 217, 229, 231, 220, 232, 234, 223, 233, 233, 227, 236, 236, 230, 238, 238, 229, 237, 237, 230, 238, 238, 231, 238, 239, 235, 243, 242, 236, 243, 242, 233, 242, 241, 233, 241, 240, 237, 243, 242, 238, 244, 243, 237, 243, 242, 236, 242, 241, 237, 243, 242, 236, 242, 241, 237, 243, 242, 238, 243, 242, 238, 243, 242, + 200, 216, 222, 198, 215, 221, 197, 214, 221, 195, 213, 220, 196, 214, 221, 195, 213, 220, 194, 213, 220, 194, 212, 219, 194, 211, 220, 194, 211, 220, 193, 210, 218, 192, 210, 218, 192, 210, 217, 190, 209, 216, 190, 209, 217, 189, 208, 217, 189, 208, 215, 187, 206, 214, 186, 206, 214, 185, 206, 214, 183, 204, 212, + 181, 203, 210, 180, 200, 211, 179, 199, 210, 178, 198, 209, 178, 198, 209, 177, 197, 208, 174, 196, 207, 171, 193, 206, 171, 193, 203, 168, 190, 202, 166, 189, 200, 164, 188, 200, 161, 186, 198, 158, 183, 197, 156, 182, 194, 152, 178, 192, 147, 176, 191, 145, 174, 189, 144, 172, 189, 141, 169, 186, 141, 168, 187, + 139, 166, 185, 138, 166, 185, 137, 166, 185, 138, 165, 185, 140, 168, 184, 140, 168, 184, 140, 166, 183, 139, 166, 183, 141, 167, 184, 136, 164, 181, 134, 162, 179, 135, 163, 180, 135, 163, 180, 134, 161, 179, 129, 157, 175, 126, 155, 172, 120, 151, 167, 116, 148, 164, 112, 144, 161, 110, 142, 159, 103, 136, 154, + 100, 133, 151, 98, 131, 148, 95, 127, 145, 94, 126, 145, 93, 124, 143, 92, 125, 142, 89, 120, 137, 86, 117, 133, 85, 114, 131, 81, 111, 126, 78, 108, 122, 77, 106, 120, 71, 100, 114, 69, 98, 112, 64, 93, 107, 61, 89, 103, 60, 87, 101, 60, 86, 100, 60, 87, 101, 59, 86, 100, 59, 87, 98, + 55, 84, 95, 56, 86, 95, 57, 87, 96, 60, 90, 100, 62, 92, 103, 59, 92, 103, 60, 94, 105, 62, 97, 106, 65, 100, 113, 75, 110, 123, 96, 133, 146, 115, 148, 163, 134, 165, 180, 144, 172, 186, 148, 174, 189, 133, 163, 179, 118, 149, 165, 101, 131, 143, 90, 112, 123, 74, 94, 104, 78, 92, 102, + 74, 88, 97, 74, 87, 95, 53, 69, 78, 67, 79, 87, 50, 64, 73, 43, 57, 66, 49, 62, 70, 55, 68, 76, 49, 62, 69, 48, 61, 67, 45, 61, 67, 46, 63, 70, 76, 95, 103, 98, 122, 130, 174, 184, 189, 127, 145, 149, 121, 137, 142, 126, 141, 147, 121, 135, 142, 119, 133, 140, 76, 93, 102, + 136, 148, 152, 115, 130, 130, 139, 151, 150, 134, 146, 145, 139, 150, 151, 134, 144, 144, 124, 136, 137, 147, 156, 156, 128, 140, 141, 107, 121, 123, 152, 161, 164, 130, 141, 145, 129, 140, 144, 142, 154, 155, 110, 125, 128, 137, 150, 153, 72, 92, 96, 72, 90, 93, 100, 114, 116, 134, 145, 146, 137, 147, 150, + 116, 129, 134, 99, 113, 119, 138, 147, 154, 81, 96, 104, 125, 136, 143, 118, 132, 139, 103, 121, 129, 101, 120, 130, 145, 160, 167, 83, 108, 119, 109, 132, 140, 135, 152, 160, 57, 88, 98, 136, 153, 162, 95, 119, 132, 139, 154, 165, 137, 150, 160, 72, 94, 106, 80, 102, 112, 129, 145, 153, 108, 127, 137, + 112, 131, 140, 90, 110, 120, 115, 131, 140, 80, 100, 109, 46, 70, 81, 67, 89, 99, 36, 61, 73, 20, 47, 60, 36, 60, 73, 64, 82, 94, 86, 100, 110, 90, 107, 117, 68, 88, 98, 53, 76, 86, 71, 90, 99, 76, 95, 103, 62, 83, 93, 58, 80, 90, 62, 83, 93, 87, 106, 114, 80, 100, 109, + 108, 124, 131, 90, 107, 116, 100, 116, 125, 101, 118, 127, 89, 109, 119, 90, 110, 122, 119, 137, 147, 101, 122, 132, 82, 106, 113, 121, 139, 145, 110, 131, 136, 124, 143, 148, 100, 127, 137, 109, 136, 145, 108, 134, 144, 88, 122, 132, 87, 122, 132, 114, 142, 152, 155, 172, 178, 146, 165, 173, 126, 149, 159, + 125, 149, 158, 120, 145, 155, 102, 129, 141, 112, 139, 150, 142, 163, 173, 126, 154, 165, 122, 152, 165, 146, 170, 180, 157, 178, 187, 159, 180, 189, 135, 161, 174, 161, 181, 189, 177, 195, 201, 155, 180, 187, 178, 196, 201, 185, 200, 204, 184, 200, 203, 176, 195, 198, 168, 189, 194, 175, 195, 198, 177, 195, 199, + 175, 193, 196, 169, 188, 192, 169, 190, 193, 160, 184, 190, 179, 197, 200, 183, 200, 204, 187, 203, 206, 191, 205, 208, 190, 205, 210, 191, 205, 210, 178, 197, 202, 179, 198, 203, 182, 200, 205, 182, 200, 205, 190, 206, 209, 192, 208, 211, 191, 208, 212, 181, 202, 205, 192, 209, 212, 180, 200, 205, 195, 209, 215, + 194, 210, 215, 199, 213, 218, 202, 216, 219, 191, 209, 213, 201, 215, 219, 200, 215, 218, 197, 214, 217, 200, 216, 219, 205, 220, 223, 205, 219, 222, 210, 221, 226, 208, 221, 225, 201, 217, 220, 206, 220, 223, 213, 225, 227, 218, 229, 231, 220, 232, 234, 219, 231, 233, 217, 229, 231, 217, 229, 231, 218, 230, 232, + 221, 232, 234, 221, 232, 235, 225, 235, 235, 227, 236, 236, 228, 237, 237, 232, 239, 239, 228, 238, 238, 232, 240, 240, 232, 240, 240, 235, 242, 242, 235, 242, 243, 233, 241, 241, 234, 242, 241, 237, 243, 242, 238, 244, 243, 236, 242, 241, 236, 242, 241, 236, 242, 241, 236, 242, 241, 236, 242, 241, 237, 243, 242, + 199, 215, 222, 198, 215, 222, 196, 214, 221, 196, 214, 221, 195, 213, 220, 195, 213, 220, 194, 212, 219, 194, 212, 219, 193, 211, 220, 192, 210, 219, 193, 211, 219, 191, 210, 217, 192, 210, 217, 191, 210, 217, 189, 208, 216, 189, 208, 216, 188, 207, 215, 187, 206, 214, 187, 206, 214, 184, 204, 212, 182, 202, 211, + 181, 201, 212, 179, 200, 211, 179, 199, 210, 177, 197, 208, 176, 197, 208, 174, 195, 206, 172, 194, 206, 170, 192, 204, 169, 190, 202, 168, 189, 201, 163, 187, 199, 162, 187, 198, 161, 186, 198, 157, 183, 196, 155, 181, 195, 152, 179, 193, 148, 176, 191, 145, 174, 191, 144, 172, 189, 145, 171, 188, 140, 168, 186, + 140, 167, 186, 139, 167, 186, 139, 168, 185, 140, 168, 185, 141, 168, 185, 143, 168, 186, 143, 169, 186, 142, 168, 185, 142, 167, 184, 141, 167, 183, 137, 164, 180, 138, 164, 181, 134, 162, 179, 129, 157, 175, 125, 155, 173, 121, 151, 168, 116, 148, 167, 110, 142, 161, 107, 139, 158, 102, 135, 154, 100, 133, 152, + 98, 130, 150, 93, 125, 144, 91, 124, 142, 92, 123, 142, 90, 120, 139, 90, 120, 137, 86, 117, 134, 85, 115, 132, 83, 114, 129, 80, 109, 124, 77, 106, 121, 77, 106, 120, 69, 99, 113, 65, 94, 108, 62, 91, 105, 62, 90, 104, 61, 87, 101, 60, 87, 100, 60, 87, 100, 59, 86, 99, 60, 88, 99, + 60, 88, 98, 57, 86, 95, 61, 89, 98, 58, 90, 99, 57, 89, 100, 59, 92, 103, 57, 92, 102, 61, 96, 107, 69, 103, 116, 82, 118, 131, 104, 139, 153, 127, 159, 175, 138, 168, 183, 146, 174, 189, 147, 175, 190, 132, 164, 179, 125, 153, 168, 102, 129, 143, 89, 110, 121, 77, 96, 107, 65, 81, 91, + 56, 71, 80, 59, 73, 81, 63, 77, 83, 54, 67, 75, 49, 63, 71, 28, 45, 54, 29, 45, 53, 22, 36, 42, 32, 45, 53, 44, 57, 63, 52, 65, 72, 69, 82, 90, 75, 99, 109, 185, 195, 200, 160, 173, 178, 134, 150, 156, 135, 149, 153, 129, 143, 147, 112, 129, 136, 142, 153, 160, 133, 147, 153, + 119, 132, 139, 134, 147, 146, 124, 138, 137, 142, 152, 152, 153, 162, 161, 138, 148, 148, 154, 162, 162, 123, 134, 134, 129, 141, 142, 166, 173, 173, 110, 123, 127, 148, 158, 161, 151, 159, 164, 106, 122, 125, 101, 117, 119, 134, 148, 151, 111, 126, 128, 116, 129, 130, 115, 128, 129, 143, 151, 150, 94, 108, 111, + 136, 146, 149, 116, 128, 132, 131, 142, 146, 77, 94, 100, 97, 111, 118, 104, 118, 127, 120, 133, 142, 105, 122, 130, 100, 117, 126, 107, 126, 134, 91, 114, 123, 123, 140, 148, 132, 148, 155, 110, 129, 139, 117, 134, 145, 85, 106, 121, 75, 95, 108, 87, 105, 114, 108, 126, 133, 58, 84, 94, 74, 99, 110, + 89, 106, 116, 91, 112, 121, 69, 94, 105, 79, 99, 109, 74, 95, 104, 88, 106, 116, 88, 107, 118, 73, 94, 104, 64, 84, 96, 67, 88, 98, 53, 74, 86, 77, 96, 107, 66, 87, 98, 85, 101, 110, 83, 101, 110, 58, 80, 89, 55, 78, 87, 97, 113, 121, 86, 105, 114, 105, 124, 132, 95, 114, 123, + 84, 102, 112, 70, 90, 100, 52, 75, 86, 78, 98, 107, 96, 115, 124, 90, 110, 120, 96, 117, 126, 112, 132, 140, 117, 136, 142, 130, 146, 151, 125, 143, 148, 113, 134, 140, 150, 166, 172, 150, 167, 174, 150, 169, 176, 158, 174, 180, 159, 176, 182, 131, 156, 164, 140, 162, 171, 173, 186, 192, 151, 171, 178, + 120, 145, 155, 124, 148, 158, 149, 166, 174, 138, 158, 167, 138, 159, 168, 108, 138, 150, 118, 148, 160, 122, 153, 166, 139, 166, 176, 168, 185, 193, 164, 181, 190, 151, 171, 181, 159, 180, 187, 173, 191, 197, 165, 185, 191, 170, 189, 193, 177, 194, 198, 184, 199, 203, 186, 201, 204, 169, 189, 194, 178, 196, 199, + 180, 197, 200, 164, 186, 190, 181, 198, 201, 176, 194, 198, 158, 182, 189, 168, 188, 193, 184, 201, 205, 181, 198, 203, 189, 204, 209, 188, 203, 208, 192, 206, 211, 188, 203, 208, 189, 203, 208, 192, 206, 210, 191, 206, 211, 189, 205, 209, 183, 201, 206, 182, 201, 206, 188, 205, 209, 186, 204, 210, 171, 193, 200, + 178, 197, 204, 195, 209, 214, 201, 215, 218, 201, 215, 219, 195, 211, 215, 194, 212, 215, 200, 216, 219, 199, 215, 218, 202, 217, 220, 206, 220, 223, 207, 220, 223, 207, 221, 224, 211, 224, 226, 209, 223, 224, 210, 223, 225, 210, 223, 225, 216, 227, 229, 220, 231, 233, 220, 232, 234, 220, 231, 234, 223, 232, 233, + 222, 232, 233, 224, 234, 234, 223, 234, 234, 225, 235, 236, 228, 237, 237, 230, 239, 239, 231, 240, 240, 231, 239, 239, 232, 240, 240, 234, 241, 241, 235, 241, 242, 233, 241, 241, 234, 241, 240, 234, 241, 240, 235, 242, 241, 236, 243, 242, 235, 241, 240, 232, 240, 239, 234, 241, 238, 235, 241, 240, 236, 242, 241, + 199, 215, 222, 198, 214, 221, 196, 214, 221, 195, 213, 220, 195, 213, 220, 195, 213, 220, 194, 212, 219, 194, 212, 219, 193, 211, 220, 193, 210, 219, 193, 211, 219, 191, 210, 217, 192, 210, 217, 190, 209, 216, 190, 209, 217, 189, 208, 216, 188, 207, 215, 187, 205, 213, 184, 204, 212, 182, 203, 211, 180, 201, 212, + 179, 200, 211, 176, 198, 209, 175, 197, 208, 174, 196, 207, 172, 195, 205, 169, 192, 204, 169, 191, 203, 166, 190, 202, 168, 190, 202, 163, 187, 199, 163, 187, 199, 162, 186, 198, 162, 186, 198, 157, 183, 196, 156, 182, 196, 152, 179, 193, 149, 176, 192, 145, 174, 190, 144, 173, 190, 142, 170, 187, 141, 169, 186, + 142, 169, 186, 140, 168, 185, 142, 169, 186, 140, 168, 185, 143, 169, 186, 143, 169, 186, 143, 169, 186, 143, 169, 185, 141, 168, 184, 139, 165, 181, 137, 164, 180, 135, 163, 178, 129, 159, 174, 128, 156, 173, 121, 152, 168, 118, 148, 166, 111, 143, 162, 107, 140, 159, 103, 136, 155, 98, 131, 150, 98, 131, 148, + 93, 126, 143, 91, 124, 141, 89, 121, 137, 91, 121, 137, 88, 118, 135, 88, 117, 134, 83, 113, 130, 84, 114, 131, 81, 112, 127, 80, 110, 125, 75, 104, 119, 74, 103, 117, 70, 99, 113, 64, 92, 106, 64, 91, 105, 58, 86, 100, 60, 86, 100, 59, 86, 100, 59, 87, 99, 59, 87, 98, 59, 87, 98, + 58, 85, 97, 57, 86, 95, 58, 86, 96, 57, 88, 97, 56, 89, 99, 59, 93, 103, 58, 92, 103, 62, 96, 106, 71, 106, 119, 90, 127, 140, 109, 144, 159, 127, 160, 175, 134, 167, 183, 142, 172, 187, 146, 175, 190, 142, 172, 186, 130, 158, 173, 104, 131, 144, 79, 102, 115, 69, 89, 99, 64, 82, 90, + 66, 81, 88, 49, 65, 73, 44, 62, 68, 50, 65, 71, 51, 64, 70, 42, 56, 63, 36, 51, 56, 38, 53, 58, 35, 48, 53, 42, 55, 60, 42, 56, 64, 51, 68, 77, 146, 164, 170, 176, 189, 194, 147, 163, 169, 158, 170, 174, 141, 155, 158, 102, 122, 128, 141, 153, 160, 151, 162, 167, 153, 163, 169, + 124, 138, 143, 150, 160, 162, 162, 171, 171, 122, 137, 137, 112, 127, 127, 165, 172, 173, 131, 143, 143, 158, 166, 166, 136, 147, 148, 119, 131, 134, 135, 146, 149, 149, 158, 162, 132, 145, 149, 130, 142, 146, 104, 119, 125, 95, 110, 114, 44, 65, 67, 115, 127, 129, 122, 133, 133, 115, 126, 127, 94, 107, 111, + 117, 129, 133, 162, 170, 172, 145, 154, 157, 82, 99, 103, 111, 124, 131, 111, 126, 133, 103, 119, 127, 79, 98, 107, 74, 93, 103, 90, 110, 119, 127, 143, 151, 95, 115, 123, 121, 138, 146, 82, 107, 116, 70, 94, 105, 75, 99, 109, 73, 93, 103, 68, 88, 97, 72, 93, 102, 78, 102, 109, 85, 106, 115, + 45, 70, 82, 85, 106, 116, 94, 114, 124, 66, 86, 96, 88, 104, 113, 66, 88, 97, 90, 107, 117, 65, 86, 97, 86, 104, 115, 91, 109, 118, 86, 103, 113, 77, 97, 106, 103, 119, 128, 70, 90, 100, 67, 83, 92, 95, 110, 119, 99, 115, 123, 88, 105, 114, 71, 92, 101, 59, 84, 94, 77, 97, 106, + 74, 96, 102, 85, 103, 111, 75, 95, 103, 55, 78, 86, 73, 95, 102, 96, 116, 123, 89, 109, 117, 71, 96, 104, 80, 104, 112, 92, 115, 122, 95, 118, 123, 101, 124, 131, 96, 124, 133, 113, 138, 148, 134, 155, 164, 133, 155, 163, 155, 172, 178, 145, 166, 173, 137, 161, 167, 131, 156, 162, 171, 186, 190, + 161, 178, 181, 152, 169, 177, 142, 162, 170, 121, 146, 156, 112, 139, 151, 152, 172, 178, 148, 169, 177, 130, 159, 169, 144, 169, 178, 150, 173, 182, 159, 178, 187, 144, 167, 176, 128, 159, 170, 136, 166, 175, 159, 181, 188, 171, 189, 194, 173, 192, 196, 172, 191, 195, 165, 185, 191, 180, 196, 200, 181, 198, 201, + 184, 199, 203, 186, 201, 204, 176, 194, 197, 179, 196, 200, 172, 192, 197, 160, 183, 189, 172, 191, 197, 175, 194, 199, 174, 194, 199, 185, 201, 206, 183, 199, 204, 182, 199, 204, 182, 199, 204, 188, 203, 209, 186, 201, 207, 197, 210, 214, 190, 205, 210, 180, 198, 204, 184, 201, 207, 187, 204, 211, 194, 208, 214, + 189, 205, 211, 188, 206, 211, 192, 209, 214, 194, 211, 214, 203, 217, 221, 206, 219, 221, 192, 210, 212, 206, 219, 222, 203, 217, 220, 201, 216, 220, 206, 219, 222, 210, 222, 225, 211, 223, 225, 212, 225, 227, 213, 225, 227, 209, 223, 225, 213, 225, 227, 215, 228, 230, 222, 232, 234, 223, 232, 235, 224, 233, 235, + 224, 234, 235, 224, 234, 234, 226, 236, 235, 227, 236, 236, 230, 238, 238, 230, 238, 238, 232, 240, 240, 232, 240, 240, 232, 240, 240, 232, 240, 240, 235, 240, 241, 234, 240, 241, 232, 240, 239, 235, 241, 240, 235, 242, 241, 235, 241, 240, 235, 241, 240, 234, 241, 240, 233, 240, 238, 233, 239, 238, 235, 241, 240, + 197, 214, 221, 196, 213, 220, 195, 213, 220, 195, 213, 220, 195, 213, 220, 195, 213, 220, 193, 212, 219, 193, 212, 219, 193, 212, 219, 193, 211, 218, 192, 210, 217, 192, 210, 217, 190, 210, 217, 190, 209, 217, 190, 209, 217, 188, 207, 215, 186, 206, 214, 184, 206, 214, 182, 203, 211, 182, 203, 211, 180, 200, 211, + 178, 199, 210, 174, 196, 208, 172, 194, 206, 172, 194, 206, 170, 193, 204, 167, 191, 202, 167, 191, 203, 165, 189, 201, 164, 188, 200, 164, 188, 200, 163, 187, 199, 162, 186, 198, 158, 184, 196, 158, 184, 197, 156, 182, 196, 153, 179, 194, 148, 176, 191, 146, 174, 190, 144, 172, 189, 143, 170, 186, 143, 170, 186, + 142, 169, 185, 143, 170, 186, 142, 169, 186, 144, 170, 187, 144, 169, 186, 146, 171, 187, 143, 169, 184, 141, 168, 183, 141, 167, 183, 140, 166, 182, 134, 162, 179, 134, 163, 178, 126, 157, 172, 123, 153, 170, 117, 148, 166, 114, 145, 162, 107, 140, 157, 102, 135, 151, 99, 133, 150, 96, 130, 145, 92, 125, 142, + 93, 124, 141, 89, 119, 136, 88, 119, 136, 89, 119, 136, 87, 117, 134, 86, 115, 132, 88, 116, 133, 85, 113, 130, 81, 111, 127, 75, 105, 121, 77, 106, 121, 71, 100, 115, 67, 97, 110, 66, 93, 107, 63, 90, 104, 60, 87, 101, 61, 88, 102, 59, 86, 100, 58, 85, 99, 59, 86, 98, 59, 86, 97, + 58, 86, 96, 56, 83, 94, 56, 85, 94, 56, 87, 96, 54, 87, 98, 56, 92, 102, 60, 95, 105, 63, 99, 109, 75, 109, 123, 90, 127, 141, 109, 144, 158, 123, 157, 173, 134, 167, 182, 134, 168, 183, 146, 175, 189, 144, 174, 187, 131, 160, 175, 100, 130, 143, 73, 98, 109, 61, 83, 93, 62, 80, 88, + 56, 72, 79, 60, 74, 82, 49, 64, 70, 46, 60, 67, 48, 62, 68, 50, 63, 70, 45, 58, 63, 34, 47, 52, 28, 41, 47, 20, 36, 42, 38, 52, 60, 73, 90, 99, 184, 198, 203, 164, 177, 182, 154, 169, 174, 151, 163, 166, 107, 124, 129, 143, 155, 160, 166, 174, 179, 165, 175, 179, 171, 179, 183, + 125, 139, 144, 146, 157, 158, 141, 154, 153, 162, 170, 171, 127, 141, 142, 135, 148, 149, 97, 113, 116, 112, 127, 128, 127, 140, 142, 124, 137, 138, 129, 141, 144, 111, 127, 131, 133, 144, 150, 149, 159, 163, 108, 122, 128, 77, 93, 97, 116, 128, 130, 92, 106, 107, 110, 124, 124, 110, 124, 124, 101, 115, 118, + 137, 147, 151, 139, 150, 151, 142, 152, 156, 149, 160, 163, 137, 147, 152, 86, 104, 112, 120, 135, 141, 96, 112, 119, 68, 87, 96, 93, 109, 117, 66, 84, 93, 87, 106, 113, 79, 102, 111, 97, 119, 128, 97, 118, 127, 93, 113, 122, 83, 102, 110, 72, 91, 99, 78, 97, 105, 83, 103, 110, 64, 87, 95, + 92, 107, 116, 60, 78, 89, 58, 75, 86, 63, 80, 88, 50, 70, 77, 59, 78, 85, 57, 76, 82, 58, 80, 86, 41, 67, 75, 49, 73, 81, 34, 60, 70, 54, 75, 85, 53, 77, 87, 74, 93, 103, 103, 119, 128, 69, 89, 98, 89, 106, 115, 91, 107, 115, 80, 99, 108, 59, 82, 91, 60, 83, 89, + 82, 100, 106, 72, 91, 99, 92, 109, 116, 92, 110, 117, 83, 102, 109, 69, 92, 99, 86, 107, 115, 104, 123, 130, 105, 124, 132, 113, 133, 138, 139, 155, 160, 87, 113, 120, 108, 133, 142, 138, 158, 167, 110, 137, 148, 141, 162, 167, 119, 147, 154, 151, 171, 177, 159, 178, 182, 132, 159, 164, 127, 154, 160, + 161, 178, 182, 127, 152, 160, 104, 133, 144, 144, 163, 171, 140, 160, 169, 140, 161, 170, 146, 169, 177, 148, 170, 178, 119, 151, 163, 144, 168, 177, 154, 177, 185, 157, 178, 186, 151, 175, 184, 150, 174, 182, 147, 172, 182, 165, 185, 192, 169, 188, 193, 173, 191, 195, 179, 194, 200, 175, 192, 198, 186, 200, 204, + 178, 194, 200, 164, 186, 192, 175, 192, 198, 176, 194, 198, 163, 185, 191, 173, 191, 197, 178, 195, 201, 175, 194, 200, 178, 195, 200, 185, 199, 205, 175, 193, 199, 179, 196, 202, 183, 198, 204, 188, 202, 208, 185, 200, 206, 194, 207, 212, 192, 206, 212, 188, 204, 209, 184, 201, 208, 178, 198, 206, 185, 203, 209, + 191, 206, 212, 194, 209, 213, 188, 206, 211, 187, 205, 210, 195, 211, 214, 198, 214, 215, 205, 219, 222, 197, 211, 215, 203, 217, 220, 207, 219, 223, 204, 218, 220, 205, 219, 222, 210, 223, 225, 211, 223, 225, 215, 227, 229, 217, 228, 231, 218, 229, 230, 216, 228, 230, 216, 228, 230, 222, 233, 234, 223, 232, 234, + 224, 233, 234, 225, 235, 235, 227, 235, 235, 229, 237, 236, 230, 238, 238, 232, 240, 240, 231, 239, 239, 232, 240, 239, 233, 241, 241, 233, 241, 241, 235, 242, 241, 236, 242, 241, 236, 242, 241, 235, 241, 240, 236, 242, 241, 236, 242, 241, 237, 243, 242, 236, 242, 241, 235, 241, 240, 233, 239, 238, 233, 239, 238, + 197, 214, 221, 196, 214, 221, 196, 214, 221, 195, 213, 220, 195, 213, 220, 195, 212, 220, 194, 213, 220, 194, 212, 219, 193, 211, 218, 193, 211, 218, 192, 210, 217, 191, 210, 217, 190, 209, 216, 189, 208, 216, 189, 208, 216, 188, 207, 215, 187, 206, 214, 186, 205, 213, 182, 203, 211, 180, 201, 211, 179, 199, 210, + 176, 197, 208, 174, 195, 207, 173, 195, 207, 171, 193, 205, 168, 192, 203, 167, 191, 202, 165, 189, 201, 164, 189, 201, 167, 190, 202, 164, 188, 200, 164, 188, 200, 164, 188, 200, 162, 186, 198, 158, 183, 197, 156, 182, 196, 154, 180, 194, 151, 177, 193, 146, 174, 190, 146, 174, 189, 146, 173, 189, 147, 172, 188, + 146, 172, 188, 144, 170, 187, 147, 172, 188, 145, 171, 187, 146, 171, 187, 144, 170, 186, 143, 169, 185, 142, 167, 183, 137, 164, 180, 136, 164, 180, 135, 161, 178, 130, 158, 175, 125, 155, 172, 122, 152, 169, 116, 147, 166, 108, 140, 159, 105, 138, 154, 100, 133, 149, 94, 128, 143, 93, 125, 142, 91, 122, 139, + 92, 122, 139, 88, 118, 135, 90, 120, 137, 89, 119, 136, 86, 116, 133, 85, 114, 131, 86, 114, 131, 85, 114, 131, 83, 111, 128, 78, 107, 123, 75, 104, 120, 72, 101, 116, 70, 97, 111, 66, 93, 107, 61, 89, 103, 61, 88, 102, 59, 86, 100, 61, 87, 102, 58, 85, 99, 58, 86, 97, 59, 85, 97, + 57, 84, 95, 58, 85, 96, 58, 86, 97, 59, 88, 100, 60, 91, 102, 57, 92, 102, 61, 96, 106, 69, 105, 116, 80, 115, 128, 93, 129, 143, 112, 146, 161, 126, 159, 174, 139, 170, 184, 143, 173, 187, 141, 171, 186, 138, 169, 183, 127, 158, 173, 104, 133, 144, 82, 106, 116, 72, 92, 101, 64, 81, 90, + 56, 73, 81, 62, 75, 85, 57, 69, 77, 54, 65, 74, 48, 61, 68, 35, 49, 56, 33, 48, 54, 36, 50, 54, 38, 50, 55, 42, 56, 61, 65, 75, 83, 136, 151, 155, 176, 187, 190, 159, 174, 178, 152, 163, 166, 154, 164, 167, 97, 115, 120, 168, 176, 180, 171, 180, 183, 168, 175, 179, 152, 164, 168, + 166, 173, 176, 150, 160, 161, 157, 166, 167, 141, 154, 155, 144, 156, 157, 161, 170, 172, 145, 155, 158, 146, 156, 159, 106, 122, 126, 119, 133, 135, 114, 128, 131, 133, 145, 150, 123, 137, 143, 116, 129, 136, 106, 122, 128, 117, 129, 134, 101, 114, 117, 85, 101, 102, 145, 155, 155, 122, 136, 138, 101, 119, 123, + 148, 158, 161, 145, 155, 158, 146, 157, 157, 108, 122, 126, 116, 130, 135, 122, 135, 142, 66, 84, 93, 77, 94, 102, 73, 90, 97, 98, 110, 117, 87, 101, 108, 64, 82, 89, 59, 78, 85, 47, 67, 77, 22, 46, 57, 38, 61, 71, 88, 106, 114, 102, 118, 125, 82, 99, 108, 81, 100, 106, 50, 72, 82, + 51, 72, 81, 33, 53, 64, 54, 70, 81, 46, 62, 72, 59, 74, 81, 54, 70, 76, 57, 73, 80, 70, 88, 94, 58, 75, 83, 60, 80, 88, 63, 82, 91, 70, 89, 97, 54, 76, 85, 55, 76, 88, 78, 97, 105, 79, 97, 105, 34, 56, 66, 52, 75, 84, 73, 91, 100, 79, 96, 104, 91, 108, 114, + 77, 95, 100, 41, 62, 70, 61, 80, 88, 84, 101, 109, 81, 100, 107, 88, 105, 113, 108, 125, 133, 114, 131, 139, 106, 124, 132, 83, 105, 115, 99, 121, 130, 101, 128, 141, 90, 119, 133, 88, 118, 132, 99, 129, 140, 118, 144, 151, 135, 153, 158, 120, 149, 156, 149, 170, 176, 151, 171, 177, 127, 155, 161, + 137, 160, 165, 139, 162, 168, 118, 144, 152, 112, 138, 148, 119, 143, 154, 136, 160, 168, 135, 159, 169, 145, 167, 175, 161, 179, 186, 137, 163, 173, 146, 169, 177, 167, 185, 192, 168, 187, 194, 167, 186, 193, 153, 177, 185, 159, 181, 188, 189, 201, 207, 179, 195, 201, 178, 193, 200, 182, 196, 202, 163, 183, 189, + 170, 188, 195, 175, 193, 199, 168, 187, 194, 163, 185, 191, 182, 197, 203, 163, 183, 191, 157, 180, 188, 178, 196, 201, 182, 198, 204, 176, 193, 198, 184, 199, 204, 181, 197, 202, 189, 202, 206, 188, 203, 208, 187, 202, 207, 184, 201, 206, 192, 207, 211, 196, 209, 214, 190, 205, 211, 184, 202, 208, 180, 199, 205, + 183, 201, 207, 185, 202, 208, 197, 211, 215, 188, 206, 210, 185, 205, 210, 197, 212, 215, 195, 212, 215, 196, 211, 215, 197, 213, 216, 203, 216, 220, 203, 217, 219, 207, 219, 221, 204, 218, 220, 207, 220, 222, 208, 221, 223, 214, 226, 228, 216, 228, 228, 220, 230, 230, 219, 231, 231, 218, 229, 232, 223, 234, 235, + 224, 234, 234, 229, 237, 237, 227, 235, 235, 227, 235, 235, 230, 238, 238, 231, 239, 239, 232, 240, 240, 232, 239, 239, 233, 240, 240, 235, 241, 241, 235, 241, 241, 236, 242, 242, 237, 243, 242, 236, 242, 241, 236, 242, 241, 236, 242, 241, 237, 242, 241, 236, 242, 241, 235, 241, 240, 234, 240, 239, 235, 241, 240, + 197, 215, 221, 196, 214, 221, 196, 214, 221, 195, 213, 220, 195, 213, 220, 195, 213, 220, 194, 212, 219, 194, 212, 219, 193, 211, 218, 192, 211, 218, 193, 211, 218, 191, 209, 216, 191, 209, 216, 189, 208, 217, 189, 208, 216, 187, 206, 214, 187, 206, 214, 185, 204, 212, 183, 203, 212, 180, 200, 210, 176, 197, 208, + 175, 197, 207, 174, 195, 207, 171, 193, 205, 171, 193, 205, 167, 191, 203, 169, 191, 203, 167, 189, 202, 167, 190, 202, 168, 191, 203, 168, 190, 202, 164, 187, 201, 164, 188, 200, 163, 186, 199, 161, 183, 199, 159, 183, 197, 156, 182, 196, 153, 179, 194, 153, 178, 193, 149, 175, 191, 149, 174, 190, 147, 173, 189, + 147, 173, 188, 149, 173, 189, 147, 172, 188, 148, 172, 188, 147, 172, 188, 143, 169, 185, 143, 168, 184, 139, 165, 181, 138, 164, 180, 135, 161, 178, 131, 159, 176, 128, 156, 175, 122, 152, 171, 117, 148, 167, 112, 144, 163, 106, 138, 157, 102, 134, 150, 96, 130, 146, 93, 126, 142, 93, 124, 140, 93, 123, 141, + 91, 121, 140, 89, 119, 137, 87, 117, 134, 89, 117, 134, 85, 115, 132, 86, 114, 131, 85, 113, 130, 82, 110, 127, 80, 108, 125, 77, 105, 122, 74, 103, 118, 71, 100, 115, 69, 96, 110, 67, 94, 108, 63, 90, 104, 62, 88, 104, 61, 88, 102, 60, 87, 101, 60, 87, 101, 59, 86, 99, 58, 85, 99, + 56, 83, 98, 58, 85, 99, 61, 89, 100, 62, 91, 102, 65, 94, 106, 64, 96, 107, 64, 98, 109, 73, 108, 119, 80, 115, 128, 96, 130, 144, 111, 145, 159, 126, 160, 174, 134, 167, 181, 143, 173, 187, 142, 173, 188, 136, 169, 183, 129, 159, 174, 109, 137, 147, 91, 114, 125, 78, 96, 105, 69, 84, 94, + 59, 74, 83, 45, 60, 70, 48, 60, 70, 48, 58, 67, 49, 60, 67, 41, 52, 59, 39, 51, 58, 50, 61, 68, 48, 58, 65, 50, 65, 70, 73, 93, 100, 178, 190, 193, 148, 165, 169, 161, 173, 175, 136, 149, 153, 149, 159, 163, 126, 140, 144, 161, 171, 173, 158, 167, 171, 164, 173, 176, 162, 170, 173, + 158, 166, 168, 152, 162, 163, 134, 145, 149, 145, 156, 157, 146, 157, 157, 132, 145, 147, 145, 156, 159, 117, 131, 134, 96, 112, 115, 132, 145, 147, 133, 143, 145, 112, 123, 128, 97, 109, 117, 102, 116, 123, 123, 137, 144, 77, 92, 99, 90, 103, 109, 131, 140, 145, 127, 139, 142, 110, 123, 128, 93, 108, 113, + 146, 157, 160, 104, 120, 126, 134, 145, 149, 158, 166, 170, 107, 121, 126, 106, 119, 126, 65, 83, 91, 53, 71, 80, 65, 80, 89, 76, 89, 97, 76, 90, 97, 81, 95, 100, 79, 94, 100, 60, 77, 86, 57, 74, 84, 56, 76, 87, 42, 66, 76, 42, 66, 77, 44, 63, 72, 69, 88, 96, 80, 96, 105, + 85, 97, 107, 67, 83, 93, 54, 70, 80, 78, 90, 99, 60, 74, 82, 55, 72, 80, 39, 58, 65, 42, 63, 72, 71, 87, 95, 88, 105, 111, 108, 121, 129, 91, 106, 113, 65, 87, 95, 64, 85, 95, 85, 103, 111, 46, 69, 80, 54, 76, 85, 56, 75, 85, 48, 68, 78, 67, 87, 95, 74, 92, 99, + 66, 85, 91, 85, 101, 109, 90, 105, 113, 78, 96, 104, 98, 114, 121, 105, 121, 129, 92, 111, 119, 106, 123, 132, 105, 124, 134, 104, 122, 133, 101, 122, 135, 127, 151, 162, 119, 145, 158, 142, 162, 173, 137, 160, 170, 157, 176, 182, 161, 180, 186, 144, 169, 177, 159, 178, 184, 139, 164, 172, 137, 162, 168, + 145, 165, 169, 109, 137, 144, 145, 163, 170, 124, 147, 156, 101, 129, 139, 93, 123, 136, 143, 163, 172, 138, 160, 169, 151, 171, 177, 139, 162, 171, 142, 165, 174, 127, 155, 167, 156, 176, 184, 144, 170, 179, 151, 176, 184, 168, 187, 193, 151, 175, 183, 170, 189, 195, 182, 196, 202, 166, 185, 193, 167, 186, 192, + 154, 177, 185, 158, 180, 188, 155, 178, 186, 164, 184, 192, 162, 183, 191, 171, 189, 196, 168, 186, 193, 145, 170, 180, 162, 182, 190, 174, 193, 198, 179, 195, 201, 184, 199, 204, 188, 202, 207, 187, 202, 205, 191, 206, 210, 189, 203, 209, 190, 205, 210, 190, 205, 211, 193, 207, 212, 194, 208, 213, 183, 201, 207, + 193, 207, 211, 194, 208, 212, 183, 202, 206, 190, 207, 211, 192, 209, 212, 198, 213, 216, 196, 211, 214, 193, 210, 214, 200, 215, 218, 198, 214, 217, 205, 218, 220, 199, 215, 217, 208, 220, 222, 203, 218, 220, 203, 217, 219, 200, 216, 218, 210, 223, 225, 217, 228, 229, 219, 229, 231, 221, 231, 231, 220, 232, 233, + 223, 233, 233, 228, 236, 236, 230, 236, 237, 230, 238, 237, 230, 238, 237, 232, 238, 239, 231, 239, 239, 233, 241, 241, 234, 240, 240, 233, 240, 239, 235, 241, 240, 235, 241, 240, 237, 243, 242, 236, 242, 241, 236, 242, 241, 235, 241, 240, 235, 241, 240, 234, 240, 239, 236, 241, 240, 238, 243, 242, 236, 241, 240, + 196, 214, 220, 195, 213, 220, 195, 213, 220, 194, 212, 219, 195, 213, 220, 195, 213, 220, 194, 212, 219, 194, 212, 219, 194, 212, 219, 192, 211, 218, 192, 210, 217, 192, 210, 217, 190, 209, 215, 190, 209, 217, 188, 207, 215, 188, 207, 215, 186, 205, 213, 184, 204, 212, 180, 200, 211, 181, 201, 210, 178, 198, 209, + 174, 196, 207, 173, 194, 206, 172, 194, 206, 169, 192, 204, 171, 192, 204, 167, 190, 202, 168, 190, 202, 168, 191, 203, 168, 191, 203, 168, 190, 202, 168, 189, 203, 165, 187, 202, 164, 187, 199, 160, 184, 199, 159, 182, 197, 156, 180, 195, 156, 182, 196, 153, 178, 193, 152, 177, 192, 150, 176, 190, 150, 176, 190, + 149, 175, 189, 149, 174, 190, 149, 174, 189, 146, 172, 187, 146, 171, 186, 144, 170, 186, 139, 166, 181, 138, 164, 181, 134, 161, 179, 132, 160, 176, 127, 156, 174, 122, 151, 170, 118, 148, 168, 113, 145, 164, 106, 139, 158, 102, 135, 153, 96, 130, 147, 93, 126, 142, 91, 124, 140, 91, 124, 140, 90, 121, 140, + 92, 122, 141, 88, 118, 136, 89, 118, 135, 84, 114, 131, 85, 113, 130, 85, 113, 130, 84, 112, 129, 79, 107, 124, 77, 105, 122, 76, 104, 122, 75, 105, 119, 69, 98, 113, 70, 97, 111, 67, 94, 108, 64, 91, 105, 64, 90, 104, 62, 88, 102, 61, 87, 101, 59, 86, 100, 59, 86, 99, 58, 85, 100, + 60, 87, 101, 62, 89, 103, 63, 90, 103, 61, 91, 102, 63, 93, 104, 59, 91, 102, 61, 95, 106, 69, 104, 117, 79, 115, 128, 95, 129, 144, 110, 145, 159, 123, 158, 172, 135, 168, 182, 144, 174, 188, 143, 173, 187, 140, 172, 186, 128, 158, 173, 97, 125, 139, 79, 101, 112, 69, 88, 97, 64, 80, 89, + 63, 77, 87, 56, 68, 78, 43, 55, 65, 38, 49, 60, 45, 54, 63, 40, 49, 59, 40, 50, 59, 42, 52, 61, 54, 64, 72, 65, 78, 84, 137, 153, 159, 166, 179, 182, 159, 172, 174, 126, 139, 142, 161, 170, 172, 119, 133, 137, 120, 135, 139, 159, 167, 170, 151, 161, 163, 141, 153, 156, 145, 155, 157, + 147, 156, 160, 149, 158, 160, 144, 154, 157, 133, 144, 146, 153, 162, 162, 157, 165, 166, 116, 130, 132, 126, 139, 141, 127, 141, 143, 84, 100, 103, 116, 127, 129, 104, 115, 120, 128, 138, 142, 45, 62, 70, 86, 99, 107, 82, 95, 103, 96, 107, 115, 148, 156, 161, 137, 147, 153, 118, 131, 136, 117, 129, 133, + 124, 135, 139, 110, 124, 129, 139, 149, 154, 151, 161, 164, 73, 89, 97, 96, 111, 117, 96, 110, 116, 43, 62, 71, 54, 70, 78, 52, 65, 73, 51, 66, 73, 61, 74, 80, 50, 67, 74, 71, 86, 95, 97, 108, 116, 94, 108, 116, 103, 116, 124, 108, 122, 129, 68, 87, 95, 77, 96, 105, 72, 86, 97, + 71, 91, 101, 94, 110, 119, 96, 113, 122, 60, 78, 90, 73, 87, 97, 50, 68, 79, 52, 69, 79, 61, 78, 87, 72, 89, 100, 57, 75, 86, 71, 88, 98, 58, 81, 92, 78, 97, 107, 89, 105, 114, 86, 105, 114, 57, 77, 87, 77, 94, 103, 89, 105, 114, 99, 116, 124, 81, 100, 107, 106, 122, 128, + 113, 129, 135, 93, 112, 118, 85, 102, 110, 104, 118, 126, 98, 114, 122, 71, 91, 100, 98, 116, 124, 92, 112, 121, 103, 122, 131, 90, 110, 122, 94, 118, 130, 107, 133, 146, 123, 148, 161, 127, 151, 165, 129, 154, 166, 138, 162, 174, 121, 150, 161, 167, 185, 192, 165, 183, 190, 152, 173, 180, 148, 169, 177, + 141, 161, 171, 114, 138, 147, 129, 151, 160, 131, 152, 161, 114, 139, 149, 136, 156, 165, 114, 140, 151, 112, 140, 152, 108, 139, 150, 120, 148, 158, 122, 149, 161, 162, 179, 186, 119, 149, 161, 135, 163, 172, 137, 165, 174, 138, 167, 175, 163, 183, 190, 161, 181, 190, 155, 178, 186, 170, 189, 195, 186, 199, 205, + 137, 165, 175, 153, 175, 185, 176, 192, 197, 160, 180, 190, 171, 189, 196, 166, 186, 194, 168, 186, 194, 166, 184, 192, 137, 165, 173, 148, 174, 181, 171, 190, 195, 171, 190, 196, 178, 196, 201, 187, 202, 205, 187, 203, 205, 190, 206, 208, 192, 206, 210, 191, 205, 210, 188, 203, 209, 187, 204, 208, 196, 209, 214, + 168, 191, 197, 187, 203, 208, 197, 210, 213, 192, 208, 213, 190, 207, 211, 181, 201, 206, 202, 214, 216, 192, 209, 214, 196, 211, 216, 202, 216, 219, 205, 218, 221, 209, 221, 223, 202, 216, 218, 207, 220, 222, 205, 219, 220, 205, 219, 221, 198, 215, 216, 205, 220, 221, 216, 227, 229, 222, 232, 232, 224, 234, 234, + 224, 234, 234, 226, 235, 235, 229, 237, 237, 231, 237, 237, 232, 239, 239, 231, 238, 237, 234, 241, 240, 233, 240, 240, 233, 241, 240, 236, 241, 241, 234, 241, 240, 233, 241, 240, 236, 242, 241, 239, 243, 243, 235, 242, 241, 236, 242, 241, 233, 239, 238, 233, 239, 238, 233, 239, 237, 233, 239, 238, 235, 240, 239, + 198, 214, 220, 196, 214, 221, 196, 213, 220, 195, 213, 220, 194, 212, 219, 194, 212, 220, 194, 212, 219, 195, 213, 220, 194, 212, 219, 193, 211, 218, 192, 210, 217, 191, 210, 217, 191, 209, 217, 189, 208, 216, 189, 208, 216, 186, 206, 214, 186, 205, 214, 182, 203, 211, 181, 201, 211, 178, 199, 210, 176, 197, 208, + 174, 196, 207, 172, 194, 206, 171, 193, 205, 171, 193, 205, 169, 191, 203, 169, 191, 203, 167, 190, 202, 168, 190, 202, 168, 190, 202, 168, 190, 202, 168, 190, 202, 166, 188, 200, 164, 186, 198, 163, 186, 198, 160, 183, 198, 158, 182, 196, 157, 181, 196, 154, 179, 193, 152, 179, 193, 152, 178, 192, 152, 177, 191, + 151, 177, 191, 149, 175, 189, 148, 174, 188, 145, 172, 186, 145, 170, 186, 143, 168, 184, 139, 164, 180, 133, 161, 178, 131, 159, 176, 126, 154, 172, 123, 151, 170, 119, 149, 168, 111, 143, 163, 105, 138, 157, 102, 135, 154, 97, 130, 149, 95, 128, 146, 91, 125, 141, 91, 124, 140, 91, 122, 139, 91, 121, 140, + 89, 119, 138, 92, 120, 139, 88, 116, 133, 86, 115, 132, 85, 114, 131, 83, 111, 128, 81, 109, 126, 80, 108, 125, 78, 106, 123, 77, 106, 121, 76, 104, 119, 73, 101, 116, 74, 101, 116, 70, 97, 111, 67, 93, 107, 64, 90, 104, 63, 90, 103, 61, 88, 102, 62, 88, 100, 60, 87, 101, 59, 86, 99, + 60, 87, 101, 61, 90, 101, 61, 89, 101, 59, 89, 100, 58, 89, 100, 58, 90, 101, 61, 95, 107, 63, 99, 111, 77, 113, 127, 94, 130, 144, 109, 145, 159, 129, 162, 175, 139, 171, 184, 140, 172, 185, 148, 177, 191, 147, 175, 189, 131, 160, 175, 117, 141, 154, 85, 105, 116, 78, 94, 104, 62, 77, 87, + 52, 67, 76, 57, 71, 79, 58, 69, 77, 58, 67, 76, 47, 55, 65, 38, 47, 56, 40, 49, 57, 48, 57, 66, 64, 73, 81, 73, 90, 95, 183, 192, 196, 144, 159, 161, 160, 169, 170, 139, 151, 153, 113, 126, 131, 95, 109, 113, 109, 123, 126, 125, 139, 141, 120, 135, 137, 154, 163, 164, 149, 159, 160, + 140, 151, 152, 124, 136, 137, 141, 150, 152, 143, 152, 154, 130, 142, 142, 111, 124, 125, 137, 148, 149, 107, 121, 123, 96, 112, 113, 117, 129, 131, 84, 98, 101, 105, 116, 120, 100, 113, 117, 90, 102, 109, 86, 98, 105, 67, 81, 90, 100, 111, 118, 134, 144, 149, 153, 162, 165, 121, 133, 139, 100, 115, 119, + 71, 87, 93, 108, 122, 126, 132, 143, 147, 120, 132, 137, 45, 61, 70, 107, 118, 125, 63, 78, 87, 79, 91, 99, 35, 52, 60, 56, 70, 78, 45, 61, 67, 33, 50, 58, 56, 70, 76, 47, 60, 70, 57, 72, 81, 63, 77, 87, 71, 88, 95, 62, 81, 89, 71, 89, 96, 69, 86, 96, 78, 95, 104, + 78, 93, 101, 75, 92, 102, 86, 104, 114, 92, 109, 121, 55, 75, 86, 51, 75, 86, 74, 96, 106, 85, 104, 114, 72, 92, 101, 76, 94, 104, 55, 75, 87, 78, 97, 108, 62, 84, 95, 85, 102, 110, 75, 93, 102, 91, 108, 116, 104, 119, 127, 95, 113, 120, 97, 115, 122, 98, 118, 125, 98, 118, 123, + 84, 104, 111, 85, 106, 113, 79, 100, 107, 93, 110, 119, 75, 94, 103, 61, 83, 93, 85, 105, 114, 127, 144, 152, 103, 125, 134, 120, 141, 149, 110, 133, 143, 100, 129, 141, 126, 150, 161, 135, 159, 170, 129, 154, 166, 140, 163, 175, 154, 173, 182, 138, 161, 171, 131, 155, 166, 151, 171, 180, 156, 174, 183, + 125, 151, 163, 163, 179, 186, 134, 155, 164, 112, 137, 147, 93, 123, 134, 101, 129, 140, 117, 141, 151, 110, 137, 148, 127, 149, 159, 137, 158, 167, 145, 164, 174, 134, 158, 168, 125, 153, 164, 116, 148, 159, 146, 169, 177, 130, 159, 168, 142, 167, 176, 151, 173, 181, 148, 173, 182, 170, 189, 195, 165, 185, 191, + 177, 193, 199, 125, 159, 170, 117, 151, 166, 153, 177, 187, 177, 194, 201, 183, 199, 204, 178, 194, 200, 184, 197, 203, 179, 194, 200, 155, 179, 185, 141, 169, 176, 174, 193, 198, 165, 186, 191, 168, 189, 193, 187, 202, 204, 189, 203, 206, 190, 205, 209, 189, 204, 209, 191, 206, 210, 189, 204, 209, 189, 205, 208, + 193, 207, 210, 181, 200, 204, 191, 206, 211, 199, 213, 216, 189, 205, 211, 192, 209, 213, 174, 197, 203, 194, 210, 214, 197, 213, 216, 187, 206, 211, 201, 214, 217, 205, 219, 220, 207, 219, 221, 208, 220, 223, 209, 222, 222, 205, 219, 220, 207, 221, 223, 204, 220, 221, 205, 221, 223, 214, 226, 227, 220, 231, 231, + 222, 233, 233, 226, 235, 235, 227, 235, 234, 228, 236, 236, 231, 238, 237, 232, 240, 239, 231, 239, 238, 235, 241, 240, 234, 240, 240, 236, 242, 240, 236, 242, 241, 236, 242, 241, 235, 241, 240, 236, 242, 241, 236, 242, 241, 236, 242, 241, 235, 241, 240, 233, 240, 237, 232, 238, 236, 231, 237, 236, 230, 236, 235, + 196, 214, 221, 197, 213, 220, 195, 212, 219, 195, 213, 220, 195, 213, 220, 195, 213, 220, 194, 212, 219, 194, 212, 219, 193, 211, 218, 193, 211, 218, 193, 211, 218, 191, 209, 216, 190, 209, 216, 190, 209, 217, 188, 207, 215, 187, 206, 214, 183, 204, 213, 182, 202, 211, 180, 201, 210, 178, 198, 209, 176, 197, 208, + 173, 196, 207, 174, 195, 206, 172, 194, 205, 170, 192, 204, 170, 192, 204, 169, 191, 202, 167, 190, 202, 169, 191, 203, 168, 190, 202, 167, 190, 202, 167, 189, 201, 167, 189, 201, 166, 188, 200, 163, 186, 198, 162, 185, 197, 159, 182, 196, 158, 181, 196, 157, 181, 196, 156, 180, 194, 153, 178, 192, 153, 178, 190, + 150, 175, 189, 149, 175, 189, 147, 173, 187, 144, 171, 185, 140, 168, 183, 137, 165, 181, 134, 162, 179, 130, 159, 176, 124, 154, 171, 122, 152, 170, 118, 149, 168, 111, 143, 162, 105, 138, 158, 102, 136, 154, 97, 131, 150, 95, 128, 147, 94, 126, 146, 94, 126, 143, 91, 123, 140, 92, 123, 139, 92, 122, 140, + 91, 120, 138, 88, 117, 134, 87, 115, 132, 83, 112, 129, 84, 113, 129, 82, 112, 128, 80, 109, 125, 79, 108, 123, 78, 107, 122, 76, 105, 120, 80, 106, 122, 76, 104, 119, 72, 99, 115, 71, 98, 112, 69, 95, 109, 68, 94, 108, 66, 92, 104, 63, 89, 101, 62, 89, 101, 59, 87, 98, 58, 87, 97, + 59, 86, 97, 59, 87, 97, 58, 87, 97, 57, 87, 98, 55, 86, 97, 56, 88, 99, 58, 91, 103, 64, 99, 112, 75, 111, 125, 96, 133, 147, 121, 155, 169, 132, 165, 178, 143, 173, 187, 143, 176, 188, 142, 176, 190, 145, 175, 190, 142, 167, 181, 114, 142, 155, 87, 107, 118, 69, 86, 97, 49, 67, 77, + 49, 63, 74, 54, 68, 76, 45, 58, 67, 57, 65, 74, 49, 58, 68, 40, 50, 60, 36, 47, 54, 54, 64, 70, 63, 74, 80, 145, 161, 164, 159, 171, 175, 155, 166, 169, 131, 145, 146, 122, 137, 140, 103, 118, 122, 106, 119, 122, 105, 118, 120, 102, 115, 116, 134, 146, 147, 123, 136, 137, 168, 175, 174, + 152, 161, 161, 145, 155, 155, 155, 163, 164, 147, 155, 157, 136, 147, 148, 102, 116, 119, 93, 108, 110, 128, 140, 142, 77, 94, 95, 86, 100, 102, 74, 89, 92, 80, 93, 98, 119, 129, 132, 51, 68, 75, 69, 84, 91, 79, 92, 100, 108, 119, 127, 111, 123, 128, 137, 148, 150, 94, 110, 113, 110, 123, 126, + 74, 90, 94, 137, 148, 152, 127, 138, 142, 101, 115, 121, 62, 76, 84, 79, 91, 99, 87, 97, 105, 49, 63, 73, 63, 77, 84, 31, 48, 56, 54, 68, 75, 75, 86, 93, 71, 83, 90, 74, 87, 95, 59, 72, 82, 58, 74, 83, 61, 78, 86, 69, 85, 93, 75, 91, 98, 64, 83, 90, 74, 91, 98, + 56, 75, 82, 57, 77, 85, 50, 69, 80, 104, 119, 129, 88, 106, 117, 104, 119, 129, 82, 102, 112, 89, 107, 117, 84, 102, 111, 81, 97, 108, 84, 99, 109, 97, 112, 123, 63, 82, 92, 67, 85, 95, 83, 98, 104, 93, 111, 119, 65, 87, 95, 84, 104, 111, 86, 106, 112, 92, 111, 117, 62, 87, 93, + 85, 104, 110, 113, 131, 138, 89, 110, 117, 86, 108, 116, 92, 111, 119, 94, 114, 123, 123, 139, 147, 108, 129, 138, 104, 126, 134, 129, 149, 156, 116, 137, 146, 114, 139, 149, 119, 144, 156, 99, 130, 143, 98, 128, 142, 133, 155, 167, 139, 160, 171, 141, 163, 173, 156, 174, 181, 151, 170, 180, 137, 161, 171, + 165, 181, 189, 112, 142, 154, 132, 156, 166, 129, 154, 162, 137, 158, 165, 113, 138, 149, 110, 136, 148, 111, 136, 146, 117, 140, 151, 122, 144, 154, 124, 150, 161, 129, 154, 165, 133, 160, 170, 133, 160, 168, 109, 143, 153, 132, 158, 167, 132, 159, 168, 158, 178, 185, 137, 163, 172, 130, 159, 170, 171, 189, 195, + 182, 197, 202, 174, 191, 198, 151, 174, 184, 127, 158, 171, 143, 170, 180, 172, 190, 196, 180, 195, 201, 179, 195, 200, 185, 199, 204, 179, 195, 198, 155, 179, 184, 147, 173, 179, 172, 190, 195, 160, 183, 187, 163, 185, 189, 169, 190, 195, 185, 200, 205, 188, 203, 207, 188, 204, 207, 187, 203, 206, 185, 203, 206, + 192, 207, 211, 193, 208, 211, 186, 203, 207, 200, 213, 217, 200, 213, 217, 191, 208, 212, 186, 205, 210, 187, 205, 210, 194, 211, 214, 195, 210, 217, 191, 209, 212, 198, 213, 216, 209, 221, 223, 207, 219, 220, 212, 223, 224, 209, 221, 223, 201, 216, 218, 208, 221, 223, 212, 225, 225, 212, 225, 224, 221, 231, 231, + 223, 232, 232, 226, 233, 233, 226, 234, 234, 227, 235, 235, 229, 237, 236, 232, 238, 237, 235, 241, 240, 233, 239, 238, 233, 239, 239, 236, 242, 241, 235, 241, 240, 235, 241, 241, 235, 241, 239, 235, 242, 239, 234, 241, 238, 234, 241, 240, 235, 241, 240, 236, 241, 240, 232, 238, 237, 231, 237, 236, 231, 237, 236, + 198, 213, 220, 197, 213, 221, 196, 214, 221, 195, 213, 220, 195, 213, 220, 195, 213, 220, 194, 212, 219, 195, 213, 220, 193, 211, 218, 194, 212, 219, 193, 211, 218, 192, 210, 217, 192, 208, 218, 190, 208, 216, 188, 207, 215, 186, 205, 213, 184, 204, 212, 182, 203, 213, 180, 200, 211, 178, 198, 209, 178, 198, 209, + 176, 196, 207, 174, 195, 207, 172, 193, 205, 171, 193, 204, 170, 192, 204, 169, 191, 203, 168, 190, 202, 169, 191, 203, 169, 191, 203, 168, 190, 202, 168, 189, 202, 167, 188, 200, 165, 186, 200, 165, 188, 199, 161, 184, 198, 162, 184, 197, 160, 183, 197, 159, 182, 196, 157, 180, 194, 154, 178, 191, 153, 177, 191, + 150, 176, 190, 148, 174, 188, 145, 171, 185, 141, 168, 183, 140, 166, 182, 136, 164, 179, 134, 161, 178, 127, 156, 173, 122, 151, 168, 118, 149, 168, 113, 145, 164, 107, 140, 159, 105, 139, 158, 99, 134, 152, 97, 133, 150, 97, 129, 148, 97, 129, 148, 95, 127, 143, 95, 125, 142, 91, 122, 138, 90, 121, 136, + 90, 121, 136, 87, 117, 133, 87, 116, 131, 86, 115, 130, 83, 113, 128, 81, 111, 126, 81, 110, 125, 80, 108, 123, 80, 108, 123, 81, 108, 123, 78, 105, 120, 79, 105, 120, 76, 102, 117, 74, 101, 115, 73, 100, 114, 70, 97, 111, 68, 94, 106, 65, 91, 103, 62, 89, 100, 61, 88, 100, 60, 87, 98, + 60, 89, 98, 59, 88, 97, 60, 89, 98, 59, 88, 98, 60, 90, 100, 59, 89, 100, 64, 96, 108, 76, 109, 121, 91, 126, 139, 106, 141, 154, 125, 159, 172, 133, 166, 179, 141, 172, 185, 148, 175, 190, 148, 178, 193, 135, 169, 183, 128, 159, 174, 113, 143, 158, 81, 109, 122, 66, 86, 97, 61, 77, 87, + 60, 72, 81, 57, 70, 78, 57, 69, 77, 53, 62, 71, 48, 57, 67, 45, 55, 64, 40, 51, 58, 60, 71, 77, 77, 94, 100, 179, 188, 191, 159, 171, 173, 138, 152, 154, 129, 142, 144, 119, 133, 135, 98, 113, 115, 112, 124, 126, 103, 115, 115, 119, 129, 129, 131, 142, 141, 144, 152, 152, 98, 112, 111, + 125, 138, 137, 167, 174, 173, 122, 134, 134, 134, 144, 146, 114, 126, 130, 130, 142, 146, 86, 100, 105, 85, 101, 104, 131, 142, 143, 70, 85, 87, 98, 110, 113, 93, 105, 109, 94, 107, 112, 94, 107, 112, 113, 126, 130, 94, 108, 115, 122, 135, 140, 97, 111, 118, 123, 136, 140, 85, 103, 107, 121, 135, 138, + 67, 86, 91, 80, 97, 101, 98, 113, 118, 93, 108, 113, 87, 98, 106, 47, 62, 70, 68, 80, 88, 55, 68, 75, 53, 67, 75, 59, 73, 81, 49, 64, 71, 40, 56, 67, 75, 87, 97, 69, 80, 89, 52, 66, 74, 69, 83, 91, 68, 84, 92, 45, 64, 73, 56, 73, 81, 34, 53, 59, 22, 39, 46, + 31, 50, 57, 42, 61, 68, 44, 63, 72, 64, 79, 90, 62, 78, 90, 53, 75, 87, 70, 91, 100, 79, 98, 107, 70, 91, 99, 72, 91, 99, 60, 77, 85, 48, 69, 77, 50, 68, 75, 50, 68, 76, 63, 81, 87, 70, 90, 97, 93, 112, 119, 83, 103, 110, 68, 90, 95, 59, 82, 88, 61, 83, 88, + 78, 99, 106, 78, 101, 110, 116, 132, 140, 88, 110, 118, 112, 131, 139, 131, 148, 156, 89, 112, 122, 103, 125, 133, 117, 137, 145, 94, 119, 130, 90, 117, 126, 114, 138, 147, 95, 125, 136, 106, 134, 145, 123, 146, 157, 141, 160, 169, 115, 140, 150, 74, 107, 119, 129, 150, 161, 128, 151, 163, 118, 145, 158, + 158, 176, 182, 159, 178, 184, 138, 161, 169, 158, 175, 181, 143, 164, 171, 113, 141, 150, 129, 152, 161, 121, 144, 154, 103, 130, 141, 131, 152, 161, 129, 152, 163, 120, 146, 159, 129, 156, 165, 154, 174, 181, 144, 166, 174, 130, 156, 166, 147, 169, 177, 153, 175, 182, 151, 173, 180, 142, 167, 175, 143, 169, 178, + 153, 177, 185, 169, 188, 194, 163, 184, 191, 168, 187, 194, 143, 171, 180, 144, 172, 180, 161, 183, 189, 161, 182, 189, 182, 198, 203, 190, 204, 207, 178, 195, 199, 152, 176, 182, 158, 181, 186, 175, 192, 196, 156, 180, 186, 173, 191, 196, 170, 190, 194, 169, 189, 195, 184, 200, 204, 180, 198, 203, 185, 202, 205, + 189, 205, 208, 185, 203, 206, 188, 205, 208, 180, 199, 204, 201, 214, 217, 198, 212, 217, 190, 208, 212, 197, 211, 215, 184, 203, 208, 194, 209, 214, 196, 212, 215, 194, 211, 214, 198, 213, 216, 208, 221, 223, 202, 216, 218, 213, 224, 226, 208, 221, 223, 203, 218, 220, 211, 225, 225, 213, 225, 225, 217, 227, 227, + 223, 232, 232, 225, 233, 233, 226, 234, 234, 226, 234, 234, 228, 236, 235, 229, 237, 236, 233, 238, 238, 234, 240, 239, 234, 240, 239, 234, 240, 240, 235, 241, 240, 235, 241, 240, 236, 241, 240, 234, 240, 238, 236, 241, 240, 234, 240, 239, 235, 241, 240, 234, 239, 238, 234, 239, 238, 231, 237, 235, 230, 236, 235, + 198, 214, 220, 197, 215, 221, 196, 214, 220, 195, 213, 220, 196, 214, 221, 195, 213, 220, 195, 213, 220, 195, 213, 220, 194, 212, 219, 194, 212, 219, 194, 212, 219, 192, 210, 217, 192, 209, 218, 189, 208, 217, 188, 207, 215, 186, 205, 213, 185, 204, 214, 181, 201, 212, 180, 200, 211, 178, 199, 210, 176, 196, 207, + 175, 196, 207, 173, 194, 205, 172, 194, 205, 171, 193, 204, 171, 192, 203, 170, 192, 203, 169, 191, 203, 168, 190, 202, 169, 190, 202, 169, 191, 203, 167, 188, 200, 169, 188, 201, 167, 188, 200, 166, 188, 200, 165, 186, 200, 161, 183, 198, 158, 181, 195, 157, 180, 195, 156, 180, 194, 155, 180, 192, 150, 176, 190, + 149, 175, 189, 146, 173, 187, 144, 171, 185, 140, 167, 182, 139, 166, 180, 136, 164, 179, 129, 157, 175, 124, 154, 171, 122, 152, 169, 116, 147, 166, 113, 145, 164, 107, 140, 159, 104, 139, 157, 102, 137, 155, 100, 135, 153, 98, 131, 150, 96, 128, 147, 94, 127, 142, 95, 125, 142, 91, 122, 138, 90, 121, 136, + 88, 119, 134, 86, 117, 132, 87, 116, 131, 86, 115, 130, 85, 114, 129, 83, 112, 127, 83, 112, 127, 81, 109, 124, 78, 107, 121, 79, 108, 122, 79, 106, 120, 79, 106, 120, 77, 104, 118, 75, 102, 116, 74, 101, 115, 71, 98, 112, 68, 94, 108, 66, 91, 103, 63, 90, 101, 61, 88, 100, 60, 87, 98, + 60, 87, 98, 62, 90, 99, 60, 89, 98, 60, 90, 99, 60, 90, 99, 65, 95, 106, 76, 107, 118, 86, 118, 129, 96, 131, 144, 110, 144, 158, 126, 158, 172, 135, 167, 180, 143, 173, 187, 145, 174, 188, 145, 173, 188, 136, 168, 182, 130, 162, 176, 117, 146, 161, 85, 115, 128, 69, 91, 103, 57, 74, 85, + 52, 67, 75, 48, 62, 70, 43, 57, 65, 56, 66, 74, 62, 71, 78, 56, 66, 72, 60, 71, 77, 61, 73, 78, 146, 160, 165, 173, 184, 186, 158, 170, 172, 153, 163, 163, 157, 164, 164, 85, 100, 102, 127, 137, 137, 108, 119, 119, 100, 112, 111, 99, 108, 108, 145, 152, 151, 146, 154, 154, 123, 134, 134, + 158, 165, 164, 128, 141, 140, 150, 159, 159, 122, 134, 136, 112, 124, 128, 113, 125, 129, 105, 116, 121, 67, 82, 84, 83, 96, 99, 91, 101, 107, 74, 89, 96, 51, 70, 76, 84, 99, 105, 90, 104, 110, 70, 86, 91, 109, 123, 128, 97, 114, 120, 125, 139, 144, 102, 120, 126, 91, 108, 113, 73, 92, 97, + 77, 95, 99, 87, 104, 108, 83, 100, 104, 87, 103, 108, 66, 82, 89, 64, 80, 87, 58, 75, 81, 49, 65, 71, 31, 49, 56, 58, 73, 80, 60, 74, 82, 87, 98, 106, 55, 68, 79, 60, 72, 82, 55, 67, 76, 56, 72, 80, 53, 69, 78, 52, 69, 77, 63, 79, 85, 61, 77, 83, 51, 69, 75, + 54, 70, 76, 62, 78, 84, 44, 61, 70, 39, 57, 67, 46, 65, 76, 52, 71, 83, 35, 52, 60, 64, 84, 93, 64, 85, 94, 71, 91, 99, 70, 89, 96, 39, 62, 69, 64, 81, 87, 67, 83, 88, 71, 88, 94, 70, 89, 95, 76, 97, 105, 94, 113, 119, 74, 95, 101, 106, 123, 128, 114, 130, 136, + 87, 106, 113, 93, 111, 120, 76, 97, 108, 86, 106, 117, 96, 118, 127, 123, 141, 149, 124, 141, 148, 48, 77, 88, 110, 132, 140, 124, 143, 150, 108, 133, 140, 129, 150, 157, 105, 129, 138, 132, 151, 160, 129, 149, 157, 142, 161, 168, 145, 164, 169, 133, 153, 159, 137, 155, 165, 144, 161, 170, 130, 151, 163, + 120, 147, 157, 136, 159, 167, 143, 163, 171, 124, 151, 160, 138, 161, 169, 120, 149, 158, 125, 149, 158, 123, 147, 156, 138, 158, 165, 117, 142, 151, 137, 158, 167, 142, 163, 169, 148, 170, 175, 133, 158, 167, 127, 153, 163, 146, 167, 176, 142, 165, 174, 155, 176, 184, 161, 181, 188, 161, 182, 190, 139, 168, 177, + 160, 182, 189, 173, 190, 197, 165, 185, 193, 166, 187, 192, 166, 187, 193, 160, 182, 189, 158, 180, 188, 170, 188, 194, 175, 193, 199, 186, 203, 207, 193, 206, 210, 179, 195, 199, 163, 184, 189, 168, 187, 194, 179, 195, 199, 159, 181, 188, 164, 185, 191, 172, 190, 196, 171, 190, 196, 171, 191, 196, 180, 198, 202, + 188, 204, 207, 181, 200, 204, 195, 210, 212, 179, 199, 203, 186, 203, 208, 194, 209, 212, 199, 212, 215, 190, 207, 212, 195, 210, 215, 182, 202, 207, 195, 210, 213, 198, 213, 215, 197, 212, 215, 198, 213, 216, 209, 221, 223, 207, 220, 221, 208, 221, 222, 208, 220, 222, 205, 220, 220, 212, 224, 225, 217, 228, 228, + 220, 230, 230, 225, 233, 233, 227, 235, 235, 224, 233, 233, 227, 235, 235, 227, 235, 235, 231, 237, 236, 230, 237, 237, 233, 239, 238, 234, 240, 239, 231, 239, 238, 234, 240, 239, 235, 241, 240, 234, 240, 239, 235, 240, 239, 234, 240, 239, 234, 240, 239, 234, 240, 239, 233, 239, 238, 232, 237, 236, 231, 237, 236, + 199, 215, 221, 198, 215, 221, 197, 215, 220, 198, 215, 221, 196, 215, 221, 197, 214, 221, 196, 214, 221, 195, 213, 220, 195, 213, 220, 195, 213, 220, 194, 211, 218, 193, 211, 218, 192, 210, 217, 190, 208, 217, 189, 208, 216, 186, 205, 213, 184, 204, 212, 182, 201, 213, 180, 200, 211, 179, 199, 210, 174, 196, 207, + 174, 196, 207, 174, 195, 205, 173, 194, 205, 172, 193, 204, 173, 194, 204, 173, 193, 206, 172, 192, 205, 170, 192, 203, 169, 191, 203, 169, 190, 203, 169, 190, 202, 169, 189, 202, 168, 189, 201, 165, 186, 202, 164, 185, 201, 160, 184, 196, 157, 182, 194, 156, 181, 193, 154, 180, 192, 152, 178, 190, 151, 176, 191, + 149, 175, 189, 149, 175, 188, 146, 172, 186, 143, 169, 183, 139, 166, 180, 135, 164, 179, 130, 160, 175, 126, 155, 173, 119, 151, 167, 117, 148, 166, 110, 142, 161, 109, 142, 161, 108, 141, 160, 108, 141, 160, 102, 136, 155, 103, 137, 152, 101, 132, 148, 98, 128, 145, 96, 126, 143, 92, 122, 139, 91, 122, 137, + 88, 119, 134, 86, 117, 132, 86, 115, 130, 84, 114, 129, 83, 114, 129, 84, 113, 128, 82, 111, 126, 80, 110, 123, 80, 109, 123, 77, 106, 120, 80, 107, 121, 79, 106, 120, 76, 103, 117, 78, 105, 119, 74, 101, 115, 71, 98, 112, 70, 97, 110, 65, 92, 104, 65, 90, 102, 62, 88, 100, 62, 88, 100, + 60, 87, 99, 63, 89, 101, 62, 91, 101, 63, 92, 101, 63, 93, 103, 67, 96, 107, 71, 102, 113, 78, 111, 123, 89, 123, 136, 105, 140, 154, 120, 154, 168, 131, 164, 179, 143, 173, 187, 143, 173, 188, 147, 175, 189, 142, 172, 185, 131, 162, 176, 112, 143, 158, 100, 128, 141, 77, 98, 109, 60, 78, 88, + 61, 75, 82, 56, 70, 76, 58, 70, 77, 46, 60, 68, 56, 67, 76, 61, 71, 79, 67, 77, 83, 80, 98, 105, 173, 187, 192, 156, 171, 174, 152, 166, 165, 152, 163, 163, 149, 155, 155, 104, 113, 113, 125, 131, 132, 93, 102, 102, 110, 117, 117, 117, 125, 124, 146, 153, 152, 142, 150, 149, 148, 156, 155, + 163, 170, 169, 133, 142, 141, 133, 145, 145, 125, 136, 137, 104, 117, 119, 79, 91, 94, 68, 79, 82, 89, 101, 103, 83, 94, 97, 74, 86, 92, 103, 113, 119, 113, 125, 131, 103, 117, 122, 96, 111, 117, 90, 105, 109, 91, 107, 113, 120, 135, 140, 115, 132, 138, 133, 147, 152, 66, 87, 95, 86, 104, 109, + 103, 118, 122, 71, 91, 96, 65, 85, 88, 104, 118, 121, 57, 75, 82, 66, 83, 90, 63, 79, 85, 72, 86, 91, 25, 45, 52, 45, 61, 68, 54, 71, 77, 43, 59, 69, 33, 49, 59, 39, 54, 63, 53, 67, 76, 60, 72, 80, 53, 67, 75, 51, 66, 74, 20, 41, 49, 29, 48, 56, 47, 64, 71, + 53, 70, 78, 57, 71, 78, 92, 106, 111, 114, 127, 134, 90, 107, 116, 83, 100, 108, 80, 100, 108, 74, 94, 101, 80, 99, 106, 64, 86, 94, 62, 82, 90, 76, 95, 101, 89, 105, 110, 103, 116, 122, 67, 84, 90, 65, 84, 90, 95, 111, 117, 71, 90, 97, 90, 109, 117, 102, 120, 126, 99, 117, 123, + 79, 99, 107, 88, 106, 116, 98, 115, 124, 95, 113, 123, 72, 94, 103, 77, 98, 108, 112, 130, 140, 121, 138, 147, 105, 126, 135, 116, 138, 145, 116, 140, 148, 95, 121, 130, 87, 113, 122, 75, 102, 113, 78, 104, 114, 125, 145, 152, 129, 149, 155, 164, 177, 182, 140, 158, 165, 141, 160, 168, 122, 144, 154, + 143, 161, 169, 139, 158, 166, 124, 148, 156, 145, 166, 173, 148, 169, 175, 134, 157, 166, 129, 155, 162, 141, 161, 167, 131, 154, 161, 113, 140, 148, 130, 154, 161, 134, 157, 164, 122, 149, 158, 135, 159, 166, 124, 151, 161, 127, 155, 164, 123, 152, 164, 130, 158, 169, 145, 170, 179, 160, 181, 189, 164, 185, 192, + 156, 179, 187, 152, 176, 186, 172, 190, 197, 167, 187, 193, 163, 184, 190, 162, 183, 190, 154, 178, 185, 163, 184, 190, 153, 178, 184, 177, 193, 198, 188, 203, 206, 187, 202, 205, 182, 196, 201, 165, 185, 192, 173, 190, 196, 177, 194, 198, 166, 186, 191, 159, 182, 188, 167, 187, 193, 169, 189, 195, 175, 194, 199, + 173, 193, 198, 185, 203, 206, 183, 202, 204, 187, 204, 207, 189, 206, 209, 189, 205, 209, 195, 209, 214, 197, 212, 214, 196, 211, 214, 193, 209, 212, 185, 204, 209, 192, 209, 212, 202, 215, 218, 199, 213, 215, 199, 214, 217, 212, 223, 223, 209, 221, 222, 211, 223, 224, 207, 221, 222, 211, 224, 223, 215, 226, 226, + 215, 227, 227, 222, 231, 231, 229, 236, 236, 227, 235, 235, 225, 234, 234, 227, 235, 234, 227, 235, 235, 229, 236, 235, 230, 237, 236, 230, 238, 237, 233, 239, 238, 231, 238, 237, 233, 239, 238, 233, 239, 238, 234, 240, 239, 233, 239, 238, 234, 240, 239, 233, 239, 238, 234, 239, 238, 232, 239, 237, 231, 238, 236, + 200, 216, 222, 199, 215, 221, 198, 215, 220, 199, 215, 222, 200, 216, 223, 199, 215, 221, 199, 215, 222, 197, 214, 221, 198, 214, 221, 198, 213, 220, 196, 213, 220, 195, 212, 219, 193, 211, 218, 190, 208, 216, 189, 208, 216, 186, 205, 213, 184, 204, 212, 183, 202, 213, 180, 200, 211, 179, 199, 210, 179, 198, 209, + 177, 196, 208, 174, 196, 204, 174, 194, 205, 173, 194, 205, 175, 195, 206, 172, 193, 203, 173, 193, 204, 172, 192, 204, 173, 193, 205, 172, 192, 204, 169, 190, 202, 169, 189, 201, 168, 189, 201, 165, 186, 201, 163, 186, 201, 160, 185, 197, 158, 183, 195, 155, 181, 193, 154, 180, 192, 153, 179, 190, 150, 175, 190, + 151, 175, 190, 148, 173, 187, 145, 171, 185, 142, 169, 183, 138, 165, 179, 136, 163, 178, 128, 159, 174, 126, 155, 172, 122, 152, 169, 119, 149, 167, 117, 147, 165, 118, 149, 167, 111, 143, 162, 111, 144, 162, 108, 139, 159, 104, 136, 153, 102, 135, 151, 98, 131, 147, 100, 129, 147, 95, 126, 143, 93, 122, 139, + 89, 119, 135, 88, 119, 134, 85, 116, 131, 87, 116, 131, 87, 116, 131, 85, 114, 129, 85, 114, 129, 85, 113, 127, 83, 111, 125, 79, 108, 122, 80, 107, 121, 80, 107, 121, 80, 107, 121, 76, 102, 118, 75, 102, 116, 71, 98, 112, 71, 97, 109, 69, 95, 107, 66, 92, 104, 63, 90, 101, 64, 90, 102, + 60, 88, 99, 62, 88, 100, 63, 89, 101, 62, 90, 101, 64, 92, 102, 66, 95, 106, 70, 101, 112, 77, 110, 122, 87, 122, 135, 100, 136, 149, 112, 149, 163, 132, 165, 180, 140, 172, 186, 142, 173, 187, 140, 171, 186, 136, 168, 182, 132, 164, 177, 115, 146, 161, 96, 126, 139, 75, 99, 110, 62, 83, 91, + 61, 78, 85, 54, 72, 79, 69, 85, 91, 69, 85, 92, 66, 82, 90, 78, 92, 100, 87, 105, 111, 149, 164, 169, 144, 162, 167, 140, 152, 153, 97, 110, 108, 88, 99, 96, 88, 96, 96, 82, 89, 90, 73, 83, 82, 99, 104, 104, 117, 123, 124, 137, 142, 140, 143, 149, 148, 174, 179, 177, 144, 150, 149, + 154, 161, 161, 137, 141, 139, 150, 158, 158, 122, 132, 135, 67, 80, 83, 80, 91, 94, 78, 89, 93, 99, 108, 111, 107, 117, 121, 97, 107, 112, 97, 110, 115, 106, 118, 125, 119, 133, 139, 139, 152, 157, 98, 115, 120, 129, 144, 148, 139, 152, 156, 108, 125, 131, 114, 131, 139, 106, 121, 127, 73, 92, 99, + 104, 120, 124, 85, 103, 109, 123, 138, 141, 66, 87, 93, 105, 121, 126, 58, 78, 86, 64, 80, 87, 65, 81, 88, 37, 54, 62, 32, 52, 59, 64, 78, 86, 42, 58, 66, 30, 47, 56, 32, 49, 57, 8, 24, 32, 15, 34, 42, 37, 54, 62, 52, 66, 74, 72, 86, 94, 75, 88, 97, 60, 75, 82, + 57, 74, 82, 58, 75, 82, 43, 60, 67, 17, 34, 41, 22, 43, 52, 57, 79, 87, 73, 94, 101, 75, 93, 102, 59, 82, 90, 44, 70, 78, 59, 81, 89, 60, 81, 88, 63, 83, 90, 52, 71, 78, 71, 88, 96, 61, 78, 84, 65, 84, 93, 78, 97, 105, 101, 118, 125, 72, 93, 100, 74, 93, 101, + 102, 119, 126, 82, 101, 109, 60, 84, 91, 99, 118, 124, 101, 120, 127, 90, 111, 120, 116, 133, 143, 98, 119, 128, 64, 84, 92, 73, 100, 109, 93, 117, 124, 96, 119, 127, 95, 119, 126, 109, 133, 140, 141, 157, 164, 99, 123, 130, 118, 137, 144, 129, 148, 154, 130, 151, 157, 119, 141, 147, 112, 137, 146, + 114, 138, 146, 117, 138, 146, 109, 136, 145, 116, 142, 150, 123, 149, 158, 146, 166, 175, 140, 162, 169, 143, 163, 171, 141, 161, 167, 114, 141, 148, 115, 141, 149, 137, 159, 166, 139, 162, 167, 135, 158, 166, 144, 166, 174, 126, 154, 164, 125, 153, 165, 130, 158, 170, 135, 162, 173, 146, 173, 181, 152, 177, 185, + 166, 186, 193, 153, 177, 186, 163, 184, 191, 172, 190, 197, 171, 189, 196, 174, 192, 197, 165, 185, 191, 162, 183, 189, 160, 181, 188, 155, 179, 184, 170, 189, 195, 185, 200, 204, 188, 202, 206, 186, 200, 203, 174, 191, 196, 175, 193, 197, 179, 195, 200, 167, 187, 193, 168, 188, 194, 168, 189, 194, 175, 194, 200, + 179, 197, 199, 177, 196, 199, 185, 202, 205, 191, 207, 209, 176, 196, 202, 189, 206, 209, 185, 203, 207, 198, 212, 215, 199, 213, 216, 199, 214, 217, 186, 205, 208, 189, 207, 211, 195, 211, 214, 203, 216, 218, 204, 217, 219, 207, 219, 221, 214, 225, 224, 211, 223, 223, 213, 224, 225, 212, 225, 225, 214, 226, 226, + 215, 226, 226, 219, 228, 228, 221, 230, 231, 225, 234, 233, 225, 233, 233, 224, 233, 232, 225, 234, 233, 226, 234, 233, 227, 235, 234, 228, 236, 235, 231, 237, 236, 232, 237, 236, 232, 238, 237, 233, 239, 238, 233, 239, 238, 234, 240, 239, 233, 239, 238, 233, 239, 238, 233, 239, 238, 232, 237, 236, 231, 237, 235, + 200, 216, 222, 199, 215, 221, 199, 215, 221, 200, 216, 222, 200, 216, 222, 200, 216, 223, 200, 216, 223, 199, 215, 222, 199, 215, 222, 199, 215, 222, 198, 214, 220, 197, 213, 220, 194, 211, 218, 191, 209, 216, 188, 208, 215, 187, 206, 214, 186, 204, 212, 182, 201, 212, 181, 201, 212, 180, 200, 211, 178, 198, 209, + 177, 197, 209, 177, 197, 207, 176, 196, 207, 175, 195, 206, 174, 195, 206, 174, 194, 205, 174, 194, 205, 173, 193, 204, 173, 193, 204, 173, 193, 204, 173, 191, 205, 168, 190, 202, 168, 190, 202, 165, 188, 200, 164, 187, 200, 161, 185, 198, 159, 184, 196, 156, 181, 193, 154, 180, 192, 152, 178, 190, 151, 177, 190, + 150, 175, 189, 148, 173, 187, 148, 173, 187, 142, 169, 183, 138, 165, 181, 134, 164, 179, 130, 159, 174, 129, 157, 174, 123, 153, 170, 124, 152, 169, 123, 152, 169, 119, 148, 166, 119, 149, 166, 114, 145, 163, 110, 142, 160, 107, 139, 156, 105, 136, 153, 100, 133, 149, 99, 131, 150, 99, 129, 148, 96, 126, 143, + 93, 125, 140, 94, 122, 137, 92, 120, 135, 90, 119, 134, 89, 118, 133, 88, 117, 132, 90, 116, 131, 86, 114, 128, 83, 111, 125, 82, 110, 124, 82, 109, 122, 80, 106, 122, 78, 104, 120, 77, 104, 118, 74, 101, 115, 74, 100, 114, 71, 97, 111, 70, 96, 110, 66, 92, 106, 66, 93, 104, 64, 90, 102, + 64, 90, 102, 61, 87, 99, 61, 88, 100, 64, 91, 102, 64, 94, 103, 66, 97, 106, 70, 102, 112, 73, 108, 120, 84, 120, 133, 94, 132, 145, 111, 148, 163, 129, 163, 178, 140, 172, 186, 143, 174, 188, 144, 175, 188, 138, 169, 183, 134, 165, 179, 123, 155, 169, 107, 136, 150, 85, 114, 124, 74, 96, 102, + 72, 90, 96, 70, 88, 93, 90, 106, 113, 100, 117, 123, 91, 109, 116, 92, 111, 118, 92, 110, 117, 133, 147, 152, 93, 109, 112, 79, 90, 90, 81, 89, 89, 117, 122, 123, 71, 78, 81, 56, 65, 67, 56, 64, 66, 67, 74, 74, 108, 113, 113, 109, 113, 112, 121, 127, 125, 98, 106, 104, 131, 138, 137, + 142, 150, 150, 164, 170, 171, 128, 138, 138, 97, 108, 110, 57, 71, 74, 92, 102, 105, 67, 80, 83, 105, 114, 117, 85, 96, 101, 112, 121, 127, 118, 127, 132, 94, 108, 115, 119, 135, 141, 88, 109, 116, 61, 83, 90, 110, 128, 135, 132, 147, 153, 122, 137, 146, 121, 136, 145, 107, 123, 130, 89, 107, 114, + 73, 93, 99, 99, 115, 122, 106, 123, 130, 111, 125, 133, 72, 91, 100, 81, 98, 106, 73, 89, 97, 78, 93, 99, 82, 96, 101, 46, 64, 71, 59, 74, 80, 53, 67, 75, 34, 45, 54, 67, 77, 84, 85, 97, 103, 68, 79, 85, 50, 61, 68, 44, 57, 64, 69, 83, 92, 58, 73, 82, 63, 80, 89, + 66, 83, 92, 64, 83, 90, 38, 61, 69, 57, 77, 84, 55, 76, 83, 60, 81, 90, 72, 92, 99, 74, 97, 105, 86, 105, 111, 95, 112, 119, 78, 97, 103, 82, 100, 106, 68, 88, 95, 80, 96, 102, 97, 112, 119, 107, 120, 127, 68, 83, 92, 74, 90, 98, 78, 100, 107, 96, 115, 122, 100, 118, 126, + 119, 135, 142, 106, 123, 129, 115, 130, 137, 100, 119, 124, 71, 94, 99, 84, 106, 115, 111, 130, 139, 101, 122, 131, 127, 144, 152, 104, 125, 133, 100, 121, 128, 86, 111, 118, 108, 131, 138, 78, 105, 114, 99, 123, 131, 110, 132, 139, 79, 106, 113, 95, 119, 127, 133, 153, 158, 147, 164, 169, 143, 161, 165, + 158, 172, 176, 126, 148, 154, 118, 142, 148, 134, 155, 162, 138, 159, 166, 140, 161, 169, 145, 165, 173, 133, 156, 164, 122, 149, 154, 150, 168, 173, 126, 150, 157, 107, 137, 144, 139, 161, 167, 139, 161, 168, 140, 164, 172, 150, 172, 180, 125, 155, 166, 140, 164, 173, 152, 173, 181, 146, 172, 180, 143, 170, 178, + 164, 185, 192, 161, 182, 190, 158, 180, 188, 157, 180, 187, 168, 188, 193, 169, 188, 193, 163, 184, 189, 162, 182, 189, 174, 191, 197, 143, 170, 178, 167, 185, 191, 172, 190, 195, 173, 191, 196, 176, 193, 199, 187, 200, 203, 176, 192, 197, 184, 199, 202, 175, 193, 199, 169, 189, 194, 163, 185, 191, 165, 187, 193, + 170, 190, 195, 178, 197, 201, 179, 197, 200, 196, 209, 213, 190, 205, 210, 180, 200, 203, 184, 202, 206, 173, 197, 201, 188, 206, 210, 197, 213, 215, 198, 213, 216, 193, 210, 214, 195, 212, 215, 202, 216, 218, 201, 216, 218, 202, 216, 218, 208, 221, 221, 211, 223, 223, 211, 223, 223, 213, 225, 225, 215, 227, 227, + 214, 226, 226, 216, 227, 227, 220, 230, 229, 222, 231, 231, 224, 232, 231, 222, 232, 231, 224, 232, 231, 224, 232, 231, 225, 233, 232, 227, 235, 234, 230, 236, 235, 230, 237, 236, 231, 237, 236, 232, 238, 237, 232, 238, 237, 231, 237, 236, 232, 238, 237, 232, 238, 236, 232, 238, 237, 232, 237, 237, 231, 237, 236, + 202, 217, 223, 201, 217, 223, 202, 217, 223, 200, 216, 222, 200, 216, 222, 201, 217, 223, 200, 216, 222, 199, 216, 221, 200, 215, 220, 199, 215, 221, 199, 215, 221, 196, 212, 219, 192, 211, 218, 192, 210, 217, 188, 207, 215, 187, 206, 214, 186, 205, 213, 185, 204, 213, 182, 201, 212, 181, 200, 211, 179, 199, 210, + 178, 198, 209, 178, 198, 209, 176, 196, 207, 176, 196, 207, 175, 195, 206, 175, 195, 206, 174, 194, 205, 174, 194, 205, 174, 194, 205, 173, 193, 204, 171, 190, 203, 170, 190, 203, 168, 190, 202, 167, 189, 201, 164, 187, 199, 161, 185, 197, 160, 184, 196, 157, 181, 193, 156, 180, 192, 154, 178, 190, 153, 177, 191, + 149, 174, 188, 148, 173, 187, 144, 169, 185, 138, 165, 181, 137, 164, 180, 136, 163, 178, 132, 161, 176, 132, 161, 176, 128, 157, 172, 130, 157, 173, 127, 155, 172, 122, 151, 168, 120, 149, 166, 114, 144, 162, 113, 143, 160, 110, 141, 158, 103, 136, 152, 104, 135, 154, 103, 133, 152, 101, 131, 150, 99, 129, 146, + 98, 127, 143, 96, 125, 140, 94, 123, 138, 94, 123, 138, 93, 122, 137, 94, 122, 136, 91, 117, 133, 88, 115, 130, 85, 113, 127, 82, 110, 124, 80, 107, 121, 78, 104, 120, 79, 104, 121, 76, 103, 117, 73, 100, 114, 74, 100, 114, 71, 97, 112, 70, 96, 109, 68, 94, 107, 65, 92, 103, 63, 91, 102, + 60, 88, 99, 61, 87, 99, 61, 88, 99, 60, 88, 99, 64, 93, 104, 65, 95, 106, 69, 102, 113, 72, 107, 120, 78, 115, 129, 94, 131, 146, 115, 150, 166, 132, 165, 181, 142, 173, 188, 145, 175, 189, 142, 174, 187, 142, 173, 187, 143, 173, 186, 145, 170, 182, 129, 156, 168, 104, 136, 147, 86, 109, 115, + 72, 91, 98, 78, 97, 103, 91, 111, 117, 87, 108, 114, 102, 121, 128, 100, 119, 126, 93, 112, 119, 107, 122, 128, 64, 74, 74, 83, 91, 91, 72, 79, 79, 85, 92, 92, 105, 109, 112, 80, 87, 87, 53, 61, 62, 64, 69, 70, 70, 74, 74, 80, 85, 82, 54, 60, 58, 116, 122, 120, 101, 109, 108, + 147, 152, 152, 138, 146, 147, 123, 132, 134, 83, 95, 97, 69, 82, 85, 63, 75, 78, 78, 91, 94, 69, 82, 87, 108, 119, 124, 100, 114, 120, 94, 109, 116, 103, 120, 126, 118, 134, 140, 128, 144, 149, 142, 157, 161, 133, 150, 155, 122, 141, 148, 132, 148, 156, 114, 132, 140, 126, 140, 148, 84, 105, 113, + 77, 99, 107, 99, 118, 126, 97, 116, 125, 104, 125, 133, 134, 150, 158, 61, 83, 93, 58, 75, 83, 50, 71, 78, 62, 81, 88, 72, 88, 95, 82, 93, 101, 56, 71, 81, 50, 61, 69, 37, 51, 59, 21, 39, 46, 18, 37, 45, 36, 49, 56, 29, 46, 54, 70, 83, 92, 90, 105, 114, 81, 100, 109, + 77, 95, 103, 84, 100, 108, 75, 94, 100, 60, 79, 85, 49, 67, 75, 29, 51, 61, 33, 55, 64, 59, 78, 85, 71, 89, 96, 71, 89, 96, 68, 85, 91, 83, 98, 104, 72, 86, 92, 50, 70, 77, 60, 78, 86, 74, 90, 98, 96, 108, 116, 79, 95, 103, 52, 76, 84, 56, 81, 89, 69, 93, 101, + 82, 101, 109, 74, 96, 102, 69, 91, 97, 92, 111, 116, 104, 124, 130, 80, 104, 113, 84, 107, 116, 116, 134, 143, 115, 134, 141, 107, 128, 136, 116, 136, 142, 89, 112, 121, 83, 108, 117, 119, 139, 147, 105, 128, 135, 96, 121, 127, 111, 131, 138, 90, 113, 121, 115, 135, 142, 107, 130, 137, 106, 131, 137, + 101, 128, 134, 126, 148, 153, 138, 158, 163, 146, 164, 169, 147, 164, 170, 142, 160, 168, 115, 140, 151, 129, 153, 161, 149, 168, 174, 120, 147, 153, 122, 148, 154, 137, 160, 165, 148, 167, 173, 134, 159, 165, 156, 175, 181, 149, 172, 179, 159, 179, 186, 138, 164, 171, 148, 172, 178, 156, 178, 184, 163, 183, 190, + 163, 183, 190, 164, 184, 192, 155, 178, 186, 139, 168, 177, 168, 188, 193, 154, 177, 183, 162, 183, 188, 167, 186, 192, 151, 175, 183, 163, 183, 190, 147, 172, 179, 161, 181, 188, 180, 195, 200, 163, 184, 189, 168, 187, 192, 170, 189, 192, 186, 200, 202, 183, 198, 201, 173, 191, 196, 177, 194, 199, 167, 188, 193, + 170, 191, 196, 170, 192, 196, 180, 198, 202, 183, 201, 205, 191, 206, 209, 191, 206, 209, 189, 205, 209, 185, 203, 209, 172, 196, 201, 184, 203, 207, 198, 213, 216, 197, 213, 216, 195, 212, 214, 196, 212, 214, 209, 221, 223, 204, 217, 219, 207, 220, 222, 208, 220, 222, 210, 222, 221, 213, 225, 225, 215, 227, 227, + 218, 228, 228, 216, 226, 226, 216, 227, 226, 220, 229, 229, 223, 231, 230, 224, 232, 231, 225, 232, 231, 221, 229, 228, 223, 231, 230, 226, 234, 233, 226, 234, 233, 228, 234, 233, 230, 237, 236, 230, 236, 235, 232, 238, 237, 232, 238, 237, 230, 236, 236, 232, 238, 236, 231, 237, 235, 230, 237, 234, 230, 237, 234, + 203, 217, 223, 203, 218, 224, 202, 217, 223, 202, 216, 222, 202, 217, 223, 201, 216, 222, 200, 216, 222, 200, 216, 222, 199, 215, 222, 199, 215, 222, 198, 214, 221, 196, 212, 219, 193, 211, 218, 192, 210, 217, 189, 208, 215, 188, 207, 215, 186, 205, 213, 186, 204, 213, 184, 202, 212, 184, 202, 212, 181, 200, 210, + 180, 200, 209, 178, 198, 209, 177, 197, 208, 176, 196, 207, 177, 197, 208, 176, 196, 207, 175, 195, 206, 175, 195, 206, 174, 194, 205, 174, 194, 205, 173, 193, 204, 171, 192, 202, 171, 190, 203, 166, 188, 199, 165, 187, 199, 165, 187, 198, 162, 185, 196, 160, 183, 195, 157, 180, 192, 152, 177, 190, 151, 176, 190, + 149, 175, 188, 145, 171, 186, 142, 168, 183, 141, 167, 183, 136, 164, 180, 137, 164, 179, 133, 161, 177, 134, 161, 177, 130, 158, 174, 127, 157, 171, 126, 154, 169, 122, 151, 168, 117, 147, 164, 113, 143, 160, 108, 140, 156, 109, 139, 156, 110, 140, 157, 107, 138, 156, 108, 138, 156, 104, 134, 152, 103, 132, 150, + 100, 129, 147, 99, 128, 144, 98, 127, 142, 97, 126, 141, 94, 123, 138, 92, 120, 135, 93, 119, 135, 88, 115, 131, 84, 112, 127, 85, 112, 126, 80, 107, 122, 77, 103, 119, 75, 102, 117, 75, 102, 117, 74, 100, 114, 73, 100, 114, 71, 98, 112, 70, 97, 111, 68, 95, 109, 65, 92, 105, 63, 91, 102, + 62, 90, 101, 60, 88, 99, 61, 89, 100, 59, 88, 99, 62, 92, 103, 64, 96, 107, 69, 104, 116, 75, 110, 122, 84, 120, 133, 96, 133, 148, 115, 149, 165, 133, 165, 182, 140, 171, 187, 142, 174, 187, 140, 173, 186, 140, 172, 185, 148, 177, 189, 146, 174, 186, 135, 168, 181, 130, 158, 171, 116, 137, 146, + 98, 118, 125, 89, 109, 116, 91, 111, 117, 96, 115, 122, 105, 123, 130, 105, 123, 129, 100, 119, 125, 88, 106, 111, 38, 47, 46, 38, 46, 46, 55, 61, 61, 63, 69, 70, 61, 66, 67, 25, 30, 30, 30, 32, 32, 39, 41, 41, 29, 34, 33, 42, 46, 45, 53, 58, 56, 66, 74, 73, 91, 98, 97, + 104, 112, 112, 131, 137, 137, 119, 128, 130, 74, 87, 90, 80, 93, 94, 93, 104, 107, 113, 123, 126, 101, 112, 115, 98, 109, 115, 95, 111, 117, 123, 138, 142, 133, 148, 153, 147, 160, 163, 136, 154, 158, 115, 136, 142, 131, 151, 157, 141, 157, 164, 106, 130, 139, 114, 133, 143, 106, 126, 135, 120, 138, 146, + 105, 124, 135, 92, 115, 124, 108, 129, 139, 96, 119, 131, 116, 136, 145, 130, 146, 154, 70, 90, 99, 74, 93, 101, 75, 95, 101, 87, 103, 109, 83, 100, 106, 95, 107, 116, 83, 96, 104, 58, 72, 80, 88, 101, 107, 74, 89, 95, 62, 75, 82, 38, 54, 63, 26, 46, 56, 25, 46, 59, 81, 99, 107, + 75, 94, 102, 71, 90, 96, 48, 69, 76, 65, 83, 90, 92, 105, 111, 72, 85, 93, 72, 88, 95, 33, 49, 57, 52, 67, 73, 52, 68, 73, 51, 66, 73, 34, 52, 59, 62, 78, 85, 87, 100, 106, 101, 114, 121, 91, 104, 112, 72, 88, 97, 46, 66, 74, 88, 102, 110, 99, 117, 125, 72, 91, 100, + 64, 87, 96, 81, 98, 104, 101, 117, 123, 66, 87, 95, 90, 112, 119, 109, 128, 136, 73, 97, 108, 92, 114, 123, 72, 98, 108, 130, 149, 156, 101, 122, 131, 99, 122, 130, 99, 126, 136, 83, 111, 121, 83, 110, 119, 115, 137, 142, 82, 106, 114, 81, 105, 112, 79, 105, 110, 77, 105, 110, 92, 118, 123, + 126, 146, 150, 112, 138, 144, 107, 135, 141, 104, 130, 138, 118, 141, 149, 128, 147, 157, 142, 161, 168, 130, 155, 161, 122, 149, 154, 148, 168, 174, 129, 154, 160, 134, 158, 164, 131, 157, 163, 128, 154, 161, 153, 172, 178, 166, 184, 189, 161, 180, 186, 152, 174, 179, 141, 167, 173, 138, 164, 170, 153, 174, 180, + 165, 184, 189, 165, 185, 191, 176, 193, 198, 170, 188, 193, 166, 187, 191, 172, 190, 194, 157, 179, 184, 166, 186, 191, 172, 190, 195, 155, 177, 184, 151, 174, 181, 147, 171, 178, 151, 175, 182, 168, 186, 192, 162, 182, 187, 163, 183, 187, 172, 189, 193, 182, 197, 201, 188, 201, 204, 178, 195, 200, 174, 193, 198, + 166, 188, 193, 160, 185, 191, 178, 196, 202, 187, 203, 207, 187, 203, 206, 188, 205, 208, 194, 208, 212, 189, 207, 210, 187, 205, 209, 180, 201, 206, 191, 209, 212, 197, 213, 214, 197, 212, 214, 201, 215, 217, 205, 218, 220, 206, 219, 221, 204, 217, 219, 208, 221, 221, 211, 223, 223, 214, 225, 225, 216, 227, 227, + 219, 228, 228, 218, 228, 228, 216, 226, 226, 218, 228, 228, 220, 228, 228, 220, 230, 228, 220, 230, 228, 219, 229, 227, 222, 230, 229, 223, 231, 230, 226, 233, 232, 226, 233, 232, 229, 235, 234, 228, 234, 233, 230, 236, 235, 231, 237, 236, 229, 236, 234, 230, 236, 233, 230, 236, 235, 230, 236, 234, 230, 236, 234, + 203, 217, 223, 203, 218, 224, 202, 217, 223, 202, 217, 223, 201, 217, 223, 202, 217, 223, 200, 216, 222, 200, 216, 222, 199, 215, 222, 198, 214, 222, 198, 214, 221, 194, 212, 219, 194, 212, 219, 192, 210, 217, 190, 209, 216, 188, 207, 215, 187, 206, 214, 186, 204, 213, 185, 204, 212, 183, 202, 210, 184, 203, 211, + 181, 201, 209, 180, 200, 209, 178, 198, 208, 176, 197, 208, 176, 196, 207, 175, 195, 206, 175, 195, 206, 174, 194, 205, 175, 195, 206, 173, 193, 204, 174, 194, 205, 172, 192, 203, 170, 190, 201, 168, 189, 200, 167, 188, 199, 165, 187, 199, 163, 185, 197, 160, 182, 194, 157, 180, 192, 154, 177, 192, 150, 175, 189, + 146, 172, 186, 145, 171, 186, 140, 166, 182, 138, 165, 180, 138, 164, 180, 137, 164, 179, 137, 163, 179, 136, 162, 178, 132, 160, 175, 129, 158, 173, 124, 154, 169, 119, 151, 166, 116, 147, 164, 115, 145, 162, 114, 144, 161, 115, 144, 161, 114, 143, 160, 112, 142, 159, 112, 140, 157, 109, 138, 155, 109, 137, 154, + 106, 135, 152, 104, 132, 149, 102, 130, 147, 102, 131, 146, 99, 126, 142, 96, 122, 138, 91, 118, 134, 90, 117, 133, 83, 112, 127, 82, 111, 126, 80, 106, 122, 77, 104, 120, 76, 103, 118, 75, 102, 116, 73, 100, 114, 75, 102, 116, 73, 100, 114, 70, 97, 111, 69, 95, 109, 64, 91, 105, 63, 90, 103, + 61, 89, 102, 60, 89, 100, 59, 88, 99, 59, 89, 99, 61, 92, 103, 67, 100, 113, 69, 103, 116, 73, 109, 122, 77, 116, 130, 97, 134, 148, 118, 150, 166, 134, 162, 178, 142, 169, 184, 144, 172, 185, 143, 172, 183, 141, 172, 185, 140, 172, 186, 143, 173, 186, 141, 172, 186, 137, 166, 179, 127, 152, 166, + 104, 133, 143, 83, 108, 114, 77, 100, 105, 75, 98, 104, 101, 120, 126, 107, 126, 132, 88, 109, 114, 81, 101, 106, 52, 58, 58, 36, 44, 43, 34, 41, 41, 27, 34, 33, 32, 36, 37, 33, 37, 35, 32, 36, 34, 18, 22, 22, 20, 23, 23, 26, 30, 29, 26, 32, 32, 35, 43, 43, 86, 91, 92, + 73, 79, 81, 120, 126, 127, 104, 113, 115, 125, 133, 134, 99, 110, 111, 85, 97, 98, 65, 80, 83, 96, 108, 111, 54, 70, 75, 109, 124, 129, 114, 129, 134, 111, 129, 133, 132, 152, 156, 151, 166, 170, 173, 184, 188, 122, 142, 149, 130, 149, 158, 155, 168, 174, 128, 148, 156, 131, 149, 157, 133, 150, 158, + 106, 128, 138, 102, 123, 135, 107, 128, 138, 146, 161, 169, 66, 93, 105, 117, 135, 145, 109, 128, 137, 72, 92, 100, 52, 72, 79, 63, 81, 87, 113, 127, 134, 92, 108, 116, 94, 109, 117, 101, 117, 125, 91, 107, 114, 88, 104, 111, 76, 94, 101, 90, 103, 110, 67, 84, 92, 41, 63, 73, 50, 72, 83, + 64, 82, 90, 57, 75, 81, 42, 61, 68, 39, 54, 61, 56, 71, 76, 64, 77, 83, 54, 67, 75, 72, 84, 90, 14, 33, 39, 22, 40, 47, 59, 73, 78, 87, 99, 105, 50, 66, 72, 20, 43, 51, 10, 35, 42, 33, 52, 58, 83, 99, 104, 58, 74, 83, 50, 68, 78, 86, 101, 108, 70, 87, 95, + 96, 109, 116, 91, 109, 116, 93, 109, 116, 92, 110, 117, 55, 81, 92, 67, 93, 104, 84, 106, 117, 112, 131, 141, 90, 113, 124, 97, 120, 129, 94, 117, 126, 142, 158, 164, 115, 139, 147, 92, 118, 128, 137, 155, 162, 116, 139, 145, 107, 130, 136, 115, 135, 141, 81, 106, 114, 99, 122, 129, 95, 120, 125, + 68, 99, 105, 114, 138, 144, 121, 143, 149, 120, 144, 150, 111, 135, 142, 125, 146, 154, 149, 165, 173, 151, 169, 174, 140, 162, 168, 146, 167, 173, 138, 161, 168, 145, 167, 173, 143, 163, 170, 154, 173, 179, 105, 136, 145, 152, 174, 179, 154, 174, 180, 164, 183, 188, 144, 168, 174, 146, 169, 175, 148, 171, 176, + 150, 173, 178, 165, 184, 189, 168, 187, 193, 168, 187, 192, 160, 182, 187, 160, 181, 186, 164, 184, 188, 160, 181, 187, 170, 188, 193, 167, 185, 191, 157, 177, 184, 149, 171, 180, 152, 174, 181, 152, 175, 182, 162, 182, 187, 147, 172, 178, 151, 174, 179, 177, 193, 199, 180, 196, 201, 183, 198, 202, 187, 202, 206, + 176, 194, 199, 168, 190, 195, 172, 192, 198, 182, 199, 204, 185, 203, 206, 190, 206, 209, 198, 211, 215, 197, 211, 214, 192, 208, 211, 187, 206, 209, 186, 206, 209, 195, 212, 213, 198, 213, 215, 197, 213, 215, 202, 215, 218, 209, 221, 221, 202, 216, 218, 205, 218, 219, 211, 223, 224, 212, 224, 224, 215, 226, 226, + 217, 227, 227, 216, 227, 227, 218, 228, 228, 219, 230, 228, 215, 226, 224, 216, 227, 227, 220, 229, 228, 217, 228, 226, 217, 228, 226, 221, 228, 227, 222, 230, 229, 223, 231, 230, 227, 233, 232, 229, 235, 234, 229, 235, 234, 230, 236, 234, 230, 236, 234, 229, 235, 234, 229, 236, 233, 228, 234, 233, 229, 235, 234, + 204, 218, 224, 203, 217, 223, 203, 217, 223, 203, 217, 223, 201, 217, 223, 201, 217, 223, 200, 216, 222, 199, 215, 221, 199, 215, 222, 198, 214, 221, 198, 214, 221, 196, 213, 220, 193, 211, 218, 192, 210, 217, 190, 209, 216, 188, 207, 215, 187, 206, 214, 186, 205, 213, 185, 204, 212, 184, 203, 211, 183, 202, 210, + 180, 200, 208, 179, 200, 208, 178, 198, 209, 177, 197, 208, 176, 196, 207, 176, 196, 207, 175, 195, 206, 174, 194, 205, 174, 194, 205, 174, 194, 205, 174, 194, 205, 172, 192, 203, 171, 191, 202, 169, 189, 200, 166, 187, 198, 166, 187, 198, 163, 185, 197, 159, 182, 194, 156, 179, 192, 152, 176, 191, 149, 174, 188, + 145, 172, 186, 141, 167, 183, 140, 166, 182, 137, 165, 181, 138, 164, 180, 136, 162, 178, 135, 162, 178, 134, 161, 176, 131, 159, 174, 126, 157, 172, 126, 155, 171, 121, 152, 167, 120, 150, 167, 120, 150, 167, 121, 151, 166, 118, 147, 163, 117, 146, 163, 117, 144, 161, 116, 144, 161, 114, 142, 159, 114, 141, 158, + 108, 137, 154, 106, 135, 152, 104, 132, 149, 101, 130, 146, 97, 126, 141, 96, 124, 139, 90, 118, 134, 88, 116, 132, 83, 112, 127, 82, 111, 126, 79, 108, 123, 75, 104, 119, 75, 104, 119, 73, 102, 117, 73, 100, 114, 72, 99, 113, 72, 98, 113, 70, 98, 112, 65, 93, 107, 64, 92, 106, 63, 92, 104, + 63, 91, 103, 63, 90, 104, 61, 89, 103, 61, 90, 104, 65, 96, 109, 66, 100, 113, 67, 102, 115, 78, 114, 127, 92, 127, 141, 103, 138, 152, 114, 148, 162, 127, 157, 171, 132, 161, 175, 133, 163, 176, 138, 167, 179, 139, 169, 182, 143, 173, 187, 145, 174, 187, 147, 175, 188, 137, 167, 181, 134, 163, 177, + 111, 144, 156, 95, 122, 130, 86, 107, 114, 73, 95, 101, 85, 105, 111, 109, 128, 133, 102, 120, 126, 124, 143, 148, 41, 64, 69, 48, 55, 54, 32, 40, 40, 24, 31, 30, 33, 38, 36, 34, 37, 35, 23, 26, 25, 32, 33, 33, 26, 29, 29, 24, 27, 27, 17, 23, 23, 21, 26, 27, 20, 25, 28, + 64, 67, 69, 76, 82, 83, 97, 106, 108, 114, 123, 125, 126, 136, 135, 93, 101, 101, 71, 81, 80, 37, 50, 51, 68, 81, 81, 109, 122, 124, 120, 137, 140, 138, 153, 157, 133, 153, 159, 171, 183, 188, 147, 165, 172, 174, 186, 189, 146, 164, 170, 170, 183, 187, 140, 160, 167, 158, 172, 179, 97, 126, 136, + 153, 168, 175, 115, 137, 147, 102, 127, 137, 113, 134, 145, 140, 156, 164, 92, 116, 127, 108, 130, 139, 109, 130, 139, 98, 118, 124, 55, 76, 81, 53, 73, 79, 49, 73, 79, 48, 69, 76, 62, 84, 90, 63, 82, 89, 87, 103, 109, 68, 85, 92, 67, 82, 90, 53, 71, 78, 81, 98, 106, 78, 96, 105, + 44, 64, 73, 57, 74, 82, 54, 71, 77, 32, 51, 57, 46, 62, 68, 40, 55, 61, 60, 72, 79, 59, 72, 79, 79, 92, 97, 79, 93, 98, 62, 78, 84, 66, 82, 88, 72, 87, 93, 97, 109, 114, 96, 110, 115, 79, 95, 100, 66, 83, 89, 76, 91, 96, 78, 94, 101, 84, 99, 106, 90, 104, 111, + 69, 87, 94, 69, 88, 95, 56, 77, 85, 62, 83, 93, 78, 100, 109, 88, 109, 118, 95, 115, 125, 82, 106, 116, 70, 97, 108, 90, 114, 123, 89, 114, 123, 88, 112, 120, 95, 118, 127, 141, 158, 165, 88, 116, 125, 97, 122, 131, 92, 116, 124, 69, 96, 105, 97, 119, 127, 101, 124, 131, 91, 116, 122, + 102, 126, 133, 80, 110, 117, 80, 109, 117, 125, 147, 151, 127, 150, 155, 122, 144, 151, 131, 152, 158, 163, 177, 182, 151, 171, 176, 143, 165, 171, 160, 178, 184, 156, 175, 180, 160, 177, 182, 144, 166, 172, 163, 179, 185, 141, 165, 171, 162, 180, 184, 135, 161, 168, 168, 185, 189, 150, 172, 178, 141, 167, 173, + 165, 183, 188, 165, 184, 189, 161, 183, 188, 180, 195, 198, 178, 194, 198, 167, 185, 189, 160, 181, 185, 165, 184, 190, 162, 182, 187, 162, 182, 187, 171, 187, 193, 163, 182, 189, 162, 181, 187, 138, 164, 174, 154, 174, 182, 170, 187, 192, 157, 177, 185, 144, 168, 176, 185, 200, 202, 182, 198, 202, 165, 186, 191, + 181, 198, 201, 182, 198, 202, 177, 197, 201, 174, 194, 198, 184, 201, 205, 184, 202, 205, 189, 205, 209, 205, 216, 219, 202, 215, 218, 198, 212, 216, 194, 211, 212, 195, 211, 213, 196, 213, 214, 198, 214, 216, 205, 218, 220, 205, 218, 220, 207, 220, 223, 202, 216, 218, 209, 221, 222, 213, 225, 225, 219, 229, 229, + 215, 226, 226, 215, 226, 226, 217, 227, 227, 217, 227, 227, 218, 228, 228, 214, 226, 224, 212, 225, 223, 218, 228, 226, 219, 228, 226, 219, 227, 226, 221, 229, 227, 222, 230, 229, 222, 230, 229, 226, 233, 232, 228, 234, 233, 227, 233, 231, 228, 234, 232, 229, 236, 233, 229, 236, 233, 229, 234, 233, 228, 234, 233, + 203, 217, 223, 203, 217, 223, 200, 217, 222, 200, 216, 223, 201, 216, 222, 200, 216, 222, 200, 216, 222, 200, 216, 221, 199, 215, 222, 199, 215, 221, 196, 214, 221, 195, 213, 220, 193, 211, 218, 192, 210, 217, 190, 209, 216, 188, 207, 216, 188, 207, 215, 186, 205, 213, 186, 205, 213, 184, 203, 211, 183, 202, 210, + 182, 202, 210, 179, 200, 207, 178, 198, 209, 177, 197, 208, 177, 197, 208, 175, 195, 206, 174, 194, 205, 174, 194, 205, 176, 195, 206, 176, 195, 206, 174, 193, 204, 173, 193, 204, 171, 191, 202, 169, 189, 200, 165, 187, 198, 163, 185, 197, 158, 181, 193, 156, 180, 192, 151, 177, 191, 150, 175, 189, 146, 173, 187, + 144, 172, 186, 142, 169, 183, 140, 167, 182, 138, 165, 180, 137, 164, 180, 135, 163, 179, 134, 163, 178, 133, 161, 176, 132, 160, 175, 131, 158, 174, 127, 157, 172, 126, 155, 170, 128, 155, 172, 126, 154, 170, 125, 152, 169, 123, 151, 168, 122, 150, 167, 120, 148, 166, 121, 149, 164, 121, 147, 163, 118, 144, 160, + 112, 141, 156, 109, 137, 154, 104, 134, 149, 103, 132, 147, 98, 127, 142, 94, 122, 138, 90, 119, 134, 87, 116, 131, 83, 112, 127, 81, 110, 125, 77, 106, 121, 76, 105, 120, 75, 104, 119, 72, 101, 116, 71, 99, 113, 71, 99, 113, 68, 98, 112, 69, 96, 110, 65, 95, 109, 63, 92, 106, 63, 91, 105, + 63, 92, 106, 69, 98, 112, 79, 109, 123, 87, 116, 130, 89, 119, 133, 93, 123, 137, 104, 133, 148, 110, 140, 154, 113, 144, 157, 119, 149, 161, 117, 150, 163, 124, 155, 167, 128, 159, 169, 131, 161, 173, 135, 163, 176, 140, 168, 179, 142, 172, 185, 146, 175, 189, 145, 173, 186, 150, 175, 188, 144, 169, 181, + 134, 159, 172, 119, 144, 156, 100, 122, 134, 87, 105, 115, 86, 105, 115, 100, 119, 127, 124, 142, 148, 96, 120, 126, 77, 98, 104, 44, 60, 63, 30, 39, 40, 21, 27, 27, 10, 13, 11, 35, 38, 36, 29, 32, 31, 23, 26, 26, 20, 22, 22, 6, 8, 8, 0, 0, 2, 6, 8, 11, 14, 16, 19, + 32, 37, 40, 70, 74, 77, 86, 92, 92, 73, 79, 78, 50, 57, 56, 48, 57, 56, 13, 26, 25, 7, 22, 21, 26, 43, 44, 58, 76, 77, 151, 163, 164, 136, 155, 159, 192, 201, 204, 139, 161, 168, 162, 180, 186, 173, 187, 194, 184, 197, 201, 173, 190, 194, 167, 184, 190, 149, 171, 178, 153, 173, 181, + 134, 155, 162, 127, 148, 157, 137, 155, 165, 105, 130, 140, 120, 142, 151, 120, 142, 151, 125, 145, 153, 110, 132, 140, 107, 129, 135, 115, 132, 138, 91, 110, 116, 68, 90, 96, 71, 92, 98, 59, 76, 81, 87, 103, 108, 76, 92, 97, 90, 104, 109, 70, 84, 89, 50, 67, 73, 35, 54, 61, 55, 72, 78, + 73, 90, 97, 70, 86, 93, 72, 87, 94, 83, 96, 101, 61, 76, 81, 51, 67, 73, 32, 49, 56, 58, 71, 78, 56, 71, 78, 77, 91, 97, 65, 82, 87, 74, 88, 94, 67, 82, 88, 62, 81, 86, 51, 71, 77, 56, 77, 82, 76, 94, 100, 110, 125, 130, 70, 87, 94, 64, 82, 89, 54, 74, 83, + 81, 97, 104, 72, 91, 99, 73, 91, 99, 64, 86, 95, 52, 75, 84, 53, 76, 84, 74, 94, 103, 81, 102, 111, 129, 147, 155, 92, 115, 124, 93, 116, 124, 70, 96, 104, 94, 115, 123, 61, 88, 97, 132, 150, 157, 119, 140, 149, 113, 133, 144, 119, 138, 147, 94, 116, 124, 65, 91, 99, 112, 132, 139, + 108, 129, 138, 121, 141, 150, 104, 130, 137, 81, 111, 117, 98, 126, 132, 109, 134, 142, 110, 137, 144, 132, 153, 160, 142, 163, 169, 158, 176, 180, 155, 174, 179, 163, 180, 185, 155, 174, 180, 167, 183, 188, 154, 174, 180, 162, 179, 184, 161, 180, 185, 162, 180, 185, 142, 166, 173, 163, 181, 186, 154, 175, 181, + 153, 175, 181, 146, 171, 176, 167, 185, 190, 163, 184, 188, 178, 193, 196, 184, 198, 200, 172, 187, 192, 142, 166, 174, 149, 172, 179, 170, 187, 193, 160, 179, 186, 163, 181, 188, 162, 180, 187, 160, 179, 187, 148, 171, 179, 150, 172, 181, 168, 185, 192, 150, 173, 181, 146, 173, 178, 178, 194, 198, 179, 195, 199, + 171, 190, 194, 171, 190, 195, 193, 207, 210, 185, 201, 203, 179, 198, 201, 191, 206, 209, 193, 208, 211, 192, 208, 211, 208, 220, 222, 199, 213, 215, 199, 214, 215, 202, 215, 217, 203, 217, 219, 198, 214, 215, 197, 214, 215, 208, 221, 223, 206, 220, 219, 207, 220, 221, 200, 216, 217, 209, 221, 221, 218, 228, 228, + 216, 226, 226, 218, 227, 227, 216, 226, 227, 214, 225, 225, 216, 226, 227, 218, 229, 227, 212, 224, 222, 215, 225, 224, 216, 227, 225, 216, 228, 226, 218, 226, 225, 222, 230, 229, 222, 230, 229, 222, 230, 229, 225, 232, 231, 226, 232, 231, 225, 232, 230, 226, 233, 230, 227, 234, 231, 226, 232, 231, 226, 232, 231, + 201, 216, 222, 201, 217, 223, 201, 216, 224, 201, 217, 224, 199, 216, 223, 200, 216, 222, 199, 215, 221, 200, 216, 222, 199, 215, 221, 199, 214, 222, 197, 214, 221, 194, 212, 219, 192, 210, 217, 192, 210, 217, 191, 209, 216, 189, 208, 216, 188, 207, 215, 186, 205, 213, 185, 204, 212, 185, 204, 212, 183, 203, 211, + 182, 201, 209, 179, 200, 208, 178, 199, 206, 177, 197, 207, 177, 197, 208, 176, 196, 207, 176, 196, 207, 175, 195, 206, 175, 194, 205, 174, 194, 205, 174, 194, 205, 172, 191, 202, 171, 191, 202, 166, 187, 198, 163, 185, 196, 158, 182, 194, 156, 180, 192, 155, 179, 193, 151, 177, 191, 147, 174, 188, 146, 173, 187, + 146, 172, 186, 145, 171, 186, 141, 169, 183, 139, 166, 181, 139, 167, 182, 137, 165, 180, 137, 165, 180, 138, 163, 179, 136, 162, 178, 135, 161, 177, 135, 161, 176, 135, 161, 177, 134, 159, 175, 132, 158, 174, 130, 157, 172, 127, 155, 171, 125, 153, 169, 123, 153, 168, 123, 152, 167, 122, 149, 165, 120, 146, 162, + 117, 144, 159, 110, 139, 154, 107, 136, 151, 98, 128, 144, 95, 124, 139, 90, 119, 134, 88, 117, 132, 86, 115, 130, 82, 111, 126, 79, 108, 123, 76, 106, 121, 75, 104, 119, 74, 103, 117, 70, 100, 114, 72, 100, 114, 72, 99, 113, 70, 97, 111, 67, 95, 109, 69, 97, 111, 72, 99, 113, 79, 105, 119, + 91, 118, 131, 106, 130, 146, 110, 135, 153, 107, 133, 148, 104, 132, 146, 105, 133, 148, 104, 133, 149, 106, 134, 148, 104, 134, 146, 107, 138, 150, 115, 144, 156, 124, 151, 162, 128, 155, 166, 134, 162, 172, 141, 166, 178, 146, 171, 182, 148, 174, 186, 146, 172, 184, 144, 171, 184, 148, 172, 184, 149, 172, 185, + 139, 162, 175, 119, 145, 158, 110, 133, 142, 100, 121, 131, 105, 125, 135, 121, 140, 150, 124, 143, 152, 108, 129, 136, 77, 99, 107, 64, 80, 86, 48, 57, 62, 26, 32, 33, 13, 15, 12, 31, 33, 30, 25, 27, 26, 18, 20, 21, 9, 10, 11, 0, 0, 2, 2, 2, 5, 1, 2, 4, 1, 2, 4, + 3, 3, 5, 39, 41, 43, 12, 14, 15, 0, 1, 0, 1, 6, 4, 3, 15, 13, 19, 31, 31, 47, 59, 59, 96, 108, 109, 98, 114, 115, 135, 150, 153, 162, 177, 180, 154, 172, 177, 195, 204, 207, 180, 192, 197, 155, 177, 181, 177, 191, 195, 176, 191, 196, 182, 195, 200, 187, 199, 203, 176, 191, 196, + 126, 148, 156, 138, 157, 165, 122, 143, 152, 126, 147, 156, 130, 151, 159, 143, 160, 168, 114, 135, 144, 83, 109, 119, 92, 115, 122, 91, 114, 120, 96, 117, 122, 106, 123, 127, 88, 107, 113, 94, 112, 116, 59, 79, 84, 49, 69, 73, 26, 45, 49, 36, 50, 54, 59, 70, 75, 62, 73, 79, 48, 65, 71, + 58, 76, 83, 54, 72, 78, 72, 87, 93, 38, 59, 65, 54, 73, 79, 64, 84, 90, 93, 107, 113, 68, 85, 92, 33, 53, 61, 35, 53, 59, 55, 70, 76, 64, 80, 85, 61, 80, 85, 68, 86, 91, 105, 120, 125, 82, 99, 105, 84, 101, 106, 75, 96, 101, 63, 84, 91, 86, 102, 108, 62, 80, 87, + 38, 61, 70, 66, 86, 95, 86, 102, 110, 87, 104, 111, 69, 88, 94, 85, 101, 107, 70, 91, 97, 73, 95, 101, 71, 93, 102, 93, 114, 124, 103, 124, 131, 88, 111, 117, 83, 106, 113, 78, 101, 109, 61, 87, 97, 85, 108, 119, 101, 122, 133, 99, 121, 132, 104, 124, 132, 112, 132, 138, 71, 98, 105, + 107, 128, 138, 112, 133, 142, 112, 135, 144, 108, 134, 140, 99, 127, 134, 131, 153, 160, 98, 126, 135, 116, 140, 148, 115, 141, 150, 115, 143, 151, 142, 164, 172, 141, 164, 171, 156, 173, 181, 158, 176, 182, 167, 183, 189, 180, 193, 198, 153, 174, 179, 170, 186, 190, 166, 183, 188, 162, 180, 186, 148, 170, 177, + 169, 185, 190, 155, 175, 181, 134, 161, 169, 157, 176, 183, 165, 182, 187, 158, 177, 182, 170, 187, 192, 179, 193, 197, 166, 183, 188, 143, 168, 175, 158, 178, 184, 170, 186, 191, 162, 179, 186, 161, 180, 187, 149, 170, 180, 158, 179, 187, 152, 175, 183, 164, 185, 190, 158, 180, 185, 160, 183, 187, 182, 197, 201, + 176, 194, 197, 181, 198, 201, 175, 195, 198, 190, 205, 208, 188, 204, 207, 188, 205, 207, 191, 207, 210, 196, 211, 215, 197, 213, 215, 210, 222, 224, 205, 218, 220, 201, 215, 217, 204, 218, 220, 209, 221, 222, 197, 214, 215, 199, 215, 215, 207, 220, 220, 209, 222, 221, 206, 220, 219, 204, 218, 217, 213, 224, 224, + 217, 227, 227, 216, 227, 226, 218, 228, 228, 216, 226, 226, 214, 224, 224, 215, 226, 224, 216, 227, 225, 212, 225, 223, 215, 227, 225, 216, 227, 225, 217, 227, 225, 221, 228, 227, 222, 230, 229, 224, 232, 231, 226, 233, 232, 225, 232, 230, 224, 232, 229, 227, 233, 230, 225, 231, 230, 225, 231, 230, 225, 231, 230, + 201, 217, 224, 201, 217, 223, 200, 217, 224, 199, 216, 223, 200, 217, 222, 199, 216, 222, 200, 216, 222, 199, 215, 221, 199, 215, 221, 197, 214, 221, 196, 214, 220, 194, 212, 219, 194, 212, 219, 191, 210, 217, 191, 209, 216, 189, 208, 215, 188, 207, 214, 187, 206, 214, 186, 205, 213, 185, 204, 212, 185, 204, 212, + 184, 203, 211, 181, 201, 209, 180, 200, 208, 180, 200, 208, 176, 197, 206, 177, 197, 207, 176, 196, 207, 177, 196, 206, 175, 195, 206, 175, 195, 206, 171, 191, 202, 170, 191, 202, 166, 187, 199, 164, 185, 197, 161, 183, 195, 157, 181, 193, 155, 179, 191, 152, 178, 191, 150, 176, 190, 148, 174, 188, 149, 175, 189, + 145, 172, 186, 145, 172, 186, 145, 171, 185, 144, 170, 186, 142, 169, 184, 142, 167, 183, 141, 167, 183, 140, 166, 182, 140, 166, 182, 141, 166, 182, 141, 165, 181, 142, 165, 181, 137, 162, 178, 134, 160, 176, 133, 158, 174, 131, 157, 173, 130, 157, 173, 128, 156, 172, 124, 153, 168, 122, 150, 165, 121, 147, 163, + 113, 142, 157, 112, 140, 157, 106, 134, 151, 103, 131, 148, 100, 129, 144, 94, 123, 138, 89, 118, 132, 86, 115, 130, 81, 110, 125, 81, 110, 125, 76, 105, 120, 74, 103, 118, 72, 101, 116, 73, 101, 115, 69, 97, 111, 73, 100, 112, 73, 100, 114, 76, 103, 117, 82, 109, 123, 87, 113, 127, 88, 114, 128, + 94, 121, 135, 99, 125, 142, 92, 120, 137, 85, 115, 130, 82, 112, 126, 79, 110, 125, 78, 110, 123, 75, 108, 119, 75, 109, 120, 82, 117, 127, 88, 122, 134, 94, 128, 140, 111, 142, 153, 125, 154, 165, 133, 161, 173, 138, 166, 177, 142, 169, 179, 137, 166, 175, 143, 169, 177, 149, 172, 182, 151, 173, 184, + 146, 167, 178, 124, 149, 161, 106, 131, 142, 103, 125, 134, 116, 135, 146, 138, 154, 162, 120, 140, 149, 89, 113, 121, 72, 95, 104, 80, 96, 102, 48, 58, 62, 34, 40, 43, 11, 12, 12, 23, 25, 25, 24, 26, 26, 10, 12, 12, 11, 13, 13, 2, 2, 4, 5, 6, 9, 2, 2, 5, 2, 2, 5, + 0, 1, 2, 1, 3, 5, 2, 6, 8, 9, 14, 17, 30, 34, 34, 64, 73, 74, 78, 89, 90, 96, 108, 111, 126, 138, 142, 126, 142, 146, 138, 152, 155, 154, 171, 175, 140, 162, 169, 171, 186, 190, 193, 205, 208, 198, 207, 209, 180, 193, 197, 162, 182, 186, 154, 176, 181, 173, 190, 193, 182, 196, 198, + 166, 182, 186, 169, 182, 187, 152, 170, 175, 146, 165, 168, 116, 140, 147, 120, 143, 152, 132, 151, 159, 116, 137, 145, 123, 143, 149, 123, 143, 148, 98, 117, 122, 60, 84, 89, 48, 73, 81, 68, 89, 95, 99, 117, 123, 78, 92, 96, 45, 60, 63, 56, 68, 70, 39, 52, 56, 32, 47, 54, 47, 60, 67, + 50, 67, 74, 53, 71, 77, 57, 74, 80, 68, 85, 90, 64, 82, 87, 81, 95, 101, 70, 88, 93, 65, 83, 89, 78, 92, 98, 72, 85, 91, 58, 71, 78, 54, 69, 75, 71, 86, 91, 72, 89, 94, 69, 87, 93, 62, 83, 90, 70, 89, 96, 88, 106, 113, 108, 123, 130, 54, 73, 80, 73, 92, 99, + 78, 96, 101, 76, 94, 101, 44, 67, 73, 46, 68, 74, 72, 88, 93, 43, 64, 69, 75, 94, 101, 85, 104, 109, 84, 102, 108, 74, 95, 100, 57, 80, 85, 81, 100, 105, 78, 96, 103, 70, 91, 99, 83, 103, 111, 98, 117, 126, 85, 104, 116, 94, 113, 124, 118, 134, 142, 95, 116, 122, 90, 113, 119, + 83, 108, 116, 98, 122, 130, 85, 112, 121, 110, 134, 142, 104, 131, 139, 119, 144, 151, 122, 146, 155, 124, 146, 155, 116, 140, 148, 71, 104, 117, 108, 137, 146, 122, 147, 156, 141, 162, 170, 146, 167, 174, 152, 171, 178, 161, 179, 185, 178, 192, 196, 142, 166, 171, 155, 175, 180, 180, 193, 197, 152, 172, 178, + 152, 172, 178, 162, 180, 185, 170, 186, 191, 139, 163, 171, 149, 169, 177, 164, 180, 187, 137, 163, 170, 142, 167, 173, 165, 183, 188, 181, 195, 199, 156, 177, 182, 149, 173, 178, 172, 188, 193, 163, 182, 189, 175, 191, 197, 158, 180, 187, 160, 181, 187, 152, 176, 181, 163, 184, 188, 160, 182, 186, 161, 183, 188, + 184, 199, 202, 181, 198, 201, 177, 196, 199, 180, 198, 200, 189, 205, 208, 198, 212, 214, 196, 211, 214, 199, 214, 215, 201, 216, 218, 201, 215, 217, 209, 221, 223, 209, 222, 223, 207, 220, 221, 209, 222, 222, 211, 223, 223, 198, 215, 213, 199, 215, 214, 207, 220, 220, 209, 223, 222, 207, 220, 220, 208, 221, 221, + 215, 226, 225, 217, 228, 226, 217, 228, 226, 219, 229, 227, 217, 227, 225, 214, 225, 223, 213, 225, 223, 217, 228, 226, 214, 225, 223, 215, 226, 224, 215, 227, 225, 216, 227, 225, 219, 226, 226, 220, 228, 227, 224, 231, 230, 225, 231, 230, 225, 232, 230, 225, 232, 229, 225, 232, 230, 224, 230, 229, 225, 231, 230, + 201, 217, 223, 201, 218, 224, 200, 217, 223, 200, 217, 223, 200, 216, 222, 201, 217, 223, 200, 216, 222, 199, 215, 221, 199, 215, 221, 197, 214, 220, 198, 215, 221, 195, 213, 220, 193, 211, 218, 194, 212, 219, 191, 210, 217, 191, 209, 216, 190, 208, 216, 189, 207, 215, 188, 206, 214, 187, 205, 213, 185, 204, 213, + 184, 203, 211, 182, 201, 209, 182, 201, 209, 182, 201, 209, 180, 199, 209, 179, 198, 208, 178, 198, 207, 175, 195, 205, 174, 194, 205, 170, 192, 203, 169, 191, 202, 166, 188, 200, 165, 187, 199, 164, 186, 198, 162, 184, 196, 158, 182, 194, 154, 179, 191, 153, 178, 193, 150, 176, 190, 148, 174, 188, 149, 174, 189, + 147, 174, 188, 148, 174, 188, 148, 174, 188, 146, 172, 187, 146, 173, 187, 143, 170, 184, 145, 171, 184, 145, 171, 185, 144, 169, 183, 143, 168, 184, 141, 165, 181, 142, 167, 182, 136, 162, 178, 134, 160, 176, 133, 159, 175, 134, 160, 176, 131, 157, 173, 130, 157, 172, 127, 155, 170, 121, 150, 165, 116, 146, 161, + 113, 142, 158, 106, 135, 152, 104, 132, 149, 98, 128, 145, 97, 126, 142, 94, 123, 138, 93, 122, 136, 89, 118, 132, 86, 115, 130, 84, 113, 128, 81, 110, 125, 79, 107, 122, 78, 106, 120, 76, 103, 118, 78, 105, 119, 78, 105, 119, 84, 110, 124, 86, 112, 126, 86, 112, 126, 85, 111, 125, 83, 110, 124, + 81, 108, 122, 77, 107, 121, 77, 106, 120, 77, 106, 120, 75, 104, 119, 77, 106, 120, 76, 106, 118, 76, 106, 117, 78, 109, 119, 83, 114, 123, 90, 123, 132, 98, 130, 140, 107, 140, 149, 121, 152, 165, 132, 162, 174, 138, 167, 178, 136, 165, 176, 141, 168, 177, 143, 168, 175, 140, 166, 174, 140, 165, 175, + 136, 159, 171, 130, 154, 166, 116, 143, 154, 116, 139, 148, 137, 157, 166, 138, 159, 166, 110, 134, 144, 87, 111, 119, 84, 105, 112, 56, 77, 83, 45, 56, 61, 40, 49, 52, 18, 19, 20, 8, 9, 10, 29, 31, 32, 15, 17, 17, 20, 22, 23, 2, 5, 8, 14, 16, 18, 2, 3, 8, 0, 2, 5, + 7, 9, 13, 8, 13, 16, 16, 21, 24, 26, 33, 38, 74, 81, 83, 88, 98, 98, 102, 113, 114, 136, 149, 151, 110, 129, 135, 162, 174, 177, 146, 161, 168, 182, 193, 196, 159, 176, 182, 166, 182, 186, 180, 193, 198, 188, 200, 203, 185, 198, 201, 197, 208, 210, 195, 206, 208, 185, 198, 201, 177, 193, 196, + 183, 197, 199, 169, 186, 189, 163, 181, 184, 155, 173, 175, 117, 143, 147, 145, 162, 170, 126, 147, 155, 128, 147, 154, 91, 113, 121, 67, 92, 98, 48, 76, 81, 80, 102, 106, 108, 124, 131, 92, 110, 117, 94, 111, 117, 117, 133, 137, 124, 138, 141, 72, 88, 91, 62, 76, 81, 40, 55, 60, 44, 58, 63, + 30, 47, 53, 26, 46, 53, 44, 61, 68, 38, 58, 64, 45, 65, 71, 52, 70, 77, 74, 91, 96, 62, 80, 86, 47, 66, 72, 42, 58, 66, 42, 57, 65, 56, 70, 76, 51, 67, 74, 45, 63, 69, 48, 64, 73, 72, 86, 94, 74, 88, 95, 43, 64, 71, 45, 66, 73, 78, 95, 101, 78, 96, 103, + 78, 96, 101, 68, 87, 93, 88, 104, 109, 82, 98, 102, 63, 80, 85, 64, 81, 86, 79, 96, 101, 72, 90, 97, 70, 90, 96, 64, 84, 90, 79, 96, 101, 47, 68, 74, 64, 80, 86, 69, 85, 92, 53, 71, 79, 55, 73, 81, 70, 86, 93, 85, 102, 106, 61, 82, 85, 100, 116, 121, 113, 132, 138, + 94, 116, 124, 84, 108, 116, 116, 136, 143, 89, 115, 122, 126, 148, 155, 104, 130, 139, 110, 135, 145, 110, 134, 145, 125, 145, 155, 139, 157, 165, 97, 126, 137, 96, 127, 139, 118, 145, 155, 117, 145, 155, 125, 153, 161, 154, 173, 179, 159, 176, 182, 168, 185, 188, 149, 171, 176, 143, 167, 172, 174, 189, 193, + 132, 158, 165, 151, 171, 178, 143, 166, 174, 162, 179, 186, 157, 176, 183, 145, 167, 175, 170, 186, 191, 151, 172, 178, 131, 160, 166, 142, 168, 174, 162, 181, 186, 167, 185, 190, 134, 162, 169, 148, 173, 180, 154, 177, 185, 175, 191, 197, 173, 190, 195, 159, 179, 185, 152, 176, 180, 168, 187, 193, 162, 183, 189, + 167, 187, 192, 187, 201, 205, 185, 201, 203, 183, 200, 203, 180, 199, 202, 194, 209, 211, 202, 215, 216, 199, 213, 216, 202, 217, 219, 206, 220, 222, 200, 215, 216, 208, 219, 220, 210, 222, 223, 212, 224, 224, 216, 226, 226, 206, 220, 219, 200, 216, 215, 203, 219, 218, 208, 221, 221, 212, 224, 224, 210, 222, 222, + 212, 223, 223, 218, 227, 227, 219, 228, 227, 221, 229, 228, 222, 230, 229, 216, 226, 224, 213, 224, 222, 212, 224, 222, 214, 225, 223, 215, 226, 224, 215, 226, 224, 216, 227, 225, 218, 227, 226, 220, 227, 227, 220, 229, 226, 222, 230, 227, 224, 231, 228, 224, 230, 229, 224, 230, 228, 225, 231, 229, 223, 231, 228, + 204, 219, 225, 203, 219, 225, 202, 218, 224, 201, 217, 224, 200, 216, 222, 200, 216, 222, 200, 216, 222, 199, 216, 221, 200, 216, 222, 199, 215, 221, 199, 215, 220, 197, 214, 220, 196, 213, 220, 195, 213, 220, 194, 212, 219, 193, 211, 218, 192, 210, 217, 192, 209, 217, 190, 208, 215, 190, 208, 215, 188, 206, 214, + 187, 205, 212, 186, 205, 213, 184, 203, 211, 183, 202, 210, 182, 201, 209, 178, 198, 208, 177, 197, 206, 175, 196, 205, 173, 194, 205, 170, 192, 203, 168, 190, 201, 164, 189, 201, 162, 186, 198, 161, 184, 196, 163, 186, 198, 158, 182, 194, 157, 181, 192, 155, 179, 194, 152, 177, 191, 151, 177, 190, 152, 177, 192, + 152, 177, 191, 151, 177, 191, 151, 177, 191, 150, 176, 190, 148, 174, 188, 147, 173, 187, 147, 173, 187, 146, 172, 186, 144, 170, 184, 143, 169, 184, 141, 167, 182, 138, 164, 180, 138, 164, 179, 136, 162, 178, 137, 163, 178, 136, 162, 177, 134, 160, 176, 131, 157, 172, 128, 155, 170, 121, 150, 165, 116, 144, 160, + 112, 141, 158, 107, 137, 154, 104, 133, 150, 100, 130, 147, 95, 125, 140, 92, 121, 136, 89, 118, 132, 87, 116, 130, 84, 113, 127, 83, 112, 127, 84, 113, 128, 87, 113, 129, 90, 116, 130, 93, 119, 133, 97, 123, 137, 98, 123, 136, 95, 121, 135, 93, 118, 132, 89, 114, 129, 87, 112, 126, 87, 113, 126, + 82, 109, 123, 82, 109, 121, 80, 107, 119, 81, 108, 121, 79, 106, 120, 79, 106, 120, 77, 104, 116, 75, 103, 114, 76, 105, 114, 75, 106, 115, 75, 109, 117, 86, 121, 130, 103, 137, 149, 122, 153, 166, 133, 162, 174, 138, 166, 177, 137, 166, 177, 136, 164, 174, 127, 157, 167, 133, 161, 170, 127, 157, 165, + 127, 154, 165, 132, 156, 167, 132, 157, 168, 138, 160, 170, 134, 156, 166, 120, 146, 156, 102, 128, 138, 88, 112, 120, 82, 103, 109, 69, 88, 93, 34, 49, 54, 41, 52, 55, 35, 37, 40, 9, 13, 14, 32, 36, 37, 13, 17, 18, 29, 33, 34, 24, 28, 29, 15, 18, 21, 4, 7, 11, 7, 9, 13, + 9, 13, 17, 16, 21, 25, 59, 64, 67, 77, 86, 91, 90, 101, 104, 111, 121, 122, 143, 152, 153, 129, 144, 147, 158, 171, 174, 109, 132, 139, 159, 173, 177, 147, 165, 170, 182, 194, 198, 173, 187, 192, 180, 193, 197, 172, 188, 193, 196, 206, 209, 198, 210, 211, 195, 207, 209, 183, 199, 201, 197, 209, 211, + 186, 201, 204, 184, 199, 201, 190, 203, 205, 207, 215, 216, 203, 211, 212, 164, 180, 186, 148, 167, 174, 139, 158, 165, 133, 150, 155, 133, 149, 155, 107, 126, 131, 76, 98, 104, 54, 76, 84, 61, 80, 88, 36, 63, 73, 49, 76, 83, 59, 83, 87, 84, 103, 108, 84, 102, 107, 77, 93, 99, 45, 59, 65, + 32, 50, 56, 36, 54, 60, 25, 44, 52, 41, 59, 66, 42, 61, 67, 37, 57, 63, 40, 60, 66, 48, 67, 73, 70, 86, 93, 74, 88, 96, 67, 81, 89, 50, 65, 74, 47, 63, 69, 49, 64, 72, 56, 71, 81, 64, 78, 87, 33, 53, 60, 44, 62, 68, 50, 69, 76, 62, 77, 84, 68, 85, 91, + 61, 80, 86, 54, 73, 79, 64, 82, 87, 73, 90, 93, 90, 105, 108, 63, 80, 84, 32, 54, 60, 89, 101, 107, 58, 76, 82, 72, 87, 93, 72, 88, 93, 71, 86, 92, 50, 69, 75, 55, 72, 80, 63, 79, 86, 54, 72, 78, 49, 70, 74, 64, 84, 87, 82, 100, 103, 68, 88, 92, 55, 80, 85, + 85, 108, 115, 95, 118, 126, 94, 117, 124, 88, 113, 120, 95, 122, 130, 113, 137, 145, 129, 150, 157, 112, 135, 146, 95, 120, 133, 108, 131, 143, 136, 157, 165, 126, 149, 159, 112, 140, 150, 101, 132, 143, 121, 149, 158, 133, 158, 165, 160, 179, 182, 155, 174, 178, 148, 169, 172, 154, 173, 178, 131, 157, 163, + 164, 179, 186, 143, 166, 173, 148, 168, 176, 150, 172, 179, 131, 158, 167, 162, 180, 186, 164, 182, 188, 154, 176, 182, 137, 164, 172, 155, 177, 182, 159, 179, 184, 144, 169, 174, 155, 177, 180, 162, 181, 186, 156, 178, 186, 144, 169, 179, 158, 178, 186, 162, 181, 188, 154, 176, 182, 148, 174, 180, 158, 180, 185, + 164, 185, 190, 169, 189, 192, 181, 199, 202, 190, 204, 207, 189, 205, 206, 187, 204, 206, 201, 214, 217, 202, 216, 218, 208, 220, 221, 212, 224, 225, 212, 224, 224, 207, 220, 220, 212, 224, 224, 213, 224, 224, 218, 229, 227, 212, 224, 224, 200, 216, 215, 204, 218, 217, 205, 217, 220, 208, 220, 223, 214, 225, 225, + 213, 224, 224, 216, 227, 225, 219, 229, 227, 219, 228, 227, 223, 231, 230, 222, 229, 229, 217, 227, 225, 213, 224, 222, 214, 225, 223, 214, 225, 223, 215, 226, 224, 214, 225, 223, 218, 227, 225, 219, 228, 225, 221, 230, 227, 221, 230, 227, 221, 230, 227, 224, 231, 228, 225, 232, 229, 224, 231, 228, 223, 230, 227, + 206, 220, 226, 205, 219, 225, 205, 218, 224, 203, 218, 224, 202, 218, 224, 202, 218, 224, 200, 216, 223, 200, 216, 222, 200, 216, 222, 200, 216, 222, 199, 215, 221, 200, 215, 221, 199, 215, 221, 198, 214, 221, 196, 213, 220, 194, 212, 219, 193, 211, 218, 193, 211, 218, 192, 210, 217, 192, 210, 217, 190, 208, 215, + 189, 207, 214, 186, 205, 213, 184, 203, 211, 183, 202, 210, 182, 201, 209, 178, 197, 209, 177, 196, 207, 173, 194, 205, 171, 193, 204, 168, 190, 201, 168, 190, 201, 167, 189, 201, 167, 189, 201, 165, 187, 199, 164, 186, 198, 159, 184, 196, 158, 183, 195, 155, 181, 194, 156, 180, 193, 155, 179, 192, 155, 178, 193, + 154, 178, 193, 154, 178, 192, 151, 177, 191, 150, 176, 190, 148, 174, 188, 148, 174, 188, 147, 173, 187, 145, 171, 185, 145, 171, 185, 143, 169, 183, 142, 168, 182, 141, 167, 181, 138, 164, 179, 138, 164, 179, 137, 163, 179, 136, 162, 178, 135, 160, 176, 131, 159, 173, 127, 155, 170, 121, 149, 164, 114, 143, 159, + 110, 139, 156, 107, 137, 154, 102, 132, 149, 101, 130, 147, 96, 125, 140, 92, 121, 136, 90, 118, 133, 82, 112, 126, 83, 112, 126, 80, 110, 125, 79, 107, 123, 83, 109, 125, 86, 113, 127, 85, 111, 126, 85, 113, 126, 78, 106, 121, 76, 105, 119, 74, 102, 116, 74, 100, 114, 73, 100, 112, 72, 99, 113, + 72, 98, 112, 72, 98, 112, 73, 101, 112, 72, 99, 113, 72, 99, 113, 70, 98, 109, 70, 98, 109, 70, 99, 109, 68, 99, 107, 68, 100, 109, 71, 105, 114, 86, 120, 129, 107, 138, 152, 121, 152, 165, 134, 162, 175, 136, 163, 177, 130, 161, 175, 129, 160, 171, 127, 158, 165, 121, 153, 162, 123, 152, 162, + 125, 154, 163, 125, 154, 165, 140, 165, 176, 136, 161, 173, 128, 154, 165, 122, 146, 158, 105, 132, 140, 84, 106, 114, 75, 96, 102, 70, 89, 94, 48, 62, 66, 38, 50, 52, 37, 41, 41, 6, 10, 12, 12, 15, 17, 23, 29, 29, 17, 22, 21, 25, 30, 29, 24, 29, 28, 9, 13, 15, 8, 11, 14, + 34, 37, 41, 49, 56, 60, 64, 71, 75, 89, 98, 102, 77, 90, 92, 101, 112, 114, 121, 134, 135, 124, 143, 145, 133, 150, 154, 177, 187, 189, 148, 165, 170, 165, 179, 184, 137, 159, 165, 181, 195, 198, 179, 193, 197, 185, 198, 201, 199, 210, 213, 203, 213, 215, 194, 208, 210, 210, 218, 219, 186, 202, 204, + 212, 220, 222, 205, 214, 216, 180, 197, 199, 143, 170, 175, 175, 191, 195, 169, 186, 191, 162, 180, 185, 162, 179, 184, 146, 162, 167, 119, 139, 145, 117, 136, 143, 106, 125, 132, 100, 118, 125, 94, 112, 119, 102, 121, 128, 105, 124, 131, 94, 114, 120, 80, 100, 106, 66, 88, 94, 83, 101, 107, 72, 90, 96, + 79, 96, 100, 61, 81, 86, 54, 74, 81, 50, 68, 75, 57, 74, 80, 60, 76, 82, 63, 81, 86, 59, 77, 83, 72, 86, 93, 56, 72, 79, 47, 63, 72, 62, 77, 84, 81, 93, 97, 64, 78, 82, 55, 70, 74, 53, 69, 74, 69, 84, 89, 52, 68, 75, 41, 60, 67, 51, 69, 76, 55, 72, 80, + 69, 84, 91, 76, 91, 97, 70, 86, 91, 72, 88, 91, 67, 84, 86, 72, 89, 92, 86, 100, 104, 46, 64, 71, 53, 70, 76, 47, 65, 71, 54, 70, 76, 85, 98, 104, 58, 75, 83, 67, 83, 89, 58, 75, 81, 66, 82, 87, 69, 86, 90, 63, 82, 86, 60, 81, 85, 83, 102, 105, 81, 101, 106, + 85, 106, 112, 81, 106, 113, 89, 113, 119, 100, 123, 129, 102, 128, 133, 84, 112, 119, 108, 133, 141, 141, 159, 167, 148, 164, 172, 106, 131, 143, 86, 119, 131, 131, 153, 162, 138, 159, 166, 146, 166, 172, 134, 157, 165, 119, 147, 155, 123, 151, 156, 148, 168, 172, 150, 170, 174, 136, 159, 164, 146, 167, 172, + 116, 146, 155, 131, 158, 167, 149, 171, 177, 158, 177, 185, 160, 179, 185, 145, 168, 175, 147, 171, 177, 152, 175, 181, 164, 183, 188, 114, 148, 157, 131, 160, 167, 155, 177, 181, 158, 179, 183, 158, 179, 182, 154, 176, 183, 161, 182, 188, 161, 181, 187, 140, 166, 174, 136, 165, 173, 145, 171, 177, 139, 167, 173, + 155, 178, 184, 162, 184, 190, 170, 189, 195, 181, 199, 202, 188, 204, 206, 194, 209, 211, 194, 209, 211, 204, 217, 218, 208, 220, 221, 215, 224, 224, 221, 230, 230, 218, 227, 227, 216, 226, 226, 213, 224, 224, 218, 228, 227, 224, 232, 231, 211, 223, 222, 198, 214, 214, 205, 219, 219, 207, 220, 221, 211, 223, 223, + 217, 228, 226, 216, 227, 225, 217, 228, 226, 219, 228, 227, 220, 230, 227, 221, 229, 228, 220, 228, 227, 216, 226, 225, 218, 226, 225, 219, 227, 226, 216, 226, 224, 218, 227, 226, 217, 226, 223, 217, 226, 223, 219, 228, 225, 220, 229, 226, 223, 231, 228, 224, 231, 228, 224, 231, 228, 224, 231, 229, 225, 232, 229, + 207, 221, 227, 206, 221, 227, 206, 220, 226, 206, 219, 225, 205, 220, 226, 203, 219, 225, 202, 218, 224, 202, 218, 224, 201, 218, 224, 201, 217, 223, 202, 217, 223, 200, 216, 222, 201, 217, 223, 199, 215, 221, 198, 214, 221, 197, 213, 220, 197, 213, 220, 197, 213, 220, 194, 211, 218, 193, 211, 218, 191, 209, 216, + 190, 208, 215, 186, 205, 212, 184, 203, 211, 183, 203, 211, 180, 200, 207, 178, 198, 209, 176, 197, 208, 174, 194, 205, 171, 193, 204, 170, 192, 203, 170, 191, 202, 169, 191, 202, 169, 190, 201, 170, 190, 201, 165, 187, 199, 164, 186, 198, 162, 185, 197, 160, 183, 195, 158, 182, 194, 156, 180, 192, 157, 181, 194, + 154, 179, 194, 153, 178, 193, 152, 176, 191, 150, 176, 190, 148, 175, 187, 147, 174, 187, 148, 174, 188, 147, 172, 187, 145, 172, 186, 145, 171, 184, 144, 170, 184, 142, 168, 182, 138, 165, 180, 137, 164, 179, 138, 165, 180, 134, 161, 176, 132, 160, 174, 125, 155, 170, 121, 151, 166, 118, 148, 163, 113, 142, 159, + 110, 139, 156, 106, 136, 153, 101, 131, 149, 99, 129, 144, 97, 126, 141, 93, 122, 136, 89, 118, 132, 85, 115, 129, 81, 111, 125, 82, 110, 125, 85, 111, 127, 86, 113, 128, 82, 109, 124, 79, 107, 123, 75, 104, 119, 70, 100, 115, 70, 99, 114, 71, 98, 113, 70, 98, 112, 71, 98, 112, 70, 97, 111, + 72, 98, 112, 71, 98, 112, 72, 99, 113, 71, 97, 112, 69, 97, 109, 70, 98, 109, 69, 97, 108, 67, 96, 106, 65, 97, 106, 62, 95, 104, 72, 105, 115, 92, 125, 136, 108, 141, 152, 123, 153, 166, 134, 162, 175, 132, 162, 176, 135, 164, 177, 135, 162, 173, 130, 158, 167, 123, 153, 162, 118, 150, 159, + 132, 159, 168, 147, 169, 179, 155, 175, 185, 148, 170, 180, 131, 156, 167, 105, 135, 147, 93, 116, 127, 81, 103, 111, 73, 92, 97, 49, 72, 76, 69, 81, 84, 44, 54, 54, 19, 25, 23, 31, 34, 34, 4, 8, 8, 25, 30, 29, 18, 24, 23, 23, 29, 27, 23, 29, 28, 44, 50, 49, 33, 38, 38, + 71, 75, 79, 71, 77, 81, 72, 79, 83, 90, 99, 102, 110, 121, 123, 117, 128, 130, 109, 123, 127, 108, 124, 128, 108, 127, 131, 138, 154, 158, 169, 182, 185, 180, 191, 193, 167, 183, 186, 176, 190, 195, 160, 178, 184, 192, 202, 206, 201, 210, 212, 196, 206, 208, 204, 213, 215, 188, 201, 203, 204, 214, 216, + 203, 215, 216, 204, 215, 217, 194, 206, 208, 193, 205, 209, 206, 216, 219, 199, 209, 213, 217, 223, 226, 203, 214, 217, 154, 174, 179, 137, 158, 165, 141, 159, 167, 107, 129, 137, 94, 116, 125, 84, 108, 117, 75, 97, 107, 73, 96, 104, 72, 95, 102, 78, 100, 107, 85, 106, 112, 93, 112, 118, 77, 97, 103, + 97, 114, 118, 98, 115, 118, 75, 95, 98, 55, 77, 82, 55, 75, 81, 68, 86, 91, 53, 73, 78, 58, 74, 80, 50, 68, 75, 65, 80, 87, 69, 83, 90, 54, 70, 77, 45, 63, 67, 57, 72, 75, 43, 60, 62, 51, 68, 70, 54, 69, 73, 72, 85, 90, 76, 90, 96, 48, 65, 72, 59, 75, 82, + 51, 68, 75, 57, 73, 79, 60, 77, 84, 47, 67, 71, 48, 67, 73, 68, 84, 89, 55, 73, 79, 53, 71, 77, 64, 78, 84, 61, 76, 82, 50, 66, 72, 45, 64, 70, 54, 71, 78, 77, 91, 98, 74, 90, 94, 49, 68, 72, 62, 79, 83, 63, 81, 85, 92, 107, 111, 69, 90, 93, 85, 103, 108, + 69, 92, 99, 78, 101, 109, 80, 103, 111, 79, 104, 111, 109, 130, 136, 108, 131, 137, 81, 111, 118, 118, 140, 148, 113, 136, 144, 138, 158, 166, 141, 160, 168, 111, 138, 147, 114, 141, 151, 124, 148, 158, 129, 153, 161, 147, 167, 174, 136, 160, 166, 119, 147, 153, 118, 145, 150, 142, 163, 169, 147, 167, 172, + 156, 175, 181, 144, 167, 174, 150, 171, 178, 148, 170, 177, 155, 176, 182, 154, 176, 182, 154, 176, 182, 158, 178, 184, 160, 180, 185, 152, 175, 180, 148, 171, 177, 154, 175, 180, 142, 168, 172, 148, 171, 175, 161, 182, 186, 163, 183, 188, 147, 174, 180, 167, 187, 192, 144, 171, 177, 135, 165, 172, 154, 178, 185, + 141, 170, 178, 160, 182, 189, 168, 188, 193, 165, 187, 192, 180, 199, 201, 193, 208, 211, 199, 212, 214, 197, 212, 214, 206, 218, 220, 211, 222, 223, 220, 229, 229, 222, 231, 231, 220, 230, 229, 218, 228, 227, 217, 227, 227, 218, 228, 228, 221, 229, 228, 209, 221, 220, 204, 218, 217, 207, 220, 218, 210, 223, 221, + 216, 228, 226, 220, 228, 227, 217, 228, 226, 218, 227, 226, 220, 228, 227, 219, 227, 226, 222, 230, 229, 219, 226, 225, 214, 225, 223, 217, 227, 225, 219, 227, 226, 215, 226, 224, 219, 229, 225, 219, 228, 225, 220, 229, 226, 219, 228, 225, 220, 229, 226, 223, 230, 227, 226, 233, 230, 224, 230, 228, 224, 231, 228, + 208, 221, 227, 208, 221, 227, 207, 221, 227, 206, 220, 226, 205, 220, 226, 206, 220, 226, 204, 219, 225, 205, 220, 226, 205, 219, 225, 205, 219, 225, 204, 219, 225, 201, 217, 223, 201, 217, 223, 200, 216, 222, 199, 215, 221, 199, 215, 220, 198, 214, 221, 197, 213, 220, 196, 212, 219, 194, 211, 218, 191, 209, 216, + 189, 207, 214, 187, 206, 213, 185, 204, 211, 183, 202, 210, 179, 199, 208, 177, 198, 206, 177, 198, 206, 175, 196, 205, 173, 193, 204, 172, 193, 204, 172, 193, 204, 172, 192, 203, 171, 191, 202, 168, 189, 200, 169, 190, 201, 166, 188, 199, 164, 186, 198, 160, 183, 195, 161, 183, 195, 158, 181, 193, 155, 180, 193, + 154, 179, 193, 150, 176, 190, 150, 176, 190, 150, 176, 190, 147, 173, 186, 149, 174, 188, 149, 175, 188, 148, 174, 188, 146, 172, 185, 147, 172, 184, 146, 171, 183, 142, 169, 183, 141, 167, 181, 137, 164, 179, 133, 161, 176, 130, 159, 174, 125, 155, 170, 120, 152, 167, 115, 147, 162, 110, 143, 159, 111, 140, 157, + 107, 137, 154, 104, 134, 152, 100, 130, 147, 97, 127, 143, 95, 125, 140, 91, 121, 136, 86, 117, 132, 85, 114, 129, 85, 114, 129, 88, 115, 129, 88, 115, 129, 86, 113, 127, 78, 107, 121, 76, 106, 119, 70, 100, 114, 71, 101, 116, 71, 100, 115, 72, 99, 115, 72, 100, 113, 72, 99, 113, 72, 98, 112, + 73, 99, 113, 71, 98, 112, 70, 97, 112, 70, 97, 110, 69, 97, 108, 69, 96, 108, 69, 96, 107, 67, 96, 106, 66, 97, 106, 74, 105, 114, 87, 119, 127, 96, 130, 140, 114, 143, 154, 123, 154, 165, 131, 161, 172, 135, 162, 175, 137, 164, 175, 129, 158, 169, 123, 153, 164, 119, 152, 160, 123, 155, 164, + 142, 167, 175, 163, 181, 191, 149, 171, 183, 116, 147, 163, 116, 143, 157, 102, 130, 144, 98, 119, 127, 86, 104, 111, 71, 89, 95, 78, 95, 100, 52, 66, 70, 51, 61, 61, 10, 17, 16, 23, 28, 27, 11, 17, 15, 9, 14, 13, 14, 19, 18, 13, 19, 17, 2, 8, 7, 78, 82, 82, 51, 58, 58, + 75, 80, 84, 98, 104, 108, 106, 114, 119, 112, 120, 123, 55, 71, 74, 103, 115, 118, 103, 116, 120, 126, 140, 145, 92, 110, 117, 150, 163, 166, 140, 158, 162, 165, 180, 184, 139, 160, 164, 195, 203, 206, 167, 181, 186, 141, 161, 166, 136, 158, 164, 165, 181, 186, 202, 211, 211, 180, 195, 197, 186, 200, 202, + 181, 196, 198, 177, 192, 198, 194, 204, 209, 207, 213, 216, 174, 192, 196, 204, 213, 216, 167, 187, 193, 173, 191, 196, 205, 214, 217, 185, 195, 200, 165, 181, 186, 130, 150, 158, 93, 119, 129, 99, 122, 130, 75, 99, 107, 84, 107, 114, 77, 100, 107, 75, 97, 105, 82, 104, 111, 76, 99, 105, 110, 128, 132, + 91, 110, 113, 63, 86, 89, 82, 102, 105, 91, 109, 114, 86, 102, 108, 75, 92, 97, 68, 86, 91, 73, 88, 94, 71, 86, 93, 65, 79, 85, 63, 77, 81, 65, 79, 84, 59, 73, 77, 63, 76, 79, 61, 75, 77, 60, 75, 77, 43, 60, 64, 47, 62, 68, 45, 61, 68, 69, 82, 89, 57, 72, 78, + 47, 64, 70, 33, 52, 59, 40, 59, 65, 48, 66, 72, 57, 73, 79, 54, 69, 75, 60, 75, 82, 53, 68, 75, 38, 57, 63, 40, 59, 64, 61, 76, 81, 47, 66, 73, 55, 72, 79, 49, 66, 74, 59, 75, 83, 64, 80, 86, 73, 88, 93, 61, 79, 83, 43, 65, 71, 62, 84, 89, 83, 102, 107, + 81, 102, 106, 67, 89, 96, 90, 112, 117, 97, 117, 123, 74, 100, 106, 92, 116, 122, 106, 129, 135, 94, 120, 125, 101, 126, 131, 79, 109, 116, 116, 142, 149, 110, 138, 147, 134, 156, 163, 133, 155, 163, 135, 157, 165, 134, 156, 164, 152, 171, 177, 141, 162, 169, 123, 150, 156, 102, 135, 142, 114, 145, 150, + 159, 177, 183, 157, 175, 181, 155, 175, 180, 156, 176, 183, 170, 187, 191, 175, 191, 195, 159, 179, 185, 162, 181, 187, 156, 178, 183, 171, 187, 192, 158, 179, 183, 157, 177, 182, 162, 182, 185, 157, 179, 182, 140, 167, 172, 168, 188, 192, 162, 182, 188, 143, 171, 177, 159, 181, 186, 153, 178, 183, 149, 175, 181, + 158, 181, 188, 148, 176, 183, 163, 185, 191, 176, 194, 199, 172, 195, 198, 188, 205, 208, 197, 210, 213, 200, 213, 215, 202, 215, 217, 206, 219, 219, 211, 223, 223, 223, 231, 231, 222, 232, 231, 220, 230, 229, 223, 231, 230, 218, 228, 228, 213, 224, 223, 215, 226, 224, 209, 221, 219, 207, 220, 218, 209, 222, 220, + 212, 224, 222, 217, 227, 225, 219, 227, 226, 220, 228, 227, 218, 227, 226, 220, 228, 227, 218, 227, 226, 219, 227, 226, 218, 227, 226, 214, 225, 223, 218, 228, 226, 221, 229, 228, 219, 227, 225, 219, 228, 225, 219, 228, 225, 221, 229, 226, 221, 230, 227, 223, 230, 227, 224, 231, 228, 226, 233, 231, 225, 232, 229, + 210, 222, 228, 208, 222, 228, 208, 222, 228, 207, 221, 227, 207, 221, 227, 206, 220, 226, 207, 221, 227, 206, 220, 226, 206, 220, 226, 206, 220, 226, 203, 218, 224, 202, 218, 224, 201, 217, 223, 201, 217, 223, 200, 216, 222, 199, 215, 221, 198, 214, 221, 198, 214, 221, 195, 212, 219, 193, 211, 218, 192, 210, 217, + 189, 207, 214, 186, 205, 212, 183, 203, 211, 182, 202, 210, 178, 199, 207, 177, 198, 207, 177, 198, 207, 176, 196, 207, 176, 196, 207, 175, 194, 205, 174, 194, 205, 173, 193, 204, 172, 193, 204, 170, 191, 202, 169, 190, 201, 168, 189, 200, 166, 187, 199, 163, 185, 197, 162, 184, 196, 157, 181, 193, 155, 179, 192, + 152, 177, 192, 149, 175, 189, 148, 175, 189, 150, 176, 189, 150, 175, 188, 152, 177, 189, 151, 176, 188, 150, 175, 187, 147, 173, 185, 146, 172, 185, 145, 171, 182, 143, 169, 183, 137, 164, 179, 135, 162, 177, 128, 158, 172, 126, 156, 171, 121, 152, 168, 115, 147, 163, 114, 147, 163, 110, 143, 159, 104, 137, 154, + 106, 136, 154, 100, 133, 149, 100, 131, 148, 96, 127, 144, 93, 123, 140, 89, 119, 136, 87, 117, 134, 88, 118, 132, 91, 119, 134, 90, 117, 131, 84, 112, 126, 79, 108, 122, 73, 103, 117, 73, 103, 117, 72, 102, 116, 71, 99, 114, 71, 99, 114, 73, 99, 115, 73, 99, 115, 71, 97, 112, 72, 99, 114, + 73, 99, 114, 72, 99, 113, 70, 97, 111, 72, 98, 112, 67, 95, 109, 65, 94, 106, 68, 97, 108, 73, 102, 113, 73, 104, 114, 74, 105, 114, 80, 113, 121, 93, 128, 139, 113, 144, 155, 124, 154, 165, 128, 158, 169, 132, 161, 171, 132, 159, 170, 130, 158, 169, 126, 155, 165, 125, 156, 166, 138, 164, 174, + 150, 172, 184, 152, 173, 184, 140, 164, 175, 124, 150, 163, 119, 144, 156, 120, 145, 155, 102, 121, 128, 81, 99, 106, 68, 87, 93, 60, 79, 85, 64, 79, 83, 56, 67, 68, 27, 33, 32, 8, 13, 11, 22, 27, 26, 3, 6, 5, 18, 21, 21, 18, 22, 21, 80, 83, 83, 77, 81, 82, 77, 83, 86, + 65, 75, 79, 111, 118, 121, 107, 116, 119, 77, 88, 90, 79, 91, 93, 48, 65, 68, 122, 133, 136, 124, 137, 141, 160, 170, 173, 118, 137, 142, 158, 171, 176, 169, 182, 185, 163, 179, 184, 151, 170, 175, 183, 193, 196, 147, 165, 171, 108, 133, 140, 132, 154, 160, 130, 156, 163, 200, 209, 212, 182, 197, 200, + 175, 190, 194, 165, 185, 188, 124, 154, 161, 124, 151, 161, 155, 175, 181, 144, 171, 179, 198, 208, 211, 160, 180, 187, 154, 175, 183, 142, 167, 174, 115, 142, 151, 119, 144, 151, 128, 150, 157, 96, 119, 128, 75, 100, 109, 34, 64, 73, 49, 74, 82, 61, 86, 94, 65, 92, 99, 82, 104, 110, 84, 106, 110, + 95, 115, 117, 99, 118, 119, 89, 109, 110, 68, 89, 93, 54, 74, 79, 55, 75, 81, 61, 79, 84, 59, 76, 82, 63, 77, 84, 54, 70, 75, 69, 82, 85, 63, 76, 81, 63, 77, 81, 56, 71, 73, 36, 54, 57, 51, 67, 70, 48, 64, 70, 49, 63, 70, 41, 58, 65, 38, 54, 61, 54, 68, 73, + 55, 69, 74, 37, 55, 61, 38, 57, 62, 44, 61, 67, 49, 64, 70, 44, 59, 66, 49, 63, 69, 56, 71, 75, 48, 65, 69, 38, 56, 62, 54, 71, 76, 54, 70, 77, 53, 69, 77, 65, 80, 87, 65, 80, 87, 58, 73, 80, 41, 61, 66, 67, 85, 90, 78, 93, 98, 66, 86, 90, 74, 94, 99, + 57, 80, 85, 80, 101, 105, 76, 98, 104, 62, 87, 93, 87, 108, 115, 85, 109, 115, 109, 131, 136, 105, 128, 133, 100, 124, 130, 102, 125, 131, 99, 125, 131, 95, 124, 132, 107, 135, 143, 123, 148, 156, 130, 152, 160, 140, 161, 167, 142, 163, 170, 140, 162, 169, 151, 169, 176, 136, 159, 167, 130, 156, 164, + 122, 150, 158, 148, 170, 175, 165, 182, 186, 161, 179, 184, 164, 182, 187, 176, 191, 195, 166, 184, 189, 168, 186, 191, 170, 187, 192, 167, 185, 189, 181, 195, 199, 166, 185, 189, 165, 184, 187, 153, 176, 180, 166, 185, 188, 155, 179, 183, 171, 189, 194, 157, 180, 186, 157, 180, 185, 156, 180, 185, 165, 187, 190, + 167, 188, 194, 157, 182, 187, 161, 184, 190, 177, 196, 200, 182, 199, 202, 179, 199, 202, 188, 205, 208, 204, 216, 217, 203, 216, 215, 208, 220, 220, 209, 221, 221, 212, 224, 224, 225, 233, 233, 219, 229, 228, 224, 232, 232, 222, 230, 229, 219, 229, 227, 217, 227, 226, 212, 224, 221, 210, 223, 221, 209, 221, 219, + 213, 224, 222, 214, 225, 223, 217, 226, 225, 220, 228, 227, 219, 227, 226, 219, 227, 226, 219, 227, 226, 217, 225, 224, 217, 225, 224, 217, 225, 224, 217, 225, 224, 218, 226, 225, 221, 230, 228, 219, 227, 225, 220, 228, 225, 219, 228, 225, 222, 229, 227, 224, 231, 228, 225, 232, 229, 226, 233, 230, 226, 233, 231, + 209, 223, 228, 210, 224, 228, 208, 222, 228, 208, 222, 227, 208, 222, 228, 207, 221, 227, 207, 221, 227, 207, 221, 227, 206, 220, 226, 205, 219, 225, 204, 218, 224, 202, 218, 224, 201, 217, 223, 201, 217, 223, 199, 215, 221, 199, 215, 221, 199, 215, 221, 196, 213, 220, 193, 211, 218, 192, 210, 217, 191, 210, 217, + 189, 207, 214, 186, 205, 212, 185, 204, 211, 181, 201, 209, 178, 199, 208, 177, 199, 206, 177, 197, 208, 177, 197, 207, 176, 196, 206, 175, 195, 206, 174, 195, 205, 174, 194, 205, 172, 193, 204, 172, 193, 203, 171, 191, 202, 169, 190, 201, 167, 188, 200, 164, 184, 197, 161, 183, 195, 156, 180, 192, 154, 179, 192, + 151, 176, 190, 148, 174, 189, 150, 176, 190, 153, 177, 190, 154, 178, 190, 152, 177, 189, 154, 177, 189, 153, 177, 189, 148, 174, 186, 144, 170, 183, 142, 168, 183, 139, 165, 179, 136, 163, 178, 131, 158, 174, 125, 155, 170, 121, 152, 167, 117, 149, 165, 114, 146, 162, 111, 144, 160, 108, 141, 157, 108, 139, 155, + 104, 136, 152, 102, 133, 152, 98, 130, 148, 95, 127, 145, 93, 123, 141, 89, 119, 136, 90, 119, 136, 93, 121, 138, 88, 117, 131, 84, 112, 127, 80, 109, 123, 77, 106, 120, 74, 103, 117, 74, 103, 117, 72, 101, 116, 74, 101, 117, 73, 99, 115, 75, 101, 117, 74, 101, 116, 73, 100, 115, 73, 100, 115, + 72, 99, 113, 71, 98, 112, 70, 97, 110, 69, 97, 110, 71, 99, 111, 82, 110, 121, 90, 117, 128, 86, 114, 126, 93, 120, 131, 101, 128, 137, 112, 138, 145, 123, 150, 158, 136, 160, 169, 142, 166, 174, 141, 166, 175, 141, 166, 175, 135, 161, 171, 131, 158, 168, 134, 161, 171, 131, 159, 169, 142, 166, 178, + 159, 178, 188, 148, 169, 182, 135, 157, 169, 132, 151, 164, 132, 150, 161, 116, 135, 144, 100, 120, 126, 93, 110, 116, 82, 99, 106, 80, 96, 102, 74, 87, 92, 59, 71, 74, 46, 51, 53, 14, 18, 19, 11, 15, 16, 13, 16, 15, 10, 12, 12, 25, 28, 28, 82, 86, 87, 102, 109, 111, 94, 102, 106, + 88, 98, 103, 84, 94, 99, 79, 88, 92, 98, 107, 110, 85, 96, 99, 66, 80, 84, 96, 109, 111, 59, 78, 81, 69, 90, 95, 137, 152, 157, 154, 167, 172, 162, 175, 179, 171, 184, 188, 168, 183, 188, 172, 186, 191, 163, 180, 184, 146, 168, 173, 148, 169, 174, 175, 190, 194, 155, 177, 182, 191, 203, 206, + 184, 198, 202, 173, 191, 193, 176, 193, 195, 148, 170, 179, 158, 179, 184, 156, 179, 186, 162, 185, 190, 194, 206, 210, 165, 184, 191, 152, 172, 179, 141, 164, 172, 136, 160, 168, 128, 153, 161, 145, 163, 168, 122, 145, 152, 145, 160, 165, 140, 156, 160, 149, 164, 166, 152, 166, 168, 142, 159, 161, 117, 137, 139, + 95, 117, 119, 77, 100, 101, 68, 92, 94, 83, 103, 105, 62, 81, 85, 60, 79, 85, 58, 76, 82, 60, 78, 84, 51, 68, 75, 63, 77, 82, 62, 76, 79, 65, 78, 80, 56, 72, 74, 59, 74, 77, 70, 84, 87, 63, 78, 82, 66, 80, 86, 48, 64, 71, 44, 60, 67, 42, 58, 65, 49, 63, 69, + 45, 60, 67, 64, 79, 83, 48, 65, 69, 25, 44, 50, 41, 55, 60, 43, 57, 61, 37, 53, 57, 49, 64, 66, 53, 68, 72, 52, 68, 73, 40, 58, 64, 57, 72, 78, 55, 71, 78, 55, 71, 79, 59, 74, 82, 76, 89, 96, 83, 97, 100, 64, 81, 86, 66, 83, 87, 72, 88, 93, 77, 97, 101, + 84, 104, 107, 74, 95, 99, 67, 88, 93, 83, 104, 108, 63, 87, 94, 96, 116, 123, 87, 111, 117, 69, 96, 103, 121, 140, 146, 117, 138, 144, 109, 134, 140, 123, 146, 153, 93, 122, 130, 111, 138, 146, 121, 145, 153, 124, 147, 155, 142, 164, 170, 151, 170, 176, 137, 160, 168, 155, 173, 179, 154, 172, 179, + 140, 162, 169, 136, 161, 168, 138, 163, 168, 163, 181, 186, 162, 181, 185, 167, 183, 188, 167, 184, 189, 159, 179, 184, 174, 190, 194, 169, 188, 193, 171, 188, 192, 184, 198, 201, 170, 187, 190, 168, 186, 189, 156, 178, 183, 159, 180, 185, 158, 181, 187, 176, 193, 197, 166, 187, 190, 168, 188, 191, 169, 188, 191, + 166, 188, 190, 171, 192, 196, 163, 186, 192, 161, 185, 190, 186, 201, 204, 182, 200, 203, 184, 202, 205, 196, 210, 212, 202, 215, 215, 205, 217, 218, 211, 222, 221, 214, 224, 224, 220, 229, 227, 222, 230, 229, 222, 230, 229, 223, 231, 230, 224, 232, 231, 224, 232, 232, 213, 225, 223, 209, 222, 220, 211, 223, 223, + 212, 223, 222, 214, 225, 223, 212, 223, 221, 218, 226, 225, 220, 228, 227, 218, 226, 225, 219, 227, 226, 218, 226, 225, 218, 227, 225, 216, 224, 223, 216, 225, 223, 219, 227, 226, 219, 227, 226, 221, 228, 227, 222, 229, 226, 221, 229, 227, 222, 229, 227, 223, 230, 227, 225, 231, 228, 226, 233, 230, 229, 236, 233, + 210, 225, 228, 210, 224, 228, 211, 225, 228, 209, 224, 227, 208, 223, 226, 209, 223, 226, 209, 222, 226, 206, 220, 227, 206, 220, 226, 205, 219, 225, 205, 219, 225, 202, 217, 223, 201, 217, 223, 200, 216, 222, 200, 216, 222, 199, 215, 221, 197, 215, 220, 197, 214, 221, 193, 212, 218, 192, 210, 217, 190, 209, 216, + 188, 207, 214, 185, 204, 212, 185, 204, 212, 181, 202, 210, 180, 200, 209, 179, 199, 210, 178, 198, 209, 177, 197, 208, 178, 198, 206, 177, 197, 206, 175, 195, 205, 175, 195, 206, 172, 192, 203, 173, 193, 203, 172, 192, 203, 171, 191, 202, 167, 187, 199, 164, 186, 198, 158, 182, 194, 156, 180, 192, 152, 177, 190, + 150, 176, 190, 153, 178, 192, 154, 178, 192, 155, 178, 191, 158, 180, 192, 157, 180, 192, 153, 176, 188, 150, 174, 186, 145, 171, 185, 141, 167, 181, 137, 164, 178, 136, 163, 178, 131, 158, 174, 128, 156, 172, 123, 152, 167, 120, 150, 166, 117, 147, 164, 115, 145, 162, 113, 143, 160, 110, 140, 157, 107, 137, 154, + 106, 137, 153, 103, 133, 152, 99, 130, 148, 94, 127, 144, 94, 124, 141, 93, 123, 140, 92, 120, 137, 89, 116, 134, 83, 113, 127, 80, 109, 124, 76, 106, 121, 71, 103, 116, 73, 102, 116, 73, 102, 116, 74, 102, 117, 76, 102, 118, 77, 103, 119, 75, 101, 117, 74, 101, 115, 74, 101, 115, 75, 101, 115, + 75, 103, 116, 85, 111, 124, 101, 125, 139, 103, 128, 141, 119, 141, 152, 119, 141, 152, 117, 141, 150, 117, 141, 151, 121, 142, 151, 120, 142, 150, 123, 145, 154, 123, 150, 158, 129, 154, 162, 139, 161, 169, 144, 168, 176, 155, 173, 181, 156, 176, 184, 152, 173, 180, 145, 168, 177, 143, 165, 175, 147, 169, 179, + 147, 168, 180, 149, 171, 182, 128, 150, 163, 125, 146, 158, 107, 129, 141, 100, 122, 130, 94, 114, 121, 117, 132, 139, 91, 109, 116, 72, 88, 96, 66, 80, 86, 61, 73, 77, 71, 75, 78, 27, 32, 32, 10, 14, 15, 15, 17, 17, 19, 21, 21, 60, 61, 60, 119, 123, 124, 113, 118, 120, 60, 70, 75, + 101, 109, 114, 80, 91, 96, 77, 88, 91, 85, 95, 98, 82, 93, 96, 141, 148, 150, 38, 57, 60, 91, 106, 109, 96, 113, 116, 100, 118, 125, 133, 149, 155, 136, 153, 159, 185, 195, 197, 165, 180, 184, 184, 196, 199, 186, 199, 201, 183, 195, 199, 189, 201, 203, 175, 190, 194, 195, 204, 208, 192, 204, 208, + 201, 210, 213, 205, 214, 217, 211, 219, 221, 193, 205, 207, 198, 210, 213, 188, 201, 204, 180, 196, 201, 188, 203, 207, 187, 201, 205, 200, 210, 214, 195, 207, 211, 196, 208, 211, 190, 204, 209, 166, 185, 190, 173, 186, 192, 144, 163, 169, 97, 124, 129, 59, 95, 100, 49, 87, 91, 57, 92, 96, 80, 107, 111, + 118, 139, 140, 168, 181, 181, 193, 199, 199, 205, 210, 210, 193, 198, 198, 150, 161, 161, 123, 138, 137, 115, 124, 124, 88, 104, 103, 57, 73, 74, 54, 68, 70, 45, 60, 62, 71, 84, 87, 72, 86, 88, 64, 78, 82, 56, 72, 77, 63, 78, 84, 51, 67, 75, 63, 77, 84, 58, 73, 78, 50, 65, 71, + 47, 62, 67, 38, 55, 59, 41, 58, 61, 54, 67, 70, 36, 52, 55, 38, 53, 57, 40, 54, 58, 37, 52, 56, 39, 57, 59, 48, 64, 70, 55, 70, 75, 58, 73, 80, 63, 78, 84, 59, 73, 81, 69, 83, 91, 64, 81, 87, 66, 83, 87, 71, 89, 92, 68, 85, 89, 71, 89, 92, 70, 89, 93, + 68, 90, 91, 84, 104, 105, 109, 127, 128, 94, 113, 116, 85, 106, 111, 83, 105, 111, 88, 109, 115, 103, 124, 130, 71, 97, 103, 110, 132, 138, 110, 133, 139, 105, 130, 137, 127, 148, 155, 103, 129, 136, 122, 145, 151, 128, 151, 156, 118, 144, 150, 130, 152, 160, 136, 158, 166, 137, 159, 168, 146, 165, 173, + 141, 163, 171, 144, 165, 171, 146, 168, 174, 145, 166, 172, 154, 174, 180, 163, 181, 186, 162, 181, 186, 160, 179, 184, 158, 178, 183, 176, 192, 195, 171, 187, 191, 168, 186, 189, 175, 192, 195, 181, 196, 198, 160, 181, 186, 151, 175, 181, 164, 186, 190, 167, 187, 191, 171, 190, 192, 180, 196, 199, 179, 196, 199, + 184, 200, 202, 183, 199, 202, 177, 196, 199, 176, 195, 198, 178, 197, 200, 194, 207, 210, 188, 203, 205, 194, 208, 210, 200, 214, 213, 206, 218, 218, 207, 219, 219, 215, 226, 223, 220, 228, 227, 221, 229, 228, 222, 230, 229, 222, 230, 229, 223, 231, 230, 223, 231, 230, 222, 230, 229, 214, 225, 223, 212, 223, 221, + 214, 225, 223, 213, 224, 222, 216, 226, 224, 214, 225, 223, 218, 227, 225, 219, 226, 226, 216, 225, 222, 218, 227, 224, 216, 225, 223, 216, 224, 223, 217, 225, 223, 217, 226, 223, 221, 228, 227, 222, 228, 226, 221, 228, 226, 220, 229, 225, 223, 230, 227, 221, 229, 225, 224, 231, 228, 226, 233, 230, 228, 235, 232, + 213, 225, 229, 212, 225, 229, 211, 225, 228, 211, 225, 228, 210, 223, 227, 209, 222, 226, 208, 223, 226, 207, 221, 228, 206, 220, 226, 205, 220, 226, 203, 219, 225, 202, 217, 223, 202, 218, 224, 200, 216, 222, 200, 216, 222, 199, 216, 221, 198, 215, 220, 196, 215, 219, 194, 212, 219, 192, 210, 217, 189, 208, 215, + 188, 207, 214, 186, 205, 212, 186, 205, 213, 184, 202, 211, 184, 203, 211, 179, 199, 210, 180, 198, 210, 179, 198, 209, 179, 198, 206, 177, 197, 206, 177, 197, 206, 175, 196, 204, 176, 195, 206, 173, 193, 203, 172, 192, 203, 170, 190, 201, 168, 189, 200, 162, 185, 197, 159, 183, 195, 156, 181, 193, 155, 179, 194, + 155, 179, 194, 156, 180, 192, 155, 180, 191, 158, 180, 192, 159, 181, 193, 156, 178, 190, 153, 176, 189, 147, 172, 186, 143, 169, 182, 137, 164, 179, 135, 162, 177, 131, 159, 174, 128, 156, 171, 124, 153, 168, 121, 152, 167, 120, 150, 165, 120, 149, 164, 118, 146, 162, 117, 145, 161, 109, 139, 157, 109, 139, 156, + 104, 133, 152, 99, 131, 150, 100, 131, 149, 94, 125, 143, 96, 126, 144, 91, 120, 137, 89, 117, 134, 86, 114, 131, 81, 110, 126, 74, 105, 120, 73, 104, 119, 74, 104, 119, 76, 105, 119, 75, 104, 119, 75, 103, 119, 76, 102, 118, 75, 101, 117, 78, 104, 119, 87, 113, 126, 97, 122, 135, 103, 127, 139, + 112, 135, 149, 119, 142, 154, 117, 139, 153, 108, 133, 145, 101, 125, 137, 90, 117, 127, 88, 115, 124, 86, 115, 122, 83, 116, 122, 78, 111, 118, 81, 115, 122, 78, 116, 124, 95, 130, 139, 113, 144, 152, 127, 156, 166, 126, 157, 168, 139, 164, 174, 141, 166, 175, 133, 160, 169, 127, 155, 165, 125, 154, 164, + 135, 161, 171, 133, 157, 170, 127, 150, 163, 109, 135, 147, 101, 125, 136, 82, 107, 116, 96, 115, 122, 108, 125, 131, 104, 121, 127, 82, 99, 105, 75, 90, 95, 81, 93, 97, 69, 76, 77, 53, 58, 60, 31, 36, 38, 19, 24, 25, 25, 26, 27, 27, 30, 31, 74, 81, 83, 84, 91, 94, 93, 102, 105, + 77, 90, 95, 102, 112, 115, 93, 103, 106, 85, 96, 98, 69, 82, 84, 65, 80, 82, 140, 149, 151, 80, 96, 100, 111, 126, 129, 109, 126, 130, 164, 173, 177, 128, 145, 150, 162, 174, 177, 165, 179, 182, 164, 182, 185, 135, 160, 165, 189, 201, 204, 178, 193, 197, 178, 193, 196, 183, 195, 199, 190, 200, 203, + 197, 207, 209, 184, 197, 199, 192, 203, 205, 192, 204, 206, 191, 204, 206, 189, 202, 205, 150, 176, 182, 190, 203, 208, 203, 214, 217, 195, 208, 209, 191, 204, 207, 200, 212, 214, 178, 195, 199, 196, 208, 212, 184, 198, 203, 177, 194, 200, 176, 192, 196, 180, 195, 198, 139, 161, 163, 130, 150, 154, 116, 139, 143, + 88, 114, 122, 92, 115, 121, 91, 115, 119, 99, 122, 126, 118, 138, 139, 141, 156, 157, 145, 157, 156, 136, 148, 148, 144, 156, 155, 162, 174, 173, 173, 183, 184, 165, 174, 174, 136, 146, 147, 125, 137, 139, 143, 149, 152, 124, 132, 135, 112, 119, 123, 100, 112, 115, 67, 79, 82, 38, 52, 57, 44, 54, 59, + 53, 68, 72, 65, 80, 84, 41, 59, 63, 32, 48, 52, 48, 62, 64, 46, 60, 63, 42, 57, 59, 40, 55, 58, 45, 61, 64, 44, 60, 64, 44, 61, 66, 61, 75, 82, 59, 74, 81, 67, 80, 87, 58, 73, 80, 55, 73, 78, 75, 91, 95, 88, 103, 106, 67, 84, 88, 49, 69, 74, 68, 87, 92, + 81, 99, 102, 68, 92, 92, 88, 109, 110, 95, 115, 118, 129, 145, 148, 89, 110, 115, 80, 102, 107, 78, 100, 106, 106, 127, 132, 83, 108, 114, 104, 126, 133, 98, 125, 132, 105, 130, 138, 112, 137, 145, 110, 137, 143, 96, 124, 131, 119, 143, 149, 106, 132, 140, 114, 137, 148, 125, 147, 158, 126, 149, 158, + 138, 161, 169, 130, 155, 163, 148, 168, 174, 146, 167, 173, 149, 170, 175, 149, 171, 176, 168, 185, 188, 163, 181, 185, 161, 180, 184, 166, 184, 187, 177, 192, 195, 173, 189, 192, 174, 190, 193, 173, 191, 193, 183, 197, 200, 165, 186, 189, 154, 179, 184, 168, 188, 191, 183, 198, 201, 171, 191, 194, 184, 201, 203, + 182, 199, 202, 183, 200, 203, 186, 202, 205, 179, 197, 200, 181, 199, 202, 185, 202, 203, 196, 210, 212, 192, 208, 210, 197, 212, 212, 204, 217, 216, 207, 220, 219, 214, 224, 223, 219, 228, 227, 227, 234, 233, 222, 230, 229, 223, 231, 230, 219, 228, 227, 225, 233, 232, 222, 230, 229, 220, 229, 228, 216, 227, 225, + 214, 224, 224, 214, 225, 223, 213, 224, 222, 218, 226, 225, 216, 225, 222, 216, 225, 222, 217, 226, 223, 216, 224, 222, 218, 226, 225, 217, 225, 224, 216, 226, 222, 217, 226, 223, 218, 227, 224, 220, 228, 225, 223, 230, 227, 222, 228, 227, 221, 229, 226, 221, 229, 227, 224, 231, 228, 225, 232, 229, 226, 233, 230, + 213, 225, 229, 214, 226, 230, 212, 225, 229, 212, 224, 228, 209, 225, 228, 208, 223, 226, 209, 224, 226, 206, 220, 226, 207, 221, 227, 205, 219, 225, 202, 218, 224, 202, 217, 223, 201, 218, 224, 201, 217, 223, 201, 217, 223, 200, 216, 222, 198, 215, 221, 195, 214, 219, 194, 212, 219, 193, 211, 218, 190, 209, 216, + 189, 208, 215, 188, 207, 214, 187, 206, 213, 186, 205, 213, 184, 203, 211, 183, 201, 209, 180, 200, 209, 179, 200, 207, 180, 200, 208, 177, 198, 206, 177, 198, 206, 175, 196, 205, 175, 195, 206, 174, 194, 205, 173, 193, 204, 170, 191, 202, 166, 188, 199, 162, 186, 198, 160, 184, 196, 159, 183, 195, 159, 183, 195, + 158, 181, 195, 157, 181, 193, 157, 180, 192, 157, 181, 193, 155, 178, 190, 155, 177, 189, 146, 171, 186, 143, 169, 183, 139, 165, 180, 135, 162, 177, 133, 159, 175, 130, 157, 172, 124, 153, 169, 124, 153, 169, 122, 151, 166, 120, 149, 164, 118, 147, 163, 115, 144, 161, 115, 143, 160, 112, 140, 157, 108, 137, 154, + 104, 134, 151, 99, 131, 148, 98, 129, 146, 95, 125, 143, 93, 123, 140, 89, 119, 136, 84, 113, 130, 81, 110, 127, 76, 106, 123, 75, 105, 122, 72, 103, 118, 74, 104, 119, 76, 105, 119, 74, 104, 119, 80, 107, 121, 89, 115, 130, 100, 124, 139, 108, 131, 144, 107, 131, 143, 105, 129, 141, 104, 128, 140, + 107, 130, 144, 100, 125, 139, 90, 116, 130, 84, 110, 123, 81, 108, 119, 76, 104, 114, 76, 105, 112, 73, 103, 110, 70, 103, 108, 70, 104, 111, 71, 106, 114, 76, 112, 121, 87, 123, 133, 101, 134, 144, 119, 151, 161, 131, 160, 171, 138, 164, 175, 133, 161, 171, 123, 154, 164, 119, 150, 160, 126, 155, 164, + 137, 162, 172, 139, 163, 173, 111, 141, 153, 110, 137, 148, 92, 121, 130, 88, 113, 122, 105, 124, 132, 99, 118, 125, 108, 126, 133, 90, 111, 115, 106, 121, 123, 95, 109, 109, 76, 89, 90, 53, 66, 68, 83, 91, 94, 46, 52, 53, 38, 43, 43, 39, 44, 44, 57, 62, 64, 92, 101, 101, 72, 81, 83, + 83, 94, 97, 110, 120, 123, 74, 86, 89, 124, 133, 135, 94, 106, 110, 86, 99, 102, 103, 115, 119, 124, 136, 138, 107, 122, 125, 123, 135, 140, 114, 131, 136, 131, 145, 149, 92, 114, 119, 158, 169, 173, 93, 118, 121, 186, 193, 194, 133, 152, 156, 150, 167, 171, 179, 189, 192, 142, 162, 166, 189, 198, 201, + 171, 186, 188, 196, 205, 207, 183, 195, 197, 169, 187, 190, 179, 195, 197, 194, 207, 209, 200, 210, 212, 169, 189, 193, 176, 193, 197, 188, 201, 205, 181, 196, 201, 184, 198, 202, 186, 200, 206, 174, 191, 196, 196, 209, 212, 183, 198, 202, 180, 194, 198, 169, 186, 190, 172, 188, 191, 164, 181, 184, 121, 148, 153, + 126, 147, 154, 103, 128, 136, 98, 124, 129, 100, 126, 129, 104, 128, 130, 112, 132, 133, 100, 120, 119, 106, 123, 122, 115, 131, 130, 96, 115, 114, 90, 109, 109, 64, 85, 86, 64, 83, 85, 59, 78, 80, 65, 83, 86, 101, 116, 120, 131, 144, 149, 148, 159, 161, 188, 196, 199, 186, 188, 188, 102, 113, 115, + 128, 133, 136, 122, 127, 128, 143, 147, 148, 94, 102, 104, 48, 56, 58, 24, 34, 36, 42, 56, 59, 48, 63, 66, 44, 61, 64, 44, 61, 65, 45, 62, 67, 43, 61, 67, 50, 65, 73, 51, 66, 74, 70, 83, 90, 67, 82, 86, 53, 70, 76, 70, 85, 90, 85, 101, 107, 87, 102, 105, 70, 89, 95, + 72, 93, 95, 65, 88, 90, 73, 96, 97, 87, 108, 111, 93, 114, 118, 117, 133, 138, 125, 142, 146, 80, 103, 108, 95, 115, 120, 103, 124, 130, 83, 108, 114, 94, 120, 127, 79, 108, 117, 106, 131, 139, 123, 146, 153, 98, 125, 131, 92, 119, 126, 103, 128, 136, 108, 132, 142, 102, 127, 138, 116, 141, 150, + 127, 153, 160, 132, 156, 164, 132, 157, 164, 150, 170, 176, 141, 164, 170, 154, 173, 178, 129, 156, 162, 159, 178, 182, 162, 181, 185, 158, 179, 183, 162, 181, 185, 176, 191, 194, 182, 196, 200, 171, 190, 192, 171, 189, 192, 182, 197, 200, 177, 194, 197, 161, 184, 188, 168, 188, 193, 191, 204, 207, 170, 190, 193, + 185, 200, 203, 188, 204, 207, 185, 201, 204, 188, 203, 206, 190, 204, 207, 194, 208, 210, 189, 205, 207, 201, 214, 214, 195, 209, 212, 205, 218, 217, 211, 223, 221, 210, 222, 221, 219, 228, 227, 222, 230, 229, 225, 233, 232, 224, 232, 231, 225, 232, 231, 220, 228, 228, 225, 231, 229, 220, 228, 227, 222, 229, 228, + 213, 224, 222, 215, 224, 223, 216, 224, 223, 216, 224, 223, 218, 227, 224, 215, 224, 221, 216, 225, 222, 215, 224, 222, 215, 223, 222, 217, 224, 224, 218, 226, 223, 216, 225, 222, 218, 227, 224, 219, 228, 225, 222, 229, 226, 223, 230, 226, 220, 228, 225, 223, 230, 227, 222, 230, 227, 225, 232, 229, 224, 231, 228, + 215, 227, 231, 214, 226, 230, 213, 225, 229, 211, 224, 228, 210, 225, 228, 209, 224, 229, 208, 223, 226, 207, 222, 225, 206, 221, 225, 205, 220, 226, 202, 218, 224, 202, 218, 224, 202, 218, 224, 203, 218, 224, 201, 216, 222, 200, 216, 222, 199, 216, 222, 196, 215, 220, 193, 211, 219, 194, 212, 219, 192, 210, 217, + 191, 209, 216, 189, 208, 215, 189, 207, 214, 187, 206, 213, 184, 203, 211, 183, 203, 211, 182, 202, 210, 181, 201, 209, 181, 201, 209, 179, 199, 207, 178, 198, 206, 175, 196, 205, 175, 195, 206, 173, 194, 205, 171, 193, 204, 171, 191, 202, 168, 190, 202, 166, 188, 199, 161, 186, 198, 162, 185, 197, 163, 185, 197, + 161, 183, 195, 161, 183, 195, 156, 180, 192, 155, 179, 191, 152, 176, 188, 147, 172, 186, 144, 170, 184, 139, 165, 180, 133, 162, 176, 131, 159, 175, 126, 154, 170, 128, 155, 171, 125, 153, 169, 122, 150, 167, 119, 149, 164, 120, 149, 164, 114, 144, 161, 116, 145, 162, 110, 141, 158, 109, 138, 155, 106, 136, 153, + 100, 131, 148, 97, 129, 145, 95, 128, 144, 95, 125, 142, 90, 120, 137, 86, 116, 133, 82, 112, 129, 79, 109, 126, 77, 107, 124, 74, 105, 121, 74, 104, 120, 78, 107, 122, 80, 109, 124, 99, 126, 140, 106, 131, 145, 109, 133, 148, 97, 122, 135, 95, 121, 134, 90, 116, 130, 90, 116, 130, 93, 118, 130, + 85, 111, 125, 84, 110, 124, 84, 110, 124, 79, 107, 118, 79, 107, 118, 77, 104, 115, 76, 103, 113, 68, 99, 108, 72, 103, 110, 70, 102, 108, 70, 103, 111, 74, 108, 117, 87, 121, 132, 107, 139, 150, 122, 153, 163, 135, 164, 172, 129, 160, 169, 132, 161, 170, 130, 158, 168, 130, 159, 168, 137, 164, 173, + 144, 170, 179, 133, 161, 172, 110, 141, 152, 98, 127, 137, 110, 136, 144, 111, 135, 142, 100, 122, 129, 111, 132, 138, 113, 133, 139, 99, 121, 126, 97, 117, 120, 80, 95, 96, 84, 97, 99, 90, 101, 104, 103, 113, 114, 98, 104, 106, 38, 46, 47, 48, 54, 57, 50, 59, 59, 89, 96, 96, 77, 86, 88, + 79, 90, 92, 116, 125, 128, 93, 104, 108, 57, 71, 76, 119, 130, 133, 103, 117, 121, 104, 120, 124, 103, 117, 121, 118, 131, 135, 134, 144, 147, 61, 80, 83, 87, 105, 109, 94, 114, 118, 100, 120, 123, 145, 159, 161, 89, 113, 118, 136, 152, 157, 117, 137, 142, 104, 128, 133, 141, 158, 161, 115, 138, 143, + 158, 174, 177, 142, 161, 166, 146, 165, 171, 182, 194, 197, 178, 192, 195, 175, 190, 192, 150, 172, 177, 176, 191, 195, 175, 191, 195, 170, 188, 193, 192, 204, 208, 180, 196, 201, 183, 198, 203, 167, 186, 192, 171, 188, 193, 203, 212, 215, 169, 187, 191, 175, 191, 194, 163, 181, 183, 144, 167, 171, 170, 183, 185, + 97, 125, 133, 98, 124, 132, 67, 99, 104, 77, 106, 110, 94, 119, 121, 111, 131, 132, 111, 129, 129, 109, 126, 125, 80, 101, 101, 69, 90, 90, 65, 86, 86, 74, 94, 96, 80, 99, 100, 88, 104, 106, 77, 93, 96, 76, 92, 96, 84, 98, 104, 77, 93, 98, 57, 74, 80, 89, 105, 111, 135, 144, 148, + 113, 121, 124, 100, 104, 108, 15, 26, 29, 63, 73, 76, 107, 112, 115, 138, 142, 144, 120, 125, 126, 123, 131, 132, 120, 128, 130, 62, 72, 74, 22, 37, 42, 42, 59, 66, 52, 65, 72, 42, 56, 63, 48, 61, 66, 63, 74, 78, 63, 76, 81, 63, 74, 81, 59, 72, 78, 80, 94, 100, 87, 104, 109, + 66, 88, 93, 64, 87, 92, 70, 92, 97, 77, 98, 102, 94, 114, 119, 81, 101, 107, 94, 112, 117, 129, 145, 148, 102, 122, 127, 81, 105, 110, 81, 105, 111, 95, 118, 123, 80, 106, 114, 82, 108, 118, 99, 122, 129, 106, 129, 135, 95, 121, 127, 100, 125, 132, 101, 126, 135, 117, 139, 148, 110, 135, 143, + 107, 135, 142, 132, 155, 161, 126, 151, 158, 130, 155, 161, 126, 153, 160, 144, 166, 171, 147, 168, 174, 125, 153, 159, 155, 176, 181, 162, 181, 184, 160, 180, 184, 154, 175, 180, 180, 194, 197, 176, 192, 194, 167, 186, 189, 177, 194, 196, 190, 203, 205, 178, 195, 198, 169, 187, 190, 170, 189, 192, 188, 201, 204, + 180, 196, 200, 186, 201, 203, 196, 208, 210, 190, 204, 207, 187, 202, 204, 191, 206, 208, 193, 210, 211, 196, 211, 212, 205, 217, 217, 203, 216, 217, 208, 219, 219, 214, 224, 224, 217, 226, 225, 222, 230, 229, 226, 233, 232, 224, 232, 231, 225, 232, 232, 224, 232, 228, 224, 231, 230, 221, 228, 226, 216, 225, 224, + 220, 227, 226, 216, 224, 223, 216, 225, 224, 217, 226, 223, 216, 224, 222, 218, 226, 224, 216, 225, 222, 217, 226, 223, 219, 226, 223, 215, 224, 221, 215, 224, 221, 216, 225, 222, 216, 225, 222, 218, 227, 224, 219, 227, 224, 219, 228, 226, 224, 230, 227, 223, 231, 228, 224, 231, 228, 225, 232, 229, 227, 234, 231, + 214, 226, 230, 212, 225, 229, 213, 225, 229, 211, 224, 228, 210, 225, 228, 209, 223, 229, 207, 221, 228, 207, 221, 227, 206, 220, 226, 205, 220, 226, 205, 219, 225, 205, 219, 225, 204, 219, 225, 203, 218, 224, 202, 218, 224, 201, 217, 223, 200, 216, 222, 197, 215, 220, 195, 214, 219, 194, 212, 219, 193, 211, 218, + 191, 209, 216, 191, 209, 216, 190, 208, 215, 188, 207, 214, 187, 206, 212, 186, 205, 213, 183, 203, 211, 183, 202, 210, 182, 200, 208, 177, 199, 207, 176, 197, 205, 176, 197, 206, 175, 195, 206, 173, 194, 205, 171, 193, 204, 170, 192, 203, 169, 191, 203, 167, 189, 201, 165, 187, 199, 164, 186, 198, 162, 184, 196, + 160, 183, 195, 156, 179, 193, 154, 178, 190, 151, 176, 189, 146, 172, 186, 141, 168, 182, 138, 164, 180, 134, 162, 177, 130, 160, 174, 131, 157, 173, 128, 155, 170, 124, 154, 169, 123, 152, 167, 121, 150, 165, 116, 146, 162, 114, 144, 161, 116, 145, 162, 112, 142, 159, 109, 139, 156, 107, 137, 154, 103, 133, 150, + 99, 130, 147, 97, 128, 145, 96, 127, 143, 92, 123, 139, 87, 118, 135, 83, 113, 130, 82, 112, 129, 78, 108, 125, 77, 107, 124, 78, 107, 124, 86, 114, 130, 99, 125, 140, 107, 132, 147, 100, 127, 141, 94, 120, 134, 82, 110, 122, 79, 107, 119, 80, 107, 122, 86, 112, 128, 88, 114, 129, 87, 110, 125, + 83, 108, 120, 81, 107, 119, 79, 105, 117, 78, 106, 117, 77, 105, 116, 76, 103, 113, 72, 100, 110, 67, 97, 106, 64, 96, 105, 66, 98, 106, 74, 104, 112, 83, 110, 119, 103, 130, 139, 110, 140, 152, 122, 152, 163, 137, 164, 172, 143, 168, 176, 145, 169, 175, 143, 166, 173, 133, 161, 170, 132, 162, 171, + 139, 167, 176, 141, 166, 176, 125, 152, 160, 106, 134, 143, 116, 140, 147, 95, 122, 129, 110, 132, 138, 109, 130, 137, 107, 127, 134, 103, 124, 131, 110, 128, 133, 93, 106, 109, 89, 101, 102, 101, 111, 113, 108, 117, 120, 59, 70, 72, 45, 52, 55, 33, 42, 44, 36, 45, 47, 86, 93, 94, 64, 73, 74, + 82, 89, 89, 108, 113, 115, 86, 97, 101, 89, 100, 105, 92, 106, 110, 137, 148, 151, 158, 168, 172, 111, 125, 129, 103, 119, 122, 128, 140, 143, 138, 148, 150, 90, 109, 110, 99, 120, 123, 91, 114, 117, 135, 151, 154, 118, 138, 141, 83, 108, 114, 86, 112, 118, 125, 145, 150, 135, 154, 158, 113, 138, 143, + 102, 125, 131, 62, 95, 104, 132, 152, 159, 113, 141, 149, 128, 153, 161, 125, 152, 159, 180, 191, 194, 155, 173, 177, 190, 200, 202, 154, 175, 180, 131, 160, 168, 146, 171, 178, 164, 184, 189, 205, 214, 216, 178, 193, 198, 164, 183, 188, 181, 194, 198, 181, 193, 196, 157, 175, 179, 183, 195, 196, 160, 177, 180, + 169, 181, 184, 133, 153, 155, 112, 136, 139, 80, 110, 112, 77, 104, 105, 101, 123, 123, 103, 122, 122, 114, 132, 131, 113, 131, 130, 114, 129, 130, 112, 127, 128, 86, 103, 104, 78, 96, 98, 63, 81, 84, 70, 87, 90, 63, 79, 83, 53, 72, 77, 53, 71, 78, 65, 83, 89, 58, 75, 80, 65, 81, 88, + 52, 66, 71, 31, 45, 49, 113, 122, 125, 104, 110, 111, 107, 111, 115, 31, 39, 47, 47, 58, 67, 25, 34, 44, 45, 57, 64, 93, 103, 108, 132, 140, 143, 119, 121, 123, 135, 142, 145, 88, 96, 100, 32, 42, 46, 39, 51, 58, 58, 69, 77, 56, 67, 73, 54, 67, 74, 60, 74, 80, 77, 93, 97, + 88, 106, 112, 70, 91, 97, 75, 95, 102, 59, 81, 87, 79, 98, 104, 88, 106, 112, 78, 100, 105, 94, 113, 117, 89, 110, 115, 95, 115, 119, 78, 101, 106, 78, 101, 107, 80, 103, 109, 84, 106, 113, 86, 111, 116, 86, 110, 116, 100, 124, 130, 103, 127, 134, 108, 132, 140, 102, 127, 137, 100, 127, 134, + 111, 138, 145, 117, 143, 150, 115, 141, 149, 123, 147, 155, 126, 151, 157, 124, 150, 157, 131, 156, 162, 123, 151, 157, 139, 162, 168, 139, 164, 168, 165, 182, 185, 152, 174, 178, 162, 181, 184, 172, 188, 191, 177, 191, 194, 166, 184, 188, 174, 191, 194, 187, 200, 202, 182, 197, 199, 169, 188, 191, 177, 194, 197, + 183, 198, 200, 178, 196, 198, 194, 207, 209, 198, 210, 212, 196, 209, 211, 192, 208, 210, 194, 209, 210, 201, 214, 215, 201, 214, 214, 205, 218, 219, 209, 220, 220, 213, 223, 223, 217, 226, 224, 220, 228, 227, 224, 232, 231, 226, 233, 232, 223, 231, 230, 223, 230, 229, 222, 230, 229, 224, 230, 229, 216, 226, 225, + 215, 225, 223, 218, 227, 224, 216, 225, 222, 215, 224, 222, 217, 226, 223, 216, 225, 223, 219, 228, 225, 215, 224, 221, 220, 227, 224, 217, 226, 223, 215, 224, 221, 214, 223, 220, 216, 225, 222, 218, 227, 224, 218, 227, 224, 218, 227, 224, 220, 229, 226, 222, 230, 227, 224, 230, 227, 224, 231, 228, 226, 233, 230, + 214, 226, 230, 213, 226, 230, 211, 227, 230, 211, 225, 228, 209, 224, 228, 209, 224, 228, 209, 223, 228, 208, 222, 228, 208, 222, 228, 207, 220, 227, 206, 220, 226, 205, 219, 225, 206, 219, 225, 205, 219, 225, 204, 218, 224, 203, 217, 223, 201, 217, 223, 200, 216, 222, 198, 215, 221, 196, 214, 219, 194, 212, 219, + 192, 210, 217, 191, 209, 216, 189, 207, 214, 189, 207, 214, 187, 206, 213, 186, 205, 213, 185, 204, 212, 182, 203, 211, 183, 202, 210, 181, 201, 209, 179, 199, 207, 177, 198, 206, 175, 196, 207, 174, 195, 206, 173, 194, 205, 170, 192, 204, 168, 190, 202, 167, 189, 201, 166, 188, 200, 165, 187, 199, 163, 185, 197, + 160, 182, 195, 154, 177, 192, 151, 175, 189, 146, 172, 186, 143, 170, 184, 137, 164, 179, 132, 160, 176, 130, 159, 174, 129, 159, 174, 128, 157, 171, 129, 156, 170, 124, 153, 167, 121, 151, 166, 120, 150, 165, 116, 146, 162, 113, 143, 160, 111, 141, 158, 109, 141, 157, 105, 136, 155, 104, 135, 153, 99, 132, 147, + 98, 128, 145, 96, 128, 144, 92, 125, 141, 90, 123, 139, 85, 115, 132, 82, 113, 130, 83, 112, 129, 85, 113, 130, 89, 116, 134, 100, 126, 142, 105, 130, 146, 102, 127, 143, 90, 117, 132, 81, 109, 124, 72, 101, 115, 71, 101, 113, 78, 106, 119, 88, 115, 129, 87, 113, 128, 82, 108, 123, 83, 109, 123, + 82, 106, 118, 78, 103, 116, 76, 102, 114, 72, 102, 113, 73, 101, 112, 71, 100, 111, 69, 98, 108, 73, 102, 111, 77, 106, 114, 84, 113, 120, 93, 119, 127, 110, 133, 141, 130, 149, 157, 139, 161, 169, 147, 165, 172, 145, 166, 175, 142, 167, 175, 138, 165, 173, 130, 160, 167, 126, 158, 167, 148, 172, 180, + 151, 176, 184, 142, 165, 173, 114, 142, 152, 115, 137, 144, 110, 133, 140, 121, 143, 149, 108, 128, 133, 109, 128, 133, 112, 131, 136, 105, 124, 131, 77, 99, 106, 68, 89, 96, 74, 86, 91, 78, 91, 94, 77, 88, 94, 94, 102, 105, 58, 65, 69, 47, 55, 59, 89, 94, 96, 71, 77, 78, 68, 76, 76, + 67, 74, 75, 64, 72, 75, 73, 82, 86, 65, 75, 80, 73, 84, 89, 92, 104, 106, 137, 148, 151, 177, 183, 185, 130, 145, 147, 113, 129, 133, 171, 180, 181, 147, 161, 163, 144, 159, 161, 134, 152, 155, 128, 147, 150, 139, 155, 159, 146, 162, 165, 117, 138, 142, 118, 141, 144, 139, 156, 160, 158, 172, 175, + 159, 173, 177, 91, 117, 125, 97, 124, 133, 90, 122, 132, 134, 158, 166, 154, 173, 179, 162, 179, 184, 159, 177, 182, 106, 138, 146, 138, 163, 170, 162, 180, 187, 143, 168, 177, 167, 183, 189, 136, 163, 171, 143, 166, 171, 132, 157, 163, 114, 144, 152, 156, 174, 178, 175, 188, 190, 125, 152, 156, 109, 138, 142, + 139, 160, 163, 107, 133, 136, 134, 152, 155, 169, 180, 181, 172, 182, 182, 169, 180, 181, 167, 176, 177, 162, 172, 173, 157, 167, 168, 139, 150, 151, 127, 141, 141, 142, 153, 154, 117, 131, 132, 102, 117, 118, 61, 79, 80, 54, 72, 75, 51, 68, 73, 56, 72, 79, 64, 82, 89, 67, 84, 90, 69, 85, 91, + 57, 70, 76, 41, 55, 59, 47, 60, 62, 39, 53, 55, 51, 63, 69, 123, 130, 134, 114, 119, 127, 31, 41, 53, 55, 66, 74, 56, 68, 74, 57, 69, 75, 54, 68, 75, 25, 38, 45, 71, 85, 90, 130, 138, 141, 126, 133, 136, 128, 135, 139, 76, 84, 91, 38, 50, 57, 60, 74, 82, 55, 70, 76, + 65, 81, 87, 70, 85, 90, 73, 91, 97, 72, 91, 97, 84, 103, 108, 82, 101, 106, 87, 106, 111, 76, 98, 99, 100, 119, 122, 90, 111, 114, 93, 114, 118, 67, 91, 96, 64, 89, 95, 85, 108, 114, 90, 112, 117, 87, 111, 115, 80, 105, 111, 101, 124, 130, 108, 131, 137, 114, 136, 144, 108, 133, 140, + 96, 124, 131, 100, 130, 137, 128, 150, 158, 126, 149, 157, 114, 141, 148, 125, 150, 156, 121, 147, 154, 131, 155, 161, 114, 145, 150, 135, 159, 165, 142, 166, 170, 155, 176, 178, 158, 178, 181, 161, 180, 183, 168, 185, 189, 169, 187, 190, 174, 191, 193, 168, 186, 189, 189, 202, 203, 180, 196, 199, 170, 189, 192, + 186, 200, 203, 182, 198, 200, 178, 197, 198, 200, 213, 215, 206, 216, 219, 199, 212, 214, 196, 211, 213, 202, 215, 216, 203, 215, 217, 206, 217, 218, 210, 220, 220, 213, 223, 223, 220, 227, 226, 219, 227, 226, 222, 230, 229, 227, 233, 232, 224, 231, 230, 223, 230, 229, 224, 231, 230, 220, 228, 227, 222, 229, 228, + 215, 224, 222, 213, 223, 220, 219, 227, 225, 216, 224, 223, 213, 222, 221, 215, 224, 221, 215, 223, 220, 218, 227, 224, 218, 227, 224, 217, 226, 223, 214, 223, 220, 215, 224, 221, 217, 226, 223, 216, 225, 222, 219, 228, 225, 218, 226, 223, 220, 228, 225, 222, 230, 227, 222, 230, 227, 225, 232, 229, 226, 233, 230, + 214, 226, 229, 211, 226, 229, 212, 225, 228, 210, 225, 228, 210, 225, 229, 209, 224, 228, 210, 223, 228, 209, 223, 227, 207, 222, 225, 208, 223, 226, 208, 222, 227, 206, 221, 225, 206, 220, 226, 205, 219, 225, 205, 219, 225, 203, 218, 224, 202, 218, 224, 200, 217, 223, 199, 215, 221, 198, 215, 220, 195, 212, 219, + 193, 211, 218, 192, 210, 217, 191, 209, 216, 189, 207, 214, 188, 207, 214, 187, 206, 213, 187, 206, 214, 186, 205, 213, 184, 203, 211, 182, 201, 209, 179, 199, 207, 177, 198, 206, 176, 196, 208, 173, 195, 206, 173, 195, 206, 172, 193, 204, 171, 192, 203, 168, 190, 201, 165, 187, 198, 164, 186, 198, 160, 183, 195, + 157, 180, 192, 151, 175, 190, 148, 173, 187, 142, 168, 183, 138, 165, 180, 134, 162, 177, 131, 160, 175, 130, 159, 174, 129, 158, 173, 127, 155, 169, 126, 154, 169, 123, 152, 167, 119, 149, 164, 117, 148, 163, 114, 144, 161, 112, 143, 160, 110, 141, 159, 108, 139, 158, 105, 137, 156, 100, 132, 150, 101, 131, 148, + 100, 130, 147, 95, 127, 143, 92, 123, 140, 86, 118, 134, 86, 116, 133, 88, 117, 134, 90, 118, 135, 99, 125, 142, 105, 130, 147, 101, 126, 142, 94, 120, 136, 85, 114, 129, 75, 104, 119, 73, 102, 116, 76, 105, 120, 87, 115, 129, 91, 117, 132, 88, 115, 129, 83, 109, 124, 81, 109, 122, 79, 106, 119, + 78, 104, 117, 77, 103, 115, 78, 104, 116, 80, 108, 119, 79, 107, 118, 82, 108, 120, 94, 119, 128, 103, 128, 134, 117, 139, 145, 131, 143, 153, 127, 146, 156, 123, 142, 150, 116, 140, 149, 116, 144, 155, 124, 152, 163, 132, 157, 169, 133, 161, 172, 126, 157, 166, 134, 162, 170, 130, 160, 168, 139, 167, 174, + 139, 165, 176, 123, 152, 161, 118, 145, 153, 117, 138, 144, 109, 130, 137, 103, 124, 129, 105, 123, 128, 101, 120, 125, 88, 108, 114, 94, 113, 120, 87, 108, 115, 95, 114, 120, 73, 87, 94, 68, 81, 88, 50, 64, 69, 67, 76, 80, 59, 67, 71, 52, 59, 63, 81, 85, 88, 53, 60, 63, 57, 65, 68, + 67, 74, 77, 60, 69, 73, 58, 68, 72, 29, 40, 46, 100, 107, 108, 73, 81, 83, 107, 116, 118, 115, 129, 133, 139, 152, 155, 133, 146, 149, 148, 161, 163, 163, 174, 176, 167, 179, 182, 178, 188, 190, 134, 152, 157, 146, 162, 165, 175, 185, 187, 183, 193, 194, 147, 166, 169, 164, 177, 179, 177, 188, 190, + 153, 169, 171, 188, 196, 198, 135, 156, 160, 168, 182, 187, 123, 150, 159, 164, 180, 186, 149, 169, 175, 144, 165, 173, 157, 177, 182, 177, 192, 196, 156, 178, 185, 165, 183, 191, 166, 184, 190, 151, 174, 181, 96, 133, 141, 108, 139, 147, 179, 191, 195, 156, 176, 180, 111, 141, 146, 167, 182, 184, 123, 148, 150, + 98, 128, 131, 119, 141, 144, 98, 120, 124, 71, 98, 102, 84, 107, 111, 95, 117, 118, 93, 116, 117, 78, 101, 103, 68, 94, 97, 69, 95, 98, 101, 121, 123, 107, 124, 126, 134, 146, 147, 152, 162, 163, 162, 172, 172, 155, 163, 163, 155, 164, 164, 146, 157, 156, 139, 145, 148, 140, 150, 154, 128, 137, 141, + 101, 112, 115, 56, 68, 70, 19, 33, 35, 40, 54, 56, 40, 56, 62, 63, 75, 83, 45, 55, 66, 120, 127, 134, 117, 121, 128, 40, 51, 60, 57, 69, 75, 55, 68, 74, 50, 64, 70, 55, 68, 75, 55, 70, 77, 46, 62, 68, 32, 47, 55, 87, 97, 103, 128, 136, 141, 116, 123, 128, 116, 125, 130, + 47, 57, 66, 60, 73, 82, 64, 81, 88, 70, 88, 95, 60, 81, 86, 81, 98, 104, 82, 101, 105, 89, 109, 110, 88, 108, 110, 82, 104, 108, 77, 99, 103, 87, 108, 113, 78, 101, 107, 76, 100, 105, 84, 109, 113, 93, 116, 121, 88, 112, 116, 85, 110, 116, 94, 119, 125, 97, 123, 128, 102, 127, 134, + 108, 134, 140, 124, 147, 153, 119, 143, 150, 145, 163, 168, 131, 152, 158, 122, 147, 153, 120, 147, 153, 126, 152, 157, 133, 158, 163, 128, 154, 160, 134, 159, 164, 149, 170, 174, 165, 182, 185, 161, 180, 183, 161, 180, 185, 164, 183, 188, 165, 184, 187, 175, 191, 194, 171, 190, 193, 183, 198, 200, 173, 191, 194, + 169, 189, 191, 186, 202, 203, 180, 197, 200, 190, 205, 207, 204, 215, 217, 203, 215, 217, 203, 215, 217, 201, 214, 214, 207, 219, 220, 204, 215, 215, 212, 221, 221, 214, 223, 223, 215, 225, 224, 223, 230, 229, 219, 227, 226, 224, 230, 229, 227, 233, 232, 226, 232, 231, 219, 227, 226, 220, 228, 227, 218, 226, 225, + 218, 226, 224, 216, 225, 222, 210, 222, 220, 214, 223, 222, 218, 226, 225, 213, 222, 219, 215, 224, 221, 215, 224, 221, 218, 226, 223, 217, 226, 223, 216, 225, 222, 214, 223, 220, 217, 226, 223, 218, 226, 224, 218, 227, 225, 219, 227, 224, 220, 228, 225, 221, 229, 226, 223, 231, 228, 225, 232, 229, 227, 234, 232, + 214, 226, 230, 213, 225, 229, 212, 226, 229, 212, 225, 229, 211, 225, 228, 212, 225, 229, 212, 224, 228, 211, 223, 227, 210, 223, 227, 209, 224, 227, 208, 223, 226, 208, 223, 225, 207, 221, 227, 207, 221, 227, 207, 221, 225, 205, 220, 226, 203, 218, 224, 201, 216, 222, 200, 216, 222, 199, 215, 221, 195, 212, 219, + 194, 213, 218, 192, 210, 217, 190, 208, 215, 191, 209, 216, 190, 208, 215, 190, 208, 215, 188, 207, 215, 187, 206, 214, 186, 205, 213, 184, 203, 211, 180, 200, 208, 179, 199, 207, 177, 197, 208, 174, 195, 206, 173, 195, 206, 171, 193, 204, 169, 191, 202, 168, 190, 201, 166, 188, 199, 164, 186, 197, 158, 182, 194, + 154, 178, 191, 148, 174, 188, 144, 170, 185, 140, 167, 182, 137, 164, 180, 134, 161, 177, 133, 161, 176, 133, 159, 175, 130, 157, 173, 126, 154, 169, 126, 153, 168, 122, 151, 166, 119, 149, 164, 116, 145, 162, 113, 143, 162, 111, 141, 160, 108, 139, 158, 105, 136, 155, 104, 135, 154, 103, 134, 152, 102, 132, 150, + 96, 127, 146, 92, 124, 142, 87, 120, 136, 91, 121, 138, 92, 122, 138, 97, 124, 141, 101, 127, 144, 100, 126, 143, 94, 120, 137, 88, 115, 130, 81, 110, 124, 79, 108, 123, 81, 110, 125, 83, 111, 125, 92, 118, 134, 91, 117, 133, 89, 115, 130, 84, 111, 125, 81, 108, 122, 80, 108, 118, 82, 108, 119, + 82, 110, 121, 89, 115, 127, 95, 120, 132, 102, 127, 138, 113, 134, 146, 126, 141, 150, 127, 142, 150, 118, 138, 145, 102, 127, 134, 86, 116, 124, 77, 109, 119, 81, 113, 124, 90, 120, 131, 101, 131, 146, 114, 143, 158, 122, 149, 164, 127, 156, 168, 130, 160, 168, 136, 164, 173, 135, 164, 171, 140, 167, 174, + 137, 162, 173, 135, 160, 168, 119, 146, 154, 110, 133, 139, 103, 125, 131, 95, 115, 120, 83, 103, 108, 88, 108, 113, 105, 123, 129, 101, 120, 126, 105, 124, 130, 97, 115, 122, 75, 93, 100, 67, 85, 91, 81, 92, 97, 85, 93, 97, 56, 64, 68, 30, 38, 42, 67, 74, 74, 46, 55, 57, 64, 73, 77, + 59, 68, 73, 52, 62, 67, 53, 63, 67, 84, 92, 95, 55, 64, 67, 75, 84, 84, 56, 68, 70, 62, 76, 78, 102, 117, 120, 136, 148, 152, 121, 135, 140, 133, 147, 152, 174, 186, 188, 181, 190, 192, 213, 217, 219, 120, 139, 140, 144, 160, 161, 172, 184, 185, 191, 202, 202, 203, 209, 210, 179, 190, 192, + 190, 201, 201, 175, 187, 189, 191, 200, 201, 169, 184, 188, 184, 195, 197, 157, 175, 179, 183, 195, 198, 187, 199, 201, 168, 185, 191, 175, 191, 195, 187, 200, 205, 176, 192, 197, 174, 190, 197, 182, 197, 201, 147, 170, 177, 133, 160, 167, 113, 144, 152, 126, 155, 162, 192, 205, 206, 188, 201, 203, 156, 174, 177, + 159, 175, 176, 100, 125, 127, 74, 101, 104, 95, 115, 120, 88, 109, 113, 89, 111, 114, 89, 112, 116, 81, 107, 110, 101, 122, 126, 83, 107, 110, 83, 108, 111, 85, 106, 108, 78, 98, 99, 86, 103, 103, 113, 127, 126, 113, 127, 127, 98, 112, 116, 78, 94, 98, 59, 78, 82, 48, 68, 73, 42, 61, 67, + 80, 95, 99, 116, 128, 130, 150, 159, 160, 137, 145, 145, 134, 140, 141, 139, 145, 147, 97, 104, 108, 44, 59, 65, 26, 32, 39, 125, 133, 137, 106, 115, 119, 46, 58, 65, 55, 69, 76, 55, 69, 75, 55, 69, 76, 54, 69, 76, 50, 66, 73, 60, 74, 81, 58, 74, 81, 51, 65, 73, 55, 68, 76, + 123, 135, 142, 110, 120, 126, 123, 132, 136, 45, 59, 66, 65, 80, 87, 63, 79, 85, 64, 83, 87, 76, 97, 97, 65, 86, 88, 75, 94, 100, 80, 101, 107, 80, 103, 106, 80, 102, 107, 88, 111, 114, 88, 111, 116, 102, 123, 128, 89, 113, 117, 82, 107, 113, 87, 113, 119, 76, 105, 112, 98, 126, 132, + 92, 121, 129, 120, 144, 150, 135, 155, 162, 102, 130, 137, 158, 173, 178, 121, 146, 153, 140, 162, 165, 125, 152, 156, 125, 152, 157, 142, 164, 169, 139, 162, 167, 146, 168, 171, 161, 179, 181, 166, 183, 186, 154, 176, 178, 168, 186, 189, 168, 187, 191, 171, 190, 192, 172, 191, 192, 181, 197, 198, 182, 199, 201, + 176, 194, 197, 178, 196, 199, 187, 203, 205, 178, 196, 199, 198, 210, 212, 201, 213, 215, 207, 219, 221, 209, 220, 220, 208, 219, 219, 209, 219, 219, 207, 218, 218, 215, 224, 223, 217, 225, 225, 222, 229, 229, 221, 229, 228, 218, 226, 225, 225, 231, 230, 224, 231, 230, 221, 228, 227, 216, 225, 224, 215, 224, 222, + 219, 226, 225, 216, 224, 224, 212, 221, 219, 208, 219, 215, 212, 222, 219, 218, 227, 224, 214, 223, 220, 217, 224, 221, 219, 227, 224, 220, 227, 224, 219, 226, 223, 216, 224, 221, 216, 225, 222, 217, 226, 224, 218, 226, 224, 219, 228, 225, 219, 229, 226, 221, 230, 227, 223, 230, 227, 225, 232, 231, 227, 233, 233, + 213, 225, 229, 214, 226, 230, 213, 225, 229, 213, 225, 229, 213, 225, 229, 213, 225, 229, 213, 225, 229, 212, 224, 228, 210, 224, 227, 209, 224, 227, 209, 224, 227, 208, 224, 226, 210, 223, 229, 209, 222, 228, 207, 221, 225, 206, 220, 226, 205, 219, 225, 204, 218, 224, 200, 216, 222, 199, 215, 221, 198, 214, 221, + 195, 212, 218, 193, 211, 218, 191, 209, 216, 191, 210, 217, 191, 209, 216, 189, 207, 214, 189, 207, 214, 188, 207, 215, 186, 205, 213, 184, 203, 211, 182, 201, 209, 179, 200, 208, 178, 198, 209, 174, 196, 207, 172, 194, 205, 171, 193, 204, 172, 192, 203, 168, 190, 201, 166, 187, 198, 162, 184, 196, 157, 181, 193, + 151, 176, 189, 147, 173, 187, 146, 172, 186, 141, 167, 183, 140, 166, 182, 137, 163, 179, 135, 161, 177, 134, 160, 176, 126, 155, 171, 125, 154, 168, 123, 153, 168, 120, 149, 165, 116, 146, 162, 113, 143, 160, 110, 140, 159, 110, 140, 159, 108, 138, 157, 103, 135, 154, 106, 137, 156, 104, 134, 153, 101, 131, 148, + 98, 128, 145, 99, 129, 146, 97, 126, 145, 98, 127, 144, 103, 130, 146, 104, 130, 147, 98, 125, 142, 91, 119, 135, 84, 114, 129, 84, 113, 127, 85, 113, 128, 90, 118, 133, 91, 117, 133, 98, 124, 140, 97, 124, 138, 97, 123, 137, 94, 120, 134, 89, 117, 130, 90, 116, 127, 86, 113, 124, 90, 117, 126, + 103, 128, 137, 115, 138, 149, 124, 143, 154, 123, 141, 152, 115, 134, 145, 102, 125, 136, 81, 109, 117, 72, 101, 109, 65, 95, 106, 71, 102, 111, 79, 111, 120, 76, 109, 118, 83, 114, 126, 92, 123, 139, 105, 135, 152, 109, 141, 156, 122, 152, 165, 130, 159, 167, 133, 161, 168, 142, 166, 177, 145, 168, 177, + 138, 164, 173, 130, 157, 166, 117, 145, 153, 112, 137, 143, 100, 122, 128, 82, 107, 112, 84, 109, 115, 104, 125, 130, 109, 128, 133, 91, 111, 117, 135, 150, 155, 89, 110, 115, 76, 93, 97, 95, 110, 112, 73, 86, 89, 59, 70, 74, 46, 57, 59, 49, 57, 57, 63, 69, 70, 36, 46, 49, 80, 88, 92, + 59, 69, 73, 52, 62, 66, 74, 82, 86, 109, 116, 117, 51, 61, 63, 78, 87, 88, 52, 64, 67, 66, 80, 81, 55, 76, 79, 129, 141, 146, 140, 151, 155, 82, 101, 105, 77, 96, 101, 173, 182, 184, 172, 182, 182, 168, 178, 179, 120, 139, 138, 127, 144, 144, 172, 182, 182, 162, 175, 177, 179, 191, 192, + 169, 184, 185, 174, 187, 188, 187, 198, 198, 189, 200, 202, 172, 186, 189, 177, 189, 193, 161, 178, 183, 168, 184, 188, 183, 196, 198, 181, 195, 200, 199, 208, 212, 168, 186, 193, 195, 206, 210, 190, 203, 209, 193, 206, 209, 177, 194, 199, 157, 178, 183, 146, 170, 174, 142, 165, 169, 145, 167, 171, 191, 202, 203, + 194, 203, 204, 179, 191, 191, 125, 144, 145, 78, 100, 105, 61, 85, 90, 76, 99, 102, 82, 105, 110, 97, 120, 124, 90, 114, 118, 81, 107, 110, 94, 119, 121, 122, 141, 143, 102, 121, 123, 100, 117, 116, 78, 95, 97, 92, 110, 110, 99, 114, 117, 69, 86, 92, 62, 80, 87, 63, 80, 87, 53, 72, 78, + 64, 80, 86, 61, 78, 81, 54, 72, 74, 48, 67, 70, 33, 50, 53, 45, 61, 64, 85, 99, 103, 134, 143, 144, 140, 149, 152, 136, 141, 144, 144, 146, 148, 157, 160, 163, 53, 63, 69, 53, 68, 75, 67, 81, 88, 63, 78, 85, 61, 75, 82, 54, 68, 75, 63, 78, 85, 55, 71, 77, 60, 75, 82, + 66, 81, 90, 56, 71, 80, 52, 68, 76, 126, 136, 141, 115, 126, 130, 127, 135, 138, 45, 63, 69, 68, 87, 93, 79, 96, 102, 77, 96, 102, 80, 99, 105, 76, 95, 98, 82, 104, 108, 95, 116, 119, 104, 125, 130, 92, 114, 120, 104, 126, 132, 80, 105, 111, 83, 110, 115, 81, 109, 116, 77, 108, 115, + 99, 127, 134, 91, 119, 127, 118, 142, 150, 148, 165, 170, 111, 138, 146, 151, 168, 173, 135, 158, 163, 151, 171, 174, 114, 145, 151, 129, 156, 161, 148, 169, 174, 147, 169, 172, 158, 177, 178, 167, 184, 186, 166, 184, 187, 159, 180, 184, 176, 193, 196, 171, 189, 192, 175, 192, 195, 175, 193, 196, 180, 197, 200, + 182, 199, 202, 181, 198, 201, 188, 203, 205, 194, 208, 210, 191, 206, 207, 201, 213, 215, 207, 219, 219, 212, 222, 222, 212, 222, 222, 211, 221, 221, 212, 222, 221, 213, 223, 222, 217, 225, 224, 217, 225, 224, 222, 229, 228, 222, 230, 229, 220, 228, 227, 224, 231, 230, 222, 229, 228, 219, 227, 226, 210, 220, 219, + 216, 223, 222, 219, 227, 226, 217, 226, 223, 209, 220, 217, 204, 216, 211, 214, 222, 220, 219, 226, 223, 216, 224, 221, 218, 226, 223, 219, 226, 223, 220, 227, 224, 218, 226, 223, 218, 227, 224, 217, 226, 223, 219, 228, 225, 221, 229, 226, 221, 229, 226, 225, 232, 229, 225, 232, 229, 225, 232, 230, 226, 234, 232, + 214, 226, 230, 214, 226, 230, 214, 226, 230, 213, 225, 229, 214, 226, 230, 213, 225, 229, 213, 225, 229, 212, 225, 228, 212, 224, 228, 212, 223, 228, 209, 224, 227, 211, 223, 227, 210, 223, 227, 209, 222, 227, 209, 222, 226, 206, 221, 226, 206, 220, 226, 203, 218, 224, 202, 217, 223, 200, 216, 222, 198, 214, 220, + 196, 214, 220, 193, 211, 218, 193, 211, 218, 191, 209, 216, 190, 208, 215, 189, 207, 214, 188, 207, 214, 188, 207, 215, 186, 205, 213, 184, 203, 211, 181, 202, 209, 176, 198, 209, 177, 198, 209, 174, 196, 207, 175, 196, 206, 174, 195, 206, 171, 192, 203, 168, 190, 201, 166, 188, 199, 161, 184, 195, 155, 179, 191, + 150, 175, 187, 146, 172, 186, 144, 170, 184, 142, 169, 183, 138, 164, 180, 135, 162, 177, 132, 160, 175, 128, 156, 172, 126, 155, 169, 121, 152, 167, 122, 152, 167, 117, 147, 163, 114, 144, 161, 111, 141, 158, 109, 139, 158, 108, 138, 157, 109, 138, 158, 107, 136, 155, 103, 133, 152, 98, 130, 149, 97, 128, 147, + 95, 125, 144, 97, 126, 145, 103, 131, 149, 109, 135, 152, 106, 133, 149, 105, 131, 147, 98, 126, 142, 95, 123, 140, 97, 125, 140, 99, 126, 141, 98, 124, 138, 100, 126, 141, 107, 133, 148, 102, 128, 143, 97, 123, 138, 93, 119, 133, 87, 114, 127, 90, 116, 129, 100, 123, 135, 111, 133, 142, 120, 141, 149, + 117, 138, 146, 110, 133, 143, 100, 125, 138, 91, 115, 129, 78, 104, 116, 71, 99, 110, 67, 96, 105, 71, 100, 111, 81, 108, 117, 72, 102, 111, 63, 97, 107, 71, 103, 114, 83, 114, 124, 87, 119, 133, 95, 129, 143, 107, 141, 152, 119, 151, 161, 127, 155, 162, 135, 161, 168, 136, 161, 170, 135, 162, 171, + 138, 164, 173, 130, 158, 166, 123, 150, 158, 122, 146, 152, 110, 133, 139, 92, 116, 122, 112, 133, 138, 106, 124, 130, 99, 117, 123, 123, 139, 145, 105, 122, 127, 88, 107, 111, 85, 103, 105, 86, 101, 104, 70, 84, 87, 70, 83, 85, 62, 72, 73, 64, 73, 74, 65, 73, 75, 52, 61, 65, 57, 66, 72, + 72, 81, 86, 90, 98, 103, 73, 83, 87, 86, 97, 99, 63, 74, 77, 108, 116, 118, 64, 76, 79, 78, 93, 95, 82, 97, 101, 90, 107, 112, 129, 142, 145, 110, 124, 127, 70, 87, 90, 86, 102, 104, 146, 160, 161, 149, 162, 162, 158, 169, 168, 104, 124, 124, 84, 109, 110, 123, 143, 145, 179, 188, 190, + 122, 142, 143, 150, 165, 165, 171, 183, 183, 141, 160, 162, 177, 188, 191, 155, 171, 176, 145, 165, 170, 164, 180, 184, 164, 183, 187, 178, 193, 197, 173, 190, 194, 199, 210, 213, 164, 185, 191, 201, 212, 214, 192, 206, 210, 196, 209, 212, 197, 210, 212, 169, 188, 190, 160, 181, 183, 163, 179, 181, 172, 186, 188, + 155, 172, 174, 190, 199, 199, 197, 204, 204, 156, 170, 170, 93, 112, 112, 81, 104, 107, 85, 110, 113, 92, 114, 118, 98, 120, 126, 107, 128, 132, 109, 131, 132, 112, 135, 136, 134, 149, 151, 102, 120, 122, 112, 127, 127, 74, 91, 94, 65, 83, 86, 69, 86, 90, 58, 76, 84, 56, 74, 82, 43, 62, 71, + 49, 68, 75, 60, 77, 82, 63, 80, 84, 61, 79, 83, 61, 78, 81, 60, 78, 81, 63, 79, 82, 64, 81, 84, 62, 78, 82, 47, 63, 69, 47, 62, 70, 99, 110, 119, 138, 148, 152, 172, 175, 177, 125, 128, 131, 82, 91, 96, 36, 48, 56, 54, 69, 78, 58, 72, 79, 59, 74, 80, 58, 72, 78, + 58, 73, 79, 64, 81, 86, 60, 77, 83, 65, 83, 90, 60, 77, 84, 54, 71, 76, 130, 140, 143, 128, 138, 141, 94, 109, 115, 56, 76, 84, 71, 90, 98, 85, 104, 108, 79, 99, 103, 97, 117, 121, 100, 120, 125, 102, 123, 129, 88, 112, 118, 87, 112, 118, 77, 105, 112, 87, 114, 120, 85, 113, 120, + 92, 118, 126, 88, 118, 126, 99, 126, 135, 123, 146, 153, 134, 155, 162, 131, 153, 160, 134, 156, 162, 149, 168, 174, 148, 168, 172, 124, 151, 157, 137, 162, 166, 157, 176, 178, 159, 178, 180, 162, 181, 182, 166, 184, 187, 165, 185, 189, 167, 187, 190, 191, 203, 206, 176, 194, 197, 183, 198, 201, 173, 193, 196, + 188, 202, 205, 188, 203, 205, 190, 204, 207, 192, 206, 208, 197, 210, 212, 198, 211, 212, 202, 214, 215, 209, 219, 219, 215, 224, 224, 211, 221, 220, 213, 222, 221, 211, 221, 220, 215, 223, 222, 217, 225, 224, 221, 229, 228, 219, 227, 226, 224, 231, 229, 219, 226, 225, 221, 228, 227, 222, 228, 227, 215, 223, 222, + 212, 220, 219, 215, 224, 221, 220, 227, 226, 213, 222, 219, 211, 220, 217, 205, 218, 214, 215, 224, 221, 218, 226, 223, 218, 225, 222, 218, 225, 222, 218, 226, 223, 221, 228, 225, 219, 228, 224, 220, 229, 226, 220, 228, 225, 222, 230, 227, 224, 231, 228, 224, 231, 228, 225, 232, 229, 226, 233, 230, 227, 234, 231, + 215, 227, 231, 214, 226, 230, 214, 226, 230, 214, 226, 230, 214, 226, 230, 213, 225, 229, 212, 226, 229, 211, 224, 228, 212, 224, 228, 212, 224, 228, 210, 225, 228, 211, 223, 227, 211, 224, 228, 210, 223, 228, 207, 222, 227, 206, 221, 226, 204, 219, 225, 203, 218, 224, 201, 216, 222, 199, 215, 221, 199, 215, 221, + 195, 213, 219, 194, 212, 219, 193, 211, 218, 192, 210, 217, 189, 208, 216, 189, 208, 215, 188, 207, 214, 186, 206, 214, 184, 204, 212, 182, 203, 211, 180, 200, 210, 178, 199, 210, 177, 198, 209, 175, 196, 207, 174, 195, 206, 173, 194, 204, 171, 192, 203, 168, 190, 201, 163, 185, 196, 160, 183, 194, 155, 179, 191, + 149, 174, 186, 146, 172, 184, 144, 170, 183, 140, 166, 180, 136, 162, 178, 131, 159, 175, 131, 158, 174, 127, 156, 171, 122, 153, 168, 120, 151, 166, 120, 151, 166, 116, 145, 163, 114, 143, 160, 111, 141, 160, 111, 139, 159, 110, 138, 157, 112, 139, 158, 109, 137, 157, 107, 137, 156, 102, 133, 152, 98, 129, 148, + 101, 130, 149, 103, 131, 150, 105, 132, 149, 104, 131, 148, 101, 128, 145, 95, 124, 140, 94, 124, 140, 94, 123, 138, 96, 125, 140, 96, 123, 138, 99, 125, 140, 97, 124, 138, 93, 120, 134, 90, 116, 131, 91, 117, 131, 99, 124, 137, 108, 130, 141, 116, 138, 149, 115, 136, 146, 110, 131, 142, 100, 124, 132, + 87, 113, 123, 81, 108, 118, 80, 106, 120, 78, 104, 118, 74, 101, 114, 75, 103, 112, 89, 115, 123, 77, 104, 114, 67, 96, 107, 66, 95, 106, 69, 100, 109, 77, 106, 115, 76, 107, 117, 83, 115, 125, 91, 126, 136, 110, 142, 151, 116, 147, 155, 125, 154, 161, 130, 157, 165, 133, 158, 165, 132, 157, 165, + 120, 149, 159, 129, 156, 164, 131, 155, 164, 119, 146, 155, 106, 135, 144, 130, 151, 158, 114, 134, 139, 101, 119, 124, 109, 123, 129, 119, 130, 135, 90, 105, 109, 80, 96, 100, 101, 116, 120, 92, 106, 108, 64, 80, 82, 100, 110, 113, 72, 85, 86, 50, 64, 66, 72, 83, 86, 63, 74, 78, 74, 82, 89, + 44, 55, 62, 101, 109, 115, 66, 77, 82, 65, 78, 80, 74, 85, 87, 102, 111, 112, 84, 95, 97, 63, 79, 81, 115, 128, 129, 117, 131, 133, 147, 157, 159, 114, 126, 130, 99, 112, 116, 128, 139, 142, 115, 130, 134, 130, 144, 148, 159, 168, 171, 119, 137, 139, 91, 113, 116, 90, 113, 118, 125, 143, 146, + 145, 160, 163, 137, 154, 156, 106, 129, 131, 141, 158, 161, 140, 158, 163, 170, 183, 186, 165, 178, 182, 137, 158, 163, 167, 181, 186, 158, 175, 179, 167, 185, 191, 173, 189, 193, 186, 199, 202, 179, 195, 199, 198, 209, 212, 199, 211, 214, 193, 207, 209, 191, 203, 205, 189, 201, 203, 147, 169, 173, 132, 155, 157, + 159, 174, 177, 148, 164, 167, 189, 197, 196, 142, 159, 159, 181, 192, 191, 185, 194, 193, 131, 144, 143, 83, 105, 108, 111, 130, 133, 107, 126, 127, 109, 131, 134, 119, 140, 140, 112, 131, 132, 132, 145, 146, 98, 114, 116, 96, 111, 114, 69, 86, 90, 60, 77, 82, 52, 68, 76, 64, 79, 87, 56, 74, 81, + 55, 72, 80, 59, 79, 84, 64, 83, 88, 67, 86, 91, 60, 78, 82, 63, 80, 83, 53, 71, 77, 58, 76, 80, 65, 81, 86, 62, 79, 84, 69, 85, 91, 67, 82, 88, 67, 82, 89, 51, 66, 72, 123, 127, 130, 99, 108, 115, 147, 154, 159, 142, 145, 151, 120, 125, 129, 38, 50, 56, 62, 74, 80, + 60, 75, 80, 58, 75, 81, 64, 81, 87, 71, 88, 94, 69, 87, 93, 69, 88, 94, 70, 90, 94, 50, 72, 76, 97, 115, 120, 129, 139, 144, 113, 129, 135, 54, 76, 84, 85, 104, 111, 87, 106, 113, 97, 115, 122, 98, 118, 124, 83, 108, 114, 82, 107, 113, 101, 124, 130, 81, 107, 114, 91, 116, 124, + 103, 127, 134, 96, 123, 130, 98, 126, 134, 99, 128, 135, 135, 155, 163, 130, 152, 159, 134, 156, 163, 137, 160, 166, 154, 172, 176, 146, 167, 171, 142, 166, 170, 149, 171, 173, 160, 180, 181, 170, 187, 188, 172, 189, 192, 167, 186, 189, 178, 194, 196, 187, 201, 203, 192, 205, 207, 186, 201, 203, 179, 196, 199, + 178, 197, 199, 195, 208, 210, 184, 201, 203, 198, 210, 212, 199, 212, 212, 200, 212, 212, 199, 211, 212, 209, 219, 219, 208, 218, 218, 221, 228, 227, 210, 221, 219, 214, 223, 222, 210, 221, 219, 217, 226, 225, 218, 226, 225, 221, 230, 227, 221, 229, 226, 221, 228, 227, 220, 227, 225, 219, 226, 224, 221, 228, 225, + 214, 223, 221, 213, 222, 219, 216, 224, 223, 220, 228, 225, 210, 221, 218, 210, 220, 217, 209, 220, 217, 214, 223, 220, 217, 226, 223, 219, 226, 223, 219, 227, 224, 220, 228, 224, 219, 228, 225, 220, 229, 226, 224, 231, 228, 225, 232, 229, 226, 233, 230, 226, 233, 230, 227, 234, 231, 227, 234, 231, 227, 234, 231, + 215, 227, 231, 215, 227, 231, 214, 226, 230, 213, 225, 229, 213, 225, 229, 212, 225, 229, 209, 225, 228, 213, 225, 229, 212, 224, 228, 210, 225, 228, 212, 224, 228, 209, 224, 227, 210, 223, 227, 208, 223, 227, 207, 221, 227, 206, 220, 225, 204, 219, 225, 202, 217, 223, 201, 217, 223, 199, 215, 221, 196, 214, 220, + 197, 214, 220, 194, 212, 219, 193, 211, 218, 190, 209, 216, 189, 208, 215, 188, 207, 215, 184, 205, 213, 182, 203, 213, 183, 203, 211, 180, 201, 211, 180, 201, 209, 179, 200, 209, 178, 199, 209, 176, 196, 207, 176, 195, 207, 175, 195, 206, 171, 191, 202, 167, 189, 200, 164, 186, 197, 157, 180, 192, 152, 177, 189, + 147, 173, 185, 143, 170, 182, 137, 164, 178, 137, 164, 178, 134, 161, 176, 131, 158, 174, 127, 156, 171, 124, 153, 169, 121, 151, 166, 119, 149, 164, 114, 144, 161, 114, 144, 162, 112, 142, 161, 108, 139, 158, 112, 139, 159, 115, 142, 160, 112, 140, 157, 110, 137, 156, 108, 136, 156, 107, 135, 155, 105, 134, 153, + 107, 134, 154, 107, 133, 151, 105, 132, 149, 102, 130, 147, 95, 124, 141, 90, 121, 138, 94, 125, 140, 91, 122, 137, 94, 123, 138, 94, 122, 137, 96, 123, 137, 93, 120, 134, 97, 124, 137, 106, 131, 144, 115, 138, 149, 118, 138, 150, 111, 133, 144, 100, 124, 134, 90, 115, 127, 84, 110, 120, 82, 107, 117, + 76, 103, 113, 78, 104, 116, 77, 104, 117, 76, 102, 116, 86, 111, 123, 87, 112, 122, 74, 102, 111, 62, 92, 101, 64, 93, 103, 67, 96, 106, 75, 103, 113, 71, 101, 107, 69, 103, 108, 82, 114, 119, 96, 125, 132, 104, 133, 141, 115, 143, 150, 124, 150, 157, 134, 159, 164, 133, 158, 165, 124, 153, 161, + 132, 158, 166, 127, 154, 162, 128, 155, 165, 117, 146, 157, 128, 154, 162, 123, 149, 155, 105, 122, 128, 105, 120, 126, 95, 111, 113, 97, 110, 114, 83, 100, 103, 103, 117, 120, 89, 105, 108, 82, 97, 99, 87, 100, 102, 83, 96, 99, 80, 93, 95, 53, 67, 71, 76, 87, 90, 64, 74, 78, 58, 69, 73, + 32, 45, 52, 97, 105, 109, 57, 71, 77, 86, 99, 101, 82, 94, 96, 102, 112, 114, 85, 98, 100, 88, 101, 102, 71, 88, 89, 130, 142, 142, 136, 146, 148, 111, 124, 126, 127, 138, 141, 96, 109, 113, 139, 150, 152, 145, 156, 159, 162, 171, 174, 143, 156, 158, 140, 154, 156, 81, 105, 110, 150, 163, 167, + 174, 184, 185, 156, 170, 171, 94, 117, 122, 112, 133, 137, 114, 133, 138, 105, 127, 132, 124, 143, 149, 145, 161, 165, 111, 133, 139, 153, 168, 173, 141, 163, 169, 156, 174, 179, 171, 187, 190, 177, 193, 196, 187, 202, 205, 168, 188, 192, 202, 213, 214, 200, 210, 211, 164, 181, 183, 193, 203, 206, 148, 165, 168, + 127, 146, 149, 123, 141, 145, 124, 144, 144, 156, 171, 172, 198, 205, 205, 104, 125, 122, 115, 134, 131, 182, 191, 191, 176, 184, 185, 113, 132, 131, 98, 118, 119, 113, 130, 131, 130, 144, 145, 83, 101, 104, 106, 121, 124, 88, 104, 108, 69, 85, 89, 59, 76, 80, 57, 73, 79, 70, 85, 91, 58, 75, 80, + 64, 82, 87, 63, 81, 87, 68, 87, 92, 65, 85, 90, 71, 89, 93, 61, 79, 84, 57, 76, 80, 59, 76, 80, 55, 73, 78, 53, 72, 78, 57, 75, 81, 60, 76, 83, 61, 77, 84, 55, 72, 78, 41, 60, 67, 120, 128, 132, 90, 99, 106, 44, 56, 65, 70, 81, 89, 143, 150, 153, 130, 139, 142, + 132, 138, 140, 49, 62, 67, 62, 83, 89, 63, 82, 88, 70, 87, 93, 75, 93, 98, 75, 94, 99, 65, 87, 92, 66, 87, 93, 64, 86, 93, 72, 90, 97, 130, 145, 150, 120, 136, 140, 63, 85, 94, 75, 95, 103, 83, 104, 111, 92, 112, 119, 77, 101, 109, 83, 109, 116, 107, 129, 135, 86, 112, 119, + 91, 117, 124, 95, 123, 129, 113, 138, 146, 107, 134, 140, 107, 135, 141, 144, 162, 168, 136, 157, 162, 131, 156, 160, 151, 170, 173, 164, 180, 183, 148, 171, 173, 152, 174, 175, 156, 177, 178, 173, 189, 190, 186, 198, 200, 176, 193, 195, 183, 198, 199, 182, 198, 199, 195, 208, 209, 190, 204, 206, 194, 207, 208, + 185, 201, 203, 188, 203, 204, 195, 208, 209, 190, 205, 206, 208, 218, 219, 205, 215, 216, 205, 216, 216, 203, 214, 214, 211, 221, 220, 217, 225, 224, 211, 221, 219, 213, 222, 220, 212, 222, 220, 217, 225, 224, 221, 228, 226, 220, 227, 225, 218, 226, 224, 221, 228, 227, 219, 227, 225, 221, 228, 226, 220, 226, 223, + 218, 225, 224, 216, 223, 222, 214, 222, 220, 216, 224, 222, 216, 224, 222, 209, 220, 217, 208, 219, 216, 215, 223, 220, 217, 225, 222, 219, 227, 224, 217, 226, 222, 221, 228, 225, 223, 230, 227, 221, 229, 226, 225, 232, 229, 226, 233, 230, 226, 233, 230, 226, 233, 230, 228, 235, 233, 228, 235, 232, 228, 234, 232, + 216, 227, 231, 215, 226, 230, 214, 226, 230, 214, 226, 230, 213, 225, 229, 211, 225, 228, 210, 226, 229, 212, 224, 228, 212, 224, 228, 211, 224, 227, 211, 223, 227, 208, 223, 226, 208, 223, 226, 207, 222, 226, 204, 219, 224, 202, 219, 224, 201, 217, 223, 201, 217, 223, 200, 216, 222, 198, 215, 221, 197, 215, 220, + 197, 214, 220, 194, 212, 219, 191, 210, 217, 190, 209, 217, 189, 208, 216, 186, 206, 214, 184, 205, 213, 183, 203, 212, 181, 202, 212, 181, 201, 211, 181, 201, 209, 179, 200, 208, 179, 199, 209, 176, 196, 207, 176, 196, 207, 174, 194, 205, 169, 191, 202, 164, 186, 197, 157, 181, 193, 153, 178, 190, 147, 173, 185, + 144, 171, 184, 136, 164, 178, 134, 162, 176, 130, 159, 173, 127, 157, 172, 125, 155, 170, 125, 154, 169, 120, 151, 167, 117, 148, 164, 118, 149, 165, 114, 145, 161, 112, 143, 160, 110, 141, 159, 110, 140, 160, 114, 142, 159, 113, 141, 158, 113, 140, 157, 111, 138, 157, 111, 137, 157, 108, 136, 156, 110, 136, 156, + 110, 135, 155, 107, 133, 153, 103, 131, 148, 95, 125, 142, 94, 124, 141, 92, 123, 138, 92, 123, 138, 91, 122, 137, 97, 125, 140, 99, 126, 141, 102, 128, 143, 111, 136, 149, 116, 140, 152, 113, 137, 149, 106, 129, 141, 94, 118, 131, 86, 110, 122, 82, 106, 118, 80, 106, 118, 79, 104, 115, 82, 106, 117, + 77, 102, 112, 78, 103, 115, 87, 110, 123, 90, 114, 125, 83, 107, 119, 68, 96, 106, 67, 96, 105, 63, 92, 101, 72, 99, 109, 72, 101, 108, 70, 98, 106, 72, 102, 107, 75, 105, 110, 85, 115, 120, 93, 122, 128, 100, 128, 135, 119, 145, 152, 133, 156, 162, 127, 152, 159, 132, 156, 164, 132, 157, 165, + 134, 159, 165, 131, 157, 165, 119, 149, 158, 129, 155, 164, 131, 155, 164, 113, 136, 143, 107, 124, 130, 100, 117, 121, 97, 111, 115, 81, 97, 102, 91, 106, 109, 81, 99, 102, 98, 113, 115, 87, 103, 106, 77, 91, 94, 81, 94, 96, 80, 94, 96, 71, 85, 88, 60, 71, 75, 49, 61, 65, 30, 42, 47, + 41, 55, 61, 58, 71, 77, 43, 58, 65, 84, 97, 100, 75, 89, 91, 106, 118, 119, 77, 90, 92, 107, 118, 121, 78, 91, 94, 129, 139, 139, 82, 97, 99, 125, 137, 140, 113, 125, 127, 126, 137, 139, 100, 115, 118, 147, 158, 160, 156, 166, 168, 156, 167, 169, 167, 176, 178, 130, 146, 150, 127, 143, 146, + 135, 151, 154, 170, 181, 182, 126, 144, 147, 82, 103, 106, 126, 144, 147, 119, 139, 144, 70, 98, 105, 105, 129, 134, 93, 118, 124, 111, 135, 141, 119, 144, 150, 132, 153, 159, 147, 167, 172, 166, 183, 187, 168, 186, 191, 186, 199, 202, 169, 185, 188, 197, 207, 208, 190, 202, 202, 173, 187, 188, 159, 174, 177, + 129, 146, 149, 120, 136, 139, 102, 120, 120, 111, 129, 127, 89, 111, 108, 145, 158, 157, 190, 197, 195, 133, 149, 147, 72, 96, 94, 136, 152, 151, 180, 188, 188, 128, 140, 141, 47, 63, 67, 125, 136, 139, 90, 105, 109, 67, 83, 88, 71, 87, 91, 74, 88, 92, 60, 76, 81, 64, 79, 84, 76, 91, 95, + 61, 79, 84, 65, 84, 89, 69, 88, 93, 74, 93, 95, 69, 87, 90, 62, 81, 84, 56, 75, 81, 59, 77, 81, 52, 72, 77, 50, 69, 75, 61, 78, 86, 57, 77, 85, 54, 75, 82, 60, 79, 87, 61, 78, 85, 66, 82, 89, 92, 106, 114, 106, 113, 119, 64, 76, 85, 71, 85, 91, 58, 76, 82, + 62, 82, 87, 135, 147, 151, 142, 148, 150, 123, 130, 133, 43, 60, 68, 82, 100, 107, 79, 98, 103, 67, 88, 93, 76, 96, 101, 65, 88, 94, 69, 91, 97, 79, 99, 106, 64, 85, 93, 132, 146, 151, 123, 137, 143, 68, 90, 98, 82, 102, 111, 80, 104, 112, 85, 108, 116, 79, 106, 113, 97, 121, 128, + 93, 117, 124, 99, 124, 130, 93, 122, 127, 110, 137, 142, 124, 147, 152, 132, 154, 160, 144, 164, 168, 136, 159, 161, 138, 162, 163, 151, 171, 173, 161, 180, 182, 163, 182, 183, 158, 179, 181, 164, 183, 185, 189, 202, 204, 182, 197, 198, 188, 202, 202, 188, 202, 203, 186, 202, 203, 199, 210, 211, 198, 210, 210, + 195, 208, 209, 187, 201, 202, 193, 207, 206, 201, 212, 212, 201, 212, 212, 209, 219, 219, 209, 218, 218, 204, 215, 214, 209, 219, 217, 216, 224, 223, 220, 227, 226, 207, 217, 215, 213, 222, 221, 217, 225, 225, 223, 229, 227, 220, 228, 226, 219, 227, 224, 216, 224, 223, 220, 227, 224, 219, 227, 224, 221, 227, 224, + 223, 229, 229, 218, 225, 222, 214, 223, 220, 215, 224, 221, 212, 222, 220, 214, 222, 221, 210, 220, 217, 212, 221, 218, 217, 226, 223, 219, 226, 223, 222, 229, 226, 219, 228, 225, 223, 230, 227, 224, 230, 227, 225, 232, 229, 227, 234, 231, 226, 233, 230, 228, 234, 231, 230, 236, 233, 230, 236, 233, 231, 236, 234, + 216, 227, 231, 216, 227, 231, 214, 226, 230, 214, 226, 230, 213, 226, 230, 212, 225, 229, 212, 224, 228, 213, 225, 229, 212, 224, 228, 210, 223, 227, 208, 224, 227, 208, 223, 226, 206, 221, 225, 204, 219, 225, 203, 219, 225, 201, 217, 223, 200, 216, 222, 200, 216, 222, 198, 216, 221, 197, 215, 220, 196, 214, 219, + 194, 212, 219, 192, 210, 217, 192, 210, 218, 190, 209, 217, 187, 207, 215, 185, 206, 214, 184, 205, 213, 183, 204, 212, 182, 203, 211, 182, 202, 210, 180, 201, 209, 179, 199, 208, 179, 199, 208, 177, 197, 208, 174, 195, 206, 171, 193, 204, 166, 189, 199, 161, 185, 196, 155, 180, 191, 151, 177, 188, 143, 170, 183, + 135, 164, 178, 131, 161, 175, 130, 160, 174, 125, 156, 171, 124, 155, 170, 122, 152, 167, 120, 151, 166, 118, 150, 165, 115, 147, 162, 117, 147, 164, 115, 145, 162, 111, 142, 161, 109, 140, 159, 111, 141, 158, 113, 142, 159, 115, 143, 160, 112, 140, 157, 112, 140, 157, 112, 139, 158, 113, 138, 158, 111, 136, 156, + 106, 132, 152, 102, 129, 149, 99, 127, 146, 96, 125, 143, 94, 125, 141, 94, 124, 139, 92, 122, 137, 101, 129, 144, 112, 139, 153, 116, 141, 156, 114, 140, 152, 111, 136, 149, 100, 127, 140, 94, 117, 132, 87, 112, 126, 81, 106, 119, 79, 105, 117, 81, 105, 117, 80, 105, 117, 82, 106, 118, 81, 104, 116, + 80, 103, 115, 90, 114, 124, 85, 108, 121, 76, 101, 113, 72, 99, 109, 68, 95, 105, 69, 96, 106, 73, 100, 108, 71, 99, 107, 73, 101, 108, 69, 98, 105, 75, 104, 110, 77, 107, 113, 85, 113, 119, 96, 123, 131, 115, 139, 146, 116, 142, 150, 117, 144, 151, 131, 155, 161, 133, 157, 166, 134, 159, 166, + 136, 160, 167, 124, 153, 159, 129, 155, 162, 137, 160, 168, 127, 152, 161, 122, 143, 148, 108, 125, 131, 99, 117, 121, 87, 106, 109, 86, 105, 110, 88, 106, 112, 88, 106, 109, 93, 109, 113, 88, 103, 106, 79, 94, 97, 85, 98, 101, 66, 82, 84, 75, 88, 90, 47, 60, 64, 55, 66, 70, 17, 32, 37, + 75, 85, 91, 30, 49, 56, 52, 69, 75, 76, 91, 94, 39, 57, 60, 75, 88, 90, 75, 88, 90, 103, 115, 117, 79, 91, 93, 106, 116, 116, 106, 118, 119, 83, 97, 100, 109, 121, 123, 98, 111, 113, 124, 134, 136, 101, 116, 118, 103, 117, 121, 165, 173, 174, 150, 160, 162, 165, 173, 175, 172, 180, 181, + 138, 152, 153, 151, 164, 166, 195, 201, 201, 121, 137, 140, 92, 115, 120, 170, 181, 183, 113, 134, 140, 90, 116, 122, 137, 154, 159, 69, 98, 105, 109, 133, 140, 96, 123, 129, 116, 140, 145, 140, 160, 165, 148, 169, 173, 169, 185, 188, 167, 184, 186, 160, 178, 180, 174, 188, 188, 211, 217, 217, 151, 168, 169, + 143, 157, 158, 118, 134, 136, 95, 113, 114, 126, 140, 141, 87, 105, 103, 83, 103, 102, 72, 96, 94, 136, 151, 151, 193, 199, 199, 149, 162, 161, 50, 71, 72, 141, 152, 152, 169, 177, 180, 132, 141, 142, 49, 62, 66, 84, 96, 102, 64, 79, 83, 57, 74, 78, 62, 78, 84, 62, 77, 83, 68, 82, 88, + 71, 88, 92, 66, 84, 89, 75, 93, 97, 71, 89, 92, 69, 87, 89, 64, 82, 87, 66, 83, 88, 56, 76, 81, 56, 75, 80, 58, 77, 83, 55, 75, 82, 64, 84, 91, 64, 84, 92, 66, 87, 93, 69, 89, 94, 67, 87, 92, 77, 96, 99, 84, 101, 105, 130, 141, 143, 65, 83, 88, 70, 89, 93, + 72, 92, 97, 71, 93, 97, 56, 78, 84, 76, 95, 100, 152, 162, 164, 137, 146, 151, 75, 93, 98, 68, 88, 95, 73, 94, 100, 74, 95, 101, 72, 93, 99, 76, 96, 103, 79, 100, 106, 76, 97, 105, 67, 91, 99, 126, 142, 149, 126, 143, 149, 65, 91, 99, 93, 116, 124, 94, 117, 124, 92, 116, 123, + 111, 132, 139, 98, 124, 131, 98, 127, 132, 112, 139, 143, 117, 143, 148, 135, 156, 161, 144, 163, 167, 147, 167, 170, 136, 160, 162, 155, 174, 176, 166, 182, 184, 170, 187, 188, 164, 182, 183, 172, 188, 190, 180, 195, 195, 193, 206, 206, 189, 203, 205, 193, 206, 208, 192, 205, 207, 199, 211, 212, 195, 208, 207, + 203, 213, 213, 200, 211, 212, 193, 206, 206, 197, 209, 208, 202, 213, 212, 204, 215, 214, 209, 219, 217, 208, 218, 216, 206, 217, 215, 213, 221, 221, 222, 228, 227, 214, 222, 221, 210, 220, 218, 215, 224, 222, 219, 228, 225, 221, 228, 225, 221, 228, 225, 219, 226, 223, 216, 225, 222, 220, 227, 224, 218, 226, 223, + 220, 227, 224, 218, 226, 223, 216, 225, 222, 215, 224, 221, 214, 223, 221, 209, 221, 219, 214, 224, 221, 210, 221, 218, 214, 223, 220, 219, 226, 224, 220, 227, 225, 222, 229, 226, 223, 230, 227, 224, 231, 228, 226, 232, 229, 226, 233, 230, 227, 234, 231, 227, 234, 231, 230, 235, 233, 230, 235, 233, 232, 237, 235, + 215, 227, 229, 216, 228, 230, 214, 226, 230, 214, 226, 230, 213, 225, 229, 213, 225, 229, 213, 225, 229, 213, 224, 228, 209, 225, 228, 209, 224, 227, 208, 222, 225, 205, 221, 225, 206, 219, 226, 204, 219, 225, 201, 217, 223, 200, 216, 222, 200, 217, 222, 199, 216, 222, 197, 214, 220, 196, 213, 219, 195, 213, 220, + 194, 212, 219, 192, 210, 217, 192, 209, 217, 190, 209, 217, 189, 208, 216, 184, 205, 213, 185, 206, 214, 183, 204, 212, 183, 203, 211, 181, 202, 210, 181, 201, 209, 180, 201, 209, 179, 200, 208, 175, 197, 206, 172, 194, 205, 170, 191, 202, 164, 188, 198, 157, 182, 193, 150, 177, 188, 144, 172, 183, 138, 167, 180, + 134, 163, 178, 130, 159, 174, 124, 156, 171, 125, 156, 171, 120, 152, 167, 122, 152, 167, 119, 150, 165, 117, 148, 163, 115, 148, 163, 116, 146, 163, 113, 143, 160, 112, 143, 159, 113, 143, 159, 115, 144, 161, 115, 143, 160, 114, 142, 159, 111, 139, 156, 113, 140, 157, 116, 141, 160, 113, 139, 158, 105, 132, 152, + 101, 130, 149, 97, 127, 147, 100, 128, 148, 99, 127, 144, 96, 125, 142, 99, 128, 143, 116, 143, 157, 123, 147, 160, 114, 140, 155, 107, 133, 148, 100, 126, 140, 90, 116, 130, 87, 113, 127, 82, 108, 122, 81, 106, 121, 81, 106, 117, 80, 104, 116, 81, 104, 116, 81, 105, 117, 81, 104, 116, 84, 106, 118, + 91, 113, 125, 81, 104, 117, 76, 100, 112, 71, 98, 108, 69, 95, 105, 71, 97, 107, 73, 99, 110, 74, 101, 108, 69, 97, 105, 70, 99, 106, 72, 101, 108, 74, 102, 110, 87, 114, 122, 104, 129, 136, 111, 135, 142, 97, 125, 134, 105, 133, 143, 120, 146, 154, 123, 149, 158, 140, 164, 172, 138, 161, 170, + 124, 153, 160, 125, 153, 160, 138, 162, 168, 135, 158, 164, 125, 151, 156, 122, 145, 151, 115, 139, 145, 108, 130, 134, 93, 114, 117, 107, 125, 129, 93, 111, 115, 101, 117, 120, 100, 116, 119, 82, 99, 103, 77, 93, 95, 80, 95, 97, 68, 85, 87, 60, 76, 77, 41, 56, 60, 44, 57, 63, 45, 57, 64, + 69, 82, 87, 43, 61, 68, 49, 67, 73, 69, 85, 89, 45, 63, 66, 56, 73, 75, 53, 69, 70, 117, 127, 127, 73, 86, 86, 82, 93, 93, 92, 102, 104, 81, 94, 96, 89, 101, 103, 104, 115, 116, 121, 132, 132, 96, 108, 109, 97, 109, 111, 105, 121, 124, 134, 146, 149, 110, 126, 129, 159, 167, 169, + 176, 181, 182, 153, 163, 164, 150, 163, 165, 162, 174, 176, 150, 163, 165, 129, 146, 151, 173, 184, 186, 103, 127, 132, 102, 127, 133, 178, 189, 191, 92, 119, 126, 105, 129, 136, 92, 120, 125, 96, 124, 130, 119, 143, 147, 162, 178, 180, 164, 178, 181, 144, 163, 166, 134, 155, 157, 137, 157, 157, 211, 217, 217, + 110, 129, 128, 129, 142, 144, 95, 111, 112, 76, 92, 95, 102, 117, 119, 87, 103, 106, 95, 112, 116, 73, 94, 98, 67, 89, 93, 126, 138, 141, 198, 203, 204, 132, 141, 141, 71, 82, 81, 65, 78, 79, 156, 165, 168, 153, 160, 162, 72, 83, 89, 57, 69, 75, 67, 80, 83, 64, 79, 82, 68, 83, 88, + 69, 84, 90, 66, 83, 88, 62, 81, 83, 64, 82, 85, 70, 88, 91, 59, 77, 83, 66, 83, 89, 60, 79, 84, 68, 86, 91, 60, 79, 86, 60, 81, 88, 62, 83, 90, 65, 85, 92, 69, 88, 95, 74, 94, 99, 73, 94, 99, 82, 101, 105, 86, 103, 106, 78, 95, 99, 144, 151, 154, 63, 83, 88, + 67, 88, 93, 69, 90, 95, 77, 97, 101, 71, 93, 97, 78, 99, 103, 53, 75, 79, 134, 148, 151, 147, 156, 160, 101, 115, 118, 62, 80, 87, 80, 99, 104, 77, 98, 103, 83, 103, 110, 84, 105, 113, 81, 104, 113, 75, 100, 108, 77, 101, 108, 139, 154, 160, 107, 128, 134, 96, 119, 127, 99, 122, 129, + 99, 122, 129, 111, 135, 141, 118, 143, 148, 117, 142, 147, 117, 143, 148, 145, 164, 168, 121, 147, 152, 155, 172, 175, 151, 169, 172, 152, 172, 172, 170, 185, 185, 165, 183, 184, 173, 188, 190, 172, 188, 187, 181, 196, 195, 186, 202, 200, 195, 207, 210, 193, 206, 208, 200, 211, 212, 189, 203, 203, 202, 212, 212, + 194, 207, 207, 206, 215, 215, 200, 211, 211, 195, 208, 207, 201, 213, 210, 205, 216, 214, 204, 216, 215, 212, 221, 220, 208, 219, 217, 207, 218, 216, 219, 226, 225, 223, 229, 228, 208, 219, 217, 215, 224, 223, 216, 224, 223, 222, 229, 226, 220, 229, 226, 221, 227, 224, 217, 224, 221, 218, 225, 224, 217, 225, 223, + 220, 226, 226, 220, 228, 224, 215, 224, 221, 214, 223, 220, 215, 224, 221, 211, 221, 220, 210, 221, 218, 213, 222, 221, 211, 221, 219, 217, 225, 224, 219, 227, 225, 222, 228, 225, 223, 230, 227, 225, 232, 229, 226, 232, 230, 226, 233, 229, 227, 234, 231, 228, 235, 232, 230, 235, 233, 230, 235, 233, 231, 236, 234, + 215, 227, 229, 214, 226, 230, 214, 226, 230, 215, 226, 230, 213, 225, 229, 213, 225, 229, 212, 224, 228, 209, 224, 227, 208, 223, 226, 208, 223, 226, 206, 222, 226, 206, 219, 226, 205, 219, 225, 201, 217, 223, 200, 216, 222, 200, 216, 222, 199, 215, 222, 195, 214, 220, 195, 213, 220, 194, 212, 219, 192, 210, 217, + 193, 211, 218, 191, 210, 217, 191, 210, 216, 189, 208, 216, 188, 208, 216, 186, 207, 215, 185, 205, 213, 183, 204, 212, 183, 204, 212, 184, 203, 211, 181, 202, 210, 180, 200, 208, 177, 198, 206, 172, 195, 205, 171, 193, 204, 165, 189, 199, 160, 186, 196, 154, 180, 192, 149, 176, 188, 142, 170, 183, 136, 164, 178, + 132, 161, 175, 127, 159, 174, 123, 155, 170, 122, 153, 168, 119, 150, 165, 119, 150, 165, 118, 149, 164, 116, 147, 162, 116, 147, 163, 116, 146, 163, 116, 145, 162, 117, 144, 161, 115, 143, 160, 116, 146, 160, 115, 143, 159, 115, 142, 159, 116, 142, 159, 116, 142, 159, 112, 139, 156, 104, 132, 152, 99, 130, 148, + 100, 129, 148, 98, 127, 147, 101, 129, 148, 103, 131, 148, 113, 139, 155, 124, 148, 163, 121, 147, 161, 111, 137, 151, 97, 124, 139, 90, 117, 133, 86, 111, 127, 83, 109, 123, 83, 108, 122, 81, 105, 119, 80, 104, 117, 79, 103, 115, 76, 100, 112, 81, 105, 117, 78, 102, 114, 86, 108, 120, 88, 112, 123, + 80, 104, 115, 72, 98, 109, 66, 93, 103, 68, 95, 105, 73, 99, 109, 72, 98, 108, 73, 98, 108, 70, 98, 106, 70, 98, 106, 69, 98, 105, 72, 100, 109, 97, 122, 132, 113, 135, 142, 100, 127, 133, 84, 113, 120, 98, 126, 135, 113, 141, 149, 110, 139, 150, 139, 161, 169, 142, 164, 171, 120, 150, 158, + 125, 152, 160, 130, 154, 160, 127, 152, 158, 130, 154, 159, 121, 146, 152, 120, 144, 149, 117, 140, 146, 116, 136, 141, 109, 129, 131, 112, 130, 134, 95, 113, 117, 97, 114, 119, 94, 110, 116, 78, 96, 101, 82, 99, 102, 77, 94, 96, 72, 89, 90, 71, 87, 88, 50, 66, 72, 54, 69, 76, 76, 90, 95, + 59, 75, 82, 68, 84, 90, 60, 77, 83, 66, 81, 87, 62, 78, 81, 60, 75, 79, 88, 101, 103, 57, 72, 74, 74, 86, 86, 84, 94, 94, 64, 74, 77, 69, 80, 81, 71, 83, 84, 94, 104, 106, 111, 121, 121, 88, 99, 101, 102, 113, 115, 87, 104, 106, 98, 114, 117, 130, 143, 146, 88, 104, 107, + 122, 134, 136, 146, 156, 156, 176, 181, 183, 188, 194, 196, 154, 164, 168, 119, 138, 142, 146, 161, 165, 164, 177, 180, 151, 166, 170, 100, 126, 132, 156, 170, 173, 121, 141, 146, 89, 117, 122, 109, 134, 140, 134, 154, 158, 108, 134, 138, 179, 189, 190, 154, 168, 170, 145, 161, 163, 88, 113, 112, 109, 127, 122, + 188, 198, 193, 98, 112, 114, 84, 100, 101, 68, 86, 88, 98, 112, 114, 69, 87, 90, 57, 78, 82, 84, 100, 105, 99, 114, 117, 77, 94, 97, 78, 96, 98, 109, 122, 121, 176, 182, 181, 128, 135, 136, 53, 66, 69, 53, 63, 69, 130, 138, 142, 168, 172, 174, 108, 117, 122, 52, 64, 72, 72, 83, 89, + 72, 86, 92, 68, 84, 88, 67, 83, 88, 67, 85, 88, 61, 79, 85, 59, 78, 83, 58, 77, 82, 64, 83, 88, 62, 81, 86, 70, 89, 92, 70, 89, 94, 63, 83, 89, 69, 89, 94, 65, 85, 90, 77, 97, 102, 76, 95, 100, 77, 96, 101, 86, 104, 107, 79, 96, 99, 72, 90, 94, 145, 155, 158, + 63, 82, 87, 70, 91, 96, 75, 96, 99, 80, 101, 103, 72, 94, 96, 77, 99, 101, 80, 101, 103, 66, 86, 92, 107, 122, 126, 158, 164, 168, 123, 131, 138, 66, 86, 93, 80, 100, 106, 90, 110, 117, 83, 106, 114, 91, 113, 119, 82, 106, 111, 93, 116, 121, 95, 119, 124, 151, 164, 170, 115, 134, 142, + 106, 128, 134, 98, 125, 130, 122, 146, 150, 127, 150, 154, 135, 156, 161, 140, 159, 164, 129, 152, 157, 140, 161, 166, 156, 174, 175, 151, 171, 172, 172, 187, 187, 170, 186, 187, 181, 195, 195, 170, 186, 186, 185, 199, 198, 180, 197, 196, 192, 206, 205, 195, 208, 208, 205, 215, 216, 203, 214, 213, 195, 208, 208, + 203, 212, 213, 198, 210, 209, 203, 213, 213, 202, 213, 211, 199, 211, 209, 203, 215, 213, 207, 219, 216, 206, 217, 216, 212, 221, 220, 212, 220, 219, 211, 220, 218, 224, 230, 229, 218, 225, 224, 208, 218, 217, 214, 222, 221, 219, 227, 224, 222, 229, 226, 224, 230, 227, 218, 226, 223, 213, 222, 220, 214, 223, 220, + 217, 225, 222, 222, 228, 225, 216, 224, 223, 217, 225, 222, 219, 225, 222, 213, 223, 220, 210, 221, 218, 211, 222, 219, 216, 224, 223, 213, 222, 220, 217, 226, 223, 218, 226, 224, 222, 229, 226, 224, 230, 227, 227, 232, 230, 227, 233, 231, 229, 235, 232, 229, 236, 233, 230, 235, 233, 231, 236, 234, 232, 237, 235, + 215, 227, 229, 214, 225, 230, 213, 225, 229, 214, 225, 229, 212, 224, 228, 213, 224, 229, 210, 225, 228, 209, 224, 227, 207, 222, 225, 207, 222, 225, 206, 220, 226, 203, 218, 224, 204, 218, 224, 200, 217, 223, 200, 216, 222, 198, 215, 221, 195, 213, 220, 194, 212, 219, 192, 210, 217, 190, 210, 217, 191, 210, 217, + 191, 210, 217, 190, 209, 216, 190, 209, 217, 190, 209, 217, 189, 208, 215, 188, 207, 214, 186, 205, 212, 187, 205, 212, 185, 204, 212, 183, 203, 211, 182, 202, 210, 180, 201, 209, 176, 197, 207, 174, 195, 206, 169, 191, 202, 164, 188, 199, 158, 183, 195, 153, 180, 191, 147, 174, 185, 141, 169, 182, 138, 166, 180, + 130, 161, 175, 125, 156, 171, 122, 154, 169, 121, 152, 167, 119, 150, 165, 118, 149, 164, 119, 149, 164, 120, 150, 165, 119, 148, 164, 117, 147, 164, 119, 147, 163, 116, 145, 161, 119, 145, 162, 117, 144, 160, 117, 144, 160, 115, 143, 159, 116, 143, 159, 113, 141, 158, 107, 136, 153, 103, 133, 152, 97, 128, 147, + 100, 128, 148, 102, 131, 149, 111, 137, 155, 119, 144, 160, 126, 149, 165, 117, 142, 158, 104, 131, 146, 94, 121, 136, 90, 117, 133, 88, 114, 128, 85, 110, 126, 82, 108, 122, 78, 104, 118, 75, 101, 115, 77, 102, 115, 76, 100, 112, 77, 101, 113, 76, 100, 112, 85, 108, 120, 84, 106, 118, 75, 99, 110, + 69, 95, 105, 66, 92, 103, 67, 93, 103, 68, 93, 103, 76, 99, 109, 72, 98, 108, 69, 95, 105, 75, 100, 109, 68, 95, 104, 84, 110, 118, 106, 128, 137, 108, 130, 141, 92, 120, 127, 77, 108, 113, 94, 122, 129, 101, 129, 136, 102, 131, 142, 139, 160, 168, 134, 157, 167, 112, 143, 152, 122, 149, 158, + 129, 155, 161, 135, 157, 163, 131, 154, 160, 125, 148, 154, 122, 146, 151, 123, 146, 151, 114, 139, 144, 116, 137, 142, 113, 134, 137, 109, 129, 133, 107, 126, 133, 102, 120, 126, 106, 122, 127, 97, 113, 117, 92, 109, 112, 85, 101, 103, 87, 102, 104, 72, 88, 94, 74, 90, 97, 77, 93, 99, 78, 93, 99, + 74, 90, 96, 73, 89, 95, 75, 90, 96, 73, 88, 94, 70, 85, 89, 46, 64, 67, 87, 100, 102, 61, 75, 76, 63, 76, 77, 84, 93, 93, 56, 67, 70, 58, 69, 73, 79, 89, 93, 60, 73, 74, 91, 101, 102, 93, 103, 106, 65, 79, 81, 108, 122, 125, 94, 110, 112, 109, 123, 126, 96, 111, 113, + 83, 100, 101, 86, 101, 104, 110, 123, 126, 166, 174, 177, 166, 176, 178, 168, 176, 179, 139, 153, 157, 133, 153, 157, 164, 177, 181, 134, 154, 157, 148, 163, 166, 174, 184, 186, 136, 152, 155, 107, 129, 132, 112, 133, 137, 155, 167, 169, 116, 136, 138, 171, 180, 182, 146, 158, 161, 118, 134, 134, 112, 128, 128, + 62, 81, 81, 182, 189, 190, 93, 106, 107, 66, 83, 86, 84, 99, 102, 76, 91, 94, 73, 90, 92, 65, 82, 88, 62, 81, 86, 79, 95, 100, 75, 92, 94, 80, 96, 98, 73, 90, 91, 93, 109, 109, 179, 184, 186, 116, 125, 127, 58, 72, 77, 53, 66, 73, 94, 106, 111, 166, 173, 176, 130, 139, 142, + 58, 72, 77, 71, 84, 88, 70, 85, 89, 73, 90, 94, 66, 84, 90, 65, 83, 88, 62, 81, 86, 69, 87, 93, 70, 89, 92, 70, 90, 93, 73, 92, 98, 75, 94, 99, 69, 89, 94, 81, 100, 105, 72, 92, 97, 75, 95, 101, 75, 95, 100, 74, 94, 96, 82, 101, 104, 76, 94, 97, 70, 88, 93, + 146, 157, 160, 68, 87, 91, 85, 103, 108, 77, 98, 100, 81, 102, 105, 78, 101, 103, 76, 99, 102, 80, 101, 106, 85, 104, 110, 76, 95, 102, 103, 114, 122, 160, 170, 173, 122, 136, 142, 81, 99, 106, 86, 107, 113, 91, 113, 119, 91, 113, 120, 101, 122, 126, 95, 118, 123, 90, 114, 122, 144, 158, 164, + 149, 163, 168, 101, 127, 133, 108, 135, 139, 126, 149, 153, 145, 162, 167, 144, 163, 167, 134, 156, 159, 131, 156, 160, 159, 176, 179, 160, 178, 180, 161, 179, 180, 179, 192, 194, 176, 192, 191, 177, 193, 192, 184, 199, 198, 185, 200, 199, 181, 197, 196, 198, 210, 210, 202, 213, 213, 208, 217, 217, 198, 210, 210, + 206, 215, 215, 194, 207, 207, 199, 210, 210, 207, 216, 215, 201, 212, 210, 202, 214, 212, 210, 219, 218, 208, 219, 217, 214, 222, 221, 210, 219, 218, 212, 222, 219, 214, 222, 220, 222, 228, 227, 214, 223, 222, 211, 221, 219, 216, 225, 222, 221, 227, 224, 219, 227, 223, 221, 227, 224, 214, 223, 221, 214, 223, 220, + 213, 222, 219, 219, 228, 224, 219, 226, 223, 218, 225, 222, 216, 225, 222, 215, 224, 221, 212, 223, 220, 210, 221, 218, 213, 222, 221, 214, 223, 221, 212, 222, 219, 216, 224, 221, 220, 227, 224, 221, 229, 224, 226, 232, 228, 228, 233, 232, 230, 235, 233, 229, 236, 233, 230, 235, 233, 230, 235, 233, 231, 236, 234, + 213, 226, 228, 214, 226, 228, 213, 226, 229, 213, 225, 229, 212, 224, 228, 211, 225, 228, 209, 224, 227, 207, 222, 225, 207, 222, 225, 206, 220, 226, 205, 219, 225, 202, 217, 223, 202, 217, 223, 199, 215, 221, 198, 214, 220, 195, 213, 220, 193, 211, 218, 191, 210, 217, 191, 210, 217, 191, 210, 217, 189, 209, 216, + 190, 210, 216, 190, 209, 216, 190, 210, 217, 190, 209, 217, 189, 208, 216, 189, 207, 214, 187, 206, 213, 186, 205, 212, 186, 205, 213, 182, 202, 210, 181, 201, 209, 178, 200, 208, 174, 195, 205, 171, 193, 204, 168, 191, 201, 162, 187, 198, 159, 185, 195, 156, 181, 194, 149, 176, 187, 143, 171, 183, 137, 166, 180, + 131, 161, 176, 124, 156, 171, 121, 153, 168, 121, 152, 167, 121, 151, 166, 123, 152, 167, 121, 150, 165, 121, 150, 165, 121, 149, 166, 119, 147, 164, 119, 147, 164, 121, 147, 163, 119, 145, 161, 116, 144, 159, 117, 144, 160, 115, 143, 159, 112, 140, 157, 109, 139, 156, 106, 135, 152, 101, 131, 150, 103, 132, 152, + 109, 135, 153, 115, 141, 158, 121, 146, 162, 124, 148, 164, 115, 141, 157, 101, 130, 146, 91, 121, 136, 91, 120, 135, 87, 113, 129, 84, 110, 125, 82, 107, 122, 75, 101, 115, 75, 100, 114, 71, 97, 111, 72, 97, 111, 71, 97, 109, 74, 99, 110, 82, 107, 118, 79, 103, 115, 70, 94, 106, 67, 92, 103, + 70, 95, 105, 67, 92, 102, 72, 95, 105, 71, 95, 104, 71, 96, 107, 72, 97, 106, 71, 95, 106, 74, 99, 109, 90, 114, 123, 113, 133, 142, 102, 125, 133, 86, 113, 123, 72, 104, 111, 93, 121, 128, 87, 117, 124, 112, 137, 145, 142, 161, 168, 124, 149, 160, 103, 134, 145, 111, 141, 150, 117, 146, 154, + 133, 157, 163, 131, 154, 161, 129, 151, 157, 124, 146, 152, 127, 149, 154, 116, 140, 147, 115, 140, 144, 113, 134, 139, 109, 130, 135, 112, 132, 137, 107, 126, 132, 106, 127, 132, 103, 123, 129, 95, 115, 121, 105, 123, 129, 97, 116, 121, 97, 116, 121, 92, 111, 116, 92, 109, 116, 90, 107, 114, 84, 103, 109, + 83, 102, 107, 81, 99, 105, 74, 89, 95, 80, 94, 100, 68, 82, 89, 88, 100, 106, 56, 72, 78, 63, 78, 81, 57, 71, 72, 76, 86, 87, 63, 74, 76, 54, 65, 70, 78, 88, 92, 52, 64, 69, 58, 70, 75, 68, 80, 83, 45, 61, 64, 87, 100, 102, 113, 125, 128, 97, 111, 112, 105, 118, 120, + 99, 113, 114, 93, 107, 110, 52, 69, 74, 137, 148, 152, 108, 125, 130, 166, 175, 178, 124, 139, 144, 164, 172, 175, 95, 115, 120, 188, 194, 195, 135, 150, 151, 186, 194, 193, 139, 154, 155, 90, 111, 112, 127, 144, 146, 121, 138, 139, 150, 163, 163, 124, 140, 142, 152, 163, 166, 114, 128, 132, 97, 112, 116, + 76, 92, 96, 66, 83, 86, 126, 137, 139, 151, 159, 160, 63, 80, 82, 59, 76, 78, 66, 82, 85, 68, 84, 87, 64, 81, 87, 71, 89, 94, 73, 91, 94, 63, 82, 85, 69, 87, 89, 77, 94, 98, 63, 80, 83, 104, 119, 120, 177, 183, 182, 97, 112, 109, 64, 78, 82, 61, 76, 81, 82, 94, 99, + 162, 169, 171, 152, 160, 163, 71, 82, 85, 81, 94, 98, 68, 84, 89, 73, 89, 95, 74, 91, 94, 72, 91, 95, 78, 97, 100, 77, 97, 100, 78, 97, 102, 80, 99, 104, 81, 100, 105, 72, 92, 98, 76, 96, 101, 68, 89, 95, 71, 91, 96, 80, 101, 104, 73, 96, 98, 74, 95, 99, 87, 106, 109, + 72, 93, 98, 136, 151, 153, 84, 105, 108, 80, 102, 106, 85, 107, 111, 77, 100, 103, 81, 104, 108, 83, 105, 110, 89, 109, 114, 85, 106, 112, 90, 109, 116, 79, 98, 107, 108, 124, 131, 165, 174, 178, 113, 130, 136, 96, 116, 123, 97, 118, 124, 95, 117, 121, 107, 129, 132, 102, 126, 130, 103, 126, 132, + 126, 144, 150, 161, 174, 177, 105, 132, 136, 126, 149, 152, 148, 165, 167, 160, 174, 177, 142, 162, 165, 134, 159, 162, 145, 167, 169, 166, 183, 184, 164, 182, 183, 166, 183, 184, 178, 192, 192, 172, 189, 188, 175, 191, 190, 191, 204, 203, 179, 195, 194, 187, 201, 200, 201, 211, 212, 210, 219, 218, 207, 217, 215, + 202, 213, 211, 202, 213, 211, 191, 204, 204, 205, 215, 213, 209, 217, 216, 204, 214, 212, 203, 214, 213, 212, 221, 219, 210, 219, 216, 213, 221, 219, 215, 223, 221, 210, 219, 216, 220, 227, 225, 219, 227, 225, 212, 221, 218, 215, 224, 221, 219, 226, 223, 220, 226, 224, 217, 224, 221, 216, 224, 221, 212, 221, 218, + 213, 222, 219, 211, 220, 217, 222, 228, 226, 216, 224, 221, 218, 226, 223, 216, 225, 222, 212, 223, 220, 213, 223, 219, 212, 222, 220, 213, 223, 221, 211, 222, 220, 213, 224, 221, 216, 225, 222, 219, 227, 224, 223, 229, 227, 225, 231, 229, 228, 234, 232, 231, 236, 234, 230, 235, 233, 230, 235, 233, 231, 236, 234, + 212, 225, 229, 212, 225, 228, 212, 225, 229, 213, 225, 229, 211, 224, 228, 209, 224, 227, 208, 223, 226, 207, 222, 225, 206, 221, 224, 205, 219, 225, 204, 218, 224, 202, 217, 223, 200, 216, 222, 198, 214, 220, 195, 213, 220, 194, 212, 219, 192, 210, 217, 191, 210, 217, 190, 209, 216, 190, 209, 216, 190, 209, 216, + 192, 210, 217, 192, 210, 217, 192, 210, 217, 192, 210, 217, 191, 209, 216, 188, 207, 214, 187, 206, 213, 186, 204, 212, 184, 204, 212, 181, 201, 209, 179, 200, 208, 177, 199, 206, 173, 195, 205, 170, 192, 203, 165, 190, 200, 163, 188, 198, 161, 185, 196, 157, 182, 194, 149, 175, 188, 144, 171, 184, 138, 167, 181, + 133, 164, 178, 126, 158, 173, 123, 155, 170, 121, 152, 168, 125, 153, 168, 122, 151, 167, 123, 151, 167, 122, 150, 167, 122, 151, 167, 122, 150, 166, 121, 148, 164, 119, 146, 162, 118, 145, 161, 118, 145, 160, 116, 144, 161, 116, 143, 160, 111, 139, 156, 107, 137, 153, 104, 135, 153, 107, 137, 155, 113, 140, 158, + 119, 144, 160, 118, 144, 160, 117, 144, 161, 109, 136, 153, 96, 126, 143, 95, 123, 139, 90, 119, 134, 87, 116, 131, 84, 111, 126, 81, 108, 122, 79, 105, 119, 73, 98, 112, 69, 95, 109, 70, 96, 110, 67, 94, 108, 71, 97, 110, 84, 107, 119, 74, 99, 111, 68, 93, 105, 66, 90, 102, 70, 93, 105, + 71, 93, 104, 72, 94, 105, 72, 95, 105, 70, 94, 103, 71, 96, 106, 69, 94, 105, 81, 105, 114, 103, 124, 131, 106, 127, 135, 92, 116, 125, 76, 105, 114, 75, 105, 113, 93, 121, 128, 96, 124, 132, 123, 146, 154, 136, 155, 163, 111, 140, 148, 90, 122, 132, 92, 126, 136, 108, 139, 148, 122, 148, 155, + 122, 149, 156, 125, 150, 155, 130, 152, 158, 133, 153, 159, 123, 147, 153, 121, 145, 151, 119, 142, 147, 115, 136, 141, 108, 129, 134, 112, 132, 137, 104, 124, 131, 105, 125, 132, 105, 125, 133, 108, 127, 134, 97, 118, 123, 103, 123, 129, 96, 116, 123, 95, 115, 122, 93, 112, 119, 92, 113, 119, 91, 110, 116, + 88, 108, 113, 85, 105, 110, 86, 102, 108, 72, 89, 95, 78, 93, 100, 78, 93, 99, 63, 79, 86, 73, 88, 92, 61, 75, 78, 70, 82, 85, 64, 76, 79, 52, 63, 70, 54, 66, 72, 46, 59, 65, 74, 84, 90, 42, 56, 60, 47, 61, 64, 71, 83, 86, 83, 94, 96, 68, 82, 82, 116, 127, 129, + 127, 138, 139, 93, 105, 109, 73, 88, 93, 67, 85, 90, 126, 139, 142, 77, 94, 98, 149, 159, 162, 100, 116, 121, 132, 145, 148, 119, 135, 136, 185, 190, 190, 124, 139, 138, 223, 225, 225, 78, 98, 99, 123, 140, 140, 141, 153, 153, 95, 114, 114, 135, 148, 149, 97, 114, 117, 154, 163, 166, 68, 85, 92, + 121, 132, 135, 80, 96, 97, 68, 86, 85, 84, 99, 99, 196, 200, 198, 53, 69, 71, 76, 91, 93, 71, 86, 89, 71, 88, 92, 71, 89, 92, 73, 91, 94, 68, 86, 89, 58, 78, 82, 72, 89, 93, 73, 91, 93, 70, 87, 90, 61, 79, 78, 118, 131, 126, 171, 179, 179, 79, 93, 95, 70, 85, 88, + 73, 86, 92, 68, 80, 86, 150, 157, 161, 162, 168, 170, 67, 83, 88, 75, 91, 95, 77, 94, 97, 80, 98, 101, 76, 96, 99, 82, 101, 104, 76, 96, 100, 76, 96, 101, 76, 96, 101, 73, 94, 99, 79, 99, 104, 72, 93, 98, 76, 97, 101, 75, 97, 102, 75, 100, 102, 78, 101, 105, 81, 104, 105, + 85, 108, 109, 93, 113, 115, 124, 141, 142, 82, 104, 108, 89, 110, 115, 89, 110, 115, 86, 109, 115, 89, 111, 115, 89, 111, 116, 90, 113, 117, 92, 115, 118, 89, 112, 115, 97, 118, 123, 93, 114, 119, 132, 145, 150, 169, 178, 182, 108, 123, 128, 102, 120, 123, 113, 134, 137, 99, 124, 126, 107, 131, 133, + 120, 140, 144, 127, 147, 151, 158, 172, 175, 126, 148, 152, 152, 168, 170, 176, 187, 189, 147, 166, 168, 144, 166, 168, 151, 170, 173, 174, 188, 190, 166, 183, 185, 176, 191, 190, 181, 195, 194, 165, 183, 183, 183, 196, 196, 190, 201, 201, 181, 196, 195, 185, 200, 199, 199, 210, 209, 201, 212, 210, 216, 222, 222, + 205, 215, 213, 200, 210, 208, 192, 204, 203, 198, 209, 208, 209, 218, 216, 208, 217, 215, 203, 213, 212, 210, 220, 218, 214, 222, 220, 215, 222, 221, 210, 219, 217, 212, 221, 219, 212, 221, 217, 219, 226, 223, 218, 226, 222, 215, 224, 221, 216, 224, 221, 219, 226, 223, 217, 224, 221, 216, 223, 220, 212, 220, 218, + 210, 220, 217, 209, 219, 216, 215, 224, 221, 217, 224, 221, 216, 225, 222, 217, 226, 223, 216, 225, 222, 212, 223, 220, 211, 223, 221, 212, 222, 220, 211, 222, 220, 212, 223, 220, 215, 224, 221, 216, 225, 222, 220, 228, 225, 223, 230, 227, 226, 232, 229, 229, 234, 232, 230, 235, 233, 231, 236, 234, 230, 235, 233, + 212, 224, 228, 211, 223, 227, 211, 223, 227, 212, 224, 228, 212, 224, 228, 209, 223, 226, 207, 222, 225, 206, 221, 224, 205, 220, 224, 204, 218, 224, 202, 217, 223, 200, 216, 222, 199, 215, 221, 196, 213, 219, 194, 212, 219, 193, 212, 219, 191, 210, 217, 191, 210, 217, 190, 209, 216, 191, 210, 217, 193, 211, 218, + 192, 210, 217, 192, 210, 217, 192, 210, 217, 192, 210, 217, 190, 208, 215, 189, 207, 214, 187, 206, 213, 184, 204, 211, 182, 202, 210, 180, 200, 210, 179, 200, 209, 176, 197, 206, 171, 194, 203, 169, 192, 202, 166, 189, 200, 162, 186, 197, 161, 185, 196, 158, 182, 194, 152, 178, 189, 146, 173, 187, 139, 168, 182, + 135, 165, 179, 130, 161, 176, 126, 156, 172, 127, 156, 172, 126, 155, 170, 125, 154, 169, 123, 152, 168, 122, 151, 167, 121, 149, 166, 121, 148, 166, 121, 148, 165, 121, 147, 164, 119, 145, 162, 120, 146, 162, 121, 147, 163, 114, 141, 159, 115, 142, 159, 109, 138, 155, 113, 142, 160, 119, 144, 162, 119, 144, 161, + 113, 138, 156, 115, 142, 158, 104, 133, 150, 97, 127, 144, 94, 124, 141, 94, 122, 139, 86, 117, 132, 84, 113, 128, 82, 110, 125, 77, 104, 119, 72, 99, 112, 70, 96, 110, 64, 91, 105, 65, 92, 106, 71, 97, 111, 82, 107, 118, 73, 98, 110, 66, 92, 104, 66, 92, 106, 68, 91, 106, 69, 93, 105, + 72, 94, 106, 73, 95, 106, 73, 95, 105, 73, 96, 104, 71, 96, 106, 89, 112, 121, 103, 122, 130, 98, 119, 126, 80, 107, 113, 71, 101, 107, 82, 111, 117, 96, 123, 130, 105, 130, 137, 129, 151, 157, 126, 148, 154, 102, 130, 138, 89, 120, 129, 83, 116, 125, 90, 122, 132, 109, 138, 147, 116, 143, 152, + 123, 149, 157, 129, 152, 157, 129, 152, 157, 122, 145, 152, 123, 146, 152, 125, 147, 153, 119, 142, 147, 116, 138, 142, 115, 136, 141, 108, 129, 134, 107, 126, 132, 101, 122, 129, 105, 124, 131, 103, 122, 130, 105, 125, 131, 96, 116, 123, 90, 112, 118, 100, 119, 127, 99, 118, 126, 89, 111, 118, 94, 114, 121, + 92, 114, 119, 91, 111, 115, 90, 109, 114, 90, 109, 114, 84, 101, 107, 83, 99, 106, 76, 92, 99, 75, 89, 96, 80, 93, 99, 68, 81, 87, 73, 84, 89, 68, 79, 86, 63, 74, 81, 66, 77, 84, 56, 67, 74, 46, 60, 64, 45, 58, 62, 58, 70, 74, 75, 87, 89, 73, 85, 88, 109, 119, 122, + 76, 89, 93, 102, 112, 116, 98, 107, 114, 60, 75, 82, 114, 125, 128, 106, 118, 121, 67, 86, 90, 127, 140, 142, 120, 135, 139, 93, 110, 114, 122, 136, 136, 173, 181, 181, 119, 133, 132, 183, 191, 190, 45, 70, 68, 167, 175, 175, 117, 132, 131, 97, 114, 114, 141, 152, 155, 92, 106, 111, 93, 107, 111, + 84, 99, 100, 130, 142, 142, 76, 94, 92, 75, 91, 91, 67, 84, 84, 189, 193, 195, 101, 114, 115, 74, 91, 92, 69, 85, 87, 73, 90, 93, 83, 100, 102, 72, 91, 94, 67, 86, 90, 65, 85, 90, 74, 92, 97, 69, 86, 91, 71, 90, 92, 74, 92, 94, 58, 79, 82, 146, 158, 159, 159, 168, 168, + 66, 81, 85, 79, 91, 98, 73, 87, 91, 73, 87, 91, 149, 158, 161, 157, 166, 168, 77, 94, 98, 80, 97, 101, 84, 100, 103, 87, 104, 107, 81, 99, 103, 75, 94, 99, 76, 96, 101, 75, 95, 101, 73, 94, 99, 80, 101, 105, 77, 99, 104, 80, 102, 107, 78, 101, 106, 83, 105, 110, 87, 109, 110, + 90, 110, 112, 91, 111, 113, 115, 132, 134, 112, 129, 132, 93, 112, 118, 92, 113, 118, 92, 114, 119, 93, 115, 121, 93, 115, 118, 94, 117, 119, 98, 121, 123, 99, 122, 125, 106, 127, 129, 99, 122, 124, 112, 129, 135, 107, 123, 128, 166, 175, 178, 157, 169, 171, 111, 132, 134, 112, 134, 135, 113, 136, 138, + 115, 138, 140, 132, 150, 154, 135, 154, 158, 141, 161, 164, 160, 175, 176, 165, 178, 180, 165, 179, 181, 151, 171, 174, 152, 172, 174, 172, 186, 189, 167, 183, 185, 181, 194, 193, 183, 195, 195, 180, 193, 193, 179, 193, 195, 180, 193, 195, 189, 201, 201, 183, 197, 196, 197, 209, 208, 195, 208, 206, 208, 216, 215, + 211, 218, 217, 201, 213, 211, 202, 211, 210, 184, 198, 196, 206, 215, 213, 212, 219, 218, 207, 216, 215, 200, 211, 210, 213, 220, 219, 215, 222, 221, 211, 219, 218, 208, 219, 216, 211, 220, 218, 218, 224, 221, 218, 226, 223, 216, 225, 221, 213, 222, 219, 215, 223, 220, 217, 224, 221, 213, 221, 218, 212, 220, 217, + 211, 220, 217, 212, 221, 218, 214, 223, 220, 218, 225, 222, 216, 225, 222, 218, 226, 223, 219, 228, 225, 216, 225, 222, 211, 222, 219, 211, 222, 220, 213, 223, 220, 213, 223, 220, 214, 224, 221, 216, 225, 222, 217, 226, 223, 222, 229, 226, 224, 231, 228, 227, 233, 230, 231, 236, 233, 229, 234, 231, 231, 236, 234, + 211, 223, 227, 211, 223, 227, 212, 224, 228, 210, 223, 227, 209, 223, 226, 208, 223, 226, 207, 222, 225, 205, 219, 226, 205, 219, 223, 203, 217, 223, 200, 216, 222, 198, 214, 220, 197, 213, 219, 195, 213, 218, 194, 212, 219, 192, 211, 218, 192, 210, 218, 191, 210, 217, 192, 210, 217, 192, 210, 217, 192, 210, 218, + 192, 210, 218, 192, 211, 217, 192, 210, 217, 192, 210, 217, 190, 208, 215, 187, 206, 213, 185, 204, 212, 183, 203, 211, 181, 202, 210, 178, 199, 208, 177, 198, 206, 175, 196, 205, 171, 194, 204, 170, 194, 202, 165, 189, 198, 163, 188, 198, 161, 185, 196, 158, 182, 194, 153, 178, 190, 148, 175, 187, 143, 171, 184, + 140, 167, 182, 132, 162, 177, 130, 160, 175, 128, 157, 172, 126, 156, 171, 126, 155, 170, 122, 152, 168, 121, 151, 167, 122, 150, 167, 121, 149, 166, 122, 149, 166, 121, 147, 164, 122, 148, 164, 121, 147, 163, 120, 146, 162, 118, 144, 161, 114, 141, 158, 118, 145, 161, 121, 147, 164, 116, 142, 159, 110, 137, 155, + 114, 141, 158, 105, 133, 150, 97, 127, 144, 97, 127, 144, 92, 122, 139, 91, 119, 136, 86, 115, 132, 82, 112, 127, 76, 105, 120, 75, 102, 116, 68, 95, 109, 65, 93, 107, 61, 89, 103, 73, 100, 114, 80, 106, 119, 73, 97, 112, 66, 91, 106, 70, 92, 108, 68, 90, 105, 69, 92, 107, 70, 94, 107, + 73, 95, 107, 70, 93, 104, 71, 95, 103, 76, 98, 107, 96, 117, 124, 101, 123, 131, 91, 115, 123, 74, 103, 110, 69, 99, 104, 84, 112, 117, 100, 125, 132, 114, 136, 143, 118, 142, 148, 105, 132, 138, 93, 124, 130, 84, 113, 121, 78, 110, 118, 80, 110, 119, 92, 121, 130, 109, 136, 146, 118, 144, 151, + 118, 145, 152, 128, 151, 158, 129, 151, 157, 123, 146, 153, 128, 149, 156, 126, 148, 154, 121, 144, 150, 117, 139, 144, 112, 133, 138, 109, 129, 134, 103, 124, 130, 103, 123, 129, 102, 122, 129, 102, 123, 129, 95, 117, 123, 92, 114, 120, 90, 112, 118, 106, 125, 132, 99, 119, 127, 90, 112, 119, 88, 110, 117, + 88, 111, 116, 97, 118, 123, 93, 114, 119, 96, 114, 119, 95, 112, 118, 92, 108, 114, 81, 98, 105, 79, 94, 100, 84, 97, 104, 68, 83, 89, 80, 94, 100, 64, 77, 85, 67, 80, 88, 67, 79, 86, 64, 75, 82, 53, 66, 71, 43, 57, 63, 55, 67, 72, 71, 81, 85, 60, 72, 76, 71, 83, 86, + 99, 110, 113, 108, 117, 121, 93, 104, 109, 47, 61, 68, 72, 84, 90, 148, 156, 159, 69, 86, 89, 110, 124, 127, 88, 105, 109, 110, 127, 129, 65, 84, 88, 117, 133, 132, 168, 176, 175, 58, 79, 76, 184, 190, 190, 78, 94, 91, 160, 168, 167, 78, 95, 94, 105, 118, 121, 118, 129, 132, 128, 139, 140, + 59, 77, 77, 83, 99, 100, 137, 147, 147, 78, 96, 96, 74, 91, 92, 60, 79, 81, 132, 143, 144, 164, 173, 173, 57, 74, 76, 77, 93, 95, 78, 95, 97, 78, 95, 99, 77, 96, 100, 70, 90, 95, 71, 90, 94, 73, 92, 97, 65, 85, 89, 76, 96, 99, 73, 92, 96, 70, 91, 92, 67, 88, 88, + 165, 173, 173, 137, 147, 149, 70, 85, 87, 79, 94, 97, 84, 99, 101, 64, 80, 85, 154, 164, 168, 154, 162, 165, 71, 85, 90, 83, 98, 101, 81, 97, 100, 81, 99, 103, 76, 96, 101, 77, 96, 102, 78, 99, 103, 81, 103, 104, 82, 104, 108, 83, 105, 110, 86, 107, 112, 85, 107, 110, 90, 111, 113, + 89, 110, 111, 95, 116, 117, 94, 113, 115, 139, 151, 153, 104, 122, 127, 97, 116, 122, 102, 121, 126, 97, 118, 123, 99, 119, 123, 102, 124, 126, 103, 125, 127, 101, 123, 124, 107, 129, 131, 104, 126, 128, 110, 129, 132, 121, 138, 141, 123, 139, 142, 118, 135, 138, 182, 191, 193, 125, 146, 146, 120, 141, 142, + 114, 138, 140, 122, 144, 146, 153, 169, 172, 137, 158, 161, 147, 163, 165, 182, 192, 193, 165, 179, 181, 160, 176, 178, 157, 175, 178, 175, 188, 190, 176, 189, 191, 173, 188, 187, 183, 195, 195, 180, 192, 194, 181, 194, 196, 179, 193, 195, 184, 197, 199, 179, 195, 194, 191, 204, 203, 201, 212, 210, 194, 207, 205, + 209, 218, 216, 207, 215, 214, 202, 212, 210, 190, 203, 201, 195, 207, 205, 206, 215, 213, 205, 213, 212, 200, 211, 208, 210, 218, 216, 212, 220, 219, 211, 219, 218, 208, 216, 215, 207, 217, 215, 210, 219, 217, 215, 224, 221, 219, 225, 223, 216, 224, 221, 212, 221, 218, 215, 223, 220, 213, 221, 218, 208, 217, 214, + 210, 219, 216, 210, 219, 216, 211, 220, 218, 219, 226, 223, 215, 225, 222, 215, 225, 222, 219, 227, 224, 220, 228, 225, 216, 226, 223, 212, 223, 220, 214, 225, 222, 216, 225, 222, 216, 226, 223, 217, 226, 223, 219, 227, 224, 220, 228, 225, 223, 230, 227, 226, 232, 230, 228, 234, 231, 229, 234, 232, 230, 235, 233, + 211, 223, 227, 210, 223, 227, 210, 224, 227, 207, 223, 226, 208, 223, 225, 207, 222, 226, 206, 220, 226, 203, 218, 224, 203, 218, 224, 200, 216, 222, 199, 215, 221, 198, 214, 220, 198, 214, 220, 196, 212, 218, 194, 212, 219, 193, 211, 218, 193, 211, 218, 193, 211, 218, 193, 211, 218, 192, 210, 217, 192, 210, 217, + 193, 211, 218, 192, 211, 217, 192, 210, 217, 190, 208, 215, 189, 207, 214, 186, 205, 212, 185, 204, 212, 182, 203, 211, 181, 202, 210, 178, 199, 207, 178, 199, 207, 175, 197, 205, 173, 195, 203, 169, 192, 200, 168, 191, 200, 166, 188, 199, 164, 186, 198, 159, 182, 194, 154, 179, 191, 149, 176, 189, 143, 170, 184, + 140, 168, 182, 136, 164, 178, 132, 161, 176, 128, 158, 173, 127, 156, 171, 122, 153, 169, 122, 154, 168, 120, 151, 166, 123, 152, 167, 123, 152, 167, 122, 148, 164, 123, 149, 165, 121, 147, 163, 122, 148, 164, 119, 145, 161, 120, 146, 162, 125, 150, 166, 122, 147, 163, 113, 141, 156, 110, 138, 155, 110, 139, 156, + 106, 134, 151, 96, 127, 145, 96, 126, 144, 93, 123, 140, 90, 120, 137, 87, 116, 133, 85, 113, 130, 83, 109, 125, 75, 104, 119, 73, 99, 114, 64, 93, 107, 63, 91, 105, 76, 103, 117, 80, 106, 120, 73, 99, 113, 69, 93, 108, 68, 92, 107, 69, 92, 106, 69, 92, 107, 70, 93, 108, 70, 94, 106, + 72, 96, 107, 70, 94, 104, 81, 103, 112, 101, 122, 129, 99, 119, 128, 86, 110, 120, 71, 98, 109, 75, 102, 110, 90, 116, 121, 116, 138, 144, 117, 138, 144, 117, 139, 146, 96, 123, 129, 84, 114, 120, 79, 108, 115, 78, 106, 113, 75, 104, 111, 84, 113, 120, 96, 123, 131, 107, 132, 142, 113, 138, 148, + 116, 141, 150, 122, 146, 153, 123, 146, 154, 126, 148, 155, 128, 150, 156, 127, 148, 155, 122, 144, 150, 117, 139, 145, 109, 132, 137, 109, 131, 136, 102, 124, 130, 107, 128, 134, 101, 124, 129, 104, 125, 132, 95, 118, 123, 94, 114, 121, 98, 119, 125, 95, 116, 123, 97, 117, 125, 91, 114, 120, 95, 118, 124, + 97, 119, 125, 95, 118, 123, 93, 113, 119, 94, 113, 118, 95, 113, 119, 95, 112, 116, 96, 112, 116, 84, 101, 107, 82, 99, 105, 88, 101, 107, 84, 98, 103, 70, 85, 92, 70, 85, 92, 74, 88, 95, 58, 73, 79, 59, 71, 76, 50, 62, 69, 50, 63, 66, 72, 83, 87, 53, 67, 70, 83, 95, 97, + 82, 92, 97, 75, 87, 91, 78, 90, 96, 65, 76, 83, 61, 76, 82, 59, 75, 80, 129, 141, 142, 61, 82, 85, 113, 128, 130, 110, 125, 129, 72, 90, 93, 60, 79, 79, 168, 175, 175, 95, 109, 106, 73, 86, 83, 165, 170, 169, 152, 159, 158, 89, 104, 103, 65, 83, 82, 134, 145, 145, 64, 80, 79, + 123, 135, 133, 74, 93, 91, 103, 119, 118, 123, 137, 137, 78, 95, 97, 77, 93, 95, 80, 97, 99, 84, 100, 101, 194, 200, 200, 65, 79, 79, 90, 106, 107, 82, 98, 102, 74, 92, 96, 78, 96, 102, 73, 91, 95, 76, 94, 98, 72, 91, 95, 75, 94, 97, 77, 96, 99, 77, 97, 98, 74, 94, 94, + 76, 94, 93, 97, 111, 110, 176, 182, 181, 101, 115, 113, 79, 95, 95, 76, 93, 96, 82, 97, 101, 80, 95, 100, 163, 172, 174, 134, 144, 148, 74, 88, 94, 80, 96, 103, 81, 100, 105, 82, 101, 106, 84, 103, 107, 85, 105, 107, 88, 110, 111, 87, 108, 112, 90, 110, 115, 92, 112, 115, 94, 116, 117, + 92, 114, 115, 101, 121, 122, 100, 120, 120, 101, 119, 120, 155, 166, 169, 97, 116, 120, 102, 121, 126, 99, 119, 124, 101, 122, 125, 105, 126, 128, 109, 130, 132, 106, 127, 129, 110, 133, 134, 113, 134, 136, 115, 137, 139, 118, 139, 141, 133, 150, 153, 123, 141, 144, 129, 146, 147, 152, 166, 167, 167, 180, 181, + 118, 139, 141, 128, 147, 151, 146, 163, 165, 157, 171, 174, 145, 164, 165, 162, 176, 177, 185, 195, 195, 155, 172, 174, 157, 174, 175, 176, 190, 191, 183, 194, 195, 172, 187, 186, 179, 193, 192, 184, 197, 197, 185, 198, 200, 185, 197, 199, 176, 191, 193, 190, 202, 201, 180, 196, 195, 198, 210, 209, 198, 209, 206, + 200, 210, 209, 213, 220, 219, 201, 212, 210, 196, 209, 207, 188, 201, 199, 201, 211, 210, 208, 217, 215, 201, 212, 209, 206, 215, 214, 210, 218, 217, 210, 219, 217, 206, 215, 213, 207, 216, 214, 211, 220, 217, 213, 222, 219, 217, 224, 221, 219, 226, 223, 213, 222, 219, 215, 223, 221, 214, 223, 220, 209, 218, 215, + 209, 218, 215, 208, 217, 214, 210, 220, 217, 214, 222, 219, 217, 224, 221, 215, 224, 221, 218, 226, 223, 220, 228, 225, 218, 227, 224, 214, 224, 222, 213, 225, 223, 214, 225, 222, 217, 227, 225, 218, 227, 224, 219, 228, 225, 221, 230, 225, 224, 231, 227, 224, 231, 227, 227, 233, 231, 228, 233, 231, 230, 234, 232, + 209, 223, 226, 208, 223, 226, 208, 224, 226, 208, 223, 226, 207, 221, 225, 205, 219, 225, 203, 218, 224, 202, 218, 224, 200, 216, 222, 199, 215, 221, 198, 214, 220, 197, 213, 219, 195, 213, 218, 194, 212, 219, 194, 212, 219, 194, 212, 219, 193, 211, 218, 191, 210, 217, 191, 210, 217, 190, 209, 216, 190, 208, 215, + 190, 208, 215, 191, 209, 216, 190, 208, 215, 189, 208, 215, 188, 207, 214, 186, 205, 213, 184, 204, 212, 181, 202, 210, 181, 202, 210, 179, 200, 208, 178, 199, 207, 175, 197, 205, 174, 196, 204, 171, 194, 201, 169, 191, 201, 166, 188, 199, 163, 185, 197, 160, 183, 195, 153, 178, 190, 149, 175, 188, 144, 170, 184, + 138, 167, 181, 134, 165, 179, 130, 160, 175, 127, 157, 173, 124, 156, 171, 122, 154, 169, 122, 153, 168, 124, 153, 168, 124, 153, 168, 125, 152, 168, 124, 150, 166, 123, 149, 165, 123, 149, 165, 121, 147, 163, 122, 147, 162, 125, 150, 164, 120, 146, 161, 110, 138, 153, 106, 136, 151, 109, 138, 154, 102, 132, 149, + 98, 128, 145, 98, 128, 145, 95, 125, 142, 93, 123, 140, 89, 120, 137, 87, 115, 133, 84, 111, 126, 81, 107, 123, 75, 102, 118, 68, 97, 112, 66, 95, 110, 79, 106, 121, 81, 107, 122, 75, 100, 115, 70, 96, 110, 68, 94, 108, 70, 94, 106, 69, 94, 106, 70, 95, 108, 70, 93, 107, 71, 96, 107, + 71, 96, 107, 83, 105, 115, 103, 122, 130, 98, 119, 128, 81, 106, 116, 76, 102, 112, 78, 105, 113, 100, 124, 130, 133, 150, 154, 116, 136, 144, 118, 138, 146, 94, 120, 127, 93, 120, 126, 76, 105, 112, 75, 104, 109, 78, 106, 113, 78, 106, 113, 86, 112, 119, 102, 126, 133, 101, 127, 137, 104, 130, 140, + 115, 139, 149, 112, 137, 147, 128, 148, 157, 124, 146, 155, 127, 149, 156, 120, 142, 150, 117, 141, 147, 115, 138, 143, 113, 136, 141, 106, 128, 133, 107, 129, 134, 102, 124, 129, 105, 127, 132, 101, 123, 127, 95, 117, 123, 95, 115, 121, 98, 118, 124, 96, 117, 125, 97, 118, 125, 87, 111, 117, 96, 120, 126, + 103, 126, 131, 98, 120, 127, 92, 113, 120, 104, 124, 130, 101, 121, 126, 101, 120, 123, 100, 118, 122, 94, 112, 115, 88, 105, 108, 94, 110, 113, 85, 102, 104, 81, 97, 100, 72, 88, 92, 57, 74, 77, 72, 87, 90, 67, 82, 86, 55, 69, 72, 47, 61, 67, 60, 72, 76, 51, 65, 69, 86, 96, 99, + 90, 101, 105, 42, 56, 61, 80, 91, 96, 63, 76, 82, 60, 75, 81, 58, 75, 80, 128, 140, 140, 63, 84, 84, 147, 159, 160, 62, 84, 87, 78, 95, 97, 71, 88, 88, 52, 71, 69, 221, 222, 222, 75, 89, 87, 65, 80, 76, 155, 161, 160, 177, 183, 183, 88, 104, 102, 61, 79, 78, 136, 146, 145, + 98, 112, 109, 95, 111, 110, 74, 94, 93, 128, 142, 141, 110, 124, 124, 79, 96, 98, 85, 101, 103, 84, 100, 101, 68, 86, 87, 170, 179, 178, 119, 130, 129, 88, 102, 103, 76, 93, 96, 78, 94, 99, 77, 95, 98, 76, 95, 98, 82, 100, 104, 75, 95, 97, 76, 96, 98, 81, 101, 102, 84, 102, 101, + 79, 97, 95, 83, 99, 98, 77, 94, 93, 136, 148, 148, 165, 174, 173, 69, 86, 90, 79, 95, 99, 80, 96, 100, 78, 92, 97, 93, 107, 111, 169, 178, 180, 113, 125, 130, 78, 94, 101, 90, 107, 112, 84, 103, 107, 86, 106, 108, 90, 110, 112, 89, 109, 113, 96, 115, 119, 98, 118, 120, 94, 115, 116, + 94, 115, 116, 103, 124, 124, 106, 127, 128, 108, 129, 130, 107, 126, 127, 149, 162, 164, 104, 123, 126, 101, 122, 124, 104, 124, 127, 116, 135, 138, 111, 131, 134, 113, 134, 134, 118, 138, 139, 119, 140, 141, 115, 138, 140, 119, 141, 143, 125, 145, 147, 137, 152, 155, 134, 152, 153, 130, 149, 150, 128, 145, 147, + 182, 193, 193, 131, 150, 151, 138, 157, 159, 166, 178, 180, 154, 169, 171, 166, 179, 181, 173, 186, 187, 179, 191, 191, 162, 178, 177, 166, 181, 180, 183, 196, 195, 179, 191, 190, 177, 191, 191, 185, 196, 196, 181, 195, 194, 195, 205, 205, 171, 188, 187, 186, 200, 199, 181, 196, 195, 191, 204, 202, 200, 211, 208, + 194, 205, 203, 203, 212, 210, 211, 218, 217, 194, 206, 204, 193, 205, 204, 195, 207, 205, 206, 214, 212, 200, 212, 209, 199, 210, 207, 213, 220, 219, 206, 214, 211, 209, 218, 215, 208, 217, 214, 211, 220, 217, 210, 220, 217, 215, 222, 219, 216, 223, 220, 213, 221, 218, 212, 221, 218, 212, 220, 218, 213, 221, 218, + 208, 217, 214, 209, 218, 215, 210, 219, 216, 212, 220, 217, 215, 222, 219, 218, 225, 222, 217, 225, 222, 219, 226, 223, 220, 228, 225, 216, 226, 223, 214, 225, 223, 215, 226, 224, 218, 227, 226, 219, 228, 225, 220, 230, 226, 221, 230, 227, 224, 232, 228, 226, 233, 230, 226, 233, 230, 229, 233, 232, 230, 235, 233, + 208, 223, 226, 208, 223, 226, 207, 221, 228, 207, 220, 227, 206, 220, 226, 205, 218, 224, 201, 218, 224, 201, 217, 223, 199, 215, 221, 198, 214, 220, 198, 214, 220, 196, 213, 219, 195, 213, 219, 194, 212, 218, 193, 211, 218, 192, 210, 217, 192, 210, 217, 190, 209, 216, 190, 209, 216, 190, 209, 216, 190, 208, 215, + 190, 208, 215, 189, 207, 214, 188, 207, 214, 188, 207, 214, 187, 206, 213, 183, 204, 212, 184, 203, 211, 181, 202, 210, 180, 201, 209, 181, 201, 209, 178, 198, 206, 177, 197, 205, 175, 196, 204, 171, 193, 204, 172, 192, 203, 167, 188, 199, 164, 185, 197, 158, 181, 193, 152, 178, 190, 146, 174, 186, 142, 170, 184, + 137, 167, 181, 133, 164, 178, 131, 162, 177, 127, 159, 173, 125, 156, 171, 123, 154, 169, 123, 154, 169, 125, 154, 169, 127, 154, 170, 123, 152, 167, 128, 154, 170, 125, 151, 167, 122, 148, 164, 125, 150, 165, 124, 150, 164, 119, 146, 160, 112, 139, 155, 106, 136, 151, 108, 139, 154, 100, 131, 148, 98, 129, 146, + 100, 130, 147, 97, 126, 143, 96, 126, 142, 91, 121, 138, 85, 115, 132, 85, 114, 129, 85, 111, 127, 79, 105, 121, 73, 101, 117, 76, 103, 119, 80, 107, 122, 85, 110, 127, 77, 102, 117, 73, 99, 114, 69, 95, 109, 69, 95, 107, 68, 94, 106, 68, 94, 106, 68, 95, 107, 72, 96, 108, 75, 99, 110, + 86, 109, 120, 104, 122, 132, 98, 118, 129, 85, 109, 119, 77, 102, 112, 78, 104, 115, 106, 128, 136, 134, 151, 157, 108, 132, 137, 116, 138, 144, 90, 117, 123, 89, 116, 122, 77, 107, 114, 74, 103, 110, 74, 102, 109, 76, 104, 111, 83, 110, 116, 92, 117, 123, 94, 119, 125, 92, 119, 126, 100, 126, 136, + 110, 135, 146, 115, 138, 148, 129, 149, 159, 126, 148, 156, 123, 144, 152, 119, 143, 150, 116, 140, 146, 116, 141, 147, 112, 137, 142, 109, 131, 136, 108, 129, 134, 107, 129, 134, 106, 128, 133, 102, 124, 128, 94, 116, 120, 96, 118, 123, 99, 119, 126, 95, 117, 125, 92, 115, 123, 102, 126, 132, 99, 123, 129, + 96, 119, 125, 95, 117, 125, 103, 124, 132, 98, 119, 127, 107, 127, 135, 111, 130, 136, 105, 125, 130, 106, 125, 128, 105, 124, 126, 98, 114, 117, 88, 106, 107, 85, 103, 104, 89, 104, 107, 65, 84, 85, 75, 91, 93, 81, 96, 98, 65, 81, 84, 55, 70, 75, 60, 75, 80, 61, 75, 81, 74, 87, 91, + 90, 100, 104, 54, 68, 71, 68, 81, 86, 56, 71, 77, 64, 80, 85, 65, 81, 85, 68, 88, 88, 134, 148, 147, 55, 78, 76, 134, 148, 147, 79, 95, 98, 79, 96, 97, 66, 83, 82, 104, 116, 115, 193, 198, 197, 76, 90, 86, 75, 88, 86, 222, 226, 223, 111, 123, 121, 81, 98, 95, 85, 99, 97, + 116, 127, 126, 124, 135, 134, 80, 101, 99, 92, 110, 107, 125, 139, 137, 94, 112, 110, 85, 104, 104, 91, 106, 105, 81, 97, 97, 75, 91, 91, 116, 129, 130, 174, 182, 182, 65, 83, 84, 78, 95, 97, 83, 100, 103, 79, 98, 100, 82, 100, 103, 85, 103, 105, 77, 97, 99, 81, 101, 99, 78, 98, 96, + 89, 106, 105, 76, 95, 93, 80, 99, 99, 89, 106, 107, 71, 91, 92, 165, 173, 174, 135, 145, 146, 70, 85, 89, 84, 99, 102, 85, 100, 103, 74, 89, 94, 122, 134, 139, 175, 181, 184, 84, 98, 103, 91, 106, 112, 93, 112, 115, 92, 110, 113, 93, 112, 114, 97, 118, 118, 99, 119, 120, 102, 122, 123, + 102, 124, 125, 108, 128, 129, 112, 131, 132, 118, 136, 137, 113, 131, 132, 137, 151, 153, 127, 144, 146, 107, 126, 129, 105, 125, 128, 121, 139, 142, 118, 137, 139, 111, 132, 133, 131, 149, 150, 122, 141, 142, 122, 143, 144, 119, 140, 142, 126, 146, 147, 137, 155, 156, 139, 156, 157, 144, 159, 160, 138, 155, 156, + 132, 150, 152, 178, 188, 189, 163, 175, 176, 166, 178, 178, 165, 178, 177, 160, 174, 174, 173, 185, 185, 174, 186, 186, 178, 191, 190, 161, 177, 174, 179, 191, 189, 189, 201, 198, 176, 190, 188, 179, 192, 191, 184, 196, 195, 191, 201, 200, 185, 197, 197, 178, 192, 192, 196, 207, 206, 182, 197, 195, 196, 207, 205, + 197, 207, 205, 200, 210, 208, 204, 212, 211, 206, 213, 212, 188, 201, 199, 198, 208, 206, 198, 209, 208, 207, 215, 214, 200, 210, 208, 205, 215, 212, 210, 216, 215, 208, 217, 214, 211, 219, 216, 208, 217, 214, 209, 217, 213, 215, 222, 219, 215, 222, 219, 211, 220, 217, 211, 219, 218, 209, 218, 217, 207, 217, 215, + 209, 218, 215, 209, 218, 215, 210, 219, 216, 213, 222, 219, 215, 222, 220, 216, 223, 219, 219, 226, 223, 219, 226, 223, 220, 227, 224, 217, 226, 223, 216, 226, 223, 216, 226, 225, 219, 229, 226, 220, 229, 227, 221, 230, 227, 223, 232, 229, 225, 232, 229, 226, 233, 230, 228, 234, 232, 228, 234, 231, 229, 234, 232, + 207, 222, 225, 207, 222, 225, 207, 220, 227, 205, 220, 226, 202, 218, 224, 201, 218, 224, 202, 217, 223, 200, 216, 222, 199, 215, 221, 198, 214, 220, 197, 213, 219, 196, 212, 218, 194, 212, 218, 193, 211, 218, 192, 210, 217, 191, 210, 217, 191, 210, 217, 189, 209, 215, 189, 208, 215, 190, 208, 215, 189, 207, 214, + 189, 207, 214, 189, 207, 214, 187, 206, 213, 187, 206, 213, 185, 205, 212, 183, 203, 211, 183, 202, 210, 183, 202, 210, 183, 202, 209, 181, 201, 209, 179, 199, 207, 178, 198, 206, 175, 195, 205, 171, 192, 202, 168, 190, 200, 165, 187, 198, 159, 183, 194, 154, 180, 191, 149, 175, 187, 145, 173, 185, 140, 169, 183, + 135, 166, 180, 135, 165, 179, 132, 162, 178, 131, 160, 175, 127, 157, 172, 126, 156, 171, 127, 156, 171, 127, 154, 169, 126, 153, 169, 127, 153, 169, 123, 149, 165, 123, 149, 165, 124, 149, 164, 123, 150, 164, 114, 142, 156, 108, 136, 151, 103, 133, 148, 104, 135, 150, 100, 132, 147, 99, 131, 147, 100, 130, 147, + 100, 130, 147, 97, 127, 144, 92, 122, 138, 89, 120, 136, 88, 119, 134, 85, 114, 129, 80, 109, 124, 83, 108, 125, 79, 104, 121, 84, 110, 126, 87, 113, 129, 80, 106, 122, 74, 99, 115, 71, 97, 111, 68, 94, 107, 70, 96, 108, 71, 97, 109, 69, 95, 107, 72, 98, 110, 75, 100, 112, 89, 113, 123, + 106, 125, 136, 96, 118, 128, 85, 110, 120, 80, 105, 115, 87, 111, 121, 118, 138, 147, 118, 139, 146, 101, 126, 131, 115, 138, 143, 85, 113, 118, 82, 111, 116, 79, 108, 113, 68, 97, 104, 72, 101, 108, 76, 105, 111, 76, 104, 111, 95, 119, 125, 95, 119, 125, 87, 113, 119, 90, 117, 124, 102, 126, 135, + 108, 133, 144, 126, 148, 158, 118, 141, 151, 117, 140, 150, 119, 142, 150, 122, 145, 152, 122, 145, 151, 116, 140, 146, 113, 138, 144, 113, 135, 140, 107, 129, 134, 108, 129, 134, 113, 133, 138, 99, 122, 127, 97, 118, 123, 101, 121, 126, 98, 119, 126, 99, 120, 126, 99, 123, 129, 102, 126, 132, 96, 119, 127, + 96, 120, 126, 95, 117, 125, 96, 118, 128, 94, 116, 127, 117, 137, 145, 118, 137, 144, 114, 133, 138, 109, 128, 133, 103, 121, 124, 98, 118, 121, 102, 119, 120, 96, 112, 114, 92, 105, 108, 84, 100, 102, 89, 104, 106, 87, 102, 104, 76, 92, 94, 59, 76, 79, 64, 80, 86, 83, 97, 101, 57, 73, 77, + 73, 86, 90, 87, 98, 102, 55, 70, 73, 66, 81, 84, 69, 87, 89, 61, 80, 84, 67, 86, 89, 91, 110, 108, 112, 129, 127, 150, 162, 161, 60, 80, 82, 67, 85, 86, 85, 99, 99, 74, 91, 90, 175, 183, 183, 137, 148, 148, 70, 81, 80, 93, 103, 101, 227, 229, 229, 70, 86, 85, 85, 98, 98, + 111, 123, 123, 107, 120, 119, 104, 120, 118, 103, 119, 118, 81, 100, 99, 146, 157, 157, 75, 95, 92, 93, 111, 108, 89, 105, 102, 80, 97, 95, 81, 97, 96, 88, 102, 103, 201, 206, 205, 77, 91, 93, 87, 103, 106, 83, 100, 103, 86, 103, 106, 86, 104, 106, 79, 99, 101, 74, 95, 94, 84, 102, 101, + 86, 103, 104, 85, 102, 104, 81, 100, 103, 81, 100, 101, 83, 102, 103, 80, 95, 98, 99, 112, 115, 178, 183, 185, 92, 105, 108, 84, 99, 102, 82, 97, 99, 84, 99, 104, 83, 99, 106, 162, 170, 173, 149, 157, 160, 87, 103, 107, 101, 118, 120, 93, 112, 115, 104, 123, 123, 101, 121, 122, 106, 126, 127, + 104, 123, 126, 111, 130, 131, 115, 134, 135, 117, 137, 138, 116, 135, 136, 113, 132, 134, 159, 170, 172, 107, 126, 130, 114, 132, 136, 126, 143, 145, 121, 140, 141, 116, 136, 137, 128, 146, 147, 122, 142, 143, 122, 142, 143, 125, 146, 147, 137, 155, 156, 135, 153, 154, 149, 164, 164, 156, 169, 169, 141, 159, 157, + 122, 143, 142, 152, 167, 166, 150, 166, 165, 194, 202, 201, 168, 179, 179, 160, 174, 173, 166, 179, 178, 179, 189, 189, 152, 170, 168, 181, 192, 190, 171, 184, 182, 187, 197, 196, 177, 191, 189, 177, 190, 188, 192, 203, 201, 185, 197, 196, 190, 201, 201, 175, 191, 189, 193, 204, 202, 186, 199, 198, 191, 203, 202, + 197, 208, 206, 197, 207, 205, 201, 209, 208, 205, 214, 212, 192, 203, 201, 194, 204, 203, 199, 208, 206, 205, 213, 212, 203, 212, 209, 201, 210, 207, 211, 218, 217, 208, 217, 214, 211, 219, 216, 214, 221, 218, 214, 221, 216, 213, 220, 217, 217, 223, 220, 213, 222, 220, 209, 218, 217, 208, 217, 216, 205, 216, 214, + 203, 214, 211, 207, 217, 214, 209, 218, 216, 213, 222, 219, 215, 223, 220, 216, 223, 219, 220, 227, 224, 221, 227, 225, 219, 226, 223, 219, 227, 224, 218, 227, 224, 218, 227, 224, 219, 229, 226, 220, 229, 226, 223, 231, 228, 225, 232, 229, 226, 233, 230, 228, 234, 231, 227, 234, 231, 229, 236, 233, 229, 235, 233, + 207, 222, 225, 207, 221, 226, 205, 219, 226, 204, 218, 224, 204, 218, 224, 203, 217, 223, 200, 215, 221, 199, 214, 220, 199, 214, 220, 197, 213, 219, 197, 213, 219, 194, 212, 218, 193, 211, 218, 192, 210, 217, 192, 210, 217, 191, 209, 216, 190, 209, 216, 190, 209, 216, 189, 208, 215, 188, 207, 214, 189, 206, 213, + 189, 207, 214, 188, 207, 214, 187, 206, 213, 186, 205, 212, 186, 205, 212, 185, 204, 211, 183, 203, 210, 183, 202, 209, 183, 202, 210, 181, 200, 208, 179, 198, 205, 175, 196, 204, 175, 194, 205, 170, 191, 200, 166, 187, 198, 163, 186, 196, 157, 182, 192, 151, 177, 189, 146, 174, 185, 144, 171, 184, 138, 168, 182, + 136, 167, 180, 135, 165, 179, 136, 164, 178, 133, 161, 176, 131, 160, 175, 128, 156, 172, 129, 155, 170, 127, 153, 169, 126, 152, 168, 126, 152, 168, 123, 150, 165, 124, 150, 165, 119, 145, 159, 111, 139, 154, 106, 136, 151, 102, 133, 148, 102, 133, 148, 100, 132, 147, 99, 132, 147, 101, 131, 148, 101, 131, 148, + 100, 129, 147, 97, 127, 143, 90, 120, 137, 88, 118, 135, 86, 116, 133, 86, 114, 131, 85, 112, 128, 84, 110, 126, 92, 118, 134, 91, 116, 132, 82, 108, 124, 78, 103, 119, 71, 97, 112, 70, 96, 109, 68, 94, 106, 69, 95, 107, 69, 95, 107, 73, 99, 111, 76, 103, 114, 93, 116, 128, 104, 125, 136, + 98, 120, 131, 89, 113, 124, 82, 107, 117, 93, 116, 126, 127, 146, 154, 110, 133, 140, 93, 119, 125, 114, 137, 143, 86, 114, 119, 79, 108, 113, 82, 110, 115, 71, 102, 107, 73, 103, 108, 77, 105, 111, 75, 105, 110, 92, 117, 122, 91, 116, 122, 80, 106, 113, 86, 112, 118, 98, 122, 128, 105, 127, 134, + 119, 139, 147, 115, 136, 147, 112, 137, 148, 115, 139, 148, 113, 140, 146, 123, 146, 153, 122, 145, 152, 119, 143, 149, 112, 136, 142, 112, 134, 140, 107, 129, 134, 112, 133, 138, 110, 130, 135, 100, 122, 127, 97, 118, 122, 99, 120, 125, 99, 120, 126, 110, 130, 136, 95, 119, 125, 103, 126, 132, 90, 116, 121, + 88, 113, 119, 94, 118, 126, 91, 117, 125, 99, 123, 134, 115, 136, 146, 116, 135, 143, 111, 131, 137, 116, 135, 140, 111, 131, 134, 102, 123, 125, 113, 131, 133, 102, 119, 121, 101, 116, 119, 92, 108, 111, 92, 107, 110, 91, 106, 109, 90, 104, 107, 75, 92, 95, 74, 90, 93, 87, 101, 103, 63, 78, 82, + 76, 90, 93, 80, 93, 96, 67, 80, 83, 63, 79, 81, 63, 80, 84, 66, 84, 87, 68, 87, 90, 108, 123, 123, 134, 146, 146, 79, 100, 98, 110, 125, 125, 79, 96, 98, 73, 90, 90, 89, 105, 106, 84, 99, 102, 188, 191, 192, 125, 134, 136, 90, 102, 101, 116, 125, 123, 130, 138, 138, 95, 106, 108, + 86, 99, 98, 130, 140, 140, 114, 128, 126, 97, 113, 111, 73, 93, 91, 90, 108, 107, 141, 153, 151, 78, 97, 94, 92, 111, 107, 84, 101, 99, 85, 102, 100, 92, 107, 106, 84, 99, 100, 175, 183, 183, 96, 106, 108, 90, 103, 106, 89, 106, 108, 84, 103, 103, 80, 99, 98, 69, 91, 89, 77, 97, 98, + 87, 105, 107, 79, 98, 101, 81, 100, 103, 78, 98, 99, 77, 97, 97, 79, 95, 94, 88, 102, 101, 75, 90, 91, 152, 162, 163, 153, 161, 162, 75, 90, 94, 87, 102, 105, 93, 108, 112, 95, 110, 114, 107, 119, 123, 179, 186, 187, 112, 125, 128, 100, 114, 118, 101, 118, 123, 107, 127, 128, 111, 130, 131, + 114, 132, 133, 115, 133, 134, 120, 137, 139, 134, 149, 150, 122, 139, 140, 126, 143, 142, 123, 139, 142, 149, 163, 168, 119, 138, 143, 123, 140, 143, 130, 146, 148, 115, 136, 136, 135, 151, 152, 129, 148, 149, 127, 146, 147, 134, 152, 151, 141, 158, 157, 127, 148, 146, 153, 167, 166, 155, 168, 166, 137, 155, 152, + 133, 153, 151, 150, 166, 165, 154, 168, 167, 153, 167, 165, 193, 202, 201, 171, 183, 182, 163, 176, 175, 170, 183, 182, 170, 183, 182, 164, 179, 177, 182, 193, 191, 184, 195, 193, 188, 199, 197, 178, 191, 190, 188, 200, 198, 182, 193, 193, 183, 196, 195, 182, 195, 194, 187, 198, 197, 194, 205, 202, 194, 205, 203, + 194, 205, 203, 197, 207, 206, 193, 204, 202, 199, 208, 207, 204, 211, 211, 184, 197, 194, 193, 203, 201, 199, 209, 207, 204, 212, 210, 202, 211, 208, 210, 217, 214, 213, 220, 217, 212, 220, 217, 214, 221, 218, 216, 222, 218, 215, 222, 218, 214, 221, 218, 213, 222, 219, 212, 220, 217, 203, 214, 211, 210, 220, 218, + 201, 214, 211, 205, 216, 213, 210, 219, 216, 211, 220, 217, 214, 223, 220, 214, 222, 219, 218, 226, 223, 221, 226, 223, 221, 227, 224, 221, 228, 225, 218, 226, 223, 218, 226, 223, 220, 229, 226, 222, 231, 228, 222, 231, 228, 225, 232, 229, 227, 234, 231, 228, 235, 232, 229, 236, 233, 229, 236, 233, 231, 236, 234, + 206, 221, 225, 205, 219, 225, 205, 219, 225, 203, 218, 224, 201, 216, 222, 200, 216, 222, 199, 214, 220, 199, 214, 220, 198, 214, 220, 197, 213, 219, 197, 212, 219, 194, 213, 219, 194, 212, 219, 192, 210, 217, 192, 210, 217, 190, 209, 216, 190, 209, 216, 189, 207, 214, 189, 207, 214, 190, 208, 215, 189, 207, 214, + 188, 206, 213, 188, 206, 213, 188, 207, 214, 186, 205, 212, 185, 204, 211, 185, 204, 211, 184, 202, 210, 182, 201, 208, 181, 200, 206, 180, 199, 206, 178, 197, 206, 174, 195, 203, 171, 192, 200, 167, 189, 198, 163, 185, 196, 158, 183, 193, 153, 178, 190, 150, 177, 188, 145, 172, 184, 142, 170, 181, 140, 168, 180, + 139, 169, 180, 137, 165, 179, 137, 165, 179, 135, 163, 178, 135, 161, 177, 132, 158, 174, 129, 156, 171, 127, 153, 169, 126, 153, 167, 122, 149, 164, 125, 152, 167, 120, 147, 161, 109, 138, 153, 105, 135, 149, 100, 131, 147, 101, 133, 148, 99, 131, 147, 99, 131, 147, 103, 133, 149, 101, 131, 149, 102, 132, 151, + 98, 128, 147, 95, 125, 144, 91, 121, 139, 92, 120, 137, 92, 119, 136, 90, 118, 135, 88, 115, 131, 92, 118, 134, 94, 120, 136, 84, 109, 125, 81, 107, 122, 75, 101, 116, 74, 100, 114, 70, 96, 109, 72, 98, 110, 73, 98, 110, 76, 101, 113, 79, 105, 117, 92, 117, 128, 104, 125, 136, 98, 120, 131, + 91, 115, 125, 82, 107, 116, 100, 124, 132, 126, 146, 153, 110, 133, 139, 90, 115, 122, 113, 135, 141, 84, 110, 116, 76, 105, 111, 80, 109, 114, 71, 101, 106, 71, 101, 106, 73, 101, 107, 76, 102, 108, 84, 109, 115, 93, 118, 123, 80, 107, 112, 78, 105, 111, 90, 115, 120, 105, 127, 134, 118, 139, 147, + 116, 137, 145, 114, 137, 145, 102, 129, 136, 110, 137, 144, 119, 144, 151, 126, 148, 155, 124, 146, 153, 111, 136, 143, 113, 136, 142, 111, 133, 139, 109, 132, 137, 112, 133, 138, 107, 128, 133, 99, 121, 126, 101, 122, 126, 108, 128, 133, 107, 128, 133, 98, 119, 124, 103, 123, 128, 95, 119, 123, 92, 116, 122, + 83, 110, 116, 97, 122, 129, 94, 120, 128, 106, 131, 141, 107, 132, 141, 105, 130, 139, 104, 129, 136, 113, 136, 143, 109, 131, 136, 113, 134, 136, 103, 124, 126, 115, 132, 135, 102, 121, 124, 102, 119, 122, 99, 115, 118, 100, 115, 117, 91, 107, 110, 93, 108, 111, 85, 101, 105, 83, 99, 103, 71, 89, 91, + 74, 89, 92, 84, 96, 100, 74, 87, 91, 77, 91, 94, 64, 83, 87, 67, 85, 88, 75, 95, 97, 115, 130, 131, 60, 81, 82, 135, 147, 147, 148, 158, 159, 85, 101, 102, 90, 105, 107, 88, 103, 105, 92, 107, 110, 168, 175, 177, 143, 153, 153, 109, 121, 121, 78, 92, 90, 193, 199, 197, 82, 93, 92, + 84, 98, 98, 85, 99, 98, 154, 163, 163, 115, 129, 128, 79, 97, 97, 94, 112, 112, 82, 101, 98, 131, 144, 142, 98, 114, 111, 85, 102, 98, 90, 106, 103, 100, 116, 114, 91, 108, 107, 80, 98, 98, 149, 159, 159, 126, 132, 133, 83, 100, 102, 84, 102, 104, 83, 101, 102, 68, 88, 89, 72, 92, 93, + 86, 102, 103, 83, 101, 102, 80, 99, 102, 75, 95, 95, 83, 100, 99, 89, 104, 102, 91, 106, 104, 89, 105, 102, 92, 107, 104, 97, 113, 114, 177, 184, 185, 96, 110, 113, 95, 111, 114, 96, 112, 115, 97, 112, 115, 93, 106, 109, 162, 169, 171, 154, 162, 165, 106, 120, 124, 116, 132, 135, 112, 131, 131, + 119, 136, 137, 124, 140, 140, 127, 141, 142, 131, 146, 147, 128, 145, 144, 140, 155, 154, 127, 143, 146, 154, 165, 168, 126, 143, 146, 127, 144, 146, 133, 150, 149, 123, 142, 141, 139, 155, 155, 140, 157, 156, 134, 152, 152, 138, 155, 155, 140, 157, 156, 138, 156, 154, 151, 166, 163, 157, 171, 169, 141, 160, 157, + 145, 162, 161, 139, 156, 156, 166, 179, 177, 156, 170, 168, 159, 173, 171, 190, 200, 198, 177, 188, 186, 172, 184, 182, 172, 185, 183, 167, 180, 178, 166, 180, 178, 186, 196, 195, 186, 197, 195, 182, 194, 191, 185, 197, 196, 188, 199, 198, 173, 189, 188, 183, 196, 195, 182, 195, 193, 192, 204, 202, 190, 202, 200, + 191, 202, 200, 192, 203, 200, 198, 208, 206, 187, 200, 197, 203, 211, 209, 194, 205, 202, 186, 199, 195, 196, 206, 203, 200, 209, 206, 204, 212, 209, 209, 217, 214, 215, 221, 219, 214, 221, 218, 209, 218, 215, 218, 224, 221, 216, 223, 220, 215, 223, 220, 212, 221, 218, 211, 220, 216, 205, 216, 214, 204, 216, 213, + 205, 216, 213, 203, 215, 212, 207, 218, 215, 211, 220, 217, 214, 222, 219, 217, 224, 221, 217, 224, 221, 218, 225, 222, 221, 228, 225, 219, 226, 223, 219, 226, 223, 220, 228, 225, 219, 228, 225, 222, 230, 227, 224, 232, 229, 226, 233, 230, 227, 234, 231, 228, 235, 232, 229, 236, 233, 229, 236, 233, 231, 236, 234, + 206, 220, 225, 205, 219, 225, 204, 217, 223, 202, 217, 223, 200, 216, 222, 199, 215, 221, 199, 215, 221, 197, 214, 220, 197, 213, 219, 196, 212, 218, 196, 212, 218, 193, 212, 218, 193, 211, 218, 192, 210, 217, 190, 209, 216, 191, 208, 215, 190, 209, 216, 190, 208, 215, 190, 208, 215, 188, 207, 213, 189, 207, 214, + 189, 207, 214, 189, 207, 214, 188, 206, 213, 188, 206, 213, 186, 205, 212, 185, 204, 211, 183, 202, 209, 182, 201, 208, 181, 200, 207, 179, 198, 205, 174, 194, 202, 172, 193, 201, 166, 189, 199, 163, 185, 197, 158, 183, 193, 154, 180, 190, 150, 176, 188, 147, 174, 186, 142, 171, 184, 143, 171, 181, 141, 170, 181, + 142, 169, 181, 143, 169, 182, 140, 167, 181, 137, 164, 178, 134, 161, 176, 130, 157, 172, 130, 155, 171, 127, 153, 169, 125, 152, 166, 126, 152, 167, 120, 147, 161, 109, 139, 154, 103, 134, 149, 101, 132, 148, 99, 131, 147, 98, 131, 147, 99, 131, 147, 104, 134, 151, 108, 136, 154, 106, 134, 154, 101, 130, 150, + 99, 129, 148, 95, 125, 144, 93, 123, 142, 94, 123, 139, 94, 122, 139, 90, 119, 136, 96, 123, 139, 96, 122, 138, 88, 113, 129, 82, 108, 124, 80, 106, 120, 77, 103, 117, 73, 99, 111, 75, 99, 111, 73, 98, 110, 77, 101, 113, 82, 106, 118, 94, 118, 128, 104, 126, 136, 97, 120, 131, 92, 117, 127, + 85, 110, 120, 105, 128, 135, 121, 143, 149, 101, 126, 132, 92, 118, 123, 111, 134, 139, 86, 112, 117, 71, 100, 106, 87, 113, 119, 75, 103, 108, 71, 98, 103, 77, 100, 106, 76, 99, 105, 81, 104, 110, 93, 117, 123, 82, 110, 114, 76, 104, 109, 81, 108, 113, 106, 129, 134, 114, 135, 142, 115, 136, 144, + 111, 133, 141, 103, 128, 135, 102, 129, 135, 109, 135, 142, 114, 139, 146, 121, 144, 151, 116, 140, 147, 114, 139, 145, 112, 135, 141, 116, 138, 143, 114, 135, 140, 114, 135, 140, 105, 125, 131, 106, 128, 129, 108, 129, 131, 105, 126, 130, 104, 126, 127, 105, 125, 128, 99, 119, 124, 97, 120, 125, 90, 114, 119, + 96, 120, 127, 91, 117, 123, 98, 124, 131, 101, 128, 138, 96, 122, 131, 95, 123, 129, 110, 134, 142, 107, 132, 140, 113, 136, 143, 119, 140, 146, 113, 135, 138, 109, 132, 135, 119, 139, 141, 108, 124, 127, 102, 117, 120, 108, 122, 125, 107, 122, 125, 89, 106, 109, 104, 120, 123, 84, 101, 104, 76, 93, 96, + 86, 101, 103, 77, 90, 95, 84, 98, 103, 74, 89, 93, 74, 91, 96, 67, 85, 87, 85, 103, 105, 125, 138, 139, 87, 105, 107, 132, 144, 146, 128, 139, 141, 85, 101, 103, 94, 110, 112, 100, 114, 116, 94, 109, 111, 115, 127, 129, 193, 199, 198, 123, 134, 132, 83, 97, 95, 101, 113, 112, 230, 233, 232, + 75, 87, 87, 96, 109, 110, 90, 105, 106, 152, 160, 161, 88, 105, 108, 84, 102, 104, 96, 113, 115, 97, 113, 113, 130, 143, 142, 88, 104, 101, 83, 99, 97, 96, 113, 111, 98, 114, 113, 84, 99, 102, 87, 102, 103, 119, 130, 129, 151, 157, 159, 68, 87, 87, 81, 99, 100, 70, 89, 89, 75, 93, 95, + 82, 99, 100, 84, 102, 103, 82, 101, 102, 78, 98, 96, 87, 104, 101, 90, 107, 104, 88, 105, 102, 89, 106, 103, 93, 110, 107, 85, 100, 102, 77, 92, 95, 147, 156, 159, 154, 164, 165, 93, 109, 112, 103, 119, 122, 102, 115, 117, 106, 119, 121, 120, 132, 135, 182, 189, 189, 118, 131, 134, 121, 135, 137, + 129, 141, 143, 130, 144, 144, 136, 149, 149, 134, 148, 147, 140, 154, 153, 147, 161, 160, 133, 147, 149, 114, 132, 135, 165, 178, 180, 129, 147, 148, 134, 151, 150, 133, 151, 148, 142, 157, 155, 150, 165, 163, 138, 155, 154, 140, 156, 157, 142, 157, 156, 144, 159, 157, 147, 162, 160, 162, 175, 173, 147, 164, 162, + 152, 166, 165, 147, 162, 161, 168, 180, 179, 156, 170, 169, 169, 182, 180, 164, 177, 176, 182, 193, 192, 187, 196, 195, 168, 182, 180, 165, 179, 177, 164, 177, 175, 172, 185, 184, 189, 198, 197, 185, 196, 194, 180, 191, 191, 191, 202, 201, 182, 194, 194, 178, 192, 190, 177, 191, 189, 193, 204, 202, 190, 201, 199, + 185, 197, 195, 187, 199, 197, 199, 208, 206, 188, 201, 197, 195, 205, 202, 196, 207, 204, 187, 200, 196, 189, 200, 197, 200, 209, 206, 200, 209, 205, 205, 214, 211, 212, 220, 217, 216, 223, 220, 212, 220, 218, 216, 223, 219, 220, 226, 223, 217, 224, 221, 213, 221, 218, 209, 218, 215, 206, 216, 213, 204, 215, 213, + 205, 216, 214, 206, 217, 214, 208, 219, 216, 211, 220, 217, 213, 221, 218, 216, 224, 221, 217, 225, 222, 218, 225, 222, 221, 228, 225, 222, 229, 226, 221, 228, 225, 221, 228, 225, 221, 229, 226, 221, 230, 227, 223, 231, 228, 225, 232, 229, 227, 234, 231, 227, 234, 231, 229, 236, 233, 231, 237, 234, 232, 237, 233, + 205, 219, 225, 204, 219, 223, 202, 217, 223, 199, 215, 221, 198, 214, 221, 196, 215, 220, 196, 214, 219, 196, 214, 220, 196, 213, 219, 194, 213, 218, 194, 213, 218, 192, 211, 217, 192, 211, 216, 192, 211, 215, 191, 209, 216, 190, 208, 214, 190, 208, 215, 190, 208, 215, 189, 208, 214, 190, 209, 214, 189, 208, 213, + 189, 208, 213, 189, 208, 214, 188, 207, 213, 188, 206, 212, 187, 205, 212, 184, 203, 210, 183, 202, 209, 181, 200, 207, 179, 198, 205, 175, 196, 202, 172, 193, 201, 167, 188, 198, 164, 186, 197, 161, 184, 194, 155, 180, 190, 153, 178, 189, 148, 174, 186, 145, 172, 184, 143, 170, 183, 142, 170, 181, 144, 171, 183, + 146, 172, 184, 146, 172, 184, 142, 168, 182, 138, 166, 177, 132, 161, 175, 129, 158, 172, 124, 153, 168, 125, 153, 166, 127, 154, 168, 120, 147, 162, 110, 139, 154, 103, 133, 150, 100, 132, 149, 99, 130, 149, 97, 129, 148, 100, 132, 150, 106, 135, 153, 107, 136, 154, 107, 136, 156, 104, 134, 153, 101, 131, 150, + 95, 127, 146, 96, 126, 145, 97, 127, 145, 97, 125, 142, 96, 124, 141, 99, 128, 144, 100, 128, 144, 88, 116, 131, 85, 111, 127, 81, 107, 123, 80, 106, 120, 75, 101, 115, 75, 101, 113, 74, 100, 112, 77, 101, 113, 82, 106, 118, 92, 116, 128, 104, 125, 136, 100, 122, 133, 91, 117, 125, 87, 113, 120, + 113, 134, 141, 117, 138, 145, 100, 124, 130, 91, 117, 123, 110, 134, 140, 84, 110, 116, 72, 98, 105, 76, 102, 108, 73, 101, 107, 73, 100, 106, 74, 100, 108, 76, 99, 106, 80, 103, 109, 93, 114, 121, 86, 111, 117, 76, 105, 110, 77, 106, 111, 105, 129, 133, 112, 135, 139, 110, 133, 138, 107, 131, 138, + 104, 129, 135, 93, 120, 126, 96, 123, 130, 111, 135, 142, 113, 137, 145, 112, 136, 143, 111, 137, 143, 109, 134, 140, 115, 139, 145, 109, 132, 138, 113, 133, 138, 106, 126, 131, 105, 126, 128, 108, 128, 130, 103, 124, 126, 105, 127, 131, 103, 124, 126, 105, 126, 127, 99, 120, 122, 100, 120, 125, 92, 114, 119, + 96, 119, 124, 94, 117, 123, 100, 122, 129, 94, 120, 127, 92, 118, 123, 101, 126, 132, 103, 130, 136, 111, 135, 143, 115, 138, 146, 110, 133, 140, 113, 134, 139, 112, 134, 138, 122, 141, 144, 112, 129, 132, 106, 120, 124, 107, 121, 124, 109, 123, 127, 105, 121, 124, 105, 121, 125, 100, 116, 118, 93, 108, 111, + 94, 108, 110, 83, 99, 101, 87, 103, 107, 84, 102, 107, 76, 94, 98, 82, 100, 102, 78, 97, 98, 126, 139, 140, 84, 101, 103, 79, 96, 100, 121, 133, 135, 153, 163, 164, 94, 111, 112, 95, 110, 113, 95, 110, 112, 88, 103, 106, 138, 149, 148, 162, 170, 169, 132, 142, 138, 87, 101, 99, 181, 186, 185, + 165, 172, 171, 76, 87, 89, 100, 110, 113, 138, 147, 150, 95, 109, 113, 96, 113, 116, 95, 113, 115, 83, 101, 102, 128, 139, 140, 95, 109, 108, 86, 102, 101, 89, 105, 104, 96, 112, 111, 83, 100, 101, 95, 110, 111, 86, 101, 100, 94, 105, 105, 170, 177, 178, 69, 83, 82, 77, 92, 91, 81, 95, 95, + 87, 102, 104, 83, 99, 100, 86, 102, 102, 82, 99, 99, 87, 104, 101, 88, 104, 102, 90, 107, 105, 91, 109, 108, 93, 110, 109, 90, 107, 107, 87, 105, 104, 89, 106, 107, 102, 117, 116, 179, 185, 185, 111, 122, 124, 103, 116, 118, 104, 116, 118, 107, 120, 122, 105, 118, 120, 176, 183, 187, 161, 168, 170, + 134, 143, 144, 133, 145, 144, 144, 155, 155, 143, 156, 156, 144, 157, 156, 149, 162, 161, 135, 150, 149, 120, 138, 139, 174, 182, 183, 129, 145, 146, 130, 147, 144, 141, 156, 154, 143, 157, 154, 160, 173, 171, 145, 160, 158, 145, 160, 159, 144, 159, 159, 143, 158, 156, 153, 167, 165, 157, 171, 169, 147, 163, 161, + 150, 165, 164, 143, 159, 158, 165, 176, 175, 160, 174, 173, 162, 176, 175, 171, 183, 182, 170, 182, 180, 179, 190, 188, 189, 199, 197, 164, 177, 177, 163, 177, 178, 171, 183, 183, 171, 184, 183, 190, 200, 198, 183, 193, 193, 186, 196, 196, 186, 197, 197, 173, 187, 187, 186, 197, 195, 183, 196, 194, 193, 204, 202, + 184, 196, 194, 185, 196, 194, 191, 201, 198, 195, 205, 202, 190, 201, 198, 203, 211, 208, 189, 201, 197, 186, 199, 194, 201, 209, 206, 206, 213, 209, 204, 213, 210, 208, 216, 213, 216, 223, 220, 215, 222, 219, 212, 220, 217, 221, 227, 225, 215, 222, 219, 212, 221, 218, 212, 220, 218, 207, 217, 214, 203, 215, 212, + 205, 216, 213, 206, 217, 214, 207, 217, 214, 211, 220, 217, 214, 222, 219, 216, 224, 221, 216, 223, 220, 219, 226, 223, 220, 227, 224, 222, 229, 226, 222, 229, 226, 219, 226, 223, 221, 229, 226, 221, 229, 226, 225, 232, 229, 225, 232, 229, 227, 234, 231, 227, 234, 231, 229, 236, 233, 230, 237, 234, 232, 238, 234, + 202, 218, 222, 200, 216, 223, 199, 215, 221, 197, 214, 220, 196, 214, 220, 196, 214, 219, 195, 214, 219, 195, 213, 218, 194, 213, 218, 194, 213, 218, 192, 211, 217, 191, 210, 215, 192, 211, 216, 191, 210, 215, 190, 209, 215, 190, 208, 214, 190, 209, 215, 190, 208, 214, 190, 208, 215, 190, 208, 215, 190, 209, 214, + 189, 208, 213, 189, 208, 214, 188, 206, 212, 188, 207, 212, 186, 204, 211, 183, 202, 209, 182, 201, 208, 179, 198, 205, 175, 196, 203, 171, 192, 200, 169, 190, 199, 164, 187, 196, 161, 184, 194, 159, 183, 194, 155, 180, 190, 150, 176, 187, 146, 173, 185, 144, 171, 185, 143, 171, 183, 146, 173, 185, 147, 173, 185, + 147, 172, 184, 146, 171, 183, 141, 168, 180, 136, 164, 178, 130, 160, 174, 125, 155, 169, 123, 152, 167, 125, 153, 167, 119, 148, 163, 111, 142, 157, 102, 133, 150, 101, 132, 149, 97, 129, 149, 100, 131, 150, 101, 133, 152, 107, 137, 155, 110, 137, 157, 112, 139, 158, 109, 138, 158, 103, 133, 152, 96, 127, 148, + 96, 126, 147, 96, 127, 146, 99, 128, 147, 98, 126, 143, 103, 131, 148, 102, 129, 146, 90, 118, 135, 84, 113, 129, 85, 111, 127, 83, 110, 125, 81, 107, 121, 75, 101, 114, 75, 101, 113, 76, 102, 114, 81, 105, 117, 90, 113, 125, 105, 127, 138, 103, 125, 136, 91, 116, 124, 87, 112, 120, 119, 138, 145, + 118, 137, 143, 97, 121, 127, 94, 118, 125, 108, 132, 139, 84, 109, 118, 74, 100, 109, 76, 101, 110, 76, 101, 112, 75, 100, 110, 75, 101, 110, 76, 102, 109, 78, 102, 109, 85, 109, 115, 92, 114, 120, 79, 105, 111, 80, 107, 115, 104, 128, 135, 111, 133, 139, 108, 131, 136, 111, 133, 138, 99, 126, 130, + 97, 124, 130, 90, 117, 123, 98, 123, 131, 104, 130, 137, 107, 133, 140, 109, 134, 142, 106, 133, 139, 111, 135, 141, 114, 137, 143, 113, 136, 142, 109, 129, 134, 110, 129, 132, 109, 128, 131, 105, 125, 127, 108, 127, 130, 106, 125, 128, 109, 128, 131, 102, 123, 125, 100, 121, 123, 100, 121, 124, 102, 121, 128, + 96, 117, 124, 99, 119, 125, 94, 114, 119, 95, 117, 121, 102, 125, 130, 102, 126, 132, 108, 132, 138, 116, 138, 145, 107, 130, 138, 111, 132, 140, 114, 135, 142, 115, 136, 141, 112, 133, 137, 118, 135, 140, 105, 123, 127, 114, 130, 134, 107, 123, 126, 130, 144, 147, 99, 115, 118, 110, 124, 127, 97, 111, 114, + 95, 109, 111, 93, 108, 110, 89, 104, 108, 96, 114, 117, 89, 108, 111, 80, 100, 102, 90, 109, 111, 120, 135, 136, 102, 117, 120, 98, 112, 114, 126, 136, 138, 168, 176, 177, 79, 97, 98, 94, 109, 111, 93, 108, 110, 101, 116, 116, 129, 138, 137, 141, 153, 145, 155, 165, 161, 85, 100, 96, 100, 112, 112, + 158, 163, 163, 150, 155, 158, 91, 101, 105, 102, 114, 119, 158, 166, 167, 78, 97, 99, 98, 113, 115, 98, 113, 116, 91, 106, 107, 137, 147, 147, 78, 95, 94, 89, 105, 104, 87, 103, 103, 73, 92, 93, 81, 98, 100, 80, 98, 99, 82, 98, 99, 78, 89, 89, 178, 185, 184, 71, 82, 81, 81, 95, 94, + 88, 101, 103, 86, 101, 103, 82, 99, 99, 86, 103, 102, 88, 104, 102, 87, 103, 102, 96, 113, 111, 89, 107, 105, 89, 107, 106, 89, 107, 106, 89, 107, 106, 97, 113, 112, 99, 114, 113, 99, 112, 112, 151, 159, 159, 156, 163, 164, 97, 110, 111, 106, 118, 120, 112, 125, 127, 125, 136, 138, 152, 159, 162, + 187, 193, 194, 139, 147, 147, 140, 151, 151, 155, 165, 165, 152, 164, 163, 149, 163, 160, 134, 148, 146, 131, 146, 147, 150, 161, 162, 167, 179, 179, 131, 146, 144, 141, 155, 153, 156, 169, 165, 157, 170, 168, 156, 170, 167, 158, 170, 167, 142, 156, 154, 146, 161, 159, 148, 163, 161, 158, 171, 170, 140, 158, 157, + 147, 162, 161, 145, 160, 161, 169, 179, 179, 165, 176, 176, 156, 171, 170, 176, 187, 186, 162, 176, 174, 167, 181, 178, 174, 187, 185, 198, 205, 205, 161, 175, 175, 170, 181, 181, 169, 181, 180, 177, 188, 189, 189, 198, 198, 178, 190, 190, 183, 194, 194, 179, 191, 191, 186, 197, 195, 180, 192, 190, 195, 203, 202, + 191, 200, 199, 174, 188, 185, 190, 200, 197, 190, 200, 197, 186, 198, 195, 201, 209, 206, 202, 210, 208, 187, 198, 194, 197, 207, 203, 210, 217, 213, 204, 213, 210, 208, 217, 214, 213, 221, 218, 217, 224, 221, 213, 220, 217, 218, 225, 222, 216, 224, 221, 210, 219, 216, 210, 220, 216, 207, 217, 214, 203, 214, 211, + 202, 214, 211, 203, 215, 212, 207, 218, 215, 213, 222, 220, 214, 222, 219, 216, 224, 221, 218, 225, 222, 218, 225, 222, 220, 227, 224, 221, 228, 225, 221, 228, 225, 221, 228, 225, 221, 228, 225, 224, 230, 226, 223, 230, 227, 226, 233, 230, 227, 234, 231, 228, 235, 232, 229, 235, 233, 230, 235, 233, 232, 237, 234, + 203, 219, 223, 200, 216, 222, 199, 215, 221, 198, 214, 220, 197, 214, 219, 197, 214, 220, 196, 213, 218, 194, 213, 218, 194, 212, 217, 192, 210, 217, 192, 211, 216, 191, 210, 216, 190, 208, 215, 190, 208, 215, 189, 208, 215, 189, 207, 214, 190, 208, 215, 189, 207, 214, 190, 208, 215, 189, 207, 214, 188, 207, 212, + 189, 208, 213, 188, 206, 213, 187, 205, 211, 186, 205, 210, 184, 203, 210, 182, 201, 208, 180, 199, 206, 176, 197, 204, 172, 193, 201, 170, 192, 200, 166, 188, 196, 164, 186, 196, 158, 184, 194, 155, 180, 190, 153, 177, 188, 149, 174, 187, 146, 174, 185, 146, 174, 186, 148, 174, 187, 150, 175, 187, 149, 174, 186, + 150, 174, 186, 144, 170, 182, 140, 167, 179, 133, 162, 176, 127, 158, 172, 126, 155, 170, 122, 151, 166, 118, 148, 163, 112, 143, 159, 103, 136, 152, 100, 133, 149, 99, 131, 150, 99, 131, 150, 101, 132, 151, 103, 134, 153, 110, 139, 158, 110, 138, 158, 109, 137, 157, 106, 135, 155, 99, 131, 151, 96, 127, 148, + 97, 127, 148, 98, 128, 147, 99, 127, 145, 105, 133, 150, 103, 130, 147, 90, 118, 135, 86, 114, 132, 87, 115, 131, 86, 112, 128, 85, 111, 126, 79, 106, 120, 77, 103, 116, 76, 102, 114, 80, 105, 117, 88, 112, 124, 101, 124, 135, 104, 126, 137, 93, 116, 127, 89, 114, 122, 121, 138, 145, 115, 134, 141, + 94, 118, 124, 97, 121, 128, 107, 129, 137, 81, 106, 116, 76, 102, 112, 76, 102, 113, 78, 103, 113, 72, 98, 109, 75, 100, 110, 75, 100, 110, 75, 101, 108, 79, 102, 109, 89, 112, 118, 81, 106, 112, 78, 105, 111, 99, 124, 130, 98, 123, 130, 95, 120, 128, 114, 136, 141, 96, 122, 126, 99, 126, 129, + 90, 116, 122, 95, 121, 127, 101, 125, 133, 100, 125, 133, 100, 125, 132, 102, 129, 136, 108, 134, 141, 115, 139, 148, 113, 138, 144, 108, 130, 138, 108, 127, 132, 112, 131, 134, 109, 129, 130, 110, 130, 131, 110, 129, 131, 110, 129, 132, 107, 126, 129, 106, 126, 128, 104, 125, 127, 101, 121, 124, 101, 121, 127, + 103, 122, 130, 96, 116, 123, 91, 112, 118, 98, 118, 125, 95, 118, 122, 107, 130, 135, 103, 126, 132, 104, 125, 133, 104, 125, 133, 112, 134, 142, 111, 133, 140, 111, 133, 139, 105, 126, 133, 104, 124, 129, 115, 134, 138, 112, 131, 137, 125, 140, 144, 108, 125, 128, 110, 126, 129, 109, 124, 127, 106, 119, 122, + 103, 116, 118, 98, 115, 117, 99, 116, 118, 97, 114, 117, 98, 116, 119, 95, 114, 116, 100, 120, 122, 102, 121, 124, 122, 136, 137, 98, 110, 114, 84, 99, 102, 141, 152, 153, 138, 150, 149, 90, 106, 108, 93, 109, 111, 101, 116, 117, 87, 102, 101, 134, 145, 140, 171, 178, 174, 123, 135, 129, 117, 128, 128, + 144, 152, 152, 128, 133, 135, 111, 119, 121, 97, 108, 112, 103, 116, 118, 135, 145, 146, 100, 114, 116, 98, 113, 115, 87, 102, 104, 81, 98, 99, 133, 145, 144, 79, 96, 95, 89, 106, 107, 76, 95, 96, 74, 95, 96, 80, 100, 101, 75, 91, 95, 78, 95, 96, 66, 80, 80, 190, 194, 194, 88, 97, 96, + 90, 103, 103, 84, 100, 102, 83, 100, 100, 86, 104, 103, 90, 108, 107, 92, 110, 109, 95, 113, 113, 94, 113, 113, 89, 107, 108, 87, 104, 105, 91, 108, 109, 98, 114, 113, 102, 116, 115, 108, 121, 121, 106, 119, 119, 109, 121, 123, 184, 190, 190, 102, 116, 117, 116, 128, 130, 136, 145, 147, 135, 144, 147, + 141, 149, 151, 195, 202, 200, 145, 153, 153, 156, 166, 165, 155, 165, 164, 152, 164, 160, 143, 158, 154, 134, 149, 147, 155, 165, 164, 176, 184, 183, 135, 149, 145, 141, 155, 151, 156, 167, 164, 162, 172, 169, 161, 173, 170, 157, 170, 166, 148, 162, 159, 145, 160, 158, 153, 167, 166, 154, 168, 167, 136, 153, 155, + 151, 164, 166, 144, 158, 160, 166, 177, 177, 158, 171, 171, 149, 166, 165, 169, 182, 181, 160, 174, 172, 162, 176, 174, 171, 183, 181, 178, 188, 188, 197, 204, 205, 159, 172, 172, 176, 186, 185, 170, 181, 182, 169, 182, 182, 187, 197, 195, 178, 190, 190, 182, 194, 192, 180, 192, 190, 188, 198, 195, 191, 200, 198, + 185, 195, 194, 179, 192, 188, 179, 192, 188, 186, 197, 194, 194, 204, 201, 190, 201, 198, 199, 209, 206, 198, 208, 205, 193, 204, 199, 208, 215, 214, 209, 216, 212, 206, 215, 211, 212, 219, 216, 216, 223, 220, 216, 223, 220, 215, 222, 219, 219, 226, 223, 208, 219, 216, 207, 217, 214, 203, 214, 211, 205, 215, 212, + 202, 215, 212, 203, 215, 212, 207, 218, 215, 210, 219, 216, 216, 224, 221, 217, 224, 221, 219, 226, 223, 217, 224, 221, 219, 227, 224, 222, 229, 226, 220, 227, 224, 221, 228, 225, 221, 228, 225, 223, 230, 227, 224, 231, 226, 226, 233, 230, 227, 234, 231, 228, 235, 232, 228, 235, 232, 229, 236, 233, 231, 236, 235, + 203, 218, 223, 202, 216, 222, 200, 216, 222, 198, 214, 220, 198, 214, 220, 197, 213, 219, 196, 212, 218, 195, 212, 218, 193, 212, 217, 192, 210, 217, 191, 210, 216, 191, 209, 216, 190, 208, 215, 190, 208, 215, 189, 207, 214, 189, 207, 214, 189, 207, 214, 189, 207, 214, 188, 206, 213, 186, 204, 211, 187, 205, 212, + 188, 206, 213, 188, 206, 212, 186, 205, 211, 186, 205, 210, 183, 202, 208, 180, 199, 206, 178, 198, 204, 174, 195, 202, 171, 192, 200, 167, 190, 198, 164, 186, 197, 160, 183, 194, 157, 182, 192, 152, 178, 189, 150, 176, 188, 147, 175, 186, 147, 174, 187, 149, 176, 188, 152, 176, 188, 154, 177, 189, 152, 176, 188, + 148, 173, 185, 143, 169, 181, 136, 164, 178, 133, 162, 176, 129, 159, 173, 128, 157, 172, 122, 152, 167, 116, 146, 162, 109, 142, 158, 105, 139, 155, 103, 136, 152, 101, 134, 153, 104, 135, 154, 106, 136, 155, 110, 139, 158, 113, 140, 160, 113, 139, 159, 105, 134, 155, 102, 132, 153, 96, 127, 148, 97, 128, 148, + 99, 130, 149, 101, 130, 150, 106, 135, 152, 110, 137, 153, 97, 125, 142, 88, 116, 133, 87, 116, 132, 87, 113, 130, 85, 111, 127, 83, 109, 125, 82, 108, 122, 79, 105, 117, 82, 106, 118, 86, 110, 121, 101, 123, 134, 104, 125, 137, 94, 117, 129, 91, 116, 126, 123, 141, 149, 115, 133, 140, 90, 114, 122, + 103, 125, 132, 106, 127, 135, 83, 108, 117, 77, 101, 112, 76, 102, 113, 74, 101, 112, 74, 101, 111, 75, 101, 111, 74, 99, 110, 76, 100, 111, 75, 100, 107, 86, 110, 116, 84, 108, 114, 76, 102, 108, 82, 107, 113, 89, 115, 121, 98, 122, 129, 108, 131, 137, 98, 122, 127, 100, 125, 129, 93, 119, 123, + 93, 119, 123, 100, 125, 131, 96, 120, 128, 101, 124, 132, 100, 125, 132, 102, 128, 135, 112, 137, 143, 112, 136, 147, 107, 133, 141, 105, 126, 134, 106, 128, 134, 105, 125, 131, 107, 128, 130, 107, 128, 129, 109, 129, 131, 110, 129, 132, 109, 128, 131, 107, 126, 129, 104, 125, 127, 105, 124, 127, 108, 126, 133, + 103, 122, 130, 100, 120, 127, 99, 119, 124, 98, 118, 124, 103, 124, 129, 102, 124, 129, 93, 116, 122, 106, 128, 134, 103, 124, 132, 114, 134, 142, 107, 129, 137, 98, 120, 129, 105, 128, 135, 104, 123, 129, 108, 127, 132, 122, 140, 143, 107, 125, 129, 109, 126, 130, 116, 133, 136, 108, 124, 127, 105, 122, 125, + 103, 120, 123, 102, 120, 123, 106, 123, 126, 102, 120, 122, 101, 118, 121, 100, 118, 121, 100, 118, 122, 93, 113, 115, 131, 145, 146, 96, 112, 113, 88, 105, 107, 133, 145, 146, 141, 152, 153, 79, 98, 99, 98, 113, 115, 97, 112, 114, 97, 112, 111, 142, 152, 151, 85, 103, 97, 182, 190, 189, 104, 117, 117, + 84, 96, 97, 164, 168, 170, 155, 161, 163, 85, 98, 101, 118, 128, 128, 107, 120, 120, 114, 126, 127, 97, 111, 113, 87, 103, 104, 86, 102, 104, 104, 118, 118, 96, 112, 112, 87, 103, 104, 72, 92, 94, 60, 82, 84, 71, 90, 94, 67, 86, 89, 72, 91, 92, 75, 91, 92, 77, 91, 91, 182, 187, 188, + 90, 104, 103, 87, 102, 103, 83, 100, 100, 90, 108, 108, 90, 109, 107, 96, 114, 114, 92, 109, 111, 92, 108, 111, 92, 108, 110, 91, 106, 108, 99, 114, 116, 102, 117, 119, 105, 117, 120, 109, 123, 124, 103, 118, 120, 102, 116, 118, 109, 119, 119, 166, 173, 175, 149, 157, 157, 124, 134, 135, 141, 150, 151, + 149, 157, 156, 135, 148, 146, 176, 183, 182, 181, 186, 186, 159, 168, 166, 157, 168, 165, 144, 158, 154, 135, 150, 148, 148, 160, 160, 159, 171, 169, 163, 175, 173, 146, 158, 156, 162, 173, 170, 160, 171, 168, 157, 170, 166, 157, 170, 167, 146, 161, 157, 148, 162, 160, 148, 164, 163, 150, 164, 165, 136, 153, 155, + 141, 157, 158, 141, 156, 157, 164, 175, 175, 162, 174, 173, 154, 169, 167, 156, 171, 171, 169, 182, 180, 151, 167, 165, 174, 185, 185, 169, 181, 181, 180, 190, 190, 191, 199, 197, 170, 181, 180, 169, 181, 179, 173, 185, 183, 168, 181, 179, 189, 197, 196, 177, 189, 187, 186, 196, 194, 191, 198, 198, 182, 192, 190, + 191, 200, 198, 185, 196, 193, 176, 189, 185, 178, 192, 188, 190, 201, 199, 188, 200, 197, 201, 210, 207, 200, 209, 206, 196, 205, 202, 202, 211, 204, 213, 220, 216, 210, 216, 212, 210, 217, 213, 217, 224, 221, 216, 223, 220, 216, 222, 219, 216, 224, 219, 206, 217, 214, 208, 218, 215, 203, 214, 212, 204, 215, 212, + 202, 214, 210, 201, 212, 209, 206, 216, 213, 212, 222, 219, 215, 223, 219, 217, 225, 222, 220, 227, 224, 217, 225, 222, 219, 227, 224, 221, 228, 224, 222, 229, 226, 222, 229, 226, 223, 230, 227, 223, 230, 227, 225, 232, 229, 225, 232, 229, 226, 233, 230, 227, 234, 231, 227, 234, 231, 229, 236, 233, 230, 237, 234, + 204, 218, 223, 202, 216, 222, 201, 216, 222, 200, 215, 221, 197, 213, 219, 197, 213, 219, 195, 213, 219, 193, 212, 217, 192, 211, 216, 191, 209, 216, 191, 209, 216, 188, 207, 214, 190, 208, 215, 189, 207, 214, 189, 207, 214, 188, 206, 213, 188, 206, 213, 186, 205, 212, 186, 204, 211, 186, 204, 211, 186, 204, 211, + 187, 205, 212, 186, 204, 211, 187, 205, 212, 184, 202, 209, 180, 200, 207, 178, 198, 205, 176, 197, 203, 173, 195, 202, 168, 192, 199, 165, 188, 196, 164, 185, 197, 158, 182, 192, 153, 179, 189, 147, 175, 186, 147, 175, 186, 148, 175, 187, 150, 176, 188, 152, 177, 189, 155, 178, 190, 154, 176, 188, 150, 174, 186, + 146, 171, 184, 139, 167, 180, 135, 163, 177, 134, 161, 175, 132, 160, 174, 128, 157, 171, 121, 150, 166, 115, 146, 163, 111, 144, 160, 108, 140, 156, 105, 138, 154, 109, 140, 157, 109, 139, 158, 111, 140, 159, 114, 141, 161, 113, 140, 160, 110, 137, 157, 104, 134, 155, 101, 131, 152, 96, 127, 148, 99, 130, 150, + 101, 131, 150, 106, 134, 154, 113, 140, 157, 98, 126, 143, 91, 120, 137, 85, 114, 131, 88, 114, 130, 85, 111, 128, 87, 112, 128, 83, 109, 124, 84, 110, 124, 84, 110, 122, 87, 111, 123, 97, 119, 131, 107, 127, 138, 98, 119, 130, 98, 122, 133, 124, 142, 153, 111, 132, 141, 80, 108, 116, 104, 127, 134, + 109, 131, 139, 80, 106, 116, 76, 101, 111, 78, 103, 114, 77, 103, 114, 76, 103, 113, 74, 101, 110, 75, 101, 111, 75, 101, 111, 75, 101, 109, 78, 104, 111, 87, 111, 117, 76, 101, 107, 76, 102, 108, 77, 102, 108, 97, 120, 126, 99, 123, 129, 103, 126, 132, 95, 119, 125, 97, 122, 126, 93, 119, 123, + 96, 121, 126, 96, 121, 127, 101, 124, 130, 97, 120, 128, 100, 122, 130, 104, 130, 137, 106, 132, 139, 108, 133, 141, 101, 126, 136, 102, 124, 132, 104, 125, 131, 104, 125, 130, 106, 127, 129, 110, 130, 132, 109, 128, 131, 114, 132, 135, 109, 128, 131, 110, 129, 132, 109, 129, 131, 109, 128, 131, 103, 122, 128, + 101, 121, 126, 100, 120, 126, 100, 120, 124, 96, 116, 121, 95, 115, 120, 94, 115, 119, 102, 123, 128, 103, 123, 129, 105, 127, 133, 101, 123, 129, 95, 118, 125, 101, 124, 131, 104, 127, 134, 96, 119, 125, 120, 139, 144, 102, 123, 126, 106, 125, 128, 106, 125, 128, 107, 124, 127, 106, 123, 126, 100, 118, 121, + 99, 117, 120, 106, 123, 126, 107, 124, 127, 103, 120, 123, 102, 120, 123, 101, 119, 122, 97, 116, 119, 93, 114, 116, 140, 153, 154, 93, 114, 114, 89, 108, 108, 94, 112, 112, 185, 190, 191, 94, 112, 113, 92, 108, 110, 101, 116, 118, 92, 107, 108, 89, 106, 106, 145, 156, 155, 153, 163, 161, 114, 129, 131, + 110, 122, 124, 139, 148, 149, 93, 105, 107, 175, 181, 181, 104, 116, 115, 90, 103, 102, 142, 151, 151, 81, 96, 96, 83, 98, 100, 84, 100, 102, 77, 94, 96, 134, 145, 146, 72, 91, 92, 64, 85, 85, 69, 89, 91, 64, 84, 88, 71, 91, 93, 71, 90, 92, 82, 98, 97, 90, 104, 103, 84, 96, 96, + 174, 181, 182, 90, 98, 97, 90, 104, 104, 90, 107, 108, 93, 110, 109, 96, 112, 112, 92, 110, 113, 92, 109, 112, 92, 107, 110, 91, 106, 108, 96, 111, 112, 106, 120, 123, 106, 121, 123, 112, 126, 128, 105, 120, 122, 101, 116, 117, 112, 125, 127, 100, 113, 115, 135, 141, 140, 185, 190, 190, 137, 146, 145, + 144, 153, 152, 135, 146, 144, 150, 158, 157, 163, 170, 171, 199, 205, 203, 151, 158, 154, 142, 154, 152, 147, 160, 158, 149, 161, 161, 146, 158, 159, 184, 191, 192, 147, 160, 158, 163, 174, 173, 166, 176, 175, 163, 174, 171, 162, 174, 171, 149, 164, 160, 148, 163, 160, 155, 168, 167, 151, 165, 165, 137, 153, 155, + 148, 162, 162, 137, 153, 152, 161, 172, 171, 166, 178, 176, 147, 163, 161, 147, 164, 162, 173, 185, 183, 150, 166, 165, 164, 176, 175, 173, 183, 183, 176, 186, 186, 166, 178, 176, 193, 201, 199, 172, 184, 182, 159, 173, 171, 164, 177, 175, 176, 188, 186, 183, 193, 192, 182, 193, 190, 184, 193, 190, 184, 193, 191, + 192, 200, 197, 187, 196, 194, 172, 187, 183, 179, 192, 190, 182, 195, 193, 186, 199, 197, 192, 204, 200, 199, 208, 205, 202, 211, 208, 202, 210, 207, 209, 216, 213, 212, 219, 214, 212, 219, 215, 212, 219, 215, 218, 224, 222, 213, 221, 217, 212, 220, 216, 208, 218, 215, 203, 214, 212, 205, 216, 214, 199, 212, 210, + 203, 214, 212, 203, 214, 210, 207, 217, 214, 210, 219, 216, 213, 222, 219, 219, 226, 223, 221, 226, 224, 220, 227, 224, 219, 226, 222, 221, 228, 224, 222, 229, 225, 221, 228, 224, 223, 230, 228, 224, 231, 228, 224, 231, 228, 226, 233, 230, 225, 232, 229, 226, 233, 230, 227, 234, 231, 228, 235, 232, 229, 236, 233, + 203, 218, 221, 203, 217, 223, 201, 215, 221, 199, 214, 220, 198, 214, 220, 195, 213, 218, 195, 212, 218, 193, 212, 217, 191, 210, 216, 190, 208, 215, 191, 209, 216, 189, 207, 214, 189, 207, 214, 189, 207, 214, 187, 205, 212, 188, 206, 213, 186, 204, 211, 186, 204, 211, 186, 204, 211, 184, 203, 210, 185, 203, 210, + 188, 206, 213, 187, 204, 211, 185, 203, 210, 181, 200, 207, 179, 198, 205, 176, 197, 204, 173, 195, 201, 171, 193, 199, 169, 191, 199, 167, 188, 196, 162, 183, 195, 156, 181, 191, 151, 178, 188, 147, 175, 186, 148, 176, 187, 149, 176, 187, 151, 176, 188, 154, 177, 189, 154, 176, 188, 153, 176, 188, 147, 172, 184, + 141, 168, 180, 138, 166, 179, 137, 164, 178, 136, 162, 176, 132, 159, 173, 126, 155, 170, 122, 152, 168, 115, 145, 162, 113, 144, 160, 112, 142, 159, 110, 141, 158, 111, 141, 159, 113, 142, 160, 113, 140, 160, 114, 141, 161, 110, 138, 158, 105, 134, 155, 101, 131, 152, 98, 128, 149, 97, 127, 148, 102, 132, 151, + 106, 134, 154, 113, 139, 157, 104, 131, 150, 93, 121, 138, 88, 116, 133, 86, 114, 131, 86, 112, 128, 86, 112, 128, 84, 110, 126, 86, 112, 126, 85, 111, 125, 85, 110, 124, 92, 116, 128, 107, 127, 139, 104, 124, 135, 106, 126, 137, 123, 140, 152, 109, 131, 142, 80, 109, 118, 93, 120, 130, 107, 130, 139, + 80, 106, 117, 76, 102, 114, 80, 105, 116, 80, 105, 115, 78, 104, 114, 74, 101, 111, 73, 99, 109, 72, 98, 108, 72, 98, 106, 73, 99, 106, 85, 108, 116, 81, 106, 112, 78, 102, 109, 77, 102, 108, 89, 112, 118, 93, 117, 123, 107, 129, 135, 90, 115, 121, 101, 125, 131, 92, 117, 121, 96, 121, 125, + 97, 122, 126, 99, 123, 129, 95, 119, 125, 96, 120, 126, 101, 125, 132, 104, 129, 136, 101, 125, 133, 104, 127, 135, 97, 120, 127, 99, 121, 128, 98, 120, 126, 103, 125, 128, 105, 126, 128, 109, 130, 133, 111, 131, 134, 114, 134, 136, 112, 130, 133, 111, 130, 133, 106, 125, 128, 109, 128, 132, 107, 126, 130, + 105, 124, 128, 97, 117, 121, 96, 117, 120, 96, 115, 120, 93, 113, 116, 97, 116, 119, 97, 116, 118, 100, 118, 122, 97, 117, 122, 103, 124, 129, 96, 119, 125, 107, 128, 134, 100, 124, 130, 114, 135, 141, 115, 135, 139, 96, 117, 122, 95, 116, 118, 116, 133, 136, 97, 116, 119, 100, 119, 122, 97, 116, 120, + 104, 122, 124, 109, 125, 130, 97, 115, 120, 105, 122, 127, 103, 121, 126, 106, 123, 128, 98, 115, 121, 92, 112, 116, 131, 147, 149, 86, 108, 108, 88, 108, 107, 110, 128, 126, 119, 134, 133, 141, 152, 154, 94, 111, 113, 108, 123, 124, 92, 108, 109, 85, 104, 105, 144, 155, 155, 61, 81, 83, 193, 199, 199, + 117, 129, 130, 79, 94, 94, 173, 179, 179, 93, 103, 105, 134, 136, 139, 116, 126, 125, 82, 95, 94, 123, 135, 134, 81, 97, 97, 90, 105, 106, 79, 95, 98, 60, 79, 82, 137, 149, 150, 58, 80, 81, 56, 77, 80, 71, 90, 92, 68, 88, 90, 70, 90, 91, 82, 98, 98, 89, 105, 104, 88, 102, 102, + 73, 87, 88, 172, 178, 179, 93, 105, 104, 98, 111, 110, 101, 115, 113, 95, 111, 109, 90, 107, 106, 92, 109, 108, 89, 106, 105, 87, 104, 102, 98, 114, 112, 107, 124, 122, 114, 128, 130, 109, 125, 127, 107, 122, 124, 101, 115, 117, 107, 121, 121, 103, 118, 117, 110, 124, 123, 130, 141, 139, 200, 203, 203, + 152, 159, 158, 146, 155, 154, 152, 160, 160, 149, 158, 158, 156, 162, 163, 200, 205, 204, 147, 156, 154, 147, 160, 158, 152, 164, 164, 155, 166, 166, 182, 192, 191, 148, 158, 158, 160, 169, 170, 164, 174, 174, 169, 180, 178, 159, 172, 169, 147, 162, 158, 154, 169, 166, 150, 163, 163, 156, 169, 169, 137, 154, 154, + 144, 158, 157, 139, 154, 153, 157, 169, 167, 165, 175, 173, 140, 158, 156, 151, 167, 164, 160, 174, 172, 154, 169, 167, 148, 163, 162, 171, 183, 183, 173, 182, 183, 159, 172, 170, 166, 178, 176, 198, 205, 203, 157, 170, 168, 160, 173, 171, 170, 181, 178, 188, 197, 194, 180, 190, 187, 185, 194, 191, 183, 193, 190, + 190, 197, 197, 180, 191, 188, 179, 192, 190, 180, 193, 191, 183, 196, 194, 187, 200, 198, 190, 201, 198, 195, 205, 202, 205, 213, 210, 207, 214, 211, 210, 217, 212, 211, 218, 214, 213, 220, 217, 213, 220, 217, 216, 222, 219, 215, 221, 218, 211, 219, 216, 209, 218, 215, 199, 211, 207, 202, 213, 211, 200, 213, 211, + 200, 213, 211, 202, 214, 211, 205, 216, 213, 210, 219, 216, 214, 222, 219, 217, 225, 221, 222, 228, 226, 221, 227, 224, 220, 227, 223, 221, 228, 225, 222, 229, 225, 221, 228, 224, 223, 229, 226, 224, 231, 228, 225, 232, 229, 225, 231, 228, 225, 232, 229, 226, 233, 230, 227, 234, 231, 228, 235, 232, 229, 236, 233, + 202, 217, 220, 202, 217, 220, 202, 215, 222, 199, 214, 220, 197, 213, 219, 195, 213, 218, 192, 211, 216, 192, 211, 217, 191, 210, 216, 190, 208, 215, 189, 207, 214, 189, 207, 214, 188, 206, 213, 187, 205, 212, 187, 205, 212, 185, 203, 211, 187, 205, 212, 186, 204, 211, 185, 203, 210, 186, 204, 211, 187, 205, 212, + 186, 204, 211, 184, 202, 209, 180, 199, 206, 178, 198, 205, 176, 197, 203, 174, 196, 202, 173, 195, 201, 172, 194, 200, 169, 190, 198, 165, 186, 196, 160, 183, 193, 152, 178, 188, 151, 177, 187, 149, 175, 187, 150, 177, 188, 151, 177, 188, 152, 177, 189, 154, 178, 190, 151, 176, 188, 150, 174, 186, 141, 167, 180, + 138, 165, 177, 140, 166, 180, 139, 166, 178, 137, 163, 177, 133, 160, 174, 129, 157, 172, 124, 152, 167, 121, 150, 166, 118, 147, 164, 115, 145, 162, 116, 146, 163, 113, 143, 161, 114, 144, 163, 111, 141, 160, 110, 139, 158, 104, 134, 154, 102, 131, 152, 96, 127, 148, 97, 126, 147, 101, 130, 150, 106, 133, 153, + 113, 139, 156, 106, 132, 152, 97, 123, 143, 93, 120, 139, 85, 112, 129, 85, 113, 130, 87, 113, 129, 86, 112, 128, 84, 109, 125, 86, 112, 125, 85, 111, 125, 86, 111, 125, 103, 125, 137, 106, 125, 137, 105, 126, 137, 127, 144, 155, 112, 132, 143, 83, 110, 120, 92, 119, 128, 99, 125, 134, 81, 108, 118, + 74, 101, 113, 77, 103, 115, 79, 104, 116, 77, 103, 115, 77, 104, 113, 76, 102, 112, 75, 99, 109, 73, 98, 106, 72, 98, 105, 85, 109, 117, 84, 108, 115, 77, 101, 109, 77, 101, 108, 79, 103, 109, 97, 118, 124, 118, 138, 143, 102, 125, 131, 94, 118, 124, 100, 124, 129, 92, 117, 121, 90, 116, 120, + 97, 122, 125, 92, 119, 123, 97, 121, 127, 94, 119, 125, 107, 130, 136, 99, 122, 130, 103, 125, 134, 98, 121, 129, 95, 118, 126, 96, 118, 125, 97, 119, 125, 103, 124, 126, 105, 126, 128, 110, 130, 134, 113, 132, 136, 110, 130, 134, 113, 132, 135, 114, 131, 134, 109, 127, 130, 106, 124, 127, 105, 124, 128, + 98, 117, 120, 98, 119, 121, 98, 118, 121, 98, 117, 120, 93, 113, 115, 93, 112, 115, 96, 115, 118, 94, 113, 116, 104, 123, 127, 101, 121, 125, 96, 117, 121, 95, 117, 123, 100, 123, 128, 120, 140, 145, 101, 124, 128, 101, 122, 126, 94, 114, 116, 100, 120, 121, 111, 129, 130, 93, 112, 114, 97, 116, 119, + 106, 124, 128, 97, 116, 121, 107, 124, 130, 105, 121, 127, 98, 115, 122, 104, 120, 127, 99, 116, 122, 89, 107, 112, 132, 147, 149, 87, 108, 108, 98, 116, 116, 97, 116, 114, 94, 112, 112, 174, 182, 183, 80, 98, 100, 94, 111, 113, 91, 107, 108, 89, 106, 108, 125, 138, 139, 86, 105, 107, 131, 144, 145, + 136, 146, 146, 94, 107, 108, 131, 140, 140, 100, 111, 112, 145, 151, 153, 107, 116, 118, 96, 107, 109, 104, 116, 115, 88, 101, 102, 84, 99, 101, 81, 98, 99, 74, 92, 95, 79, 96, 98, 93, 110, 113, 62, 83, 86, 69, 88, 91, 71, 91, 93, 76, 94, 96, 84, 102, 101, 78, 96, 96, 85, 101, 102, + 86, 100, 102, 86, 98, 100, 172, 179, 179, 106, 114, 113, 102, 115, 114, 96, 109, 108, 94, 110, 107, 92, 110, 108, 96, 113, 110, 95, 112, 109, 100, 117, 114, 105, 121, 120, 114, 129, 131, 107, 122, 124, 100, 115, 117, 98, 113, 113, 94, 110, 109, 99, 115, 114, 116, 130, 129, 132, 144, 142, 145, 153, 151, + 186, 191, 190, 171, 176, 176, 145, 154, 154, 140, 150, 150, 148, 157, 156, 153, 160, 159, 190, 197, 195, 157, 167, 166, 147, 158, 158, 157, 166, 166, 163, 173, 174, 170, 181, 181, 156, 168, 168, 167, 177, 177, 161, 173, 171, 163, 175, 174, 144, 160, 158, 165, 177, 175, 138, 154, 153, 160, 172, 172, 133, 149, 148, + 139, 153, 153, 138, 153, 151, 159, 170, 170, 162, 175, 173, 150, 165, 162, 142, 158, 155, 154, 167, 165, 161, 174, 173, 135, 153, 152, 156, 170, 169, 169, 181, 180, 161, 174, 172, 167, 178, 176, 173, 183, 180, 195, 202, 200, 151, 165, 163, 163, 177, 173, 175, 186, 183, 181, 191, 188, 182, 191, 189, 176, 186, 184, + 182, 192, 190, 179, 190, 187, 179, 192, 190, 179, 192, 190, 180, 192, 191, 187, 198, 196, 188, 199, 196, 193, 203, 199, 208, 215, 212, 210, 217, 214, 211, 219, 215, 209, 216, 211, 214, 221, 218, 213, 220, 217, 215, 222, 219, 215, 222, 219, 214, 222, 219, 210, 219, 216, 203, 214, 210, 200, 213, 209, 199, 212, 208, + 200, 213, 211, 203, 216, 212, 206, 216, 213, 210, 219, 216, 214, 222, 218, 216, 224, 220, 219, 226, 221, 223, 228, 225, 222, 229, 225, 222, 229, 226, 221, 228, 224, 221, 228, 224, 222, 229, 226, 223, 230, 227, 224, 231, 228, 225, 231, 228, 226, 232, 229, 227, 234, 231, 227, 234, 231, 229, 236, 233, 229, 236, 233, + 202, 218, 221, 202, 217, 220, 198, 215, 219, 197, 214, 220, 196, 212, 218, 194, 213, 218, 193, 211, 217, 193, 211, 216, 190, 209, 214, 191, 209, 216, 190, 208, 215, 187, 205, 212, 187, 205, 212, 186, 205, 212, 185, 204, 211, 186, 204, 211, 185, 203, 210, 186, 204, 211, 185, 203, 210, 186, 204, 211, 185, 203, 210, + 184, 202, 209, 181, 200, 207, 179, 199, 206, 176, 196, 203, 175, 197, 203, 174, 196, 202, 173, 195, 201, 171, 193, 199, 169, 190, 197, 163, 186, 194, 157, 181, 190, 153, 179, 188, 151, 177, 188, 152, 177, 189, 152, 177, 189, 153, 178, 190, 152, 177, 188, 154, 178, 190, 148, 173, 185, 142, 168, 180, 139, 167, 178, + 140, 166, 179, 140, 167, 180, 139, 165, 179, 137, 163, 177, 131, 159, 173, 129, 157, 171, 124, 153, 169, 125, 154, 169, 122, 151, 167, 118, 148, 165, 117, 147, 164, 114, 145, 162, 112, 142, 161, 112, 142, 161, 107, 137, 156, 100, 130, 151, 98, 128, 149, 99, 128, 149, 97, 126, 147, 104, 131, 151, 115, 139, 158, + 110, 134, 154, 100, 125, 145, 94, 120, 140, 85, 113, 132, 84, 112, 129, 85, 113, 128, 85, 111, 127, 85, 110, 126, 85, 111, 126, 86, 112, 126, 86, 109, 124, 96, 119, 132, 110, 130, 142, 108, 128, 140, 125, 142, 154, 114, 133, 144, 87, 112, 122, 95, 120, 129, 109, 132, 140, 82, 109, 119, 76, 103, 114, + 79, 104, 117, 80, 106, 119, 81, 107, 119, 80, 106, 117, 76, 104, 114, 77, 102, 112, 72, 97, 107, 72, 98, 105, 77, 101, 108, 86, 109, 117, 79, 102, 111, 73, 97, 106, 75, 100, 107, 88, 111, 117, 108, 127, 133, 110, 131, 137, 91, 115, 120, 101, 124, 130, 96, 120, 126, 95, 118, 124, 94, 120, 123, + 98, 124, 128, 99, 125, 129, 94, 120, 126, 107, 131, 137, 105, 129, 136, 100, 124, 131, 101, 124, 132, 94, 118, 126, 96, 118, 125, 98, 119, 127, 99, 120, 126, 104, 126, 127, 105, 127, 129, 105, 125, 130, 108, 128, 133, 116, 134, 140, 113, 132, 137, 117, 132, 138, 110, 127, 130, 106, 125, 128, 108, 126, 130, + 103, 122, 125, 106, 124, 127, 97, 115, 118, 98, 117, 121, 101, 120, 123, 97, 115, 118, 95, 114, 117, 108, 125, 128, 100, 119, 121, 97, 116, 120, 94, 115, 118, 102, 124, 126, 102, 124, 127, 97, 120, 125, 105, 128, 130, 95, 116, 119, 98, 117, 120, 100, 119, 120, 105, 124, 124, 101, 120, 121, 98, 117, 121, + 101, 118, 124, 100, 119, 124, 103, 121, 126, 105, 121, 126, 101, 118, 125, 101, 117, 124, 101, 116, 122, 88, 106, 110, 117, 135, 137, 115, 133, 134, 87, 107, 108, 97, 116, 116, 87, 105, 106, 160, 169, 169, 110, 128, 130, 96, 114, 115, 89, 105, 107, 90, 108, 109, 80, 99, 102, 126, 140, 142, 70, 88, 87, + 211, 215, 215, 81, 95, 94, 71, 84, 85, 155, 161, 162, 76, 85, 88, 161, 166, 167, 88, 98, 102, 84, 96, 99, 130, 139, 140, 78, 93, 96, 72, 89, 92, 65, 83, 87, 72, 91, 93, 120, 133, 136, 65, 85, 88, 66, 86, 89, 72, 92, 93, 74, 94, 93, 81, 98, 97, 77, 95, 94, 77, 95, 95, + 90, 105, 107, 94, 107, 109, 88, 100, 100, 183, 188, 187, 102, 112, 111, 98, 111, 109, 94, 109, 106, 96, 109, 107, 97, 113, 111, 102, 119, 116, 103, 119, 117, 110, 126, 126, 108, 123, 125, 101, 117, 119, 101, 115, 117, 95, 111, 111, 96, 112, 111, 103, 118, 117, 121, 134, 132, 135, 146, 144, 137, 149, 145, + 145, 154, 150, 162, 170, 169, 191, 195, 195, 144, 152, 151, 148, 154, 155, 146, 155, 155, 144, 153, 153, 186, 193, 192, 165, 174, 175, 151, 162, 162, 163, 171, 172, 183, 190, 189, 153, 165, 163, 165, 176, 174, 160, 173, 170, 167, 178, 177, 159, 171, 169, 165, 176, 175, 141, 156, 155, 150, 162, 162, 135, 150, 150, + 143, 155, 153, 127, 144, 143, 157, 169, 169, 161, 173, 173, 151, 166, 164, 133, 152, 149, 149, 164, 162, 157, 170, 169, 132, 152, 150, 141, 159, 158, 157, 171, 170, 159, 171, 168, 167, 177, 175, 168, 179, 177, 177, 186, 184, 183, 194, 192, 159, 173, 168, 170, 181, 178, 177, 187, 184, 191, 199, 198, 184, 193, 191, + 183, 193, 190, 179, 190, 187, 181, 194, 190, 182, 195, 191, 179, 193, 189, 184, 196, 192, 187, 199, 195, 193, 203, 200, 203, 212, 209, 211, 218, 215, 212, 218, 216, 212, 219, 215, 211, 218, 214, 213, 220, 216, 214, 221, 216, 215, 222, 219, 214, 222, 219, 212, 219, 216, 208, 216, 213, 200, 212, 209, 198, 212, 208, + 199, 214, 210, 203, 215, 212, 208, 219, 216, 210, 219, 216, 215, 224, 220, 217, 224, 220, 219, 226, 222, 221, 228, 224, 222, 228, 225, 223, 230, 226, 223, 230, 227, 222, 229, 226, 222, 229, 225, 223, 230, 225, 224, 231, 228, 225, 232, 229, 225, 232, 229, 225, 232, 229, 227, 234, 230, 228, 235, 232, 229, 236, 233, + 203, 218, 221, 201, 217, 220, 200, 216, 220, 198, 214, 220, 196, 212, 218, 193, 212, 217, 192, 211, 216, 191, 210, 215, 191, 208, 214, 190, 207, 214, 188, 207, 214, 187, 205, 212, 185, 204, 211, 185, 203, 210, 183, 202, 210, 183, 202, 209, 185, 203, 210, 184, 202, 209, 184, 202, 209, 183, 201, 208, 182, 201, 208, + 179, 198, 205, 179, 198, 205, 176, 197, 203, 175, 197, 203, 176, 196, 202, 176, 196, 203, 175, 195, 202, 173, 194, 200, 168, 190, 198, 161, 185, 192, 154, 180, 187, 153, 179, 188, 153, 179, 189, 153, 179, 189, 155, 180, 189, 155, 179, 190, 150, 176, 188, 149, 175, 187, 143, 169, 182, 138, 166, 177, 135, 163, 174, + 139, 165, 178, 140, 166, 180, 140, 166, 180, 136, 163, 177, 131, 160, 174, 132, 159, 173, 128, 157, 171, 127, 156, 171, 125, 153, 169, 120, 149, 167, 117, 146, 165, 115, 145, 164, 111, 141, 160, 109, 139, 158, 104, 134, 153, 98, 128, 149, 93, 124, 145, 96, 125, 146, 100, 129, 149, 112, 137, 157, 110, 135, 155, + 102, 127, 146, 94, 121, 138, 86, 113, 132, 84, 111, 130, 85, 113, 128, 84, 111, 127, 84, 110, 126, 84, 109, 125, 83, 109, 124, 85, 111, 126, 89, 113, 127, 104, 127, 140, 110, 131, 143, 125, 142, 154, 116, 135, 147, 90, 113, 125, 93, 118, 128, 106, 130, 140, 90, 115, 125, 74, 101, 111, 78, 104, 116, + 81, 107, 119, 82, 108, 120, 80, 106, 118, 78, 105, 116, 73, 100, 110, 73, 98, 108, 72, 98, 105, 76, 100, 108, 84, 107, 115, 80, 103, 111, 73, 98, 105, 76, 101, 108, 75, 99, 107, 99, 121, 127, 117, 136, 144, 92, 115, 122, 91, 116, 122, 97, 120, 126, 93, 116, 122, 96, 120, 125, 96, 121, 126, + 94, 120, 124, 90, 118, 122, 106, 131, 137, 107, 131, 137, 96, 123, 129, 106, 130, 137, 97, 121, 129, 95, 119, 125, 96, 117, 124, 94, 116, 122, 92, 114, 120, 100, 121, 125, 100, 121, 124, 107, 126, 131, 111, 130, 136, 110, 129, 137, 118, 135, 141, 119, 135, 141, 110, 127, 130, 110, 127, 130, 113, 131, 134, + 107, 122, 126, 104, 119, 123, 98, 115, 118, 99, 117, 120, 98, 117, 120, 97, 116, 119, 99, 118, 121, 99, 118, 122, 99, 118, 121, 95, 114, 120, 95, 114, 116, 98, 118, 121, 97, 117, 120, 98, 118, 120, 99, 120, 122, 95, 114, 117, 96, 115, 118, 97, 117, 118, 94, 113, 114, 95, 115, 116, 103, 122, 124, + 106, 125, 129, 105, 124, 128, 106, 123, 129, 97, 114, 119, 102, 118, 124, 102, 117, 123, 100, 115, 119, 87, 105, 108, 135, 148, 150, 89, 109, 110, 93, 110, 112, 100, 116, 117, 94, 112, 115, 116, 131, 131, 135, 149, 150, 94, 112, 111, 86, 106, 107, 95, 112, 115, 81, 100, 103, 131, 143, 145, 85, 104, 104, + 130, 140, 140, 136, 144, 144, 90, 101, 102, 128, 135, 136, 106, 115, 117, 116, 124, 127, 127, 134, 138, 100, 110, 116, 82, 95, 100, 116, 127, 131, 72, 88, 93, 70, 89, 95, 71, 90, 93, 58, 79, 83, 123, 136, 138, 71, 92, 94, 73, 93, 94, 78, 97, 97, 76, 94, 93, 79, 97, 96, 85, 101, 100, + 87, 103, 102, 96, 111, 110, 98, 111, 110, 99, 110, 110, 183, 190, 189, 101, 112, 112, 99, 114, 112, 95, 110, 109, 99, 115, 114, 102, 118, 117, 105, 121, 122, 110, 126, 127, 99, 115, 118, 91, 108, 111, 100, 114, 117, 95, 111, 111, 97, 113, 112, 115, 129, 128, 120, 134, 132, 124, 137, 135, 135, 146, 144, + 139, 151, 148, 151, 159, 158, 146, 155, 154, 203, 207, 206, 144, 152, 152, 136, 146, 146, 148, 157, 157, 152, 161, 159, 169, 178, 176, 189, 194, 193, 172, 178, 177, 183, 189, 189, 154, 163, 162, 163, 173, 172, 163, 173, 172, 168, 177, 176, 166, 176, 174, 165, 174, 173, 141, 156, 155, 140, 154, 153, 137, 151, 152, + 135, 149, 150, 126, 142, 143, 143, 157, 159, 161, 173, 174, 150, 164, 164, 124, 145, 143, 146, 161, 160, 152, 165, 165, 139, 155, 155, 136, 154, 153, 143, 161, 160, 155, 168, 167, 166, 178, 176, 160, 173, 171, 173, 183, 181, 173, 182, 180, 179, 190, 187, 163, 175, 172, 178, 188, 185, 180, 190, 188, 194, 201, 199, + 186, 195, 192, 182, 192, 189, 186, 195, 192, 178, 189, 186, 182, 193, 190, 180, 191, 188, 193, 202, 199, 190, 201, 198, 203, 212, 209, 206, 213, 210, 212, 219, 216, 216, 222, 219, 214, 220, 217, 212, 218, 214, 215, 222, 219, 213, 220, 217, 213, 221, 217, 211, 219, 216, 210, 219, 216, 203, 213, 210, 200, 214, 211, + 198, 212, 209, 204, 216, 213, 207, 217, 214, 211, 220, 217, 214, 222, 219, 219, 226, 222, 219, 226, 221, 220, 227, 222, 222, 229, 225, 223, 229, 226, 224, 231, 227, 224, 231, 228, 223, 230, 227, 223, 230, 227, 224, 231, 226, 225, 232, 229, 222, 231, 228, 225, 231, 228, 226, 233, 230, 227, 234, 231, 229, 236, 233, + 202, 217, 220, 202, 217, 220, 198, 214, 221, 196, 212, 218, 196, 212, 218, 193, 212, 217, 193, 211, 216, 190, 209, 214, 190, 208, 213, 188, 207, 213, 188, 206, 213, 186, 204, 211, 184, 203, 210, 182, 201, 208, 182, 201, 208, 183, 202, 209, 184, 202, 209, 184, 202, 209, 182, 200, 207, 180, 199, 206, 180, 199, 206, + 180, 199, 206, 177, 197, 203, 176, 197, 203, 177, 197, 204, 179, 198, 204, 179, 198, 205, 177, 196, 203, 171, 192, 199, 166, 187, 195, 158, 183, 190, 154, 180, 189, 155, 181, 191, 156, 181, 191, 159, 182, 193, 157, 180, 191, 155, 180, 191, 149, 175, 187, 147, 173, 186, 139, 167, 181, 135, 164, 177, 136, 164, 177, + 138, 165, 179, 141, 167, 181, 140, 166, 180, 137, 164, 178, 133, 162, 176, 132, 161, 175, 133, 161, 175, 128, 157, 172, 123, 153, 170, 118, 149, 166, 116, 146, 166, 113, 143, 162, 109, 139, 158, 104, 134, 153, 97, 127, 148, 93, 124, 145, 92, 124, 145, 99, 127, 148, 107, 134, 154, 109, 135, 155, 102, 129, 149, + 95, 122, 142, 88, 116, 133, 84, 112, 129, 84, 112, 129, 82, 110, 126, 85, 111, 127, 85, 112, 127, 86, 110, 127, 87, 113, 127, 85, 111, 124, 97, 120, 133, 111, 133, 144, 123, 142, 153, 114, 133, 146, 90, 115, 127, 92, 117, 129, 104, 127, 138, 94, 118, 128, 78, 105, 115, 76, 102, 113, 81, 107, 118, + 84, 108, 120, 81, 107, 120, 79, 106, 117, 76, 103, 113, 75, 100, 110, 74, 99, 109, 73, 98, 107, 80, 103, 111, 83, 106, 114, 73, 98, 106, 70, 97, 103, 69, 96, 104, 84, 109, 116, 119, 140, 146, 98, 121, 128, 83, 108, 115, 101, 123, 129, 95, 119, 125, 93, 117, 123, 95, 119, 124, 95, 119, 125, + 98, 123, 127, 101, 127, 131, 110, 134, 140, 101, 123, 131, 108, 131, 139, 99, 124, 131, 93, 119, 126, 90, 114, 122, 95, 116, 122, 99, 118, 125, 99, 119, 126, 100, 120, 126, 104, 124, 129, 104, 124, 129, 108, 127, 133, 112, 131, 138, 111, 130, 136, 110, 127, 133, 113, 130, 135, 109, 127, 131, 104, 122, 127, + 104, 121, 123, 106, 121, 124, 104, 119, 123, 99, 116, 119, 101, 118, 121, 102, 119, 122, 94, 113, 118, 97, 116, 121, 94, 113, 118, 94, 114, 119, 101, 118, 122, 101, 117, 120, 94, 110, 113, 97, 114, 116, 96, 114, 115, 95, 114, 115, 94, 113, 114, 98, 116, 117, 97, 115, 116, 93, 114, 111, 92, 113, 112, + 113, 130, 132, 111, 128, 132, 99, 117, 121, 98, 115, 121, 101, 117, 122, 96, 113, 118, 98, 114, 116, 96, 113, 116, 120, 134, 136, 96, 113, 116, 98, 114, 115, 97, 113, 115, 96, 112, 116, 102, 119, 121, 164, 175, 172, 74, 96, 95, 87, 106, 108, 90, 108, 111, 72, 93, 95, 128, 140, 142, 72, 92, 93, + 82, 98, 98, 170, 176, 176, 84, 96, 98, 80, 91, 93, 148, 155, 157, 108, 118, 121, 154, 159, 161, 83, 91, 99, 95, 105, 111, 108, 121, 125, 66, 85, 89, 75, 92, 96, 75, 93, 97, 73, 92, 96, 91, 108, 111, 99, 115, 116, 82, 101, 102, 77, 98, 98, 78, 96, 95, 83, 100, 99, 87, 103, 102, + 90, 106, 105, 98, 113, 112, 102, 115, 115, 104, 115, 115, 95, 104, 105, 191, 194, 195, 99, 105, 109, 104, 115, 118, 96, 109, 112, 104, 120, 122, 99, 116, 118, 98, 115, 117, 93, 110, 113, 91, 109, 112, 93, 110, 112, 94, 110, 111, 97, 112, 112, 118, 132, 131, 117, 131, 129, 122, 135, 134, 127, 142, 139, + 138, 152, 150, 150, 160, 158, 147, 156, 153, 150, 158, 155, 191, 197, 197, 132, 143, 142, 156, 162, 161, 156, 163, 160, 137, 145, 142, 165, 171, 169, 203, 208, 208, 177, 180, 181, 160, 170, 167, 164, 174, 172, 167, 175, 174, 160, 171, 169, 168, 176, 175, 161, 172, 170, 144, 157, 156, 138, 152, 151, 130, 145, 145, + 130, 146, 148, 135, 150, 150, 138, 153, 156, 160, 172, 174, 151, 165, 165, 128, 146, 148, 138, 155, 155, 148, 163, 164, 131, 151, 150, 139, 156, 155, 124, 145, 145, 150, 165, 164, 161, 174, 172, 161, 173, 172, 168, 180, 178, 165, 177, 175, 175, 186, 183, 181, 191, 188, 178, 188, 186, 174, 185, 183, 180, 190, 187, + 194, 201, 198, 183, 193, 190, 179, 190, 184, 182, 192, 188, 181, 192, 189, 182, 193, 190, 190, 200, 197, 191, 202, 198, 198, 208, 205, 206, 214, 211, 207, 214, 211, 213, 219, 217, 216, 221, 219, 213, 221, 217, 214, 221, 218, 214, 221, 218, 213, 220, 216, 213, 220, 216, 210, 218, 214, 209, 218, 215, 203, 214, 211, + 201, 214, 210, 203, 214, 211, 207, 218, 215, 211, 221, 218, 215, 224, 220, 218, 225, 220, 221, 228, 223, 220, 227, 222, 221, 228, 225, 224, 231, 228, 224, 231, 228, 224, 231, 228, 224, 231, 228, 222, 230, 227, 223, 230, 228, 224, 231, 228, 224, 231, 228, 224, 231, 228, 225, 232, 229, 227, 234, 231, 229, 236, 233, + 202, 216, 221, 199, 215, 220, 197, 213, 218, 197, 213, 219, 195, 211, 217, 194, 211, 216, 191, 209, 214, 189, 208, 213, 189, 207, 213, 187, 205, 212, 187, 205, 212, 184, 202, 209, 182, 201, 208, 182, 200, 208, 182, 200, 207, 182, 200, 207, 181, 199, 206, 181, 199, 206, 179, 198, 205, 178, 197, 204, 176, 196, 203, + 176, 195, 202, 178, 198, 204, 179, 198, 204, 181, 200, 205, 181, 200, 206, 180, 198, 205, 177, 195, 202, 172, 193, 199, 167, 188, 196, 158, 184, 191, 158, 183, 192, 159, 183, 192, 161, 183, 194, 162, 185, 196, 159, 183, 193, 156, 181, 192, 149, 175, 187, 145, 172, 184, 137, 166, 180, 133, 162, 176, 139, 165, 179, + 140, 167, 181, 140, 166, 180, 141, 167, 181, 139, 166, 180, 136, 164, 178, 138, 164, 179, 135, 162, 178, 128, 156, 173, 124, 154, 171, 116, 148, 167, 114, 146, 165, 108, 140, 159, 104, 134, 154, 99, 131, 150, 94, 125, 145, 95, 125, 146, 96, 126, 147, 103, 131, 152, 106, 132, 153, 102, 131, 150, 98, 126, 146, + 91, 120, 139, 86, 113, 131, 84, 112, 128, 83, 112, 128, 85, 111, 127, 84, 110, 126, 84, 111, 126, 86, 112, 126, 85, 111, 125, 90, 115, 127, 111, 134, 146, 126, 146, 157, 115, 137, 148, 89, 115, 129, 90, 116, 129, 101, 125, 137, 93, 117, 129, 82, 107, 118, 78, 104, 116, 82, 106, 118, 84, 108, 121, + 85, 109, 121, 81, 107, 119, 78, 104, 116, 78, 103, 113, 75, 100, 107, 74, 99, 106, 75, 98, 108, 84, 107, 115, 76, 102, 109, 68, 94, 101, 66, 94, 101, 69, 97, 104, 111, 134, 140, 106, 129, 135, 88, 113, 120, 91, 115, 122, 98, 122, 128, 91, 115, 121, 94, 119, 124, 98, 123, 127, 96, 120, 126, + 106, 130, 136, 107, 131, 137, 104, 128, 134, 106, 130, 135, 103, 126, 133, 94, 120, 127, 90, 117, 125, 92, 119, 125, 95, 117, 123, 95, 114, 121, 92, 114, 121, 92, 114, 120, 97, 119, 125, 103, 123, 128, 104, 123, 129, 109, 128, 135, 113, 132, 137, 109, 129, 134, 107, 126, 131, 113, 130, 135, 109, 126, 131, + 103, 119, 122, 104, 119, 122, 102, 117, 120, 100, 117, 120, 100, 117, 120, 102, 119, 122, 97, 116, 120, 99, 118, 123, 98, 118, 123, 103, 122, 127, 96, 114, 118, 95, 112, 115, 102, 117, 120, 94, 111, 114, 95, 111, 114, 100, 117, 119, 95, 113, 114, 96, 114, 115, 97, 114, 114, 92, 112, 111, 91, 112, 111, + 98, 117, 119, 103, 120, 123, 101, 118, 121, 99, 116, 119, 95, 113, 114, 98, 114, 117, 98, 115, 118, 93, 112, 114, 117, 132, 134, 96, 113, 116, 105, 120, 122, 97, 112, 115, 96, 111, 113, 88, 105, 107, 156, 166, 165, 99, 116, 116, 85, 104, 106, 86, 104, 107, 83, 102, 105, 119, 134, 136, 91, 108, 111, + 106, 120, 121, 122, 134, 136, 113, 125, 128, 95, 107, 109, 130, 139, 142, 125, 133, 136, 75, 85, 91, 149, 155, 159, 82, 95, 101, 69, 85, 92, 118, 131, 134, 74, 92, 97, 82, 99, 102, 78, 96, 99, 75, 93, 96, 129, 143, 144, 71, 91, 92, 83, 101, 102, 88, 105, 105, 91, 106, 107, 91, 106, 108, + 102, 116, 116, 98, 114, 114, 96, 111, 111, 105, 119, 120, 97, 108, 111, 97, 105, 107, 188, 193, 194, 93, 103, 106, 111, 122, 125, 99, 116, 117, 92, 110, 111, 97, 115, 115, 88, 107, 110, 90, 108, 111, 95, 113, 115, 91, 109, 110, 103, 119, 120, 119, 134, 133, 115, 132, 130, 118, 134, 134, 121, 137, 134, + 142, 154, 152, 143, 156, 153, 136, 148, 144, 152, 162, 160, 151, 161, 158, 174, 183, 180, 163, 169, 166, 148, 155, 152, 134, 142, 140, 157, 163, 160, 170, 174, 173, 201, 207, 208, 176, 182, 183, 160, 172, 168, 161, 172, 170, 146, 160, 156, 169, 178, 178, 162, 172, 170, 140, 153, 152, 143, 156, 155, 123, 140, 140, + 125, 141, 143, 130, 146, 147, 141, 155, 157, 160, 172, 173, 143, 158, 160, 132, 151, 151, 123, 143, 144, 147, 162, 163, 131, 151, 152, 142, 158, 159, 127, 147, 148, 138, 156, 155, 147, 164, 162, 162, 176, 174, 162, 176, 175, 160, 174, 172, 166, 179, 177, 182, 192, 190, 187, 195, 194, 176, 188, 185, 170, 182, 179, + 192, 200, 197, 187, 196, 192, 187, 195, 191, 182, 192, 187, 179, 190, 187, 186, 197, 193, 187, 196, 193, 191, 202, 199, 197, 207, 203, 206, 214, 210, 208, 214, 211, 210, 217, 214, 214, 221, 218, 217, 222, 218, 214, 221, 218, 213, 220, 217, 212, 219, 214, 210, 219, 214, 209, 218, 214, 209, 218, 215, 207, 216, 213, + 205, 216, 212, 204, 215, 212, 205, 216, 213, 210, 220, 217, 215, 224, 221, 220, 227, 224, 221, 228, 222, 221, 228, 223, 222, 229, 224, 223, 230, 226, 223, 230, 226, 223, 230, 227, 223, 230, 227, 223, 230, 227, 223, 231, 228, 224, 231, 228, 224, 232, 229, 224, 232, 229, 226, 233, 230, 226, 233, 230, 228, 235, 232, + 201, 216, 218, 197, 214, 218, 196, 213, 217, 196, 211, 218, 194, 210, 217, 193, 209, 215, 190, 210, 214, 189, 207, 213, 188, 206, 213, 186, 204, 211, 184, 203, 210, 182, 201, 208, 181, 200, 207, 182, 200, 207, 180, 199, 206, 180, 198, 205, 179, 197, 205, 177, 196, 203, 174, 193, 201, 175, 194, 201, 176, 195, 202, + 177, 196, 202, 180, 199, 204, 183, 202, 207, 185, 201, 207, 185, 201, 207, 180, 198, 205, 178, 196, 203, 172, 192, 199, 167, 188, 196, 162, 185, 193, 162, 186, 193, 163, 186, 194, 167, 188, 196, 167, 189, 198, 160, 184, 194, 155, 181, 192, 149, 175, 187, 143, 171, 183, 136, 165, 179, 137, 164, 178, 138, 165, 179, + 140, 167, 181, 140, 167, 181, 140, 167, 181, 139, 166, 180, 140, 166, 181, 138, 164, 180, 137, 164, 179, 131, 160, 176, 124, 154, 171, 114, 146, 165, 110, 142, 161, 106, 138, 157, 100, 132, 151, 93, 125, 144, 91, 123, 143, 96, 125, 146, 99, 128, 149, 106, 133, 153, 102, 130, 150, 96, 127, 146, 93, 122, 142, + 87, 116, 134, 85, 112, 131, 85, 113, 130, 85, 111, 127, 83, 109, 125, 84, 110, 126, 82, 108, 122, 84, 110, 125, 85, 111, 124, 102, 126, 138, 126, 147, 157, 120, 141, 152, 96, 122, 134, 87, 113, 125, 103, 127, 139, 91, 117, 129, 85, 111, 123, 80, 106, 117, 81, 106, 116, 84, 108, 120, 83, 107, 119, + 83, 107, 119, 79, 105, 117, 79, 104, 114, 77, 101, 110, 74, 97, 106, 73, 95, 105, 77, 100, 107, 78, 101, 109, 67, 94, 101, 62, 91, 97, 62, 91, 97, 95, 120, 126, 109, 131, 137, 95, 119, 125, 87, 111, 118, 102, 125, 131, 99, 122, 128, 93, 117, 123, 90, 116, 122, 95, 120, 124, 98, 123, 128, + 105, 129, 135, 106, 130, 136, 109, 131, 138, 107, 129, 135, 98, 121, 128, 93, 118, 125, 92, 118, 126, 91, 117, 123, 94, 117, 124, 91, 113, 119, 92, 114, 120, 96, 117, 123, 99, 120, 127, 98, 121, 126, 104, 125, 131, 104, 125, 130, 107, 127, 132, 105, 125, 130, 105, 124, 129, 108, 126, 132, 108, 126, 129, + 102, 119, 121, 104, 119, 120, 99, 115, 115, 99, 116, 117, 99, 116, 119, 98, 116, 119, 97, 114, 118, 102, 121, 126, 99, 118, 123, 98, 118, 123, 100, 117, 119, 101, 117, 120, 103, 118, 120, 97, 113, 116, 97, 114, 117, 95, 113, 116, 97, 114, 116, 97, 115, 116, 93, 112, 110, 91, 109, 108, 93, 111, 111, + 95, 113, 114, 92, 110, 114, 90, 109, 112, 104, 121, 123, 103, 120, 121, 95, 112, 113, 99, 117, 119, 100, 118, 119, 110, 127, 129, 106, 124, 125, 101, 116, 119, 99, 114, 116, 97, 112, 115, 96, 111, 112, 115, 129, 126, 134, 146, 146, 85, 103, 106, 82, 100, 103, 80, 99, 101, 90, 107, 108, 119, 134, 134, + 100, 114, 114, 82, 97, 99, 159, 167, 168, 99, 112, 112, 88, 101, 102, 166, 172, 174, 95, 106, 110, 121, 129, 134, 89, 97, 103, 82, 97, 104, 86, 102, 107, 99, 114, 118, 81, 97, 101, 83, 100, 103, 84, 101, 104, 76, 95, 96, 124, 137, 137, 79, 96, 96, 80, 97, 97, 90, 106, 105, 101, 115, 117, + 104, 118, 120, 97, 112, 113, 99, 115, 114, 100, 115, 113, 94, 108, 107, 102, 114, 112, 100, 108, 109, 180, 186, 189, 99, 110, 113, 95, 110, 111, 90, 107, 107, 96, 113, 114, 83, 104, 104, 85, 104, 105, 95, 113, 114, 98, 115, 115, 107, 123, 122, 107, 123, 122, 114, 129, 128, 121, 136, 134, 122, 137, 135, + 153, 163, 162, 132, 146, 143, 120, 136, 132, 145, 156, 154, 151, 161, 159, 115, 129, 126, 164, 173, 172, 173, 179, 177, 132, 141, 140, 156, 163, 162, 167, 173, 172, 162, 168, 169, 210, 217, 213, 162, 170, 168, 158, 170, 168, 124, 142, 141, 159, 171, 171, 154, 167, 165, 143, 157, 155, 150, 163, 161, 125, 143, 141, + 126, 143, 142, 117, 135, 136, 138, 154, 155, 155, 168, 169, 140, 156, 158, 137, 154, 156, 126, 146, 147, 131, 149, 150, 141, 158, 160, 135, 154, 155, 139, 156, 158, 129, 150, 148, 131, 151, 148, 159, 174, 172, 161, 175, 173, 163, 176, 174, 160, 173, 171, 163, 176, 174, 186, 196, 194, 187, 196, 194, 171, 183, 180, + 175, 186, 182, 193, 200, 196, 188, 197, 192, 184, 194, 188, 182, 194, 188, 188, 198, 195, 190, 199, 196, 194, 203, 200, 198, 207, 202, 204, 212, 206, 209, 216, 213, 207, 216, 213, 211, 217, 215, 214, 220, 216, 215, 222, 219, 214, 221, 217, 212, 219, 214, 213, 220, 215, 210, 218, 214, 209, 218, 215, 208, 217, 214, + 208, 218, 215, 205, 216, 213, 205, 216, 213, 204, 216, 213, 213, 222, 219, 219, 226, 223, 223, 228, 226, 222, 229, 225, 222, 229, 226, 220, 228, 224, 223, 230, 226, 221, 229, 226, 223, 230, 227, 222, 229, 226, 222, 230, 227, 224, 231, 228, 225, 232, 229, 225, 233, 230, 224, 232, 229, 225, 234, 231, 227, 236, 233, + 196, 213, 218, 196, 212, 218, 195, 211, 217, 194, 210, 216, 192, 208, 214, 192, 208, 214, 189, 207, 213, 188, 206, 213, 186, 204, 211, 185, 203, 210, 183, 201, 208, 180, 199, 206, 181, 200, 207, 181, 199, 206, 181, 198, 205, 178, 196, 203, 175, 194, 201, 173, 193, 200, 173, 194, 201, 172, 194, 199, 175, 193, 200, + 178, 197, 203, 179, 198, 203, 183, 200, 206, 185, 201, 207, 184, 200, 206, 181, 199, 206, 178, 197, 204, 174, 193, 200, 169, 191, 197, 166, 188, 196, 166, 188, 196, 169, 190, 198, 172, 191, 199, 170, 191, 198, 163, 184, 196, 156, 180, 192, 149, 175, 187, 142, 171, 182, 141, 169, 180, 138, 166, 177, 140, 166, 181, + 141, 167, 181, 142, 168, 182, 140, 167, 181, 139, 165, 181, 138, 165, 181, 140, 165, 181, 138, 164, 180, 133, 159, 176, 119, 150, 169, 111, 144, 163, 109, 142, 161, 103, 136, 156, 96, 130, 149, 92, 125, 144, 91, 123, 142, 96, 126, 146, 101, 130, 150, 101, 130, 149, 102, 129, 149, 93, 124, 143, 89, 119, 138, + 86, 115, 133, 87, 115, 132, 86, 113, 130, 86, 112, 128, 86, 112, 128, 82, 108, 124, 80, 107, 121, 84, 110, 124, 91, 117, 128, 122, 143, 154, 121, 142, 153, 96, 121, 134, 89, 116, 129, 100, 126, 138, 91, 117, 129, 85, 111, 123, 84, 110, 122, 77, 103, 115, 81, 106, 118, 83, 107, 119, 84, 108, 119, + 80, 105, 117, 77, 103, 115, 78, 103, 113, 76, 99, 110, 72, 94, 105, 74, 97, 106, 81, 104, 112, 74, 98, 106, 64, 91, 97, 66, 92, 98, 83, 109, 115, 111, 133, 138, 102, 124, 130, 87, 112, 118, 92, 116, 121, 102, 125, 131, 90, 115, 121, 93, 117, 123, 92, 117, 123, 96, 121, 127, 101, 126, 132, + 110, 133, 139, 106, 130, 136, 107, 130, 135, 100, 123, 129, 96, 120, 126, 97, 120, 127, 91, 117, 122, 93, 118, 120, 87, 113, 115, 95, 117, 122, 86, 110, 116, 98, 120, 126, 96, 118, 124, 93, 117, 123, 97, 120, 126, 102, 124, 130, 102, 124, 130, 102, 122, 127, 107, 126, 131, 106, 124, 129, 102, 119, 122, + 100, 118, 119, 98, 115, 114, 101, 117, 116, 97, 115, 115, 97, 116, 119, 95, 113, 116, 99, 115, 120, 102, 118, 124, 104, 120, 125, 108, 123, 126, 100, 115, 118, 102, 116, 120, 106, 118, 122, 102, 118, 121, 98, 116, 119, 97, 115, 118, 98, 115, 117, 95, 114, 114, 96, 114, 115, 96, 114, 115, 94, 112, 114, + 94, 112, 113, 88, 107, 110, 91, 109, 112, 96, 113, 116, 95, 112, 115, 104, 120, 123, 99, 117, 120, 106, 123, 125, 108, 124, 127, 100, 119, 119, 104, 119, 121, 98, 114, 116, 99, 115, 115, 99, 115, 115, 122, 135, 134, 130, 142, 142, 78, 97, 97, 83, 101, 100, 89, 107, 105, 74, 93, 92, 134, 146, 146, + 95, 112, 110, 100, 115, 112, 154, 164, 163, 101, 113, 113, 98, 112, 112, 136, 144, 143, 95, 108, 111, 79, 90, 94, 154, 162, 165, 64, 78, 85, 83, 98, 103, 120, 132, 136, 79, 96, 99, 85, 101, 104, 85, 103, 104, 83, 100, 102, 115, 128, 128, 82, 98, 97, 95, 109, 108, 98, 113, 112, 105, 121, 120, + 102, 118, 118, 93, 109, 110, 93, 110, 109, 93, 110, 109, 92, 107, 105, 104, 118, 115, 102, 115, 116, 114, 123, 127, 159, 166, 168, 94, 106, 105, 98, 110, 110, 94, 110, 109, 78, 99, 99, 86, 106, 106, 93, 112, 112, 101, 116, 116, 110, 126, 126, 110, 126, 125, 119, 134, 133, 125, 138, 137, 128, 141, 139, + 152, 162, 161, 134, 147, 144, 127, 141, 137, 133, 146, 144, 137, 149, 148, 109, 123, 124, 135, 148, 148, 138, 147, 149, 178, 184, 184, 143, 151, 153, 158, 165, 165, 170, 175, 175, 179, 183, 180, 201, 206, 204, 153, 165, 165, 109, 129, 132, 161, 172, 174, 146, 159, 157, 141, 156, 153, 157, 169, 167, 128, 144, 143, + 120, 138, 137, 116, 136, 135, 131, 149, 149, 147, 162, 161, 133, 152, 153, 136, 154, 155, 129, 147, 148, 126, 145, 146, 143, 160, 161, 130, 150, 152, 147, 164, 164, 131, 151, 151, 126, 147, 146, 150, 166, 164, 165, 178, 176, 161, 174, 172, 156, 170, 168, 162, 175, 173, 173, 185, 182, 203, 210, 207, 169, 182, 179, + 173, 186, 183, 183, 193, 190, 190, 199, 195, 183, 193, 190, 187, 197, 195, 186, 197, 194, 190, 201, 198, 196, 205, 202, 199, 208, 205, 204, 211, 207, 208, 215, 212, 205, 213, 210, 210, 217, 214, 212, 219, 215, 215, 222, 219, 214, 221, 218, 213, 220, 217, 213, 220, 215, 212, 219, 214, 212, 219, 215, 209, 219, 215, + 207, 216, 213, 208, 217, 214, 205, 216, 213, 206, 217, 214, 210, 220, 216, 219, 226, 223, 221, 227, 224, 224, 230, 226, 222, 229, 226, 218, 228, 224, 219, 229, 225, 219, 227, 224, 221, 230, 227, 223, 230, 227, 221, 230, 227, 220, 229, 226, 222, 231, 228, 224, 231, 228, 226, 233, 230, 225, 233, 230, 227, 236, 233, + 194, 210, 216, 194, 211, 217, 193, 210, 216, 194, 210, 216, 191, 208, 214, 191, 208, 214, 188, 207, 213, 187, 206, 212, 186, 204, 211, 183, 202, 209, 182, 201, 208, 180, 199, 206, 179, 198, 205, 179, 197, 204, 176, 195, 202, 175, 194, 201, 174, 193, 200, 170, 191, 198, 170, 192, 199, 174, 193, 200, 175, 194, 201, + 179, 197, 204, 181, 200, 205, 181, 200, 205, 182, 202, 206, 182, 201, 206, 180, 199, 205, 179, 197, 204, 176, 196, 203, 175, 193, 200, 172, 193, 200, 171, 191, 199, 174, 192, 199, 174, 193, 201, 173, 192, 200, 166, 187, 196, 158, 181, 192, 149, 175, 186, 144, 171, 182, 143, 170, 181, 142, 169, 180, 142, 168, 180, + 141, 167, 181, 139, 166, 180, 140, 166, 181, 139, 165, 181, 139, 166, 182, 140, 165, 181, 136, 163, 179, 132, 160, 176, 119, 150, 167, 111, 144, 161, 105, 138, 156, 101, 135, 153, 95, 128, 148, 91, 125, 144, 89, 122, 141, 98, 127, 148, 98, 128, 148, 102, 130, 150, 99, 125, 145, 94, 120, 141, 88, 116, 133, + 88, 116, 133, 88, 115, 132, 86, 112, 129, 86, 112, 128, 84, 109, 125, 83, 109, 125, 82, 108, 123, 87, 113, 127, 112, 135, 146, 120, 141, 152, 103, 126, 139, 87, 113, 126, 99, 125, 138, 93, 119, 131, 84, 110, 122, 86, 112, 124, 81, 107, 119, 79, 105, 116, 82, 107, 118, 84, 108, 118, 84, 109, 119, + 78, 105, 116, 79, 105, 116, 75, 100, 110, 75, 100, 110, 70, 94, 104, 78, 100, 110, 77, 100, 108, 68, 93, 100, 66, 93, 100, 76, 101, 107, 107, 129, 134, 103, 125, 130, 98, 119, 125, 87, 111, 116, 104, 126, 132, 96, 119, 125, 93, 117, 123, 93, 117, 123, 95, 120, 126, 100, 124, 130, 103, 128, 134, + 105, 129, 135, 113, 135, 141, 100, 123, 129, 97, 120, 126, 96, 120, 126, 93, 117, 123, 94, 119, 121, 90, 115, 117, 93, 117, 119, 91, 115, 120, 93, 116, 121, 95, 117, 123, 94, 117, 123, 90, 114, 119, 93, 118, 123, 96, 121, 125, 99, 121, 127, 100, 120, 125, 103, 122, 127, 102, 121, 125, 102, 120, 122, + 102, 120, 121, 97, 115, 115, 94, 112, 112, 92, 111, 111, 99, 116, 118, 102, 119, 122, 105, 121, 124, 105, 119, 123, 106, 121, 125, 105, 120, 123, 102, 116, 122, 103, 117, 123, 101, 115, 121, 96, 113, 117, 101, 118, 121, 99, 116, 119, 99, 116, 118, 101, 118, 120, 95, 112, 115, 95, 113, 116, 88, 107, 110, + 87, 105, 108, 93, 111, 114, 90, 108, 111, 100, 116, 119, 98, 114, 117, 96, 112, 115, 100, 117, 120, 124, 138, 140, 103, 121, 122, 98, 115, 116, 101, 118, 119, 103, 119, 121, 102, 118, 118, 99, 115, 114, 117, 130, 129, 137, 149, 147, 78, 98, 96, 89, 107, 106, 91, 109, 108, 86, 104, 103, 129, 142, 141, + 101, 117, 114, 98, 112, 111, 107, 119, 119, 176, 183, 180, 101, 114, 112, 84, 98, 98, 149, 158, 159, 90, 101, 104, 92, 104, 109, 137, 145, 149, 93, 105, 110, 82, 95, 99, 120, 131, 132, 92, 108, 110, 84, 102, 103, 81, 100, 101, 81, 99, 98, 138, 148, 148, 97, 112, 110, 101, 115, 114, 104, 120, 119, + 99, 116, 115, 92, 108, 107, 94, 110, 109, 95, 111, 109, 107, 122, 120, 100, 113, 111, 101, 114, 115, 110, 121, 124, 133, 138, 140, 135, 144, 144, 98, 110, 109, 90, 104, 106, 82, 101, 102, 90, 108, 110, 98, 114, 115, 109, 124, 123, 110, 126, 125, 117, 131, 130, 114, 130, 127, 133, 145, 143, 134, 147, 145, + 151, 161, 159, 119, 134, 132, 132, 144, 143, 121, 135, 134, 142, 153, 153, 102, 120, 122, 127, 141, 143, 116, 132, 133, 123, 135, 137, 179, 186, 186, 155, 160, 160, 173, 177, 178, 182, 187, 186, 167, 170, 170, 191, 199, 199, 118, 132, 134, 151, 160, 162, 136, 153, 151, 144, 159, 156, 153, 165, 163, 135, 150, 149, + 119, 138, 136, 121, 141, 139, 120, 142, 140, 139, 157, 155, 131, 150, 149, 130, 149, 150, 129, 148, 149, 122, 143, 144, 133, 153, 154, 129, 149, 152, 135, 154, 155, 137, 156, 157, 130, 151, 150, 132, 152, 149, 160, 174, 171, 163, 176, 174, 162, 176, 173, 153, 168, 164, 165, 179, 175, 182, 191, 189, 195, 203, 199, + 171, 184, 180, 175, 188, 184, 189, 199, 195, 184, 195, 192, 186, 197, 194, 192, 201, 198, 192, 201, 198, 197, 205, 202, 197, 206, 202, 204, 211, 208, 209, 215, 212, 205, 213, 209, 205, 213, 208, 212, 219, 215, 213, 220, 216, 212, 220, 217, 214, 221, 218, 209, 218, 212, 211, 218, 213, 210, 219, 215, 211, 219, 215, + 210, 219, 216, 209, 218, 215, 207, 217, 214, 207, 217, 214, 209, 219, 216, 214, 222, 216, 220, 227, 224, 224, 229, 227, 223, 229, 226, 223, 229, 227, 220, 229, 226, 218, 227, 224, 219, 228, 224, 219, 228, 226, 222, 229, 226, 220, 229, 226, 223, 231, 228, 223, 231, 228, 225, 233, 230, 229, 236, 233, 229, 236, 233, + 192, 211, 216, 192, 211, 216, 193, 209, 215, 191, 210, 215, 192, 209, 214, 191, 208, 213, 188, 207, 213, 186, 204, 211, 186, 204, 211, 182, 201, 208, 181, 200, 207, 178, 197, 204, 178, 197, 204, 175, 194, 201, 175, 194, 201, 173, 192, 199, 170, 192, 198, 169, 191, 198, 169, 191, 198, 173, 193, 200, 177, 196, 203, + 180, 197, 204, 180, 198, 204, 183, 201, 206, 180, 199, 204, 181, 200, 205, 180, 199, 205, 180, 198, 205, 180, 198, 205, 177, 196, 203, 175, 194, 201, 173, 193, 200, 174, 193, 200, 174, 193, 202, 172, 192, 200, 166, 187, 196, 160, 182, 193, 154, 179, 189, 147, 173, 184, 145, 171, 183, 146, 172, 183, 143, 169, 182, + 143, 169, 182, 142, 169, 183, 141, 167, 182, 140, 166, 182, 140, 166, 182, 140, 166, 182, 134, 162, 178, 129, 157, 174, 116, 149, 165, 109, 142, 159, 104, 137, 156, 99, 134, 152, 92, 127, 145, 90, 124, 143, 90, 123, 142, 99, 128, 148, 101, 128, 149, 98, 126, 146, 96, 123, 143, 89, 116, 136, 88, 116, 133, + 88, 116, 133, 89, 115, 132, 88, 114, 130, 87, 112, 128, 83, 108, 124, 81, 106, 122, 84, 109, 124, 97, 121, 134, 121, 141, 152, 104, 128, 140, 86, 112, 124, 97, 121, 135, 97, 122, 136, 81, 109, 120, 82, 109, 121, 83, 110, 121, 79, 105, 117, 85, 109, 120, 84, 108, 119, 81, 107, 119, 82, 107, 117, + 81, 106, 116, 78, 103, 113, 73, 100, 110, 67, 94, 104, 72, 97, 106, 80, 104, 113, 73, 97, 108, 65, 91, 98, 72, 96, 104, 107, 129, 136, 102, 124, 130, 105, 127, 132, 91, 114, 120, 91, 114, 120, 105, 127, 133, 92, 116, 122, 94, 118, 124, 97, 121, 127, 102, 126, 132, 104, 128, 134, 105, 130, 136, + 110, 133, 139, 104, 128, 134, 94, 118, 124, 99, 122, 128, 96, 119, 125, 92, 117, 121, 92, 117, 120, 97, 120, 122, 91, 117, 120, 88, 112, 118, 89, 113, 118, 92, 114, 119, 87, 110, 117, 87, 112, 116, 92, 116, 120, 88, 113, 117, 88, 112, 118, 97, 117, 122, 100, 119, 124, 103, 120, 124, 101, 118, 120, + 94, 112, 113, 95, 113, 114, 95, 114, 115, 91, 110, 111, 96, 113, 116, 102, 119, 122, 103, 119, 122, 108, 122, 125, 104, 119, 122, 104, 118, 123, 103, 116, 122, 105, 119, 125, 106, 120, 126, 102, 118, 121, 99, 117, 119, 102, 119, 121, 102, 119, 120, 96, 114, 115, 101, 118, 121, 96, 113, 116, 91, 109, 112, + 95, 112, 115, 93, 111, 112, 96, 113, 114, 101, 117, 118, 99, 114, 117, 101, 115, 118, 99, 115, 119, 117, 131, 134, 104, 121, 122, 109, 124, 127, 104, 120, 122, 95, 113, 114, 101, 118, 117, 98, 114, 113, 91, 107, 106, 115, 134, 133, 119, 134, 133, 90, 108, 107, 91, 110, 107, 92, 111, 108, 136, 148, 146, + 98, 114, 112, 102, 116, 114, 92, 106, 105, 184, 190, 190, 99, 114, 112, 101, 114, 113, 140, 150, 150, 87, 101, 102, 90, 102, 106, 153, 160, 163, 81, 95, 100, 96, 108, 111, 116, 128, 128, 92, 107, 106, 86, 104, 103, 86, 104, 103, 89, 105, 105, 119, 132, 130, 104, 118, 116, 91, 107, 106, 99, 115, 114, + 91, 110, 108, 95, 112, 111, 90, 106, 105, 109, 123, 122, 109, 124, 121, 97, 114, 111, 101, 116, 116, 101, 114, 117, 94, 107, 110, 167, 175, 176, 106, 115, 114, 92, 106, 107, 87, 103, 105, 91, 108, 107, 104, 119, 119, 117, 130, 129, 105, 122, 121, 120, 135, 134, 113, 128, 126, 135, 148, 146, 138, 150, 148, + 141, 152, 151, 110, 126, 125, 125, 138, 137, 123, 136, 136, 133, 144, 144, 126, 141, 143, 107, 125, 127, 116, 132, 134, 105, 122, 124, 126, 140, 141, 193, 197, 198, 169, 175, 175, 176, 185, 181, 162, 166, 167, 128, 140, 142, 175, 186, 185, 146, 157, 158, 124, 139, 138, 150, 161, 159, 147, 161, 159, 135, 149, 149, + 117, 137, 135, 115, 136, 136, 116, 137, 135, 138, 154, 153, 124, 144, 143, 131, 150, 150, 135, 153, 152, 121, 142, 143, 118, 142, 142, 136, 155, 157, 127, 148, 149, 139, 158, 159, 131, 151, 151, 126, 149, 145, 142, 161, 157, 156, 172, 169, 160, 175, 171, 156, 171, 167, 156, 171, 167, 173, 185, 181, 175, 188, 184, + 192, 201, 197, 172, 184, 181, 181, 192, 188, 195, 204, 201, 185, 196, 193, 194, 203, 200, 195, 204, 201, 196, 205, 202, 199, 208, 205, 202, 209, 206, 209, 216, 213, 205, 214, 211, 203, 213, 208, 208, 216, 212, 213, 220, 216, 212, 219, 215, 213, 220, 217, 210, 218, 212, 209, 217, 213, 208, 217, 212, 210, 219, 217, + 210, 219, 216, 209, 218, 215, 208, 217, 215, 206, 217, 214, 209, 219, 216, 213, 222, 216, 219, 226, 223, 222, 229, 226, 223, 230, 227, 223, 230, 227, 222, 229, 226, 218, 228, 223, 216, 225, 222, 217, 227, 224, 221, 230, 227, 222, 230, 227, 221, 230, 228, 223, 232, 229, 224, 233, 230, 227, 234, 231, 229, 236, 233, + 191, 210, 215, 194, 211, 216, 192, 210, 215, 191, 209, 214, 192, 208, 214, 191, 207, 213, 187, 205, 212, 187, 205, 211, 185, 203, 210, 183, 201, 208, 180, 199, 206, 178, 197, 204, 176, 195, 202, 174, 193, 200, 171, 192, 198, 171, 191, 197, 169, 191, 198, 169, 191, 197, 172, 192, 199, 174, 194, 200, 177, 195, 202, + 178, 197, 204, 178, 196, 203, 177, 195, 202, 178, 197, 203, 178, 196, 203, 179, 198, 204, 180, 199, 205, 180, 198, 205, 180, 198, 205, 177, 196, 203, 174, 193, 200, 175, 194, 201, 173, 192, 200, 173, 192, 200, 168, 189, 197, 163, 184, 194, 156, 180, 190, 151, 176, 186, 149, 175, 184, 148, 174, 184, 146, 172, 184, + 146, 172, 184, 144, 170, 184, 141, 168, 183, 143, 169, 185, 141, 166, 182, 140, 166, 182, 135, 161, 178, 125, 155, 172, 113, 145, 164, 109, 142, 160, 105, 138, 157, 100, 134, 153, 93, 128, 147, 92, 126, 145, 93, 126, 145, 100, 129, 149, 99, 127, 148, 96, 124, 143, 88, 119, 138, 85, 114, 132, 89, 116, 133, + 89, 115, 132, 90, 116, 132, 89, 115, 131, 86, 111, 127, 83, 108, 124, 81, 106, 122, 94, 116, 131, 121, 140, 152, 112, 134, 146, 92, 115, 127, 92, 117, 129, 101, 125, 137, 85, 111, 125, 79, 107, 118, 84, 110, 122, 83, 109, 121, 80, 106, 118, 82, 108, 119, 82, 107, 118, 80, 106, 117, 82, 108, 117, + 78, 103, 113, 74, 100, 110, 72, 99, 109, 68, 95, 105, 76, 101, 110, 78, 101, 112, 69, 95, 102, 67, 93, 101, 112, 134, 141, 97, 119, 125, 105, 126, 132, 100, 122, 128, 88, 112, 118, 97, 120, 126, 101, 123, 129, 92, 117, 123, 98, 120, 126, 96, 119, 125, 104, 126, 132, 105, 128, 134, 109, 131, 136, + 103, 125, 131, 103, 124, 130, 98, 120, 125, 95, 117, 123, 96, 118, 123, 100, 120, 125, 93, 115, 120, 95, 118, 123, 96, 119, 124, 96, 118, 124, 90, 113, 119, 85, 108, 113, 84, 108, 113, 85, 110, 114, 86, 111, 115, 90, 114, 118, 92, 114, 119, 89, 110, 115, 93, 113, 118, 95, 114, 117, 95, 113, 116, + 88, 107, 110, 90, 108, 110, 87, 106, 108, 94, 112, 113, 93, 111, 114, 95, 112, 115, 106, 121, 124, 103, 117, 119, 104, 118, 120, 105, 120, 122, 106, 119, 123, 107, 122, 125, 102, 117, 120, 99, 115, 118, 101, 116, 119, 101, 115, 117, 105, 119, 119, 102, 118, 120, 99, 116, 119, 93, 111, 114, 93, 111, 114, + 94, 112, 113, 95, 113, 114, 96, 112, 114, 100, 115, 118, 99, 113, 115, 94, 111, 112, 97, 112, 114, 116, 130, 131, 101, 118, 119, 102, 119, 121, 106, 123, 124, 106, 123, 124, 101, 115, 117, 96, 111, 111, 84, 102, 101, 111, 126, 124, 142, 154, 152, 93, 113, 110, 92, 111, 109, 97, 115, 113, 134, 148, 146, + 96, 113, 110, 101, 116, 116, 101, 116, 114, 115, 127, 126, 158, 167, 166, 98, 111, 112, 84, 97, 98, 151, 160, 160, 95, 107, 109, 90, 102, 106, 148, 154, 157, 95, 108, 110, 94, 108, 107, 122, 135, 133, 86, 103, 102, 88, 105, 104, 90, 106, 105, 87, 103, 101, 140, 150, 149, 92, 108, 105, 103, 119, 117, + 95, 112, 111, 94, 111, 109, 95, 111, 110, 102, 117, 115, 100, 117, 114, 92, 109, 106, 99, 113, 115, 89, 104, 106, 111, 123, 125, 104, 114, 117, 186, 192, 195, 86, 96, 102, 89, 104, 103, 97, 110, 111, 102, 116, 115, 111, 126, 125, 117, 131, 130, 117, 132, 130, 126, 140, 138, 132, 145, 142, 140, 152, 150, + 131, 145, 144, 111, 127, 126, 107, 122, 121, 121, 135, 134, 127, 139, 139, 142, 154, 153, 102, 120, 121, 107, 125, 126, 105, 122, 124, 120, 134, 136, 121, 134, 133, 208, 212, 212, 163, 170, 171, 143, 153, 154, 125, 140, 143, 104, 121, 124, 190, 198, 197, 128, 142, 143, 139, 150, 150, 157, 168, 166, 119, 137, 136, + 114, 135, 133, 118, 138, 137, 122, 142, 143, 135, 152, 151, 125, 145, 144, 125, 143, 142, 134, 152, 151, 123, 145, 146, 126, 146, 147, 137, 155, 156, 124, 145, 147, 130, 149, 150, 137, 156, 156, 129, 151, 147, 129, 152, 147, 153, 170, 165, 162, 176, 172, 161, 176, 172, 158, 174, 170, 168, 182, 178, 173, 185, 182, + 180, 191, 188, 189, 199, 193, 177, 189, 184, 188, 198, 195, 192, 202, 197, 194, 203, 200, 194, 204, 198, 198, 208, 203, 200, 208, 203, 202, 210, 206, 205, 212, 209, 203, 212, 209, 202, 212, 207, 203, 213, 207, 210, 218, 212, 212, 219, 214, 212, 219, 215, 211, 219, 214, 208, 217, 211, 205, 216, 210, 208, 219, 213, + 208, 218, 212, 210, 221, 215, 211, 219, 216, 211, 220, 217, 211, 220, 217, 211, 221, 215, 215, 224, 218, 220, 227, 224, 222, 229, 226, 222, 229, 226, 223, 229, 226, 217, 227, 222, 217, 227, 224, 215, 226, 223, 218, 228, 225, 220, 229, 226, 221, 230, 226, 221, 230, 227, 223, 232, 229, 225, 233, 230, 229, 236, 233, + 191, 210, 215, 194, 210, 216, 191, 210, 215, 192, 208, 214, 192, 208, 214, 190, 206, 212, 187, 204, 210, 186, 203, 209, 183, 201, 208, 180, 198, 205, 177, 196, 204, 176, 195, 202, 175, 194, 202, 171, 192, 198, 168, 190, 196, 169, 191, 197, 169, 191, 197, 169, 191, 197, 172, 192, 199, 176, 195, 202, 178, 195, 202, + 176, 195, 202, 175, 194, 201, 175, 194, 201, 175, 194, 201, 176, 195, 202, 178, 196, 203, 181, 199, 206, 181, 199, 206, 181, 199, 206, 178, 196, 203, 174, 193, 200, 174, 193, 200, 174, 193, 200, 173, 192, 200, 170, 190, 198, 165, 187, 195, 158, 181, 192, 154, 178, 188, 152, 177, 187, 151, 175, 187, 149, 174, 186, + 148, 174, 186, 143, 170, 184, 146, 172, 186, 143, 169, 184, 143, 168, 184, 139, 166, 182, 132, 160, 177, 126, 156, 173, 113, 144, 164, 107, 140, 159, 105, 137, 157, 102, 134, 154, 96, 130, 150, 95, 128, 148, 97, 128, 149, 100, 130, 150, 98, 126, 148, 94, 122, 142, 86, 116, 134, 85, 114, 131, 86, 114, 131, + 92, 117, 135, 88, 114, 130, 89, 114, 130, 83, 109, 125, 80, 106, 121, 88, 112, 127, 118, 137, 150, 118, 136, 149, 96, 120, 132, 91, 115, 127, 97, 121, 133, 89, 113, 125, 78, 104, 116, 82, 108, 120, 85, 111, 123, 82, 108, 120, 80, 107, 119, 82, 108, 119, 81, 106, 117, 83, 108, 118, 82, 107, 117, + 77, 103, 112, 75, 100, 110, 72, 98, 106, 69, 95, 105, 79, 102, 111, 73, 99, 106, 67, 93, 100, 110, 132, 139, 94, 116, 123, 96, 118, 124, 108, 127, 134, 92, 115, 121, 92, 114, 121, 104, 127, 133, 95, 119, 125, 99, 120, 126, 97, 120, 126, 106, 128, 134, 106, 127, 134, 106, 128, 134, 106, 129, 134, + 97, 119, 125, 99, 122, 126, 97, 119, 123, 98, 120, 125, 97, 118, 123, 97, 117, 122, 97, 117, 122, 95, 116, 121, 96, 116, 121, 89, 112, 118, 88, 111, 117, 87, 112, 116, 84, 109, 113, 82, 107, 111, 87, 111, 115, 85, 110, 113, 82, 106, 107, 88, 109, 113, 87, 108, 112, 91, 110, 113, 90, 110, 114, + 87, 106, 111, 86, 105, 110, 86, 105, 110, 89, 107, 113, 92, 109, 114, 99, 115, 118, 103, 118, 121, 103, 118, 120, 105, 119, 121, 101, 116, 118, 104, 119, 121, 99, 114, 117, 103, 118, 121, 101, 116, 118, 102, 117, 119, 100, 115, 117, 103, 118, 118, 104, 119, 121, 104, 119, 122, 97, 113, 116, 94, 113, 114, + 97, 114, 115, 96, 111, 113, 96, 111, 114, 103, 118, 120, 98, 113, 115, 97, 112, 114, 100, 115, 116, 118, 133, 132, 101, 117, 119, 101, 120, 121, 105, 123, 124, 103, 119, 121, 104, 119, 121, 94, 110, 109, 84, 100, 99, 116, 130, 128, 146, 157, 155, 92, 111, 108, 100, 118, 115, 100, 118, 115, 124, 139, 138, + 98, 115, 113, 105, 120, 119, 100, 114, 113, 130, 140, 138, 155, 163, 164, 94, 107, 107, 99, 111, 112, 147, 157, 157, 88, 100, 102, 97, 109, 111, 152, 160, 163, 86, 98, 100, 100, 112, 112, 104, 119, 117, 103, 117, 116, 92, 108, 107, 95, 110, 109, 94, 109, 108, 123, 135, 134, 87, 103, 101, 95, 110, 108, + 97, 112, 111, 95, 110, 109, 98, 113, 112, 96, 112, 111, 95, 111, 110, 93, 110, 107, 89, 104, 105, 94, 107, 109, 122, 134, 137, 104, 115, 118, 100, 108, 114, 171, 177, 177, 86, 99, 101, 94, 107, 108, 110, 124, 123, 110, 124, 123, 120, 134, 132, 127, 141, 138, 127, 141, 136, 139, 152, 148, 136, 149, 145, + 113, 130, 128, 121, 136, 136, 103, 119, 118, 118, 131, 130, 119, 134, 132, 122, 137, 136, 105, 121, 121, 108, 123, 125, 97, 115, 117, 117, 133, 133, 117, 133, 132, 139, 150, 150, 208, 214, 213, 117, 130, 134, 115, 131, 134, 102, 120, 123, 125, 135, 135, 188, 197, 195, 130, 143, 143, 156, 166, 164, 117, 135, 134, + 119, 139, 137, 116, 136, 137, 123, 143, 142, 141, 156, 155, 117, 137, 137, 123, 141, 142, 132, 148, 147, 132, 149, 149, 119, 141, 142, 130, 150, 151, 126, 146, 148, 131, 150, 151, 134, 153, 152, 134, 155, 151, 121, 146, 140, 141, 161, 156, 161, 176, 172, 158, 174, 170, 163, 178, 174, 169, 183, 179, 175, 186, 183, + 174, 185, 182, 184, 195, 192, 184, 195, 191, 185, 195, 191, 195, 203, 199, 194, 203, 200, 198, 206, 203, 199, 208, 203, 201, 209, 204, 202, 209, 206, 205, 212, 208, 200, 209, 206, 197, 208, 202, 201, 211, 205, 206, 214, 209, 210, 217, 212, 212, 219, 214, 211, 219, 214, 208, 217, 211, 202, 214, 208, 204, 216, 210, + 209, 218, 213, 208, 218, 213, 212, 221, 217, 211, 220, 217, 212, 221, 218, 213, 222, 219, 213, 222, 220, 218, 226, 223, 220, 227, 224, 221, 229, 226, 223, 230, 227, 218, 228, 223, 217, 227, 224, 215, 226, 223, 215, 226, 223, 219, 229, 225, 220, 229, 226, 222, 231, 228, 225, 233, 230, 228, 234, 232, 229, 236, 234, + 194, 210, 216, 194, 210, 216, 193, 209, 215, 191, 209, 214, 188, 207, 212, 189, 205, 211, 186, 204, 209, 184, 202, 208, 180, 198, 205, 178, 196, 204, 176, 195, 202, 175, 194, 202, 172, 192, 200, 168, 189, 197, 168, 189, 197, 168, 189, 196, 170, 190, 196, 170, 190, 197, 172, 191, 198, 175, 194, 201, 175, 194, 201, + 174, 192, 199, 172, 191, 198, 172, 192, 198, 172, 193, 199, 175, 194, 201, 177, 196, 203, 179, 197, 204, 181, 199, 206, 180, 198, 205, 176, 195, 202, 175, 194, 201, 173, 192, 200, 173, 192, 200, 173, 192, 199, 170, 190, 198, 168, 188, 196, 162, 183, 194, 159, 181, 192, 157, 180, 191, 154, 178, 190, 152, 176, 188, + 148, 174, 186, 146, 172, 186, 145, 171, 184, 143, 169, 184, 144, 169, 185, 141, 167, 183, 134, 160, 177, 123, 153, 172, 113, 145, 165, 109, 139, 161, 109, 139, 161, 103, 136, 156, 101, 133, 154, 100, 132, 153, 99, 131, 150, 99, 129, 149, 96, 126, 145, 89, 119, 138, 82, 112, 131, 84, 113, 130, 88, 116, 133, + 88, 114, 132, 92, 116, 132, 85, 111, 127, 83, 109, 124, 86, 111, 125, 108, 129, 142, 117, 136, 149, 105, 127, 139, 89, 113, 126, 96, 120, 132, 94, 117, 129, 79, 105, 117, 79, 105, 117, 86, 111, 123, 87, 111, 123, 81, 107, 119, 82, 107, 119, 82, 107, 119, 83, 108, 118, 82, 107, 117, 82, 107, 116, + 76, 102, 110, 72, 97, 107, 68, 93, 103, 75, 99, 108, 77, 102, 109, 68, 94, 101, 98, 121, 129, 92, 116, 122, 81, 104, 110, 104, 126, 131, 106, 127, 132, 90, 112, 117, 99, 121, 126, 105, 127, 132, 96, 119, 125, 100, 122, 128, 105, 127, 133, 112, 133, 139, 106, 128, 133, 109, 131, 136, 97, 121, 126, + 99, 122, 126, 95, 117, 122, 96, 118, 123, 100, 122, 127, 99, 120, 125, 98, 118, 123, 96, 116, 121, 96, 116, 121, 93, 113, 118, 89, 110, 117, 90, 113, 119, 87, 112, 116, 85, 111, 114, 84, 108, 113, 89, 113, 115, 82, 107, 110, 80, 103, 105, 81, 102, 105, 86, 106, 111, 85, 106, 111, 79, 99, 104, + 80, 99, 105, 81, 100, 105, 84, 103, 108, 90, 109, 114, 93, 110, 115, 100, 115, 119, 100, 115, 118, 104, 119, 122, 101, 116, 118, 105, 119, 121, 102, 117, 119, 100, 115, 117, 98, 113, 115, 97, 112, 114, 100, 114, 116, 102, 117, 117, 105, 119, 119, 108, 123, 126, 98, 113, 116, 98, 113, 116, 100, 115, 117, + 99, 114, 116, 96, 111, 113, 105, 120, 123, 102, 116, 120, 97, 113, 114, 99, 115, 114, 108, 123, 122, 109, 124, 123, 105, 120, 122, 109, 127, 128, 102, 120, 121, 103, 117, 120, 102, 116, 118, 97, 112, 111, 85, 101, 100, 123, 134, 132, 142, 153, 151, 91, 109, 106, 107, 124, 121, 104, 121, 118, 122, 137, 135, + 97, 115, 114, 104, 119, 118, 103, 117, 116, 120, 132, 131, 98, 112, 110, 156, 162, 161, 102, 115, 114, 94, 108, 107, 148, 156, 157, 101, 113, 114, 96, 106, 109, 147, 155, 157, 104, 116, 119, 98, 111, 110, 125, 137, 135, 90, 105, 103, 91, 106, 105, 95, 110, 109, 86, 102, 100, 127, 139, 138, 95, 109, 108, + 100, 114, 113, 100, 113, 112, 96, 111, 111, 99, 115, 114, 94, 109, 110, 86, 103, 102, 90, 104, 106, 99, 112, 114, 125, 137, 139, 99, 111, 114, 104, 117, 119, 120, 130, 133, 128, 137, 138, 104, 116, 117, 116, 130, 129, 115, 129, 128, 128, 142, 140, 134, 146, 143, 128, 142, 136, 146, 157, 152, 121, 137, 132, + 108, 124, 122, 112, 128, 127, 103, 120, 119, 113, 129, 128, 108, 124, 123, 112, 128, 126, 106, 122, 121, 107, 123, 121, 92, 111, 110, 112, 128, 127, 116, 132, 132, 118, 134, 134, 129, 142, 146, 193, 200, 201, 96, 113, 116, 105, 119, 121, 126, 141, 142, 122, 135, 136, 191, 199, 198, 142, 154, 152, 121, 137, 135, + 117, 136, 135, 115, 136, 134, 129, 147, 146, 133, 150, 149, 120, 140, 140, 109, 129, 130, 129, 144, 146, 134, 149, 149, 122, 142, 143, 124, 143, 145, 126, 146, 146, 124, 145, 146, 137, 155, 156, 132, 152, 149, 122, 146, 140, 131, 153, 148, 152, 169, 165, 164, 179, 175, 164, 179, 175, 169, 183, 179, 176, 187, 184, + 175, 186, 183, 176, 187, 184, 190, 199, 195, 186, 197, 190, 196, 204, 201, 201, 208, 204, 197, 206, 203, 199, 208, 205, 202, 210, 205, 201, 209, 204, 205, 212, 209, 201, 209, 206, 195, 206, 200, 196, 207, 201, 203, 213, 207, 208, 217, 212, 211, 218, 215, 209, 218, 215, 207, 216, 214, 202, 214, 208, 205, 216, 210, + 207, 217, 213, 210, 219, 216, 211, 220, 217, 213, 222, 218, 214, 223, 219, 215, 224, 221, 216, 225, 222, 219, 225, 222, 220, 227, 224, 220, 229, 226, 217, 226, 223, 217, 227, 224, 219, 228, 226, 216, 226, 225, 215, 226, 223, 216, 228, 224, 219, 229, 227, 222, 230, 228, 225, 232, 229, 228, 234, 232, 229, 236, 234, + 194, 210, 216, 194, 210, 216, 193, 209, 215, 190, 207, 213, 188, 207, 212, 186, 205, 210, 183, 201, 207, 180, 198, 205, 177, 195, 202, 174, 194, 202, 174, 193, 201, 173, 192, 200, 169, 189, 197, 167, 187, 196, 166, 187, 195, 167, 188, 196, 168, 187, 194, 169, 189, 196, 171, 191, 197, 172, 191, 198, 170, 191, 197, + 171, 191, 198, 166, 188, 196, 168, 189, 197, 169, 191, 198, 172, 192, 198, 174, 193, 200, 177, 196, 202, 180, 198, 205, 178, 196, 203, 175, 194, 201, 174, 193, 201, 173, 192, 200, 174, 193, 201, 173, 192, 200, 173, 192, 199, 168, 189, 197, 164, 184, 195, 159, 182, 192, 160, 181, 193, 157, 179, 191, 155, 179, 191, + 150, 176, 188, 148, 174, 186, 144, 170, 183, 143, 169, 183, 145, 170, 185, 141, 166, 182, 132, 160, 177, 123, 152, 172, 115, 146, 167, 111, 141, 162, 107, 138, 159, 107, 138, 159, 104, 136, 157, 104, 134, 156, 101, 131, 151, 98, 129, 148, 91, 121, 139, 83, 113, 131, 82, 112, 129, 85, 114, 131, 87, 115, 132, + 91, 117, 133, 86, 112, 129, 85, 110, 126, 85, 111, 126, 100, 124, 138, 112, 134, 146, 107, 128, 140, 95, 117, 131, 94, 118, 131, 97, 121, 133, 83, 108, 121, 78, 103, 116, 81, 107, 119, 88, 112, 124, 85, 111, 123, 83, 109, 121, 82, 108, 120, 82, 108, 120, 81, 107, 117, 82, 107, 117, 78, 103, 113, + 73, 98, 107, 71, 96, 106, 69, 94, 104, 75, 100, 109, 72, 97, 105, 94, 117, 125, 88, 112, 118, 76, 100, 106, 86, 110, 115, 113, 133, 138, 98, 119, 124, 91, 113, 118, 103, 125, 130, 103, 125, 130, 98, 121, 127, 106, 128, 134, 110, 132, 138, 103, 126, 132, 107, 128, 134, 101, 123, 128, 101, 123, 128, + 101, 123, 128, 99, 123, 127, 99, 122, 126, 98, 119, 124, 95, 117, 122, 98, 119, 124, 98, 117, 122, 94, 114, 119, 93, 112, 118, 91, 111, 117, 88, 110, 116, 90, 113, 119, 85, 110, 115, 84, 107, 112, 87, 109, 113, 79, 102, 105, 84, 105, 108, 77, 99, 104, 83, 104, 110, 77, 97, 104, 80, 99, 106, + 79, 99, 106, 76, 95, 102, 82, 102, 108, 80, 100, 106, 88, 107, 113, 93, 109, 115, 100, 115, 119, 100, 115, 117, 100, 115, 117, 100, 115, 117, 101, 116, 119, 101, 116, 120, 101, 116, 119, 98, 113, 115, 97, 112, 115, 102, 116, 119, 107, 119, 123, 102, 116, 119, 97, 112, 115, 99, 114, 117, 101, 115, 117, + 101, 114, 118, 100, 115, 118, 103, 118, 121, 101, 116, 119, 99, 114, 116, 98, 114, 113, 113, 127, 126, 105, 122, 121, 108, 123, 125, 108, 124, 126, 105, 120, 123, 101, 117, 118, 104, 117, 119, 96, 110, 111, 85, 101, 100, 126, 137, 135, 143, 153, 151, 102, 118, 116, 112, 128, 125, 103, 120, 117, 125, 140, 139, + 103, 121, 121, 104, 119, 120, 100, 114, 115, 108, 121, 121, 105, 117, 117, 165, 175, 174, 95, 108, 108, 102, 115, 115, 155, 164, 165, 91, 104, 105, 108, 118, 120, 162, 167, 170, 99, 110, 113, 98, 111, 111, 92, 108, 105, 112, 126, 124, 93, 109, 107, 93, 108, 107, 92, 108, 107, 114, 128, 127, 90, 105, 104, + 90, 106, 105, 96, 109, 109, 95, 109, 111, 104, 118, 121, 91, 109, 110, 78, 96, 97, 94, 108, 110, 97, 110, 112, 114, 125, 128, 102, 115, 118, 103, 116, 118, 82, 97, 100, 159, 167, 171, 116, 122, 124, 118, 131, 132, 120, 134, 132, 132, 143, 143, 131, 143, 140, 135, 147, 141, 140, 152, 147, 116, 131, 127, + 100, 117, 114, 105, 123, 121, 101, 118, 117, 110, 126, 125, 101, 120, 119, 101, 118, 117, 103, 121, 120, 99, 119, 117, 101, 119, 118, 109, 128, 128, 120, 136, 136, 104, 122, 124, 120, 136, 139, 121, 132, 136, 184, 192, 195, 100, 115, 117, 123, 137, 138, 124, 138, 139, 131, 144, 144, 189, 198, 195, 118, 132, 133, + 123, 139, 140, 123, 141, 141, 133, 149, 148, 136, 152, 152, 112, 133, 132, 105, 125, 126, 120, 137, 139, 128, 142, 145, 127, 145, 146, 122, 141, 142, 118, 139, 139, 123, 143, 144, 127, 147, 147, 127, 147, 146, 124, 147, 143, 128, 151, 148, 151, 168, 165, 160, 174, 172, 164, 179, 175, 167, 181, 177, 176, 188, 184, + 175, 186, 183, 176, 187, 184, 175, 186, 181, 198, 206, 201, 194, 203, 200, 200, 207, 204, 198, 207, 204, 199, 208, 203, 203, 211, 206, 201, 210, 204, 203, 211, 209, 199, 208, 205, 193, 205, 201, 194, 206, 200, 199, 209, 205, 204, 213, 210, 207, 215, 212, 207, 216, 213, 208, 217, 214, 206, 217, 211, 203, 215, 209, + 207, 217, 211, 209, 218, 216, 212, 221, 218, 214, 223, 220, 213, 222, 218, 215, 224, 221, 216, 225, 222, 220, 227, 224, 220, 227, 224, 220, 228, 225, 217, 226, 223, 214, 226, 223, 217, 226, 225, 218, 226, 225, 216, 226, 224, 217, 227, 225, 218, 228, 226, 220, 228, 226, 224, 233, 230, 227, 234, 231, 230, 237, 235, + 193, 209, 215, 193, 208, 214, 190, 207, 212, 188, 207, 212, 187, 206, 211, 183, 201, 208, 179, 198, 205, 176, 196, 202, 172, 193, 200, 173, 193, 201, 169, 190, 198, 169, 189, 197, 168, 187, 195, 165, 187, 195, 166, 186, 194, 164, 185, 193, 164, 186, 193, 168, 189, 195, 167, 189, 195, 167, 190, 196, 167, 189, 196, + 167, 188, 197, 165, 187, 195, 166, 188, 196, 168, 189, 197, 170, 190, 198, 173, 192, 199, 175, 194, 200, 175, 194, 201, 175, 194, 201, 173, 192, 200, 173, 192, 200, 173, 193, 200, 174, 193, 201, 173, 192, 199, 173, 192, 200, 169, 189, 197, 165, 186, 197, 163, 185, 196, 162, 184, 195, 160, 182, 194, 155, 179, 191, + 151, 177, 189, 149, 174, 188, 144, 171, 184, 143, 170, 184, 144, 170, 184, 140, 166, 182, 131, 159, 176, 123, 152, 171, 114, 144, 166, 111, 141, 162, 109, 139, 160, 108, 139, 160, 104, 135, 156, 105, 135, 155, 101, 131, 150, 94, 125, 145, 81, 114, 131, 83, 113, 130, 82, 112, 129, 85, 114, 131, 87, 115, 131, + 89, 115, 132, 89, 114, 130, 86, 111, 127, 94, 119, 134, 108, 131, 144, 107, 129, 141, 99, 121, 135, 93, 116, 131, 97, 120, 134, 85, 110, 124, 75, 101, 115, 78, 104, 118, 82, 106, 121, 89, 113, 124, 86, 111, 124, 84, 109, 121, 84, 109, 121, 84, 109, 120, 81, 107, 117, 79, 104, 114, 75, 101, 111, + 71, 97, 105, 69, 94, 104, 72, 97, 107, 82, 105, 114, 92, 115, 123, 84, 107, 115, 73, 99, 105, 77, 102, 108, 101, 123, 128, 112, 132, 137, 94, 115, 120, 96, 118, 123, 110, 131, 135, 100, 122, 127, 104, 126, 131, 112, 134, 139, 105, 128, 134, 101, 124, 131, 101, 123, 128, 100, 123, 129, 99, 122, 128, + 95, 121, 124, 100, 122, 128, 98, 121, 126, 96, 118, 123, 102, 122, 127, 95, 117, 122, 93, 115, 120, 94, 115, 120, 93, 114, 119, 89, 111, 117, 89, 111, 117, 90, 113, 119, 87, 109, 115, 87, 109, 113, 84, 105, 110, 79, 101, 106, 76, 98, 103, 75, 97, 103, 76, 98, 104, 73, 95, 101, 73, 94, 100, + 71, 93, 99, 76, 97, 104, 76, 96, 102, 81, 100, 106, 83, 102, 109, 95, 111, 118, 92, 108, 114, 98, 114, 116, 100, 115, 117, 100, 116, 118, 93, 111, 113, 95, 111, 115, 95, 109, 113, 88, 103, 106, 93, 106, 108, 105, 118, 120, 105, 116, 119, 104, 116, 119, 99, 113, 116, 102, 116, 119, 99, 114, 116, + 102, 116, 119, 100, 115, 118, 106, 119, 123, 100, 116, 119, 97, 112, 114, 101, 117, 116, 114, 129, 128, 109, 124, 122, 106, 120, 121, 105, 119, 122, 108, 122, 125, 105, 119, 121, 102, 116, 118, 96, 110, 109, 93, 108, 107, 120, 132, 130, 131, 143, 141, 117, 132, 129, 109, 125, 123, 109, 125, 122, 126, 141, 139, + 103, 121, 121, 100, 114, 118, 103, 118, 122, 98, 111, 114, 126, 138, 138, 139, 149, 147, 124, 134, 135, 102, 115, 117, 115, 127, 129, 134, 145, 146, 110, 121, 124, 110, 120, 124, 151, 159, 161, 100, 113, 113, 96, 113, 110, 107, 123, 120, 87, 105, 104, 90, 108, 107, 87, 105, 104, 87, 104, 103, 113, 127, 126, + 95, 110, 109, 96, 110, 110, 96, 109, 111, 101, 116, 119, 88, 106, 108, 89, 106, 108, 86, 104, 104, 100, 115, 117, 109, 123, 125, 100, 115, 117, 91, 107, 110, 88, 103, 106, 86, 99, 102, 188, 193, 196, 120, 130, 132, 119, 132, 133, 133, 144, 144, 137, 147, 146, 146, 155, 153, 134, 147, 144, 103, 118, 114, + 101, 119, 116, 99, 117, 116, 97, 115, 115, 101, 118, 119, 104, 121, 122, 96, 114, 113, 101, 120, 120, 91, 113, 111, 103, 122, 120, 98, 118, 119, 121, 137, 138, 102, 120, 122, 116, 131, 135, 122, 138, 143, 91, 106, 111, 185, 192, 193, 123, 136, 136, 121, 136, 136, 134, 147, 146, 131, 145, 146, 181, 189, 189, + 115, 131, 133, 125, 140, 141, 129, 145, 144, 125, 142, 141, 115, 134, 134, 106, 126, 127, 110, 130, 131, 117, 136, 136, 127, 143, 145, 122, 142, 143, 119, 140, 141, 126, 145, 146, 125, 146, 145, 129, 150, 149, 122, 145, 142, 126, 149, 145, 143, 162, 159, 156, 171, 169, 165, 179, 176, 167, 181, 177, 171, 185, 181, + 175, 185, 182, 175, 186, 183, 176, 188, 183, 183, 194, 188, 204, 211, 208, 200, 207, 203, 200, 207, 202, 197, 208, 202, 205, 213, 208, 199, 208, 202, 199, 209, 202, 199, 208, 205, 189, 203, 198, 191, 203, 199, 197, 207, 204, 204, 213, 210, 206, 215, 212, 208, 217, 212, 207, 217, 211, 208, 217, 211, 206, 218, 212, + 205, 215, 212, 210, 218, 215, 213, 221, 218, 212, 222, 219, 214, 223, 220, 218, 224, 221, 219, 226, 223, 220, 227, 224, 221, 228, 225, 220, 227, 224, 218, 227, 224, 213, 224, 221, 212, 223, 221, 215, 226, 224, 216, 227, 225, 216, 227, 225, 217, 227, 225, 217, 228, 226, 223, 232, 229, 224, 233, 231, 229, 235, 234, + 193, 209, 215, 190, 207, 212, 190, 207, 213, 186, 205, 211, 182, 200, 208, 177, 199, 205, 174, 196, 202, 171, 193, 200, 170, 191, 199, 168, 189, 197, 169, 189, 197, 168, 187, 195, 165, 185, 193, 163, 184, 192, 159, 183, 191, 160, 183, 191, 164, 185, 192, 164, 186, 192, 165, 187, 193, 165, 187, 194, 162, 187, 193, + 162, 186, 194, 162, 186, 194, 162, 186, 194, 167, 188, 196, 166, 187, 195, 169, 189, 197, 171, 190, 198, 170, 190, 197, 171, 190, 198, 169, 189, 197, 170, 190, 198, 172, 191, 199, 174, 193, 200, 174, 193, 200, 173, 192, 200, 170, 190, 198, 167, 187, 197, 165, 186, 196, 163, 184, 196, 161, 183, 195, 156, 180, 192, + 153, 176, 190, 147, 174, 187, 144, 171, 185, 143, 170, 184, 144, 169, 185, 140, 166, 182, 131, 159, 176, 122, 152, 170, 115, 145, 166, 114, 143, 164, 109, 140, 161, 107, 139, 159, 105, 136, 156, 104, 134, 153, 97, 127, 146, 90, 120, 139, 79, 111, 128, 83, 113, 129, 84, 113, 130, 87, 115, 132, 88, 115, 132, + 90, 116, 132, 90, 114, 131, 91, 116, 131, 101, 124, 139, 104, 128, 140, 102, 124, 137, 94, 117, 132, 96, 119, 134, 88, 113, 128, 78, 104, 118, 76, 102, 116, 78, 104, 118, 86, 110, 125, 89, 113, 125, 85, 110, 123, 85, 110, 122, 84, 109, 121, 84, 109, 120, 78, 105, 115, 79, 104, 114, 70, 97, 107, + 68, 95, 105, 69, 94, 104, 84, 109, 116, 99, 121, 129, 82, 107, 114, 74, 100, 107, 74, 100, 108, 84, 108, 115, 109, 131, 136, 102, 124, 129, 91, 113, 118, 106, 127, 132, 106, 128, 132, 101, 124, 128, 113, 135, 140, 108, 130, 135, 101, 123, 128, 101, 123, 128, 101, 123, 128, 100, 124, 128, 99, 122, 128, + 97, 122, 128, 99, 121, 127, 98, 121, 126, 98, 120, 125, 96, 118, 123, 91, 113, 118, 92, 114, 119, 95, 116, 121, 91, 113, 118, 90, 111, 118, 88, 110, 116, 85, 107, 113, 88, 110, 116, 86, 106, 112, 85, 105, 110, 75, 97, 102, 79, 101, 106, 73, 96, 101, 74, 97, 103, 71, 93, 99, 73, 95, 101, + 70, 92, 98, 75, 95, 100, 72, 92, 97, 78, 98, 103, 83, 102, 108, 90, 107, 113, 92, 109, 113, 97, 112, 115, 96, 114, 116, 94, 111, 113, 93, 110, 113, 93, 107, 113, 89, 104, 109, 89, 103, 106, 94, 107, 109, 99, 112, 113, 99, 112, 113, 99, 113, 112, 98, 112, 111, 98, 112, 114, 104, 119, 121, + 102, 116, 119, 102, 116, 119, 102, 116, 119, 102, 117, 119, 99, 113, 115, 106, 120, 119, 115, 128, 128, 111, 123, 123, 107, 120, 121, 105, 118, 120, 107, 120, 122, 105, 118, 120, 97, 111, 112, 93, 108, 107, 96, 110, 109, 123, 134, 133, 116, 128, 128, 134, 145, 144, 112, 126, 126, 107, 122, 120, 122, 136, 134, + 103, 116, 116, 103, 118, 121, 103, 118, 121, 100, 113, 117, 128, 141, 140, 104, 116, 114, 167, 174, 174, 109, 122, 122, 102, 116, 119, 162, 171, 171, 117, 129, 131, 110, 121, 125, 161, 166, 173, 89, 103, 108, 91, 106, 106, 89, 107, 105, 110, 125, 124, 93, 109, 108, 88, 106, 105, 90, 106, 105, 109, 123, 123, + 92, 108, 107, 97, 110, 110, 104, 117, 119, 98, 113, 116, 89, 106, 108, 86, 104, 104, 90, 107, 106, 103, 118, 119, 100, 116, 116, 97, 112, 114, 90, 106, 109, 89, 105, 108, 100, 112, 115, 132, 138, 141, 168, 172, 174, 117, 127, 130, 120, 129, 131, 150, 157, 158, 147, 156, 155, 121, 135, 133, 98, 117, 114, + 94, 112, 110, 94, 112, 111, 99, 114, 116, 104, 119, 120, 103, 119, 120, 95, 115, 114, 98, 118, 118, 92, 112, 113, 105, 123, 122, 98, 119, 118, 113, 129, 130, 102, 118, 121, 107, 124, 125, 120, 136, 137, 96, 114, 116, 110, 125, 127, 193, 200, 200, 117, 131, 131, 132, 145, 145, 126, 141, 142, 138, 151, 152, + 172, 182, 182, 127, 141, 143, 131, 147, 148, 125, 143, 143, 105, 125, 126, 102, 121, 122, 112, 130, 132, 122, 140, 141, 118, 137, 138, 120, 141, 142, 128, 148, 149, 123, 144, 145, 121, 142, 143, 129, 149, 150, 128, 149, 148, 128, 150, 147, 143, 161, 158, 149, 165, 162, 162, 176, 173, 167, 181, 177, 170, 184, 180, + 176, 187, 185, 174, 185, 181, 178, 189, 186, 181, 191, 187, 195, 203, 200, 203, 210, 207, 199, 205, 200, 196, 207, 201, 203, 210, 205, 200, 208, 202, 193, 205, 198, 193, 204, 201, 193, 204, 201, 191, 203, 199, 195, 206, 203, 203, 212, 209, 206, 215, 212, 205, 214, 210, 208, 217, 214, 208, 217, 214, 210, 219, 215, + 208, 217, 214, 209, 218, 215, 212, 220, 217, 213, 222, 219, 214, 223, 220, 219, 225, 222, 218, 225, 222, 220, 227, 224, 222, 229, 226, 221, 228, 225, 221, 228, 226, 216, 226, 223, 214, 225, 222, 213, 225, 223, 214, 225, 223, 217, 228, 226, 218, 228, 226, 219, 228, 227, 220, 230, 227, 223, 232, 230, 227, 235, 233, + 192, 208, 214, 190, 207, 213, 187, 206, 211, 182, 201, 208, 180, 199, 206, 174, 196, 202, 172, 193, 201, 168, 192, 199, 167, 190, 196, 167, 188, 196, 166, 187, 195, 166, 187, 195, 162, 184, 192, 159, 182, 190, 160, 183, 191, 160, 183, 191, 160, 183, 191, 161, 184, 190, 162, 184, 190, 161, 185, 191, 161, 184, 191, + 162, 185, 193, 161, 184, 192, 164, 186, 194, 166, 187, 195, 166, 187, 195, 167, 187, 195, 166, 187, 195, 164, 186, 194, 165, 186, 194, 164, 186, 194, 168, 188, 196, 169, 190, 198, 172, 191, 199, 173, 192, 200, 173, 192, 200, 169, 189, 199, 167, 187, 198, 167, 187, 198, 165, 185, 196, 162, 184, 196, 157, 179, 192, + 153, 177, 190, 148, 174, 188, 144, 171, 185, 145, 171, 185, 144, 169, 183, 139, 164, 181, 131, 158, 173, 121, 150, 167, 113, 144, 163, 110, 141, 160, 111, 141, 160, 107, 138, 157, 107, 137, 157, 98, 129, 148, 93, 123, 142, 85, 116, 134, 80, 111, 130, 84, 113, 130, 85, 114, 131, 86, 114, 131, 89, 115, 132, + 90, 115, 131, 90, 115, 132, 98, 122, 137, 101, 124, 139, 99, 122, 136, 96, 119, 133, 94, 117, 132, 94, 117, 132, 81, 107, 121, 73, 99, 113, 76, 103, 115, 80, 106, 118, 88, 112, 124, 88, 112, 124, 83, 109, 121, 82, 108, 120, 86, 109, 122, 83, 108, 119, 79, 104, 114, 75, 101, 111, 66, 93, 103, + 64, 91, 100, 85, 111, 117, 103, 126, 134, 79, 104, 111, 72, 99, 106, 74, 100, 107, 79, 102, 110, 93, 115, 122, 111, 133, 138, 95, 117, 122, 94, 116, 121, 109, 129, 134, 108, 129, 134, 111, 132, 137, 108, 130, 135, 102, 124, 129, 102, 124, 129, 100, 122, 127, 100, 122, 127, 101, 123, 128, 97, 121, 125, + 98, 121, 127, 97, 120, 125, 96, 119, 125, 96, 118, 123, 96, 118, 123, 97, 118, 123, 95, 116, 121, 92, 114, 119, 92, 112, 117, 94, 114, 120, 94, 114, 120, 87, 109, 115, 86, 105, 112, 83, 103, 108, 78, 98, 103, 76, 97, 102, 78, 100, 106, 72, 96, 101, 71, 94, 100, 66, 88, 94, 70, 91, 98, + 73, 93, 99, 67, 87, 93, 69, 89, 94, 75, 95, 100, 85, 104, 109, 85, 104, 109, 85, 102, 106, 89, 107, 110, 90, 107, 113, 87, 104, 109, 86, 101, 107, 81, 96, 99, 80, 95, 100, 83, 97, 99, 94, 107, 109, 94, 107, 109, 98, 111, 111, 95, 109, 108, 99, 113, 111, 97, 112, 114, 96, 111, 113, + 98, 113, 115, 103, 116, 119, 98, 111, 113, 98, 111, 112, 100, 114, 114, 105, 117, 117, 108, 120, 120, 107, 119, 119, 110, 122, 124, 102, 114, 116, 106, 119, 121, 102, 116, 117, 97, 112, 113, 94, 108, 108, 100, 113, 113, 122, 133, 133, 99, 112, 112, 144, 153, 153, 114, 127, 126, 108, 122, 120, 121, 134, 132, + 97, 111, 111, 104, 117, 119, 107, 119, 122, 102, 115, 118, 129, 140, 138, 119, 130, 128, 161, 167, 167, 99, 112, 112, 121, 133, 134, 147, 158, 157, 118, 129, 131, 111, 123, 125, 108, 118, 126, 145, 154, 159, 91, 106, 109, 91, 108, 106, 95, 111, 110, 95, 111, 109, 89, 105, 104, 93, 108, 107, 95, 110, 109, + 113, 126, 125, 98, 112, 112, 98, 112, 114, 99, 114, 116, 85, 102, 103, 79, 98, 97, 103, 119, 118, 93, 111, 109, 94, 110, 111, 94, 111, 114, 87, 104, 105, 87, 103, 105, 103, 115, 117, 128, 135, 137, 169, 174, 175, 106, 111, 112, 129, 136, 138, 146, 153, 153, 134, 144, 144, 110, 125, 124, 92, 112, 110, + 94, 113, 112, 91, 109, 110, 100, 114, 117, 100, 115, 114, 109, 123, 122, 98, 115, 113, 96, 114, 115, 87, 107, 108, 103, 121, 122, 96, 113, 114, 107, 122, 124, 100, 118, 118, 105, 123, 121, 115, 132, 128, 93, 113, 110, 112, 129, 126, 132, 140, 140, 185, 191, 192, 120, 132, 134, 120, 136, 136, 119, 135, 137, + 146, 158, 157, 166, 176, 175, 126, 141, 142, 119, 138, 139, 99, 119, 120, 100, 121, 123, 109, 129, 130, 111, 131, 132, 120, 139, 140, 120, 140, 141, 127, 147, 148, 123, 144, 145, 126, 146, 147, 128, 148, 149, 135, 155, 154, 129, 149, 148, 144, 161, 159, 150, 167, 164, 158, 172, 170, 165, 178, 175, 167, 181, 177, + 175, 185, 182, 176, 187, 184, 180, 191, 188, 181, 192, 189, 190, 200, 195, 204, 211, 206, 198, 207, 201, 198, 207, 201, 199, 207, 202, 201, 208, 203, 190, 201, 195, 186, 200, 194, 192, 202, 199, 192, 203, 200, 194, 205, 201, 202, 211, 207, 206, 215, 211, 207, 216, 212, 208, 217, 212, 209, 219, 215, 209, 218, 215, + 208, 218, 215, 208, 218, 215, 213, 221, 218, 214, 222, 219, 216, 223, 220, 218, 225, 222, 220, 227, 224, 221, 228, 225, 221, 228, 225, 223, 230, 227, 223, 230, 226, 219, 227, 226, 216, 226, 224, 213, 225, 223, 213, 224, 222, 216, 226, 224, 217, 228, 226, 218, 229, 227, 218, 229, 227, 222, 231, 228, 224, 233, 230, + 190, 206, 213, 187, 205, 211, 184, 203, 210, 180, 199, 206, 175, 197, 203, 173, 194, 201, 170, 192, 199, 167, 190, 198, 165, 187, 195, 166, 187, 194, 166, 187, 194, 163, 184, 192, 160, 182, 190, 158, 181, 189, 158, 181, 189, 159, 182, 191, 162, 184, 192, 164, 185, 192, 161, 184, 190, 160, 184, 190, 160, 183, 190, + 162, 184, 192, 160, 183, 191, 161, 183, 191, 162, 184, 193, 161, 184, 193, 162, 185, 194, 159, 184, 191, 158, 183, 191, 159, 183, 191, 162, 184, 192, 165, 186, 194, 170, 189, 197, 172, 191, 199, 172, 191, 199, 170, 191, 199, 168, 189, 198, 167, 188, 199, 166, 186, 197, 165, 185, 196, 161, 183, 194, 156, 179, 191, + 152, 176, 189, 147, 173, 187, 147, 173, 187, 145, 172, 186, 143, 169, 182, 137, 162, 178, 128, 156, 172, 118, 148, 165, 116, 146, 164, 113, 143, 162, 112, 142, 161, 108, 139, 158, 103, 134, 153, 97, 127, 146, 91, 121, 140, 83, 114, 133, 81, 111, 130, 85, 114, 132, 86, 114, 131, 86, 114, 131, 90, 116, 132, + 91, 116, 132, 95, 120, 135, 102, 126, 140, 98, 122, 135, 96, 120, 133, 95, 119, 132, 95, 119, 132, 85, 110, 124, 76, 102, 116, 75, 102, 115, 80, 106, 118, 83, 109, 121, 91, 115, 127, 87, 112, 124, 83, 108, 120, 83, 107, 119, 84, 108, 120, 83, 108, 118, 76, 101, 111, 69, 95, 105, 69, 96, 104, + 89, 113, 121, 93, 118, 125, 82, 107, 113, 74, 100, 107, 75, 100, 110, 76, 102, 109, 83, 106, 114, 105, 126, 132, 108, 129, 134, 93, 115, 120, 100, 122, 127, 116, 137, 142, 113, 135, 140, 108, 130, 135, 103, 125, 130, 102, 124, 129, 100, 122, 127, 100, 122, 127, 100, 122, 127, 97, 119, 124, 98, 120, 125, + 100, 122, 128, 94, 118, 124, 94, 118, 122, 96, 118, 123, 95, 118, 123, 96, 118, 123, 98, 119, 124, 97, 118, 123, 93, 113, 118, 88, 109, 115, 87, 109, 114, 82, 103, 109, 83, 102, 108, 80, 100, 104, 79, 99, 104, 75, 97, 102, 75, 98, 103, 73, 97, 101, 68, 92, 97, 69, 91, 97, 71, 91, 97, + 66, 87, 94, 70, 90, 96, 72, 91, 96, 73, 93, 98, 77, 97, 102, 81, 100, 105, 82, 99, 103, 85, 103, 108, 90, 106, 112, 85, 100, 106, 76, 92, 98, 78, 91, 98, 74, 87, 94, 78, 92, 98, 87, 100, 104, 93, 105, 108, 92, 105, 106, 95, 108, 108, 96, 110, 109, 94, 107, 109, 100, 113, 115, + 97, 110, 112, 97, 109, 112, 101, 113, 114, 103, 114, 114, 102, 113, 113, 105, 117, 116, 104, 116, 115, 101, 113, 113, 105, 117, 118, 106, 118, 120, 102, 114, 116, 96, 110, 112, 96, 110, 112, 95, 108, 110, 112, 123, 123, 107, 119, 119, 91, 104, 104, 148, 157, 157, 112, 124, 123, 102, 115, 113, 114, 126, 124, + 99, 112, 112, 104, 117, 118, 102, 115, 117, 103, 115, 117, 130, 141, 138, 119, 130, 128, 124, 134, 134, 156, 164, 165, 118, 129, 128, 109, 120, 120, 161, 169, 168, 114, 127, 126, 103, 116, 117, 157, 165, 171, 84, 98, 101, 91, 106, 104, 95, 110, 108, 102, 115, 113, 97, 110, 109, 97, 111, 109, 92, 106, 106, + 111, 123, 123, 102, 116, 115, 98, 113, 114, 99, 114, 115, 79, 97, 98, 94, 111, 110, 105, 121, 120, 87, 105, 104, 94, 111, 110, 91, 108, 107, 84, 102, 102, 91, 108, 107, 116, 128, 128, 117, 128, 128, 94, 105, 107, 177, 183, 184, 133, 138, 139, 139, 146, 146, 120, 132, 133, 97, 115, 115, 91, 112, 112, + 89, 108, 110, 93, 110, 111, 97, 111, 113, 105, 119, 118, 101, 116, 115, 99, 115, 114, 91, 109, 110, 97, 114, 116, 92, 110, 111, 91, 109, 110, 107, 123, 125, 105, 121, 122, 114, 130, 129, 103, 121, 118, 98, 117, 114, 111, 128, 125, 120, 134, 136, 131, 135, 135, 173, 179, 180, 113, 129, 131, 117, 133, 134, + 111, 127, 130, 170, 182, 180, 155, 166, 168, 105, 125, 127, 98, 119, 121, 99, 120, 122, 105, 126, 127, 107, 128, 129, 118, 138, 139, 115, 135, 136, 117, 137, 138, 121, 141, 143, 122, 143, 145, 125, 146, 147, 136, 155, 156, 133, 153, 152, 139, 158, 156, 157, 171, 170, 156, 171, 168, 162, 176, 173, 167, 181, 177, + 171, 183, 180, 177, 188, 185, 180, 191, 188, 182, 193, 190, 188, 197, 193, 200, 206, 200, 203, 210, 206, 187, 198, 193, 196, 205, 201, 197, 206, 202, 191, 201, 197, 185, 199, 195, 189, 201, 197, 191, 203, 200, 197, 206, 202, 202, 210, 204, 205, 214, 210, 207, 218, 212, 210, 219, 214, 208, 218, 212, 210, 219, 216, + 210, 219, 216, 212, 220, 218, 212, 220, 216, 216, 223, 219, 216, 224, 221, 216, 225, 222, 220, 227, 224, 221, 228, 225, 223, 230, 227, 222, 229, 226, 224, 231, 227, 220, 229, 225, 217, 227, 224, 214, 225, 222, 214, 226, 224, 213, 225, 223, 215, 226, 224, 217, 228, 226, 219, 229, 227, 221, 230, 228, 224, 233, 230, + 187, 206, 211, 185, 204, 211, 183, 202, 209, 179, 199, 205, 175, 197, 203, 174, 195, 202, 171, 192, 200, 169, 190, 198, 166, 187, 195, 164, 185, 192, 166, 187, 194, 160, 183, 189, 159, 181, 190, 158, 181, 189, 162, 183, 191, 162, 185, 192, 164, 185, 192, 166, 187, 193, 163, 185, 191, 161, 184, 190, 160, 183, 190, + 161, 182, 190, 159, 182, 190, 159, 181, 192, 158, 183, 190, 159, 182, 192, 158, 183, 193, 156, 181, 191, 155, 180, 189, 155, 180, 190, 160, 183, 191, 163, 185, 193, 167, 187, 195, 170, 189, 197, 170, 190, 198, 171, 190, 199, 168, 189, 198, 168, 188, 199, 164, 186, 197, 163, 185, 196, 157, 180, 192, 152, 177, 189, + 149, 174, 188, 148, 174, 189, 145, 171, 185, 145, 170, 185, 141, 166, 181, 132, 159, 175, 124, 153, 169, 117, 147, 163, 116, 145, 164, 115, 145, 164, 113, 142, 160, 108, 137, 156, 104, 133, 150, 93, 123, 141, 86, 116, 134, 85, 115, 134, 85, 115, 134, 88, 115, 134, 88, 116, 133, 92, 118, 135, 90, 116, 132, + 89, 115, 130, 101, 126, 140, 96, 120, 134, 93, 116, 130, 97, 121, 132, 96, 120, 133, 90, 114, 126, 79, 105, 117, 74, 100, 114, 77, 103, 117, 81, 107, 119, 85, 110, 122, 89, 113, 125, 87, 111, 123, 85, 109, 121, 85, 109, 121, 82, 107, 118, 79, 104, 114, 71, 98, 108, 71, 97, 105, 94, 117, 124, + 80, 106, 113, 82, 109, 116, 78, 104, 111, 77, 102, 111, 76, 101, 111, 79, 102, 111, 86, 108, 115, 112, 132, 138, 100, 121, 126, 91, 113, 118, 107, 129, 133, 119, 140, 145, 107, 129, 134, 103, 125, 130, 100, 122, 127, 101, 123, 128, 101, 123, 128, 102, 123, 128, 102, 122, 127, 99, 119, 124, 100, 121, 126, + 98, 120, 125, 97, 119, 124, 96, 118, 123, 96, 118, 123, 96, 118, 123, 95, 117, 122, 95, 117, 122, 94, 116, 121, 92, 112, 117, 86, 107, 112, 84, 106, 111, 81, 105, 109, 75, 99, 103, 79, 101, 104, 77, 98, 102, 74, 97, 102, 75, 98, 103, 69, 93, 99, 69, 92, 98, 66, 89, 95, 69, 91, 97, + 65, 87, 93, 65, 85, 92, 67, 86, 92, 72, 92, 97, 74, 93, 98, 75, 94, 98, 81, 98, 104, 86, 102, 108, 86, 102, 108, 75, 91, 99, 67, 84, 92, 68, 84, 91, 71, 85, 93, 76, 89, 96, 81, 95, 101, 83, 98, 102, 81, 96, 99, 92, 105, 109, 91, 104, 107, 91, 104, 106, 93, 105, 109, + 93, 105, 108, 99, 111, 113, 100, 112, 113, 103, 116, 115, 97, 110, 110, 107, 119, 119, 100, 113, 112, 99, 112, 113, 101, 112, 116, 101, 113, 116, 97, 111, 113, 95, 110, 112, 92, 107, 109, 93, 107, 109, 111, 122, 123, 93, 105, 106, 86, 99, 99, 149, 158, 158, 104, 117, 116, 103, 116, 115, 102, 115, 114, + 95, 108, 107, 104, 115, 117, 106, 118, 119, 103, 115, 116, 130, 140, 138, 122, 132, 131, 112, 122, 123, 167, 175, 174, 118, 128, 127, 124, 134, 134, 160, 166, 166, 103, 117, 115, 110, 123, 122, 109, 120, 121, 133, 142, 145, 92, 107, 105, 96, 110, 108, 94, 108, 107, 105, 118, 117, 96, 108, 108, 97, 110, 109, + 108, 122, 120, 96, 111, 109, 91, 107, 105, 92, 108, 107, 87, 102, 103, 102, 119, 117, 97, 113, 112, 86, 104, 103, 92, 110, 109, 86, 105, 106, 81, 102, 103, 98, 114, 115, 104, 119, 120, 95, 110, 111, 105, 119, 121, 129, 134, 135, 155, 161, 163, 131, 140, 142, 114, 126, 129, 92, 108, 111, 92, 111, 113, + 87, 105, 107, 96, 111, 113, 99, 114, 115, 101, 115, 114, 101, 116, 115, 93, 109, 109, 86, 104, 105, 100, 117, 118, 84, 103, 104, 89, 108, 109, 98, 117, 118, 109, 126, 125, 113, 128, 127, 102, 119, 116, 97, 115, 113, 116, 132, 130, 118, 135, 135, 128, 142, 145, 118, 134, 137, 168, 176, 177, 111, 127, 128, + 119, 134, 136, 127, 141, 143, 189, 196, 195, 109, 124, 128, 92, 113, 117, 102, 122, 124, 103, 124, 125, 110, 131, 132, 114, 133, 134, 116, 136, 137, 120, 140, 141, 120, 140, 143, 125, 145, 147, 120, 142, 143, 129, 149, 150, 138, 157, 157, 138, 158, 156, 153, 169, 168, 151, 168, 165, 160, 173, 171, 163, 177, 173, + 169, 183, 179, 174, 186, 183, 181, 192, 189, 181, 192, 187, 185, 195, 192, 199, 205, 202, 191, 201, 198, 193, 204, 202, 191, 201, 198, 192, 202, 199, 190, 201, 198, 185, 198, 195, 190, 201, 198, 192, 203, 200, 195, 206, 203, 202, 211, 205, 206, 214, 211, 211, 218, 215, 211, 218, 213, 211, 219, 216, 211, 220, 217, + 211, 220, 217, 210, 221, 214, 212, 222, 216, 213, 222, 219, 214, 223, 220, 216, 225, 222, 219, 227, 224, 220, 228, 225, 224, 231, 228, 224, 231, 227, 223, 230, 227, 221, 230, 227, 218, 228, 225, 216, 227, 224, 216, 227, 224, 216, 227, 224, 217, 228, 226, 217, 228, 226, 219, 230, 228, 221, 231, 229, 224, 233, 230, + 188, 206, 211, 185, 203, 210, 183, 202, 209, 180, 199, 206, 178, 197, 204, 175, 195, 201, 171, 192, 199, 168, 191, 196, 165, 187, 195, 165, 187, 194, 163, 185, 192, 160, 183, 190, 162, 184, 190, 163, 184, 192, 162, 184, 191, 166, 186, 193, 168, 187, 194, 166, 186, 193, 164, 185, 193, 162, 183, 190, 160, 183, 190, + 157, 180, 188, 158, 181, 189, 157, 179, 190, 156, 181, 191, 156, 181, 191, 155, 181, 191, 153, 179, 189, 150, 178, 188, 155, 181, 191, 160, 184, 192, 165, 186, 194, 166, 187, 195, 167, 188, 196, 167, 188, 197, 167, 188, 198, 168, 188, 199, 165, 186, 197, 164, 186, 197, 160, 183, 194, 152, 178, 189, 151, 177, 189, + 150, 175, 187, 148, 174, 187, 147, 173, 187, 144, 170, 184, 138, 164, 179, 132, 159, 175, 119, 150, 167, 116, 146, 163, 116, 146, 163, 114, 144, 161, 112, 141, 159, 105, 135, 152, 96, 126, 143, 91, 121, 138, 85, 115, 131, 87, 118, 136, 89, 116, 136, 88, 116, 134, 92, 118, 135, 90, 116, 133, 88, 114, 130, + 96, 121, 136, 103, 126, 141, 90, 113, 128, 95, 118, 132, 98, 122, 134, 96, 121, 133, 81, 107, 119, 76, 102, 114, 76, 102, 116, 79, 105, 119, 82, 106, 121, 88, 112, 124, 88, 113, 125, 85, 109, 121, 85, 109, 121, 85, 109, 121, 81, 106, 117, 77, 102, 112, 72, 99, 109, 89, 114, 122, 75, 100, 108, + 77, 102, 110, 86, 110, 117, 79, 105, 112, 78, 103, 113, 76, 102, 112, 81, 103, 113, 96, 118, 124, 111, 131, 136, 96, 117, 122, 95, 117, 122, 114, 134, 139, 111, 132, 137, 101, 122, 127, 102, 123, 128, 101, 123, 128, 101, 123, 128, 101, 122, 129, 100, 121, 127, 99, 120, 125, 99, 119, 124, 99, 119, 124, + 99, 121, 126, 98, 120, 125, 97, 119, 124, 97, 119, 124, 94, 116, 121, 95, 116, 121, 96, 116, 121, 89, 111, 116, 91, 113, 118, 86, 108, 113, 82, 105, 110, 79, 104, 108, 76, 101, 105, 78, 102, 106, 76, 99, 104, 77, 99, 104, 74, 96, 102, 73, 96, 102, 69, 92, 98, 67, 89, 95, 68, 90, 96, + 71, 91, 97, 66, 87, 93, 69, 88, 95, 68, 87, 93, 71, 91, 95, 70, 90, 94, 75, 92, 98, 75, 92, 99, 72, 90, 97, 67, 85, 94, 63, 79, 91, 62, 79, 89, 61, 79, 87, 70, 84, 91, 73, 87, 93, 76, 90, 95, 82, 97, 100, 87, 102, 105, 83, 98, 101, 85, 100, 103, 91, 105, 107, + 94, 106, 109, 94, 107, 109, 96, 110, 110, 95, 107, 107, 100, 111, 112, 99, 111, 112, 100, 112, 114, 90, 102, 104, 94, 107, 109, 95, 108, 111, 93, 106, 108, 93, 107, 109, 91, 106, 108, 90, 103, 106, 105, 116, 118, 86, 99, 101, 89, 101, 101, 144, 154, 152, 96, 109, 109, 106, 119, 118, 92, 106, 106, + 101, 113, 113, 106, 118, 118, 107, 119, 118, 103, 115, 114, 134, 143, 143, 121, 131, 130, 126, 136, 136, 165, 172, 173, 119, 127, 126, 128, 137, 136, 126, 136, 134, 146, 155, 154, 110, 122, 121, 97, 109, 109, 151, 159, 162, 93, 107, 106, 94, 108, 106, 95, 109, 107, 100, 112, 111, 101, 113, 113, 95, 108, 107, + 98, 112, 110, 109, 124, 120, 91, 109, 105, 91, 108, 105, 94, 109, 108, 104, 118, 117, 91, 108, 107, 89, 107, 108, 88, 106, 106, 84, 104, 105, 81, 101, 102, 98, 116, 117, 90, 110, 111, 92, 110, 112, 105, 118, 120, 100, 110, 111, 177, 184, 186, 112, 121, 124, 105, 117, 120, 94, 108, 112, 91, 108, 111, + 88, 107, 110, 95, 112, 114, 96, 111, 113, 105, 119, 120, 100, 115, 117, 91, 107, 110, 93, 110, 112, 93, 111, 113, 88, 106, 107, 89, 107, 108, 92, 110, 112, 109, 125, 125, 118, 133, 134, 94, 111, 110, 107, 124, 123, 111, 128, 128, 116, 134, 135, 117, 135, 137, 100, 119, 123, 123, 138, 142, 160, 169, 173, + 122, 136, 137, 128, 141, 143, 130, 140, 144, 179, 191, 191, 92, 109, 115, 97, 117, 121, 105, 125, 126, 110, 130, 131, 116, 135, 136, 119, 139, 140, 125, 143, 144, 119, 139, 141, 123, 144, 146, 125, 146, 148, 133, 152, 154, 140, 159, 157, 144, 161, 160, 149, 165, 164, 149, 167, 165, 159, 174, 171, 164, 178, 175, + 169, 182, 179, 174, 187, 184, 174, 187, 183, 182, 193, 190, 184, 195, 192, 196, 204, 201, 184, 196, 193, 185, 198, 194, 191, 202, 199, 188, 199, 196, 188, 199, 196, 187, 198, 195, 189, 200, 197, 193, 203, 200, 196, 206, 200, 199, 209, 203, 205, 213, 209, 209, 216, 211, 211, 218, 212, 210, 218, 215, 210, 218, 215, + 211, 220, 217, 212, 222, 215, 212, 222, 216, 215, 224, 221, 214, 224, 221, 218, 226, 223, 221, 228, 225, 222, 229, 226, 224, 231, 228, 224, 231, 228, 225, 232, 229, 222, 230, 227, 220, 229, 226, 218, 227, 224, 219, 228, 225, 218, 228, 225, 219, 229, 226, 219, 229, 226, 221, 230, 228, 221, 230, 228, 223, 232, 229, + 190, 206, 212, 186, 204, 211, 183, 201, 208, 180, 199, 206, 176, 195, 202, 175, 194, 201, 173, 192, 199, 169, 191, 197, 164, 187, 195, 160, 184, 192, 160, 183, 191, 160, 183, 191, 165, 186, 192, 165, 185, 192, 169, 188, 194, 170, 189, 195, 170, 189, 196, 168, 187, 194, 163, 184, 192, 161, 183, 191, 159, 181, 189, + 158, 181, 191, 157, 180, 191, 154, 179, 189, 156, 181, 191, 155, 180, 190, 153, 179, 189, 151, 178, 188, 150, 177, 187, 154, 180, 190, 160, 185, 192, 162, 186, 194, 165, 186, 194, 165, 187, 195, 164, 186, 196, 166, 187, 198, 165, 187, 198, 164, 186, 197, 161, 185, 195, 157, 182, 192, 152, 179, 189, 149, 175, 187, + 149, 175, 187, 146, 172, 184, 145, 171, 186, 140, 167, 180, 137, 163, 178, 125, 154, 170, 120, 151, 167, 119, 148, 165, 116, 146, 163, 115, 145, 162, 113, 142, 159, 106, 135, 152, 95, 125, 142, 87, 119, 135, 87, 117, 134, 91, 119, 137, 92, 119, 140, 94, 121, 138, 93, 119, 136, 94, 120, 136, 94, 120, 135, + 103, 127, 141, 90, 114, 129, 89, 112, 127, 97, 120, 134, 103, 126, 138, 89, 113, 125, 77, 103, 115, 75, 101, 115, 77, 103, 117, 82, 106, 121, 83, 107, 121, 90, 114, 126, 84, 110, 122, 84, 108, 120, 84, 108, 120, 80, 104, 116, 77, 102, 113, 73, 100, 110, 72, 100, 108, 69, 97, 104, 73, 100, 107, + 83, 108, 115, 84, 106, 114, 78, 101, 110, 77, 102, 112, 76, 101, 111, 82, 104, 113, 107, 127, 134, 108, 128, 133, 92, 115, 119, 103, 123, 128, 116, 136, 141, 105, 125, 130, 100, 121, 126, 103, 124, 129, 101, 123, 129, 100, 122, 128, 101, 123, 129, 102, 123, 129, 99, 120, 127, 99, 120, 125, 98, 120, 125, + 96, 118, 123, 97, 119, 124, 97, 119, 124, 97, 119, 124, 95, 116, 121, 96, 116, 121, 93, 113, 118, 94, 114, 119, 88, 110, 115, 82, 104, 109, 78, 102, 107, 80, 105, 109, 76, 101, 105, 78, 103, 107, 78, 101, 106, 76, 99, 104, 71, 95, 101, 67, 91, 97, 72, 94, 100, 68, 91, 97, 69, 91, 97, + 67, 88, 95, 65, 86, 93, 66, 87, 93, 67, 86, 94, 68, 88, 93, 69, 88, 93, 70, 87, 93, 71, 87, 94, 69, 86, 94, 63, 80, 90, 57, 76, 87, 57, 75, 84, 60, 78, 86, 61, 77, 84, 71, 86, 91, 71, 86, 91, 71, 86, 89, 77, 93, 96, 75, 92, 96, 85, 100, 103, 85, 100, 103, + 88, 100, 105, 91, 104, 106, 87, 100, 101, 95, 107, 108, 101, 113, 114, 98, 110, 112, 94, 106, 108, 85, 98, 100, 90, 102, 104, 92, 105, 107, 88, 102, 104, 83, 98, 100, 85, 99, 102, 83, 97, 100, 98, 110, 112, 80, 93, 95, 85, 97, 98, 139, 150, 149, 90, 104, 103, 106, 118, 118, 94, 108, 107, + 97, 109, 109, 106, 118, 117, 111, 122, 120, 113, 124, 122, 132, 142, 141, 131, 141, 140, 123, 133, 133, 128, 137, 137, 155, 161, 162, 133, 142, 141, 127, 136, 135, 157, 166, 164, 108, 121, 118, 101, 113, 111, 135, 142, 144, 116, 124, 124, 95, 110, 108, 101, 115, 113, 102, 115, 113, 99, 112, 111, 106, 120, 118, + 99, 112, 110, 112, 126, 123, 93, 110, 106, 90, 107, 104, 90, 106, 105, 95, 111, 110, 90, 108, 108, 89, 105, 107, 90, 109, 109, 89, 107, 108, 85, 105, 106, 91, 110, 110, 87, 107, 108, 97, 115, 116, 103, 117, 119, 103, 115, 117, 102, 113, 114, 171, 174, 176, 99, 111, 114, 91, 105, 109, 92, 108, 111, + 85, 104, 108, 89, 108, 111, 98, 116, 117, 97, 115, 116, 89, 107, 109, 88, 105, 108, 86, 103, 106, 84, 101, 104, 87, 106, 107, 91, 110, 111, 94, 111, 114, 104, 120, 122, 127, 140, 141, 92, 108, 109, 107, 124, 124, 104, 124, 125, 120, 138, 138, 103, 123, 125, 100, 119, 120, 104, 124, 124, 132, 147, 148, + 158, 161, 161, 128, 140, 144, 120, 134, 137, 108, 122, 126, 163, 176, 178, 97, 114, 118, 102, 122, 125, 110, 130, 133, 115, 134, 137, 114, 133, 136, 123, 141, 143, 122, 140, 143, 124, 143, 145, 125, 145, 146, 131, 152, 150, 141, 159, 158, 142, 159, 159, 148, 164, 163, 152, 168, 167, 157, 171, 169, 163, 176, 173, + 170, 184, 181, 168, 181, 179, 172, 186, 182, 178, 190, 187, 182, 194, 191, 188, 198, 196, 182, 195, 192, 171, 186, 182, 197, 207, 204, 189, 200, 195, 186, 197, 193, 186, 197, 193, 187, 200, 196, 190, 202, 197, 197, 206, 201, 199, 209, 205, 202, 211, 208, 206, 214, 211, 207, 215, 213, 210, 218, 215, 210, 219, 216, + 210, 219, 216, 212, 222, 218, 213, 223, 219, 216, 225, 222, 219, 226, 223, 220, 227, 223, 222, 229, 225, 223, 230, 226, 225, 232, 228, 227, 233, 231, 226, 233, 230, 227, 233, 230, 221, 230, 227, 219, 228, 225, 217, 227, 224, 221, 230, 227, 222, 231, 228, 221, 231, 228, 222, 231, 229, 223, 232, 229, 225, 233, 230, + 190, 206, 212, 188, 205, 211, 184, 202, 209, 180, 199, 206, 179, 198, 205, 175, 194, 201, 171, 191, 198, 168, 190, 196, 164, 186, 193, 161, 184, 191, 161, 184, 192, 164, 186, 193, 168, 188, 194, 168, 188, 193, 171, 190, 195, 172, 191, 196, 169, 188, 195, 164, 186, 192, 161, 183, 191, 159, 181, 189, 157, 180, 189, + 159, 181, 192, 159, 180, 192, 157, 180, 191, 156, 182, 191, 153, 179, 189, 152, 179, 189, 152, 179, 189, 151, 178, 188, 156, 181, 191, 162, 185, 193, 164, 186, 194, 164, 186, 194, 164, 186, 194, 164, 185, 195, 164, 186, 197, 163, 185, 196, 163, 185, 196, 158, 183, 193, 154, 180, 190, 151, 178, 187, 149, 175, 187, + 148, 174, 186, 147, 173, 185, 144, 171, 185, 137, 164, 178, 130, 158, 173, 120, 151, 167, 118, 149, 165, 119, 148, 165, 121, 148, 165, 119, 147, 164, 110, 140, 157, 102, 133, 150, 90, 122, 138, 88, 118, 135, 88, 118, 135, 92, 121, 138, 95, 123, 140, 97, 124, 141, 95, 121, 138, 93, 117, 135, 105, 129, 145, + 100, 123, 138, 89, 112, 126, 92, 116, 128, 102, 125, 137, 101, 124, 136, 84, 109, 121, 76, 102, 114, 77, 103, 116, 80, 104, 119, 83, 106, 121, 84, 108, 122, 91, 115, 126, 84, 110, 122, 85, 110, 121, 84, 108, 120, 83, 108, 118, 79, 104, 113, 73, 100, 110, 72, 100, 107, 74, 101, 108, 78, 104, 111, + 89, 112, 120, 82, 106, 114, 80, 102, 111, 78, 101, 109, 78, 101, 109, 86, 108, 115, 114, 133, 139, 103, 123, 128, 96, 116, 120, 105, 125, 130, 114, 134, 139, 103, 123, 128, 103, 123, 128, 103, 123, 128, 101, 123, 129, 101, 123, 129, 99, 121, 127, 98, 120, 125, 99, 121, 126, 98, 120, 125, 99, 121, 126, + 98, 120, 124, 97, 119, 124, 97, 118, 123, 98, 119, 124, 97, 117, 122, 94, 114, 119, 92, 112, 117, 91, 111, 116, 85, 107, 112, 83, 106, 111, 81, 104, 109, 77, 102, 106, 77, 102, 106, 77, 101, 106, 77, 100, 105, 72, 96, 102, 70, 93, 99, 67, 91, 97, 69, 91, 97, 69, 91, 97, 65, 88, 94, + 66, 88, 94, 65, 87, 93, 68, 87, 94, 68, 87, 94, 69, 87, 94, 67, 86, 91, 65, 83, 89, 63, 81, 88, 66, 83, 90, 59, 78, 87, 55, 74, 83, 55, 74, 82, 51, 69, 77, 59, 76, 82, 67, 81, 87, 65, 80, 85, 67, 83, 86, 70, 85, 89, 74, 89, 93, 81, 96, 99, 80, 95, 99, + 86, 101, 103, 85, 99, 100, 84, 98, 98, 91, 103, 102, 93, 105, 107, 91, 103, 105, 80, 93, 95, 73, 86, 88, 85, 98, 100, 87, 100, 102, 84, 97, 99, 80, 93, 95, 72, 87, 89, 85, 99, 102, 78, 90, 93, 79, 91, 94, 77, 90, 92, 136, 145, 146, 86, 98, 101, 102, 115, 114, 94, 108, 107, + 96, 109, 107, 103, 116, 113, 109, 119, 116, 117, 128, 126, 137, 146, 144, 129, 140, 138, 125, 135, 135, 117, 127, 128, 173, 180, 179, 137, 143, 143, 133, 142, 140, 148, 157, 155, 113, 125, 122, 105, 116, 114, 96, 106, 108, 156, 163, 165, 103, 114, 116, 101, 114, 114, 101, 114, 113, 97, 112, 111, 97, 113, 112, + 120, 134, 131, 99, 114, 112, 95, 111, 108, 95, 111, 109, 98, 112, 110, 97, 114, 113, 93, 109, 108, 88, 106, 108, 89, 107, 108, 89, 107, 108, 87, 106, 105, 84, 105, 103, 89, 109, 106, 96, 114, 112, 108, 123, 121, 99, 112, 112, 92, 104, 106, 166, 173, 175, 97, 107, 111, 96, 108, 113, 100, 114, 118, + 89, 108, 112, 88, 107, 110, 103, 119, 120, 106, 121, 120, 93, 111, 110, 83, 103, 102, 87, 104, 106, 87, 105, 107, 92, 109, 111, 87, 106, 108, 96, 112, 114, 97, 112, 114, 128, 141, 141, 99, 116, 116, 102, 120, 119, 105, 126, 125, 113, 130, 129, 97, 118, 116, 94, 116, 113, 107, 125, 124, 108, 126, 126, + 160, 168, 172, 137, 146, 149, 114, 128, 131, 103, 119, 123, 138, 153, 155, 136, 153, 155, 106, 125, 128, 110, 129, 132, 114, 133, 136, 114, 134, 136, 122, 141, 142, 125, 144, 143, 125, 144, 142, 130, 149, 148, 132, 151, 148, 140, 158, 155, 149, 165, 162, 147, 163, 162, 149, 165, 164, 156, 170, 168, 164, 177, 175, + 169, 182, 180, 169, 182, 180, 170, 183, 181, 175, 188, 185, 180, 193, 189, 184, 195, 192, 179, 193, 189, 168, 185, 181, 180, 194, 190, 197, 206, 203, 182, 197, 192, 184, 197, 193, 188, 200, 196, 189, 200, 196, 195, 205, 201, 198, 208, 204, 200, 209, 206, 204, 213, 210, 208, 217, 214, 209, 218, 215, 208, 217, 214, + 211, 219, 216, 213, 222, 218, 214, 223, 219, 216, 225, 222, 218, 225, 222, 219, 227, 223, 222, 229, 225, 224, 230, 226, 226, 232, 228, 228, 233, 230, 229, 234, 232, 228, 233, 231, 227, 233, 230, 222, 230, 227, 219, 228, 225, 220, 229, 226, 222, 231, 228, 224, 233, 230, 226, 233, 231, 225, 233, 231, 225, 234, 231, + 192, 207, 213, 188, 204, 211, 183, 201, 208, 179, 198, 205, 176, 194, 201, 175, 194, 201, 170, 191, 198, 167, 189, 195, 163, 186, 194, 160, 183, 191, 162, 185, 192, 168, 188, 195, 170, 190, 195, 172, 190, 196, 173, 192, 197, 172, 191, 197, 168, 187, 195, 161, 182, 190, 157, 180, 188, 156, 181, 188, 158, 180, 191, + 159, 181, 192, 159, 181, 192, 159, 181, 191, 156, 180, 189, 152, 179, 188, 151, 178, 187, 151, 179, 187, 152, 179, 189, 158, 181, 191, 162, 186, 194, 165, 186, 194, 165, 186, 194, 163, 186, 194, 162, 185, 194, 162, 184, 195, 161, 184, 195, 160, 185, 195, 158, 182, 192, 153, 179, 189, 150, 176, 187, 150, 176, 187, + 146, 172, 185, 147, 172, 185, 140, 167, 181, 136, 163, 177, 127, 156, 171, 121, 151, 168, 119, 149, 166, 122, 150, 167, 121, 149, 166, 116, 145, 162, 107, 137, 154, 97, 130, 147, 91, 123, 139, 90, 120, 137, 91, 121, 138, 95, 124, 141, 99, 126, 143, 99, 125, 142, 94, 119, 137, 99, 123, 139, 107, 130, 146, + 92, 115, 130, 89, 113, 127, 95, 118, 130, 109, 131, 143, 89, 114, 126, 76, 102, 114, 77, 103, 115, 79, 105, 118, 76, 101, 116, 82, 105, 120, 88, 111, 125, 88, 112, 124, 85, 110, 122, 82, 109, 119, 80, 107, 117, 81, 106, 116, 78, 105, 115, 74, 101, 111, 74, 101, 108, 74, 101, 108, 81, 107, 115, + 89, 111, 122, 80, 103, 114, 73, 98, 107, 77, 101, 108, 79, 102, 109, 99, 119, 125, 112, 132, 136, 96, 116, 121, 98, 118, 123, 113, 132, 137, 111, 131, 135, 105, 125, 130, 104, 124, 129, 100, 121, 126, 104, 123, 129, 100, 122, 128, 100, 122, 128, 99, 121, 126, 97, 119, 124, 96, 119, 122, 98, 121, 124, + 97, 119, 124, 98, 120, 125, 96, 117, 122, 95, 116, 121, 96, 116, 121, 94, 114, 119, 90, 112, 117, 89, 110, 115, 84, 105, 110, 81, 105, 109, 82, 105, 110, 76, 101, 105, 78, 103, 107, 75, 100, 104, 76, 99, 104, 74, 95, 101, 69, 93, 99, 73, 95, 101, 71, 93, 99, 68, 89, 96, 69, 90, 96, + 65, 87, 93, 64, 85, 91, 67, 86, 93, 69, 88, 95, 66, 86, 91, 64, 83, 90, 60, 78, 85, 61, 79, 86, 64, 81, 88, 57, 75, 82, 53, 72, 79, 51, 69, 76, 49, 66, 75, 55, 72, 78, 59, 75, 81, 65, 79, 85, 65, 79, 85, 67, 81, 87, 69, 83, 87, 76, 91, 94, 76, 91, 94, + 81, 96, 98, 82, 96, 97, 83, 96, 97, 85, 98, 100, 82, 95, 97, 77, 90, 92, 68, 81, 83, 72, 85, 86, 80, 92, 93, 78, 89, 90, 77, 89, 91, 66, 78, 81, 65, 77, 81, 77, 89, 93, 72, 85, 89, 77, 88, 92, 69, 81, 84, 138, 147, 149, 81, 94, 96, 94, 107, 106, 93, 106, 105, + 97, 110, 108, 102, 115, 113, 107, 120, 118, 118, 129, 127, 136, 144, 143, 128, 139, 137, 131, 141, 140, 127, 138, 136, 172, 177, 177, 128, 137, 136, 127, 139, 137, 105, 118, 117, 148, 160, 159, 104, 115, 114, 107, 117, 117, 159, 163, 164, 102, 109, 112, 102, 114, 114, 97, 113, 112, 92, 108, 107, 98, 115, 113, + 97, 113, 110, 93, 110, 107, 94, 111, 108, 98, 113, 110, 103, 117, 115, 94, 109, 108, 92, 109, 108, 88, 106, 106, 91, 109, 108, 87, 105, 104, 87, 105, 104, 89, 106, 102, 102, 117, 114, 98, 114, 111, 104, 118, 116, 95, 109, 107, 96, 109, 109, 94, 102, 105, 168, 176, 179, 95, 107, 111, 94, 107, 110, + 87, 101, 103, 96, 111, 113, 100, 115, 115, 92, 110, 108, 90, 108, 107, 77, 98, 96, 79, 99, 97, 84, 102, 101, 91, 109, 108, 90, 108, 107, 89, 107, 108, 95, 110, 112, 121, 137, 139, 101, 118, 117, 98, 117, 116, 109, 127, 126, 106, 125, 124, 93, 114, 112, 100, 120, 118, 103, 121, 120, 107, 125, 126, + 113, 129, 131, 166, 174, 176, 125, 138, 141, 104, 119, 122, 94, 111, 114, 172, 184, 183, 118, 134, 136, 111, 129, 131, 116, 135, 137, 114, 134, 135, 128, 146, 147, 127, 145, 144, 124, 143, 141, 129, 146, 145, 131, 149, 146, 137, 156, 153, 150, 165, 163, 150, 165, 163, 153, 168, 166, 157, 171, 169, 158, 172, 170, + 164, 177, 175, 166, 180, 178, 166, 179, 177, 170, 184, 181, 175, 188, 184, 180, 194, 190, 179, 194, 190, 167, 185, 182, 174, 189, 185, 187, 198, 195, 189, 201, 196, 184, 197, 193, 188, 198, 196, 190, 201, 198, 192, 204, 198, 196, 207, 203, 199, 208, 205, 202, 212, 207, 205, 214, 211, 207, 217, 214, 208, 217, 214, + 210, 220, 216, 212, 220, 217, 215, 222, 220, 217, 224, 221, 219, 227, 224, 221, 228, 222, 222, 229, 224, 225, 232, 226, 226, 232, 227, 228, 233, 231, 229, 234, 232, 230, 235, 233, 229, 234, 232, 225, 232, 229, 222, 231, 228, 221, 230, 227, 222, 231, 228, 226, 233, 230, 226, 234, 231, 227, 234, 231, 227, 235, 232, + 192, 207, 214, 186, 203, 210, 181, 199, 206, 177, 196, 203, 175, 194, 201, 174, 193, 200, 171, 192, 198, 167, 189, 195, 165, 187, 193, 164, 186, 192, 168, 188, 195, 172, 190, 197, 173, 192, 198, 174, 192, 199, 174, 192, 199, 169, 188, 195, 165, 186, 193, 156, 181, 189, 154, 180, 187, 155, 180, 188, 156, 181, 188, + 160, 181, 193, 161, 183, 192, 159, 182, 191, 157, 181, 189, 155, 181, 188, 153, 179, 188, 152, 179, 187, 153, 180, 188, 158, 182, 190, 165, 185, 193, 165, 186, 194, 165, 186, 194, 163, 186, 193, 160, 183, 193, 159, 183, 193, 158, 183, 194, 157, 182, 192, 155, 181, 190, 149, 177, 186, 151, 176, 188, 149, 175, 187, + 147, 173, 187, 147, 173, 187, 139, 166, 180, 131, 159, 173, 125, 154, 169, 118, 148, 165, 121, 150, 167, 122, 150, 167, 123, 150, 167, 117, 146, 163, 104, 136, 153, 94, 127, 145, 90, 122, 138, 91, 121, 138, 97, 126, 143, 99, 127, 144, 102, 128, 145, 98, 123, 140, 95, 120, 137, 107, 130, 146, 102, 125, 140, + 86, 110, 125, 91, 115, 127, 107, 129, 141, 103, 127, 139, 81, 107, 119, 78, 104, 116, 76, 102, 114, 76, 102, 115, 79, 103, 116, 82, 106, 118, 87, 111, 123, 87, 111, 123, 84, 109, 121, 83, 109, 119, 80, 107, 116, 78, 104, 116, 74, 101, 112, 76, 103, 113, 75, 101, 111, 80, 105, 115, 88, 111, 122, + 88, 110, 121, 79, 102, 113, 78, 101, 109, 76, 99, 107, 81, 104, 110, 109, 128, 134, 113, 132, 137, 98, 118, 123, 101, 121, 126, 117, 136, 141, 108, 128, 133, 102, 123, 128, 101, 123, 128, 102, 123, 128, 103, 123, 128, 100, 122, 127, 99, 121, 126, 98, 120, 125, 98, 120, 123, 98, 121, 123, 98, 120, 124, + 95, 117, 122, 95, 118, 121, 98, 118, 124, 92, 114, 119, 91, 113, 119, 92, 113, 118, 90, 111, 116, 89, 110, 115, 83, 106, 111, 84, 107, 111, 80, 105, 109, 79, 104, 108, 77, 100, 105, 74, 99, 103, 75, 98, 103, 74, 96, 102, 73, 95, 101, 72, 94, 100, 69, 91, 97, 69, 91, 97, 65, 87, 93, + 67, 88, 95, 64, 85, 92, 66, 85, 92, 69, 88, 95, 67, 86, 93, 65, 84, 91, 60, 79, 86, 61, 79, 86, 63, 80, 87, 55, 74, 81, 51, 70, 77, 49, 67, 74, 47, 65, 72, 52, 69, 76, 58, 74, 81, 61, 76, 82, 62, 78, 84, 62, 78, 84, 66, 81, 87, 69, 84, 87, 74, 89, 92, + 73, 88, 91, 73, 87, 89, 78, 91, 93, 76, 89, 91, 72, 85, 87, 67, 80, 82, 62, 75, 77, 73, 85, 86, 71, 82, 84, 76, 86, 87, 64, 76, 78, 53, 65, 68, 55, 69, 72, 69, 82, 85, 66, 78, 82, 77, 88, 91, 66, 78, 80, 130, 138, 140, 86, 98, 100, 80, 93, 93, 89, 102, 101, + 102, 115, 112, 102, 115, 113, 105, 118, 116, 119, 131, 129, 139, 147, 146, 127, 138, 136, 130, 141, 139, 127, 138, 136, 155, 163, 161, 144, 152, 150, 122, 134, 131, 106, 118, 118, 150, 159, 158, 101, 110, 109, 104, 113, 113, 110, 116, 117, 151, 156, 158, 102, 113, 114, 96, 111, 110, 95, 111, 110, 96, 112, 111, + 96, 112, 109, 97, 115, 111, 95, 112, 109, 102, 117, 114, 102, 116, 115, 96, 111, 110, 93, 109, 108, 91, 107, 106, 90, 107, 106, 93, 109, 108, 90, 106, 104, 93, 109, 106, 95, 111, 108, 105, 120, 116, 101, 115, 113, 93, 107, 106, 95, 109, 109, 96, 109, 111, 165, 173, 176, 102, 110, 113, 96, 109, 111, + 95, 108, 110, 88, 103, 104, 96, 113, 110, 96, 113, 112, 88, 105, 104, 80, 102, 100, 82, 101, 99, 86, 104, 103, 91, 108, 107, 93, 111, 110, 91, 109, 109, 92, 111, 111, 118, 133, 134, 102, 119, 118, 102, 120, 119, 101, 120, 119, 106, 124, 123, 93, 114, 111, 95, 116, 114, 95, 116, 114, 104, 123, 122, + 108, 126, 127, 104, 120, 123, 171, 180, 183, 102, 117, 121, 102, 116, 120, 106, 118, 121, 185, 196, 196, 108, 125, 128, 114, 133, 134, 115, 135, 136, 123, 142, 143, 129, 147, 147, 127, 144, 143, 126, 145, 143, 132, 150, 149, 135, 154, 152, 145, 161, 159, 154, 167, 165, 154, 168, 166, 156, 170, 169, 161, 175, 173, + 162, 176, 174, 163, 178, 175, 166, 179, 177, 168, 182, 180, 174, 187, 184, 178, 190, 187, 180, 193, 190, 168, 186, 183, 171, 187, 183, 174, 190, 185, 193, 204, 201, 183, 195, 190, 189, 200, 197, 186, 197, 194, 192, 203, 200, 196, 206, 203, 201, 210, 207, 199, 210, 207, 202, 212, 209, 207, 215, 210, 209, 218, 215, + 211, 219, 216, 213, 221, 218, 216, 224, 221, 218, 225, 222, 219, 226, 223, 222, 229, 226, 222, 229, 227, 225, 231, 229, 226, 232, 230, 228, 234, 231, 229, 234, 232, 230, 235, 233, 232, 237, 235, 229, 234, 232, 225, 232, 229, 222, 230, 227, 222, 232, 229, 226, 233, 230, 228, 235, 232, 227, 234, 231, 228, 235, 232, + 191, 207, 213, 183, 201, 208, 180, 198, 205, 176, 195, 202, 174, 194, 200, 172, 192, 199, 170, 191, 197, 170, 190, 196, 165, 188, 194, 171, 190, 197, 173, 191, 198, 173, 191, 198, 175, 193, 199, 174, 192, 199, 170, 189, 196, 164, 185, 193, 158, 182, 190, 154, 181, 188, 153, 180, 187, 156, 180, 188, 159, 182, 190, + 163, 185, 192, 163, 185, 193, 161, 183, 191, 157, 182, 189, 155, 181, 188, 151, 179, 186, 153, 179, 188, 156, 182, 190, 160, 183, 191, 165, 186, 194, 167, 186, 196, 164, 185, 194, 161, 183, 195, 161, 183, 194, 159, 182, 194, 157, 181, 193, 154, 179, 191, 151, 177, 189, 150, 177, 189, 150, 176, 188, 150, 176, 187, + 146, 172, 186, 141, 168, 182, 136, 164, 178, 128, 157, 172, 122, 152, 167, 119, 149, 166, 120, 149, 166, 127, 153, 170, 122, 150, 167, 113, 142, 159, 101, 133, 153, 93, 125, 144, 89, 122, 140, 93, 123, 140, 99, 127, 144, 99, 127, 144, 99, 125, 142, 96, 122, 138, 97, 123, 139, 106, 129, 145, 91, 116, 131, + 86, 111, 125, 97, 121, 133, 113, 135, 146, 94, 118, 130, 77, 105, 116, 74, 102, 113, 77, 103, 116, 77, 103, 117, 78, 103, 116, 85, 109, 121, 87, 111, 123, 86, 110, 122, 85, 109, 120, 81, 108, 118, 79, 106, 116, 79, 105, 116, 78, 104, 116, 79, 104, 115, 79, 104, 114, 83, 107, 117, 90, 112, 123, + 87, 109, 119, 78, 103, 110, 75, 99, 107, 76, 101, 107, 89, 112, 118, 118, 137, 142, 107, 127, 132, 100, 120, 125, 104, 124, 129, 119, 138, 143, 104, 125, 130, 101, 123, 129, 101, 123, 128, 101, 123, 128, 100, 122, 127, 98, 120, 125, 98, 120, 125, 98, 121, 123, 97, 119, 122, 98, 121, 123, 97, 119, 123, + 95, 117, 122, 94, 115, 121, 94, 116, 121, 92, 114, 119, 91, 113, 119, 91, 113, 119, 89, 111, 117, 86, 108, 114, 85, 107, 112, 82, 105, 110, 79, 104, 108, 76, 101, 105, 76, 101, 105, 75, 98, 103, 76, 98, 103, 74, 96, 102, 73, 95, 101, 71, 93, 99, 70, 92, 98, 69, 91, 97, 68, 90, 96, + 64, 86, 91, 66, 85, 92, 67, 86, 93, 68, 87, 94, 67, 86, 93, 62, 82, 88, 61, 79, 87, 60, 79, 86, 60, 78, 85, 53, 72, 79, 49, 66, 75, 48, 66, 73, 44, 63, 70, 50, 69, 76, 57, 74, 81, 57, 74, 81, 61, 77, 83, 59, 75, 81, 64, 79, 85, 65, 80, 86, 73, 88, 90, + 68, 84, 86, 70, 85, 87, 70, 83, 85, 66, 80, 82, 63, 77, 79, 55, 70, 72, 62, 75, 77, 66, 78, 81, 63, 74, 77, 62, 74, 77, 51, 63, 66, 39, 52, 56, 52, 66, 69, 59, 71, 75, 66, 78, 82, 74, 86, 89, 61, 73, 76, 126, 135, 137, 76, 89, 92, 75, 88, 90, 80, 93, 94, + 97, 110, 108, 97, 111, 109, 105, 118, 117, 120, 130, 129, 133, 142, 143, 127, 137, 136, 125, 136, 134, 126, 137, 134, 122, 132, 129, 173, 180, 179, 117, 128, 126, 104, 116, 115, 126, 135, 135, 123, 131, 130, 110, 118, 117, 103, 111, 111, 161, 167, 168, 96, 108, 111, 92, 107, 109, 96, 112, 112, 99, 112, 112, + 98, 112, 111, 97, 112, 111, 97, 113, 111, 99, 116, 114, 97, 113, 112, 90, 105, 105, 93, 108, 107, 91, 107, 106, 90, 106, 104, 89, 105, 104, 93, 109, 107, 97, 113, 111, 98, 113, 111, 101, 115, 114, 99, 113, 112, 93, 107, 106, 96, 109, 110, 97, 111, 113, 94, 103, 106, 170, 178, 179, 95, 109, 110, + 91, 105, 105, 87, 103, 102, 91, 107, 106, 92, 109, 108, 85, 103, 102, 82, 103, 101, 83, 102, 101, 86, 104, 103, 89, 109, 108, 92, 110, 109, 95, 113, 111, 98, 115, 117, 112, 128, 129, 99, 117, 116, 100, 118, 117, 100, 119, 117, 103, 121, 120, 99, 117, 116, 93, 114, 113, 97, 117, 117, 100, 120, 121, + 103, 123, 124, 110, 127, 129, 96, 114, 116, 178, 188, 190, 95, 108, 115, 112, 123, 131, 129, 141, 147, 162, 174, 173, 113, 132, 133, 114, 134, 136, 124, 142, 143, 126, 144, 143, 128, 147, 146, 128, 147, 146, 132, 149, 150, 135, 153, 152, 139, 158, 155, 152, 167, 165, 157, 170, 168, 159, 172, 170, 164, 176, 174, + 159, 173, 171, 159, 174, 171, 163, 178, 175, 168, 181, 179, 172, 186, 182, 179, 190, 188, 178, 191, 188, 169, 185, 182, 172, 186, 183, 172, 187, 184, 175, 190, 186, 192, 204, 200, 184, 196, 191, 187, 199, 196, 188, 199, 196, 192, 203, 200, 199, 208, 206, 201, 210, 206, 199, 212, 205, 204, 215, 209, 209, 217, 212, + 210, 220, 215, 213, 222, 219, 216, 224, 221, 219, 226, 223, 220, 227, 224, 222, 229, 226, 224, 231, 228, 224, 230, 227, 227, 233, 231, 229, 234, 232, 230, 235, 233, 230, 235, 233, 232, 237, 235, 231, 236, 234, 229, 234, 232, 225, 232, 229, 223, 232, 229, 226, 233, 230, 227, 234, 231, 228, 235, 232, 229, 236, 233, + 185, 204, 208, 181, 200, 206, 177, 196, 203, 175, 194, 201, 173, 193, 199, 173, 192, 199, 169, 191, 197, 170, 190, 197, 172, 191, 198, 174, 192, 198, 176, 194, 199, 176, 195, 200, 174, 193, 199, 172, 190, 197, 165, 185, 193, 159, 181, 189, 154, 180, 187, 151, 178, 186, 152, 179, 187, 158, 182, 190, 163, 184, 192, + 165, 186, 194, 164, 185, 193, 161, 184, 191, 158, 182, 190, 157, 181, 189, 155, 181, 188, 156, 181, 189, 157, 181, 190, 163, 184, 192, 165, 186, 194, 166, 187, 195, 165, 186, 195, 160, 183, 194, 158, 182, 192, 157, 181, 193, 154, 179, 191, 154, 178, 190, 153, 177, 189, 152, 177, 189, 151, 176, 188, 150, 174, 188, + 146, 172, 185, 142, 169, 183, 134, 163, 177, 126, 155, 170, 121, 150, 167, 121, 150, 166, 126, 153, 169, 127, 153, 170, 123, 150, 166, 111, 141, 157, 99, 131, 150, 93, 125, 144, 93, 123, 142, 99, 127, 144, 100, 128, 145, 102, 129, 146, 98, 124, 141, 93, 119, 135, 104, 129, 145, 100, 125, 139, 84, 110, 125, + 91, 117, 131, 107, 130, 143, 107, 131, 143, 87, 113, 127, 79, 106, 120, 77, 104, 116, 78, 103, 118, 80, 107, 121, 83, 109, 123, 88, 111, 124, 89, 113, 125, 85, 109, 121, 84, 108, 119, 79, 104, 117, 79, 105, 117, 82, 106, 117, 79, 104, 116, 82, 106, 117, 84, 109, 119, 86, 111, 121, 92, 114, 124, + 81, 106, 114, 78, 103, 110, 76, 101, 108, 78, 102, 108, 98, 120, 126, 121, 141, 147, 101, 122, 127, 97, 119, 124, 107, 128, 133, 121, 140, 145, 103, 126, 129, 99, 121, 127, 102, 124, 129, 101, 123, 128, 100, 122, 127, 98, 120, 125, 98, 120, 125, 97, 120, 122, 95, 118, 120, 95, 117, 121, 95, 117, 122, + 94, 116, 121, 94, 115, 120, 92, 114, 119, 91, 113, 120, 91, 113, 119, 90, 112, 118, 89, 111, 117, 84, 106, 112, 83, 105, 111, 83, 105, 110, 79, 103, 108, 76, 101, 105, 73, 98, 102, 75, 99, 103, 75, 97, 102, 76, 98, 103, 73, 95, 101, 72, 94, 100, 71, 93, 98, 68, 90, 96, 65, 87, 93, + 66, 87, 94, 66, 85, 92, 67, 86, 93, 67, 86, 93, 65, 85, 92, 64, 84, 89, 60, 80, 87, 61, 79, 86, 58, 76, 84, 54, 72, 80, 47, 67, 74, 46, 64, 72, 45, 64, 71, 49, 68, 75, 53, 70, 78, 56, 73, 80, 60, 76, 82, 62, 78, 84, 61, 77, 83, 62, 78, 84, 65, 80, 86, + 63, 79, 84, 62, 77, 82, 61, 75, 80, 59, 73, 79, 55, 69, 75, 54, 68, 74, 57, 69, 74, 56, 68, 72, 53, 64, 68, 52, 64, 67, 41, 55, 57, 32, 48, 51, 47, 61, 64, 57, 69, 73, 64, 76, 80, 69, 80, 84, 67, 78, 82, 106, 116, 119, 74, 86, 90, 62, 75, 78, 78, 90, 94, + 93, 106, 108, 95, 109, 109, 102, 115, 114, 112, 123, 123, 122, 133, 132, 126, 137, 135, 125, 136, 134, 126, 137, 135, 120, 131, 128, 168, 176, 174, 109, 120, 118, 102, 113, 111, 93, 103, 102, 152, 160, 159, 108, 116, 116, 105, 115, 115, 152, 159, 163, 102, 113, 115, 94, 108, 110, 96, 110, 110, 95, 109, 108, + 100, 114, 113, 100, 114, 113, 102, 116, 115, 97, 113, 113, 97, 113, 115, 94, 106, 108, 92, 106, 106, 93, 108, 106, 90, 107, 104, 92, 108, 107, 91, 108, 107, 94, 110, 109, 100, 114, 113, 95, 109, 108, 96, 110, 109, 91, 105, 103, 99, 112, 113, 99, 113, 116, 99, 112, 113, 173, 182, 186, 96, 103, 105, + 91, 106, 105, 88, 103, 102, 92, 108, 107, 90, 106, 105, 83, 101, 100, 84, 102, 101, 82, 101, 102, 86, 105, 105, 91, 109, 110, 94, 112, 113, 95, 112, 112, 114, 128, 129, 103, 118, 118, 102, 119, 118, 95, 114, 111, 104, 122, 121, 100, 118, 117, 102, 120, 121, 95, 114, 115, 97, 117, 119, 103, 123, 124, + 104, 124, 125, 105, 124, 125, 107, 125, 126, 100, 115, 118, 181, 189, 192, 106, 117, 125, 115, 127, 134, 164, 175, 176, 131, 148, 150, 118, 135, 138, 126, 143, 143, 127, 145, 144, 133, 149, 148, 132, 149, 149, 130, 149, 149, 135, 153, 152, 140, 158, 156, 147, 163, 160, 157, 172, 169, 161, 173, 171, 165, 178, 176, + 163, 177, 174, 164, 178, 175, 161, 176, 173, 168, 181, 179, 172, 185, 183, 175, 188, 186, 180, 191, 189, 173, 187, 185, 171, 185, 183, 168, 185, 182, 172, 187, 183, 184, 195, 192, 188, 198, 196, 185, 198, 194, 186, 201, 196, 189, 202, 198, 197, 206, 204, 202, 210, 204, 200, 212, 206, 202, 213, 207, 208, 216, 211, + 211, 219, 217, 212, 222, 217, 216, 224, 220, 220, 227, 223, 220, 227, 223, 223, 230, 227, 223, 230, 227, 226, 232, 230, 227, 234, 231, 229, 234, 232, 230, 235, 233, 231, 236, 234, 231, 236, 234, 232, 237, 235, 230, 235, 233, 228, 234, 231, 225, 232, 229, 225, 232, 229, 226, 233, 230, 228, 234, 232, 229, 235, 233, + 181, 200, 206, 178, 198, 204, 178, 196, 204, 174, 193, 200, 174, 193, 200, 174, 193, 200, 173, 192, 199, 174, 192, 199, 173, 192, 200, 176, 194, 199, 176, 194, 199, 174, 194, 198, 174, 192, 199, 167, 186, 193, 162, 183, 190, 155, 179, 187, 150, 178, 185, 151, 178, 188, 156, 180, 189, 164, 185, 193, 166, 187, 195, + 166, 187, 195, 164, 186, 194, 161, 184, 192, 160, 183, 190, 159, 182, 190, 158, 182, 189, 159, 182, 190, 160, 183, 191, 164, 185, 193, 163, 184, 192, 166, 187, 195, 163, 184, 193, 160, 182, 193, 156, 181, 191, 155, 180, 191, 153, 178, 191, 154, 179, 191, 152, 178, 190, 150, 176, 188, 151, 176, 188, 150, 174, 188, + 146, 172, 186, 139, 165, 180, 132, 161, 176, 124, 153, 168, 121, 151, 166, 124, 152, 168, 126, 153, 169, 127, 154, 169, 119, 146, 164, 109, 139, 156, 97, 129, 148, 92, 124, 143, 95, 124, 143, 99, 127, 143, 102, 128, 145, 100, 126, 143, 97, 123, 140, 97, 123, 139, 105, 130, 146, 93, 118, 134, 84, 111, 125, + 97, 121, 136, 111, 134, 149, 100, 125, 140, 84, 110, 125, 82, 108, 122, 80, 107, 120, 81, 107, 121, 86, 110, 124, 89, 112, 126, 89, 113, 126, 89, 114, 126, 84, 108, 120, 80, 106, 118, 79, 106, 117, 83, 106, 118, 85, 109, 121, 84, 108, 120, 83, 107, 118, 84, 109, 119, 90, 114, 122, 87, 112, 119, + 80, 105, 112, 76, 102, 108, 76, 101, 107, 81, 105, 111, 108, 130, 136, 119, 139, 144, 101, 123, 128, 97, 119, 124, 113, 135, 138, 117, 138, 140, 101, 124, 127, 100, 122, 127, 100, 122, 127, 103, 124, 129, 98, 120, 125, 98, 120, 125, 98, 120, 125, 96, 119, 122, 97, 118, 122, 93, 115, 119, 93, 115, 120, + 92, 114, 119, 92, 114, 120, 92, 114, 120, 91, 113, 119, 90, 112, 118, 89, 111, 117, 86, 108, 114, 84, 106, 112, 82, 104, 110, 83, 104, 110, 79, 104, 109, 75, 100, 104, 75, 100, 104, 76, 99, 104, 75, 97, 102, 75, 97, 102, 72, 95, 99, 72, 94, 99, 69, 91, 97, 67, 89, 95, 67, 88, 94, + 66, 88, 94, 65, 85, 92, 66, 85, 92, 68, 87, 94, 68, 87, 94, 65, 85, 92, 62, 82, 88, 63, 82, 89, 55, 74, 82, 46, 67, 75, 46, 65, 73, 44, 63, 70, 45, 64, 71, 46, 65, 72, 51, 71, 75, 60, 76, 84, 62, 78, 84, 61, 77, 83, 59, 75, 81, 60, 76, 82, 63, 79, 85, + 58, 73, 79, 57, 72, 78, 53, 68, 74, 53, 68, 74, 46, 61, 67, 43, 58, 64, 47, 60, 65, 49, 61, 65, 45, 57, 61, 42, 54, 58, 32, 47, 50, 31, 46, 49, 46, 61, 64, 56, 68, 72, 54, 67, 71, 61, 73, 77, 86, 96, 101, 72, 84, 88, 60, 74, 77, 58, 73, 76, 76, 89, 91, + 82, 95, 98, 91, 102, 104, 99, 111, 111, 107, 119, 119, 113, 124, 125, 120, 131, 129, 124, 135, 133, 121, 132, 129, 121, 131, 129, 164, 170, 168, 99, 109, 107, 98, 109, 108, 100, 110, 110, 148, 157, 156, 88, 99, 99, 99, 108, 109, 100, 107, 110, 147, 157, 159, 96, 109, 111, 95, 109, 109, 98, 112, 111, + 99, 113, 112, 100, 114, 113, 98, 113, 112, 96, 111, 112, 93, 108, 110, 92, 107, 110, 92, 106, 105, 91, 107, 106, 91, 107, 107, 89, 105, 104, 90, 106, 105, 98, 112, 111, 95, 111, 110, 89, 104, 103, 96, 109, 109, 96, 109, 111, 97, 110, 112, 97, 111, 114, 98, 111, 114, 103, 113, 116, 164, 170, 175, + 93, 106, 109, 83, 100, 98, 88, 104, 103, 86, 103, 102, 85, 103, 102, 87, 105, 106, 86, 104, 105, 85, 104, 105, 89, 107, 108, 94, 112, 113, 99, 117, 117, 118, 133, 133, 101, 117, 117, 99, 116, 115, 99, 117, 117, 103, 121, 121, 98, 116, 115, 97, 115, 116, 101, 119, 120, 96, 115, 116, 103, 123, 124, + 104, 124, 125, 105, 124, 124, 107, 125, 125, 107, 124, 126, 109, 123, 129, 167, 177, 182, 109, 122, 130, 115, 128, 133, 186, 199, 197, 117, 133, 137, 128, 144, 144, 129, 145, 144, 131, 148, 147, 132, 150, 149, 131, 149, 149, 134, 153, 152, 136, 155, 153, 141, 159, 156, 154, 168, 165, 158, 172, 170, 166, 179, 177, + 168, 182, 178, 164, 178, 175, 162, 177, 174, 166, 179, 177, 171, 184, 182, 173, 186, 183, 178, 189, 187, 175, 188, 186, 175, 189, 187, 169, 184, 182, 170, 184, 181, 176, 190, 186, 191, 202, 198, 185, 198, 194, 189, 200, 197, 188, 201, 197, 194, 205, 202, 199, 211, 208, 201, 212, 207, 201, 212, 207, 205, 216, 211, + 210, 219, 214, 214, 222, 219, 216, 223, 220, 219, 226, 224, 221, 228, 225, 222, 229, 226, 223, 230, 228, 226, 231, 228, 228, 234, 231, 229, 234, 232, 230, 235, 233, 231, 236, 234, 231, 237, 233, 231, 236, 234, 231, 236, 234, 230, 235, 233, 227, 234, 230, 225, 232, 229, 225, 232, 229, 227, 234, 231, 227, 235, 231, + 182, 202, 207, 178, 197, 204, 176, 196, 203, 175, 195, 201, 174, 194, 201, 175, 194, 201, 173, 192, 199, 174, 193, 200, 176, 194, 201, 176, 194, 201, 175, 193, 200, 173, 191, 198, 168, 188, 194, 162, 183, 189, 155, 179, 187, 149, 176, 185, 150, 177, 187, 155, 181, 188, 159, 183, 190, 167, 188, 195, 169, 189, 196, + 166, 186, 195, 161, 184, 192, 161, 184, 192, 161, 184, 192, 163, 184, 192, 164, 185, 193, 163, 184, 192, 160, 182, 190, 160, 182, 190, 163, 184, 192, 163, 184, 192, 159, 181, 192, 158, 181, 191, 154, 179, 190, 155, 180, 191, 154, 179, 190, 154, 178, 191, 154, 177, 189, 153, 177, 189, 152, 176, 188, 148, 173, 186, + 143, 170, 183, 136, 164, 179, 129, 158, 173, 126, 155, 170, 122, 153, 168, 125, 154, 169, 128, 155, 171, 128, 154, 170, 120, 147, 164, 106, 136, 155, 98, 130, 149, 95, 126, 145, 97, 126, 145, 102, 129, 147, 103, 129, 146, 98, 124, 141, 97, 123, 140, 103, 128, 144, 99, 124, 140, 88, 114, 128, 89, 114, 128, + 105, 128, 143, 111, 133, 148, 92, 117, 132, 87, 113, 129, 83, 109, 125, 82, 108, 123, 84, 110, 124, 86, 111, 125, 91, 114, 128, 88, 112, 126, 87, 111, 124, 83, 109, 121, 79, 105, 116, 84, 108, 119, 85, 109, 121, 88, 112, 124, 86, 110, 122, 88, 113, 123, 88, 112, 122, 88, 114, 121, 84, 109, 116, + 79, 105, 111, 74, 100, 107, 77, 102, 108, 91, 114, 120, 119, 138, 144, 116, 136, 141, 99, 121, 126, 98, 120, 125, 120, 141, 143, 113, 135, 138, 101, 124, 126, 100, 122, 127, 99, 123, 127, 97, 120, 125, 98, 119, 124, 98, 120, 125, 96, 118, 123, 95, 117, 122, 95, 117, 122, 93, 115, 120, 92, 115, 119, + 93, 115, 120, 92, 114, 119, 91, 113, 118, 90, 112, 117, 91, 113, 119, 88, 110, 116, 88, 110, 116, 86, 108, 114, 83, 105, 111, 79, 104, 110, 79, 103, 109, 76, 101, 105, 76, 101, 105, 76, 101, 105, 74, 98, 102, 74, 97, 101, 71, 95, 99, 70, 93, 97, 69, 91, 97, 65, 87, 93, 67, 89, 94, + 67, 87, 94, 68, 87, 94, 66, 87, 93, 68, 87, 94, 66, 85, 92, 66, 85, 92, 63, 82, 89, 59, 79, 85, 50, 71, 80, 46, 68, 75, 42, 63, 69, 43, 61, 68, 45, 64, 71, 48, 67, 73, 52, 70, 77, 59, 77, 82, 63, 80, 85, 60, 76, 82, 57, 73, 79, 57, 73, 79, 56, 72, 78, + 55, 71, 77, 50, 66, 72, 49, 65, 70, 48, 64, 71, 41, 57, 63, 39, 54, 60, 41, 54, 59, 40, 54, 58, 38, 52, 55, 34, 48, 51, 28, 43, 46, 31, 46, 49, 47, 61, 65, 47, 62, 65, 41, 55, 61, 48, 61, 65, 99, 110, 114, 46, 58, 63, 48, 62, 66, 60, 73, 77, 73, 86, 88, + 78, 90, 93, 83, 97, 98, 95, 107, 107, 98, 110, 110, 107, 119, 119, 116, 128, 126, 116, 127, 125, 119, 130, 128, 115, 126, 124, 148, 153, 151, 103, 115, 114, 94, 106, 105, 92, 103, 104, 109, 119, 120, 116, 125, 127, 96, 106, 109, 96, 105, 108, 152, 162, 165, 88, 100, 102, 95, 108, 110, 98, 112, 111, + 97, 111, 110, 101, 115, 114, 100, 114, 113, 98, 113, 113, 95, 109, 111, 88, 103, 106, 94, 109, 110, 92, 108, 107, 88, 104, 103, 87, 103, 102, 90, 106, 105, 99, 114, 113, 89, 105, 104, 84, 100, 99, 92, 106, 107, 95, 108, 110, 102, 116, 117, 98, 110, 114, 97, 110, 113, 92, 101, 105, 177, 184, 187, + 88, 100, 103, 83, 98, 97, 85, 101, 100, 86, 102, 101, 86, 103, 102, 89, 105, 106, 89, 105, 107, 87, 105, 106, 90, 108, 109, 92, 109, 110, 100, 116, 116, 124, 139, 138, 102, 117, 118, 97, 115, 113, 99, 117, 118, 101, 120, 121, 98, 116, 117, 96, 114, 115, 100, 117, 119, 101, 120, 121, 104, 123, 124, + 105, 124, 124, 104, 122, 123, 106, 124, 124, 106, 123, 123, 111, 127, 129, 127, 140, 145, 159, 170, 173, 120, 132, 137, 125, 139, 142, 172, 186, 185, 124, 139, 140, 127, 143, 142, 132, 148, 147, 134, 151, 150, 132, 150, 149, 136, 154, 153, 137, 155, 154, 142, 160, 157, 150, 167, 163, 158, 171, 170, 167, 180, 177, + 170, 182, 179, 168, 181, 178, 165, 180, 176, 165, 179, 178, 170, 183, 181, 170, 183, 181, 177, 190, 187, 175, 188, 186, 174, 187, 185, 170, 184, 182, 168, 183, 181, 175, 188, 185, 184, 195, 192, 190, 202, 197, 187, 199, 196, 188, 201, 196, 190, 203, 200, 197, 208, 205, 200, 210, 207, 202, 212, 209, 205, 214, 211, + 210, 218, 215, 213, 221, 218, 217, 224, 221, 219, 226, 223, 221, 228, 225, 223, 229, 226, 225, 231, 228, 227, 232, 230, 227, 232, 230, 229, 234, 232, 230, 235, 233, 231, 236, 234, 231, 236, 233, 231, 237, 232, 231, 236, 234, 230, 235, 233, 228, 234, 232, 226, 233, 230, 226, 233, 230, 226, 233, 230, 227, 234, 231, + 179, 198, 204, 177, 198, 204, 174, 196, 203, 175, 194, 201, 176, 194, 202, 174, 193, 200, 176, 194, 201, 177, 195, 202, 176, 194, 201, 176, 194, 201, 173, 192, 198, 169, 188, 195, 163, 185, 192, 155, 180, 187, 151, 176, 187, 150, 177, 187, 152, 178, 188, 160, 183, 191, 166, 188, 195, 171, 190, 197, 169, 190, 196, + 167, 189, 195, 166, 186, 195, 165, 187, 195, 165, 187, 195, 167, 187, 195, 165, 186, 194, 161, 183, 190, 159, 181, 189, 160, 181, 189, 159, 181, 189, 161, 182, 190, 159, 182, 190, 156, 180, 190, 155, 179, 190, 155, 181, 190, 156, 180, 190, 155, 180, 190, 154, 179, 189, 153, 177, 189, 151, 175, 187, 145, 171, 185, + 139, 166, 181, 134, 162, 177, 128, 158, 173, 127, 157, 172, 125, 154, 169, 126, 155, 170, 129, 155, 171, 125, 152, 168, 117, 145, 162, 105, 135, 153, 98, 130, 149, 96, 125, 146, 99, 128, 148, 102, 128, 147, 101, 127, 144, 100, 126, 142, 96, 122, 139, 105, 130, 146, 95, 121, 137, 86, 113, 127, 95, 119, 133, + 112, 134, 148, 103, 126, 141, 90, 116, 132, 89, 114, 130, 87, 112, 128, 86, 111, 127, 86, 112, 126, 91, 115, 128, 90, 114, 127, 87, 111, 123, 88, 112, 124, 82, 107, 119, 80, 105, 117, 83, 110, 119, 88, 112, 124, 89, 114, 125, 89, 114, 125, 89, 114, 123, 89, 115, 122, 89, 115, 120, 82, 108, 114, + 78, 104, 110, 78, 104, 110, 83, 107, 113, 99, 121, 127, 123, 142, 149, 109, 130, 135, 98, 120, 125, 102, 124, 129, 124, 144, 147, 108, 130, 134, 102, 124, 129, 100, 122, 127, 100, 123, 128, 99, 121, 126, 98, 120, 125, 98, 120, 125, 95, 117, 122, 96, 118, 123, 95, 117, 122, 92, 114, 119, 92, 114, 119, + 91, 112, 118, 91, 113, 118, 91, 113, 118, 90, 112, 117, 91, 113, 119, 89, 111, 117, 87, 109, 115, 86, 108, 114, 83, 105, 111, 81, 105, 111, 78, 102, 108, 76, 102, 105, 75, 100, 104, 76, 100, 105, 74, 98, 104, 73, 96, 102, 72, 95, 101, 70, 93, 99, 68, 91, 97, 67, 89, 95, 69, 91, 97, + 69, 88, 96, 70, 89, 96, 67, 88, 95, 68, 87, 93, 68, 88, 95, 66, 85, 92, 61, 81, 88, 59, 78, 85, 49, 71, 77, 44, 65, 71, 39, 61, 67, 40, 62, 68, 45, 64, 71, 47, 66, 74, 54, 72, 79, 59, 78, 83, 64, 80, 86, 62, 78, 84, 56, 73, 79, 56, 72, 77, 54, 70, 76, + 50, 66, 72, 49, 65, 71, 48, 64, 71, 44, 60, 67, 36, 52, 58, 34, 50, 56, 37, 50, 57, 35, 50, 54, 31, 46, 49, 32, 47, 50, 29, 44, 47, 33, 48, 50, 41, 57, 60, 35, 51, 56, 33, 48, 54, 38, 54, 58, 101, 112, 116, 40, 53, 58, 47, 61, 64, 56, 69, 73, 65, 78, 80, + 72, 85, 87, 82, 95, 96, 88, 101, 100, 92, 105, 104, 98, 110, 110, 105, 118, 117, 108, 120, 118, 112, 123, 121, 110, 121, 120, 104, 114, 114, 137, 145, 147, 83, 95, 98, 84, 95, 99, 68, 78, 83, 141, 150, 152, 91, 102, 105, 92, 104, 106, 145, 153, 155, 96, 107, 109, 95, 108, 108, 95, 109, 109, + 98, 113, 112, 96, 112, 111, 99, 114, 113, 99, 113, 112, 95, 109, 108, 92, 107, 106, 92, 108, 108, 94, 110, 109, 88, 104, 103, 90, 106, 105, 88, 104, 103, 89, 105, 104, 86, 102, 101, 83, 99, 98, 89, 104, 106, 99, 112, 114, 99, 112, 114, 101, 114, 116, 97, 110, 112, 94, 108, 109, 119, 126, 129, + 142, 153, 156, 83, 96, 98, 83, 99, 99, 87, 104, 102, 86, 102, 101, 88, 104, 103, 90, 106, 106, 89, 105, 107, 93, 108, 110, 94, 110, 112, 104, 120, 119, 116, 131, 130, 103, 118, 121, 98, 116, 117, 97, 115, 116, 99, 117, 119, 97, 115, 115, 97, 115, 116, 100, 118, 118, 103, 122, 123, 105, 123, 124, + 106, 124, 125, 107, 125, 126, 107, 125, 125, 105, 125, 126, 109, 129, 131, 112, 130, 134, 146, 159, 162, 135, 147, 152, 117, 131, 135, 165, 179, 179, 142, 156, 157, 133, 147, 146, 133, 148, 147, 141, 155, 154, 137, 152, 150, 139, 153, 151, 140, 157, 155, 144, 161, 158, 150, 167, 164, 155, 170, 167, 164, 178, 174, + 173, 186, 182, 173, 185, 181, 171, 184, 181, 170, 184, 180, 173, 186, 183, 172, 186, 183, 174, 189, 185, 176, 190, 186, 175, 188, 186, 170, 183, 181, 169, 184, 182, 174, 188, 185, 180, 195, 191, 189, 200, 197, 190, 201, 198, 189, 200, 196, 189, 201, 197, 196, 207, 205, 200, 211, 208, 203, 212, 209, 205, 213, 210, + 208, 217, 214, 214, 220, 217, 217, 224, 221, 219, 226, 223, 220, 227, 224, 223, 230, 227, 225, 230, 228, 226, 231, 229, 228, 233, 231, 229, 234, 232, 229, 235, 232, 231, 236, 234, 231, 236, 234, 231, 236, 233, 231, 237, 233, 230, 235, 233, 230, 235, 233, 227, 233, 231, 225, 232, 229, 225, 232, 229, 225, 232, 229, + 180, 199, 205, 178, 197, 204, 177, 196, 203, 177, 196, 203, 176, 195, 202, 176, 195, 202, 177, 195, 202, 177, 195, 202, 175, 193, 200, 175, 193, 200, 170, 189, 196, 162, 184, 192, 156, 181, 188, 153, 179, 186, 149, 176, 186, 155, 179, 188, 160, 183, 192, 166, 188, 195, 170, 190, 196, 172, 191, 198, 170, 190, 196, + 168, 190, 196, 167, 189, 196, 168, 188, 196, 169, 189, 197, 170, 189, 197, 166, 186, 194, 161, 184, 190, 156, 179, 187, 157, 180, 188, 157, 180, 188, 160, 181, 189, 157, 180, 188, 158, 179, 191, 155, 180, 190, 158, 179, 191, 157, 179, 191, 155, 180, 190, 153, 179, 189, 152, 176, 188, 148, 173, 185, 143, 169, 183, + 135, 162, 177, 134, 161, 176, 130, 159, 174, 130, 158, 173, 128, 157, 172, 129, 158, 173, 130, 156, 172, 122, 149, 166, 115, 143, 160, 104, 134, 152, 99, 129, 149, 98, 127, 148, 99, 129, 148, 97, 125, 143, 98, 125, 142, 98, 124, 140, 101, 126, 142, 103, 129, 144, 90, 117, 132, 85, 113, 126, 104, 127, 139, + 112, 135, 147, 95, 120, 134, 89, 114, 130, 88, 113, 129, 89, 114, 130, 89, 114, 130, 88, 114, 128, 91, 115, 127, 89, 113, 125, 89, 113, 125, 86, 111, 120, 82, 106, 118, 85, 109, 121, 88, 113, 124, 91, 116, 126, 91, 116, 126, 91, 116, 126, 89, 114, 124, 89, 115, 122, 88, 114, 120, 79, 105, 111, + 79, 106, 112, 81, 105, 111, 89, 112, 118, 107, 128, 134, 126, 144, 149, 103, 125, 130, 99, 121, 126, 103, 124, 129, 125, 144, 148, 105, 127, 131, 100, 122, 127, 101, 123, 128, 100, 122, 127, 98, 120, 125, 95, 119, 124, 94, 119, 122, 94, 118, 124, 93, 118, 122, 92, 117, 121, 92, 116, 120, 89, 114, 119, + 88, 113, 118, 88, 112, 117, 90, 112, 117, 90, 112, 118, 90, 112, 116, 88, 110, 115, 87, 109, 115, 85, 107, 113, 82, 106, 112, 80, 104, 110, 79, 103, 109, 78, 102, 108, 76, 100, 106, 75, 99, 105, 74, 98, 104, 72, 96, 102, 71, 95, 101, 71, 95, 101, 69, 92, 98, 70, 92, 98, 70, 91, 98, + 68, 89, 95, 66, 88, 94, 68, 88, 95, 70, 89, 96, 68, 87, 94, 64, 83, 89, 62, 81, 88, 55, 74, 81, 46, 68, 74, 40, 62, 68, 41, 62, 69, 40, 62, 68, 44, 63, 70, 51, 70, 77, 57, 75, 82, 62, 80, 85, 64, 80, 86, 59, 76, 83, 58, 76, 81, 53, 70, 77, 52, 68, 75, + 49, 65, 71, 48, 64, 70, 43, 60, 67, 38, 54, 61, 36, 52, 59, 31, 47, 53, 29, 45, 51, 32, 48, 54, 31, 45, 50, 31, 46, 49, 29, 44, 47, 33, 49, 51, 31, 47, 51, 28, 44, 50, 30, 46, 52, 32, 47, 53, 95, 105, 110, 42, 54, 60, 48, 61, 66, 50, 65, 68, 57, 71, 74, + 65, 78, 80, 73, 86, 88, 81, 94, 95, 85, 99, 97, 86, 101, 99, 93, 106, 105, 95, 108, 107, 100, 112, 111, 100, 113, 111, 87, 96, 96, 138, 150, 152, 67, 82, 85, 72, 84, 88, 75, 86, 90, 134, 143, 145, 74, 83, 87, 91, 100, 103, 91, 100, 103, 141, 151, 152, 95, 107, 109, 96, 110, 109, + 95, 109, 108, 97, 111, 110, 98, 112, 111, 98, 112, 111, 92, 106, 104, 92, 107, 106, 94, 110, 109, 92, 108, 107, 88, 104, 103, 86, 102, 101, 87, 103, 102, 87, 103, 102, 86, 102, 101, 82, 100, 99, 88, 103, 105, 94, 109, 111, 99, 113, 116, 99, 112, 113, 98, 111, 113, 95, 109, 112, 89, 99, 101, + 181, 191, 192, 79, 91, 94, 84, 98, 100, 87, 102, 104, 86, 102, 101, 91, 107, 106, 90, 105, 106, 90, 105, 107, 92, 107, 109, 96, 112, 110, 114, 129, 128, 105, 121, 120, 98, 115, 117, 98, 116, 117, 97, 115, 114, 99, 117, 116, 97, 115, 115, 96, 114, 115, 99, 117, 118, 101, 119, 120, 107, 125, 126, + 106, 124, 124, 108, 127, 127, 108, 126, 125, 106, 126, 127, 107, 127, 128, 113, 131, 132, 112, 128, 131, 169, 182, 184, 119, 133, 137, 121, 133, 139, 189, 201, 201, 129, 144, 143, 135, 149, 148, 139, 153, 151, 140, 154, 153, 143, 157, 155, 141, 157, 155, 148, 163, 162, 152, 167, 165, 154, 169, 167, 161, 175, 171, + 172, 184, 181, 178, 189, 186, 174, 186, 183, 173, 187, 183, 176, 189, 186, 175, 188, 186, 174, 188, 184, 174, 188, 185, 174, 187, 186, 171, 185, 183, 169, 183, 181, 172, 186, 183, 178, 192, 188, 184, 195, 192, 193, 204, 201, 189, 200, 197, 190, 201, 198, 193, 204, 200, 200, 209, 205, 204, 213, 208, 205, 214, 210, + 207, 216, 212, 213, 220, 217, 216, 223, 220, 219, 226, 223, 221, 227, 225, 223, 229, 227, 225, 230, 228, 226, 231, 229, 227, 232, 231, 228, 234, 230, 230, 235, 231, 231, 236, 234, 231, 236, 234, 231, 236, 234, 232, 237, 235, 230, 235, 233, 229, 234, 232, 229, 234, 232, 227, 233, 230, 225, 232, 229, 224, 231, 228, + 179, 199, 205, 178, 197, 204, 177, 196, 203, 177, 196, 203, 178, 197, 204, 178, 196, 203, 179, 197, 204, 176, 194, 201, 174, 192, 199, 170, 189, 197, 166, 187, 194, 159, 183, 190, 152, 178, 185, 150, 177, 186, 153, 180, 187, 159, 183, 191, 166, 187, 195, 172, 191, 198, 175, 193, 200, 173, 192, 199, 173, 192, 199, + 169, 191, 197, 170, 191, 198, 173, 192, 199, 173, 191, 198, 169, 188, 196, 164, 185, 192, 158, 181, 188, 154, 177, 185, 153, 177, 184, 156, 178, 187, 156, 179, 188, 159, 182, 190, 158, 180, 191, 158, 180, 191, 158, 180, 191, 157, 179, 190, 155, 179, 189, 152, 177, 188, 149, 174, 186, 143, 169, 182, 140, 167, 181, + 133, 161, 175, 132, 160, 175, 132, 160, 175, 131, 159, 174, 128, 156, 171, 127, 156, 171, 128, 154, 171, 119, 147, 163, 113, 142, 159, 105, 134, 153, 99, 130, 149, 99, 128, 149, 99, 128, 148, 100, 127, 145, 95, 123, 140, 97, 122, 138, 104, 131, 145, 98, 124, 138, 86, 113, 127, 90, 117, 130, 110, 133, 145, + 104, 128, 141, 92, 118, 132, 92, 117, 132, 89, 114, 130, 90, 115, 131, 88, 114, 129, 90, 115, 129, 88, 114, 126, 89, 112, 124, 88, 112, 123, 86, 110, 121, 84, 109, 120, 87, 110, 124, 91, 114, 127, 94, 117, 129, 93, 116, 127, 91, 115, 124, 87, 113, 119, 90, 115, 123, 85, 111, 117, 80, 106, 112, + 83, 109, 115, 88, 112, 118, 93, 116, 122, 116, 135, 141, 119, 138, 143, 99, 122, 127, 100, 122, 127, 105, 126, 132, 125, 143, 146, 100, 122, 127, 98, 120, 125, 99, 121, 127, 99, 121, 126, 98, 120, 125, 97, 119, 125, 94, 118, 124, 97, 120, 126, 93, 117, 123, 91, 115, 121, 90, 115, 119, 88, 112, 118, + 87, 111, 117, 88, 112, 118, 90, 113, 119, 91, 113, 119, 91, 113, 119, 90, 112, 118, 85, 107, 113, 85, 107, 113, 82, 106, 112, 81, 105, 111, 81, 105, 111, 78, 102, 108, 79, 103, 109, 76, 100, 106, 74, 98, 104, 75, 97, 103, 72, 94, 100, 72, 94, 100, 73, 95, 101, 71, 93, 99, 71, 92, 98, + 68, 90, 96, 68, 90, 96, 69, 90, 96, 70, 89, 96, 68, 87, 94, 64, 83, 90, 59, 78, 85, 50, 71, 77, 43, 65, 71, 39, 61, 67, 39, 61, 68, 43, 62, 70, 43, 63, 71, 52, 71, 79, 60, 78, 85, 60, 78, 84, 63, 81, 86, 59, 78, 83, 55, 73, 81, 50, 68, 75, 53, 69, 75, + 49, 65, 71, 46, 62, 69, 40, 58, 65, 35, 53, 60, 37, 54, 61, 35, 50, 57, 31, 47, 53, 30, 46, 52, 29, 44, 51, 30, 45, 48, 29, 43, 46, 30, 47, 50, 27, 44, 48, 28, 44, 50, 31, 48, 54, 21, 35, 43, 110, 121, 125, 45, 57, 63, 47, 61, 67, 48, 62, 67, 54, 69, 73, + 61, 74, 77, 66, 79, 82, 71, 84, 86, 71, 84, 86, 76, 89, 92, 84, 98, 98, 89, 103, 102, 91, 105, 104, 88, 101, 100, 87, 99, 101, 123, 131, 133, 64, 76, 81, 64, 79, 82, 68, 80, 85, 110, 121, 124, 96, 105, 107, 90, 98, 102, 81, 90, 93, 153, 163, 163, 87, 99, 101, 92, 106, 105, + 96, 110, 109, 96, 110, 108, 97, 111, 110, 96, 110, 109, 91, 105, 104, 90, 106, 105, 93, 109, 108, 88, 104, 103, 87, 103, 103, 85, 101, 100, 85, 101, 100, 87, 102, 103, 86, 100, 103, 80, 99, 100, 87, 103, 105, 95, 109, 111, 97, 112, 115, 94, 110, 112, 97, 110, 112, 93, 108, 110, 96, 109, 111, + 144, 154, 155, 111, 122, 127, 82, 96, 98, 88, 103, 105, 86, 102, 101, 91, 107, 106, 92, 108, 106, 89, 104, 107, 93, 108, 110, 96, 110, 113, 119, 133, 132, 98, 114, 116, 104, 120, 121, 96, 114, 113, 96, 114, 113, 99, 117, 116, 98, 116, 116, 96, 114, 115, 99, 117, 118, 104, 122, 123, 105, 123, 124, + 106, 123, 123, 111, 126, 129, 108, 126, 128, 106, 125, 126, 109, 129, 130, 115, 133, 134, 116, 133, 136, 109, 125, 129, 182, 194, 196, 117, 129, 135, 140, 151, 153, 169, 182, 179, 132, 147, 145, 139, 153, 151, 142, 156, 154, 142, 156, 154, 146, 161, 159, 151, 165, 163, 155, 169, 167, 156, 170, 168, 159, 173, 169, + 170, 183, 179, 177, 188, 185, 176, 187, 184, 176, 188, 183, 178, 189, 186, 179, 190, 187, 176, 189, 185, 174, 188, 184, 172, 186, 183, 173, 186, 184, 169, 183, 181, 169, 184, 180, 177, 191, 187, 184, 196, 193, 190, 200, 197, 194, 204, 201, 188, 199, 195, 190, 202, 196, 197, 207, 201, 203, 212, 206, 203, 213, 207, + 206, 216, 210, 213, 219, 217, 215, 222, 219, 219, 226, 223, 221, 227, 224, 223, 228, 226, 224, 229, 228, 227, 232, 229, 228, 233, 230, 228, 233, 230, 229, 234, 232, 230, 235, 233, 232, 237, 235, 231, 236, 234, 231, 236, 234, 230, 235, 233, 230, 235, 233, 229, 234, 232, 228, 233, 231, 225, 232, 229, 224, 231, 228, + 180, 198, 205, 178, 197, 204, 179, 197, 204, 178, 196, 203, 179, 198, 205, 179, 196, 203, 177, 195, 202, 175, 193, 200, 172, 190, 197, 167, 187, 194, 162, 183, 191, 156, 182, 189, 151, 178, 185, 153, 179, 186, 159, 182, 190, 167, 187, 194, 171, 191, 197, 176, 194, 201, 177, 195, 201, 177, 196, 202, 174, 193, 199, + 173, 194, 200, 174, 194, 201, 174, 192, 199, 174, 192, 199, 167, 187, 194, 162, 184, 190, 154, 176, 185, 151, 176, 183, 154, 176, 185, 155, 178, 186, 156, 179, 188, 160, 183, 190, 158, 180, 191, 158, 180, 191, 158, 181, 192, 158, 180, 191, 153, 177, 187, 151, 175, 186, 144, 170, 182, 139, 166, 179, 137, 164, 178, + 133, 162, 176, 136, 163, 177, 133, 162, 176, 135, 161, 177, 131, 159, 175, 128, 156, 173, 124, 152, 169, 115, 144, 161, 110, 140, 157, 106, 136, 154, 100, 130, 149, 99, 129, 148, 99, 127, 147, 100, 128, 145, 95, 124, 139, 98, 124, 140, 106, 132, 146, 92, 119, 133, 85, 112, 126, 98, 125, 137, 112, 136, 149, + 96, 122, 136, 90, 116, 130, 91, 116, 132, 92, 117, 133, 92, 117, 133, 92, 117, 132, 90, 115, 130, 88, 114, 126, 84, 110, 122, 87, 112, 123, 85, 110, 121, 86, 110, 123, 92, 114, 129, 98, 120, 133, 95, 118, 129, 96, 118, 129, 92, 114, 124, 90, 113, 121, 91, 114, 122, 85, 110, 117, 82, 108, 113, + 86, 111, 117, 87, 112, 118, 95, 117, 123, 118, 138, 143, 113, 133, 138, 99, 121, 127, 102, 123, 128, 109, 130, 135, 124, 144, 149, 98, 120, 125, 98, 120, 125, 97, 119, 124, 96, 118, 124, 96, 118, 124, 97, 120, 126, 95, 119, 125, 95, 119, 125, 92, 117, 123, 92, 116, 122, 88, 112, 118, 89, 113, 119, + 90, 113, 119, 91, 114, 120, 92, 114, 120, 92, 114, 120, 90, 112, 118, 88, 110, 116, 87, 109, 115, 85, 107, 113, 82, 105, 111, 80, 104, 110, 80, 104, 110, 79, 103, 109, 79, 102, 108, 76, 99, 105, 77, 100, 106, 75, 97, 103, 74, 96, 102, 74, 96, 102, 72, 94, 100, 72, 93, 100, 71, 93, 99, + 71, 92, 99, 70, 92, 98, 71, 92, 98, 70, 89, 96, 67, 86, 93, 61, 81, 87, 53, 73, 80, 45, 66, 75, 42, 63, 71, 40, 61, 69, 40, 62, 69, 40, 61, 69, 45, 66, 74, 58, 76, 84, 61, 79, 86, 61, 79, 86, 62, 80, 87, 58, 76, 83, 54, 72, 80, 52, 68, 76, 51, 67, 74, + 50, 65, 72, 47, 63, 70, 40, 58, 65, 39, 57, 64, 38, 55, 62, 33, 49, 55, 31, 47, 53, 31, 47, 53, 27, 43, 49, 29, 44, 48, 30, 45, 47, 32, 46, 52, 30, 46, 52, 31, 47, 54, 36, 50, 57, 36, 49, 56, 92, 103, 108, 45, 59, 65, 42, 57, 64, 44, 59, 66, 51, 65, 71, + 56, 69, 76, 59, 71, 75, 57, 71, 75, 58, 73, 76, 67, 81, 84, 75, 89, 91, 82, 95, 95, 79, 94, 94, 81, 94, 96, 80, 93, 95, 117, 127, 130, 47, 60, 66, 64, 78, 85, 66, 80, 85, 57, 69, 73, 139, 148, 154, 84, 95, 97, 88, 97, 99, 144, 155, 155, 83, 95, 95, 91, 103, 103, + 93, 107, 106, 93, 107, 107, 96, 110, 110, 95, 109, 108, 90, 104, 103, 89, 104, 103, 91, 106, 105, 86, 102, 101, 85, 101, 101, 86, 101, 102, 84, 100, 100, 85, 99, 101, 83, 98, 100, 83, 98, 100, 85, 100, 102, 94, 108, 110, 95, 110, 113, 94, 109, 111, 93, 107, 109, 93, 105, 107, 93, 106, 108, + 83, 92, 99, 168, 180, 182, 83, 95, 98, 84, 98, 100, 88, 103, 104, 91, 106, 107, 91, 107, 106, 90, 105, 108, 93, 108, 110, 93, 108, 110, 118, 133, 131, 97, 112, 114, 101, 117, 119, 97, 115, 114, 95, 113, 112, 96, 114, 113, 99, 117, 118, 95, 114, 115, 100, 118, 119, 104, 122, 123, 104, 122, 123, + 107, 124, 124, 111, 128, 127, 112, 129, 128, 109, 127, 126, 111, 129, 128, 114, 132, 131, 117, 135, 137, 117, 133, 136, 111, 126, 131, 179, 190, 194, 118, 127, 132, 181, 192, 191, 141, 153, 153, 139, 152, 150, 143, 156, 154, 141, 156, 154, 148, 162, 160, 152, 166, 164, 158, 172, 170, 158, 171, 169, 159, 174, 169, + 166, 181, 177, 176, 188, 184, 178, 190, 186, 176, 188, 183, 178, 189, 186, 180, 191, 188, 179, 191, 188, 173, 187, 183, 170, 184, 182, 173, 186, 184, 172, 185, 183, 171, 184, 182, 174, 188, 184, 182, 193, 190, 187, 198, 195, 196, 205, 202, 190, 201, 197, 188, 200, 195, 192, 204, 198, 200, 210, 204, 202, 212, 206, + 205, 215, 209, 211, 217, 215, 215, 222, 219, 218, 225, 222, 220, 226, 224, 222, 228, 222, 224, 230, 225, 225, 231, 228, 227, 232, 229, 227, 233, 230, 228, 233, 231, 230, 235, 233, 231, 236, 234, 232, 237, 235, 231, 236, 234, 230, 235, 233, 229, 234, 232, 228, 233, 231, 228, 233, 231, 226, 231, 229, 224, 230, 228, + 180, 198, 205, 180, 199, 205, 179, 197, 204, 180, 198, 205, 180, 198, 205, 180, 198, 204, 176, 194, 201, 172, 191, 198, 167, 189, 195, 162, 184, 191, 157, 182, 188, 155, 181, 188, 154, 180, 186, 159, 182, 191, 165, 188, 194, 173, 192, 199, 176, 194, 201, 178, 196, 202, 177, 196, 201, 178, 197, 202, 176, 195, 201, + 177, 195, 202, 176, 194, 202, 176, 194, 201, 172, 189, 196, 166, 185, 192, 158, 179, 186, 151, 174, 182, 146, 172, 179, 151, 175, 184, 155, 177, 187, 157, 180, 188, 160, 182, 191, 159, 182, 191, 159, 180, 192, 156, 180, 191, 154, 178, 189, 152, 176, 187, 147, 172, 184, 141, 168, 180, 137, 165, 176, 131, 161, 175, + 134, 163, 177, 136, 164, 178, 138, 164, 180, 136, 163, 179, 134, 160, 177, 130, 157, 174, 124, 151, 168, 114, 143, 160, 109, 138, 155, 103, 134, 153, 101, 131, 150, 100, 130, 149, 98, 125, 146, 97, 125, 142, 95, 124, 140, 100, 127, 142, 99, 126, 139, 90, 117, 131, 87, 114, 128, 106, 130, 143, 107, 130, 144, + 92, 118, 133, 91, 117, 133, 90, 116, 132, 92, 118, 134, 95, 120, 136, 92, 117, 132, 89, 115, 129, 87, 113, 125, 84, 110, 122, 87, 111, 123, 85, 109, 121, 89, 112, 127, 96, 117, 132, 99, 121, 135, 96, 118, 130, 95, 116, 128, 91, 114, 122, 89, 113, 121, 91, 114, 122, 86, 110, 118, 84, 108, 116, + 86, 109, 116, 88, 112, 118, 102, 124, 130, 120, 140, 145, 112, 133, 138, 99, 121, 126, 97, 120, 125, 111, 132, 137, 122, 143, 148, 98, 120, 125, 97, 120, 125, 97, 120, 126, 97, 119, 125, 98, 120, 126, 98, 120, 126, 98, 120, 126, 97, 119, 125, 95, 117, 123, 91, 116, 122, 89, 114, 119, 89, 114, 119, + 90, 114, 119, 90, 113, 120, 93, 115, 121, 93, 115, 121, 90, 111, 117, 87, 110, 116, 86, 109, 115, 83, 107, 112, 84, 107, 113, 82, 106, 112, 81, 105, 111, 82, 104, 110, 81, 103, 109, 78, 100, 106, 76, 98, 104, 76, 98, 104, 75, 97, 103, 75, 97, 103, 74, 96, 102, 74, 96, 102, 73, 95, 101, + 73, 92, 99, 75, 94, 101, 71, 91, 98, 71, 90, 97, 67, 86, 93, 62, 80, 88, 50, 71, 79, 46, 67, 75, 42, 63, 71, 41, 62, 70, 38, 60, 68, 43, 64, 72, 52, 71, 79, 58, 77, 86, 61, 79, 86, 61, 79, 86, 58, 76, 83, 59, 77, 84, 52, 69, 78, 48, 64, 73, 49, 66, 72, + 48, 65, 72, 47, 64, 71, 42, 60, 67, 42, 60, 67, 37, 54, 61, 35, 51, 57, 30, 46, 52, 27, 43, 49, 28, 44, 50, 28, 42, 48, 31, 45, 51, 30, 45, 51, 32, 47, 53, 36, 49, 57, 38, 51, 59, 84, 94, 102, 44, 57, 63, 42, 56, 64, 42, 56, 63, 42, 57, 65, 45, 59, 67, + 51, 65, 71, 48, 63, 67, 51, 66, 68, 53, 68, 71, 59, 74, 76, 68, 83, 85, 70, 85, 88, 69, 84, 87, 67, 83, 85, 68, 81, 84, 109, 120, 124, 51, 67, 73, 60, 76, 82, 65, 78, 85, 70, 83, 87, 130, 139, 143, 76, 86, 90, 81, 91, 94, 111, 119, 121, 107, 119, 120, 86, 99, 100, + 89, 102, 103, 89, 102, 104, 93, 106, 108, 92, 107, 106, 87, 101, 100, 88, 102, 101, 88, 103, 102, 84, 100, 99, 83, 99, 98, 84, 99, 101, 84, 99, 101, 81, 96, 98, 83, 98, 100, 82, 96, 98, 85, 100, 102, 91, 106, 108, 93, 108, 111, 94, 109, 110, 92, 105, 107, 91, 105, 105, 88, 102, 102, + 86, 97, 99, 170, 178, 184, 78, 89, 92, 86, 99, 101, 88, 104, 104, 87, 103, 103, 88, 105, 104, 86, 101, 103, 93, 109, 109, 110, 125, 125, 98, 113, 115, 97, 112, 114, 99, 115, 116, 97, 114, 113, 95, 113, 112, 97, 115, 114, 96, 114, 114, 98, 116, 116, 101, 119, 120, 106, 124, 125, 103, 121, 121, + 108, 124, 123, 113, 129, 128, 113, 131, 131, 112, 130, 129, 111, 129, 129, 117, 132, 134, 122, 137, 138, 121, 136, 139, 121, 136, 139, 138, 151, 155, 160, 170, 172, 129, 139, 143, 186, 197, 195, 135, 148, 147, 140, 153, 151, 144, 157, 155, 147, 161, 159, 155, 168, 166, 160, 173, 171, 161, 174, 172, 159, 173, 169, + 164, 178, 174, 175, 186, 183, 179, 190, 187, 176, 188, 184, 177, 188, 185, 182, 193, 190, 183, 192, 189, 180, 190, 187, 172, 185, 182, 172, 185, 183, 174, 187, 185, 171, 184, 181, 174, 188, 184, 180, 191, 188, 186, 197, 194, 191, 201, 198, 194, 205, 201, 189, 201, 195, 191, 203, 197, 195, 206, 200, 201, 211, 205, + 203, 213, 207, 209, 217, 213, 214, 221, 218, 217, 224, 219, 221, 227, 222, 221, 227, 221, 222, 228, 223, 224, 229, 227, 226, 231, 229, 227, 232, 230, 228, 233, 231, 229, 234, 231, 230, 236, 233, 232, 237, 233, 233, 236, 234, 230, 235, 233, 229, 234, 232, 227, 232, 230, 227, 232, 230, 225, 230, 228, 224, 229, 227, + 180, 199, 206, 180, 198, 205, 180, 198, 205, 181, 200, 205, 181, 199, 206, 178, 196, 203, 172, 192, 198, 168, 190, 197, 164, 187, 193, 161, 185, 192, 155, 181, 188, 155, 181, 187, 160, 184, 190, 166, 188, 194, 172, 191, 198, 177, 195, 201, 179, 197, 203, 179, 197, 202, 179, 198, 203, 179, 198, 203, 179, 198, 203, + 178, 198, 203, 177, 196, 201, 174, 192, 199, 169, 188, 195, 159, 181, 187, 155, 177, 184, 150, 172, 180, 148, 172, 180, 151, 175, 183, 154, 177, 185, 159, 180, 188, 162, 183, 191, 160, 181, 191, 159, 181, 192, 155, 179, 189, 154, 178, 190, 150, 174, 186, 142, 169, 181, 138, 165, 177, 134, 163, 175, 133, 162, 175, + 135, 164, 177, 140, 166, 180, 139, 165, 180, 138, 164, 179, 134, 160, 176, 128, 155, 172, 122, 150, 167, 115, 144, 161, 107, 137, 154, 102, 132, 150, 101, 132, 151, 102, 130, 150, 100, 126, 146, 96, 124, 144, 96, 123, 140, 102, 129, 144, 94, 122, 137, 84, 113, 127, 94, 121, 135, 109, 133, 148, 100, 125, 140, + 93, 119, 135, 91, 117, 133, 91, 117, 133, 92, 118, 134, 93, 120, 134, 91, 117, 131, 90, 116, 129, 87, 113, 126, 86, 112, 124, 84, 110, 122, 88, 112, 124, 91, 114, 129, 96, 118, 133, 98, 120, 132, 93, 115, 128, 90, 114, 124, 91, 113, 124, 92, 115, 123, 92, 115, 123, 87, 110, 118, 85, 108, 116, + 87, 111, 117, 89, 112, 118, 105, 126, 133, 120, 139, 145, 104, 125, 130, 99, 121, 126, 97, 119, 124, 114, 135, 140, 116, 138, 143, 95, 119, 124, 96, 120, 126, 95, 118, 126, 98, 120, 128, 100, 121, 129, 98, 121, 126, 96, 120, 126, 97, 119, 125, 97, 119, 125, 94, 116, 121, 92, 114, 119, 93, 115, 120, + 93, 115, 120, 94, 117, 122, 94, 116, 122, 89, 112, 118, 91, 114, 120, 87, 111, 117, 83, 107, 113, 84, 108, 113, 83, 107, 113, 86, 108, 114, 82, 105, 111, 83, 105, 111, 80, 102, 108, 80, 102, 108, 78, 100, 106, 77, 98, 104, 76, 97, 103, 75, 97, 103, 74, 96, 102, 74, 96, 102, 73, 94, 101, + 75, 94, 101, 75, 94, 101, 70, 91, 97, 69, 88, 95, 65, 84, 92, 58, 78, 86, 49, 70, 78, 45, 66, 74, 44, 65, 73, 39, 60, 68, 40, 61, 69, 47, 68, 76, 56, 76, 84, 59, 78, 86, 61, 80, 88, 61, 79, 86, 60, 78, 85, 56, 74, 81, 53, 70, 79, 46, 63, 72, 49, 65, 73, + 49, 66, 73, 47, 64, 71, 42, 61, 68, 42, 60, 67, 41, 58, 65, 35, 52, 59, 31, 47, 53, 30, 46, 52, 28, 45, 51, 31, 45, 51, 33, 47, 53, 33, 48, 55, 37, 51, 57, 39, 52, 58, 38, 50, 56, 98, 107, 113, 31, 45, 51, 37, 50, 58, 41, 54, 62, 41, 54, 62, 41, 56, 63, + 42, 57, 64, 44, 59, 65, 45, 60, 66, 51, 65, 71, 58, 72, 77, 61, 76, 80, 66, 81, 84, 65, 80, 83, 61, 76, 79, 64, 77, 82, 89, 103, 107, 69, 81, 88, 60, 75, 81, 66, 80, 87, 70, 83, 87, 126, 135, 138, 61, 72, 77, 79, 89, 93, 69, 79, 83, 140, 152, 155, 80, 93, 95, + 84, 98, 98, 89, 102, 104, 92, 105, 107, 90, 103, 105, 84, 98, 97, 84, 99, 98, 86, 100, 99, 82, 99, 98, 82, 98, 97, 81, 96, 98, 82, 97, 99, 83, 98, 100, 82, 97, 99, 82, 97, 99, 83, 97, 99, 91, 106, 108, 93, 108, 110, 92, 106, 108, 90, 104, 103, 88, 102, 101, 86, 100, 99, + 82, 94, 95, 115, 123, 126, 138, 147, 148, 84, 97, 98, 88, 103, 105, 88, 103, 105, 88, 104, 103, 89, 104, 106, 89, 104, 105, 114, 129, 129, 92, 109, 110, 95, 111, 113, 98, 113, 115, 100, 116, 117, 96, 114, 114, 96, 114, 115, 97, 115, 116, 98, 115, 117, 102, 120, 122, 106, 124, 125, 104, 122, 123, + 105, 123, 123, 112, 130, 129, 114, 132, 132, 115, 133, 131, 114, 132, 132, 117, 135, 136, 120, 137, 138, 121, 136, 138, 123, 138, 141, 123, 136, 139, 163, 174, 177, 136, 146, 150, 165, 176, 176, 157, 169, 168, 139, 152, 150, 143, 156, 154, 147, 160, 158, 154, 168, 164, 159, 172, 169, 160, 174, 171, 161, 175, 172, + 161, 175, 171, 172, 184, 181, 178, 189, 186, 178, 188, 186, 177, 188, 185, 183, 192, 189, 184, 193, 190, 181, 191, 187, 174, 187, 183, 170, 183, 181, 172, 185, 183, 173, 186, 183, 174, 188, 184, 176, 190, 186, 184, 195, 192, 188, 199, 196, 193, 202, 199, 191, 201, 199, 189, 200, 197, 192, 203, 200, 197, 208, 203, + 203, 212, 208, 207, 215, 212, 213, 220, 217, 215, 222, 220, 219, 226, 220, 221, 226, 224, 222, 228, 226, 224, 228, 227, 225, 230, 228, 227, 232, 230, 227, 232, 230, 228, 233, 231, 230, 235, 232, 230, 236, 232, 233, 236, 234, 230, 235, 233, 228, 233, 231, 226, 231, 229, 226, 231, 229, 224, 230, 228, 223, 229, 226, + 181, 199, 205, 183, 200, 207, 182, 200, 206, 182, 200, 206, 181, 198, 206, 175, 194, 200, 170, 192, 198, 166, 189, 195, 162, 186, 192, 158, 183, 190, 157, 181, 189, 158, 182, 188, 164, 187, 193, 171, 190, 197, 176, 194, 201, 180, 198, 205, 180, 199, 204, 180, 199, 205, 180, 199, 204, 181, 199, 205, 182, 198, 204, + 181, 198, 204, 177, 195, 201, 172, 190, 197, 165, 185, 192, 157, 179, 187, 151, 174, 182, 150, 173, 181, 148, 172, 179, 154, 177, 185, 157, 180, 188, 161, 181, 189, 163, 183, 191, 160, 181, 190, 159, 180, 190, 154, 177, 188, 152, 176, 187, 146, 171, 183, 138, 166, 177, 134, 162, 176, 132, 162, 173, 135, 164, 175, + 138, 165, 179, 140, 167, 181, 141, 167, 181, 139, 165, 179, 136, 161, 177, 130, 155, 171, 120, 148, 164, 111, 140, 157, 105, 135, 152, 102, 132, 150, 104, 133, 150, 103, 130, 148, 103, 129, 148, 99, 126, 143, 97, 124, 141, 101, 127, 142, 93, 119, 135, 85, 113, 128, 100, 127, 141, 107, 132, 146, 95, 121, 137, + 91, 117, 133, 91, 117, 133, 92, 118, 134, 91, 116, 132, 92, 119, 133, 91, 118, 132, 90, 116, 130, 85, 111, 124, 84, 110, 122, 87, 112, 124, 90, 113, 126, 94, 117, 132, 95, 118, 133, 95, 118, 131, 91, 115, 127, 92, 117, 127, 91, 114, 124, 92, 114, 122, 91, 114, 122, 86, 110, 116, 86, 111, 116, + 86, 110, 116, 91, 115, 121, 111, 131, 138, 119, 138, 144, 104, 125, 130, 98, 120, 125, 96, 119, 123, 116, 137, 141, 111, 134, 138, 94, 119, 124, 96, 120, 127, 98, 121, 129, 100, 122, 130, 97, 121, 129, 98, 121, 128, 97, 120, 126, 95, 120, 126, 95, 117, 123, 94, 116, 122, 91, 115, 119, 94, 116, 121, + 92, 115, 120, 95, 117, 122, 93, 116, 121, 90, 113, 119, 89, 113, 119, 87, 111, 116, 85, 109, 114, 83, 107, 112, 86, 108, 113, 84, 106, 112, 84, 106, 112, 79, 103, 109, 77, 101, 107, 80, 102, 108, 76, 98, 104, 76, 98, 104, 76, 98, 103, 76, 98, 104, 75, 97, 101, 76, 98, 103, 75, 96, 101, + 75, 94, 100, 71, 93, 99, 71, 92, 98, 69, 88, 96, 64, 83, 91, 54, 75, 83, 51, 71, 79, 46, 67, 75, 46, 67, 75, 37, 61, 67, 42, 65, 71, 50, 72, 79, 59, 78, 85, 58, 77, 85, 60, 79, 86, 61, 80, 87, 60, 78, 86, 57, 75, 82, 51, 68, 77, 47, 64, 73, 45, 63, 72, + 47, 64, 73, 46, 64, 71, 44, 62, 69, 42, 60, 67, 38, 56, 63, 38, 55, 62, 34, 51, 58, 30, 47, 54, 32, 48, 55, 33, 48, 56, 34, 50, 57, 35, 50, 58, 37, 51, 58, 37, 50, 56, 28, 41, 47, 101, 112, 117, 35, 49, 57, 37, 50, 58, 37, 50, 59, 37, 53, 60, 37, 53, 60, + 36, 54, 61, 35, 53, 60, 39, 57, 63, 45, 61, 67, 54, 70, 76, 55, 70, 77, 59, 75, 79, 61, 75, 80, 60, 74, 79, 61, 74, 80, 59, 70, 76, 105, 117, 122, 60, 75, 82, 65, 79, 85, 64, 77, 83, 78, 87, 95, 107, 117, 123, 76, 85, 93, 63, 74, 81, 137, 147, 151, 75, 88, 90, + 78, 91, 93, 85, 98, 100, 86, 99, 101, 81, 96, 98, 77, 93, 94, 81, 96, 95, 79, 95, 94, 79, 95, 94, 78, 94, 94, 79, 94, 96, 80, 95, 97, 79, 94, 96, 80, 95, 97, 79, 94, 96, 79, 94, 96, 87, 102, 104, 93, 108, 110, 91, 106, 108, 89, 104, 103, 87, 101, 100, 84, 98, 98, + 77, 90, 91, 69, 78, 80, 180, 191, 191, 79, 91, 94, 87, 102, 105, 89, 104, 106, 86, 101, 103, 85, 100, 102, 92, 108, 108, 108, 124, 125, 93, 110, 111, 91, 109, 110, 95, 111, 113, 96, 113, 114, 96, 114, 115, 96, 114, 115, 97, 114, 116, 99, 116, 118, 103, 121, 123, 105, 123, 123, 104, 122, 123, + 106, 124, 124, 109, 127, 127, 115, 133, 133, 116, 134, 133, 115, 133, 132, 115, 133, 132, 120, 137, 138, 120, 137, 138, 124, 139, 141, 123, 138, 140, 116, 131, 132, 186, 197, 198, 127, 137, 141, 190, 200, 200, 139, 151, 149, 139, 153, 149, 146, 160, 156, 153, 166, 162, 161, 173, 170, 161, 174, 172, 162, 175, 173, + 163, 178, 173, 170, 181, 178, 177, 188, 185, 175, 186, 183, 177, 187, 184, 182, 192, 185, 183, 193, 189, 181, 190, 186, 178, 190, 187, 172, 186, 182, 171, 185, 181, 172, 186, 182, 175, 189, 185, 175, 189, 185, 178, 190, 187, 183, 195, 192, 187, 198, 195, 192, 203, 200, 189, 200, 197, 189, 200, 197, 194, 205, 202, + 200, 209, 206, 204, 213, 210, 211, 218, 215, 215, 222, 219, 217, 224, 221, 219, 224, 222, 220, 225, 223, 223, 228, 225, 224, 229, 226, 225, 230, 228, 226, 232, 228, 227, 232, 230, 228, 233, 231, 229, 235, 231, 230, 235, 233, 231, 235, 233, 229, 232, 230, 226, 231, 229, 224, 229, 227, 223, 228, 226, 223, 228, 226, + 180, 198, 205, 182, 199, 206, 184, 201, 208, 181, 199, 206, 176, 195, 202, 172, 193, 199, 169, 191, 197, 163, 186, 195, 159, 184, 191, 159, 183, 191, 161, 184, 190, 164, 187, 192, 171, 190, 197, 174, 193, 200, 180, 198, 203, 180, 199, 204, 180, 198, 204, 180, 199, 204, 182, 200, 206, 184, 200, 206, 183, 199, 205, + 179, 197, 202, 177, 195, 200, 168, 187, 194, 160, 182, 188, 156, 177, 186, 152, 175, 183, 149, 172, 180, 151, 174, 182, 157, 179, 187, 161, 181, 189, 162, 183, 191, 162, 183, 190, 160, 181, 189, 157, 179, 190, 154, 178, 189, 151, 175, 187, 146, 171, 183, 141, 167, 181, 138, 166, 176, 137, 165, 179, 138, 165, 179, + 141, 167, 181, 142, 168, 180, 140, 166, 179, 140, 166, 180, 135, 161, 175, 130, 156, 170, 116, 145, 160, 111, 140, 156, 102, 132, 149, 103, 132, 149, 105, 133, 150, 104, 132, 149, 103, 129, 146, 97, 125, 142, 99, 125, 141, 96, 123, 138, 86, 114, 129, 90, 115, 132, 104, 129, 143, 104, 129, 144, 94, 120, 136, + 91, 117, 133, 94, 119, 135, 91, 117, 132, 93, 118, 133, 92, 119, 133, 92, 118, 132, 88, 114, 128, 86, 112, 125, 83, 109, 121, 85, 111, 123, 89, 114, 126, 93, 116, 131, 93, 116, 131, 94, 118, 130, 93, 117, 129, 92, 117, 127, 90, 115, 125, 92, 115, 123, 91, 115, 121, 85, 108, 115, 86, 110, 116, + 89, 113, 119, 94, 118, 124, 114, 134, 140, 120, 140, 146, 100, 121, 127, 94, 116, 121, 93, 119, 122, 118, 139, 143, 106, 130, 134, 96, 120, 125, 97, 121, 127, 100, 123, 131, 99, 122, 130, 97, 120, 128, 98, 122, 129, 97, 121, 127, 96, 119, 125, 93, 117, 121, 92, 115, 119, 94, 115, 121, 93, 116, 121, + 94, 117, 122, 95, 118, 123, 92, 115, 120, 89, 114, 118, 90, 114, 118, 85, 110, 114, 85, 110, 114, 86, 109, 114, 86, 108, 113, 85, 107, 112, 84, 106, 112, 82, 105, 111, 80, 102, 108, 76, 100, 107, 79, 101, 107, 79, 100, 106, 78, 99, 104, 75, 97, 103, 76, 98, 103, 76, 98, 103, 76, 97, 102, + 76, 96, 101, 68, 90, 96, 69, 89, 96, 69, 88, 96, 59, 80, 88, 52, 73, 81, 50, 71, 79, 47, 69, 77, 48, 69, 77, 42, 65, 71, 47, 69, 75, 52, 73, 79, 57, 76, 83, 59, 78, 85, 63, 82, 89, 63, 82, 89, 61, 79, 86, 56, 74, 80, 51, 68, 77, 46, 64, 73, 47, 64, 73, + 49, 66, 74, 49, 67, 74, 45, 63, 70, 43, 61, 68, 40, 58, 65, 36, 54, 61, 34, 52, 59, 29, 47, 54, 34, 50, 57, 34, 50, 57, 33, 49, 56, 35, 51, 57, 36, 50, 56, 36, 49, 55, 29, 42, 48, 94, 106, 112, 31, 45, 53, 30, 47, 54, 33, 49, 56, 32, 49, 56, 34, 49, 56, + 33, 51, 58, 34, 52, 60, 37, 56, 61, 47, 65, 71, 53, 69, 75, 53, 69, 75, 55, 72, 78, 56, 71, 77, 58, 72, 78, 61, 74, 80, 35, 46, 53, 118, 131, 138, 63, 76, 84, 64, 78, 84, 61, 74, 80, 43, 54, 62, 134, 144, 152, 69, 79, 88, 70, 79, 89, 131, 143, 148, 60, 72, 76, + 75, 86, 90, 78, 93, 96, 78, 93, 96, 77, 92, 94, 75, 91, 91, 75, 91, 90, 76, 92, 90, 76, 91, 91, 76, 91, 93, 75, 90, 92, 77, 92, 94, 76, 91, 93, 78, 93, 95, 79, 94, 96, 79, 94, 96, 84, 98, 100, 89, 105, 104, 89, 105, 105, 88, 103, 102, 85, 99, 98, 83, 97, 98, + 78, 91, 93, 77, 87, 90, 170, 175, 179, 85, 94, 99, 86, 100, 103, 89, 103, 105, 87, 102, 104, 83, 98, 101, 106, 122, 121, 95, 111, 111, 94, 111, 111, 90, 108, 109, 95, 111, 112, 96, 113, 114, 96, 114, 115, 97, 115, 116, 97, 115, 116, 100, 118, 119, 103, 121, 122, 105, 122, 123, 108, 123, 125, + 105, 123, 124, 111, 129, 130, 116, 134, 136, 118, 136, 137, 118, 136, 134, 119, 137, 136, 120, 136, 137, 119, 135, 137, 124, 139, 141, 125, 140, 142, 127, 140, 143, 121, 136, 136, 178, 188, 189, 156, 166, 168, 169, 180, 178, 141, 152, 150, 142, 156, 153, 151, 165, 161, 158, 172, 168, 163, 174, 172, 161, 174, 172, + 162, 176, 172, 168, 180, 177, 175, 186, 183, 173, 184, 181, 175, 186, 180, 180, 190, 185, 184, 193, 188, 180, 190, 184, 177, 188, 185, 174, 187, 183, 172, 186, 182, 173, 187, 183, 175, 189, 185, 175, 189, 185, 176, 190, 186, 176, 191, 186, 183, 195, 192, 188, 199, 196, 191, 202, 199, 187, 198, 195, 192, 204, 201, + 197, 206, 203, 202, 211, 208, 207, 215, 212, 214, 221, 218, 216, 223, 220, 219, 224, 222, 220, 224, 223, 220, 226, 223, 221, 227, 224, 223, 229, 226, 225, 230, 228, 225, 230, 228, 227, 232, 230, 228, 233, 230, 229, 234, 232, 229, 234, 232, 228, 233, 231, 226, 231, 229, 224, 228, 226, 221, 228, 225, 220, 227, 224, + 183, 200, 207, 185, 201, 208, 183, 200, 207, 181, 199, 206, 175, 194, 201, 170, 192, 198, 168, 190, 197, 164, 187, 195, 161, 184, 192, 163, 186, 192, 164, 187, 193, 169, 190, 197, 174, 193, 198, 178, 196, 202, 181, 197, 203, 181, 197, 203, 182, 200, 206, 184, 200, 206, 184, 201, 207, 184, 200, 206, 183, 199, 205, + 180, 196, 203, 172, 192, 197, 165, 185, 192, 159, 181, 187, 155, 178, 184, 153, 176, 182, 153, 176, 184, 156, 178, 186, 160, 181, 189, 160, 182, 189, 164, 184, 190, 162, 183, 190, 161, 182, 190, 156, 178, 188, 152, 177, 187, 150, 174, 186, 147, 171, 183, 143, 168, 181, 141, 167, 180, 140, 166, 179, 141, 167, 181, + 142, 168, 181, 141, 166, 178, 139, 164, 178, 139, 164, 178, 135, 160, 174, 126, 152, 167, 113, 142, 157, 107, 137, 152, 101, 132, 148, 103, 131, 148, 106, 133, 150, 106, 132, 149, 100, 127, 144, 95, 123, 138, 98, 125, 140, 95, 121, 135, 89, 116, 130, 97, 123, 138, 106, 130, 145, 102, 127, 143, 92, 118, 134, + 92, 118, 134, 92, 118, 134, 92, 118, 133, 91, 117, 132, 93, 119, 133, 92, 118, 132, 88, 114, 126, 86, 112, 124, 85, 111, 123, 84, 110, 122, 91, 115, 127, 92, 117, 129, 92, 117, 129, 94, 118, 130, 93, 118, 130, 92, 117, 127, 91, 116, 123, 93, 116, 124, 90, 113, 121, 82, 106, 112, 86, 110, 116, + 89, 113, 119, 99, 122, 128, 119, 138, 145, 114, 133, 140, 97, 119, 124, 92, 117, 121, 89, 114, 118, 122, 143, 145, 105, 129, 133, 97, 122, 127, 98, 122, 128, 100, 123, 130, 100, 123, 130, 100, 124, 130, 98, 122, 128, 96, 120, 126, 94, 119, 124, 93, 118, 122, 93, 115, 120, 94, 116, 121, 94, 116, 121, + 95, 117, 122, 94, 116, 121, 94, 116, 121, 91, 113, 119, 90, 112, 117, 87, 112, 116, 84, 109, 113, 86, 109, 114, 86, 108, 113, 85, 107, 112, 82, 104, 109, 83, 105, 110, 81, 104, 110, 79, 102, 108, 81, 103, 109, 78, 100, 106, 77, 99, 105, 77, 99, 104, 76, 99, 104, 76, 98, 103, 75, 95, 100, + 73, 93, 98, 73, 92, 99, 70, 90, 96, 66, 86, 93, 57, 77, 85, 52, 73, 81, 50, 71, 79, 49, 70, 78, 48, 69, 77, 49, 71, 78, 51, 72, 79, 53, 73, 80, 56, 75, 82, 58, 77, 84, 62, 81, 88, 62, 81, 89, 59, 77, 84, 55, 74, 81, 51, 69, 77, 48, 66, 75, 48, 66, 74, + 50, 67, 75, 50, 67, 74, 47, 65, 72, 45, 63, 70, 40, 58, 65, 36, 54, 61, 34, 52, 59, 34, 51, 58, 34, 50, 57, 34, 50, 57, 36, 52, 59, 34, 50, 56, 34, 50, 56, 33, 47, 53, 81, 93, 97, 37, 50, 57, 30, 44, 52, 29, 45, 52, 28, 45, 52, 30, 47, 55, 31, 49, 55, + 34, 51, 58, 37, 54, 60, 38, 57, 62, 43, 61, 66, 48, 67, 72, 51, 66, 73, 53, 69, 75, 53, 69, 75, 57, 71, 77, 58, 71, 79, 37, 50, 59, 121, 132, 139, 63, 75, 83, 61, 73, 80, 56, 70, 76, 57, 70, 78, 124, 133, 140, 61, 70, 80, 65, 75, 84, 118, 127, 136, 75, 86, 92, + 69, 82, 86, 73, 88, 90, 74, 89, 92, 72, 87, 89, 70, 85, 86, 72, 87, 88, 72, 88, 91, 71, 89, 90, 71, 88, 89, 75, 90, 92, 72, 87, 89, 73, 88, 90, 76, 91, 94, 76, 91, 94, 77, 92, 93, 78, 93, 95, 86, 101, 102, 87, 102, 102, 84, 99, 99, 84, 98, 99, 80, 94, 96, + 78, 92, 94, 77, 90, 93, 111, 119, 122, 134, 144, 144, 85, 98, 101, 88, 102, 103, 85, 101, 101, 80, 96, 95, 109, 124, 125, 93, 110, 111, 94, 111, 112, 89, 107, 107, 93, 109, 110, 92, 110, 110, 95, 112, 112, 94, 113, 113, 99, 115, 115, 101, 117, 118, 105, 120, 119, 109, 125, 123, 109, 125, 127, + 108, 123, 125, 105, 123, 124, 112, 130, 131, 117, 134, 135, 119, 136, 135, 120, 137, 137, 118, 136, 137, 117, 136, 137, 121, 138, 138, 125, 140, 140, 125, 141, 141, 124, 139, 139, 153, 165, 164, 147, 154, 156, 189, 200, 196, 141, 153, 152, 143, 156, 154, 147, 161, 158, 154, 168, 164, 160, 172, 170, 159, 172, 170, + 158, 171, 167, 161, 175, 172, 171, 182, 179, 173, 184, 181, 174, 185, 179, 177, 187, 181, 181, 191, 186, 178, 188, 185, 176, 187, 184, 176, 187, 184, 174, 187, 183, 173, 187, 183, 175, 189, 185, 176, 190, 186, 176, 190, 186, 174, 188, 184, 176, 190, 186, 183, 194, 191, 189, 200, 197, 187, 198, 195, 189, 201, 197, + 195, 205, 201, 198, 207, 205, 202, 212, 209, 211, 218, 215, 214, 221, 217, 217, 222, 220, 218, 223, 220, 219, 224, 222, 220, 225, 223, 221, 226, 224, 223, 228, 225, 223, 228, 226, 225, 231, 226, 225, 231, 227, 227, 232, 229, 226, 231, 229, 226, 231, 229, 225, 230, 228, 222, 227, 226, 220, 227, 223, 218, 225, 222, + 184, 202, 207, 182, 200, 207, 182, 199, 206, 178, 196, 203, 172, 192, 199, 169, 191, 197, 168, 191, 197, 165, 187, 193, 165, 187, 194, 167, 188, 195, 168, 189, 195, 174, 194, 199, 176, 195, 200, 179, 198, 203, 182, 198, 204, 182, 198, 204, 182, 201, 205, 185, 201, 207, 186, 201, 207, 184, 200, 206, 182, 198, 204, + 177, 195, 200, 169, 189, 195, 162, 184, 190, 159, 181, 187, 157, 179, 185, 156, 178, 184, 158, 180, 187, 160, 181, 188, 162, 183, 190, 161, 183, 190, 161, 182, 189, 162, 183, 190, 158, 180, 188, 156, 179, 187, 153, 177, 187, 149, 173, 185, 147, 171, 183, 146, 170, 182, 143, 169, 181, 140, 166, 178, 141, 167, 179, + 140, 165, 179, 139, 164, 177, 141, 165, 177, 138, 161, 176, 131, 156, 171, 121, 148, 163, 110, 139, 154, 101, 132, 147, 103, 132, 148, 105, 132, 150, 107, 133, 150, 103, 130, 146, 96, 125, 141, 94, 123, 137, 98, 125, 139, 93, 119, 133, 89, 115, 130, 100, 126, 141, 104, 129, 144, 95, 121, 136, 92, 117, 133, + 91, 117, 133, 92, 117, 133, 92, 118, 133, 91, 117, 132, 92, 118, 132, 90, 116, 130, 86, 112, 125, 85, 111, 123, 86, 112, 124, 86, 112, 124, 91, 115, 127, 91, 116, 128, 92, 118, 130, 96, 120, 131, 94, 119, 130, 91, 116, 126, 91, 115, 123, 93, 116, 124, 89, 112, 120, 86, 110, 116, 89, 112, 119, + 92, 115, 124, 108, 129, 137, 120, 139, 147, 107, 129, 135, 93, 116, 122, 90, 116, 119, 92, 117, 121, 129, 148, 151, 104, 127, 132, 102, 124, 129, 98, 122, 128, 98, 122, 128, 102, 125, 131, 97, 122, 127, 99, 123, 129, 96, 121, 126, 93, 118, 123, 92, 117, 121, 93, 115, 120, 95, 117, 122, 96, 118, 123, + 96, 118, 123, 93, 117, 121, 90, 114, 118, 90, 112, 117, 88, 110, 115, 89, 111, 116, 86, 110, 114, 88, 110, 115, 84, 106, 111, 85, 107, 112, 85, 107, 112, 82, 104, 109, 79, 103, 109, 79, 102, 108, 79, 101, 106, 78, 100, 105, 77, 99, 104, 77, 99, 104, 77, 100, 105, 76, 98, 103, 73, 95, 100, + 70, 91, 96, 70, 89, 96, 68, 87, 94, 62, 83, 90, 54, 76, 83, 53, 74, 81, 50, 72, 79, 53, 73, 81, 50, 71, 79, 51, 72, 80, 54, 73, 80, 56, 75, 82, 58, 77, 84, 59, 78, 85, 63, 83, 88, 63, 83, 88, 60, 78, 85, 52, 71, 78, 51, 70, 78, 48, 67, 75, 47, 66, 74, + 52, 68, 77, 51, 69, 76, 50, 68, 75, 46, 64, 71, 44, 62, 69, 39, 57, 64, 38, 54, 61, 36, 52, 59, 33, 50, 57, 36, 52, 58, 35, 51, 57, 32, 48, 54, 32, 48, 54, 29, 45, 50, 86, 97, 102, 27, 41, 48, 31, 45, 53, 30, 46, 53, 30, 48, 55, 30, 48, 55, 33, 50, 57, + 37, 53, 60, 39, 55, 61, 40, 56, 62, 45, 61, 68, 47, 63, 69, 47, 66, 71, 50, 66, 72, 51, 68, 74, 55, 71, 78, 58, 72, 81, 45, 58, 68, 110, 120, 126, 62, 74, 80, 58, 72, 79, 56, 70, 77, 59, 73, 80, 117, 127, 134, 53, 64, 74, 59, 69, 79, 70, 80, 90, 115, 126, 131, + 66, 79, 85, 63, 78, 83, 68, 83, 87, 68, 83, 86, 66, 81, 83, 67, 82, 84, 66, 83, 86, 65, 82, 85, 66, 83, 85, 68, 83, 85, 66, 84, 86, 70, 84, 87, 69, 84, 87, 71, 86, 89, 71, 87, 89, 74, 89, 91, 81, 96, 98, 86, 101, 101, 81, 97, 97, 79, 94, 96, 79, 94, 96, + 77, 92, 94, 75, 88, 91, 68, 77, 81, 177, 187, 186, 79, 92, 95, 88, 102, 103, 85, 100, 100, 102, 118, 118, 86, 102, 103, 91, 108, 109, 93, 109, 110, 90, 108, 109, 91, 108, 107, 91, 109, 108, 89, 108, 107, 94, 111, 110, 96, 113, 112, 103, 119, 118, 104, 120, 119, 107, 123, 122, 110, 125, 124, + 109, 124, 125, 106, 124, 125, 111, 129, 130, 116, 131, 132, 120, 136, 135, 121, 136, 137, 117, 135, 136, 118, 136, 137, 121, 139, 138, 124, 140, 139, 124, 140, 139, 124, 140, 138, 120, 136, 135, 182, 191, 191, 148, 156, 153, 172, 185, 182, 138, 151, 149, 145, 158, 156, 152, 165, 163, 154, 167, 165, 157, 170, 168, + 155, 169, 165, 156, 170, 166, 164, 176, 173, 171, 182, 179, 172, 184, 178, 175, 186, 180, 175, 186, 181, 175, 186, 183, 174, 185, 182, 172, 185, 182, 173, 185, 182, 174, 185, 182, 175, 187, 184, 176, 189, 186, 179, 189, 186, 175, 189, 185, 175, 188, 184, 177, 191, 187, 182, 194, 191, 187, 198, 195, 187, 198, 194, + 192, 201, 199, 196, 205, 202, 199, 208, 205, 206, 213, 209, 212, 219, 216, 215, 220, 218, 217, 221, 220, 218, 223, 221, 219, 223, 222, 219, 224, 221, 220, 225, 222, 220, 227, 224, 223, 229, 223, 224, 228, 226, 225, 230, 228, 224, 229, 227, 224, 228, 227, 224, 229, 227, 221, 226, 224, 219, 227, 224, 218, 225, 222, + 182, 202, 207, 181, 200, 206, 180, 198, 205, 175, 194, 201, 172, 192, 199, 171, 191, 198, 171, 191, 198, 170, 191, 197, 169, 190, 196, 172, 192, 197, 172, 193, 197, 175, 194, 199, 178, 197, 202, 180, 198, 203, 184, 199, 206, 183, 200, 204, 185, 202, 205, 187, 204, 206, 186, 202, 208, 185, 201, 207, 182, 198, 204, + 175, 194, 199, 171, 190, 196, 162, 184, 190, 160, 181, 187, 161, 180, 187, 163, 182, 189, 164, 183, 190, 161, 183, 189, 163, 184, 190, 162, 184, 189, 163, 184, 190, 161, 182, 189, 159, 181, 189, 156, 178, 189, 152, 177, 187, 149, 174, 185, 148, 172, 184, 147, 171, 183, 144, 168, 180, 141, 165, 179, 138, 164, 178, + 138, 164, 178, 137, 163, 177, 137, 160, 175, 137, 160, 175, 128, 152, 167, 116, 144, 158, 107, 137, 151, 98, 129, 144, 103, 133, 148, 105, 133, 149, 106, 133, 150, 99, 127, 144, 95, 123, 139, 93, 122, 136, 96, 123, 137, 91, 118, 132, 94, 120, 135, 105, 130, 145, 104, 129, 146, 94, 119, 135, 92, 118, 133, + 93, 119, 134, 91, 118, 132, 91, 118, 132, 91, 117, 131, 90, 116, 130, 88, 114, 128, 85, 111, 125, 83, 110, 122, 89, 114, 126, 92, 116, 128, 92, 116, 128, 92, 116, 128, 94, 118, 130, 94, 120, 129, 94, 119, 129, 94, 119, 129, 89, 114, 123, 94, 117, 125, 91, 114, 122, 90, 113, 121, 91, 114, 122, + 95, 117, 125, 113, 133, 141, 114, 135, 143, 103, 124, 131, 92, 116, 122, 92, 116, 121, 93, 118, 122, 135, 153, 157, 104, 128, 132, 97, 122, 127, 101, 125, 131, 102, 124, 130, 101, 123, 128, 101, 123, 128, 96, 121, 126, 94, 119, 124, 92, 117, 121, 90, 115, 119, 93, 117, 121, 96, 118, 123, 96, 118, 123, + 94, 118, 123, 93, 116, 121, 89, 112, 117, 91, 113, 118, 89, 111, 116, 88, 110, 115, 87, 109, 114, 86, 108, 113, 88, 110, 115, 86, 108, 113, 83, 105, 110, 82, 104, 109, 82, 104, 109, 80, 102, 107, 78, 100, 105, 77, 100, 104, 81, 102, 107, 78, 100, 105, 77, 99, 104, 76, 98, 103, 75, 97, 103, + 72, 93, 99, 70, 89, 96, 69, 88, 95, 61, 82, 88, 56, 78, 84, 53, 75, 80, 52, 72, 80, 55, 74, 82, 56, 75, 83, 54, 73, 80, 53, 72, 79, 54, 73, 80, 57, 76, 82, 61, 80, 87, 63, 83, 88, 63, 82, 88, 61, 79, 86, 53, 72, 79, 52, 71, 79, 48, 67, 75, 52, 70, 78, + 56, 73, 80, 53, 71, 78, 51, 69, 76, 51, 67, 74, 45, 62, 69, 40, 57, 65, 42, 57, 64, 35, 52, 59, 34, 51, 58, 34, 52, 58, 33, 49, 55, 35, 50, 56, 30, 45, 51, 20, 35, 42, 96, 107, 112, 30, 43, 51, 29, 43, 50, 30, 46, 53, 32, 49, 56, 33, 51, 58, 33, 50, 57, + 37, 53, 60, 39, 54, 60, 39, 55, 61, 44, 60, 67, 46, 62, 69, 44, 62, 69, 44, 63, 69, 49, 67, 73, 56, 72, 79, 57, 72, 81, 48, 61, 71, 122, 134, 138, 57, 70, 76, 57, 71, 77, 58, 72, 78, 55, 71, 78, 78, 84, 93, 97, 106, 114, 58, 68, 78, 44, 55, 64, 136, 147, 154, + 60, 74, 80, 64, 78, 84, 65, 80, 83, 65, 80, 83, 62, 77, 80, 63, 78, 81, 63, 79, 82, 62, 79, 82, 61, 78, 81, 63, 79, 82, 63, 79, 82, 61, 78, 81, 66, 81, 84, 66, 82, 85, 64, 81, 85, 68, 83, 86, 76, 91, 93, 81, 96, 98, 76, 91, 93, 77, 92, 94, 77, 92, 94, + 75, 89, 91, 74, 86, 88, 71, 81, 85, 167, 179, 177, 74, 83, 86, 86, 100, 101, 84, 98, 99, 102, 117, 117, 88, 104, 104, 90, 105, 107, 92, 107, 109, 90, 104, 107, 90, 107, 106, 89, 106, 105, 91, 109, 108, 92, 108, 108, 98, 114, 113, 101, 116, 116, 105, 120, 119, 108, 123, 122, 110, 125, 125, + 108, 125, 124, 105, 124, 123, 107, 125, 124, 117, 133, 132, 121, 136, 135, 121, 137, 136, 118, 136, 136, 117, 135, 134, 118, 136, 135, 123, 139, 138, 125, 141, 140, 128, 142, 141, 125, 140, 139, 126, 139, 138, 172, 181, 180, 186, 196, 191, 140, 153, 151, 143, 156, 154, 149, 162, 160, 154, 167, 165, 155, 169, 164, + 153, 167, 164, 152, 166, 162, 157, 172, 167, 167, 178, 175, 170, 182, 178, 171, 182, 178, 172, 182, 180, 172, 183, 180, 173, 184, 181, 173, 184, 181, 169, 183, 179, 170, 184, 180, 174, 187, 183, 176, 187, 184, 179, 190, 187, 176, 188, 184, 172, 186, 182, 173, 186, 182, 177, 190, 186, 183, 195, 190, 187, 198, 195, + 188, 198, 195, 193, 202, 199, 195, 204, 201, 199, 208, 205, 205, 213, 210, 210, 217, 214, 214, 221, 218, 215, 222, 219, 216, 222, 219, 217, 222, 220, 217, 224, 221, 218, 224, 221, 220, 226, 223, 221, 226, 224, 222, 227, 225, 222, 227, 224, 221, 226, 223, 220, 225, 222, 220, 226, 224, 218, 225, 222, 216, 223, 220, + 183, 202, 207, 182, 201, 206, 179, 198, 203, 176, 196, 200, 173, 192, 198, 175, 194, 200, 174, 193, 200, 174, 193, 200, 173, 192, 199, 174, 194, 199, 176, 195, 200, 177, 196, 201, 180, 197, 202, 182, 198, 204, 183, 200, 205, 188, 204, 207, 188, 203, 206, 189, 204, 207, 187, 203, 207, 184, 200, 205, 181, 197, 203, + 176, 194, 200, 169, 188, 195, 167, 186, 192, 165, 185, 191, 165, 184, 190, 166, 185, 191, 164, 183, 190, 163, 183, 190, 162, 183, 189, 161, 183, 189, 160, 182, 189, 161, 182, 189, 160, 181, 189, 157, 179, 190, 152, 176, 186, 150, 175, 185, 150, 174, 185, 148, 171, 183, 144, 168, 180, 140, 164, 178, 136, 162, 176, + 135, 162, 176, 135, 161, 175, 136, 159, 174, 132, 156, 171, 125, 151, 165, 112, 140, 155, 102, 133, 147, 100, 131, 146, 102, 131, 146, 107, 134, 150, 104, 131, 148, 97, 125, 143, 95, 123, 138, 99, 125, 141, 95, 122, 137, 89, 115, 130, 99, 126, 140, 108, 133, 147, 100, 125, 141, 94, 119, 135, 96, 122, 136, + 92, 119, 133, 91, 118, 132, 90, 117, 131, 91, 117, 131, 88, 114, 128, 86, 112, 127, 86, 112, 124, 85, 111, 123, 88, 114, 126, 91, 115, 127, 92, 115, 127, 89, 114, 126, 94, 118, 130, 94, 119, 128, 95, 119, 130, 93, 118, 128, 92, 117, 126, 93, 115, 124, 93, 116, 124, 92, 115, 123, 93, 116, 124, + 97, 120, 128, 110, 131, 140, 114, 136, 143, 99, 122, 128, 91, 115, 121, 91, 116, 122, 100, 124, 129, 135, 154, 160, 105, 129, 134, 101, 126, 130, 102, 127, 131, 101, 124, 129, 102, 124, 129, 100, 121, 126, 96, 122, 126, 94, 119, 123, 91, 116, 120, 92, 116, 120, 96, 117, 122, 96, 118, 123, 96, 118, 123, + 93, 117, 121, 92, 117, 121, 89, 113, 117, 90, 112, 117, 88, 110, 115, 87, 109, 114, 87, 109, 114, 89, 111, 116, 87, 109, 114, 85, 107, 112, 84, 106, 111, 82, 104, 109, 83, 105, 110, 81, 103, 108, 80, 103, 105, 79, 101, 103, 78, 100, 104, 79, 101, 106, 78, 100, 106, 73, 96, 102, 71, 94, 100, + 69, 92, 98, 70, 89, 96, 66, 85, 92, 61, 81, 88, 54, 76, 82, 53, 75, 81, 55, 75, 81, 55, 74, 81, 54, 73, 80, 54, 73, 80, 54, 73, 80, 53, 72, 79, 55, 75, 81, 61, 81, 87, 64, 84, 89, 64, 83, 89, 60, 79, 85, 54, 73, 80, 51, 70, 77, 49, 68, 75, 54, 72, 79, + 57, 74, 81, 55, 73, 80, 51, 70, 77, 52, 69, 75, 44, 61, 68, 42, 58, 66, 39, 57, 65, 37, 54, 61, 35, 52, 59, 33, 51, 57, 31, 47, 53, 31, 47, 53, 35, 48, 54, 58, 70, 77, 53, 66, 72, 32, 46, 53, 33, 48, 55, 33, 49, 56, 31, 48, 55, 30, 47, 54, 32, 48, 55, + 34, 50, 57, 36, 52, 58, 39, 55, 62, 44, 60, 67, 46, 62, 69, 46, 62, 69, 44, 62, 69, 49, 66, 73, 54, 71, 78, 59, 75, 83, 59, 71, 81, 107, 119, 123, 57, 71, 77, 56, 71, 77, 54, 70, 77, 56, 73, 80, 43, 53, 63, 120, 132, 138, 57, 67, 77, 49, 59, 68, 130, 142, 148, + 60, 72, 79, 60, 73, 80, 59, 73, 77, 57, 72, 75, 60, 75, 77, 59, 74, 76, 60, 75, 78, 60, 76, 79, 59, 76, 79, 59, 75, 78, 62, 77, 80, 58, 75, 78, 60, 77, 80, 60, 76, 82, 59, 75, 80, 61, 78, 80, 66, 81, 84, 73, 88, 90, 72, 87, 89, 73, 88, 90, 74, 87, 89, + 73, 85, 88, 70, 83, 85, 72, 84, 85, 129, 137, 143, 103, 115, 118, 83, 97, 98, 99, 112, 114, 84, 99, 101, 85, 100, 102, 89, 104, 106, 90, 105, 107, 90, 105, 107, 88, 103, 105, 90, 105, 107, 90, 105, 107, 92, 107, 109, 97, 111, 112, 100, 114, 114, 105, 120, 120, 109, 124, 123, 107, 123, 123, + 106, 123, 123, 105, 123, 121, 104, 122, 121, 115, 130, 129, 120, 134, 133, 120, 134, 132, 119, 135, 132, 117, 134, 131, 114, 131, 128, 118, 135, 133, 125, 139, 138, 126, 141, 140, 124, 139, 138, 126, 140, 139, 166, 176, 174, 156, 165, 170, 172, 185, 183, 140, 154, 150, 144, 157, 155, 149, 162, 160, 149, 164, 159, + 151, 165, 161, 151, 165, 161, 155, 169, 165, 160, 174, 170, 168, 179, 176, 169, 180, 177, 168, 179, 176, 168, 179, 176, 170, 181, 179, 170, 181, 178, 168, 179, 176, 167, 182, 178, 170, 184, 180, 175, 185, 183, 177, 188, 185, 175, 188, 184, 173, 186, 182, 173, 187, 183, 172, 186, 182, 177, 190, 185, 185, 196, 192, + 185, 196, 193, 187, 198, 195, 190, 200, 197, 194, 204, 201, 198, 207, 204, 202, 211, 208, 208, 216, 213, 213, 220, 217, 213, 220, 217, 213, 221, 217, 214, 221, 218, 215, 222, 219, 216, 223, 220, 218, 224, 221, 219, 224, 222, 219, 224, 222, 219, 224, 222, 218, 223, 221, 216, 224, 220, 215, 222, 219, 215, 222, 219, + 182, 201, 206, 181, 200, 205, 178, 198, 203, 176, 195, 201, 175, 196, 201, 175, 195, 200, 177, 196, 201, 176, 195, 200, 176, 195, 200, 176, 196, 201, 177, 195, 201, 177, 196, 200, 180, 196, 203, 183, 199, 204, 185, 201, 204, 189, 204, 207, 190, 205, 208, 190, 205, 208, 187, 203, 206, 183, 200, 203, 181, 197, 203, + 177, 195, 200, 171, 191, 196, 168, 187, 194, 169, 187, 194, 168, 186, 193, 168, 186, 193, 165, 184, 191, 164, 183, 190, 161, 183, 189, 160, 181, 188, 161, 183, 189, 160, 181, 189, 159, 181, 189, 155, 178, 188, 153, 177, 187, 148, 174, 184, 149, 173, 184, 147, 172, 183, 143, 168, 180, 138, 164, 178, 133, 159, 173, + 132, 159, 173, 134, 160, 173, 136, 160, 175, 128, 154, 168, 120, 147, 161, 111, 139, 154, 102, 132, 147, 99, 130, 145, 103, 132, 147, 105, 134, 149, 103, 131, 146, 97, 125, 140, 93, 122, 137, 99, 126, 141, 99, 125, 141, 96, 122, 138, 107, 133, 147, 106, 131, 147, 98, 124, 138, 95, 122, 136, 91, 118, 132, + 91, 118, 132, 92, 118, 132, 91, 117, 131, 89, 115, 129, 86, 112, 125, 86, 112, 124, 84, 110, 122, 88, 113, 125, 90, 114, 126, 90, 114, 127, 90, 116, 128, 90, 115, 127, 93, 117, 129, 96, 120, 131, 93, 117, 128, 91, 115, 126, 93, 118, 127, 96, 120, 127, 92, 116, 124, 94, 118, 125, 93, 117, 124, + 98, 121, 128, 110, 133, 139, 113, 135, 140, 98, 123, 128, 92, 117, 121, 94, 119, 125, 104, 129, 134, 135, 156, 161, 101, 125, 131, 100, 125, 129, 101, 125, 129, 102, 125, 130, 99, 124, 128, 95, 120, 124, 95, 119, 124, 93, 118, 122, 92, 117, 121, 93, 116, 121, 95, 117, 122, 96, 118, 123, 95, 117, 121, + 92, 116, 120, 91, 116, 119, 87, 112, 116, 87, 112, 116, 88, 111, 116, 88, 110, 115, 88, 110, 115, 90, 112, 117, 89, 111, 116, 85, 107, 112, 85, 106, 111, 82, 103, 108, 82, 104, 109, 81, 104, 107, 78, 101, 103, 79, 100, 102, 81, 101, 106, 79, 101, 106, 78, 100, 104, 74, 96, 102, 69, 92, 98, + 68, 91, 97, 70, 89, 96, 66, 86, 92, 64, 82, 89, 57, 79, 85, 52, 74, 80, 54, 75, 81, 58, 77, 84, 57, 76, 83, 54, 73, 80, 49, 69, 76, 52, 72, 78, 57, 76, 82, 63, 83, 88, 64, 84, 89, 65, 84, 89, 61, 80, 85, 54, 73, 81, 52, 71, 78, 52, 71, 78, 56, 74, 81, + 60, 78, 84, 56, 74, 82, 54, 72, 79, 49, 68, 74, 44, 62, 69, 42, 60, 67, 40, 58, 65, 38, 56, 63, 37, 55, 62, 31, 49, 55, 31, 48, 54, 33, 48, 54, 35, 49, 55, 87, 98, 104, 21, 35, 42, 30, 45, 51, 29, 44, 50, 29, 45, 51, 30, 46, 52, 28, 44, 50, 31, 47, 54, + 32, 48, 54, 35, 51, 57, 39, 55, 62, 42, 58, 65, 43, 59, 66, 43, 60, 67, 44, 62, 69, 49, 67, 74, 56, 72, 79, 59, 75, 82, 65, 78, 86, 104, 112, 118, 54, 68, 74, 55, 71, 78, 55, 71, 78, 58, 74, 81, 55, 68, 78, 121, 132, 138, 53, 64, 73, 56, 66, 75, 124, 135, 142, + 52, 63, 70, 59, 70, 76, 59, 71, 77, 55, 70, 74, 55, 70, 72, 57, 72, 75, 57, 72, 75, 58, 73, 76, 58, 72, 76, 58, 72, 77, 56, 72, 78, 55, 72, 77, 56, 72, 79, 56, 72, 78, 56, 72, 78, 55, 73, 75, 61, 76, 79, 65, 80, 83, 66, 81, 83, 67, 81, 83, 67, 80, 82, + 68, 82, 81, 67, 81, 80, 67, 80, 81, 77, 84, 89, 155, 167, 171, 78, 91, 93, 93, 107, 109, 80, 95, 97, 84, 99, 101, 86, 100, 102, 87, 102, 104, 91, 105, 107, 89, 103, 105, 88, 103, 105, 89, 104, 106, 91, 106, 108, 93, 107, 109, 99, 112, 114, 103, 117, 117, 105, 120, 119, 107, 122, 123, + 105, 123, 122, 102, 120, 119, 104, 122, 121, 112, 128, 127, 112, 129, 127, 114, 131, 130, 115, 132, 129, 116, 133, 130, 113, 130, 127, 115, 130, 129, 123, 137, 135, 126, 140, 139, 123, 137, 136, 125, 139, 138, 118, 131, 130, 179, 186, 187, 174, 187, 186, 141, 152, 149, 142, 154, 151, 145, 158, 155, 147, 161, 157, + 147, 161, 157, 149, 163, 159, 151, 166, 162, 156, 170, 166, 163, 176, 172, 166, 177, 174, 166, 177, 174, 166, 177, 173, 166, 178, 172, 169, 181, 175, 167, 178, 175, 165, 176, 173, 166, 180, 176, 171, 183, 179, 174, 185, 182, 174, 185, 182, 172, 185, 182, 171, 185, 181, 171, 185, 181, 171, 185, 181, 179, 189, 186, + 184, 195, 191, 183, 194, 191, 185, 197, 193, 188, 199, 196, 192, 202, 199, 194, 204, 201, 200, 209, 206, 206, 213, 210, 208, 215, 211, 210, 217, 214, 211, 218, 215, 212, 219, 216, 213, 220, 217, 214, 221, 218, 214, 221, 218, 214, 221, 218, 214, 222, 218, 213, 220, 217, 213, 220, 217, 212, 219, 216, 211, 218, 215, + 184, 201, 207, 180, 200, 205, 179, 198, 203, 176, 196, 201, 178, 197, 202, 179, 198, 203, 179, 198, 203, 177, 196, 201, 178, 197, 202, 179, 196, 202, 181, 197, 203, 181, 198, 202, 182, 199, 203, 186, 201, 204, 188, 203, 206, 190, 205, 208, 191, 206, 209, 190, 205, 208, 189, 204, 207, 184, 201, 204, 182, 198, 203, + 177, 195, 200, 171, 191, 196, 170, 189, 194, 169, 188, 194, 170, 188, 195, 169, 187, 194, 165, 184, 191, 163, 182, 189, 160, 182, 188, 161, 182, 188, 163, 182, 189, 160, 181, 189, 157, 180, 187, 155, 177, 188, 152, 176, 187, 150, 175, 184, 151, 173, 184, 147, 170, 182, 142, 166, 180, 136, 163, 177, 131, 158, 172, + 131, 158, 172, 132, 159, 172, 130, 157, 171, 125, 152, 166, 116, 145, 159, 106, 136, 150, 101, 132, 147, 102, 132, 147, 106, 135, 150, 104, 133, 148, 100, 129, 143, 95, 124, 138, 96, 125, 140, 104, 130, 147, 100, 126, 142, 99, 124, 141, 108, 133, 149, 103, 129, 145, 95, 121, 137, 95, 122, 136, 92, 119, 133, + 93, 120, 134, 91, 117, 131, 90, 117, 130, 88, 114, 128, 87, 113, 126, 86, 112, 124, 86, 112, 124, 89, 114, 126, 91, 116, 126, 88, 114, 124, 89, 114, 126, 90, 115, 127, 94, 118, 130, 95, 119, 131, 93, 118, 128, 92, 117, 127, 96, 120, 129, 98, 121, 129, 95, 118, 126, 92, 117, 123, 92, 117, 123, + 98, 121, 127, 108, 130, 135, 114, 134, 139, 99, 123, 128, 93, 117, 122, 97, 121, 127, 106, 131, 136, 133, 155, 160, 103, 127, 133, 102, 125, 130, 100, 124, 129, 101, 123, 128, 97, 122, 126, 96, 121, 125, 94, 119, 123, 91, 115, 119, 93, 115, 120, 95, 117, 122, 96, 118, 123, 95, 117, 122, 94, 116, 121, + 93, 115, 120, 88, 113, 117, 90, 114, 119, 88, 114, 118, 86, 111, 115, 87, 109, 114, 88, 110, 115, 89, 111, 116, 86, 108, 113, 86, 108, 113, 85, 105, 110, 84, 105, 110, 82, 103, 108, 79, 101, 106, 78, 100, 103, 82, 102, 105, 82, 102, 107, 79, 101, 106, 78, 100, 105, 74, 96, 102, 72, 94, 100, + 70, 93, 99, 71, 90, 97, 64, 84, 91, 62, 84, 90, 57, 79, 85, 55, 77, 82, 55, 76, 83, 57, 76, 82, 55, 74, 81, 52, 72, 78, 50, 70, 77, 52, 73, 78, 56, 76, 81, 61, 81, 86, 66, 86, 91, 64, 84, 89, 60, 80, 85, 56, 75, 82, 54, 73, 80, 54, 73, 79, 60, 78, 83, + 61, 80, 85, 58, 76, 83, 54, 72, 79, 51, 69, 76, 47, 66, 72, 42, 60, 67, 39, 57, 64, 40, 58, 65, 35, 53, 60, 32, 50, 57, 30, 47, 54, 34, 48, 54, 24, 38, 44, 96, 107, 113, 29, 44, 50, 28, 43, 49, 27, 43, 49, 27, 43, 49, 27, 43, 49, 30, 45, 51, 30, 46, 53, + 33, 49, 55, 35, 51, 58, 39, 55, 62, 41, 57, 64, 45, 61, 68, 44, 60, 67, 46, 63, 70, 54, 70, 76, 56, 72, 79, 61, 76, 82, 63, 77, 85, 103, 111, 116, 55, 68, 76, 54, 70, 77, 58, 74, 81, 62, 76, 84, 62, 75, 85, 117, 126, 134, 41, 52, 60, 57, 68, 76, 118, 132, 137, + 52, 62, 70, 61, 71, 79, 56, 66, 74, 52, 67, 72, 51, 67, 70, 54, 70, 75, 57, 72, 75, 58, 73, 76, 57, 72, 76, 57, 71, 77, 55, 69, 75, 55, 70, 76, 56, 71, 77, 56, 71, 77, 56, 71, 77, 53, 71, 73, 58, 73, 76, 57, 72, 75, 59, 74, 77, 62, 76, 80, 62, 75, 78, + 60, 73, 74, 61, 74, 76, 62, 75, 76, 62, 73, 79, 162, 175, 173, 86, 97, 101, 73, 86, 89, 78, 92, 94, 79, 93, 95, 84, 97, 99, 85, 98, 100, 87, 100, 102, 87, 100, 102, 86, 100, 102, 85, 100, 102, 85, 100, 102, 95, 108, 110, 97, 110, 112, 101, 114, 116, 101, 115, 115, 99, 115, 116, + 99, 116, 115, 98, 116, 115, 101, 117, 116, 108, 124, 123, 112, 128, 127, 113, 129, 128, 111, 128, 126, 111, 128, 125, 109, 126, 123, 112, 128, 126, 119, 134, 133, 123, 138, 137, 122, 136, 135, 123, 137, 136, 123, 137, 136, 126, 139, 138, 178, 187, 186, 168, 180, 176, 140, 151, 149, 143, 157, 154, 143, 158, 154, + 144, 158, 154, 145, 160, 156, 150, 164, 160, 154, 168, 164, 158, 170, 167, 164, 175, 172, 165, 176, 173, 163, 174, 170, 164, 176, 170, 166, 178, 171, 165, 176, 173, 165, 177, 173, 163, 176, 173, 167, 179, 175, 168, 179, 176, 170, 181, 178, 170, 181, 179, 168, 182, 178, 169, 183, 179, 169, 183, 179, 172, 185, 181, + 181, 192, 189, 181, 192, 189, 178, 192, 188, 182, 194, 191, 185, 196, 193, 187, 198, 195, 189, 200, 197, 195, 204, 201, 201, 209, 206, 202, 210, 207, 205, 212, 209, 206, 213, 210, 208, 216, 213, 210, 217, 214, 210, 217, 214, 210, 217, 214, 209, 216, 213, 210, 216, 213, 209, 216, 213, 208, 214, 212, 207, 215, 212, + 183, 201, 206, 181, 200, 205, 180, 198, 204, 179, 198, 203, 179, 198, 203, 180, 199, 204, 179, 198, 203, 181, 198, 204, 182, 198, 204, 183, 199, 205, 186, 202, 204, 184, 201, 204, 186, 202, 207, 187, 203, 206, 189, 204, 207, 191, 206, 209, 191, 206, 209, 190, 205, 208, 189, 204, 207, 185, 201, 204, 182, 198, 203, + 176, 194, 199, 173, 191, 196, 170, 189, 195, 169, 189, 193, 170, 188, 195, 168, 186, 193, 166, 185, 192, 162, 182, 189, 158, 181, 187, 162, 181, 188, 163, 182, 189, 163, 181, 189, 161, 182, 190, 155, 178, 189, 154, 176, 187, 150, 174, 184, 148, 171, 182, 147, 170, 182, 142, 166, 178, 135, 161, 175, 129, 156, 170, + 130, 157, 171, 129, 156, 170, 129, 154, 169, 120, 150, 163, 114, 144, 157, 107, 139, 152, 103, 133, 148, 104, 134, 148, 107, 135, 150, 103, 132, 147, 99, 128, 142, 95, 124, 138, 101, 128, 144, 107, 133, 149, 103, 129, 146, 110, 136, 153, 112, 137, 153, 101, 126, 142, 98, 123, 140, 94, 121, 135, 92, 119, 133, + 92, 119, 133, 93, 119, 133, 91, 117, 131, 89, 115, 129, 85, 112, 126, 86, 113, 127, 87, 113, 125, 86, 112, 124, 86, 112, 123, 89, 114, 123, 88, 112, 124, 91, 115, 127, 94, 118, 130, 94, 118, 130, 95, 119, 130, 92, 118, 127, 98, 121, 131, 99, 122, 130, 95, 119, 126, 93, 117, 122, 93, 117, 123, + 101, 123, 129, 108, 130, 135, 113, 133, 138, 102, 124, 129, 96, 119, 124, 99, 121, 127, 116, 138, 144, 128, 149, 154, 105, 128, 134, 100, 124, 130, 100, 125, 130, 97, 122, 126, 94, 119, 123, 91, 116, 120, 91, 116, 120, 92, 116, 121, 92, 115, 120, 96, 118, 123, 95, 117, 122, 96, 118, 123, 93, 115, 120, + 93, 115, 120, 92, 114, 118, 91, 113, 118, 88, 112, 117, 88, 111, 116, 88, 110, 115, 89, 111, 116, 91, 113, 118, 88, 110, 115, 90, 110, 115, 86, 106, 111, 85, 105, 110, 80, 102, 107, 80, 102, 107, 80, 102, 107, 80, 101, 106, 82, 103, 108, 80, 102, 107, 78, 100, 107, 74, 96, 102, 72, 94, 100, + 72, 93, 99, 69, 90, 96, 64, 85, 92, 60, 82, 88, 58, 79, 86, 56, 77, 84, 60, 79, 86, 55, 76, 82, 55, 74, 81, 53, 72, 79, 50, 72, 78, 54, 73, 80, 57, 77, 82, 63, 83, 88, 64, 85, 90, 66, 85, 90, 60, 80, 85, 57, 76, 83, 55, 75, 81, 57, 76, 81, 60, 79, 84, + 62, 81, 86, 61, 79, 86, 57, 75, 82, 54, 72, 79, 48, 66, 73, 45, 63, 69, 42, 60, 67, 41, 59, 66, 37, 55, 62, 36, 53, 60, 35, 50, 58, 36, 50, 57, 64, 76, 83, 47, 60, 66, 29, 44, 51, 28, 44, 50, 28, 44, 50, 28, 44, 50, 27, 43, 49, 28, 44, 50, 30, 46, 52, + 33, 49, 56, 35, 51, 58, 40, 56, 62, 43, 59, 66, 43, 59, 66, 45, 61, 68, 50, 66, 72, 54, 70, 76, 55, 71, 77, 61, 76, 82, 64, 78, 84, 101, 110, 115, 54, 67, 75, 56, 71, 78, 59, 75, 82, 61, 77, 84, 62, 75, 85, 113, 123, 130, 57, 68, 77, 57, 68, 77, 114, 126, 130, + 64, 74, 83, 61, 70, 80, 57, 68, 76, 46, 62, 69, 50, 66, 72, 52, 68, 74, 54, 70, 76, 56, 72, 75, 56, 71, 77, 57, 71, 77, 56, 70, 76, 55, 70, 76, 55, 70, 76, 56, 70, 76, 55, 71, 76, 54, 71, 74, 52, 69, 72, 54, 70, 73, 56, 71, 75, 56, 71, 75, 56, 72, 74, + 56, 71, 73, 55, 70, 72, 57, 70, 72, 63, 74, 78, 150, 161, 160, 76, 88, 91, 66, 81, 84, 70, 85, 87, 73, 88, 90, 77, 91, 93, 82, 95, 97, 83, 96, 98, 82, 95, 97, 85, 97, 99, 79, 94, 96, 78, 93, 95, 90, 103, 105, 94, 107, 109, 95, 108, 110, 100, 114, 112, 98, 113, 113, + 97, 113, 112, 95, 113, 112, 98, 113, 112, 103, 119, 118, 106, 123, 122, 108, 124, 123, 109, 125, 124, 110, 126, 125, 107, 124, 122, 113, 129, 128, 113, 129, 129, 118, 134, 133, 119, 134, 133, 118, 134, 133, 115, 131, 130, 111, 127, 126, 158, 169, 169, 181, 194, 191, 135, 148, 147, 142, 156, 154, 142, 156, 152, + 141, 156, 152, 141, 156, 151, 149, 163, 159, 153, 167, 164, 155, 168, 165, 159, 171, 168, 159, 172, 168, 160, 172, 168, 158, 172, 166, 160, 173, 168, 161, 174, 170, 159, 173, 169, 160, 174, 170, 163, 176, 172, 163, 176, 172, 167, 178, 175, 164, 178, 174, 164, 178, 174, 163, 177, 173, 165, 179, 175, 169, 183, 179, + 175, 186, 183, 180, 191, 188, 173, 187, 183, 174, 189, 185, 178, 191, 188, 182, 192, 189, 182, 193, 190, 186, 197, 194, 191, 200, 197, 192, 201, 198, 195, 204, 201, 197, 206, 203, 200, 209, 206, 202, 211, 208, 205, 213, 210, 204, 212, 209, 201, 211, 208, 201, 210, 207, 202, 210, 208, 200, 208, 207, 201, 210, 208, + 183, 202, 207, 181, 200, 205, 181, 200, 205, 181, 200, 205, 181, 200, 205, 180, 200, 205, 182, 199, 205, 184, 201, 206, 185, 201, 207, 186, 202, 208, 189, 204, 207, 189, 205, 208, 189, 203, 208, 190, 205, 208, 190, 205, 208, 191, 206, 209, 191, 205, 208, 191, 205, 209, 188, 203, 206, 187, 202, 205, 183, 198, 203, + 176, 194, 200, 171, 190, 195, 171, 190, 195, 169, 189, 194, 169, 187, 194, 166, 185, 192, 163, 183, 189, 160, 181, 187, 158, 180, 186, 162, 182, 189, 164, 183, 190, 164, 183, 191, 161, 182, 190, 159, 179, 189, 154, 175, 187, 148, 173, 183, 148, 171, 181, 144, 167, 179, 141, 164, 177, 133, 159, 173, 129, 156, 170, + 127, 155, 169, 126, 153, 167, 123, 151, 165, 118, 147, 161, 114, 144, 157, 107, 138, 151, 103, 134, 149, 107, 135, 150, 107, 133, 149, 102, 131, 146, 99, 127, 141, 99, 126, 140, 103, 130, 146, 109, 135, 152, 107, 133, 150, 113, 137, 155, 111, 135, 153, 100, 126, 142, 97, 123, 139, 91, 120, 134, 91, 118, 133, + 92, 119, 133, 91, 118, 132, 89, 115, 129, 87, 114, 128, 85, 112, 126, 83, 110, 124, 85, 112, 124, 86, 112, 124, 88, 113, 125, 89, 113, 125, 89, 113, 125, 92, 116, 128, 93, 117, 129, 93, 117, 129, 94, 119, 129, 95, 118, 129, 99, 122, 130, 99, 122, 130, 94, 118, 125, 89, 113, 119, 93, 118, 123, + 101, 123, 129, 111, 132, 137, 116, 135, 141, 102, 124, 130, 97, 120, 126, 99, 122, 128, 121, 142, 148, 125, 145, 152, 98, 122, 128, 98, 122, 128, 96, 120, 126, 95, 120, 125, 92, 117, 121, 90, 116, 119, 91, 115, 120, 89, 115, 118, 94, 116, 121, 95, 117, 122, 96, 118, 123, 93, 117, 121, 92, 116, 121, + 92, 114, 119, 92, 114, 119, 89, 111, 116, 87, 112, 116, 87, 111, 114, 90, 112, 116, 90, 112, 116, 91, 111, 116, 90, 110, 115, 86, 108, 113, 83, 106, 111, 83, 105, 110, 80, 102, 107, 80, 102, 107, 79, 101, 106, 80, 102, 107, 79, 101, 106, 80, 102, 108, 77, 99, 105, 76, 98, 104, 72, 94, 100, + 70, 92, 98, 67, 89, 95, 64, 86, 92, 61, 83, 89, 58, 80, 87, 57, 79, 86, 60, 79, 86, 53, 75, 81, 53, 73, 80, 53, 74, 80, 51, 73, 79, 52, 74, 80, 58, 78, 84, 61, 81, 86, 68, 87, 92, 64, 84, 90, 61, 80, 86, 59, 78, 85, 59, 78, 85, 59, 79, 84, 62, 81, 85, + 63, 82, 87, 61, 80, 86, 57, 75, 82, 55, 73, 80, 51, 69, 76, 47, 65, 72, 44, 62, 69, 41, 59, 66, 38, 56, 64, 37, 54, 61, 35, 51, 58, 35, 50, 58, 82, 94, 101, 25, 39, 47, 25, 41, 47, 29, 46, 52, 30, 46, 52, 30, 46, 52, 29, 45, 51, 29, 45, 52, 29, 45, 52, + 33, 49, 56, 35, 51, 58, 40, 56, 62, 41, 57, 64, 44, 60, 66, 48, 64, 70, 50, 66, 72, 55, 71, 77, 56, 72, 78, 58, 74, 80, 58, 72, 79, 107, 119, 123, 54, 67, 75, 57, 72, 81, 60, 75, 84, 63, 79, 86, 62, 76, 87, 74, 85, 95, 99, 109, 116, 60, 70, 79, 90, 100, 108, + 85, 97, 104, 60, 70, 79, 57, 70, 78, 51, 66, 73, 49, 65, 72, 49, 66, 72, 51, 68, 74, 53, 69, 75, 57, 71, 77, 56, 70, 76, 56, 70, 76, 53, 70, 76, 52, 68, 74, 56, 70, 76, 55, 71, 75, 50, 66, 72, 50, 67, 70, 54, 68, 73, 53, 68, 72, 55, 69, 74, 53, 67, 72, + 51, 66, 69, 52, 67, 70, 56, 70, 73, 56, 69, 73, 127, 138, 138, 98, 111, 113, 57, 72, 76, 64, 79, 82, 69, 84, 86, 72, 87, 89, 73, 88, 90, 75, 91, 93, 76, 91, 94, 76, 91, 93, 77, 91, 93, 76, 90, 92, 82, 96, 98, 90, 103, 105, 92, 105, 107, 94, 107, 109, 93, 108, 107, + 89, 106, 106, 91, 110, 110, 93, 109, 107, 98, 114, 113, 101, 116, 119, 102, 117, 118, 103, 118, 120, 105, 120, 121, 107, 122, 123, 108, 124, 125, 111, 128, 128, 112, 127, 129, 112, 128, 127, 114, 130, 129, 109, 125, 124, 108, 124, 123, 101, 115, 114, 191, 203, 201, 163, 176, 173, 139, 153, 149, 140, 153, 150, + 137, 150, 148, 136, 150, 148, 146, 159, 157, 150, 164, 161, 152, 165, 163, 155, 167, 165, 155, 169, 165, 154, 168, 165, 155, 169, 165, 153, 168, 164, 151, 167, 163, 154, 169, 165, 154, 168, 165, 156, 170, 167, 158, 171, 169, 160, 174, 170, 158, 172, 168, 157, 171, 167, 157, 172, 168, 160, 175, 171, 165, 179, 175, + 169, 183, 179, 178, 190, 186, 167, 181, 177, 166, 182, 178, 171, 185, 182, 173, 186, 183, 174, 187, 185, 177, 190, 188, 180, 193, 190, 182, 195, 192, 183, 195, 192, 185, 197, 193, 188, 199, 196, 193, 203, 200, 198, 207, 204, 197, 206, 203, 197, 206, 203, 192, 203, 200, 194, 204, 202, 194, 204, 203, 194, 204, 202, + 183, 202, 207, 183, 201, 206, 184, 201, 206, 184, 201, 207, 186, 202, 208, 184, 200, 206, 186, 202, 206, 187, 203, 209, 188, 204, 210, 190, 205, 209, 190, 205, 208, 191, 206, 209, 190, 205, 208, 190, 205, 208, 190, 205, 208, 191, 206, 209, 191, 206, 209, 189, 204, 207, 190, 203, 207, 186, 200, 205, 183, 198, 204, + 177, 195, 200, 173, 191, 196, 169, 188, 194, 169, 187, 194, 168, 187, 193, 166, 185, 192, 164, 182, 190, 159, 181, 187, 161, 182, 188, 163, 182, 189, 164, 183, 190, 166, 184, 192, 163, 182, 191, 159, 179, 190, 152, 175, 186, 150, 173, 183, 145, 169, 179, 144, 167, 178, 138, 162, 174, 132, 159, 171, 127, 154, 168, + 126, 154, 167, 123, 151, 165, 119, 148, 162, 117, 146, 160, 115, 143, 157, 112, 141, 155, 109, 138, 152, 107, 137, 151, 107, 135, 150, 103, 131, 146, 100, 129, 143, 100, 127, 142, 106, 131, 147, 111, 136, 153, 111, 136, 154, 115, 140, 156, 110, 135, 152, 100, 126, 142, 97, 123, 139, 95, 120, 136, 92, 117, 133, + 92, 119, 134, 91, 117, 132, 90, 117, 132, 89, 115, 130, 87, 113, 130, 87, 114, 128, 88, 114, 128, 87, 113, 128, 87, 113, 127, 91, 116, 128, 89, 114, 126, 92, 116, 128, 94, 118, 129, 95, 120, 131, 93, 118, 128, 94, 119, 128, 101, 123, 131, 100, 123, 131, 91, 114, 121, 88, 112, 118, 93, 117, 123, + 106, 127, 134, 112, 131, 138, 115, 135, 140, 102, 124, 130, 96, 121, 127, 100, 123, 129, 122, 143, 148, 117, 137, 143, 99, 123, 129, 96, 120, 126, 95, 119, 125, 93, 118, 123, 91, 116, 121, 90, 115, 119, 88, 113, 118, 90, 115, 119, 95, 117, 122, 95, 117, 122, 96, 118, 123, 94, 118, 123, 93, 116, 121, + 92, 114, 119, 91, 113, 118, 91, 113, 118, 87, 111, 114, 88, 111, 113, 89, 112, 114, 90, 113, 114, 92, 113, 116, 89, 110, 113, 86, 108, 113, 84, 106, 111, 83, 105, 110, 81, 103, 108, 80, 102, 108, 80, 102, 107, 80, 102, 108, 83, 103, 109, 80, 102, 108, 78, 100, 106, 74, 96, 101, 73, 95, 101, + 69, 90, 96, 65, 88, 94, 64, 87, 93, 62, 84, 90, 59, 80, 88, 59, 79, 88, 56, 78, 85, 54, 76, 82, 50, 72, 78, 54, 74, 81, 51, 74, 80, 53, 75, 81, 59, 78, 85, 63, 83, 89, 68, 87, 92, 66, 86, 91, 60, 80, 87, 61, 80, 87, 61, 80, 87, 62, 81, 88, 64, 83, 90, + 64, 83, 88, 63, 82, 87, 62, 80, 88, 57, 75, 82, 51, 69, 76, 47, 65, 72, 46, 64, 71, 43, 61, 68, 42, 60, 67, 37, 55, 64, 39, 54, 62, 29, 42, 50, 72, 86, 92, 27, 41, 49, 25, 41, 47, 28, 44, 50, 30, 46, 52, 31, 47, 53, 30, 46, 53, 32, 48, 54, 31, 47, 54, + 31, 49, 54, 36, 54, 59, 39, 56, 63, 42, 59, 66, 47, 63, 69, 48, 64, 70, 52, 68, 74, 56, 70, 76, 56, 70, 76, 57, 71, 77, 51, 66, 71, 112, 124, 128, 52, 67, 74, 59, 74, 82, 63, 78, 86, 66, 81, 88, 64, 78, 86, 44, 57, 66, 125, 137, 144, 62, 73, 83, 75, 89, 97, + 101, 114, 117, 58, 69, 78, 58, 71, 79, 49, 66, 73, 48, 65, 72, 46, 65, 70, 48, 66, 73, 52, 68, 75, 55, 71, 77, 59, 71, 79, 53, 69, 76, 54, 70, 76, 55, 71, 77, 58, 72, 78, 55, 70, 76, 50, 67, 72, 48, 66, 68, 51, 66, 72, 51, 66, 71, 50, 66, 71, 46, 64, 66, + 44, 61, 65, 45, 61, 66, 51, 65, 71, 86, 98, 103, 67, 75, 80, 134, 148, 147, 56, 69, 74, 60, 75, 78, 64, 79, 82, 66, 81, 84, 67, 83, 85, 68, 84, 87, 72, 87, 90, 72, 87, 90, 72, 87, 89, 72, 87, 89, 76, 91, 93, 81, 96, 98, 83, 97, 99, 86, 100, 102, 86, 101, 103, + 83, 99, 101, 85, 102, 104, 85, 103, 105, 93, 109, 108, 96, 112, 111, 97, 112, 114, 100, 115, 117, 97, 113, 115, 100, 118, 119, 102, 120, 121, 108, 123, 125, 107, 124, 125, 107, 123, 122, 106, 122, 121, 108, 124, 123, 105, 122, 121, 103, 120, 119, 126, 139, 138, 198, 210, 207, 135, 146, 149, 136, 149, 149, + 135, 149, 148, 133, 148, 146, 142, 156, 154, 147, 161, 158, 148, 162, 159, 151, 164, 162, 152, 166, 163, 151, 164, 163, 150, 163, 161, 147, 162, 160, 146, 163, 160, 146, 163, 160, 150, 165, 162, 151, 165, 163, 152, 166, 164, 153, 167, 165, 153, 168, 166, 152, 166, 164, 149, 164, 161, 153, 166, 164, 158, 172, 170, + 162, 176, 174, 169, 182, 180, 171, 184, 182, 162, 176, 174, 164, 180, 177, 166, 181, 179, 165, 179, 178, 166, 180, 179, 169, 183, 182, 170, 184, 182, 173, 187, 184, 175, 188, 186, 178, 191, 188, 181, 194, 191, 186, 197, 194, 189, 200, 197, 189, 201, 198, 187, 198, 196, 186, 197, 195, 185, 197, 195, 186, 197, 195, + 184, 202, 207, 185, 201, 207, 184, 201, 207, 184, 202, 208, 186, 201, 208, 187, 204, 207, 188, 205, 208, 190, 205, 210, 191, 206, 210, 192, 207, 210, 192, 207, 210, 192, 207, 210, 191, 206, 209, 190, 205, 208, 189, 204, 207, 190, 205, 208, 191, 204, 208, 191, 205, 209, 189, 202, 206, 187, 202, 206, 182, 197, 203, + 176, 194, 199, 172, 191, 196, 171, 190, 196, 168, 187, 194, 167, 186, 193, 166, 184, 192, 163, 183, 190, 160, 182, 188, 161, 183, 189, 164, 183, 190, 167, 185, 192, 168, 186, 194, 165, 184, 193, 159, 179, 188, 151, 173, 184, 148, 171, 182, 141, 166, 176, 139, 163, 175, 135, 160, 172, 129, 156, 168, 128, 155, 168, + 124, 152, 165, 122, 150, 164, 119, 148, 162, 120, 148, 162, 116, 145, 159, 115, 144, 159, 113, 141, 156, 111, 140, 155, 108, 136, 152, 103, 131, 147, 98, 128, 142, 100, 128, 143, 110, 135, 151, 112, 137, 154, 116, 141, 158, 116, 141, 158, 108, 133, 151, 101, 127, 143, 96, 123, 139, 91, 119, 135, 92, 118, 133, + 92, 119, 133, 91, 118, 133, 89, 115, 131, 89, 115, 131, 89, 114, 131, 89, 115, 129, 89, 115, 129, 88, 114, 128, 89, 115, 129, 89, 115, 127, 91, 116, 127, 92, 116, 128, 94, 118, 129, 94, 119, 129, 94, 119, 129, 94, 119, 128, 100, 123, 131, 95, 118, 126, 90, 113, 120, 87, 112, 118, 94, 117, 123, + 110, 130, 137, 111, 130, 137, 114, 134, 140, 100, 123, 129, 98, 122, 128, 100, 123, 129, 119, 141, 146, 106, 129, 135, 98, 122, 128, 95, 119, 125, 92, 116, 122, 91, 115, 121, 92, 116, 122, 91, 115, 121, 91, 115, 121, 91, 115, 120, 97, 119, 124, 96, 118, 123, 96, 118, 123, 94, 117, 122, 92, 116, 121, + 92, 115, 120, 91, 114, 119, 87, 111, 115, 87, 110, 113, 90, 113, 115, 92, 115, 117, 92, 114, 116, 93, 114, 117, 90, 111, 114, 85, 108, 113, 84, 106, 111, 82, 104, 109, 80, 102, 107, 80, 102, 108, 79, 101, 107, 83, 103, 108, 81, 103, 109, 81, 103, 109, 78, 99, 106, 74, 96, 101, 73, 95, 101, + 71, 92, 98, 65, 89, 95, 60, 84, 90, 61, 84, 90, 57, 80, 86, 58, 80, 86, 55, 76, 83, 52, 74, 80, 53, 74, 80, 54, 75, 81, 53, 75, 81, 54, 76, 82, 60, 79, 86, 64, 83, 91, 68, 87, 92, 65, 85, 90, 60, 79, 86, 61, 81, 87, 62, 81, 88, 64, 83, 90, 67, 86, 93, + 66, 84, 91, 63, 81, 88, 61, 81, 85, 58, 74, 81, 52, 71, 76, 51, 69, 74, 46, 64, 71, 44, 62, 69, 42, 60, 69, 41, 57, 65, 41, 53, 62, 69, 82, 89, 27, 39, 48, 25, 39, 45, 25, 41, 47, 30, 46, 52, 34, 49, 55, 29, 45, 52, 30, 46, 52, 32, 48, 54, 32, 48, 55, + 32, 49, 54, 35, 53, 58, 38, 55, 62, 43, 60, 67, 48, 64, 70, 50, 66, 72, 55, 69, 74, 55, 69, 74, 56, 70, 76, 56, 70, 77, 45, 59, 66, 119, 131, 135, 55, 70, 77, 59, 74, 82, 64, 80, 86, 66, 81, 87, 66, 80, 88, 51, 62, 71, 129, 136, 146, 64, 75, 84, 65, 78, 86, + 115, 127, 128, 61, 75, 83, 57, 73, 80, 49, 67, 73, 47, 66, 71, 45, 64, 69, 46, 65, 70, 50, 67, 73, 56, 71, 77, 55, 71, 78, 53, 69, 77, 53, 69, 75, 55, 71, 77, 56, 71, 77, 53, 69, 75, 49, 65, 71, 46, 63, 67, 48, 64, 68, 46, 62, 66, 46, 63, 66, 43, 60, 63, + 43, 59, 64, 47, 63, 69, 54, 68, 74, 63, 75, 82, 49, 58, 65, 156, 167, 167, 51, 64, 71, 58, 73, 77, 57, 74, 77, 62, 79, 82, 63, 80, 83, 64, 80, 85, 68, 84, 88, 68, 83, 86, 69, 85, 88, 71, 85, 89, 71, 86, 88, 74, 89, 91, 77, 92, 94, 82, 97, 99, 77, 92, 94, + 77, 95, 96, 77, 95, 96, 79, 97, 98, 83, 101, 100, 89, 105, 104, 92, 107, 108, 92, 110, 111, 91, 109, 110, 93, 111, 112, 95, 113, 114, 98, 116, 117, 99, 117, 118, 102, 119, 118, 98, 116, 115, 98, 115, 115, 99, 117, 116, 99, 117, 118, 93, 110, 110, 179, 192, 189, 154, 163, 165, 135, 147, 147, + 132, 146, 145, 130, 145, 144, 131, 147, 146, 136, 152, 149, 140, 156, 152, 148, 161, 160, 147, 161, 159, 147, 161, 159, 140, 156, 154, 141, 157, 155, 139, 156, 155, 138, 157, 155, 142, 159, 158, 141, 158, 158, 141, 158, 157, 144, 160, 159, 144, 159, 159, 142, 158, 157, 143, 159, 158, 143, 160, 158, 149, 164, 163, + 157, 171, 170, 160, 174, 172, 167, 181, 179, 157, 174, 171, 154, 170, 168, 154, 171, 170, 156, 173, 172, 156, 173, 172, 159, 175, 174, 159, 177, 175, 161, 177, 175, 162, 179, 177, 165, 180, 179, 170, 185, 183, 174, 187, 185, 178, 191, 189, 178, 192, 190, 179, 193, 191, 178, 191, 190, 178, 192, 190, 177, 191, 190, + 184, 202, 208, 184, 204, 209, 186, 202, 208, 187, 203, 210, 188, 205, 208, 190, 206, 209, 191, 206, 209, 192, 207, 210, 192, 207, 210, 193, 208, 211, 192, 206, 210, 190, 205, 208, 189, 204, 207, 190, 205, 208, 190, 204, 208, 192, 205, 209, 193, 205, 209, 192, 204, 208, 188, 203, 206, 185, 200, 203, 182, 197, 203, + 177, 194, 199, 173, 192, 197, 170, 189, 196, 169, 187, 194, 167, 186, 193, 164, 185, 191, 162, 183, 190, 161, 183, 189, 162, 182, 190, 164, 183, 191, 168, 185, 194, 169, 185, 194, 164, 183, 191, 157, 178, 186, 151, 172, 182, 144, 169, 179, 139, 164, 176, 136, 162, 174, 131, 158, 169, 129, 157, 168, 127, 154, 167, + 123, 151, 165, 120, 148, 162, 121, 149, 163, 122, 148, 164, 120, 148, 163, 118, 145, 160, 115, 142, 158, 110, 139, 155, 109, 137, 153, 102, 131, 148, 101, 128, 146, 102, 130, 145, 110, 136, 152, 113, 138, 155, 116, 141, 158, 113, 139, 156, 109, 135, 151, 98, 124, 140, 97, 123, 139, 93, 120, 135, 92, 119, 134, + 92, 119, 133, 89, 116, 131, 89, 115, 131, 89, 115, 131, 89, 114, 130, 90, 116, 129, 89, 115, 128, 89, 115, 127, 88, 114, 126, 90, 116, 128, 93, 117, 129, 92, 117, 128, 95, 120, 130, 95, 120, 130, 92, 117, 127, 97, 120, 128, 96, 120, 128, 93, 116, 125, 88, 112, 120, 88, 112, 118, 99, 122, 128, + 109, 130, 134, 111, 130, 136, 113, 134, 139, 100, 123, 128, 101, 124, 130, 102, 124, 129, 101, 124, 130, 101, 124, 130, 95, 119, 125, 94, 118, 124, 91, 115, 121, 87, 112, 118, 88, 114, 120, 90, 114, 120, 92, 116, 122, 92, 116, 122, 96, 119, 124, 95, 119, 124, 96, 118, 124, 96, 118, 123, 94, 116, 121, + 92, 114, 119, 90, 112, 118, 89, 111, 116, 88, 110, 114, 90, 113, 115, 91, 114, 116, 93, 114, 116, 91, 111, 116, 86, 108, 113, 85, 107, 112, 83, 105, 110, 81, 104, 109, 81, 103, 108, 80, 102, 107, 80, 102, 107, 83, 103, 109, 81, 103, 109, 80, 102, 108, 76, 99, 105, 71, 96, 101, 70, 94, 100, + 68, 91, 97, 65, 89, 95, 66, 88, 95, 63, 86, 92, 59, 82, 88, 56, 78, 84, 54, 76, 82, 53, 75, 81, 55, 76, 82, 54, 76, 82, 55, 75, 82, 56, 77, 83, 60, 79, 86, 66, 85, 92, 67, 86, 91, 64, 84, 89, 62, 81, 88, 62, 81, 88, 64, 83, 90, 66, 85, 92, 69, 88, 95, + 69, 87, 94, 64, 83, 89, 61, 79, 85, 58, 76, 81, 55, 72, 77, 50, 68, 73, 48, 66, 73, 46, 63, 70, 42, 60, 68, 43, 58, 67, 34, 48, 56, 64, 75, 83, 26, 39, 46, 24, 38, 44, 26, 40, 46, 30, 46, 52, 29, 45, 51, 33, 47, 53, 32, 48, 54, 32, 47, 55, 30, 47, 54, + 31, 49, 55, 31, 49, 56, 36, 55, 60, 43, 60, 66, 49, 65, 71, 54, 68, 75, 53, 68, 70, 54, 69, 72, 54, 67, 73, 55, 69, 75, 41, 55, 64, 104, 115, 122, 57, 73, 79, 60, 76, 83, 64, 80, 86, 70, 85, 91, 67, 82, 88, 61, 74, 81, 130, 139, 143, 59, 69, 78, 63, 76, 83, + 114, 129, 130, 60, 76, 82, 58, 74, 81, 53, 72, 78, 46, 65, 70, 46, 65, 70, 44, 63, 68, 48, 68, 73, 52, 70, 75, 55, 71, 77, 54, 70, 76, 55, 71, 77, 56, 72, 78, 56, 71, 77, 53, 70, 75, 49, 66, 69, 45, 64, 67, 48, 65, 68, 47, 64, 67, 44, 61, 64, 43, 60, 64, + 45, 61, 66, 48, 64, 70, 53, 68, 74, 57, 70, 77, 53, 64, 72, 148, 162, 165, 54, 66, 73, 55, 70, 76, 58, 74, 79, 59, 76, 80, 57, 75, 80, 61, 78, 84, 64, 80, 85, 63, 79, 85, 63, 79, 84, 67, 84, 87, 69, 84, 87, 67, 83, 86, 68, 84, 87, 72, 87, 90, 70, 88, 90, + 69, 86, 89, 72, 90, 91, 72, 90, 91, 77, 95, 95, 81, 98, 97, 84, 100, 100, 86, 104, 105, 85, 103, 104, 87, 105, 106, 88, 106, 107, 93, 111, 112, 92, 110, 110, 92, 110, 110, 91, 109, 108, 91, 109, 109, 96, 114, 115, 95, 114, 115, 93, 111, 112, 99, 115, 115, 201, 212, 210, 131, 142, 143, + 131, 145, 144, 130, 146, 145, 128, 145, 144, 127, 144, 142, 129, 146, 143, 135, 150, 149, 144, 158, 156, 141, 156, 155, 136, 152, 151, 128, 147, 146, 128, 148, 147, 125, 146, 147, 128, 148, 150, 132, 151, 152, 129, 149, 148, 130, 150, 149, 132, 151, 150, 133, 151, 150, 131, 149, 149, 134, 152, 151, 140, 158, 157, + 146, 162, 161, 154, 168, 167, 157, 171, 169, 157, 172, 171, 146, 164, 163, 145, 164, 164, 145, 164, 165, 144, 163, 165, 145, 164, 165, 148, 167, 166, 150, 168, 169, 153, 171, 171, 157, 175, 174, 160, 177, 176, 163, 179, 178, 167, 184, 181, 169, 184, 183, 170, 185, 184, 172, 187, 186, 169, 185, 184, 173, 187, 186, + 185, 204, 209, 187, 203, 209, 188, 205, 208, 188, 205, 208, 189, 206, 209, 191, 207, 210, 192, 207, 210, 192, 207, 210, 193, 208, 211, 192, 207, 210, 192, 207, 210, 190, 205, 208, 189, 204, 207, 188, 203, 206, 191, 206, 208, 192, 203, 208, 193, 205, 209, 192, 204, 208, 188, 203, 206, 186, 201, 205, 183, 198, 204, + 178, 195, 200, 174, 192, 198, 171, 189, 196, 169, 188, 195, 167, 186, 193, 163, 183, 190, 162, 183, 190, 160, 181, 190, 162, 182, 190, 166, 185, 193, 168, 186, 194, 167, 184, 193, 163, 182, 190, 155, 175, 185, 146, 169, 179, 141, 166, 176, 135, 161, 173, 134, 160, 172, 131, 158, 170, 126, 154, 165, 126, 154, 166, + 124, 152, 165, 121, 149, 163, 124, 151, 165, 125, 152, 166, 125, 150, 165, 122, 149, 163, 118, 145, 160, 115, 143, 158, 110, 138, 155, 103, 132, 149, 101, 130, 147, 105, 132, 149, 113, 139, 155, 115, 140, 156, 117, 142, 158, 115, 141, 157, 103, 130, 146, 98, 124, 140, 96, 122, 138, 92, 118, 133, 92, 119, 133, + 90, 117, 131, 91, 118, 132, 90, 116, 131, 91, 116, 132, 91, 116, 132, 89, 116, 128, 89, 115, 127, 89, 116, 127, 89, 115, 127, 90, 115, 127, 93, 116, 128, 93, 117, 129, 94, 119, 129, 95, 120, 130, 92, 117, 127, 94, 118, 127, 96, 119, 128, 89, 114, 123, 89, 114, 122, 92, 115, 123, 101, 123, 129, + 110, 130, 136, 112, 132, 137, 112, 133, 138, 102, 124, 129, 101, 123, 128, 99, 123, 128, 98, 121, 127, 96, 120, 126, 93, 118, 124, 90, 116, 122, 90, 116, 122, 90, 116, 122, 90, 116, 122, 92, 116, 122, 95, 117, 123, 96, 118, 124, 97, 119, 125, 96, 119, 125, 93, 117, 123, 95, 117, 123, 93, 115, 120, + 92, 114, 120, 91, 113, 118, 88, 110, 115, 89, 112, 115, 90, 112, 117, 93, 114, 119, 90, 112, 117, 91, 111, 116, 87, 109, 114, 84, 106, 111, 84, 106, 111, 83, 104, 110, 81, 105, 109, 81, 103, 107, 80, 102, 107, 82, 104, 109, 81, 103, 108, 80, 102, 108, 77, 99, 104, 74, 97, 101, 74, 96, 102, + 70, 92, 98, 67, 89, 95, 64, 88, 94, 62, 85, 91, 60, 83, 89, 55, 77, 83, 54, 76, 82, 54, 76, 82, 53, 75, 81, 54, 75, 81, 57, 76, 83, 58, 77, 84, 63, 82, 89, 66, 84, 91, 68, 87, 92, 67, 86, 91, 62, 81, 88, 62, 81, 88, 64, 83, 90, 69, 88, 95, 71, 89, 96, + 71, 90, 96, 67, 86, 92, 61, 80, 86, 59, 77, 82, 56, 73, 79, 52, 70, 75, 52, 68, 75, 49, 66, 73, 46, 62, 69, 43, 59, 67, 47, 59, 67, 42, 56, 63, 23, 37, 44, 25, 38, 44, 27, 41, 47, 33, 47, 53, 32, 46, 52, 33, 47, 54, 32, 47, 54, 30, 46, 54, 31, 47, 54, + 30, 48, 53, 30, 48, 54, 39, 55, 61, 46, 61, 67, 51, 67, 73, 51, 65, 71, 51, 65, 71, 51, 65, 71, 52, 66, 72, 50, 64, 69, 37, 50, 57, 110, 128, 133, 58, 74, 81, 63, 80, 83, 66, 82, 88, 70, 85, 91, 70, 86, 89, 70, 84, 90, 120, 132, 137, 56, 69, 76, 57, 71, 78, + 125, 141, 146, 62, 78, 85, 58, 75, 82, 54, 72, 78, 49, 68, 73, 46, 65, 70, 48, 67, 72, 50, 69, 74, 56, 73, 79, 56, 72, 78, 56, 72, 78, 56, 72, 78, 57, 73, 79, 56, 72, 78, 52, 69, 75, 51, 68, 71, 45, 64, 67, 49, 66, 69, 48, 65, 68, 47, 64, 67, 47, 64, 68, + 48, 64, 70, 46, 62, 68, 48, 65, 72, 56, 71, 78, 54, 68, 76, 136, 149, 150, 60, 72, 79, 54, 70, 76, 57, 72, 79, 60, 76, 82, 58, 76, 82, 60, 77, 83, 63, 79, 85, 63, 79, 85, 62, 79, 83, 65, 82, 85, 66, 83, 86, 65, 82, 85, 62, 79, 82, 67, 85, 87, 67, 84, 87, + 67, 84, 87, 66, 84, 87, 70, 88, 89, 75, 93, 94, 76, 94, 94, 80, 98, 98, 80, 98, 99, 81, 100, 101, 80, 100, 101, 84, 103, 104, 86, 104, 105, 86, 104, 105, 88, 106, 106, 85, 103, 103, 89, 108, 109, 90, 109, 110, 92, 112, 113, 91, 109, 110, 94, 113, 112, 167, 179, 175, 140, 153, 151, + 126, 140, 139, 127, 141, 140, 121, 139, 138, 117, 135, 134, 119, 137, 137, 124, 141, 140, 132, 148, 146, 131, 147, 146, 125, 143, 142, 117, 137, 137, 114, 135, 136, 115, 137, 138, 118, 139, 140, 121, 141, 142, 122, 142, 143, 122, 143, 142, 121, 142, 142, 124, 145, 145, 123, 144, 144, 125, 146, 145, 131, 150, 149, + 133, 152, 152, 139, 157, 156, 147, 163, 162, 153, 169, 169, 145, 162, 161, 141, 159, 161, 138, 158, 159, 139, 160, 161, 136, 157, 158, 142, 162, 163, 144, 165, 166, 145, 165, 166, 148, 168, 169, 154, 172, 170, 158, 175, 174, 162, 178, 177, 164, 180, 179, 164, 181, 180, 166, 182, 181, 166, 182, 181, 166, 182, 181, + 187, 204, 209, 189, 205, 210, 188, 204, 209, 190, 207, 209, 192, 208, 211, 192, 207, 210, 192, 207, 210, 194, 208, 211, 196, 207, 211, 192, 208, 211, 191, 206, 209, 189, 204, 207, 189, 204, 207, 189, 204, 207, 191, 204, 207, 192, 205, 208, 193, 205, 209, 191, 205, 208, 189, 203, 206, 185, 200, 205, 183, 198, 204, + 178, 195, 200, 173, 191, 197, 173, 191, 198, 168, 187, 194, 168, 187, 194, 165, 184, 191, 161, 183, 191, 160, 181, 189, 162, 182, 190, 168, 185, 194, 168, 185, 194, 166, 184, 192, 160, 179, 187, 151, 173, 181, 146, 169, 179, 139, 164, 175, 134, 160, 172, 130, 159, 170, 129, 157, 168, 126, 154, 165, 126, 154, 165, + 124, 152, 164, 126, 153, 166, 129, 155, 169, 129, 154, 168, 128, 153, 167, 124, 150, 165, 122, 148, 163, 116, 144, 159, 111, 139, 156, 106, 135, 152, 104, 132, 149, 111, 137, 154, 117, 141, 158, 118, 143, 159, 118, 143, 159, 111, 137, 153, 102, 128, 144, 96, 122, 138, 92, 118, 134, 91, 117, 132, 92, 119, 133, + 90, 117, 131, 91, 118, 132, 89, 115, 130, 91, 116, 132, 90, 116, 130, 91, 117, 130, 90, 116, 128, 89, 115, 126, 89, 115, 127, 94, 118, 130, 94, 118, 130, 94, 119, 130, 93, 118, 129, 96, 119, 130, 96, 119, 130, 96, 118, 127, 96, 118, 128, 93, 117, 126, 90, 115, 124, 92, 117, 124, 105, 127, 134, + 107, 128, 133, 111, 132, 136, 115, 136, 141, 101, 123, 129, 101, 123, 129, 102, 123, 129, 97, 121, 127, 94, 118, 124, 91, 116, 122, 90, 116, 122, 89, 115, 121, 90, 116, 122, 93, 118, 124, 96, 119, 125, 96, 118, 124, 98, 120, 126, 98, 120, 126, 97, 119, 125, 96, 118, 124, 95, 117, 123, 93, 115, 121, + 90, 112, 118, 88, 110, 116, 88, 110, 115, 90, 112, 116, 93, 114, 119, 93, 113, 118, 90, 111, 116, 88, 110, 115, 87, 109, 114, 84, 106, 111, 83, 105, 110, 82, 105, 110, 80, 103, 108, 80, 102, 107, 81, 104, 108, 81, 103, 108, 81, 103, 108, 81, 103, 109, 77, 99, 104, 75, 97, 103, 74, 96, 102, + 72, 94, 100, 69, 91, 97, 67, 89, 95, 61, 84, 90, 59, 81, 87, 56, 78, 84, 55, 77, 83, 54, 76, 82, 56, 78, 84, 57, 76, 84, 57, 76, 83, 57, 76, 83, 61, 80, 87, 67, 85, 92, 68, 86, 93, 65, 84, 91, 62, 81, 88, 63, 82, 89, 66, 85, 92, 68, 88, 93, 71, 91, 95, + 71, 90, 96, 66, 84, 91, 60, 79, 86, 58, 77, 82, 56, 75, 80, 57, 72, 79, 52, 68, 75, 50, 66, 73, 48, 64, 71, 45, 60, 68, 57, 71, 77, 26, 38, 47, 25, 41, 47, 21, 38, 44, 28, 42, 49, 31, 44, 52, 33, 46, 53, 32, 47, 53, 32, 49, 55, 29, 45, 52, 27, 46, 52, + 31, 47, 53, 34, 50, 56, 39, 55, 63, 46, 62, 69, 49, 65, 72, 51, 68, 74, 51, 66, 72, 53, 67, 73, 51, 65, 71, 51, 64, 70, 41, 51, 57, 114, 131, 136, 62, 78, 84, 67, 83, 87, 67, 84, 86, 70, 87, 89, 68, 85, 89, 71, 86, 92, 125, 139, 142, 55, 69, 75, 54, 69, 75, + 128, 143, 148, 62, 80, 86, 61, 78, 85, 55, 73, 80, 53, 72, 78, 49, 68, 73, 49, 68, 73, 55, 73, 78, 56, 74, 79, 54, 74, 79, 53, 72, 77, 57, 74, 80, 57, 74, 80, 56, 73, 79, 52, 69, 74, 50, 68, 70, 49, 67, 70, 49, 66, 69, 51, 68, 71, 50, 67, 70, 49, 66, 69, + 50, 66, 70, 51, 67, 73, 54, 70, 76, 57, 73, 79, 58, 72, 78, 111, 124, 128, 96, 108, 113, 52, 67, 76, 57, 72, 81, 60, 76, 83, 61, 77, 84, 62, 78, 85, 63, 79, 85, 63, 79, 85, 60, 77, 81, 63, 80, 82, 67, 84, 87, 62, 79, 82, 64, 81, 84, 67, 84, 86, 66, 84, 85, + 66, 83, 86, 65, 82, 84, 67, 84, 86, 71, 89, 91, 76, 93, 95, 71, 91, 92, 76, 94, 95, 78, 97, 98, 79, 98, 99, 79, 99, 100, 82, 101, 102, 83, 101, 102, 84, 102, 103, 82, 101, 102, 80, 100, 101, 80, 100, 101, 86, 106, 107, 88, 108, 109, 89, 108, 109, 105, 119, 122, 186, 200, 197, + 117, 131, 131, 124, 138, 137, 119, 134, 134, 108, 127, 128, 107, 128, 128, 111, 131, 131, 117, 135, 136, 117, 135, 136, 115, 134, 135, 109, 130, 131, 103, 127, 127, 102, 125, 127, 104, 128, 128, 110, 133, 134, 114, 135, 137, 114, 136, 137, 114, 137, 137, 113, 136, 136, 117, 140, 140, 123, 144, 145, 123, 143, 144, + 128, 148, 149, 129, 150, 151, 135, 155, 156, 146, 164, 163, 148, 166, 166, 140, 159, 160, 139, 159, 161, 137, 157, 160, 133, 154, 156, 136, 157, 158, 139, 159, 160, 140, 160, 161, 145, 164, 165, 148, 168, 169, 154, 172, 173, 157, 174, 173, 160, 176, 175, 161, 177, 176, 164, 180, 179, 164, 180, 179, 163, 179, 178, + 188, 205, 209, 189, 205, 209, 189, 206, 209, 193, 208, 211, 193, 208, 211, 192, 207, 211, 193, 208, 211, 196, 209, 212, 196, 208, 212, 192, 207, 210, 190, 205, 208, 188, 203, 206, 189, 204, 207, 189, 204, 207, 192, 205, 208, 192, 205, 208, 193, 205, 209, 190, 204, 207, 189, 204, 207, 186, 201, 204, 181, 197, 203, + 179, 195, 201, 175, 193, 198, 173, 192, 198, 171, 189, 196, 168, 187, 194, 163, 185, 191, 162, 183, 190, 160, 181, 189, 164, 183, 191, 167, 185, 194, 168, 185, 194, 164, 181, 190, 157, 178, 186, 146, 169, 180, 140, 165, 175, 137, 163, 173, 133, 159, 171, 131, 158, 170, 128, 156, 167, 128, 156, 167, 127, 155, 166, + 129, 156, 168, 131, 157, 169, 134, 158, 171, 135, 158, 173, 131, 156, 170, 126, 152, 167, 126, 152, 166, 121, 147, 162, 114, 142, 157, 112, 139, 156, 110, 137, 154, 117, 142, 158, 118, 142, 159, 117, 142, 158, 117, 142, 158, 108, 133, 149, 98, 124, 140, 96, 121, 138, 92, 118, 134, 93, 119, 134, 91, 118, 132, + 92, 119, 133, 91, 118, 132, 92, 118, 132, 92, 118, 132, 92, 118, 132, 90, 116, 129, 88, 114, 126, 88, 114, 126, 93, 117, 129, 95, 119, 131, 93, 117, 129, 94, 118, 130, 94, 118, 130, 94, 117, 129, 95, 118, 129, 97, 118, 130, 95, 117, 127, 93, 116, 125, 93, 119, 127, 94, 119, 126, 108, 130, 136, + 107, 127, 133, 113, 133, 138, 113, 134, 139, 101, 123, 129, 102, 124, 130, 99, 121, 127, 95, 119, 125, 93, 117, 123, 91, 116, 121, 91, 117, 121, 90, 116, 120, 92, 116, 122, 94, 119, 125, 94, 118, 124, 98, 120, 126, 97, 119, 125, 97, 119, 125, 95, 117, 123, 96, 118, 124, 93, 115, 121, 91, 113, 118, + 89, 111, 116, 90, 112, 117, 89, 112, 115, 94, 115, 118, 94, 114, 119, 91, 111, 116, 89, 110, 116, 86, 108, 113, 86, 108, 113, 84, 106, 111, 83, 105, 110, 81, 105, 109, 81, 104, 108, 80, 102, 107, 79, 104, 108, 80, 102, 107, 81, 103, 109, 79, 101, 107, 77, 99, 105, 74, 97, 102, 74, 96, 102, + 73, 95, 101, 71, 92, 99, 66, 88, 94, 62, 84, 90, 58, 79, 86, 55, 76, 83, 54, 75, 81, 53, 75, 81, 57, 77, 83, 56, 75, 83, 58, 77, 84, 60, 79, 86, 63, 81, 88, 67, 85, 92, 69, 87, 94, 67, 85, 92, 63, 82, 89, 64, 83, 90, 67, 86, 93, 69, 89, 94, 72, 92, 96, + 73, 91, 97, 68, 86, 93, 64, 82, 87, 58, 77, 82, 58, 76, 82, 55, 71, 77, 55, 71, 78, 51, 67, 74, 51, 67, 74, 41, 57, 65, 58, 71, 79, 27, 43, 49, 26, 41, 47, 22, 38, 44, 27, 40, 48, 30, 43, 51, 31, 45, 52, 33, 48, 54, 30, 46, 53, 31, 47, 54, 27, 45, 52, + 32, 47, 54, 34, 50, 57, 39, 55, 62, 45, 61, 68, 47, 63, 69, 47, 63, 69, 52, 66, 72, 52, 66, 72, 52, 66, 72, 50, 63, 69, 50, 59, 63, 111, 124, 127, 64, 80, 87, 69, 85, 89, 67, 84, 87, 70, 87, 90, 69, 85, 90, 70, 86, 92, 116, 130, 131, 69, 84, 90, 55, 70, 77, + 127, 143, 150, 62, 80, 87, 59, 77, 84, 58, 76, 83, 54, 72, 79, 55, 73, 80, 53, 72, 77, 57, 75, 80, 59, 77, 83, 58, 77, 82, 55, 74, 79, 56, 76, 80, 54, 72, 78, 55, 73, 78, 54, 70, 76, 53, 69, 75, 51, 68, 71, 52, 69, 72, 55, 72, 75, 53, 70, 73, 54, 71, 74, + 53, 70, 73, 53, 70, 74, 53, 71, 74, 57, 74, 78, 59, 74, 79, 78, 92, 97, 128, 140, 143, 54, 68, 77, 58, 72, 81, 61, 76, 84, 65, 81, 88, 64, 80, 88, 62, 78, 84, 63, 79, 85, 62, 78, 82, 64, 81, 84, 66, 83, 86, 64, 81, 84, 65, 83, 85, 65, 83, 85, 65, 84, 85, + 66, 84, 87, 63, 83, 86, 67, 86, 89, 68, 88, 91, 72, 92, 93, 70, 90, 91, 70, 89, 92, 75, 95, 96, 78, 98, 99, 78, 98, 99, 80, 99, 100, 82, 100, 101, 84, 102, 103, 82, 100, 101, 77, 97, 98, 76, 96, 97, 85, 105, 106, 86, 106, 107, 86, 106, 107, 89, 106, 106, 173, 188, 186, + 131, 143, 145, 117, 131, 130, 115, 129, 128, 106, 124, 125, 100, 120, 121, 101, 121, 122, 103, 123, 124, 107, 127, 128, 107, 128, 129, 105, 125, 127, 96, 119, 121, 94, 117, 120, 96, 119, 121, 101, 123, 125, 108, 130, 132, 109, 130, 132, 109, 131, 134, 107, 131, 133, 107, 131, 134, 114, 136, 138, 117, 138, 140, + 121, 143, 144, 122, 144, 144, 124, 146, 147, 136, 156, 157, 147, 165, 166, 143, 162, 163, 140, 157, 160, 137, 156, 159, 134, 155, 157, 135, 155, 156, 136, 157, 158, 140, 160, 161, 141, 161, 162, 144, 164, 165, 151, 169, 170, 153, 171, 169, 158, 174, 173, 160, 176, 175, 163, 179, 178, 163, 179, 178, 162, 178, 177, + 188, 205, 208, 190, 206, 209, 193, 208, 211, 192, 207, 210, 193, 208, 211, 193, 208, 210, 195, 208, 212, 197, 209, 213, 195, 207, 211, 193, 206, 209, 189, 205, 208, 188, 203, 206, 189, 204, 207, 189, 204, 207, 192, 205, 209, 191, 204, 208, 191, 204, 208, 189, 205, 208, 188, 203, 206, 186, 201, 204, 183, 199, 201, + 178, 194, 199, 177, 194, 199, 172, 191, 197, 172, 190, 197, 168, 186, 193, 165, 184, 191, 162, 184, 189, 161, 182, 190, 163, 183, 191, 167, 186, 193, 166, 184, 191, 159, 179, 187, 151, 173, 183, 143, 167, 178, 136, 162, 173, 136, 162, 173, 131, 159, 170, 129, 157, 168, 128, 156, 167, 127, 155, 166, 131, 158, 169, + 131, 157, 169, 138, 162, 173, 138, 162, 174, 138, 161, 173, 134, 159, 171, 132, 157, 170, 126, 152, 166, 123, 149, 163, 119, 145, 161, 114, 140, 156, 112, 138, 154, 118, 143, 159, 117, 142, 158, 120, 144, 160, 113, 138, 154, 102, 128, 144, 96, 123, 138, 95, 122, 137, 92, 118, 134, 93, 119, 134, 92, 119, 133, + 92, 118, 132, 91, 117, 131, 91, 117, 131, 92, 118, 131, 93, 119, 132, 92, 118, 130, 90, 116, 128, 92, 117, 129, 93, 117, 129, 92, 117, 129, 94, 118, 130, 94, 118, 130, 94, 118, 130, 93, 116, 128, 94, 118, 128, 96, 118, 129, 95, 117, 128, 93, 116, 124, 93, 117, 125, 96, 120, 127, 107, 130, 137, + 107, 129, 135, 113, 134, 138, 113, 133, 138, 101, 123, 128, 100, 122, 128, 96, 118, 124, 94, 118, 124, 92, 116, 122, 92, 117, 120, 92, 117, 121, 92, 117, 121, 95, 117, 123, 95, 118, 124, 98, 119, 125, 98, 120, 126, 96, 118, 124, 97, 119, 123, 95, 117, 122, 95, 117, 122, 94, 116, 121, 90, 112, 116, + 89, 111, 116, 89, 111, 116, 90, 111, 115, 95, 115, 120, 92, 112, 118, 91, 111, 117, 88, 109, 115, 88, 110, 115, 86, 108, 113, 86, 108, 113, 83, 105, 110, 82, 104, 110, 78, 102, 107, 77, 102, 106, 81, 103, 108, 82, 104, 109, 80, 102, 108, 80, 102, 108, 79, 101, 107, 77, 99, 104, 75, 96, 101, + 75, 97, 102, 72, 93, 100, 66, 88, 95, 62, 83, 90, 57, 79, 87, 57, 79, 85, 54, 76, 82, 55, 75, 82, 58, 77, 85, 57, 76, 84, 59, 78, 85, 60, 79, 86, 62, 81, 88, 66, 85, 92, 67, 86, 93, 64, 83, 90, 63, 82, 89, 65, 83, 90, 68, 87, 94, 70, 89, 96, 75, 93, 100, + 72, 90, 97, 66, 85, 91, 60, 78, 84, 60, 77, 82, 60, 77, 79, 58, 75, 80, 55, 71, 77, 52, 68, 75, 53, 67, 75, 50, 65, 72, 45, 60, 67, 28, 44, 50, 24, 40, 46, 23, 38, 44, 23, 38, 45, 24, 39, 45, 31, 44, 51, 30, 47, 53, 30, 47, 54, 28, 46, 53, 30, 47, 54, + 33, 49, 56, 33, 49, 56, 38, 54, 61, 41, 57, 64, 43, 59, 65, 46, 61, 67, 50, 65, 71, 52, 67, 73, 46, 62, 68, 49, 63, 69, 72, 85, 91, 81, 94, 97, 64, 78, 85, 66, 83, 88, 70, 87, 90, 70, 87, 90, 72, 88, 94, 71, 87, 92, 98, 113, 119, 82, 96, 103, 57, 72, 79, + 129, 144, 148, 63, 81, 88, 62, 80, 87, 59, 77, 84, 56, 74, 81, 55, 74, 80, 55, 74, 79, 59, 77, 82, 60, 79, 84, 57, 76, 81, 57, 76, 81, 56, 75, 80, 55, 74, 79, 57, 74, 80, 52, 69, 75, 51, 68, 74, 52, 69, 73, 55, 72, 75, 56, 73, 76, 57, 74, 77, 57, 74, 77, + 55, 73, 76, 55, 72, 77, 57, 74, 77, 57, 73, 78, 63, 78, 81, 58, 71, 78, 148, 162, 163, 55, 67, 78, 61, 72, 82, 61, 77, 85, 63, 79, 86, 65, 81, 87, 63, 79, 85, 61, 78, 83, 62, 78, 84, 65, 83, 85, 67, 84, 87, 67, 84, 87, 67, 84, 87, 67, 84, 86, 65, 85, 86, + 64, 84, 86, 69, 86, 89, 68, 87, 90, 71, 89, 92, 71, 89, 92, 72, 91, 94, 73, 92, 94, 74, 93, 95, 77, 97, 98, 78, 97, 98, 81, 99, 100, 82, 100, 101, 86, 104, 104, 79, 99, 100, 76, 95, 98, 73, 93, 95, 80, 100, 103, 85, 104, 107, 87, 106, 108, 86, 106, 109, 114, 129, 129, + 187, 202, 198, 100, 115, 115, 108, 123, 122, 104, 121, 120, 93, 113, 114, 91, 112, 113, 93, 115, 116, 101, 121, 123, 105, 125, 126, 103, 124, 126, 97, 118, 121, 95, 117, 120, 92, 114, 119, 98, 120, 122, 106, 127, 129, 105, 126, 128, 104, 127, 129, 100, 125, 127, 103, 127, 129, 111, 133, 135, 113, 135, 137, + 113, 136, 138, 117, 139, 142, 121, 142, 143, 123, 145, 145, 139, 158, 159, 143, 162, 163, 141, 159, 161, 139, 159, 160, 134, 154, 155, 133, 154, 155, 137, 157, 158, 139, 159, 160, 140, 160, 161, 141, 162, 163, 145, 164, 165, 150, 168, 168, 155, 172, 171, 158, 174, 173, 162, 177, 176, 162, 177, 175, 165, 179, 177, + 189, 205, 208, 193, 208, 211, 192, 207, 210, 194, 209, 212, 193, 208, 211, 194, 209, 212, 197, 210, 212, 197, 209, 213, 195, 207, 211, 193, 205, 209, 190, 205, 207, 189, 204, 207, 189, 204, 207, 189, 204, 207, 189, 204, 207, 190, 205, 208, 190, 205, 208, 189, 204, 207, 187, 202, 205, 184, 200, 203, 180, 197, 201, + 180, 196, 202, 177, 193, 199, 175, 193, 198, 173, 191, 197, 168, 186, 193, 163, 184, 190, 161, 182, 189, 161, 182, 190, 163, 182, 190, 164, 183, 191, 163, 181, 190, 155, 177, 184, 144, 168, 178, 139, 165, 175, 137, 163, 174, 132, 159, 171, 131, 159, 170, 130, 158, 169, 130, 157, 169, 131, 158, 170, 133, 160, 170, + 140, 164, 174, 140, 163, 174, 141, 165, 175, 140, 163, 174, 135, 161, 172, 132, 158, 170, 128, 154, 169, 122, 149, 164, 121, 146, 162, 115, 141, 157, 113, 139, 155, 118, 142, 158, 121, 144, 159, 118, 142, 158, 109, 134, 150, 100, 127, 142, 95, 121, 137, 94, 120, 136, 94, 120, 136, 94, 121, 135, 95, 121, 135, + 94, 120, 134, 95, 121, 134, 94, 120, 133, 94, 120, 132, 96, 120, 132, 94, 118, 130, 92, 116, 128, 92, 116, 128, 94, 118, 130, 94, 118, 130, 94, 118, 130, 96, 120, 132, 94, 117, 129, 93, 117, 130, 93, 117, 127, 96, 118, 128, 97, 120, 129, 94, 117, 125, 95, 118, 126, 98, 121, 129, 111, 132, 138, + 108, 130, 136, 111, 132, 138, 111, 132, 138, 100, 122, 128, 99, 121, 127, 95, 117, 124, 94, 117, 122, 90, 115, 119, 91, 116, 120, 94, 118, 122, 94, 118, 123, 96, 118, 123, 100, 122, 128, 96, 118, 124, 98, 120, 125, 97, 119, 124, 96, 118, 123, 96, 118, 123, 94, 116, 121, 91, 113, 118, 90, 112, 117, + 89, 111, 116, 89, 111, 116, 92, 112, 117, 93, 113, 118, 93, 113, 118, 91, 110, 116, 88, 109, 114, 86, 109, 111, 86, 108, 112, 84, 106, 111, 83, 105, 110, 82, 104, 109, 78, 101, 106, 79, 102, 107, 82, 104, 109, 81, 103, 109, 82, 104, 110, 81, 103, 109, 79, 101, 107, 77, 99, 104, 76, 98, 103, + 75, 96, 102, 70, 91, 98, 64, 86, 92, 62, 83, 90, 58, 80, 87, 54, 77, 83, 54, 76, 82, 55, 76, 83, 57, 76, 83, 57, 76, 84, 60, 79, 85, 60, 79, 86, 61, 80, 87, 64, 83, 90, 65, 84, 91, 65, 84, 91, 62, 81, 88, 67, 85, 92, 71, 89, 96, 73, 91, 98, 75, 93, 100, + 73, 91, 98, 69, 87, 93, 63, 79, 85, 61, 78, 82, 61, 78, 81, 60, 76, 80, 56, 71, 78, 52, 67, 75, 53, 67, 75, 55, 69, 77, 39, 54, 61, 28, 44, 50, 25, 41, 47, 22, 37, 43, 24, 39, 45, 22, 37, 43, 26, 42, 48, 31, 48, 55, 28, 47, 54, 29, 46, 53, 30, 46, 53, + 31, 47, 54, 34, 50, 57, 36, 52, 59, 34, 50, 56, 38, 55, 59, 43, 59, 63, 46, 63, 67, 48, 64, 70, 47, 63, 69, 53, 67, 73, 97, 110, 116, 58, 72, 79, 65, 79, 85, 69, 84, 88, 70, 87, 90, 70, 87, 90, 73, 90, 96, 69, 86, 92, 81, 97, 107, 106, 117, 122, 59, 74, 82, + 127, 142, 148, 64, 82, 89, 63, 81, 87, 60, 78, 85, 60, 78, 84, 59, 78, 83, 58, 77, 82, 60, 78, 84, 62, 80, 86, 60, 79, 85, 57, 75, 81, 54, 73, 78, 53, 73, 78, 55, 73, 78, 53, 71, 76, 52, 69, 74, 55, 72, 75, 56, 74, 77, 60, 78, 81, 60, 77, 80, 57, 75, 78, + 59, 77, 80, 58, 76, 80, 60, 77, 80, 60, 76, 81, 62, 78, 82, 59, 72, 80, 152, 167, 169, 59, 70, 80, 61, 74, 82, 64, 78, 85, 64, 80, 86, 64, 80, 86, 62, 78, 84, 61, 77, 83, 62, 78, 84, 64, 81, 85, 69, 86, 89, 67, 84, 87, 66, 83, 86, 67, 84, 87, 68, 86, 89, + 67, 86, 89, 72, 90, 93, 72, 91, 94, 73, 92, 95, 75, 93, 96, 73, 93, 95, 75, 94, 97, 74, 93, 96, 76, 96, 97, 78, 97, 98, 82, 100, 101, 83, 101, 102, 85, 103, 104, 84, 102, 103, 79, 98, 101, 75, 95, 96, 78, 97, 100, 85, 104, 107, 86, 105, 108, 88, 107, 111, 85, 101, 105, + 167, 181, 179, 134, 147, 147, 102, 118, 117, 104, 120, 119, 94, 113, 114, 91, 112, 113, 90, 112, 112, 93, 115, 116, 102, 123, 124, 107, 128, 129, 101, 122, 125, 94, 117, 121, 95, 117, 122, 96, 118, 123, 101, 122, 126, 107, 128, 130, 102, 126, 128, 100, 124, 126, 101, 125, 126, 108, 131, 133, 111, 134, 136, + 112, 135, 137, 112, 135, 137, 114, 137, 139, 116, 140, 140, 128, 149, 150, 145, 163, 164, 140, 158, 159, 140, 158, 159, 136, 156, 157, 136, 155, 156, 137, 158, 159, 136, 157, 158, 138, 159, 160, 141, 161, 162, 142, 162, 163, 147, 166, 165, 150, 167, 167, 155, 171, 170, 157, 173, 172, 160, 176, 175, 162, 178, 175, + 191, 207, 210, 192, 207, 210, 192, 207, 210, 193, 208, 211, 194, 209, 212, 195, 209, 213, 197, 209, 212, 195, 207, 211, 194, 206, 210, 191, 205, 209, 190, 204, 209, 189, 203, 209, 189, 204, 207, 188, 203, 206, 187, 203, 206, 188, 204, 207, 189, 204, 207, 189, 204, 207, 187, 202, 205, 186, 202, 205, 182, 199, 202, + 180, 196, 202, 177, 193, 199, 176, 192, 198, 172, 191, 197, 168, 187, 194, 164, 184, 192, 161, 182, 190, 161, 181, 188, 164, 183, 191, 163, 182, 190, 156, 177, 185, 148, 170, 180, 138, 165, 175, 136, 162, 173, 133, 160, 171, 132, 160, 171, 132, 159, 170, 132, 159, 171, 133, 160, 172, 135, 161, 173, 138, 163, 173, + 139, 164, 174, 141, 165, 176, 144, 167, 177, 140, 165, 175, 136, 161, 172, 132, 158, 171, 133, 158, 172, 124, 150, 165, 124, 149, 165, 117, 143, 159, 116, 141, 157, 119, 144, 158, 124, 147, 161, 115, 139, 154, 106, 131, 146, 97, 123, 139, 97, 123, 139, 95, 121, 137, 96, 122, 138, 96, 121, 137, 93, 119, 133, + 94, 120, 134, 96, 122, 136, 94, 120, 134, 95, 120, 133, 94, 119, 131, 92, 116, 128, 92, 116, 128, 93, 117, 129, 94, 118, 130, 94, 118, 130, 95, 119, 131, 94, 118, 130, 95, 119, 131, 93, 118, 128, 90, 115, 123, 96, 119, 127, 94, 117, 125, 96, 120, 127, 96, 120, 127, 99, 123, 129, 112, 134, 140, + 108, 129, 135, 114, 135, 140, 111, 132, 138, 96, 118, 124, 95, 117, 123, 95, 117, 122, 93, 116, 121, 92, 115, 120, 94, 118, 122, 97, 118, 124, 99, 121, 126, 98, 120, 125, 97, 119, 125, 97, 119, 125, 96, 118, 123, 97, 119, 124, 96, 118, 123, 96, 118, 123, 95, 116, 121, 92, 114, 119, 89, 111, 116, + 89, 111, 116, 88, 110, 115, 92, 114, 119, 93, 112, 119, 92, 112, 118, 89, 111, 117, 86, 108, 113, 87, 109, 114, 86, 109, 114, 86, 108, 113, 84, 106, 111, 81, 103, 108, 79, 99, 104, 80, 100, 105, 82, 102, 108, 82, 103, 109, 81, 103, 109, 82, 104, 110, 79, 101, 107, 79, 101, 106, 75, 97, 103, + 74, 97, 103, 69, 90, 97, 65, 87, 93, 62, 84, 90, 57, 80, 86, 57, 78, 84, 54, 76, 82, 54, 76, 82, 60, 78, 85, 57, 78, 85, 59, 79, 87, 61, 80, 87, 60, 79, 86, 65, 84, 91, 66, 85, 92, 67, 86, 93, 65, 84, 91, 70, 89, 94, 69, 89, 94, 75, 93, 100, 73, 91, 98, + 71, 89, 96, 68, 86, 92, 65, 81, 87, 61, 78, 84, 61, 77, 81, 62, 76, 81, 57, 73, 80, 54, 69, 77, 54, 70, 77, 53, 68, 75, 37, 53, 60, 28, 44, 50, 25, 41, 47, 22, 37, 43, 21, 37, 43, 23, 38, 45, 27, 43, 50, 29, 45, 53, 30, 47, 54, 29, 46, 54, 28, 45, 52, + 32, 48, 55, 34, 49, 57, 35, 51, 57, 33, 50, 56, 38, 55, 61, 46, 62, 65, 48, 64, 68, 46, 62, 68, 48, 64, 71, 53, 67, 74, 110, 119, 123, 54, 68, 74, 66, 80, 86, 69, 84, 88, 70, 86, 92, 71, 87, 93, 72, 90, 95, 75, 91, 98, 66, 81, 88, 124, 137, 138, 64, 77, 85, + 125, 143, 149, 65, 84, 90, 63, 82, 88, 63, 82, 87, 61, 80, 86, 60, 80, 85, 62, 81, 86, 63, 80, 86, 65, 81, 87, 62, 80, 86, 59, 78, 83, 55, 74, 79, 56, 73, 78, 57, 75, 80, 57, 73, 79, 53, 71, 76, 56, 74, 76, 61, 79, 82, 64, 82, 85, 63, 80, 83, 58, 77, 80, + 58, 76, 79, 59, 78, 82, 63, 79, 85, 63, 79, 85, 66, 80, 86, 61, 75, 82, 154, 168, 168, 59, 71, 80, 63, 76, 84, 65, 78, 85, 65, 81, 87, 65, 81, 87, 60, 79, 84, 61, 78, 84, 64, 80, 86, 64, 82, 88, 62, 80, 85, 64, 82, 85, 70, 87, 90, 71, 88, 91, 67, 86, 89, + 71, 90, 93, 71, 90, 93, 73, 92, 95, 75, 94, 97, 74, 93, 96, 75, 94, 97, 76, 95, 98, 76, 95, 98, 76, 96, 97, 78, 97, 98, 82, 100, 101, 84, 102, 103, 85, 103, 104, 84, 102, 105, 81, 100, 103, 77, 96, 98, 81, 101, 102, 83, 102, 105, 88, 107, 110, 90, 109, 112, 90, 106, 109, + 135, 151, 152, 164, 176, 177, 94, 110, 109, 101, 118, 118, 97, 116, 117, 89, 111, 111, 88, 111, 111, 91, 115, 115, 99, 122, 122, 107, 129, 130, 105, 127, 129, 99, 122, 126, 95, 117, 121, 97, 120, 123, 100, 123, 125, 102, 125, 127, 105, 128, 130, 100, 125, 127, 100, 124, 126, 105, 128, 130, 110, 133, 135, + 109, 132, 134, 113, 135, 140, 114, 137, 139, 118, 141, 143, 123, 145, 145, 140, 159, 160, 140, 158, 159, 138, 156, 157, 136, 155, 156, 137, 157, 158, 136, 157, 158, 136, 157, 158, 137, 158, 159, 138, 158, 159, 141, 162, 161, 142, 163, 162, 148, 167, 166, 152, 169, 168, 154, 170, 169, 157, 173, 171, 160, 175, 173, + 192, 207, 210, 193, 208, 211, 193, 208, 211, 194, 209, 212, 195, 209, 213, 196, 208, 212, 195, 207, 210, 194, 207, 211, 192, 205, 209, 190, 204, 208, 189, 204, 209, 188, 202, 207, 187, 202, 205, 188, 203, 206, 186, 201, 205, 188, 203, 206, 189, 204, 207, 189, 204, 207, 187, 203, 207, 185, 201, 205, 183, 199, 205, + 180, 196, 202, 178, 194, 200, 177, 193, 199, 172, 190, 197, 166, 185, 192, 162, 182, 190, 159, 180, 188, 158, 179, 187, 162, 181, 189, 157, 178, 186, 150, 173, 182, 141, 167, 176, 135, 161, 173, 131, 159, 170, 133, 160, 171, 132, 160, 171, 132, 160, 171, 132, 160, 172, 135, 161, 174, 138, 163, 175, 140, 166, 175, + 142, 166, 177, 145, 169, 179, 142, 167, 177, 140, 166, 176, 138, 164, 174, 135, 160, 172, 132, 158, 172, 128, 154, 168, 122, 148, 164, 120, 146, 162, 116, 142, 158, 117, 143, 157, 124, 147, 162, 113, 137, 152, 103, 129, 143, 96, 122, 137, 95, 121, 137, 92, 119, 134, 95, 121, 137, 96, 122, 138, 97, 123, 137, + 97, 122, 136, 98, 121, 136, 95, 120, 134, 96, 119, 134, 94, 117, 132, 93, 116, 131, 93, 117, 129, 93, 117, 129, 92, 117, 128, 92, 116, 128, 93, 117, 129, 92, 117, 128, 93, 118, 128, 93, 116, 127, 91, 115, 122, 95, 119, 126, 99, 122, 128, 99, 123, 129, 96, 120, 126, 100, 124, 130, 109, 131, 137, + 106, 128, 134, 110, 132, 138, 107, 129, 135, 95, 117, 123, 96, 117, 123, 94, 116, 121, 92, 115, 121, 95, 118, 124, 98, 120, 126, 98, 120, 125, 98, 120, 125, 98, 120, 126, 96, 118, 123, 95, 117, 123, 97, 119, 124, 98, 119, 124, 93, 115, 120, 93, 115, 120, 91, 113, 118, 88, 110, 115, 88, 110, 115, + 87, 109, 114, 88, 110, 115, 89, 111, 117, 90, 112, 118, 90, 113, 118, 89, 110, 115, 86, 110, 114, 88, 111, 113, 86, 109, 114, 84, 107, 112, 83, 105, 110, 82, 104, 109, 77, 99, 104, 80, 100, 105, 81, 102, 107, 81, 103, 109, 80, 102, 108, 81, 103, 109, 81, 103, 109, 81, 101, 108, 80, 100, 106, + 75, 96, 103, 68, 90, 96, 64, 86, 92, 62, 84, 90, 60, 82, 88, 54, 76, 83, 55, 77, 83, 58, 79, 86, 59, 81, 87, 57, 79, 86, 59, 80, 88, 62, 81, 88, 60, 80, 87, 64, 83, 90, 68, 87, 94, 66, 85, 92, 66, 85, 92, 67, 87, 92, 69, 89, 94, 71, 89, 95, 72, 92, 96, + 72, 92, 96, 69, 87, 91, 61, 79, 84, 63, 79, 85, 64, 79, 86, 63, 77, 85, 58, 74, 81, 54, 68, 76, 54, 69, 76, 54, 68, 76, 36, 52, 59, 29, 45, 51, 24, 39, 45, 20, 36, 42, 23, 38, 44, 21, 38, 45, 24, 40, 48, 26, 44, 52, 29, 44, 53, 29, 46, 53, 27, 45, 52, + 30, 48, 55, 30, 48, 55, 29, 47, 54, 34, 51, 57, 39, 55, 61, 43, 60, 63, 44, 62, 65, 44, 61, 66, 50, 65, 73, 53, 68, 75, 103, 120, 127, 57, 70, 76, 65, 80, 86, 67, 83, 89, 70, 87, 92, 73, 89, 96, 75, 92, 98, 76, 92, 98, 60, 75, 80, 128, 142, 144, 71, 83, 92, + 125, 141, 146, 65, 84, 89, 66, 85, 91, 62, 81, 86, 63, 82, 87, 60, 80, 85, 58, 76, 83, 62, 80, 87, 64, 81, 87, 63, 79, 85, 59, 75, 81, 55, 73, 78, 52, 72, 75, 54, 72, 75, 59, 76, 79, 58, 75, 81, 57, 76, 81, 63, 80, 84, 67, 84, 87, 62, 79, 82, 61, 80, 83, + 60, 79, 82, 60, 80, 84, 63, 82, 86, 62, 78, 85, 67, 82, 89, 66, 78, 86, 151, 165, 164, 59, 72, 80, 64, 80, 87, 65, 81, 87, 65, 81, 87, 64, 80, 86, 63, 80, 85, 61, 80, 85, 67, 83, 89, 61, 79, 85, 61, 81, 86, 67, 84, 89, 74, 91, 94, 73, 90, 93, 70, 88, 91, + 71, 90, 93, 73, 92, 94, 73, 92, 95, 76, 95, 98, 77, 96, 99, 77, 97, 99, 79, 98, 101, 75, 94, 97, 75, 95, 96, 79, 98, 99, 84, 102, 103, 86, 104, 105, 86, 104, 105, 88, 105, 108, 83, 102, 106, 83, 103, 104, 81, 101, 102, 86, 106, 107, 83, 102, 105, 94, 112, 114, 92, 110, 113, + 102, 119, 122, 146, 162, 159, 145, 158, 157, 101, 118, 117, 98, 117, 118, 93, 113, 114, 90, 114, 114, 93, 117, 118, 96, 121, 121, 104, 128, 128, 105, 129, 129, 105, 127, 129, 101, 123, 126, 99, 122, 124, 103, 126, 128, 108, 131, 133, 103, 127, 129, 103, 128, 130, 102, 125, 127, 104, 127, 129, 108, 131, 133, + 111, 134, 136, 112, 134, 139, 113, 137, 139, 113, 137, 139, 123, 144, 145, 133, 152, 153, 140, 159, 160, 135, 155, 156, 135, 155, 156, 137, 157, 158, 137, 158, 159, 138, 158, 159, 138, 159, 159, 137, 158, 158, 138, 160, 158, 143, 164, 162, 144, 166, 164, 147, 166, 165, 152, 170, 169, 154, 171, 170, 159, 175, 174, + 194, 209, 212, 194, 208, 211, 194, 209, 212, 195, 210, 213, 195, 210, 213, 194, 209, 211, 192, 207, 210, 190, 205, 208, 190, 205, 208, 189, 203, 208, 189, 203, 209, 187, 201, 207, 187, 203, 206, 185, 202, 205, 187, 202, 205, 188, 203, 206, 188, 202, 207, 188, 202, 208, 188, 202, 208, 186, 201, 207, 182, 198, 204, + 181, 197, 203, 177, 193, 199, 175, 193, 198, 171, 189, 196, 165, 185, 191, 157, 179, 187, 159, 180, 188, 155, 177, 185, 159, 179, 187, 155, 177, 185, 143, 168, 178, 138, 165, 176, 132, 160, 172, 131, 158, 170, 135, 162, 173, 131, 159, 170, 134, 162, 173, 135, 162, 174, 139, 164, 176, 141, 165, 177, 144, 167, 179, + 144, 168, 179, 146, 169, 180, 142, 167, 178, 140, 165, 176, 138, 162, 174, 135, 160, 172, 131, 157, 172, 130, 156, 170, 124, 149, 165, 118, 144, 160, 114, 140, 156, 122, 146, 161, 118, 143, 158, 109, 134, 148, 101, 127, 142, 97, 123, 138, 95, 121, 137, 91, 118, 134, 97, 123, 139, 96, 122, 138, 96, 122, 136, + 99, 124, 138, 97, 122, 135, 98, 121, 136, 95, 118, 133, 92, 115, 130, 91, 115, 128, 90, 115, 127, 91, 115, 127, 91, 116, 127, 94, 118, 128, 93, 118, 128, 91, 116, 126, 93, 118, 128, 91, 116, 123, 95, 118, 126, 94, 118, 125, 103, 125, 131, 98, 121, 127, 98, 122, 128, 99, 122, 128, 109, 131, 137, + 102, 124, 130, 106, 128, 134, 106, 128, 133, 92, 115, 121, 91, 114, 120, 91, 115, 121, 93, 116, 122, 96, 118, 124, 99, 121, 127, 97, 119, 124, 99, 121, 126, 98, 120, 125, 98, 120, 126, 95, 117, 122, 95, 117, 122, 95, 117, 122, 94, 116, 121, 92, 115, 120, 89, 111, 116, 89, 111, 116, 87, 109, 114, + 87, 109, 114, 86, 109, 114, 91, 113, 118, 90, 112, 118, 89, 111, 117, 85, 108, 113, 86, 109, 113, 88, 111, 114, 85, 108, 113, 84, 107, 112, 83, 105, 110, 80, 103, 107, 79, 100, 105, 78, 99, 104, 80, 102, 107, 81, 103, 108, 80, 102, 108, 83, 104, 110, 81, 103, 109, 80, 102, 107, 75, 96, 103, + 75, 95, 103, 70, 91, 98, 66, 87, 94, 62, 84, 90, 60, 81, 87, 56, 79, 85, 57, 79, 85, 58, 79, 85, 60, 80, 87, 58, 80, 86, 59, 80, 87, 63, 82, 89, 61, 81, 87, 65, 84, 91, 64, 83, 90, 65, 84, 91, 66, 85, 92, 68, 88, 93, 70, 88, 94, 72, 91, 96, 72, 91, 96, + 71, 90, 93, 66, 85, 91, 62, 80, 85, 61, 78, 84, 63, 79, 86, 62, 78, 85, 60, 76, 83, 58, 74, 81, 51, 67, 75, 54, 69, 76, 36, 52, 59, 28, 44, 50, 22, 38, 44, 23, 40, 46, 21, 38, 44, 21, 39, 46, 21, 39, 46, 26, 43, 51, 27, 44, 50, 30, 46, 54, 31, 48, 56, + 30, 48, 54, 30, 48, 55, 29, 48, 55, 33, 51, 57, 39, 55, 61, 41, 58, 62, 44, 60, 66, 47, 63, 69, 49, 65, 72, 46, 61, 68, 108, 119, 125, 61, 75, 81, 65, 81, 87, 66, 82, 88, 70, 86, 92, 72, 88, 94, 76, 91, 97, 77, 93, 99, 64, 78, 84, 123, 139, 146, 74, 87, 96, + 117, 133, 135, 70, 88, 93, 67, 86, 91, 67, 86, 91, 59, 78, 85, 59, 80, 84, 61, 79, 86, 63, 80, 87, 66, 82, 89, 67, 83, 89, 60, 76, 82, 55, 72, 78, 52, 71, 75, 56, 75, 77, 56, 75, 79, 59, 75, 81, 60, 76, 82, 62, 79, 85, 65, 81, 86, 64, 81, 84, 65, 82, 85, + 61, 80, 83, 62, 81, 85, 64, 84, 88, 66, 83, 89, 69, 82, 90, 70, 83, 90, 137, 150, 155, 69, 82, 91, 64, 80, 87, 64, 80, 86, 64, 80, 86, 68, 84, 90, 63, 81, 86, 68, 85, 91, 62, 80, 86, 63, 82, 87, 65, 84, 90, 69, 88, 91, 73, 90, 94, 77, 94, 97, 75, 92, 95, + 74, 94, 96, 78, 97, 98, 78, 97, 100, 81, 100, 102, 80, 99, 102, 79, 98, 101, 79, 97, 100, 74, 94, 96, 76, 95, 97, 79, 98, 99, 82, 101, 102, 88, 106, 107, 90, 108, 111, 86, 104, 106, 85, 105, 106, 84, 104, 105, 86, 105, 106, 87, 107, 108, 90, 109, 111, 94, 113, 114, 95, 114, 117, + 93, 110, 114, 156, 172, 165, 139, 151, 153, 101, 117, 117, 102, 120, 121, 96, 118, 118, 93, 116, 118, 93, 118, 118, 98, 122, 122, 100, 124, 124, 109, 132, 132, 110, 132, 133, 104, 127, 129, 104, 127, 129, 102, 125, 128, 106, 129, 131, 108, 131, 133, 107, 130, 132, 105, 129, 130, 103, 127, 128, 109, 132, 134, + 112, 135, 138, 111, 135, 140, 115, 138, 141, 118, 141, 143, 119, 142, 143, 131, 151, 153, 146, 162, 164, 138, 156, 158, 138, 156, 158, 139, 159, 160, 138, 158, 159, 138, 159, 159, 140, 160, 160, 138, 160, 159, 140, 162, 160, 143, 164, 163, 144, 164, 163, 147, 166, 166, 153, 170, 170, 154, 171, 170, 158, 174, 173, + }; +const char* CatPics::cat1Data = (const char*)temp_cat1_1; + +static const unsigned char temp_cat2_2[] = { + 94, 58, 40, 95, 59, 43, 97, 60, 44, 96, 61, 45, 88, 58, 44, 72, 52, 44, 51, 41, 38, 30, 30, 30, 17, 29, 30, 19, 46, 53, 33, 66, 77, 46, 86, 99, 59, 103, 118, 74, 117, 131, 80, 127, 145, 80, 127, 144, 77, 120, 139, 71, 116, 132, 68, 112, 129, 64, 107, 124, 58, 101, 116, + 50, 93, 107, 50, 92, 105, 49, 91, 104, 48, 89, 102, 48, 87, 101, 47, 86, 100, 45, 85, 99, 49, 85, 99, 48, 85, 99, 48, 84, 98, 48, 83, 96, 50, 86, 99, 53, 87, 100, 60, 91, 103, 68, 96, 107, 80, 105, 116, 88, 112, 121, 102, 120, 132, 110, 128, 138, 114, 131, 142, 116, 133, 144, + 109, 126, 137, 89, 105, 120, 87, 102, 116, 83, 96, 110, 88, 101, 115, 98, 113, 125, 92, 104, 118, 105, 117, 130, 112, 128, 139, 107, 123, 136, 103, 119, 134, 100, 116, 129, 128, 145, 156, 128, 144, 155, 143, 159, 171, 119, 135, 150, 129, 144, 159, 152, 169, 182, 151, 168, 181, 154, 171, 184, 150, 168, 178, + 138, 154, 164, 144, 158, 167, 53, 56, 62, 85, 90, 95, 56, 56, 56, 48, 46, 47, 59, 57, 58, 34, 24, 21, 28, 18, 10, 62, 55, 52, 62, 54, 53, 63, 55, 54, 60, 54, 54, 69, 66, 67, 86, 85, 86, 73, 70, 71, 56, 52, 53, 86, 87, 89, 89, 89, 90, 61, 60, 60, 48, 43, 44, + 88, 91, 95, 45, 42, 44, 57, 53, 55, 54, 49, 50, 74, 64, 63, 68, 49, 42, 87, 68, 60, 105, 91, 86, 100, 77, 67, 101, 76, 66, 105, 85, 78, 101, 79, 72, 96, 77, 69, 84, 65, 58, 76, 59, 50, 83, 72, 69, 84, 80, 82, 72, 74, 74, 30, 37, 36, 40, 50, 53, 3, 24, 26, + 6, 27, 28, 4, 28, 29, 1, 30, 30, 3, 31, 29, 2, 30, 29, 2, 30, 28, 3, 31, 31, 1, 29, 29, 2, 30, 27, 1, 29, 29, 4, 32, 29, 2, 30, 29, 1, 29, 29, 2, 29, 26, 2, 24, 21, 4, 27, 23, 2, 21, 18, 6, 23, 17, 16, 27, 21, 23, 27, 20, 31, 33, 22, + 39, 37, 26, 47, 43, 30, 54, 45, 34, 59, 50, 37, 61, 50, 37, 65, 53, 41, 68, 55, 43, 75, 59, 49, 78, 61, 53, 82, 64, 56, 83, 65, 56, 85, 66, 56, 90, 70, 59, 93, 70, 60, 93, 70, 58, 92, 68, 57, 91, 65, 56, 91, 65, 56, 94, 66, 57, 97, 68, 57, 103, 70, 59, + 106, 72, 59, 107, 73, 59, 111, 74, 60, 114, 78, 63, 119, 79, 63, 124, 81, 64, 128, 85, 67, 134, 86, 65, 137, 89, 69, 138, 90, 69, 140, 90, 69, 143, 93, 73, 144, 95, 75, 149, 99, 80, 151, 103, 82, 149, 102, 82, 152, 106, 88, 152, 111, 95, 152, 109, 94, 150, 109, 97, 145, 115, 109, + 135, 115, 114, 120, 122, 128, 121, 141, 159, 135, 163, 189, 138, 172, 201, 119, 150, 180, 116, 150, 183, 111, 142, 178, 105, 136, 171, 101, 133, 168, 102, 131, 165, 119, 132, 152, 129, 109, 114, 155, 99, 78, 166, 93, 50, 169, 90, 37, 170, 89, 28, 174, 88, 22, 172, 86, 18, 172, 86, 17, 172, 84, 16, + 174, 86, 15, 172, 86, 13, 171, 86, 14, 173, 85, 12, 173, 85, 10, 172, 85, 10, 170, 83, 14, 170, 83, 17, 172, 84, 17, 170, 81, 11, 172, 84, 14, 169, 81, 11, 168, 82, 12, 168, 82, 15, 167, 80, 15, 165, 80, 12, 165, 79, 13, 166, 81, 16, 163, 77, 13, 162, 77, 14, 161, 77, 16, + 156, 75, 17, 153, 73, 15, 152, 72, 11, 151, 72, 10, 148, 71, 9, 147, 69, 12, 147, 70, 12, 149, 69, 13, 145, 68, 12, 145, 67, 12, 144, 66, 12, 143, 66, 13, 143, 67, 14, 141, 65, 12, 138, 62, 12, 136, 61, 12, 136, 61, 13, 131, 58, 11, 130, 59, 12, 127, 58, 10, 124, 56, 8, + 124, 57, 8, 121, 54, 5, 121, 54, 5, 120, 54, 6, 119, 54, 6, 120, 54, 5, 120, 56, 8, 122, 57, 8, 125, 59, 11, 124, 58, 9, 123, 57, 8, 120, 57, 8, 117, 55, 8, 115, 54, 9, 97, 60, 42, 97, 61, 44, 97, 61, 44, 91, 60, 44, 77, 55, 45, 60, 47, 40, 40, 35, 34, + 17, 26, 27, 19, 40, 45, 27, 60, 70, 44, 81, 95, 57, 100, 113, 72, 116, 132, 82, 128, 146, 84, 133, 155, 82, 130, 150, 76, 122, 139, 74, 118, 134, 69, 113, 130, 61, 105, 121, 54, 97, 111, 50, 92, 107, 52, 95, 108, 53, 95, 108, 49, 89, 103, 49, 88, 102, 48, 87, 101, 48, 86, 100, + 50, 87, 101, 49, 86, 98, 49, 86, 99, 52, 87, 100, 53, 88, 101, 58, 92, 103, 67, 96, 107, 73, 100, 111, 82, 106, 119, 88, 108, 120, 96, 113, 125, 89, 106, 118, 93, 110, 122, 91, 105, 119, 101, 116, 128, 112, 128, 138, 109, 124, 138, 103, 119, 129, 128, 143, 154, 125, 141, 154, 122, 137, 149, + 115, 131, 144, 121, 137, 149, 116, 132, 144, 103, 118, 132, 69, 84, 100, 86, 101, 116, 136, 152, 165, 136, 151, 164, 147, 163, 176, 122, 138, 152, 144, 161, 173, 153, 169, 183, 148, 165, 178, 164, 182, 193, 150, 165, 176, 151, 168, 177, 87, 96, 101, 98, 107, 116, 75, 79, 81, 70, 74, 77, 69, 73, 76, + 65, 61, 62, 50, 45, 42, 94, 94, 95, 96, 96, 96, 126, 127, 130, 100, 99, 101, 114, 118, 122, 130, 137, 142, 121, 127, 134, 117, 120, 126, 134, 140, 145, 137, 145, 153, 105, 110, 115, 72, 70, 71, 105, 108, 114, 86, 89, 93, 55, 50, 52, 83, 80, 84, 86, 80, 83, 79, 67, 66, 104, 94, 91, + 124, 118, 117, 105, 87, 79, 104, 82, 74, 108, 89, 81, 105, 84, 77, 101, 84, 78, 98, 81, 75, 93, 79, 76, 100, 94, 95, 117, 120, 123, 91, 95, 98, 53, 59, 59, 61, 68, 70, 2, 24, 25, 15, 35, 37, 2, 25, 25, 2, 27, 27, 3, 30, 28, 1, 29, 26, 2, 30, 29, 9, 36, 33, + 2, 32, 28, 2, 31, 30, 4, 33, 32, 5, 34, 31, 3, 34, 32, 2, 32, 30, 4, 31, 27, 4, 28, 26, 7, 29, 27, 1, 20, 17, 1, 18, 14, 4, 19, 17, 9, 22, 16, 18, 25, 19, 24, 27, 20, 38, 37, 26, 42, 39, 28, 48, 42, 31, 50, 43, 32, 54, 46, 36, 61, 51, 40, + 63, 53, 43, 68, 58, 47, 74, 61, 52, 76, 62, 53, 80, 64, 55, 82, 65, 56, 82, 64, 56, 84, 65, 56, 83, 63, 54, 84, 62, 53, 84, 58, 53, 87, 60, 50, 89, 62, 52, 94, 64, 54, 95, 65, 54, 100, 68, 54, 103, 70, 55, 108, 73, 59, 115, 79, 64, 123, 82, 65, 129, 86, 68, + 133, 88, 69, 141, 92, 71, 143, 96, 74, 147, 97, 75, 150, 101, 79, 153, 105, 86, 153, 107, 89, 153, 108, 87, 151, 106, 90, 153, 112, 98, 150, 116, 103, 149, 116, 105, 144, 122, 120, 129, 122, 128, 114, 118, 131, 117, 139, 161, 136, 166, 192, 139, 171, 200, 127, 161, 192, 110, 144, 175, 104, 136, 170, + 98, 129, 164, 90, 118, 154, 85, 114, 148, 112, 126, 148, 135, 121, 128, 154, 105, 88, 165, 98, 62, 170, 94, 46, 172, 92, 37, 171, 89, 28, 174, 88, 23, 173, 88, 16, 174, 86, 14, 176, 88, 13, 174, 88, 11, 174, 85, 9, 176, 86, 10, 174, 84, 9, 175, 85, 10, 173, 86, 8, 174, 83, 11, + 172, 85, 16, 172, 81, 11, 170, 83, 9, 171, 82, 10, 169, 81, 10, 171, 82, 13, 169, 83, 16, 167, 80, 14, 170, 82, 14, 167, 81, 14, 165, 79, 14, 165, 79, 14, 162, 79, 21, 162, 78, 16, 157, 77, 19, 156, 75, 15, 155, 75, 11, 153, 74, 11, 153, 73, 11, 151, 71, 10, 153, 72, 13, + 151, 71, 12, 147, 66, 11, 147, 68, 11, 147, 70, 14, 145, 67, 14, 143, 66, 11, 141, 64, 11, 139, 64, 11, 138, 62, 11, 137, 61, 12, 136, 61, 13, 130, 59, 11, 128, 59, 10, 125, 58, 9, 124, 57, 8, 123, 56, 6, 123, 55, 6, 122, 55, 6, 120, 54, 5, 120, 53, 5, 122, 55, 6, + 124, 57, 9, 124, 58, 8, 124, 57, 8, 122, 56, 7, 122, 56, 8, 120, 55, 6, 116, 55, 8, 100, 61, 43, 98, 60, 43, 96, 61, 44, 86, 59, 46, 69, 51, 44, 49, 40, 35, 27, 28, 27, 16, 35, 38, 24, 52, 60, 38, 72, 84, 53, 94, 108, 69, 112, 129, 79, 128, 144, 85, 136, 156, + 87, 136, 157, 80, 130, 151, 80, 125, 142, 74, 118, 135, 68, 112, 129, 60, 104, 120, 54, 96, 111, 54, 97, 111, 54, 97, 110, 52, 94, 107, 51, 89, 103, 49, 88, 102, 48, 88, 102, 50, 87, 101, 48, 85, 100, 49, 86, 99, 52, 90, 101, 53, 87, 100, 55, 89, 102, 59, 92, 103, 62, 91, 102, + 68, 91, 103, 63, 82, 94, 60, 76, 88, 66, 80, 93, 69, 84, 97, 93, 108, 119, 103, 120, 132, 115, 131, 144, 124, 140, 152, 121, 137, 148, 125, 141, 153, 127, 143, 154, 120, 137, 147, 134, 150, 161, 140, 156, 168, 131, 147, 159, 139, 155, 166, 150, 165, 177, 138, 154, 167, 113, 129, 139, 97, 111, 127, + 122, 138, 152, 136, 151, 165, 150, 165, 176, 132, 148, 163, 149, 166, 179, 158, 174, 186, 155, 174, 183, 165, 182, 193, 152, 169, 178, 145, 158, 167, 122, 132, 142, 109, 121, 128, 103, 111, 120, 91, 97, 103, 105, 110, 114, 111, 115, 122, 138, 146, 152, 149, 159, 165, 163, 175, 182, 150, 158, 166, 152, 163, 171, + 158, 170, 178, 155, 167, 176, 163, 175, 183, 166, 180, 188, 167, 181, 189, 151, 162, 170, 120, 128, 133, 134, 141, 148, 128, 136, 142, 99, 100, 103, 122, 126, 133, 121, 122, 127, 124, 124, 128, 142, 144, 148, 144, 144, 147, 121, 113, 112, 118, 106, 106, 111, 96, 94, 122, 111, 109, 111, 102, 102, 117, 109, 107, + 130, 126, 128, 136, 139, 143, 140, 150, 156, 118, 127, 132, 99, 106, 109, 59, 68, 72, 22, 39, 41, 18, 38, 38, 3, 24, 23, 1, 25, 24, 10, 35, 32, 2, 30, 28, 6, 34, 32, 12, 36, 35, 5, 33, 31, 2, 32, 29, 5, 35, 32, 8, 36, 33, 6, 34, 33, 12, 38, 35, 24, 45, 43, + 16, 38, 36, 1, 23, 21, 1, 22, 20, 3, 17, 15, 3, 16, 14, 3, 17, 14, 5, 16, 13, 16, 22, 17, 27, 30, 22, 38, 38, 30, 33, 32, 21, 40, 39, 27, 46, 41, 31, 49, 43, 33, 53, 46, 36, 60, 50, 42, 63, 53, 44, 67, 56, 46, 68, 56, 47, 72, 58, 49, 74, 59, 51, + 75, 61, 51, 76, 60, 52, 76, 57, 50, 75, 56, 47, 74, 56, 47, 77, 57, 46, 81, 57, 49, 86, 59, 48, 89, 62, 51, 95, 66, 51, 101, 71, 55, 111, 77, 62, 122, 83, 67, 127, 85, 67, 136, 92, 73, 144, 97, 77, 150, 102, 82, 154, 104, 84, 153, 108, 89, 156, 111, 94, 157, 114, 98, + 152, 108, 91, 150, 112, 100, 147, 120, 112, 143, 118, 114, 136, 122, 123, 124, 125, 137, 114, 127, 142, 122, 146, 168, 133, 162, 189, 138, 169, 197, 131, 164, 195, 111, 143, 173, 106, 136, 169, 92, 122, 153, 78, 108, 141, 80, 108, 142, 98, 122, 148, 127, 129, 140, 143, 117, 115, 161, 113, 97, 166, 108, 82, + 171, 105, 70, 171, 97, 51, 170, 94, 43, 173, 90, 30, 175, 90, 18, 173, 86, 10, 176, 88, 10, 175, 87, 6, 177, 88, 8, 176, 86, 8, 178, 87, 9, 175, 84, 8, 178, 85, 9, 175, 83, 10, 176, 84, 13, 176, 84, 10, 173, 83, 7, 175, 85, 12, 172, 82, 12, 169, 81, 11, 168, 81, 13, + 166, 80, 14, 168, 81, 11, 165, 80, 15, 163, 80, 15, 164, 77, 12, 164, 79, 17, 161, 75, 15, 160, 77, 17, 158, 76, 13, 155, 75, 9, 153, 72, 6, 152, 71, 7, 152, 73, 8, 152, 72, 10, 150, 69, 10, 150, 69, 12, 148, 67, 12, 145, 68, 13, 146, 65, 10, 146, 66, 9, 146, 66, 9, + 140, 63, 11, 139, 63, 11, 139, 63, 15, 135, 60, 12, 134, 61, 13, 131, 60, 12, 128, 58, 8, 126, 57, 8, 125, 58, 8, 124, 55, 5, 123, 55, 5, 122, 55, 6, 121, 55, 6, 123, 55, 6, 124, 57, 7, 126, 57, 7, 126, 58, 9, 124, 57, 8, 122, 56, 7, 122, 56, 7, 120, 56, 8, + 99, 62, 45, 97, 63, 47, 91, 61, 46, 78, 54, 46, 58, 45, 40, 38, 33, 30, 21, 31, 31, 20, 46, 51, 31, 64, 71, 46, 86, 98, 65, 108, 125, 78, 122, 139, 83, 133, 154, 88, 138, 160, 86, 136, 158, 81, 131, 151, 80, 125, 143, 75, 119, 136, 66, 110, 127, 58, 101, 116, 53, 96, 111, + 55, 97, 112, 53, 95, 108, 52, 94, 107, 52, 91, 105, 51, 90, 104, 51, 90, 103, 49, 87, 102, 50, 87, 101, 53, 91, 103, 55, 90, 103, 55, 89, 102, 59, 90, 103, 61, 89, 101, 56, 80, 92, 58, 76, 89, 73, 91, 102, 87, 103, 114, 100, 115, 126, 118, 134, 145, 124, 140, 151, 124, 140, 152, + 122, 138, 150, 129, 145, 157, 115, 132, 142, 129, 146, 156, 136, 153, 165, 125, 141, 155, 109, 125, 139, 130, 146, 158, 142, 159, 169, 134, 150, 161, 130, 146, 158, 136, 152, 164, 134, 149, 162, 149, 166, 177, 117, 133, 148, 137, 153, 167, 138, 153, 166, 138, 153, 168, 139, 154, 169, 151, 167, 180, 143, 161, 173, + 170, 187, 196, 163, 180, 189, 163, 178, 187, 141, 152, 161, 149, 162, 172, 144, 156, 164, 138, 150, 158, 142, 152, 160, 154, 164, 174, 164, 176, 184, 166, 180, 188, 171, 185, 195, 175, 189, 198, 171, 186, 194, 173, 189, 198, 166, 182, 191, 178, 192, 200, 177, 193, 200, 181, 196, 204, 181, 193, 202, 163, 175, 182, + 168, 178, 187, 161, 175, 182, 152, 163, 170, 148, 157, 166, 161, 172, 179, 165, 176, 185, 171, 182, 189, 168, 177, 184, 156, 161, 167, 156, 161, 165, 149, 150, 155, 145, 147, 152, 146, 148, 153, 153, 158, 162, 158, 166, 171, 160, 170, 177, 159, 171, 178, 156, 168, 174, 113, 123, 130, 66, 76, 79, 52, 65, 67, + 9, 31, 31, 14, 34, 36, 7, 29, 26, 10, 33, 31, 8, 34, 31, 8, 34, 32, 11, 35, 34, 13, 38, 34, 8, 35, 32, 8, 36, 35, 12, 38, 35, 9, 36, 33, 16, 38, 36, 46, 62, 61, 11, 34, 32, 3, 27, 25, 2, 25, 23, 2, 20, 17, 2, 17, 15, 3, 17, 14, 2, 15, 12, + 13, 25, 23, 11, 21, 18, 27, 31, 28, 21, 24, 18, 35, 35, 25, 37, 36, 26, 39, 37, 27, 44, 41, 32, 50, 43, 36, 52, 44, 36, 57, 49, 41, 58, 48, 40, 60, 51, 43, 62, 51, 43, 64, 53, 45, 65, 55, 45, 64, 51, 43, 67, 53, 43, 67, 52, 43, 65, 49, 40, 66, 50, 37, + 72, 54, 43, 81, 58, 47, 88, 62, 48, 98, 71, 56, 109, 78, 64, 119, 82, 66, 125, 87, 70, 137, 96, 77, 143, 98, 80, 150, 107, 89, 155, 111, 96, 155, 113, 97, 156, 114, 99, 156, 118, 104, 148, 114, 103, 149, 125, 126, 141, 129, 131, 125, 120, 126, 117, 123, 135, 116, 134, 153, 127, 153, 175, + 138, 168, 194, 140, 170, 199, 132, 162, 194, 119, 151, 183, 99, 129, 160, 96, 126, 159, 87, 116, 149, 88, 117, 151, 100, 126, 154, 121, 134, 153, 134, 125, 135, 157, 128, 128, 161, 121, 114, 165, 117, 103, 167, 113, 93, 169, 102, 69, 171, 99, 59, 173, 92, 33, 175, 90, 21, 176, 88, 11, 179, 90, 10, + 177, 86, 4, 178, 87, 6, 179, 87, 10, 179, 87, 9, 179, 87, 7, 178, 85, 8, 176, 85, 11, 174, 82, 9, 177, 86, 8, 177, 84, 9, 173, 84, 11, 172, 81, 12, 171, 81, 12, 169, 81, 11, 169, 83, 19, 166, 82, 14, 168, 80, 13, 167, 78, 10, 168, 80, 13, 166, 79, 14, 162, 79, 15, + 161, 77, 15, 158, 75, 10, 155, 74, 9, 156, 75, 11, 151, 71, 6, 151, 71, 6, 151, 70, 7, 150, 68, 11, 150, 69, 11, 149, 68, 11, 148, 68, 13, 147, 68, 8, 146, 67, 6, 149, 68, 9, 142, 66, 10, 141, 64, 13, 139, 63, 12, 137, 60, 11, 134, 60, 11, 135, 61, 13, 130, 58, 9, + 128, 57, 8, 128, 57, 9, 126, 57, 8, 123, 56, 5, 123, 54, 5, 123, 56, 6, 126, 57, 7, 126, 57, 7, 128, 57, 7, 128, 59, 10, 124, 57, 7, 125, 56, 7, 123, 57, 8, 122, 55, 7, 98, 61, 45, 98, 63, 48, 83, 56, 46, 66, 49, 41, 45, 37, 33, 29, 31, 30, 19, 39, 42, + 26, 56, 65, 41, 76, 89, 54, 99, 111, 73, 116, 133, 83, 131, 148, 86, 137, 159, 87, 137, 159, 85, 135, 157, 82, 131, 150, 77, 124, 142, 72, 115, 133, 64, 108, 125, 59, 102, 116, 56, 100, 114, 54, 98, 111, 54, 96, 109, 52, 93, 106, 53, 91, 106, 51, 91, 105, 51, 91, 104, 50, 88, 101, + 53, 90, 104, 54, 91, 103, 58, 92, 105, 56, 90, 103, 57, 87, 99, 66, 94, 105, 82, 104, 114, 90, 107, 119, 114, 132, 142, 120, 136, 148, 119, 136, 148, 105, 120, 134, 105, 121, 133, 115, 132, 144, 110, 126, 139, 99, 114, 127, 115, 130, 144, 90, 106, 120, 86, 100, 115, 95, 109, 123, 83, 95, 110, + 106, 119, 132, 120, 136, 150, 128, 144, 156, 139, 155, 168, 136, 152, 164, 135, 150, 162, 135, 151, 164, 146, 162, 174, 130, 146, 160, 139, 154, 168, 156, 173, 185, 131, 146, 162, 157, 173, 185, 154, 170, 182, 162, 179, 191, 164, 180, 189, 161, 177, 187, 166, 181, 188, 159, 175, 183, 161, 173, 182, 160, 176, 183, + 165, 179, 188, 159, 175, 185, 164, 181, 189, 170, 185, 194, 164, 181, 191, 175, 192, 200, 176, 193, 201, 172, 189, 198, 170, 187, 196, 180, 196, 206, 178, 195, 204, 190, 205, 216, 187, 202, 212, 185, 202, 209, 181, 194, 204, 184, 200, 208, 170, 186, 196, 166, 181, 189, 179, 191, 201, 181, 195, 205, 188, 203, 210, + 190, 203, 212, 183, 198, 206, 188, 200, 208, 183, 195, 203, 177, 187, 196, 172, 183, 191, 177, 189, 196, 181, 192, 201, 174, 188, 196, 181, 192, 200, 173, 186, 194, 137, 150, 157, 104, 116, 121, 79, 92, 97, 20, 38, 39, 24, 43, 44, 30, 48, 48, 14, 35, 33, 18, 39, 37, 13, 36, 34, 17, 40, 38, + 18, 41, 39, 11, 35, 33, 11, 38, 35, 14, 40, 37, 23, 43, 41, 36, 53, 52, 45, 61, 60, 23, 42, 39, 13, 33, 31, 8, 29, 26, 5, 26, 23, 7, 27, 24, 8, 24, 21, 12, 28, 26, 6, 21, 20, 10, 23, 22, 10, 22, 19, 15, 24, 22, 27, 32, 28, 22, 26, 21, 29, 30, 25, + 31, 32, 24, 44, 42, 35, 46, 41, 34, 43, 38, 31, 48, 43, 37, 53, 45, 37, 48, 42, 35, 52, 46, 39, 55, 49, 41, 55, 47, 37, 54, 45, 35, 56, 45, 36, 57, 45, 36, 60, 46, 33, 65, 50, 39, 72, 53, 43, 83, 62, 50, 96, 70, 57, 105, 77, 63, 117, 84, 67, 124, 89, 74, + 136, 96, 82, 142, 104, 87, 149, 111, 97, 156, 117, 103, 156, 118, 105, 153, 120, 108, 149, 126, 121, 145, 129, 130, 138, 130, 134, 118, 122, 132, 105, 114, 127, 112, 131, 149, 130, 155, 178, 138, 168, 193, 140, 170, 196, 130, 159, 191, 124, 153, 185, 110, 140, 172, 101, 131, 165, 90, 120, 155, 88, 117, 152, + 95, 125, 158, 114, 131, 151, 133, 125, 140, 149, 125, 130, 158, 121, 116, 163, 117, 110, 162, 109, 91, 169, 104, 74, 172, 99, 57, 174, 97, 45, 177, 93, 30, 175, 88, 17, 178, 87, 13, 178, 89, 9, 180, 89, 5, 179, 87, 4, 179, 87, 8, 179, 86, 7, 179, 88, 4, 178, 86, 6, 177, 85, 7, + 178, 86, 9, 177, 86, 7, 175, 83, 8, 174, 85, 14, 173, 84, 13, 170, 82, 14, 169, 82, 16, 170, 84, 20, 170, 81, 12, 170, 83, 12, 170, 80, 10, 169, 78, 10, 166, 79, 13, 163, 76, 13, 160, 75, 9, 160, 74, 10, 157, 75, 10, 156, 72, 7, 156, 72, 8, 152, 70, 5, 152, 71, 7, + 151, 69, 10, 150, 69, 11, 150, 68, 9, 150, 70, 11, 149, 69, 8, 149, 70, 7, 149, 68, 8, 144, 65, 8, 142, 63, 10, 140, 63, 11, 138, 61, 12, 136, 60, 12, 135, 60, 12, 133, 59, 13, 131, 57, 10, 128, 59, 10, 128, 58, 8, 126, 56, 6, 124, 55, 5, 126, 55, 6, 125, 55, 5, + 130, 58, 8, 130, 58, 10, 130, 58, 9, 128, 57, 6, 125, 56, 6, 123, 56, 7, 122, 55, 7, 99, 64, 49, 91, 60, 46, 74, 52, 43, 54, 42, 34, 36, 30, 26, 23, 35, 35, 20, 50, 57, 33, 68, 77, 47, 88, 101, 64, 110, 124, 79, 125, 142, 84, 135, 156, 86, 136, 158, 85, 135, 158, + 84, 134, 156, 81, 129, 147, 76, 120, 138, 67, 112, 128, 62, 106, 122, 59, 102, 117, 57, 101, 115, 54, 97, 110, 54, 96, 109, 54, 94, 107, 51, 90, 104, 52, 91, 105, 52, 90, 104, 54, 91, 103, 54, 91, 105, 58, 95, 108, 59, 94, 107, 67, 100, 113, 81, 108, 121, 94, 119, 133, 104, 125, 138, + 104, 121, 136, 97, 114, 126, 79, 93, 107, 75, 88, 100, 82, 95, 110, 76, 89, 103, 71, 83, 97, 63, 76, 89, 79, 92, 106, 89, 101, 114, 118, 134, 146, 120, 135, 147, 126, 141, 153, 129, 145, 158, 115, 129, 143, 131, 147, 159, 133, 149, 162, 133, 149, 161, 139, 155, 167, 140, 156, 167, 145, 161, 173, + 121, 137, 151, 138, 155, 168, 138, 153, 167, 129, 145, 158, 149, 165, 178, 143, 159, 173, 158, 174, 186, 156, 172, 184, 169, 184, 193, 166, 182, 192, 165, 180, 189, 168, 183, 191, 169, 181, 191, 167, 184, 191, 166, 181, 190, 159, 174, 183, 164, 180, 189, 167, 183, 193, 161, 177, 190, 158, 174, 186, 172, 189, 199, + 163, 180, 192, 169, 186, 198, 175, 191, 202, 179, 195, 206, 185, 202, 213, 182, 198, 206, 189, 207, 215, 183, 198, 208, 188, 205, 214, 177, 194, 203, 174, 191, 200, 191, 207, 215, 187, 204, 213, 194, 210, 218, 195, 212, 220, 188, 204, 213, 194, 209, 217, 194, 207, 216, 190, 205, 215, 193, 206, 214, 190, 201, 211, + 192, 208, 216, 180, 197, 206, 190, 206, 213, 186, 200, 208, 164, 176, 184, 158, 171, 177, 105, 116, 122, 54, 66, 69, 38, 52, 54, 28, 43, 42, 31, 49, 49, 30, 48, 47, 23, 42, 41, 25, 45, 43, 32, 51, 49, 16, 40, 38, 29, 49, 47, 36, 53, 53, 59, 74, 74, 62, 75, 76, 60, 73, 74, + 47, 58, 56, 28, 43, 40, 19, 35, 32, 13, 30, 27, 25, 37, 36, 15, 32, 30, 27, 42, 41, 11, 27, 25, 24, 38, 37, 16, 28, 27, 6, 20, 18, 12, 26, 24, 12, 23, 20, 20, 27, 24, 19, 24, 21, 41, 39, 35, 31, 30, 25, 37, 34, 29, 39, 35, 29, 37, 33, 28, 38, 35, 29, + 43, 40, 35, 47, 43, 37, 43, 37, 31, 44, 37, 28, 49, 41, 32, 51, 42, 32, 53, 43, 33, 62, 50, 39, 74, 58, 46, 82, 65, 53, 94, 73, 61, 104, 78, 65, 117, 87, 70, 121, 90, 75, 136, 105, 95, 142, 111, 104, 149, 120, 112, 150, 122, 116, 152, 128, 122, 146, 134, 134, 146, 143, 147, + 132, 134, 141, 118, 127, 138, 110, 125, 141, 110, 132, 149, 130, 156, 178, 142, 170, 196, 137, 166, 191, 134, 164, 193, 123, 153, 182, 108, 138, 173, 98, 125, 159, 94, 124, 159, 90, 119, 153, 94, 122, 155, 107, 128, 154, 130, 131, 145, 145, 129, 138, 157, 127, 126, 164, 121, 109, 171, 114, 94, 175, 109, 80, + 174, 102, 60, 177, 98, 47, 177, 95, 33, 178, 92, 22, 180, 91, 18, 182, 92, 16, 180, 88, 8, 179, 89, 2, 181, 88, 1, 180, 88, 3, 180, 89, 5, 180, 88, 3, 179, 88, 4, 178, 87, 6, 178, 87, 6, 178, 85, 5, 178, 86, 10, 173, 86, 13, 169, 82, 16, 171, 85, 17, 173, 85, 14, + 171, 83, 12, 172, 83, 10, 171, 83, 8, 171, 81, 8, 169, 78, 11, 165, 78, 12, 164, 77, 14, 162, 75, 11, 161, 74, 9, 158, 73, 7, 159, 74, 7, 157, 72, 6, 156, 74, 9, 155, 72, 10, 151, 69, 10, 151, 69, 9, 151, 72, 5, 148, 69, 6, 149, 68, 8, 150, 69, 7, 149, 68, 9, + 147, 67, 10, 146, 65, 10, 142, 63, 10, 139, 62, 11, 138, 62, 11, 136, 60, 12, 134, 60, 12, 132, 58, 10, 130, 59, 11, 128, 57, 8, 130, 58, 8, 127, 56, 5, 126, 57, 5, 129, 58, 8, 129, 55, 4, 133, 60, 11, 130, 58, 8, 131, 58, 7, 127, 57, 4, 124, 55, 6, 124, 57, 7, + 96, 62, 46, 82, 56, 43, 61, 44, 36, 44, 34, 28, 29, 32, 29, 21, 45, 50, 27, 60, 70, 43, 79, 92, 55, 98, 112, 72, 117, 133, 80, 129, 147, 83, 135, 156, 86, 136, 157, 84, 133, 154, 82, 131, 151, 80, 126, 143, 71, 115, 131, 64, 109, 124, 63, 106, 121, 60, 103, 118, 56, 100, 114, + 54, 96, 109, 52, 94, 107, 54, 93, 107, 52, 91, 105, 51, 89, 103, 52, 89, 103, 55, 92, 106, 60, 96, 109, 61, 96, 109, 64, 98, 112, 75, 104, 118, 73, 99, 114, 70, 92, 106, 70, 86, 98, 76, 90, 104, 73, 84, 98, 72, 85, 98, 78, 90, 104, 62, 74, 88, 52, 63, 76, 53, 62, 76, + 64, 75, 87, 89, 101, 113, 116, 130, 143, 123, 140, 152, 118, 132, 147, 125, 141, 154, 93, 109, 124, 108, 124, 139, 85, 102, 117, 102, 117, 133, 135, 151, 163, 142, 158, 172, 143, 159, 171, 136, 152, 165, 149, 164, 178, 117, 133, 148, 145, 159, 173, 150, 166, 178, 136, 153, 165, 148, 165, 176, 161, 175, 187, + 164, 181, 191, 166, 181, 192, 166, 183, 192, 170, 186, 194, 177, 192, 200, 174, 188, 196, 181, 193, 202, 167, 184, 194, 164, 181, 189, 167, 182, 192, 160, 176, 189, 163, 180, 190, 151, 168, 180, 155, 172, 183, 155, 173, 184, 163, 182, 191, 167, 184, 195, 183, 201, 209, 181, 198, 207, 191, 207, 216, 191, 208, 217, + 180, 198, 206, 187, 204, 213, 181, 199, 207, 178, 196, 205, 191, 209, 216, 191, 208, 217, 197, 215, 223, 197, 215, 222, 190, 207, 217, 190, 207, 215, 196, 212, 222, 190, 207, 216, 194, 211, 219, 194, 210, 218, 189, 206, 215, 182, 200, 209, 196, 214, 221, 194, 210, 219, 183, 195, 204, 177, 191, 200, 146, 159, 166, + 113, 125, 129, 93, 105, 109, 65, 78, 81, 53, 66, 68, 64, 76, 79, 59, 72, 74, 46, 59, 61, 62, 76, 77, 39, 57, 57, 81, 93, 96, 97, 110, 113, 77, 89, 92, 85, 97, 99, 82, 94, 96, 47, 57, 56, 44, 55, 55, 31, 43, 43, 24, 37, 35, 35, 48, 47, 35, 47, 48, 31, 44, 44, + 24, 38, 37, 44, 57, 57, 22, 35, 34, 7, 22, 20, 14, 28, 27, 4, 19, 15, 15, 26, 24, 15, 23, 21, 34, 37, 36, 19, 24, 22, 29, 30, 28, 24, 25, 22, 24, 26, 22, 32, 30, 26, 38, 36, 31, 41, 39, 34, 41, 37, 31, 40, 36, 29, 46, 41, 32, 46, 40, 31, 53, 45, 35, + 60, 50, 40, 75, 63, 53, 86, 70, 62, 93, 78, 68, 102, 85, 74, 111, 91, 77, 121, 102, 93, 134, 118, 114, 140, 122, 120, 145, 133, 132, 149, 142, 146, 148, 145, 152, 140, 145, 154, 129, 141, 150, 111, 123, 138, 114, 129, 147, 124, 145, 165, 132, 157, 178, 140, 167, 191, 139, 166, 193, 134, 164, 190, + 126, 154, 184, 112, 140, 173, 102, 131, 165, 104, 133, 168, 101, 129, 164, 102, 132, 168, 113, 135, 162, 132, 137, 152, 138, 119, 127, 159, 125, 123, 164, 121, 108, 168, 112, 93, 173, 109, 78, 178, 104, 63, 179, 102, 53, 179, 97, 38, 181, 95, 30, 181, 94, 20, 182, 91, 13, 182, 91, 15, 182, 90, 8, + 181, 89, 2, 182, 89, 2, 181, 88, 2, 182, 89, 2, 180, 86, 0, 181, 87, 2, 180, 87, 5, 180, 88, 9, 180, 87, 7, 171, 85, 15, 174, 86, 16, 176, 85, 8, 175, 85, 12, 174, 84, 10, 175, 82, 8, 172, 84, 9, 173, 81, 8, 170, 80, 9, 169, 82, 15, 165, 78, 12, 164, 77, 13, + 162, 75, 11, 161, 75, 8, 160, 76, 10, 159, 73, 6, 159, 73, 6, 157, 73, 7, 155, 72, 9, 152, 69, 7, 153, 69, 6, 151, 69, 3, 151, 71, 4, 152, 70, 9, 151, 71, 8, 150, 70, 8, 150, 68, 11, 144, 64, 8, 142, 63, 10, 139, 60, 12, 137, 62, 11, 137, 61, 12, 134, 59, 11, + 133, 59, 11, 130, 58, 10, 131, 59, 10, 129, 56, 4, 128, 56, 5, 130, 56, 6, 129, 56, 5, 133, 58, 8, 133, 59, 8, 133, 60, 8, 131, 57, 6, 130, 57, 5, 129, 58, 6, 126, 57, 6, 89, 58, 44, 71, 50, 39, 51, 37, 30, 35, 30, 26, 24, 40, 42, 25, 55, 63, 38, 73, 84, + 52, 90, 106, 65, 109, 125, 77, 122, 140, 82, 133, 150, 84, 134, 155, 83, 133, 152, 82, 132, 150, 81, 127, 144, 75, 119, 137, 67, 111, 128, 64, 109, 124, 63, 106, 122, 59, 102, 116, 56, 100, 113, 55, 97, 110, 53, 95, 108, 54, 93, 107, 52, 90, 104, 53, 91, 105, 55, 92, 106, 58, 95, 109, + 60, 97, 111, 60, 96, 109, 61, 93, 107, 60, 86, 99, 67, 86, 99, 76, 92, 106, 65, 80, 95, 71, 83, 97, 76, 88, 101, 64, 76, 88, 50, 60, 74, 66, 76, 88, 70, 81, 94, 92, 105, 116, 109, 123, 135, 79, 93, 107, 71, 85, 100, 96, 110, 124, 100, 116, 129, 99, 115, 128, 127, 143, 155, + 115, 131, 145, 124, 140, 153, 88, 102, 119, 93, 107, 125, 114, 129, 144, 124, 140, 152, 137, 152, 166, 121, 136, 152, 138, 154, 167, 139, 155, 168, 146, 162, 175, 144, 161, 173, 135, 151, 166, 162, 178, 189, 164, 181, 191, 159, 175, 187, 164, 181, 191, 165, 182, 191, 178, 194, 202, 183, 199, 207, 181, 195, 203, + 177, 192, 200, 174, 191, 198, 168, 183, 192, 160, 177, 188, 169, 184, 193, 152, 169, 178, 147, 164, 174, 155, 172, 183, 160, 177, 189, 166, 182, 194, 176, 193, 201, 181, 198, 207, 186, 203, 212, 185, 202, 211, 183, 201, 209, 188, 205, 214, 185, 202, 211, 180, 198, 206, 185, 200, 211, 199, 214, 223, 196, 213, 222, + 197, 215, 222, 194, 211, 220, 187, 204, 215, 191, 208, 217, 191, 208, 217, 191, 208, 217, 196, 213, 222, 188, 205, 213, 194, 211, 219, 201, 218, 226, 196, 213, 222, 196, 212, 219, 191, 207, 214, 185, 198, 206, 162, 175, 182, 122, 135, 142, 122, 136, 142, 84, 96, 101, 115, 129, 133, 97, 109, 113, 89, 101, 104, + 97, 109, 110, 69, 83, 83, 137, 150, 156, 131, 143, 147, 110, 121, 128, 119, 129, 136, 112, 122, 125, 68, 77, 79, 74, 85, 86, 69, 78, 80, 44, 55, 54, 38, 49, 49, 53, 64, 64, 47, 58, 59, 53, 65, 66, 52, 64, 66, 35, 46, 44, 18, 31, 31, 11, 25, 24, 6, 20, 18, 18, 31, 29, + 31, 39, 38, 19, 28, 28, 19, 27, 26, 17, 24, 23, 14, 18, 16, 19, 24, 22, 31, 33, 32, 28, 28, 26, 35, 34, 31, 48, 46, 44, 43, 41, 35, 44, 42, 33, 45, 39, 31, 51, 44, 36, 72, 65, 60, 82, 74, 72, 87, 77, 73, 99, 89, 86, 105, 94, 90, 119, 106, 104, 130, 122, 123, + 142, 135, 138, 138, 136, 139, 145, 150, 157, 146, 157, 167, 135, 150, 163, 128, 144, 158, 117, 136, 151, 110, 129, 145, 129, 150, 170, 137, 160, 182, 142, 168, 192, 143, 169, 195, 136, 163, 191, 127, 156, 185, 116, 144, 175, 110, 138, 172, 103, 131, 165, 106, 135, 170, 102, 131, 166, 113, 136, 165, 135, 141, 158, + 140, 132, 144, 157, 132, 135, 162, 123, 114, 170, 117, 100, 175, 109, 84, 179, 109, 71, 179, 104, 57, 181, 100, 48, 183, 97, 36, 182, 96, 30, 184, 94, 21, 184, 92, 13, 182, 90, 9, 183, 90, 6, 184, 91, 6, 184, 92, 7, 182, 89, 3, 183, 88, 1, 184, 90, 2, 181, 88, 2, 182, 89, 7, + 179, 89, 10, 176, 85, 13, 176, 87, 11, 178, 85, 5, 178, 85, 5, 176, 85, 10, 176, 85, 9, 176, 84, 8, 175, 84, 9, 176, 82, 9, 172, 82, 13, 169, 82, 16, 166, 79, 11, 164, 77, 11, 163, 78, 15, 163, 77, 11, 160, 73, 9, 159, 74, 7, 157, 72, 4, 157, 71, 4, 157, 72, 6, + 155, 73, 6, 156, 71, 5, 155, 71, 4, 154, 73, 6, 152, 70, 7, 150, 69, 7, 149, 69, 7, 148, 68, 9, 144, 63, 6, 143, 63, 10, 141, 62, 11, 137, 60, 11, 136, 60, 11, 136, 60, 11, 135, 60, 12, 133, 59, 11, 131, 58, 9, 131, 58, 7, 129, 56, 4, 131, 57, 6, 132, 57, 5, + 132, 58, 5, 135, 59, 9, 134, 59, 7, 135, 60, 9, 133, 59, 7, 130, 58, 5, 129, 58, 6, 82, 55, 43, 60, 43, 34, 41, 32, 26, 32, 39, 37, 23, 50, 55, 33, 66, 78, 45, 85, 98, 59, 102, 116, 73, 116, 134, 79, 127, 144, 82, 131, 148, 83, 132, 151, 83, 130, 149, 80, 127, 145, + 77, 120, 138, 69, 113, 129, 66, 111, 125, 65, 109, 123, 61, 104, 119, 59, 103, 117, 56, 98, 111, 54, 96, 109, 55, 93, 107, 53, 92, 106, 55, 91, 105, 54, 91, 105, 56, 93, 107, 60, 96, 110, 59, 93, 107, 60, 93, 108, 60, 87, 102, 64, 85, 100, 57, 75, 88, 59, 75, 89, 69, 81, 95, + 71, 83, 96, 57, 67, 81, 59, 68, 80, 75, 86, 97, 90, 102, 114, 95, 111, 123, 78, 92, 107, 92, 107, 118, 88, 101, 113, 91, 103, 116, 103, 118, 131, 116, 132, 143, 137, 152, 163, 121, 136, 147, 138, 154, 163, 142, 159, 169, 148, 165, 174, 119, 135, 148, 108, 122, 138, 117, 133, 148, 141, 157, 170, + 117, 133, 147, 136, 152, 165, 155, 169, 182, 139, 154, 168, 142, 157, 173, 148, 165, 178, 149, 165, 179, 173, 189, 198, 156, 172, 184, 162, 178, 190, 167, 183, 193, 181, 194, 203, 187, 200, 210, 181, 193, 202, 186, 201, 210, 183, 198, 205, 174, 189, 200, 163, 179, 191, 165, 181, 192, 163, 180, 189, 146, 162, 174, + 154, 171, 182, 159, 176, 188, 158, 175, 185, 174, 191, 200, 177, 194, 203, 180, 197, 207, 183, 200, 209, 188, 204, 213, 187, 204, 212, 187, 204, 213, 186, 203, 212, 180, 198, 206, 198, 215, 222, 201, 219, 226, 204, 221, 230, 192, 210, 219, 180, 196, 207, 189, 205, 217, 193, 209, 219, 193, 210, 219, 195, 212, 220, + 187, 204, 213, 202, 219, 227, 201, 218, 227, 197, 214, 223, 204, 219, 228, 204, 220, 227, 200, 216, 224, 194, 209, 217, 178, 190, 197, 156, 170, 176, 142, 155, 160, 173, 187, 192, 158, 168, 175, 155, 166, 174, 145, 157, 161, 136, 147, 153, 174, 187, 193, 161, 173, 179, 144, 156, 162, 163, 175, 182, 139, 151, 157, + 123, 134, 139, 115, 125, 129, 98, 107, 111, 79, 88, 90, 70, 78, 81, 84, 93, 97, 98, 109, 114, 75, 87, 89, 80, 90, 93, 55, 60, 59, 41, 48, 47, 22, 32, 31, 9, 21, 22, 29, 39, 39, 56, 63, 63, 28, 35, 34, 13, 24, 22, 18, 28, 26, 21, 26, 25, 29, 34, 32, 22, 28, 25, + 18, 22, 20, 46, 49, 49, 56, 61, 60, 43, 41, 37, 43, 40, 32, 49, 46, 39, 64, 62, 61, 80, 77, 76, 80, 74, 75, 95, 88, 89, 113, 110, 112, 123, 120, 120, 131, 130, 133, 141, 146, 153, 145, 152, 160, 146, 156, 167, 143, 159, 172, 141, 158, 172, 134, 151, 167, 126, 144, 160, 123, 143, 161, + 133, 154, 174, 143, 167, 187, 146, 169, 192, 149, 173, 196, 140, 166, 192, 130, 156, 186, 124, 152, 183, 120, 148, 179, 114, 141, 176, 104, 132, 166, 103, 133, 168, 111, 136, 169, 127, 135, 152, 144, 130, 139, 152, 128, 131, 162, 130, 130, 170, 131, 127, 173, 132, 119, 176, 124, 108, 172, 115, 91, 179, 108, 71, + 182, 102, 56, 186, 99, 38, 182, 95, 25, 186, 95, 21, 186, 94, 16, 187, 94, 15, 183, 91, 8, 186, 93, 9, 184, 92, 6, 184, 89, 1, 185, 89, 3, 183, 90, 1, 183, 88, 3, 179, 88, 15, 178, 87, 11, 180, 88, 6, 179, 86, 6, 179, 86, 3, 179, 86, 4, 176, 86, 6, 176, 84, 7, + 177, 85, 8, 175, 84, 9, 174, 82, 12, 173, 84, 15, 166, 79, 13, 166, 80, 14, 164, 77, 13, 165, 78, 14, 164, 78, 14, 161, 74, 10, 160, 75, 8, 157, 72, 4, 157, 72, 5, 157, 73, 6, 155, 72, 5, 156, 70, 3, 155, 72, 4, 154, 71, 4, 153, 70, 4, 149, 69, 7, 151, 69, 8, + 149, 69, 8, 146, 65, 9, 143, 64, 11, 139, 62, 10, 138, 63, 11, 138, 62, 11, 135, 59, 11, 135, 59, 11, 135, 60, 12, 131, 57, 7, 132, 58, 8, 131, 58, 8, 132, 58, 6, 134, 58, 8, 133, 58, 8, 136, 61, 9, 135, 58, 4, 136, 59, 6, 134, 60, 6, 132, 58, 4, 128, 56, 3, + 72, 48, 39, 50, 37, 31, 39, 37, 33, 28, 47, 51, 29, 62, 70, 43, 79, 92, 55, 96, 109, 66, 111, 126, 78, 122, 139, 82, 129, 146, 81, 129, 147, 82, 130, 148, 82, 128, 146, 77, 121, 137, 69, 114, 131, 69, 113, 128, 65, 110, 124, 63, 106, 121, 61, 104, 118, 57, 100, 114, 56, 98, 111, + 55, 97, 110, 54, 92, 106, 54, 92, 106, 53, 90, 104, 55, 92, 106, 57, 94, 108, 61, 96, 110, 58, 91, 106, 59, 85, 101, 67, 91, 107, 70, 90, 106, 78, 94, 108, 70, 82, 95, 71, 82, 97, 88, 102, 116, 103, 116, 129, 119, 135, 144, 125, 141, 152, 106, 122, 134, 97, 112, 125, 104, 118, 131, + 110, 125, 138, 123, 140, 152, 125, 141, 154, 128, 143, 153, 129, 145, 158, 110, 126, 139, 144, 159, 172, 147, 162, 175, 148, 165, 177, 162, 179, 189, 156, 172, 182, 152, 168, 180, 147, 162, 176, 130, 146, 159, 141, 157, 171, 119, 135, 149, 127, 142, 158, 157, 172, 184, 136, 153, 167, 142, 158, 171, 144, 160, 173, + 165, 182, 193, 177, 192, 199, 169, 184, 195, 167, 183, 195, 171, 188, 195, 188, 202, 212, 187, 203, 210, 185, 200, 207, 187, 203, 210, 174, 188, 200, 172, 189, 198, 161, 178, 190, 167, 183, 192, 161, 175, 184, 157, 174, 184, 160, 178, 187, 156, 173, 183, 177, 193, 201, 181, 198, 206, 178, 195, 204, 185, 201, 210, + 191, 205, 215, 191, 208, 215, 196, 211, 220, 187, 204, 213, 181, 198, 206, 202, 220, 228, 206, 223, 232, 208, 224, 233, 201, 217, 229, 178, 194, 206, 185, 201, 213, 187, 205, 214, 194, 211, 220, 199, 216, 224, 192, 209, 218, 210, 225, 234, 200, 217, 226, 196, 213, 221, 210, 225, 233, 208, 224, 231, 205, 221, 228, + 207, 223, 230, 202, 216, 224, 187, 200, 208, 186, 199, 206, 196, 209, 217, 193, 205, 211, 189, 201, 210, 185, 197, 203, 187, 198, 206, 190, 202, 210, 185, 198, 206, 175, 189, 196, 186, 197, 205, 172, 185, 191, 171, 184, 190, 156, 168, 175, 145, 156, 163, 127, 139, 144, 118, 129, 133, 137, 149, 153, 128, 141, 147, + 106, 116, 121, 111, 120, 127, 59, 62, 63, 66, 71, 70, 43, 46, 46, 30, 37, 36, 57, 64, 65, 70, 78, 80, 29, 35, 34, 21, 28, 27, 36, 42, 41, 42, 50, 50, 11, 18, 17, 21, 27, 25, 35, 40, 39, 55, 59, 60, 56, 61, 60, 43, 41, 38, 57, 55, 53, 65, 66, 67, 76, 80, 80, + 77, 79, 79, 87, 88, 88, 109, 113, 117, 127, 132, 138, 132, 136, 143, 142, 150, 160, 147, 160, 171, 151, 167, 179, 146, 163, 179, 141, 158, 174, 133, 151, 168, 126, 146, 163, 129, 147, 164, 140, 164, 182, 146, 170, 190, 146, 170, 190, 145, 169, 191, 140, 165, 190, 135, 160, 187, 124, 152, 183, 122, 150, 182, + 121, 149, 182, 114, 142, 177, 113, 142, 177, 117, 144, 180, 127, 147, 172, 142, 145, 158, 146, 129, 137, 166, 135, 133, 167, 128, 123, 172, 126, 118, 172, 128, 114, 174, 126, 114, 173, 126, 113, 173, 119, 99, 176, 114, 89, 180, 108, 67, 184, 100, 42, 184, 96, 24, 187, 96, 21, 184, 92, 13, 186, 93, 12, + 187, 92, 10, 183, 91, 8, 185, 90, 5, 185, 90, 3, 183, 90, 4, 178, 90, 6, 180, 89, 7, 185, 89, 5, 183, 88, 3, 182, 87, 4, 181, 87, 4, 181, 84, 2, 179, 86, 3, 178, 85, 7, 178, 86, 8, 177, 84, 8, 174, 82, 11, 171, 81, 15, 167, 79, 13, 164, 78, 12, 165, 79, 13, + 163, 77, 11, 163, 76, 12, 161, 74, 8, 161, 74, 10, 160, 74, 8, 159, 73, 6, 157, 72, 5, 156, 71, 5, 156, 71, 5, 155, 70, 4, 153, 69, 3, 150, 68, 2, 150, 70, 6, 151, 68, 7, 149, 68, 8, 147, 67, 9, 144, 63, 8, 142, 64, 12, 139, 63, 11, 139, 63, 11, 137, 61, 12, + 138, 61, 12, 135, 59, 11, 135, 59, 8, 133, 58, 7, 131, 58, 6, 132, 59, 7, 134, 60, 8, 135, 60, 8, 135, 60, 8, 137, 61, 8, 136, 60, 5, 132, 58, 4, 135, 60, 6, 133, 59, 5, 62, 42, 34, 45, 37, 32, 36, 46, 46, 28, 57, 63, 38, 73, 85, 51, 91, 105, 62, 105, 119, + 72, 117, 134, 80, 125, 143, 79, 126, 143, 80, 128, 145, 81, 125, 143, 78, 122, 139, 70, 114, 131, 68, 112, 127, 67, 111, 125, 65, 108, 123, 62, 105, 120, 60, 103, 117, 58, 100, 115, 56, 99, 112, 54, 95, 108, 55, 91, 105, 54, 91, 105, 55, 92, 105, 58, 94, 108, 55, 90, 104, 54, 88, 103, + 56, 84, 100, 58, 83, 98, 55, 73, 90, 57, 72, 89, 54, 68, 84, 57, 69, 82, 72, 84, 99, 89, 105, 117, 99, 115, 128, 94, 110, 123, 81, 96, 110, 116, 132, 144, 122, 138, 151, 124, 142, 152, 116, 132, 145, 102, 118, 132, 114, 130, 142, 125, 140, 152, 131, 146, 159, 133, 149, 161, 138, 153, 167, + 142, 158, 170, 162, 178, 189, 152, 168, 179, 161, 178, 189, 135, 151, 163, 116, 131, 148, 150, 166, 178, 147, 163, 175, 138, 154, 166, 130, 144, 161, 130, 146, 160, 156, 172, 184, 156, 170, 184, 148, 164, 177, 167, 183, 193, 169, 184, 195, 178, 193, 202, 167, 183, 194, 166, 182, 192, 179, 195, 203, 193, 208, 217, + 183, 198, 205, 190, 205, 212, 174, 190, 199, 180, 197, 206, 168, 184, 193, 163, 178, 188, 168, 183, 193, 163, 177, 186, 162, 179, 187, 155, 171, 182, 175, 192, 200, 182, 199, 206, 183, 200, 209, 188, 204, 212, 187, 203, 212, 194, 210, 218, 194, 212, 218, 193, 209, 217, 190, 207, 214, 204, 219, 228, 215, 230, 238, + 214, 229, 238, 202, 218, 228, 180, 197, 207, 184, 201, 210, 184, 201, 210, 189, 206, 216, 197, 214, 225, 192, 209, 219, 210, 226, 235, 211, 226, 235, 200, 216, 225, 212, 228, 237, 211, 226, 236, 217, 233, 240, 216, 230, 238, 210, 224, 232, 204, 220, 227, 206, 219, 227, 200, 215, 223, 201, 215, 223, 200, 214, 223, + 195, 208, 216, 194, 210, 217, 194, 209, 215, 191, 206, 214, 184, 200, 209, 194, 206, 214, 193, 206, 213, 191, 204, 212, 172, 184, 191, 187, 199, 206, 167, 180, 186, 173, 185, 193, 183, 196, 203, 167, 180, 188, 135, 145, 153, 132, 140, 149, 72, 73, 74, 107, 113, 116, 61, 63, 62, 54, 56, 57, 95, 104, 109, + 67, 73, 75, 40, 45, 44, 35, 40, 40, 65, 68, 69, 28, 35, 36, 16, 25, 24, 39, 45, 46, 48, 54, 54, 55, 61, 62, 73, 77, 79, 57, 60, 60, 71, 74, 76, 90, 94, 99, 96, 101, 105, 90, 97, 100, 111, 117, 124, 132, 143, 152, 144, 155, 166, 146, 159, 170, 147, 163, 177, 155, 172, 185, + 158, 175, 190, 138, 156, 172, 137, 154, 171, 130, 147, 165, 135, 153, 170, 145, 169, 187, 152, 177, 195, 148, 173, 193, 146, 171, 191, 146, 170, 192, 133, 159, 184, 121, 147, 178, 117, 145, 177, 115, 141, 176, 114, 141, 176, 112, 140, 175, 111, 142, 175, 124, 146, 174, 145, 151, 167, 145, 140, 148, 162, 139, 143, + 167, 133, 131, 174, 129, 117, 174, 122, 106, 178, 124, 104, 176, 120, 99, 178, 119, 97, 178, 115, 88, 180, 116, 91, 180, 116, 94, 184, 113, 83, 182, 106, 59, 185, 96, 24, 187, 94, 16, 188, 93, 13, 187, 92, 13, 186, 94, 13, 187, 90, 4, 181, 90, 13, 183, 92, 14, 186, 90, 2, 187, 90, 5, + 184, 88, 1, 184, 87, 1, 184, 88, 2, 182, 88, 3, 182, 85, 2, 182, 87, 1, 178, 85, 4, 177, 85, 8, 177, 84, 9, 172, 81, 13, 170, 81, 15, 168, 80, 13, 165, 78, 11, 164, 77, 13, 163, 76, 11, 163, 76, 12, 162, 76, 10, 160, 73, 8, 159, 73, 8, 156, 71, 5, 154, 72, 6, + 154, 71, 6, 154, 71, 7, 154, 71, 6, 154, 70, 4, 152, 70, 3, 153, 68, 5, 155, 71, 6, 150, 68, 4, 148, 66, 5, 146, 66, 8, 142, 63, 9, 140, 61, 10, 139, 62, 10, 138, 62, 9, 137, 60, 11, 135, 59, 10, 134, 58, 7, 131, 58, 8, 133, 59, 5, 133, 58, 6, 133, 58, 6, + 136, 61, 9, 138, 61, 8, 139, 61, 7, 137, 59, 3, 136, 59, 4, 135, 60, 6, 132, 56, 3, 53, 40, 33, 43, 43, 43, 31, 55, 59, 35, 69, 79, 47, 87, 100, 58, 101, 115, 68, 113, 130, 78, 122, 139, 80, 126, 143, 80, 125, 142, 79, 124, 142, 76, 119, 137, 72, 115, 133, 67, 112, 127, + 67, 111, 125, 65, 108, 123, 64, 107, 122, 60, 104, 117, 60, 103, 116, 58, 102, 115, 59, 98, 112, 54, 93, 107, 54, 93, 106, 55, 93, 106, 55, 92, 105, 56, 91, 106, 54, 88, 102, 52, 80, 95, 55, 81, 97, 55, 76, 92, 50, 66, 83, 40, 55, 71, 41, 53, 67, 60, 72, 85, 62, 73, 88, + 72, 85, 100, 63, 75, 87, 92, 104, 115, 104, 119, 131, 107, 124, 136, 100, 117, 129, 105, 121, 133, 122, 138, 150, 123, 139, 150, 135, 152, 162, 134, 150, 162, 133, 150, 162, 102, 118, 131, 115, 132, 145, 119, 136, 149, 125, 141, 154, 144, 160, 173, 157, 173, 185, 157, 173, 184, 151, 167, 179, 130, 146, 161, + 137, 153, 166, 160, 177, 188, 110, 125, 142, 141, 155, 172, 146, 162, 176, 161, 177, 189, 146, 162, 174, 159, 175, 187, 155, 171, 183, 173, 191, 200, 172, 189, 199, 171, 187, 196, 179, 195, 204, 182, 198, 206, 187, 203, 210, 189, 204, 211, 179, 195, 203, 181, 197, 204, 176, 191, 201, 161, 178, 187, 177, 193, 202, + 172, 187, 196, 175, 191, 199, 160, 177, 186, 173, 189, 198, 188, 204, 211, 180, 198, 206, 187, 203, 212, 190, 206, 214, 192, 207, 216, 198, 215, 223, 198, 215, 223, 198, 215, 222, 203, 219, 226, 213, 228, 236, 219, 233, 242, 211, 226, 234, 186, 203, 212, 195, 210, 219, 180, 197, 207, 199, 216, 225, 203, 220, 229, + 196, 213, 222, 206, 224, 232, 213, 230, 238, 208, 224, 231, 215, 231, 239, 218, 233, 241, 216, 232, 240, 221, 237, 244, 215, 228, 238, 213, 227, 237, 201, 216, 224, 206, 222, 229, 199, 214, 222, 196, 212, 218, 201, 215, 225, 192, 207, 215, 194, 210, 217, 196, 212, 219, 193, 208, 216, 201, 216, 223, 200, 214, 221, + 204, 217, 225, 200, 212, 221, 192, 205, 213, 187, 200, 208, 195, 208, 216, 190, 203, 211, 191, 204, 212, 165, 176, 184, 154, 166, 173, 127, 135, 142, 129, 137, 145, 93, 97, 98, 103, 110, 113, 133, 143, 150, 99, 106, 109, 57, 61, 62, 89, 94, 98, 61, 64, 66, 39, 44, 45, 32, 39, 40, 66, 74, 77, + 54, 62, 62, 83, 88, 91, 92, 97, 101, 77, 82, 84, 99, 107, 112, 115, 125, 132, 123, 133, 140, 119, 128, 136, 139, 151, 161, 153, 170, 183, 157, 175, 186, 156, 172, 187, 149, 165, 181, 156, 172, 189, 154, 170, 186, 138, 158, 173, 141, 158, 175, 141, 158, 175, 154, 173, 191, 153, 177, 195, 155, 179, 199, + 147, 171, 192, 145, 169, 191, 143, 167, 191, 130, 154, 182, 123, 148, 180, 121, 148, 180, 125, 153, 187, 128, 155, 187, 122, 150, 185, 128, 153, 183, 140, 152, 170, 154, 149, 159, 157, 139, 144, 166, 139, 142, 170, 131, 126, 177, 126, 107, 178, 123, 100, 183, 119, 93, 183, 117, 86, 185, 115, 82, 185, 110, 71, + 186, 109, 68, 186, 107, 59, 188, 107, 60, 185, 108, 56, 187, 103, 42, 188, 96, 22, 188, 93, 17, 191, 94, 17, 186, 93, 14, 180, 90, 12, 183, 90, 9, 188, 90, 3, 187, 89, 4, 187, 89, 4, 186, 89, 3, 186, 89, 2, 184, 86, 2, 183, 88, 1, 183, 88, 1, 184, 87, 1, 181, 85, 4, + 177, 85, 7, 175, 82, 8, 172, 82, 16, 171, 81, 16, 168, 80, 14, 166, 79, 13, 165, 78, 14, 162, 75, 10, 162, 75, 9, 160, 74, 8, 157, 71, 5, 156, 71, 6, 156, 70, 5, 154, 70, 5, 153, 71, 6, 154, 69, 5, 155, 71, 7, 154, 70, 5, 152, 69, 3, 156, 70, 3, 156, 71, 5, + 151, 68, 2, 148, 67, 3, 146, 66, 7, 145, 64, 9, 142, 62, 11, 138, 61, 10, 139, 63, 10, 138, 62, 11, 136, 59, 10, 136, 61, 10, 136, 60, 11, 133, 57, 4, 134, 58, 6, 135, 59, 6, 136, 59, 7, 138, 60, 5, 138, 60, 4, 140, 61, 5, 137, 60, 4, 134, 59, 3, 133, 59, 2, + 46, 43, 39, 38, 53, 56, 34, 64, 73, 44, 80, 94, 54, 97, 110, 66, 110, 126, 75, 119, 136, 79, 123, 140, 79, 123, 140, 79, 123, 139, 74, 119, 135, 70, 114, 131, 67, 111, 128, 67, 111, 127, 66, 110, 124, 64, 108, 122, 64, 108, 121, 61, 104, 117, 61, 102, 116, 59, 100, 114, 57, 95, 109, + 55, 94, 108, 56, 94, 107, 58, 94, 107, 56, 91, 105, 52, 86, 100, 51, 80, 95, 55, 80, 96, 51, 73, 89, 42, 58, 74, 47, 61, 77, 51, 66, 81, 59, 73, 86, 65, 77, 91, 76, 88, 101, 76, 92, 102, 95, 111, 120, 97, 113, 125, 81, 98, 111, 87, 103, 114, 106, 122, 134, 126, 144, 154, + 129, 148, 159, 120, 138, 149, 111, 127, 139, 114, 132, 143, 115, 133, 143, 120, 136, 147, 105, 123, 135, 108, 126, 137, 117, 133, 145, 114, 130, 144, 109, 125, 140, 145, 162, 172, 145, 161, 174, 141, 157, 170, 139, 155, 169, 139, 156, 169, 149, 165, 179, 125, 140, 156, 137, 154, 167, 145, 160, 175, 158, 174, 185, + 159, 175, 187, 161, 177, 190, 172, 187, 198, 172, 189, 199, 177, 193, 200, 178, 194, 204, 186, 201, 210, 184, 200, 207, 187, 203, 210, 186, 200, 208, 188, 204, 211, 190, 204, 213, 171, 186, 197, 169, 186, 195, 177, 193, 201, 184, 200, 207, 182, 197, 206, 176, 191, 200, 180, 196, 205, 177, 193, 203, 184, 200, 210, + 194, 208, 216, 193, 209, 216, 196, 211, 219, 196, 212, 220, 198, 214, 221, 205, 219, 227, 216, 231, 238, 213, 226, 234, 218, 231, 242, 200, 217, 224, 202, 218, 226, 191, 209, 216, 208, 225, 233, 202, 219, 228, 203, 219, 228, 211, 227, 236, 209, 225, 234, 221, 237, 245, 221, 236, 246, 222, 238, 245, 218, 231, 240, + 223, 238, 246, 217, 230, 238, 214, 229, 238, 203, 219, 226, 205, 220, 228, 195, 210, 219, 195, 210, 218, 197, 212, 221, 188, 203, 211, 192, 209, 215, 191, 208, 215, 211, 224, 232, 202, 218, 225, 205, 222, 229, 212, 226, 234, 204, 216, 225, 197, 210, 219, 199, 213, 221, 196, 209, 218, 200, 213, 222, 197, 209, 217, + 196, 211, 218, 187, 200, 207, 175, 187, 193, 165, 177, 184, 146, 157, 161, 174, 186, 191, 165, 178, 184, 136, 147, 153, 122, 129, 136, 125, 135, 141, 84, 89, 92, 70, 75, 76, 63, 69, 71, 81, 87, 90, 80, 87, 90, 107, 117, 120, 110, 117, 123, 105, 114, 121, 130, 139, 148, 142, 153, 162, 146, 160, 169, + 147, 161, 171, 158, 174, 187, 163, 179, 193, 160, 177, 192, 158, 174, 190, 151, 169, 185, 151, 167, 184, 147, 165, 181, 144, 163, 179, 154, 173, 190, 162, 180, 198, 161, 182, 200, 158, 181, 198, 157, 181, 201, 155, 179, 198, 152, 175, 196, 148, 172, 194, 142, 166, 193, 135, 161, 191, 135, 160, 193, 134, 162, 195, + 122, 150, 182, 122, 149, 181, 141, 152, 172, 156, 156, 169, 150, 139, 149, 168, 148, 154, 173, 151, 152, 171, 143, 142, 176, 140, 133, 178, 134, 120, 181, 121, 102, 182, 115, 83, 186, 112, 73, 188, 106, 59, 187, 106, 52, 190, 106, 47, 188, 104, 41, 190, 102, 36, 190, 101, 35, 192, 98, 28, 190, 94, 20, + 186, 93, 21, 181, 92, 23, 189, 94, 14, 189, 94, 11, 189, 92, 6, 188, 91, 6, 188, 90, 3, 186, 89, 2, 188, 91, 6, 185, 89, 2, 185, 90, 2, 183, 88, 1, 183, 88, 1, 178, 84, 3, 177, 84, 7, 173, 81, 8, 170, 80, 12, 168, 79, 14, 165, 78, 12, 164, 77, 11, 162, 75, 10, + 159, 72, 6, 158, 73, 5, 159, 73, 10, 156, 70, 7, 156, 71, 9, 156, 71, 9, 156, 72, 8, 156, 71, 6, 156, 71, 3, 154, 69, 3, 153, 68, 3, 154, 70, 4, 156, 71, 3, 157, 72, 4, 153, 68, 2, 150, 68, 4, 148, 67, 9, 145, 64, 9, 143, 63, 9, 139, 61, 8, 139, 61, 10, + 138, 61, 8, 136, 61, 9, 137, 60, 11, 134, 58, 8, 136, 60, 8, 135, 59, 7, 135, 60, 8, 138, 59, 5, 141, 62, 6, 140, 60, 5, 139, 60, 4, 139, 60, 5, 139, 60, 6, 137, 59, 4, 42, 48, 47, 36, 60, 65, 39, 75, 85, 50, 90, 103, 60, 105, 118, 72, 116, 133, 77, 121, 138, + 76, 120, 137, 77, 121, 139, 74, 118, 133, 68, 113, 127, 65, 109, 124, 66, 111, 126, 67, 109, 125, 64, 109, 123, 63, 106, 121, 64, 106, 119, 61, 104, 117, 61, 100, 114, 57, 96, 110, 54, 93, 105, 55, 92, 105, 53, 91, 103, 54, 90, 103, 52, 86, 99, 49, 80, 95, 50, 77, 92, 48, 74, 88, + 50, 70, 85, 53, 68, 85, 49, 64, 78, 63, 79, 93, 70, 85, 97, 83, 100, 111, 93, 110, 121, 86, 104, 115, 78, 96, 106, 86, 104, 114, 92, 109, 120, 97, 114, 124, 94, 113, 124, 96, 114, 125, 93, 111, 122, 96, 114, 124, 101, 118, 130, 95, 113, 124, 78, 95, 107, 97, 115, 126, 111, 128, 140, + 94, 112, 123, 106, 125, 135, 110, 128, 140, 111, 128, 140, 112, 129, 142, 127, 143, 157, 155, 171, 184, 124, 141, 154, 128, 145, 158, 120, 137, 150, 140, 156, 169, 120, 136, 151, 138, 154, 169, 140, 156, 170, 169, 185, 196, 163, 178, 190, 155, 169, 183, 174, 189, 200, 180, 196, 203, 178, 193, 202, 184, 199, 208, + 181, 196, 205, 190, 204, 211, 196, 209, 217, 191, 207, 216, 197, 211, 218, 181, 196, 204, 172, 189, 199, 190, 207, 214, 189, 206, 212, 187, 202, 210, 177, 192, 201, 182, 200, 207, 186, 202, 211, 177, 193, 203, 201, 214, 222, 192, 208, 215, 194, 210, 217, 195, 210, 217, 206, 220, 228, 203, 216, 224, 218, 231, 239, + 215, 230, 238, 218, 233, 241, 214, 227, 236, 208, 225, 232, 197, 215, 223, 207, 223, 232, 197, 214, 223, 201, 218, 226, 219, 231, 240, 218, 232, 241, 222, 236, 247, 223, 236, 245, 227, 239, 249, 225, 237, 247, 221, 236, 245, 216, 230, 240, 206, 222, 231, 201, 218, 226, 200, 216, 224, 190, 206, 213, 191, 206, 215, + 189, 204, 213, 194, 209, 218, 200, 216, 223, 199, 217, 224, 209, 224, 232, 209, 225, 232, 208, 224, 232, 213, 228, 236, 208, 221, 229, 206, 223, 230, 203, 219, 228, 200, 214, 223, 206, 222, 229, 201, 216, 223, 200, 216, 223, 197, 211, 219, 192, 203, 212, 195, 209, 217, 195, 210, 217, 196, 209, 216, 186, 198, 206, + 177, 189, 196, 176, 187, 195, 164, 176, 183, 139, 151, 157, 119, 127, 134, 116, 124, 130, 101, 109, 115, 115, 124, 130, 140, 151, 159, 135, 147, 154, 148, 159, 168, 159, 172, 181, 158, 173, 183, 157, 173, 186, 161, 177, 190, 163, 180, 193, 162, 179, 192, 154, 170, 186, 154, 170, 186, 154, 170, 186, 140, 156, 173, + 142, 160, 176, 152, 172, 189, 164, 183, 200, 166, 186, 203, 162, 182, 202, 157, 179, 199, 156, 179, 200, 157, 180, 202, 153, 176, 199, 152, 175, 200, 144, 166, 194, 140, 163, 194, 141, 168, 201, 142, 169, 201, 142, 168, 198, 141, 164, 188, 152, 160, 172, 159, 148, 159, 169, 150, 157, 171, 150, 155, 174, 152, 155, + 178, 156, 158, 174, 147, 148, 178, 134, 125, 178, 121, 100, 185, 119, 85, 191, 112, 69, 192, 108, 56, 191, 103, 44, 190, 101, 34, 192, 104, 32, 193, 100, 26, 192, 99, 25, 194, 99, 29, 185, 93, 24, 185, 94, 23, 189, 95, 16, 192, 96, 16, 192, 92, 9, 191, 93, 8, 189, 91, 4, 189, 91, 7, + 189, 92, 4, 186, 89, 2, 187, 90, 2, 185, 88, 1, 182, 88, 0, 183, 87, 1, 177, 85, 7, 176, 82, 9, 172, 81, 10, 169, 80, 11, 166, 78, 12, 164, 77, 11, 164, 77, 12, 162, 75, 11, 158, 71, 5, 158, 72, 7, 157, 71, 9, 157, 74, 13, 155, 72, 12, 153, 70, 10, 156, 73, 10, + 157, 71, 5, 157, 71, 4, 156, 72, 3, 155, 70, 4, 155, 71, 3, 156, 70, 3, 157, 72, 2, 155, 70, 3, 150, 69, 4, 149, 67, 9, 146, 65, 9, 147, 66, 11, 142, 64, 10, 140, 62, 9, 139, 61, 9, 138, 60, 9, 137, 60, 10, 137, 61, 9, 135, 60, 8, 135, 59, 7, 134, 58, 5, + 138, 59, 6, 143, 62, 5, 143, 63, 4, 140, 61, 4, 140, 61, 4, 139, 60, 3, 137, 60, 3, 37, 55, 57, 36, 68, 76, 47, 83, 96, 56, 99, 113, 67, 112, 126, 75, 119, 135, 75, 120, 136, 75, 119, 136, 71, 115, 132, 67, 112, 126, 63, 107, 122, 63, 107, 121, 63, 107, 121, 62, 105, 120, + 61, 103, 118, 61, 100, 115, 61, 100, 114, 59, 96, 111, 56, 93, 107, 54, 90, 103, 53, 89, 102, 51, 86, 98, 52, 87, 99, 50, 83, 97, 48, 78, 92, 48, 76, 87, 48, 74, 87, 46, 67, 81, 50, 69, 81, 60, 78, 91, 74, 92, 105, 80, 99, 111, 82, 100, 112, 75, 93, 103, 69, 86, 97, + 83, 101, 112, 88, 106, 115, 76, 94, 104, 74, 92, 103, 79, 97, 106, 74, 92, 102, 57, 74, 82, 52, 68, 76, 48, 64, 71, 74, 91, 101, 79, 97, 107, 84, 101, 109, 70, 88, 100, 77, 93, 104, 87, 105, 115, 74, 92, 103, 74, 91, 103, 91, 108, 121, 104, 121, 131, 105, 121, 135, 113, 130, 141, + 143, 162, 170, 131, 147, 159, 120, 137, 149, 137, 154, 167, 116, 133, 147, 113, 129, 145, 131, 146, 161, 137, 152, 166, 163, 180, 189, 152, 169, 181, 167, 183, 193, 171, 186, 195, 171, 188, 197, 172, 188, 197, 173, 189, 197, 185, 198, 207, 196, 211, 219, 194, 209, 217, 195, 210, 219, 195, 209, 217, 178, 196, 204, + 193, 210, 217, 195, 210, 217, 193, 206, 215, 185, 199, 208, 179, 196, 205, 195, 210, 218, 182, 199, 207, 203, 217, 224, 195, 211, 218, 195, 208, 216, 201, 214, 222, 209, 221, 229, 202, 215, 223, 214, 228, 235, 222, 235, 243, 223, 236, 243, 221, 236, 245, 218, 231, 239, 211, 226, 235, 204, 221, 229, 200, 217, 226, + 206, 219, 227, 223, 234, 245, 222, 237, 244, 222, 235, 244, 219, 233, 242, 225, 239, 247, 221, 233, 243, 219, 230, 240, 217, 233, 242, 209, 224, 232, 198, 213, 221, 187, 203, 212, 181, 199, 208, 192, 209, 217, 191, 208, 216, 197, 213, 220, 200, 217, 225, 206, 224, 232, 215, 230, 239, 214, 230, 238, 211, 225, 236, + 218, 231, 239, 209, 224, 233, 208, 221, 229, 211, 224, 234, 205, 222, 230, 206, 221, 229, 201, 215, 224, 200, 217, 224, 198, 211, 219, 202, 215, 222, 204, 218, 226, 209, 224, 231, 205, 218, 227, 200, 213, 221, 198, 212, 219, 196, 209, 217, 188, 201, 209, 167, 179, 187, 166, 177, 185, 157, 170, 177, 145, 155, 163, + 159, 170, 179, 163, 175, 182, 163, 179, 187, 169, 185, 195, 171, 186, 196, 166, 183, 195, 161, 177, 189, 155, 171, 185, 166, 183, 197, 164, 180, 194, 155, 171, 187, 151, 167, 182, 150, 166, 181, 144, 160, 173, 153, 170, 185, 161, 181, 197, 168, 186, 203, 163, 184, 201, 160, 182, 200, 159, 181, 199, 155, 177, 200, + 150, 172, 198, 149, 173, 197, 151, 174, 199, 146, 170, 200, 140, 165, 196, 135, 162, 195, 133, 162, 193, 148, 172, 198, 155, 174, 194, 159, 170, 185, 160, 162, 174, 169, 165, 174, 170, 161, 170, 173, 156, 161, 172, 148, 147, 176, 142, 142, 175, 137, 134, 183, 130, 122, 184, 119, 88, 189, 109, 61, 194, 110, 55, + 193, 104, 45, 195, 103, 35, 195, 101, 30, 195, 101, 27, 194, 100, 27, 186, 97, 34, 191, 98, 25, 193, 98, 19, 191, 97, 16, 193, 95, 14, 191, 93, 13, 190, 91, 8, 190, 92, 6, 188, 91, 6, 189, 92, 5, 188, 92, 5, 184, 90, 2, 186, 90, 3, 182, 88, 2, 178, 85, 4, 175, 83, 11, + 174, 83, 12, 170, 80, 10, 169, 80, 13, 167, 78, 13, 164, 77, 10, 164, 77, 13, 162, 75, 10, 161, 74, 10, 158, 72, 6, 157, 72, 8, 155, 72, 10, 155, 70, 10, 157, 74, 13, 156, 73, 14, 158, 72, 7, 157, 73, 5, 157, 72, 4, 157, 72, 4, 156, 70, 3, 158, 71, 3, 159, 73, 4, + 156, 70, 2, 152, 68, 3, 148, 66, 7, 148, 67, 10, 146, 65, 8, 142, 63, 9, 140, 63, 11, 141, 61, 10, 139, 62, 12, 137, 60, 11, 137, 61, 10, 136, 60, 9, 138, 59, 9, 138, 57, 7, 140, 60, 8, 142, 62, 5, 145, 65, 3, 144, 64, 5, 143, 63, 4, 140, 59, 2, 139, 60, 2, + 35, 63, 67, 40, 76, 87, 52, 92, 106, 62, 105, 121, 72, 117, 132, 75, 119, 136, 72, 117, 132, 70, 114, 131, 66, 110, 125, 60, 103, 118, 59, 103, 117, 58, 102, 115, 57, 99, 114, 57, 97, 111, 57, 94, 109, 58, 95, 109, 58, 93, 107, 54, 89, 102, 51, 87, 99, 48, 83, 96, 50, 83, 96, + 48, 82, 92, 48, 79, 90, 47, 76, 88, 46, 72, 85, 45, 72, 83, 50, 74, 87, 56, 79, 91, 69, 90, 101, 67, 88, 99, 54, 73, 84, 69, 87, 100, 64, 83, 94, 72, 89, 101, 75, 95, 104, 70, 88, 98, 65, 82, 91, 61, 79, 87, 59, 77, 85, 56, 75, 81, 47, 66, 73, 50, 66, 73, + 46, 63, 70, 51, 67, 74, 51, 67, 74, 57, 74, 82, 66, 83, 91, 77, 94, 104, 70, 87, 96, 65, 84, 91, 82, 99, 109, 67, 83, 94, 66, 83, 93, 80, 97, 107, 99, 116, 129, 98, 116, 127, 97, 115, 125, 124, 143, 153, 128, 145, 156, 118, 136, 147, 125, 142, 155, 89, 107, 120, 108, 124, 139, + 126, 143, 156, 138, 155, 167, 157, 174, 186, 155, 171, 182, 168, 185, 194, 159, 176, 185, 162, 179, 188, 167, 183, 190, 175, 191, 200, 185, 199, 208, 198, 213, 220, 197, 213, 220, 201, 215, 223, 188, 204, 212, 198, 212, 221, 194, 207, 215, 197, 210, 218, 206, 218, 226, 189, 205, 213, 204, 221, 227, 198, 213, 220, + 205, 218, 226, 205, 220, 227, 197, 212, 220, 199, 214, 221, 213, 224, 232, 201, 214, 222, 223, 236, 244, 227, 239, 247, 220, 233, 241, 221, 234, 242, 222, 235, 242, 222, 237, 245, 209, 225, 233, 201, 217, 225, 203, 217, 227, 224, 239, 247, 219, 231, 239, 219, 233, 241, 224, 235, 245, 216, 229, 238, 220, 232, 242, + 220, 233, 242, 213, 229, 236, 210, 225, 234, 199, 215, 222, 186, 200, 209, 183, 198, 207, 186, 204, 212, 194, 210, 218, 194, 210, 218, 198, 215, 224, 208, 226, 233, 215, 231, 238, 215, 229, 238, 218, 232, 240, 224, 236, 245, 216, 231, 241, 211, 227, 234, 222, 234, 244, 215, 230, 239, 211, 226, 233, 203, 219, 227, + 203, 220, 227, 209, 224, 231, 206, 221, 228, 208, 223, 231, 209, 223, 231, 210, 225, 233, 208, 220, 229, 207, 221, 228, 208, 223, 231, 205, 221, 228, 197, 211, 219, 185, 198, 206, 184, 199, 206, 174, 190, 197, 174, 191, 200, 175, 189, 199, 171, 186, 198, 175, 191, 203, 181, 197, 209, 177, 195, 206, 162, 178, 191, + 161, 177, 192, 173, 190, 202, 164, 179, 195, 150, 167, 183, 152, 167, 181, 153, 169, 182, 158, 175, 188, 164, 183, 198, 166, 185, 201, 166, 185, 203, 165, 185, 202, 159, 182, 201, 155, 177, 199, 152, 175, 197, 151, 173, 198, 149, 173, 197, 150, 173, 199, 143, 168, 198, 135, 162, 193, 134, 160, 194, 145, 174, 199, + 158, 180, 205, 163, 184, 201, 151, 164, 180, 167, 175, 188, 168, 172, 183, 169, 170, 180, 169, 167, 176, 172, 155, 162, 172, 142, 139, 179, 134, 125, 185, 129, 116, 185, 132, 117, 189, 121, 85, 191, 105, 47, 195, 105, 46, 195, 106, 43, 193, 102, 35, 190, 100, 31, 184, 96, 30, 194, 100, 26, 195, 99, 22, + 196, 98, 16, 195, 97, 14, 194, 95, 13, 191, 94, 13, 192, 94, 11, 190, 92, 9, 189, 92, 7, 187, 90, 3, 187, 89, 2, 185, 89, 2, 183, 88, 3, 178, 86, 3, 176, 84, 9, 173, 81, 11, 170, 80, 12, 168, 79, 13, 166, 79, 13, 166, 79, 13, 166, 79, 13, 164, 77, 13, 162, 76, 11, + 160, 74, 8, 162, 75, 11, 158, 72, 6, 156, 72, 7, 156, 70, 10, 157, 71, 11, 157, 71, 9, 159, 74, 9, 156, 73, 6, 157, 71, 4, 157, 71, 3, 161, 74, 7, 160, 73, 4, 161, 75, 4, 157, 71, 1, 153, 68, 2, 149, 68, 5, 147, 64, 7, 144, 63, 6, 143, 63, 8, 141, 64, 11, + 142, 63, 12, 139, 62, 11, 140, 63, 13, 138, 61, 12, 138, 62, 10, 138, 60, 12, 138, 59, 8, 142, 62, 7, 145, 64, 3, 145, 65, 2, 144, 63, 4, 144, 63, 2, 142, 62, 3, 140, 59, 1, 35, 68, 77, 47, 86, 99, 58, 101, 115, 68, 111, 127, 73, 116, 134, 72, 117, 133, 68, 112, 127, + 62, 105, 122, 57, 99, 113, 54, 96, 111, 53, 93, 108, 52, 92, 105, 52, 89, 103, 52, 88, 102, 52, 87, 100, 52, 87, 101, 52, 86, 99, 47, 81, 93, 49, 81, 93, 47, 77, 90, 47, 78, 89, 47, 76, 88, 44, 73, 83, 44, 71, 81, 45, 72, 83, 50, 74, 86, 53, 77, 87, 53, 74, 85, + 50, 67, 80, 58, 77, 88, 60, 81, 89, 63, 83, 92, 66, 86, 94, 60, 78, 88, 55, 72, 80, 49, 67, 74, 44, 62, 69, 49, 66, 74, 48, 66, 73, 46, 64, 71, 49, 66, 73, 50, 69, 76, 53, 71, 78, 54, 71, 78, 53, 71, 78, 54, 72, 79, 53, 70, 77, 60, 78, 85, 62, 79, 88, + 67, 85, 93, 61, 78, 87, 71, 88, 97, 64, 81, 90, 59, 76, 84, 69, 87, 97, 81, 99, 109, 84, 100, 111, 77, 95, 106, 114, 132, 141, 117, 137, 148, 117, 136, 145, 97, 115, 126, 100, 118, 130, 103, 120, 133, 119, 137, 148, 130, 148, 159, 144, 160, 173, 153, 170, 180, 149, 166, 177, 151, 167, 179, + 158, 175, 184, 167, 183, 193, 173, 190, 198, 183, 200, 208, 197, 213, 221, 195, 212, 219, 201, 216, 223, 198, 211, 220, 187, 201, 209, 193, 209, 216, 205, 219, 226, 203, 219, 226, 203, 216, 223, 203, 217, 225, 204, 217, 225, 215, 227, 236, 206, 221, 228, 207, 220, 228, 211, 226, 233, 207, 222, 229, 222, 236, 244, + 221, 233, 242, 221, 236, 245, 222, 236, 245, 226, 239, 247, 224, 239, 246, 215, 231, 238, 213, 229, 236, 210, 226, 234, 222, 236, 245, 210, 225, 234, 222, 236, 244, 220, 232, 241, 212, 228, 235, 216, 231, 238, 222, 233, 242, 212, 225, 233, 212, 228, 236, 213, 227, 234, 195, 211, 219, 191, 207, 215, 185, 201, 210, + 198, 215, 224, 199, 216, 224, 210, 224, 233, 213, 228, 237, 223, 236, 246, 219, 234, 243, 225, 240, 248, 227, 240, 249, 220, 232, 242, 220, 234, 243, 218, 233, 241, 217, 233, 242, 216, 232, 240, 213, 228, 237, 216, 231, 240, 207, 222, 231, 218, 233, 242, 212, 228, 235, 213, 225, 235, 217, 232, 240, 214, 225, 235, + 213, 230, 237, 213, 228, 236, 215, 230, 239, 206, 223, 230, 199, 215, 222, 198, 214, 223, 189, 204, 213, 190, 207, 216, 186, 201, 212, 176, 191, 203, 182, 197, 209, 186, 203, 215, 181, 198, 212, 168, 182, 198, 176, 193, 205, 170, 187, 200, 159, 175, 189, 152, 168, 183, 158, 174, 186, 168, 186, 197, 172, 190, 203, + 167, 186, 201, 171, 188, 205, 164, 184, 201, 158, 180, 199, 154, 177, 198, 155, 177, 199, 160, 181, 205, 154, 177, 201, 154, 178, 200, 148, 171, 197, 147, 170, 198, 145, 172, 200, 150, 174, 201, 159, 181, 206, 161, 181, 201, 157, 173, 189, 169, 180, 196, 169, 171, 183, 168, 168, 179, 169, 168, 178, 169, 166, 176, + 172, 157, 168, 175, 157, 165, 174, 146, 150, 181, 128, 115, 186, 123, 104, 186, 124, 104, 189, 118, 87, 192, 108, 51, 193, 104, 43, 190, 104, 45, 187, 100, 35, 197, 102, 25, 196, 101, 21, 196, 99, 20, 194, 99, 15, 195, 99, 15, 194, 95, 13, 191, 94, 13, 190, 93, 10, 189, 91, 9, 187, 90, 4, + 186, 89, 3, 185, 90, 2, 181, 88, 4, 179, 85, 8, 175, 84, 12, 171, 80, 12, 168, 80, 13, 165, 75, 10, 166, 79, 13, 165, 78, 15, 165, 77, 13, 163, 75, 11, 161, 75, 9, 162, 75, 10, 161, 74, 8, 162, 77, 12, 159, 73, 7, 160, 73, 9, 159, 75, 12, 158, 72, 6, 158, 72, 10, + 161, 75, 11, 160, 74, 8, 160, 73, 6, 160, 74, 4, 159, 72, 3, 163, 75, 5, 161, 73, 3, 159, 72, 2, 155, 69, 3, 152, 68, 7, 149, 68, 9, 147, 67, 8, 143, 64, 8, 143, 65, 12, 142, 64, 10, 143, 64, 11, 140, 62, 9, 138, 62, 10, 139, 60, 9, 139, 61, 8, 139, 61, 7, + 141, 62, 5, 145, 65, 2, 146, 66, 2, 144, 64, 2, 145, 64, 3, 142, 61, 3, 142, 62, 3, 42, 76, 87, 52, 93, 107, 60, 104, 119, 67, 110, 125, 65, 108, 124, 63, 105, 121, 59, 101, 116, 55, 94, 109, 51, 89, 103, 48, 85, 99, 49, 84, 97, 46, 81, 94, 44, 79, 93, 45, 79, 92, + 47, 80, 92, 48, 79, 91, 46, 77, 89, 45, 74, 86, 44, 73, 84, 45, 72, 83, 45, 72, 83, 43, 69, 80, 41, 68, 78, 43, 67, 79, 43, 67, 76, 43, 65, 73, 39, 58, 69, 49, 68, 77, 53, 73, 84, 53, 72, 82, 54, 73, 82, 49, 68, 78, 45, 64, 72, 42, 60, 68, 41, 59, 66, + 43, 61, 68, 45, 63, 70, 44, 62, 69, 45, 63, 70, 48, 66, 73, 49, 67, 74, 49, 67, 74, 51, 69, 76, 51, 69, 76, 53, 71, 78, 51, 69, 76, 52, 70, 77, 51, 69, 75, 54, 72, 79, 52, 70, 77, 60, 76, 84, 58, 75, 82, 61, 78, 86, 60, 77, 85, 54, 73, 80, 64, 82, 90, + 72, 89, 98, 67, 84, 93, 76, 93, 102, 93, 110, 120, 89, 108, 118, 94, 112, 123, 87, 105, 116, 93, 111, 122, 93, 111, 121, 112, 130, 141, 117, 135, 146, 129, 147, 157, 139, 157, 168, 139, 157, 168, 145, 161, 172, 154, 171, 180, 166, 183, 192, 174, 190, 197, 186, 203, 211, 190, 206, 213, 199, 214, 222, + 193, 209, 216, 200, 213, 220, 196, 213, 220, 191, 206, 213, 198, 212, 221, 202, 217, 226, 201, 216, 224, 213, 224, 232, 212, 228, 235, 210, 224, 232, 216, 229, 237, 220, 233, 241, 214, 228, 235, 212, 226, 234, 218, 232, 240, 226, 239, 247, 225, 240, 248, 228, 241, 249, 227, 239, 247, 215, 230, 239, 217, 231, 240, + 214, 228, 237, 215, 230, 238, 206, 222, 229, 223, 236, 245, 219, 231, 239, 218, 232, 241, 217, 231, 238, 223, 236, 246, 212, 225, 233, 217, 229, 238, 217, 230, 238, 210, 225, 233, 205, 222, 229, 206, 221, 230, 206, 223, 231, 198, 216, 224, 209, 225, 232, 210, 226, 234, 225, 238, 248, 224, 236, 246, 227, 241, 250, + 227, 239, 247, 220, 234, 244, 226, 238, 248, 222, 236, 245, 222, 236, 246, 218, 234, 241, 217, 232, 241, 217, 232, 241, 214, 229, 238, 222, 237, 246, 212, 226, 235, 219, 231, 241, 215, 229, 238, 221, 234, 243, 222, 236, 245, 214, 231, 240, 213, 229, 238, 210, 226, 235, 208, 222, 230, 205, 220, 229, 204, 220, 227, + 192, 209, 218, 190, 206, 216, 185, 201, 213, 191, 207, 219, 193, 209, 221, 176, 193, 206, 173, 190, 203, 177, 194, 207, 163, 178, 193, 160, 177, 188, 173, 189, 201, 169, 186, 198, 179, 195, 209, 175, 194, 207, 166, 184, 199, 167, 184, 202, 167, 187, 204, 160, 181, 200, 157, 180, 200, 159, 181, 202, 160, 182, 204, + 164, 186, 210, 165, 187, 211, 158, 182, 207, 156, 180, 205, 156, 181, 208, 154, 178, 201, 159, 180, 201, 162, 173, 188, 156, 165, 178, 165, 168, 181, 168, 171, 182, 168, 168, 179, 172, 165, 177, 170, 161, 172, 170, 158, 169, 171, 157, 167, 174, 151, 155, 174, 141, 142, 179, 128, 115, 185, 122, 105, 184, 119, 99, + 189, 120, 85, 186, 105, 61, 191, 104, 48, 196, 105, 35, 196, 101, 22, 196, 99, 18, 197, 99, 20, 196, 98, 14, 196, 99, 16, 195, 98, 15, 191, 94, 12, 190, 93, 9, 189, 93, 9, 185, 91, 6, 182, 88, 4, 180, 86, 6, 175, 83, 10, 173, 83, 15, 169, 81, 15, 167, 80, 15, 165, 79, 14, + 165, 78, 13, 164, 77, 12, 165, 78, 16, 164, 77, 14, 164, 77, 12, 162, 75, 10, 163, 75, 10, 160, 73, 8, 160, 73, 10, 158, 71, 5, 160, 74, 8, 159, 73, 8, 158, 72, 6, 160, 73, 8, 162, 74, 9, 160, 73, 6, 160, 74, 5, 162, 75, 6, 162, 76, 6, 164, 76, 6, 164, 76, 6, + 160, 73, 3, 156, 70, 2, 151, 68, 5, 150, 70, 8, 149, 67, 9, 147, 67, 9, 146, 66, 9, 145, 66, 10, 144, 65, 9, 143, 64, 8, 140, 63, 9, 140, 62, 9, 139, 61, 6, 142, 62, 7, 144, 66, 7, 145, 64, 2, 147, 65, 2, 146, 66, 1, 146, 64, 3, 145, 63, 2, 142, 61, 3, + 45, 81, 92, 49, 91, 104, 57, 101, 115, 60, 103, 117, 57, 98, 112, 55, 94, 108, 51, 88, 102, 48, 83, 97, 42, 78, 90, 41, 76, 87, 41, 75, 85, 40, 72, 84, 40, 71, 84, 43, 73, 84, 45, 73, 83, 42, 70, 81, 40, 68, 79, 41, 68, 79, 41, 66, 77, 41, 66, 77, 42, 67, 76, + 39, 65, 74, 40, 62, 73, 38, 60, 69, 39, 60, 68, 42, 64, 71, 43, 64, 72, 42, 61, 69, 43, 61, 69, 41, 60, 68, 39, 58, 66, 38, 57, 65, 39, 58, 66, 41, 59, 66, 42, 60, 67, 45, 63, 70, 45, 63, 70, 45, 64, 71, 47, 65, 72, 48, 66, 73, 49, 67, 74, 51, 69, 76, + 51, 69, 76, 49, 67, 74, 48, 66, 73, 49, 67, 72, 46, 65, 71, 47, 65, 70, 46, 63, 69, 44, 63, 68, 46, 62, 68, 47, 63, 70, 44, 61, 67, 47, 64, 71, 50, 68, 75, 50, 67, 73, 55, 71, 78, 61, 78, 85, 56, 71, 79, 67, 85, 92, 75, 93, 101, 81, 100, 108, 81, 99, 110, + 78, 96, 105, 77, 94, 104, 91, 109, 119, 103, 122, 131, 113, 132, 140, 120, 138, 149, 128, 146, 157, 137, 155, 165, 151, 168, 177, 157, 174, 183, 167, 184, 192, 180, 197, 204, 179, 195, 204, 190, 205, 214, 195, 212, 218, 190, 204, 213, 204, 217, 225, 201, 217, 224, 207, 220, 230, 197, 214, 220, 194, 210, 217, + 205, 220, 228, 213, 228, 235, 216, 227, 237, 213, 227, 234, 224, 236, 244, 220, 233, 241, 210, 223, 231, 226, 240, 247, 224, 237, 245, 230, 243, 250, 223, 236, 245, 225, 240, 249, 216, 232, 240, 219, 233, 242, 203, 219, 229, 212, 228, 235, 201, 217, 224, 214, 228, 236, 213, 229, 236, 217, 229, 239, 212, 226, 233, + 217, 229, 239, 210, 225, 232, 218, 230, 238, 217, 230, 238, 215, 229, 236, 211, 227, 234, 213, 228, 236, 210, 223, 234, 208, 223, 231, 213, 228, 236, 212, 227, 235, 220, 235, 243, 228, 240, 248, 221, 234, 243, 229, 243, 250, 224, 237, 247, 225, 238, 246, 229, 244, 251, 224, 236, 245, 222, 237, 246, 215, 231, 240, + 222, 234, 243, 228, 242, 250, 226, 240, 247, 226, 239, 248, 221, 233, 243, 221, 233, 242, 222, 234, 243, 226, 239, 247, 218, 231, 241, 217, 232, 241, 213, 227, 236, 214, 228, 237, 210, 226, 235, 206, 223, 232, 206, 222, 234, 195, 212, 220, 193, 209, 221, 197, 213, 225, 193, 209, 221, 178, 194, 206, 175, 190, 203, + 179, 195, 207, 158, 173, 188, 171, 187, 199, 180, 197, 208, 183, 201, 213, 180, 197, 210, 170, 190, 205, 166, 184, 201, 165, 183, 200, 164, 184, 201, 163, 182, 201, 163, 182, 202, 166, 187, 208, 168, 190, 212, 168, 192, 215, 167, 188, 212, 164, 188, 212, 164, 188, 212, 164, 188, 214, 159, 183, 204, 159, 177, 193, + 149, 162, 180, 168, 179, 195, 170, 179, 192, 168, 174, 185, 170, 174, 188, 169, 167, 177, 171, 161, 173, 167, 156, 166, 170, 155, 165, 173, 155, 162, 171, 146, 149, 179, 133, 128, 177, 123, 107, 179, 122, 106, 172, 115, 95, 190, 112, 77, 192, 108, 56, 195, 106, 42, 196, 102, 20, 199, 103, 21, 199, 102, 21, + 197, 98, 17, 194, 98, 15, 192, 93, 11, 191, 95, 12, 188, 90, 7, 182, 88, 6, 181, 88, 8, 178, 86, 10, 174, 84, 14, 174, 85, 19, 167, 80, 16, 165, 78, 14, 166, 79, 18, 166, 78, 17, 164, 77, 11, 162, 76, 15, 164, 76, 14, 166, 78, 16, 162, 75, 10, 161, 74, 9, 159, 72, 6, + 162, 74, 9, 160, 75, 8, 162, 74, 9, 159, 73, 6, 160, 73, 7, 160, 74, 8, 161, 74, 9, 160, 73, 7, 161, 74, 7, 164, 76, 10, 164, 75, 7, 166, 77, 7, 163, 75, 5, 164, 76, 6, 161, 75, 6, 157, 71, 2, 154, 70, 4, 150, 69, 5, 149, 69, 6, 148, 68, 9, 148, 67, 10, + 146, 66, 8, 145, 66, 9, 143, 62, 5, 143, 64, 10, 141, 62, 8, 144, 63, 8, 145, 64, 8, 143, 62, 4, 147, 64, 4, 149, 66, 1, 148, 66, 1, 147, 64, 2, 146, 64, 3, 144, 63, 3, 42, 78, 91, 48, 87, 101, 54, 92, 106, 53, 90, 104, 50, 85, 100, 46, 81, 95, 42, 75, 89, + 40, 72, 85, 38, 69, 80, 36, 67, 77, 37, 65, 75, 38, 66, 76, 38, 65, 75, 38, 65, 75, 37, 64, 73, 36, 62, 71, 36, 62, 71, 37, 62, 70, 37, 63, 70, 38, 61, 70, 37, 59, 69, 39, 60, 69, 36, 58, 66, 37, 58, 65, 35, 55, 63, 36, 55, 62, 35, 54, 62, 37, 56, 63, + 39, 57, 64, 38, 57, 64, 38, 57, 64, 40, 59, 66, 40, 59, 66, 42, 61, 68, 44, 63, 70, 43, 62, 69, 45, 64, 71, 45, 64, 71, 48, 66, 73, 49, 67, 74, 50, 68, 75, 49, 67, 74, 49, 66, 74, 48, 66, 73, 46, 64, 71, 45, 64, 69, 43, 63, 68, 43, 59, 65, 42, 58, 64, + 40, 56, 62, 39, 56, 62, 38, 53, 59, 39, 54, 59, 38, 53, 59, 40, 54, 60, 40, 55, 60, 43, 59, 65, 43, 60, 67, 49, 66, 73, 45, 64, 70, 52, 69, 76, 63, 81, 88, 62, 79, 87, 62, 80, 88, 64, 82, 89, 66, 85, 93, 87, 105, 114, 93, 112, 120, 112, 129, 141, 122, 140, 149, + 132, 151, 160, 150, 168, 176, 161, 178, 186, 157, 174, 183, 176, 193, 201, 181, 198, 207, 183, 200, 208, 195, 210, 218, 192, 207, 215, 196, 211, 220, 201, 216, 224, 203, 219, 227, 198, 214, 221, 195, 211, 219, 201, 214, 224, 211, 226, 235, 217, 230, 240, 226, 239, 247, 223, 235, 243, 224, 237, 245, 217, 230, 238, + 225, 239, 246, 222, 236, 245, 229, 243, 250, 227, 239, 248, 226, 242, 251, 221, 236, 245, 219, 233, 243, 199, 215, 224, 214, 229, 238, 202, 219, 226, 205, 221, 228, 216, 230, 239, 219, 232, 240, 216, 232, 239, 217, 229, 238, 214, 228, 235, 217, 229, 238, 219, 231, 239, 220, 233, 241, 218, 231, 239, 217, 230, 238, + 217, 231, 239, 215, 231, 238, 214, 230, 238, 215, 228, 238, 214, 227, 237, 221, 235, 245, 218, 232, 241, 228, 241, 250, 230, 242, 250, 224, 236, 244, 231, 245, 252, 226, 237, 247, 223, 236, 246, 219, 233, 242, 227, 241, 249, 226, 239, 247, 230, 243, 251, 225, 238, 247, 223, 235, 244, 227, 240, 247, 229, 241, 249, + 225, 237, 246, 223, 235, 244, 221, 234, 242, 218, 231, 240, 218, 232, 241, 218, 234, 241, 213, 227, 236, 205, 219, 232, 197, 213, 224, 199, 215, 227, 197, 213, 226, 191, 207, 219, 182, 199, 210, 174, 190, 203, 158, 174, 185, 170, 186, 198, 180, 197, 206, 186, 202, 214, 185, 202, 215, 174, 190, 206, 169, 186, 201, + 169, 187, 204, 167, 185, 202, 165, 185, 203, 167, 187, 206, 170, 189, 209, 168, 189, 210, 171, 195, 215, 172, 194, 215, 167, 189, 213, 167, 190, 216, 168, 192, 216, 164, 188, 213, 169, 191, 211, 163, 179, 196, 168, 181, 198, 175, 186, 202, 173, 182, 196, 176, 179, 189, 170, 167, 178, 171, 161, 172, 173, 161, 172, + 168, 153, 162, 168, 152, 162, 170, 152, 159, 171, 147, 152, 175, 139, 141, 181, 122, 110, 174, 116, 97, 184, 119, 94, 189, 110, 72, 193, 108, 58, 195, 109, 52, 195, 104, 26, 199, 103, 24, 197, 99, 21, 198, 100, 18, 193, 97, 15, 191, 94, 14, 187, 92, 10, 184, 90, 10, 180, 89, 18, 177, 86, 18, + 174, 84, 20, 172, 82, 23, 170, 83, 21, 166, 79, 16, 163, 78, 16, 162, 76, 14, 161, 74, 10, 161, 74, 9, 161, 77, 13, 163, 76, 12, 161, 74, 9, 163, 77, 14, 162, 75, 7, 163, 76, 11, 160, 72, 6, 160, 74, 8, 162, 74, 9, 161, 74, 8, 161, 75, 10, 161, 74, 8, 163, 77, 11, + 164, 76, 10, 165, 76, 9, 168, 77, 12, 168, 77, 8, 167, 79, 9, 166, 79, 9, 164, 75, 5, 163, 76, 9, 158, 72, 2, 156, 70, 3, 153, 71, 5, 152, 70, 9, 149, 67, 9, 149, 68, 9, 147, 66, 8, 148, 67, 10, 147, 65, 8, 145, 63, 8, 144, 63, 8, 145, 63, 8, 146, 65, 8, + 146, 66, 6, 148, 65, 3, 152, 67, 1, 151, 67, 1, 147, 64, 1, 147, 64, 3, 147, 64, 3, 39, 74, 85, 45, 79, 92, 45, 79, 94, 43, 77, 91, 41, 73, 87, 40, 70, 83, 36, 65, 76, 34, 62, 72, 32, 57, 69, 30, 57, 67, 31, 57, 67, 32, 58, 67, 34, 60, 68, 33, 56, 64, + 33, 56, 64, 33, 56, 64, 35, 55, 63, 36, 57, 65, 36, 57, 65, 36, 57, 64, 36, 56, 64, 35, 56, 63, 37, 57, 64, 35, 55, 62, 36, 54, 62, 36, 55, 62, 35, 54, 61, 37, 56, 63, 39, 58, 65, 39, 58, 65, 39, 58, 65, 41, 59, 66, 41, 60, 67, 42, 61, 68, 44, 63, 70, + 42, 61, 68, 45, 64, 71, 46, 65, 72, 49, 67, 74, 47, 67, 74, 48, 66, 73, 48, 66, 71, 47, 66, 72, 45, 64, 70, 44, 62, 68, 42, 60, 65, 42, 58, 65, 39, 55, 62, 40, 56, 62, 38, 53, 59, 39, 53, 59, 37, 52, 56, 35, 49, 54, 34, 49, 55, 34, 48, 54, 35, 49, 55, + 36, 50, 55, 36, 51, 57, 38, 53, 60, 38, 54, 60, 41, 56, 62, 42, 59, 65, 49, 67, 73, 48, 66, 73, 54, 72, 80, 60, 78, 84, 75, 92, 101, 91, 109, 116, 108, 126, 138, 127, 145, 156, 135, 153, 164, 150, 167, 176, 162, 178, 188, 164, 181, 190, 171, 189, 196, 178, 195, 202, 189, 203, 211, + 192, 207, 215, 192, 208, 215, 190, 205, 214, 213, 228, 236, 202, 217, 226, 198, 214, 222, 198, 214, 222, 205, 218, 228, 207, 223, 232, 216, 228, 237, 220, 233, 241, 225, 238, 246, 225, 238, 247, 227, 240, 248, 214, 227, 234, 213, 227, 237, 225, 240, 247, 230, 244, 250, 231, 246, 252, 220, 235, 244, 222, 234, 244, + 201, 217, 226, 207, 222, 231, 200, 216, 223, 198, 214, 222, 207, 223, 230, 215, 228, 236, 212, 225, 234, 214, 226, 236, 217, 230, 237, 213, 228, 235, 217, 231, 239, 217, 230, 239, 221, 232, 241, 220, 232, 239, 223, 235, 243, 227, 238, 246, 218, 233, 242, 217, 229, 237, 218, 231, 241, 213, 227, 236, 222, 232, 242, + 227, 240, 248, 227, 241, 249, 227, 239, 248, 227, 240, 247, 221, 234, 243, 219, 233, 241, 228, 239, 249, 228, 243, 250, 231, 247, 254, 228, 240, 249, 221, 235, 243, 224, 237, 245, 228, 241, 250, 226, 239, 247, 228, 239, 247, 227, 239, 248, 227, 239, 247, 223, 236, 245, 221, 233, 242, 226, 238, 247, 223, 235, 244, + 215, 230, 239, 200, 217, 226, 206, 222, 230, 194, 210, 221, 188, 203, 215, 179, 195, 207, 175, 191, 203, 180, 196, 207, 191, 208, 219, 187, 204, 215, 188, 204, 217, 175, 192, 204, 172, 190, 205, 174, 191, 207, 170, 190, 205, 171, 189, 206, 170, 190, 208, 171, 191, 209, 178, 197, 217, 179, 201, 220, 172, 196, 216, + 169, 192, 213, 171, 194, 216, 169, 192, 217, 170, 194, 218, 171, 194, 213, 177, 193, 209, 165, 178, 192, 175, 183, 196, 175, 178, 189, 177, 176, 186, 179, 178, 188, 173, 170, 181, 176, 165, 175, 171, 154, 159, 175, 157, 163, 174, 150, 158, 174, 151, 161, 174, 146, 152, 167, 134, 136, 177, 123, 110, 189, 117, 89, + 187, 117, 85, 189, 110, 71, 193, 106, 56, 194, 105, 45, 195, 104, 33, 195, 101, 23, 196, 99, 24, 193, 96, 21, 189, 94, 18, 185, 91, 16, 180, 89, 19, 176, 88, 22, 175, 87, 25, 172, 82, 27, 171, 82, 26, 169, 80, 24, 169, 80, 22, 167, 82, 20, 164, 78, 18, 161, 77, 12, 160, 74, 10, + 160, 75, 10, 161, 76, 15, 159, 73, 9, 165, 77, 14, 164, 77, 14, 162, 75, 11, 162, 75, 13, 161, 75, 10, 162, 75, 12, 160, 74, 8, 163, 76, 10, 164, 77, 13, 163, 76, 10, 162, 75, 9, 167, 76, 11, 169, 78, 11, 170, 79, 12, 168, 77, 10, 168, 78, 11, 166, 76, 8, 166, 78, 9, + 166, 77, 10, 162, 75, 6, 157, 71, 3, 155, 71, 4, 153, 70, 6, 152, 70, 8, 149, 68, 6, 149, 66, 10, 149, 67, 10, 147, 66, 9, 147, 66, 10, 147, 65, 10, 145, 64, 8, 145, 64, 7, 146, 65, 7, 149, 66, 4, 153, 66, 2, 153, 67, 1, 148, 66, 1, 148, 65, 2, 147, 64, 2, + 37, 68, 81, 38, 70, 83, 37, 68, 82, 36, 64, 76, 34, 63, 74, 31, 59, 69, 28, 55, 65, 26, 52, 62, 27, 50, 61, 27, 51, 57, 29, 51, 60, 31, 52, 58, 31, 51, 59, 29, 49, 57, 31, 50, 58, 33, 52, 60, 33, 52, 60, 34, 53, 60, 36, 54, 62, 35, 54, 62, 37, 57, 64, + 38, 57, 64, 39, 57, 64, 39, 58, 65, 39, 58, 65, 37, 56, 63, 37, 56, 63, 38, 57, 64, 39, 58, 65, 40, 59, 66, 41, 61, 68, 42, 60, 67, 42, 61, 68, 42, 61, 68, 43, 62, 69, 44, 64, 71, 45, 63, 70, 45, 64, 71, 46, 65, 72, 46, 64, 71, 45, 63, 69, 46, 64, 70, + 43, 62, 67, 43, 60, 65, 41, 60, 65, 41, 56, 63, 38, 54, 59, 37, 52, 59, 37, 51, 57, 36, 50, 56, 34, 49, 53, 34, 47, 54, 31, 45, 52, 32, 46, 52, 32, 45, 52, 32, 46, 52, 33, 47, 53, 33, 47, 53, 33, 47, 53, 35, 50, 56, 36, 51, 57, 40, 56, 62, 46, 63, 69, + 55, 73, 80, 59, 77, 84, 65, 83, 90, 75, 93, 101, 93, 112, 120, 106, 126, 135, 124, 142, 151, 143, 161, 170, 156, 173, 181, 160, 176, 187, 170, 188, 196, 167, 185, 193, 189, 205, 214, 194, 210, 218, 185, 200, 209, 185, 201, 209, 199, 213, 222, 202, 218, 226, 197, 212, 220, 213, 227, 235, 197, 213, 220, + 205, 221, 229, 208, 221, 230, 218, 233, 239, 215, 228, 237, 230, 242, 250, 232, 246, 250, 227, 240, 248, 215, 228, 236, 216, 230, 240, 227, 242, 249, 230, 243, 252, 229, 242, 250, 217, 233, 242, 215, 230, 239, 195, 213, 222, 196, 213, 222, 194, 211, 217, 192, 208, 218, 201, 218, 225, 212, 228, 235, 207, 222, 231, + 206, 221, 230, 213, 228, 235, 214, 228, 236, 211, 227, 234, 215, 229, 236, 216, 229, 237, 223, 234, 242, 222, 236, 244, 223, 236, 244, 219, 231, 240, 213, 227, 234, 222, 235, 244, 216, 230, 240, 219, 230, 240, 219, 233, 241, 219, 231, 240, 227, 240, 248, 225, 237, 246, 223, 236, 244, 226, 239, 248, 226, 239, 247, + 228, 241, 249, 228, 244, 251, 229, 243, 251, 225, 238, 246, 234, 247, 252, 226, 238, 248, 229, 242, 251, 226, 238, 247, 234, 245, 251, 230, 243, 251, 229, 241, 249, 227, 239, 249, 223, 236, 244, 227, 239, 249, 214, 230, 237, 215, 231, 240, 209, 222, 231, 197, 213, 225, 186, 202, 214, 185, 202, 211, 192, 207, 216, + 207, 222, 234, 197, 213, 223, 193, 209, 222, 183, 199, 212, 177, 194, 207, 176, 192, 208, 174, 192, 207, 174, 193, 208, 173, 191, 208, 179, 197, 214, 177, 197, 215, 176, 196, 214, 173, 194, 215, 174, 197, 217, 169, 192, 215, 171, 194, 217, 169, 193, 217, 169, 194, 212, 174, 192, 210, 165, 178, 192, 177, 189, 202, + 180, 193, 208, 185, 196, 208, 179, 183, 194, 177, 177, 185, 179, 171, 179, 179, 164, 173, 178, 164, 168, 171, 148, 151, 175, 152, 161, 174, 152, 157, 166, 136, 143, 170, 139, 143, 179, 127, 116, 187, 115, 85, 189, 116, 82, 189, 109, 66, 190, 104, 53, 190, 103, 41, 192, 102, 36, 194, 101, 32, 193, 100, 28, + 187, 95, 24, 186, 94, 24, 182, 89, 22, 174, 86, 22, 174, 84, 27, 172, 83, 30, 172, 83, 29, 169, 81, 27, 168, 80, 26, 164, 77, 21, 163, 77, 19, 159, 76, 19, 158, 75, 18, 155, 73, 16, 160, 75, 18, 156, 74, 13, 159, 73, 11, 158, 73, 9, 159, 76, 13, 161, 75, 12, 163, 76, 16, + 161, 75, 14, 160, 74, 11, 163, 75, 12, 165, 78, 13, 164, 77, 11, 166, 79, 13, 169, 79, 14, 170, 78, 12, 172, 79, 10, 171, 79, 10, 172, 81, 11, 170, 77, 11, 167, 77, 9, 168, 79, 9, 166, 76, 12, 162, 75, 7, 161, 75, 8, 157, 72, 4, 154, 71, 6, 155, 70, 5, 151, 68, 5, + 151, 69, 8, 151, 68, 10, 149, 68, 10, 149, 68, 11, 148, 67, 10, 146, 64, 9, 146, 65, 7, 147, 65, 7, 149, 65, 4, 153, 68, 2, 155, 69, 3, 150, 66, 1, 150, 66, 1, 147, 65, 1, 33, 60, 72, 31, 59, 70, 28, 55, 64, 26, 53, 61, 25, 51, 59, 26, 49, 57, 24, 47, 54, + 25, 45, 54, 25, 44, 51, 26, 45, 53, 28, 47, 55, 28, 45, 53, 28, 46, 54, 27, 44, 53, 29, 49, 56, 32, 51, 58, 33, 52, 59, 35, 53, 60, 37, 55, 63, 37, 56, 63, 39, 58, 65, 37, 56, 64, 39, 58, 65, 39, 58, 66, 39, 58, 65, 37, 56, 63, 39, 58, 65, 41, 60, 67, + 42, 61, 68, 41, 60, 67, 41, 60, 67, 42, 61, 68, 42, 60, 67, 42, 60, 67, 42, 61, 68, 42, 61, 68, 44, 63, 71, 45, 63, 70, 45, 64, 69, 45, 63, 69, 43, 61, 67, 40, 58, 64, 41, 56, 62, 40, 56, 62, 38, 53, 59, 38, 53, 59, 34, 49, 54, 33, 48, 53, 32, 46, 52, + 32, 46, 52, 31, 46, 49, 30, 45, 48, 30, 44, 49, 28, 42, 48, 27, 42, 47, 31, 45, 51, 31, 45, 50, 35, 48, 55, 41, 56, 61, 43, 57, 64, 49, 66, 72, 52, 69, 76, 58, 76, 83, 64, 82, 90, 79, 96, 105, 73, 90, 98, 93, 111, 120, 95, 113, 122, 119, 137, 147, 132, 150, 160, + 147, 165, 175, 162, 180, 188, 170, 187, 196, 177, 194, 203, 174, 192, 201, 178, 194, 202, 195, 211, 220, 183, 199, 208, 183, 199, 207, 203, 217, 224, 200, 216, 223, 204, 220, 227, 220, 234, 242, 202, 218, 225, 209, 226, 234, 208, 223, 233, 212, 227, 233, 222, 236, 244, 225, 237, 245, 234, 246, 252, 230, 244, 250, + 226, 238, 246, 226, 239, 247, 229, 242, 249, 229, 242, 250, 227, 240, 248, 211, 229, 236, 206, 221, 231, 198, 215, 225, 188, 205, 214, 194, 211, 219, 189, 206, 215, 197, 213, 221, 202, 218, 226, 211, 224, 233, 209, 223, 232, 215, 231, 238, 219, 233, 241, 213, 228, 236, 215, 230, 238, 214, 230, 237, 222, 234, 241, + 220, 233, 241, 215, 228, 237, 217, 230, 238, 223, 235, 243, 224, 237, 246, 225, 237, 245, 217, 230, 240, 218, 229, 239, 214, 230, 238, 219, 232, 241, 223, 236, 244, 224, 237, 245, 228, 241, 249, 225, 238, 246, 230, 243, 251, 235, 248, 254, 229, 242, 250, 226, 239, 247, 239, 250, 253, 229, 242, 251, 231, 243, 251, + 229, 242, 250, 236, 248, 253, 231, 243, 250, 231, 243, 251, 228, 240, 248, 231, 245, 252, 229, 242, 250, 227, 240, 249, 222, 234, 244, 219, 232, 242, 205, 219, 227, 199, 214, 226, 196, 211, 220, 213, 228, 237, 204, 220, 229, 199, 214, 225, 188, 204, 216, 184, 202, 213, 175, 191, 205, 175, 193, 209, 175, 193, 208, + 181, 198, 213, 181, 198, 215, 180, 198, 215, 174, 192, 210, 172, 191, 210, 173, 194, 213, 170, 192, 213, 170, 192, 216, 171, 193, 217, 172, 196, 218, 173, 196, 215, 173, 191, 208, 181, 194, 210, 180, 191, 204, 180, 192, 206, 183, 199, 215, 182, 197, 209, 183, 191, 202, 177, 185, 193, 182, 180, 186, 178, 164, 168, + 173, 152, 157, 174, 152, 156, 165, 142, 147, 171, 140, 147, 171, 143, 145, 171, 139, 139, 189, 120, 92, 190, 113, 74, 190, 108, 64, 188, 102, 49, 189, 101, 42, 187, 100, 37, 188, 97, 35, 186, 97, 33, 182, 93, 30, 179, 90, 29, 175, 90, 35, 177, 99, 49, 174, 101, 61, 176, 102, 72, 173, 101, 71, + 174, 103, 80, 175, 102, 80, 169, 100, 80, 168, 99, 74, 167, 101, 76, 162, 93, 67, 165, 97, 68, 161, 90, 56, 165, 96, 63, 169, 95, 63, 170, 94, 61, 166, 93, 61, 170, 94, 64, 168, 92, 57, 167, 88, 50, 168, 90, 51, 165, 85, 38, 167, 86, 32, 165, 82, 23, 167, 81, 18, 170, 81, 15, + 171, 82, 12, 173, 80, 10, 173, 82, 12, 171, 81, 10, 171, 80, 11, 173, 80, 11, 169, 81, 11, 167, 78, 10, 166, 78, 9, 160, 74, 7, 159, 74, 6, 158, 72, 4, 157, 71, 5, 155, 71, 6, 155, 71, 9, 152, 69, 8, 150, 70, 9, 149, 66, 9, 148, 66, 9, 146, 64, 7, 148, 66, 7, + 147, 67, 5, 149, 68, 4, 154, 69, 3, 155, 69, 3, 153, 67, 1, 151, 66, 1, 149, 66, 1, 25, 52, 62, 22, 49, 59, 21, 45, 53, 20, 44, 51, 20, 40, 49, 23, 41, 49, 21, 40, 48, 22, 40, 49, 23, 41, 48, 25, 43, 50, 27, 46, 53, 28, 46, 54, 29, 46, 55, 29, 47, 55, + 31, 49, 56, 32, 51, 58, 34, 53, 60, 37, 56, 63, 37, 56, 63, 38, 57, 64, 38, 57, 64, 39, 58, 65, 40, 59, 66, 39, 58, 66, 38, 57, 64, 41, 60, 67, 40, 59, 66, 42, 61, 68, 42, 61, 68, 42, 60, 68, 42, 60, 66, 43, 62, 68, 41, 61, 67, 43, 61, 68, 41, 59, 66, + 42, 60, 67, 40, 58, 65, 42, 61, 66, 42, 60, 65, 40, 57, 63, 40, 57, 62, 39, 55, 61, 37, 52, 58, 37, 52, 58, 34, 49, 55, 32, 46, 51, 30, 45, 49, 29, 43, 47, 26, 40, 46, 25, 39, 45, 25, 40, 43, 26, 41, 44, 26, 40, 45, 31, 43, 47, 30, 44, 48, 40, 51, 58, + 44, 58, 65, 51, 64, 71, 52, 66, 73, 65, 81, 87, 68, 86, 92, 77, 95, 102, 70, 87, 96, 86, 103, 111, 94, 110, 122, 101, 120, 129, 105, 123, 135, 115, 133, 144, 133, 151, 161, 131, 149, 159, 161, 179, 187, 169, 186, 195, 175, 192, 202, 181, 198, 206, 185, 200, 209, 193, 209, 217, 201, 216, 224, + 205, 220, 229, 187, 203, 212, 200, 213, 221, 205, 219, 227, 205, 221, 229, 209, 223, 232, 201, 216, 224, 217, 231, 239, 203, 220, 228, 221, 234, 242, 220, 233, 243, 235, 248, 252, 236, 248, 252, 234, 247, 252, 235, 248, 251, 223, 235, 244, 232, 246, 252, 232, 245, 251, 228, 243, 250, 208, 226, 234, 203, 220, 229, + 197, 214, 222, 191, 208, 217, 199, 216, 224, 190, 208, 217, 194, 211, 220, 203, 217, 226, 205, 221, 230, 209, 224, 232, 217, 232, 240, 214, 229, 238, 219, 232, 241, 217, 230, 240, 211, 227, 236, 216, 231, 238, 219, 233, 241, 216, 230, 238, 214, 229, 236, 223, 236, 244, 227, 241, 248, 225, 238, 246, 221, 234, 244, + 220, 232, 242, 217, 230, 240, 214, 229, 238, 225, 240, 247, 230, 243, 250, 229, 242, 250, 226, 239, 247, 230, 243, 251, 236, 248, 252, 230, 243, 251, 230, 243, 251, 244, 253, 255, 231, 245, 251, 231, 244, 251, 232, 245, 253, 239, 252, 254, 238, 250, 253, 234, 246, 254, 230, 242, 250, 237, 249, 254, 225, 238, 247, + 230, 244, 251, 230, 243, 251, 221, 233, 243, 218, 231, 238, 210, 224, 234, 217, 232, 241, 212, 227, 236, 201, 217, 227, 196, 212, 224, 190, 206, 218, 180, 198, 210, 179, 194, 210, 180, 198, 211, 185, 202, 214, 185, 202, 218, 181, 197, 213, 178, 196, 213, 179, 197, 215, 176, 196, 213, 178, 201, 219, 182, 203, 223, + 182, 204, 223, 178, 202, 222, 178, 202, 221, 177, 201, 218, 173, 194, 212, 181, 201, 219, 183, 202, 218, 187, 202, 219, 187, 198, 211, 184, 194, 209, 182, 195, 208, 182, 192, 204, 181, 177, 187, 180, 168, 175, 173, 157, 163, 162, 145, 153, 176, 154, 159, 175, 151, 154, 172, 144, 147, 173, 146, 151, 182, 132, 116, + 188, 109, 71, 188, 106, 66, 187, 101, 46, 186, 99, 42, 180, 96, 40, 185, 107, 61, 186, 118, 82, 185, 118, 93, 185, 120, 96, 177, 110, 89, 169, 95, 71, 166, 89, 56, 168, 87, 49, 166, 84, 41, 167, 84, 40, 165, 80, 32, 161, 76, 29, 158, 76, 26, 157, 75, 22, 158, 75, 23, 157, 74, 20, + 156, 73, 19, 156, 74, 19, 157, 73, 15, 160, 74, 14, 160, 75, 13, 164, 79, 19, 164, 79, 19, 164, 78, 23, 165, 81, 32, 164, 83, 36, 169, 89, 47, 175, 94, 55, 181, 103, 66, 182, 101, 60, 183, 102, 51, 175, 91, 42, 176, 93, 40, 178, 92, 37, 178, 92, 33, 171, 86, 23, 169, 80, 18, + 169, 82, 13, 166, 78, 10, 166, 78, 13, 163, 78, 14, 161, 74, 9, 159, 74, 11, 155, 71, 7, 154, 70, 5, 153, 71, 7, 151, 70, 7, 151, 70, 9, 147, 67, 7, 147, 66, 7, 148, 68, 7, 148, 67, 5, 150, 68, 2, 155, 70, 2, 155, 70, 2, 154, 68, 2, 153, 66, 1, 151, 67, 1, + 20, 42, 49, 19, 39, 47, 17, 35, 44, 17, 34, 43, 17, 35, 42, 20, 37, 45, 22, 39, 47, 24, 42, 49, 24, 42, 50, 27, 45, 52, 29, 47, 54, 30, 48, 56, 30, 48, 55, 32, 50, 57, 32, 50, 57, 34, 52, 59, 34, 52, 59, 37, 56, 63, 37, 56, 63, 38, 57, 64, 39, 58, 65, + 39, 58, 65, 38, 57, 64, 38, 57, 64, 40, 59, 65, 40, 59, 66, 42, 61, 68, 42, 60, 67, 43, 62, 68, 41, 59, 66, 42, 61, 66, 41, 60, 65, 41, 60, 65, 40, 59, 64, 39, 58, 63, 39, 57, 62, 38, 56, 61, 39, 55, 60, 38, 55, 61, 38, 53, 59, 37, 51, 57, 35, 49, 55, + 33, 47, 53, 31, 45, 51, 30, 44, 49, 26, 40, 46, 24, 38, 42, 22, 35, 39, 24, 37, 40, 25, 38, 42, 29, 42, 45, 34, 46, 50, 34, 46, 51, 40, 52, 57, 46, 58, 66, 49, 61, 70, 61, 73, 81, 73, 88, 96, 80, 97, 106, 72, 89, 97, 94, 111, 122, 102, 119, 130, 85, 102, 113, + 91, 109, 120, 114, 132, 143, 127, 145, 156, 115, 132, 146, 123, 140, 152, 143, 161, 172, 148, 166, 178, 151, 169, 178, 178, 196, 203, 165, 182, 192, 185, 202, 211, 188, 206, 214, 194, 210, 218, 199, 216, 224, 204, 219, 228, 199, 214, 223, 194, 211, 219, 208, 223, 231, 201, 216, 224, 217, 232, 241, 205, 220, 227, + 211, 227, 234, 210, 226, 235, 211, 224, 233, 218, 233, 242, 231, 245, 250, 232, 244, 250, 240, 252, 253, 236, 248, 253, 219, 232, 242, 230, 243, 250, 234, 248, 251, 225, 240, 247, 226, 240, 247, 213, 230, 239, 198, 216, 225, 193, 210, 218, 187, 205, 213, 187, 204, 214, 191, 207, 216, 208, 223, 232, 205, 223, 231, + 212, 228, 237, 218, 234, 241, 211, 227, 234, 226, 241, 248, 217, 232, 239, 205, 223, 232, 208, 223, 232, 213, 228, 237, 208, 224, 230, 218, 233, 240, 225, 237, 245, 230, 242, 250, 221, 234, 242, 223, 235, 245, 224, 235, 245, 225, 238, 247, 219, 234, 242, 223, 237, 246, 230, 243, 249, 228, 241, 249, 228, 241, 249, + 230, 243, 252, 237, 250, 252, 233, 247, 252, 233, 245, 253, 236, 250, 254, 232, 246, 253, 230, 242, 250, 235, 248, 254, 239, 252, 253, 236, 249, 253, 236, 248, 252, 232, 245, 253, 238, 251, 253, 227, 240, 247, 236, 247, 253, 224, 237, 246, 223, 235, 245, 226, 239, 247, 216, 232, 240, 220, 234, 244, 218, 232, 242, + 206, 223, 232, 200, 216, 227, 189, 205, 217, 187, 204, 217, 188, 204, 215, 190, 208, 219, 189, 206, 218, 191, 208, 221, 185, 201, 217, 185, 204, 219, 183, 201, 218, 185, 204, 221, 184, 205, 222, 183, 206, 224, 183, 204, 225, 179, 202, 221, 180, 203, 221, 170, 190, 208, 178, 201, 218, 180, 200, 218, 182, 202, 219, + 184, 203, 220, 181, 197, 211, 181, 190, 203, 182, 191, 202, 184, 189, 200, 181, 182, 192, 176, 169, 181, 170, 159, 170, 174, 152, 156, 173, 140, 139, 177, 132, 126, 176, 130, 125, 170, 134, 136, 173, 143, 146, 180, 130, 114, 180, 115, 86, 191, 128, 102, 189, 130, 115, 186, 126, 110, 179, 112, 88, 176, 96, 61, + 177, 92, 49, 173, 87, 39, 169, 87, 33, 169, 84, 35, 168, 85, 31, 168, 84, 35, 166, 82, 33, 167, 83, 36, 165, 81, 33, 162, 79, 30, 159, 76, 23, 160, 75, 25, 159, 76, 23, 160, 77, 21, 157, 74, 18, 159, 74, 18, 161, 76, 15, 163, 78, 17, 162, 76, 11, 165, 77, 13, 163, 75, 11, + 164, 77, 11, 165, 78, 13, 165, 78, 15, 171, 82, 15, 176, 83, 15, 176, 82, 11, 176, 83, 10, 175, 83, 7, 175, 85, 14, 176, 85, 18, 175, 89, 26, 177, 95, 44, 180, 98, 60, 180, 101, 64, 177, 97, 52, 171, 86, 29, 168, 84, 33, 167, 84, 43, 164, 88, 53, 161, 89, 55, 162, 89, 51, + 162, 88, 55, 160, 87, 50, 154, 77, 26, 150, 71, 13, 148, 67, 10, 148, 67, 9, 147, 69, 5, 150, 68, 6, 153, 67, 3, 155, 69, 4, 157, 70, 2, 155, 70, 2, 153, 68, 1, 151, 67, 1, 15, 32, 40, 14, 31, 40, 14, 31, 39, 16, 35, 42, 19, 36, 44, 21, 40, 47, 24, 42, 49, + 25, 43, 50, 26, 44, 51, 29, 47, 54, 30, 48, 55, 31, 49, 56, 32, 51, 57, 32, 52, 59, 35, 53, 60, 33, 52, 59, 36, 55, 62, 37, 55, 62, 35, 54, 61, 39, 58, 65, 38, 57, 64, 40, 58, 65, 39, 57, 64, 39, 57, 64, 40, 59, 65, 39, 59, 65, 42, 61, 68, 42, 60, 67, + 40, 59, 66, 41, 59, 66, 40, 58, 65, 41, 58, 63, 40, 58, 64, 38, 56, 61, 39, 54, 61, 38, 53, 58, 36, 51, 57, 36, 50, 56, 36, 49, 57, 35, 48, 53, 31, 46, 52, 30, 44, 50, 29, 43, 47, 26, 41, 45, 26, 39, 43, 25, 38, 44, 28, 41, 45, 31, 43, 48, 28, 40, 44, + 35, 47, 52, 35, 47, 51, 44, 56, 61, 53, 64, 71, 49, 61, 68, 57, 70, 78, 68, 83, 91, 67, 80, 89, 89, 106, 115, 94, 111, 121, 98, 115, 126, 100, 118, 129, 129, 147, 158, 109, 126, 138, 111, 129, 140, 139, 157, 168, 131, 149, 160, 133, 151, 164, 134, 152, 163, 155, 173, 184, 147, 164, 176, + 152, 168, 181, 171, 187, 198, 176, 193, 203, 176, 194, 202, 190, 205, 214, 196, 212, 220, 196, 213, 221, 195, 210, 219, 205, 219, 227, 204, 220, 228, 209, 223, 232, 206, 222, 229, 206, 220, 228, 213, 225, 233, 215, 231, 238, 213, 226, 233, 206, 222, 230, 219, 235, 242, 230, 245, 250, 223, 236, 245, 230, 242, 248, + 233, 247, 253, 224, 238, 246, 229, 243, 250, 238, 252, 253, 236, 248, 251, 233, 245, 251, 210, 227, 234, 204, 220, 230, 195, 212, 222, 182, 199, 208, 186, 202, 214, 185, 202, 211, 219, 236, 242, 214, 229, 238, 203, 219, 227, 214, 229, 238, 215, 230, 238, 222, 238, 246, 218, 233, 241, 204, 220, 231, 204, 219, 228, + 206, 222, 230, 210, 226, 233, 217, 230, 239, 222, 235, 243, 221, 234, 243, 221, 235, 243, 221, 234, 242, 226, 238, 248, 225, 238, 246, 230, 243, 251, 221, 236, 244, 226, 239, 247, 224, 236, 245, 234, 248, 253, 228, 241, 248, 237, 250, 253, 237, 250, 252, 236, 248, 252, 236, 251, 254, 230, 241, 251, 230, 244, 251, + 238, 250, 253, 238, 250, 254, 240, 251, 254, 235, 250, 253, 238, 250, 254, 237, 250, 254, 232, 244, 251, 238, 250, 253, 226, 240, 248, 232, 244, 250, 234, 246, 251, 225, 238, 246, 226, 239, 248, 220, 233, 243, 221, 235, 243, 203, 220, 229, 199, 215, 227, 191, 208, 218, 198, 214, 226, 198, 214, 225, 195, 213, 224, + 188, 204, 219, 191, 207, 222, 193, 213, 226, 190, 207, 223, 190, 209, 224, 187, 205, 222, 175, 196, 216, 178, 199, 218, 184, 204, 220, 174, 192, 209, 178, 195, 212, 176, 195, 211, 178, 195, 213, 176, 192, 209, 177, 196, 214, 177, 196, 214, 177, 196, 213, 175, 190, 204, 175, 184, 195, 175, 176, 186, 167, 170, 182, + 171, 166, 177, 175, 159, 165, 176, 146, 147, 177, 131, 126, 174, 121, 106, 170, 121, 115, 176, 147, 152, 180, 164, 164, 178, 144, 145, 174, 113, 96, 177, 97, 62, 176, 93, 52, 178, 93, 48, 176, 92, 45, 173, 88, 41, 174, 89, 41, 171, 88, 37, 166, 82, 29, 167, 84, 29, 166, 82, 31, 166, 82, 32, + 165, 81, 33, 167, 82, 36, 163, 80, 29, 158, 75, 23, 159, 76, 21, 158, 74, 19, 159, 75, 18, 160, 77, 21, 162, 78, 21, 165, 78, 19, 166, 79, 16, 164, 78, 13, 166, 78, 14, 166, 78, 14, 167, 80, 14, 168, 81, 15, 170, 81, 14, 174, 81, 9, 178, 85, 9, 180, 86, 9, 178, 86, 7, + 181, 85, 4, 181, 86, 2, 178, 85, 8, 177, 84, 10, 179, 84, 10, 178, 84, 9, 179, 85, 9, 178, 86, 14, 173, 85, 18, 169, 80, 17, 167, 79, 21, 163, 79, 23, 160, 79, 31, 161, 82, 38, 158, 81, 51, 156, 84, 60, 154, 77, 35, 155, 74, 21, 153, 73, 14, 153, 73, 16, 153, 74, 20, + 153, 75, 31, 157, 86, 54, 159, 82, 27, 156, 73, 4, 157, 70, 2, 154, 70, 3, 152, 68, 1, 13, 30, 38, 15, 33, 40, 18, 36, 43, 18, 36, 44, 21, 39, 45, 20, 39, 46, 24, 42, 49, 24, 42, 49, 27, 45, 52, 29, 47, 54, 29, 48, 56, 30, 50, 57, 32, 50, 58, 34, 52, 59, + 36, 54, 61, 35, 53, 60, 35, 53, 60, 36, 54, 61, 36, 55, 62, 37, 56, 63, 39, 57, 64, 39, 56, 63, 39, 57, 64, 38, 56, 63, 39, 57, 64, 40, 58, 65, 39, 58, 64, 40, 59, 65, 39, 57, 63, 38, 55, 61, 37, 54, 60, 38, 54, 60, 37, 52, 58, 38, 52, 58, 35, 49, 55, + 34, 48, 54, 32, 46, 52, 32, 47, 50, 30, 44, 50, 32, 44, 48, 30, 42, 47, 27, 40, 44, 32, 44, 49, 32, 44, 48, 24, 37, 42, 34, 46, 51, 36, 48, 53, 47, 57, 65, 50, 62, 68, 35, 45, 53, 47, 61, 66, 55, 67, 74, 64, 76, 84, 52, 65, 74, 66, 78, 87, 73, 90, 99, + 69, 85, 94, 105, 121, 132, 107, 124, 136, 129, 146, 158, 113, 132, 142, 131, 148, 160, 133, 150, 163, 126, 144, 155, 140, 157, 169, 158, 176, 187, 139, 156, 169, 158, 174, 186, 162, 179, 191, 151, 168, 180, 170, 187, 196, 179, 197, 206, 191, 208, 217, 190, 208, 215, 196, 213, 222, 196, 212, 221, 199, 216, 224, + 206, 221, 229, 204, 220, 227, 207, 222, 231, 205, 222, 229, 215, 228, 236, 204, 219, 226, 212, 225, 233, 220, 233, 241, 222, 235, 243, 220, 235, 243, 223, 237, 245, 225, 238, 246, 226, 237, 245, 236, 249, 252, 228, 242, 250, 237, 249, 253, 226, 239, 247, 232, 246, 250, 238, 251, 252, 235, 248, 252, 225, 241, 249, + 212, 229, 239, 192, 209, 219, 188, 206, 214, 175, 193, 204, 187, 204, 215, 212, 227, 235, 209, 223, 232, 204, 222, 229, 217, 233, 242, 212, 227, 236, 213, 228, 238, 211, 227, 235, 206, 224, 232, 201, 218, 227, 208, 223, 233, 215, 231, 238, 214, 229, 236, 215, 232, 239, 215, 230, 238, 228, 239, 247, 218, 231, 239, + 229, 242, 250, 229, 239, 247, 233, 247, 251, 226, 238, 246, 222, 234, 244, 222, 235, 245, 237, 251, 255, 226, 239, 248, 240, 253, 254, 237, 250, 254, 235, 247, 253, 239, 252, 254, 236, 249, 253, 234, 247, 251, 239, 252, 252, 238, 251, 254, 236, 248, 253, 240, 253, 254, 236, 248, 252, 229, 242, 251, 232, 243, 252, + 237, 250, 252, 231, 244, 252, 236, 249, 253, 238, 250, 254, 235, 248, 253, 229, 243, 251, 229, 242, 250, 226, 237, 248, 216, 232, 240, 210, 226, 234, 215, 230, 240, 211, 226, 238, 209, 225, 237, 192, 209, 220, 193, 211, 223, 198, 216, 228, 199, 216, 230, 205, 222, 236, 199, 216, 233, 189, 208, 224, 178, 200, 217, + 183, 204, 221, 180, 198, 215, 165, 182, 198, 172, 188, 201, 177, 192, 207, 176, 190, 205, 179, 195, 211, 177, 193, 209, 176, 195, 214, 179, 199, 220, 180, 201, 221, 173, 195, 214, 166, 182, 199, 172, 178, 191, 172, 176, 188, 168, 164, 171, 171, 159, 166, 172, 154, 161, 181, 161, 162, 181, 144, 145, 166, 122, 123, + 166, 121, 119, 167, 112, 99, 173, 103, 79, 173, 94, 56, 175, 93, 51, 177, 93, 47, 175, 90, 44, 172, 88, 41, 172, 87, 40, 170, 86, 38, 170, 86, 38, 164, 81, 27, 166, 82, 30, 163, 79, 28, 165, 81, 31, 164, 79, 28, 161, 78, 24, 159, 76, 23, 161, 78, 25, 162, 77, 21, 160, 77, 16, + 162, 78, 20, 164, 79, 24, 165, 79, 17, 167, 80, 16, 170, 82, 16, 168, 78, 14, 170, 79, 13, 171, 82, 14, 172, 81, 14, 174, 81, 11, 179, 85, 6, 181, 87, 2, 182, 86, 2, 183, 87, 2, 184, 86, 2, 183, 87, 1, 181, 88, 5, 181, 88, 5, 181, 87, 7, 179, 87, 8, 179, 85, 8, + 178, 85, 11, 176, 84, 12, 170, 78, 12, 168, 78, 12, 164, 75, 10, 161, 74, 10, 162, 76, 10, 158, 74, 7, 155, 71, 4, 156, 71, 5, 152, 70, 4, 151, 68, 3, 152, 70, 6, 149, 68, 5, 153, 69, 8, 156, 75, 19, 158, 75, 14, 156, 71, 4, 157, 72, 3, 154, 72, 3, 152, 71, 3, + 13, 31, 39, 18, 35, 42, 20, 37, 44, 18, 36, 44, 20, 39, 46, 22, 40, 47, 26, 44, 51, 27, 45, 52, 28, 46, 53, 30, 48, 55, 30, 48, 56, 32, 49, 56, 33, 51, 58, 34, 52, 59, 34, 52, 59, 34, 52, 59, 36, 54, 61, 35, 53, 60, 37, 55, 62, 38, 56, 63, 37, 55, 62, + 37, 55, 62, 38, 56, 62, 37, 55, 62, 37, 55, 61, 38, 55, 62, 39, 55, 61, 37, 53, 60, 37, 53, 59, 38, 53, 58, 36, 50, 58, 35, 49, 55, 35, 49, 55, 35, 49, 55, 36, 51, 55, 39, 53, 57, 38, 52, 58, 33, 48, 53, 35, 47, 51, 37, 49, 56, 36, 48, 53, 27, 39, 44, + 25, 37, 42, 38, 50, 56, 43, 54, 60, 34, 47, 53, 23, 35, 41, 45, 55, 63, 76, 88, 95, 76, 90, 98, 68, 81, 89, 66, 79, 88, 85, 98, 107, 80, 94, 104, 65, 78, 89, 84, 99, 109, 96, 110, 123, 108, 124, 136, 132, 148, 160, 130, 147, 159, 142, 160, 171, 147, 165, 176, 128, 144, 158, + 153, 171, 180, 135, 152, 165, 164, 182, 191, 156, 173, 184, 157, 174, 185, 181, 197, 208, 160, 177, 189, 163, 181, 193, 177, 194, 204, 189, 205, 216, 186, 203, 212, 189, 207, 214, 196, 211, 221, 188, 206, 213, 203, 220, 227, 199, 214, 223, 209, 224, 232, 209, 223, 233, 213, 229, 236, 205, 220, 227, 217, 229, 238, + 213, 226, 234, 215, 228, 236, 223, 236, 245, 219, 232, 241, 226, 239, 246, 219, 234, 241, 233, 245, 251, 234, 247, 251, 239, 252, 253, 229, 243, 249, 230, 246, 252, 235, 251, 253, 233, 247, 253, 228, 243, 251, 214, 229, 240, 201, 218, 227, 196, 215, 222, 189, 205, 216, 192, 210, 217, 207, 223, 233, 214, 229, 238, + 197, 215, 223, 211, 228, 237, 218, 234, 242, 214, 230, 239, 205, 221, 231, 202, 219, 228, 200, 217, 226, 203, 220, 228, 205, 222, 231, 216, 232, 239, 213, 228, 237, 215, 231, 239, 221, 233, 242, 222, 236, 243, 228, 242, 249, 225, 237, 245, 233, 246, 252, 227, 241, 249, 222, 236, 245, 223, 235, 245, 237, 249, 253, + 226, 239, 246, 238, 251, 254, 236, 248, 253, 238, 252, 254, 240, 252, 254, 242, 254, 254, 239, 252, 253, 240, 253, 254, 237, 250, 253, 235, 247, 252, 235, 247, 254, 238, 251, 253, 230, 243, 250, 231, 244, 250, 235, 248, 252, 234, 248, 254, 237, 248, 252, 236, 248, 254, 236, 250, 253, 234, 247, 253, 233, 246, 253, + 229, 241, 250, 225, 236, 246, 224, 239, 248, 224, 238, 249, 219, 234, 243, 213, 229, 238, 211, 226, 239, 210, 228, 239, 205, 222, 234, 211, 228, 241, 209, 226, 238, 200, 217, 233, 179, 198, 215, 181, 201, 219, 188, 207, 224, 174, 194, 211, 177, 194, 208, 179, 197, 212, 185, 204, 219, 184, 203, 220, 185, 203, 220, + 181, 201, 217, 177, 194, 209, 178, 196, 217, 175, 196, 218, 165, 189, 210, 175, 199, 222, 175, 195, 215, 173, 187, 202, 170, 184, 198, 182, 195, 209, 172, 170, 181, 166, 145, 153, 169, 122, 113, 168, 113, 104, 169, 118, 114, 170, 118, 111, 172, 102, 76, 172, 97, 60, 173, 93, 50, 176, 93, 47, 175, 90, 44, + 173, 89, 43, 170, 85, 39, 169, 84, 35, 168, 83, 32, 166, 82, 30, 164, 82, 28, 166, 83, 32, 164, 80, 28, 164, 81, 28, 161, 78, 23, 160, 78, 24, 160, 77, 22, 163, 79, 21, 163, 78, 22, 165, 80, 23, 167, 80, 22, 169, 82, 18, 172, 84, 18, 174, 83, 15, 173, 83, 16, 174, 82, 12, + 174, 84, 11, 179, 84, 12, 179, 85, 9, 187, 89, 5, 187, 90, 3, 187, 90, 3, 186, 88, 1, 185, 87, 1, 187, 90, 4, 186, 88, 4, 183, 87, 3, 183, 87, 3, 181, 88, 5, 180, 87, 4, 180, 86, 8, 178, 85, 11, 174, 80, 13, 168, 77, 10, 165, 75, 10, 163, 76, 10, 161, 73, 5, + 159, 73, 8, 159, 73, 6, 157, 71, 5, 155, 72, 5, 153, 69, 3, 153, 70, 4, 151, 68, 3, 153, 69, 4, 156, 70, 4, 157, 71, 1, 157, 71, 4, 157, 70, 2, 156, 71, 3, 156, 70, 3, 18, 36, 43, 20, 38, 45, 20, 37, 44, 20, 38, 46, 22, 40, 48, 24, 41, 49, 24, 43, 50, + 25, 43, 50, 28, 46, 53, 30, 48, 55, 30, 48, 55, 32, 50, 57, 34, 52, 59, 33, 51, 57, 35, 53, 60, 35, 53, 60, 37, 55, 62, 36, 54, 61, 36, 54, 61, 36, 54, 60, 36, 54, 60, 36, 54, 60, 36, 54, 60, 36, 53, 58, 36, 52, 58, 35, 51, 57, 36, 52, 57, 36, 50, 55, + 34, 48, 54, 34, 49, 54, 36, 48, 56, 36, 50, 56, 38, 51, 57, 45, 57, 63, 48, 60, 66, 48, 61, 67, 51, 64, 71, 58, 71, 78, 59, 72, 79, 47, 61, 67, 47, 60, 67, 66, 77, 85, 60, 73, 79, 48, 59, 66, 49, 60, 67, 46, 57, 64, 61, 73, 80, 49, 58, 68, 61, 73, 82, + 86, 101, 111, 93, 109, 120, 102, 115, 127, 96, 111, 121, 81, 97, 108, 95, 108, 122, 77, 92, 105, 109, 125, 137, 139, 156, 167, 126, 144, 155, 123, 139, 152, 154, 170, 183, 152, 169, 181, 144, 160, 173, 148, 165, 177, 163, 181, 191, 166, 183, 194, 181, 198, 206, 163, 180, 190, 191, 208, 217, 170, 187, 199, + 153, 169, 183, 185, 202, 212, 185, 201, 213, 184, 200, 213, 188, 204, 212, 196, 211, 223, 200, 217, 225, 196, 212, 221, 199, 215, 224, 196, 209, 218, 210, 226, 233, 211, 225, 234, 215, 229, 238, 216, 227, 238, 213, 228, 235, 217, 229, 237, 221, 235, 243, 227, 239, 247, 216, 228, 238, 228, 242, 248, 230, 242, 250, + 234, 248, 251, 236, 248, 253, 239, 251, 252, 225, 239, 249, 237, 250, 253, 228, 243, 249, 229, 245, 251, 224, 239, 248, 216, 231, 240, 207, 224, 231, 197, 215, 224, 202, 219, 227, 203, 221, 229, 212, 228, 238, 206, 221, 233, 207, 223, 232, 209, 225, 236, 215, 229, 241, 198, 214, 224, 200, 217, 226, 199, 216, 226, + 201, 219, 227, 199, 217, 226, 217, 232, 240, 209, 226, 233, 213, 228, 237, 219, 234, 241, 223, 235, 243, 224, 237, 245, 224, 237, 245, 223, 236, 245, 226, 238, 247, 229, 242, 250, 219, 231, 241, 232, 245, 252, 230, 243, 251, 236, 250, 253, 238, 249, 253, 240, 253, 253, 242, 254, 254, 240, 253, 254, 240, 253, 253, + 239, 253, 253, 240, 253, 255, 239, 251, 253, 232, 245, 253, 241, 253, 254, 236, 248, 254, 237, 249, 253, 239, 252, 253, 233, 245, 252, 240, 253, 254, 236, 250, 254, 240, 252, 253, 236, 250, 254, 234, 249, 253, 230, 243, 250, 230, 242, 251, 230, 244, 252, 225, 239, 249, 225, 240, 248, 221, 235, 246, 216, 232, 244, + 214, 231, 241, 217, 233, 246, 216, 232, 246, 203, 220, 233, 192, 212, 228, 191, 209, 225, 195, 213, 231, 189, 208, 225, 198, 218, 235, 192, 210, 224, 189, 208, 224, 183, 203, 219, 183, 202, 220, 189, 210, 229, 186, 209, 226, 182, 201, 221, 174, 193, 210, 170, 190, 210, 172, 195, 216, 177, 201, 224, 174, 201, 226, + 180, 205, 228, 175, 200, 225, 165, 177, 197, 169, 172, 186, 170, 158, 166, 173, 140, 139, 170, 113, 99, 167, 113, 102, 167, 119, 114, 170, 106, 85, 173, 98, 63, 173, 94, 53, 176, 92, 45, 176, 91, 44, 173, 91, 44, 173, 87, 42, 170, 86, 36, 169, 85, 34, 169, 84, 35, 166, 83, 30, 167, 83, 32, + 165, 83, 31, 164, 82, 31, 162, 80, 26, 165, 82, 31, 163, 81, 25, 162, 78, 20, 165, 79, 22, 167, 81, 25, 170, 81, 21, 173, 84, 17, 175, 86, 15, 179, 85, 13, 178, 86, 10, 180, 86, 6, 182, 87, 4, 182, 86, 5, 184, 89, 6, 187, 88, 2, 190, 90, 5, 190, 91, 5, 188, 90, 1, + 189, 90, 3, 188, 92, 6, 185, 88, 2, 186, 89, 2, 183, 87, 1, 183, 87, 1, 182, 88, 3, 183, 88, 5, 179, 83, 8, 173, 81, 9, 171, 81, 13, 167, 78, 13, 165, 78, 12, 160, 74, 8, 159, 74, 8, 158, 73, 6, 159, 72, 5, 155, 70, 3, 154, 70, 5, 153, 70, 4, 153, 69, 3, + 156, 69, 3, 157, 70, 3, 156, 71, 2, 161, 74, 5, 161, 73, 3, 158, 73, 2, 157, 71, 1, 19, 37, 44, 21, 39, 46, 21, 39, 46, 21, 39, 46, 23, 41, 49, 24, 42, 49, 26, 44, 51, 26, 44, 51, 28, 46, 53, 31, 49, 56, 30, 48, 55, 31, 49, 56, 33, 50, 58, 33, 52, 57, + 33, 51, 59, 35, 53, 60, 35, 52, 59, 34, 52, 59, 35, 51, 58, 35, 51, 58, 34, 51, 57, 35, 50, 56, 34, 49, 55, 33, 48, 54, 33, 48, 54, 32, 46, 52, 32, 46, 52, 32, 45, 51, 35, 48, 53, 36, 49, 56, 41, 53, 58, 44, 57, 61, 39, 52, 58, 44, 57, 63, 51, 63, 70, + 54, 67, 75, 54, 67, 75, 57, 70, 79, 72, 84, 94, 72, 87, 96, 79, 94, 102, 75, 90, 100, 82, 99, 109, 87, 104, 113, 81, 96, 104, 64, 75, 83, 49, 61, 67, 63, 74, 85, 64, 76, 86, 97, 114, 124, 86, 101, 114, 112, 128, 140, 132, 148, 161, 141, 158, 169, 90, 106, 119, 112, 126, 140, + 126, 142, 154, 156, 172, 184, 139, 156, 167, 128, 146, 159, 154, 171, 182, 147, 165, 176, 159, 177, 187, 165, 181, 193, 158, 175, 187, 164, 182, 192, 181, 197, 207, 182, 199, 208, 185, 202, 208, 170, 186, 198, 146, 162, 177, 179, 195, 206, 184, 200, 212, 180, 196, 207, 195, 211, 219, 188, 205, 214, 203, 220, 229, + 183, 199, 208, 179, 195, 206, 196, 212, 220, 192, 208, 217, 208, 223, 231, 206, 222, 229, 220, 231, 240, 217, 230, 239, 222, 234, 242, 220, 233, 241, 225, 239, 247, 224, 237, 245, 223, 238, 245, 232, 244, 250, 234, 247, 252, 231, 244, 250, 238, 250, 252, 232, 245, 252, 237, 252, 253, 239, 252, 254, 234, 246, 252, + 227, 243, 251, 228, 241, 249, 219, 234, 243, 220, 232, 242, 211, 226, 235, 215, 229, 238, 214, 229, 238, 212, 230, 239, 214, 231, 239, 208, 227, 234, 209, 226, 236, 197, 214, 223, 200, 217, 227, 201, 218, 227, 199, 216, 225, 201, 218, 227, 217, 232, 241, 210, 227, 236, 209, 226, 234, 215, 230, 238, 223, 236, 245, + 220, 235, 242, 228, 241, 250, 223, 235, 244, 223, 236, 244, 230, 244, 251, 222, 234, 243, 227, 242, 251, 229, 242, 249, 235, 248, 252, 236, 247, 252, 240, 251, 252, 244, 254, 254, 242, 254, 254, 240, 254, 253, 239, 252, 255, 240, 253, 254, 239, 253, 255, 232, 247, 253, 239, 253, 254, 237, 250, 253, 230, 243, 250, + 235, 247, 250, 238, 250, 254, 237, 250, 254, 241, 253, 254, 241, 253, 253, 241, 254, 254, 240, 252, 255, 230, 243, 251, 234, 249, 254, 230, 243, 252, 235, 250, 254, 225, 241, 250, 223, 238, 247, 221, 238, 248, 224, 240, 251, 219, 235, 247, 216, 232, 245, 207, 224, 237, 205, 222, 237, 210, 227, 241, 214, 231, 247, + 199, 217, 233, 199, 217, 234, 200, 220, 237, 191, 211, 228, 188, 207, 225, 187, 207, 224, 190, 210, 227, 186, 208, 226, 180, 204, 222, 173, 196, 217, 176, 200, 220, 178, 200, 221, 184, 207, 231, 177, 201, 227, 170, 194, 220, 169, 191, 216, 167, 187, 207, 164, 176, 191, 164, 170, 184, 166, 155, 159, 172, 127, 119, + 167, 108, 93, 169, 117, 111, 174, 119, 108, 176, 99, 65, 176, 99, 60, 175, 91, 43, 176, 93, 45, 173, 91, 44, 173, 88, 42, 171, 86, 36, 171, 87, 36, 170, 85, 35, 167, 83, 32, 170, 87, 36, 169, 85, 36, 168, 85, 39, 166, 85, 36, 165, 82, 27, 166, 83, 29, 168, 82, 28, 169, 82, 26, + 171, 83, 24, 173, 85, 18, 178, 86, 14, 181, 89, 11, 182, 87, 7, 182, 89, 5, 185, 88, 4, 186, 88, 3, 184, 88, 4, 186, 88, 2, 190, 91, 6, 191, 92, 7, 191, 93, 7, 189, 90, 5, 189, 91, 7, 189, 90, 4, 188, 91, 4, 187, 89, 3, 187, 90, 3, 184, 89, 1, 185, 88, 1, + 183, 87, 2, 179, 84, 6, 174, 82, 10, 171, 80, 11, 165, 78, 12, 166, 78, 12, 164, 77, 12, 161, 75, 9, 160, 73, 8, 159, 73, 6, 157, 72, 4, 157, 71, 5, 154, 69, 4, 154, 70, 5, 156, 69, 3, 158, 72, 4, 159, 74, 4, 161, 73, 3, 162, 73, 2, 159, 71, 2, 158, 71, 2, + 22, 40, 47, 21, 39, 46, 23, 40, 48, 23, 40, 47, 24, 42, 49, 26, 43, 50, 25, 43, 50, 28, 46, 53, 27, 45, 52, 29, 47, 54, 32, 49, 56, 33, 50, 57, 32, 49, 56, 33, 50, 57, 32, 49, 57, 36, 52, 58, 36, 52, 59, 34, 50, 57, 33, 49, 55, 32, 48, 54, 32, 46, 53, + 34, 47, 53, 29, 45, 51, 31, 45, 51, 30, 44, 50, 33, 47, 53, 36, 49, 55, 33, 46, 51, 32, 44, 52, 31, 42, 50, 31, 42, 50, 31, 43, 50, 33, 44, 52, 50, 61, 68, 56, 68, 75, 66, 79, 87, 53, 65, 74, 67, 79, 88, 68, 81, 91, 72, 86, 96, 68, 83, 93, 97, 112, 124, + 79, 94, 106, 85, 102, 113, 116, 132, 142, 113, 127, 138, 92, 107, 119, 73, 86, 100, 92, 105, 118, 99, 116, 128, 69, 84, 97, 124, 139, 151, 120, 138, 149, 135, 150, 163, 158, 174, 186, 139, 155, 166, 138, 156, 167, 165, 181, 193, 159, 175, 187, 160, 177, 188, 141, 158, 170, 161, 177, 188, 167, 185, 197, + 159, 176, 188, 143, 161, 173, 164, 181, 193, 187, 204, 214, 170, 187, 198, 190, 207, 216, 183, 199, 211, 148, 165, 178, 176, 192, 204, 183, 199, 209, 175, 191, 202, 188, 204, 213, 188, 204, 212, 197, 213, 222, 199, 216, 225, 184, 201, 210, 213, 229, 236, 195, 212, 219, 209, 225, 234, 205, 221, 228, 211, 224, 234, + 215, 227, 236, 219, 230, 239, 220, 235, 242, 223, 238, 246, 222, 234, 241, 229, 242, 248, 215, 230, 237, 232, 243, 250, 225, 238, 245, 232, 245, 252, 235, 248, 254, 231, 245, 249, 235, 250, 253, 240, 251, 253, 232, 245, 254, 234, 249, 253, 232, 245, 251, 225, 239, 247, 230, 241, 251, 227, 241, 249, 225, 239, 247, + 219, 235, 244, 221, 235, 247, 214, 230, 240, 209, 226, 238, 202, 217, 229, 201, 217, 229, 199, 215, 226, 198, 215, 224, 201, 218, 228, 218, 233, 242, 214, 230, 238, 202, 220, 228, 210, 226, 235, 212, 228, 236, 219, 234, 240, 227, 241, 249, 222, 234, 244, 229, 242, 250, 227, 241, 248, 224, 236, 244, 228, 242, 251, + 230, 244, 252, 234, 247, 253, 238, 250, 254, 240, 253, 253, 242, 254, 254, 243, 253, 253, 242, 254, 253, 238, 251, 254, 241, 254, 255, 238, 250, 252, 238, 250, 254, 239, 253, 252, 236, 248, 254, 233, 246, 251, 233, 249, 252, 235, 247, 252, 233, 246, 254, 242, 253, 254, 242, 252, 252, 242, 254, 254, 241, 253, 254, + 233, 247, 253, 234, 246, 253, 235, 248, 254, 232, 244, 253, 227, 241, 250, 230, 244, 253, 231, 246, 254, 225, 241, 253, 223, 239, 251, 220, 236, 248, 214, 232, 244, 217, 233, 247, 213, 230, 243, 198, 217, 232, 205, 224, 239, 194, 213, 230, 191, 213, 230, 187, 207, 224, 192, 213, 231, 188, 208, 226, 186, 206, 223, + 177, 199, 217, 175, 199, 218, 178, 203, 224, 181, 204, 226, 184, 208, 230, 175, 200, 225, 169, 195, 218, 168, 192, 214, 167, 191, 215, 165, 189, 212, 166, 186, 205, 163, 171, 186, 163, 165, 173, 166, 145, 145, 165, 104, 88, 166, 110, 99, 168, 116, 107, 172, 99, 65, 177, 99, 60, 174, 92, 45, 176, 91, 44, + 177, 93, 46, 176, 91, 45, 172, 88, 36, 173, 88, 40, 171, 87, 36, 172, 89, 36, 172, 87, 40, 170, 87, 40, 167, 83, 35, 168, 84, 31, 169, 82, 27, 170, 85, 29, 170, 82, 25, 173, 84, 23, 174, 86, 19, 180, 87, 11, 182, 88, 7, 186, 91, 7, 187, 89, 4, 189, 91, 8, 188, 90, 6, + 187, 88, 3, 188, 91, 6, 190, 93, 7, 192, 93, 9, 193, 96, 13, 191, 93, 12, 188, 92, 7, 188, 90, 3, 189, 92, 5, 187, 89, 4, 186, 89, 2, 185, 88, 1, 186, 89, 2, 185, 87, 1, 182, 86, 3, 180, 87, 5, 176, 83, 10, 173, 80, 11, 170, 80, 13, 165, 77, 11, 164, 77, 12, + 161, 74, 8, 160, 73, 6, 159, 72, 6, 158, 72, 6, 156, 70, 4, 157, 70, 5, 154, 70, 5, 156, 71, 2, 158, 72, 3, 161, 74, 4, 162, 74, 5, 163, 72, 2, 160, 72, 2, 160, 72, 2, 22, 40, 47, 21, 39, 46, 23, 40, 48, 23, 41, 48, 24, 42, 49, 24, 42, 49, 27, 45, 52, + 26, 44, 51, 29, 46, 53, 28, 46, 53, 30, 47, 54, 31, 47, 54, 32, 49, 56, 34, 49, 56, 32, 48, 55, 34, 48, 55, 32, 48, 55, 32, 47, 54, 31, 46, 52, 31, 45, 51, 30, 43, 50, 29, 43, 49, 31, 45, 50, 32, 46, 52, 32, 46, 52, 37, 50, 57, 37, 49, 56, 36, 47, 55, + 34, 45, 53, 32, 43, 51, 32, 43, 51, 34, 44, 53, 42, 52, 60, 36, 47, 56, 41, 51, 60, 63, 74, 84, 81, 93, 102, 67, 80, 92, 72, 85, 97, 65, 77, 88, 93, 109, 121, 85, 99, 111, 98, 113, 126, 80, 95, 107, 79, 93, 107, 159, 177, 189, 132, 148, 161, 118, 135, 146, 87, 101, 111, + 104, 120, 132, 117, 131, 144, 84, 98, 110, 133, 149, 162, 122, 138, 151, 162, 179, 190, 176, 192, 202, 161, 179, 188, 158, 174, 186, 177, 193, 204, 156, 172, 184, 144, 160, 172, 162, 178, 191, 173, 189, 201, 168, 186, 197, 153, 170, 183, 163, 179, 191, 169, 186, 197, 182, 200, 207, 196, 213, 222, 197, 214, 223, + 159, 176, 190, 161, 177, 190, 185, 201, 211, 179, 197, 206, 176, 193, 203, 188, 205, 214, 194, 211, 220, 200, 217, 226, 194, 210, 219, 195, 211, 221, 196, 214, 222, 198, 215, 224, 199, 215, 222, 196, 213, 223, 217, 230, 240, 220, 234, 242, 216, 230, 239, 223, 239, 246, 227, 239, 247, 228, 240, 249, 223, 236, 242, + 224, 237, 243, 226, 240, 247, 230, 245, 250, 233, 246, 252, 236, 248, 252, 232, 245, 252, 238, 250, 254, 240, 251, 253, 230, 243, 251, 231, 244, 251, 232, 247, 253, 234, 247, 252, 235, 249, 253, 232, 245, 252, 232, 245, 253, 221, 236, 247, 222, 237, 246, 219, 234, 244, 212, 228, 239, 207, 224, 232, 198, 215, 225, + 201, 218, 227, 204, 221, 229, 216, 231, 240, 210, 226, 235, 203, 220, 229, 216, 232, 239, 212, 228, 236, 220, 234, 242, 223, 237, 246, 226, 237, 247, 227, 240, 249, 229, 241, 247, 230, 243, 250, 237, 250, 253, 226, 241, 248, 238, 250, 253, 237, 250, 254, 239, 251, 252, 243, 254, 255, 239, 252, 254, 241, 254, 253, + 241, 254, 254, 238, 252, 253, 239, 252, 253, 246, 254, 254, 236, 251, 253, 237, 250, 254, 236, 247, 251, 232, 246, 253, 232, 244, 251, 236, 248, 254, 233, 246, 252, 240, 251, 254, 246, 255, 253, 237, 250, 253, 234, 248, 253, 240, 253, 254, 238, 251, 254, 235, 248, 254, 235, 250, 254, 233, 249, 253, 228, 244, 253, + 228, 242, 252, 229, 247, 253, 227, 242, 252, 219, 236, 249, 219, 235, 248, 214, 232, 243, 207, 224, 237, 201, 218, 232, 200, 219, 233, 200, 219, 236, 196, 216, 233, 191, 211, 229, 189, 209, 227, 183, 205, 222, 184, 205, 227, 187, 211, 233, 189, 213, 235, 182, 206, 229, 175, 199, 222, 172, 196, 218, 174, 198, 221, + 177, 201, 223, 173, 197, 223, 169, 193, 216, 170, 191, 213, 167, 182, 199, 164, 173, 187, 168, 165, 175, 172, 137, 133, 172, 119, 111, 172, 120, 111, 178, 104, 77, 178, 98, 62, 175, 94, 52, 178, 94, 47, 177, 91, 45, 176, 92, 45, 177, 92, 43, 175, 90, 40, 176, 90, 40, 175, 92, 41, 174, 91, 39, + 170, 86, 30, 172, 88, 32, 173, 87, 29, 173, 86, 28, 174, 87, 26, 176, 88, 24, 178, 87, 17, 183, 92, 15, 187, 91, 8, 190, 94, 14, 189, 94, 10, 191, 94, 12, 191, 93, 10, 191, 92, 10, 191, 92, 9, 190, 93, 12, 193, 93, 11, 196, 97, 13, 193, 94, 11, 192, 94, 11, 193, 95, 15, + 191, 92, 8, 188, 90, 7, 189, 92, 6, 188, 90, 5, 187, 88, 4, 187, 90, 2, 185, 88, 2, 185, 88, 8, 180, 86, 7, 177, 84, 10, 174, 81, 9, 168, 79, 9, 168, 79, 11, 163, 77, 10, 163, 76, 9, 160, 74, 5, 163, 76, 10, 160, 73, 6, 159, 74, 6, 158, 71, 7, 154, 71, 4, + 156, 71, 3, 158, 72, 2, 161, 73, 3, 165, 75, 5, 165, 76, 4, 162, 73, 3, 161, 74, 1, 21, 39, 46, 23, 41, 48, 23, 41, 48, 24, 42, 49, 24, 41, 48, 27, 44, 51, 27, 45, 52, 28, 46, 53, 28, 45, 52, 27, 45, 51, 30, 46, 51, 30, 46, 52, 31, 48, 53, 30, 46, 53, + 29, 45, 51, 31, 44, 50, 29, 42, 49, 28, 41, 49, 31, 45, 50, 33, 47, 53, 33, 46, 53, 34, 47, 54, 39, 52, 59, 41, 54, 61, 39, 52, 61, 41, 53, 62, 39, 52, 60, 38, 49, 58, 33, 42, 52, 30, 40, 49, 28, 36, 47, 23, 31, 43, 29, 38, 49, 46, 58, 66, 50, 60, 70, + 56, 65, 75, 51, 61, 72, 80, 95, 104, 90, 106, 119, 88, 105, 117, 90, 107, 119, 99, 115, 128, 110, 126, 139, 89, 106, 118, 77, 89, 104, 75, 89, 101, 140, 157, 169, 141, 157, 170, 143, 161, 172, 139, 154, 167, 153, 169, 182, 123, 140, 153, 131, 146, 160, 122, 137, 153, 142, 160, 173, 169, 185, 198, + 186, 203, 212, 169, 185, 196, 192, 208, 215, 175, 191, 203, 158, 174, 186, 172, 188, 200, 166, 182, 194, 185, 202, 211, 168, 184, 195, 147, 164, 176, 173, 190, 200, 168, 185, 196, 189, 206, 216, 197, 213, 222, 182, 198, 207, 168, 184, 197, 172, 188, 199, 189, 205, 216, 179, 195, 205, 180, 197, 206, 200, 216, 225, + 191, 208, 217, 191, 209, 217, 196, 213, 220, 193, 208, 217, 191, 209, 217, 206, 221, 228, 205, 220, 229, 208, 224, 232, 219, 232, 241, 222, 236, 244, 224, 236, 245, 217, 232, 240, 229, 241, 249, 230, 243, 248, 228, 244, 247, 236, 251, 253, 226, 238, 248, 233, 244, 250, 234, 248, 252, 228, 242, 248, 236, 250, 253, + 235, 248, 253, 235, 249, 253, 233, 246, 252, 227, 242, 249, 235, 249, 253, 233, 247, 253, 237, 250, 254, 241, 253, 254, 229, 243, 250, 232, 246, 251, 226, 241, 249, 219, 233, 242, 216, 232, 241, 208, 224, 234, 204, 220, 232, 206, 223, 232, 210, 226, 235, 204, 222, 231, 204, 220, 231, 216, 232, 241, 217, 232, 241, + 221, 233, 242, 215, 232, 240, 223, 236, 246, 228, 245, 251, 234, 248, 253, 232, 245, 253, 240, 252, 253, 230, 242, 251, 236, 249, 253, 240, 252, 253, 243, 253, 255, 241, 254, 254, 239, 251, 254, 241, 253, 253, 241, 254, 253, 239, 251, 253, 242, 254, 254, 248, 254, 254, 241, 253, 254, 237, 250, 254, 232, 245, 249, + 233, 245, 251, 229, 243, 250, 234, 248, 253, 226, 239, 246, 237, 248, 251, 245, 254, 254, 238, 253, 253, 240, 251, 253, 246, 255, 254, 237, 251, 254, 236, 250, 254, 236, 250, 254, 233, 248, 253, 233, 249, 254, 233, 249, 254, 229, 243, 252, 227, 241, 251, 223, 238, 251, 224, 241, 251, 210, 227, 239, 216, 232, 247, + 208, 227, 243, 206, 226, 242, 200, 218, 235, 199, 218, 234, 193, 212, 229, 195, 215, 233, 189, 211, 229, 192, 217, 233, 190, 213, 235, 185, 210, 230, 180, 204, 228, 182, 206, 229, 181, 205, 227, 175, 198, 222, 170, 192, 218, 166, 192, 217, 165, 189, 215, 166, 191, 213, 166, 184, 206, 170, 179, 194, 169, 166, 177, + 170, 144, 146, 167, 105, 88, 169, 109, 91, 176, 104, 74, 179, 100, 64, 179, 99, 58, 178, 95, 46, 179, 94, 46, 177, 93, 45, 177, 94, 48, 180, 98, 48, 180, 95, 43, 177, 91, 32, 176, 90, 32, 177, 89, 28, 178, 91, 28, 178, 90, 27, 179, 91, 24, 183, 91, 23, 185, 93, 21, 185, 91, 14, + 188, 94, 14, 193, 95, 13, 195, 96, 12, 196, 98, 11, 195, 96, 11, 194, 95, 12, 194, 95, 10, 195, 96, 16, 194, 96, 14, 195, 95, 11, 195, 95, 8, 193, 94, 10, 194, 94, 12, 193, 95, 11, 192, 93, 10, 192, 94, 10, 190, 92, 10, 190, 92, 9, 187, 89, 2, 187, 87, 2, 186, 90, 3, + 184, 87, 6, 182, 87, 6, 178, 86, 9, 177, 84, 10, 172, 80, 10, 166, 77, 10, 167, 79, 14, 163, 76, 10, 162, 75, 9, 164, 77, 12, 157, 71, 4, 159, 74, 5, 158, 73, 4, 156, 72, 5, 157, 71, 4, 158, 72, 3, 162, 74, 7, 166, 78, 9, 164, 76, 5, 165, 75, 4, 160, 73, 2, + 22, 40, 47, 23, 42, 49, 25, 41, 48, 24, 41, 48, 25, 42, 49, 28, 44, 51, 27, 44, 51, 27, 44, 51, 27, 44, 49, 26, 43, 49, 27, 43, 49, 28, 43, 49, 29, 44, 50, 27, 41, 48, 26, 39, 47, 26, 39, 47, 27, 40, 47, 27, 40, 48, 33, 46, 53, 37, 50, 57, 41, 54, 62, + 41, 54, 62, 39, 55, 63, 48, 62, 71, 49, 63, 70, 42, 54, 64, 51, 62, 72, 41, 50, 62, 39, 49, 60, 26, 35, 48, 18, 25, 40, 15, 23, 37, 19, 27, 42, 18, 26, 40, 72, 82, 94, 59, 72, 83, 54, 64, 75, 64, 74, 86, 77, 90, 103, 118, 135, 148, 106, 123, 135, 117, 133, 146, + 112, 130, 142, 127, 144, 156, 101, 117, 131, 85, 100, 113, 112, 128, 140, 136, 152, 165, 123, 141, 153, 128, 144, 158, 158, 175, 185, 137, 154, 166, 148, 164, 177, 132, 148, 162, 108, 125, 139, 155, 171, 184, 177, 193, 204, 181, 196, 207, 195, 210, 220, 187, 204, 213, 162, 178, 190, 177, 194, 203, 159, 175, 187, + 192, 206, 216, 168, 187, 198, 142, 159, 173, 174, 190, 202, 163, 180, 192, 172, 189, 199, 195, 212, 221, 184, 200, 209, 185, 201, 211, 171, 187, 198, 184, 201, 210, 183, 200, 210, 179, 196, 205, 191, 208, 217, 191, 206, 215, 188, 206, 216, 185, 202, 211, 196, 213, 221, 187, 204, 213, 203, 219, 229, 208, 224, 232, + 190, 206, 216, 200, 214, 223, 218, 230, 240, 227, 240, 248, 231, 246, 251, 216, 231, 239, 221, 235, 244, 235, 248, 251, 228, 241, 248, 227, 241, 249, 230, 242, 248, 234, 247, 253, 234, 246, 251, 228, 244, 251, 233, 247, 252, 234, 249, 253, 225, 240, 248, 223, 237, 246, 234, 248, 254, 230, 245, 253, 237, 251, 254, + 238, 252, 253, 239, 252, 254, 233, 247, 252, 231, 246, 252, 227, 241, 249, 223, 238, 245, 218, 233, 242, 210, 226, 237, 206, 223, 232, 209, 226, 236, 207, 224, 233, 208, 224, 234, 211, 227, 238, 223, 237, 246, 220, 234, 243, 221, 235, 244, 222, 235, 245, 227, 244, 251, 235, 249, 254, 232, 246, 252, 239, 252, 253, + 234, 246, 252, 238, 252, 254, 239, 253, 254, 245, 252, 253, 239, 252, 253, 238, 251, 254, 242, 254, 254, 239, 254, 253, 240, 254, 253, 241, 253, 254, 250, 254, 254, 238, 252, 254, 237, 251, 254, 236, 249, 254, 228, 241, 249, 224, 238, 245, 227, 240, 248, 227, 238, 246, 239, 252, 251, 235, 247, 252, 246, 254, 253, + 246, 254, 254, 243, 255, 254, 241, 254, 253, 240, 253, 254, 238, 252, 254, 229, 243, 252, 230, 246, 252, 233, 246, 251, 224, 240, 252, 239, 253, 254, 222, 237, 247, 216, 234, 243, 224, 241, 252, 217, 234, 247, 213, 231, 246, 211, 230, 245, 208, 226, 243, 202, 221, 237, 194, 214, 231, 191, 211, 228, 193, 213, 230, + 192, 215, 231, 197, 220, 240, 191, 214, 233, 188, 209, 230, 182, 206, 228, 177, 201, 224, 170, 194, 214, 166, 189, 210, 165, 186, 208, 163, 188, 213, 159, 184, 213, 165, 188, 215, 168, 185, 204, 169, 172, 183, 166, 153, 162, 169, 123, 109, 177, 108, 84, 176, 102, 67, 178, 98, 61, 180, 99, 56, 183, 101, 52, + 181, 99, 55, 182, 100, 57, 182, 98, 50, 180, 92, 37, 181, 94, 35, 178, 91, 27, 181, 94, 28, 180, 93, 30, 183, 93, 27, 185, 93, 25, 184, 92, 18, 189, 95, 21, 190, 95, 20, 192, 96, 20, 194, 98, 16, 196, 97, 13, 197, 99, 12, 198, 99, 11, 194, 96, 8, 196, 97, 12, 196, 97, 11, + 195, 95, 12, 197, 98, 14, 195, 96, 10, 196, 97, 10, 196, 98, 12, 193, 96, 10, 194, 95, 12, 193, 95, 12, 190, 92, 6, 192, 94, 12, 192, 93, 8, 189, 91, 5, 189, 90, 3, 186, 88, 2, 187, 90, 9, 184, 88, 4, 179, 86, 7, 175, 82, 7, 173, 81, 11, 169, 78, 12, 167, 78, 12, + 165, 77, 10, 161, 74, 7, 160, 73, 7, 160, 73, 8, 159, 74, 6, 159, 73, 5, 160, 74, 7, 158, 72, 3, 160, 74, 7, 162, 76, 6, 166, 78, 9, 166, 76, 6, 164, 74, 3, 163, 73, 3, 21, 39, 46, 23, 41, 48, 26, 42, 49, 25, 41, 48, 26, 41, 48, 26, 42, 49, 28, 42, 49, + 26, 41, 48, 24, 39, 46, 24, 39, 45, 24, 38, 45, 26, 40, 47, 27, 40, 48, 24, 36, 44, 23, 36, 44, 27, 38, 46, 31, 43, 51, 26, 39, 47, 40, 50, 58, 46, 60, 67, 49, 62, 71, 49, 65, 73, 46, 61, 73, 51, 65, 77, 57, 72, 84, 50, 65, 78, 51, 63, 74, 46, 57, 70, + 41, 50, 63, 34, 42, 56, 24, 31, 45, 25, 33, 47, 22, 30, 43, 16, 23, 38, 77, 88, 101, 82, 98, 109, 61, 72, 86, 70, 80, 94, 40, 49, 63, 94, 108, 120, 124, 141, 153, 119, 135, 149, 129, 145, 158, 136, 152, 164, 133, 149, 162, 90, 107, 120, 97, 111, 124, 144, 160, 173, 94, 112, 125, + 133, 148, 163, 143, 161, 171, 155, 173, 183, 145, 162, 174, 161, 177, 189, 130, 146, 159, 149, 166, 179, 164, 181, 191, 191, 207, 217, 181, 199, 208, 191, 206, 216, 164, 180, 191, 172, 187, 198, 165, 181, 193, 181, 199, 206, 172, 189, 199, 158, 176, 189, 164, 182, 193, 167, 183, 195, 161, 177, 190, 183, 199, 210, + 203, 219, 227, 182, 199, 209, 181, 198, 208, 166, 183, 195, 190, 206, 215, 185, 201, 211, 188, 206, 215, 184, 201, 210, 183, 199, 210, 191, 207, 215, 193, 210, 218, 200, 216, 225, 176, 192, 204, 205, 222, 231, 204, 220, 227, 194, 211, 220, 210, 226, 234, 212, 226, 235, 225, 238, 246, 218, 234, 241, 219, 231, 240, + 222, 237, 244, 231, 243, 251, 232, 246, 251, 230, 241, 249, 234, 247, 253, 234, 247, 251, 218, 233, 243, 235, 249, 253, 222, 238, 249, 223, 239, 247, 214, 229, 239, 233, 248, 254, 226, 242, 249, 228, 242, 252, 230, 243, 251, 231, 245, 253, 234, 248, 252, 228, 243, 250, 228, 239, 249, 230, 244, 252, 226, 240, 249, + 223, 238, 247, 219, 235, 244, 211, 227, 238, 209, 225, 237, 205, 223, 233, 209, 225, 237, 218, 234, 245, 216, 231, 241, 221, 235, 244, 226, 242, 250, 227, 239, 249, 236, 250, 254, 228, 241, 250, 238, 250, 254, 238, 251, 254, 236, 250, 254, 242, 253, 253, 242, 253, 254, 242, 253, 253, 237, 250, 252, 241, 253, 253, + 243, 255, 254, 243, 253, 254, 247, 254, 255, 241, 253, 254, 240, 253, 253, 237, 251, 253, 232, 246, 253, 230, 245, 252, 227, 240, 248, 223, 236, 244, 228, 239, 248, 233, 246, 252, 241, 254, 253, 249, 254, 254, 243, 254, 254, 246, 254, 254, 249, 255, 254, 236, 249, 253, 239, 254, 253, 236, 251, 254, 237, 251, 254, + 231, 244, 252, 229, 245, 252, 232, 247, 253, 228, 244, 250, 224, 240, 252, 226, 243, 253, 220, 238, 250, 218, 234, 248, 213, 233, 248, 211, 229, 245, 197, 218, 234, 200, 221, 238, 203, 223, 241, 191, 210, 226, 196, 215, 232, 190, 209, 224, 190, 207, 223, 186, 205, 222, 184, 206, 223, 177, 199, 219, 170, 192, 215, + 167, 189, 210, 169, 188, 208, 164, 187, 211, 165, 188, 216, 164, 189, 219, 161, 185, 213, 165, 181, 196, 163, 162, 175, 169, 139, 138, 179, 111, 83, 177, 101, 66, 179, 100, 60, 183, 106, 62, 184, 106, 64, 182, 100, 52, 181, 95, 43, 181, 93, 36, 183, 94, 34, 184, 95, 31, 186, 95, 30, 182, 94, 28, + 185, 97, 31, 188, 94, 23, 191, 97, 23, 192, 98, 19, 193, 98, 19, 193, 100, 16, 198, 100, 17, 199, 99, 14, 202, 100, 12, 199, 102, 10, 198, 98, 8, 198, 98, 11, 196, 98, 10, 197, 98, 11, 196, 96, 12, 196, 96, 12, 198, 98, 10, 197, 97, 8, 195, 96, 10, 195, 96, 8, 195, 95, 8, + 194, 95, 10, 193, 95, 11, 193, 94, 11, 191, 93, 6, 190, 93, 6, 191, 92, 5, 187, 89, 3, 188, 90, 5, 185, 88, 3, 180, 87, 6, 175, 82, 9, 172, 80, 9, 170, 79, 12, 167, 79, 12, 165, 76, 10, 166, 75, 11, 161, 74, 8, 162, 75, 9, 160, 73, 5, 157, 71, 2, 159, 72, 6, + 160, 73, 6, 160, 74, 4, 163, 77, 8, 168, 78, 10, 168, 78, 10, 167, 76, 7, 165, 74, 4, 23, 39, 46, 23, 39, 46, 24, 38, 46, 25, 38, 45, 23, 37, 45, 25, 39, 45, 23, 37, 43, 22, 36, 43, 22, 36, 43, 22, 35, 41, 16, 32, 38, 20, 33, 41, 29, 42, 50, 27, 39, 47, + 23, 36, 44, 28, 39, 47, 38, 49, 57, 45, 57, 65, 46, 59, 67, 51, 64, 72, 44, 59, 68, 59, 71, 83, 52, 65, 78, 53, 66, 80, 57, 70, 84, 52, 65, 80, 51, 61, 76, 43, 54, 67, 39, 48, 62, 24, 33, 47, 12, 20, 36, 15, 22, 38, 33, 41, 57, 28, 36, 51, 49, 58, 71, + 116, 132, 145, 100, 115, 128, 69, 80, 91, 48, 56, 71, 75, 85, 98, 108, 123, 136, 123, 138, 151, 119, 135, 150, 140, 156, 169, 156, 172, 184, 135, 151, 165, 79, 94, 107, 110, 126, 139, 130, 147, 160, 103, 118, 134, 140, 156, 168, 157, 174, 185, 141, 158, 171, 170, 186, 196, 147, 165, 177, 152, 168, 181, + 137, 153, 165, 170, 187, 196, 184, 202, 211, 173, 190, 199, 178, 193, 204, 172, 190, 198, 177, 193, 202, 178, 196, 205, 196, 212, 221, 156, 173, 186, 151, 168, 181, 179, 196, 208, 154, 172, 185, 168, 184, 195, 197, 214, 222, 189, 204, 214, 168, 184, 195, 176, 192, 205, 167, 184, 195, 183, 200, 211, 184, 200, 210, + 178, 195, 205, 163, 180, 192, 186, 202, 212, 202, 219, 227, 208, 223, 233, 186, 202, 213, 190, 206, 217, 205, 220, 229, 199, 215, 224, 201, 218, 227, 220, 232, 242, 220, 235, 243, 220, 233, 242, 221, 237, 244, 227, 240, 248, 222, 237, 245, 233, 246, 251, 237, 249, 253, 232, 246, 252, 233, 247, 253, 227, 241, 248, + 225, 239, 249, 227, 242, 247, 227, 241, 249, 207, 224, 235, 223, 239, 246, 224, 239, 250, 220, 235, 245, 222, 237, 246, 222, 238, 246, 232, 245, 252, 223, 239, 246, 226, 241, 249, 234, 247, 253, 225, 240, 248, 235, 250, 254, 227, 242, 251, 223, 238, 246, 220, 236, 246, 209, 225, 237, 208, 224, 236, 215, 230, 242, + 214, 232, 240, 225, 240, 248, 224, 240, 248, 224, 239, 247, 230, 245, 252, 228, 241, 250, 241, 254, 254, 237, 249, 253, 237, 252, 253, 239, 252, 255, 241, 253, 254, 241, 253, 254, 238, 252, 253, 247, 255, 254, 246, 255, 255, 244, 255, 253, 248, 255, 254, 249, 254, 254, 242, 254, 254, 236, 252, 254, 232, 246, 253, + 235, 248, 254, 227, 241, 247, 230, 244, 251, 231, 243, 250, 226, 239, 246, 240, 251, 252, 247, 254, 253, 243, 253, 253, 248, 254, 253, 244, 254, 254, 240, 253, 254, 238, 253, 254, 238, 253, 254, 240, 253, 253, 236, 251, 255, 232, 246, 253, 231, 248, 253, 230, 245, 252, 225, 242, 252, 225, 241, 251, 222, 238, 251, + 223, 241, 252, 216, 231, 248, 207, 226, 242, 206, 226, 242, 204, 223, 240, 199, 221, 237, 196, 214, 231, 191, 211, 227, 189, 204, 218, 189, 205, 219, 185, 199, 212, 184, 200, 213, 176, 194, 210, 178, 199, 217, 172, 193, 214, 167, 190, 212, 170, 194, 216, 165, 189, 214, 160, 187, 215, 158, 185, 216, 160, 183, 203, + 161, 173, 188, 165, 155, 160, 177, 119, 97, 184, 113, 79, 183, 107, 68, 185, 102, 54, 185, 100, 43, 185, 100, 44, 186, 99, 43, 186, 100, 38, 187, 99, 34, 189, 99, 31, 188, 96, 27, 193, 98, 30, 192, 100, 27, 194, 100, 21, 197, 102, 21, 197, 101, 17, 199, 102, 15, 199, 102, 12, 201, 102, 11, + 203, 103, 10, 204, 105, 7, 203, 103, 7, 200, 102, 11, 199, 99, 10, 201, 102, 13, 198, 97, 11, 201, 100, 15, 201, 98, 12, 200, 99, 9, 197, 97, 8, 198, 99, 11, 196, 97, 7, 195, 97, 8, 194, 95, 9, 196, 97, 12, 193, 94, 10, 191, 92, 6, 191, 94, 7, 190, 91, 5, 189, 90, 4, + 188, 89, 3, 188, 91, 4, 179, 86, 4, 177, 84, 9, 173, 80, 10, 170, 79, 11, 168, 79, 12, 167, 77, 12, 164, 75, 10, 165, 77, 13, 161, 74, 7, 160, 73, 6, 161, 75, 7, 162, 75, 7, 162, 74, 6, 163, 75, 5, 165, 77, 7, 168, 77, 8, 167, 78, 6, 164, 75, 4, 166, 76, 5, + 21, 36, 44, 20, 37, 43, 22, 35, 42, 22, 37, 43, 25, 37, 43, 22, 36, 40, 22, 35, 40, 19, 33, 39, 14, 29, 35, 15, 30, 36, 12, 28, 35, 11, 28, 35, 28, 40, 47, 30, 41, 50, 33, 43, 53, 42, 54, 63, 48, 59, 68, 43, 56, 64, 50, 64, 73, 57, 72, 83, 44, 58, 71, + 45, 59, 72, 48, 61, 76, 49, 62, 78, 50, 62, 78, 48, 61, 76, 47, 58, 74, 39, 48, 64, 26, 35, 51, 39, 48, 62, 30, 38, 54, 16, 23, 39, 18, 25, 42, 13, 20, 37, 12, 17, 33, 73, 87, 101, 93, 110, 122, 102, 117, 131, 73, 87, 102, 49, 60, 72, 96, 111, 125, 105, 118, 132, + 113, 130, 142, 111, 129, 142, 133, 150, 162, 159, 174, 186, 115, 132, 147, 109, 127, 138, 136, 152, 164, 101, 117, 130, 125, 142, 154, 157, 173, 185, 142, 159, 171, 166, 183, 195, 166, 182, 192, 154, 170, 182, 155, 172, 183, 172, 189, 198, 181, 198, 207, 169, 186, 197, 187, 203, 213, 157, 175, 185, 194, 211, 219, + 183, 199, 209, 192, 208, 216, 183, 200, 211, 167, 185, 196, 160, 178, 188, 164, 182, 194, 157, 175, 186, 179, 195, 207, 182, 199, 207, 175, 191, 202, 175, 191, 203, 160, 176, 189, 179, 195, 206, 177, 193, 205, 193, 210, 221, 170, 187, 199, 176, 194, 206, 184, 203, 213, 195, 211, 220, 213, 229, 238, 195, 211, 221, + 201, 216, 225, 208, 224, 231, 202, 218, 225, 199, 216, 224, 219, 232, 241, 223, 238, 246, 216, 231, 239, 221, 236, 244, 222, 238, 247, 235, 250, 254, 231, 243, 251, 230, 244, 251, 232, 246, 252, 233, 245, 250, 215, 231, 241, 233, 247, 253, 228, 242, 250, 217, 233, 242, 215, 231, 241, 224, 239, 247, 218, 234, 244, + 216, 231, 242, 214, 230, 241, 228, 242, 247, 223, 240, 247, 225, 238, 248, 234, 248, 253, 229, 242, 251, 238, 251, 253, 232, 246, 254, 229, 245, 252, 230, 246, 252, 218, 234, 246, 211, 227, 239, 219, 235, 247, 219, 235, 247, 223, 237, 248, 223, 238, 248, 224, 240, 249, 224, 237, 246, 229, 242, 251, 238, 252, 253, + 234, 246, 252, 237, 252, 252, 235, 250, 253, 241, 254, 254, 239, 252, 255, 248, 255, 254, 253, 255, 255, 244, 254, 254, 248, 255, 254, 244, 254, 253, 249, 255, 254, 241, 253, 254, 234, 249, 254, 232, 248, 253, 231, 244, 252, 231, 243, 250, 228, 239, 248, 228, 240, 248, 232, 246, 250, 238, 249, 252, 244, 253, 254, + 251, 255, 254, 247, 254, 254, 245, 254, 253, 244, 254, 253, 243, 253, 253, 240, 253, 254, 238, 253, 253, 233, 249, 253, 233, 249, 253, 231, 247, 251, 228, 242, 252, 234, 249, 254, 226, 242, 254, 227, 245, 253, 223, 241, 252, 213, 230, 246, 201, 219, 235, 210, 227, 244, 204, 222, 239, 201, 221, 238, 193, 212, 226, + 186, 200, 213, 180, 192, 203, 179, 190, 203, 188, 196, 206, 185, 198, 210, 177, 189, 203, 187, 199, 213, 183, 192, 206, 178, 186, 202, 170, 189, 213, 161, 182, 206, 161, 185, 209, 157, 183, 214, 156, 185, 212, 157, 178, 197, 164, 160, 173, 177, 132, 122, 186, 109, 66, 187, 106, 54, 187, 103, 49, 190, 103, 45, + 192, 103, 44, 190, 102, 41, 192, 103, 39, 196, 102, 33, 194, 101, 28, 195, 100, 28, 198, 104, 26, 199, 104, 22, 201, 105, 20, 201, 104, 16, 200, 103, 16, 202, 104, 12, 204, 106, 12, 206, 104, 7, 206, 106, 6, 206, 105, 4, 205, 105, 7, 204, 103, 7, 202, 102, 8, 203, 101, 8, 204, 102, 10, + 202, 99, 11, 200, 98, 10, 200, 100, 9, 199, 99, 9, 197, 99, 7, 198, 98, 5, 196, 98, 9, 195, 95, 9, 194, 96, 10, 195, 96, 12, 191, 92, 6, 191, 93, 6, 189, 93, 5, 190, 91, 5, 188, 91, 4, 187, 89, 4, 180, 88, 3, 177, 85, 7, 174, 79, 8, 172, 79, 10, 168, 80, 11, + 166, 76, 11, 165, 77, 11, 162, 75, 9, 161, 74, 8, 161, 74, 7, 161, 74, 7, 160, 74, 6, 163, 75, 5, 166, 75, 7, 167, 78, 7, 171, 79, 6, 169, 80, 7, 167, 78, 7, 166, 76, 4, 19, 34, 41, 19, 35, 42, 21, 35, 41, 23, 37, 42, 22, 35, 41, 18, 33, 39, 15, 30, 36, + 12, 26, 32, 11, 24, 30, 10, 23, 29, 8, 22, 29, 12, 25, 33, 24, 36, 44, 34, 45, 55, 33, 44, 54, 41, 53, 63, 48, 59, 69, 48, 62, 71, 54, 68, 78, 60, 74, 86, 60, 74, 88, 39, 53, 69, 44, 57, 73, 48, 62, 78, 40, 51, 68, 54, 65, 82, 45, 55, 72, 39, 48, 66, + 20, 28, 45, 33, 41, 56, 40, 48, 63, 53, 61, 76, 10, 18, 34, 27, 34, 50, 18, 25, 40, 34, 42, 55, 96, 112, 125, 70, 84, 99, 108, 123, 136, 88, 103, 116, 95, 111, 124, 101, 116, 130, 130, 147, 158, 131, 148, 160, 121, 138, 151, 156, 172, 184, 129, 145, 158, 132, 150, 162, 136, 154, 166, + 96, 112, 123, 85, 101, 114, 156, 172, 184, 157, 174, 184, 129, 145, 160, 187, 202, 210, 167, 183, 195, 168, 184, 196, 166, 183, 193, 180, 198, 208, 158, 176, 187, 177, 194, 205, 167, 182, 195, 196, 212, 222, 208, 224, 232, 191, 207, 215, 181, 197, 210, 142, 159, 172, 180, 197, 209, 192, 208, 218, 161, 179, 190, + 174, 190, 201, 186, 202, 212, 178, 194, 206, 178, 194, 206, 184, 200, 211, 179, 195, 205, 188, 205, 215, 188, 205, 214, 170, 187, 198, 175, 193, 205, 174, 191, 203, 180, 197, 209, 195, 212, 221, 201, 218, 228, 197, 214, 223, 212, 228, 238, 216, 233, 240, 201, 216, 225, 214, 229, 237, 216, 230, 241, 234, 247, 253, + 225, 238, 246, 221, 235, 244, 225, 239, 247, 234, 246, 253, 231, 244, 251, 231, 246, 252, 230, 244, 252, 229, 243, 249, 228, 243, 250, 223, 238, 248, 215, 230, 243, 212, 228, 240, 217, 235, 242, 208, 225, 236, 207, 223, 235, 208, 224, 235, 213, 230, 240, 225, 240, 246, 229, 243, 251, 231, 246, 253, 232, 245, 252, + 239, 252, 255, 238, 253, 254, 234, 247, 253, 237, 252, 255, 229, 244, 251, 218, 234, 246, 219, 235, 247, 226, 240, 249, 223, 238, 248, 216, 232, 242, 220, 236, 245, 225, 239, 248, 234, 247, 254, 235, 250, 253, 237, 251, 253, 240, 254, 254, 239, 253, 255, 239, 254, 252, 238, 252, 254, 251, 254, 254, 253, 255, 255, + 252, 255, 254, 251, 254, 254, 249, 254, 254, 244, 254, 254, 242, 254, 254, 235, 249, 254, 236, 251, 254, 233, 248, 251, 227, 242, 247, 228, 240, 247, 223, 235, 243, 232, 244, 251, 241, 253, 254, 246, 253, 253, 244, 253, 253, 254, 254, 255, 253, 254, 254, 245, 254, 254, 241, 254, 255, 240, 253, 255, 243, 255, 253, + 242, 253, 253, 237, 251, 253, 235, 252, 253, 233, 248, 253, 235, 252, 253, 229, 246, 253, 226, 244, 252, 218, 235, 248, 217, 235, 248, 218, 237, 251, 204, 224, 239, 200, 219, 235, 189, 208, 221, 187, 204, 215, 187, 202, 215, 189, 205, 218, 188, 199, 211, 183, 193, 205, 180, 190, 203, 178, 184, 197, 175, 178, 187, + 178, 179, 187, 179, 169, 177, 176, 172, 185, 168, 181, 198, 161, 183, 205, 161, 184, 207, 154, 180, 210, 157, 181, 210, 166, 168, 183, 182, 147, 143, 193, 115, 67, 190, 107, 53, 191, 106, 49, 192, 105, 42, 194, 107, 41, 193, 105, 37, 196, 104, 33, 198, 105, 31, 199, 106, 28, 199, 104, 24, 201, 105, 22, + 202, 105, 18, 203, 106, 17, 204, 107, 15, 204, 107, 19, 205, 106, 14, 208, 110, 16, 210, 109, 11, 209, 108, 9, 206, 105, 4, 208, 108, 10, 208, 107, 9, 205, 105, 7, 204, 103, 4, 203, 102, 4, 205, 104, 10, 203, 102, 9, 200, 100, 6, 201, 102, 6, 200, 100, 5, 199, 99, 6, 197, 98, 9, + 195, 95, 9, 195, 96, 11, 193, 94, 9, 194, 94, 11, 194, 95, 11, 192, 95, 10, 190, 93, 10, 189, 92, 7, 187, 90, 4, 183, 88, 3, 178, 85, 6, 175, 81, 8, 170, 79, 11, 168, 78, 10, 165, 75, 9, 165, 77, 11, 162, 75, 8, 162, 75, 8, 159, 72, 7, 161, 74, 4, 161, 74, 4, + 164, 75, 9, 167, 76, 9, 168, 80, 9, 171, 80, 6, 171, 79, 6, 169, 78, 6, 166, 79, 5, 13, 31, 38, 15, 32, 39, 17, 34, 41, 21, 36, 41, 21, 36, 43, 22, 36, 42, 20, 34, 40, 14, 30, 36, 12, 27, 33, 12, 25, 32, 10, 20, 28, 8, 18, 26, 16, 28, 36, 29, 40, 54, + 31, 42, 53, 39, 49, 59, 44, 56, 66, 56, 69, 79, 70, 84, 96, 63, 79, 91, 74, 89, 104, 60, 75, 90, 49, 63, 78, 52, 65, 82, 44, 55, 73, 52, 62, 80, 46, 56, 73, 43, 51, 69, 21, 29, 46, 44, 52, 66, 48, 57, 71, 56, 67, 80, 42, 51, 65, 42, 50, 64, 19, 26, 41, + 35, 42, 55, 73, 84, 98, 82, 97, 114, 112, 128, 140, 99, 115, 128, 88, 102, 119, 94, 110, 124, 103, 119, 134, 152, 166, 179, 138, 154, 167, 146, 162, 174, 169, 186, 197, 106, 121, 134, 150, 167, 179, 123, 139, 152, 128, 145, 159, 120, 135, 148, 148, 164, 176, 144, 160, 174, 171, 188, 197, 175, 192, 201, + 170, 187, 197, 176, 192, 203, 160, 177, 188, 168, 185, 196, 168, 186, 196, 174, 191, 202, 181, 197, 209, 206, 222, 231, 197, 213, 223, 199, 215, 226, 168, 185, 197, 165, 181, 193, 195, 213, 222, 183, 200, 210, 180, 196, 206, 184, 201, 210, 175, 191, 203, 171, 186, 200, 178, 195, 207, 183, 199, 209, 182, 199, 210, + 201, 218, 226, 169, 186, 198, 174, 191, 204, 170, 187, 199, 185, 200, 213, 187, 204, 215, 187, 205, 216, 191, 207, 220, 192, 208, 218, 200, 216, 228, 206, 222, 231, 209, 224, 234, 213, 230, 238, 220, 234, 244, 233, 247, 252, 218, 232, 240, 221, 235, 244, 225, 239, 247, 234, 248, 254, 229, 242, 251, 237, 250, 253, + 232, 246, 252, 231, 244, 252, 228, 242, 250, 227, 241, 251, 205, 221, 234, 210, 226, 236, 201, 218, 230, 206, 222, 232, 215, 230, 239, 211, 227, 238, 214, 230, 241, 220, 236, 243, 224, 240, 249, 232, 247, 253, 229, 243, 249, 241, 253, 255, 235, 250, 253, 238, 253, 255, 235, 249, 253, 225, 241, 251, 227, 242, 250, + 222, 238, 251, 220, 235, 245, 220, 234, 245, 223, 238, 247, 228, 242, 251, 235, 249, 253, 240, 253, 254, 236, 250, 252, 242, 253, 253, 243, 254, 254, 239, 253, 254, 240, 252, 253, 253, 255, 254, 246, 255, 254, 251, 255, 254, 250, 255, 254, 251, 254, 254, 244, 254, 253, 246, 255, 254, 235, 248, 254, 236, 251, 253, + 230, 245, 251, 226, 239, 247, 227, 239, 248, 216, 229, 237, 232, 246, 253, 240, 253, 254, 247, 254, 254, 253, 255, 255, 253, 254, 254, 253, 255, 254, 240, 253, 254, 241, 253, 252, 244, 254, 253, 243, 254, 254, 243, 253, 253, 244, 253, 255, 236, 252, 255, 237, 253, 254, 230, 247, 252, 234, 253, 253, 223, 241, 249, + 220, 237, 248, 220, 236, 251, 213, 230, 246, 208, 225, 241, 204, 223, 239, 195, 215, 230, 193, 211, 225, 190, 208, 218, 183, 194, 206, 178, 186, 196, 175, 182, 192, 180, 187, 197, 182, 191, 206, 183, 190, 201, 180, 182, 190, 180, 174, 183, 181, 179, 188, 172, 175, 187, 162, 175, 194, 161, 182, 207, 161, 184, 211, + 156, 183, 213, 164, 180, 199, 183, 158, 155, 192, 121, 79, 195, 113, 60, 196, 111, 52, 198, 112, 47, 198, 108, 42, 200, 109, 39, 202, 109, 37, 201, 108, 32, 201, 107, 28, 202, 107, 26, 204, 106, 22, 204, 108, 22, 205, 108, 19, 204, 106, 14, 206, 109, 18, 207, 109, 20, 208, 110, 21, 212, 112, 19, + 212, 111, 13, 209, 111, 13, 209, 109, 11, 207, 107, 9, 208, 107, 8, 206, 106, 3, 205, 104, 5, 206, 104, 8, 205, 103, 6, 203, 102, 6, 200, 100, 5, 199, 99, 6, 197, 98, 6, 198, 97, 6, 197, 97, 9, 197, 97, 10, 194, 93, 7, 194, 94, 10, 195, 96, 12, 192, 93, 7, 192, 93, 9, + 188, 89, 3, 188, 91, 4, 180, 86, 2, 175, 82, 9, 172, 81, 10, 168, 78, 12, 167, 77, 10, 165, 76, 10, 162, 75, 8, 163, 76, 9, 163, 76, 10, 162, 75, 9, 163, 75, 8, 163, 75, 7, 164, 77, 10, 166, 76, 9, 168, 78, 7, 172, 80, 7, 172, 80, 5, 171, 81, 6, 169, 79, 7, + 12, 31, 38, 13, 31, 38, 17, 36, 40, 21, 37, 43, 21, 39, 45, 23, 39, 43, 22, 39, 43, 21, 39, 41, 17, 33, 40, 13, 29, 34, 10, 22, 30, 6, 16, 24, 21, 31, 42, 30, 41, 53, 20, 30, 46, 44, 53, 64, 52, 64, 75, 62, 76, 88, 76, 92, 104, 81, 98, 110, 77, 92, 108, + 85, 100, 115, 71, 86, 103, 53, 65, 83, 60, 71, 89, 48, 58, 76, 60, 70, 87, 43, 51, 68, 29, 37, 53, 45, 53, 67, 56, 65, 79, 71, 83, 97, 74, 83, 98, 70, 80, 93, 35, 44, 58, 40, 48, 62, 32, 40, 54, 99, 115, 128, 106, 122, 135, 100, 117, 130, 98, 114, 127, 83, 98, 113, + 100, 116, 130, 115, 131, 144, 170, 188, 198, 158, 174, 186, 153, 169, 181, 157, 174, 185, 143, 161, 172, 143, 160, 173, 141, 158, 172, 136, 153, 165, 122, 138, 151, 145, 162, 175, 166, 183, 193, 164, 180, 190, 187, 204, 213, 187, 204, 214, 161, 179, 190, 167, 184, 194, 173, 190, 199, 186, 203, 212, 185, 202, 211, + 186, 203, 212, 191, 207, 218, 202, 219, 228, 177, 193, 205, 173, 189, 202, 164, 181, 194, 189, 206, 216, 187, 203, 214, 191, 208, 216, 187, 203, 214, 185, 202, 212, 169, 186, 198, 181, 198, 208, 177, 194, 207, 179, 195, 207, 198, 215, 224, 170, 186, 199, 184, 202, 213, 177, 194, 206, 195, 211, 222, 194, 212, 221, + 168, 185, 200, 189, 205, 217, 208, 224, 236, 202, 218, 229, 208, 224, 233, 215, 229, 238, 217, 231, 241, 229, 242, 250, 232, 245, 250, 216, 230, 240, 221, 235, 244, 221, 235, 244, 240, 251, 254, 227, 242, 249, 229, 243, 251, 238, 250, 253, 234, 246, 252, 232, 246, 253, 221, 235, 245, 212, 228, 240, 197, 215, 226, + 194, 211, 223, 210, 225, 237, 202, 219, 229, 221, 236, 244, 221, 238, 247, 227, 241, 250, 233, 247, 253, 224, 239, 247, 241, 254, 255, 239, 252, 254, 238, 252, 254, 240, 254, 254, 235, 251, 253, 233, 248, 255, 224, 238, 251, 216, 232, 245, 221, 237, 246, 224, 239, 248, 231, 245, 252, 239, 252, 253, 239, 253, 253, + 230, 246, 252, 240, 254, 254, 239, 252, 254, 239, 252, 254, 243, 253, 254, 251, 254, 254, 247, 255, 255, 249, 255, 254, 251, 255, 254, 244, 255, 254, 247, 254, 254, 246, 254, 254, 237, 251, 254, 239, 252, 253, 229, 243, 250, 234, 248, 254, 228, 241, 249, 227, 240, 248, 231, 245, 251, 236, 248, 251, 253, 254, 254, + 253, 254, 254, 254, 255, 255, 252, 255, 255, 249, 254, 254, 249, 254, 254, 249, 254, 253, 246, 254, 253, 241, 252, 253, 243, 252, 254, 230, 247, 253, 232, 248, 254, 230, 248, 252, 219, 234, 247, 219, 236, 248, 226, 244, 253, 220, 236, 251, 214, 230, 246, 213, 230, 246, 203, 223, 238, 200, 220, 237, 195, 213, 226, + 187, 203, 218, 184, 199, 211, 184, 195, 206, 179, 193, 205, 185, 196, 211, 180, 189, 200, 184, 182, 191, 183, 184, 193, 181, 183, 195, 182, 178, 188, 183, 172, 178, 182, 170, 177, 172, 179, 194, 162, 186, 210, 159, 185, 213, 155, 182, 207, 174, 167, 175, 192, 142, 122, 198, 128, 89, 202, 128, 82, 200, 126, 79, + 202, 125, 75, 200, 123, 70, 200, 121, 69, 204, 119, 66, 202, 119, 63, 205, 119, 57, 205, 118, 52, 205, 115, 43, 204, 111, 38, 199, 108, 24, 207, 109, 26, 208, 112, 31, 213, 112, 28, 211, 113, 26, 210, 111, 19, 212, 112, 22, 209, 109, 15, 210, 111, 20, 210, 109, 14, 208, 108, 9, 206, 105, 7, + 205, 106, 8, 203, 102, 6, 202, 101, 5, 201, 102, 6, 199, 100, 7, 200, 99, 7, 198, 99, 7, 198, 96, 7, 197, 96, 8, 198, 95, 8, 194, 94, 8, 194, 95, 11, 194, 93, 9, 194, 95, 11, 192, 93, 8, 188, 90, 4, 180, 85, 5, 174, 81, 9, 173, 81, 11, 168, 79, 13, 167, 79, 13, + 163, 76, 10, 165, 78, 12, 163, 76, 10, 161, 74, 7, 163, 76, 11, 161, 74, 7, 163, 76, 9, 161, 74, 8, 166, 75, 8, 168, 79, 9, 172, 80, 8, 172, 80, 8, 172, 81, 9, 169, 79, 8, 12, 31, 38, 15, 34, 40, 14, 34, 39, 19, 36, 42, 19, 38, 43, 22, 40, 45, 21, 40, 45, + 21, 38, 44, 22, 41, 44, 19, 36, 43, 16, 33, 39, 10, 27, 34, 13, 28, 36, 24, 34, 46, 17, 27, 43, 45, 56, 66, 55, 69, 81, 63, 78, 90, 74, 90, 104, 87, 104, 117, 89, 106, 120, 85, 101, 116, 80, 96, 113, 63, 75, 93, 56, 68, 86, 55, 65, 83, 51, 62, 79, 39, 47, 63, + 45, 54, 69, 57, 65, 79, 49, 59, 72, 72, 83, 97, 74, 86, 101, 79, 91, 104, 78, 91, 104, 38, 47, 60, 47, 54, 66, 82, 97, 110, 109, 125, 138, 103, 119, 132, 108, 123, 137, 81, 96, 111, 102, 116, 129, 83, 99, 114, 118, 134, 147, 160, 176, 188, 158, 174, 186, 141, 157, 170, 186, 202, 211, + 141, 158, 170, 146, 163, 175, 122, 138, 152, 136, 152, 167, 136, 153, 167, 178, 194, 203, 192, 209, 217, 169, 187, 197, 202, 218, 227, 170, 187, 198, 173, 190, 202, 172, 190, 200, 176, 192, 202, 191, 208, 217, 192, 208, 216, 179, 196, 209, 194, 212, 220, 184, 200, 212, 161, 178, 189, 172, 189, 201, 178, 195, 206, + 192, 209, 219, 192, 209, 218, 196, 212, 223, 197, 213, 222, 187, 204, 215, 159, 176, 190, 175, 192, 203, 176, 192, 204, 197, 214, 223, 194, 210, 222, 183, 200, 210, 171, 189, 200, 192, 209, 220, 186, 203, 215, 201, 216, 228, 177, 194, 206, 194, 211, 223, 195, 211, 223, 214, 231, 240, 207, 223, 233, 197, 215, 225, + 216, 231, 240, 217, 231, 241, 218, 234, 242, 222, 235, 244, 225, 239, 247, 232, 245, 251, 234, 247, 253, 230, 243, 251, 234, 247, 253, 234, 247, 254, 229, 244, 252, 231, 245, 252, 215, 229, 241, 196, 213, 223, 198, 215, 225, 202, 219, 230, 198, 214, 226, 218, 233, 243, 222, 237, 246, 227, 243, 251, 232, 246, 252, + 226, 239, 247, 238, 251, 254, 235, 248, 254, 241, 253, 254, 249, 255, 254, 240, 254, 254, 235, 251, 254, 225, 240, 252, 220, 237, 248, 229, 245, 252, 229, 245, 253, 233, 249, 252, 243, 254, 255, 235, 249, 255, 234, 249, 253, 238, 252, 255, 237, 252, 254, 237, 250, 254, 244, 254, 254, 249, 254, 253, 249, 255, 254, + 251, 255, 254, 252, 254, 254, 240, 253, 254, 250, 255, 254, 247, 254, 254, 240, 254, 254, 239, 252, 254, 232, 246, 253, 226, 239, 247, 226, 239, 248, 228, 240, 247, 235, 247, 254, 243, 252, 253, 247, 254, 254, 252, 255, 254, 255, 255, 255, 254, 255, 255, 251, 254, 254, 252, 255, 255, 250, 255, 254, 242, 253, 252, + 239, 252, 253, 233, 250, 254, 234, 250, 253, 226, 242, 251, 226, 243, 250, 229, 246, 250, 229, 244, 254, 229, 247, 253, 227, 244, 253, 221, 238, 252, 208, 224, 241, 211, 230, 246, 205, 223, 239, 203, 220, 237, 195, 213, 226, 190, 209, 223, 189, 207, 222, 185, 203, 218, 181, 199, 215, 186, 206, 222, 178, 196, 209, + 181, 198, 212, 187, 197, 207, 184, 186, 196, 181, 176, 184, 182, 173, 177, 178, 176, 186, 168, 184, 201, 166, 191, 217, 158, 187, 214, 166, 182, 197, 187, 153, 146, 198, 126, 84, 200, 121, 68, 199, 119, 62, 202, 114, 53, 201, 113, 49, 201, 109, 38, 204, 111, 44, 201, 108, 41, 201, 109, 41, 202, 109, 37, + 203, 111, 41, 203, 114, 50, 206, 119, 56, 208, 121, 59, 208, 119, 61, 211, 122, 59, 211, 118, 51, 210, 116, 36, 211, 112, 26, 210, 114, 25, 212, 113, 23, 211, 111, 15, 208, 108, 9, 206, 105, 6, 204, 105, 7, 201, 104, 8, 203, 103, 6, 202, 101, 6, 202, 102, 6, 199, 99, 5, 201, 99, 7, + 199, 96, 9, 195, 97, 9, 196, 95, 7, 197, 94, 8, 194, 95, 9, 194, 93, 6, 192, 92, 6, 189, 92, 4, 184, 88, 1, 177, 83, 5, 172, 82, 12, 168, 79, 13, 165, 79, 13, 165, 78, 12, 166, 79, 16, 162, 75, 11, 162, 75, 10, 162, 75, 10, 159, 73, 6, 160, 74, 9, 161, 76, 9, + 161, 75, 9, 163, 76, 11, 168, 79, 11, 171, 81, 10, 171, 79, 8, 171, 79, 8, 169, 81, 6, 11, 32, 37, 12, 31, 38, 14, 33, 40, 15, 34, 41, 18, 38, 43, 19, 38, 43, 21, 40, 45, 21, 40, 45, 24, 42, 47, 24, 43, 48, 22, 40, 45, 17, 36, 41, 12, 28, 36, 14, 25, 40, + 16, 28, 42, 39, 49, 60, 53, 66, 79, 59, 72, 87, 73, 89, 102, 83, 99, 114, 88, 104, 120, 90, 106, 122, 86, 102, 117, 64, 78, 96, 65, 79, 97, 56, 68, 86, 50, 60, 78, 52, 60, 76, 47, 56, 70, 45, 52, 66, 82, 95, 108, 63, 74, 88, 54, 65, 78, 72, 84, 98, 73, 86, 99, + 76, 89, 102, 71, 83, 94, 75, 89, 103, 116, 131, 146, 104, 120, 135, 93, 109, 123, 92, 107, 121, 74, 86, 102, 132, 148, 161, 104, 120, 134, 158, 175, 184, 161, 176, 187, 159, 176, 185, 164, 180, 189, 170, 187, 199, 138, 155, 167, 131, 147, 161, 159, 175, 188, 127, 145, 157, 165, 181, 193, 198, 215, 224, + 175, 192, 202, 195, 211, 221, 192, 207, 219, 175, 193, 201, 165, 183, 193, 173, 190, 201, 190, 207, 217, 201, 218, 227, 186, 203, 213, 185, 201, 211, 188, 204, 215, 179, 195, 207, 167, 185, 195, 174, 191, 200, 195, 212, 221, 199, 215, 225, 198, 215, 224, 192, 208, 219, 182, 198, 209, 166, 183, 195, 168, 185, 198, + 185, 201, 213, 205, 222, 231, 203, 219, 229, 205, 223, 231, 185, 201, 211, 200, 216, 228, 180, 198, 209, 189, 206, 217, 200, 215, 227, 187, 203, 215, 189, 207, 218, 192, 210, 221, 206, 222, 231, 209, 225, 234, 209, 226, 236, 205, 221, 232, 225, 238, 247, 218, 232, 240, 224, 238, 246, 235, 248, 253, 232, 244, 252, + 240, 253, 253, 235, 247, 252, 236, 249, 254, 235, 250, 253, 233, 247, 254, 227, 241, 249, 211, 227, 238, 193, 209, 221, 192, 210, 220, 201, 217, 230, 222, 237, 247, 217, 232, 243, 218, 234, 245, 230, 245, 251, 224, 239, 248, 234, 247, 253, 233, 246, 252, 241, 254, 254, 248, 255, 254, 243, 254, 254, 239, 253, 254, + 231, 245, 255, 230, 245, 252, 231, 247, 253, 230, 245, 253, 236, 251, 254, 238, 250, 254, 234, 247, 254, 233, 247, 253, 235, 248, 253, 237, 250, 252, 233, 246, 252, 245, 253, 253, 252, 254, 254, 251, 255, 254, 253, 255, 255, 250, 254, 254, 245, 253, 255, 250, 255, 254, 250, 255, 254, 247, 254, 254, 235, 251, 253, + 233, 247, 254, 232, 249, 253, 225, 240, 249, 231, 244, 251, 234, 246, 252, 243, 253, 254, 249, 254, 254, 254, 255, 255, 255, 255, 255, 251, 255, 254, 250, 255, 255, 252, 254, 254, 244, 254, 254, 249, 255, 254, 239, 254, 254, 236, 250, 253, 236, 251, 253, 233, 250, 254, 229, 246, 251, 232, 249, 253, 230, 246, 253, + 231, 247, 253, 225, 241, 253, 211, 228, 243, 219, 236, 251, 217, 235, 251, 210, 228, 244, 202, 222, 239, 201, 222, 239, 202, 224, 243, 193, 217, 234, 196, 219, 235, 184, 207, 225, 188, 211, 230, 189, 210, 225, 186, 204, 220, 186, 200, 215, 185, 195, 206, 188, 195, 208, 192, 201, 211, 190, 192, 197, 186, 193, 203, + 182, 201, 223, 171, 200, 228, 166, 193, 215, 187, 176, 179, 200, 153, 139, 202, 137, 108, 204, 127, 83, 205, 126, 76, 206, 122, 67, 209, 122, 61, 206, 116, 54, 205, 116, 51, 205, 113, 47, 207, 114, 42, 207, 114, 42, 205, 111, 37, 205, 111, 35, 209, 114, 34, 213, 116, 36, 213, 113, 28, 213, 115, 36, + 216, 120, 47, 210, 123, 56, 208, 119, 56, 208, 117, 47, 208, 114, 26, 208, 109, 14, 205, 108, 13, 204, 105, 14, 201, 104, 10, 201, 103, 7, 201, 102, 6, 200, 102, 7, 200, 100, 8, 198, 98, 8, 196, 97, 9, 196, 98, 11, 195, 96, 9, 194, 95, 10, 194, 95, 10, 192, 93, 8, 194, 91, 5, + 188, 89, 3, 180, 85, 6, 172, 79, 6, 168, 80, 12, 166, 79, 13, 165, 79, 14, 163, 76, 11, 162, 75, 10, 159, 73, 8, 157, 72, 12, 155, 72, 9, 155, 71, 8, 155, 72, 9, 158, 74, 9, 160, 75, 11, 162, 75, 11, 166, 79, 15, 170, 80, 12, 171, 80, 10, 172, 82, 10, 170, 83, 8, + 8, 31, 37, 12, 33, 39, 15, 34, 40, 15, 35, 40, 18, 37, 42, 18, 38, 43, 21, 41, 46, 22, 41, 46, 23, 43, 48, 24, 44, 49, 25, 44, 50, 25, 44, 49, 20, 39, 44, 22, 37, 45, 21, 35, 47, 36, 47, 56, 50, 61, 72, 58, 72, 86, 63, 78, 94, 77, 93, 109, 77, 95, 109, + 89, 104, 118, 94, 110, 125, 70, 85, 102, 71, 85, 102, 70, 86, 102, 51, 60, 78, 52, 63, 78, 53, 62, 76, 51, 58, 73, 57, 70, 84, 67, 78, 92, 64, 74, 88, 64, 75, 90, 95, 106, 120, 96, 110, 124, 77, 91, 103, 101, 117, 131, 109, 124, 138, 108, 125, 138, 83, 98, 113, 108, 124, 138, + 80, 94, 108, 99, 115, 128, 118, 133, 149, 143, 159, 170, 182, 198, 207, 165, 182, 192, 186, 203, 210, 184, 201, 209, 175, 193, 203, 156, 172, 185, 161, 177, 190, 128, 145, 160, 154, 171, 182, 180, 198, 206, 193, 211, 219, 196, 212, 222, 195, 211, 220, 190, 207, 216, 178, 194, 205, 161, 177, 189, 197, 214, 225, + 178, 195, 206, 191, 207, 219, 183, 199, 211, 196, 213, 222, 184, 202, 210, 173, 191, 202, 179, 196, 206, 169, 185, 197, 196, 212, 222, 199, 216, 224, 194, 210, 221, 198, 215, 225, 171, 188, 201, 174, 191, 204, 159, 175, 191, 176, 192, 206, 209, 225, 233, 201, 216, 227, 211, 227, 236, 201, 217, 228, 187, 206, 217, + 199, 216, 227, 199, 217, 226, 209, 224, 236, 188, 205, 216, 179, 195, 209, 205, 221, 232, 202, 217, 228, 212, 228, 237, 206, 221, 230, 207, 224, 233, 228, 239, 250, 223, 238, 247, 227, 241, 249, 226, 240, 248, 237, 249, 252, 231, 245, 251, 238, 250, 254, 236, 249, 253, 233, 247, 253, 236, 250, 253, 222, 235, 248, + 188, 206, 217, 187, 204, 216, 199, 216, 228, 216, 232, 241, 216, 231, 242, 220, 235, 245, 225, 240, 248, 225, 240, 249, 236, 251, 254, 240, 253, 254, 238, 253, 254, 248, 255, 255, 253, 254, 254, 239, 254, 254, 231, 247, 254, 233, 249, 255, 234, 249, 253, 230, 247, 254, 230, 245, 252, 235, 249, 254, 234, 248, 254, + 226, 241, 249, 231, 246, 253, 237, 250, 253, 236, 250, 253, 247, 254, 253, 255, 255, 255, 254, 255, 255, 249, 255, 254, 253, 255, 254, 254, 254, 255, 251, 255, 255, 254, 254, 254, 245, 255, 254, 236, 251, 254, 233, 249, 254, 228, 243, 251, 222, 236, 244, 237, 249, 252, 236, 248, 252, 238, 250, 253, 255, 254, 255, + 255, 255, 255, 253, 255, 255, 249, 255, 254, 250, 254, 254, 252, 255, 255, 249, 253, 253, 252, 254, 254, 240, 254, 253, 240, 253, 253, 237, 251, 254, 233, 248, 251, 240, 253, 254, 234, 249, 254, 233, 250, 253, 231, 248, 253, 222, 239, 250, 228, 245, 254, 222, 239, 252, 216, 234, 251, 210, 228, 244, 205, 226, 243, + 201, 220, 237, 195, 217, 235, 191, 213, 230, 188, 208, 224, 190, 208, 224, 188, 204, 217, 186, 190, 199, 186, 182, 188, 185, 176, 184, 190, 181, 187, 190, 181, 187, 189, 184, 191, 190, 181, 189, 182, 173, 179, 179, 174, 188, 167, 191, 216, 161, 188, 215, 178, 176, 180, 197, 144, 130, 199, 136, 114, 203, 129, 90, + 204, 126, 77, 205, 119, 62, 205, 117, 53, 209, 117, 50, 208, 116, 48, 209, 116, 44, 207, 115, 39, 209, 115, 43, 207, 113, 39, 209, 115, 40, 211, 113, 31, 210, 111, 25, 214, 116, 29, 214, 116, 28, 216, 118, 29, 213, 115, 26, 212, 113, 24, 208, 110, 27, 211, 114, 35, 205, 114, 43, 201, 111, 39, + 202, 109, 37, 200, 101, 16, 202, 104, 15, 201, 101, 11, 200, 101, 11, 198, 98, 9, 198, 99, 12, 197, 99, 13, 192, 93, 8, 193, 94, 10, 191, 93, 8, 193, 96, 12, 187, 92, 6, 185, 87, 3, 179, 86, 11, 172, 83, 17, 168, 80, 15, 165, 78, 16, 163, 76, 17, 159, 75, 12, 156, 73, 7, + 153, 72, 8, 151, 71, 9, 149, 70, 12, 148, 70, 13, 150, 70, 14, 151, 69, 15, 154, 74, 14, 155, 75, 15, 156, 75, 16, 158, 76, 13, 165, 79, 15, 166, 79, 13, 167, 78, 10, 167, 80, 9, 5, 31, 36, 10, 34, 40, 12, 35, 39, 16, 37, 42, 18, 37, 42, 20, 39, 45, 22, 41, 48, + 21, 41, 46, 23, 43, 48, 23, 43, 48, 25, 45, 50, 28, 47, 52, 26, 45, 50, 26, 45, 51, 29, 46, 54, 37, 53, 61, 49, 64, 73, 56, 72, 85, 59, 73, 88, 61, 76, 90, 67, 83, 99, 82, 98, 114, 76, 92, 108, 71, 86, 102, 68, 82, 99, 68, 80, 98, 60, 71, 88, 51, 59, 75, + 45, 54, 68, 61, 71, 85, 49, 59, 74, 44, 54, 69, 64, 73, 87, 58, 67, 80, 72, 82, 95, 103, 119, 133, 76, 91, 106, 121, 138, 150, 115, 131, 143, 128, 144, 158, 91, 108, 121, 108, 125, 139, 93, 108, 124, 91, 106, 122, 115, 131, 145, 118, 134, 146, 189, 204, 212, 191, 207, 217, 182, 199, 206, + 191, 208, 217, 209, 225, 233, 181, 199, 209, 158, 176, 187, 140, 158, 170, 153, 169, 182, 175, 193, 202, 184, 201, 211, 196, 213, 222, 198, 215, 224, 192, 209, 218, 187, 203, 214, 156, 173, 185, 183, 199, 211, 182, 200, 211, 180, 197, 209, 182, 199, 210, 180, 197, 208, 178, 194, 207, 176, 193, 205, 164, 181, 193, + 176, 193, 205, 179, 196, 207, 189, 206, 217, 197, 213, 225, 196, 213, 224, 183, 199, 211, 183, 200, 212, 157, 175, 191, 154, 171, 187, 187, 203, 214, 213, 227, 238, 185, 202, 212, 206, 222, 232, 186, 203, 216, 181, 198, 211, 197, 213, 225, 199, 215, 226, 215, 230, 238, 172, 188, 204, 191, 207, 220, 217, 232, 244, + 215, 231, 241, 222, 235, 244, 216, 233, 241, 217, 232, 243, 227, 243, 249, 228, 243, 250, 231, 243, 251, 233, 245, 251, 234, 247, 253, 232, 245, 252, 237, 250, 253, 236, 251, 253, 230, 243, 250, 234, 246, 252, 213, 229, 238, 188, 205, 217, 200, 216, 228, 205, 222, 231, 214, 230, 240, 220, 237, 245, 230, 246, 253, + 225, 240, 250, 232, 247, 251, 239, 252, 253, 240, 254, 255, 250, 254, 255, 250, 255, 254, 240, 254, 254, 237, 251, 254, 235, 249, 255, 236, 251, 253, 229, 245, 254, 231, 245, 253, 231, 245, 254, 226, 241, 249, 228, 243, 252, 227, 243, 250, 231, 244, 250, 235, 249, 254, 252, 254, 254, 252, 255, 255, 254, 255, 255, + 251, 255, 255, 254, 255, 255, 255, 255, 255, 253, 255, 255, 255, 255, 255, 243, 254, 253, 235, 251, 253, 235, 250, 255, 226, 241, 249, 226, 242, 248, 232, 244, 252, 228, 241, 247, 244, 254, 254, 253, 255, 254, 253, 255, 255, 249, 255, 254, 247, 254, 253, 249, 254, 253, 253, 254, 254, 252, 254, 254, 251, 255, 254, + 238, 254, 254, 238, 251, 254, 232, 247, 251, 245, 254, 254, 237, 252, 253, 237, 250, 254, 236, 250, 254, 228, 245, 251, 232, 249, 254, 228, 245, 253, 223, 241, 253, 213, 232, 247, 201, 220, 237, 196, 217, 232, 186, 206, 223, 188, 208, 225, 188, 207, 225, 189, 210, 227, 187, 206, 221, 188, 206, 220, 189, 200, 212, + 193, 200, 210, 189, 196, 207, 196, 203, 213, 197, 202, 212, 195, 195, 202, 194, 191, 200, 190, 187, 196, 186, 185, 195, 175, 187, 205, 165, 191, 221, 175, 178, 191, 194, 143, 124, 201, 135, 108, 200, 129, 92, 203, 125, 76, 206, 123, 67, 206, 118, 55, 209, 117, 49, 208, 115, 40, 211, 117, 40, 208, 116, 37, + 209, 115, 38, 207, 113, 37, 209, 114, 36, 214, 115, 33, 215, 117, 33, 217, 119, 32, 214, 116, 29, 215, 116, 28, 215, 115, 26, 214, 116, 27, 212, 114, 26, 210, 112, 26, 206, 109, 21, 203, 107, 23, 203, 106, 36, 200, 108, 41, 197, 107, 39, 200, 105, 29, 196, 99, 18, 195, 96, 13, 192, 97, 13, + 193, 97, 16, 189, 94, 15, 188, 95, 14, 187, 94, 13, 181, 89, 6, 181, 88, 7, 177, 85, 13, 168, 81, 18, 165, 78, 19, 162, 76, 14, 159, 76, 16, 156, 73, 15, 153, 71, 11, 151, 71, 9, 148, 70, 9, 147, 69, 11, 145, 68, 12, 145, 68, 12, 145, 69, 16, 146, 68, 18, 149, 69, 15, + 150, 71, 12, 152, 72, 14, 157, 75, 17, 160, 76, 17, 161, 77, 16, 162, 76, 13, 163, 78, 14, 9, 33, 38, 12, 33, 39, 15, 36, 42, 18, 39, 44, 20, 40, 44, 20, 40, 46, 23, 42, 48, 22, 42, 47, 24, 44, 49, 24, 44, 49, 25, 46, 51, 26, 46, 51, 30, 49, 54, 32, 51, 56, + 35, 54, 60, 39, 57, 64, 47, 64, 72, 57, 74, 86, 54, 70, 84, 60, 76, 90, 68, 83, 99, 72, 87, 102, 70, 85, 102, 69, 84, 100, 66, 80, 97, 65, 77, 95, 61, 74, 90, 64, 77, 93, 55, 63, 78, 62, 73, 87, 40, 52, 66, 47, 58, 72, 24, 29, 42, 54, 64, 77, 55, 65, 76, + 109, 125, 136, 107, 123, 135, 102, 118, 131, 114, 131, 144, 137, 153, 166, 113, 130, 143, 110, 127, 140, 94, 110, 125, 110, 126, 139, 117, 134, 147, 127, 143, 157, 168, 185, 195, 196, 212, 221, 186, 202, 212, 171, 187, 200, 198, 213, 221, 198, 214, 222, 161, 178, 189, 166, 183, 194, 155, 173, 184, 177, 194, 205, + 179, 196, 206, 196, 215, 222, 200, 217, 227, 203, 220, 229, 182, 198, 210, 178, 194, 208, 156, 173, 188, 168, 185, 198, 171, 189, 201, 178, 196, 207, 153, 172, 186, 162, 179, 192, 164, 183, 195, 162, 180, 193, 162, 180, 191, 161, 178, 193, 179, 197, 210, 189, 206, 217, 205, 223, 231, 218, 233, 244, 197, 213, 224, + 172, 188, 201, 158, 175, 189, 181, 198, 210, 198, 215, 226, 221, 237, 245, 203, 219, 228, 192, 209, 219, 188, 204, 215, 209, 225, 235, 202, 218, 228, 223, 237, 247, 194, 212, 222, 186, 202, 217, 192, 208, 222, 209, 224, 238, 211, 228, 237, 208, 224, 233, 223, 237, 244, 215, 230, 239, 231, 242, 251, 234, 248, 254, + 237, 249, 253, 235, 249, 254, 230, 244, 250, 235, 248, 254, 237, 252, 254, 234, 246, 252, 238, 251, 254, 233, 247, 253, 192, 209, 219, 202, 218, 230, 207, 225, 233, 221, 236, 245, 220, 237, 246, 227, 243, 251, 226, 241, 250, 234, 248, 253, 235, 250, 253, 238, 252, 253, 250, 254, 254, 243, 254, 254, 239, 253, 254, + 239, 255, 254, 234, 249, 253, 235, 250, 253, 232, 245, 254, 231, 246, 254, 228, 242, 251, 222, 238, 248, 219, 235, 243, 225, 240, 247, 225, 240, 246, 234, 248, 252, 245, 254, 253, 254, 255, 255, 253, 255, 255, 254, 255, 255, 255, 255, 255, 252, 255, 255, 254, 255, 255, 254, 255, 255, 241, 254, 252, 241, 253, 255, + 236, 250, 253, 223, 236, 246, 234, 248, 254, 232, 245, 250, 235, 248, 251, 243, 253, 253, 255, 254, 254, 254, 255, 255, 251, 254, 254, 250, 254, 254, 248, 254, 254, 247, 254, 254, 250, 254, 254, 235, 249, 252, 241, 253, 253, 235, 248, 253, 243, 254, 253, 239, 254, 253, 238, 251, 254, 241, 253, 254, 231, 248, 253, + 235, 252, 254, 231, 248, 254, 231, 249, 253, 217, 232, 248, 202, 222, 237, 194, 214, 228, 194, 214, 229, 193, 213, 229, 179, 198, 214, 181, 201, 219, 187, 209, 225, 191, 212, 231, 190, 214, 231, 188, 204, 219, 187, 200, 213, 182, 197, 213, 185, 201, 217, 188, 203, 218, 190, 200, 211, 189, 191, 202, 190, 191, 201, + 190, 191, 201, 186, 193, 208, 170, 196, 223, 173, 188, 206, 190, 152, 142, 202, 138, 112, 203, 135, 99, 204, 125, 77, 208, 119, 61, 208, 119, 57, 208, 115, 45, 208, 115, 39, 207, 114, 36, 210, 115, 37, 210, 114, 36, 208, 116, 36, 211, 114, 35, 210, 112, 28, 216, 119, 37, 215, 118, 32, 217, 119, 32, + 216, 118, 30, 215, 116, 25, 215, 117, 29, 212, 116, 27, 207, 110, 23, 207, 108, 23, 204, 105, 20, 202, 105, 26, 198, 102, 26, 196, 103, 33, 191, 99, 36, 188, 101, 44, 185, 101, 44, 184, 96, 25, 183, 91, 16, 182, 93, 17, 182, 90, 19, 176, 87, 19, 175, 87, 16, 173, 85, 21, 170, 80, 20, + 166, 78, 21, 159, 75, 16, 157, 75, 17, 153, 71, 12, 152, 71, 14, 154, 73, 16, 150, 70, 12, 147, 70, 14, 143, 69, 12, 144, 69, 13, 144, 67, 13, 144, 67, 16, 143, 68, 18, 147, 69, 18, 149, 71, 17, 151, 72, 16, 155, 75, 18, 158, 74, 19, 157, 76, 19, 157, 75, 14, 158, 76, 12, + 9, 33, 37, 13, 36, 41, 14, 36, 41, 19, 38, 43, 20, 40, 45, 20, 39, 46, 21, 41, 46, 22, 43, 48, 22, 42, 47, 25, 44, 49, 26, 46, 51, 28, 46, 51, 32, 51, 56, 34, 53, 58, 39, 58, 63, 43, 62, 68, 52, 70, 77, 59, 75, 86, 67, 83, 95, 65, 81, 96, 69, 86, 102, + 61, 76, 93, 66, 80, 98, 58, 72, 90, 68, 84, 100, 60, 72, 91, 63, 74, 91, 61, 72, 88, 75, 87, 101, 79, 92, 106, 81, 93, 110, 66, 79, 92, 30, 37, 50, 32, 36, 47, 67, 79, 91, 87, 100, 114, 120, 137, 150, 96, 112, 124, 115, 132, 146, 111, 128, 141, 123, 139, 153, 117, 134, 148, + 113, 128, 144, 120, 136, 149, 129, 145, 158, 129, 147, 158, 137, 154, 166, 187, 202, 212, 176, 192, 200, 190, 207, 216, 190, 206, 217, 198, 215, 225, 185, 202, 213, 165, 181, 194, 181, 197, 210, 170, 187, 200, 167, 183, 195, 194, 211, 221, 195, 212, 223, 185, 202, 213, 184, 201, 213, 169, 187, 199, 155, 174, 186, + 152, 171, 186, 147, 166, 181, 137, 159, 172, 140, 162, 175, 146, 165, 178, 143, 164, 178, 152, 173, 185, 162, 182, 192, 171, 188, 199, 168, 187, 199, 179, 197, 208, 187, 203, 215, 196, 212, 224, 196, 212, 225, 184, 200, 211, 178, 195, 207, 160, 177, 191, 163, 180, 195, 191, 207, 218, 210, 224, 235, 225, 238, 246, + 205, 220, 231, 202, 219, 230, 211, 227, 236, 222, 235, 244, 208, 222, 232, 194, 210, 221, 208, 223, 233, 203, 219, 229, 200, 217, 228, 223, 240, 248, 215, 229, 240, 225, 239, 247, 224, 237, 247, 225, 240, 249, 238, 250, 254, 238, 250, 254, 240, 253, 255, 232, 246, 253, 238, 250, 253, 237, 249, 254, 231, 245, 252, + 234, 249, 253, 197, 213, 226, 201, 218, 229, 219, 235, 244, 218, 234, 243, 220, 235, 244, 224, 239, 248, 227, 242, 250, 231, 246, 253, 236, 250, 253, 237, 252, 254, 245, 254, 254, 239, 254, 253, 244, 254, 254, 241, 254, 253, 230, 247, 253, 232, 248, 255, 231, 245, 253, 232, 247, 254, 227, 242, 251, 220, 235, 244, + 219, 235, 244, 226, 242, 249, 233, 246, 252, 239, 251, 252, 249, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 255, 255, 251, 255, 255, 254, 255, 255, 250, 255, 255, 241, 254, 254, 242, 254, 253, 237, 251, 253, 232, 246, 252, 230, 244, 251, 230, 244, 250, 238, 251, 254, 245, 252, 252, 253, 254, 254, + 253, 255, 255, 255, 255, 255, 247, 255, 254, 244, 255, 254, 244, 254, 254, 239, 254, 253, 240, 254, 254, 239, 253, 254, 241, 252, 254, 240, 253, 253, 244, 254, 253, 240, 254, 254, 233, 251, 253, 239, 253, 254, 234, 252, 252, 229, 245, 254, 222, 238, 249, 216, 232, 245, 205, 223, 237, 197, 216, 230, 198, 215, 230, + 190, 209, 223, 186, 201, 212, 193, 209, 221, 191, 206, 220, 192, 210, 226, 189, 207, 224, 192, 204, 216, 191, 195, 204, 194, 195, 206, 193, 191, 199, 193, 191, 199, 194, 189, 197, 191, 184, 192, 191, 180, 187, 192, 184, 194, 192, 189, 198, 181, 200, 220, 171, 194, 214, 189, 173, 174, 200, 149, 130, 205, 140, 111, + 208, 137, 98, 208, 130, 84, 209, 120, 65, 212, 118, 46, 213, 119, 46, 213, 118, 43, 212, 118, 42, 211, 118, 41, 210, 116, 40, 210, 115, 39, 213, 118, 38, 213, 117, 36, 214, 119, 41, 216, 118, 35, 216, 119, 36, 212, 114, 27, 213, 116, 29, 209, 113, 26, 205, 108, 27, 201, 106, 23, 199, 104, 19, + 198, 103, 24, 195, 100, 26, 192, 98, 26, 188, 95, 28, 182, 94, 28, 176, 91, 33, 177, 96, 40, 178, 95, 44, 175, 90, 34, 176, 86, 31, 173, 86, 29, 171, 83, 25, 168, 80, 24, 167, 78, 20, 162, 77, 18, 155, 74, 13, 153, 72, 10, 151, 71, 10, 151, 71, 14, 148, 68, 13, 147, 68, 16, + 145, 69, 18, 144, 68, 18, 142, 66, 15, 144, 68, 16, 143, 68, 17, 145, 69, 20, 146, 68, 20, 147, 71, 19, 152, 72, 17, 157, 75, 21, 157, 74, 19, 156, 75, 18, 156, 74, 17, 156, 75, 15, 13, 35, 41, 13, 35, 40, 16, 37, 42, 17, 37, 44, 21, 41, 46, 20, 40, 45, 23, 43, 48, + 24, 44, 49, 24, 44, 49, 29, 49, 54, 32, 51, 56, 32, 51, 56, 34, 53, 58, 37, 56, 61, 40, 59, 64, 42, 62, 67, 53, 71, 78, 70, 88, 98, 93, 111, 123, 79, 97, 112, 82, 98, 115, 67, 84, 99, 53, 67, 85, 60, 74, 92, 55, 69, 87, 73, 87, 104, 54, 66, 84, 57, 68, 85, + 76, 88, 103, 66, 78, 92, 77, 90, 106, 63, 76, 92, 62, 72, 85, 61, 68, 79, 71, 81, 92, 78, 93, 106, 104, 121, 133, 124, 140, 154, 133, 150, 162, 116, 132, 144, 143, 160, 171, 112, 129, 143, 128, 144, 158, 129, 146, 158, 141, 157, 170, 132, 149, 162, 150, 166, 178, 173, 190, 198, 195, 213, 220, + 192, 208, 219, 191, 208, 216, 197, 214, 222, 204, 221, 230, 182, 198, 210, 162, 180, 190, 179, 196, 207, 159, 176, 189, 180, 197, 209, 171, 189, 201, 167, 187, 198, 157, 177, 191, 137, 158, 171, 155, 176, 188, 136, 159, 172, 130, 154, 169, 119, 143, 159, 133, 158, 170, 124, 148, 165, 122, 146, 159, 132, 156, 168, + 153, 172, 184, 175, 193, 202, 186, 204, 214, 177, 194, 206, 181, 198, 211, 189, 206, 218, 195, 211, 224, 192, 209, 221, 185, 201, 213, 191, 208, 219, 173, 190, 203, 159, 176, 192, 176, 193, 207, 214, 229, 238, 212, 227, 240, 214, 231, 238, 203, 217, 229, 207, 222, 233, 222, 237, 247, 215, 231, 241, 214, 229, 237, + 215, 230, 239, 206, 221, 231, 220, 235, 243, 222, 236, 246, 218, 233, 242, 228, 241, 249, 228, 243, 250, 230, 245, 250, 234, 247, 252, 241, 254, 253, 231, 245, 253, 238, 251, 253, 235, 249, 254, 230, 245, 252, 234, 248, 251, 203, 219, 232, 198, 214, 225, 216, 233, 242, 223, 238, 246, 219, 235, 244, 222, 237, 246, + 233, 245, 253, 229, 244, 252, 235, 248, 254, 239, 252, 255, 239, 254, 254, 239, 253, 254, 242, 254, 255, 242, 253, 253, 234, 248, 253, 234, 250, 254, 229, 245, 253, 229, 245, 253, 226, 241, 250, 223, 240, 248, 223, 238, 247, 228, 243, 251, 232, 246, 253, 241, 254, 255, 250, 254, 254, 251, 254, 254, 253, 255, 255, + 255, 255, 255, 255, 255, 255, 251, 255, 254, 246, 255, 254, 243, 254, 253, 241, 253, 253, 242, 254, 254, 241, 255, 254, 234, 249, 253, 236, 250, 253, 231, 244, 248, 244, 254, 254, 248, 254, 254, 254, 254, 254, 253, 255, 255, 254, 255, 255, 245, 254, 254, 248, 254, 253, 249, 254, 255, 236, 251, 254, 241, 254, 253, + 242, 254, 254, 248, 254, 254, 245, 254, 254, 244, 254, 253, 239, 252, 254, 236, 250, 253, 231, 248, 253, 227, 246, 253, 220, 238, 249, 213, 230, 244, 213, 230, 244, 210, 227, 239, 202, 220, 231, 201, 216, 228, 196, 212, 224, 202, 219, 230, 199, 216, 226, 190, 202, 212, 193, 202, 212, 189, 199, 212, 194, 207, 217, + 196, 196, 202, 190, 176, 176, 193, 167, 165, 193, 164, 158, 196, 161, 152, 198, 152, 136, 201, 153, 137, 199, 162, 155, 194, 170, 170, 187, 178, 190, 169, 191, 209, 181, 182, 189, 196, 157, 148, 201, 148, 129, 205, 136, 101, 208, 136, 99, 211, 132, 89, 212, 126, 65, 209, 120, 46, 211, 117, 42, 211, 117, 43, + 211, 117, 43, 210, 116, 42, 211, 116, 42, 209, 115, 38, 212, 117, 39, 216, 120, 47, 214, 119, 40, 212, 115, 36, 210, 113, 30, 204, 109, 28, 200, 109, 34, 197, 105, 35, 198, 103, 33, 195, 102, 27, 193, 100, 29, 189, 96, 25, 187, 96, 26, 180, 91, 24, 178, 91, 27, 178, 90, 31, 172, 86, 31, + 171, 85, 36, 172, 86, 43, 171, 88, 44, 172, 87, 41, 167, 82, 31, 168, 81, 26, 162, 77, 19, 157, 74, 11, 154, 74, 12, 152, 72, 11, 152, 73, 14, 148, 70, 14, 150, 69, 14, 144, 69, 16, 145, 68, 20, 144, 68, 19, 144, 67, 18, 143, 67, 18, 144, 67, 19, 145, 69, 19, 146, 70, 21, + 146, 70, 17, 153, 73, 20, 158, 76, 24, 157, 75, 20, 156, 75, 19, 157, 76, 19, 154, 73, 16, 14, 36, 40, 16, 37, 43, 19, 38, 45, 21, 40, 47, 24, 43, 49, 23, 43, 48, 26, 46, 51, 27, 47, 52, 30, 49, 54, 33, 52, 57, 34, 53, 58, 34, 53, 58, 37, 56, 61, 36, 55, 60, + 40, 59, 64, 40, 59, 65, 44, 61, 68, 93, 109, 122, 100, 119, 133, 114, 133, 149, 96, 112, 130, 80, 97, 114, 58, 73, 91, 48, 62, 80, 49, 62, 80, 59, 72, 89, 76, 90, 105, 61, 73, 90, 73, 85, 100, 88, 104, 119, 71, 85, 100, 74, 88, 102, 61, 70, 83, 57, 69, 80, 62, 75, 86, + 81, 96, 109, 90, 107, 119, 121, 137, 150, 140, 158, 169, 152, 168, 179, 156, 172, 181, 122, 139, 154, 144, 161, 173, 148, 165, 176, 147, 162, 175, 148, 164, 176, 148, 165, 176, 164, 180, 191, 177, 194, 202, 204, 222, 230, 190, 207, 216, 197, 213, 223, 207, 223, 232, 186, 203, 213, 158, 177, 190, 169, 186, 199, + 151, 169, 181, 153, 173, 185, 153, 172, 184, 135, 157, 171, 134, 157, 170, 125, 149, 162, 109, 135, 149, 121, 148, 160, 117, 143, 157, 115, 141, 155, 108, 135, 149, 105, 131, 145, 114, 140, 153, 123, 148, 160, 155, 173, 186, 177, 194, 206, 189, 205, 217, 195, 212, 223, 197, 213, 224, 184, 201, 212, 196, 213, 223, + 199, 215, 227, 186, 202, 214, 197, 215, 225, 206, 222, 233, 192, 208, 220, 186, 201, 216, 191, 207, 221, 195, 211, 222, 215, 231, 240, 217, 231, 240, 215, 231, 242, 200, 216, 227, 197, 212, 225, 219, 233, 242, 223, 236, 245, 215, 231, 240, 205, 221, 231, 218, 232, 243, 214, 231, 241, 213, 229, 238, 229, 242, 251, + 223, 237, 248, 235, 248, 252, 232, 245, 252, 233, 247, 253, 239, 252, 254, 236, 249, 253, 236, 250, 254, 234, 248, 252, 211, 228, 237, 207, 223, 236, 213, 227, 238, 227, 243, 249, 212, 229, 239, 217, 232, 244, 228, 244, 252, 232, 246, 254, 234, 249, 254, 240, 252, 253, 237, 252, 254, 233, 248, 252, 240, 253, 254, + 237, 251, 253, 233, 248, 254, 235, 249, 254, 230, 245, 254, 229, 244, 253, 221, 237, 246, 220, 236, 245, 229, 245, 252, 228, 244, 251, 233, 247, 253, 241, 254, 255, 244, 254, 254, 244, 253, 253, 253, 255, 255, 253, 254, 254, 255, 255, 255, 253, 254, 254, 242, 255, 254, 243, 254, 254, 239, 253, 254, 238, 251, 253, + 237, 254, 253, 236, 250, 252, 235, 248, 251, 228, 243, 248, 240, 252, 254, 249, 254, 254, 253, 255, 255, 254, 255, 255, 249, 255, 254, 247, 254, 254, 251, 255, 254, 240, 254, 254, 239, 251, 253, 242, 254, 254, 237, 253, 252, 242, 254, 252, 242, 253, 255, 238, 252, 253, 235, 249, 252, 234, 250, 254, 235, 251, 254, + 223, 239, 250, 223, 239, 248, 220, 237, 248, 220, 237, 250, 215, 231, 243, 210, 226, 238, 203, 217, 229, 200, 214, 228, 211, 226, 241, 197, 212, 220, 198, 205, 213, 193, 193, 198, 192, 190, 198, 194, 201, 210, 193, 201, 212, 191, 183, 185, 195, 163, 156, 197, 156, 141, 202, 149, 126, 201, 142, 109, 204, 143, 109, + 203, 144, 121, 200, 145, 131, 189, 158, 161, 168, 178, 195, 176, 171, 179, 195, 143, 123, 202, 150, 130, 205, 149, 129, 208, 139, 105, 207, 131, 88, 208, 130, 85, 214, 133, 82, 210, 124, 58, 210, 118, 50, 210, 116, 46, 211, 116, 46, 210, 115, 41, 209, 115, 43, 211, 117, 42, 212, 118, 46, 211, 116, 43, + 207, 113, 43, 204, 109, 38, 198, 106, 35, 192, 105, 40, 191, 101, 41, 192, 101, 40, 189, 101, 34, 188, 100, 35, 186, 97, 33, 184, 95, 32, 179, 92, 30, 179, 91, 32, 174, 86, 31, 171, 85, 33, 169, 83, 34, 168, 83, 36, 168, 83, 35, 167, 83, 36, 166, 85, 42, 164, 84, 36, 160, 78, 26, + 159, 77, 21, 155, 74, 17, 153, 73, 15, 151, 72, 15, 150, 69, 13, 148, 68, 14, 147, 71, 18, 144, 68, 17, 145, 69, 20, 145, 70, 18, 144, 68, 19, 145, 69, 20, 146, 69, 19, 146, 70, 20, 150, 72, 20, 153, 74, 21, 158, 75, 23, 157, 76, 20, 156, 74, 20, 156, 75, 21, 155, 74, 19, + 19, 41, 46, 20, 42, 47, 23, 43, 49, 24, 43, 49, 27, 46, 52, 28, 48, 53, 27, 47, 52, 29, 49, 54, 31, 51, 56, 32, 51, 56, 36, 55, 60, 34, 53, 58, 37, 55, 61, 38, 56, 61, 37, 55, 62, 33, 51, 58, 56, 70, 79, 66, 83, 95, 105, 125, 140, 124, 142, 159, 116, 133, 151, + 105, 123, 139, 74, 90, 108, 55, 69, 87, 60, 73, 91, 41, 52, 70, 76, 89, 105, 80, 94, 110, 87, 99, 114, 79, 95, 109, 101, 117, 131, 101, 117, 129, 81, 96, 109, 74, 86, 100, 53, 60, 70, 73, 86, 98, 107, 124, 137, 114, 129, 142, 145, 162, 175, 161, 177, 189, 176, 191, 201, 169, 186, 197, + 174, 191, 200, 159, 176, 187, 160, 176, 188, 171, 187, 197, 160, 176, 187, 160, 176, 187, 181, 199, 208, 176, 193, 204, 191, 208, 217, 188, 205, 216, 190, 208, 220, 176, 194, 205, 160, 180, 192, 139, 161, 175, 138, 159, 173, 131, 155, 167, 128, 152, 164, 121, 145, 159, 117, 142, 156, 110, 136, 151, 104, 130, 145, + 108, 134, 147, 106, 131, 146, 103, 129, 143, 98, 124, 138, 105, 130, 144, 119, 142, 158, 143, 165, 177, 155, 173, 187, 172, 190, 201, 187, 203, 216, 207, 223, 235, 195, 211, 223, 189, 205, 218, 194, 210, 222, 199, 216, 225, 198, 214, 226, 204, 221, 230, 204, 221, 231, 220, 234, 244, 205, 221, 233, 191, 207, 221, + 192, 208, 221, 188, 204, 218, 212, 227, 238, 208, 224, 235, 198, 214, 226, 205, 222, 231, 191, 206, 218, 200, 217, 227, 213, 227, 238, 222, 236, 244, 224, 240, 247, 227, 241, 247, 210, 227, 237, 219, 234, 246, 232, 247, 253, 217, 233, 243, 229, 244, 252, 231, 244, 250, 233, 247, 253, 239, 252, 254, 234, 249, 254, + 232, 244, 252, 223, 238, 248, 204, 220, 232, 210, 226, 238, 225, 241, 249, 208, 226, 234, 211, 227, 237, 229, 245, 252, 230, 243, 252, 233, 248, 254, 238, 251, 254, 233, 247, 254, 235, 248, 253, 237, 252, 255, 228, 243, 249, 236, 249, 254, 235, 250, 254, 228, 244, 252, 228, 244, 252, 220, 235, 246, 217, 233, 244, + 229, 244, 252, 223, 238, 248, 233, 246, 254, 236, 250, 253, 238, 254, 253, 245, 254, 253, 251, 254, 254, 253, 255, 255, 254, 255, 255, 249, 254, 254, 246, 255, 254, 243, 254, 255, 242, 253, 255, 241, 254, 254, 238, 253, 253, 240, 253, 253, 231, 244, 252, 235, 249, 252, 233, 248, 252, 250, 254, 254, 251, 255, 254, + 249, 254, 254, 240, 253, 253, 250, 255, 254, 240, 253, 254, 236, 251, 253, 242, 254, 253, 240, 253, 252, 238, 252, 253, 238, 252, 253, 233, 247, 252, 237, 253, 254, 240, 252, 254, 234, 249, 252, 232, 248, 251, 232, 249, 253, 228, 245, 251, 226, 242, 252, 223, 239, 250, 215, 229, 243, 214, 230, 243, 214, 228, 241, + 215, 233, 244, 218, 234, 247, 202, 215, 227, 199, 209, 219, 192, 197, 203, 191, 190, 195, 194, 197, 207, 194, 202, 212, 194, 197, 206, 196, 170, 165, 198, 157, 143, 203, 158, 143, 201, 150, 126, 206, 142, 108, 207, 139, 103, 206, 139, 105, 199, 146, 130, 176, 168, 179, 169, 169, 178, 198, 139, 107, 207, 132, 89, + 206, 136, 98, 210, 140, 106, 208, 133, 91, 209, 130, 82, 210, 129, 77, 209, 126, 70, 208, 121, 59, 205, 117, 50, 206, 114, 47, 206, 113, 43, 203, 113, 47, 205, 114, 46, 205, 114, 46, 203, 112, 48, 201, 111, 48, 197, 106, 44, 192, 103, 41, 190, 102, 44, 188, 100, 44, 186, 98, 38, 189, 100, 39, + 186, 99, 34, 185, 97, 34, 181, 94, 32, 179, 91, 33, 174, 88, 33, 172, 86, 35, 170, 85, 36, 166, 81, 31, 165, 82, 33, 165, 81, 30, 164, 80, 28, 163, 80, 27, 162, 80, 28, 161, 82, 39, 155, 76, 23, 154, 76, 26, 153, 75, 22, 150, 73, 19, 151, 71, 15, 149, 69, 13, 145, 70, 16, + 145, 69, 17, 144, 69, 17, 143, 68, 16, 144, 68, 19, 144, 68, 19, 144, 68, 16, 146, 69, 15, 153, 73, 15, 156, 76, 24, 159, 76, 22, 158, 76, 23, 156, 75, 23, 156, 74, 19, 156, 74, 19, 19, 41, 47, 20, 41, 48, 21, 41, 48, 23, 42, 48, 25, 44, 50, 26, 46, 51, 26, 46, 52, + 28, 48, 54, 30, 50, 55, 33, 52, 57, 33, 52, 57, 36, 55, 60, 36, 55, 60, 38, 58, 63, 36, 53, 60, 31, 47, 54, 36, 48, 58, 72, 88, 100, 92, 112, 128, 111, 129, 145, 121, 138, 156, 107, 125, 143, 92, 108, 126, 110, 126, 142, 63, 77, 93, 85, 100, 116, 73, 87, 103, 83, 98, 113, + 82, 96, 111, 108, 124, 137, 128, 145, 158, 112, 128, 141, 104, 121, 133, 116, 132, 145, 96, 109, 123, 66, 76, 90, 90, 103, 117, 147, 163, 174, 163, 180, 190, 179, 196, 203, 181, 197, 205, 187, 203, 212, 192, 209, 218, 184, 201, 209, 173, 191, 199, 178, 194, 203, 186, 202, 212, 173, 190, 200, 184, 202, 211, + 166, 185, 196, 167, 186, 197, 166, 185, 196, 157, 178, 189, 157, 176, 188, 144, 165, 177, 126, 149, 162, 105, 131, 145, 115, 141, 153, 111, 136, 148, 106, 132, 147, 105, 133, 145, 101, 128, 141, 102, 128, 143, 99, 125, 138, 101, 127, 141, 101, 127, 141, 104, 130, 144, 117, 140, 154, 142, 164, 174, 160, 178, 191, + 160, 177, 189, 178, 196, 207, 188, 204, 215, 196, 212, 223, 204, 220, 230, 193, 210, 221, 191, 207, 218, 198, 214, 226, 204, 221, 231, 214, 228, 238, 216, 230, 240, 214, 228, 241, 200, 217, 229, 202, 218, 229, 194, 210, 222, 192, 209, 222, 197, 213, 226, 192, 209, 221, 204, 219, 232, 186, 203, 215, 212, 228, 237, + 214, 230, 242, 211, 227, 238, 211, 228, 236, 226, 242, 248, 216, 230, 240, 228, 241, 247, 210, 227, 238, 224, 239, 247, 224, 239, 248, 219, 234, 245, 231, 244, 252, 225, 240, 248, 235, 247, 252, 232, 246, 252, 230, 245, 251, 219, 233, 246, 217, 232, 243, 205, 221, 231, 214, 230, 241, 206, 223, 232, 219, 235, 244, + 228, 241, 250, 229, 245, 253, 227, 243, 251, 232, 247, 253, 228, 244, 252, 233, 248, 253, 232, 248, 254, 230, 244, 252, 236, 248, 254, 232, 248, 255, 228, 243, 252, 228, 243, 253, 223, 239, 250, 223, 240, 249, 222, 236, 248, 225, 240, 249, 233, 248, 253, 232, 247, 253, 242, 254, 253, 252, 254, 254, 254, 254, 254, + 253, 255, 255, 255, 255, 255, 242, 253, 253, 243, 254, 254, 239, 253, 254, 243, 255, 254, 241, 255, 254, 237, 251, 253, 239, 253, 253, 234, 249, 253, 237, 250, 252, 239, 252, 253, 245, 254, 254, 250, 254, 254, 242, 254, 254, 243, 254, 254, 240, 253, 253, 238, 251, 254, 240, 253, 255, 239, 253, 253, 238, 252, 253, + 233, 246, 253, 236, 250, 253, 235, 251, 253, 238, 252, 254, 233, 248, 253, 226, 241, 250, 229, 244, 250, 233, 249, 253, 230, 246, 253, 229, 243, 251, 229, 247, 253, 223, 238, 251, 218, 233, 247, 220, 236, 248, 220, 236, 248, 207, 223, 236, 205, 218, 231, 198, 211, 221, 199, 207, 217, 200, 207, 216, 195, 197, 204, + 190, 189, 196, 195, 197, 205, 200, 198, 201, 196, 167, 156, 201, 154, 137, 202, 150, 126, 206, 148, 118, 207, 146, 114, 208, 143, 110, 202, 145, 118, 181, 162, 167, 170, 168, 178, 199, 145, 120, 208, 126, 68, 209, 125, 68, 209, 128, 74, 210, 131, 84, 207, 124, 77, 206, 124, 75, 204, 123, 69, 203, 122, 69, + 200, 113, 53, 198, 110, 47, 198, 109, 45, 199, 110, 52, 198, 111, 49, 199, 110, 49, 197, 108, 51, 197, 108, 50, 193, 103, 46, 191, 102, 47, 186, 98, 42, 187, 100, 45, 186, 97, 44, 183, 96, 38, 184, 96, 38, 184, 96, 38, 181, 94, 37, 178, 91, 35, 174, 88, 33, 170, 85, 35, 168, 84, 34, + 168, 83, 34, 166, 82, 33, 165, 83, 32, 164, 79, 28, 163, 80, 27, 161, 79, 25, 159, 77, 24, 161, 78, 25, 155, 78, 27, 154, 75, 23, 148, 73, 20, 150, 71, 15, 149, 70, 13, 146, 70, 13, 147, 71, 17, 146, 71, 16, 146, 71, 17, 145, 70, 20, 146, 70, 19, 147, 70, 18, 151, 72, 19, + 154, 74, 19, 160, 78, 26, 160, 77, 24, 158, 77, 25, 156, 75, 24, 155, 74, 18, 156, 75, 19, 17, 39, 45, 18, 40, 46, 21, 41, 48, 22, 42, 48, 23, 41, 48, 24, 44, 49, 25, 45, 51, 27, 48, 52, 30, 49, 56, 33, 52, 57, 34, 53, 58, 37, 55, 61, 35, 53, 59, 43, 60, 67, + 48, 62, 70, 39, 49, 58, 42, 54, 64, 53, 70, 80, 93, 112, 127, 92, 112, 129, 106, 126, 142, 121, 139, 156, 83, 101, 117, 115, 131, 148, 110, 125, 142, 107, 122, 138, 95, 110, 125, 115, 130, 144, 111, 128, 140, 136, 151, 163, 127, 145, 155, 156, 172, 184, 124, 140, 154, 148, 165, 176, 138, 154, 167, + 110, 127, 138, 117, 134, 146, 145, 163, 172, 164, 182, 191, 183, 199, 208, 180, 196, 205, 181, 198, 208, 193, 209, 218, 202, 219, 226, 197, 214, 221, 186, 204, 211, 194, 211, 219, 176, 195, 204, 168, 188, 198, 158, 177, 189, 137, 160, 173, 138, 160, 172, 126, 149, 161, 125, 149, 161, 115, 141, 153, 110, 135, 150, + 105, 132, 144, 103, 130, 144, 104, 130, 144, 103, 129, 143, 103, 129, 141, 100, 126, 138, 99, 125, 139, 100, 126, 139, 104, 130, 143, 111, 137, 149, 118, 142, 157, 134, 155, 168, 169, 187, 198, 157, 175, 188, 179, 196, 208, 169, 186, 199, 182, 199, 212, 177, 194, 207, 184, 200, 213, 188, 205, 217, 196, 213, 224, + 190, 206, 218, 192, 208, 220, 191, 208, 220, 208, 223, 233, 216, 232, 243, 216, 232, 243, 219, 235, 242, 226, 240, 250, 219, 236, 243, 216, 233, 240, 210, 225, 237, 214, 229, 239, 221, 237, 246, 213, 228, 239, 201, 217, 230, 201, 218, 231, 208, 223, 234, 218, 234, 244, 223, 236, 246, 227, 242, 249, 221, 237, 244, + 210, 225, 238, 223, 237, 248, 220, 234, 244, 230, 243, 252, 229, 242, 252, 233, 247, 255, 234, 247, 254, 228, 242, 251, 217, 233, 242, 215, 229, 240, 210, 227, 235, 216, 231, 241, 204, 220, 229, 217, 233, 242, 224, 240, 249, 222, 236, 246, 225, 241, 248, 227, 242, 251, 227, 243, 250, 233, 248, 253, 233, 249, 254, + 228, 243, 251, 232, 245, 253, 228, 244, 251, 231, 247, 253, 227, 242, 251, 227, 243, 251, 222, 239, 247, 219, 234, 245, 227, 243, 253, 233, 248, 254, 236, 251, 254, 238, 253, 253, 250, 254, 254, 253, 255, 255, 252, 255, 255, 254, 254, 254, 244, 255, 254, 243, 253, 253, 237, 253, 254, 239, 254, 254, 238, 252, 254, + 237, 251, 254, 237, 251, 254, 235, 249, 253, 236, 250, 253, 242, 254, 253, 241, 253, 253, 248, 254, 254, 246, 254, 254, 246, 255, 254, 241, 253, 253, 237, 250, 253, 236, 250, 252, 236, 250, 254, 234, 249, 253, 237, 250, 254, 227, 244, 252, 232, 245, 253, 236, 250, 253, 233, 247, 254, 232, 248, 254, 237, 252, 254, + 236, 250, 253, 239, 252, 253, 237, 251, 253, 230, 246, 253, 221, 238, 250, 221, 237, 250, 226, 242, 253, 225, 242, 252, 217, 232, 246, 213, 230, 243, 208, 225, 238, 201, 218, 229, 199, 211, 220, 198, 204, 213, 199, 202, 208, 201, 203, 210, 196, 198, 207, 195, 182, 184, 200, 163, 153, 200, 159, 145, 203, 159, 149, + 203, 149, 127, 204, 142, 112, 199, 141, 114, 185, 158, 161, 172, 168, 179, 194, 146, 132, 208, 127, 70, 206, 123, 67, 204, 119, 63, 205, 122, 71, 203, 120, 68, 201, 117, 65, 197, 115, 61, 197, 118, 68, 199, 116, 66, 192, 108, 53, 192, 106, 50, 192, 107, 52, 196, 106, 51, 195, 107, 49, 193, 104, 49, + 193, 105, 53, 190, 102, 49, 187, 99, 45, 183, 98, 44, 184, 98, 46, 180, 96, 44, 181, 95, 41, 182, 95, 39, 181, 95, 41, 179, 93, 40, 176, 91, 40, 174, 88, 38, 172, 87, 39, 170, 85, 38, 167, 83, 33, 166, 82, 34, 164, 82, 30, 163, 80, 24, 164, 81, 26, 161, 78, 22, 159, 76, 23, + 161, 79, 24, 156, 74, 17, 155, 74, 16, 155, 78, 24, 154, 75, 22, 151, 73, 19, 152, 73, 15, 149, 71, 15, 146, 71, 15, 147, 70, 17, 146, 71, 19, 145, 69, 15, 152, 71, 20, 156, 75, 22, 160, 76, 25, 160, 78, 23, 160, 77, 22, 160, 77, 26, 159, 78, 26, 155, 75, 19, 156, 77, 21, + 15, 37, 43, 18, 39, 45, 19, 39, 45, 20, 40, 47, 22, 41, 48, 23, 42, 49, 24, 43, 50, 29, 49, 54, 32, 51, 57, 35, 53, 59, 37, 55, 61, 35, 52, 59, 30, 44, 52, 33, 45, 54, 41, 53, 63, 58, 71, 80, 61, 76, 87, 68, 87, 100, 70, 92, 105, 99, 122, 138, 97, 119, 136, + 123, 141, 158, 114, 132, 149, 105, 123, 138, 128, 144, 158, 127, 143, 157, 132, 148, 161, 132, 148, 161, 127, 142, 156, 135, 151, 164, 155, 171, 183, 161, 177, 188, 146, 163, 174, 148, 164, 177, 124, 140, 154, 153, 168, 179, 153, 171, 181, 141, 157, 170, 178, 194, 202, 189, 205, 212, 188, 205, 215, 179, 196, 206, + 184, 203, 212, 183, 201, 209, 183, 200, 209, 189, 206, 216, 172, 193, 202, 154, 174, 186, 138, 162, 173, 132, 156, 168, 112, 137, 152, 107, 132, 146, 110, 137, 150, 105, 131, 144, 103, 130, 144, 101, 128, 142, 104, 131, 143, 105, 131, 146, 102, 129, 142, 102, 128, 142, 102, 128, 141, 101, 127, 140, 102, 128, 141, + 108, 134, 146, 113, 139, 152, 123, 148, 162, 129, 152, 167, 142, 162, 177, 158, 175, 190, 183, 200, 212, 184, 200, 212, 188, 204, 217, 181, 197, 209, 174, 192, 204, 182, 199, 211, 181, 197, 211, 178, 195, 209, 170, 186, 202, 178, 194, 208, 184, 200, 215, 198, 215, 227, 193, 209, 221, 187, 204, 217, 194, 211, 222, + 206, 222, 235, 202, 218, 230, 210, 226, 238, 210, 225, 237, 218, 234, 243, 213, 229, 238, 215, 231, 241, 208, 224, 237, 183, 200, 214, 208, 224, 236, 211, 225, 235, 212, 227, 241, 210, 227, 235, 239, 252, 254, 211, 227, 238, 212, 228, 239, 225, 240, 251, 223, 238, 248, 223, 239, 248, 232, 245, 252, 233, 248, 252, + 224, 238, 247, 217, 232, 243, 207, 223, 234, 204, 221, 231, 214, 231, 240, 203, 221, 230, 215, 232, 241, 216, 232, 242, 224, 239, 248, 217, 234, 244, 227, 243, 250, 227, 242, 251, 235, 247, 254, 229, 245, 252, 222, 237, 246, 224, 241, 249, 221, 238, 247, 227, 242, 250, 226, 243, 251, 230, 245, 253, 231, 248, 253, + 226, 240, 251, 229, 245, 253, 232, 247, 254, 231, 244, 252, 237, 251, 253, 246, 254, 254, 247, 255, 254, 243, 254, 254, 252, 255, 255, 242, 254, 254, 245, 253, 254, 234, 251, 254, 231, 245, 251, 234, 251, 253, 237, 249, 253, 237, 250, 253, 236, 251, 254, 239, 252, 253, 243, 254, 254, 244, 253, 253, 248, 254, 254, + 244, 253, 254, 242, 253, 254, 240, 252, 253, 237, 250, 253, 236, 251, 254, 235, 250, 254, 236, 250, 254, 234, 247, 254, 230, 246, 253, 235, 250, 253, 236, 251, 253, 237, 251, 254, 237, 250, 252, 245, 254, 254, 238, 252, 254, 239, 252, 254, 235, 253, 254, 233, 248, 254, 230, 247, 252, 232, 249, 253, 229, 246, 254, + 226, 242, 253, 224, 240, 254, 220, 235, 250, 213, 229, 245, 206, 223, 237, 201, 218, 229, 200, 208, 217, 197, 199, 207, 197, 193, 201, 194, 193, 202, 195, 193, 202, 195, 181, 183, 195, 159, 147, 197, 147, 127, 199, 145, 123, 200, 143, 116, 195, 135, 112, 183, 154, 160, 173, 167, 175, 192, 148, 139, 199, 126, 79, + 199, 120, 70, 198, 118, 69, 195, 114, 64, 198, 115, 65, 195, 112, 60, 194, 111, 58, 193, 109, 58, 193, 110, 59, 191, 108, 55, 188, 102, 49, 190, 106, 51, 191, 106, 50, 190, 104, 48, 191, 105, 52, 190, 104, 51, 189, 103, 52, 188, 101, 49, 187, 99, 48, 182, 97, 47, 181, 96, 46, 182, 98, 45, + 183, 96, 42, 180, 95, 44, 179, 94, 44, 175, 90, 42, 176, 91, 43, 170, 86, 39, 170, 84, 38, 167, 83, 33, 165, 81, 28, 164, 81, 28, 166, 82, 31, 166, 82, 30, 163, 79, 22, 160, 77, 22, 158, 76, 17, 159, 76, 20, 157, 77, 15, 158, 75, 19, 155, 75, 15, 155, 73, 15, 155, 73, 14, + 153, 73, 14, 150, 72, 14, 150, 73, 16, 150, 72, 18, 152, 74, 20, 157, 74, 23, 162, 78, 27, 162, 79, 24, 161, 77, 26, 161, 78, 24, 162, 79, 27, 161, 78, 26, 159, 78, 23, 159, 77, 23, 15, 37, 43, 17, 39, 44, 17, 39, 45, 22, 41, 48, 21, 40, 47, 26, 46, 51, 29, 48, 53, + 34, 52, 58, 36, 54, 61, 35, 53, 60, 37, 55, 60, 38, 52, 60, 30, 43, 53, 30, 42, 50, 48, 61, 70, 56, 73, 83, 70, 91, 103, 79, 106, 116, 89, 115, 129, 85, 110, 126, 97, 122, 137, 121, 141, 158, 111, 130, 148, 121, 136, 151, 142, 159, 172, 146, 162, 175, 157, 173, 183, 155, 170, 181, + 142, 158, 170, 152, 168, 180, 159, 174, 185, 166, 183, 193, 163, 179, 190, 142, 159, 171, 152, 168, 180, 134, 152, 163, 159, 174, 185, 140, 156, 168, 163, 180, 190, 179, 196, 204, 186, 204, 212, 177, 195, 207, 171, 189, 200, 170, 189, 198, 159, 179, 189, 155, 175, 186, 156, 176, 188, 143, 164, 175, 121, 146, 158, + 112, 138, 153, 107, 132, 145, 96, 124, 136, 101, 127, 141, 100, 126, 140, 102, 128, 142, 103, 129, 142, 102, 129, 142, 101, 128, 141, 102, 127, 140, 103, 129, 141, 102, 128, 141, 105, 131, 143, 111, 137, 150, 117, 143, 158, 123, 149, 161, 136, 158, 170, 130, 151, 168, 153, 171, 185, 150, 167, 184, 160, 176, 191, + 185, 201, 214, 194, 210, 222, 183, 199, 213, 186, 203, 214, 180, 197, 208, 177, 194, 207, 180, 196, 207, 187, 204, 217, 176, 192, 209, 164, 181, 199, 163, 179, 196, 164, 181, 197, 174, 191, 206, 191, 209, 225, 193, 209, 223, 193, 209, 222, 196, 213, 229, 209, 225, 236, 221, 237, 245, 203, 219, 232, 195, 212, 223, + 186, 203, 220, 185, 202, 219, 172, 188, 206, 196, 212, 224, 222, 237, 245, 206, 223, 232, 208, 224, 235, 232, 247, 251, 219, 235, 244, 213, 229, 241, 224, 237, 247, 223, 237, 246, 220, 234, 244, 233, 247, 253, 224, 239, 248, 213, 229, 241, 194, 212, 222, 197, 213, 225, 200, 218, 225, 206, 222, 232, 209, 225, 236, + 207, 223, 232, 226, 241, 250, 218, 233, 244, 224, 241, 249, 227, 242, 252, 231, 244, 253, 226, 242, 250, 230, 245, 253, 219, 235, 246, 218, 234, 243, 225, 241, 249, 228, 243, 252, 227, 243, 252, 229, 245, 252, 230, 245, 253, 227, 244, 252, 228, 243, 251, 229, 243, 249, 238, 252, 254, 239, 254, 253, 237, 253, 252, + 240, 252, 254, 251, 255, 254, 238, 252, 254, 238, 252, 254, 230, 245, 253, 229, 245, 251, 232, 247, 252, 232, 246, 252, 235, 248, 252, 232, 246, 252, 238, 252, 252, 241, 253, 254, 247, 255, 254, 241, 253, 254, 239, 253, 254, 242, 254, 255, 235, 248, 253, 238, 253, 253, 232, 248, 252, 240, 253, 254, 236, 251, 254, + 231, 245, 252, 235, 251, 254, 240, 252, 254, 239, 251, 252, 237, 250, 253, 240, 252, 254, 236, 253, 254, 238, 252, 253, 236, 252, 252, 234, 252, 254, 232, 248, 253, 232, 250, 253, 229, 247, 253, 229, 245, 253, 230, 246, 253, 224, 240, 252, 214, 230, 243, 210, 227, 239, 206, 223, 235, 201, 214, 223, 196, 201, 211, + 193, 193, 200, 191, 188, 197, 192, 185, 194, 192, 191, 200, 198, 195, 200, 190, 162, 157, 192, 145, 129, 192, 142, 122, 191, 140, 122, 190, 143, 130, 179, 159, 166, 175, 167, 176, 184, 147, 144, 190, 127, 96, 193, 116, 72, 189, 113, 66, 191, 113, 66, 190, 111, 63, 192, 110, 60, 194, 110, 60, 193, 110, 58, + 190, 106, 57, 189, 105, 53, 188, 102, 49, 187, 102, 49, 189, 105, 52, 189, 105, 51, 188, 103, 52, 188, 104, 53, 187, 103, 54, 187, 101, 50, 185, 99, 49, 183, 97, 46, 180, 96, 44, 180, 95, 44, 181, 97, 45, 181, 97, 47, 177, 93, 46, 175, 90, 43, 175, 89, 43, 175, 90, 43, 171, 86, 37, + 168, 85, 34, 166, 81, 30, 165, 83, 28, 169, 83, 29, 167, 81, 27, 165, 78, 22, 163, 79, 22, 162, 79, 21, 162, 78, 20, 160, 75, 12, 160, 76, 18, 160, 75, 17, 159, 76, 18, 160, 77, 19, 156, 74, 16, 157, 77, 17, 154, 75, 18, 155, 73, 18, 157, 75, 22, 161, 78, 24, 162, 79, 24, + 165, 80, 24, 164, 79, 24, 163, 79, 26, 160, 77, 25, 161, 81, 28, 161, 79, 22, 160, 80, 26, 17, 38, 43, 17, 39, 44, 20, 42, 47, 23, 42, 49, 25, 44, 50, 28, 48, 53, 33, 53, 58, 39, 58, 64, 41, 59, 66, 41, 59, 66, 48, 62, 71, 49, 61, 70, 38, 49, 59, 45, 58, 67, + 72, 92, 102, 82, 106, 118, 80, 106, 119, 85, 113, 125, 99, 126, 140, 93, 119, 135, 100, 125, 141, 112, 134, 150, 121, 141, 158, 122, 138, 153, 132, 150, 162, 133, 149, 162, 156, 171, 181, 172, 187, 196, 160, 176, 186, 155, 171, 183, 156, 173, 184, 165, 182, 191, 166, 183, 192, 161, 178, 188, 156, 173, 183, + 157, 174, 183, 155, 171, 183, 149, 169, 177, 152, 168, 180, 164, 182, 192, 168, 187, 196, 156, 175, 187, 150, 172, 183, 140, 161, 174, 137, 159, 171, 129, 153, 165, 127, 151, 164, 122, 146, 158, 109, 135, 148, 103, 130, 142, 102, 129, 142, 100, 128, 139, 101, 126, 138, 100, 126, 138, 102, 128, 141, 101, 128, 140, + 101, 127, 141, 101, 127, 139, 101, 127, 139, 102, 128, 141, 105, 131, 145, 112, 138, 150, 119, 145, 157, 132, 156, 170, 134, 159, 170, 146, 168, 180, 152, 171, 186, 159, 175, 190, 154, 171, 187, 158, 175, 192, 164, 182, 198, 165, 181, 197, 173, 188, 205, 161, 177, 194, 180, 196, 212, 185, 202, 215, 192, 209, 221, + 188, 204, 216, 189, 205, 217, 188, 204, 219, 173, 190, 207, 164, 182, 199, 177, 193, 209, 156, 177, 193, 167, 183, 201, 167, 186, 202, 162, 181, 199, 161, 179, 199, 165, 183, 202, 192, 210, 227, 196, 212, 228, 201, 218, 233, 168, 187, 208, 173, 190, 209, 141, 160, 183, 188, 205, 221, 206, 223, 236, 226, 241, 248, + 206, 223, 233, 234, 246, 252, 197, 213, 227, 218, 233, 246, 224, 238, 247, 206, 222, 234, 221, 237, 245, 219, 236, 245, 205, 222, 233, 193, 210, 221, 198, 214, 225, 198, 216, 224, 206, 223, 233, 205, 221, 231, 202, 219, 228, 214, 229, 242, 214, 230, 240, 223, 239, 250, 224, 240, 248, 224, 240, 247, 226, 241, 251, + 226, 242, 250, 222, 237, 248, 218, 233, 241, 219, 234, 242, 228, 244, 251, 226, 242, 251, 233, 248, 253, 225, 241, 250, 221, 238, 248, 226, 241, 250, 229, 244, 249, 239, 253, 253, 240, 254, 253, 237, 252, 254, 243, 253, 253, 248, 255, 254, 237, 252, 252, 236, 251, 254, 229, 246, 253, 227, 243, 250, 230, 247, 253, + 230, 246, 252, 236, 250, 255, 227, 245, 252, 241, 252, 253, 239, 252, 254, 238, 250, 252, 237, 252, 253, 240, 254, 253, 236, 250, 253, 240, 253, 253, 238, 251, 253, 238, 252, 254, 236, 251, 254, 236, 249, 254, 238, 250, 254, 236, 251, 253, 238, 251, 253, 236, 249, 254, 235, 249, 251, 245, 254, 254, 240, 253, 253, + 237, 252, 254, 239, 254, 253, 235, 250, 252, 235, 251, 254, 226, 244, 252, 231, 247, 253, 226, 243, 252, 229, 245, 251, 223, 241, 247, 219, 235, 247, 217, 234, 246, 204, 218, 228, 201, 208, 217, 200, 203, 212, 189, 185, 192, 180, 172, 178, 185, 174, 181, 187, 178, 184, 194, 190, 199, 190, 173, 172, 189, 146, 133, + 189, 139, 120, 192, 145, 131, 182, 146, 140, 172, 155, 161, 169, 153, 160, 178, 143, 141, 179, 127, 110, 184, 117, 82, 187, 115, 77, 189, 115, 77, 188, 113, 73, 190, 112, 67, 189, 106, 60, 190, 107, 59, 189, 107, 58, 188, 104, 55, 188, 103, 55, 188, 103, 54, 190, 106, 56, 189, 104, 55, 189, 103, 53, + 190, 105, 55, 186, 101, 50, 186, 101, 50, 188, 101, 50, 184, 99, 48, 182, 98, 47, 179, 95, 43, 180, 95, 44, 178, 93, 43, 178, 93, 46, 175, 91, 43, 175, 89, 41, 174, 88, 39, 171, 86, 35, 170, 85, 33, 169, 83, 30, 172, 85, 29, 173, 85, 29, 168, 81, 24, 167, 81, 25, 165, 79, 20, + 164, 80, 20, 166, 80, 23, 164, 78, 20, 164, 76, 20, 165, 79, 22, 164, 80, 21, 164, 79, 20, 161, 76, 19, 158, 76, 14, 159, 76, 16, 162, 77, 21, 164, 79, 27, 163, 79, 23, 166, 80, 24, 168, 80, 24, 165, 81, 25, 161, 78, 23, 163, 81, 27, 163, 83, 30, 162, 80, 24, 165, 83, 30, + 20, 40, 47, 20, 40, 47, 23, 42, 49, 24, 43, 50, 29, 48, 54, 36, 55, 61, 45, 63, 70, 59, 77, 85, 67, 84, 93, 69, 86, 94, 71, 86, 96, 51, 64, 74, 54, 68, 78, 74, 95, 105, 92, 119, 132, 107, 133, 147, 98, 126, 140, 91, 120, 134, 99, 127, 142, 106, 132, 148, 108, 133, 149, + 118, 140, 155, 123, 141, 157, 129, 146, 160, 123, 140, 153, 145, 161, 174, 143, 160, 170, 155, 171, 183, 164, 181, 190, 162, 179, 188, 163, 180, 190, 160, 177, 186, 157, 173, 184, 157, 175, 184, 161, 178, 189, 162, 178, 190, 157, 175, 184, 152, 170, 182, 154, 173, 184, 147, 165, 176, 139, 158, 172, 137, 158, 170, + 123, 146, 158, 111, 136, 148, 107, 133, 145, 108, 134, 146, 105, 130, 142, 102, 128, 141, 102, 128, 140, 100, 127, 139, 102, 129, 141, 101, 129, 141, 101, 128, 140, 100, 127, 139, 99, 125, 138, 100, 127, 139, 100, 126, 140, 100, 127, 140, 102, 128, 141, 106, 132, 144, 111, 138, 149, 123, 148, 161, 140, 163, 175, + 150, 171, 183, 164, 183, 195, 158, 177, 192, 163, 180, 195, 154, 170, 187, 171, 186, 202, 163, 180, 195, 160, 177, 193, 168, 184, 200, 167, 182, 199, 181, 198, 211, 172, 188, 204, 156, 172, 188, 155, 172, 189, 163, 181, 196, 184, 200, 215, 193, 210, 222, 197, 213, 226, 191, 208, 221, 214, 230, 244, 213, 229, 242, + 210, 225, 240, 191, 209, 228, 188, 207, 227, 186, 206, 227, 185, 207, 227, 168, 188, 212, 164, 186, 210, 168, 187, 213, 171, 191, 216, 153, 174, 198, 169, 187, 210, 142, 163, 187, 177, 195, 215, 195, 212, 227, 213, 228, 235, 217, 231, 243, 207, 223, 235, 199, 215, 229, 213, 229, 241, 201, 218, 229, 201, 218, 230, + 212, 228, 241, 196, 213, 224, 194, 211, 222, 197, 213, 225, 197, 215, 223, 193, 209, 221, 202, 218, 229, 199, 216, 226, 206, 223, 234, 211, 228, 238, 216, 234, 244, 220, 235, 244, 220, 235, 245, 224, 240, 250, 220, 235, 246, 222, 238, 247, 223, 239, 248, 224, 239, 247, 225, 243, 250, 221, 236, 246, 222, 240, 248, + 221, 238, 249, 223, 238, 249, 227, 242, 251, 230, 246, 252, 236, 250, 253, 238, 252, 253, 237, 252, 253, 240, 252, 254, 237, 252, 253, 235, 252, 253, 235, 251, 253, 231, 246, 253, 223, 240, 249, 229, 245, 252, 227, 241, 250, 228, 241, 250, 225, 240, 248, 238, 252, 254, 236, 250, 253, 233, 247, 253, 237, 252, 253, + 237, 250, 255, 235, 249, 253, 238, 252, 253, 236, 249, 253, 234, 247, 253, 238, 252, 253, 240, 253, 254, 234, 249, 254, 236, 251, 254, 232, 246, 252, 230, 244, 252, 238, 252, 253, 236, 251, 253, 242, 252, 253, 234, 249, 251, 235, 248, 252, 233, 248, 252, 235, 249, 252, 233, 248, 251, 244, 253, 253, 239, 254, 254, + 240, 253, 254, 232, 250, 255, 229, 244, 254, 217, 231, 242, 200, 209, 216, 196, 197, 203, 194, 196, 204, 181, 172, 175, 182, 167, 171, 186, 176, 183, 183, 169, 172, 187, 176, 183, 198, 198, 207, 187, 169, 170, 190, 151, 141, 187, 140, 124, 181, 141, 132, 171, 149, 153, 171, 144, 145, 177, 137, 130, 179, 122, 101, + 184, 111, 77, 184, 109, 71, 184, 108, 70, 186, 109, 69, 188, 111, 71, 188, 113, 72, 190, 113, 74, 188, 111, 71, 187, 109, 65, 189, 110, 65, 189, 108, 64, 188, 104, 59, 187, 105, 59, 188, 103, 55, 189, 105, 55, 189, 104, 54, 187, 103, 50, 183, 99, 46, 185, 99, 49, 183, 98, 46, 183, 96, 42, + 181, 98, 44, 179, 94, 44, 180, 95, 48, 179, 94, 47, 178, 92, 41, 177, 90, 38, 175, 88, 35, 173, 86, 32, 174, 86, 32, 176, 87, 29, 174, 87, 24, 172, 85, 22, 172, 84, 24, 168, 82, 21, 166, 80, 20, 168, 81, 21, 168, 81, 19, 171, 83, 23, 168, 81, 21, 168, 81, 19, 167, 80, 22, + 166, 81, 19, 166, 82, 18, 166, 80, 20, 171, 84, 22, 169, 83, 25, 170, 82, 23, 169, 83, 21, 171, 83, 22, 166, 81, 21, 167, 83, 27, 167, 83, 28, 168, 84, 29, 167, 84, 27, 163, 81, 25, 20, 40, 46, 24, 44, 49, 29, 48, 54, 35, 54, 59, 48, 67, 73, 59, 77, 84, 66, 83, 93, + 81, 98, 108, 85, 102, 113, 96, 113, 125, 110, 127, 139, 116, 133, 145, 89, 110, 123, 100, 125, 137, 109, 136, 150, 117, 145, 159, 117, 146, 160, 104, 135, 150, 103, 132, 148, 113, 139, 155, 118, 144, 159, 123, 146, 160, 138, 155, 168, 130, 148, 159, 133, 151, 162, 134, 150, 162, 156, 173, 183, 150, 167, 176, + 158, 175, 184, 161, 178, 187, 161, 178, 188, 155, 171, 184, 159, 175, 187, 150, 168, 179, 152, 170, 180, 156, 174, 183, 155, 174, 183, 139, 158, 171, 140, 161, 172, 136, 157, 168, 122, 146, 158, 115, 139, 151, 104, 130, 142, 101, 127, 140, 97, 123, 135, 96, 123, 134, 97, 125, 136, 99, 125, 138, 100, 127, 139, + 99, 127, 138, 101, 127, 140, 101, 127, 140, 101, 128, 141, 100, 128, 139, 100, 127, 139, 100, 127, 139, 99, 126, 138, 102, 128, 141, 105, 131, 143, 114, 140, 151, 135, 159, 171, 142, 164, 175, 162, 181, 194, 175, 194, 204, 174, 192, 205, 186, 202, 216, 187, 205, 218, 183, 199, 212, 183, 200, 214, 181, 197, 211, + 170, 186, 201, 156, 172, 189, 149, 166, 183, 167, 183, 199, 164, 180, 195, 172, 187, 203, 175, 191, 207, 175, 192, 208, 170, 188, 205, 146, 162, 184, 142, 159, 184, 154, 175, 195, 141, 161, 186, 150, 170, 194, 122, 143, 173, 127, 148, 179, 120, 140, 174, 97, 120, 157, 99, 122, 161, 100, 122, 158, 74, 95, 134, + 101, 122, 158, 88, 109, 145, 110, 130, 167, 131, 152, 182, 154, 174, 202, 146, 165, 193, 160, 178, 202, 176, 193, 213, 210, 226, 240, 199, 215, 232, 190, 205, 221, 209, 225, 237, 211, 227, 240, 184, 201, 214, 212, 228, 240, 190, 207, 219, 181, 197, 210, 201, 218, 228, 190, 207, 218, 190, 207, 218, 192, 209, 220, + 191, 208, 219, 199, 216, 227, 207, 224, 233, 210, 226, 237, 221, 236, 245, 222, 237, 247, 216, 232, 244, 219, 235, 245, 220, 236, 246, 221, 238, 247, 225, 240, 249, 222, 239, 249, 214, 231, 241, 218, 235, 244, 219, 237, 245, 221, 236, 245, 229, 245, 253, 229, 244, 251, 233, 249, 253, 235, 249, 253, 232, 247, 252, + 235, 248, 252, 240, 254, 253, 234, 249, 254, 235, 251, 254, 232, 248, 255, 227, 244, 250, 227, 243, 250, 230, 244, 251, 226, 242, 249, 232, 245, 253, 233, 248, 253, 234, 248, 254, 233, 247, 254, 239, 252, 254, 236, 249, 253, 239, 251, 254, 236, 249, 252, 237, 250, 254, 235, 249, 252, 242, 254, 254, 235, 248, 253, + 235, 249, 254, 233, 248, 253, 232, 246, 253, 236, 249, 253, 234, 249, 253, 241, 254, 254, 247, 254, 253, 240, 252, 253, 242, 254, 253, 236, 251, 253, 244, 253, 253, 245, 255, 254, 245, 254, 254, 240, 254, 254, 230, 246, 253, 226, 243, 252, 219, 234, 243, 211, 222, 229, 195, 197, 201, 201, 206, 212, 202, 209, 218, + 194, 193, 197, 195, 193, 198, 190, 182, 190, 182, 164, 165, 176, 146, 142, 185, 175, 183, 185, 168, 168, 183, 142, 129, 181, 138, 125, 182, 152, 152, 176, 157, 163, 176, 147, 147, 176, 133, 127, 179, 122, 100, 185, 117, 85, 184, 110, 71, 185, 109, 69, 185, 106, 65, 186, 109, 64, 187, 110, 64, 185, 107, 61, + 186, 108, 63, 187, 107, 60, 185, 106, 59, 185, 103, 58, 186, 107, 62, 187, 107, 63, 187, 106, 64, 187, 107, 61, 189, 108, 63, 186, 105, 57, 189, 106, 60, 188, 105, 57, 183, 100, 49, 185, 102, 50, 183, 99, 49, 183, 98, 48, 183, 97, 50, 180, 95, 45, 180, 95, 40, 179, 94, 36, 176, 89, 30, + 179, 90, 32, 179, 90, 33, 179, 91, 25, 177, 89, 21, 173, 84, 19, 173, 85, 23, 171, 84, 21, 170, 81, 22, 169, 81, 21, 172, 84, 21, 171, 83, 19, 174, 83, 19, 174, 83, 17, 173, 84, 16, 173, 85, 15, 172, 84, 13, 175, 85, 13, 173, 85, 13, 172, 84, 16, 174, 85, 20, 174, 86, 19, + 172, 86, 20, 173, 85, 22, 171, 84, 21, 172, 85, 22, 172, 84, 24, 167, 83, 23, 167, 85, 25, 31, 50, 56, 41, 59, 66, 55, 74, 79, 59, 77, 85, 68, 86, 94, 67, 84, 93, 60, 76, 86, 67, 83, 94, 59, 74, 84, 62, 77, 88, 73, 89, 102, 92, 110, 123, 113, 138, 149, 117, 143, 156, + 129, 157, 171, 128, 156, 170, 122, 154, 167, 111, 142, 157, 110, 140, 155, 118, 145, 162, 125, 150, 166, 123, 146, 161, 132, 149, 163, 143, 160, 172, 134, 152, 163, 136, 153, 163, 147, 164, 174, 156, 173, 182, 162, 178, 188, 166, 182, 191, 152, 169, 179, 161, 177, 189, 155, 172, 183, 138, 156, 168, 144, 162, 173, + 136, 156, 168, 134, 154, 166, 128, 150, 162, 115, 138, 151, 112, 138, 149, 105, 131, 142, 98, 125, 136, 96, 123, 135, 97, 123, 135, 97, 123, 135, 97, 126, 137, 97, 124, 135, 97, 124, 136, 97, 125, 137, 99, 126, 137, 97, 124, 137, 100, 127, 138, 99, 126, 137, 99, 127, 138, 101, 127, 140, 100, 128, 139, + 104, 131, 142, 111, 138, 149, 122, 147, 160, 135, 158, 171, 159, 179, 191, 174, 194, 204, 174, 192, 204, 188, 205, 215, 184, 201, 213, 191, 207, 220, 162, 179, 194, 173, 189, 204, 169, 185, 200, 151, 168, 186, 160, 177, 195, 153, 168, 187, 154, 172, 189, 162, 179, 196, 166, 185, 199, 180, 196, 213, 178, 194, 211, + 169, 187, 204, 160, 176, 197, 145, 162, 186, 120, 137, 164, 102, 123, 152, 111, 130, 163, 105, 125, 161, 89, 110, 148, 82, 103, 142, 60, 78, 118, 53, 71, 112, 36, 53, 94, 28, 43, 83, 27, 40, 81, 24, 38, 79, 42, 58, 99, 29, 45, 86, 31, 45, 85, 48, 65, 103, 78, 95, 132, 111, 130, 162, + 153, 172, 198, 186, 203, 220, 181, 197, 216, 189, 206, 221, 201, 217, 230, 194, 210, 223, 188, 204, 220, 219, 233, 247, 186, 203, 215, 165, 182, 195, 185, 202, 212, 193, 210, 221, 178, 195, 208, 183, 202, 212, 183, 200, 210, 193, 211, 221, 197, 215, 224, 204, 220, 231, 214, 231, 241, 211, 227, 239, 213, 229, 241, + 211, 228, 240, 216, 231, 243, 216, 233, 243, 226, 241, 251, 217, 233, 246, 207, 223, 236, 217, 233, 243, 219, 235, 244, 225, 240, 248, 230, 246, 253, 236, 250, 254, 236, 252, 252, 231, 246, 252, 229, 244, 250, 238, 252, 253, 236, 250, 253, 233, 249, 253, 234, 250, 254, 227, 242, 249, 227, 244, 251, 225, 242, 250, + 225, 239, 248, 222, 237, 247, 229, 243, 249, 232, 244, 252, 228, 241, 250, 236, 250, 255, 239, 252, 254, 236, 251, 253, 237, 251, 254, 233, 246, 253, 231, 244, 252, 240, 253, 254, 237, 251, 253, 236, 248, 254, 235, 247, 253, 233, 247, 253, 236, 251, 254, 235, 248, 252, 238, 250, 253, 243, 254, 253, 243, 254, 254, + 244, 254, 253, 245, 253, 253, 242, 253, 252, 239, 251, 254, 235, 250, 254, 236, 252, 253, 234, 249, 254, 229, 244, 252, 226, 241, 252, 216, 232, 243, 209, 220, 229, 208, 216, 224, 217, 228, 240, 204, 211, 221, 199, 207, 215, 193, 195, 200, 177, 163, 166, 177, 153, 149, 180, 144, 136, 180, 158, 161, 188, 176, 179, + 186, 156, 146, 181, 137, 123, 178, 146, 147, 173, 151, 153, 175, 142, 140, 183, 138, 130, 179, 125, 105, 183, 117, 90, 182, 110, 74, 185, 111, 70, 185, 110, 68, 186, 111, 66, 186, 108, 63, 188, 110, 64, 185, 107, 60, 187, 106, 59, 187, 107, 62, 186, 105, 58, 186, 104, 58, 188, 105, 56, 188, 105, 57, + 188, 104, 53, 189, 104, 55, 189, 105, 54, 188, 102, 48, 187, 103, 47, 187, 101, 47, 184, 101, 46, 184, 100, 44, 183, 98, 43, 184, 99, 46, 181, 94, 37, 180, 92, 34, 181, 93, 29, 183, 92, 25, 182, 93, 29, 183, 95, 29, 181, 92, 21, 180, 90, 19, 176, 85, 16, 175, 86, 20, 177, 86, 20, + 174, 85, 19, 178, 89, 18, 179, 86, 12, 180, 88, 13, 181, 88, 12, 181, 88, 10, 181, 87, 8, 180, 89, 6, 181, 87, 5, 182, 87, 4, 181, 89, 7, 181, 90, 10, 182, 89, 13, 182, 90, 15, 180, 88, 18, 178, 88, 21, 177, 89, 15, 173, 87, 16, 173, 85, 19, 171, 85, 21, 171, 86, 19, + 59, 77, 85, 67, 85, 93, 77, 95, 106, 90, 108, 119, 86, 104, 116, 82, 101, 111, 74, 91, 102, 68, 85, 96, 65, 79, 92, 71, 84, 97, 53, 69, 78, 77, 97, 108, 105, 131, 143, 135, 162, 174, 139, 166, 180, 137, 166, 180, 127, 160, 173, 121, 152, 167, 122, 153, 166, 124, 151, 168, 123, 148, 164, + 132, 152, 167, 138, 155, 168, 145, 162, 171, 144, 161, 171, 145, 162, 171, 136, 153, 163, 157, 174, 183, 158, 176, 184, 163, 180, 189, 150, 167, 180, 148, 167, 177, 143, 161, 174, 126, 145, 159, 116, 138, 151, 120, 142, 154, 113, 137, 148, 104, 129, 141, 101, 127, 139, 94, 120, 132, 97, 123, 135, 95, 123, 134, + 98, 125, 136, 97, 124, 136, 98, 125, 137, 98, 125, 137, 98, 124, 136, 96, 124, 135, 96, 123, 134, 97, 126, 137, 97, 125, 135, 96, 124, 135, 98, 126, 137, 97, 125, 136, 102, 128, 141, 106, 133, 145, 118, 143, 156, 139, 164, 175, 156, 179, 190, 155, 178, 190, 165, 183, 196, 188, 205, 217, 203, 220, 230, + 186, 203, 215, 187, 204, 216, 181, 198, 211, 174, 190, 206, 163, 179, 195, 166, 182, 200, 156, 172, 188, 133, 151, 172, 119, 136, 159, 116, 131, 158, 126, 142, 165, 136, 153, 174, 138, 155, 176, 151, 168, 188, 137, 154, 178, 135, 151, 176, 121, 139, 166, 128, 148, 176, 119, 140, 172, 83, 102, 139, 65, 85, 125, + 53, 71, 112, 34, 49, 90, 16, 26, 61, 8, 11, 38, 1, 1, 23, 0, 0, 18, 0, 0, 12, 0, 1, 13, 1, 4, 17, 7, 10, 28, 11, 19, 47, 25, 35, 73, 27, 40, 78, 33, 46, 82, 61, 77, 112, 119, 138, 167, 164, 183, 204, 165, 182, 202, 181, 197, 212, 184, 200, 214, 192, 209, 221, + 209, 225, 237, 188, 207, 218, 154, 170, 185, 175, 191, 204, 191, 208, 219, 164, 181, 194, 181, 199, 211, 182, 200, 210, 182, 200, 211, 188, 207, 215, 193, 210, 219, 199, 216, 226, 198, 216, 225, 204, 222, 230, 202, 219, 228, 206, 222, 232, 209, 227, 236, 219, 235, 246, 208, 224, 236, 208, 224, 236, 215, 230, 240, + 218, 235, 245, 223, 237, 247, 227, 243, 251, 229, 243, 251, 236, 251, 254, 230, 246, 253, 234, 249, 254, 239, 252, 254, 241, 253, 254, 230, 248, 254, 229, 244, 252, 226, 242, 249, 230, 246, 253, 234, 248, 253, 221, 237, 245, 227, 243, 249, 229, 245, 252, 227, 242, 250, 228, 244, 252, 236, 249, 253, 238, 252, 254, + 238, 251, 253, 234, 248, 253, 228, 242, 249, 236, 249, 252, 233, 248, 253, 236, 248, 255, 238, 250, 253, 238, 251, 252, 236, 250, 254, 231, 246, 251, 236, 251, 254, 235, 248, 253, 240, 251, 254, 237, 250, 253, 240, 252, 253, 237, 249, 252, 239, 253, 254, 238, 253, 254, 235, 252, 253, 234, 250, 254, 227, 245, 252, + 231, 247, 254, 232, 249, 253, 229, 246, 253, 229, 245, 251, 222, 237, 245, 218, 229, 240, 206, 217, 227, 206, 217, 227, 198, 202, 210, 195, 190, 196, 188, 178, 182, 181, 164, 163, 181, 166, 168, 187, 181, 187, 186, 171, 174, 180, 145, 137, 173, 138, 134, 174, 147, 146, 177, 130, 118, 178, 127, 111, 180, 125, 107, + 183, 120, 99, 183, 117, 82, 183, 114, 77, 188, 116, 78, 189, 113, 74, 186, 108, 65, 187, 109, 63, 188, 110, 65, 187, 107, 60, 186, 105, 60, 187, 106, 59, 187, 105, 58, 187, 105, 53, 188, 105, 55, 187, 103, 51, 190, 106, 53, 191, 107, 53, 190, 105, 49, 190, 104, 47, 190, 103, 45, 191, 104, 43, + 189, 101, 40, 189, 101, 40, 186, 98, 39, 186, 98, 37, 186, 99, 34, 188, 96, 32, 187, 91, 21, 186, 94, 25, 187, 96, 26, 186, 95, 22, 186, 94, 23, 185, 90, 15, 184, 91, 17, 184, 90, 15, 185, 89, 11, 185, 95, 12, 186, 89, 6, 187, 91, 7, 188, 95, 11, 187, 91, 7, 189, 90, 7, + 188, 92, 9, 190, 92, 8, 189, 92, 8, 190, 95, 12, 189, 95, 15, 189, 95, 16, 186, 94, 17, 186, 93, 18, 184, 92, 19, 185, 94, 15, 180, 91, 15, 177, 89, 17, 176, 87, 16, 171, 86, 14, 88, 106, 117, 88, 106, 118, 88, 107, 119, 96, 114, 125, 102, 120, 133, 86, 104, 115, 87, 103, 115, + 90, 106, 118, 93, 109, 120, 85, 102, 114, 86, 102, 114, 116, 140, 151, 126, 153, 164, 141, 169, 181, 147, 174, 187, 140, 169, 183, 132, 164, 178, 131, 163, 176, 133, 161, 176, 134, 160, 175, 132, 157, 171, 132, 153, 167, 140, 157, 168, 133, 150, 160, 138, 154, 165, 152, 169, 180, 155, 172, 180, 147, 165, 173, + 155, 173, 183, 156, 175, 184, 145, 163, 175, 126, 147, 159, 126, 147, 159, 107, 131, 145, 91, 117, 128, 93, 119, 131, 93, 120, 130, 94, 120, 133, 92, 120, 131, 94, 120, 131, 94, 123, 133, 94, 122, 133, 97, 124, 135, 97, 124, 136, 97, 125, 137, 97, 125, 136, 95, 123, 134, 96, 124, 135, 95, 121, 133, + 95, 124, 134, 96, 123, 135, 95, 123, 134, 98, 125, 136, 102, 128, 140, 115, 141, 153, 134, 159, 170, 151, 173, 183, 171, 190, 200, 179, 198, 208, 185, 203, 213, 186, 203, 215, 184, 202, 213, 209, 226, 237, 216, 232, 243, 195, 211, 224, 188, 205, 219, 179, 195, 211, 181, 199, 211, 173, 189, 204, 171, 187, 203, + 155, 172, 191, 143, 160, 178, 129, 144, 170, 133, 148, 171, 120, 134, 161, 136, 151, 175, 136, 152, 177, 118, 135, 162, 98, 115, 143, 89, 109, 139, 84, 102, 136, 63, 82, 119, 53, 70, 106, 27, 38, 76, 7, 10, 43, 0, 0, 30, 1, 0, 24, 2, 0, 25, 1, 1, 22, 2, 2, 24, 2, 2, 15, + 1, 1, 11, 1, 1, 8, 1, 0, 6, 1, 1, 2, 1, 1, 6, 11, 15, 33, 24, 34, 69, 32, 44, 80, 46, 58, 92, 101, 119, 149, 125, 145, 173, 154, 172, 193, 184, 200, 216, 184, 200, 215, 192, 208, 220, 207, 223, 234, 149, 166, 181, 168, 185, 197, 189, 206, 217, 142, 160, 173, 152, 170, 183, + 173, 190, 202, 169, 187, 197, 182, 200, 211, 197, 213, 225, 193, 210, 221, 200, 216, 227, 195, 211, 223, 193, 211, 221, 202, 219, 228, 213, 230, 240, 210, 227, 238, 205, 223, 233, 206, 222, 234, 214, 231, 241, 213, 230, 240, 221, 237, 245, 230, 245, 252, 218, 233, 243, 232, 248, 253, 230, 246, 253, 237, 252, 254, + 238, 252, 253, 244, 254, 255, 225, 241, 251, 227, 244, 252, 231, 248, 254, 228, 243, 251, 227, 243, 251, 226, 243, 248, 231, 246, 253, 227, 241, 248, 225, 242, 250, 227, 241, 250, 238, 251, 254, 235, 250, 254, 235, 248, 254, 233, 246, 252, 228, 243, 251, 234, 248, 252, 232, 246, 252, 238, 250, 253, 240, 252, 254, + 238, 252, 254, 237, 251, 253, 237, 251, 254, 239, 252, 254, 244, 255, 254, 250, 254, 254, 241, 254, 253, 236, 249, 253, 235, 250, 253, 247, 253, 253, 242, 253, 254, 240, 252, 252, 241, 253, 254, 237, 250, 254, 235, 249, 254, 235, 252, 254, 232, 250, 254, 233, 249, 253, 231, 247, 254, 227, 239, 251, 221, 236, 249, + 209, 221, 232, 203, 210, 219, 194, 191, 196, 183, 169, 173, 182, 156, 151, 178, 154, 153, 185, 177, 183, 184, 173, 179, 182, 160, 160, 177, 153, 155, 177, 149, 148, 176, 128, 114, 180, 129, 113, 179, 126, 107, 180, 120, 95, 186, 126, 98, 188, 121, 88, 183, 112, 74, 186, 110, 70, 189, 110, 68, 188, 111, 65, + 189, 113, 65, 189, 110, 63, 186, 106, 59, 189, 107, 60, 188, 106, 58, 188, 105, 53, 191, 107, 57, 189, 106, 52, 191, 108, 51, 193, 108, 52, 191, 107, 49, 193, 105, 44, 195, 107, 46, 194, 107, 42, 192, 104, 38, 191, 102, 35, 188, 100, 34, 189, 99, 33, 191, 100, 33, 194, 99, 28, 196, 100, 28, + 193, 96, 25, 194, 98, 24, 193, 98, 22, 191, 96, 18, 192, 94, 10, 194, 97, 14, 193, 95, 12, 192, 94, 11, 191, 94, 9, 192, 94, 9, 194, 96, 8, 196, 98, 12, 194, 96, 11, 195, 96, 13, 195, 97, 14, 194, 96, 11, 195, 98, 14, 195, 99, 14, 196, 98, 14, 193, 95, 13, 191, 97, 18, + 190, 96, 21, 188, 95, 19, 188, 95, 17, 188, 97, 20, 183, 92, 16, 182, 92, 12, 179, 94, 18, 82, 99, 110, 86, 103, 115, 98, 117, 129, 100, 118, 129, 100, 117, 130, 102, 120, 131, 116, 133, 145, 127, 144, 155, 129, 147, 159, 127, 144, 157, 134, 154, 167, 133, 158, 170, 145, 171, 183, 147, 176, 187, + 147, 175, 186, 141, 170, 184, 137, 168, 181, 140, 168, 182, 141, 167, 183, 141, 166, 180, 147, 170, 181, 146, 164, 177, 140, 157, 169, 138, 154, 166, 124, 144, 154, 141, 158, 169, 145, 163, 172, 139, 158, 168, 133, 154, 165, 134, 154, 165, 127, 149, 161, 108, 133, 145, 96, 121, 133, 91, 117, 129, 87, 114, 125, + 87, 114, 126, 92, 119, 130, 91, 120, 130, 90, 119, 127, 90, 119, 128, 91, 120, 130, 93, 121, 132, 95, 122, 133, 96, 124, 135, 98, 126, 137, 100, 127, 139, 98, 126, 137, 97, 125, 135, 97, 125, 135, 94, 123, 132, 96, 123, 135, 102, 129, 140, 112, 138, 151, 126, 151, 164, 145, 169, 179, 156, 179, 189, + 173, 193, 204, 190, 208, 217, 193, 210, 221, 196, 212, 221, 205, 221, 232, 197, 214, 226, 198, 215, 226, 205, 221, 233, 202, 218, 231, 183, 199, 213, 173, 189, 206, 188, 206, 220, 178, 194, 208, 183, 199, 214, 168, 184, 200, 159, 176, 194, 146, 161, 183, 125, 139, 165, 93, 107, 136, 81, 94, 125, 89, 105, 133, + 75, 90, 120, 74, 87, 120, 70, 87, 120, 59, 78, 114, 30, 42, 78, 3, 6, 39, 1, 5, 39, 2, 4, 40, 2, 6, 44, 1, 3, 38, 1, 1, 35, 1, 1, 35, 1, 2, 36, 0, 1, 27, 1, 1, 20, 1, 1, 16, 0, 1, 13, 1, 0, 5, 0, 1, 4, 1, 1, 0, 1, 0, 4, + 15, 19, 42, 32, 42, 79, 33, 45, 78, 78, 96, 126, 112, 129, 156, 169, 186, 205, 153, 169, 189, 203, 219, 232, 197, 212, 224, 146, 162, 177, 154, 170, 183, 143, 161, 175, 144, 161, 176, 143, 160, 175, 165, 182, 195, 151, 168, 181, 174, 192, 202, 187, 205, 216, 186, 203, 215, 190, 208, 217, 180, 198, 209, + 185, 203, 214, 197, 214, 225, 208, 226, 237, 201, 218, 228, 202, 219, 227, 208, 224, 235, 208, 224, 237, 206, 223, 233, 228, 244, 252, 228, 244, 251, 223, 238, 247, 234, 248, 254, 227, 243, 252, 234, 248, 252, 236, 251, 252, 239, 252, 253, 227, 244, 252, 229, 245, 252, 234, 248, 253, 224, 239, 248, 229, 245, 252, + 228, 245, 251, 227, 242, 251, 233, 246, 253, 226, 239, 249, 228, 242, 250, 231, 245, 253, 230, 245, 251, 233, 248, 254, 224, 239, 247, 231, 247, 254, 225, 239, 248, 233, 247, 253, 232, 247, 253, 236, 250, 254, 232, 246, 253, 236, 250, 254, 235, 247, 252, 238, 251, 254, 242, 253, 253, 244, 253, 253, 242, 253, 253, + 242, 253, 254, 243, 252, 253, 238, 251, 252, 240, 252, 252, 239, 252, 254, 246, 254, 254, 244, 254, 254, 241, 254, 253, 237, 252, 253, 235, 253, 254, 233, 250, 253, 230, 247, 253, 228, 244, 254, 223, 239, 252, 214, 228, 239, 209, 219, 227, 197, 194, 199, 187, 177, 180, 181, 156, 153, 180, 159, 162, 188, 183, 188, + 190, 182, 187, 183, 169, 172, 178, 161, 164, 177, 152, 153, 181, 138, 126, 180, 133, 116, 182, 132, 114, 186, 131, 107, 183, 124, 95, 184, 113, 80, 183, 112, 74, 185, 111, 72, 188, 112, 70, 188, 113, 67, 190, 112, 65, 190, 112, 65, 189, 110, 63, 189, 109, 61, 190, 108, 60, 191, 108, 57, 189, 106, 53, + 193, 111, 54, 194, 110, 54, 196, 110, 52, 196, 109, 52, 196, 109, 46, 196, 109, 43, 197, 108, 41, 199, 108, 33, 197, 104, 27, 196, 103, 27, 197, 105, 29, 196, 102, 28, 200, 105, 26, 200, 104, 20, 201, 103, 17, 199, 101, 17, 201, 101, 16, 200, 100, 12, 199, 98, 8, 197, 99, 8, 196, 98, 8, + 197, 100, 10, 199, 99, 7, 197, 98, 4, 201, 103, 6, 198, 99, 6, 196, 98, 7, 198, 99, 11, 196, 99, 11, 197, 99, 14, 199, 101, 17, 197, 100, 12, 197, 100, 14, 196, 97, 15, 192, 98, 21, 191, 98, 20, 192, 97, 22, 190, 95, 20, 188, 95, 19, 187, 95, 17, 185, 94, 17, 180, 91, 14, + 96, 113, 125, 96, 115, 125, 86, 103, 115, 84, 103, 113, 96, 114, 125, 113, 131, 142, 122, 140, 151, 129, 147, 158, 134, 152, 164, 131, 149, 162, 132, 157, 169, 145, 170, 182, 147, 175, 185, 148, 177, 187, 143, 172, 183, 144, 173, 186, 141, 171, 185, 144, 172, 186, 143, 170, 184, 146, 170, 182, 149, 171, 183, + 152, 170, 182, 144, 161, 172, 133, 150, 162, 119, 138, 151, 115, 135, 148, 110, 131, 143, 111, 134, 145, 112, 134, 146, 115, 138, 149, 109, 133, 145, 94, 120, 132, 86, 113, 124, 88, 113, 125, 90, 117, 128, 89, 119, 127, 89, 118, 127, 88, 117, 126, 88, 117, 126, 88, 117, 126, 90, 120, 128, 93, 121, 132, + 96, 123, 135, 98, 126, 137, 100, 127, 139, 99, 127, 138, 98, 126, 135, 96, 125, 135, 98, 126, 137, 104, 130, 144, 111, 137, 149, 127, 152, 164, 145, 169, 180, 153, 176, 188, 172, 190, 201, 184, 202, 213, 192, 210, 219, 206, 223, 232, 205, 221, 232, 204, 221, 232, 204, 220, 231, 200, 216, 228, 193, 209, 221, + 201, 218, 229, 204, 220, 232, 193, 210, 224, 187, 203, 218, 192, 209, 221, 192, 209, 222, 172, 188, 205, 169, 186, 202, 149, 166, 186, 128, 141, 166, 121, 134, 162, 97, 110, 140, 68, 81, 114, 77, 90, 121, 71, 83, 115, 74, 87, 120, 52, 69, 102, 11, 19, 51, 2, 10, 43, 3, 16, 50, 5, 21, 55, + 5, 20, 54, 5, 18, 55, 3, 16, 55, 2, 6, 47, 2, 4, 44, 3, 3, 44, 2, 4, 40, 1, 2, 30, 1, 1, 28, 2, 2, 23, 1, 1, 19, 1, 2, 13, 1, 1, 10, 1, 2, 8, 0, 1, 8, 5, 8, 22, 31, 41, 73, 33, 44, 74, 81, 98, 125, 109, 126, 152, 125, 143, 164, + 177, 193, 207, 173, 190, 204, 147, 163, 179, 169, 185, 197, 141, 159, 174, 170, 187, 199, 150, 167, 180, 167, 183, 195, 158, 175, 189, 180, 196, 208, 161, 178, 191, 178, 196, 207, 174, 191, 203, 177, 195, 206, 175, 194, 204, 195, 213, 224, 190, 207, 219, 188, 206, 217, 200, 217, 225, 208, 226, 234, 202, 219, 230, + 216, 233, 242, 221, 237, 246, 215, 232, 243, 224, 240, 248, 234, 248, 253, 230, 246, 251, 236, 248, 254, 232, 247, 253, 242, 253, 253, 231, 247, 253, 228, 245, 251, 230, 245, 251, 224, 239, 248, 228, 242, 250, 219, 235, 243, 231, 247, 253, 228, 244, 251, 224, 238, 246, 223, 238, 246, 224, 239, 247, 229, 244, 251, + 227, 243, 252, 231, 246, 252, 226, 240, 251, 227, 242, 250, 229, 243, 251, 228, 243, 252, 233, 247, 254, 234, 250, 252, 237, 250, 254, 243, 253, 253, 248, 253, 253, 251, 254, 254, 251, 254, 254, 251, 254, 254, 250, 254, 254, 248, 253, 252, 246, 254, 254, 239, 251, 253, 234, 249, 251, 233, 250, 251, 238, 252, 253, + 238, 251, 254, 239, 254, 254, 239, 254, 253, 235, 254, 255, 236, 253, 253, 233, 250, 253, 229, 247, 253, 223, 238, 250, 215, 224, 233, 201, 203, 207, 187, 177, 180, 187, 169, 167, 188, 171, 174, 192, 184, 191, 194, 187, 193, 190, 174, 178, 182, 155, 151, 179, 144, 136, 178, 129, 114, 180, 136, 120, 186, 136, 119, + 183, 123, 96, 186, 121, 91, 186, 116, 82, 185, 115, 77, 187, 115, 77, 188, 115, 72, 190, 115, 71, 190, 113, 66, 191, 113, 66, 191, 112, 64, 192, 113, 64, 193, 110, 59, 193, 109, 57, 192, 109, 53, 195, 112, 55, 195, 111, 53, 198, 113, 52, 199, 112, 48, 199, 110, 43, 201, 110, 41, 203, 112, 39, + 201, 109, 27, 204, 108, 25, 203, 108, 23, 207, 109, 23, 207, 109, 25, 205, 108, 20, 206, 109, 16, 204, 107, 13, 202, 104, 8, 205, 106, 6, 203, 105, 7, 204, 103, 2, 203, 103, 5, 202, 102, 5, 203, 103, 5, 202, 102, 5, 201, 102, 3, 203, 103, 5, 202, 103, 4, 199, 101, 4, 200, 102, 8, + 199, 101, 13, 201, 103, 18, 200, 103, 16, 198, 100, 14, 197, 101, 14, 196, 99, 18, 193, 100, 22, 192, 99, 21, 190, 97, 20, 189, 96, 18, 190, 96, 22, 187, 94, 18, 186, 95, 19, 182, 94, 19, 114, 132, 144, 121, 139, 151, 130, 147, 159, 132, 149, 161, 120, 138, 150, 120, 138, 149, 122, 140, 151, + 130, 147, 159, 122, 139, 151, 124, 145, 158, 136, 160, 172, 143, 170, 182, 146, 173, 184, 141, 169, 184, 147, 176, 186, 145, 175, 187, 146, 175, 188, 145, 173, 186, 144, 172, 185, 144, 169, 183, 143, 165, 178, 141, 160, 174, 126, 145, 157, 124, 144, 156, 112, 134, 146, 101, 124, 136, 90, 115, 126, 84, 111, 121, + 85, 111, 121, 86, 112, 123, 89, 115, 126, 82, 111, 120, 83, 112, 121, 84, 112, 122, 85, 115, 124, 86, 115, 124, 85, 114, 123, 85, 114, 123, 87, 116, 125, 89, 118, 127, 90, 119, 128, 92, 120, 130, 95, 123, 134, 95, 123, 134, 96, 124, 135, 96, 123, 135, 97, 125, 135, 108, 134, 146, 119, 145, 157, + 136, 160, 173, 145, 168, 179, 149, 172, 184, 176, 196, 206, 183, 203, 214, 194, 211, 221, 195, 213, 223, 204, 221, 232, 199, 217, 228, 200, 218, 228, 200, 218, 229, 204, 221, 232, 198, 217, 227, 209, 225, 237, 207, 225, 236, 205, 221, 235, 199, 216, 228, 197, 213, 229, 192, 208, 222, 201, 217, 230, 193, 209, 225, + 178, 194, 211, 168, 184, 202, 146, 162, 184, 125, 137, 166, 113, 129, 160, 82, 96, 129, 71, 86, 117, 73, 86, 118, 39, 51, 81, 5, 19, 46, 7, 25, 56, 10, 29, 64, 20, 46, 81, 41, 74, 109, 33, 66, 97, 26, 57, 92, 13, 45, 81, 8, 26, 69, 9, 32, 74, 4, 7, 47, 4, 12, 53, + 4, 4, 21, 4, 6, 36, 2, 6, 37, 3, 3, 32, 1, 1, 23, 0, 1, 20, 0, 1, 15, 1, 1, 11, 1, 1, 7, 4, 5, 19, 29, 41, 73, 34, 44, 75, 80, 96, 123, 114, 132, 154, 158, 175, 192, 176, 191, 208, 176, 193, 205, 157, 174, 187, 149, 165, 180, 166, 184, 195, 153, 171, 184, + 163, 179, 190, 149, 166, 179, 184, 201, 212, 140, 157, 170, 173, 189, 201, 172, 190, 201, 169, 187, 200, 173, 191, 200, 177, 196, 205, 178, 196, 207, 168, 187, 198, 191, 208, 217, 206, 223, 232, 202, 219, 229, 217, 233, 244, 215, 231, 242, 222, 237, 247, 224, 240, 248, 235, 248, 254, 221, 238, 246, 233, 248, 253, + 227, 243, 251, 240, 254, 253, 229, 244, 250, 229, 244, 251, 222, 238, 245, 229, 245, 253, 230, 244, 252, 224, 241, 247, 233, 246, 253, 222, 238, 246, 223, 238, 246, 225, 239, 248, 222, 238, 246, 225, 240, 250, 224, 241, 249, 227, 241, 251, 223, 238, 251, 225, 241, 250, 233, 249, 254, 230, 246, 253, 229, 245, 252, + 234, 251, 253, 235, 248, 252, 237, 249, 252, 242, 253, 254, 242, 250, 253, 238, 250, 252, 239, 252, 254, 243, 254, 254, 248, 254, 254, 249, 254, 254, 243, 253, 253, 245, 254, 254, 243, 253, 253, 239, 254, 254, 236, 252, 254, 236, 250, 252, 236, 252, 252, 233, 251, 253, 240, 255, 253, 236, 254, 253, 235, 255, 254, + 227, 243, 253, 220, 232, 242, 200, 203, 208, 198, 197, 200, 192, 180, 183, 192, 178, 181, 192, 179, 183, 187, 174, 176, 182, 162, 161, 178, 143, 136, 181, 140, 126, 183, 136, 122, 183, 134, 117, 184, 133, 113, 186, 127, 101, 185, 122, 93, 188, 124, 90, 187, 118, 80, 188, 117, 78, 190, 117, 74, 192, 117, 71, + 193, 116, 71, 191, 113, 66, 192, 114, 65, 194, 113, 64, 195, 114, 63, 198, 115, 61, 197, 114, 57, 199, 115, 54, 200, 114, 50, 202, 116, 51, 202, 115, 48, 203, 115, 45, 206, 115, 39, 207, 115, 37, 209, 112, 25, 211, 114, 27, 209, 113, 22, 212, 114, 30, 211, 114, 26, 207, 110, 17, 209, 110, 13, + 208, 109, 11, 208, 109, 9, 205, 106, 5, 205, 105, 6, 206, 106, 4, 204, 104, 3, 204, 104, 4, 205, 104, 5, 202, 101, 3, 204, 103, 5, 204, 106, 5, 202, 104, 3, 202, 104, 5, 199, 101, 8, 199, 101, 13, 199, 101, 17, 199, 101, 18, 197, 99, 15, 196, 100, 17, 193, 98, 19, 191, 97, 21, + 193, 98, 23, 190, 98, 22, 191, 98, 22, 189, 96, 21, 187, 96, 20, 187, 96, 21, 181, 93, 18, 127, 145, 156, 122, 140, 151, 121, 139, 150, 127, 145, 156, 108, 125, 136, 116, 133, 144, 116, 132, 145, 110, 127, 139, 100, 118, 130, 116, 138, 149, 129, 156, 168, 139, 166, 177, 139, 167, 178, 141, 171, 182, + 149, 178, 188, 149, 178, 189, 146, 173, 188, 142, 171, 183, 141, 168, 181, 136, 162, 176, 127, 150, 166, 122, 143, 158, 112, 133, 145, 100, 123, 134, 93, 118, 129, 85, 112, 122, 79, 105, 115, 77, 104, 114, 74, 101, 111, 73, 100, 110, 74, 102, 112, 75, 104, 113, 75, 104, 113, 78, 107, 116, 81, 109, 119, + 82, 110, 120, 84, 113, 123, 86, 115, 124, 89, 117, 127, 89, 118, 127, 88, 118, 127, 90, 119, 128, 92, 120, 131, 93, 121, 132, 96, 123, 135, 106, 132, 146, 118, 146, 156, 133, 157, 169, 151, 173, 185, 158, 179, 191, 172, 192, 204, 167, 187, 200, 182, 202, 212, 198, 216, 227, 200, 217, 227, 207, 225, 234, + 208, 226, 237, 207, 225, 235, 199, 217, 228, 196, 214, 225, 210, 226, 238, 210, 227, 239, 221, 235, 248, 212, 227, 239, 217, 232, 246, 220, 236, 246, 210, 227, 240, 216, 231, 244, 207, 224, 236, 201, 217, 230, 197, 213, 229, 186, 201, 218, 180, 195, 214, 150, 164, 188, 114, 130, 160, 109, 123, 155, 96, 109, 138, + 72, 84, 110, 0, 8, 37, 20, 39, 68, 42, 69, 98, 62, 96, 131, 64, 105, 143, 57, 110, 158, 42, 98, 143, 56, 119, 168, 59, 120, 166, 38, 106, 159, 13, 72, 135, 22, 56, 91, 10, 14, 37, 3, 2, 2, 2, 6, 19, 11, 26, 58, 14, 26, 56, 4, 9, 39, 2, 2, 27, 2, 2, 24, + 1, 1, 20, 2, 1, 14, 1, 1, 12, 5, 7, 23, 32, 40, 74, 43, 53, 82, 87, 103, 129, 125, 144, 163, 162, 179, 196, 190, 206, 218, 146, 162, 178, 176, 193, 204, 173, 189, 201, 166, 183, 196, 163, 179, 191, 164, 180, 193, 166, 182, 194, 138, 154, 171, 159, 175, 188, 162, 180, 191, 161, 179, 191, + 176, 192, 204, 170, 188, 199, 179, 196, 208, 172, 189, 200, 188, 205, 214, 204, 221, 229, 203, 221, 230, 212, 229, 238, 209, 225, 237, 222, 237, 246, 222, 236, 246, 227, 243, 250, 215, 231, 238, 238, 249, 254, 232, 249, 252, 235, 249, 254, 231, 247, 251, 231, 245, 252, 226, 242, 250, 226, 240, 250, 226, 241, 249, + 234, 248, 253, 230, 245, 252, 218, 233, 243, 217, 232, 241, 221, 236, 248, 220, 236, 248, 220, 236, 248, 221, 239, 250, 220, 236, 249, 224, 241, 252, 224, 241, 252, 226, 243, 254, 230, 248, 253, 232, 250, 253, 228, 246, 250, 235, 252, 253, 237, 253, 253, 232, 248, 254, 236, 250, 254, 234, 248, 253, 225, 241, 250, + 237, 252, 253, 238, 251, 251, 243, 254, 254, 253, 254, 254, 254, 255, 254, 251, 255, 254, 243, 254, 253, 243, 254, 253, 238, 254, 253, 240, 253, 254, 233, 252, 253, 234, 252, 253, 236, 254, 255, 235, 253, 254, 230, 244, 253, 215, 230, 239, 205, 214, 221, 199, 201, 208, 193, 185, 187, 192, 179, 182, 190, 177, 177, + 186, 170, 172, 186, 165, 166, 182, 154, 149, 185, 147, 137, 186, 142, 127, 185, 135, 115, 187, 126, 101, 187, 126, 96, 190, 133, 107, 189, 129, 99, 189, 121, 85, 189, 119, 80, 191, 120, 80, 192, 120, 78, 194, 118, 75, 195, 118, 72, 193, 116, 67, 199, 119, 66, 200, 118, 64, 203, 120, 63, 205, 121, 61, + 206, 119, 56, 204, 117, 52, 207, 119, 50, 208, 117, 45, 209, 116, 42, 211, 119, 44, 213, 121, 41, 214, 119, 34, 211, 117, 28, 214, 118, 32, 215, 117, 32, 215, 116, 32, 212, 114, 23, 211, 113, 20, 210, 113, 16, 208, 107, 8, 208, 110, 11, 209, 108, 8, 205, 105, 3, 206, 107, 3, 206, 105, 5, + 204, 103, 5, 206, 105, 7, 204, 104, 7, 204, 106, 8, 202, 104, 3, 202, 104, 7, 201, 103, 11, 200, 101, 15, 199, 101, 18, 199, 102, 20, 197, 101, 18, 196, 101, 22, 194, 100, 24, 193, 100, 22, 192, 100, 23, 191, 98, 25, 191, 100, 27, 189, 98, 25, 185, 95, 24, 184, 95, 20, 184, 96, 26, + 136, 154, 164, 129, 147, 158, 112, 130, 142, 99, 117, 128, 96, 114, 125, 90, 107, 118, 103, 119, 131, 101, 118, 129, 97, 116, 127, 109, 132, 143, 124, 150, 162, 130, 158, 169, 133, 162, 173, 145, 175, 186, 149, 178, 188, 144, 174, 185, 139, 168, 181, 133, 162, 176, 129, 158, 172, 120, 147, 161, 109, 134, 147, + 99, 124, 136, 94, 119, 131, 88, 115, 126, 82, 109, 120, 77, 104, 114, 72, 100, 109, 69, 97, 106, 66, 94, 103, 67, 94, 104, 66, 93, 103, 69, 98, 107, 72, 101, 110, 78, 107, 116, 80, 108, 118, 84, 112, 123, 84, 113, 123, 89, 118, 127, 88, 116, 126, 90, 119, 128, 90, 118, 129, 94, 121, 133, + 102, 130, 140, 112, 137, 148, 119, 143, 156, 133, 159, 171, 144, 167, 178, 161, 182, 193, 179, 199, 210, 186, 205, 216, 187, 205, 218, 185, 203, 214, 187, 206, 218, 196, 214, 224, 200, 217, 229, 205, 223, 234, 215, 232, 244, 220, 236, 248, 217, 234, 244, 206, 223, 234, 208, 226, 237, 218, 233, 245, 220, 234, 246, + 220, 236, 248, 219, 236, 248, 228, 244, 252, 232, 248, 252, 224, 240, 251, 219, 234, 248, 224, 238, 250, 227, 241, 254, 222, 237, 246, 207, 221, 233, 178, 192, 215, 170, 183, 209, 155, 168, 196, 157, 169, 196, 69, 85, 113, 44, 66, 98, 69, 99, 134, 89, 129, 165, 75, 120, 163, 102, 157, 200, 86, 153, 202, + 100, 172, 221, 68, 157, 219, 91, 175, 232, 38, 133, 196, 22, 127, 197, 47, 120, 163, 30, 35, 39, 2, 2, 1, 12, 20, 29, 76, 124, 162, 40, 57, 93, 21, 34, 63, 2, 8, 43, 2, 3, 32, 2, 1, 25, 1, 1, 21, 1, 1, 17, 1, 1, 12, 15, 22, 46, 30, 40, 70, 58, 71, 98, + 92, 110, 133, 114, 131, 151, 160, 177, 190, 126, 143, 159, 192, 208, 218, 188, 205, 216, 173, 189, 201, 179, 195, 207, 170, 187, 198, 151, 169, 182, 136, 152, 167, 182, 199, 210, 165, 184, 194, 157, 175, 187, 173, 189, 201, 165, 183, 194, 172, 190, 201, 173, 192, 201, 188, 206, 215, 197, 214, 223, 194, 211, 222, + 202, 220, 229, 205, 222, 231, 224, 238, 248, 217, 233, 242, 224, 240, 248, 218, 232, 240, 237, 253, 253, 239, 253, 253, 235, 251, 253, 236, 250, 254, 233, 247, 254, 228, 243, 251, 222, 237, 246, 226, 242, 249, 234, 248, 254, 230, 245, 253, 219, 234, 244, 219, 234, 243, 215, 232, 244, 220, 236, 248, 215, 233, 245, + 212, 230, 244, 217, 235, 250, 220, 237, 251, 225, 242, 252, 231, 250, 254, 229, 247, 253, 224, 243, 251, 230, 250, 253, 227, 246, 252, 218, 237, 249, 224, 242, 251, 215, 233, 246, 215, 234, 247, 215, 231, 245, 219, 234, 247, 234, 248, 253, 235, 249, 253, 245, 252, 253, 247, 254, 254, 241, 252, 254, 247, 254, 254, + 241, 253, 253, 245, 254, 254, 245, 254, 254, 235, 254, 253, 239, 253, 254, 233, 251, 253, 234, 253, 254, 232, 248, 254, 228, 243, 253, 212, 227, 238, 208, 217, 225, 198, 199, 205, 194, 192, 197, 191, 183, 185, 185, 174, 177, 186, 173, 175, 183, 165, 161, 184, 144, 134, 185, 140, 124, 186, 134, 113, 185, 127, 101, + 187, 126, 97, 184, 121, 92, 184, 125, 97, 187, 124, 92, 187, 118, 80, 189, 118, 81, 191, 120, 80, 192, 117, 74, 194, 119, 72, 196, 120, 70, 198, 122, 69, 204, 123, 68, 205, 123, 65, 207, 124, 63, 209, 124, 59, 208, 122, 55, 213, 125, 54, 212, 121, 48, 216, 124, 54, 217, 123, 48, 213, 119, 43, + 216, 123, 40, 214, 119, 34, 216, 123, 37, 215, 118, 32, 212, 114, 27, 212, 115, 25, 212, 116, 21, 211, 112, 16, 210, 111, 13, 207, 109, 10, 208, 108, 10, 207, 107, 6, 206, 106, 6, 206, 105, 6, 206, 108, 9, 206, 105, 7, 202, 103, 11, 202, 103, 12, 203, 104, 5, 200, 104, 9, 200, 103, 15, + 202, 104, 18, 200, 103, 19, 197, 100, 17, 199, 103, 20, 196, 102, 23, 195, 101, 23, 194, 99, 24, 191, 100, 25, 192, 99, 26, 188, 100, 29, 188, 100, 30, 186, 98, 31, 185, 98, 28, 182, 95, 25, 116, 134, 145, 123, 141, 152, 119, 137, 148, 119, 136, 147, 104, 122, 133, 102, 118, 131, 91, 108, 120, + 101, 117, 129, 111, 131, 143, 120, 145, 157, 120, 147, 159, 123, 151, 162, 132, 161, 174, 139, 169, 181, 137, 167, 180, 132, 161, 175, 126, 156, 170, 121, 154, 167, 111, 141, 155, 99, 127, 140, 90, 119, 130, 90, 118, 129, 92, 118, 130, 86, 112, 124, 83, 111, 121, 75, 104, 113, 68, 97, 106, 63, 92, 101, + 63, 92, 100, 64, 93, 102, 68, 95, 106, 71, 100, 109, 77, 106, 115, 81, 110, 119, 85, 114, 124, 88, 115, 126, 89, 116, 128, 91, 120, 129, 94, 122, 132, 100, 127, 138, 114, 139, 151, 120, 144, 157, 133, 155, 168, 151, 173, 184, 161, 181, 193, 159, 181, 192, 173, 192, 202, 178, 197, 208, 192, 211, 220, + 204, 222, 231, 203, 221, 232, 195, 213, 225, 194, 211, 224, 193, 210, 222, 199, 217, 228, 210, 226, 238, 216, 232, 244, 223, 239, 251, 225, 240, 250, 222, 238, 250, 222, 237, 248, 220, 236, 247, 228, 243, 254, 225, 240, 250, 227, 242, 250, 228, 241, 251, 236, 252, 253, 236, 251, 253, 223, 239, 247, 215, 230, 243, + 228, 241, 252, 232, 246, 252, 235, 249, 255, 209, 223, 242, 187, 202, 225, 179, 193, 217, 189, 204, 228, 78, 97, 130, 78, 111, 146, 113, 150, 185, 104, 159, 203, 104, 162, 207, 109, 172, 217, 112, 186, 235, 99, 189, 243, 73, 173, 238, 70, 164, 226, 111, 171, 200, 114, 149, 162, 90, 112, 123, 12, 13, 19, + 3, 2, 3, 27, 43, 54, 186, 237, 255, 70, 165, 225, 21, 72, 117, 4, 20, 56, 2, 9, 43, 2, 3, 33, 0, 1, 25, 2, 1, 24, 2, 1, 20, 3, 3, 14, 32, 42, 76, 36, 46, 74, 66, 80, 105, 97, 113, 133, 143, 161, 178, 129, 147, 164, 183, 199, 210, 167, 183, 194, 168, 185, 196, + 199, 215, 227, 173, 189, 202, 172, 189, 200, 143, 162, 172, 183, 199, 209, 173, 189, 201, 151, 168, 179, 175, 192, 203, 162, 180, 191, 169, 186, 197, 186, 204, 212, 180, 198, 208, 197, 214, 222, 195, 213, 222, 200, 216, 226, 205, 222, 231, 216, 232, 240, 219, 235, 245, 235, 250, 255, 226, 239, 246, 233, 249, 253, + 235, 250, 252, 237, 252, 253, 236, 251, 253, 223, 239, 248, 227, 241, 250, 227, 243, 251, 225, 241, 248, 231, 245, 253, 226, 242, 251, 220, 235, 244, 221, 236, 247, 218, 234, 246, 214, 231, 245, 214, 232, 248, 209, 228, 245, 217, 236, 252, 214, 236, 251, 215, 238, 251, 223, 243, 252, 217, 238, 250, 185, 209, 234, + 196, 220, 239, 183, 208, 228, 171, 194, 217, 177, 201, 229, 184, 207, 233, 198, 219, 239, 200, 219, 237, 205, 222, 239, 220, 236, 248, 230, 244, 253, 224, 239, 249, 234, 250, 255, 237, 251, 254, 231, 248, 252, 239, 253, 253, 240, 254, 253, 237, 252, 255, 233, 250, 254, 240, 254, 253, 242, 254, 253, 238, 253, 254, + 234, 251, 254, 231, 248, 254, 222, 238, 251, 212, 225, 236, 203, 211, 220, 200, 206, 212, 191, 192, 197, 192, 186, 193, 188, 179, 181, 182, 156, 150, 184, 147, 139, 182, 133, 116, 180, 124, 103, 176, 119, 96, 174, 116, 91, 173, 116, 91, 177, 118, 92, 178, 115, 87, 180, 117, 88, 178, 110, 78, 179, 110, 72, + 182, 111, 68, 187, 115, 69, 192, 118, 67, 197, 119, 67, 199, 120, 64, 202, 122, 62, 204, 122, 62, 208, 124, 58, 212, 126, 59, 210, 126, 54, 213, 124, 54, 215, 126, 57, 215, 123, 52, 217, 125, 49, 215, 123, 40, 215, 122, 40, 215, 121, 38, 215, 120, 35, 214, 118, 30, 213, 115, 27, 211, 113, 19, + 210, 112, 19, 209, 112, 17, 208, 112, 18, 207, 109, 12, 210, 109, 11, 207, 109, 13, 205, 106, 8, 202, 107, 9, 202, 105, 8, 201, 104, 11, 201, 102, 13, 202, 104, 10, 201, 105, 12, 198, 104, 14, 200, 104, 16, 198, 102, 18, 198, 103, 19, 198, 103, 20, 193, 101, 21, 195, 102, 27, 196, 102, 28, + 191, 100, 27, 188, 97, 24, 188, 98, 29, 188, 98, 31, 185, 99, 30, 183, 97, 30, 182, 95, 27, 102, 120, 131, 100, 118, 129, 117, 134, 146, 123, 141, 152, 119, 136, 148, 108, 124, 137, 100, 117, 129, 111, 128, 140, 114, 135, 147, 114, 140, 152, 113, 141, 153, 115, 144, 155, 122, 153, 167, 123, 155, 168, + 120, 152, 165, 117, 147, 161, 114, 146, 159, 109, 141, 154, 100, 129, 143, 92, 122, 135, 90, 119, 130, 91, 119, 130, 90, 117, 130, 85, 113, 124, 79, 107, 117, 72, 100, 109, 68, 98, 106, 67, 96, 105, 69, 98, 107, 71, 100, 109, 78, 107, 116, 82, 111, 120, 87, 115, 125, 89, 117, 128, 90, 119, 129, + 96, 123, 134, 102, 128, 140, 116, 140, 152, 123, 146, 158, 130, 153, 165, 140, 163, 174, 159, 180, 191, 158, 178, 189, 170, 189, 200, 176, 195, 206, 189, 209, 218, 191, 210, 220, 201, 219, 229, 200, 218, 227, 205, 224, 234, 210, 226, 238, 206, 224, 236, 206, 224, 235, 203, 220, 232, 202, 219, 230, 201, 218, 230, + 216, 232, 245, 216, 232, 245, 223, 239, 250, 225, 242, 251, 229, 243, 252, 229, 246, 253, 230, 246, 253, 233, 249, 253, 237, 251, 254, 238, 252, 254, 238, 253, 253, 244, 254, 254, 245, 255, 254, 242, 253, 254, 249, 252, 254, 247, 253, 253, 248, 253, 254, 233, 247, 252, 200, 215, 236, 192, 208, 232, 202, 218, 243, + 122, 142, 174, 91, 126, 163, 109, 160, 203, 126, 185, 227, 129, 192, 228, 115, 192, 237, 118, 195, 244, 111, 192, 241, 82, 166, 222, 101, 184, 228, 142, 189, 204, 153, 174, 170, 113, 112, 104, 9, 9, 14, 1, 2, 1, 13, 24, 33, 126, 200, 234, 9, 156, 228, 15, 152, 224, 21, 91, 141, 7, 20, 57, + 2, 9, 40, 2, 3, 30, 2, 1, 25, 1, 1, 22, 1, 0, 11, 21, 29, 59, 30, 41, 68, 45, 56, 81, 79, 93, 115, 112, 129, 148, 119, 134, 151, 187, 203, 214, 182, 199, 208, 189, 205, 214, 207, 223, 233, 164, 180, 191, 195, 212, 220, 168, 186, 195, 181, 198, 207, 167, 183, 196, 162, 178, 190, + 180, 196, 208, 164, 182, 193, 179, 196, 207, 186, 202, 214, 185, 202, 212, 200, 218, 226, 192, 208, 220, 206, 223, 232, 205, 222, 231, 224, 239, 248, 214, 229, 239, 231, 247, 253, 224, 238, 246, 238, 252, 254, 239, 253, 254, 239, 252, 253, 229, 247, 253, 222, 237, 247, 228, 243, 249, 230, 244, 251, 234, 249, 254, + 228, 244, 252, 228, 244, 251, 220, 234, 247, 215, 232, 244, 216, 232, 246, 208, 225, 242, 203, 224, 242, 204, 226, 245, 207, 231, 248, 215, 242, 252, 208, 233, 249, 194, 221, 241, 146, 167, 195, 87, 108, 138, 41, 63, 108, 49, 71, 124, 62, 86, 138, 79, 105, 156, 122, 149, 190, 156, 182, 212, 180, 202, 228, + 194, 213, 233, 207, 225, 242, 213, 228, 245, 222, 238, 250, 222, 239, 251, 230, 244, 253, 228, 243, 253, 231, 246, 252, 236, 251, 253, 233, 246, 252, 237, 252, 254, 238, 253, 254, 236, 251, 254, 234, 251, 254, 237, 252, 253, 225, 243, 252, 227, 243, 254, 219, 235, 247, 216, 231, 245, 203, 221, 229, 195, 206, 215, + 195, 199, 207, 188, 180, 184, 184, 159, 158, 174, 136, 127, 166, 122, 105, 166, 118, 99, 163, 113, 93, 166, 116, 97, 167, 116, 98, 162, 112, 92, 162, 110, 88, 160, 101, 74, 167, 107, 78, 167, 103, 67, 173, 104, 64, 176, 107, 64, 181, 108, 60, 186, 111, 62, 189, 113, 62, 193, 112, 60, 197, 114, 59, + 198, 117, 58, 201, 118, 54, 202, 119, 53, 206, 121, 52, 210, 122, 53, 213, 123, 54, 215, 125, 52, 215, 126, 45, 216, 124, 45, 215, 122, 42, 215, 120, 38, 213, 118, 31, 213, 115, 29, 213, 117, 28, 212, 115, 24, 209, 113, 21, 207, 111, 19, 206, 107, 13, 205, 106, 12, 201, 104, 13, 198, 102, 13, + 196, 100, 14, 194, 99, 16, 192, 98, 13, 193, 98, 15, 191, 97, 12, 192, 97, 17, 188, 98, 20, 191, 98, 21, 192, 98, 20, 192, 100, 22, 192, 100, 21, 194, 101, 23, 192, 100, 27, 192, 100, 30, 193, 101, 32, 190, 101, 34, 192, 102, 36, 188, 100, 34, 185, 99, 32, 184, 97, 31, 184, 97, 31, + 105, 123, 134, 110, 129, 140, 96, 112, 124, 106, 124, 135, 112, 129, 142, 96, 113, 125, 85, 101, 113, 92, 112, 123, 102, 125, 136, 101, 127, 138, 102, 131, 141, 105, 136, 146, 109, 140, 152, 106, 139, 152, 106, 138, 151, 111, 143, 156, 108, 140, 154, 102, 133, 146, 95, 124, 138, 90, 119, 132, 90, 120, 132, + 89, 117, 128, 84, 113, 124, 80, 110, 120, 77, 106, 116, 77, 105, 114, 76, 105, 114, 79, 108, 117, 83, 112, 121, 85, 113, 123, 89, 118, 128, 95, 124, 133, 96, 123, 134, 101, 128, 140, 100, 126, 138, 106, 131, 143, 120, 143, 155, 149, 170, 181, 168, 187, 197, 180, 199, 208, 184, 202, 211, 180, 198, 209, + 184, 203, 214, 185, 203, 214, 184, 203, 214, 189, 208, 215, 201, 219, 230, 211, 228, 237, 208, 226, 236, 209, 226, 238, 212, 228, 240, 209, 226, 238, 208, 225, 236, 211, 227, 239, 210, 228, 239, 218, 233, 245, 221, 237, 246, 225, 239, 251, 216, 232, 244, 218, 233, 246, 226, 240, 251, 230, 245, 253, 234, 250, 254, + 238, 253, 254, 234, 250, 253, 240, 255, 254, 246, 254, 254, 249, 255, 254, 252, 254, 255, 252, 255, 255, 254, 255, 255, 255, 255, 255, 254, 254, 254, 244, 251, 252, 229, 243, 251, 205, 223, 245, 198, 217, 245, 154, 173, 208, 80, 115, 162, 97, 152, 200, 113, 174, 221, 126, 197, 243, 116, 203, 251, 79, 175, 235, + 86, 176, 228, 126, 203, 250, 101, 180, 223, 137, 179, 192, 145, 163, 160, 122, 124, 112, 19, 18, 21, 4, 4, 3, 5, 7, 9, 60, 112, 146, 36, 135, 198, 20, 147, 215, 56, 163, 223, 60, 120, 164, 6, 28, 57, 1, 5, 33, 2, 6, 34, 1, 3, 28, 1, 1, 17, 11, 14, 32, 30, 40, 70, + 38, 47, 73, 58, 72, 94, 82, 97, 117, 98, 114, 131, 163, 179, 191, 194, 211, 219, 207, 222, 232, 209, 225, 234, 184, 200, 210, 194, 211, 222, 194, 210, 219, 170, 187, 197, 176, 192, 204, 168, 185, 196, 181, 198, 208, 167, 184, 196, 158, 174, 186, 181, 196, 208, 185, 201, 211, 193, 211, 219, 194, 212, 222, + 212, 228, 235, 215, 233, 240, 212, 228, 238, 214, 231, 240, 226, 241, 249, 224, 238, 246, 236, 249, 253, 238, 252, 253, 241, 254, 254, 234, 250, 255, 233, 248, 254, 222, 238, 245, 232, 245, 251, 230, 245, 253, 230, 245, 252, 229, 246, 252, 219, 235, 248, 217, 234, 246, 206, 223, 239, 201, 222, 239, 204, 227, 246, + 207, 232, 250, 214, 242, 253, 196, 221, 241, 123, 147, 175, 35, 44, 83, 0, 0, 44, 0, 9, 54, 0, 17, 62, 5, 24, 71, 45, 68, 127, 65, 94, 152, 88, 118, 169, 125, 157, 198, 163, 188, 219, 180, 203, 228, 193, 211, 232, 195, 214, 232, 213, 229, 246, 217, 233, 248, 218, 234, 247, 221, 235, 249, + 225, 240, 251, 229, 247, 252, 235, 250, 254, 235, 251, 253, 232, 247, 253, 230, 245, 252, 226, 243, 251, 230, 246, 253, 227, 245, 253, 227, 244, 252, 222, 237, 251, 220, 236, 249, 213, 231, 244, 204, 219, 229, 194, 202, 209, 182, 176, 179, 169, 143, 140, 168, 135, 128, 162, 126, 119, 157, 124, 117, 151, 118, 109, + 150, 116, 107, 146, 106, 91, 147, 100, 81, 146, 98, 76, 144, 89, 62, 146, 90, 61, 153, 97, 68, 156, 95, 61, 160, 97, 60, 164, 97, 57, 169, 99, 56, 170, 100, 53, 172, 101, 54, 178, 103, 54, 181, 105, 53, 184, 104, 49, 186, 107, 48, 191, 111, 49, 195, 112, 49, 201, 115, 51, 203, 116, 47, + 207, 117, 41, 211, 119, 45, 212, 120, 44, 210, 118, 38, 210, 117, 35, 210, 114, 31, 205, 112, 23, 205, 109, 20, 201, 105, 15, 198, 101, 16, 195, 98, 17, 191, 96, 20, 187, 94, 19, 184, 93, 16, 180, 90, 11, 176, 89, 14, 176, 88, 13, 176, 88, 14, 175, 87, 11, 173, 89, 12, 171, 89, 15, + 172, 88, 18, 174, 87, 17, 178, 90, 17, 183, 93, 20, 183, 95, 20, 188, 97, 27, 187, 98, 28, 188, 101, 34, 188, 100, 35, 188, 100, 33, 188, 101, 35, 185, 100, 34, 184, 99, 33, 183, 96, 33, 104, 121, 133, 104, 122, 133, 103, 121, 132, 106, 124, 135, 108, 125, 136, 108, 126, 137, 89, 107, 118, + 79, 100, 111, 80, 105, 116, 82, 110, 120, 87, 116, 126, 90, 120, 131, 98, 128, 140, 97, 129, 142, 105, 135, 147, 108, 139, 152, 103, 134, 147, 94, 124, 137, 88, 119, 131, 84, 114, 125, 83, 113, 124, 82, 113, 124, 82, 112, 123, 82, 112, 123, 86, 115, 126, 88, 117, 127, 92, 120, 130, 94, 122, 132, + 97, 125, 136, 99, 126, 139, 104, 131, 144, 107, 134, 145, 109, 134, 146, 107, 132, 144, 110, 135, 148, 120, 143, 155, 132, 154, 166, 159, 176, 187, 183, 201, 209, 195, 212, 221, 200, 217, 226, 206, 224, 232, 198, 217, 225, 192, 210, 221, 195, 213, 224, 189, 207, 217, 198, 216, 227, 209, 226, 235, 213, 230, 240, + 211, 227, 239, 209, 225, 237, 208, 227, 237, 207, 225, 236, 204, 220, 232, 207, 225, 236, 213, 229, 241, 217, 233, 244, 217, 233, 244, 217, 233, 245, 220, 235, 247, 226, 241, 252, 237, 252, 254, 234, 249, 254, 236, 252, 253, 237, 251, 254, 236, 251, 254, 245, 254, 254, 248, 255, 254, 247, 254, 253, 253, 255, 255, + 253, 255, 255, 255, 255, 255, 254, 255, 255, 253, 254, 254, 251, 255, 254, 227, 244, 252, 200, 219, 249, 181, 201, 236, 58, 88, 142, 85, 136, 189, 107, 171, 219, 125, 194, 241, 119, 197, 247, 107, 193, 242, 71, 176, 239, 98, 187, 244, 86, 176, 235, 89, 160, 194, 114, 160, 179, 85, 120, 141, 29, 33, 41, + 7, 7, 7, 21, 21, 20, 118, 128, 128, 110, 154, 174, 120, 174, 199, 141, 195, 224, 94, 176, 225, 58, 115, 154, 4, 9, 37, 2, 6, 34, 1, 5, 33, 1, 1, 22, 5, 7, 18, 36, 45, 74, 33, 42, 69, 50, 61, 83, 68, 83, 104, 86, 101, 119, 127, 143, 159, 179, 195, 205, 215, 232, 240, + 200, 217, 225, 196, 211, 221, 192, 209, 217, 202, 218, 227, 176, 192, 204, 194, 211, 219, 169, 185, 196, 186, 203, 214, 176, 193, 204, 158, 174, 186, 185, 202, 211, 190, 208, 216, 187, 204, 213, 205, 223, 231, 196, 213, 221, 213, 230, 238, 214, 230, 240, 223, 238, 248, 222, 237, 247, 236, 250, 254, 231, 247, 253, + 239, 251, 254, 239, 253, 254, 234, 248, 253, 237, 250, 253, 231, 246, 253, 234, 248, 252, 232, 244, 253, 232, 247, 254, 229, 246, 253, 222, 238, 250, 216, 233, 248, 211, 231, 248, 199, 222, 243, 207, 233, 251, 213, 242, 250, 185, 210, 223, 39, 51, 86, 0, 4, 46, 1, 11, 55, 4, 24, 67, 8, 26, 71, + 7, 29, 73, 11, 34, 81, 12, 35, 84, 53, 83, 148, 76, 106, 164, 107, 139, 191, 148, 179, 217, 174, 198, 228, 188, 211, 233, 194, 214, 234, 211, 228, 244, 212, 228, 244, 215, 232, 246, 222, 238, 250, 233, 249, 254, 233, 250, 254, 236, 251, 254, 232, 249, 253, 235, 249, 254, 235, 249, 255, 240, 254, 255, + 234, 252, 254, 235, 253, 254, 232, 252, 254, 230, 245, 253, 226, 243, 253, 224, 243, 252, 211, 229, 240, 198, 210, 218, 189, 189, 193, 176, 167, 169, 163, 145, 142, 158, 138, 137, 149, 124, 122, 137, 107, 101, 131, 98, 84, 129, 87, 72, 125, 82, 65, 131, 87, 67, 130, 82, 60, 132, 80, 57, 131, 81, 56, + 135, 83, 57, 138, 82, 55, 139, 81, 50, 141, 82, 49, 145, 85, 47, 148, 84, 46, 155, 86, 47, 157, 89, 46, 161, 91, 45, 166, 92, 42, 173, 95, 42, 178, 100, 43, 184, 104, 46, 187, 107, 45, 191, 108, 42, 195, 109, 42, 199, 111, 42, 200, 111, 39, 200, 111, 34, 198, 107, 31, 193, 104, 27, + 190, 103, 25, 187, 98, 22, 183, 94, 18, 177, 89, 17, 174, 87, 15, 170, 86, 14, 166, 84, 14, 162, 80, 14, 160, 78, 13, 158, 79, 13, 158, 78, 17, 155, 77, 15, 155, 77, 13, 155, 76, 13, 157, 78, 18, 158, 78, 16, 162, 81, 19, 164, 83, 22, 165, 86, 23, 168, 87, 25, 176, 91, 27, + 180, 94, 30, 185, 98, 38, 184, 99, 34, 185, 101, 38, 185, 99, 37, 184, 100, 39, 182, 99, 41, 102, 119, 131, 107, 125, 136, 93, 110, 122, 95, 113, 124, 91, 108, 120, 95, 114, 125, 92, 111, 122, 78, 101, 112, 72, 98, 108, 75, 103, 112, 80, 109, 120, 88, 119, 130, 92, 123, 133, 93, 125, 137, + 98, 128, 142, 94, 126, 137, 87, 117, 129, 82, 112, 123, 79, 109, 120, 80, 110, 121, 82, 112, 123, 86, 115, 126, 90, 120, 131, 96, 125, 136, 99, 129, 140, 102, 130, 141, 103, 131, 142, 106, 133, 145, 109, 135, 147, 115, 140, 152, 114, 139, 152, 118, 143, 154, 126, 150, 162, 126, 148, 160, 125, 149, 161, + 124, 146, 158, 144, 163, 176, 155, 171, 182, 178, 194, 204, 199, 217, 225, 203, 220, 229, 216, 233, 241, 215, 232, 241, 210, 227, 238, 199, 215, 227, 192, 209, 221, 195, 213, 224, 194, 212, 221, 210, 226, 237, 209, 225, 237, 207, 225, 236, 204, 222, 233, 208, 226, 237, 204, 220, 232, 200, 218, 230, 209, 226, 238, + 212, 228, 240, 219, 235, 244, 216, 232, 243, 221, 237, 246, 230, 244, 253, 235, 248, 255, 237, 252, 254, 235, 250, 254, 238, 253, 254, 236, 250, 253, 240, 253, 253, 243, 255, 253, 242, 255, 255, 245, 255, 254, 253, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 253, 253, 211, 233, 253, + 197, 218, 251, 95, 122, 171, 55, 91, 156, 94, 152, 207, 137, 202, 245, 117, 197, 244, 114, 200, 250, 71, 183, 246, 93, 183, 235, 102, 182, 222, 44, 158, 217, 13, 147, 216, 12, 116, 178, 19, 76, 113, 2, 0, 0, 78, 76, 73, 140, 150, 143, 72, 141, 180, 82, 161, 203, 133, 188, 223, 138, 200, 241, + 109, 177, 223, 48, 84, 117, 2, 6, 35, 2, 5, 32, 2, 1, 22, 2, 4, 17, 34, 45, 75, 33, 41, 68, 48, 58, 82, 65, 77, 101, 80, 95, 115, 106, 122, 139, 146, 163, 175, 212, 227, 236, 207, 224, 234, 204, 219, 228, 196, 214, 222, 188, 205, 215, 207, 223, 231, 196, 212, 221, 188, 205, 214, + 182, 199, 209, 193, 208, 219, 171, 188, 198, 182, 199, 209, 187, 204, 213, 195, 212, 221, 205, 222, 231, 204, 220, 229, 210, 226, 235, 219, 231, 242, 222, 237, 247, 231, 246, 253, 234, 249, 252, 237, 251, 253, 241, 251, 254, 240, 254, 255, 235, 249, 254, 237, 250, 253, 235, 250, 253, 237, 253, 254, 235, 249, 254, + 231, 247, 254, 228, 243, 253, 220, 237, 249, 211, 231, 246, 213, 234, 251, 200, 225, 244, 208, 234, 251, 145, 174, 196, 2, 9, 37, 1, 9, 49, 3, 19, 61, 6, 30, 72, 14, 40, 85, 16, 40, 83, 14, 38, 82, 22, 46, 92, 21, 44, 93, 32, 61, 124, 72, 104, 169, 93, 127, 186, 142, 175, 219, + 166, 194, 230, 189, 212, 238, 196, 218, 240, 205, 224, 241, 216, 232, 249, 221, 238, 250, 227, 243, 252, 231, 246, 252, 233, 247, 253, 235, 249, 253, 235, 250, 253, 239, 253, 254, 243, 253, 253, 245, 254, 254, 240, 254, 254, 240, 254, 255, 236, 254, 253, 237, 252, 254, 232, 249, 254, 225, 243, 253, 215, 231, 243, + 202, 217, 225, 195, 204, 213, 186, 189, 195, 165, 165, 169, 149, 137, 140, 135, 121, 122, 131, 111, 109, 119, 91, 82, 110, 78, 68, 109, 75, 65, 105, 75, 66, 99, 64, 52, 102, 62, 44, 102, 59, 37, 107, 63, 39, 114, 69, 48, 113, 65, 42, 115, 67, 40, 117, 66, 38, 121, 69, 40, 127, 71, 39, + 129, 72, 37, 135, 75, 37, 139, 77, 36, 148, 80, 39, 155, 84, 34, 163, 88, 37, 166, 92, 42, 170, 94, 42, 176, 98, 41, 180, 100, 42, 182, 100, 41, 181, 97, 32, 181, 97, 33, 177, 93, 26, 172, 90, 23, 169, 87, 24, 165, 85, 22, 162, 82, 19, 155, 77, 12, 150, 74, 11, 146, 71, 8, + 144, 69, 8, 138, 66, 7, 137, 66, 8, 134, 64, 9, 132, 63, 10, 132, 63, 9, 132, 65, 10, 132, 64, 10, 137, 68, 13, 139, 70, 13, 143, 72, 18, 148, 73, 17, 154, 78, 25, 159, 83, 27, 162, 84, 29, 169, 89, 33, 175, 93, 33, 177, 95, 34, 176, 95, 34, 178, 97, 39, 178, 99, 39, + 99, 117, 129, 99, 116, 128, 88, 106, 117, 90, 108, 119, 85, 104, 115, 83, 103, 115, 79, 99, 110, 81, 106, 117, 80, 108, 117, 82, 111, 120, 82, 111, 122, 84, 114, 125, 83, 113, 124, 84, 114, 125, 83, 112, 123, 79, 109, 120, 76, 106, 117, 76, 106, 118, 79, 109, 120, 84, 114, 125, 87, 116, 127, + 94, 122, 133, 100, 127, 138, 105, 132, 144, 106, 134, 145, 109, 137, 148, 114, 140, 152, 119, 144, 156, 122, 147, 159, 138, 162, 172, 137, 159, 171, 138, 160, 171, 134, 157, 168, 131, 151, 164, 136, 156, 169, 132, 151, 164, 144, 161, 174, 164, 183, 193, 173, 190, 199, 191, 208, 217, 206, 223, 232, 211, 228, 237, + 220, 237, 245, 219, 235, 248, 213, 228, 240, 204, 221, 233, 192, 209, 221, 193, 211, 222, 194, 212, 223, 193, 210, 222, 203, 220, 231, 210, 226, 239, 209, 225, 237, 210, 226, 239, 194, 211, 224, 191, 210, 220, 205, 221, 231, 210, 226, 237, 214, 230, 242, 223, 238, 247, 227, 242, 250, 228, 242, 251, 233, 248, 255, + 232, 246, 253, 234, 249, 254, 237, 253, 254, 241, 254, 253, 241, 254, 254, 244, 255, 254, 248, 255, 254, 251, 255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 254, 242, 253, 254, 206, 229, 253, 157, 182, 226, 64, 99, 160, 68, 117, 190, 115, 177, 229, 117, 202, 251, 94, 191, 249, + 80, 192, 249, 102, 196, 246, 67, 175, 233, 53, 171, 234, 32, 149, 207, 12, 137, 199, 12, 111, 174, 40, 38, 36, 135, 142, 132, 142, 164, 162, 133, 175, 184, 89, 164, 218, 119, 179, 225, 137, 201, 245, 152, 213, 248, 143, 206, 243, 31, 52, 82, 2, 5, 33, 1, 1, 24, 2, 2, 12, 30, 41, 70, + 36, 44, 72, 46, 52, 76, 56, 68, 91, 91, 105, 126, 117, 133, 150, 168, 185, 195, 214, 227, 237, 204, 220, 230, 210, 227, 235, 216, 229, 239, 193, 209, 218, 208, 224, 232, 209, 224, 232, 205, 223, 231, 198, 216, 224, 193, 210, 219, 180, 196, 208, 185, 201, 212, 188, 205, 214, 195, 212, 221, 197, 214, 224, + 209, 227, 235, 213, 230, 239, 217, 233, 241, 229, 242, 251, 230, 244, 251, 231, 245, 252, 240, 254, 254, 239, 251, 253, 241, 253, 254, 239, 251, 253, 237, 250, 253, 239, 252, 254, 236, 251, 253, 233, 248, 253, 234, 249, 254, 230, 247, 254, 221, 237, 251, 223, 241, 254, 216, 239, 253, 209, 236, 250, 135, 171, 197, + 2, 40, 70, 6, 17, 29, 27, 56, 84, 19, 49, 82, 24, 53, 92, 29, 61, 109, 28, 58, 105, 31, 59, 106, 27, 56, 101, 33, 64, 118, 35, 67, 130, 63, 97, 168, 76, 111, 178, 129, 165, 217, 157, 190, 231, 187, 212, 242, 202, 226, 248, 211, 231, 251, 220, 237, 253, 225, 241, 252, 233, 248, 253, + 236, 252, 253, 242, 255, 254, 243, 255, 253, 251, 255, 254, 252, 255, 255, 250, 255, 254, 247, 255, 255, 241, 255, 254, 240, 254, 254, 239, 255, 254, 236, 254, 254, 234, 253, 254, 231, 247, 253, 223, 239, 252, 219, 236, 247, 209, 225, 236, 188, 200, 208, 174, 181, 188, 153, 149, 155, 144, 134, 139, 131, 122, 125, + 95, 77, 73, 82, 59, 54, 81, 58, 53, 87, 65, 64, 86, 62, 55, 80, 51, 36, 76, 44, 29, 78, 44, 28, 82, 46, 30, 86, 49, 31, 85, 49, 27, 91, 51, 28, 93, 53, 28, 98, 54, 28, 102, 55, 27, 107, 58, 27, 112, 60, 29, 118, 62, 27, 127, 68, 28, 134, 72, 31, 140, 77, 33, + 146, 79, 36, 152, 82, 33, 156, 85, 34, 158, 85, 34, 160, 85, 32, 157, 83, 26, 156, 81, 24, 154, 80, 26, 148, 76, 26, 144, 73, 25, 138, 70, 19, 131, 65, 13, 127, 62, 13, 122, 58, 12, 119, 55, 12, 113, 54, 6, 112, 51, 6, 109, 51, 7, 108, 49, 7, 107, 47, 4, 107, 49, 6, + 109, 50, 6, 112, 52, 8, 114, 54, 10, 120, 60, 17, 124, 62, 15, 131, 65, 17, 138, 70, 19, 144, 73, 25, 152, 78, 29, 157, 81, 30, 160, 84, 31, 166, 87, 30, 165, 88, 35, 167, 91, 35, 126, 144, 156, 112, 129, 142, 98, 116, 129, 95, 113, 124, 88, 111, 121, 83, 105, 117, 77, 103, 113, + 74, 101, 111, 75, 103, 113, 78, 108, 116, 76, 105, 115, 73, 104, 115, 71, 103, 111, 74, 104, 114, 72, 103, 112, 75, 105, 115, 77, 107, 117, 79, 108, 120, 84, 114, 123, 90, 117, 128, 92, 120, 132, 100, 126, 138, 104, 131, 143, 107, 134, 146, 114, 140, 152, 117, 143, 154, 121, 146, 158, 136, 158, 169, + 143, 165, 176, 142, 162, 173, 159, 177, 188, 161, 180, 189, 156, 175, 185, 146, 164, 177, 150, 169, 182, 141, 159, 173, 142, 162, 175, 143, 161, 175, 170, 186, 197, 186, 203, 212, 193, 210, 220, 205, 222, 232, 210, 228, 236, 217, 233, 245, 216, 231, 242, 217, 235, 245, 211, 226, 239, 206, 223, 234, 199, 215, 228, + 192, 211, 223, 184, 202, 214, 197, 215, 226, 205, 222, 234, 207, 223, 235, 204, 221, 232, 195, 213, 224, 191, 208, 221, 198, 216, 226, 206, 223, 234, 213, 227, 240, 221, 237, 246, 228, 243, 252, 231, 245, 253, 236, 251, 254, 236, 250, 254, 235, 251, 254, 241, 254, 254, 240, 254, 254, 245, 254, 254, 247, 254, 254, + 248, 254, 254, 252, 255, 255, 254, 254, 254, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 239, 254, 254, 194, 222, 252, 89, 126, 180, 51, 101, 179, 98, 169, 226, 97, 188, 248, 97, 189, 246, 123, 206, 249, 78, 173, 231, 48, 152, 215, 82, 175, 230, 55, 163, 216, 29, 137, 193, 15, 135, 198, + 118, 132, 127, 135, 157, 157, 145, 179, 185, 100, 171, 201, 91, 169, 225, 114, 181, 233, 142, 211, 248, 143, 207, 246, 138, 196, 237, 126, 168, 199, 2, 12, 39, 2, 2, 25, 1, 1, 13, 23, 35, 63, 43, 52, 79, 44, 54, 76, 53, 66, 87, 67, 82, 102, 113, 128, 147, 173, 188, 200, 188, 204, 214, + 205, 219, 232, 209, 225, 233, 207, 223, 231, 208, 226, 234, 222, 237, 245, 211, 227, 236, 212, 229, 238, 211, 227, 235, 193, 210, 218, 190, 208, 216, 192, 208, 218, 197, 213, 223, 207, 223, 232, 191, 207, 217, 205, 222, 230, 205, 221, 232, 219, 233, 242, 229, 244, 251, 230, 245, 251, 235, 248, 252, 236, 249, 255, + 240, 253, 254, 242, 253, 254, 243, 254, 253, 238, 250, 253, 237, 250, 252, 238, 253, 253, 237, 251, 254, 237, 253, 254, 230, 247, 254, 223, 238, 253, 227, 246, 254, 217, 242, 251, 136, 171, 194, 29, 97, 131, 44, 135, 173, 24, 49, 56, 76, 106, 121, 71, 129, 162, 58, 115, 160, 58, 108, 159, 55, 98, 154, + 41, 82, 134, 44, 83, 133, 46, 83, 135, 60, 105, 166, 51, 88, 164, 60, 96, 171, 120, 159, 217, 147, 186, 231, 173, 203, 239, 195, 218, 245, 203, 225, 249, 215, 234, 252, 226, 243, 251, 233, 250, 254, 239, 254, 254, 240, 254, 253, 244, 255, 255, 245, 255, 254, 245, 255, 254, 250, 255, 254, 246, 255, 255, + 246, 254, 254, 241, 254, 254, 236, 254, 253, 240, 254, 254, 236, 254, 254, 232, 249, 254, 227, 245, 253, 226, 242, 254, 218, 234, 246, 200, 218, 228, 178, 191, 201, 161, 171, 181, 142, 146, 157, 98, 92, 94, 80, 68, 70, 70, 59, 59, 67, 57, 57, 68, 56, 59, 60, 47, 47, 50, 31, 25, 50, 30, 21, + 50, 26, 16, 54, 27, 15, 54, 27, 14, 56, 28, 12, 63, 31, 15, 66, 34, 16, 69, 35, 17, 74, 36, 14, 80, 42, 18, 84, 42, 16, 91, 47, 18, 98, 51, 18, 106, 54, 19, 111, 57, 20, 119, 63, 25, 126, 67, 26, 127, 67, 25, 130, 68, 25, 134, 70, 29, 133, 69, 24, 131, 68, 21, + 129, 65, 22, 125, 64, 22, 121, 59, 17, 112, 54, 12, 108, 52, 9, 102, 48, 9, 97, 44, 6, 93, 41, 4, 87, 38, 2, 86, 36, 3, 83, 34, 3, 82, 31, 3, 84, 32, 4, 84, 34, 4, 84, 34, 3, 86, 36, 4, 90, 40, 5, 95, 42, 7, 100, 46, 11, 109, 51, 12, 115, 57, 14, + 122, 62, 19, 130, 66, 23, 136, 67, 22, 141, 72, 26, 147, 76, 31, 148, 79, 34, 148, 80, 32, 113, 132, 142, 111, 131, 143, 105, 126, 138, 91, 114, 125, 84, 110, 121, 76, 103, 114, 75, 101, 113, 73, 101, 111, 69, 98, 107, 69, 98, 107, 66, 96, 104, 67, 96, 105, 67, 97, 106, 69, 99, 108, + 73, 102, 111, 77, 107, 116, 79, 109, 118, 83, 111, 122, 84, 113, 122, 91, 119, 130, 97, 125, 134, 106, 131, 143, 112, 138, 150, 120, 144, 155, 128, 152, 162, 142, 163, 175, 140, 162, 173, 147, 168, 179, 152, 171, 181, 164, 183, 194, 161, 178, 190, 171, 188, 199, 169, 187, 196, 169, 187, 199, 163, 181, 191, + 153, 170, 183, 152, 170, 182, 159, 176, 189, 156, 174, 185, 175, 193, 203, 195, 213, 220, 202, 219, 228, 209, 225, 235, 217, 232, 241, 216, 231, 243, 219, 237, 245, 219, 234, 245, 209, 226, 238, 202, 219, 231, 204, 222, 233, 197, 214, 226, 198, 216, 227, 200, 218, 229, 197, 215, 226, 194, 212, 222, 196, 214, 223, + 200, 216, 228, 202, 219, 230, 201, 218, 228, 207, 223, 235, 213, 228, 241, 220, 235, 245, 223, 238, 248, 229, 245, 251, 233, 247, 253, 231, 247, 254, 235, 250, 253, 241, 254, 254, 242, 254, 254, 245, 254, 253, 243, 254, 254, 246, 255, 254, 245, 254, 254, 249, 255, 255, 250, 255, 255, 255, 255, 255, 254, 255, 255, + 254, 255, 254, 236, 254, 254, 185, 219, 249, 82, 130, 183, 95, 160, 212, 119, 190, 239, 128, 200, 247, 136, 209, 249, 127, 200, 244, 93, 178, 229, 72, 176, 235, 62, 152, 209, 45, 158, 214, 48, 150, 202, 140, 162, 156, 143, 168, 169, 136, 174, 180, 88, 172, 215, 77, 174, 237, 104, 183, 236, 145, 214, 251, + 151, 214, 249, 131, 191, 234, 136, 188, 224, 43, 59, 86, 2, 2, 23, 2, 3, 17, 16, 25, 55, 45, 54, 80, 44, 54, 76, 54, 65, 87, 60, 75, 94, 92, 107, 126, 158, 175, 188, 177, 193, 205, 195, 211, 223, 214, 229, 238, 207, 224, 232, 220, 236, 244, 217, 232, 242, 216, 231, 239, 213, 229, 239, + 218, 231, 241, 195, 212, 220, 195, 212, 220, 198, 214, 224, 199, 216, 225, 193, 210, 220, 203, 219, 227, 204, 221, 230, 207, 224, 233, 222, 234, 244, 234, 248, 252, 236, 250, 253, 231, 245, 251, 234, 247, 253, 240, 253, 253, 239, 253, 254, 246, 254, 253, 240, 252, 254, 239, 254, 254, 240, 252, 254, 238, 253, 255, + 234, 251, 253, 233, 250, 255, 223, 239, 253, 230, 249, 253, 211, 242, 248, 82, 155, 189, 70, 159, 202, 53, 159, 199, 34, 81, 102, 196, 210, 220, 100, 180, 205, 37, 125, 178, 55, 132, 191, 46, 116, 180, 61, 131, 194, 50, 107, 169, 53, 107, 164, 78, 136, 191, 59, 104, 180, 52, 88, 172, 112, 153, 217, + 142, 183, 230, 171, 205, 243, 194, 220, 248, 203, 225, 250, 217, 236, 253, 228, 243, 254, 233, 250, 254, 237, 253, 255, 243, 255, 254, 246, 255, 254, 244, 255, 254, 240, 255, 254, 242, 254, 254, 246, 255, 255, 240, 254, 254, 238, 253, 254, 246, 255, 255, 240, 254, 254, 238, 255, 254, 237, 254, 254, 234, 252, 254, + 228, 246, 254, 220, 237, 250, 208, 226, 238, 194, 211, 221, 170, 182, 191, 145, 153, 163, 115, 117, 125, 90, 93, 100, 83, 83, 92, 76, 78, 85, 63, 61, 67, 39, 33, 37, 21, 14, 15, 15, 8, 8, 14, 4, 5, 17, 7, 7, 21, 8, 7, 22, 9, 4, 29, 9, 5, 33, 11, 6, 35, 13, 7, + 42, 15, 8, 47, 20, 8, 54, 24, 8, 62, 28, 6, 70, 33, 10, 77, 39, 13, 84, 43, 15, 89, 44, 13, 96, 49, 15, 99, 50, 16, 102, 53, 16, 105, 55, 18, 105, 52, 15, 105, 51, 15, 103, 49, 14, 100, 47, 14, 93, 44, 12, 88, 41, 10, 84, 38, 8, 79, 34, 7, 73, 30, 4, + 68, 25, 2, 64, 23, 2, 59, 20, 1, 57, 16, 1, 57, 15, 2, 57, 15, 2, 56, 14, 1, 59, 17, 2, 62, 20, 2, 67, 23, 3, 71, 27, 4, 77, 32, 6, 82, 36, 4, 92, 42, 8, 100, 46, 11, 107, 52, 15, 111, 54, 18, 118, 61, 25, 125, 64, 28, 127, 65, 28, 128, 69, 31, + 82, 105, 115, 79, 103, 114, 79, 105, 115, 81, 107, 117, 81, 107, 118, 74, 100, 113, 68, 97, 106, 64, 93, 102, 63, 92, 100, 62, 90, 99, 61, 90, 99, 61, 89, 98, 61, 90, 99, 63, 91, 97, 68, 94, 104, 73, 100, 110, 74, 100, 110, 78, 106, 116, 81, 108, 117, 85, 112, 122, 108, 132, 141, + 119, 141, 153, 130, 151, 161, 137, 159, 169, 146, 165, 176, 146, 165, 177, 155, 174, 185, 153, 171, 182, 165, 183, 192, 167, 184, 194, 172, 189, 199, 179, 197, 204, 179, 195, 206, 179, 196, 207, 183, 202, 210, 174, 191, 202, 169, 188, 198, 176, 193, 204, 174, 191, 200, 182, 199, 209, 191, 208, 217, 195, 211, 221, + 197, 215, 224, 210, 227, 236, 208, 225, 236, 212, 229, 239, 220, 236, 244, 226, 241, 251, 215, 232, 244, 210, 226, 238, 204, 221, 233, 204, 222, 233, 195, 213, 224, 187, 204, 216, 186, 204, 216, 189, 207, 219, 193, 211, 221, 206, 225, 233, 204, 220, 233, 204, 222, 232, 212, 228, 240, 218, 234, 246, 220, 236, 248, + 224, 240, 250, 230, 245, 254, 233, 248, 254, 229, 245, 253, 233, 247, 254, 237, 251, 254, 245, 253, 253, 244, 254, 253, 245, 254, 255, 241, 254, 253, 239, 254, 253, 244, 254, 254, 255, 255, 255, 254, 255, 255, 254, 255, 255, 249, 254, 255, 225, 251, 253, 170, 210, 240, 72, 126, 186, 91, 152, 206, 108, 182, 235, + 126, 199, 244, 112, 192, 238, 71, 170, 227, 66, 171, 228, 81, 175, 217, 57, 164, 220, 63, 147, 193, 140, 174, 170, 140, 180, 183, 143, 193, 205, 104, 173, 216, 73, 169, 225, 94, 176, 225, 130, 200, 245, 144, 204, 244, 140, 196, 237, 112, 170, 214, 47, 69, 108, 1, 1, 17, 3, 8, 29, 8, 18, 47, + 30, 37, 63, 46, 55, 78, 54, 64, 84, 61, 74, 94, 74, 88, 109, 149, 165, 183, 173, 188, 203, 192, 209, 220, 209, 225, 235, 219, 235, 244, 214, 230, 239, 226, 239, 249, 228, 243, 250, 230, 243, 251, 216, 229, 239, 212, 228, 236, 203, 219, 227, 203, 219, 228, 210, 226, 235, 197, 212, 223, 207, 224, 231, + 207, 223, 232, 216, 232, 241, 224, 238, 246, 235, 248, 254, 240, 252, 254, 231, 242, 251, 234, 248, 252, 241, 253, 253, 239, 253, 254, 252, 255, 254, 247, 254, 255, 238, 253, 255, 245, 254, 253, 237, 253, 252, 236, 254, 254, 232, 249, 252, 231, 249, 255, 233, 254, 253, 177, 217, 237, 95, 173, 209, 80, 171, 212, + 37, 143, 187, 26, 87, 117, 123, 135, 153, 19, 130, 170, 4, 130, 190, 18, 127, 192, 24, 129, 201, 29, 128, 202, 25, 123, 195, 40, 110, 173, 68, 133, 192, 81, 134, 199, 35, 72, 159, 101, 145, 218, 149, 192, 241, 170, 204, 245, 192, 219, 250, 206, 228, 252, 223, 241, 254, 228, 245, 254, 233, 249, 253, + 234, 254, 254, 243, 254, 254, 241, 255, 254, 243, 254, 254, 250, 254, 254, 249, 255, 254, 248, 255, 254, 247, 254, 254, 252, 254, 255, 247, 254, 254, 241, 254, 254, 238, 254, 253, 241, 255, 254, 236, 252, 255, 226, 243, 253, 225, 241, 252, 218, 234, 247, 205, 222, 235, 186, 205, 215, 176, 194, 205, 141, 153, 166, + 121, 133, 147, 108, 119, 134, 85, 98, 109, 59, 61, 71, 29, 28, 33, 5, 5, 6, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 0, 1, 1, 0, 1, 3, 1, 2, 5, 1, 1, 11, 0, 2, 15, 2, 2, 25, 7, 4, 35, 11, 4, 46, 16, 3, 53, 21, 4, + 64, 27, 6, 70, 31, 7, 75, 33, 8, 78, 36, 8, 80, 38, 10, 82, 38, 11, 78, 37, 10, 76, 34, 10, 73, 32, 6, 69, 28, 5, 63, 24, 3, 56, 18, 1, 48, 13, 3, 44, 12, 4, 34, 7, 1, 27, 5, 2, 24, 3, 2, 20, 1, 1, 17, 1, 2, 17, 1, 1, 17, 0, 1, + 21, 1, 2, 23, 2, 1, 32, 3, 1, 43, 8, 2, 51, 13, 2, 60, 18, 1, 70, 26, 4, 78, 31, 4, 83, 35, 7, 89, 42, 14, 96, 47, 17, 101, 48, 18, 103, 52, 21, 106, 56, 24, 78, 104, 115, 72, 98, 109, 71, 98, 108, 69, 96, 107, 66, 94, 103, 61, 89, 99, 58, 87, 96, + 55, 82, 91, 55, 81, 90, 52, 79, 87, 50, 75, 83, 49, 74, 83, 48, 73, 80, 56, 78, 86, 63, 86, 93, 70, 92, 101, 84, 109, 118, 88, 113, 123, 92, 116, 126, 97, 120, 130, 106, 128, 140, 130, 151, 162, 143, 162, 173, 151, 170, 180, 146, 164, 175, 157, 175, 186, 156, 175, 185, 159, 176, 186, + 169, 186, 195, 169, 187, 195, 176, 193, 203, 175, 192, 201, 181, 198, 208, 187, 204, 212, 183, 200, 210, 179, 199, 207, 182, 200, 210, 176, 193, 204, 171, 188, 200, 184, 201, 212, 195, 212, 221, 199, 216, 225, 203, 220, 229, 206, 223, 234, 213, 229, 241, 209, 226, 237, 202, 220, 232, 205, 222, 232, 206, 223, 236, + 207, 223, 235, 206, 222, 234, 201, 220, 230, 201, 219, 230, 195, 212, 224, 184, 202, 214, 186, 203, 214, 196, 214, 225, 202, 220, 228, 213, 229, 240, 212, 229, 240, 207, 224, 236, 222, 238, 248, 221, 237, 248, 222, 236, 248, 226, 241, 250, 230, 246, 253, 231, 245, 253, 233, 247, 254, 232, 246, 254, 235, 248, 255, + 251, 255, 254, 243, 255, 253, 244, 255, 254, 241, 254, 254, 239, 255, 254, 248, 254, 254, 251, 255, 254, 250, 254, 254, 252, 254, 254, 246, 255, 254, 223, 255, 255, 150, 192, 229, 74, 126, 186, 90, 155, 211, 108, 182, 232, 94, 180, 231, 72, 164, 223, 83, 172, 226, 80, 165, 212, 52, 151, 208, 83, 157, 201, + 110, 167, 190, 141, 190, 206, 125, 186, 216, 130, 201, 243, 101, 180, 226, 111, 186, 231, 123, 193, 235, 157, 208, 244, 116, 171, 214, 97, 145, 195, 45, 67, 108, 3, 3, 19, 10, 21, 51, 12, 21, 50, 20, 28, 54, 39, 45, 69, 47, 56, 76, 63, 74, 94, 76, 88, 111, 105, 118, 139, 149, 163, 182, + 181, 198, 211, 195, 212, 222, 208, 224, 235, 219, 234, 242, 232, 245, 251, 224, 239, 248, 226, 240, 247, 225, 239, 249, 200, 218, 226, 210, 225, 234, 212, 228, 237, 212, 229, 237, 215, 230, 239, 215, 231, 241, 214, 229, 238, 223, 239, 247, 223, 239, 246, 233, 247, 253, 236, 250, 253, 236, 250, 254, 244, 254, 253, + 243, 253, 253, 237, 250, 251, 254, 255, 255, 253, 254, 254, 243, 254, 254, 245, 254, 252, 241, 253, 253, 241, 254, 254, 234, 253, 254, 231, 251, 254, 237, 255, 254, 169, 211, 228, 89, 166, 204, 71, 159, 202, 41, 142, 191, 12, 84, 117, 0, 0, 0, 5, 99, 149, 3, 129, 193, 15, 133, 199, 31, 141, 208, + 33, 142, 216, 28, 142, 216, 33, 129, 199, 32, 107, 175, 107, 170, 233, 80, 121, 207, 102, 149, 224, 157, 196, 247, 184, 219, 252, 201, 228, 253, 210, 232, 254, 220, 239, 254, 225, 242, 254, 230, 246, 254, 238, 254, 254, 242, 255, 255, 245, 255, 254, 252, 255, 255, 255, 255, 255, 253, 255, 255, 254, 255, 255, + 254, 255, 255, 250, 255, 254, 243, 254, 254, 243, 255, 255, 244, 255, 255, 240, 255, 254, 235, 253, 254, 231, 248, 254, 231, 248, 255, 224, 240, 252, 214, 232, 244, 210, 226, 242, 195, 213, 224, 173, 189, 201, 157, 173, 185, 136, 151, 165, 95, 110, 122, 79, 92, 105, 53, 60, 67, 24, 27, 34, 10, 12, 15, + 3, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 3, 0, 1, 8, 1, 1, 18, 3, 2, 28, 6, 3, 35, 8, 2, 43, 12, 2, 49, 16, 4, 49, 15, 2, 51, 17, 2, 50, 16, 4, + 46, 14, 3, 41, 13, 4, 37, 8, 3, 29, 6, 2, 20, 3, 2, 13, 0, 2, 8, 1, 1, 5, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 3, 1, 1, 6, 1, 1, 14, 0, 1, 27, 3, 1, 40, 7, 2, + 49, 14, 2, 60, 19, 2, 66, 25, 3, 74, 30, 8, 80, 34, 10, 83, 38, 13, 85, 43, 16, 74, 99, 111, 67, 93, 105, 60, 87, 98, 54, 81, 91, 50, 76, 85, 49, 75, 84, 47, 72, 81, 44, 68, 76, 43, 64, 72, 40, 60, 68, 38, 57, 65, 33, 51, 58, 36, 54, 61, 51, 69, 76, + 73, 92, 100, 86, 105, 113, 93, 115, 124, 112, 131, 142, 121, 140, 151, 121, 140, 152, 118, 139, 150, 131, 151, 162, 133, 151, 164, 137, 155, 166, 156, 174, 183, 156, 174, 184, 159, 178, 187, 163, 180, 189, 174, 191, 199, 177, 195, 203, 184, 201, 208, 184, 202, 210, 188, 205, 214, 181, 199, 208, 186, 204, 212, + 185, 203, 212, 182, 200, 210, 175, 193, 204, 170, 188, 200, 171, 188, 200, 182, 200, 208, 196, 214, 222, 198, 216, 224, 193, 213, 221, 200, 217, 226, 201, 219, 228, 201, 220, 231, 189, 208, 220, 186, 204, 216, 190, 209, 219, 193, 211, 221, 196, 215, 224, 193, 211, 222, 192, 210, 220, 190, 207, 219, 195, 212, 222, + 196, 212, 225, 204, 221, 231, 212, 228, 239, 217, 233, 245, 221, 237, 246, 226, 241, 251, 218, 234, 246, 222, 238, 248, 234, 249, 254, 231, 245, 253, 235, 251, 254, 237, 251, 254, 237, 251, 254, 235, 249, 253, 239, 253, 254, 243, 254, 254, 236, 253, 253, 242, 254, 254, 242, 254, 254, 233, 252, 253, 247, 254, 254, + 243, 255, 254, 238, 255, 254, 225, 253, 253, 218, 252, 254, 207, 245, 255, 141, 186, 226, 57, 109, 173, 58, 118, 186, 78, 154, 213, 91, 178, 230, 116, 197, 243, 111, 187, 232, 86, 169, 215, 87, 163, 211, 85, 162, 210, 123, 182, 215, 134, 194, 230, 143, 207, 245, 127, 194, 233, 128, 195, 236, 156, 212, 245, + 113, 159, 208, 76, 117, 175, 65, 99, 155, 33, 48, 73, 21, 25, 45, 13, 23, 51, 9, 17, 47, 24, 30, 55, 34, 41, 63, 48, 56, 76, 60, 71, 91, 78, 91, 113, 89, 101, 125, 118, 133, 157, 153, 169, 186, 186, 202, 215, 214, 229, 241, 223, 238, 245, 236, 249, 252, 228, 243, 251, 219, 231, 243, + 220, 235, 245, 219, 235, 243, 217, 232, 240, 223, 235, 245, 216, 229, 239, 216, 230, 240, 223, 238, 245, 226, 241, 249, 226, 240, 247, 234, 247, 253, 233, 246, 253, 237, 252, 253, 238, 252, 254, 239, 253, 253, 248, 254, 254, 243, 253, 253, 250, 254, 254, 254, 254, 255, 252, 255, 254, 249, 255, 254, 250, 255, 254, + 244, 254, 255, 236, 253, 253, 234, 254, 254, 236, 254, 253, 175, 210, 231, 73, 145, 189, 72, 157, 200, 47, 144, 188, 19, 116, 157, 2, 0, 2, 6, 95, 142, 2, 121, 186, 3, 122, 192, 11, 129, 201, 26, 138, 213, 17, 134, 210, 52, 153, 221, 44, 132, 201, 120, 185, 241, 144, 182, 244, 140, 182, 247, + 174, 214, 252, 204, 237, 254, 215, 241, 254, 219, 243, 253, 226, 245, 254, 227, 245, 254, 230, 249, 254, 238, 254, 254, 248, 254, 254, 252, 255, 254, 253, 255, 255, 253, 255, 255, 255, 255, 255, 253, 255, 255, 248, 255, 254, 239, 254, 253, 238, 254, 254, 241, 254, 254, 248, 255, 254, 241, 254, 253, 235, 255, 254, + 235, 254, 255, 230, 247, 253, 225, 242, 253, 222, 238, 251, 218, 235, 249, 205, 223, 236, 193, 210, 222, 170, 187, 199, 136, 153, 166, 124, 141, 156, 105, 119, 132, 76, 87, 96, 55, 62, 71, 36, 42, 48, 14, 17, 22, 4, 7, 9, 2, 3, 4, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 4, 1, 2, 8, 0, 1, 12, 2, 2, 13, 1, 2, 15, 1, 2, 13, 1, 2, 12, 0, 1, 7, 1, 2, 5, 1, 2, 2, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, + 0, 1, 0, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 2, 1, 1, 7, 1, 2, 17, 1, 1, 29, 4, 2, 38, 7, 2, 47, 12, 2, 52, 18, 3, 60, 22, 3, 62, 25, 3, + 65, 91, 103, 58, 83, 95, 50, 74, 84, 43, 68, 75, 38, 61, 68, 33, 57, 63, 31, 52, 58, 27, 47, 54, 24, 42, 49, 19, 37, 45, 17, 35, 43, 17, 34, 40, 36, 52, 59, 57, 74, 81, 75, 93, 101, 102, 120, 127, 126, 143, 153, 134, 152, 162, 130, 149, 160, 133, 150, 162, 141, 159, 170, + 137, 155, 166, 138, 156, 168, 144, 162, 172, 152, 171, 180, 162, 180, 188, 165, 184, 192, 166, 184, 192, 173, 190, 199, 178, 195, 204, 178, 196, 205, 187, 205, 213, 189, 206, 216, 193, 211, 218, 190, 207, 216, 194, 211, 220, 188, 204, 213, 186, 204, 215, 180, 198, 209, 174, 191, 202, 173, 191, 200, 188, 206, 216, + 195, 212, 221, 202, 220, 228, 204, 220, 232, 212, 228, 241, 207, 224, 234, 201, 219, 230, 195, 212, 225, 197, 216, 225, 192, 210, 221, 187, 205, 216, 185, 203, 214, 177, 195, 207, 173, 191, 203, 178, 196, 207, 190, 208, 218, 197, 214, 224, 209, 225, 235, 211, 227, 239, 213, 229, 240, 219, 234, 246, 220, 236, 249, + 221, 238, 246, 223, 237, 249, 227, 242, 251, 230, 245, 253, 233, 249, 253, 239, 252, 254, 241, 254, 253, 238, 252, 255, 237, 252, 254, 235, 252, 252, 239, 253, 254, 239, 253, 253, 238, 253, 254, 243, 254, 253, 244, 254, 254, 230, 253, 254, 228, 254, 254, 224, 252, 254, 214, 249, 253, 206, 247, 254, 168, 212, 246, + 74, 121, 181, 40, 93, 158, 86, 159, 207, 115, 184, 231, 95, 171, 216, 95, 171, 218, 95, 162, 207, 84, 163, 212, 144, 193, 216, 137, 195, 230, 135, 194, 230, 131, 189, 230, 141, 200, 234, 118, 170, 215, 68, 109, 169, 92, 137, 182, 70, 99, 137, 17, 23, 42, 70, 75, 99, 32, 37, 66, 8, 16, 45, + 30, 36, 60, 40, 47, 69, 55, 65, 85, 60, 72, 91, 79, 92, 114, 91, 103, 127, 100, 114, 140, 133, 149, 171, 150, 167, 183, 201, 216, 228, 227, 243, 250, 223, 238, 246, 224, 240, 247, 231, 245, 252, 224, 238, 247, 225, 240, 247, 218, 233, 242, 224, 236, 244, 223, 235, 243, 229, 244, 251, 231, 243, 252, + 230, 242, 250, 230, 243, 251, 236, 249, 253, 234, 249, 252, 236, 248, 252, 238, 253, 254, 248, 254, 254, 253, 255, 255, 246, 254, 254, 249, 254, 254, 253, 254, 254, 253, 255, 255, 254, 255, 255, 246, 255, 255, 247, 255, 254, 242, 254, 254, 233, 253, 254, 236, 254, 253, 207, 236, 249, 98, 161, 205, 78, 158, 205, + 53, 149, 196, 39, 146, 189, 3, 25, 34, 8, 112, 165, 1, 114, 177, 7, 134, 203, 13, 133, 202, 20, 139, 213, 35, 153, 221, 47, 139, 203, 67, 152, 217, 134, 198, 253, 159, 196, 253, 167, 205, 253, 188, 227, 253, 217, 249, 254, 228, 251, 253, 226, 250, 253, 232, 255, 255, 239, 254, 255, 236, 254, 253, + 240, 255, 254, 245, 254, 254, 249, 255, 254, 243, 255, 254, 247, 255, 254, 253, 255, 255, 250, 254, 254, 242, 254, 254, 240, 255, 254, 239, 254, 253, 241, 254, 253, 246, 254, 255, 245, 254, 255, 240, 254, 253, 235, 252, 253, 233, 249, 255, 229, 246, 253, 227, 242, 254, 222, 238, 251, 215, 232, 245, 200, 218, 229, + 171, 189, 200, 148, 165, 178, 136, 152, 166, 96, 112, 124, 71, 79, 90, 50, 58, 68, 43, 49, 58, 20, 25, 30, 11, 16, 21, 4, 6, 10, 1, 2, 2, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 2, 1, 1, 6, 1, 1, 13, 0, 2, 21, 2, 2, 27, 4, 1, 33, 7, 2, 53, 78, 91, 46, 69, 80, 39, 60, 70, 31, 52, 61, 23, 42, 50, 17, 35, 42, 11, 29, 36, + 7, 25, 32, 4, 21, 28, 7, 25, 32, 11, 28, 35, 24, 39, 46, 48, 60, 67, 71, 86, 93, 95, 111, 122, 107, 124, 132, 115, 133, 144, 134, 151, 162, 135, 153, 164, 143, 161, 170, 143, 160, 170, 143, 161, 171, 150, 169, 179, 140, 157, 169, 135, 154, 166, 152, 169, 179, 171, 189, 197, 173, 190, 199, + 174, 191, 199, 176, 193, 202, 187, 204, 213, 192, 209, 217, 195, 212, 221, 192, 208, 218, 199, 216, 224, 200, 217, 226, 200, 216, 227, 191, 208, 219, 191, 209, 220, 192, 211, 219, 190, 208, 219, 183, 201, 212, 186, 204, 215, 195, 213, 222, 197, 216, 224, 204, 222, 232, 211, 227, 238, 206, 223, 235, 198, 216, 227, + 189, 206, 218, 188, 206, 217, 187, 204, 216, 184, 201, 213, 175, 193, 205, 171, 188, 201, 181, 199, 209, 181, 199, 210, 193, 211, 222, 195, 212, 223, 205, 221, 233, 208, 225, 236, 213, 229, 240, 220, 235, 247, 220, 234, 248, 226, 241, 250, 223, 238, 250, 226, 242, 250, 229, 243, 252, 236, 251, 254, 238, 253, 254, + 237, 251, 255, 236, 251, 254, 242, 255, 253, 241, 254, 253, 238, 251, 254, 237, 252, 253, 236, 252, 254, 232, 247, 253, 234, 253, 253, 227, 247, 254, 225, 251, 254, 214, 246, 253, 212, 249, 253, 204, 242, 254, 187, 230, 255, 98, 148, 199, 48, 95, 157, 95, 156, 201, 98, 163, 204, 87, 158, 202, 101, 159, 200, + 90, 155, 195, 130, 180, 191, 130, 182, 214, 118, 171, 205, 117, 173, 211, 106, 155, 198, 72, 116, 170, 84, 127, 178, 72, 109, 147, 43, 60, 89, 75, 85, 109, 69, 77, 104, 31, 38, 67, 23, 29, 55, 51, 61, 83, 62, 74, 96, 64, 77, 98, 65, 78, 98, 80, 93, 115, 89, 101, 125, 99, 110, 136, + 125, 139, 162, 158, 172, 190, 185, 200, 213, 221, 235, 245, 224, 240, 249, 228, 241, 248, 237, 250, 253, 228, 242, 249, 230, 243, 250, 224, 238, 247, 229, 243, 250, 230, 243, 251, 231, 244, 251, 230, 245, 252, 232, 245, 252, 233, 247, 252, 235, 248, 253, 237, 252, 253, 247, 254, 254, 250, 255, 255, 250, 255, 255, + 247, 254, 254, 249, 254, 254, 250, 255, 254, 252, 255, 255, 255, 255, 255, 255, 255, 255, 251, 255, 254, 253, 254, 254, 248, 255, 254, 238, 254, 254, 240, 254, 254, 223, 247, 253, 130, 184, 224, 94, 171, 217, 66, 161, 209, 40, 152, 206, 13, 100, 144, 7, 128, 190, 4, 118, 185, 11, 128, 197, 28, 136, 202, + 55, 158, 221, 54, 156, 216, 74, 151, 203, 76, 156, 216, 133, 198, 252, 159, 195, 252, 169, 205, 253, 193, 232, 254, 241, 255, 253, 252, 254, 254, 251, 255, 254, 242, 254, 254, 240, 254, 253, 238, 254, 253, 248, 255, 254, 246, 255, 255, 244, 255, 253, 245, 255, 255, 249, 254, 253, 254, 255, 255, 252, 255, 255, + 246, 255, 254, 245, 255, 255, 245, 254, 254, 244, 255, 254, 248, 254, 254, 241, 254, 253, 236, 254, 253, 234, 252, 253, 236, 252, 254, 235, 248, 254, 230, 246, 254, 221, 238, 251, 214, 231, 243, 206, 223, 234, 188, 206, 217, 174, 192, 205, 146, 163, 173, 107, 121, 133, 90, 99, 113, 71, 81, 92, 55, 64, 73, + 30, 37, 42, 18, 22, 29, 4, 5, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 4, 1, 2, 53, 78, 92, 45, 69, 80, 36, 57, 67, 27, 46, 53, 16, 33, 42, 7, 25, 33, 7, 24, 32, 7, 25, 32, 11, 29, 35, 20, 36, 43, 34, 46, 54, 46, 58, 65, 66, 78, 86, 85, 101, 108, + 102, 117, 127, 120, 137, 147, 132, 149, 159, 144, 161, 171, 143, 160, 169, 147, 164, 174, 151, 169, 178, 156, 174, 182, 155, 173, 183, 152, 169, 181, 142, 160, 171, 140, 157, 169, 160, 177, 189, 162, 179, 189, 167, 184, 193, 170, 187, 196, 174, 191, 200, 183, 200, 209, 188, 206, 214, 194, 211, 220, 195, 212, 221, + 201, 218, 227, 201, 219, 227, 204, 221, 230, 205, 221, 233, 200, 218, 227, 197, 214, 225, 198, 214, 224, 202, 220, 228, 210, 226, 237, 204, 220, 232, 199, 218, 226, 202, 220, 230, 207, 225, 234, 206, 224, 234, 199, 217, 228, 193, 211, 222, 184, 201, 214, 184, 202, 213, 187, 205, 216, 180, 198, 210, 174, 191, 203, + 185, 203, 214, 193, 210, 222, 185, 203, 214, 193, 211, 222, 196, 212, 224, 204, 221, 231, 211, 228, 239, 221, 236, 248, 217, 233, 244, 216, 232, 244, 220, 236, 248, 223, 238, 249, 230, 244, 253, 233, 249, 253, 230, 245, 253, 238, 250, 254, 237, 251, 254, 243, 253, 254, 246, 254, 254, 246, 254, 254, 235, 254, 254, + 230, 245, 253, 227, 245, 253, 227, 245, 254, 221, 243, 254, 221, 246, 253, 219, 251, 254, 207, 240, 252, 196, 236, 253, 197, 237, 255, 149, 193, 229, 109, 155, 199, 100, 146, 182, 96, 149, 190, 104, 154, 184, 95, 146, 187, 98, 135, 159, 88, 137, 178, 99, 143, 174, 92, 140, 180, 59, 100, 156, 81, 122, 165, + 63, 96, 134, 51, 74, 101, 87, 99, 126, 104, 115, 144, 90, 99, 126, 36, 44, 72, 55, 63, 89, 94, 106, 132, 88, 99, 121, 86, 98, 119, 87, 99, 121, 82, 95, 118, 88, 100, 124, 112, 124, 147, 120, 131, 155, 143, 157, 176, 168, 183, 199, 216, 231, 240, 228, 243, 250, 231, 246, 252, 242, 254, 254, + 235, 246, 253, 238, 251, 254, 228, 244, 250, 237, 250, 253, 235, 250, 252, 233, 245, 253, 226, 240, 247, 236, 248, 254, 230, 242, 250, 236, 248, 253, 243, 254, 254, 249, 254, 254, 249, 254, 254, 248, 255, 255, 248, 254, 254, 243, 254, 253, 239, 252, 253, 247, 255, 255, 254, 255, 255, 254, 255, 255, 253, 255, 255, + 255, 255, 255, 252, 255, 254, 248, 255, 254, 239, 254, 253, 246, 255, 254, 161, 205, 235, 104, 177, 223, 85, 170, 217, 41, 151, 207, 10, 131, 193, 12, 139, 205, 15, 133, 201, 23, 136, 203, 48, 146, 211, 86, 172, 223, 77, 166, 218, 67, 154, 214, 85, 164, 224, 132, 190, 245, 156, 192, 251, 167, 204, 254, + 180, 218, 250, 252, 254, 253, 253, 254, 254, 254, 255, 255, 255, 255, 255, 254, 255, 255, 250, 255, 254, 252, 254, 254, 251, 255, 254, 251, 255, 254, 248, 255, 254, 250, 254, 254, 252, 255, 255, 252, 254, 254, 250, 255, 254, 250, 254, 254, 252, 255, 255, 247, 255, 254, 246, 255, 255, 236, 253, 252, 239, 255, 254, + 238, 255, 254, 244, 255, 254, 235, 254, 254, 231, 248, 255, 225, 241, 253, 217, 233, 246, 208, 225, 236, 199, 217, 228, 193, 209, 221, 174, 192, 202, 145, 161, 172, 121, 134, 148, 97, 111, 122, 83, 96, 105, 60, 70, 79, 35, 39, 46, 14, 19, 25, 5, 6, 9, 3, 5, 6, 4, 3, 5, 3, 5, 8, + 4, 7, 9, 2, 2, 4, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 63, 89, 106, 53, 78, 94, 43, 65, 77, 37, 57, 69, 33, 50, 62, 30, 48, 58, 30, 47, 59, 38, 53, 62, 40, 55, 63, 44, 59, 68, 54, 69, 78, 68, 80, 89, 77, 93, 102, 99, 116, 125, 113, 128, 140, 125, 143, 152, 135, 151, 161, 148, 166, 173, 146, 163, 173, 148, 165, 174, 153, 170, 180, + 156, 173, 182, 152, 168, 179, 159, 176, 187, 159, 176, 185, 156, 174, 183, 160, 177, 187, 166, 184, 193, 175, 191, 201, 175, 193, 201, 179, 196, 204, 188, 205, 214, 195, 213, 221, 196, 213, 222, 201, 218, 227, 200, 218, 225, 203, 220, 230, 200, 217, 228, 194, 213, 224, 194, 212, 222, 190, 208, 218, 197, 215, 224, + 196, 214, 224, 195, 213, 223, 199, 217, 228, 193, 211, 222, 203, 220, 231, 207, 224, 235, 202, 220, 230, 198, 215, 226, 191, 209, 219, 185, 202, 215, 175, 191, 204, 169, 186, 199, 174, 191, 204, 177, 193, 206, 180, 198, 209, 189, 205, 216, 193, 210, 220, 194, 212, 223, 194, 212, 223, 205, 221, 233, 207, 223, 235, + 210, 227, 239, 216, 232, 244, 215, 231, 244, 216, 232, 244, 223, 239, 248, 227, 242, 252, 232, 247, 253, 231, 246, 253, 231, 247, 253, 236, 251, 254, 232, 248, 253, 240, 252, 254, 239, 253, 254, 239, 252, 254, 235, 250, 254, 223, 240, 250, 228, 246, 254, 226, 245, 253, 220, 242, 253, 218, 242, 253, 215, 246, 253, + 217, 250, 254, 210, 245, 252, 212, 251, 255, 190, 228, 255, 164, 206, 241, 129, 170, 207, 82, 121, 160, 79, 119, 158, 58, 96, 128, 62, 98, 144, 46, 82, 131, 46, 78, 133, 62, 91, 126, 42, 68, 102, 59, 75, 101, 99, 115, 145, 116, 129, 163, 123, 137, 169, 129, 140, 170, 129, 140, 170, 135, 147, 174, + 135, 146, 173, 138, 152, 173, 134, 146, 165, 113, 125, 147, 104, 117, 138, 84, 96, 120, 119, 131, 154, 112, 124, 148, 132, 146, 168, 170, 185, 200, 209, 224, 235, 231, 245, 251, 238, 250, 253, 240, 251, 253, 237, 248, 252, 233, 246, 252, 236, 248, 252, 233, 246, 253, 232, 245, 253, 234, 246, 254, 236, 248, 252, + 234, 247, 254, 237, 250, 253, 243, 254, 254, 243, 254, 254, 252, 254, 254, 254, 255, 255, 252, 255, 255, 253, 255, 255, 249, 254, 254, 238, 252, 255, 239, 252, 254, 248, 254, 254, 254, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 253, 255, 254, 249, 255, 254, 248, 255, 254, 189, 221, 239, 108, 172, 216, + 103, 178, 226, 71, 167, 223, 42, 150, 211, 33, 146, 208, 35, 137, 199, 35, 140, 210, 52, 155, 220, 78, 169, 227, 79, 165, 214, 90, 174, 227, 115, 185, 241, 113, 161, 229, 152, 189, 250, 170, 203, 252, 196, 235, 253, 251, 254, 254, 254, 254, 254, 254, 255, 255, 255, 255, 255, 253, 255, 255, 252, 255, 254, + 254, 255, 255, 254, 255, 255, 254, 255, 255, 255, 255, 255, 254, 255, 255, 253, 255, 255, 254, 255, 255, 254, 255, 255, 254, 255, 255, 247, 255, 254, 243, 255, 255, 239, 254, 254, 240, 255, 254, 244, 254, 254, 247, 254, 254, 243, 253, 254, 234, 250, 254, 231, 247, 255, 225, 241, 252, 219, 235, 247, 213, 229, 241, + 204, 222, 232, 196, 213, 224, 183, 200, 212, 170, 186, 198, 151, 167, 180, 128, 145, 158, 106, 123, 133, 88, 104, 116, 60, 69, 79, 39, 47, 56, 31, 41, 51, 34, 45, 53, 27, 36, 45, 21, 29, 39, 19, 29, 37, 7, 10, 17, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 102, 124, 66, 91, 110, 57, 79, 96, 50, 75, 90, 50, 69, 85, 48, 67, 83, 49, 67, 81, + 56, 74, 86, 59, 77, 87, 67, 84, 95, 76, 92, 103, 80, 97, 108, 95, 111, 122, 106, 122, 133, 126, 142, 154, 134, 150, 159, 136, 153, 162, 149, 166, 175, 163, 179, 187, 161, 178, 187, 159, 176, 185, 150, 168, 177, 148, 165, 176, 146, 164, 174, 157, 175, 184, 161, 178, 187, 163, 180, 189, 170, 187, 196, + 177, 194, 203, 178, 195, 204, 184, 202, 210, 190, 207, 216, 189, 206, 215, 188, 205, 214, 191, 208, 217, 196, 213, 222, 206, 223, 233, 214, 230, 242, 208, 226, 234, 209, 225, 238, 204, 222, 231, 201, 218, 229, 204, 222, 231, 204, 221, 232, 204, 220, 232, 205, 222, 233, 205, 223, 233, 201, 219, 230, 199, 217, 226, + 196, 214, 226, 193, 211, 222, 196, 214, 224, 185, 202, 215, 175, 192, 205, 163, 182, 196, 171, 189, 201, 174, 191, 203, 176, 193, 206, 178, 195, 208, 184, 202, 213, 187, 205, 216, 197, 215, 226, 211, 228, 239, 210, 227, 238, 214, 231, 242, 216, 232, 244, 217, 233, 245, 219, 235, 246, 223, 237, 249, 225, 240, 250, + 233, 247, 254, 233, 247, 254, 234, 248, 254, 234, 249, 254, 235, 248, 253, 237, 251, 254, 232, 246, 252, 233, 248, 254, 231, 246, 253, 224, 239, 251, 223, 241, 252, 228, 245, 253, 221, 241, 254, 213, 237, 253, 225, 251, 254, 222, 253, 255, 217, 250, 253, 206, 240, 252, 207, 240, 254, 202, 237, 255, 173, 213, 249, + 138, 177, 217, 113, 146, 193, 98, 131, 176, 80, 109, 145, 63, 90, 131, 66, 87, 120, 98, 116, 153, 117, 138, 178, 130, 150, 186, 141, 159, 191, 153, 169, 198, 155, 171, 198, 165, 178, 203, 173, 187, 209, 172, 186, 206, 169, 183, 201, 174, 187, 205, 154, 166, 184, 133, 144, 163, 98, 110, 132, 98, 109, 134, + 101, 113, 136, 112, 126, 149, 170, 186, 202, 188, 203, 216, 230, 242, 249, 238, 251, 253, 238, 250, 254, 234, 247, 251, 242, 253, 254, 233, 245, 251, 225, 240, 250, 230, 242, 251, 233, 245, 252, 231, 245, 251, 237, 250, 253, 243, 254, 255, 242, 254, 254, 237, 251, 253, 253, 254, 255, 252, 254, 254, 252, 255, 255, + 245, 252, 254, 240, 251, 253, 236, 249, 254, 232, 245, 252, 244, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 252, 255, 255, 254, 255, 255, 217, 243, 251, 146, 199, 238, 114, 184, 229, 87, 169, 217, 67, 156, 210, 56, 151, 209, 47, 137, 195, 56, 149, 213, 67, 166, 229, + 79, 168, 228, 91, 171, 223, 116, 185, 234, 125, 184, 236, 90, 129, 206, 149, 180, 242, 171, 204, 252, 207, 241, 253, 249, 254, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 254, 255, 255, 250, 255, 254, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 255, 255, 255, 255, 255, + 255, 255, 255, 253, 254, 254, 245, 254, 254, 241, 254, 253, 244, 254, 254, 248, 255, 254, 247, 255, 253, 240, 255, 254, 234, 250, 255, 233, 249, 254, 227, 244, 253, 225, 241, 253, 222, 238, 250, 214, 230, 242, 206, 224, 234, 194, 212, 221, 188, 204, 216, 170, 186, 198, 151, 167, 179, 141, 157, 170, 123, 140, 154, + 107, 123, 136, 81, 95, 107, 73, 85, 98, 71, 87, 100, 70, 86, 98, 57, 68, 78, 50, 60, 69, 39, 47, 56, 30, 37, 45, 12, 17, 24, 5, 10, 17, 3, 6, 15, 1, 1, 3, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 88, 114, 138, 79, 105, 127, 72, 97, 118, 66, 92, 109, 59, 84, 100, 57, 80, 94, 61, 83, 98, 68, 89, 102, 71, 90, 103, 77, 96, 107, 82, 100, 111, 91, 108, 119, 93, 109, 121, 102, 120, 128, + 110, 128, 138, 114, 131, 143, 118, 134, 146, 134, 151, 163, 134, 153, 161, 142, 158, 169, 150, 168, 178, 151, 170, 179, 153, 171, 180, 154, 172, 183, 149, 167, 179, 153, 171, 180, 155, 172, 182, 162, 179, 188, 163, 180, 189, 166, 183, 193, 171, 188, 198, 184, 202, 210, 191, 208, 217, 195, 212, 221, 198, 215, 224, + 201, 219, 227, 204, 221, 231, 204, 221, 230, 208, 224, 234, 205, 221, 235, 210, 227, 237, 208, 224, 236, 204, 221, 233, 206, 224, 233, 201, 218, 229, 203, 220, 231, 204, 222, 232, 200, 218, 229, 191, 209, 219, 179, 196, 209, 184, 202, 213, 187, 204, 217, 170, 187, 201, 158, 177, 193, 150, 169, 185, 160, 178, 192, + 161, 179, 194, 176, 193, 205, 179, 197, 209, 185, 203, 214, 194, 212, 223, 203, 220, 231, 212, 228, 239, 213, 230, 241, 213, 230, 242, 219, 234, 247, 221, 237, 249, 221, 237, 248, 232, 246, 254, 231, 248, 253, 236, 250, 254, 239, 253, 254, 232, 247, 253, 236, 251, 254, 236, 251, 253, 236, 251, 254, 231, 245, 253, + 227, 244, 252, 226, 243, 250, 221, 236, 248, 221, 236, 249, 221, 238, 251, 224, 242, 253, 228, 247, 254, 227, 246, 253, 223, 250, 253, 226, 252, 254, 225, 254, 253, 225, 254, 254, 215, 246, 254, 214, 244, 254, 194, 224, 249, 193, 224, 252, 200, 229, 255, 187, 215, 246, 174, 201, 233, 168, 193, 226, 175, 199, 231, + 156, 176, 208, 178, 197, 224, 182, 197, 221, 179, 195, 217, 190, 205, 225, 188, 203, 222, 207, 221, 238, 191, 206, 222, 198, 212, 228, 184, 199, 215, 169, 182, 199, 156, 169, 185, 137, 149, 166, 121, 133, 154, 98, 110, 135, 102, 117, 141, 147, 163, 179, 192, 206, 219, 219, 234, 243, 232, 244, 251, 235, 248, 252, + 233, 246, 252, 240, 252, 253, 230, 244, 251, 228, 242, 250, 234, 247, 254, 231, 242, 251, 236, 249, 253, 237, 250, 253, 239, 252, 255, 237, 251, 254, 242, 252, 254, 243, 252, 252, 241, 254, 254, 242, 253, 253, 237, 249, 253, 240, 253, 254, 237, 250, 253, 238, 250, 253, 241, 252, 254, 251, 254, 254, 254, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 240, 252, 254, 157, 204, 238, 118, 183, 224, 102, 169, 214, 90, 166, 212, 76, 158, 210, 67, 148, 202, 63, 141, 197, 74, 159, 214, 102, 176, 227, 106, 176, 228, 122, 187, 236, 100, 153, 211, 91, 127, 197, 150, 180, 236, 169, 202, 248, + 214, 245, 253, 246, 255, 253, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 251, 255, 255, 253, 255, 255, 254, 254, 254, 251, 255, 254, 249, 255, 254, 246, 255, 254, 244, 254, 253, 239, 254, 253, + 235, 252, 254, 236, 251, 254, 233, 249, 255, 229, 245, 253, 228, 243, 252, 225, 241, 253, 221, 237, 249, 211, 228, 240, 204, 222, 231, 197, 213, 224, 182, 199, 207, 164, 181, 193, 153, 170, 182, 134, 150, 163, 124, 140, 154, 117, 131, 146, 104, 119, 134, 90, 106, 119, 92, 109, 121, 73, 86, 99, 67, 80, 91, + 65, 78, 88, 54, 64, 74, 32, 42, 50, 14, 23, 32, 9, 17, 24, 3, 6, 13, 0, 1, 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, + 91, 117, 141, 88, 114, 138, 85, 111, 135, 84, 110, 130, 77, 102, 121, 75, 100, 116, 78, 103, 119, 84, 107, 123, 87, 109, 122, 85, 105, 117, 86, 106, 119, 90, 108, 120, 104, 121, 132, 104, 122, 133, 96, 114, 126, 105, 123, 134, 113, 130, 141, 116, 135, 145, 115, 133, 143, 120, 138, 149, 132, 150, 161, + 137, 155, 167, 147, 166, 176, 150, 168, 180, 152, 169, 182, 156, 174, 185, 164, 182, 191, 170, 187, 197, 171, 188, 198, 178, 196, 204, 180, 197, 207, 179, 196, 205, 180, 197, 206, 180, 198, 207, 196, 213, 222, 198, 216, 224, 202, 218, 228, 204, 221, 230, 208, 224, 236, 209, 225, 237, 206, 224, 234, 205, 223, 232, + 203, 220, 231, 206, 223, 232, 209, 227, 236, 197, 216, 226, 193, 212, 222, 192, 210, 222, 178, 195, 208, 177, 194, 207, 168, 186, 200, 164, 182, 197, 160, 179, 194, 169, 186, 200, 164, 183, 197, 163, 181, 195, 164, 182, 197, 172, 189, 201, 182, 200, 211, 190, 206, 218, 200, 219, 228, 203, 220, 229, 211, 227, 239, + 214, 230, 241, 214, 230, 242, 216, 231, 243, 221, 236, 247, 222, 239, 248, 232, 246, 253, 231, 246, 252, 235, 248, 254, 236, 251, 254, 236, 252, 254, 235, 250, 253, 234, 248, 254, 233, 247, 254, 234, 247, 254, 221, 236, 247, 211, 227, 237, 222, 238, 248, 219, 234, 246, 225, 240, 252, 232, 249, 254, 231, 248, 254, + 226, 244, 254, 233, 254, 254, 232, 254, 254, 234, 254, 254, 233, 253, 254, 227, 250, 253, 219, 244, 252, 227, 252, 253, 223, 245, 253, 220, 240, 253, 223, 241, 253, 222, 242, 255, 213, 233, 250, 207, 224, 244, 213, 229, 247, 215, 232, 247, 213, 228, 243, 196, 211, 229, 211, 227, 241, 214, 228, 244, 212, 226, 240, + 214, 230, 242, 218, 231, 244, 191, 205, 219, 179, 191, 207, 149, 163, 180, 147, 161, 179, 167, 182, 202, 118, 132, 154, 115, 129, 151, 149, 165, 181, 190, 206, 217, 220, 235, 245, 234, 246, 251, 231, 245, 252, 238, 250, 253, 234, 248, 251, 223, 236, 243, 229, 244, 250, 224, 238, 248, 233, 245, 253, 234, 246, 253, + 236, 250, 253, 229, 241, 251, 235, 246, 252, 232, 245, 253, 237, 249, 253, 240, 253, 255, 240, 252, 254, 237, 251, 253, 242, 254, 254, 242, 254, 253, 241, 255, 253, 238, 252, 254, 248, 254, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 255, 253, 201, 231, 246, + 132, 184, 218, 125, 183, 222, 106, 171, 216, 84, 154, 202, 88, 162, 210, 88, 160, 209, 104, 175, 223, 123, 188, 233, 120, 180, 229, 112, 171, 222, 82, 125, 186, 122, 155, 218, 150, 180, 233, 181, 215, 251, 222, 248, 253, 251, 254, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, + 255, 255, 255, 255, 255, 255, 252, 255, 254, 254, 255, 255, 254, 255, 255, 252, 255, 255, 250, 255, 254, 252, 254, 254, 250, 254, 254, 250, 255, 254, 243, 254, 254, 241, 255, 254, 243, 254, 254, 237, 254, 254, 237, 253, 253, 235, 249, 255, 232, 248, 254, 232, 248, 254, 230, 246, 254, 224, 240, 252, 223, 239, 251, + 220, 237, 249, 214, 230, 242, 210, 226, 238, 203, 220, 229, 196, 212, 224, 186, 202, 213, 171, 189, 200, 164, 180, 193, 157, 172, 187, 147, 162, 179, 129, 146, 159, 113, 129, 141, 94, 110, 122, 79, 95, 106, 68, 79, 91, 48, 56, 66, 29, 36, 42, 11, 19, 26, 5, 11, 18, 4, 6, 14, 1, 2, 2, + 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 93, 119, 143, 88, 114, 137, 89, 114, 135, 89, 114, 135, 89, 115, 133, 92, 117, 135, 96, 122, 137, + 104, 128, 144, 107, 130, 145, 103, 126, 139, 97, 121, 135, 94, 116, 127, 96, 116, 129, 98, 118, 129, 102, 121, 134, 109, 129, 140, 121, 140, 152, 117, 135, 145, 127, 144, 157, 129, 148, 160, 143, 161, 172, 149, 167, 180, 155, 174, 186, 153, 170, 184, 149, 169, 182, 153, 172, 184, 158, 176, 186, 160, 178, 188, + 168, 185, 195, 175, 193, 202, 181, 197, 207, 177, 195, 204, 186, 204, 212, 191, 208, 217, 194, 212, 220, 198, 215, 224, 199, 215, 225, 203, 220, 228, 208, 225, 234, 205, 221, 233, 206, 222, 233, 209, 225, 237, 209, 226, 236, 208, 224, 236, 202, 219, 231, 196, 213, 224, 186, 203, 215, 190, 207, 219, 186, 203, 215, + 184, 201, 214, 178, 196, 207, 190, 208, 219, 190, 207, 218, 189, 207, 217, 183, 200, 212, 182, 200, 212, 177, 195, 206, 174, 191, 203, 171, 190, 202, 180, 198, 209, 197, 215, 223, 203, 220, 229, 208, 224, 235, 214, 230, 243, 210, 226, 238, 213, 228, 240, 219, 234, 247, 221, 237, 247, 224, 240, 248, 224, 240, 250, + 234, 250, 252, 229, 243, 253, 227, 244, 252, 232, 249, 253, 233, 247, 255, 227, 244, 250, 228, 242, 252, 223, 239, 247, 223, 238, 249, 228, 244, 252, 224, 239, 247, 226, 242, 250, 231, 248, 253, 227, 244, 252, 230, 247, 253, 233, 252, 254, 233, 254, 253, 233, 252, 255, 231, 251, 254, 235, 254, 253, 235, 254, 254, + 232, 252, 254, 234, 251, 254, 231, 250, 253, 232, 250, 253, 228, 242, 253, 227, 242, 251, 220, 236, 247, 230, 243, 252, 233, 249, 254, 220, 236, 248, 217, 232, 245, 222, 237, 247, 218, 230, 243, 224, 237, 246, 211, 226, 238, 218, 231, 243, 200, 214, 228, 192, 205, 221, 146, 161, 179, 174, 189, 203, 201, 216, 227, + 189, 202, 216, 140, 154, 172, 158, 173, 188, 189, 205, 217, 228, 240, 249, 228, 241, 249, 238, 249, 254, 231, 243, 249, 236, 249, 252, 229, 242, 250, 230, 244, 250, 213, 227, 240, 238, 250, 254, 235, 248, 253, 223, 237, 247, 224, 237, 247, 233, 244, 253, 232, 246, 253, 235, 249, 254, 237, 252, 254, 240, 252, 255, + 238, 252, 254, 250, 255, 254, 252, 255, 255, 246, 254, 254, 246, 255, 254, 249, 254, 254, 250, 255, 254, 252, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 245, 253, 254, 170, 205, 230, 151, 196, 229, 125, 179, 219, 112, 171, 214, 129, 187, 229, 109, 173, 216, 126, 189, 233, + 120, 179, 226, 108, 166, 211, 93, 139, 195, 73, 102, 163, 137, 165, 219, 159, 190, 236, 208, 234, 255, 235, 255, 254, 251, 255, 254, 254, 255, 255, 255, 255, 255, 253, 255, 255, 251, 255, 254, 252, 255, 255, 249, 255, 254, 252, 254, 254, 252, 254, 254, 250, 254, 254, 248, 255, 254, 244, 254, 253, 243, 254, 254, + 242, 254, 254, 246, 254, 254, 251, 255, 254, 243, 255, 255, 240, 255, 254, 248, 254, 255, 246, 255, 254, 239, 254, 254, 239, 253, 254, 236, 252, 254, 233, 251, 253, 232, 248, 254, 229, 243, 253, 226, 240, 252, 220, 237, 247, 216, 232, 244, 212, 228, 240, 203, 220, 230, 199, 216, 226, 193, 209, 222, 188, 205, 215, + 178, 196, 207, 166, 183, 195, 154, 172, 183, 141, 158, 171, 122, 139, 152, 112, 128, 140, 93, 109, 122, 66, 78, 88, 41, 51, 59, 13, 18, 25, 7, 10, 14, 1, 2, 5, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 91, 115, 137, 88, 113, 133, 89, 113, 132, 89, 113, 132, 91, 117, 134, 95, 120, 137, 100, 125, 141, 103, 127, 143, 104, 127, 143, 107, 130, 145, 104, 129, 143, 104, 128, 140, 100, 125, 138, 103, 128, 141, + 108, 130, 145, 105, 128, 140, 116, 137, 151, 130, 150, 162, 135, 154, 167, 137, 156, 169, 140, 159, 172, 149, 168, 181, 152, 171, 184, 154, 172, 185, 154, 172, 185, 153, 172, 184, 157, 175, 186, 155, 173, 184, 161, 179, 189, 163, 180, 191, 166, 183, 194, 171, 189, 198, 174, 190, 201, 175, 193, 203, 185, 202, 211, + 195, 212, 221, 196, 212, 223, 201, 219, 227, 200, 217, 225, 202, 219, 228, 207, 223, 233, 210, 227, 237, 213, 230, 239, 213, 229, 239, 204, 221, 233, 205, 221, 233, 193, 211, 221, 182, 199, 211, 182, 200, 213, 172, 190, 203, 175, 193, 204, 186, 203, 214, 187, 204, 216, 191, 207, 219, 180, 198, 210, 178, 196, 208, + 171, 188, 201, 173, 190, 203, 170, 188, 201, 168, 185, 199, 180, 197, 208, 192, 210, 220, 194, 211, 222, 196, 213, 224, 198, 215, 227, 206, 223, 234, 214, 231, 241, 220, 237, 249, 230, 246, 253, 230, 246, 253, 235, 250, 254, 238, 253, 254, 226, 243, 251, 229, 245, 253, 231, 246, 254, 230, 246, 252, 231, 248, 253, + 223, 237, 248, 229, 245, 253, 218, 234, 243, 226, 241, 249, 227, 241, 250, 228, 244, 252, 228, 244, 252, 219, 235, 246, 227, 244, 253, 234, 250, 255, 229, 245, 254, 232, 249, 254, 234, 252, 254, 237, 253, 253, 236, 254, 254, 234, 252, 254, 240, 252, 253, 248, 254, 254, 248, 254, 254, 244, 253, 254, 237, 249, 253, + 250, 254, 254, 237, 251, 252, 224, 238, 248, 221, 236, 248, 205, 219, 234, 223, 234, 245, 227, 239, 248, 226, 239, 247, 215, 228, 239, 198, 214, 227, 185, 200, 215, 138, 153, 170, 218, 234, 243, 212, 228, 237, 199, 212, 225, 157, 173, 187, 186, 202, 215, 190, 206, 219, 210, 223, 234, 226, 239, 249, 237, 249, 253, + 224, 237, 245, 225, 240, 247, 234, 246, 253, 231, 243, 249, 230, 243, 251, 233, 244, 252, 234, 247, 252, 221, 234, 244, 222, 236, 246, 229, 241, 252, 228, 241, 251, 231, 244, 251, 239, 252, 254, 240, 254, 253, 240, 253, 253, 253, 255, 255, 254, 255, 255, 254, 255, 255, 254, 255, 255, 255, 254, 254, 254, 255, 255, + 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 207, 229, 241, 170, 202, 226, 145, 186, 215, 136, 185, 222, 136, 185, 219, 116, 170, 206, 123, 182, 219, 115, 169, 215, 83, 122, 175, 62, 89, 142, 124, 149, 203, 142, 168, 217, 185, 213, 246, 214, 236, 253, + 232, 254, 254, 244, 255, 254, 255, 255, 255, 252, 255, 254, 248, 254, 254, 246, 253, 253, 247, 254, 254, 250, 255, 254, 252, 255, 254, 253, 255, 255, 253, 255, 255, 253, 255, 255, 250, 255, 254, 246, 254, 253, 245, 255, 254, 251, 254, 254, 246, 254, 254, 241, 254, 255, 239, 255, 254, 250, 255, 254, 250, 255, 254, + 249, 255, 255, 247, 255, 254, 240, 254, 253, 235, 252, 253, 234, 249, 255, 232, 247, 254, 227, 242, 253, 221, 238, 247, 217, 233, 245, 214, 230, 242, 207, 223, 235, 203, 219, 232, 195, 211, 222, 189, 206, 216, 179, 195, 207, 169, 185, 196, 157, 174, 185, 138, 156, 167, 120, 138, 149, 100, 115, 126, 81, 96, 106, + 68, 79, 89, 44, 52, 61, 22, 29, 34, 10, 15, 20, 1, 2, 4, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 79, 104, 119, 81, 106, 122, 83, 108, 124, 83, 108, 123, 85, 111, 126, 91, 117, 131, 94, 121, 135, 101, 125, 139, 105, 128, 141, 104, 129, 144, 112, 135, 149, 112, 137, 151, 110, 136, 150, 110, 135, 150, 108, 133, 147, 110, 134, 149, 114, 137, 150, 114, 137, 152, 122, 143, 159, 136, 155, 170, 142, 161, 175, + 148, 166, 179, 147, 166, 181, 147, 167, 181, 147, 165, 179, 150, 169, 181, 159, 176, 188, 158, 177, 187, 155, 173, 184, 167, 185, 194, 171, 187, 199, 169, 187, 196, 173, 191, 201, 174, 192, 200, 186, 203, 213, 191, 208, 217, 192, 208, 219, 197, 214, 222, 199, 217, 225, 201, 218, 227, 207, 224, 233, 211, 227, 239, + 213, 229, 241, 212, 229, 241, 213, 230, 241, 209, 226, 237, 201, 218, 229, 193, 210, 222, 182, 200, 212, 171, 189, 202, 171, 189, 201, 182, 200, 212, 182, 200, 211, 184, 202, 213, 177, 194, 206, 186, 204, 215, 180, 197, 209, 183, 200, 212, 178, 196, 209, 171, 190, 204, 167, 185, 198, 177, 195, 207, 197, 215, 225, + 202, 220, 229, 196, 213, 225, 200, 218, 229, 213, 230, 242, 217, 233, 245, 217, 234, 245, 224, 240, 250, 226, 242, 251, 235, 251, 253, 233, 249, 254, 231, 245, 253, 236, 252, 254, 233, 248, 253, 231, 247, 254, 228, 244, 251, 224, 239, 247, 217, 231, 243, 212, 229, 239, 215, 231, 240, 225, 241, 249, 228, 243, 251, + 224, 241, 250, 232, 248, 254, 232, 248, 253, 232, 248, 253, 237, 251, 254, 238, 252, 253, 237, 253, 254, 240, 253, 254, 245, 254, 254, 248, 254, 254, 247, 254, 253, 247, 253, 254, 240, 251, 254, 239, 250, 251, 244, 252, 253, 234, 249, 253, 232, 244, 250, 237, 250, 251, 236, 248, 252, 226, 240, 248, 227, 240, 247, + 224, 237, 245, 225, 238, 246, 203, 218, 228, 191, 206, 220, 165, 180, 195, 208, 222, 233, 215, 231, 239, 214, 226, 238, 183, 200, 212, 186, 202, 215, 196, 211, 222, 200, 215, 227, 221, 234, 245, 230, 241, 250, 231, 244, 251, 220, 234, 243, 235, 248, 252, 222, 235, 244, 240, 252, 255, 233, 246, 254, 225, 238, 248, + 221, 235, 244, 225, 238, 247, 229, 242, 251, 232, 245, 252, 233, 245, 252, 238, 251, 253, 242, 254, 255, 240, 253, 254, 251, 255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, + 230, 246, 249, 174, 199, 219, 151, 182, 200, 144, 182, 205, 130, 172, 201, 120, 157, 180, 106, 152, 187, 78, 114, 155, 60, 81, 125, 99, 121, 174, 131, 156, 203, 169, 193, 230, 207, 230, 253, 227, 245, 253, 234, 251, 253, 241, 254, 253, 248, 254, 254, 249, 255, 254, 243, 254, 253, 249, 254, 254, 245, 255, 254, + 250, 254, 255, 253, 255, 255, 252, 255, 255, 252, 255, 255, 251, 255, 255, 250, 255, 254, 248, 255, 254, 254, 254, 254, 246, 254, 254, 241, 254, 254, 241, 255, 255, 241, 253, 254, 246, 255, 254, 243, 255, 254, 241, 255, 254, 238, 253, 254, 235, 250, 253, 234, 249, 254, 231, 247, 254, 228, 245, 252, 224, 239, 251, + 225, 238, 250, 221, 238, 249, 219, 234, 246, 213, 228, 240, 207, 223, 234, 197, 214, 223, 189, 206, 215, 179, 195, 207, 166, 181, 192, 143, 160, 172, 123, 140, 151, 94, 109, 121, 78, 88, 100, 59, 69, 77, 49, 57, 66, 43, 51, 59, 26, 36, 40, 15, 23, 29, 5, 7, 10, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 100, 113, 82, 106, 120, 87, 110, 124, 93, 117, 130, 96, 120, 133, 100, 123, 137, 99, 123, 136, + 104, 128, 140, 104, 130, 142, 104, 128, 140, 107, 130, 142, 102, 127, 142, 103, 129, 142, 104, 130, 144, 102, 128, 143, 102, 128, 142, 105, 129, 144, 114, 137, 152, 122, 143, 159, 128, 148, 164, 128, 149, 165, 135, 156, 171, 133, 154, 170, 140, 159, 174, 142, 161, 175, 138, 157, 171, 140, 158, 173, 135, 153, 167, + 137, 156, 168, 160, 177, 189, 164, 181, 191, 173, 190, 199, 174, 192, 200, 182, 198, 208, 187, 204, 213, 189, 206, 215, 190, 207, 216, 190, 207, 216, 195, 213, 221, 198, 215, 224, 202, 219, 228, 207, 224, 234, 208, 225, 234, 214, 232, 244, 214, 230, 241, 208, 225, 236, 203, 220, 232, 200, 218, 228, 187, 205, 216, + 186, 204, 214, 190, 208, 219, 182, 200, 211, 178, 196, 207, 183, 201, 212, 189, 207, 218, 185, 202, 213, 185, 204, 214, 181, 199, 210, 180, 198, 210, 184, 202, 213, 182, 200, 210, 180, 197, 209, 193, 211, 221, 202, 220, 230, 206, 222, 233, 217, 233, 245, 213, 230, 241, 221, 237, 249, 219, 235, 247, 229, 243, 252, + 235, 249, 254, 237, 251, 254, 235, 251, 254, 230, 246, 253, 235, 250, 254, 234, 249, 254, 235, 250, 254, 229, 245, 253, 232, 247, 254, 223, 238, 248, 218, 234, 244, 213, 230, 240, 217, 231, 242, 216, 231, 239, 226, 242, 250, 238, 252, 255, 239, 252, 253, 240, 253, 254, 229, 243, 252, 238, 253, 255, 238, 253, 254, + 236, 251, 254, 238, 253, 253, 250, 255, 254, 252, 255, 255, 251, 254, 254, 252, 254, 254, 237, 249, 253, 245, 254, 254, 238, 251, 252, 241, 253, 252, 241, 252, 253, 237, 249, 252, 234, 245, 250, 233, 244, 249, 239, 251, 253, 217, 229, 239, 208, 221, 231, 201, 216, 227, 173, 190, 202, 183, 199, 210, 208, 222, 234, + 220, 233, 242, 192, 207, 220, 198, 214, 224, 195, 212, 224, 206, 220, 232, 224, 236, 246, 225, 238, 248, 226, 238, 249, 224, 236, 246, 228, 241, 249, 225, 238, 247, 238, 251, 254, 233, 245, 253, 224, 236, 246, 219, 233, 244, 224, 235, 246, 228, 240, 250, 232, 244, 253, 238, 251, 254, 238, 249, 254, 239, 251, 253, + 243, 254, 253, 254, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 255, 255, 254, 254, 254, 246, 255, 254, 202, 220, 229, 171, 194, 207, 133, 162, 179, 112, 143, 168, 93, 124, 155, 73, 101, 137, + 60, 78, 117, 115, 137, 180, 134, 157, 200, 172, 195, 228, 208, 229, 251, 225, 243, 254, 233, 251, 254, 235, 253, 253, 236, 254, 254, 243, 254, 253, 246, 254, 254, 249, 254, 253, 251, 254, 254, 252, 254, 254, 248, 255, 254, 245, 255, 254, 246, 254, 254, 243, 254, 254, 242, 254, 254, 247, 255, 254, 247, 254, 254, + 247, 253, 254, 239, 251, 254, 241, 254, 254, 243, 254, 254, 249, 255, 254, 248, 255, 254, 242, 255, 254, 241, 254, 253, 239, 253, 254, 237, 252, 254, 236, 250, 254, 230, 245, 253, 229, 246, 252, 226, 242, 252, 227, 242, 252, 222, 238, 249, 219, 234, 245, 212, 229, 240, 207, 224, 232, 197, 213, 225, 187, 203, 214, + 169, 185, 197, 146, 162, 174, 118, 135, 147, 100, 115, 127, 82, 95, 106, 73, 84, 94, 64, 74, 83, 50, 57, 66, 33, 41, 47, 23, 30, 34, 11, 18, 23, 3, 4, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 91, 109, 120, 96, 115, 126, 93, 113, 125, 96, 117, 128, 100, 122, 132, 100, 121, 133, 107, 128, 140, 103, 125, 138, 107, 130, 142, 102, 126, 138, 105, 127, 139, 105, 129, 141, 99, 124, 138, 96, 122, 135, + 96, 120, 135, 93, 118, 132, 95, 119, 135, 106, 127, 143, 108, 128, 145, 120, 141, 156, 132, 152, 168, 135, 155, 169, 134, 153, 166, 139, 157, 171, 140, 159, 172, 136, 155, 167, 145, 162, 173, 153, 170, 181, 157, 175, 184, 166, 184, 195, 170, 186, 195, 173, 190, 199, 178, 195, 204, 183, 200, 209, 184, 201, 210, + 183, 200, 210, 183, 200, 211, 183, 201, 210, 191, 208, 217, 195, 212, 221, 201, 217, 226, 202, 219, 228, 207, 223, 234, 204, 222, 232, 205, 221, 233, 196, 214, 225, 187, 205, 216, 182, 199, 212, 182, 199, 211, 188, 206, 216, 189, 206, 217, 184, 201, 212, 178, 196, 207, 174, 192, 203, 183, 201, 213, 192, 210, 220, + 187, 206, 215, 189, 207, 217, 191, 208, 218, 192, 210, 221, 187, 205, 216, 179, 195, 208, 188, 207, 217, 197, 215, 226, 201, 220, 229, 211, 227, 237, 223, 240, 249, 224, 241, 248, 216, 233, 244, 213, 230, 242, 227, 242, 251, 236, 250, 253, 235, 250, 254, 234, 248, 254, 231, 245, 251, 236, 250, 255, 238, 253, 254, + 228, 245, 252, 222, 238, 249, 222, 237, 247, 221, 237, 248, 225, 240, 248, 217, 233, 245, 214, 230, 240, 219, 235, 243, 229, 243, 250, 236, 249, 253, 235, 248, 253, 234, 249, 254, 230, 245, 252, 239, 252, 255, 240, 253, 253, 239, 253, 253, 245, 254, 253, 245, 255, 254, 245, 255, 253, 252, 254, 254, 248, 255, 254, + 255, 254, 255, 252, 254, 254, 244, 253, 253, 250, 253, 254, 244, 253, 253, 244, 253, 253, 225, 238, 246, 222, 234, 240, 225, 236, 245, 212, 225, 235, 221, 234, 243, 198, 214, 225, 195, 209, 219, 196, 212, 222, 209, 225, 234, 211, 227, 235, 208, 222, 234, 193, 209, 220, 203, 218, 227, 228, 240, 250, 216, 229, 241, + 222, 235, 245, 228, 240, 250, 224, 236, 247, 230, 242, 252, 233, 248, 253, 230, 244, 253, 219, 234, 244, 223, 237, 248, 220, 232, 244, 226, 240, 250, 228, 241, 251, 240, 253, 254, 245, 255, 254, 239, 253, 254, 248, 254, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 254, 254, 239, 252, 255, 182, 201, 215, 117, 139, 160, 80, 97, 122, 74, 91, 120, 99, 116, 154, 142, 163, 202, 165, 186, 217, 195, 217, 240, 220, 238, 252, 228, 244, 254, 229, 245, 254, 233, 248, 254, + 234, 249, 254, 236, 253, 254, 246, 255, 254, 243, 253, 254, 252, 254, 254, 249, 255, 254, 244, 254, 254, 242, 254, 253, 241, 253, 254, 246, 254, 253, 243, 254, 254, 240, 253, 255, 239, 254, 253, 238, 251, 254, 234, 249, 254, 235, 247, 253, 243, 253, 254, 247, 255, 254, 243, 254, 254, 248, 255, 254, 245, 254, 254, + 242, 254, 254, 241, 255, 254, 240, 254, 253, 239, 253, 254, 236, 249, 254, 234, 248, 254, 228, 246, 253, 228, 243, 252, 225, 238, 251, 219, 236, 246, 215, 230, 241, 210, 225, 236, 201, 218, 227, 189, 206, 214, 171, 186, 195, 155, 170, 179, 130, 143, 153, 108, 122, 133, 95, 111, 120, 82, 95, 106, 73, 81, 90, + 50, 58, 65, 28, 34, 40, 5, 10, 13, 1, 1, 3, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, + 95, 113, 123, 101, 119, 130, 104, 122, 132, 99, 118, 128, 101, 119, 130, 99, 119, 130, 97, 118, 128, 95, 115, 127, 96, 116, 127, 92, 113, 124, 92, 113, 124, 93, 114, 126, 90, 111, 124, 84, 106, 118, 85, 107, 119, 90, 114, 127, 99, 121, 136, 102, 123, 138, 110, 128, 146, 115, 135, 151, 126, 146, 161, + 142, 160, 172, 144, 161, 173, 145, 162, 174, 149, 167, 179, 152, 170, 180, 158, 175, 184, 162, 179, 188, 162, 179, 188, 167, 185, 192, 171, 187, 197, 178, 196, 205, 178, 195, 204, 179, 196, 206, 180, 196, 207, 181, 198, 210, 175, 194, 204, 177, 194, 204, 185, 203, 211, 191, 208, 217, 198, 216, 225, 196, 215, 223, + 208, 224, 234, 206, 223, 234, 203, 221, 232, 201, 219, 230, 190, 207, 218, 185, 203, 214, 188, 205, 216, 189, 207, 219, 178, 196, 208, 174, 192, 205, 168, 185, 196, 177, 195, 206, 173, 191, 202, 182, 198, 210, 186, 204, 215, 178, 196, 208, 178, 196, 207, 181, 199, 210, 182, 200, 211, 189, 207, 217, 193, 211, 221, + 187, 205, 216, 198, 216, 227, 203, 221, 230, 211, 227, 238, 222, 238, 248, 219, 236, 248, 212, 229, 241, 212, 229, 241, 222, 237, 248, 229, 243, 252, 227, 242, 252, 234, 250, 254, 235, 249, 253, 241, 254, 254, 230, 245, 253, 227, 242, 251, 221, 235, 247, 222, 238, 248, 222, 237, 246, 215, 231, 242, 224, 240, 248, + 220, 238, 246, 215, 231, 241, 220, 235, 245, 229, 244, 252, 227, 243, 250, 230, 245, 253, 231, 245, 253, 233, 248, 254, 238, 252, 255, 240, 254, 253, 242, 254, 254, 252, 254, 254, 252, 255, 255, 249, 255, 253, 254, 255, 255, 254, 255, 255, 254, 255, 255, 253, 254, 255, 252, 253, 253, 251, 254, 254, 241, 252, 252, + 236, 250, 253, 228, 243, 250, 215, 227, 237, 217, 231, 240, 213, 226, 235, 185, 201, 209, 205, 222, 231, 207, 221, 231, 213, 228, 237, 209, 222, 232, 224, 236, 248, 216, 231, 240, 214, 227, 237, 226, 238, 248, 221, 234, 243, 227, 240, 248, 232, 244, 252, 229, 241, 250, 227, 240, 249, 222, 236, 246, 220, 234, 243, + 212, 227, 239, 217, 230, 243, 232, 245, 252, 232, 245, 252, 241, 253, 254, 243, 254, 254, 248, 254, 254, 248, 254, 254, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 239, 253, 254, 249, 255, 255, 236, 250, 255, 220, 235, 249, 210, 227, 244, 208, 225, 244, 211, 228, 246, 219, 237, 252, 230, 246, 255, 234, 251, 254, 232, 248, 252, 235, 251, 253, 242, 253, 254, 242, 254, 254, 239, 253, 254, 243, 254, 254, 247, 254, 254, 249, 255, 254, 238, 252, 253, 239, 252, 253, + 244, 254, 254, 243, 253, 253, 241, 253, 254, 239, 252, 254, 241, 252, 254, 241, 253, 254, 241, 252, 254, 245, 254, 254, 242, 255, 253, 244, 254, 254, 243, 255, 255, 243, 255, 254, 247, 255, 254, 248, 254, 254, 243, 254, 254, 241, 254, 254, 242, 255, 254, 238, 254, 253, 236, 251, 254, 237, 251, 255, 232, 247, 254, + 229, 246, 253, 224, 240, 250, 225, 239, 250, 219, 234, 243, 213, 229, 238, 208, 223, 232, 194, 211, 219, 182, 197, 205, 170, 183, 192, 143, 155, 164, 113, 125, 136, 85, 96, 104, 61, 71, 78, 40, 46, 54, 27, 32, 38, 17, 22, 28, 14, 18, 22, 3, 4, 6, 0, 1, 1, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 101, 117, 127, 99, 115, 127, 101, 116, 128, 99, 117, 126, 95, 111, 123, 94, 112, 123, 95, 113, 122, + 110, 128, 138, 109, 127, 137, 108, 126, 137, 100, 119, 130, 95, 113, 125, 89, 107, 119, 81, 100, 112, 86, 104, 116, 97, 116, 128, 101, 123, 133, 123, 141, 152, 128, 145, 158, 134, 153, 164, 136, 153, 165, 142, 160, 172, 145, 163, 174, 144, 162, 173, 149, 168, 179, 150, 167, 178, 151, 169, 178, 156, 173, 184, + 152, 172, 180, 152, 171, 180, 156, 173, 185, 162, 180, 190, 162, 180, 189, 166, 184, 194, 171, 190, 200, 177, 194, 204, 174, 193, 202, 181, 198, 209, 187, 204, 213, 186, 205, 213, 189, 208, 220, 195, 213, 221, 203, 221, 231, 200, 218, 229, 197, 215, 226, 197, 215, 226, 191, 208, 219, 191, 209, 219, 188, 206, 217, + 184, 203, 214, 178, 195, 207, 164, 182, 196, 167, 185, 198, 181, 199, 210, 177, 195, 207, 174, 192, 203, 186, 204, 216, 184, 201, 213, 183, 201, 211, 182, 201, 212, 179, 196, 209, 191, 209, 219, 201, 218, 228, 196, 214, 224, 198, 214, 226, 203, 221, 230, 210, 227, 239, 214, 230, 242, 211, 228, 239, 207, 224, 236, + 203, 220, 232, 213, 230, 241, 223, 238, 248, 227, 242, 252, 228, 241, 252, 232, 247, 253, 242, 252, 254, 239, 251, 252, 230, 246, 252, 227, 242, 251, 219, 234, 245, 224, 240, 250, 218, 234, 246, 231, 246, 252, 226, 242, 249, 225, 239, 248, 220, 234, 244, 229, 246, 252, 229, 245, 252, 225, 241, 248, 240, 254, 254, + 234, 249, 254, 237, 250, 254, 241, 253, 253, 243, 254, 253, 243, 255, 254, 252, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 254, 255, 255, 252, 254, 254, 249, 254, 254, 246, 254, 253, 237, 249, 253, 231, 245, 249, 225, 239, 243, 219, 234, 243, 210, 223, 232, 220, 233, 241, 206, 220, 229, + 221, 234, 244, 221, 237, 244, 210, 224, 232, 224, 235, 245, 212, 225, 237, 212, 226, 237, 228, 242, 250, 220, 233, 244, 220, 234, 245, 238, 250, 254, 225, 238, 248, 219, 235, 244, 231, 243, 251, 223, 236, 245, 205, 220, 230, 213, 227, 241, 230, 244, 252, 232, 245, 253, 242, 253, 254, 246, 255, 254, 250, 255, 254, + 250, 255, 254, 254, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 254, 255, 255, 250, 255, 254, 241, 253, 254, 252, 254, 254, 254, 255, 254, 252, 255, 255, 251, 255, 255, 246, 255, 254, + 246, 255, 255, 243, 252, 254, 235, 249, 252, 236, 252, 253, 251, 254, 253, 253, 255, 254, 254, 255, 255, 246, 254, 253, 244, 253, 253, 247, 255, 253, 252, 255, 254, 253, 254, 254, 243, 253, 254, 246, 255, 254, 254, 255, 255, 251, 254, 254, 248, 254, 254, 251, 254, 254, 252, 254, 254, 251, 255, 254, 248, 255, 254, + 242, 254, 253, 239, 253, 254, 240, 254, 254, 241, 254, 254, 243, 255, 255, 244, 254, 254, 247, 254, 254, 246, 254, 254, 245, 254, 254, 238, 253, 254, 238, 253, 254, 235, 251, 253, 235, 250, 254, 233, 248, 254, 229, 245, 253, 229, 244, 253, 227, 243, 251, 222, 236, 245, 216, 231, 240, 211, 225, 234, 199, 217, 224, + 189, 203, 213, 169, 185, 193, 145, 158, 167, 109, 120, 130, 84, 95, 103, 61, 69, 76, 38, 44, 48, 24, 29, 34, 20, 25, 29, 17, 22, 27, 13, 16, 21, 2, 4, 5, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 92, 110, 118, 97, 113, 125, 96, 112, 123, 98, 115, 126, 97, 113, 125, 96, 113, 125, 97, 116, 125, 107, 125, 136, 106, 124, 135, 103, 121, 132, 98, 117, 128, 94, 112, 123, 92, 109, 120, 85, 104, 114, + 85, 102, 113, 106, 124, 136, 111, 130, 141, 129, 148, 158, 139, 155, 166, 147, 165, 174, 144, 163, 171, 143, 161, 173, 148, 166, 176, 148, 166, 176, 140, 158, 170, 134, 152, 165, 140, 159, 170, 143, 161, 172, 143, 161, 173, 144, 162, 174, 150, 168, 178, 151, 169, 180, 151, 169, 180, 155, 173, 184, 163, 181, 192, + 171, 189, 200, 170, 188, 199, 170, 188, 200, 174, 191, 203, 185, 203, 213, 180, 198, 209, 182, 201, 210, 189, 208, 217, 195, 212, 222, 187, 205, 215, 188, 206, 217, 188, 206, 217, 187, 204, 216, 186, 204, 215, 186, 204, 215, 173, 190, 203, 170, 188, 199, 177, 195, 206, 187, 203, 213, 189, 207, 217, 199, 216, 225, + 175, 193, 205, 177, 195, 206, 180, 198, 209, 198, 215, 225, 194, 211, 222, 186, 203, 215, 186, 203, 215, 195, 212, 223, 200, 217, 229, 201, 220, 230, 206, 223, 235, 206, 224, 235, 204, 222, 232, 205, 223, 234, 201, 219, 229, 206, 222, 235, 215, 232, 244, 228, 242, 252, 223, 239, 248, 221, 236, 248, 216, 231, 242, + 211, 227, 235, 233, 248, 253, 229, 245, 253, 231, 247, 253, 226, 241, 251, 226, 242, 249, 220, 236, 247, 220, 236, 246, 225, 240, 248, 219, 235, 245, 230, 244, 253, 235, 249, 254, 228, 244, 252, 239, 252, 254, 237, 252, 254, 234, 248, 254, 237, 252, 253, 245, 254, 254, 249, 254, 254, 250, 254, 254, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 255, 254, 254, 255, 255, 250, 255, 254, 235, 249, 252, 245, 255, 254, 241, 252, 253, 219, 232, 241, 220, 233, 239, 223, 236, 244, 213, 228, 236, 229, 244, 250, 239, 250, 253, 223, 239, 247, 227, 240, 249, 227, 239, 249, 219, 234, 242, 232, 244, 252, + 222, 236, 247, 222, 236, 246, 233, 247, 252, 221, 236, 248, 222, 236, 248, 230, 243, 251, 225, 239, 247, 204, 219, 231, 213, 229, 241, 231, 243, 252, 232, 244, 252, 240, 252, 253, 249, 255, 254, 254, 255, 255, 251, 255, 254, 253, 255, 255, 253, 255, 255, 253, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 251, 255, 254, 241, 254, 254, 239, 251, 254, 254, 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 254, 254, 254, 253, 255, 254, 252, 254, 255, 254, 255, 254, 254, 255, 255, 253, 255, 255, + 253, 255, 255, 253, 254, 254, 254, 255, 255, 255, 255, 255, 251, 254, 254, 250, 255, 255, 251, 255, 255, 254, 255, 255, 252, 255, 255, 252, 255, 254, 254, 255, 255, 255, 255, 255, 254, 255, 255, 254, 255, 255, 245, 254, 254, 242, 254, 253, 240, 254, 254, 240, 254, 253, 241, 255, 254, 243, 254, 254, 248, 255, 254, + 249, 254, 253, 242, 254, 254, 238, 254, 253, 241, 254, 253, 239, 253, 254, 237, 251, 254, 232, 248, 254, 232, 246, 253, 230, 246, 253, 227, 242, 251, 225, 237, 247, 216, 231, 240, 214, 229, 239, 207, 223, 231, 195, 211, 218, 178, 193, 200, 159, 171, 180, 124, 136, 145, 91, 101, 110, 54, 62, 69, 36, 43, 49, + 18, 24, 28, 6, 10, 13, 6, 10, 14, 2, 5, 8, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, + 78, 93, 103, 81, 96, 105, 89, 105, 117, 93, 108, 120, 98, 114, 125, 102, 119, 130, 105, 122, 134, 107, 125, 136, 108, 125, 138, 101, 119, 130, 92, 110, 121, 89, 107, 118, 90, 107, 119, 93, 112, 122, 110, 127, 138, 104, 122, 133, 118, 134, 145, 110, 129, 139, 121, 138, 150, 138, 156, 166, 139, 158, 167, + 137, 156, 166, 135, 152, 165, 147, 165, 174, 139, 157, 169, 140, 158, 171, 140, 158, 170, 139, 157, 168, 137, 156, 168, 142, 160, 172, 152, 169, 180, 154, 173, 183, 163, 181, 190, 167, 186, 194, 165, 182, 194, 169, 188, 198, 180, 197, 207, 185, 203, 214, 184, 202, 211, 191, 209, 220, 186, 204, 214, 178, 196, 208, + 174, 192, 204, 172, 190, 202, 167, 186, 196, 179, 198, 209, 181, 199, 210, 187, 204, 215, 187, 204, 213, 179, 197, 209, 178, 197, 206, 190, 206, 215, 186, 204, 213, 180, 198, 208, 180, 198, 209, 181, 200, 209, 172, 190, 202, 183, 201, 212, 177, 195, 206, 189, 206, 216, 202, 219, 229, 194, 212, 223, 190, 208, 220, + 177, 194, 206, 191, 209, 220, 196, 215, 224, 202, 220, 231, 210, 226, 237, 208, 225, 236, 211, 226, 239, 213, 229, 241, 210, 226, 238, 209, 225, 236, 217, 232, 245, 226, 242, 250, 228, 243, 252, 219, 236, 247, 207, 223, 235, 220, 237, 247, 221, 236, 248, 230, 247, 252, 232, 247, 254, 230, 245, 253, 231, 247, 253, + 218, 232, 244, 218, 235, 244, 226, 241, 250, 224, 240, 248, 239, 252, 255, 228, 243, 251, 236, 251, 254, 241, 254, 254, 242, 254, 254, 243, 254, 253, 251, 254, 254, 250, 255, 255, 246, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, + 250, 255, 253, 250, 254, 254, 243, 253, 253, 233, 243, 250, 235, 250, 252, 238, 250, 251, 216, 232, 240, 231, 243, 249, 240, 251, 254, 227, 240, 248, 238, 250, 254, 237, 249, 253, 235, 247, 251, 239, 252, 254, 226, 238, 248, 233, 246, 253, 232, 247, 253, 220, 233, 244, 224, 238, 249, 221, 235, 247, 221, 234, 246, + 208, 222, 234, 212, 227, 239, 222, 234, 246, 234, 246, 253, 238, 252, 253, 249, 254, 254, 254, 254, 254, 254, 255, 255, 254, 255, 255, 250, 255, 254, 248, 254, 254, 251, 255, 254, 254, 255, 254, 255, 255, 255, 254, 255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 249, 254, 254, 242, 254, 254, 235, 247, 253, 252, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 255, 254, 255, 255, 255, 255, 255, 253, 255, 255, 254, 254, 254, 253, 255, 255, 251, 255, 254, 247, 253, 253, 254, 255, 255, 254, 255, 255, + 253, 255, 255, 249, 255, 254, 251, 255, 255, 250, 255, 255, 250, 255, 254, 251, 255, 255, 253, 255, 255, 245, 254, 254, 240, 253, 254, 240, 253, 254, 242, 254, 254, 243, 254, 254, 243, 255, 254, 246, 254, 254, 245, 255, 255, 241, 254, 254, 239, 253, 253, 238, 253, 255, 237, 252, 255, 235, 250, 254, 237, 250, 254, + 233, 247, 253, 229, 245, 252, 229, 241, 251, 228, 240, 250, 223, 236, 246, 220, 234, 243, 214, 227, 237, 202, 218, 224, 191, 205, 213, 173, 186, 194, 137, 148, 157, 111, 121, 131, 73, 80, 87, 47, 53, 61, 21, 26, 32, 12, 15, 19, 16, 22, 26, 3, 5, 6, 2, 2, 3, 1, 1, 1, 0, 1, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 73, 88, 96, 79, 94, 104, 82, 97, 106, 88, 104, 114, 92, 109, 120, 90, 107, 117, 93, 109, 121, + 95, 111, 123, 103, 121, 132, 103, 121, 132, 95, 113, 124, 93, 111, 122, 96, 113, 124, 97, 116, 126, 96, 112, 124, 109, 126, 137, 111, 128, 139, 110, 128, 139, 122, 140, 151, 134, 152, 163, 131, 150, 161, 131, 148, 159, 134, 153, 164, 136, 155, 166, 142, 160, 171, 152, 170, 181, 143, 160, 173, 142, 159, 172, + 145, 163, 176, 144, 162, 174, 150, 168, 179, 154, 171, 183, 157, 175, 185, 165, 183, 193, 166, 184, 195, 174, 192, 201, 184, 201, 210, 185, 202, 214, 180, 198, 208, 179, 197, 208, 181, 200, 209, 183, 201, 212, 177, 194, 207, 173, 192, 203, 176, 194, 206, 176, 194, 205, 169, 188, 200, 176, 194, 205, 183, 202, 212, + 170, 187, 200, 176, 194, 204, 182, 199, 209, 189, 205, 216, 183, 202, 212, 182, 199, 210, 180, 198, 209, 178, 196, 207, 184, 202, 213, 179, 197, 208, 188, 205, 216, 203, 219, 231, 196, 213, 225, 195, 213, 224, 194, 212, 223, 200, 217, 228, 197, 216, 226, 205, 221, 232, 206, 223, 234, 217, 234, 243, 222, 238, 247, + 220, 236, 246, 217, 232, 244, 217, 234, 244, 211, 228, 240, 213, 230, 238, 222, 237, 248, 224, 239, 250, 224, 238, 249, 225, 243, 251, 225, 241, 250, 224, 240, 250, 225, 241, 249, 231, 245, 253, 236, 251, 254, 227, 242, 250, 215, 232, 242, 222, 237, 248, 230, 245, 252, 237, 251, 254, 233, 248, 253, 238, 250, 254, + 237, 252, 254, 240, 253, 254, 248, 255, 254, 253, 255, 255, 254, 254, 254, 251, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 252, 255, 254, 249, 254, 254, 251, 254, 254, 243, 253, 253, 248, 255, 255, 235, 249, 251, 241, 253, 253, 222, 234, 242, + 231, 245, 252, 238, 252, 252, 227, 239, 247, 237, 250, 253, 234, 246, 253, 227, 240, 245, 236, 249, 253, 234, 248, 255, 232, 244, 252, 233, 246, 252, 225, 238, 248, 217, 230, 242, 226, 242, 250, 224, 237, 248, 207, 222, 234, 205, 221, 233, 207, 222, 234, 220, 235, 246, 235, 248, 254, 241, 253, 254, 246, 253, 254, + 251, 255, 254, 247, 254, 255, 246, 254, 253, 248, 254, 254, 239, 253, 253, 249, 254, 254, 251, 254, 254, 251, 255, 255, 252, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 255, 254, 241, 252, 254, 234, 246, 253, 248, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 254, 254, 252, 254, 254, 253, 254, 254, 253, 255, 255, 254, 255, 255, 254, 255, 255, 253, 254, 254, 251, 255, 255, 253, 255, 255, 254, 255, 255, 254, 255, 255, 254, 255, 255, 253, 255, 255, 250, 255, 254, 249, 255, 254, 254, 254, 254, 255, 255, 255, 250, 255, 254, + 243, 255, 253, 242, 255, 254, 244, 254, 254, 238, 252, 254, 240, 253, 254, 242, 253, 253, 241, 254, 254, 242, 255, 254, 239, 253, 255, 239, 254, 255, 238, 252, 254, 237, 251, 255, 236, 251, 254, 232, 247, 254, 231, 247, 254, 232, 246, 253, 230, 243, 252, 229, 240, 250, 226, 238, 248, 223, 238, 246, 219, 232, 241, + 207, 220, 228, 199, 213, 221, 190, 203, 211, 174, 186, 194, 155, 166, 176, 122, 135, 145, 81, 90, 98, 66, 75, 83, 56, 64, 73, 41, 50, 58, 34, 41, 46, 16, 21, 25, 4, 6, 7, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 85, 100, 109, 88, 102, 114, 83, 99, 108, 83, 99, 110, 82, 99, 108, 88, 106, 115, 89, 105, 116, 93, 109, 121, 99, 116, 128, 93, 111, 121, 97, 115, 126, 87, 103, 115, 96, 112, 124, 94, 112, 123, + 101, 118, 129, 112, 128, 140, 107, 125, 135, 116, 133, 144, 132, 151, 160, 125, 144, 154, 132, 150, 161, 136, 154, 165, 139, 157, 168, 135, 154, 165, 138, 155, 167, 135, 153, 167, 134, 153, 166, 134, 151, 164, 129, 148, 163, 128, 147, 162, 138, 157, 172, 133, 151, 166, 129, 148, 163, 136, 154, 170, 150, 170, 180, + 167, 186, 195, 172, 190, 200, 167, 185, 197, 170, 188, 199, 174, 191, 203, 184, 203, 211, 195, 213, 222, 194, 211, 221, 184, 202, 213, 183, 201, 212, 181, 198, 210, 172, 191, 202, 175, 193, 204, 173, 192, 203, 170, 188, 199, 172, 191, 201, 175, 193, 205, 176, 193, 205, 165, 182, 195, 168, 185, 197, 172, 189, 202, + 176, 194, 205, 185, 203, 215, 189, 206, 217, 195, 211, 223, 206, 224, 234, 214, 231, 242, 200, 218, 227, 191, 209, 221, 194, 212, 222, 188, 206, 218, 178, 194, 208, 186, 204, 216, 202, 219, 228, 215, 233, 242, 223, 239, 247, 219, 235, 245, 210, 227, 238, 212, 229, 240, 214, 230, 242, 215, 231, 243, 219, 236, 245, + 224, 240, 249, 222, 238, 249, 228, 243, 252, 219, 236, 248, 225, 239, 248, 224, 240, 248, 230, 244, 252, 240, 254, 254, 227, 243, 248, 220, 235, 247, 238, 252, 254, 235, 250, 253, 237, 252, 254, 240, 252, 253, 240, 253, 254, 237, 252, 254, 238, 252, 253, 248, 254, 254, 247, 254, 254, 252, 254, 254, 254, 254, 254, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 254, 254, 246, 254, 254, 249, 255, 254, 243, 254, 253, 244, 254, 254, 239, 254, 253, 237, 249, 252, 237, 248, 252, 250, 255, 255, 232, 245, 250, 248, 255, 255, 246, 253, 254, 242, 252, 254, 240, 252, 254, 218, 232, 242, 226, 240, 250, + 232, 246, 253, 225, 237, 249, 223, 236, 245, 221, 235, 244, 217, 233, 240, 226, 240, 250, 221, 234, 246, 209, 224, 236, 213, 229, 240, 207, 223, 234, 200, 215, 228, 223, 236, 248, 230, 243, 252, 228, 241, 251, 242, 253, 254, 242, 254, 253, 244, 253, 254, 242, 253, 254, 240, 253, 254, 242, 254, 255, 249, 255, 254, + 247, 255, 254, 244, 255, 254, 249, 254, 254, 250, 255, 255, 251, 255, 255, 254, 255, 255, 254, 254, 254, 250, 255, 254, 237, 251, 253, 230, 241, 248, 236, 247, 253, 252, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 250, 254, 254, 251, 254, 254, 252, 254, 254, 249, 254, 254, + 251, 254, 254, 250, 255, 255, 252, 254, 255, 245, 255, 253, 248, 254, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255, 253, 255, 255, 253, 255, 255, 254, 255, 255, 253, 255, 255, 249, 254, 254, 243, 253, 254, 245, 254, 255, 242, 253, 254, 241, 254, 253, 239, 252, 254, 242, 253, 254, 245, 255, 255, 244, 255, 255, + 244, 255, 255, 247, 254, 254, 243, 254, 254, 240, 254, 254, 239, 253, 255, 237, 252, 254, 233, 246, 254, 233, 246, 254, 234, 246, 254, 230, 243, 251, 226, 241, 249, 225, 238, 247, 221, 234, 243, 219, 233, 242, 210, 226, 233, 202, 214, 222, 195, 208, 216, 182, 196, 204, 173, 184, 192, 151, 164, 173, 113, 127, 135, + 103, 115, 124, 93, 104, 113, 67, 76, 85, 52, 60, 66, 40, 47, 54, 22, 29, 33, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 80, 96, 106, 82, 98, 109, 85, 101, 112, 81, 97, 108, 80, 95, 104, 79, 96, 105, 85, 102, 112, 93, 111, 122, 89, 106, 117, 87, 104, 115, 83, 100, 111, 87, 103, 114, 91, 107, 119, 85, 102, 113, 105, 123, 134, 93, 111, 122, 111, 128, 139, 121, 138, 149, 128, 146, 157, 131, 149, 160, 132, 150, 161, + 132, 150, 161, 139, 157, 168, 141, 159, 170, 143, 161, 173, 140, 159, 173, 148, 166, 179, 147, 164, 177, 143, 161, 174, 147, 165, 179, 136, 155, 170, 138, 156, 170, 140, 158, 173, 131, 150, 165, 142, 161, 174, 154, 172, 184, 152, 170, 181, 160, 178, 190, 162, 179, 191, 167, 185, 196, 180, 199, 209, 189, 206, 215, + 189, 206, 216, 188, 206, 215, 183, 201, 211, 177, 194, 206, 172, 190, 202, 172, 189, 201, 169, 186, 198, 167, 185, 196, 169, 187, 198, 177, 195, 206, 167, 184, 197, 168, 186, 198, 176, 194, 204, 176, 194, 205, 179, 196, 207, 181, 198, 210, 180, 198, 209, 198, 215, 224, 205, 222, 232, 208, 224, 236, 211, 228, 238, + 209, 226, 237, 200, 218, 229, 190, 207, 219, 168, 186, 202, 175, 193, 206, 194, 212, 222, 199, 217, 228, 205, 222, 234, 216, 233, 244, 212, 230, 239, 208, 225, 236, 219, 234, 246, 213, 229, 242, 219, 236, 245, 224, 241, 249, 224, 240, 250, 232, 246, 253, 225, 241, 251, 219, 234, 246, 231, 245, 253, 228, 244, 252, + 233, 248, 254, 240, 253, 254, 229, 245, 253, 230, 243, 251, 242, 254, 254, 240, 253, 254, 238, 252, 253, 252, 255, 255, 248, 254, 253, 239, 252, 254, 242, 255, 253, 243, 254, 253, 249, 254, 254, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 252, 255, 255, 242, 254, 254, 240, 253, 253, 238, 252, 255, 235, 248, 251, 239, 251, 254, 241, 252, 253, 238, 250, 254, 249, 254, 255, 244, 254, 253, 255, 255, 254, 252, 255, 254, 234, 248, 252, 234, 246, 253, 234, 247, 254, 227, 241, 248, 209, 224, 234, 224, 238, 247, 222, 237, 246, 221, 235, 245, 209, 224, 237, + 211, 227, 238, 225, 241, 250, 204, 220, 233, 199, 215, 228, 205, 221, 234, 223, 238, 249, 224, 236, 249, 235, 247, 253, 239, 251, 254, 234, 247, 253, 240, 252, 253, 238, 251, 253, 236, 248, 252, 240, 253, 254, 241, 253, 254, 241, 253, 253, 237, 250, 254, 237, 251, 252, 242, 253, 254, 249, 254, 254, 248, 254, 254, + 243, 255, 254, 236, 247, 253, 228, 239, 247, 231, 242, 249, 244, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 252, 254, 254, 251, 255, 255, 251, 254, 254, 247, 255, 254, 239, 253, 253, 243, 254, 254, 248, 255, 254, 253, 254, 254, 250, 255, 254, 252, 255, 255, + 253, 254, 254, 252, 255, 255, 252, 255, 255, 253, 255, 255, 249, 255, 254, 249, 254, 254, 252, 255, 255, 250, 254, 254, 247, 254, 254, 242, 255, 255, 241, 253, 254, 239, 252, 254, 241, 254, 254, 240, 253, 253, 242, 255, 254, 243, 254, 254, 239, 253, 255, 238, 251, 253, 237, 252, 254, 236, 252, 254, 233, 247, 255, + 232, 245, 254, 232, 244, 253, 230, 242, 251, 230, 242, 250, 227, 239, 247, 222, 233, 243, 219, 232, 243, 216, 229, 238, 208, 222, 229, 200, 215, 222, 192, 205, 213, 180, 191, 201, 170, 180, 189, 144, 155, 164, 112, 124, 133, 96, 107, 115, 77, 86, 95, 58, 67, 74, 51, 56, 63, 36, 43, 50, 15, 19, 22, + 4, 4, 4, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 69, 85, 93, 73, 88, 96, 96, 112, 122, 97, 113, 124, 80, 96, 106, 96, 114, 124, 95, 113, 123, + 95, 112, 123, 87, 104, 115, 81, 98, 110, 88, 105, 116, 84, 102, 112, 84, 102, 112, 91, 109, 120, 87, 105, 116, 104, 121, 133, 115, 133, 145, 122, 140, 151, 128, 146, 157, 128, 146, 157, 135, 153, 164, 134, 152, 163, 142, 160, 171, 150, 168, 179, 154, 172, 184, 160, 178, 187, 157, 176, 186, 149, 167, 180, + 152, 170, 182, 150, 168, 180, 141, 160, 174, 140, 160, 173, 131, 151, 166, 126, 147, 162, 126, 144, 159, 116, 135, 151, 124, 144, 159, 114, 135, 150, 117, 137, 153, 133, 152, 166, 139, 157, 172, 141, 159, 174, 146, 166, 179, 145, 164, 178, 141, 160, 174, 158, 175, 188, 162, 181, 192, 167, 185, 197, 159, 177, 189, + 170, 187, 199, 160, 178, 190, 171, 189, 199, 175, 191, 203, 179, 197, 207, 185, 204, 213, 178, 196, 207, 168, 187, 199, 165, 183, 196, 178, 195, 206, 193, 211, 221, 199, 216, 224, 208, 225, 235, 211, 228, 239, 211, 227, 240, 207, 224, 236, 200, 218, 229, 189, 207, 219, 182, 200, 212, 195, 214, 223, 207, 222, 233, + 208, 225, 234, 211, 227, 238, 211, 228, 238, 213, 229, 242, 213, 231, 241, 206, 224, 234, 211, 227, 239, 218, 234, 244, 227, 244, 252, 224, 241, 249, 229, 245, 253, 227, 242, 250, 226, 242, 250, 232, 248, 253, 238, 252, 254, 239, 253, 255, 238, 251, 253, 236, 252, 253, 239, 253, 254, 243, 253, 254, 241, 253, 254, + 251, 254, 254, 254, 255, 255, 244, 252, 253, 239, 250, 253, 252, 255, 255, 247, 254, 254, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 254, 253, 242, 254, 254, 235, 251, 253, 237, 251, 254, 243, 255, 254, 236, 250, 251, + 252, 255, 254, 253, 255, 254, 254, 255, 255, 254, 255, 255, 254, 255, 255, 249, 254, 254, 243, 253, 254, 241, 253, 254, 220, 233, 245, 207, 222, 234, 232, 245, 252, 231, 243, 251, 214, 227, 238, 207, 223, 235, 212, 227, 239, 218, 233, 245, 205, 222, 234, 198, 214, 227, 202, 217, 230, 215, 230, 243, 215, 228, 245, + 225, 238, 252, 235, 247, 254, 229, 240, 249, 234, 247, 253, 233, 245, 253, 220, 232, 247, 225, 238, 249, 231, 243, 253, 230, 241, 251, 233, 245, 253, 229, 243, 249, 236, 248, 252, 234, 245, 252, 238, 250, 254, 240, 253, 255, 238, 250, 254, 228, 239, 247, 229, 240, 248, 236, 248, 252, 255, 255, 254, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 254, 255, 255, 252, 255, 255, 248, 254, 254, 252, 254, 254, 244, 253, 253, 244, 252, 254, 240, 253, 253, 245, 254, 254, 247, 255, 253, 250, 255, 254, 250, 254, 254, 246, 254, 254, 252, 254, 255, 253, 255, 255, 255, 255, 255, 253, 255, 255, 249, 255, 255, 252, 255, 254, 253, 255, 255, + 249, 255, 254, 246, 255, 254, 241, 254, 254, 239, 251, 254, 241, 254, 255, 242, 255, 254, 244, 254, 254, 243, 255, 255, 242, 254, 254, 240, 253, 254, 239, 253, 255, 235, 250, 253, 233, 249, 252, 237, 250, 254, 234, 248, 254, 234, 247, 255, 231, 245, 253, 228, 240, 248, 225, 236, 246, 220, 234, 244, 219, 232, 242, + 218, 231, 240, 214, 227, 235, 207, 220, 228, 202, 216, 223, 192, 205, 213, 190, 203, 210, 176, 188, 197, 152, 166, 173, 129, 140, 148, 105, 116, 124, 88, 99, 106, 61, 67, 74, 47, 56, 63, 41, 48, 54, 22, 26, 29, 0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 70, 84, 92, 85, 101, 109, 85, 102, 110, 82, 99, 110, 95, 112, 121, 108, 125, 135, 103, 119, 131, 95, 112, 123, 98, 115, 127, 91, 109, 121, 93, 111, 122, 96, 114, 124, 96, 115, 125, 96, 114, 124, + 106, 123, 134, 123, 141, 152, 115, 133, 144, 119, 138, 147, 132, 151, 161, 130, 149, 159, 137, 155, 165, 142, 160, 171, 151, 169, 180, 152, 170, 180, 155, 173, 184, 162, 180, 190, 163, 181, 191, 157, 176, 188, 167, 186, 197, 159, 177, 190, 143, 162, 175, 142, 160, 174, 143, 162, 176, 142, 161, 175, 132, 152, 167, + 121, 141, 158, 118, 137, 154, 118, 139, 154, 125, 144, 159, 103, 123, 140, 105, 124, 142, 107, 126, 143, 116, 137, 152, 129, 148, 164, 151, 168, 182, 146, 165, 178, 149, 168, 181, 160, 178, 190, 175, 193, 204, 178, 195, 206, 180, 198, 208, 171, 190, 201, 174, 192, 203, 174, 192, 204, 180, 197, 207, 185, 203, 212, + 171, 189, 201, 173, 190, 203, 184, 202, 213, 185, 203, 214, 196, 214, 223, 207, 224, 233, 206, 224, 233, 204, 222, 232, 200, 218, 229, 196, 214, 225, 200, 219, 227, 196, 214, 225, 196, 214, 225, 194, 213, 221, 210, 226, 237, 211, 227, 240, 212, 228, 240, 216, 232, 244, 211, 227, 239, 208, 225, 236, 210, 227, 238, + 213, 229, 241, 219, 236, 244, 222, 239, 248, 219, 235, 247, 219, 235, 245, 214, 230, 241, 223, 239, 249, 233, 247, 252, 227, 244, 250, 238, 252, 254, 237, 252, 254, 236, 249, 253, 242, 254, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 253, 254, 254, 250, 254, 255, 252, 254, 254, 241, 252, 253, 254, 254, 254, + 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 250, 255, 254, 246, 254, 254, 249, 255, 254, 251, 254, 254, 248, 253, 254, 255, 255, 254, 254, 255, 255, 252, 255, 255, 254, 255, 255, 254, 255, 255, 249, 253, 254, 234, 249, 253, + 240, 252, 254, 225, 239, 249, 197, 213, 225, 219, 234, 242, 236, 248, 253, 222, 235, 243, 229, 243, 251, 212, 227, 240, 215, 231, 243, 206, 222, 234, 212, 228, 241, 197, 213, 226, 210, 225, 240, 214, 229, 245, 214, 228, 245, 227, 240, 250, 231, 243, 252, 218, 233, 247, 217, 230, 246, 209, 224, 241, 218, 233, 247, + 214, 229, 245, 212, 227, 245, 217, 232, 247, 224, 237, 250, 219, 232, 246, 224, 237, 247, 230, 242, 251, 234, 246, 253, 232, 243, 252, 225, 237, 246, 223, 234, 243, 238, 250, 252, 248, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 255, 255, 249, 254, 253, 247, 254, 253, 247, 253, 253, 249, 255, 254, + 251, 254, 254, 244, 253, 254, 251, 255, 255, 251, 255, 255, 252, 255, 254, 249, 253, 254, 251, 255, 254, 254, 255, 255, 253, 255, 255, 251, 255, 255, 248, 255, 254, 243, 254, 254, 245, 255, 254, 250, 254, 254, 249, 255, 254, 251, 255, 255, 247, 255, 255, 241, 253, 255, 241, 254, 254, 247, 254, 254, 247, 255, 254, + 247, 255, 255, 245, 255, 254, 241, 254, 254, 240, 253, 254, 239, 253, 254, 236, 248, 255, 234, 248, 254, 233, 247, 254, 233, 246, 254, 229, 242, 251, 227, 239, 248, 226, 237, 247, 223, 235, 244, 217, 231, 239, 217, 229, 238, 214, 227, 235, 208, 221, 230, 204, 218, 225, 199, 211, 219, 194, 207, 216, 188, 201, 209, + 174, 188, 195, 163, 173, 182, 136, 147, 156, 103, 114, 121, 71, 79, 87, 49, 57, 64, 48, 56, 63, 34, 39, 44, 8, 11, 14, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 78, 91, 100, 81, 96, 105, 82, 97, 107, 94, 111, 120, 104, 120, 131, 109, 125, 137, 105, 121, 132, 110, 127, 135, 103, 121, 132, 100, 119, 129, 98, 116, 127, 102, 119, 131, 98, 117, 126, 104, 120, 131, 122, 139, 150, 123, 142, 151, 122, 140, 151, 136, 155, 163, 136, 154, 165, 137, 156, 166, 153, 171, 180, + 152, 170, 181, 152, 170, 180, 156, 174, 184, 162, 180, 190, 169, 187, 198, 172, 190, 200, 176, 193, 203, 166, 186, 197, 159, 175, 189, 165, 184, 196, 164, 183, 194, 166, 184, 196, 164, 180, 193, 162, 181, 194, 150, 170, 184, 153, 172, 184, 157, 174, 187, 142, 161, 176, 120, 140, 158, 101, 122, 139, 108, 128, 145, + 119, 138, 155, 141, 160, 174, 154, 172, 184, 160, 177, 190, 164, 181, 193, 168, 186, 197, 168, 187, 198, 181, 199, 208, 179, 197, 207, 173, 191, 202, 172, 191, 200, 180, 198, 208, 191, 209, 219, 181, 198, 210, 173, 191, 202, 184, 202, 213, 189, 206, 218, 184, 202, 212, 186, 204, 215, 192, 209, 220, 196, 213, 223, + 198, 216, 226, 200, 218, 228, 193, 211, 221, 205, 223, 232, 202, 219, 230, 202, 218, 230, 202, 219, 230, 215, 232, 241, 209, 225, 237, 208, 224, 235, 212, 229, 240, 214, 230, 242, 215, 231, 242, 218, 234, 245, 212, 228, 240, 216, 232, 242, 221, 237, 248, 224, 239, 249, 216, 232, 244, 216, 232, 244, 213, 229, 241, + 218, 234, 243, 224, 239, 249, 225, 242, 251, 232, 246, 253, 235, 250, 254, 238, 252, 254, 248, 254, 253, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 253, 255, 255, 250, 254, 254, 254, 255, 255, 254, 255, 255, 248, 255, 254, 245, 253, 253, 245, 253, 254, 253, 255, 254, 246, 254, 253, 233, 247, 253, 239, 253, 255, 238, 251, 253, 226, 240, 247, 231, 245, 251, 228, 241, 249, 219, 234, 243, + 207, 223, 235, 212, 229, 240, 203, 220, 233, 204, 221, 234, 193, 208, 226, 194, 210, 226, 201, 217, 235, 208, 224, 241, 208, 224, 242, 217, 231, 247, 214, 230, 247, 215, 228, 246, 202, 217, 236, 200, 215, 234, 197, 212, 230, 210, 224, 241, 203, 219, 235, 207, 221, 239, 207, 222, 239, 217, 230, 246, 225, 237, 250, + 218, 230, 243, 228, 240, 250, 225, 237, 248, 219, 229, 239, 229, 242, 249, 240, 253, 254, 250, 255, 254, 254, 255, 255, 253, 255, 255, 250, 254, 254, 251, 255, 254, 243, 254, 253, 239, 253, 253, 241, 254, 253, 241, 254, 254, 241, 254, 254, 245, 254, 254, 243, 254, 253, 245, 253, 253, 252, 254, 254, 249, 254, 254, + 246, 254, 254, 245, 253, 254, 241, 253, 253, 245, 255, 253, 244, 254, 254, 243, 254, 254, 246, 254, 254, 250, 254, 254, 250, 255, 254, 247, 254, 253, 245, 254, 254, 244, 254, 254, 249, 255, 254, 252, 255, 254, 252, 255, 255, 244, 254, 253, 241, 254, 254, 240, 254, 254, 239, 253, 254, 237, 249, 254, 233, 248, 254, + 234, 248, 254, 235, 248, 255, 232, 245, 253, 231, 242, 252, 228, 240, 248, 224, 237, 245, 219, 233, 241, 216, 231, 238, 212, 225, 233, 209, 222, 231, 205, 218, 226, 201, 214, 222, 197, 209, 218, 194, 205, 214, 183, 196, 203, 172, 183, 192, 152, 162, 172, 129, 139, 149, 99, 109, 119, 68, 75, 83, 53, 62, 67, + 39, 45, 50, 20, 26, 30, 6, 8, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 82, 96, 105, 80, 95, 104, 100, 116, 126, 101, 118, 127, 100, 116, 127, 98, 115, 125, 105, 122, 133, + 106, 123, 133, 106, 125, 135, 100, 118, 129, 100, 117, 128, 107, 124, 135, 105, 123, 133, 124, 141, 150, 126, 144, 153, 130, 146, 157, 134, 153, 160, 138, 157, 165, 140, 158, 168, 146, 164, 174, 149, 167, 175, 158, 176, 185, 158, 177, 186, 160, 178, 187, 167, 185, 195, 174, 192, 203, 178, 196, 207, 173, 191, 201, + 176, 195, 205, 182, 200, 210, 179, 196, 206, 172, 190, 201, 177, 194, 205, 179, 196, 207, 175, 192, 204, 174, 191, 204, 162, 179, 193, 141, 160, 175, 140, 159, 174, 127, 145, 162, 112, 132, 149, 125, 143, 160, 133, 152, 167, 147, 166, 178, 164, 182, 193, 167, 185, 195, 177, 195, 205, 181, 199, 208, 169, 187, 198, + 169, 187, 198, 177, 195, 206, 171, 189, 200, 168, 186, 197, 173, 191, 202, 183, 201, 211, 190, 206, 216, 190, 209, 219, 188, 206, 217, 181, 199, 210, 194, 213, 222, 196, 215, 223, 195, 212, 222, 200, 218, 226, 208, 225, 237, 198, 216, 223, 204, 221, 230, 205, 222, 232, 207, 224, 233, 207, 223, 234, 203, 220, 230, + 204, 221, 230, 205, 222, 234, 211, 227, 238, 205, 221, 233, 212, 229, 239, 211, 227, 240, 210, 226, 236, 213, 230, 240, 213, 230, 240, 220, 238, 246, 226, 242, 251, 225, 240, 249, 216, 232, 244, 214, 232, 242, 206, 222, 234, 214, 231, 241, 220, 236, 246, 221, 235, 245, 223, 238, 247, 237, 251, 254, 249, 255, 254, + 253, 254, 255, 253, 254, 254, 254, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 253, 255, 255, 249, 254, 254, 242, 254, 254, 248, 254, 254, 248, 254, 253, 241, 251, 254, 234, 249, 253, 242, 253, 254, 236, 250, 253, 232, 247, 251, 223, 237, 245, 227, 242, 250, 219, 233, 244, 205, 220, 234, 197, 213, 227, 203, 218, 235, 185, 201, 219, 181, 196, 218, 181, 197, 219, + 191, 208, 229, 196, 212, 232, 198, 214, 235, 215, 231, 249, 206, 221, 241, 196, 212, 234, 187, 203, 226, 185, 201, 223, 199, 214, 235, 197, 213, 233, 193, 208, 227, 200, 216, 236, 206, 222, 240, 214, 228, 245, 208, 223, 238, 220, 231, 247, 220, 232, 246, 215, 228, 238, 217, 231, 239, 240, 252, 253, 240, 253, 254, + 251, 254, 253, 250, 255, 254, 251, 254, 254, 245, 253, 252, 247, 254, 253, 244, 254, 254, 240, 253, 253, 244, 254, 254, 239, 251, 254, 238, 251, 254, 242, 253, 254, 247, 255, 254, 242, 253, 252, 237, 252, 254, 243, 253, 254, 246, 254, 254, 245, 254, 253, 248, 254, 254, 251, 255, 254, 248, 254, 254, 249, 255, 255, + 252, 254, 254, 252, 254, 254, 250, 254, 254, 252, 255, 255, 241, 254, 254, 246, 255, 254, 250, 255, 254, 247, 254, 254, 241, 255, 254, 239, 253, 254, 235, 251, 253, 239, 251, 255, 236, 251, 254, 235, 248, 254, 236, 249, 254, 235, 248, 255, 232, 245, 253, 227, 243, 251, 228, 240, 250, 227, 237, 247, 225, 238, 246, + 222, 235, 243, 217, 229, 238, 211, 224, 233, 207, 220, 228, 202, 215, 223, 196, 208, 216, 190, 202, 210, 182, 194, 203, 173, 186, 194, 168, 180, 189, 147, 159, 168, 123, 132, 142, 85, 91, 101, 58, 66, 73, 45, 52, 56, 27, 32, 35, 8, 12, 15, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 100, 117, 126, 104, 121, 130, 103, 120, 130, 103, 119, 130, 102, 119, 129, 102, 120, 129, 101, 118, 128, 93, 111, 120, 98, 116, 126, 102, 118, 130, 100, 116, 128, 109, 125, 137, 113, 131, 141, 115, 133, 144, + 117, 136, 144, 122, 141, 152, 124, 142, 152, 134, 152, 163, 142, 161, 170, 143, 161, 171, 149, 168, 176, 150, 168, 178, 156, 175, 184, 165, 182, 191, 172, 189, 199, 178, 197, 206, 183, 202, 212, 181, 199, 208, 189, 208, 218, 184, 201, 212, 181, 199, 210, 184, 202, 212, 186, 205, 213, 190, 209, 217, 179, 197, 208, + 174, 192, 203, 169, 186, 198, 154, 173, 187, 158, 175, 188, 148, 166, 180, 135, 154, 168, 127, 146, 160, 130, 150, 166, 134, 153, 168, 151, 168, 181, 165, 184, 194, 177, 195, 202, 172, 190, 200, 172, 190, 201, 164, 182, 193, 168, 186, 197, 175, 192, 202, 175, 193, 204, 179, 197, 206, 191, 208, 217, 193, 210, 219, + 197, 216, 224, 201, 218, 227, 203, 220, 229, 197, 213, 224, 195, 214, 224, 192, 210, 219, 190, 207, 217, 185, 203, 212, 188, 206, 216, 193, 210, 220, 188, 207, 217, 194, 212, 221, 200, 217, 229, 203, 221, 232, 201, 218, 228, 199, 218, 226, 210, 226, 236, 207, 225, 235, 211, 227, 238, 208, 225, 236, 205, 223, 233, + 212, 228, 240, 218, 235, 244, 218, 234, 244, 217, 235, 244, 225, 239, 249, 223, 240, 249, 222, 239, 248, 220, 236, 246, 213, 231, 242, 222, 235, 248, 216, 232, 243, 217, 233, 244, 226, 242, 249, 241, 251, 253, 240, 251, 253, 241, 253, 254, 243, 252, 253, 255, 254, 254, 253, 255, 255, 254, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 251, 254, 254, 254, 255, 255, 248, 255, 254, + 241, 252, 254, 232, 248, 253, 230, 245, 252, 237, 252, 253, 236, 250, 252, 214, 230, 241, 231, 246, 251, 229, 245, 253, 210, 224, 239, 186, 202, 219, 192, 208, 226, 174, 190, 213, 158, 176, 203, 169, 189, 218, 166, 187, 216, 187, 206, 234, 185, 204, 233, 190, 208, 235, 189, 207, 232, 188, 206, 233, 183, 202, 230, + 178, 196, 225, 178, 196, 225, 181, 198, 226, 182, 200, 227, 182, 197, 224, 184, 200, 225, 197, 212, 232, 202, 217, 236, 206, 220, 238, 202, 216, 233, 212, 227, 240, 210, 225, 236, 235, 249, 254, 236, 247, 253, 245, 254, 254, 245, 253, 253, 245, 254, 254, 241, 252, 253, 240, 252, 255, 238, 252, 253, 237, 250, 253, + 239, 252, 254, 234, 247, 252, 239, 252, 254, 245, 254, 254, 245, 255, 253, 241, 253, 253, 240, 253, 255, 242, 254, 253, 247, 255, 254, 246, 255, 254, 246, 255, 254, 244, 255, 254, 239, 252, 254, 244, 255, 254, 242, 253, 254, 240, 253, 253, 239, 253, 253, 243, 254, 253, 246, 254, 254, 246, 255, 255, 248, 255, 254, + 248, 254, 254, 242, 255, 255, 239, 254, 253, 238, 252, 254, 237, 251, 254, 236, 250, 254, 237, 251, 255, 238, 250, 254, 234, 248, 254, 231, 246, 253, 232, 242, 251, 229, 242, 250, 229, 239, 249, 226, 239, 247, 223, 236, 244, 219, 232, 240, 212, 224, 233, 209, 222, 230, 204, 217, 225, 196, 208, 216, 190, 201, 209, + 181, 193, 201, 173, 186, 194, 170, 183, 191, 160, 172, 181, 138, 149, 158, 104, 114, 121, 66, 73, 80, 40, 47, 49, 18, 23, 26, 3, 5, 7, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, + 99, 116, 126, 92, 109, 119, 99, 115, 125, 95, 112, 122, 95, 112, 123, 106, 123, 133, 96, 114, 124, 100, 119, 130, 99, 116, 126, 95, 111, 123, 95, 111, 123, 101, 118, 130, 110, 129, 138, 114, 130, 142, 110, 129, 138, 123, 141, 152, 130, 148, 158, 135, 154, 162, 137, 155, 165, 144, 163, 172, 141, 160, 169, + 151, 170, 179, 161, 180, 187, 170, 186, 196, 176, 195, 203, 180, 197, 206, 175, 194, 204, 184, 200, 210, 184, 202, 213, 188, 206, 216, 189, 208, 216, 190, 208, 217, 197, 216, 225, 190, 209, 219, 189, 207, 218, 180, 198, 209, 170, 188, 199, 157, 176, 189, 146, 165, 178, 147, 165, 179, 136, 156, 171, 147, 166, 179, + 148, 168, 180, 149, 168, 181, 149, 168, 178, 153, 171, 181, 162, 181, 190, 169, 187, 196, 167, 186, 196, 170, 188, 198, 166, 184, 195, 161, 178, 191, 175, 193, 203, 173, 191, 201, 184, 202, 211, 188, 206, 214, 190, 209, 217, 201, 218, 228, 208, 224, 235, 203, 220, 229, 197, 214, 224, 184, 203, 212, 182, 199, 210, + 179, 197, 208, 189, 207, 218, 197, 214, 224, 201, 218, 229, 205, 222, 231, 209, 226, 237, 211, 227, 238, 203, 221, 230, 197, 216, 225, 193, 211, 221, 200, 218, 226, 207, 224, 233, 203, 222, 231, 199, 216, 227, 203, 221, 230, 216, 233, 242, 221, 234, 245, 222, 239, 247, 218, 235, 245, 220, 237, 246, 221, 238, 246, + 225, 241, 247, 230, 245, 251, 225, 240, 249, 216, 232, 242, 233, 247, 251, 229, 244, 249, 232, 246, 249, 234, 246, 249, 239, 251, 253, 244, 253, 253, 251, 255, 254, 249, 254, 254, 245, 255, 254, 254, 254, 254, 253, 255, 255, 253, 255, 255, 252, 255, 255, 252, 255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 255, 255, 255, 255, 255, 255, 253, 255, 255, 254, 255, 255, 254, 255, 255, 253, 255, 255, 236, 254, 254, 238, 249, 253, 228, 244, 252, 234, 248, 254, 237, 251, 254, 225, 241, 249, + 232, 246, 252, 223, 237, 250, 187, 203, 220, 180, 197, 218, 153, 172, 201, 146, 168, 201, 127, 149, 192, 177, 199, 231, 167, 190, 225, 158, 181, 219, 166, 189, 226, 165, 187, 222, 162, 186, 221, 180, 202, 236, 174, 194, 228, 170, 191, 226, 177, 197, 230, 172, 194, 226, 173, 192, 224, 172, 193, 223, 191, 206, 231, + 198, 214, 237, 202, 218, 236, 194, 210, 228, 203, 218, 236, 200, 216, 229, 221, 236, 246, 239, 251, 254, 238, 251, 253, 240, 252, 253, 239, 252, 254, 236, 248, 252, 237, 249, 252, 234, 247, 252, 237, 249, 252, 235, 249, 252, 233, 248, 253, 239, 252, 255, 239, 252, 254, 240, 253, 255, 240, 253, 253, 243, 254, 254, + 244, 255, 254, 248, 255, 254, 243, 254, 254, 245, 254, 254, 243, 254, 254, 241, 254, 254, 243, 254, 254, 236, 250, 254, 237, 249, 254, 240, 253, 254, 240, 252, 254, 241, 254, 254, 250, 254, 254, 252, 255, 254, 246, 255, 254, 242, 254, 254, 240, 255, 254, 238, 251, 254, 237, 251, 253, 238, 252, 254, 241, 254, 254, + 239, 252, 255, 238, 251, 254, 235, 249, 254, 236, 247, 254, 233, 246, 254, 230, 243, 251, 225, 238, 246, 222, 235, 243, 220, 232, 241, 216, 227, 235, 210, 223, 231, 207, 220, 228, 202, 215, 223, 194, 206, 214, 188, 201, 209, 184, 195, 203, 174, 187, 195, 165, 178, 186, 154, 166, 174, 125, 134, 143, 97, 108, 116, + 66, 72, 80, 39, 45, 50, 13, 18, 20, 7, 9, 11, 3, 3, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 99, 108, 83, 99, 109, 91, 108, 117, 101, 116, 127, 110, 128, 139, 102, 119, 129, 93, 111, 120, + 90, 106, 116, 96, 113, 124, 91, 107, 119, 100, 116, 128, 99, 115, 127, 95, 114, 123, 117, 133, 145, 122, 139, 151, 113, 132, 142, 119, 136, 148, 132, 150, 159, 132, 150, 159, 144, 162, 170, 152, 170, 178, 158, 177, 185, 166, 184, 193, 170, 187, 196, 174, 191, 202, 171, 189, 199, 173, 191, 202, 182, 200, 209, + 181, 199, 210, 182, 200, 210, 187, 205, 213, 190, 208, 217, 200, 218, 227, 197, 215, 225, 186, 204, 215, 184, 202, 213, 167, 185, 197, 151, 170, 183, 141, 161, 176, 140, 160, 173, 149, 168, 182, 154, 171, 183, 147, 165, 178, 142, 160, 174, 140, 159, 172, 137, 156, 169, 137, 156, 168, 163, 180, 192, 168, 186, 197, + 164, 182, 192, 161, 179, 191, 165, 183, 194, 186, 203, 212, 187, 203, 213, 184, 202, 212, 184, 200, 210, 188, 206, 214, 191, 209, 217, 201, 219, 228, 193, 210, 221, 175, 194, 205, 183, 201, 210, 195, 212, 223, 192, 210, 219, 198, 214, 225, 197, 216, 224, 196, 215, 224, 195, 214, 222, 209, 225, 234, 211, 228, 238, + 207, 224, 234, 211, 228, 239, 209, 226, 237, 203, 221, 230, 202, 219, 228, 200, 219, 230, 207, 225, 236, 199, 218, 225, 201, 220, 228, 208, 224, 235, 209, 226, 236, 204, 221, 231, 203, 220, 229, 208, 225, 234, 206, 223, 233, 218, 235, 242, 216, 232, 243, 202, 220, 230, 210, 226, 236, 208, 224, 234, 225, 240, 245, + 241, 249, 252, 245, 253, 253, 245, 253, 253, 241, 252, 254, 244, 253, 253, 246, 254, 253, 249, 255, 254, 248, 255, 254, 253, 255, 254, 253, 255, 255, 240, 252, 254, 240, 251, 254, 252, 255, 255, 253, 255, 255, 255, 255, 255, 252, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 252, 255, 254, 242, 254, 253, 250, 254, 253, 237, 250, 254, 226, 241, 251, 233, 248, 253, 234, 250, 254, 231, 247, 252, 221, 237, 251, 210, 227, 244, 182, 201, 225, 147, 167, 201, 135, 158, 199, 116, 141, 191, + 124, 153, 200, 123, 153, 202, 136, 164, 213, 151, 180, 226, 156, 182, 229, 161, 189, 232, 175, 199, 241, 161, 186, 231, 164, 190, 235, 182, 205, 243, 154, 179, 224, 171, 194, 233, 166, 190, 229, 180, 202, 235, 183, 203, 233, 183, 201, 230, 175, 195, 223, 181, 196, 222, 193, 209, 225, 201, 218, 231, 238, 251, 255, + 238, 250, 254, 237, 250, 252, 239, 251, 253, 237, 250, 252, 240, 252, 254, 235, 248, 252, 236, 249, 253, 234, 249, 251, 236, 249, 253, 235, 249, 252, 235, 248, 251, 234, 246, 251, 239, 252, 254, 247, 254, 255, 240, 254, 253, 243, 253, 253, 249, 253, 253, 250, 255, 255, 241, 253, 254, 239, 252, 254, 241, 253, 254, + 239, 253, 255, 237, 250, 255, 240, 253, 255, 241, 253, 253, 244, 254, 254, 253, 255, 255, 254, 255, 255, 251, 254, 255, 241, 254, 254, 241, 254, 253, 239, 250, 254, 238, 251, 254, 237, 250, 253, 237, 252, 254, 236, 251, 253, 236, 250, 254, 237, 250, 254, 233, 246, 254, 232, 245, 253, 230, 242, 250, 228, 240, 249, + 224, 237, 245, 221, 233, 242, 218, 231, 239, 215, 228, 236, 210, 223, 231, 207, 219, 227, 201, 213, 221, 194, 208, 215, 190, 201, 209, 180, 192, 200, 171, 184, 192, 165, 177, 186, 153, 164, 172, 133, 145, 153, 109, 116, 125, 79, 88, 96, 48, 55, 61, 33, 39, 45, 14, 17, 21, 1, 2, 3, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 97, 107, 90, 107, 116, 102, 118, 129, 110, 126, 136, 99, 116, 127, 91, 108, 118, 88, 105, 116, 98, 114, 125, 93, 110, 122, 93, 111, 123, 105, 121, 133, 89, 107, 118, 105, 122, 131, 108, 125, 136, + 105, 123, 135, 111, 129, 140, 127, 145, 155, 125, 144, 152, 142, 159, 168, 151, 169, 177, 154, 172, 181, 163, 180, 189, 168, 185, 194, 165, 184, 192, 168, 185, 196, 175, 193, 200, 173, 190, 201, 179, 197, 206, 188, 207, 216, 184, 201, 212, 193, 210, 220, 199, 216, 225, 202, 219, 227, 195, 214, 223, 193, 211, 221, + 181, 199, 210, 166, 183, 197, 164, 183, 196, 155, 173, 185, 159, 178, 189, 160, 178, 189, 156, 173, 185, 152, 168, 181, 143, 162, 175, 155, 173, 184, 163, 182, 192, 146, 166, 175, 147, 165, 177, 150, 167, 180, 140, 157, 170, 145, 164, 177, 158, 178, 187, 173, 192, 201, 186, 203, 212, 184, 201, 210, 190, 207, 216, + 198, 215, 224, 202, 219, 228, 199, 217, 225, 196, 214, 223, 190, 209, 217, 183, 201, 212, 177, 196, 206, 182, 200, 211, 193, 210, 219, 197, 214, 223, 201, 218, 228, 204, 221, 232, 216, 232, 241, 212, 229, 238, 208, 226, 234, 215, 232, 241, 216, 233, 243, 213, 229, 241, 210, 228, 236, 207, 223, 235, 210, 228, 237, + 206, 223, 232, 205, 222, 231, 208, 225, 235, 209, 226, 235, 210, 226, 237, 207, 223, 233, 212, 228, 237, 217, 233, 242, 200, 217, 228, 216, 232, 241, 223, 238, 243, 220, 237, 245, 223, 238, 245, 225, 240, 247, 220, 236, 243, 224, 239, 246, 241, 249, 252, 245, 254, 254, 248, 254, 254, 250, 254, 255, 246, 254, 254, + 245, 251, 252, 252, 254, 255, 253, 254, 255, 253, 254, 254, 249, 254, 254, 248, 254, 253, 250, 255, 254, 251, 255, 254, 251, 254, 254, 253, 255, 255, 252, 255, 255, 254, 255, 255, 254, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, + 242, 254, 254, 235, 250, 254, 241, 253, 255, 252, 254, 254, 248, 255, 253, 243, 253, 254, 228, 244, 252, 223, 239, 252, 206, 223, 238, 214, 231, 249, 158, 179, 208, 119, 141, 183, 104, 127, 178, 112, 139, 194, 104, 134, 189, 107, 139, 198, 119, 152, 211, 149, 180, 235, 161, 191, 242, 146, 178, 234, 174, 203, 250, + 163, 193, 245, 150, 183, 237, 148, 179, 234, 149, 180, 234, 159, 188, 239, 154, 183, 230, 160, 188, 233, 165, 191, 233, 166, 188, 227, 163, 185, 220, 164, 183, 215, 182, 200, 220, 195, 211, 227, 233, 248, 253, 242, 254, 254, 241, 253, 254, 239, 253, 255, 235, 248, 252, 236, 248, 253, 235, 247, 251, 238, 251, 252, + 240, 254, 254, 240, 254, 254, 240, 253, 254, 240, 252, 254, 240, 252, 253, 238, 253, 253, 241, 254, 253, 240, 253, 253, 240, 251, 254, 239, 249, 253, 239, 252, 254, 241, 253, 254, 245, 254, 254, 241, 255, 254, 240, 253, 253, 238, 251, 254, 241, 254, 255, 241, 253, 254, 244, 254, 254, 252, 255, 254, 251, 255, 254, + 247, 255, 254, 241, 255, 254, 243, 254, 254, 245, 254, 254, 242, 254, 255, 240, 253, 255, 238, 251, 253, 238, 251, 254, 234, 247, 255, 234, 247, 254, 233, 246, 254, 230, 244, 252, 227, 239, 247, 227, 240, 248, 224, 237, 245, 221, 234, 242, 219, 232, 240, 217, 230, 238, 213, 226, 234, 210, 222, 230, 206, 219, 227, + 200, 213, 221, 193, 205, 211, 184, 195, 203, 175, 187, 195, 171, 182, 190, 163, 174, 182, 147, 160, 168, 132, 142, 150, 102, 112, 121, 71, 79, 88, 57, 62, 69, 36, 43, 49, 19, 24, 27, 4, 6, 7, 2, 2, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 91, 108, 117, 101, 117, 127, 106, 123, 132, 100, 116, 128, 93, 110, 120, 93, 109, 119, 94, 110, 121, 104, 121, 131, 93, 111, 121, 100, 117, 129, 96, 112, 124, 105, 122, 133, 104, 123, 131, 103, 121, 131, 110, 128, 139, 121, 139, 150, 128, 146, 157, 132, 149, 159, 145, 162, 172, 152, 169, 178, 153, 171, 181, + 160, 179, 187, 156, 174, 183, 168, 185, 194, 174, 191, 201, 179, 196, 204, 184, 201, 211, 188, 205, 214, 187, 205, 216, 191, 208, 218, 190, 207, 217, 197, 214, 223, 196, 213, 222, 199, 216, 224, 193, 211, 221, 187, 205, 216, 182, 200, 210, 168, 186, 199, 168, 185, 197, 173, 191, 201, 173, 191, 202, 172, 190, 200, + 165, 182, 193, 143, 161, 174, 128, 147, 161, 131, 150, 164, 120, 138, 152, 128, 148, 162, 147, 165, 177, 157, 175, 186, 170, 188, 196, 177, 195, 204, 183, 200, 209, 170, 187, 199, 178, 195, 204, 184, 201, 212, 191, 208, 217, 182, 200, 210, 190, 207, 216, 202, 219, 228, 185, 204, 214, 186, 205, 214, 196, 213, 223, + 198, 216, 225, 196, 213, 223, 187, 205, 214, 192, 211, 219, 194, 212, 220, 205, 223, 231, 206, 223, 233, 211, 228, 237, 214, 231, 240, 215, 231, 243, 218, 233, 245, 209, 226, 237, 208, 225, 233, 210, 227, 237, 208, 225, 235, 210, 226, 236, 210, 226, 237, 208, 225, 235, 211, 228, 238, 213, 230, 238, 218, 233, 242, + 224, 238, 246, 225, 241, 248, 231, 246, 252, 228, 242, 248, 232, 248, 252, 237, 250, 253, 239, 252, 253, 239, 252, 253, 225, 241, 246, 223, 237, 245, 234, 248, 251, 241, 252, 254, 233, 248, 252, 230, 245, 253, 224, 240, 248, 232, 246, 252, 247, 253, 254, 248, 255, 254, 251, 254, 254, 249, 255, 254, 248, 254, 255, + 247, 255, 254, 247, 254, 254, 245, 254, 254, 245, 253, 254, 249, 255, 255, 250, 254, 254, 252, 255, 255, 249, 254, 254, 249, 255, 254, 253, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 251, 255, 254, 229, 247, 253, 232, 250, 252, 249, 254, 253, 255, 255, 255, 244, 254, 253, 219, 235, 249, + 213, 230, 247, 190, 209, 225, 196, 214, 237, 149, 171, 206, 96, 119, 167, 98, 123, 178, 86, 113, 175, 100, 131, 195, 114, 145, 209, 128, 157, 222, 157, 185, 244, 164, 194, 249, 159, 189, 249, 157, 189, 250, 158, 191, 249, 149, 185, 245, 118, 156, 226, 125, 160, 230, 122, 158, 227, 147, 181, 238, 145, 179, 234, + 152, 183, 236, 155, 181, 231, 153, 178, 222, 147, 167, 209, 163, 182, 213, 186, 204, 224, 226, 241, 251, 236, 253, 253, 242, 254, 254, 235, 251, 253, 235, 247, 253, 235, 248, 251, 235, 247, 252, 237, 249, 253, 239, 253, 254, 239, 253, 253, 234, 247, 253, 240, 252, 254, 237, 250, 253, 238, 251, 253, 237, 251, 254, + 236, 250, 253, 239, 253, 253, 241, 253, 254, 243, 255, 254, 248, 255, 255, 247, 254, 253, 247, 255, 255, 239, 253, 253, 238, 250, 254, 239, 252, 254, 239, 253, 254, 247, 255, 254, 253, 255, 255, 254, 255, 255, 250, 255, 254, 246, 255, 254, 245, 254, 254, 250, 254, 254, 245, 255, 254, 241, 254, 254, 240, 253, 255, + 239, 252, 254, 235, 249, 254, 233, 246, 254, 231, 244, 252, 229, 243, 250, 225, 238, 246, 226, 239, 247, 222, 234, 243, 222, 235, 243, 218, 230, 240, 215, 228, 236, 214, 227, 235, 211, 224, 232, 209, 221, 229, 205, 217, 225, 196, 207, 216, 191, 203, 210, 185, 196, 204, 176, 188, 196, 171, 182, 189, 161, 172, 180, + 151, 163, 171, 123, 134, 142, 99, 108, 116, 86, 95, 104, 67, 77, 85, 52, 59, 66, 29, 34, 40, 7, 9, 12, 2, 3, 3, 1, 1, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 114, 123, 99, 116, 125, 90, 106, 115, 87, 103, 115, 90, 107, 116, 88, 104, 116, 94, 110, 121, + 91, 108, 119, 89, 106, 114, 96, 112, 123, 97, 115, 125, 102, 121, 129, 105, 124, 133, 110, 127, 138, 108, 125, 137, 110, 128, 139, 122, 140, 150, 133, 151, 160, 140, 160, 168, 144, 162, 170, 146, 165, 175, 147, 165, 173, 161, 178, 188, 172, 189, 198, 174, 191, 201, 181, 198, 207, 180, 196, 206, 185, 203, 212, + 188, 206, 216, 185, 204, 212, 193, 210, 220, 202, 219, 228, 194, 212, 221, 195, 213, 222, 192, 209, 221, 187, 206, 215, 182, 200, 210, 177, 195, 206, 171, 190, 201, 163, 183, 193, 152, 171, 181, 155, 173, 184, 142, 161, 174, 129, 148, 164, 107, 126, 143, 95, 117, 130, 125, 143, 157, 135, 153, 166, 146, 164, 174, + 171, 188, 198, 187, 204, 212, 175, 193, 201, 182, 199, 208, 175, 194, 203, 169, 188, 199, 173, 190, 201, 185, 203, 212, 186, 204, 213, 195, 212, 221, 201, 218, 227, 201, 219, 228, 203, 220, 229, 194, 211, 220, 198, 215, 223, 201, 219, 227, 187, 205, 215, 185, 203, 213, 186, 204, 215, 185, 204, 213, 181, 199, 210, + 194, 212, 219, 201, 218, 227, 208, 224, 235, 220, 237, 245, 213, 230, 238, 204, 223, 232, 204, 220, 231, 200, 218, 227, 197, 213, 225, 199, 217, 226, 190, 206, 217, 192, 210, 220, 193, 210, 220, 187, 204, 213, 204, 222, 230, 220, 237, 244, 233, 247, 253, 222, 236, 245, 214, 231, 239, 217, 233, 239, 225, 240, 247, + 232, 246, 252, 224, 240, 247, 218, 236, 243, 229, 241, 247, 246, 252, 254, 250, 255, 254, 244, 253, 253, 233, 247, 251, 234, 248, 252, 232, 244, 252, 237, 251, 254, 240, 253, 254, 241, 254, 254, 234, 249, 253, 241, 253, 254, 245, 255, 254, 243, 254, 253, 243, 253, 253, 239, 252, 254, 235, 249, 253, 245, 253, 253, + 237, 251, 253, 237, 251, 253, 252, 254, 254, 254, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 252, 254, 255, 238, 253, 253, 238, 253, 254, 252, 255, 254, 251, 255, 255, 243, 254, 254, 208, 225, 241, 186, 205, 224, 168, 189, 212, 180, 200, 226, 136, 160, 199, 89, 115, 166, 83, 110, 170, 74, 101, 170, + 88, 118, 192, 124, 152, 219, 137, 161, 229, 166, 193, 251, 171, 199, 251, 173, 198, 252, 160, 190, 253, 171, 200, 252, 158, 191, 252, 130, 164, 240, 121, 159, 240, 106, 152, 233, 139, 175, 244, 150, 184, 245, 140, 172, 235, 137, 165, 226, 152, 177, 231, 140, 163, 213, 156, 178, 214, 188, 206, 227, 223, 239, 249, + 236, 253, 254, 239, 252, 254, 237, 251, 252, 238, 251, 253, 235, 249, 253, 234, 248, 253, 234, 244, 251, 237, 251, 253, 238, 251, 253, 238, 250, 254, 238, 251, 253, 235, 248, 253, 233, 246, 252, 232, 246, 253, 236, 248, 254, 236, 250, 253, 237, 251, 254, 238, 251, 254, 237, 251, 254, 238, 252, 254, 238, 251, 254, + 238, 251, 253, 241, 253, 254, 240, 254, 254, 242, 254, 254, 247, 255, 254, 253, 255, 255, 254, 255, 255, 254, 255, 255, 254, 255, 255, 253, 255, 255, 253, 255, 255, 247, 255, 254, 241, 254, 253, 241, 255, 254, 238, 251, 254, 235, 249, 254, 235, 248, 255, 230, 244, 252, 230, 243, 251, 227, 240, 249, 226, 239, 247, + 222, 235, 243, 222, 235, 243, 219, 232, 240, 215, 228, 236, 215, 228, 236, 212, 225, 233, 207, 220, 228, 203, 216, 224, 200, 212, 220, 196, 207, 215, 190, 202, 210, 184, 196, 203, 173, 184, 191, 157, 168, 176, 150, 162, 170, 142, 153, 161, 120, 131, 139, 105, 115, 124, 87, 97, 105, 65, 75, 81, 51, 58, 65, + 35, 40, 45, 17, 22, 25, 3, 5, 8, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 90, 107, 116, 75, 92, 99, 83, 99, 109, 86, 102, 113, 88, 105, 115, 82, 99, 108, 86, 103, 113, 83, 100, 112, 86, 102, 114, 88, 104, 116, 95, 111, 123, 95, 113, 123, 99, 117, 128, 106, 124, 134, + 105, 123, 133, 109, 128, 138, 124, 142, 153, 125, 143, 154, 136, 154, 165, 134, 153, 162, 145, 163, 172, 153, 172, 180, 161, 179, 188, 165, 183, 191, 170, 188, 198, 174, 192, 201, 183, 201, 210, 186, 204, 212, 183, 201, 209, 189, 207, 215, 196, 214, 224, 192, 209, 221, 192, 209, 219, 187, 205, 214, 186, 204, 213, + 186, 204, 214, 179, 197, 208, 177, 195, 205, 170, 188, 198, 161, 178, 189, 160, 177, 189, 145, 163, 174, 130, 150, 164, 119, 139, 155, 109, 129, 144, 114, 134, 148, 123, 142, 155, 123, 140, 153, 139, 157, 167, 152, 170, 180, 163, 182, 190, 169, 187, 195, 174, 192, 201, 178, 197, 207, 169, 188, 196, 180, 199, 207, + 185, 203, 211, 192, 209, 218, 194, 211, 220, 190, 207, 216, 199, 215, 224, 200, 218, 227, 198, 216, 224, 207, 224, 232, 206, 224, 231, 198, 216, 225, 187, 205, 216, 176, 194, 205, 177, 195, 205, 190, 208, 218, 201, 219, 226, 207, 224, 234, 201, 218, 227, 206, 225, 233, 208, 224, 235, 200, 216, 228, 193, 212, 222, + 193, 212, 221, 188, 206, 216, 191, 209, 217, 192, 210, 219, 201, 219, 228, 190, 206, 217, 191, 208, 216, 195, 212, 221, 202, 220, 227, 205, 223, 230, 225, 239, 246, 221, 235, 244, 212, 229, 236, 212, 229, 236, 218, 235, 242, 225, 241, 248, 210, 227, 236, 213, 229, 239, 226, 242, 250, 235, 249, 252, 243, 252, 253, + 246, 253, 254, 242, 254, 254, 243, 254, 254, 253, 255, 254, 244, 254, 253, 241, 253, 254, 248, 253, 254, 245, 253, 253, 246, 254, 254, 237, 250, 254, 236, 249, 253, 240, 252, 252, 235, 251, 254, 231, 245, 252, 225, 239, 248, 233, 247, 253, 243, 252, 254, 245, 254, 255, 249, 255, 254, 254, 255, 255, 254, 255, 255, + 249, 255, 254, 243, 255, 254, 247, 255, 255, 250, 254, 254, 244, 254, 254, 236, 253, 254, 202, 218, 235, 136, 155, 183, 141, 162, 192, 141, 164, 196, 120, 144, 184, 105, 132, 184, 85, 111, 175, 76, 103, 178, 103, 132, 205, 121, 146, 218, 132, 157, 232, 158, 186, 249, 162, 191, 253, 165, 191, 251, 167, 197, 253, + 160, 189, 253, 171, 201, 252, 151, 181, 253, 139, 169, 250, 139, 174, 253, 139, 170, 246, 132, 160, 238, 135, 160, 236, 130, 152, 226, 132, 154, 219, 137, 156, 214, 134, 157, 203, 165, 185, 213, 216, 234, 248, 236, 252, 253, 237, 253, 254, 235, 249, 253, 234, 247, 251, 231, 244, 250, 228, 242, 249, 238, 249, 253, + 234, 247, 250, 238, 250, 253, 236, 250, 253, 237, 250, 252, 237, 250, 254, 239, 251, 253, 237, 251, 254, 234, 248, 253, 236, 251, 255, 237, 249, 254, 234, 247, 254, 239, 253, 254, 239, 251, 254, 240, 253, 253, 236, 248, 254, 238, 251, 253, 240, 253, 255, 245, 254, 254, 251, 255, 254, 254, 255, 255, 255, 255, 255, + 255, 255, 255, 254, 255, 255, 253, 255, 255, 248, 254, 253, 242, 255, 255, 241, 255, 254, 242, 254, 254, 239, 252, 254, 236, 250, 254, 235, 249, 255, 231, 245, 253, 231, 244, 252, 228, 242, 250, 227, 240, 248, 225, 237, 245, 224, 237, 245, 221, 235, 243, 217, 230, 238, 210, 223, 231, 209, 222, 230, 206, 219, 227, + 201, 214, 222, 198, 211, 219, 196, 209, 217, 193, 207, 214, 186, 199, 206, 173, 185, 193, 152, 164, 172, 136, 147, 157, 125, 136, 145, 113, 124, 132, 99, 110, 117, 79, 88, 97, 62, 72, 75, 53, 60, 65, 47, 51, 57, 32, 36, 41, 12, 16, 20, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, + 86, 104, 112, 90, 107, 116, 91, 106, 118, 89, 105, 116, 83, 100, 111, 80, 97, 106, 81, 97, 108, 88, 105, 114, 89, 105, 116, 96, 113, 124, 94, 110, 122, 94, 110, 122, 97, 115, 124, 103, 122, 131, 107, 126, 135, 122, 140, 150, 117, 135, 146, 120, 138, 149, 126, 144, 155, 126, 144, 155, 141, 159, 169, + 152, 170, 178, 160, 178, 186, 173, 190, 199, 172, 190, 198, 181, 198, 207, 184, 202, 211, 183, 200, 209, 181, 198, 207, 186, 203, 212, 193, 210, 219, 185, 203, 214, 189, 207, 216, 190, 207, 217, 188, 206, 214, 185, 203, 213, 175, 192, 203, 166, 183, 195, 143, 162, 174, 148, 165, 178, 154, 173, 183, 150, 168, 180, + 142, 161, 174, 137, 156, 170, 123, 141, 157, 102, 121, 135, 88, 108, 120, 77, 97, 110, 85, 105, 116, 113, 131, 142, 144, 161, 171, 160, 178, 188, 164, 181, 190, 160, 178, 189, 164, 182, 190, 171, 189, 198, 174, 191, 200, 161, 179, 189, 174, 193, 202, 177, 194, 203, 181, 197, 207, 180, 197, 206, 189, 207, 216, + 187, 205, 213, 188, 206, 214, 192, 210, 221, 184, 202, 213, 178, 196, 207, 184, 202, 212, 191, 210, 219, 195, 212, 222, 201, 218, 227, 198, 215, 225, 203, 220, 229, 205, 221, 232, 199, 216, 225, 204, 222, 230, 199, 217, 225, 197, 215, 223, 194, 212, 221, 190, 208, 216, 198, 215, 224, 195, 211, 220, 191, 209, 216, + 194, 212, 219, 195, 213, 221, 197, 215, 221, 189, 207, 215, 197, 215, 223, 211, 227, 235, 227, 242, 249, 233, 249, 253, 220, 238, 246, 220, 236, 244, 215, 230, 238, 221, 235, 244, 214, 232, 238, 219, 235, 243, 232, 245, 253, 237, 252, 253, 244, 254, 254, 249, 254, 254, 242, 254, 253, 241, 253, 253, 253, 255, 255, + 254, 255, 255, 253, 254, 254, 234, 247, 252, 216, 232, 242, 220, 232, 240, 227, 241, 247, 219, 232, 244, 211, 228, 239, 240, 252, 254, 247, 254, 254, 249, 255, 254, 247, 255, 255, 247, 255, 254, 250, 254, 254, 246, 254, 254, 248, 254, 254, 242, 255, 253, 244, 255, 254, 253, 255, 255, 246, 255, 254, 205, 221, 237, + 84, 103, 137, 105, 123, 159, 108, 128, 166, 102, 126, 169, 73, 96, 152, 76, 101, 169, 87, 110, 184, 95, 124, 201, 107, 134, 213, 110, 138, 225, 121, 151, 237, 138, 170, 251, 147, 176, 252, 147, 178, 253, 148, 180, 252, 157, 187, 253, 146, 176, 254, 134, 162, 249, 133, 161, 248, 136, 166, 249, 133, 160, 243, + 138, 161, 240, 131, 152, 229, 125, 142, 214, 132, 149, 210, 121, 140, 194, 163, 184, 215, 217, 232, 249, 227, 244, 252, 236, 251, 254, 235, 250, 253, 237, 251, 252, 233, 247, 250, 235, 248, 254, 234, 248, 251, 233, 245, 250, 235, 247, 252, 229, 243, 248, 230, 242, 249, 235, 247, 252, 236, 249, 253, 231, 246, 252, + 235, 249, 254, 237, 249, 254, 230, 245, 252, 233, 245, 253, 234, 248, 255, 233, 247, 254, 237, 252, 254, 239, 252, 254, 240, 253, 254, 241, 255, 254, 246, 255, 255, 251, 255, 254, 254, 255, 255, 255, 255, 255, 253, 255, 255, 253, 255, 255, 253, 254, 254, 248, 255, 254, 243, 255, 255, 240, 253, 254, 238, 251, 255, + 238, 252, 255, 235, 249, 254, 233, 246, 254, 229, 242, 251, 227, 241, 249, 225, 241, 248, 225, 241, 247, 222, 235, 243, 223, 235, 243, 221, 233, 241, 216, 229, 237, 208, 221, 229, 208, 221, 229, 205, 218, 226, 201, 214, 222, 198, 211, 219, 196, 209, 217, 191, 204, 212, 186, 199, 205, 179, 190, 198, 167, 179, 187, + 145, 157, 166, 126, 136, 145, 102, 111, 120, 84, 94, 101, 79, 87, 94, 68, 76, 84, 55, 61, 67, 42, 46, 50, 19, 24, 29, 14, 19, 22, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 94, 112, 121, 90, 107, 116, 89, 105, 115, 85, 102, 112, 79, 95, 108, 81, 98, 109, 71, 88, 99, + 89, 103, 115, 95, 111, 124, 98, 116, 126, 88, 105, 117, 88, 104, 115, 95, 111, 122, 104, 122, 132, 112, 130, 140, 110, 128, 139, 112, 130, 141, 114, 132, 143, 124, 142, 153, 134, 153, 163, 147, 165, 173, 155, 173, 181, 168, 185, 194, 162, 179, 188, 168, 186, 194, 173, 191, 201, 175, 193, 202, 174, 192, 201, + 179, 197, 205, 187, 204, 213, 190, 207, 218, 189, 206, 217, 187, 205, 214, 187, 204, 214, 186, 203, 213, 167, 184, 196, 161, 179, 191, 139, 158, 171, 130, 149, 165, 140, 157, 171, 147, 166, 178, 145, 163, 173, 146, 166, 176, 138, 159, 171, 118, 138, 153, 102, 121, 135, 98, 117, 131, 102, 120, 133, 111, 128, 141, + 95, 115, 127, 97, 115, 128, 123, 142, 154, 139, 157, 169, 143, 160, 171, 164, 183, 191, 170, 188, 197, 184, 201, 210, 179, 196, 206, 175, 193, 202, 172, 190, 200, 169, 187, 198, 176, 195, 204, 194, 211, 220, 192, 211, 219, 201, 218, 227, 202, 219, 229, 195, 214, 222, 194, 212, 220, 197, 215, 224, 191, 209, 218, + 184, 201, 213, 192, 210, 218, 197, 213, 222, 198, 215, 224, 203, 219, 228, 192, 208, 220, 190, 208, 217, 186, 204, 213, 177, 196, 204, 176, 194, 204, 174, 192, 201, 167, 184, 195, 177, 194, 205, 185, 202, 211, 177, 195, 204, 178, 197, 206, 174, 191, 200, 185, 203, 211, 182, 200, 208, 189, 205, 214, 208, 226, 232, + 214, 229, 239, 210, 229, 237, 206, 224, 232, 215, 231, 238, 217, 231, 239, 221, 237, 244, 223, 237, 246, 230, 244, 251, 228, 242, 250, 241, 250, 253, 249, 254, 254, 251, 254, 254, 250, 254, 254, 252, 255, 255, 252, 255, 255, 249, 255, 255, 242, 254, 254, 231, 245, 249, 203, 219, 229, 193, 208, 219, 206, 222, 232, + 228, 242, 248, 235, 250, 254, 247, 254, 254, 254, 255, 255, 255, 255, 255, 241, 254, 254, 248, 254, 254, 249, 254, 254, 255, 255, 255, 249, 255, 254, 242, 255, 254, 253, 255, 255, 254, 254, 254, 240, 252, 254, 122, 138, 169, 56, 68, 110, 42, 55, 98, 53, 69, 116, 45, 64, 117, 66, 89, 153, 81, 104, 178, + 83, 109, 192, 81, 109, 199, 77, 107, 205, 89, 118, 223, 100, 135, 241, 109, 146, 250, 126, 162, 251, 126, 163, 253, 135, 168, 250, 140, 175, 253, 126, 157, 250, 125, 155, 248, 128, 158, 247, 120, 148, 240, 120, 147, 235, 124, 147, 229, 122, 141, 216, 126, 144, 208, 120, 137, 194, 157, 180, 213, 220, 237, 250, + 228, 244, 253, 232, 247, 253, 235, 247, 253, 234, 247, 252, 237, 249, 253, 237, 248, 252, 232, 246, 250, 233, 247, 251, 240, 252, 253, 232, 245, 250, 231, 245, 252, 228, 240, 249, 232, 245, 252, 230, 244, 251, 230, 243, 250, 230, 244, 250, 231, 245, 253, 237, 250, 255, 239, 253, 255, 239, 253, 255, 238, 252, 254, + 240, 253, 254, 238, 251, 254, 241, 255, 254, 244, 255, 255, 246, 254, 254, 252, 254, 254, 251, 255, 255, 249, 255, 254, 245, 255, 254, 247, 255, 254, 241, 254, 254, 241, 254, 254, 241, 254, 255, 239, 251, 254, 236, 249, 253, 233, 246, 255, 231, 245, 253, 229, 242, 252, 225, 238, 248, 225, 238, 246, 222, 235, 243, + 219, 233, 242, 219, 232, 240, 215, 229, 238, 214, 227, 235, 210, 223, 231, 206, 218, 226, 203, 216, 224, 201, 214, 222, 198, 211, 218, 192, 205, 213, 185, 197, 205, 179, 190, 198, 175, 186, 194, 171, 182, 190, 158, 171, 178, 138, 149, 157, 104, 114, 123, 85, 95, 102, 67, 76, 82, 63, 71, 78, 55, 61, 68, + 36, 40, 44, 22, 27, 32, 11, 16, 19, 2, 2, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 87, 103, 112, 82, 99, 108, 80, 97, 106, 79, 96, 104, 75, 92, 102, 76, 93, 101, 77, 93, 104, 98, 115, 124, 90, 106, 119, 83, 99, 110, 83, 100, 111, 95, 111, 123, 108, 125, 136, 112, 128, 139, + 106, 124, 135, 110, 128, 139, 105, 123, 134, 115, 133, 144, 128, 146, 156, 143, 162, 170, 151, 170, 179, 151, 168, 177, 152, 170, 179, 162, 179, 188, 162, 179, 187, 161, 179, 188, 169, 186, 195, 172, 191, 199, 182, 199, 209, 177, 195, 203, 186, 203, 214, 186, 203, 213, 187, 206, 214, 188, 205, 215, 181, 200, 210, + 176, 194, 205, 157, 176, 189, 129, 148, 161, 133, 151, 165, 146, 164, 176, 150, 168, 180, 146, 164, 175, 145, 163, 175, 135, 154, 166, 118, 137, 152, 105, 125, 139, 94, 113, 126, 79, 97, 111, 73, 92, 104, 78, 98, 109, 88, 106, 120, 94, 113, 126, 94, 113, 125, 149, 166, 175, 167, 184, 193, 175, 193, 201, + 191, 208, 218, 187, 204, 212, 187, 204, 212, 184, 201, 210, 182, 200, 209, 190, 209, 216, 192, 209, 218, 196, 215, 222, 201, 218, 227, 204, 221, 230, 204, 222, 229, 196, 215, 223, 203, 220, 229, 207, 223, 232, 207, 224, 233, 201, 220, 228, 197, 215, 224, 198, 215, 224, 203, 220, 230, 199, 217, 225, 193, 211, 221, + 185, 203, 212, 173, 191, 200, 178, 196, 206, 180, 197, 207, 181, 198, 207, 189, 206, 216, 193, 210, 219, 173, 192, 201, 169, 187, 197, 176, 193, 203, 170, 188, 198, 174, 192, 200, 185, 202, 210, 196, 214, 222, 200, 217, 225, 199, 217, 224, 198, 216, 224, 211, 227, 235, 211, 227, 235, 210, 226, 235, 210, 227, 236, + 224, 239, 247, 233, 247, 253, 224, 239, 247, 242, 253, 253, 253, 255, 255, 254, 254, 255, 251, 255, 254, 249, 255, 254, 251, 254, 255, 251, 254, 254, 249, 254, 254, 246, 254, 255, 242, 253, 255, 233, 248, 253, 233, 246, 251, 239, 250, 253, 254, 255, 255, 252, 255, 254, 252, 255, 254, 239, 253, 254, 251, 255, 254, + 245, 254, 254, 251, 255, 254, 242, 254, 253, 247, 255, 254, 254, 255, 255, 254, 255, 255, 253, 255, 254, 229, 244, 252, 135, 152, 183, 59, 74, 116, 23, 37, 86, 4, 12, 68, 15, 22, 84, 45, 63, 135, 52, 70, 143, 36, 52, 127, 25, 38, 110, 29, 41, 132, 52, 76, 199, 77, 113, 237, 87, 127, 245, + 98, 138, 250, 111, 148, 252, 115, 146, 251, 106, 138, 246, 108, 137, 245, 108, 139, 241, 113, 142, 241, 106, 135, 231, 105, 132, 223, 108, 131, 211, 115, 134, 203, 118, 139, 195, 181, 206, 232, 222, 238, 253, 222, 241, 250, 232, 249, 253, 232, 245, 251, 233, 247, 253, 236, 248, 254, 237, 249, 252, 231, 245, 250, + 233, 245, 251, 234, 246, 249, 236, 248, 251, 232, 243, 250, 229, 241, 250, 232, 244, 252, 231, 245, 252, 233, 246, 253, 230, 246, 252, 232, 245, 253, 234, 249, 254, 239, 252, 254, 238, 251, 254, 243, 255, 254, 244, 255, 254, 241, 254, 254, 242, 255, 254, 242, 254, 253, 249, 255, 254, 250, 255, 254, 244, 254, 253, + 242, 254, 254, 241, 255, 254, 243, 255, 255, 241, 254, 254, 240, 253, 254, 240, 254, 253, 238, 250, 254, 235, 248, 254, 231, 244, 253, 229, 245, 252, 229, 242, 252, 227, 242, 250, 225, 239, 247, 221, 234, 242, 222, 235, 242, 221, 233, 241, 216, 231, 239, 213, 226, 234, 207, 222, 230, 203, 216, 224, 198, 211, 219, + 197, 209, 217, 191, 203, 211, 183, 196, 204, 181, 192, 199, 171, 183, 191, 157, 168, 176, 156, 167, 175, 159, 170, 178, 147, 158, 166, 119, 130, 138, 85, 95, 102, 59, 64, 69, 50, 56, 61, 37, 44, 48, 27, 33, 38, 16, 21, 26, 1, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, + 83, 98, 108, 81, 95, 105, 76, 92, 101, 80, 95, 104, 75, 92, 101, 74, 91, 101, 86, 103, 113, 93, 110, 119, 82, 98, 111, 82, 101, 109, 96, 112, 123, 107, 123, 132, 102, 119, 130, 99, 116, 126, 107, 125, 134, 109, 127, 138, 107, 125, 136, 122, 141, 151, 136, 155, 163, 145, 164, 173, 141, 160, 169, + 140, 159, 168, 146, 165, 175, 153, 173, 181, 157, 175, 183, 167, 184, 194, 168, 185, 195, 165, 183, 191, 177, 194, 204, 182, 199, 208, 180, 197, 207, 188, 205, 214, 181, 198, 208, 187, 206, 213, 181, 199, 210, 166, 184, 196, 150, 167, 182, 138, 157, 170, 113, 132, 145, 120, 138, 151, 129, 146, 160, 141, 159, 171, + 126, 144, 157, 115, 133, 146, 102, 121, 134, 92, 111, 123, 80, 99, 112, 74, 93, 104, 80, 98, 108, 83, 102, 114, 89, 108, 122, 97, 115, 128, 116, 133, 146, 135, 154, 164, 126, 144, 156, 153, 170, 180, 162, 180, 189, 176, 194, 201, 175, 192, 200, 173, 191, 200, 179, 196, 205, 187, 204, 212, 195, 212, 221, + 198, 215, 223, 196, 213, 221, 200, 217, 226, 200, 217, 225, 197, 215, 223, 210, 227, 236, 205, 222, 231, 204, 221, 230, 199, 217, 226, 191, 208, 217, 189, 207, 217, 180, 198, 207, 187, 203, 212, 196, 213, 221, 191, 208, 216, 178, 196, 206, 167, 186, 197, 157, 176, 186, 156, 174, 185, 150, 167, 179, 164, 182, 193, + 181, 199, 208, 180, 198, 206, 182, 199, 210, 167, 185, 195, 172, 189, 199, 178, 195, 205, 179, 196, 206, 194, 211, 219, 190, 207, 216, 182, 199, 207, 194, 212, 220, 195, 213, 222, 188, 204, 214, 197, 213, 222, 212, 227, 235, 221, 236, 244, 236, 249, 254, 236, 251, 253, 240, 252, 253, 250, 255, 255, 249, 254, 254, + 250, 253, 254, 251, 254, 255, 252, 254, 254, 243, 253, 254, 234, 246, 252, 240, 252, 254, 236, 250, 253, 236, 249, 254, 237, 250, 254, 248, 254, 254, 250, 255, 254, 252, 255, 254, 245, 253, 253, 248, 254, 254, 239, 254, 253, 246, 255, 254, 252, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, + 253, 255, 254, 241, 254, 255, 186, 205, 232, 93, 113, 153, 46, 65, 117, 15, 27, 91, 0, 3, 73, 0, 0, 29, 0, 0, 3, 0, 0, 2, 0, 0, 34, 0, 0, 91, 32, 51, 191, 66, 103, 236, 84, 119, 241, 88, 123, 243, 91, 123, 245, 84, 112, 236, 88, 117, 235, 93, 119, 235, 88, 118, 228, + 86, 116, 218, 74, 104, 200, 85, 112, 197, 101, 126, 195, 144, 173, 217, 216, 238, 252, 227, 246, 254, 225, 241, 252, 231, 246, 252, 228, 243, 250, 233, 245, 252, 237, 250, 254, 236, 248, 252, 235, 249, 252, 227, 239, 247, 235, 247, 251, 232, 245, 251, 228, 240, 247, 228, 242, 249, 229, 242, 250, 231, 244, 252, + 236, 249, 253, 236, 251, 254, 237, 252, 255, 240, 252, 254, 240, 253, 253, 241, 253, 254, 248, 254, 254, 248, 255, 254, 242, 254, 254, 242, 254, 254, 245, 254, 254, 249, 255, 254, 247, 254, 255, 247, 255, 254, 244, 254, 254, 241, 254, 253, 242, 254, 254, 240, 254, 254, 241, 254, 254, 239, 251, 253, 233, 245, 254, + 231, 244, 253, 230, 245, 253, 230, 245, 252, 230, 242, 250, 225, 238, 247, 219, 234, 242, 217, 231, 240, 217, 231, 239, 216, 230, 237, 215, 229, 237, 214, 226, 234, 208, 221, 229, 205, 217, 225, 199, 211, 219, 195, 207, 215, 184, 197, 205, 176, 189, 197, 172, 184, 192, 171, 184, 192, 161, 172, 180, 151, 163, 170, + 143, 154, 162, 144, 155, 163, 133, 144, 151, 108, 117, 126, 79, 86, 95, 53, 59, 65, 48, 54, 58, 25, 31, 35, 8, 12, 15, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 2, 1, 2, 81, 99, 107, 87, 104, 114, 85, 100, 112, 85, 102, 111, 80, 97, 109, 79, 96, 105, 87, 104, 115, + 81, 98, 107, 81, 98, 107, 92, 109, 119, 98, 114, 125, 93, 109, 118, 93, 109, 121, 96, 112, 123, 110, 127, 136, 119, 137, 147, 123, 141, 150, 130, 148, 159, 130, 149, 157, 131, 150, 159, 131, 150, 160, 139, 156, 167, 147, 165, 174, 153, 171, 179, 152, 169, 179, 152, 169, 180, 163, 180, 188, 177, 193, 203, + 174, 192, 200, 173, 190, 199, 180, 197, 206, 184, 201, 210, 185, 203, 210, 185, 203, 211, 168, 186, 197, 150, 168, 180, 140, 158, 173, 117, 138, 152, 122, 141, 154, 115, 133, 147, 123, 141, 154, 112, 131, 144, 96, 115, 128, 91, 110, 122, 97, 116, 129, 96, 115, 128, 91, 110, 123, 92, 110, 122, 93, 111, 123, + 90, 110, 121, 92, 111, 124, 98, 116, 129, 96, 114, 126, 83, 102, 113, 108, 125, 138, 114, 132, 145, 121, 140, 152, 133, 151, 162, 151, 169, 179, 160, 179, 187, 169, 187, 196, 171, 188, 197, 174, 192, 201, 172, 189, 198, 176, 193, 202, 188, 205, 214, 185, 202, 211, 184, 203, 211, 189, 207, 215, 198, 215, 224, + 191, 209, 218, 188, 206, 214, 193, 210, 219, 188, 206, 214, 178, 197, 206, 185, 202, 211, 187, 204, 214, 187, 204, 214, 193, 210, 219, 180, 197, 206, 175, 193, 201, 180, 198, 207, 168, 185, 196, 169, 187, 199, 170, 188, 199, 176, 195, 201, 169, 187, 197, 158, 176, 185, 157, 174, 186, 154, 172, 183, 151, 170, 180, + 167, 184, 193, 172, 189, 198, 168, 185, 194, 169, 186, 195, 180, 196, 207, 180, 197, 206, 175, 191, 201, 187, 205, 212, 199, 216, 224, 221, 237, 244, 233, 246, 251, 222, 238, 245, 233, 246, 249, 232, 247, 251, 235, 247, 252, 233, 248, 251, 233, 245, 248, 235, 245, 249, 234, 246, 251, 229, 243, 249, 237, 250, 253, + 247, 254, 253, 251, 254, 254, 250, 253, 254, 240, 253, 253, 249, 254, 254, 251, 255, 255, 250, 254, 254, 241, 254, 254, 247, 254, 255, 252, 255, 254, 252, 255, 255, 251, 255, 255, 255, 255, 255, 254, 255, 255, 254, 255, 255, 250, 255, 255, 235, 252, 255, 220, 241, 255, 167, 190, 224, 80, 105, 161, 40, 56, 127, + 10, 19, 97, 3, 4, 62, 2, 2, 33, 1, 1, 58, 1, 2, 94, 2, 3, 138, 50, 83, 223, 72, 103, 232, 74, 102, 235, 75, 99, 231, 72, 92, 229, 76, 102, 229, 77, 104, 225, 74, 103, 215, 52, 77, 177, 26, 54, 147, 80, 109, 187, 146, 180, 226, 209, 238, 255, 226, 245, 253, 227, 245, 252, + 228, 243, 253, 221, 236, 248, 230, 244, 250, 231, 243, 251, 234, 248, 253, 231, 244, 248, 232, 246, 251, 236, 248, 252, 236, 248, 250, 230, 242, 246, 236, 248, 252, 234, 247, 253, 229, 242, 250, 231, 244, 252, 236, 249, 254, 232, 246, 252, 233, 247, 253, 238, 250, 254, 238, 251, 254, 243, 254, 253, 248, 254, 254, + 242, 255, 254, 241, 253, 254, 240, 253, 255, 240, 254, 254, 242, 254, 255, 241, 255, 254, 240, 254, 254, 242, 254, 253, 240, 254, 254, 240, 253, 254, 237, 252, 253, 240, 252, 255, 237, 251, 254, 232, 246, 254, 230, 243, 251, 226, 240, 248, 225, 238, 247, 223, 236, 245, 222, 234, 244, 219, 232, 242, 217, 229, 239, + 215, 230, 238, 213, 228, 235, 213, 226, 234, 211, 226, 233, 210, 223, 231, 209, 220, 228, 201, 214, 222, 197, 210, 218, 188, 201, 209, 180, 193, 201, 175, 188, 196, 173, 185, 193, 168, 179, 187, 150, 161, 169, 137, 147, 157, 124, 135, 143, 127, 139, 147, 120, 131, 139, 98, 107, 116, 81, 89, 97, 64, 71, 76, + 37, 42, 46, 13, 17, 22, 4, 7, 8, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 2, 1, 2, 5, 2, 4, 7, 3, 7, 14, 83, 101, 109, 84, 102, 109, 91, 108, 117, 77, 94, 103, 79, 96, 105, 86, 102, 110, 74, 91, 100, 76, 93, 102, 91, 108, 116, 96, 113, 122, 95, 112, 123, 94, 111, 120, 103, 119, 130, 116, 132, 142, + 121, 139, 150, 116, 134, 145, 112, 131, 141, 118, 137, 144, 114, 132, 143, 122, 139, 151, 129, 148, 157, 136, 154, 163, 133, 151, 162, 130, 149, 160, 142, 160, 171, 150, 168, 177, 170, 187, 195, 171, 188, 197, 167, 184, 193, 177, 194, 203, 179, 196, 205, 183, 200, 209, 181, 199, 207, 169, 187, 197, 146, 165, 177, + 128, 149, 163, 115, 135, 149, 112, 130, 145, 122, 141, 154, 105, 124, 138, 97, 116, 130, 88, 108, 121, 97, 115, 128, 119, 138, 149, 104, 124, 136, 94, 112, 125, 102, 120, 132, 97, 114, 127, 96, 116, 126, 95, 114, 125, 91, 109, 121, 82, 100, 111, 79, 97, 108, 93, 111, 122, 90, 107, 119, 81, 99, 112, + 86, 105, 118, 110, 128, 140, 123, 142, 153, 137, 156, 165, 144, 162, 172, 137, 154, 164, 148, 165, 176, 164, 181, 190, 163, 180, 189, 165, 183, 191, 172, 189, 199, 171, 190, 199, 179, 195, 205, 184, 201, 210, 186, 205, 213, 183, 201, 209, 175, 194, 203, 170, 188, 198, 150, 167, 179, 153, 171, 182, 157, 174, 185, + 162, 179, 191, 164, 182, 193, 164, 181, 191, 169, 188, 196, 162, 180, 191, 153, 171, 182, 157, 174, 187, 159, 177, 188, 164, 182, 192, 154, 172, 183, 158, 176, 186, 161, 178, 188, 155, 173, 184, 156, 175, 185, 161, 179, 190, 160, 178, 187, 157, 175, 184, 148, 164, 176, 152, 169, 182, 159, 175, 187, 163, 179, 191, + 187, 205, 214, 200, 217, 225, 199, 216, 224, 202, 218, 226, 191, 206, 217, 188, 204, 215, 212, 227, 237, 239, 251, 254, 228, 242, 249, 206, 223, 231, 195, 211, 221, 208, 224, 233, 215, 229, 239, 228, 242, 249, 238, 250, 252, 235, 248, 252, 228, 242, 249, 225, 240, 246, 234, 248, 253, 242, 253, 253, 232, 246, 251, + 230, 248, 252, 231, 249, 253, 251, 255, 254, 241, 254, 254, 237, 254, 254, 253, 255, 255, 254, 254, 254, 255, 255, 255, 252, 255, 254, 251, 255, 254, 238, 253, 253, 235, 254, 255, 183, 210, 244, 148, 179, 228, 79, 109, 180, 21, 36, 128, 1, 2, 94, 1, 2, 86, 0, 1, 109, 2, 3, 142, 45, 69, 211, + 61, 89, 222, 66, 89, 225, 60, 79, 218, 60, 78, 216, 66, 89, 217, 72, 100, 215, 57, 87, 194, 16, 50, 144, 70, 113, 189, 169, 205, 249, 206, 235, 255, 229, 251, 254, 230, 251, 253, 230, 248, 254, 225, 240, 249, 224, 238, 246, 234, 247, 253, 231, 243, 250, 234, 247, 253, 241, 254, 254, 237, 249, 253, + 240, 251, 253, 236, 248, 252, 233, 245, 251, 231, 243, 250, 233, 245, 249, 236, 249, 253, 225, 238, 246, 230, 245, 251, 229, 247, 253, 232, 247, 254, 234, 247, 254, 238, 251, 253, 238, 252, 254, 242, 253, 254, 242, 253, 254, 241, 253, 254, 239, 252, 254, 237, 250, 254, 236, 249, 254, 238, 252, 253, 239, 253, 255, + 236, 250, 253, 237, 250, 253, 238, 251, 254, 239, 251, 254, 237, 251, 254, 236, 250, 254, 234, 247, 254, 231, 245, 253, 224, 237, 246, 224, 236, 246, 221, 237, 245, 223, 236, 245, 220, 236, 244, 217, 230, 239, 215, 231, 239, 214, 228, 237, 212, 225, 233, 211, 226, 232, 210, 223, 231, 208, 221, 229, 205, 218, 226, + 202, 215, 223, 195, 208, 215, 187, 200, 208, 184, 195, 203, 174, 188, 196, 165, 177, 184, 155, 167, 174, 142, 153, 161, 122, 134, 140, 117, 128, 136, 118, 129, 137, 111, 119, 128, 92, 101, 110, 63, 68, 73, 34, 39, 42, 16, 20, 24, 6, 9, 13, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 3, 5, 10, 7, 15, 22, 11, 22, 31, 18, 28, 37, + 82, 99, 108, 77, 94, 103, 75, 90, 100, 75, 92, 101, 74, 91, 100, 73, 91, 100, 82, 97, 106, 88, 104, 113, 90, 106, 115, 99, 117, 125, 93, 109, 120, 100, 116, 126, 104, 121, 131, 108, 124, 136, 110, 126, 138, 111, 128, 140, 121, 138, 149, 110, 128, 137, 120, 138, 148, 125, 141, 153, 125, 144, 153, + 123, 141, 152, 131, 149, 159, 130, 148, 159, 140, 158, 168, 151, 169, 178, 164, 181, 190, 155, 172, 181, 164, 181, 190, 172, 189, 198, 173, 190, 199, 167, 184, 193, 159, 178, 187, 136, 155, 168, 133, 151, 165, 133, 153, 165, 135, 154, 169, 126, 144, 157, 107, 125, 141, 89, 109, 122, 86, 106, 120, 80, 99, 112, + 92, 111, 123, 94, 112, 123, 79, 97, 110, 80, 98, 109, 69, 86, 97, 75, 92, 103, 82, 100, 111, 83, 101, 112, 94, 112, 123, 88, 106, 117, 82, 100, 111, 82, 100, 111, 86, 104, 116, 86, 105, 117, 84, 103, 115, 81, 100, 113, 86, 103, 117, 102, 120, 133, 102, 121, 134, 103, 120, 133, 107, 126, 139, + 139, 158, 167, 144, 163, 172, 167, 184, 193, 174, 192, 200, 183, 200, 209, 180, 196, 206, 181, 198, 206, 181, 199, 208, 173, 191, 200, 175, 194, 202, 166, 184, 195, 154, 173, 184, 147, 166, 178, 148, 167, 178, 168, 187, 197, 172, 189, 201, 175, 193, 202, 176, 194, 202, 172, 190, 199, 165, 183, 193, 166, 184, 194, + 179, 196, 206, 179, 197, 206, 172, 190, 199, 180, 198, 207, 186, 203, 210, 191, 208, 216, 178, 196, 205, 176, 193, 202, 163, 182, 192, 144, 162, 173, 134, 153, 166, 135, 151, 165, 132, 150, 163, 130, 147, 161, 160, 175, 187, 206, 223, 231, 211, 228, 236, 217, 232, 241, 190, 207, 219, 177, 193, 206, 195, 211, 219, + 238, 250, 254, 236, 249, 253, 226, 242, 249, 210, 227, 236, 174, 190, 202, 191, 207, 217, 221, 237, 245, 231, 246, 252, 223, 238, 247, 201, 218, 227, 198, 214, 224, 221, 236, 245, 241, 254, 254, 239, 253, 254, 223, 239, 248, 230, 246, 253, 245, 254, 253, 243, 254, 254, 240, 254, 254, 244, 254, 254, 253, 255, 255, + 255, 255, 255, 253, 254, 254, 249, 255, 255, 242, 253, 253, 242, 254, 253, 219, 241, 254, 206, 233, 255, 166, 201, 245, 86, 123, 196, 10, 27, 125, 3, 3, 109, 2, 2, 129, 10, 15, 162, 39, 60, 199, 57, 81, 214, 60, 82, 214, 46, 60, 203, 50, 65, 205, 64, 86, 210, 67, 103, 209, 82, 137, 224, + 121, 173, 240, 158, 201, 249, 194, 226, 254, 215, 241, 254, 228, 250, 253, 231, 249, 253, 230, 248, 254, 225, 242, 249, 224, 237, 245, 229, 243, 249, 230, 244, 249, 235, 248, 252, 240, 253, 254, 240, 251, 253, 235, 247, 251, 234, 248, 252, 231, 244, 248, 233, 245, 251, 230, 242, 249, 237, 249, 252, 232, 245, 252, + 234, 246, 251, 228, 246, 253, 234, 249, 254, 234, 246, 254, 236, 247, 254, 234, 248, 254, 233, 248, 254, 235, 249, 254, 237, 250, 253, 239, 251, 254, 236, 249, 254, 233, 247, 253, 234, 248, 254, 240, 253, 253, 235, 251, 254, 238, 250, 254, 240, 252, 254, 239, 251, 254, 238, 253, 255, 239, 253, 254, 235, 249, 254, + 232, 243, 253, 231, 245, 252, 229, 241, 250, 227, 240, 249, 223, 240, 247, 222, 239, 246, 217, 232, 241, 216, 231, 239, 216, 229, 239, 213, 227, 235, 213, 227, 235, 213, 226, 234, 209, 222, 230, 209, 222, 230, 207, 219, 227, 199, 211, 219, 194, 204, 213, 186, 197, 205, 173, 186, 194, 166, 177, 184, 146, 158, 165, + 138, 149, 158, 127, 137, 146, 114, 125, 133, 104, 114, 122, 108, 117, 126, 99, 108, 117, 68, 75, 82, 42, 47, 51, 29, 34, 40, 11, 17, 21, 1, 2, 2, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 3, 5, 5, 11, 19, 14, 24, 32, 21, 31, 39, 31, 41, 50, 38, 48, 57, 79, 94, 104, 70, 87, 98, 71, 86, 96, 70, 87, 96, 81, 98, 108, 79, 96, 106, 84, 100, 109, + 85, 102, 111, 90, 106, 115, 88, 106, 115, 93, 109, 120, 94, 111, 121, 102, 119, 129, 101, 119, 129, 107, 125, 135, 111, 129, 139, 108, 126, 136, 105, 123, 133, 109, 127, 137, 110, 127, 138, 125, 144, 155, 123, 141, 151, 115, 133, 145, 127, 145, 155, 146, 164, 172, 152, 171, 178, 154, 172, 180, 159, 178, 186, + 161, 179, 188, 162, 179, 188, 160, 178, 187, 149, 168, 178, 146, 165, 177, 142, 161, 173, 149, 168, 179, 147, 164, 177, 127, 147, 160, 119, 138, 152, 114, 134, 149, 111, 130, 146, 92, 111, 125, 77, 98, 110, 69, 87, 99, 60, 78, 91, 73, 91, 103, 54, 72, 83, 53, 69, 80, 56, 72, 84, 62, 78, 89, + 55, 72, 85, 65, 81, 91, 63, 79, 91, 83, 101, 111, 87, 105, 116, 107, 126, 138, 95, 113, 126, 86, 104, 117, 96, 115, 129, 109, 126, 139, 111, 131, 143, 101, 119, 132, 112, 131, 143, 128, 147, 159, 137, 155, 166, 154, 172, 181, 153, 170, 180, 148, 166, 176, 163, 180, 190, 170, 188, 197, 157, 175, 184, + 150, 168, 179, 166, 185, 193, 154, 172, 184, 165, 183, 193, 170, 187, 199, 175, 193, 203, 175, 193, 201, 188, 205, 214, 189, 206, 216, 168, 185, 196, 161, 181, 191, 177, 195, 203, 170, 188, 197, 176, 194, 201, 201, 218, 226, 190, 207, 216, 180, 197, 205, 175, 193, 202, 182, 200, 208, 174, 192, 200, 184, 202, 210, + 188, 204, 213, 184, 202, 209, 177, 195, 204, 188, 206, 214, 203, 218, 225, 197, 215, 224, 174, 192, 202, 160, 176, 187, 207, 224, 231, 217, 233, 241, 216, 232, 239, 203, 219, 229, 190, 206, 218, 196, 212, 220, 221, 236, 246, 227, 242, 248, 231, 247, 252, 221, 237, 244, 194, 210, 222, 202, 218, 227, 224, 240, 244, + 242, 253, 255, 235, 248, 253, 204, 219, 229, 192, 209, 218, 217, 235, 244, 242, 253, 254, 238, 250, 253, 220, 237, 247, 228, 243, 249, 244, 253, 254, 235, 251, 253, 233, 251, 254, 244, 254, 255, 253, 255, 254, 254, 254, 254, 243, 254, 254, 247, 255, 254, 254, 255, 255, 247, 254, 254, 235, 255, 253, 226, 252, 254, + 204, 234, 254, 161, 199, 249, 73, 108, 193, 17, 29, 140, 15, 20, 149, 31, 43, 175, 39, 58, 192, 50, 70, 201, 51, 69, 202, 32, 42, 189, 49, 66, 200, 66, 91, 206, 72, 122, 214, 129, 185, 249, 169, 213, 255, 187, 225, 254, 210, 238, 254, 224, 245, 253, 230, 250, 254, 232, 249, 254, 233, 248, 254, + 224, 238, 247, 226, 239, 248, 234, 248, 253, 233, 247, 252, 234, 246, 251, 236, 250, 253, 237, 249, 253, 236, 247, 250, 232, 245, 249, 230, 245, 251, 234, 246, 251, 227, 239, 246, 226, 239, 248, 231, 244, 252, 230, 243, 250, 228, 241, 248, 232, 245, 252, 232, 246, 252, 237, 249, 253, 236, 250, 253, 238, 251, 253, + 238, 250, 252, 241, 253, 254, 239, 251, 254, 237, 250, 253, 238, 250, 254, 232, 248, 254, 236, 249, 253, 237, 250, 254, 236, 251, 254, 237, 252, 255, 237, 252, 254, 239, 252, 255, 240, 254, 255, 239, 252, 254, 233, 247, 253, 233, 245, 253, 231, 244, 252, 229, 240, 249, 223, 239, 246, 224, 240, 247, 221, 236, 243, + 219, 234, 242, 219, 233, 239, 217, 228, 237, 215, 228, 237, 214, 227, 235, 212, 225, 233, 208, 221, 229, 208, 219, 227, 204, 216, 224, 200, 212, 220, 191, 202, 209, 181, 194, 201, 170, 182, 189, 154, 165, 172, 135, 145, 153, 126, 136, 144, 117, 128, 136, 99, 108, 117, 92, 101, 110, 93, 102, 111, 80, 90, 97, + 62, 69, 75, 40, 45, 50, 24, 32, 36, 5, 7, 10, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, + 3, 7, 10, 9, 17, 25, 18, 28, 36, 28, 39, 47, 40, 50, 59, 51, 62, 71, 56, 69, 79, 72, 88, 95, 69, 86, 94, 72, 87, 96, 70, 86, 95, 73, 89, 98, 74, 90, 99, 80, 97, 106, 91, 108, 117, 92, 109, 119, 92, 108, 118, 97, 113, 124, 100, 116, 126, 100, 116, 129, 100, 117, 128, + 95, 114, 122, 92, 110, 119, 93, 109, 121, 100, 117, 128, 110, 127, 138, 119, 137, 147, 121, 139, 150, 115, 133, 144, 114, 131, 142, 134, 152, 162, 144, 162, 173, 152, 171, 180, 145, 163, 171, 152, 171, 179, 150, 168, 179, 163, 182, 190, 155, 173, 183, 153, 171, 182, 158, 176, 187, 155, 172, 184, 136, 155, 168, + 134, 153, 167, 146, 164, 176, 141, 158, 171, 130, 150, 164, 114, 133, 148, 99, 119, 133, 92, 112, 125, 71, 89, 102, 74, 91, 103, 68, 85, 98, 64, 80, 93, 53, 69, 80, 45, 62, 72, 42, 58, 69, 54, 70, 82, 69, 86, 96, 84, 100, 112, 84, 101, 112, 91, 108, 119, 98, 116, 126, 105, 122, 134, + 111, 129, 142, 107, 125, 138, 118, 136, 148, 133, 152, 165, 131, 149, 161, 141, 159, 170, 148, 166, 177, 147, 165, 177, 112, 130, 144, 114, 133, 145, 118, 136, 150, 120, 138, 151, 114, 132, 145, 114, 132, 147, 118, 139, 150, 134, 153, 165, 137, 156, 169, 145, 163, 175, 159, 177, 187, 164, 182, 192, 176, 194, 203, + 192, 210, 217, 204, 222, 229, 194, 211, 219, 188, 205, 213, 181, 198, 206, 183, 202, 209, 191, 209, 216, 200, 218, 225, 208, 224, 232, 217, 232, 239, 220, 236, 243, 216, 232, 240, 214, 230, 238, 220, 236, 244, 219, 232, 240, 207, 225, 232, 198, 215, 223, 193, 210, 218, 187, 203, 212, 175, 194, 202, 182, 200, 209, + 184, 201, 211, 218, 232, 241, 231, 244, 251, 230, 245, 253, 225, 240, 247, 226, 242, 247, 218, 233, 241, 228, 243, 248, 241, 254, 255, 239, 253, 253, 241, 254, 255, 231, 246, 252, 226, 240, 248, 241, 254, 254, 252, 254, 254, 249, 254, 255, 241, 253, 255, 214, 230, 241, 224, 236, 245, 240, 254, 254, 228, 243, 249, + 214, 231, 241, 237, 251, 254, 236, 252, 253, 234, 248, 253, 234, 252, 254, 239, 253, 253, 249, 255, 254, 244, 254, 253, 241, 254, 253, 255, 255, 254, 252, 255, 255, 232, 248, 254, 237, 254, 254, 224, 244, 253, 208, 236, 254, 187, 219, 253, 107, 142, 212, 53, 75, 169, 37, 52, 164, 43, 61, 180, 43, 61, 188, + 51, 71, 198, 45, 63, 192, 41, 50, 189, 49, 69, 195, 71, 102, 204, 100, 157, 236, 152, 197, 249, 187, 224, 254, 201, 234, 254, 215, 241, 254, 226, 246, 253, 229, 247, 254, 228, 244, 253, 228, 244, 251, 226, 240, 247, 228, 241, 248, 238, 250, 254, 231, 243, 250, 234, 247, 252, 239, 251, 253, 237, 249, 253, + 232, 243, 250, 230, 242, 251, 226, 238, 244, 225, 237, 244, 226, 239, 246, 230, 243, 251, 230, 242, 250, 227, 243, 250, 221, 237, 244, 223, 239, 247, 225, 237, 247, 228, 242, 249, 226, 241, 247, 228, 240, 247, 232, 246, 251, 236, 248, 253, 238, 250, 255, 237, 250, 254, 238, 251, 254, 236, 249, 254, 235, 247, 254, + 234, 247, 255, 234, 249, 254, 235, 248, 255, 237, 252, 255, 238, 251, 254, 236, 251, 253, 236, 249, 254, 234, 248, 255, 233, 246, 254, 231, 244, 252, 228, 241, 249, 226, 242, 249, 228, 241, 249, 224, 237, 245, 220, 232, 242, 218, 231, 240, 215, 227, 237, 214, 227, 235, 214, 227, 235, 212, 225, 233, 209, 222, 230, + 206, 219, 228, 207, 219, 226, 202, 215, 223, 198, 209, 216, 190, 202, 210, 180, 192, 198, 168, 180, 186, 156, 168, 175, 136, 148, 156, 119, 130, 138, 103, 112, 121, 93, 102, 111, 78, 87, 96, 69, 77, 84, 64, 73, 77, 54, 61, 66, 29, 36, 39, 11, 14, 17, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 3, 7, 10, 10, 20, 26, 20, 30, 39, 35, 45, 54, 47, 60, 69, 59, 70, 80, 69, 82, 92, 75, 92, 102, + 68, 84, 92, 63, 77, 87, 61, 77, 86, 65, 79, 89, 71, 88, 96, 82, 98, 107, 80, 97, 106, 92, 109, 118, 90, 107, 116, 91, 109, 118, 102, 119, 128, 101, 118, 127, 93, 109, 121, 87, 104, 115, 78, 94, 105, 87, 106, 114, 98, 116, 127, 114, 132, 143, 120, 138, 148, 111, 129, 140, 113, 131, 142, + 105, 123, 135, 117, 135, 145, 140, 158, 168, 148, 165, 176, 145, 162, 173, 145, 163, 172, 152, 171, 179, 153, 171, 180, 152, 171, 180, 153, 170, 183, 156, 174, 183, 150, 168, 180, 144, 161, 173, 141, 160, 172, 148, 167, 179, 155, 173, 185, 153, 170, 182, 142, 162, 175, 121, 140, 154, 105, 124, 139, 97, 118, 131, + 86, 106, 118, 80, 99, 112, 63, 80, 92, 62, 81, 92, 67, 85, 96, 77, 95, 105, 66, 83, 94, 58, 76, 85, 59, 75, 84, 61, 77, 87, 50, 63, 72, 56, 71, 82, 76, 93, 103, 79, 96, 106, 108, 125, 137, 125, 143, 152, 125, 142, 153, 126, 144, 157, 133, 152, 163, 132, 150, 162, 125, 145, 156, + 114, 133, 146, 124, 142, 155, 116, 135, 148, 116, 134, 148, 123, 142, 155, 130, 149, 163, 139, 158, 170, 153, 170, 182, 161, 179, 187, 181, 198, 208, 193, 209, 218, 194, 212, 220, 197, 214, 220, 202, 219, 226, 204, 221, 228, 204, 221, 228, 202, 220, 227, 198, 215, 222, 197, 213, 220, 180, 198, 205, 172, 189, 198, + 174, 193, 201, 178, 195, 203, 179, 197, 205, 193, 210, 217, 194, 211, 221, 189, 206, 214, 189, 207, 214, 183, 201, 209, 185, 202, 211, 191, 209, 215, 210, 226, 235, 220, 236, 244, 218, 235, 242, 200, 218, 226, 190, 206, 215, 212, 229, 236, 229, 243, 251, 235, 249, 254, 242, 253, 255, 245, 254, 254, 236, 250, 254, + 239, 252, 255, 234, 248, 252, 230, 244, 249, 234, 246, 253, 236, 250, 253, 235, 250, 254, 237, 249, 253, 249, 254, 253, 252, 255, 255, 237, 249, 252, 231, 245, 250, 250, 255, 255, 238, 252, 252, 245, 254, 253, 244, 254, 254, 234, 250, 253, 236, 252, 255, 243, 253, 254, 234, 250, 253, 231, 246, 252, 240, 253, 254, + 237, 253, 253, 242, 253, 253, 252, 255, 254, 241, 253, 254, 235, 251, 254, 241, 254, 254, 231, 249, 252, 221, 245, 254, 195, 226, 252, 130, 163, 223, 84, 110, 193, 49, 69, 172, 51, 70, 181, 47, 66, 181, 46, 63, 184, 34, 46, 176, 38, 52, 182, 62, 85, 198, 82, 121, 212, 127, 177, 243, 182, 221, 254, + 195, 228, 253, 211, 237, 253, 222, 247, 252, 226, 245, 253, 229, 246, 253, 229, 244, 252, 221, 236, 244, 221, 233, 242, 225, 238, 247, 232, 245, 250, 232, 243, 250, 230, 242, 247, 233, 245, 250, 233, 246, 251, 234, 246, 252, 227, 240, 247, 223, 235, 243, 229, 243, 248, 226, 239, 247, 224, 237, 245, 228, 241, 249, + 231, 242, 250, 220, 235, 244, 218, 235, 243, 219, 234, 243, 217, 233, 241, 220, 234, 244, 216, 231, 238, 222, 236, 244, 230, 243, 251, 232, 245, 252, 236, 247, 254, 236, 248, 254, 231, 243, 253, 233, 245, 254, 235, 248, 255, 237, 251, 254, 237, 252, 255, 240, 253, 254, 239, 252, 254, 237, 251, 253, 236, 250, 254, + 234, 248, 254, 233, 246, 254, 231, 244, 252, 226, 241, 250, 228, 241, 249, 228, 241, 249, 223, 236, 245, 223, 234, 244, 218, 231, 239, 216, 229, 237, 216, 228, 237, 217, 228, 237, 211, 224, 232, 209, 223, 231, 209, 222, 230, 207, 220, 228, 204, 217, 225, 201, 212, 218, 195, 207, 213, 187, 198, 206, 176, 188, 195, + 163, 174, 182, 151, 162, 170, 131, 142, 151, 117, 129, 137, 107, 117, 125, 91, 99, 108, 58, 66, 73, 54, 63, 67, 55, 61, 68, 40, 47, 52, 20, 26, 30, 1, 3, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 4, 8, 14, 20, 23, 35, 41, 39, 48, 56, 53, 65, 74, 65, 77, 89, 74, 90, 102, 86, 103, 114, 94, 111, 125, 65, 80, 89, 63, 78, 87, 61, 76, 85, 67, 82, 91, 77, 93, 102, 82, 99, 108, 82, 99, 108, + 87, 104, 113, 87, 104, 113, 93, 109, 120, 101, 119, 128, 88, 106, 117, 76, 92, 102, 77, 94, 103, 89, 106, 118, 97, 116, 124, 106, 125, 134, 112, 130, 141, 108, 126, 137, 102, 120, 131, 97, 116, 124, 109, 127, 138, 127, 144, 154, 141, 158, 167, 141, 158, 167, 139, 159, 167, 143, 161, 171, 140, 159, 168, + 138, 158, 168, 143, 161, 171, 139, 157, 171, 149, 168, 178, 156, 174, 184, 164, 182, 191, 165, 184, 194, 168, 186, 197, 158, 176, 187, 152, 170, 181, 132, 150, 164, 128, 146, 159, 129, 147, 161, 111, 130, 143, 101, 121, 134, 99, 118, 131, 97, 115, 128, 79, 97, 110, 70, 87, 98, 57, 73, 85, 47, 61, 70, + 44, 60, 68, 38, 54, 62, 42, 57, 66, 47, 61, 70, 52, 67, 76, 60, 74, 84, 73, 90, 100, 90, 107, 118, 88, 105, 115, 107, 124, 135, 109, 127, 139, 118, 136, 148, 152, 170, 180, 150, 168, 178, 137, 158, 168, 143, 161, 172, 144, 163, 174, 161, 180, 189, 167, 184, 194, 172, 191, 199, 172, 190, 199, + 170, 188, 197, 172, 190, 198, 175, 193, 200, 171, 190, 197, 170, 187, 196, 169, 186, 194, 169, 188, 195, 169, 187, 195, 170, 186, 196, 178, 195, 204, 173, 190, 199, 160, 178, 187, 160, 178, 187, 153, 171, 180, 152, 170, 181, 159, 177, 186, 154, 172, 182, 154, 172, 181, 167, 184, 194, 175, 193, 200, 181, 198, 206, + 188, 206, 213, 211, 226, 234, 214, 229, 236, 226, 241, 248, 230, 244, 252, 225, 239, 246, 202, 220, 227, 206, 222, 231, 224, 240, 247, 230, 244, 251, 241, 253, 253, 247, 253, 254, 241, 251, 254, 234, 250, 253, 230, 244, 252, 221, 236, 244, 215, 230, 238, 230, 242, 250, 230, 243, 249, 230, 244, 252, 235, 249, 254, + 243, 250, 252, 237, 250, 254, 237, 251, 254, 239, 251, 253, 245, 254, 254, 236, 251, 253, 244, 254, 254, 236, 252, 254, 229, 245, 250, 244, 253, 254, 243, 253, 255, 227, 245, 252, 229, 245, 252, 245, 255, 254, 237, 251, 253, 249, 254, 254, 246, 253, 254, 232, 249, 254, 236, 250, 254, 241, 254, 254, 237, 253, 254, + 233, 252, 254, 213, 242, 255, 146, 179, 230, 99, 125, 194, 62, 82, 174, 56, 75, 176, 56, 75, 181, 34, 47, 162, 35, 48, 171, 49, 70, 186, 84, 115, 209, 107, 147, 221, 155, 199, 249, 190, 228, 254, 208, 237, 253, 213, 237, 253, 227, 248, 254, 229, 248, 254, 227, 243, 253, 228, 243, 251, 217, 232, 241, + 217, 232, 241, 223, 236, 244, 228, 241, 248, 234, 245, 251, 226, 238, 244, 226, 239, 246, 231, 244, 250, 230, 243, 250, 225, 239, 245, 224, 236, 244, 227, 239, 245, 225, 237, 245, 224, 237, 245, 223, 239, 247, 224, 239, 247, 217, 232, 241, 215, 230, 239, 213, 228, 237, 206, 223, 231, 212, 229, 236, 223, 237, 246, + 228, 242, 249, 230, 240, 250, 230, 243, 250, 229, 243, 251, 233, 247, 254, 233, 245, 253, 234, 248, 254, 236, 250, 255, 239, 253, 255, 237, 252, 255, 239, 251, 254, 238, 251, 254, 238, 252, 254, 236, 250, 253, 234, 248, 254, 233, 247, 254, 232, 245, 252, 228, 241, 250, 228, 240, 249, 226, 241, 249, 223, 238, 245, + 221, 233, 243, 221, 234, 242, 219, 232, 240, 217, 230, 238, 216, 228, 237, 212, 225, 233, 211, 224, 232, 211, 224, 232, 208, 222, 228, 203, 216, 224, 201, 214, 220, 195, 208, 215, 191, 202, 210, 183, 193, 202, 172, 182, 190, 161, 172, 180, 147, 157, 166, 126, 139, 147, 119, 130, 138, 102, 112, 121, 78, 86, 94, + 57, 64, 71, 46, 53, 60, 46, 54, 58, 30, 35, 40, 6, 10, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 2, 2, 2, 9, 14, 21, 23, 34, 40, + 40, 50, 58, 57, 65, 74, 68, 81, 92, 83, 97, 109, 93, 111, 123, 104, 121, 134, 111, 130, 143, 65, 80, 89, 63, 78, 87, 67, 82, 91, 75, 91, 99, 78, 95, 104, 80, 96, 105, 73, 90, 99, 83, 100, 109, 88, 105, 115, 86, 104, 112, 94, 111, 122, 81, 98, 108, 66, 83, 92, 83, 101, 109, + 99, 116, 126, 96, 114, 124, 95, 113, 123, 99, 118, 128, 102, 120, 131, 104, 122, 134, 113, 132, 139, 117, 135, 147, 130, 147, 158, 134, 153, 164, 125, 144, 154, 126, 144, 155, 133, 151, 162, 138, 156, 167, 132, 151, 163, 130, 148, 162, 135, 153, 167, 135, 155, 167, 138, 156, 168, 145, 163, 175, 146, 165, 176, + 150, 169, 179, 155, 173, 185, 153, 172, 183, 147, 166, 178, 136, 156, 169, 137, 155, 168, 133, 152, 165, 128, 146, 159, 129, 148, 160, 100, 120, 132, 91, 109, 123, 83, 101, 113, 59, 76, 87, 50, 66, 75, 52, 68, 76, 51, 67, 76, 53, 68, 77, 56, 73, 82, 63, 78, 87, 79, 95, 104, 81, 96, 107, + 64, 79, 88, 65, 82, 91, 75, 91, 101, 98, 116, 127, 128, 146, 155, 168, 187, 195, 163, 180, 189, 168, 187, 195, 177, 195, 203, 182, 200, 208, 184, 202, 211, 192, 209, 216, 195, 212, 219, 190, 208, 215, 178, 196, 203, 168, 186, 194, 161, 179, 189, 153, 170, 182, 152, 169, 181, 156, 174, 183, 154, 173, 183, + 150, 168, 178, 154, 172, 182, 160, 178, 187, 160, 177, 186, 141, 160, 170, 137, 155, 165, 125, 143, 155, 124, 142, 154, 122, 141, 153, 130, 148, 160, 124, 142, 153, 130, 148, 159, 139, 158, 167, 180, 196, 204, 215, 232, 239, 235, 248, 254, 227, 242, 250, 227, 240, 248, 230, 243, 250, 227, 240, 248, 211, 228, 235, + 211, 227, 235, 227, 240, 248, 235, 250, 253, 237, 249, 253, 231, 246, 252, 234, 247, 253, 237, 250, 254, 233, 248, 253, 223, 238, 248, 217, 234, 241, 221, 235, 244, 218, 233, 240, 223, 237, 245, 227, 239, 248, 217, 233, 241, 224, 238, 245, 228, 243, 248, 234, 247, 253, 238, 250, 253, 249, 253, 253, 240, 251, 253, + 227, 242, 250, 230, 244, 248, 231, 245, 252, 238, 252, 253, 232, 248, 253, 229, 246, 252, 233, 248, 251, 229, 245, 251, 242, 252, 254, 233, 247, 253, 226, 242, 250, 240, 253, 253, 240, 254, 254, 228, 244, 252, 240, 254, 253, 214, 236, 253, 161, 190, 234, 114, 142, 201, 76, 97, 177, 74, 96, 179, 60, 77, 171, + 36, 52, 158, 50, 71, 176, 69, 101, 194, 104, 137, 213, 133, 172, 231, 185, 220, 254, 203, 234, 254, 212, 236, 253, 223, 244, 254, 217, 235, 252, 227, 244, 253, 230, 247, 253, 222, 237, 246, 222, 234, 243, 217, 232, 241, 220, 232, 241, 223, 235, 243, 230, 241, 248, 224, 236, 243, 225, 236, 244, 226, 239, 247, + 226, 237, 245, 216, 229, 237, 223, 235, 243, 227, 237, 246, 226, 240, 247, 220, 235, 242, 222, 237, 245, 224, 240, 247, 225, 238, 247, 224, 240, 248, 224, 238, 246, 223, 237, 246, 218, 234, 244, 223, 237, 246, 226, 241, 249, 233, 245, 253, 236, 249, 254, 230, 244, 251, 232, 245, 253, 235, 247, 255, 235, 251, 254, + 239, 252, 254, 239, 253, 255, 237, 251, 253, 237, 251, 254, 236, 250, 254, 236, 248, 254, 234, 247, 254, 231, 245, 253, 231, 244, 252, 229, 243, 250, 229, 242, 250, 231, 242, 250, 227, 241, 250, 225, 239, 247, 221, 234, 242, 221, 234, 242, 218, 230, 240, 217, 230, 239, 214, 227, 235, 211, 226, 234, 213, 226, 234, + 211, 224, 232, 206, 219, 227, 205, 217, 225, 200, 211, 219, 197, 208, 216, 194, 205, 212, 187, 199, 206, 182, 191, 200, 169, 180, 188, 151, 163, 171, 136, 147, 155, 127, 139, 147, 113, 125, 132, 90, 98, 106, 68, 76, 83, 61, 69, 76, 50, 57, 62, 38, 43, 48, 14, 18, 23, 4, 4, 5, 1, 2, 3, + 2, 2, 4, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 5, 9, 15, 22, 29, 38, 38, 47, 55, 55, 65, 74, 69, 81, 93, 82, 98, 110, 98, 115, 127, 111, 128, 142, 122, 139, 153, 126, 147, 160, + 61, 76, 85, 65, 80, 89, 72, 87, 96, 76, 92, 99, 77, 94, 103, 74, 91, 100, 82, 99, 108, 87, 105, 114, 84, 101, 110, 95, 112, 121, 88, 104, 115, 76, 93, 102, 78, 96, 104, 89, 106, 115, 99, 117, 127, 93, 111, 121, 97, 116, 126, 111, 130, 138, 109, 128, 138, 102, 120, 130, 106, 124, 134, + 119, 137, 147, 124, 143, 153, 125, 144, 155, 117, 135, 147, 133, 152, 162, 130, 148, 161, 127, 145, 157, 123, 141, 154, 136, 154, 166, 149, 167, 178, 147, 166, 177, 137, 155, 167, 149, 167, 178, 156, 174, 185, 165, 183, 192, 161, 178, 189, 158, 176, 187, 156, 175, 187, 142, 160, 173, 141, 160, 172, 131, 148, 161, + 122, 141, 153, 116, 135, 148, 109, 128, 140, 107, 127, 140, 92, 109, 122, 83, 100, 111, 67, 83, 94, 62, 77, 86, 55, 69, 78, 52, 68, 77, 48, 62, 71, 44, 59, 68, 41, 54, 64, 38, 52, 60, 37, 49, 58, 44, 57, 66, 61, 75, 87, 84, 101, 112, 115, 132, 143, 148, 165, 175, 158, 176, 186, + 173, 190, 198, 183, 200, 207, 189, 206, 214, 183, 200, 208, 180, 197, 206, 164, 183, 191, 153, 171, 180, 158, 176, 186, 164, 183, 192, 153, 171, 180, 152, 171, 180, 144, 162, 172, 133, 151, 161, 125, 144, 154, 138, 157, 166, 142, 161, 170, 145, 164, 173, 126, 143, 155, 122, 139, 152, 116, 133, 145, 129, 147, 157, + 121, 140, 149, 101, 119, 130, 115, 132, 144, 134, 151, 163, 153, 170, 181, 154, 173, 181, 172, 190, 197, 205, 222, 229, 222, 237, 244, 228, 242, 248, 213, 228, 236, 202, 219, 226, 197, 214, 221, 187, 205, 212, 201, 217, 224, 211, 225, 233, 224, 237, 246, 231, 244, 249, 231, 246, 251, 230, 245, 250, 236, 250, 252, + 224, 239, 246, 219, 232, 243, 210, 225, 234, 194, 211, 219, 198, 216, 223, 212, 226, 235, 212, 226, 234, 201, 218, 228, 200, 217, 225, 205, 221, 229, 210, 227, 234, 206, 221, 228, 225, 239, 244, 220, 234, 244, 207, 223, 232, 196, 213, 222, 226, 241, 249, 225, 240, 246, 217, 234, 244, 212, 228, 238, 213, 230, 240, + 221, 237, 244, 222, 237, 246, 233, 247, 252, 226, 239, 248, 238, 252, 253, 239, 253, 254, 216, 232, 248, 232, 247, 254, 214, 234, 251, 192, 216, 245, 120, 145, 199, 91, 111, 177, 85, 106, 176, 54, 68, 150, 61, 83, 169, 79, 105, 185, 93, 126, 200, 111, 147, 211, 157, 194, 238, 199, 229, 253, 212, 238, 253, + 226, 246, 254, 218, 236, 251, 219, 236, 250, 215, 231, 245, 218, 234, 244, 219, 232, 242, 224, 237, 246, 229, 242, 250, 230, 243, 251, 224, 237, 244, 228, 242, 247, 221, 234, 242, 221, 234, 242, 223, 236, 244, 217, 229, 238, 220, 232, 240, 222, 235, 242, 227, 239, 247, 231, 245, 248, 233, 246, 251, 232, 246, 252, + 237, 250, 253, 232, 246, 250, 229, 244, 250, 234, 248, 253, 232, 247, 253, 230, 243, 252, 223, 237, 245, 225, 237, 245, 230, 244, 253, 229, 242, 252, 231, 244, 253, 233, 245, 253, 233, 246, 253, 236, 251, 255, 236, 250, 254, 236, 249, 254, 236, 249, 255, 234, 247, 254, 230, 245, 253, 231, 246, 253, 231, 244, 253, + 229, 241, 250, 227, 240, 249, 228, 244, 251, 230, 241, 251, 226, 241, 248, 226, 238, 246, 225, 238, 246, 222, 235, 243, 220, 233, 241, 217, 230, 239, 214, 226, 236, 213, 226, 235, 209, 225, 232, 208, 223, 230, 206, 219, 227, 204, 217, 225, 204, 216, 224, 202, 214, 222, 198, 211, 219, 195, 207, 213, 190, 202, 209, + 183, 195, 203, 174, 185, 193, 163, 174, 182, 147, 159, 166, 131, 144, 152, 117, 128, 136, 95, 104, 113, 73, 81, 90, 64, 72, 79, 58, 66, 73, 50, 56, 61, 26, 33, 37, 13, 16, 21, 4, 6, 8, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 1, 1, 4, 7, 9, 18, 26, 33, 36, 45, 53, 54, 63, 73, 70, 82, 91, 85, 100, 112, 101, 117, 130, 114, 132, 145, 125, 143, 158, 134, 152, 165, 137, 157, 171, 63, 79, 87, 73, 88, 97, 74, 89, 98, 74, 90, 97, 77, 93, 102, 80, 96, 105, 84, 101, 110, + 84, 101, 110, 81, 98, 107, 88, 105, 115, 82, 99, 110, 84, 100, 111, 88, 104, 115, 95, 113, 123, 89, 107, 117, 95, 114, 123, 103, 122, 132, 101, 119, 129, 101, 119, 130, 98, 116, 124, 102, 120, 131, 112, 130, 140, 114, 132, 143, 120, 138, 149, 126, 144, 156, 128, 148, 159, 125, 144, 156, 140, 159, 169, + 147, 166, 175, 141, 160, 172, 139, 158, 168, 136, 155, 166, 137, 156, 166, 156, 174, 183, 164, 183, 192, 163, 182, 192, 155, 174, 185, 137, 156, 168, 134, 152, 164, 136, 154, 166, 127, 145, 158, 127, 144, 157, 123, 142, 155, 116, 134, 147, 113, 132, 143, 119, 138, 150, 91, 110, 123, 80, 98, 108, 58, 75, 86, + 49, 65, 73, 47, 62, 71, 49, 63, 72, 49, 63, 73, 46, 61, 69, 47, 61, 70, 47, 60, 69, 51, 66, 73, 58, 71, 82, 62, 78, 88, 66, 83, 91, 108, 125, 135, 137, 153, 163, 155, 171, 181, 178, 195, 202, 175, 192, 200, 178, 196, 205, 167, 185, 194, 164, 182, 191, 157, 174, 184, 156, 174, 184, + 165, 182, 192, 170, 189, 197, 155, 173, 182, 149, 167, 178, 147, 165, 176, 122, 140, 153, 107, 126, 139, 111, 130, 142, 105, 123, 134, 122, 140, 150, 109, 126, 139, 99, 117, 129, 110, 128, 139, 110, 128, 139, 83, 101, 112, 78, 95, 105, 91, 107, 117, 116, 132, 144, 113, 130, 142, 156, 174, 183, 182, 200, 206, + 189, 207, 214, 198, 215, 222, 188, 204, 213, 180, 198, 206, 176, 194, 202, 170, 188, 197, 170, 188, 195, 180, 198, 205, 202, 219, 226, 224, 238, 245, 220, 235, 240, 213, 227, 235, 217, 234, 242, 212, 227, 236, 200, 218, 225, 186, 202, 212, 200, 215, 224, 174, 191, 201, 178, 195, 205, 191, 208, 216, 183, 199, 208, + 207, 223, 230, 203, 220, 228, 192, 210, 219, 169, 186, 197, 166, 183, 193, 225, 241, 246, 214, 228, 238, 177, 195, 204, 188, 206, 215, 203, 220, 228, 187, 206, 215, 201, 219, 228, 213, 228, 238, 224, 240, 248, 213, 230, 238, 233, 247, 253, 239, 252, 254, 240, 253, 255, 243, 254, 254, 238, 252, 252, 232, 248, 253, + 226, 242, 253, 229, 246, 254, 202, 223, 243, 154, 176, 213, 106, 126, 180, 85, 103, 166, 76, 93, 161, 91, 115, 181, 97, 125, 189, 109, 143, 201, 147, 183, 230, 197, 223, 251, 198, 225, 248, 211, 233, 251, 221, 239, 253, 210, 228, 244, 219, 236, 247, 218, 235, 246, 213, 228, 238, 223, 237, 245, 230, 243, 251, + 236, 249, 254, 233, 246, 251, 233, 246, 252, 236, 250, 254, 230, 244, 250, 230, 242, 249, 228, 240, 247, 226, 237, 244, 219, 231, 238, 216, 229, 237, 217, 230, 238, 221, 234, 240, 223, 236, 244, 228, 242, 247, 227, 239, 245, 227, 240, 246, 228, 242, 248, 231, 244, 249, 232, 244, 252, 227, 240, 249, 223, 237, 245, + 223, 238, 247, 226, 243, 250, 228, 240, 249, 228, 243, 252, 234, 247, 255, 233, 248, 254, 233, 246, 253, 230, 247, 253, 230, 246, 253, 232, 245, 254, 234, 247, 255, 230, 243, 253, 231, 243, 252, 228, 243, 251, 229, 240, 250, 230, 241, 249, 228, 240, 249, 227, 240, 248, 223, 236, 245, 223, 234, 243, 222, 235, 243, + 220, 233, 241, 217, 230, 238, 215, 228, 236, 213, 227, 235, 213, 225, 234, 210, 223, 231, 206, 222, 229, 206, 219, 227, 204, 217, 225, 204, 217, 225, 204, 216, 224, 200, 212, 219, 194, 205, 214, 191, 203, 211, 188, 200, 208, 180, 193, 200, 170, 183, 190, 162, 173, 181, 143, 156, 164, 130, 141, 149, 111, 122, 130, + 86, 95, 103, 70, 78, 86, 61, 69, 76, 48, 55, 61, 32, 36, 41, 9, 14, 17, 2, 1, 2, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 5, 8, 17, 25, 33, 34, 42, 49, 47, 55, 64, 64, 73, 83, + 81, 94, 105, 98, 115, 125, 113, 131, 143, 127, 144, 157, 137, 155, 167, 142, 160, 173, 144, 163, 176, 73, 88, 96, 71, 86, 95, 67, 82, 91, 69, 84, 92, 75, 90, 99, 86, 102, 111, 86, 103, 112, 76, 94, 102, 80, 97, 106, 86, 103, 112, 88, 105, 115, 89, 105, 116, 85, 101, 113, 98, 116, 127, + 102, 120, 131, 96, 115, 125, 93, 111, 122, 94, 112, 122, 90, 108, 118, 96, 113, 122, 100, 118, 130, 109, 127, 138, 112, 130, 140, 123, 141, 152, 131, 149, 159, 133, 151, 162, 143, 162, 172, 142, 160, 170, 137, 156, 167, 127, 146, 157, 127, 146, 158, 131, 151, 162, 141, 160, 171, 143, 162, 174, 149, 167, 177, + 144, 163, 175, 125, 145, 157, 125, 144, 156, 120, 137, 150, 116, 135, 147, 125, 144, 155, 126, 145, 157, 123, 143, 156, 121, 139, 152, 116, 134, 146, 107, 125, 138, 89, 107, 120, 72, 90, 100, 72, 88, 98, 73, 90, 99, 58, 73, 82, 44, 59, 68, 47, 62, 71, 51, 63, 72, 51, 65, 73, 56, 69, 78, + 53, 68, 77, 64, 79, 88, 74, 90, 99, 99, 116, 127, 113, 131, 140, 112, 127, 139, 101, 118, 128, 126, 144, 155, 156, 175, 183, 168, 186, 197, 179, 197, 204, 173, 190, 199, 154, 171, 180, 148, 165, 177, 151, 167, 179, 147, 165, 175, 146, 164, 176, 132, 151, 162, 131, 149, 162, 121, 140, 151, 102, 121, 134, + 96, 115, 128, 98, 116, 129, 90, 109, 121, 102, 121, 133, 114, 132, 143, 103, 120, 132, 84, 101, 113, 67, 84, 93, 62, 79, 88, 60, 77, 87, 69, 86, 96, 97, 114, 123, 122, 139, 150, 154, 172, 179, 160, 178, 185, 164, 181, 188, 183, 201, 209, 160, 177, 186, 140, 157, 168, 128, 145, 157, 146, 164, 174, + 186, 203, 212, 197, 215, 222, 203, 220, 227, 207, 225, 232, 207, 224, 231, 204, 221, 228, 159, 176, 186, 163, 181, 191, 159, 175, 188, 188, 206, 215, 184, 201, 210, 179, 195, 206, 169, 185, 197, 185, 201, 211, 208, 223, 231, 194, 210, 219, 189, 206, 216, 167, 184, 196, 202, 219, 228, 237, 249, 254, 217, 232, 240, + 186, 203, 214, 210, 227, 235, 192, 209, 220, 207, 225, 234, 217, 234, 244, 237, 251, 255, 223, 238, 247, 238, 252, 255, 240, 252, 253, 241, 254, 254, 239, 252, 255, 237, 250, 253, 236, 249, 253, 237, 252, 253, 223, 237, 250, 224, 239, 252, 195, 213, 232, 176, 194, 222, 133, 152, 191, 92, 107, 160, 105, 126, 180, + 115, 138, 188, 118, 150, 200, 151, 182, 222, 186, 211, 242, 185, 209, 234, 214, 235, 251, 217, 236, 252, 223, 240, 252, 214, 232, 244, 220, 236, 247, 211, 228, 237, 223, 237, 246, 224, 237, 245, 225, 238, 246, 238, 250, 254, 231, 245, 250, 238, 250, 255, 233, 246, 252, 228, 241, 248, 230, 242, 248, 225, 238, 245, + 228, 240, 246, 229, 241, 247, 230, 242, 248, 229, 241, 248, 227, 240, 246, 229, 242, 249, 229, 243, 248, 228, 241, 248, 230, 243, 251, 227, 239, 247, 226, 240, 247, 224, 236, 245, 220, 233, 241, 220, 235, 242, 219, 235, 244, 221, 236, 244, 227, 240, 248, 227, 240, 249, 228, 243, 252, 230, 243, 252, 229, 246, 253, + 228, 243, 251, 226, 244, 250, 229, 243, 252, 231, 244, 253, 229, 243, 252, 228, 239, 249, 226, 242, 249, 228, 241, 251, 226, 239, 248, 224, 237, 246, 223, 236, 244, 222, 236, 244, 221, 233, 241, 219, 233, 240, 219, 231, 240, 214, 228, 235, 214, 227, 235, 213, 226, 234, 212, 226, 234, 211, 224, 232, 208, 222, 230, + 206, 219, 227, 202, 215, 223, 203, 216, 224, 202, 215, 223, 195, 207, 215, 192, 204, 213, 191, 204, 212, 191, 202, 209, 179, 193, 200, 172, 184, 192, 166, 178, 185, 155, 168, 176, 147, 159, 167, 131, 142, 150, 113, 123, 132, 86, 95, 103, 67, 75, 83, 60, 68, 75, 47, 52, 58, 27, 34, 37, 6, 7, 9, + 2, 2, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 3, 5, 6, 14, 22, 28, 31, 40, 46, 43, 51, 57, 60, 68, 77, 75, 86, 95, 93, 106, 118, 110, 126, 138, 125, 141, 154, 135, 152, 165, 143, 160, 173, 146, 165, 178, 149, 167, 183, + 69, 86, 94, 66, 82, 91, 70, 84, 93, 73, 89, 96, 79, 95, 104, 82, 99, 108, 82, 98, 107, 75, 92, 101, 84, 101, 110, 79, 96, 105, 85, 103, 111, 92, 108, 120, 95, 112, 122, 98, 116, 125, 88, 106, 115, 90, 109, 118, 88, 106, 117, 88, 106, 117, 85, 103, 114, 96, 115, 124, 106, 124, 135, + 116, 134, 145, 115, 133, 144, 117, 135, 146, 130, 148, 159, 130, 147, 160, 126, 144, 156, 113, 133, 144, 121, 141, 152, 106, 126, 138, 120, 139, 152, 130, 149, 158, 143, 161, 172, 153, 171, 181, 135, 152, 164, 122, 140, 153, 118, 136, 149, 108, 128, 141, 115, 134, 146, 121, 140, 153, 126, 145, 156, 124, 142, 153, + 108, 127, 139, 123, 142, 153, 114, 134, 145, 105, 123, 136, 105, 122, 135, 102, 120, 131, 82, 99, 110, 56, 73, 82, 57, 72, 81, 47, 62, 71, 41, 54, 64, 46, 57, 68, 41, 55, 63, 49, 62, 70, 54, 68, 78, 74, 89, 98, 88, 102, 114, 88, 103, 113, 93, 110, 120, 89, 105, 116, 124, 142, 153, + 134, 152, 162, 116, 134, 145, 109, 127, 137, 138, 154, 163, 156, 173, 182, 159, 179, 186, 169, 187, 195, 160, 178, 185, 161, 179, 187, 154, 173, 182, 138, 156, 168, 114, 132, 146, 109, 128, 141, 103, 122, 135, 107, 125, 138, 113, 132, 143, 103, 122, 134, 116, 133, 145, 112, 130, 141, 94, 112, 121, 68, 84, 95, + 61, 77, 86, 66, 81, 91, 82, 98, 111, 89, 106, 116, 105, 123, 133, 117, 135, 146, 136, 154, 165, 122, 140, 150, 146, 163, 173, 135, 152, 163, 116, 133, 145, 119, 138, 150, 121, 138, 150, 152, 169, 180, 185, 203, 211, 197, 215, 222, 199, 217, 224, 205, 223, 230, 205, 221, 231, 188, 206, 215, 186, 202, 212, + 197, 215, 224, 174, 191, 203, 198, 216, 224, 196, 213, 222, 178, 196, 206, 193, 209, 218, 205, 221, 230, 218, 234, 242, 221, 237, 245, 200, 217, 226, 200, 217, 226, 221, 236, 245, 233, 244, 250, 235, 245, 249, 230, 246, 253, 235, 250, 255, 229, 245, 253, 225, 241, 249, 235, 249, 254, 234, 249, 253, 215, 231, 239, + 243, 252, 252, 242, 250, 252, 233, 247, 251, 228, 241, 250, 227, 241, 247, 213, 227, 237, 231, 245, 251, 206, 223, 234, 207, 222, 236, 193, 209, 226, 168, 184, 207, 125, 143, 177, 100, 118, 158, 119, 141, 182, 120, 142, 183, 145, 169, 206, 179, 202, 228, 199, 222, 242, 206, 226, 245, 212, 231, 245, 224, 241, 253, + 224, 240, 251, 212, 228, 241, 222, 238, 246, 214, 230, 239, 219, 235, 243, 227, 241, 249, 226, 239, 247, 231, 242, 248, 226, 238, 246, 230, 242, 249, 237, 249, 253, 229, 241, 249, 220, 232, 239, 230, 243, 249, 230, 242, 248, 224, 235, 241, 229, 241, 246, 224, 237, 244, 230, 241, 249, 228, 241, 249, 227, 241, 248, + 227, 240, 247, 228, 242, 248, 230, 242, 248, 233, 245, 250, 231, 244, 251, 228, 240, 248, 225, 240, 248, 230, 243, 250, 234, 248, 254, 232, 247, 252, 227, 240, 247, 225, 239, 245, 225, 240, 248, 223, 239, 245, 221, 237, 244, 220, 236, 244, 223, 238, 246, 228, 241, 250, 228, 242, 250, 227, 240, 248, 223, 239, 246, + 224, 238, 247, 222, 236, 245, 220, 233, 241, 220, 234, 242, 221, 233, 242, 221, 232, 241, 218, 232, 240, 218, 231, 240, 212, 228, 235, 212, 225, 233, 211, 224, 232, 212, 223, 231, 208, 221, 229, 205, 219, 226, 203, 216, 224, 200, 213, 221, 199, 212, 220, 199, 212, 220, 193, 206, 214, 190, 203, 211, 189, 202, 210, + 184, 196, 204, 178, 191, 199, 170, 182, 190, 162, 174, 181, 152, 163, 172, 149, 160, 168, 141, 154, 161, 125, 136, 144, 111, 121, 129, 91, 101, 109, 79, 89, 98, 64, 72, 79, 43, 53, 56, 22, 32, 36, 9, 12, 14, 2, 3, 6, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, + 4, 5, 8, 14, 20, 24, 27, 34, 38, 41, 48, 55, 55, 63, 72, 73, 82, 91, 86, 98, 109, 101, 116, 128, 119, 134, 147, 131, 147, 160, 141, 157, 171, 145, 164, 176, 149, 168, 181, 153, 171, 184, 67, 85, 92, 60, 77, 84, 69, 84, 92, 70, 85, 94, 79, 96, 105, 77, 94, 103, 88, 105, 114, + 82, 99, 108, 84, 101, 111, 79, 96, 105, 85, 102, 111, 83, 100, 109, 90, 107, 117, 84, 101, 111, 90, 107, 116, 86, 102, 114, 90, 108, 119, 88, 106, 117, 90, 108, 119, 98, 116, 127, 110, 128, 139, 116, 134, 145, 113, 131, 142, 124, 142, 153, 122, 139, 151, 115, 133, 146, 101, 119, 132, 102, 121, 132, + 110, 128, 141, 116, 134, 145, 133, 150, 162, 131, 148, 158, 127, 146, 158, 118, 138, 150, 109, 127, 140, 106, 125, 137, 115, 134, 147, 119, 139, 150, 106, 125, 137, 108, 128, 140, 119, 138, 149, 117, 136, 147, 118, 138, 148, 119, 137, 148, 106, 124, 135, 92, 112, 123, 92, 111, 122, 94, 111, 123, 83, 101, 112, + 69, 87, 95, 46, 61, 70, 37, 52, 61, 37, 52, 61, 32, 43, 53, 37, 47, 58, 54, 69, 77, 81, 97, 106, 86, 103, 111, 73, 88, 97, 50, 64, 72, 38, 49, 58, 45, 59, 67, 48, 62, 72, 52, 67, 76, 54, 71, 78, 60, 76, 85, 74, 90, 100, 98, 115, 127, 121, 140, 150, 132, 150, 161, + 151, 169, 179, 162, 181, 190, 166, 185, 193, 163, 180, 192, 156, 173, 183, 150, 168, 180, 130, 148, 162, 119, 137, 149, 109, 127, 139, 90, 107, 118, 69, 85, 97, 74, 90, 99, 63, 81, 89, 68, 84, 92, 77, 94, 104, 115, 132, 140, 161, 175, 185, 124, 142, 151, 91, 108, 120, 122, 138, 150, 125, 144, 154, + 140, 158, 168, 127, 145, 157, 132, 149, 162, 127, 144, 156, 141, 159, 170, 172, 189, 199, 209, 225, 233, 183, 201, 208, 186, 204, 211, 211, 227, 236, 212, 229, 237, 226, 242, 250, 209, 226, 233, 231, 245, 252, 208, 225, 233, 212, 227, 237, 221, 237, 245, 204, 220, 229, 204, 221, 228, 219, 234, 242, 225, 240, 248, + 232, 244, 252, 228, 241, 250, 214, 228, 237, 226, 241, 249, 232, 246, 252, 248, 255, 254, 242, 251, 252, 231, 248, 252, 234, 247, 253, 230, 244, 252, 226, 242, 248, 230, 244, 247, 222, 235, 245, 223, 235, 244, 211, 228, 235, 211, 227, 236, 213, 229, 238, 212, 226, 236, 184, 198, 209, 171, 187, 199, 220, 234, 242, + 177, 193, 206, 181, 195, 212, 189, 205, 221, 159, 173, 197, 129, 146, 176, 115, 133, 166, 124, 141, 175, 122, 142, 175, 152, 171, 197, 187, 208, 227, 198, 218, 235, 218, 234, 250, 212, 230, 241, 220, 236, 248, 217, 233, 244, 222, 238, 247, 217, 232, 241, 208, 225, 233, 216, 231, 239, 221, 235, 242, 223, 236, 244, + 217, 228, 238, 220, 232, 241, 223, 236, 243, 232, 245, 248, 235, 247, 251, 219, 231, 238, 224, 237, 245, 226, 239, 246, 229, 240, 246, 216, 228, 235, 220, 231, 239, 224, 237, 243, 232, 246, 252, 229, 240, 248, 229, 242, 249, 231, 245, 251, 226, 240, 247, 224, 236, 245, 224, 237, 245, 224, 239, 246, 226, 240, 247, + 230, 243, 248, 233, 247, 250, 233, 247, 253, 233, 245, 252, 233, 247, 254, 234, 247, 253, 230, 246, 253, 229, 245, 252, 228, 241, 251, 221, 237, 246, 221, 236, 245, 217, 234, 241, 216, 230, 238, 214, 231, 238, 211, 228, 235, 211, 226, 234, 210, 226, 233, 212, 229, 236, 216, 231, 239, 217, 231, 239, 213, 229, 237, + 214, 226, 235, 210, 226, 232, 209, 222, 230, 209, 222, 230, 208, 221, 229, 205, 218, 226, 202, 218, 225, 202, 215, 223, 199, 212, 220, 196, 209, 217, 196, 209, 216, 191, 204, 212, 190, 202, 210, 187, 200, 207, 179, 192, 201, 177, 189, 198, 169, 181, 189, 165, 176, 184, 153, 164, 172, 140, 151, 159, 132, 145, 152, + 124, 135, 143, 114, 124, 132, 103, 113, 121, 88, 97, 106, 59, 68, 75, 42, 50, 54, 32, 38, 43, 20, 27, 32, 1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 4, 6, 7, 14, 18, 21, 30, 34, 39, 43, 48, 53, 54, 62, 69, 67, 76, 85, 83, 92, 102, 97, 110, 121, + 114, 128, 140, 125, 141, 155, 135, 152, 165, 141, 158, 171, 148, 166, 179, 151, 170, 184, 152, 171, 184, 56, 74, 81, 65, 82, 89, 66, 82, 90, 68, 84, 93, 77, 94, 103, 87, 105, 113, 87, 104, 113, 85, 102, 111, 88, 105, 114, 84, 101, 111, 80, 97, 106, 81, 98, 106, 88, 105, 116, 85, 101, 113, + 83, 99, 107, 77, 94, 104, 86, 105, 115, 87, 105, 116, 97, 116, 127, 101, 118, 129, 106, 125, 136, 108, 126, 137, 114, 132, 143, 110, 128, 139, 112, 130, 141, 98, 117, 131, 97, 117, 129, 99, 118, 130, 106, 125, 137, 112, 130, 142, 99, 117, 131, 104, 122, 135, 100, 118, 131, 93, 112, 125, 106, 125, 138, + 100, 119, 131, 88, 108, 122, 89, 108, 121, 104, 124, 138, 113, 132, 143, 102, 122, 133, 96, 115, 128, 97, 116, 128, 89, 108, 120, 89, 107, 120, 89, 109, 120, 89, 107, 118, 92, 111, 122, 67, 85, 96, 46, 62, 70, 40, 55, 64, 35, 48, 58, 36, 48, 58, 49, 62, 72, 75, 90, 99, 81, 97, 105, + 62, 76, 85, 35, 47, 55, 21, 31, 40, 28, 41, 49, 34, 47, 56, 40, 52, 61, 46, 58, 67, 48, 63, 71, 51, 67, 75, 63, 79, 87, 64, 80, 91, 94, 111, 123, 119, 137, 148, 143, 160, 171, 147, 165, 176, 158, 177, 186, 166, 183, 192, 155, 173, 181, 159, 177, 186, 153, 171, 181, 124, 142, 153, + 103, 121, 132, 86, 103, 115, 71, 87, 98, 69, 86, 96, 74, 89, 98, 96, 112, 122, 139, 155, 164, 155, 171, 180, 104, 120, 127, 56, 71, 79, 78, 95, 106, 111, 128, 138, 119, 137, 148, 144, 162, 173, 155, 173, 182, 160, 178, 187, 163, 181, 191, 171, 189, 198, 200, 216, 224, 209, 227, 233, 183, 201, 210, + 172, 188, 198, 187, 206, 214, 220, 234, 243, 220, 233, 242, 218, 233, 240, 231, 246, 252, 220, 236, 244, 228, 241, 251, 221, 236, 244, 221, 237, 245, 207, 225, 232, 218, 232, 240, 216, 232, 240, 222, 238, 245, 229, 241, 249, 226, 240, 247, 223, 235, 245, 222, 236, 242, 234, 247, 251, 226, 242, 248, 224, 238, 246, + 217, 233, 240, 228, 240, 249, 225, 241, 248, 210, 227, 234, 210, 225, 233, 196, 212, 220, 212, 226, 235, 217, 233, 242, 209, 225, 233, 205, 222, 230, 175, 191, 203, 135, 151, 168, 192, 207, 220, 191, 206, 217, 164, 179, 195, 173, 187, 204, 180, 195, 211, 130, 144, 169, 121, 135, 164, 120, 135, 164, 118, 133, 163, + 141, 159, 184, 147, 164, 187, 160, 180, 199, 192, 210, 225, 204, 222, 235, 202, 219, 230, 215, 232, 242, 216, 232, 240, 222, 237, 244, 223, 238, 246, 223, 237, 244, 218, 233, 241, 222, 235, 243, 224, 238, 243, 221, 233, 241, 205, 220, 228, 217, 229, 238, 223, 237, 245, 223, 236, 243, 215, 228, 236, 219, 231, 238, + 221, 235, 241, 214, 229, 235, 221, 235, 242, 225, 237, 243, 226, 239, 245, 230, 242, 249, 224, 236, 244, 222, 236, 244, 224, 237, 245, 221, 235, 244, 219, 231, 241, 218, 232, 241, 220, 235, 244, 222, 239, 248, 229, 244, 251, 230, 244, 251, 228, 242, 249, 230, 242, 248, 229, 241, 248, 227, 240, 247, 228, 243, 249, + 227, 241, 250, 225, 241, 249, 226, 241, 249, 229, 242, 251, 225, 240, 249, 227, 238, 249, 224, 238, 247, 222, 237, 245, 219, 233, 241, 213, 227, 236, 209, 225, 232, 209, 224, 232, 207, 223, 230, 205, 222, 228, 203, 218, 224, 201, 218, 225, 199, 214, 222, 201, 214, 222, 201, 213, 221, 201, 215, 223, 198, 214, 221, + 201, 214, 222, 198, 210, 218, 192, 205, 213, 193, 205, 213, 189, 202, 210, 184, 198, 206, 183, 196, 203, 177, 191, 198, 174, 187, 195, 167, 180, 188, 165, 176, 184, 159, 172, 180, 150, 161, 169, 137, 147, 155, 120, 130, 139, 108, 118, 127, 96, 107, 115, 86, 95, 104, 70, 78, 86, 41, 47, 53, 24, 32, 37, + 14, 24, 29, 7, 11, 14, 4, 5, 6, 3, 4, 5, 5, 7, 9, 8, 11, 13, 19, 26, 29, 33, 41, 44, 48, 55, 62, 59, 68, 75, 69, 77, 86, 82, 93, 101, 95, 106, 116, 104, 119, 131, 118, 134, 146, 128, 145, 157, 136, 153, 166, 143, 162, 174, 151, 169, 181, 154, 173, 186, 153, 172, 186, + 56, 74, 81, 63, 82, 89, 65, 82, 89, 72, 89, 97, 82, 99, 108, 86, 103, 112, 89, 106, 115, 84, 101, 110, 89, 106, 115, 79, 96, 105, 78, 95, 104, 86, 103, 112, 86, 103, 114, 77, 94, 103, 71, 87, 98, 74, 90, 99, 91, 109, 117, 98, 116, 127, 100, 117, 129, 107, 123, 134, 106, 124, 135, + 102, 120, 131, 101, 119, 130, 104, 123, 134, 103, 122, 134, 103, 122, 135, 104, 124, 135, 107, 125, 138, 105, 125, 136, 105, 124, 137, 101, 120, 133, 96, 115, 128, 101, 119, 132, 102, 122, 133, 103, 121, 134, 100, 119, 132, 95, 117, 129, 105, 124, 137, 98, 117, 129, 90, 109, 121, 91, 110, 123, 95, 114, 127, + 98, 117, 129, 111, 128, 141, 94, 111, 125, 85, 103, 114, 70, 88, 99, 80, 99, 110, 60, 76, 87, 50, 65, 74, 49, 66, 75, 55, 72, 80, 71, 85, 95, 77, 93, 102, 68, 82, 91, 46, 60, 68, 29, 41, 49, 29, 41, 50, 36, 48, 57, 41, 53, 63, 44, 56, 66, 53, 66, 75, 47, 59, 69, + 52, 66, 75, 58, 74, 83, 57, 72, 80, 67, 84, 94, 90, 107, 118, 116, 134, 145, 132, 149, 160, 129, 148, 158, 144, 162, 171, 164, 182, 190, 157, 175, 184, 128, 145, 156, 113, 132, 142, 89, 107, 119, 82, 99, 111, 78, 94, 105, 86, 103, 112, 116, 132, 141, 157, 174, 181, 133, 150, 158, 74, 90, 97, + 37, 53, 62, 49, 64, 74, 80, 97, 108, 96, 113, 125, 115, 133, 144, 122, 140, 151, 156, 174, 183, 156, 173, 182, 177, 195, 203, 200, 219, 224, 216, 231, 239, 216, 231, 238, 204, 222, 229, 191, 209, 217, 186, 203, 211, 207, 225, 231, 211, 226, 234, 215, 230, 238, 235, 249, 253, 233, 245, 253, 233, 248, 253, + 216, 231, 239, 219, 235, 243, 218, 234, 241, 222, 237, 244, 220, 235, 242, 205, 221, 228, 218, 232, 241, 218, 233, 241, 202, 219, 226, 205, 221, 228, 215, 228, 236, 218, 233, 241, 198, 214, 222, 189, 206, 213, 197, 214, 221, 210, 226, 233, 224, 239, 245, 197, 213, 221, 190, 206, 214, 170, 186, 195, 177, 192, 203, + 197, 213, 222, 217, 232, 240, 198, 215, 223, 172, 188, 201, 165, 180, 195, 182, 197, 208, 169, 184, 199, 168, 182, 199, 162, 178, 194, 154, 167, 187, 118, 131, 157, 126, 139, 166, 121, 134, 162, 112, 126, 153, 133, 150, 174, 172, 188, 206, 155, 172, 189, 180, 196, 211, 185, 202, 213, 185, 203, 213, 209, 226, 235, + 219, 234, 242, 220, 232, 242, 225, 240, 247, 229, 242, 250, 227, 241, 249, 228, 241, 249, 239, 252, 254, 227, 241, 246, 218, 235, 241, 215, 230, 238, 220, 233, 241, 217, 230, 238, 221, 234, 241, 212, 226, 233, 214, 229, 237, 211, 225, 233, 209, 222, 230, 218, 232, 238, 223, 237, 243, 229, 241, 247, 225, 238, 246, + 221, 234, 242, 216, 230, 239, 216, 233, 241, 220, 233, 243, 218, 233, 242, 226, 241, 249, 228, 243, 251, 227, 242, 251, 232, 248, 254, 233, 247, 254, 231, 245, 253, 231, 245, 254, 229, 244, 252, 224, 239, 248, 224, 240, 248, 224, 239, 246, 226, 239, 246, 224, 239, 247, 225, 241, 248, 225, 237, 246, 222, 235, 244, + 221, 235, 243, 221, 234, 243, 218, 232, 241, 218, 232, 241, 218, 232, 240, 214, 226, 236, 214, 227, 236, 211, 226, 233, 209, 222, 230, 207, 221, 228, 204, 219, 226, 201, 216, 224, 199, 215, 222, 195, 212, 218, 194, 208, 215, 191, 204, 212, 186, 200, 208, 183, 196, 204, 182, 195, 203, 178, 191, 199, 174, 187, 195, + 170, 184, 191, 168, 181, 189, 161, 173, 181, 159, 170, 178, 153, 165, 173, 148, 159, 167, 142, 154, 162, 128, 139, 148, 109, 120, 128, 89, 99, 107, 87, 96, 105, 77, 86, 95, 64, 72, 79, 40, 45, 50, 25, 32, 37, 19, 25, 30, 20, 26, 30, 16, 23, 28, 22, 28, 33, 29, 34, 39, 39, 45, 51, + 47, 55, 61, 60, 68, 76, 69, 78, 87, 81, 92, 100, 92, 104, 114, 104, 117, 129, 114, 130, 142, 125, 141, 153, 134, 151, 163, 142, 161, 173, 148, 167, 180, 157, 174, 187, 156, 175, 188, 156, 175, 190, 53, 72, 79, 55, 72, 79, 67, 84, 91, 76, 92, 100, 80, 97, 106, 82, 99, 108, 91, 107, 116, + 88, 106, 114, 82, 99, 109, 71, 88, 97, 79, 95, 105, 78, 95, 104, 77, 94, 104, 68, 84, 94, 63, 80, 89, 73, 89, 99, 89, 108, 116, 99, 117, 128, 97, 115, 126, 94, 111, 122, 95, 114, 124, 99, 118, 128, 113, 130, 141, 106, 125, 136, 107, 127, 139, 106, 125, 136, 108, 126, 140, 103, 122, 134, + 100, 120, 132, 108, 126, 139, 106, 124, 137, 114, 131, 144, 111, 129, 142, 98, 118, 130, 102, 120, 134, 99, 117, 130, 103, 123, 136, 104, 123, 136, 103, 123, 136, 102, 123, 136, 120, 138, 152, 110, 129, 141, 114, 131, 144, 96, 113, 126, 80, 98, 112, 88, 106, 119, 87, 104, 117, 77, 96, 107, 76, 93, 104, + 64, 80, 92, 79, 96, 105, 87, 104, 113, 76, 92, 102, 59, 75, 84, 44, 58, 67, 38, 50, 58, 48, 61, 70, 53, 68, 76, 56, 71, 79, 39, 51, 60, 39, 51, 59, 44, 55, 64, 48, 61, 69, 50, 63, 72, 53, 67, 76, 61, 76, 84, 68, 85, 93, 84, 101, 110, 105, 122, 133, 126, 145, 155, + 129, 147, 158, 129, 147, 157, 124, 143, 154, 124, 143, 155, 107, 124, 138, 94, 114, 126, 103, 121, 132, 115, 131, 142, 142, 160, 168, 153, 169, 177, 108, 124, 131, 63, 79, 87, 49, 65, 73, 52, 68, 78, 65, 80, 90, 82, 98, 109, 115, 132, 144, 129, 147, 158, 133, 151, 162, 138, 157, 167, 157, 175, 183, + 177, 194, 201, 196, 213, 220, 216, 231, 239, 209, 225, 233, 209, 227, 234, 207, 225, 232, 201, 218, 226, 203, 220, 228, 203, 222, 229, 196, 211, 218, 228, 243, 249, 234, 247, 251, 230, 243, 251, 227, 242, 247, 206, 222, 229, 211, 225, 234, 213, 228, 235, 212, 228, 234, 193, 210, 217, 175, 192, 199, 206, 221, 228, + 198, 213, 220, 161, 178, 187, 175, 192, 199, 183, 200, 208, 192, 209, 216, 162, 179, 188, 163, 180, 191, 165, 182, 191, 216, 231, 239, 198, 216, 224, 209, 225, 232, 172, 188, 199, 136, 153, 167, 145, 162, 175, 194, 210, 219, 198, 214, 223, 159, 175, 188, 168, 184, 198, 179, 195, 208, 168, 182, 196, 154, 169, 186, + 152, 166, 185, 147, 161, 181, 124, 137, 160, 126, 139, 165, 112, 125, 151, 105, 119, 145, 125, 138, 163, 141, 157, 177, 166, 182, 199, 181, 197, 213, 183, 199, 211, 171, 188, 198, 184, 201, 212, 209, 225, 233, 212, 227, 236, 217, 230, 238, 222, 235, 243, 230, 242, 249, 229, 242, 250, 236, 249, 253, 247, 253, 254, + 241, 254, 254, 236, 248, 252, 228, 240, 248, 224, 237, 244, 217, 231, 239, 210, 226, 233, 212, 226, 233, 206, 223, 230, 211, 224, 232, 209, 222, 230, 216, 229, 237, 221, 233, 241, 224, 238, 244, 227, 239, 246, 228, 241, 249, 223, 237, 245, 215, 231, 239, 218, 234, 242, 220, 234, 244, 220, 234, 245, 224, 239, 248, + 227, 242, 251, 229, 245, 253, 234, 247, 254, 233, 247, 255, 235, 247, 255, 233, 248, 254, 231, 247, 254, 233, 247, 254, 229, 244, 252, 229, 245, 253, 224, 239, 248, 220, 235, 243, 220, 233, 242, 217, 233, 240, 216, 230, 238, 215, 230, 238, 216, 230, 239, 216, 228, 237, 213, 229, 236, 212, 226, 235, 211, 223, 233, + 210, 224, 233, 208, 221, 229, 202, 219, 226, 202, 217, 225, 201, 216, 224, 200, 216, 224, 201, 217, 224, 201, 213, 221, 198, 211, 219, 196, 209, 217, 191, 204, 212, 187, 200, 208, 182, 195, 203, 176, 189, 197, 177, 189, 197, 168, 181, 190, 158, 171, 179, 156, 167, 175, 147, 160, 168, 144, 155, 163, 142, 155, 163, + 134, 145, 154, 119, 130, 138, 101, 111, 119, 88, 97, 106, 83, 92, 101, 72, 80, 87, 52, 58, 64, 29, 35, 40, 19, 24, 29, 21, 27, 32, 30, 37, 41, 38, 42, 49, 43, 49, 55, 56, 62, 68, 65, 74, 83, 76, 86, 95, 88, 97, 106, 96, 109, 118, 105, 120, 128, 114, 127, 140, 123, 139, 151, + 132, 149, 160, 140, 157, 169, 148, 165, 178, 153, 171, 184, 157, 175, 188, 158, 177, 191, 159, 177, 190, 49, 68, 75, 56, 75, 81, 63, 79, 86, 65, 82, 89, 71, 88, 95, 78, 94, 102, 81, 97, 106, 78, 95, 103, 75, 92, 102, 77, 93, 102, 74, 90, 99, 66, 83, 92, 61, 78, 87, 63, 79, 88, + 73, 90, 99, 83, 100, 109, 92, 110, 120, 95, 114, 123, 87, 105, 115, 99, 118, 127, 99, 117, 129, 112, 129, 140, 112, 130, 141, 110, 128, 139, 109, 127, 139, 112, 131, 142, 102, 121, 134, 113, 132, 145, 104, 123, 135, 107, 126, 138, 99, 118, 131, 101, 120, 133, 96, 116, 128, 104, 126, 136, 111, 129, 143, + 116, 134, 147, 114, 133, 146, 123, 142, 155, 126, 145, 158, 137, 156, 168, 130, 148, 161, 114, 132, 144, 107, 126, 140, 99, 119, 131, 102, 122, 134, 116, 134, 147, 114, 132, 145, 99, 118, 128, 91, 108, 120, 95, 112, 124, 94, 113, 121, 86, 103, 112, 75, 92, 101, 59, 75, 83, 72, 88, 97, 55, 68, 77, + 52, 66, 74, 36, 50, 59, 35, 46, 55, 37, 49, 58, 37, 50, 58, 37, 50, 58, 34, 47, 55, 34, 48, 55, 41, 52, 62, 37, 50, 60, 51, 64, 73, 56, 71, 79, 66, 81, 93, 84, 101, 110, 104, 120, 132, 126, 145, 154, 130, 148, 159, 137, 154, 165, 144, 162, 173, 158, 175, 186, 166, 184, 192, + 138, 156, 163, 93, 110, 118, 57, 74, 82, 59, 74, 83, 70, 86, 95, 78, 95, 104, 84, 100, 111, 97, 114, 125, 117, 134, 145, 138, 156, 165, 134, 151, 161, 162, 180, 188, 159, 176, 185, 163, 180, 189, 189, 206, 213, 214, 228, 236, 208, 226, 233, 203, 220, 227, 210, 228, 235, 200, 217, 226, 191, 209, 217, + 186, 203, 211, 194, 212, 219, 224, 238, 245, 214, 229, 237, 208, 222, 230, 211, 226, 233, 199, 216, 223, 196, 213, 220, 194, 211, 218, 182, 199, 207, 176, 193, 200, 151, 169, 178, 160, 176, 186, 181, 198, 205, 152, 168, 178, 141, 160, 171, 155, 173, 183, 175, 193, 201, 197, 214, 223, 175, 191, 202, 157, 176, 184, + 188, 204, 213, 202, 220, 228, 198, 215, 223, 187, 204, 212, 170, 187, 198, 153, 171, 182, 173, 190, 202, 177, 193, 204, 166, 182, 193, 151, 167, 182, 158, 174, 187, 159, 175, 189, 142, 156, 175, 150, 166, 183, 146, 162, 181, 123, 137, 160, 99, 113, 137, 109, 123, 149, 101, 114, 140, 112, 126, 153, 116, 132, 156, + 134, 150, 168, 166, 182, 198, 174, 190, 204, 179, 196, 207, 195, 213, 220, 178, 194, 206, 198, 215, 223, 200, 216, 224, 190, 205, 213, 214, 227, 236, 222, 235, 243, 223, 235, 244, 226, 240, 246, 240, 250, 251, 235, 248, 252, 240, 252, 254, 237, 250, 253, 233, 246, 251, 229, 241, 248, 221, 235, 242, 213, 227, 234, + 209, 224, 231, 216, 229, 237, 212, 225, 233, 216, 229, 237, 223, 233, 241, 227, 240, 246, 225, 239, 246, 226, 238, 246, 223, 237, 245, 222, 238, 244, 222, 237, 245, 225, 240, 249, 229, 246, 252, 228, 244, 252, 229, 246, 253, 230, 246, 253, 230, 245, 253, 232, 247, 254, 231, 247, 254, 229, 245, 253, 230, 245, 252, + 229, 245, 252, 225, 241, 249, 225, 240, 248, 227, 240, 249, 222, 237, 247, 222, 236, 245, 221, 237, 244, 219, 234, 243, 213, 227, 236, 208, 222, 231, 207, 222, 230, 209, 223, 231, 208, 221, 229, 208, 221, 230, 209, 222, 231, 207, 220, 228, 203, 220, 227, 199, 214, 221, 199, 213, 221, 199, 212, 220, 198, 211, 218, + 198, 211, 219, 193, 206, 214, 192, 205, 213, 190, 203, 211, 185, 198, 206, 178, 191, 199, 172, 185, 193, 171, 182, 190, 164, 175, 186, 156, 169, 177, 145, 157, 165, 143, 155, 163, 141, 154, 162, 133, 146, 155, 133, 144, 152, 125, 137, 146, 115, 126, 134, 104, 113, 122, 95, 104, 113, 83, 92, 101, 72, 82, 90, + 61, 69, 77, 48, 54, 59, 42, 49, 54, 48, 54, 60, 59, 65, 72, 66, 74, 82, 75, 83, 92, 86, 96, 106, 96, 107, 115, 106, 117, 126, 112, 127, 136, 118, 132, 144, 125, 140, 152, 131, 149, 160, 138, 156, 167, 145, 164, 174, 153, 170, 183, 156, 174, 188, 159, 178, 191, 161, 180, 195, 161, 179, 192, + 45, 64, 71, 48, 67, 72, 50, 68, 74, 60, 74, 81, 64, 80, 87, 67, 84, 90, 67, 83, 90, 71, 88, 95, 77, 94, 103, 74, 91, 99, 67, 84, 94, 66, 82, 91, 73, 90, 100, 76, 93, 103, 84, 100, 112, 85, 103, 112, 82, 100, 110, 78, 97, 107, 88, 106, 117, 100, 118, 129, 108, 126, 138, + 107, 126, 136, 110, 127, 139, 104, 125, 137, 94, 113, 125, 94, 112, 123, 114, 132, 145, 116, 135, 148, 116, 134, 147, 121, 140, 153, 108, 126, 139, 106, 125, 138, 106, 124, 137, 129, 148, 160, 137, 155, 167, 145, 163, 175, 137, 156, 168, 137, 155, 168, 142, 161, 173, 135, 154, 166, 136, 154, 168, 131, 150, 163, + 119, 138, 152, 124, 141, 154, 130, 147, 160, 126, 145, 158, 128, 145, 158, 112, 130, 141, 113, 130, 142, 106, 124, 135, 84, 103, 112, 72, 88, 100, 60, 78, 85, 53, 68, 75, 46, 62, 70, 47, 60, 69, 42, 58, 65, 43, 55, 65, 39, 52, 60, 35, 47, 57, 31, 43, 52, 28, 41, 51, 30, 43, 51, + 39, 52, 60, 49, 61, 71, 43, 58, 67, 42, 53, 63, 46, 60, 68, 50, 63, 73, 64, 79, 88, 92, 109, 118, 134, 151, 161, 151, 168, 177, 174, 190, 197, 179, 196, 203, 153, 171, 179, 112, 130, 140, 82, 101, 111, 72, 89, 98, 66, 84, 92, 61, 76, 85, 61, 75, 84, 70, 85, 93, 69, 83, 93, + 74, 89, 98, 89, 106, 115, 135, 153, 164, 129, 147, 156, 132, 150, 161, 144, 162, 171, 191, 208, 214, 206, 222, 229, 193, 211, 218, 197, 213, 220, 192, 208, 217, 198, 216, 223, 177, 195, 202, 168, 184, 192, 182, 199, 207, 210, 225, 233, 206, 219, 226, 175, 191, 199, 175, 191, 200, 162, 180, 187, 170, 186, 195, + 169, 185, 193, 166, 182, 192, 131, 148, 160, 141, 158, 170, 133, 149, 162, 141, 158, 170, 147, 165, 175, 155, 173, 183, 154, 171, 183, 182, 199, 208, 198, 216, 224, 218, 232, 241, 178, 195, 204, 188, 204, 214, 182, 198, 205, 205, 222, 229, 213, 228, 236, 192, 209, 218, 159, 175, 186, 161, 179, 190, 153, 169, 182, + 174, 190, 202, 168, 184, 198, 159, 175, 189, 143, 159, 175, 147, 163, 180, 133, 148, 168, 145, 160, 180, 113, 130, 152, 124, 139, 162, 88, 103, 128, 104, 118, 145, 101, 116, 143, 103, 117, 144, 117, 132, 157, 130, 148, 168, 159, 176, 192, 155, 171, 187, 177, 194, 206, 197, 214, 223, 184, 201, 210, 201, 218, 227, + 185, 201, 210, 178, 194, 202, 188, 202, 212, 202, 217, 225, 210, 223, 231, 214, 227, 235, 229, 243, 249, 230, 243, 250, 235, 248, 252, 233, 245, 250, 230, 243, 247, 232, 244, 251, 231, 244, 250, 228, 241, 249, 211, 224, 232, 201, 215, 223, 206, 220, 228, 213, 225, 233, 219, 231, 239, 225, 237, 244, 228, 241, 249, + 227, 239, 247, 220, 234, 242, 221, 236, 244, 224, 240, 248, 227, 242, 251, 227, 242, 250, 230, 246, 253, 230, 246, 253, 230, 244, 253, 229, 243, 252, 228, 243, 252, 229, 244, 252, 228, 242, 251, 228, 243, 251, 226, 241, 249, 224, 239, 248, 223, 238, 246, 220, 236, 244, 219, 233, 243, 217, 232, 241, 218, 234, 241, + 215, 230, 239, 213, 228, 237, 214, 229, 238, 211, 225, 233, 209, 225, 232, 207, 224, 230, 206, 221, 228, 200, 215, 223, 201, 216, 224, 199, 213, 221, 195, 212, 219, 199, 213, 220, 197, 210, 218, 194, 209, 216, 195, 208, 216, 195, 207, 215, 192, 205, 213, 188, 201, 209, 186, 198, 206, 177, 190, 198, 170, 182, 190, + 164, 178, 186, 158, 170, 180, 151, 164, 172, 145, 158, 166, 142, 156, 163, 143, 154, 162, 137, 150, 159, 137, 148, 156, 128, 140, 149, 116, 127, 135, 110, 121, 129, 111, 121, 130, 95, 106, 114, 89, 99, 107, 84, 93, 102, 76, 85, 93, 72, 80, 87, 69, 79, 87, 77, 85, 94, 85, 94, 103, 96, 106, 116, + 107, 119, 128, 117, 129, 138, 123, 137, 146, 128, 143, 152, 131, 147, 159, 135, 151, 163, 141, 159, 170, 146, 164, 175, 152, 171, 181, 157, 173, 187, 162, 179, 192, 165, 181, 195, 164, 183, 198, 163, 182, 195, 42, 61, 68, 41, 60, 65, 43, 62, 67, 49, 64, 70, 53, 68, 75, 57, 72, 77, 61, 76, 83, + 69, 85, 92, 67, 83, 90, 66, 82, 89, 67, 83, 92, 66, 82, 90, 68, 85, 95, 75, 92, 101, 78, 95, 105, 74, 91, 100, 82, 101, 111, 95, 113, 124, 110, 128, 139, 104, 122, 133, 104, 123, 134, 112, 130, 141, 112, 130, 141, 104, 124, 136, 97, 115, 129, 104, 122, 134, 124, 142, 154, 121, 139, 152, + 125, 143, 156, 129, 146, 159, 114, 132, 145, 115, 134, 147, 133, 152, 165, 130, 149, 162, 130, 148, 162, 141, 158, 171, 136, 155, 166, 140, 160, 171, 146, 164, 176, 137, 156, 168, 140, 158, 171, 133, 153, 166, 133, 151, 164, 139, 157, 168, 142, 161, 172, 119, 138, 150, 116, 134, 145, 117, 135, 146, 102, 121, 132, + 107, 124, 135, 84, 102, 114, 62, 78, 90, 59, 75, 86, 54, 69, 78, 49, 64, 73, 41, 55, 64, 39, 53, 61, 35, 46, 56, 33, 45, 54, 27, 39, 49, 26, 38, 48, 33, 43, 52, 34, 47, 56, 36, 48, 56, 35, 47, 56, 40, 51, 61, 40, 54, 63, 49, 62, 72, 60, 74, 83, 82, 100, 108, + 128, 145, 155, 153, 170, 180, 157, 173, 182, 146, 164, 172, 137, 155, 164, 124, 142, 152, 108, 126, 138, 107, 125, 134, 78, 95, 103, 75, 91, 100, 67, 82, 91, 55, 68, 78, 50, 62, 71, 49, 62, 70, 56, 68, 77, 91, 109, 118, 114, 131, 142, 113, 131, 140, 122, 141, 149, 187, 204, 211, 195, 209, 217, + 162, 179, 187, 176, 193, 201, 169, 186, 195, 174, 191, 199, 173, 189, 199, 148, 166, 174, 160, 177, 185, 180, 197, 204, 188, 202, 211, 134, 150, 160, 118, 135, 146, 125, 144, 155, 125, 143, 154, 138, 153, 166, 119, 137, 149, 132, 150, 161, 142, 160, 172, 163, 181, 192, 143, 160, 172, 143, 161, 172, 165, 181, 192, + 175, 193, 201, 164, 180, 190, 198, 216, 223, 208, 226, 233, 196, 212, 220, 196, 212, 221, 201, 217, 226, 190, 207, 215, 196, 214, 221, 194, 210, 219, 174, 191, 200, 163, 180, 191, 163, 180, 193, 158, 175, 188, 157, 173, 186, 171, 187, 201, 159, 175, 189, 135, 151, 168, 143, 159, 178, 118, 136, 156, 136, 153, 174, + 101, 118, 140, 103, 118, 142, 82, 97, 124, 78, 93, 119, 95, 113, 140, 90, 105, 132, 116, 132, 158, 124, 142, 162, 153, 170, 188, 161, 177, 193, 166, 182, 195, 190, 206, 218, 209, 226, 235, 208, 225, 233, 197, 213, 221, 185, 203, 210, 190, 205, 213, 197, 212, 220, 199, 216, 223, 205, 219, 227, 222, 236, 243, + 218, 229, 237, 227, 241, 246, 222, 234, 241, 229, 242, 248, 232, 245, 250, 233, 245, 249, 232, 245, 250, 230, 242, 249, 218, 232, 239, 209, 224, 232, 203, 217, 225, 213, 226, 234, 215, 229, 237, 215, 228, 236, 218, 233, 241, 216, 232, 241, 220, 236, 244, 224, 240, 247, 228, 242, 252, 228, 243, 251, 226, 242, 250, + 228, 244, 252, 229, 242, 251, 229, 241, 250, 226, 241, 250, 227, 242, 251, 226, 241, 248, 225, 240, 249, 225, 240, 248, 222, 238, 245, 221, 236, 244, 221, 236, 244, 220, 235, 244, 217, 232, 241, 214, 228, 238, 210, 226, 235, 211, 226, 234, 210, 226, 233, 207, 223, 231, 205, 221, 228, 205, 221, 228, 206, 219, 226, + 202, 218, 225, 201, 217, 224, 201, 216, 223, 200, 217, 224, 196, 211, 218, 192, 205, 213, 193, 207, 215, 194, 206, 214, 190, 204, 212, 189, 202, 210, 184, 197, 205, 179, 192, 200, 176, 189, 197, 173, 186, 194, 166, 179, 187, 161, 175, 182, 152, 165, 173, 142, 154, 164, 137, 148, 158, 139, 150, 159, 142, 154, 163, + 146, 157, 165, 137, 149, 157, 127, 138, 146, 117, 128, 136, 113, 124, 132, 104, 114, 123, 102, 112, 121, 101, 111, 119, 99, 109, 118, 99, 109, 118, 97, 106, 116, 102, 112, 120, 109, 119, 128, 117, 130, 140, 127, 140, 149, 136, 148, 158, 140, 155, 164, 140, 157, 166, 144, 162, 171, 147, 163, 174, 150, 168, 179, + 154, 172, 183, 157, 176, 187, 161, 178, 191, 164, 182, 194, 166, 185, 197, 166, 185, 198, 167, 185, 199, 40, 59, 65, 39, 58, 63, 39, 58, 63, 42, 59, 64, 47, 64, 67, 53, 67, 73, 56, 72, 77, 57, 73, 79, 59, 75, 81, 64, 78, 86, 65, 80, 88, 71, 87, 94, 73, 90, 98, 76, 94, 102, + 77, 94, 104, 79, 96, 107, 99, 117, 128, 108, 126, 137, 105, 123, 134, 96, 114, 125, 105, 123, 134, 107, 125, 136, 103, 122, 134, 90, 108, 121, 95, 114, 125, 121, 139, 150, 117, 135, 147, 120, 139, 152, 115, 134, 146, 112, 131, 144, 113, 132, 145, 121, 140, 153, 119, 139, 152, 129, 147, 159, 144, 163, 174, + 142, 160, 171, 150, 169, 180, 137, 156, 167, 149, 167, 178, 143, 161, 174, 134, 153, 165, 129, 148, 161, 145, 162, 175, 146, 164, 176, 137, 155, 166, 128, 148, 157, 120, 139, 148, 113, 132, 145, 118, 137, 149, 81, 98, 109, 55, 71, 83, 63, 79, 91, 58, 75, 84, 50, 65, 74, 45, 60, 69, 41, 54, 64, + 36, 47, 57, 35, 46, 56, 33, 45, 55, 31, 42, 52, 30, 43, 52, 34, 46, 54, 34, 46, 54, 38, 49, 57, 42, 54, 63, 45, 57, 66, 64, 80, 89, 93, 108, 120, 117, 133, 141, 113, 129, 136, 99, 114, 123, 94, 111, 121, 107, 125, 134, 113, 131, 142, 109, 126, 137, 100, 118, 129, 94, 112, 123, + 96, 113, 123, 88, 105, 115, 75, 90, 101, 63, 77, 86, 54, 69, 78, 50, 63, 71, 51, 62, 72, 63, 76, 85, 99, 115, 124, 67, 82, 91, 96, 114, 122, 170, 185, 192, 176, 190, 198, 112, 130, 139, 135, 152, 160, 136, 154, 162, 158, 175, 185, 158, 175, 184, 128, 144, 155, 127, 145, 154, 138, 154, 163, + 169, 184, 192, 117, 134, 144, 104, 122, 134, 129, 146, 157, 138, 157, 167, 128, 145, 157, 118, 135, 148, 108, 127, 138, 187, 205, 214, 177, 194, 203, 193, 210, 219, 156, 173, 182, 171, 188, 198, 176, 193, 202, 172, 190, 199, 178, 195, 202, 197, 215, 222, 190, 208, 215, 189, 207, 214, 217, 233, 242, 191, 207, 215, + 169, 185, 195, 174, 191, 200, 159, 173, 186, 185, 202, 211, 168, 185, 197, 126, 141, 157, 157, 175, 187, 142, 160, 175, 163, 179, 194, 136, 152, 169, 150, 168, 185, 116, 133, 154, 97, 115, 135, 118, 136, 159, 83, 99, 123, 72, 88, 110, 57, 72, 96, 62, 76, 103, 70, 87, 115, 91, 107, 135, 111, 128, 154, + 119, 136, 160, 144, 161, 180, 173, 189, 203, 166, 182, 195, 182, 198, 210, 191, 209, 217, 205, 221, 229, 217, 230, 239, 201, 217, 225, 207, 222, 231, 216, 230, 239, 214, 230, 238, 213, 228, 235, 202, 217, 225, 215, 229, 236, 209, 222, 230, 213, 227, 235, 223, 236, 242, 220, 233, 241, 236, 249, 252, 225, 237, 243, + 237, 250, 253, 227, 240, 247, 225, 238, 245, 218, 232, 240, 208, 223, 230, 201, 216, 223, 206, 219, 227, 214, 228, 236, 213, 229, 238, 219, 232, 241, 218, 234, 243, 222, 237, 247, 223, 239, 248, 224, 239, 248, 226, 241, 250, 229, 242, 253, 228, 242, 252, 227, 241, 250, 223, 238, 247, 223, 239, 246, 222, 237, 245, + 222, 237, 246, 221, 238, 245, 221, 237, 244, 220, 236, 243, 219, 235, 242, 218, 231, 239, 215, 229, 239, 214, 227, 236, 207, 224, 231, 206, 222, 229, 207, 222, 230, 204, 220, 227, 203, 219, 226, 204, 217, 225, 199, 215, 223, 200, 214, 222, 199, 215, 222, 200, 216, 223, 197, 212, 220, 198, 211, 219, 195, 209, 217, + 198, 210, 218, 190, 203, 211, 183, 196, 204, 184, 197, 205, 177, 190, 198, 177, 190, 198, 174, 186, 194, 168, 181, 189, 166, 179, 187, 159, 172, 180, 151, 163, 173, 143, 154, 162, 134, 146, 155, 133, 144, 152, 144, 155, 163, 144, 157, 165, 143, 154, 164, 135, 148, 156, 123, 134, 142, 114, 123, 132, 117, 127, 136, + 124, 136, 144, 122, 134, 141, 124, 136, 143, 122, 133, 142, 125, 137, 146, 131, 144, 153, 139, 152, 162, 145, 160, 167, 148, 163, 172, 152, 167, 176, 153, 170, 177, 155, 172, 181, 155, 172, 181, 158, 175, 187, 160, 178, 189, 163, 180, 192, 165, 182, 194, 167, 185, 198, 169, 188, 200, 170, 188, 201, 169, 186, 199, + 38, 59, 64, 36, 55, 61, 38, 56, 62, 39, 56, 61, 40, 57, 60, 45, 60, 64, 48, 62, 67, 54, 68, 74, 57, 73, 79, 58, 72, 80, 64, 78, 86, 68, 83, 90, 73, 90, 100, 83, 101, 109, 88, 105, 116, 97, 115, 126, 97, 115, 126, 105, 123, 134, 100, 118, 129, 108, 126, 137, 106, 124, 136, + 99, 119, 130, 94, 112, 125, 99, 117, 128, 110, 128, 139, 112, 131, 143, 110, 129, 142, 101, 119, 132, 91, 111, 122, 109, 129, 141, 118, 137, 149, 129, 147, 160, 127, 145, 158, 142, 160, 172, 143, 161, 173, 145, 163, 174, 137, 157, 169, 145, 163, 174, 155, 173, 184, 153, 171, 183, 149, 167, 178, 156, 175, 185, + 156, 173, 184, 156, 174, 185, 143, 161, 172, 125, 144, 157, 112, 131, 143, 107, 126, 141, 85, 104, 116, 70, 87, 98, 79, 97, 108, 75, 91, 103, 52, 68, 80, 60, 76, 85, 45, 59, 69, 46, 60, 69, 42, 57, 66, 40, 51, 61, 36, 49, 58, 38, 49, 59, 37, 51, 59, 45, 58, 66, 49, 61, 69, + 58, 72, 81, 79, 94, 104, 101, 116, 128, 106, 121, 130, 80, 92, 101, 43, 55, 63, 31, 42, 50, 48, 61, 69, 65, 78, 88, 73, 89, 97, 92, 109, 119, 85, 103, 114, 96, 114, 125, 103, 121, 131, 100, 117, 127, 79, 97, 105, 65, 81, 90, 59, 74, 83, 55, 68, 77, 51, 64, 72, 53, 64, 73, + 56, 70, 78, 52, 63, 73, 78, 93, 103, 156, 173, 180, 152, 168, 175, 86, 103, 113, 78, 94, 106, 94, 110, 121, 120, 138, 147, 173, 191, 199, 130, 147, 157, 119, 136, 147, 125, 143, 154, 165, 182, 189, 132, 149, 159, 110, 127, 140, 131, 149, 159, 163, 181, 189, 151, 170, 180, 170, 187, 197, 136, 153, 166, + 149, 167, 177, 221, 236, 244, 191, 210, 218, 182, 199, 208, 165, 182, 191, 177, 194, 204, 164, 181, 190, 175, 192, 201, 191, 207, 214, 175, 191, 198, 170, 185, 194, 191, 209, 216, 207, 222, 230, 160, 175, 186, 147, 163, 175, 166, 181, 193, 171, 187, 198, 168, 185, 196, 161, 177, 190, 154, 171, 183, 150, 166, 181, + 165, 181, 198, 139, 155, 174, 102, 119, 137, 113, 131, 152, 101, 119, 142, 86, 104, 126, 84, 102, 125, 50, 65, 86, 50, 66, 87, 36, 49, 71, 46, 60, 85, 72, 88, 115, 100, 116, 144, 105, 122, 149, 126, 144, 169, 136, 153, 173, 159, 177, 192, 173, 189, 201, 166, 182, 194, 172, 189, 198, 192, 209, 217, + 212, 228, 235, 217, 231, 240, 219, 234, 241, 231, 244, 251, 225, 238, 246, 225, 238, 246, 211, 225, 234, 200, 213, 222, 201, 215, 222, 201, 217, 224, 214, 226, 234, 220, 233, 241, 236, 250, 252, 234, 246, 250, 232, 245, 250, 234, 246, 251, 228, 240, 247, 220, 233, 241, 226, 239, 244, 221, 236, 243, 208, 226, 232, + 197, 211, 220, 199, 216, 224, 208, 224, 231, 209, 226, 235, 213, 229, 241, 215, 231, 241, 213, 229, 241, 220, 235, 245, 221, 235, 247, 221, 236, 247, 222, 237, 245, 218, 232, 243, 219, 234, 243, 217, 231, 241, 210, 227, 237, 211, 228, 235, 213, 229, 237, 212, 228, 237, 210, 227, 235, 211, 228, 234, 210, 226, 235, + 209, 225, 233, 205, 221, 229, 203, 219, 228, 207, 222, 230, 205, 223, 230, 205, 221, 228, 204, 220, 227, 200, 215, 223, 198, 215, 222, 198, 214, 221, 199, 215, 222, 195, 211, 218, 199, 213, 221, 200, 214, 222, 198, 210, 218, 192, 205, 213, 189, 202, 210, 184, 197, 205, 178, 191, 199, 171, 184, 192, 166, 178, 186, + 166, 179, 187, 166, 179, 187, 166, 178, 187, 159, 172, 180, 148, 159, 167, 138, 149, 157, 127, 139, 147, 134, 144, 153, 142, 155, 164, 151, 163, 173, 150, 163, 172, 142, 155, 163, 139, 151, 159, 137, 150, 158, 142, 154, 162, 137, 149, 158, 142, 153, 162, 143, 155, 163, 143, 156, 166, 147, 160, 169, 154, 168, 177, + 159, 173, 181, 159, 176, 184, 160, 177, 185, 162, 178, 188, 161, 178, 187, 161, 178, 188, 163, 181, 189, 164, 182, 191, 167, 184, 196, 169, 187, 198, 171, 189, 200, 172, 190, 202, 171, 189, 202, 171, 188, 201, 38, 59, 65, 36, 57, 62, 36, 56, 60, 37, 55, 61, 39, 56, 60, 39, 56, 59, 45, 60, 64, + 48, 63, 66, 49, 63, 69, 52, 66, 74, 57, 72, 79, 70, 85, 92, 71, 88, 96, 87, 104, 114, 104, 123, 133, 99, 117, 128, 107, 125, 136, 107, 125, 136, 109, 127, 138, 106, 124, 135, 101, 119, 131, 103, 122, 133, 99, 118, 130, 108, 127, 138, 108, 126, 138, 97, 117, 128, 105, 124, 137, 100, 119, 132, + 107, 127, 139, 129, 147, 158, 135, 153, 164, 142, 161, 172, 140, 159, 171, 147, 166, 177, 150, 168, 179, 147, 165, 176, 147, 167, 178, 147, 165, 176, 156, 174, 184, 158, 176, 186, 161, 179, 188, 176, 193, 202, 167, 184, 193, 150, 169, 180, 144, 162, 173, 140, 157, 170, 122, 140, 154, 104, 123, 136, 96, 115, 128, + 92, 109, 121, 80, 99, 110, 70, 88, 99, 64, 80, 92, 51, 68, 76, 54, 69, 80, 52, 68, 76, 47, 61, 71, 45, 59, 69, 49, 62, 71, 54, 68, 77, 63, 78, 87, 77, 92, 102, 92, 107, 116, 95, 109, 121, 79, 93, 103, 53, 65, 73, 31, 43, 53, 28, 39, 49, 25, 38, 48, 28, 39, 49, + 31, 43, 52, 41, 53, 62, 48, 62, 70, 61, 75, 84, 67, 82, 91, 93, 110, 121, 85, 101, 111, 72, 85, 97, 60, 76, 84, 64, 78, 87, 57, 72, 81, 54, 67, 76, 54, 66, 75, 48, 62, 70, 51, 63, 74, 75, 90, 99, 148, 164, 173, 145, 159, 167, 69, 85, 94, 67, 83, 93, 69, 85, 96, + 81, 97, 109, 152, 168, 177, 169, 189, 196, 111, 128, 140, 118, 136, 146, 170, 187, 195, 164, 180, 188, 138, 156, 166, 143, 161, 172, 171, 188, 197, 153, 171, 180, 173, 188, 199, 175, 192, 200, 155, 172, 183, 188, 205, 214, 223, 235, 245, 188, 205, 213, 177, 194, 203, 168, 184, 194, 162, 180, 187, 166, 183, 192, + 172, 189, 197, 168, 184, 193, 132, 149, 159, 142, 158, 169, 154, 172, 180, 187, 205, 212, 156, 171, 184, 124, 140, 153, 149, 166, 178, 188, 203, 213, 153, 171, 183, 146, 162, 176, 141, 157, 171, 144, 161, 176, 154, 171, 189, 113, 130, 149, 86, 105, 123, 89, 110, 131, 77, 95, 116, 73, 93, 114, 51, 67, 87, + 46, 59, 81, 23, 35, 58, 35, 48, 70, 25, 38, 61, 61, 76, 103, 86, 105, 131, 92, 112, 139, 132, 153, 175, 133, 152, 171, 161, 179, 196, 178, 194, 205, 164, 180, 192, 163, 179, 190, 169, 187, 195, 211, 225, 234, 216, 228, 237, 213, 228, 237, 232, 245, 251, 234, 247, 251, 230, 242, 248, 220, 233, 241, + 211, 227, 233, 207, 223, 229, 195, 211, 218, 194, 210, 217, 213, 227, 235, 231, 244, 248, 224, 236, 244, 226, 239, 245, 235, 247, 251, 234, 246, 249, 228, 239, 248, 221, 234, 242, 225, 238, 243, 221, 235, 243, 213, 229, 237, 207, 224, 234, 197, 215, 223, 194, 212, 219, 204, 217, 228, 208, 224, 235, 209, 225, 237, + 209, 225, 237, 210, 225, 237, 209, 225, 237, 209, 226, 236, 210, 227, 236, 211, 227, 239, 212, 227, 239, 210, 226, 238, 209, 226, 235, 206, 223, 232, 207, 224, 233, 208, 225, 234, 204, 221, 229, 204, 220, 229, 203, 221, 229, 205, 221, 228, 202, 219, 227, 205, 221, 229, 202, 220, 227, 204, 221, 227, 206, 222, 229, + 205, 220, 228, 203, 220, 227, 203, 219, 226, 202, 216, 224, 198, 211, 219, 195, 210, 217, 199, 211, 219, 196, 209, 217, 193, 206, 214, 192, 205, 213, 186, 199, 207, 182, 195, 203, 177, 190, 198, 166, 179, 187, 161, 173, 181, 159, 172, 180, 154, 166, 176, 156, 168, 176, 157, 170, 177, 153, 166, 174, 145, 158, 166, + 137, 148, 156, 142, 155, 164, 156, 169, 176, 156, 169, 177, 154, 167, 175, 153, 167, 175, 152, 165, 173, 158, 169, 177, 160, 172, 180, 157, 171, 179, 158, 171, 179, 158, 173, 180, 160, 174, 182, 166, 180, 189, 165, 181, 188, 168, 182, 191, 168, 184, 192, 168, 184, 193, 167, 184, 193, 168, 184, 195, 168, 185, 193, + 168, 186, 196, 169, 187, 198, 171, 189, 199, 172, 190, 201, 172, 190, 201, 171, 188, 201, 172, 189, 202, 39, 61, 67, 37, 57, 63, 38, 58, 63, 38, 57, 62, 37, 55, 60, 38, 54, 57, 40, 56, 59, 40, 57, 59, 44, 59, 63, 46, 61, 65, 53, 68, 74, 63, 79, 85, 73, 91, 98, 81, 98, 106, + 92, 110, 119, 109, 127, 138, 99, 118, 129, 100, 117, 129, 95, 113, 124, 100, 118, 129, 92, 110, 122, 99, 117, 128, 114, 132, 143, 98, 117, 129, 99, 117, 129, 107, 124, 136, 111, 128, 142, 119, 137, 150, 121, 140, 153, 115, 134, 145, 130, 150, 161, 140, 159, 170, 143, 161, 172, 140, 159, 170, 142, 160, 171, + 144, 162, 173, 132, 151, 164, 137, 155, 168, 149, 167, 176, 161, 177, 188, 168, 185, 194, 162, 180, 189, 153, 172, 183, 143, 162, 175, 149, 167, 179, 134, 152, 165, 137, 155, 168, 114, 134, 147, 99, 119, 130, 97, 114, 127, 84, 102, 113, 68, 85, 96, 68, 83, 95, 65, 82, 94, 66, 80, 92, 64, 79, 90, + 66, 83, 92, 73, 90, 99, 84, 100, 109, 89, 106, 115, 88, 103, 112, 74, 89, 98, 54, 68, 78, 41, 52, 61, 35, 48, 57, 36, 47, 57, 35, 47, 57, 30, 42, 53, 30, 42, 52, 31, 40, 50, 34, 47, 56, 38, 49, 59, 41, 54, 62, 59, 71, 81, 66, 80, 90, 59, 75, 83, 52, 64, 74, + 55, 70, 79, 59, 73, 83, 55, 68, 77, 53, 65, 75, 53, 68, 76, 53, 64, 74, 55, 69, 78, 91, 107, 119, 143, 159, 170, 141, 155, 163, 60, 74, 82, 49, 63, 72, 54, 68, 77, 72, 86, 99, 124, 141, 150, 186, 202, 210, 94, 113, 122, 129, 146, 157, 172, 189, 197, 177, 194, 200, 164, 181, 190, + 173, 191, 199, 168, 185, 194, 183, 201, 208, 176, 192, 201, 174, 191, 200, 154, 171, 180, 171, 189, 197, 197, 214, 222, 215, 229, 238, 175, 192, 201, 149, 167, 176, 165, 182, 191, 148, 165, 175, 162, 179, 187, 169, 187, 194, 154, 171, 180, 103, 119, 132, 138, 155, 166, 164, 181, 190, 169, 187, 194, 153, 170, 181, + 132, 148, 161, 135, 151, 164, 155, 171, 183, 147, 163, 177, 137, 154, 166, 132, 148, 163, 115, 133, 150, 125, 143, 161, 100, 117, 136, 67, 85, 103, 73, 92, 114, 57, 73, 95, 59, 74, 96, 48, 61, 83, 40, 53, 75, 21, 33, 56, 34, 47, 69, 23, 35, 58, 48, 62, 85, 65, 83, 106, 88, 108, 133, + 126, 148, 169, 135, 153, 172, 160, 178, 193, 178, 194, 205, 179, 197, 205, 166, 182, 191, 157, 174, 183, 188, 203, 212, 195, 208, 216, 203, 218, 227, 213, 227, 234, 233, 245, 249, 230, 243, 250, 223, 237, 242, 212, 228, 234, 213, 228, 234, 198, 214, 221, 188, 205, 212, 198, 214, 222, 212, 223, 231, 211, 224, 232, + 212, 225, 232, 225, 237, 243, 221, 235, 242, 222, 234, 241, 214, 228, 236, 207, 224, 233, 213, 228, 240, 227, 239, 245, 224, 236, 245, 219, 235, 245, 219, 234, 245, 205, 221, 230, 195, 211, 219, 205, 219, 228, 208, 224, 233, 212, 229, 239, 211, 227, 237, 210, 227, 237, 210, 226, 237, 210, 227, 236, 213, 228, 239, + 213, 230, 239, 211, 228, 237, 211, 228, 236, 213, 229, 238, 213, 228, 237, 213, 228, 237, 208, 225, 234, 212, 227, 236, 211, 226, 235, 206, 223, 231, 205, 222, 228, 206, 221, 228, 207, 222, 230, 206, 223, 230, 208, 221, 230, 206, 222, 229, 205, 221, 228, 203, 219, 225, 202, 215, 223, 199, 212, 220, 196, 210, 217, + 191, 204, 212, 190, 203, 211, 189, 202, 210, 187, 200, 208, 184, 197, 205, 177, 190, 198, 171, 182, 190, 170, 181, 189, 165, 178, 186, 159, 172, 180, 157, 167, 176, 149, 162, 170, 150, 162, 170, 151, 164, 172, 160, 173, 181, 157, 170, 178, 162, 174, 181, 161, 174, 182, 163, 175, 183, 164, 177, 185, 162, 175, 183, + 168, 179, 187, 168, 182, 190, 170, 183, 191, 168, 181, 189, 168, 181, 189, 168, 184, 191, 171, 184, 193, 171, 186, 194, 171, 187, 194, 173, 188, 196, 173, 190, 199, 174, 190, 199, 172, 188, 199, 172, 189, 199, 172, 188, 198, 171, 188, 198, 172, 191, 200, 173, 191, 202, 174, 192, 203, 172, 190, 201, 172, 190, 202, + 39, 60, 66, 40, 59, 65, 40, 60, 65, 38, 57, 62, 38, 57, 62, 40, 56, 61, 37, 54, 58, 38, 56, 58, 38, 55, 59, 41, 57, 60, 44, 61, 64, 53, 68, 73, 60, 76, 83, 73, 89, 96, 84, 102, 109, 88, 107, 115, 91, 109, 118, 96, 113, 124, 105, 123, 134, 93, 112, 122, 94, 112, 123, + 104, 122, 134, 106, 125, 135, 111, 129, 140, 113, 131, 143, 121, 139, 149, 118, 138, 149, 117, 136, 148, 113, 132, 145, 113, 132, 145, 130, 148, 159, 141, 159, 170, 135, 154, 165, 131, 149, 161, 137, 155, 167, 131, 149, 162, 132, 150, 161, 144, 161, 173, 141, 160, 170, 157, 175, 184, 142, 161, 172, 133, 152, 165, + 140, 158, 170, 156, 175, 186, 143, 161, 173, 148, 167, 178, 142, 162, 173, 142, 162, 174, 128, 147, 159, 115, 134, 147, 93, 112, 124, 81, 99, 110, 94, 113, 124, 99, 117, 128, 87, 103, 115, 88, 105, 115, 89, 106, 116, 84, 100, 109, 73, 88, 99, 58, 73, 82, 44, 57, 66, 41, 56, 64, 42, 54, 64, + 41, 52, 62, 39, 50, 61, 37, 50, 59, 35, 47, 57, 30, 42, 52, 31, 42, 52, 33, 45, 54, 43, 55, 63, 56, 70, 79, 49, 62, 71, 41, 53, 61, 46, 57, 67, 54, 67, 77, 64, 77, 87, 55, 69, 79, 54, 68, 76, 56, 70, 80, 52, 66, 75, 53, 65, 74, 56, 71, 80, 95, 111, 119, + 144, 160, 169, 141, 158, 165, 60, 75, 82, 57, 71, 78, 62, 73, 83, 65, 80, 90, 110, 127, 139, 183, 200, 207, 86, 104, 111, 108, 125, 134, 166, 183, 191, 181, 198, 205, 147, 164, 172, 154, 171, 180, 175, 192, 200, 171, 188, 196, 167, 185, 192, 175, 192, 199, 144, 162, 172, 155, 172, 181, 190, 206, 215, + 207, 222, 229, 176, 193, 200, 129, 147, 154, 136, 153, 164, 155, 172, 183, 136, 154, 164, 168, 185, 194, 164, 180, 189, 139, 156, 166, 121, 137, 150, 152, 168, 178, 144, 161, 172, 146, 162, 173, 164, 181, 189, 110, 126, 139, 130, 147, 158, 136, 152, 165, 114, 131, 145, 121, 137, 152, 117, 133, 150, 104, 121, 138, + 100, 116, 136, 89, 107, 125, 70, 88, 108, 63, 82, 104, 62, 77, 99, 51, 67, 88, 53, 68, 90, 38, 52, 75, 34, 47, 69, 37, 49, 71, 34, 47, 69, 32, 45, 67, 52, 69, 90, 86, 106, 131, 131, 152, 174, 130, 148, 167, 168, 184, 199, 181, 196, 207, 185, 202, 211, 179, 196, 205, 159, 176, 185, + 164, 181, 189, 185, 201, 208, 179, 194, 201, 203, 218, 225, 216, 229, 238, 226, 240, 247, 237, 249, 252, 210, 225, 232, 201, 218, 225, 202, 218, 226, 186, 202, 209, 189, 206, 213, 201, 213, 221, 202, 217, 225, 204, 217, 225, 210, 223, 230, 216, 228, 235, 214, 225, 232, 214, 229, 236, 215, 231, 238, 214, 231, 242, + 216, 232, 244, 219, 233, 244, 229, 241, 246, 231, 244, 249, 224, 240, 247, 225, 240, 250, 208, 225, 233, 200, 215, 223, 204, 219, 225, 206, 220, 230, 215, 230, 238, 218, 233, 243, 219, 234, 244, 216, 233, 241, 218, 232, 241, 216, 231, 240, 216, 232, 240, 218, 233, 242, 217, 232, 242, 214, 230, 238, 216, 231, 240, + 217, 232, 241, 218, 233, 242, 215, 230, 238, 210, 226, 233, 209, 224, 232, 209, 224, 232, 206, 222, 229, 204, 219, 227, 204, 221, 228, 206, 221, 229, 205, 221, 228, 205, 218, 226, 202, 215, 223, 199, 213, 221, 197, 210, 218, 194, 207, 215, 191, 204, 212, 189, 200, 208, 186, 198, 206, 177, 191, 198, 173, 185, 193, + 173, 185, 193, 170, 181, 189, 166, 178, 186, 169, 179, 188, 161, 173, 181, 162, 173, 181, 159, 171, 179, 159, 170, 178, 161, 173, 181, 158, 170, 178, 167, 180, 188, 168, 181, 189, 168, 180, 188, 170, 183, 191, 172, 185, 193, 172, 185, 193, 174, 187, 195, 174, 187, 195, 174, 188, 196, 174, 189, 196, 174, 191, 198, + 177, 193, 200, 179, 195, 202, 178, 194, 201, 177, 192, 201, 176, 192, 199, 173, 190, 198, 173, 190, 199, 173, 190, 199, 173, 190, 199, 172, 191, 200, 172, 189, 200, 173, 191, 202, 171, 188, 201, 170, 187, 200, 37, 60, 66, 40, 59, 66, 40, 59, 65, 38, 57, 62, 39, 58, 63, 40, 58, 64, 42, 59, 65, + 41, 58, 62, 40, 56, 61, 38, 55, 58, 37, 55, 58, 44, 60, 63, 50, 66, 70, 60, 76, 81, 68, 85, 91, 76, 94, 101, 78, 96, 104, 90, 108, 116, 78, 96, 105, 86, 105, 114, 101, 120, 131, 110, 127, 139, 109, 127, 138, 112, 130, 141, 115, 133, 144, 115, 133, 145, 112, 130, 142, 111, 130, 143, + 115, 134, 147, 112, 131, 143, 123, 141, 154, 128, 146, 157, 119, 138, 150, 119, 138, 151, 117, 135, 148, 129, 147, 160, 147, 165, 176, 146, 164, 175, 146, 164, 174, 143, 162, 173, 137, 156, 168, 132, 151, 165, 134, 152, 164, 138, 156, 167, 148, 166, 177, 150, 169, 180, 148, 166, 177, 155, 173, 184, 142, 160, 172, + 134, 153, 163, 118, 136, 148, 119, 135, 146, 113, 130, 142, 90, 108, 117, 79, 94, 105, 69, 85, 93, 58, 74, 83, 49, 65, 73, 48, 63, 72, 46, 62, 71, 47, 59, 69, 41, 54, 64, 40, 52, 62, 39, 50, 60, 37, 49, 59, 34, 46, 56, 34, 46, 56, 36, 48, 58, 38, 50, 60, 40, 52, 63, + 37, 50, 58, 36, 47, 57, 40, 52, 61, 39, 51, 60, 48, 60, 70, 46, 58, 67, 43, 56, 63, 50, 64, 71, 56, 69, 78, 57, 71, 80, 50, 63, 72, 65, 80, 88, 96, 113, 123, 117, 134, 143, 139, 156, 163, 72, 87, 95, 55, 69, 78, 54, 70, 77, 55, 66, 76, 81, 97, 108, 162, 178, 185, + 99, 116, 123, 95, 113, 122, 151, 167, 176, 162, 178, 185, 132, 148, 157, 119, 135, 146, 138, 156, 164, 152, 169, 178, 162, 178, 186, 160, 177, 186, 110, 128, 137, 124, 141, 150, 140, 157, 166, 177, 194, 202, 210, 225, 232, 111, 128, 137, 95, 110, 122, 158, 175, 185, 158, 174, 183, 112, 130, 141, 195, 212, 219, + 171, 188, 197, 132, 149, 160, 128, 143, 155, 148, 163, 173, 116, 132, 144, 145, 161, 172, 148, 165, 176, 95, 111, 123, 115, 132, 145, 105, 122, 137, 92, 109, 122, 104, 121, 137, 112, 129, 146, 98, 118, 135, 98, 116, 137, 92, 111, 131, 73, 90, 112, 79, 97, 120, 69, 87, 108, 60, 75, 97, 55, 73, 94, + 63, 81, 103, 53, 68, 90, 41, 55, 76, 41, 55, 76, 29, 43, 63, 46, 59, 81, 87, 105, 128, 114, 132, 154, 124, 142, 160, 163, 180, 192, 168, 184, 195, 172, 188, 196, 180, 197, 206, 167, 184, 193, 145, 162, 171, 170, 185, 194, 183, 199, 207, 168, 185, 193, 196, 212, 219, 220, 233, 241, 232, 245, 252, + 229, 243, 249, 205, 222, 229, 190, 207, 214, 189, 205, 212, 180, 198, 205, 194, 209, 217, 200, 215, 222, 206, 220, 229, 211, 223, 232, 202, 215, 222, 211, 223, 231, 208, 224, 232, 214, 230, 237, 216, 232, 242, 218, 234, 245, 221, 235, 246, 221, 237, 247, 221, 235, 244, 226, 240, 245, 227, 241, 248, 224, 240, 248, + 226, 239, 247, 209, 225, 233, 201, 217, 225, 199, 216, 223, 201, 219, 225, 210, 225, 234, 214, 231, 237, 216, 230, 240, 215, 232, 241, 217, 231, 240, 217, 232, 241, 215, 231, 239, 215, 231, 239, 214, 230, 237, 214, 229, 237, 215, 231, 240, 217, 233, 240, 215, 230, 238, 212, 228, 235, 209, 226, 233, 208, 222, 230, + 207, 221, 228, 206, 220, 227, 202, 220, 227, 204, 217, 225, 203, 216, 224, 203, 216, 224, 200, 213, 221, 198, 211, 219, 194, 208, 216, 193, 206, 213, 189, 202, 210, 185, 197, 205, 178, 190, 198, 176, 187, 195, 177, 187, 196, 170, 181, 190, 173, 185, 193, 171, 182, 190, 170, 182, 190, 167, 178, 186, 166, 178, 186, + 167, 179, 186, 163, 176, 184, 166, 178, 186, 167, 180, 188, 172, 183, 191, 170, 181, 189, 168, 181, 189, 171, 184, 192, 171, 184, 192, 173, 186, 194, 175, 188, 196, 178, 192, 200, 179, 195, 202, 181, 196, 203, 181, 198, 205, 180, 196, 203, 180, 196, 203, 178, 194, 201, 178, 193, 201, 175, 193, 200, 174, 191, 200, + 174, 191, 200, 173, 190, 199, 172, 189, 201, 171, 189, 200, 171, 190, 200, 170, 188, 199, 168, 185, 197, 39, 59, 64, 38, 57, 64, 39, 58, 65, 40, 59, 66, 44, 62, 69, 45, 64, 69, 50, 69, 74, 49, 66, 72, 44, 62, 66, 40, 57, 61, 38, 55, 58, 38, 55, 58, 43, 57, 60, 46, 62, 65, + 54, 69, 73, 55, 71, 77, 65, 82, 89, 70, 87, 95, 81, 99, 107, 94, 113, 123, 100, 118, 129, 107, 126, 135, 109, 128, 139, 114, 133, 143, 111, 129, 141, 108, 127, 140, 110, 129, 141, 108, 128, 140, 118, 137, 149, 129, 146, 158, 124, 143, 155, 123, 142, 154, 126, 146, 158, 129, 149, 159, 142, 161, 171, + 149, 168, 177, 152, 170, 180, 138, 156, 167, 139, 157, 168, 138, 155, 167, 126, 145, 157, 132, 151, 164, 139, 157, 168, 147, 165, 175, 170, 188, 196, 156, 175, 184, 155, 173, 183, 157, 175, 185, 151, 170, 179, 137, 155, 164, 118, 135, 146, 95, 112, 122, 78, 95, 106, 55, 71, 81, 54, 70, 80, 52, 68, 77, + 47, 62, 71, 43, 58, 66, 45, 60, 68, 44, 60, 69, 38, 50, 60, 35, 51, 60, 35, 48, 58, 36, 48, 58, 36, 48, 58, 34, 45, 55, 37, 50, 60, 38, 50, 60, 40, 52, 62, 38, 50, 60, 34, 46, 56, 32, 42, 53, 30, 42, 52, 35, 46, 56, 38, 50, 59, 30, 42, 50, 30, 40, 49, + 33, 44, 52, 36, 47, 55, 39, 50, 60, 53, 69, 78, 96, 114, 121, 111, 128, 137, 138, 154, 163, 83, 98, 106, 57, 69, 78, 56, 70, 78, 54, 67, 75, 66, 80, 91, 145, 162, 171, 120, 133, 141, 63, 78, 87, 150, 167, 176, 160, 177, 184, 103, 118, 127, 75, 90, 99, 105, 122, 131, 116, 133, 143, + 130, 147, 156, 134, 151, 162, 100, 117, 126, 71, 87, 96, 100, 116, 128, 110, 126, 137, 156, 174, 181, 189, 204, 212, 84, 100, 111, 83, 99, 111, 170, 186, 195, 120, 137, 147, 150, 166, 175, 168, 185, 193, 142, 159, 168, 145, 161, 173, 97, 114, 126, 110, 124, 137, 74, 90, 101, 111, 127, 140, 118, 134, 147, + 86, 102, 114, 99, 114, 128, 76, 92, 107, 85, 101, 118, 96, 115, 132, 113, 130, 148, 121, 138, 156, 108, 126, 148, 114, 134, 156, 95, 114, 139, 101, 119, 144, 78, 96, 118, 80, 99, 119, 72, 92, 112, 73, 95, 113, 65, 84, 103, 58, 76, 96, 50, 66, 85, 37, 51, 69, 43, 58, 77, 72, 91, 111, + 89, 108, 128, 105, 123, 140, 140, 158, 173, 148, 166, 177, 172, 188, 197, 177, 194, 203, 168, 184, 193, 156, 172, 183, 151, 168, 177, 170, 185, 194, 156, 173, 182, 174, 192, 199, 211, 225, 232, 222, 235, 243, 228, 241, 248, 214, 230, 237, 183, 200, 206, 195, 211, 218, 190, 206, 213, 186, 203, 210, 206, 223, 229, + 216, 229, 237, 214, 226, 235, 208, 224, 231, 205, 221, 229, 206, 222, 230, 217, 232, 240, 216, 231, 241, 219, 235, 245, 224, 239, 248, 224, 239, 248, 222, 237, 247, 223, 237, 247, 222, 236, 244, 227, 242, 246, 225, 240, 246, 224, 236, 246, 221, 236, 246, 209, 224, 233, 202, 218, 225, 199, 217, 223, 197, 214, 221, + 208, 224, 231, 209, 226, 234, 214, 227, 236, 213, 227, 236, 212, 228, 235, 214, 230, 237, 215, 229, 238, 213, 230, 236, 212, 228, 235, 214, 230, 237, 211, 227, 235, 208, 225, 232, 208, 225, 232, 207, 222, 229, 204, 219, 226, 203, 217, 225, 205, 217, 225, 202, 215, 223, 200, 214, 222, 200, 213, 221, 198, 211, 219, + 195, 208, 216, 190, 204, 212, 189, 203, 209, 184, 197, 205, 183, 195, 203, 183, 193, 202, 178, 189, 198, 178, 188, 196, 175, 186, 194, 175, 186, 194, 170, 181, 189, 169, 180, 188, 168, 179, 187, 165, 179, 186, 167, 178, 186, 168, 180, 187, 171, 182, 189, 169, 180, 188, 170, 182, 190, 171, 184, 192, 170, 182, 190, + 170, 183, 191, 172, 186, 194, 172, 186, 194, 174, 188, 196, 177, 191, 198, 178, 195, 202, 182, 198, 205, 182, 198, 205, 181, 196, 204, 180, 195, 202, 179, 195, 202, 178, 195, 202, 177, 192, 201, 175, 192, 201, 174, 191, 200, 172, 189, 199, 171, 189, 199, 169, 187, 198, 168, 186, 198, 167, 185, 196, 165, 183, 193, + 36, 58, 63, 38, 58, 63, 38, 57, 64, 45, 63, 70, 53, 71, 78, 58, 75, 83, 59, 77, 84, 56, 74, 81, 52, 69, 76, 48, 66, 72, 41, 58, 62, 37, 54, 57, 38, 53, 56, 39, 54, 57, 43, 58, 61, 48, 62, 67, 54, 69, 75, 71, 88, 95, 85, 102, 110, 97, 116, 124, 108, 126, 136, + 114, 133, 145, 119, 138, 150, 113, 130, 141, 110, 128, 140, 111, 131, 143, 115, 135, 146, 125, 144, 156, 128, 146, 158, 121, 138, 151, 127, 146, 157, 131, 149, 161, 145, 164, 174, 146, 165, 173, 146, 163, 173, 141, 159, 168, 136, 155, 165, 136, 153, 166, 142, 159, 171, 117, 136, 150, 115, 134, 145, 143, 162, 172, + 147, 166, 175, 149, 168, 176, 150, 168, 177, 146, 165, 175, 139, 157, 167, 147, 166, 176, 136, 153, 165, 118, 136, 147, 67, 83, 95, 73, 90, 101, 55, 72, 80, 52, 68, 78, 50, 64, 75, 44, 60, 69, 38, 52, 61, 40, 55, 64, 43, 57, 66, 35, 50, 59, 38, 49, 59, 36, 50, 59, 37, 49, 59, + 36, 48, 58, 37, 48, 58, 36, 47, 57, 32, 45, 55, 35, 47, 57, 36, 47, 58, 36, 48, 58, 35, 47, 57, 31, 44, 53, 33, 45, 54, 26, 38, 47, 27, 38, 47, 23, 34, 44, 25, 35, 45, 30, 40, 50, 30, 44, 51, 40, 51, 60, 85, 100, 112, 85, 102, 110, 126, 142, 150, 83, 95, 104, + 38, 49, 57, 47, 58, 67, 46, 57, 67, 56, 70, 78, 108, 125, 134, 155, 172, 179, 45, 61, 68, 106, 123, 130, 173, 190, 197, 98, 114, 121, 70, 84, 94, 64, 77, 86, 65, 78, 88, 84, 100, 110, 143, 158, 167, 111, 128, 138, 65, 79, 89, 63, 76, 85, 76, 90, 102, 81, 96, 108, 190, 207, 216, + 156, 173, 180, 91, 107, 119, 85, 101, 113, 179, 196, 204, 103, 118, 131, 160, 176, 185, 138, 156, 164, 114, 130, 141, 112, 128, 139, 86, 101, 113, 100, 115, 127, 65, 80, 89, 87, 102, 116, 96, 112, 125, 87, 103, 115, 87, 102, 116, 85, 101, 116, 109, 125, 141, 117, 136, 152, 131, 148, 165, 133, 150, 168, + 109, 127, 149, 125, 145, 166, 125, 145, 166, 122, 140, 161, 98, 116, 137, 97, 116, 135, 101, 120, 138, 83, 103, 120, 70, 89, 106, 69, 89, 107, 64, 83, 101, 49, 65, 83, 45, 60, 77, 57, 74, 92, 79, 97, 115, 111, 129, 146, 136, 154, 170, 135, 152, 163, 150, 168, 178, 186, 202, 211, 162, 179, 187, + 168, 186, 194, 154, 171, 181, 161, 176, 187, 163, 178, 187, 161, 178, 187, 183, 201, 208, 212, 227, 234, 227, 240, 247, 219, 232, 240, 201, 218, 224, 172, 188, 196, 207, 222, 229, 205, 220, 226, 192, 209, 216, 222, 235, 238, 218, 231, 239, 211, 226, 234, 215, 230, 239, 215, 230, 239, 215, 228, 239, 212, 229, 237, + 216, 232, 242, 221, 237, 246, 221, 238, 246, 224, 239, 248, 221, 237, 246, 222, 237, 246, 220, 235, 244, 217, 233, 240, 225, 237, 243, 217, 233, 241, 222, 235, 245, 220, 236, 243, 203, 220, 228, 199, 215, 223, 197, 214, 221, 199, 215, 222, 204, 221, 228, 204, 218, 226, 208, 223, 231, 211, 225, 234, 210, 225, 232, + 209, 225, 232, 211, 227, 234, 213, 229, 237, 213, 229, 236, 211, 224, 232, 209, 224, 232, 207, 221, 229, 207, 220, 228, 201, 214, 222, 200, 213, 221, 199, 212, 220, 197, 211, 219, 196, 209, 217, 196, 208, 216, 191, 204, 212, 190, 202, 210, 186, 199, 207, 183, 195, 202, 182, 194, 202, 180, 192, 198, 179, 192, 199, + 180, 191, 198, 178, 191, 197, 175, 187, 193, 168, 179, 187, 167, 178, 186, 166, 177, 185, 166, 178, 186, 167, 178, 186, 168, 179, 187, 168, 179, 187, 169, 180, 188, 171, 182, 190, 175, 187, 195, 174, 186, 194, 174, 187, 195, 176, 192, 198, 182, 197, 204, 182, 195, 203, 181, 195, 202, 176, 192, 199, 177, 193, 200, + 182, 196, 204, 180, 196, 203, 179, 194, 202, 180, 197, 204, 179, 196, 202, 178, 192, 202, 174, 191, 200, 172, 189, 198, 170, 187, 197, 171, 188, 197, 168, 185, 198, 167, 184, 196, 165, 183, 194, 161, 179, 192, 35, 55, 61, 36, 56, 62, 42, 61, 67, 50, 68, 75, 57, 75, 83, 59, 76, 85, 59, 76, 84, + 59, 77, 84, 59, 76, 83, 52, 70, 78, 46, 62, 69, 39, 56, 60, 34, 52, 55, 36, 53, 56, 38, 54, 57, 40, 57, 60, 49, 64, 67, 60, 74, 80, 71, 88, 93, 87, 104, 111, 86, 104, 113, 101, 121, 128, 104, 123, 134, 112, 129, 142, 122, 141, 153, 122, 141, 153, 125, 145, 156, 132, 150, 161, + 127, 146, 159, 139, 156, 168, 135, 155, 167, 140, 158, 169, 143, 161, 172, 137, 155, 167, 131, 149, 161, 131, 148, 159, 136, 154, 166, 136, 155, 166, 134, 152, 165, 118, 137, 151, 125, 144, 155, 145, 164, 174, 127, 145, 157, 130, 148, 161, 126, 145, 155, 123, 140, 152, 128, 147, 159, 123, 141, 153, 110, 129, 140, + 81, 99, 111, 64, 81, 91, 70, 88, 97, 41, 55, 63, 44, 59, 68, 39, 54, 63, 37, 51, 60, 38, 53, 62, 40, 53, 62, 36, 49, 58, 39, 50, 60, 40, 51, 61, 38, 52, 62, 36, 49, 59, 39, 51, 61, 39, 50, 60, 34, 47, 57, 34, 46, 56, 41, 53, 63, 41, 51, 61, 37, 49, 59, + 32, 44, 54, 32, 44, 54, 30, 43, 52, 28, 39, 49, 30, 42, 51, 28, 39, 49, 31, 41, 51, 29, 40, 50, 34, 45, 54, 75, 89, 98, 75, 91, 99, 109, 126, 136, 87, 101, 110, 25, 36, 44, 35, 46, 55, 38, 50, 58, 39, 50, 58, 71, 84, 93, 165, 181, 189, 53, 69, 77, 84, 99, 108, + 184, 200, 207, 98, 111, 120, 55, 68, 76, 53, 65, 74, 53, 64, 73, 50, 61, 70, 84, 99, 107, 123, 140, 149, 69, 83, 92, 53, 65, 74, 55, 68, 76, 61, 73, 84, 105, 122, 129, 204, 220, 228, 124, 142, 149, 75, 91, 102, 94, 109, 120, 176, 192, 199, 68, 82, 91, 150, 167, 175, 99, 114, 124, + 73, 89, 98, 65, 79, 88, 67, 82, 95, 90, 104, 116, 69, 83, 93, 83, 99, 112, 89, 105, 118, 86, 102, 116, 88, 104, 118, 105, 121, 137, 125, 141, 158, 128, 147, 162, 154, 172, 188, 130, 150, 167, 129, 147, 167, 146, 166, 183, 138, 155, 173, 124, 141, 160, 116, 135, 150, 111, 128, 146, 117, 134, 151, + 92, 112, 129, 80, 99, 114, 67, 86, 101, 71, 89, 105, 70, 88, 105, 57, 75, 91, 59, 77, 94, 74, 93, 110, 107, 125, 142, 120, 137, 152, 111, 129, 140, 131, 149, 159, 179, 196, 205, 167, 184, 194, 159, 176, 184, 170, 187, 195, 158, 175, 184, 168, 186, 194, 164, 181, 190, 158, 176, 184, 191, 207, 214, + 220, 233, 241, 223, 236, 244, 199, 216, 222, 205, 221, 227, 188, 203, 211, 208, 224, 230, 212, 226, 233, 209, 225, 232, 223, 237, 240, 218, 233, 239, 221, 236, 245, 220, 236, 245, 219, 234, 242, 219, 235, 246, 221, 236, 245, 217, 232, 241, 220, 236, 245, 225, 239, 248, 223, 238, 247, 221, 236, 245, 220, 236, 245, + 220, 235, 244, 218, 232, 242, 224, 237, 242, 227, 240, 246, 216, 233, 240, 217, 232, 239, 215, 231, 239, 200, 218, 224, 197, 213, 220, 198, 214, 220, 196, 213, 220, 201, 213, 222, 201, 216, 223, 202, 217, 224, 203, 219, 226, 204, 219, 227, 205, 220, 228, 205, 219, 226, 205, 219, 227, 206, 219, 227, 200, 214, 221, + 198, 211, 219, 196, 210, 218, 193, 209, 216, 195, 208, 216, 194, 206, 214, 188, 201, 209, 187, 200, 208, 185, 198, 206, 187, 199, 207, 185, 198, 205, 181, 193, 201, 180, 192, 200, 177, 189, 197, 178, 189, 197, 174, 185, 193, 176, 187, 195, 172, 184, 191, 166, 177, 185, 166, 176, 184, 165, 176, 184, 166, 176, 184, + 166, 177, 185, 165, 177, 184, 166, 177, 185, 172, 183, 191, 177, 189, 197, 178, 192, 199, 180, 193, 201, 183, 195, 203, 183, 198, 205, 184, 197, 205, 185, 198, 206, 185, 199, 207, 186, 198, 207, 181, 196, 204, 179, 194, 202, 179, 195, 201, 177, 193, 200, 181, 195, 203, 178, 194, 202, 177, 194, 202, 175, 191, 199, + 171, 188, 197, 171, 188, 197, 170, 187, 196, 168, 184, 196, 166, 182, 194, 164, 182, 193, 160, 178, 190, 34, 54, 60, 36, 56, 62, 41, 61, 67, 46, 65, 72, 53, 71, 77, 54, 72, 79, 60, 78, 85, 63, 79, 89, 60, 77, 84, 57, 73, 81, 49, 64, 71, 42, 58, 64, 38, 55, 59, 40, 57, 61, + 40, 57, 60, 38, 55, 58, 41, 57, 61, 44, 60, 63, 53, 68, 71, 58, 72, 78, 72, 89, 95, 83, 101, 109, 95, 113, 122, 109, 127, 137, 117, 137, 149, 118, 137, 150, 123, 142, 153, 132, 151, 161, 147, 166, 175, 144, 162, 173, 138, 157, 168, 143, 161, 172, 133, 151, 164, 124, 142, 155, 131, 149, 161, + 135, 155, 166, 143, 161, 173, 148, 165, 178, 136, 155, 167, 132, 149, 163, 130, 149, 161, 133, 150, 163, 126, 144, 155, 119, 138, 150, 112, 132, 144, 116, 135, 147, 127, 146, 158, 112, 131, 143, 85, 103, 113, 58, 75, 86, 53, 68, 77, 33, 48, 57, 38, 51, 61, 39, 53, 62, 38, 51, 62, 35, 49, 59, + 45, 59, 68, 37, 50, 60, 35, 46, 56, 40, 52, 62, 39, 51, 61, 38, 53, 62, 37, 51, 60, 38, 50, 60, 37, 48, 58, 36, 48, 58, 37, 49, 59, 41, 53, 63, 42, 53, 63, 37, 49, 59, 38, 49, 59, 35, 47, 57, 35, 47, 57, 33, 44, 54, 33, 46, 54, 30, 42, 51, 30, 42, 51, + 35, 47, 56, 72, 86, 96, 71, 87, 94, 103, 118, 127, 95, 109, 119, 30, 42, 51, 30, 40, 49, 31, 42, 51, 35, 46, 54, 46, 59, 67, 146, 160, 170, 83, 97, 105, 65, 81, 88, 186, 201, 209, 111, 127, 134, 55, 67, 75, 45, 56, 64, 38, 49, 57, 40, 51, 59, 44, 55, 63, 115, 131, 140, + 112, 128, 137, 36, 47, 55, 45, 56, 65, 51, 61, 72, 46, 59, 68, 174, 191, 198, 180, 194, 202, 94, 110, 119, 56, 70, 79, 73, 89, 98, 154, 169, 177, 43, 56, 64, 156, 172, 181, 75, 88, 98, 65, 77, 87, 56, 67, 77, 72, 86, 99, 89, 104, 114, 82, 97, 110, 84, 100, 113, 100, 116, 129, + 90, 107, 120, 114, 131, 144, 137, 153, 168, 129, 145, 161, 143, 161, 175, 177, 194, 208, 138, 156, 173, 137, 155, 173, 156, 174, 190, 143, 160, 176, 120, 137, 154, 121, 139, 156, 134, 151, 167, 115, 131, 148, 115, 133, 146, 87, 104, 119, 85, 102, 117, 71, 90, 105, 67, 85, 99, 70, 90, 106, 71, 93, 108, + 74, 94, 110, 101, 119, 136, 107, 124, 139, 103, 120, 133, 127, 145, 155, 149, 166, 175, 150, 166, 178, 165, 183, 191, 160, 176, 185, 151, 167, 175, 133, 150, 161, 190, 207, 214, 144, 160, 170, 165, 182, 190, 193, 208, 216, 209, 223, 231, 213, 226, 234, 203, 218, 225, 198, 211, 219, 197, 212, 219, 209, 226, 232, + 219, 233, 240, 214, 230, 239, 222, 235, 238, 225, 241, 247, 224, 239, 248, 222, 237, 246, 222, 237, 246, 222, 237, 246, 225, 240, 249, 222, 238, 247, 215, 230, 240, 215, 231, 239, 221, 236, 245, 221, 235, 244, 220, 236, 245, 221, 235, 244, 218, 233, 243, 213, 228, 236, 224, 236, 240, 220, 233, 241, 214, 229, 238, + 211, 226, 235, 211, 226, 234, 197, 212, 219, 196, 212, 219, 196, 210, 217, 193, 210, 217, 199, 215, 222, 195, 211, 218, 194, 211, 218, 198, 210, 218, 195, 211, 218, 194, 210, 217, 194, 209, 216, 195, 209, 217, 197, 211, 218, 194, 209, 216, 193, 206, 214, 193, 208, 216, 192, 206, 214, 189, 202, 210, 191, 204, 212, + 190, 203, 211, 185, 198, 206, 183, 196, 204, 183, 194, 203, 179, 193, 200, 177, 189, 197, 175, 187, 195, 171, 184, 192, 175, 186, 194, 168, 179, 187, 164, 176, 184, 165, 177, 185, 165, 176, 184, 163, 174, 182, 165, 176, 184, 163, 177, 184, 168, 181, 189, 174, 187, 195, 181, 193, 201, 185, 199, 206, 186, 199, 207, + 187, 200, 208, 184, 200, 207, 185, 198, 206, 185, 198, 206, 185, 197, 205, 186, 197, 206, 186, 197, 205, 183, 196, 204, 182, 198, 205, 183, 198, 205, 174, 191, 200, 174, 190, 198, 175, 191, 198, 175, 190, 198, 171, 188, 196, 171, 187, 198, 169, 186, 195, 167, 183, 194, 164, 180, 192, 162, 180, 191, 160, 178, 189, + 35, 54, 61, 34, 53, 60, 38, 57, 64, 44, 63, 70, 49, 66, 73, 51, 69, 76, 57, 75, 82, 66, 82, 91, 57, 74, 81, 54, 71, 79, 60, 76, 83, 53, 69, 76, 57, 74, 81, 57, 74, 80, 50, 66, 73, 45, 62, 68, 40, 55, 60, 39, 56, 59, 42, 58, 61, 49, 64, 67, 58, 74, 79, + 74, 92, 99, 84, 102, 110, 93, 111, 121, 115, 134, 143, 126, 144, 154, 130, 148, 159, 141, 159, 170, 148, 166, 176, 140, 157, 169, 136, 155, 165, 135, 154, 166, 130, 148, 160, 135, 155, 167, 143, 161, 172, 157, 175, 185, 151, 169, 180, 139, 156, 170, 131, 150, 163, 117, 135, 148, 116, 135, 148, 128, 146, 159, + 124, 143, 155, 108, 126, 138, 93, 111, 122, 107, 125, 136, 111, 130, 140, 79, 96, 107, 44, 59, 70, 50, 64, 74, 36, 51, 60, 38, 53, 62, 37, 51, 60, 37, 52, 61, 36, 48, 59, 41, 54, 63, 36, 48, 58, 33, 46, 56, 35, 49, 59, 39, 51, 61, 40, 52, 62, 39, 51, 61, 36, 49, 59, + 34, 47, 57, 36, 48, 58, 39, 51, 61, 37, 49, 59, 40, 53, 62, 45, 56, 66, 42, 53, 63, 39, 52, 62, 37, 49, 59, 36, 48, 58, 33, 45, 55, 33, 45, 54, 31, 42, 51, 39, 50, 57, 68, 82, 92, 71, 85, 93, 92, 107, 116, 101, 116, 124, 39, 51, 59, 32, 43, 52, 32, 43, 53, + 32, 44, 54, 38, 49, 57, 105, 122, 131, 119, 131, 140, 39, 51, 59, 143, 157, 167, 141, 154, 161, 67, 80, 88, 31, 43, 50, 34, 45, 53, 34, 45, 53, 37, 48, 56, 63, 77, 86, 132, 148, 157, 64, 76, 83, 42, 55, 62, 39, 50, 58, 39, 50, 59, 61, 74, 82, 203, 220, 227, 160, 174, 182, + 52, 64, 72, 67, 79, 89, 62, 75, 84, 129, 144, 152, 52, 63, 72, 153, 169, 178, 66, 81, 90, 63, 76, 86, 60, 72, 83, 92, 107, 120, 87, 102, 111, 87, 104, 116, 91, 108, 120, 116, 133, 145, 117, 135, 147, 119, 136, 149, 147, 164, 176, 166, 183, 195, 148, 166, 180, 162, 178, 193, 174, 191, 207, + 150, 168, 184, 187, 204, 214, 148, 165, 180, 147, 164, 178, 128, 146, 160, 130, 148, 162, 127, 143, 158, 131, 147, 160, 95, 112, 125, 91, 109, 121, 81, 97, 111, 79, 96, 109, 75, 95, 109, 72, 93, 108, 80, 101, 117, 84, 105, 120, 109, 127, 142, 107, 124, 137, 117, 136, 146, 109, 126, 138, 124, 141, 151, + 140, 157, 166, 166, 181, 192, 156, 174, 181, 117, 133, 145, 165, 181, 189, 162, 177, 186, 145, 163, 173, 163, 180, 188, 196, 211, 219, 202, 215, 222, 195, 212, 219, 204, 219, 227, 201, 218, 224, 206, 223, 230, 214, 229, 237, 222, 235, 244, 201, 217, 226, 215, 230, 236, 230, 243, 248, 224, 239, 247, 221, 237, 246, + 218, 235, 244, 217, 233, 243, 221, 236, 247, 221, 236, 247, 222, 238, 246, 218, 233, 242, 215, 231, 240, 213, 228, 237, 215, 231, 240, 216, 230, 238, 212, 228, 238, 211, 225, 234, 213, 229, 233, 221, 233, 239, 212, 227, 233, 210, 227, 233, 206, 221, 230, 203, 219, 226, 191, 207, 214, 193, 209, 216, 194, 208, 216, + 191, 205, 213, 195, 210, 217, 194, 207, 215, 190, 203, 211, 191, 205, 213, 195, 210, 217, 195, 208, 216, 192, 207, 214, 193, 209, 216, 192, 205, 213, 188, 202, 210, 186, 202, 209, 189, 202, 210, 189, 203, 211, 189, 202, 210, 185, 198, 206, 185, 198, 206, 184, 197, 205, 182, 195, 202, 181, 192, 199, 178, 191, 197, + 175, 188, 196, 172, 184, 192, 170, 182, 189, 169, 181, 189, 165, 176, 184, 164, 175, 183, 164, 176, 184, 170, 181, 190, 169, 183, 191, 174, 186, 194, 179, 191, 199, 183, 197, 204, 189, 200, 207, 187, 200, 208, 188, 201, 209, 185, 198, 206, 186, 199, 207, 185, 198, 206, 185, 197, 205, 183, 197, 204, 185, 197, 205, + 183, 196, 204, 181, 197, 204, 178, 195, 203, 180, 196, 203, 178, 194, 201, 174, 190, 197, 171, 188, 196, 170, 187, 195, 171, 188, 197, 168, 185, 194, 166, 183, 194, 165, 183, 191, 162, 180, 191, 161, 179, 190, 35, 54, 60, 33, 53, 58, 35, 54, 61, 40, 59, 66, 43, 61, 68, 49, 67, 74, 51, 69, 76, + 59, 75, 83, 63, 80, 87, 71, 89, 98, 70, 86, 95, 62, 79, 88, 76, 93, 102, 66, 83, 92, 57, 75, 81, 54, 72, 79, 46, 64, 68, 43, 61, 64, 43, 59, 62, 42, 58, 61, 47, 63, 65, 51, 68, 73, 64, 82, 87, 82, 100, 108, 94, 113, 121, 113, 132, 139, 125, 144, 153, 145, 163, 174, + 137, 156, 166, 138, 156, 167, 135, 153, 165, 134, 153, 165, 144, 161, 173, 154, 172, 183, 155, 174, 182, 159, 177, 187, 139, 157, 169, 128, 147, 160, 123, 142, 156, 124, 142, 155, 133, 152, 164, 127, 145, 158, 113, 133, 146, 85, 104, 115, 107, 125, 137, 90, 108, 119, 77, 95, 106, 55, 70, 82, 44, 61, 72, + 43, 56, 68, 38, 53, 62, 40, 54, 64, 40, 54, 64, 38, 53, 62, 40, 54, 63, 36, 48, 58, 34, 46, 56, 38, 51, 60, 36, 49, 58, 39, 51, 61, 37, 50, 59, 34, 46, 56, 33, 45, 55, 34, 46, 56, 35, 47, 57, 38, 50, 60, 39, 51, 61, 42, 55, 64, 45, 58, 68, 42, 54, 64, + 41, 54, 64, 41, 53, 63, 38, 50, 60, 37, 49, 59, 39, 50, 58, 38, 50, 59, 67, 80, 90, 73, 88, 96, 81, 96, 105, 103, 117, 125, 48, 59, 68, 35, 47, 55, 36, 47, 55, 32, 45, 54, 37, 47, 57, 72, 88, 96, 142, 158, 166, 30, 42, 50, 107, 122, 131, 171, 183, 192, 78, 90, 98, + 32, 42, 50, 32, 42, 51, 35, 46, 54, 35, 46, 54, 42, 52, 60, 87, 103, 112, 134, 149, 158, 32, 42, 50, 47, 60, 68, 33, 44, 52, 43, 53, 62, 80, 93, 102, 198, 212, 220, 129, 145, 153, 35, 46, 54, 49, 60, 69, 58, 70, 78, 118, 132, 141, 71, 85, 93, 133, 148, 157, 64, 79, 89, + 77, 92, 104, 77, 93, 104, 94, 110, 122, 110, 126, 138, 74, 91, 102, 110, 127, 140, 107, 123, 136, 116, 133, 145, 131, 148, 161, 128, 145, 159, 162, 179, 192, 164, 182, 193, 158, 175, 189, 188, 205, 217, 154, 172, 186, 154, 172, 183, 164, 181, 192, 162, 179, 190, 145, 165, 175, 140, 158, 168, 129, 147, 157, + 125, 142, 155, 100, 116, 129, 96, 112, 125, 85, 102, 115, 91, 109, 122, 85, 103, 117, 81, 102, 117, 90, 112, 127, 87, 105, 122, 101, 120, 134, 105, 122, 134, 96, 113, 124, 95, 111, 123, 94, 111, 123, 128, 145, 155, 174, 190, 198, 153, 170, 177, 119, 135, 146, 116, 131, 144, 204, 218, 225, 147, 165, 174, + 165, 182, 190, 178, 194, 201, 192, 208, 216, 205, 221, 229, 210, 225, 233, 214, 228, 238, 212, 228, 236, 222, 234, 246, 216, 231, 238, 225, 241, 248, 198, 213, 221, 216, 229, 235, 230, 243, 250, 225, 240, 248, 219, 236, 244, 219, 235, 245, 220, 234, 244, 221, 237, 245, 221, 236, 245, 222, 237, 246, 221, 236, 246, + 215, 230, 240, 209, 227, 234, 209, 224, 234, 208, 224, 232, 210, 226, 233, 208, 224, 231, 206, 221, 228, 218, 230, 236, 215, 230, 234, 206, 222, 230, 204, 220, 227, 201, 218, 225, 195, 211, 218, 186, 202, 209, 191, 205, 214, 190, 206, 214, 188, 203, 210, 188, 204, 211, 190, 205, 213, 187, 204, 211, 188, 203, 210, + 186, 203, 210, 188, 203, 211, 191, 204, 212, 190, 205, 213, 186, 201, 209, 185, 198, 206, 182, 195, 203, 182, 195, 203, 182, 195, 203, 180, 193, 201, 179, 192, 200, 177, 190, 198, 179, 191, 199, 181, 193, 201, 176, 189, 197, 174, 185, 193, 174, 185, 192, 172, 184, 191, 169, 180, 188, 170, 181, 189, 170, 183, 191, + 174, 186, 194, 175, 188, 196, 175, 188, 196, 177, 190, 198, 180, 193, 201, 184, 196, 204, 185, 198, 206, 188, 201, 209, 188, 201, 209, 188, 201, 209, 186, 199, 207, 187, 199, 207, 184, 197, 205, 185, 197, 206, 183, 196, 204, 183, 196, 204, 177, 195, 202, 178, 195, 202, 178, 194, 201, 175, 192, 201, 174, 191, 200, + 173, 191, 199, 169, 186, 195, 167, 184, 195, 165, 181, 192, 164, 182, 189, 163, 181, 192, 162, 180, 191, 34, 53, 60, 33, 52, 58, 32, 51, 57, 34, 53, 60, 39, 57, 63, 41, 59, 66, 49, 67, 74, 57, 75, 82, 69, 87, 95, 73, 89, 98, 73, 89, 99, 82, 100, 108, 76, 92, 102, 72, 88, 98, + 66, 84, 91, 60, 78, 85, 57, 77, 83, 56, 74, 81, 51, 68, 74, 49, 66, 71, 48, 64, 69, 46, 64, 66, 50, 67, 70, 63, 79, 85, 79, 97, 103, 102, 120, 128, 113, 134, 141, 123, 142, 153, 133, 152, 163, 129, 147, 159, 137, 155, 166, 146, 164, 174, 148, 168, 178, 153, 171, 182, 150, 169, 178, + 137, 155, 168, 128, 146, 159, 133, 150, 163, 120, 139, 152, 127, 146, 158, 137, 155, 168, 126, 144, 157, 113, 132, 145, 103, 124, 135, 97, 114, 127, 77, 95, 106, 73, 90, 101, 47, 61, 71, 41, 57, 66, 50, 66, 75, 41, 58, 66, 43, 58, 67, 39, 54, 63, 40, 55, 64, 34, 47, 58, 38, 51, 60, + 32, 45, 54, 36, 48, 58, 38, 49, 58, 36, 48, 58, 34, 46, 57, 31, 44, 54, 31, 44, 54, 32, 43, 53, 36, 48, 58, 38, 49, 59, 38, 51, 62, 43, 57, 65, 42, 56, 66, 44, 56, 66, 42, 54, 64, 43, 57, 65, 43, 57, 66, 42, 54, 64, 41, 54, 63, 65, 80, 89, 74, 89, 99, + 75, 89, 98, 102, 118, 127, 58, 70, 79, 36, 47, 56, 35, 47, 55, 38, 48, 57, 36, 49, 57, 54, 66, 74, 146, 160, 169, 55, 67, 77, 73, 89, 97, 183, 198, 206, 81, 93, 102, 43, 55, 62, 35, 46, 54, 34, 45, 53, 35, 46, 54, 35, 47, 54, 47, 58, 68, 118, 135, 144, 86, 97, 105, + 55, 65, 75, 35, 47, 55, 40, 52, 60, 41, 52, 61, 131, 147, 156, 168, 182, 190, 122, 139, 148, 47, 59, 68, 44, 55, 64, 68, 82, 91, 121, 136, 144, 100, 118, 126, 114, 131, 141, 74, 89, 101, 85, 101, 113, 88, 106, 117, 91, 108, 119, 112, 128, 140, 92, 108, 120, 134, 150, 162, 98, 114, 127, + 133, 150, 162, 141, 159, 170, 132, 148, 163, 157, 174, 185, 168, 185, 196, 164, 183, 194, 167, 185, 198, 152, 169, 181, 134, 151, 165, 161, 179, 187, 149, 166, 177, 156, 174, 184, 145, 161, 173, 139, 156, 166, 110, 127, 139, 123, 139, 151, 95, 113, 125, 98, 116, 127, 96, 114, 127, 96, 116, 129, 100, 120, 135, + 96, 117, 133, 89, 108, 124, 102, 120, 133, 93, 110, 122, 87, 103, 116, 103, 121, 132, 86, 103, 115, 114, 132, 142, 148, 165, 175, 141, 158, 168, 127, 143, 155, 127, 144, 156, 156, 174, 182, 199, 213, 219, 175, 192, 201, 190, 207, 214, 206, 222, 229, 207, 223, 233, 224, 238, 242, 219, 234, 243, 220, 233, 243, + 222, 236, 246, 224, 239, 249, 215, 230, 237, 225, 240, 247, 215, 229, 239, 221, 235, 240, 228, 240, 245, 220, 236, 245, 221, 236, 245, 218, 233, 243, 216, 232, 241, 218, 232, 241, 218, 233, 242, 216, 231, 240, 214, 230, 239, 213, 229, 237, 211, 228, 236, 209, 226, 234, 207, 223, 230, 204, 220, 227, 203, 219, 226, + 204, 221, 228, 202, 216, 224, 210, 227, 232, 205, 219, 226, 199, 215, 222, 193, 210, 217, 193, 209, 217, 185, 201, 208, 183, 198, 206, 190, 205, 213, 191, 205, 213, 188, 204, 212, 185, 201, 209, 186, 202, 209, 187, 203, 210, 185, 199, 206, 185, 199, 207, 188, 202, 210, 189, 203, 211, 187, 200, 208, 185, 198, 206, + 182, 196, 204, 183, 196, 204, 179, 192, 200, 176, 188, 196, 176, 189, 197, 175, 188, 196, 177, 190, 198, 175, 188, 196, 173, 186, 194, 172, 183, 190, 171, 182, 190, 168, 180, 188, 172, 183, 191, 171, 183, 190, 174, 187, 195, 180, 193, 199, 180, 192, 200, 181, 194, 202, 182, 194, 202, 181, 194, 202, 182, 195, 203, + 184, 197, 205, 185, 199, 207, 186, 199, 207, 185, 198, 206, 183, 196, 204, 184, 198, 206, 182, 195, 203, 181, 197, 205, 181, 195, 203, 180, 197, 204, 179, 196, 203, 178, 193, 202, 177, 194, 202, 174, 191, 200, 174, 191, 200, 172, 189, 199, 170, 187, 196, 169, 186, 195, 166, 183, 192, 163, 181, 192, 164, 182, 193, + 35, 54, 60, 32, 51, 58, 30, 49, 56, 33, 52, 58, 38, 57, 64, 46, 64, 71, 54, 72, 79, 59, 77, 84, 63, 79, 89, 64, 80, 88, 75, 91, 99, 73, 89, 99, 72, 88, 98, 64, 81, 91, 83, 101, 111, 84, 102, 112, 78, 97, 106, 73, 91, 101, 70, 89, 96, 68, 86, 93, 61, 80, 87, + 55, 74, 78, 48, 66, 70, 48, 64, 68, 60, 76, 80, 75, 93, 99, 96, 115, 122, 107, 125, 135, 115, 134, 144, 138, 158, 168, 150, 168, 179, 149, 167, 178, 147, 165, 176, 135, 153, 164, 131, 148, 160, 138, 156, 168, 132, 150, 163, 123, 141, 154, 136, 155, 168, 133, 152, 164, 127, 145, 158, 113, 132, 145, + 106, 124, 137, 107, 125, 138, 68, 84, 96, 78, 96, 106, 60, 77, 88, 49, 65, 74, 44, 59, 69, 61, 78, 87, 44, 61, 70, 43, 58, 67, 39, 54, 63, 39, 53, 62, 38, 50, 60, 33, 46, 55, 30, 43, 53, 36, 47, 57, 35, 48, 57, 29, 42, 52, 28, 40, 52, 27, 39, 51, 32, 45, 54, + 33, 47, 56, 34, 47, 56, 39, 50, 60, 39, 53, 63, 42, 54, 64, 42, 55, 63, 42, 56, 65, 41, 54, 64, 44, 61, 69, 44, 58, 68, 47, 60, 69, 63, 78, 87, 77, 94, 103, 70, 84, 93, 106, 122, 130, 69, 83, 91, 38, 48, 59, 37, 47, 57, 39, 51, 59, 40, 52, 60, 44, 56, 65, + 123, 139, 148, 94, 107, 116, 53, 65, 76, 166, 182, 189, 96, 110, 118, 67, 78, 86, 38, 49, 57, 36, 48, 56, 38, 49, 57, 38, 48, 57, 36, 48, 55, 77, 88, 97, 128, 144, 151, 39, 50, 58, 81, 92, 102, 43, 55, 63, 43, 56, 64, 45, 57, 65, 186, 202, 210, 146, 163, 171, 110, 126, 135, + 55, 66, 76, 55, 69, 76, 85, 102, 111, 120, 136, 144, 123, 140, 148, 98, 115, 125, 91, 107, 119, 92, 108, 120, 78, 94, 107, 89, 105, 117, 106, 123, 134, 123, 140, 152, 126, 142, 155, 122, 140, 151, 144, 162, 173, 145, 162, 174, 124, 141, 155, 166, 184, 194, 172, 189, 200, 168, 186, 197, 162, 181, 190, + 155, 173, 184, 144, 161, 173, 148, 165, 173, 146, 163, 174, 156, 172, 181, 153, 169, 181, 139, 155, 167, 122, 138, 151, 104, 121, 134, 115, 132, 145, 92, 108, 121, 110, 127, 141, 107, 126, 141, 115, 134, 149, 104, 123, 140, 107, 126, 143, 93, 112, 128, 97, 116, 129, 94, 112, 126, 115, 133, 145, 114, 131, 143, + 107, 125, 136, 120, 137, 149, 142, 159, 168, 133, 150, 162, 139, 157, 166, 164, 183, 191, 185, 200, 209, 194, 212, 218, 191, 207, 216, 217, 234, 240, 206, 223, 231, 212, 227, 236, 222, 237, 240, 217, 233, 241, 222, 237, 246, 224, 238, 248, 224, 238, 248, 215, 228, 237, 225, 238, 247, 223, 237, 245, 223, 235, 239, + 224, 238, 244, 215, 231, 239, 214, 229, 240, 214, 230, 238, 214, 230, 238, 215, 230, 239, 213, 228, 237, 211, 227, 236, 211, 226, 235, 207, 224, 231, 207, 223, 230, 205, 220, 228, 202, 218, 225, 202, 219, 226, 201, 218, 225, 201, 217, 224, 198, 215, 222, 203, 219, 225, 213, 225, 231, 199, 214, 221, 196, 211, 218, + 194, 208, 215, 192, 208, 215, 184, 197, 205, 182, 195, 203, 188, 204, 211, 189, 204, 211, 189, 204, 211, 185, 200, 207, 187, 200, 208, 186, 202, 210, 186, 199, 207, 181, 195, 203, 181, 194, 202, 185, 197, 205, 182, 195, 203, 181, 194, 202, 183, 195, 203, 179, 190, 198, 179, 192, 200, 176, 187, 195, 175, 187, 195, + 172, 186, 192, 174, 185, 193, 172, 185, 194, 171, 182, 190, 171, 182, 190, 172, 183, 191, 171, 184, 192, 174, 186, 194, 180, 193, 200, 182, 195, 203, 183, 196, 204, 184, 197, 205, 185, 197, 205, 184, 197, 205, 181, 194, 202, 181, 194, 202, 183, 198, 205, 183, 196, 204, 183, 196, 204, 181, 195, 203, 184, 198, 205, + 181, 197, 204, 182, 198, 205, 181, 196, 204, 181, 197, 204, 179, 195, 204, 177, 194, 202, 174, 191, 200, 175, 192, 201, 173, 189, 201, 171, 188, 197, 170, 188, 196, 168, 185, 196, 166, 184, 195, 163, 181, 192, 34, 54, 59, 33, 52, 59, 31, 50, 56, 33, 52, 59, 38, 56, 63, 42, 60, 67, 45, 63, 70, + 56, 74, 81, 60, 76, 84, 58, 74, 82, 67, 83, 91, 77, 93, 103, 71, 88, 98, 84, 100, 109, 89, 106, 118, 93, 111, 122, 91, 110, 121, 96, 114, 125, 91, 111, 122, 90, 108, 119, 83, 103, 112, 72, 91, 99, 66, 84, 91, 57, 76, 81, 50, 67, 74, 55, 71, 77, 65, 84, 89, 85, 102, 109, + 103, 121, 129, 122, 141, 150, 140, 159, 168, 138, 155, 167, 134, 152, 163, 138, 156, 167, 143, 161, 172, 134, 153, 165, 127, 145, 158, 138, 156, 168, 141, 159, 172, 130, 147, 160, 117, 136, 149, 114, 132, 145, 110, 129, 142, 92, 110, 122, 66, 82, 94, 73, 90, 102, 56, 73, 82, 52, 69, 79, 51, 68, 77, + 64, 81, 89, 47, 64, 72, 42, 56, 67, 38, 52, 63, 40, 55, 63, 39, 52, 62, 33, 46, 56, 31, 44, 54, 34, 45, 55, 33, 46, 55, 28, 41, 52, 26, 38, 50, 27, 39, 49, 34, 45, 55, 34, 47, 56, 35, 46, 56, 37, 51, 60, 42, 54, 64, 41, 52, 62, 42, 54, 64, 42, 54, 64, + 39, 55, 64, 44, 59, 68, 46, 60, 70, 64, 77, 88, 81, 98, 107, 62, 79, 87, 103, 120, 130, 79, 94, 103, 40, 51, 61, 41, 52, 62, 42, 52, 62, 41, 54, 64, 42, 55, 64, 92, 107, 116, 125, 139, 148, 41, 55, 62, 135, 150, 161, 120, 136, 143, 81, 96, 104, 44, 55, 64, 40, 53, 61, + 43, 56, 64, 39, 52, 60, 40, 50, 59, 46, 59, 67, 108, 122, 130, 93, 108, 116, 52, 65, 73, 66, 81, 89, 48, 60, 69, 47, 60, 68, 64, 77, 87, 201, 214, 222, 136, 152, 160, 97, 113, 124, 65, 79, 88, 64, 79, 88, 91, 107, 116, 112, 129, 137, 141, 158, 166, 105, 122, 133, 96, 112, 124, + 83, 99, 111, 83, 98, 110, 82, 99, 111, 128, 145, 156, 119, 137, 148, 120, 137, 149, 127, 145, 156, 152, 170, 181, 131, 148, 160, 136, 155, 167, 143, 161, 172, 177, 193, 203, 165, 182, 194, 157, 175, 185, 148, 166, 178, 161, 178, 189, 152, 170, 179, 156, 173, 183, 153, 170, 179, 141, 158, 168, 149, 165, 177, + 120, 138, 148, 111, 129, 140, 112, 129, 140, 115, 132, 144, 108, 125, 138, 114, 133, 148, 116, 135, 151, 114, 134, 152, 111, 130, 148, 106, 126, 143, 115, 134, 150, 111, 130, 145, 122, 141, 154, 158, 175, 187, 115, 132, 144, 121, 139, 151, 143, 160, 171, 146, 162, 173, 150, 167, 176, 173, 192, 199, 174, 191, 200, + 199, 214, 221, 198, 216, 223, 200, 217, 226, 218, 232, 239, 209, 224, 233, 212, 228, 239, 221, 235, 240, 219, 235, 241, 221, 234, 244, 224, 236, 246, 225, 239, 248, 213, 229, 236, 223, 238, 246, 222, 235, 243, 221, 234, 239, 220, 234, 239, 205, 222, 230, 205, 222, 230, 204, 221, 230, 204, 219, 228, 204, 222, 231, + 207, 224, 232, 207, 223, 231, 208, 224, 231, 200, 218, 225, 199, 215, 223, 200, 217, 224, 200, 217, 224, 199, 216, 223, 198, 214, 221, 199, 216, 223, 196, 212, 219, 194, 210, 217, 208, 221, 226, 205, 218, 224, 196, 209, 217, 194, 209, 217, 190, 203, 211, 190, 205, 212, 182, 194, 202, 185, 197, 205, 182, 197, 204, + 184, 199, 206, 187, 200, 208, 185, 200, 207, 182, 195, 203, 178, 191, 199, 179, 192, 200, 176, 189, 197, 174, 188, 196, 175, 187, 195, 178, 190, 198, 175, 188, 196, 174, 186, 194, 172, 185, 193, 172, 183, 191, 170, 183, 191, 174, 186, 194, 174, 187, 195, 177, 189, 197, 171, 183, 191, 170, 184, 191, 172, 186, 194, + 172, 185, 193, 174, 187, 195, 180, 193, 201, 184, 197, 205, 183, 196, 204, 187, 199, 207, 188, 201, 209, 185, 198, 206, 183, 196, 204, 180, 196, 203, 182, 195, 203, 182, 195, 203, 183, 197, 205, 182, 197, 205, 182, 199, 206, 182, 198, 205, 182, 198, 205, 181, 196, 204, 178, 195, 202, 178, 195, 202, 175, 193, 201, + 175, 192, 201, 174, 190, 201, 172, 189, 198, 170, 189, 197, 169, 186, 197, 167, 185, 196, 166, 184, 194, 35, 54, 61, 33, 52, 59, 30, 49, 56, 32, 50, 57, 38, 55, 62, 42, 62, 69, 47, 65, 72, 40, 58, 65, 46, 62, 69, 56, 72, 79, 70, 86, 94, 64, 81, 89, 78, 94, 104, 81, 98, 108, + 102, 120, 131, 103, 122, 132, 105, 123, 133, 111, 130, 139, 115, 132, 143, 111, 131, 142, 101, 122, 133, 96, 115, 126, 82, 102, 111, 72, 91, 99, 63, 82, 89, 56, 74, 80, 54, 74, 78, 57, 76, 82, 70, 88, 94, 92, 109, 117, 110, 129, 136, 117, 135, 147, 121, 140, 151, 125, 142, 153, 142, 160, 171, + 128, 147, 160, 134, 152, 164, 147, 166, 176, 141, 159, 171, 136, 152, 165, 121, 139, 152, 121, 140, 153, 130, 148, 160, 73, 92, 105, 76, 93, 105, 67, 85, 96, 56, 72, 84, 64, 80, 92, 65, 83, 91, 60, 75, 84, 51, 69, 78, 35, 49, 62, 43, 57, 68, 40, 53, 62, 38, 50, 60, 32, 44, 54, + 32, 45, 56, 31, 43, 53, 30, 43, 54, 28, 41, 51, 28, 40, 51, 31, 43, 53, 32, 44, 53, 35, 47, 57, 39, 50, 60, 41, 55, 64, 41, 55, 64, 40, 53, 62, 42, 55, 65, 40, 55, 63, 41, 56, 65, 43, 59, 68, 59, 73, 83, 84, 100, 112, 60, 76, 84, 99, 116, 126, 87, 104, 111, + 43, 56, 66, 45, 57, 67, 46, 58, 68, 44, 57, 67, 44, 56, 66, 72, 88, 98, 136, 152, 161, 47, 63, 70, 103, 119, 128, 143, 158, 167, 79, 95, 103, 63, 75, 85, 45, 58, 67, 45, 59, 67, 47, 59, 69, 43, 55, 64, 45, 57, 66, 68, 82, 91, 118, 132, 141, 54, 67, 75, 71, 87, 96, + 47, 62, 69, 50, 62, 72, 51, 64, 73, 99, 117, 124, 187, 201, 209, 102, 118, 127, 97, 113, 125, 64, 80, 88, 69, 85, 94, 79, 96, 104, 111, 127, 137, 140, 157, 164, 92, 109, 120, 93, 109, 121, 75, 91, 103, 113, 130, 141, 118, 135, 146, 113, 129, 141, 112, 130, 141, 124, 142, 153, 144, 161, 172, + 156, 174, 184, 134, 151, 163, 160, 178, 189, 143, 161, 172, 177, 194, 203, 157, 175, 186, 156, 174, 185, 145, 163, 174, 169, 187, 198, 154, 171, 180, 156, 173, 183, 149, 166, 175, 138, 155, 165, 140, 157, 167, 128, 146, 156, 107, 125, 136, 109, 127, 138, 118, 136, 147, 122, 139, 152, 113, 132, 146, 119, 138, 154, + 110, 130, 148, 119, 139, 156, 124, 144, 162, 134, 153, 170, 134, 153, 169, 143, 162, 177, 154, 172, 185, 136, 153, 164, 139, 157, 168, 155, 173, 184, 159, 176, 185, 166, 183, 192, 191, 210, 217, 192, 209, 218, 193, 211, 219, 209, 223, 231, 198, 215, 223, 204, 219, 226, 210, 226, 232, 207, 223, 232, 209, 226, 234, + 219, 233, 239, 218, 231, 239, 220, 233, 242, 220, 233, 241, 222, 236, 244, 211, 226, 234, 221, 236, 245, 221, 236, 245, 221, 233, 238, 219, 232, 236, 204, 219, 228, 201, 217, 226, 198, 215, 223, 194, 212, 220, 194, 211, 220, 195, 213, 221, 200, 217, 224, 200, 217, 224, 199, 216, 224, 200, 216, 223, 199, 215, 222, + 196, 212, 219, 194, 210, 217, 195, 211, 218, 195, 211, 218, 194, 210, 217, 189, 206, 213, 192, 208, 214, 202, 217, 224, 194, 209, 216, 190, 207, 214, 185, 199, 207, 188, 202, 210, 182, 196, 204, 173, 189, 196, 183, 195, 203, 180, 193, 201, 181, 194, 202, 181, 194, 202, 182, 194, 202, 182, 195, 203, 180, 194, 202, + 177, 191, 198, 180, 193, 201, 173, 186, 194, 172, 183, 191, 168, 180, 188, 171, 182, 190, 168, 180, 188, 170, 183, 191, 172, 186, 193, 172, 184, 192, 173, 184, 192, 172, 183, 191, 170, 182, 190, 171, 183, 191, 172, 183, 191, 168, 180, 188, 175, 186, 194, 181, 194, 202, 183, 196, 204, 184, 197, 205, 184, 197, 205, + 184, 197, 205, 183, 196, 204, 182, 195, 203, 181, 194, 202, 182, 195, 203, 181, 197, 204, 183, 199, 206, 184, 199, 206, 181, 199, 206, 182, 198, 206, 181, 196, 204, 178, 196, 203, 177, 194, 203, 177, 194, 202, 176, 193, 201, 173, 190, 199, 172, 189, 198, 171, 188, 197, 169, 187, 198, 168, 186, 196, 166, 184, 195, + 34, 54, 61, 34, 54, 59, 31, 49, 56, 31, 51, 57, 35, 53, 60, 37, 55, 62, 34, 52, 59, 42, 59, 66, 51, 66, 74, 51, 67, 74, 65, 81, 89, 78, 95, 104, 81, 98, 107, 89, 106, 117, 99, 117, 127, 104, 123, 133, 107, 125, 137, 110, 129, 139, 115, 133, 144, 107, 126, 137, 110, 127, 139, + 111, 130, 141, 95, 116, 125, 93, 114, 123, 75, 93, 102, 76, 95, 103, 67, 86, 93, 60, 79, 85, 60, 78, 84, 70, 88, 95, 87, 106, 113, 97, 116, 127, 116, 136, 144, 130, 149, 159, 133, 151, 163, 133, 151, 163, 135, 154, 166, 142, 160, 170, 143, 161, 172, 129, 147, 159, 111, 130, 143, 138, 158, 170, + 108, 127, 141, 82, 101, 114, 85, 103, 115, 70, 87, 98, 69, 86, 97, 88, 105, 116, 53, 71, 80, 62, 78, 89, 54, 71, 80, 37, 51, 64, 46, 60, 70, 40, 55, 64, 37, 51, 60, 32, 45, 55, 34, 47, 57, 30, 43, 54, 30, 42, 54, 26, 39, 50, 27, 39, 49, 34, 46, 56, 31, 43, 54, + 34, 46, 56, 33, 46, 55, 41, 53, 63, 37, 53, 61, 39, 52, 61, 37, 51, 60, 40, 54, 63, 43, 56, 66, 54, 69, 78, 81, 97, 106, 59, 76, 84, 93, 109, 119, 93, 110, 118, 50, 65, 75, 43, 57, 66, 43, 58, 67, 44, 57, 66, 44, 59, 66, 63, 79, 88, 132, 149, 158, 67, 84, 93, + 78, 95, 104, 152, 170, 177, 74, 89, 97, 78, 95, 102, 48, 59, 69, 49, 63, 71, 47, 61, 71, 51, 64, 74, 49, 63, 73, 53, 67, 76, 100, 116, 125, 103, 116, 125, 53, 68, 76, 69, 85, 92, 55, 69, 78, 59, 73, 82, 55, 69, 79, 151, 168, 175, 161, 175, 183, 97, 114, 123, 96, 112, 122, + 76, 92, 101, 69, 84, 94, 78, 95, 105, 137, 152, 162, 130, 146, 153, 85, 102, 111, 75, 90, 101, 91, 107, 119, 98, 115, 125, 102, 120, 131, 111, 129, 140, 123, 142, 151, 128, 146, 157, 138, 155, 167, 137, 155, 166, 151, 168, 180, 163, 179, 191, 156, 174, 184, 159, 177, 185, 152, 170, 181, 151, 169, 179, + 142, 160, 171, 167, 185, 194, 156, 174, 182, 157, 174, 184, 158, 175, 183, 135, 151, 163, 113, 132, 141, 124, 142, 153, 111, 130, 141, 113, 130, 143, 123, 140, 153, 121, 138, 151, 129, 147, 160, 120, 139, 155, 117, 139, 156, 125, 148, 165, 133, 153, 170, 145, 165, 182, 153, 172, 189, 168, 186, 200, 175, 193, 205, + 187, 204, 216, 161, 179, 191, 175, 192, 203, 178, 196, 207, 179, 197, 206, 191, 208, 218, 198, 215, 225, 195, 214, 222, 188, 206, 212, 207, 221, 229, 195, 213, 221, 208, 224, 230, 205, 222, 229, 209, 224, 234, 211, 227, 236, 217, 230, 238, 216, 229, 237, 214, 230, 237, 211, 226, 235, 217, 234, 241, 207, 223, 230, + 220, 233, 242, 216, 232, 241, 219, 233, 239, 219, 232, 237, 209, 226, 233, 204, 221, 228, 198, 216, 223, 190, 207, 215, 187, 204, 213, 188, 204, 213, 190, 207, 215, 194, 211, 218, 195, 212, 220, 196, 212, 219, 193, 210, 217, 191, 208, 214, 191, 207, 214, 191, 207, 215, 191, 207, 214, 189, 204, 212, 188, 205, 212, + 189, 204, 212, 198, 212, 217, 200, 216, 222, 187, 200, 208, 186, 199, 207, 186, 200, 208, 183, 197, 205, 174, 188, 196, 174, 187, 195, 178, 191, 199, 179, 192, 200, 178, 194, 201, 178, 190, 198, 177, 190, 198, 177, 190, 198, 180, 193, 201, 180, 193, 201, 176, 189, 197, 174, 187, 195, 170, 181, 189, 164, 176, 184, + 166, 176, 184, 167, 180, 186, 166, 181, 188, 171, 182, 190, 171, 183, 191, 172, 185, 193, 174, 188, 195, 169, 183, 191, 166, 179, 187, 170, 184, 192, 182, 195, 203, 182, 195, 203, 182, 195, 203, 183, 196, 204, 183, 196, 204, 182, 195, 203, 183, 196, 204, 182, 196, 203, 182, 195, 203, 183, 195, 203, 181, 197, 204, + 183, 196, 205, 182, 199, 205, 182, 198, 206, 181, 196, 205, 178, 195, 203, 175, 192, 201, 175, 192, 201, 175, 192, 201, 173, 190, 199, 172, 189, 198, 170, 187, 196, 167, 184, 194, 166, 184, 194, 165, 183, 194, 34, 55, 61, 34, 52, 59, 32, 51, 58, 30, 50, 55, 32, 51, 58, 34, 52, 59, 37, 55, 62, + 41, 57, 64, 47, 64, 72, 62, 78, 86, 77, 93, 102, 74, 91, 101, 82, 100, 108, 94, 111, 122, 102, 120, 129, 103, 120, 132, 105, 124, 134, 105, 123, 134, 97, 115, 124, 106, 124, 135, 103, 120, 131, 102, 121, 132, 110, 128, 140, 95, 113, 124, 89, 107, 118, 96, 115, 126, 87, 106, 117, 82, 101, 111, + 73, 92, 100, 68, 87, 95, 73, 91, 98, 91, 110, 118, 104, 124, 132, 127, 146, 155, 130, 149, 160, 138, 156, 168, 129, 147, 159, 143, 162, 171, 125, 142, 156, 121, 140, 153, 128, 146, 159, 134, 153, 165, 109, 129, 143, 118, 136, 149, 96, 116, 128, 72, 89, 102, 86, 104, 117, 86, 104, 114, 71, 88, 99, + 59, 76, 87, 47, 63, 72, 44, 61, 70, 42, 58, 67, 42, 57, 66, 39, 52, 62, 31, 45, 56, 36, 49, 59, 30, 44, 56, 30, 44, 54, 26, 40, 51, 29, 42, 53, 29, 41, 51, 31, 43, 52, 31, 43, 53, 27, 42, 52, 39, 50, 60, 37, 51, 61, 39, 51, 61, 40, 52, 61, 39, 54, 63, + 50, 65, 74, 75, 89, 101, 56, 72, 80, 85, 101, 112, 94, 111, 120, 59, 74, 83, 47, 62, 72, 47, 60, 70, 44, 57, 66, 45, 57, 67, 56, 72, 80, 120, 138, 147, 91, 109, 117, 60, 77, 86, 151, 167, 176, 72, 89, 96, 83, 98, 107, 64, 78, 88, 52, 65, 75, 52, 68, 75, 56, 71, 80, + 57, 72, 81, 56, 71, 80, 70, 85, 94, 117, 132, 141, 71, 85, 95, 61, 76, 85, 64, 80, 88, 63, 77, 88, 63, 79, 87, 72, 87, 100, 191, 206, 214, 133, 151, 159, 127, 145, 153, 101, 117, 129, 82, 98, 110, 78, 94, 106, 97, 113, 125, 137, 151, 161, 110, 126, 135, 70, 86, 96, 67, 84, 92, + 114, 131, 142, 81, 98, 110, 104, 122, 133, 105, 123, 134, 126, 145, 155, 122, 140, 151, 141, 159, 169, 143, 161, 172, 157, 175, 183, 157, 175, 184, 169, 186, 198, 157, 174, 184, 140, 158, 169, 138, 156, 167, 146, 164, 175, 150, 168, 178, 156, 173, 181, 158, 174, 184, 160, 177, 186, 122, 138, 150, 109, 127, 138, + 125, 143, 153, 117, 135, 147, 111, 128, 141, 122, 139, 152, 125, 142, 156, 135, 153, 166, 121, 140, 157, 125, 145, 162, 135, 156, 173, 139, 159, 176, 156, 175, 192, 166, 184, 199, 179, 196, 209, 179, 197, 210, 190, 208, 219, 176, 193, 205, 180, 198, 209, 184, 202, 213, 191, 208, 219, 185, 204, 213, 187, 203, 215, + 188, 207, 217, 190, 207, 217, 189, 203, 211, 199, 216, 224, 193, 210, 219, 210, 228, 234, 203, 218, 228, 203, 219, 227, 206, 223, 230, 210, 225, 232, 214, 229, 236, 208, 223, 232, 210, 226, 233, 215, 229, 237, 204, 218, 227, 215, 229, 236, 212, 228, 237, 217, 230, 237, 215, 229, 234, 214, 229, 235, 208, 224, 233, + 200, 217, 224, 196, 212, 221, 193, 209, 218, 188, 205, 213, 189, 206, 213, 186, 202, 211, 188, 204, 211, 189, 206, 214, 190, 207, 213, 188, 203, 211, 188, 204, 211, 186, 202, 209, 186, 199, 208, 185, 200, 208, 187, 202, 209, 185, 200, 207, 183, 199, 205, 197, 210, 219, 192, 207, 214, 184, 198, 206, 181, 194, 202, + 182, 195, 203, 177, 190, 198, 169, 182, 190, 174, 188, 195, 174, 190, 197, 175, 187, 195, 172, 186, 194, 170, 183, 191, 173, 186, 194, 174, 187, 195, 176, 189, 197, 173, 184, 192, 171, 184, 192, 170, 183, 191, 167, 180, 188, 171, 182, 190, 165, 177, 185, 166, 177, 185, 166, 179, 187, 170, 183, 191, 174, 188, 194, + 175, 189, 197, 171, 185, 193, 172, 186, 194, 179, 190, 198, 178, 191, 199, 179, 192, 200, 180, 193, 201, 181, 194, 202, 181, 194, 202, 182, 195, 203, 180, 197, 204, 183, 196, 204, 184, 198, 206, 180, 196, 203, 178, 195, 202, 180, 195, 203, 181, 195, 205, 180, 197, 204, 180, 196, 204, 176, 194, 201, 174, 191, 200, + 173, 190, 199, 172, 189, 198, 170, 187, 196, 168, 185, 194, 166, 184, 193, 165, 184, 192, 164, 181, 193, 34, 56, 61, 34, 52, 60, 33, 52, 59, 31, 51, 56, 30, 49, 56, 32, 51, 58, 32, 50, 57, 39, 55, 62, 54, 71, 78, 70, 86, 94, 76, 93, 103, 81, 98, 107, 91, 109, 118, 100, 118, 128, + 98, 116, 125, 99, 117, 128, 101, 119, 127, 87, 104, 115, 97, 115, 125, 83, 101, 111, 104, 123, 134, 93, 111, 122, 98, 116, 128, 90, 109, 118, 104, 122, 133, 111, 129, 141, 111, 130, 141, 118, 139, 150, 96, 116, 128, 87, 107, 118, 77, 97, 106, 84, 104, 111, 98, 118, 126, 114, 135, 143, 110, 129, 141, + 118, 138, 150, 140, 157, 169, 134, 152, 164, 135, 154, 166, 145, 163, 175, 137, 154, 167, 144, 162, 173, 126, 145, 158, 136, 154, 169, 96, 115, 128, 81, 99, 112, 105, 124, 135, 73, 91, 101, 75, 94, 104, 60, 76, 89, 47, 64, 72, 44, 60, 69, 43, 60, 69, 45, 61, 70, 38, 51, 61, 36, 50, 60, + 35, 47, 58, 33, 47, 58, 29, 42, 52, 26, 39, 51, 32, 44, 55, 29, 41, 52, 28, 40, 51, 29, 41, 52, 32, 44, 55, 34, 46, 56, 37, 50, 61, 40, 52, 62, 38, 49, 59, 43, 57, 66, 71, 86, 96, 54, 70, 79, 73, 91, 99, 94, 111, 121, 66, 83, 92, 45, 60, 69, 50, 65, 74, + 47, 62, 72, 44, 59, 68, 52, 65, 75, 103, 120, 130, 110, 127, 137, 52, 67, 77, 135, 151, 163, 93, 108, 116, 79, 95, 104, 80, 96, 105, 56, 71, 80, 57, 73, 82, 62, 77, 86, 61, 76, 86, 60, 75, 84, 60, 75, 85, 94, 109, 118, 108, 122, 131, 62, 79, 89, 69, 83, 95, 63, 80, 90, + 69, 83, 94, 74, 89, 103, 91, 109, 118, 201, 215, 223, 113, 130, 139, 129, 148, 156, 95, 112, 124, 72, 88, 100, 75, 91, 103, 96, 112, 125, 143, 158, 168, 91, 108, 116, 70, 85, 97, 87, 105, 113, 83, 100, 109, 83, 99, 110, 95, 112, 125, 120, 137, 148, 127, 146, 156, 120, 138, 149, 130, 149, 158, + 138, 156, 167, 162, 178, 188, 147, 165, 175, 156, 174, 184, 150, 168, 179, 121, 139, 150, 130, 147, 159, 149, 167, 177, 140, 158, 169, 159, 176, 185, 155, 172, 181, 160, 177, 186, 133, 151, 161, 111, 129, 140, 119, 137, 149, 119, 136, 148, 116, 134, 147, 120, 138, 151, 122, 141, 156, 143, 160, 174, 124, 143, 159, + 133, 153, 171, 142, 162, 179, 153, 173, 189, 162, 181, 197, 172, 191, 204, 181, 198, 212, 184, 201, 214, 183, 202, 213, 183, 201, 211, 182, 200, 211, 183, 201, 211, 189, 207, 218, 187, 205, 216, 186, 202, 214, 185, 203, 213, 187, 203, 215, 185, 203, 211, 190, 206, 213, 194, 211, 220, 190, 208, 215, 206, 222, 230, + 199, 216, 225, 200, 218, 225, 201, 218, 225, 207, 221, 229, 213, 228, 236, 207, 223, 230, 206, 222, 229, 205, 222, 229, 202, 215, 223, 211, 226, 234, 213, 228, 237, 212, 227, 236, 209, 224, 230, 211, 224, 231, 205, 221, 229, 199, 215, 223, 199, 213, 221, 195, 211, 217, 191, 206, 214, 186, 201, 211, 187, 203, 211, + 181, 198, 206, 184, 199, 207, 187, 202, 211, 186, 202, 210, 185, 201, 209, 184, 199, 206, 180, 195, 203, 184, 198, 206, 181, 195, 203, 180, 195, 204, 181, 193, 202, 185, 199, 207, 193, 210, 216, 184, 199, 207, 182, 195, 203, 179, 193, 201, 178, 191, 199, 168, 181, 190, 167, 180, 188, 169, 182, 190, 173, 187, 195, + 175, 187, 195, 173, 186, 194, 171, 184, 192, 171, 184, 192, 175, 186, 194, 170, 183, 191, 168, 179, 187, 167, 178, 186, 167, 178, 186, 165, 177, 185, 167, 178, 186, 172, 183, 191, 173, 185, 193, 167, 179, 187, 167, 180, 188, 170, 182, 190, 170, 182, 190, 174, 188, 196, 174, 187, 195, 175, 188, 196, 173, 186, 194, + 177, 190, 197, 179, 192, 200, 180, 193, 201, 178, 193, 201, 181, 195, 202, 182, 196, 204, 181, 197, 204, 181, 197, 204, 178, 192, 201, 175, 192, 200, 177, 192, 202, 177, 192, 202, 175, 191, 199, 173, 191, 198, 170, 187, 196, 170, 187, 196, 168, 185, 194, 167, 183, 193, 163, 179, 192, 162, 181, 190, 162, 180, 191, + 35, 56, 62, 34, 53, 60, 32, 52, 58, 30, 49, 57, 31, 50, 57, 34, 53, 60, 39, 56, 63, 50, 69, 76, 57, 74, 80, 76, 93, 103, 81, 98, 107, 96, 113, 122, 95, 114, 123, 93, 111, 121, 81, 98, 107, 82, 100, 109, 87, 106, 115, 101, 119, 130, 88, 107, 116, 88, 106, 115, 100, 119, 128, + 100, 118, 127, 93, 112, 123, 100, 119, 127, 113, 131, 142, 126, 144, 155, 126, 144, 156, 126, 145, 157, 121, 139, 152, 107, 128, 141, 108, 128, 140, 99, 119, 127, 88, 109, 118, 90, 111, 119, 99, 120, 129, 113, 132, 144, 131, 149, 161, 133, 152, 165, 154, 172, 182, 159, 177, 189, 142, 160, 172, 141, 160, 173, + 143, 162, 173, 133, 150, 166, 101, 121, 134, 97, 114, 127, 90, 108, 120, 80, 98, 110, 88, 106, 118, 63, 79, 91, 47, 64, 74, 44, 62, 70, 45, 61, 70, 46, 62, 71, 37, 53, 62, 39, 53, 63, 37, 50, 60, 34, 48, 59, 30, 42, 53, 30, 43, 54, 29, 42, 51, 28, 40, 52, 28, 40, 52, + 28, 41, 53, 36, 48, 57, 28, 42, 52, 38, 50, 59, 39, 50, 60, 38, 52, 62, 65, 79, 88, 55, 69, 80, 62, 77, 86, 92, 110, 117, 75, 90, 102, 47, 62, 71, 48, 64, 72, 48, 64, 73, 49, 64, 73, 48, 64, 73, 88, 102, 114, 122, 137, 147, 52, 67, 76, 107, 124, 135, 121, 138, 146, + 60, 75, 85, 84, 101, 110, 72, 88, 97, 60, 75, 84, 62, 78, 87, 64, 79, 88, 59, 74, 85, 60, 75, 84, 64, 80, 89, 114, 129, 137, 81, 95, 105, 70, 87, 96, 76, 91, 103, 68, 84, 97, 72, 88, 100, 80, 97, 108, 116, 134, 143, 184, 198, 205, 86, 104, 114, 120, 137, 149, 81, 98, 109, + 75, 92, 104, 82, 98, 110, 63, 81, 91, 153, 169, 177, 96, 112, 122, 79, 95, 107, 92, 109, 119, 80, 97, 109, 89, 106, 116, 96, 113, 125, 90, 106, 117, 116, 135, 145, 106, 123, 134, 141, 158, 168, 121, 139, 149, 161, 177, 189, 147, 164, 174, 141, 160, 169, 145, 163, 173, 127, 146, 157, 135, 153, 165, + 143, 161, 172, 145, 163, 174, 157, 175, 183, 143, 162, 171, 133, 150, 160, 134, 152, 163, 113, 130, 142, 120, 137, 150, 123, 141, 153, 118, 137, 151, 114, 132, 145, 117, 136, 151, 133, 151, 165, 130, 148, 164, 139, 159, 176, 151, 170, 186, 162, 182, 196, 171, 190, 204, 182, 200, 213, 189, 206, 217, 190, 207, 219, + 189, 207, 217, 199, 216, 225, 183, 201, 213, 182, 201, 211, 178, 196, 207, 183, 201, 212, 185, 202, 212, 186, 204, 213, 184, 202, 213, 184, 202, 211, 184, 201, 209, 198, 214, 221, 192, 209, 218, 187, 204, 212, 194, 211, 218, 197, 213, 221, 197, 213, 220, 199, 215, 222, 200, 215, 223, 210, 225, 232, 206, 222, 229, + 202, 218, 225, 204, 220, 227, 198, 214, 221, 211, 225, 233, 210, 225, 234, 208, 225, 231, 205, 221, 227, 210, 224, 231, 202, 219, 226, 200, 216, 223, 197, 213, 220, 194, 211, 218, 190, 205, 213, 186, 202, 209, 183, 198, 206, 179, 195, 202, 178, 193, 202, 178, 194, 202, 183, 199, 206, 182, 198, 205, 182, 198, 204, + 183, 199, 206, 178, 195, 204, 180, 194, 202, 179, 192, 201, 177, 191, 199, 179, 193, 201, 191, 207, 214, 192, 205, 213, 181, 195, 203, 177, 190, 198, 174, 188, 196, 170, 183, 191, 164, 178, 186, 170, 185, 192, 175, 186, 194, 174, 187, 195, 170, 183, 191, 171, 184, 192, 167, 180, 188, 164, 177, 185, 162, 173, 181, + 165, 176, 184, 162, 175, 183, 166, 178, 186, 168, 179, 187, 166, 177, 185, 167, 180, 188, 171, 182, 190, 170, 182, 190, 172, 185, 193, 176, 189, 197, 170, 185, 193, 165, 178, 186, 165, 178, 186, 167, 182, 189, 167, 181, 188, 173, 186, 195, 176, 191, 199, 175, 188, 196, 174, 190, 197, 175, 191, 198, 175, 191, 198, + 177, 193, 200, 177, 193, 200, 173, 190, 197, 171, 187, 197, 173, 188, 197, 173, 188, 197, 171, 188, 195, 167, 185, 193, 167, 183, 194, 166, 183, 192, 164, 180, 192, 162, 178, 189, 159, 177, 188, 159, 177, 188, 34, 57, 63, 34, 55, 61, 34, 54, 60, 31, 50, 57, 32, 51, 58, 33, 52, 59, 41, 59, 66, + 50, 68, 75, 63, 80, 87, 75, 92, 101, 91, 109, 118, 94, 110, 121, 85, 103, 111, 73, 90, 99, 68, 84, 92, 79, 96, 106, 100, 119, 128, 88, 105, 115, 84, 101, 111, 90, 107, 117, 92, 111, 119, 101, 120, 129, 98, 116, 127, 107, 124, 136, 114, 131, 142, 119, 138, 147, 130, 147, 159, 118, 135, 149, + 122, 141, 152, 123, 143, 155, 129, 147, 159, 114, 134, 146, 101, 122, 133, 100, 120, 131, 103, 123, 133, 118, 138, 150, 109, 128, 140, 128, 147, 159, 147, 166, 175, 154, 172, 185, 150, 168, 179, 146, 163, 177, 151, 169, 181, 123, 142, 157, 115, 133, 147, 115, 133, 145, 86, 106, 120, 97, 116, 129, 88, 107, 118, + 72, 89, 100, 51, 67, 79, 47, 64, 72, 46, 63, 72, 48, 64, 73, 41, 57, 65, 40, 56, 64, 37, 52, 62, 37, 50, 60, 28, 42, 54, 31, 43, 55, 30, 42, 53, 29, 41, 54, 27, 40, 51, 26, 40, 51, 40, 52, 62, 29, 43, 52, 38, 50, 61, 34, 48, 58, 54, 69, 78, 55, 71, 80, + 46, 62, 70, 86, 101, 113, 80, 97, 105, 49, 64, 74, 49, 64, 73, 48, 63, 72, 46, 64, 73, 50, 65, 74, 77, 94, 104, 124, 142, 150, 58, 74, 83, 84, 101, 109, 139, 156, 166, 53, 69, 77, 78, 93, 103, 82, 98, 107, 62, 78, 87, 62, 77, 86, 58, 74, 83, 60, 75, 83, 59, 74, 82, + 61, 76, 85, 77, 93, 102, 111, 125, 134, 69, 86, 96, 68, 86, 95, 74, 91, 101, 69, 86, 96, 74, 90, 102, 73, 90, 102, 145, 163, 170, 149, 166, 173, 84, 103, 113, 101, 117, 127, 84, 102, 113, 78, 95, 106, 75, 91, 103, 72, 91, 99, 156, 173, 179, 87, 103, 113, 85, 102, 111, 76, 92, 103, + 74, 91, 102, 89, 107, 119, 93, 111, 121, 87, 105, 115, 115, 132, 143, 102, 120, 132, 143, 161, 171, 126, 144, 155, 129, 148, 158, 143, 161, 172, 122, 140, 151, 131, 149, 160, 128, 146, 156, 140, 159, 169, 141, 159, 170, 156, 174, 184, 153, 171, 181, 130, 149, 158, 103, 121, 133, 124, 142, 154, 114, 131, 143, + 114, 131, 145, 116, 134, 146, 128, 145, 159, 119, 138, 152, 124, 143, 158, 134, 154, 167, 139, 158, 173, 151, 171, 186, 162, 181, 196, 171, 190, 202, 183, 201, 213, 186, 202, 214, 190, 209, 219, 197, 214, 225, 194, 213, 222, 199, 216, 225, 189, 206, 217, 180, 198, 209, 176, 194, 205, 178, 195, 206, 183, 199, 212, + 181, 199, 209, 185, 201, 213, 180, 199, 209, 185, 202, 212, 181, 197, 205, 197, 215, 222, 179, 197, 205, 170, 187, 196, 196, 213, 221, 190, 207, 214, 192, 207, 215, 196, 211, 220, 194, 210, 217, 206, 222, 229, 200, 216, 224, 198, 214, 221, 202, 218, 225, 198, 215, 221, 207, 222, 229, 206, 223, 230, 203, 218, 226, + 201, 215, 221, 204, 223, 229, 201, 216, 224, 196, 211, 220, 192, 209, 216, 189, 204, 212, 184, 200, 207, 181, 197, 204, 181, 197, 204, 175, 192, 200, 176, 193, 200, 174, 190, 199, 177, 193, 201, 177, 193, 201, 178, 194, 201, 177, 192, 199, 176, 192, 199, 177, 191, 199, 178, 191, 200, 177, 190, 200, 178, 190, 198, + 178, 192, 199, 189, 201, 210, 178, 192, 199, 175, 189, 197, 171, 185, 193, 172, 184, 193, 163, 176, 184, 166, 179, 187, 171, 184, 192, 172, 185, 193, 170, 183, 191, 170, 183, 191, 166, 179, 187, 159, 172, 180, 164, 176, 184, 163, 176, 184, 164, 176, 184, 166, 177, 185, 163, 174, 182, 162, 174, 182, 162, 174, 182, + 162, 176, 184, 163, 176, 184, 169, 182, 190, 170, 183, 191, 172, 184, 192, 172, 185, 193, 176, 192, 199, 176, 189, 196, 169, 182, 190, 168, 181, 189, 167, 183, 190, 170, 183, 191, 170, 185, 192, 169, 184, 192, 171, 187, 194, 172, 188, 196, 171, 187, 195, 171, 186, 194, 169, 184, 192, 165, 183, 191, 165, 182, 191, + 166, 182, 192, 163, 180, 191, 163, 180, 189, 160, 178, 186, 160, 178, 186, 158, 176, 187, 157, 174, 186, 34, 58, 63, 35, 57, 63, 33, 55, 61, 29, 49, 56, 31, 50, 57, 33, 52, 59, 40, 58, 65, 50, 68, 75, 63, 81, 89, 76, 93, 101, 85, 102, 111, 76, 92, 103, 67, 83, 91, 57, 72, 80, + 66, 81, 88, 83, 99, 108, 76, 93, 103, 70, 85, 95, 84, 101, 111, 86, 102, 114, 95, 113, 122, 103, 121, 131, 98, 116, 127, 103, 121, 132, 114, 132, 143, 120, 138, 149, 131, 148, 159, 108, 127, 138, 124, 143, 152, 124, 142, 153, 137, 155, 166, 129, 149, 161, 125, 145, 157, 124, 143, 155, 125, 144, 157, + 100, 122, 134, 119, 138, 150, 119, 141, 152, 147, 165, 175, 141, 159, 171, 148, 167, 178, 149, 167, 179, 147, 165, 179, 118, 136, 150, 133, 151, 164, 107, 125, 138, 99, 119, 131, 104, 123, 136, 97, 115, 128, 84, 102, 113, 52, 68, 80, 53, 71, 80, 47, 64, 73, 50, 66, 76, 44, 60, 67, 40, 57, 65, + 39, 53, 62, 35, 50, 59, 30, 43, 55, 31, 43, 55, 32, 44, 54, 29, 42, 54, 27, 41, 52, 33, 44, 56, 35, 47, 58, 32, 44, 55, 37, 49, 59, 45, 61, 70, 55, 70, 79, 35, 50, 59, 73, 88, 98, 83, 97, 108, 53, 69, 76, 46, 61, 70, 50, 65, 74, 49, 65, 74, 49, 65, 74, + 71, 87, 96, 122, 139, 149, 72, 89, 97, 68, 84, 93, 141, 157, 168, 60, 76, 84, 58, 73, 82, 80, 95, 103, 77, 92, 101, 58, 72, 82, 60, 75, 84, 61, 77, 86, 59, 74, 83, 65, 81, 90, 71, 87, 97, 98, 115, 124, 100, 116, 125, 69, 86, 95, 68, 85, 94, 66, 83, 92, 65, 82, 93, + 70, 86, 97, 72, 89, 98, 177, 193, 200, 118, 136, 143, 80, 98, 107, 85, 100, 113, 73, 89, 101, 81, 98, 109, 86, 102, 115, 76, 95, 106, 141, 156, 165, 90, 107, 119, 88, 107, 115, 77, 92, 105, 76, 93, 102, 81, 97, 110, 94, 111, 122, 93, 110, 122, 99, 118, 129, 117, 135, 146, 131, 149, 160, + 130, 148, 159, 129, 147, 158, 124, 141, 152, 115, 133, 145, 120, 138, 149, 133, 151, 161, 139, 157, 168, 140, 158, 169, 149, 165, 177, 140, 158, 167, 118, 136, 147, 107, 124, 136, 107, 124, 138, 110, 128, 140, 111, 129, 142, 117, 136, 149, 121, 139, 153, 131, 150, 165, 136, 155, 170, 143, 162, 176, 151, 170, 184, + 162, 181, 195, 170, 189, 202, 179, 198, 210, 181, 199, 211, 184, 201, 213, 186, 204, 215, 191, 209, 220, 190, 209, 218, 194, 211, 220, 193, 210, 219, 186, 205, 216, 180, 198, 209, 180, 197, 209, 179, 196, 208, 177, 195, 206, 184, 200, 212, 181, 198, 207, 181, 198, 207, 181, 198, 207, 183, 199, 206, 189, 205, 213, + 180, 197, 206, 190, 206, 215, 190, 207, 215, 185, 200, 209, 189, 206, 214, 191, 207, 214, 190, 206, 213, 201, 216, 224, 198, 214, 221, 195, 212, 219, 200, 215, 222, 193, 209, 216, 203, 218, 225, 206, 222, 229, 202, 218, 225, 197, 211, 220, 203, 219, 226, 196, 212, 219, 194, 210, 217, 188, 204, 211, 183, 198, 205, + 179, 194, 202, 172, 187, 196, 175, 190, 197, 177, 193, 200, 177, 192, 201, 175, 193, 201, 175, 190, 199, 173, 188, 195, 171, 187, 194, 171, 187, 195, 174, 190, 198, 174, 187, 196, 173, 188, 196, 174, 189, 196, 173, 186, 194, 171, 183, 194, 185, 198, 206, 187, 201, 209, 173, 190, 197, 170, 182, 189, 169, 181, 189, + 162, 175, 183, 160, 173, 181, 166, 179, 187, 170, 183, 191, 168, 181, 189, 165, 178, 186, 164, 177, 185, 164, 177, 185, 166, 179, 187, 167, 177, 185, 167, 180, 188, 166, 178, 186, 164, 176, 184, 165, 177, 185, 166, 179, 187, 165, 178, 186, 171, 184, 192, 171, 184, 192, 173, 186, 194, 175, 188, 196, 177, 191, 198, + 177, 190, 198, 175, 188, 196, 175, 190, 197, 172, 190, 197, 175, 186, 195, 174, 191, 198, 173, 189, 196, 169, 184, 191, 164, 180, 188, 165, 179, 187, 162, 178, 185, 161, 178, 185, 158, 174, 183, 158, 175, 184, 160, 176, 185, 159, 176, 185, 159, 176, 185, 157, 174, 184, 156, 174, 182, 156, 173, 184, 154, 172, 183, + 34, 58, 64, 34, 58, 63, 32, 55, 61, 31, 51, 58, 29, 48, 55, 33, 52, 60, 39, 57, 64, 54, 73, 80, 63, 80, 88, 65, 82, 91, 77, 94, 103, 66, 83, 91, 60, 76, 84, 66, 81, 91, 67, 80, 88, 66, 80, 89, 67, 82, 90, 72, 88, 97, 81, 98, 108, 89, 106, 117, 88, 106, 115, + 105, 123, 133, 98, 116, 127, 107, 125, 136, 119, 137, 148, 118, 137, 147, 114, 131, 144, 109, 129, 140, 116, 134, 146, 130, 148, 159, 129, 148, 160, 134, 152, 164, 135, 154, 166, 141, 160, 173, 147, 166, 178, 121, 142, 155, 108, 129, 141, 118, 139, 151, 132, 151, 163, 128, 148, 161, 148, 166, 178, 138, 156, 168, + 151, 169, 181, 137, 154, 168, 120, 138, 153, 107, 126, 140, 113, 132, 144, 106, 125, 137, 91, 109, 122, 82, 99, 112, 59, 75, 87, 56, 73, 83, 51, 68, 78, 55, 70, 83, 48, 64, 72, 41, 57, 66, 40, 54, 63, 35, 50, 60, 34, 47, 58, 33, 45, 56, 35, 47, 58, 33, 45, 55, 29, 43, 55, + 36, 47, 59, 32, 46, 57, 31, 45, 56, 44, 58, 68, 59, 74, 83, 34, 50, 58, 61, 76, 84, 79, 93, 104, 60, 76, 84, 42, 57, 66, 44, 61, 70, 48, 63, 72, 51, 66, 75, 65, 82, 92, 117, 133, 143, 83, 98, 107, 54, 70, 79, 125, 143, 153, 87, 104, 113, 47, 62, 70, 62, 77, 86, + 77, 92, 101, 66, 81, 90, 56, 71, 80, 60, 74, 84, 65, 80, 89, 65, 81, 90, 67, 83, 93, 71, 88, 98, 118, 134, 143, 82, 99, 108, 66, 83, 92, 84, 100, 110, 61, 78, 86, 67, 83, 94, 67, 84, 95, 77, 93, 102, 184, 198, 206, 98, 116, 126, 76, 92, 104, 79, 95, 107, 71, 88, 97, + 88, 107, 117, 73, 91, 101, 90, 109, 118, 142, 158, 167, 91, 109, 120, 76, 94, 103, 84, 100, 113, 78, 94, 106, 96, 113, 125, 80, 98, 109, 100, 117, 128, 99, 117, 129, 119, 137, 148, 121, 140, 150, 126, 144, 155, 113, 131, 142, 104, 122, 133, 106, 124, 135, 116, 136, 146, 121, 138, 150, 131, 149, 160, + 127, 145, 156, 123, 141, 152, 122, 142, 152, 124, 142, 153, 100, 119, 132, 110, 129, 142, 111, 129, 142, 114, 133, 147, 117, 136, 151, 126, 144, 160, 140, 159, 174, 149, 168, 182, 156, 174, 187, 162, 180, 194, 175, 193, 205, 176, 193, 206, 181, 199, 210, 185, 204, 213, 180, 197, 208, 181, 199, 210, 194, 211, 222, + 182, 200, 211, 185, 202, 213, 194, 212, 221, 190, 208, 219, 185, 202, 213, 178, 196, 208, 177, 194, 206, 180, 198, 206, 181, 197, 209, 180, 198, 208, 177, 195, 204, 182, 199, 209, 179, 196, 203, 188, 201, 210, 186, 202, 212, 175, 192, 201, 195, 211, 218, 181, 198, 207, 183, 199, 208, 186, 202, 210, 184, 201, 208, + 185, 202, 209, 198, 214, 221, 193, 208, 216, 189, 203, 211, 191, 206, 214, 186, 199, 207, 194, 211, 218, 194, 210, 217, 198, 212, 220, 197, 213, 220, 202, 218, 225, 193, 209, 216, 189, 205, 212, 186, 203, 210, 181, 196, 203, 178, 192, 200, 178, 191, 201, 175, 189, 197, 171, 186, 194, 173, 189, 196, 174, 188, 196, + 172, 188, 195, 170, 186, 194, 170, 186, 194, 170, 184, 193, 166, 182, 191, 169, 185, 192, 174, 188, 195, 173, 185, 194, 170, 182, 192, 167, 180, 188, 166, 182, 190, 184, 198, 206, 177, 190, 198, 169, 182, 190, 167, 180, 188, 164, 177, 185, 156, 169, 177, 161, 174, 182, 165, 178, 186, 166, 179, 187, 165, 178, 186, + 163, 176, 184, 165, 177, 185, 162, 174, 182, 163, 176, 184, 164, 177, 185, 165, 178, 186, 165, 177, 185, 165, 178, 186, 166, 179, 187, 168, 182, 189, 169, 182, 190, 168, 181, 189, 171, 185, 193, 173, 186, 194, 174, 187, 196, 175, 188, 196, 175, 190, 197, 172, 189, 196, 170, 182, 191, 167, 181, 190, 170, 186, 193, + 169, 187, 194, 170, 185, 193, 169, 185, 193, 168, 182, 190, 165, 182, 191, 163, 179, 187, 159, 176, 185, 156, 172, 181, 152, 169, 178, 152, 169, 178, 151, 167, 179, 151, 168, 178, 151, 167, 180, 150, 168, 179, 35, 60, 66, 33, 57, 63, 33, 56, 62, 31, 53, 59, 30, 50, 56, 30, 49, 56, 42, 61, 68, + 51, 69, 76, 57, 75, 82, 59, 77, 85, 70, 87, 96, 64, 81, 89, 67, 83, 92, 65, 80, 89, 60, 73, 80, 65, 78, 87, 69, 84, 93, 75, 92, 101, 87, 103, 115, 89, 107, 118, 92, 109, 119, 95, 113, 123, 100, 118, 127, 106, 124, 133, 114, 131, 143, 108, 126, 135, 99, 117, 131, 110, 130, 141, + 125, 143, 154, 131, 150, 159, 126, 145, 158, 136, 154, 165, 137, 155, 168, 148, 166, 177, 159, 177, 186, 129, 149, 163, 122, 142, 156, 119, 139, 152, 119, 138, 151, 126, 146, 158, 142, 160, 173, 141, 158, 171, 162, 179, 190, 134, 153, 167, 134, 152, 166, 116, 136, 151, 110, 128, 142, 109, 128, 141, 95, 113, 126, + 74, 91, 103, 69, 86, 97, 56, 72, 84, 54, 70, 83, 57, 72, 84, 50, 67, 76, 48, 63, 73, 42, 59, 67, 36, 52, 61, 37, 52, 63, 37, 53, 60, 35, 49, 59, 33, 47, 57, 29, 43, 55, 35, 47, 58, 30, 45, 56, 38, 53, 63, 57, 73, 82, 37, 52, 61, 52, 67, 75, 77, 93, 102, + 65, 79, 90, 41, 56, 65, 45, 60, 69, 44, 60, 69, 46, 61, 70, 65, 81, 91, 110, 126, 138, 85, 102, 112, 49, 66, 74, 101, 117, 128, 119, 135, 145, 44, 58, 67, 51, 68, 75, 73, 88, 97, 79, 94, 105, 60, 75, 84, 58, 73, 82, 61, 76, 87, 62, 78, 88, 65, 82, 91, 65, 82, 92, + 86, 102, 113, 126, 144, 152, 73, 90, 101, 63, 80, 90, 97, 113, 123, 66, 84, 92, 67, 84, 94, 62, 79, 89, 102, 119, 128, 164, 180, 188, 83, 99, 110, 76, 92, 103, 84, 100, 113, 73, 90, 100, 87, 105, 115, 79, 96, 106, 91, 108, 119, 134, 149, 159, 92, 110, 120, 88, 106, 116, 81, 98, 110, + 95, 113, 124, 93, 109, 121, 89, 107, 118, 98, 116, 126, 110, 128, 139, 112, 130, 141, 100, 118, 129, 108, 126, 137, 106, 124, 135, 100, 118, 129, 107, 125, 136, 107, 127, 138, 120, 137, 148, 121, 139, 150, 120, 138, 149, 107, 124, 137, 112, 130, 141, 118, 136, 148, 107, 125, 138, 110, 129, 142, 119, 136, 149, + 119, 137, 151, 126, 145, 159, 133, 153, 168, 148, 168, 181, 158, 177, 189, 166, 183, 196, 173, 191, 201, 180, 198, 209, 190, 208, 219, 185, 203, 214, 183, 202, 211, 186, 203, 213, 179, 197, 208, 184, 201, 211, 172, 191, 201, 180, 198, 210, 189, 205, 217, 181, 200, 209, 182, 200, 210, 178, 195, 206, 174, 192, 203, + 178, 197, 205, 177, 193, 205, 177, 195, 205, 182, 198, 209, 176, 192, 203, 179, 197, 205, 171, 189, 197, 190, 207, 215, 177, 195, 202, 182, 199, 206, 181, 199, 207, 176, 193, 202, 177, 193, 203, 180, 196, 204, 182, 198, 206, 184, 202, 209, 195, 210, 218, 185, 200, 208, 185, 197, 206, 186, 201, 209, 179, 195, 202, + 190, 206, 213, 188, 204, 211, 191, 207, 214, 192, 208, 215, 196, 211, 219, 187, 202, 210, 183, 199, 206, 183, 197, 205, 183, 196, 204, 180, 192, 201, 176, 189, 198, 172, 187, 194, 172, 185, 193, 169, 185, 192, 166, 184, 191, 169, 185, 192, 169, 185, 192, 171, 183, 193, 170, 184, 191, 168, 184, 191, 167, 182, 190, + 169, 180, 190, 167, 180, 188, 168, 181, 190, 166, 179, 189, 166, 182, 189, 185, 197, 205, 182, 195, 203, 169, 182, 190, 165, 178, 186, 164, 177, 185, 154, 167, 175, 156, 169, 177, 159, 172, 180, 163, 176, 184, 163, 174, 182, 165, 177, 185, 162, 175, 183, 161, 174, 182, 161, 174, 182, 161, 175, 182, 160, 173, 181, + 164, 177, 185, 162, 175, 183, 162, 177, 184, 163, 176, 184, 162, 175, 183, 163, 176, 184, 163, 177, 185, 167, 180, 189, 170, 185, 192, 171, 186, 194, 169, 185, 192, 168, 181, 189, 162, 178, 186, 165, 180, 187, 166, 182, 189, 167, 181, 189, 165, 180, 188, 166, 181, 190, 161, 177, 187, 160, 176, 185, 159, 176, 184, + 160, 175, 185, 157, 174, 183, 156, 173, 183, 154, 170, 181, 155, 171, 183, 156, 172, 184, 154, 172, 182, 36, 61, 67, 35, 58, 64, 33, 55, 61, 31, 53, 60, 29, 49, 56, 33, 52, 59, 37, 56, 63, 49, 67, 74, 45, 62, 69, 59, 77, 83, 58, 74, 82, 61, 76, 85, 58, 74, 82, 55, 70, 77, + 55, 68, 77, 70, 84, 93, 66, 81, 90, 80, 97, 106, 83, 99, 110, 79, 96, 105, 83, 100, 111, 90, 108, 116, 83, 100, 110, 93, 111, 121, 102, 120, 131, 106, 124, 136, 95, 115, 126, 115, 134, 145, 131, 149, 160, 133, 152, 162, 136, 155, 168, 143, 161, 172, 143, 161, 173, 156, 174, 184, 139, 158, 170, + 133, 152, 166, 148, 166, 179, 134, 154, 168, 127, 145, 159, 133, 152, 165, 143, 161, 174, 145, 162, 174, 166, 185, 194, 130, 148, 163, 148, 165, 178, 132, 151, 165, 112, 129, 143, 104, 121, 135, 82, 102, 115, 82, 100, 112, 64, 82, 93, 62, 79, 90, 63, 80, 92, 58, 74, 86, 55, 71, 80, 49, 65, 75, + 46, 62, 70, 38, 54, 63, 41, 56, 65, 39, 54, 62, 37, 50, 60, 32, 46, 56, 35, 49, 59, 30, 45, 55, 35, 50, 59, 58, 73, 82, 40, 55, 65, 42, 58, 67, 74, 89, 99, 69, 85, 93, 42, 56, 65, 37, 53, 61, 44, 58, 68, 45, 61, 70, 60, 76, 85, 107, 123, 135, 87, 103, 113, + 44, 62, 70, 72, 89, 98, 137, 153, 163, 52, 67, 75, 47, 64, 72, 55, 72, 80, 75, 90, 100, 72, 88, 97, 54, 71, 80, 57, 74, 83, 62, 78, 88, 61, 78, 87, 66, 83, 92, 68, 83, 95, 118, 135, 143, 95, 112, 121, 70, 87, 97, 67, 84, 92, 91, 109, 119, 69, 87, 96, 65, 82, 91, + 66, 84, 94, 135, 152, 161, 133, 148, 157, 76, 92, 103, 79, 97, 107, 82, 99, 111, 70, 88, 97, 81, 99, 108, 76, 93, 103, 84, 100, 112, 118, 135, 145, 93, 110, 121, 88, 106, 117, 94, 111, 122, 99, 117, 128, 79, 97, 108, 100, 117, 129, 89, 107, 116, 102, 120, 131, 103, 121, 132, 106, 123, 135, + 100, 118, 129, 103, 121, 132, 106, 123, 136, 98, 118, 130, 117, 137, 148, 109, 127, 139, 111, 129, 141, 115, 133, 144, 113, 129, 142, 108, 125, 138, 115, 134, 146, 121, 139, 152, 115, 133, 145, 122, 140, 153, 128, 147, 161, 135, 154, 168, 148, 167, 181, 159, 176, 189, 168, 186, 197, 170, 189, 201, 175, 194, 204, + 184, 202, 212, 187, 205, 216, 189, 206, 217, 186, 204, 215, 187, 203, 215, 182, 200, 210, 180, 197, 209, 173, 192, 200, 173, 191, 202, 175, 192, 203, 174, 193, 201, 179, 198, 209, 175, 193, 204, 176, 194, 203, 175, 194, 204, 175, 191, 201, 177, 194, 205, 177, 194, 203, 175, 192, 203, 176, 193, 202, 176, 192, 202, + 168, 186, 193, 179, 195, 203, 170, 187, 197, 186, 203, 211, 179, 195, 203, 172, 189, 198, 173, 190, 199, 174, 191, 200, 181, 198, 205, 180, 196, 204, 193, 208, 216, 185, 198, 207, 181, 196, 205, 180, 196, 204, 177, 193, 200, 186, 201, 209, 185, 200, 209, 186, 202, 208, 189, 205, 212, 193, 207, 215, 184, 199, 206, + 180, 197, 204, 177, 193, 201, 178, 194, 201, 176, 190, 198, 175, 187, 195, 172, 188, 196, 170, 184, 191, 167, 182, 189, 165, 180, 188, 166, 182, 188, 167, 179, 189, 168, 182, 190, 168, 184, 192, 167, 180, 188, 162, 177, 184, 162, 177, 184, 164, 178, 187, 161, 176, 183, 162, 176, 184, 163, 178, 186, 169, 182, 190, + 179, 193, 201, 166, 179, 187, 164, 177, 185, 163, 176, 184, 154, 167, 175, 155, 170, 178, 159, 173, 181, 161, 174, 182, 162, 175, 183, 162, 175, 183, 160, 173, 181, 162, 175, 183, 166, 179, 187, 164, 177, 185, 162, 175, 183, 158, 171, 179, 155, 168, 176, 158, 171, 179, 156, 170, 178, 158, 172, 180, 159, 173, 181, + 157, 173, 181, 160, 174, 182, 165, 177, 185, 165, 178, 186, 165, 179, 187, 162, 179, 186, 163, 179, 186, 164, 179, 187, 166, 181, 188, 164, 180, 187, 163, 179, 188, 161, 176, 186, 162, 179, 186, 162, 178, 186, 158, 174, 182, 155, 172, 181, 156, 172, 183, 155, 171, 182, 154, 171, 181, 155, 171, 182, 154, 172, 183, + 37, 62, 68, 35, 59, 65, 34, 56, 62, 33, 54, 60, 28, 50, 56, 31, 50, 57, 36, 55, 62, 39, 58, 65, 33, 50, 57, 52, 68, 75, 49, 64, 72, 67, 82, 91, 67, 82, 92, 64, 79, 87, 58, 71, 81, 64, 80, 87, 65, 80, 89, 80, 97, 106, 74, 92, 101, 72, 88, 98, 91, 107, 118, + 85, 103, 113, 91, 109, 120, 96, 114, 125, 98, 118, 128, 111, 128, 140, 101, 121, 132, 120, 138, 149, 132, 150, 161, 137, 155, 166, 136, 154, 167, 140, 158, 169, 150, 167, 179, 140, 159, 172, 136, 154, 167, 140, 159, 171, 159, 177, 188, 157, 175, 187, 143, 160, 173, 145, 165, 176, 151, 169, 181, 156, 174, 185, + 152, 169, 182, 148, 167, 179, 155, 171, 184, 132, 152, 167, 117, 135, 150, 98, 116, 131, 87, 106, 119, 82, 101, 114, 72, 89, 102, 73, 91, 102, 74, 92, 104, 59, 75, 88, 59, 75, 87, 48, 64, 75, 50, 66, 79, 40, 57, 66, 43, 59, 68, 42, 58, 67, 39, 54, 63, 37, 52, 60, 35, 50, 59, + 32, 47, 57, 52, 67, 77, 50, 64, 74, 41, 54, 64, 67, 83, 93, 74, 89, 100, 49, 64, 73, 40, 55, 64, 37, 54, 62, 43, 58, 67, 58, 74, 85, 97, 114, 126, 86, 103, 113, 46, 61, 71, 60, 78, 86, 132, 149, 160, 74, 91, 100, 52, 69, 77, 49, 66, 75, 62, 78, 87, 74, 90, 100, + 69, 85, 94, 56, 73, 82, 61, 78, 87, 62, 79, 88, 62, 79, 88, 68, 85, 95, 72, 89, 100, 126, 142, 151, 67, 84, 94, 69, 86, 98, 75, 92, 102, 78, 96, 107, 66, 84, 95, 67, 84, 96, 70, 88, 99, 154, 171, 180, 116, 131, 141, 70, 87, 98, 75, 91, 102, 83, 99, 111, 76, 92, 103, + 72, 89, 100, 82, 99, 110, 79, 97, 108, 111, 128, 138, 101, 118, 129, 87, 105, 116, 102, 120, 131, 77, 95, 105, 87, 104, 115, 99, 117, 128, 98, 116, 127, 89, 107, 118, 96, 114, 125, 93, 111, 122, 92, 110, 121, 100, 119, 130, 106, 124, 135, 99, 119, 130, 107, 126, 139, 105, 125, 137, 103, 121, 136, + 112, 129, 142, 118, 136, 148, 118, 135, 148, 118, 136, 149, 120, 138, 151, 121, 140, 154, 130, 149, 163, 136, 155, 170, 141, 161, 175, 156, 174, 186, 164, 183, 193, 175, 193, 203, 176, 194, 205, 175, 193, 204, 181, 199, 210, 184, 202, 212, 184, 200, 212, 187, 205, 215, 186, 202, 214, 183, 202, 210, 182, 200, 212, + 186, 205, 213, 173, 191, 202, 175, 193, 203, 182, 199, 209, 170, 189, 199, 172, 190, 201, 175, 193, 203, 179, 196, 207, 174, 191, 202, 175, 192, 203, 175, 192, 203, 176, 193, 202, 172, 189, 200, 174, 191, 200, 171, 189, 197, 178, 195, 202, 174, 190, 198, 169, 186, 195, 192, 208, 215, 173, 191, 198, 171, 189, 196, + 167, 183, 195, 175, 192, 199, 175, 191, 200, 176, 192, 201, 188, 206, 213, 181, 198, 204, 178, 193, 201, 180, 196, 203, 175, 191, 198, 184, 200, 207, 180, 194, 202, 183, 198, 206, 187, 201, 209, 191, 206, 213, 183, 197, 205, 177, 194, 200, 176, 192, 200, 175, 188, 197, 172, 187, 194, 172, 186, 194, 167, 182, 189, + 171, 184, 192, 163, 180, 187, 165, 178, 186, 163, 177, 184, 164, 179, 186, 167, 179, 187, 165, 178, 186, 161, 176, 184, 162, 177, 184, 160, 176, 183, 160, 175, 183, 162, 175, 183, 162, 176, 185, 166, 179, 187, 162, 175, 184, 176, 189, 197, 173, 185, 194, 168, 181, 189, 164, 177, 185, 157, 171, 179, 153, 169, 176, + 158, 170, 178, 159, 172, 180, 159, 172, 180, 158, 171, 179, 159, 172, 180, 161, 174, 182, 161, 174, 182, 159, 172, 180, 156, 169, 177, 157, 170, 178, 158, 171, 179, 160, 173, 181, 161, 177, 184, 163, 178, 186, 159, 172, 180, 155, 169, 177, 155, 170, 177, 156, 172, 179, 158, 173, 180, 160, 175, 182, 160, 176, 183, + 162, 178, 185, 165, 179, 188, 163, 179, 186, 162, 179, 185, 160, 176, 184, 161, 176, 185, 161, 177, 186, 158, 175, 184, 155, 172, 181, 155, 172, 181, 154, 171, 182, 155, 171, 182, 153, 171, 179, 153, 169, 182, 38, 62, 69, 35, 59, 66, 34, 57, 63, 32, 53, 59, 28, 49, 55, 29, 48, 55, 32, 51, 58, + 30, 48, 55, 40, 57, 64, 37, 53, 60, 51, 66, 73, 72, 88, 96, 72, 86, 96, 53, 68, 75, 51, 64, 72, 66, 83, 91, 68, 83, 92, 77, 93, 104, 70, 87, 96, 79, 95, 105, 88, 104, 115, 87, 105, 116, 76, 93, 104, 90, 108, 118, 102, 122, 134, 109, 127, 137, 107, 126, 138, 133, 151, 162, + 130, 149, 160, 135, 153, 164, 138, 156, 168, 147, 165, 175, 148, 166, 178, 138, 157, 171, 137, 155, 169, 154, 173, 183, 164, 183, 193, 152, 170, 182, 147, 165, 179, 153, 172, 183, 158, 176, 187, 158, 177, 188, 151, 169, 180, 159, 177, 189, 148, 166, 179, 140, 160, 173, 100, 120, 135, 102, 121, 136, 105, 124, 138, + 87, 105, 118, 78, 97, 110, 86, 105, 118, 74, 92, 104, 67, 84, 96, 59, 76, 87, 57, 74, 84, 49, 65, 77, 47, 63, 73, 48, 65, 74, 42, 59, 68, 38, 54, 63, 38, 54, 62, 36, 49, 60, 49, 65, 72, 54, 70, 78, 33, 47, 57, 59, 77, 84, 75, 92, 101, 57, 74, 83, 39, 55, 64, + 41, 56, 66, 41, 56, 65, 60, 75, 85, 95, 112, 124, 81, 98, 108, 45, 62, 72, 51, 67, 76, 111, 127, 139, 104, 121, 130, 53, 70, 80, 54, 71, 79, 49, 66, 76, 69, 85, 94, 76, 93, 102, 62, 79, 88, 57, 74, 83, 61, 78, 87, 59, 75, 85, 63, 80, 89, 62, 79, 88, 93, 110, 121, + 99, 115, 126, 68, 84, 97, 70, 87, 99, 81, 99, 111, 67, 85, 96, 67, 86, 96, 69, 87, 98, 86, 104, 115, 150, 168, 176, 106, 122, 133, 71, 89, 100, 76, 94, 104, 87, 105, 116, 82, 98, 110, 74, 91, 103, 80, 97, 108, 80, 99, 109, 101, 117, 129, 112, 129, 140, 88, 106, 116, 83, 100, 112, + 80, 99, 109, 91, 108, 121, 88, 106, 118, 94, 111, 123, 92, 110, 121, 93, 111, 123, 91, 109, 122, 96, 114, 127, 100, 118, 130, 109, 127, 138, 102, 121, 133, 96, 115, 128, 103, 122, 136, 106, 125, 138, 105, 124, 138, 117, 135, 149, 116, 134, 147, 125, 143, 157, 118, 137, 151, 133, 152, 166, 140, 159, 173, + 145, 164, 177, 147, 165, 177, 161, 179, 190, 164, 182, 193, 172, 190, 200, 173, 191, 202, 173, 191, 203, 174, 192, 202, 180, 198, 208, 183, 200, 211, 184, 202, 212, 185, 201, 212, 182, 199, 208, 180, 197, 208, 190, 207, 216, 178, 196, 206, 172, 190, 200, 181, 199, 208, 169, 187, 198, 170, 188, 198, 170, 188, 199, + 171, 189, 199, 175, 193, 202, 175, 193, 202, 174, 191, 200, 174, 190, 201, 173, 190, 199, 173, 189, 201, 175, 192, 201, 165, 183, 191, 183, 199, 208, 175, 191, 200, 167, 184, 193, 184, 201, 208, 170, 187, 195, 164, 181, 191, 166, 183, 192, 169, 186, 193, 170, 187, 195, 170, 187, 195, 186, 202, 210, 183, 197, 205, + 176, 192, 199, 175, 192, 199, 171, 187, 194, 181, 194, 203, 175, 193, 200, 178, 196, 203, 179, 196, 203, 188, 202, 209, 178, 194, 201, 173, 188, 196, 172, 187, 196, 170, 186, 194, 168, 183, 190, 168, 185, 192, 167, 182, 189, 167, 180, 189, 166, 180, 187, 164, 177, 185, 160, 174, 181, 159, 172, 180, 161, 173, 181, + 159, 173, 181, 160, 172, 180, 158, 171, 179, 159, 173, 181, 161, 174, 182, 160, 172, 181, 163, 176, 184, 162, 175, 184, 162, 175, 183, 160, 172, 182, 177, 190, 198, 166, 180, 188, 171, 183, 191, 156, 171, 178, 155, 168, 176, 157, 170, 178, 159, 171, 179, 157, 170, 178, 162, 174, 183, 161, 174, 182, 159, 173, 181, + 158, 171, 179, 158, 171, 179, 158, 172, 180, 159, 173, 180, 157, 171, 179, 157, 174, 181, 160, 175, 183, 163, 174, 182, 160, 175, 183, 156, 173, 180, 156, 172, 179, 154, 169, 178, 157, 170, 178, 159, 175, 182, 161, 176, 184, 162, 176, 185, 161, 177, 185, 161, 177, 184, 162, 178, 185, 160, 175, 184, 158, 174, 183, + 158, 175, 183, 156, 173, 181, 155, 171, 181, 154, 171, 180, 153, 169, 181, 152, 169, 180, 150, 167, 179, 39, 64, 71, 36, 60, 66, 34, 57, 63, 31, 53, 59, 28, 47, 54, 27, 46, 53, 27, 47, 53, 34, 52, 59, 32, 50, 57, 42, 58, 65, 56, 72, 79, 73, 91, 99, 56, 70, 78, 51, 64, 72, + 52, 68, 75, 72, 88, 97, 63, 79, 87, 69, 85, 94, 74, 90, 100, 86, 103, 112, 77, 94, 105, 77, 94, 104, 71, 87, 98, 102, 121, 132, 104, 124, 135, 111, 129, 140, 117, 135, 146, 129, 147, 159, 124, 142, 154, 127, 146, 158, 137, 155, 167, 153, 171, 180, 153, 171, 182, 145, 163, 176, 138, 158, 170, + 157, 176, 186, 166, 185, 194, 155, 173, 185, 161, 179, 190, 163, 181, 192, 155, 173, 185, 161, 179, 190, 152, 172, 183, 162, 180, 191, 148, 167, 179, 117, 137, 152, 99, 120, 134, 118, 137, 150, 115, 135, 150, 95, 112, 126, 89, 108, 121, 94, 114, 127, 81, 99, 111, 71, 89, 100, 67, 85, 96, 64, 81, 92, + 53, 69, 81, 51, 68, 79, 54, 70, 81, 45, 62, 71, 40, 56, 65, 36, 53, 62, 43, 59, 68, 57, 72, 82, 35, 51, 60, 45, 61, 70, 76, 94, 103, 66, 83, 92, 42, 59, 69, 40, 57, 66, 47, 63, 72, 63, 79, 89, 96, 112, 123, 76, 93, 104, 43, 60, 70, 52, 69, 79, 86, 104, 113, + 127, 144, 156, 51, 67, 77, 62, 77, 91, 56, 72, 80, 55, 71, 82, 74, 92, 100, 71, 88, 98, 56, 73, 82, 55, 72, 81, 59, 76, 86, 60, 77, 88, 60, 77, 86, 63, 80, 89, 121, 138, 148, 74, 90, 101, 66, 83, 95, 71, 89, 100, 88, 106, 117, 69, 87, 98, 72, 90, 101, 70, 88, 99, + 110, 127, 139, 131, 149, 157, 95, 111, 124, 72, 90, 101, 74, 92, 103, 95, 114, 124, 76, 92, 104, 75, 93, 104, 76, 94, 105, 89, 107, 118, 96, 114, 125, 112, 129, 141, 78, 97, 108, 86, 105, 115, 93, 111, 122, 86, 104, 115, 89, 106, 118, 88, 106, 119, 93, 112, 124, 92, 110, 123, 93, 111, 124, + 94, 114, 127, 95, 114, 127, 104, 122, 135, 107, 125, 138, 101, 120, 133, 109, 128, 141, 105, 125, 138, 116, 133, 147, 112, 131, 144, 122, 140, 154, 126, 145, 159, 129, 148, 162, 133, 152, 167, 145, 164, 177, 154, 173, 186, 157, 176, 187, 158, 176, 188, 165, 183, 193, 169, 186, 198, 167, 185, 196, 170, 189, 199, + 170, 187, 199, 174, 192, 203, 176, 194, 205, 176, 194, 205, 180, 197, 208, 181, 198, 208, 182, 198, 208, 180, 197, 208, 175, 194, 202, 174, 191, 203, 173, 191, 202, 174, 190, 200, 172, 190, 199, 171, 189, 200, 169, 186, 197, 169, 187, 197, 173, 191, 201, 175, 192, 201, 174, 191, 202, 175, 193, 201, 175, 192, 204, + 176, 193, 202, 173, 191, 199, 162, 180, 189, 177, 193, 200, 166, 184, 192, 170, 187, 195, 176, 193, 201, 163, 180, 190, 162, 179, 188, 162, 179, 189, 167, 185, 192, 164, 182, 190, 169, 184, 193, 185, 202, 209, 180, 195, 203, 175, 191, 199, 171, 187, 194, 166, 183, 192, 177, 192, 200, 171, 189, 195, 178, 195, 202, + 175, 189, 197, 184, 200, 207, 173, 189, 196, 170, 186, 193, 168, 184, 191, 168, 182, 190, 167, 183, 190, 164, 179, 187, 166, 178, 186, 163, 177, 184, 161, 175, 182, 159, 173, 181, 156, 171, 179, 155, 171, 178, 157, 170, 178, 157, 169, 178, 156, 169, 177, 159, 171, 179, 158, 171, 179, 158, 170, 178, 161, 174, 182, + 162, 175, 183, 160, 173, 180, 161, 176, 183, 158, 170, 180, 172, 188, 195, 169, 182, 190, 164, 179, 186, 159, 172, 180, 155, 169, 177, 166, 178, 187, 159, 172, 180, 158, 171, 179, 161, 175, 183, 159, 174, 181, 163, 176, 184, 163, 175, 184, 164, 177, 185, 164, 178, 186, 167, 179, 187, 165, 179, 186, 164, 177, 185, + 163, 175, 183, 163, 177, 185, 162, 177, 185, 160, 176, 183, 157, 170, 179, 155, 170, 177, 154, 169, 176, 153, 169, 177, 156, 170, 179, 157, 173, 181, 159, 174, 183, 158, 175, 182, 157, 173, 182, 156, 173, 182, 156, 173, 182, 154, 171, 180, 154, 171, 180, 153, 170, 180, 152, 168, 180, 152, 169, 180, 148, 166, 177, + 37, 64, 70, 34, 59, 65, 32, 57, 63, 31, 53, 59, 27, 47, 54, 23, 45, 51, 24, 44, 50, 27, 46, 53, 29, 47, 54, 40, 56, 63, 57, 72, 80, 71, 88, 96, 38, 51, 59, 42, 54, 62, 58, 73, 80, 60, 75, 84, 69, 85, 94, 65, 82, 91, 83, 100, 111, 81, 97, 109, 70, 86, 98, + 74, 91, 100, 76, 93, 105, 99, 116, 128, 112, 130, 141, 109, 128, 139, 116, 134, 144, 118, 137, 149, 126, 145, 157, 134, 153, 163, 140, 157, 170, 151, 168, 180, 146, 164, 175, 142, 161, 173, 144, 163, 175, 160, 178, 189, 166, 183, 195, 154, 173, 183, 165, 184, 195, 166, 184, 195, 154, 172, 184, 160, 177, 189, + 153, 171, 184, 152, 170, 182, 145, 163, 177, 114, 134, 149, 107, 127, 141, 136, 155, 167, 127, 147, 161, 111, 130, 144, 104, 122, 135, 95, 114, 127, 87, 108, 120, 81, 98, 112, 79, 97, 109, 70, 87, 99, 58, 75, 86, 61, 78, 89, 54, 70, 82, 47, 63, 75, 43, 60, 69, 45, 60, 70, 59, 75, 86, + 41, 57, 69, 40, 55, 66, 66, 83, 93, 73, 89, 101, 50, 68, 76, 44, 61, 72, 49, 66, 75, 73, 89, 101, 97, 113, 125, 76, 93, 104, 48, 64, 74, 50, 67, 78, 69, 87, 98, 133, 150, 161, 68, 85, 96, 58, 75, 86, 62, 78, 90, 59, 75, 87, 61, 78, 90, 76, 92, 103, 69, 85, 95, + 58, 75, 85, 55, 72, 81, 57, 74, 83, 61, 78, 88, 59, 76, 85, 74, 91, 101, 125, 142, 151, 65, 82, 93, 69, 86, 98, 76, 94, 105, 93, 112, 120, 71, 89, 100, 72, 89, 101, 73, 90, 102, 138, 154, 165, 105, 122, 133, 97, 114, 126, 72, 90, 101, 74, 91, 103, 98, 116, 127, 74, 92, 103, + 78, 96, 107, 75, 93, 104, 97, 115, 126, 89, 107, 118, 106, 122, 134, 85, 104, 115, 86, 104, 115, 87, 106, 118, 92, 111, 122, 93, 111, 123, 92, 112, 125, 94, 114, 125, 96, 115, 128, 97, 116, 129, 96, 115, 128, 100, 121, 133, 102, 121, 135, 106, 125, 138, 109, 128, 141, 107, 126, 140, 111, 132, 145, + 117, 136, 152, 121, 141, 155, 122, 141, 156, 133, 152, 165, 133, 152, 166, 142, 161, 174, 149, 167, 179, 152, 169, 182, 156, 175, 186, 156, 175, 186, 164, 183, 193, 164, 182, 193, 168, 185, 196, 170, 189, 198, 168, 185, 197, 170, 188, 198, 171, 189, 200, 170, 188, 199, 174, 192, 203, 176, 193, 204, 177, 194, 204, + 177, 195, 204, 181, 198, 207, 170, 188, 198, 172, 190, 200, 181, 197, 206, 173, 191, 199, 169, 187, 198, 172, 191, 200, 169, 187, 197, 168, 186, 197, 169, 187, 197, 172, 190, 199, 175, 192, 200, 176, 193, 203, 175, 192, 201, 176, 193, 202, 171, 188, 198, 176, 190, 198, 167, 185, 193, 163, 180, 188, 178, 196, 204, + 169, 185, 194, 163, 181, 190, 163, 179, 190, 167, 185, 192, 165, 182, 192, 162, 179, 188, 165, 181, 190, 183, 197, 206, 175, 191, 199, 172, 189, 196, 170, 186, 195, 164, 181, 189, 172, 190, 198, 167, 184, 191, 176, 191, 199, 172, 187, 195, 180, 195, 202, 166, 183, 191, 165, 181, 188, 164, 177, 186, 164, 180, 187, + 165, 179, 187, 162, 177, 184, 163, 177, 185, 160, 174, 182, 161, 174, 182, 158, 171, 180, 156, 172, 179, 155, 167, 177, 153, 166, 174, 153, 165, 173, 154, 167, 175, 154, 166, 174, 154, 167, 176, 154, 167, 176, 158, 171, 179, 160, 172, 181, 161, 174, 182, 159, 171, 181, 159, 173, 180, 167, 180, 188, 174, 188, 195, + 168, 181, 189, 161, 177, 184, 158, 173, 180, 163, 176, 184, 159, 175, 182, 162, 175, 183, 161, 177, 184, 165, 179, 187, 166, 178, 187, 165, 177, 185, 161, 176, 183, 161, 177, 184, 166, 178, 186, 166, 179, 187, 161, 174, 183, 160, 174, 182, 162, 177, 185, 162, 178, 185, 164, 179, 186, 160, 175, 182, 156, 172, 179, + 153, 169, 177, 152, 165, 175, 151, 167, 175, 152, 167, 176, 155, 170, 179, 154, 170, 179, 155, 172, 181, 155, 172, 182, 155, 170, 180, 153, 170, 180, 152, 169, 179, 150, 166, 178, 149, 167, 178, 147, 165, 176, 36, 63, 70, 34, 58, 65, 31, 54, 60, 30, 52, 58, 25, 47, 53, 21, 43, 49, 21, 41, 49, + 26, 44, 52, 31, 49, 56, 38, 54, 61, 55, 69, 77, 63, 78, 87, 39, 52, 61, 53, 66, 73, 55, 70, 77, 63, 78, 88, 75, 91, 103, 67, 84, 93, 80, 96, 107, 70, 86, 98, 75, 91, 102, 78, 95, 105, 84, 101, 112, 99, 117, 128, 106, 125, 136, 103, 122, 133, 117, 136, 145, 123, 142, 155, + 136, 155, 166, 131, 149, 161, 150, 168, 179, 143, 162, 172, 145, 164, 175, 144, 162, 174, 139, 157, 170, 164, 182, 193, 161, 179, 190, 160, 178, 189, 163, 181, 192, 167, 185, 196, 157, 175, 187, 157, 175, 187, 149, 168, 180, 151, 169, 181, 155, 173, 186, 111, 132, 148, 121, 141, 153, 152, 170, 182, 137, 156, 170, + 121, 140, 154, 102, 123, 137, 106, 125, 139, 99, 119, 133, 96, 116, 130, 90, 110, 122, 75, 92, 105, 67, 84, 96, 70, 88, 100, 58, 75, 86, 50, 66, 78, 49, 66, 77, 62, 78, 90, 54, 71, 82, 39, 55, 65, 59, 76, 86, 73, 89, 101, 61, 77, 89, 48, 65, 75, 54, 70, 83, 77, 93, 105, + 98, 116, 127, 73, 91, 102, 52, 69, 80, 57, 73, 84, 62, 80, 89, 123, 141, 152, 95, 112, 123, 62, 80, 91, 69, 87, 99, 67, 84, 96, 68, 86, 97, 70, 87, 99, 77, 95, 106, 70, 87, 98, 57, 74, 85, 61, 77, 88, 60, 76, 87, 62, 79, 89, 62, 79, 90, 100, 117, 128, 100, 116, 128, + 66, 84, 95, 71, 88, 99, 79, 97, 108, 95, 113, 125, 70, 87, 99, 73, 90, 103, 80, 98, 109, 140, 158, 167, 101, 119, 129, 95, 113, 124, 71, 90, 101, 71, 89, 101, 97, 115, 126, 77, 95, 106, 79, 97, 108, 82, 100, 111, 96, 114, 125, 90, 108, 119, 104, 121, 132, 94, 112, 123, 91, 108, 121, + 90, 109, 122, 95, 114, 127, 97, 116, 128, 95, 115, 128, 99, 119, 130, 99, 118, 131, 100, 120, 133, 103, 122, 135, 104, 123, 136, 105, 124, 139, 108, 126, 140, 113, 133, 146, 113, 132, 147, 110, 131, 146, 122, 141, 156, 124, 143, 158, 128, 147, 162, 136, 155, 169, 137, 156, 170, 141, 159, 172, 147, 164, 177, + 143, 161, 174, 144, 162, 176, 149, 169, 181, 161, 179, 191, 158, 176, 187, 166, 183, 195, 163, 181, 193, 165, 183, 195, 166, 184, 195, 167, 185, 196, 168, 186, 197, 168, 185, 196, 168, 185, 197, 168, 186, 198, 170, 189, 198, 180, 197, 206, 170, 188, 198, 171, 189, 200, 176, 193, 202, 173, 190, 199, 169, 185, 196, + 169, 187, 197, 173, 191, 201, 169, 187, 195, 168, 186, 198, 168, 188, 197, 171, 188, 197, 173, 191, 200, 174, 191, 200, 177, 194, 203, 179, 196, 205, 173, 188, 197, 178, 195, 203, 166, 183, 192, 163, 180, 189, 182, 198, 206, 163, 181, 189, 160, 178, 187, 164, 179, 189, 161, 179, 187, 163, 180, 189, 160, 178, 187, + 161, 178, 187, 180, 196, 205, 173, 190, 197, 170, 186, 193, 166, 183, 192, 162, 180, 189, 170, 187, 194, 166, 182, 190, 174, 192, 199, 172, 187, 194, 180, 196, 203, 168, 184, 191, 165, 181, 188, 160, 176, 183, 161, 178, 184, 162, 178, 186, 163, 177, 185, 161, 178, 184, 163, 176, 184, 164, 177, 185, 156, 171, 179, + 158, 169, 179, 152, 165, 173, 151, 163, 171, 149, 163, 171, 149, 161, 170, 153, 166, 175, 155, 167, 177, 154, 168, 176, 155, 168, 176, 157, 170, 178, 159, 170, 180, 161, 174, 182, 161, 174, 182, 163, 175, 183, 172, 187, 195, 169, 184, 191, 166, 180, 188, 156, 172, 179, 165, 179, 187, 167, 180, 188, 167, 179, 188, + 166, 179, 187, 169, 180, 189, 166, 179, 188, 166, 182, 189, 165, 181, 188, 164, 175, 184, 163, 178, 186, 160, 174, 183, 160, 174, 182, 161, 177, 185, 163, 179, 186, 166, 182, 189, 163, 180, 187, 164, 180, 187, 158, 174, 181, 154, 170, 178, 150, 167, 175, 152, 167, 176, 153, 168, 177, 150, 168, 177, 151, 169, 177, + 151, 168, 179, 149, 166, 178, 150, 167, 178, 150, 168, 177, 147, 165, 175, 146, 164, 175, 146, 164, 175, 35, 61, 68, 33, 56, 63, 28, 52, 59, 26, 50, 56, 23, 46, 52, 18, 40, 47, 20, 39, 46, 26, 44, 51, 25, 43, 50, 30, 46, 54, 48, 63, 71, 49, 64, 72, 44, 56, 65, 49, 62, 70, + 45, 58, 65, 64, 80, 87, 76, 92, 105, 63, 80, 90, 76, 92, 104, 72, 88, 100, 77, 95, 104, 76, 93, 103, 83, 101, 111, 96, 114, 127, 109, 128, 139, 99, 118, 131, 125, 143, 154, 118, 137, 149, 134, 153, 163, 140, 157, 170, 144, 162, 173, 138, 158, 169, 152, 170, 182, 137, 156, 167, 137, 157, 169, + 163, 182, 192, 164, 182, 193, 157, 176, 187, 164, 182, 193, 166, 185, 196, 154, 172, 185, 152, 171, 184, 148, 166, 178, 162, 180, 192, 155, 173, 185, 119, 139, 155, 135, 153, 166, 154, 172, 184, 143, 161, 174, 113, 134, 148, 107, 127, 140, 118, 137, 151, 129, 148, 162, 111, 130, 144, 106, 124, 138, 74, 95, 108, + 88, 106, 119, 82, 101, 115, 67, 84, 96, 59, 75, 88, 66, 83, 96, 67, 84, 96, 54, 70, 82, 58, 75, 84, 72, 88, 101, 73, 90, 101, 61, 77, 90, 66, 83, 94, 88, 106, 117, 99, 116, 127, 74, 92, 103, 65, 84, 95, 63, 80, 92, 67, 86, 97, 104, 121, 133, 121, 139, 150, 69, 88, 99, + 74, 92, 103, 81, 98, 111, 79, 97, 109, 75, 93, 104, 80, 97, 109, 80, 97, 109, 71, 89, 100, 65, 83, 94, 67, 84, 96, 65, 82, 94, 67, 84, 96, 69, 86, 97, 126, 143, 152, 77, 94, 106, 71, 89, 100, 73, 90, 102, 80, 99, 110, 100, 118, 130, 72, 90, 101, 77, 94, 106, 88, 107, 118, + 128, 145, 157, 105, 124, 135, 89, 107, 119, 72, 90, 102, 72, 90, 101, 91, 109, 121, 80, 98, 111, 81, 98, 112, 83, 103, 115, 101, 118, 130, 95, 114, 125, 100, 119, 130, 107, 126, 137, 98, 115, 128, 99, 118, 131, 100, 119, 133, 106, 125, 139, 101, 121, 135, 101, 121, 134, 105, 124, 138, 103, 121, 136, + 107, 126, 141, 107, 126, 141, 109, 128, 144, 106, 125, 140, 106, 126, 141, 118, 137, 152, 113, 134, 150, 124, 145, 159, 122, 141, 157, 124, 145, 160, 129, 151, 166, 132, 151, 167, 133, 151, 166, 136, 154, 169, 138, 157, 171, 135, 154, 169, 141, 160, 174, 157, 175, 187, 159, 176, 189, 164, 181, 194, 159, 177, 189, + 163, 180, 193, 167, 185, 197, 164, 182, 194, 169, 186, 197, 169, 186, 199, 167, 186, 196, 169, 187, 198, 167, 186, 197, 172, 189, 199, 169, 188, 199, 170, 186, 199, 168, 187, 196, 170, 188, 197, 170, 186, 198, 171, 189, 198, 168, 185, 195, 173, 190, 199, 169, 186, 197, 170, 189, 198, 172, 189, 199, 172, 188, 200, + 171, 188, 198, 178, 195, 204, 178, 195, 205, 182, 200, 209, 173, 189, 198, 172, 189, 199, 173, 190, 199, 167, 185, 193, 179, 197, 204, 163, 180, 190, 160, 177, 187, 161, 179, 188, 163, 180, 189, 161, 179, 187, 163, 180, 190, 161, 178, 187, 182, 198, 206, 171, 186, 196, 166, 183, 191, 167, 184, 193, 166, 182, 190, + 171, 187, 195, 163, 181, 188, 177, 193, 201, 170, 187, 194, 177, 193, 201, 168, 184, 192, 163, 178, 186, 160, 177, 184, 158, 174, 182, 160, 173, 184, 159, 175, 183, 160, 175, 183, 162, 175, 184, 161, 175, 184, 159, 172, 181, 155, 168, 176, 149, 162, 171, 151, 164, 173, 151, 164, 173, 152, 166, 174, 155, 167, 176, + 154, 168, 177, 153, 168, 175, 157, 170, 178, 159, 171, 181, 159, 174, 181, 158, 171, 179, 160, 175, 184, 163, 179, 187, 173, 188, 196, 175, 189, 197, 165, 180, 187, 162, 176, 184, 170, 183, 191, 169, 183, 191, 167, 181, 189, 169, 183, 191, 170, 187, 194, 173, 189, 196, 173, 189, 196, 167, 183, 191, 170, 183, 191, + 167, 181, 189, 163, 177, 185, 162, 175, 184, 164, 180, 188, 164, 180, 188, 165, 181, 189, 164, 181, 189, 164, 180, 187, 163, 179, 187, 157, 174, 182, 157, 172, 181, 153, 170, 178, 152, 169, 179, 153, 170, 179, 153, 170, 179, 152, 169, 180, 151, 169, 179, 150, 168, 179, 148, 166, 176, 146, 164, 175, 144, 163, 174, + 37, 58, 63, 34, 54, 59, 32, 51, 56, 30, 49, 54, 27, 46, 50, 23, 41, 46, 23, 39, 44, 27, 42, 47, 30, 44, 49, 37, 49, 55, 50, 63, 68, 47, 60, 66, 54, 67, 72, 38, 48, 55, 43, 51, 57, 63, 75, 81, 72, 85, 95, 64, 78, 85, 71, 84, 93, 78, 91, 101, 74, 88, 95, + 68, 82, 89, 83, 96, 104, 92, 107, 117, 100, 117, 125, 102, 118, 127, 117, 133, 141, 107, 122, 130, 125, 140, 148, 132, 147, 156, 131, 146, 156, 130, 145, 153, 140, 156, 165, 127, 143, 152, 134, 152, 161, 156, 170, 179, 151, 166, 174, 156, 171, 179, 159, 173, 182, 156, 171, 180, 142, 157, 168, 149, 164, 174, + 145, 160, 169, 144, 159, 169, 146, 160, 171, 118, 135, 147, 138, 154, 163, 143, 159, 167, 125, 141, 153, 103, 120, 131, 112, 127, 138, 121, 137, 148, 132, 147, 157, 112, 126, 138, 101, 116, 126, 80, 97, 107, 96, 113, 122, 85, 102, 112, 73, 89, 99, 68, 82, 93, 76, 91, 101, 67, 81, 89, 60, 73, 83, + 73, 88, 97, 70, 85, 94, 65, 80, 89, 67, 82, 91, 83, 99, 107, 89, 106, 113, 72, 89, 96, 69, 85, 94, 69, 84, 93, 69, 83, 94, 81, 97, 106, 129, 144, 153, 72, 88, 96, 75, 92, 101, 79, 93, 104, 74, 89, 99, 73, 88, 99, 74, 88, 97, 81, 96, 105, 77, 91, 100, 71, 86, 94, + 69, 84, 92, 69, 83, 92, 69, 84, 92, 66, 80, 88, 79, 95, 103, 123, 136, 144, 73, 89, 98, 71, 86, 95, 73, 89, 97, 78, 93, 101, 94, 109, 117, 72, 87, 96, 71, 86, 96, 96, 110, 120, 106, 120, 129, 97, 112, 121, 80, 95, 104, 73, 86, 97, 68, 84, 92, 76, 89, 101, 78, 94, 104, + 79, 94, 106, 82, 98, 107, 96, 111, 120, 90, 106, 115, 93, 108, 118, 107, 123, 131, 95, 112, 122, 99, 114, 125, 102, 117, 127, 102, 116, 128, 104, 119, 131, 101, 116, 128, 102, 117, 129, 100, 117, 128, 100, 116, 128, 102, 120, 131, 107, 122, 133, 102, 119, 130, 100, 118, 130, 113, 128, 140, 110, 127, 139, + 113, 128, 141, 114, 130, 142, 118, 135, 147, 119, 135, 147, 120, 136, 148, 121, 138, 150, 128, 144, 156, 125, 142, 154, 123, 140, 151, 126, 142, 154, 140, 154, 165, 142, 158, 168, 150, 166, 175, 150, 166, 175, 154, 167, 177, 157, 171, 180, 154, 168, 177, 154, 169, 177, 155, 171, 180, 156, 173, 181, 159, 175, 183, + 157, 173, 181, 162, 174, 183, 165, 179, 186, 161, 176, 184, 157, 172, 180, 163, 178, 184, 162, 175, 184, 161, 176, 183, 160, 174, 180, 164, 178, 184, 162, 175, 183, 164, 178, 186, 167, 180, 189, 166, 179, 189, 164, 177, 185, 170, 184, 191, 171, 185, 191, 168, 183, 189, 168, 181, 190, 157, 169, 176, 168, 183, 189, + 167, 181, 188, 163, 176, 183, 163, 177, 185, 154, 168, 177, 155, 169, 176, 154, 168, 175, 153, 167, 174, 158, 171, 177, 158, 171, 177, 155, 170, 175, 177, 187, 194, 158, 171, 178, 159, 172, 179, 165, 177, 185, 157, 170, 176, 165, 177, 183, 158, 171, 178, 176, 189, 194, 157, 169, 177, 172, 185, 190, 157, 169, 176, + 155, 168, 173, 152, 166, 171, 153, 165, 172, 151, 162, 171, 145, 159, 164, 149, 160, 168, 151, 162, 169, 148, 159, 166, 148, 159, 165, 141, 151, 158, 140, 151, 158, 143, 153, 160, 142, 152, 160, 143, 155, 161, 147, 157, 165, 149, 158, 167, 151, 163, 168, 152, 163, 168, 153, 164, 171, 152, 163, 171, 152, 165, 170, + 154, 167, 173, 156, 166, 173, 157, 170, 176, 167, 179, 185, 155, 165, 172, 157, 169, 175, 160, 172, 178, 159, 171, 176, 159, 172, 178, 163, 177, 181, 165, 177, 183, 163, 175, 181, 163, 176, 183, 165, 177, 182, 163, 174, 180, 158, 171, 176, 157, 170, 176, 159, 172, 177, 157, 170, 176, 157, 168, 176, 157, 170, 176, + 157, 169, 176, 156, 169, 174, 153, 168, 173, 152, 165, 171, 150, 163, 171, 149, 162, 169, 147, 161, 168, 148, 160, 167, 147, 161, 167, 145, 159, 166, 144, 157, 166, 142, 155, 164, 138, 152, 161, 135, 150, 159,}; +const char* CatPics::cat2Data = (const char*)temp_cat2_2; + +static const unsigned char temp_cat3_3[] = { + 99, 16, 2, 98, 14, 2, 101, 16, 2, 103, 17, 2, 105, 18, 2, 106, 19, 2, 105, 17, 2, 106, 18, 2, 107, 20, 2, 108, 21, 2, 110, 21, 3, 111, 22, 2, 112, 22, 1, 114, 22, 2, 115, 23, 1, 118, 24, 2, 118, 24, 2, 119, 25, 2, 121, 24, 1, 123, 26, 2, 123, 26, 2, + 125, 27, 2, 127, 28, 2, 127, 27, 2, 128, 28, 2, 128, 29, 1, 132, 30, 2, 132, 32, 2, 132, 31, 2, 135, 33, 3, 134, 32, 1, 137, 35, 3, 137, 33, 2, 139, 36, 2, 141, 37, 3, 141, 38, 3, 141, 37, 3, 143, 37, 2, 143, 37, 2, 145, 38, 2, 145, 38, 2, 148, 40, 3, + 149, 40, 3, 149, 39, 2, 152, 42, 2, 153, 42, 3, 152, 42, 2, 153, 42, 2, 153, 43, 2, 154, 42, 1, 155, 44, 2, 155, 44, 2, 156, 44, 3, 158, 46, 2, 158, 47, 2, 157, 47, 3, 159, 47, 2, 158, 46, 2, 159, 46, 3, 161, 47, 2, 162, 47, 2, 163, 51, 2, 163, 49, 2, + 164, 48, 2, 166, 48, 2, 165, 50, 3, 164, 50, 2, 167, 52, 1, 167, 50, 3, 167, 52, 2, 167, 52, 2, 169, 54, 3, 168, 54, 2, 169, 53, 2, 168, 52, 2, 169, 53, 2, 168, 53, 2, 167, 52, 2, 169, 53, 2, 168, 54, 1, 169, 54, 3, 170, 56, 3, 170, 55, 2, 168, 54, 2, + 169, 55, 2, 169, 54, 2, 171, 55, 2, 172, 57, 2, 171, 56, 2, 172, 56, 3, 170, 56, 1, 171, 57, 2, 169, 56, 2, 168, 55, 2, 169, 55, 3, 170, 56, 3, 169, 56, 2, 168, 55, 2, 168, 57, 2, 167, 56, 2, 169, 56, 2, 169, 56, 2, 169, 56, 2, 168, 56, 2, 169, 55, 3, + 168, 55, 2, 166, 54, 2, 166, 54, 2, 168, 56, 3, 167, 56, 2, 167, 55, 2, 167, 54, 3, 167, 55, 2, 166, 55, 2, 166, 54, 2, 166, 55, 3, 167, 55, 2, 167, 55, 2, 168, 55, 3, 166, 54, 1, 168, 55, 2, 167, 54, 2, 169, 56, 3, 170, 57, 2, 169, 54, 3, 169, 55, 2, + 171, 55, 2, 169, 54, 1, 173, 57, 2, 172, 56, 2, 172, 55, 2, 172, 56, 2, 173, 56, 2, 171, 53, 2, 174, 57, 2, 173, 56, 2, 176, 57, 2, 176, 57, 2, 178, 56, 3, 178, 57, 2, 177, 56, 2, 178, 56, 3, 177, 55, 3, 177, 54, 2, 176, 56, 2, 171, 58, 8, 162, 63, 39, + 148, 67, 74, 137, 75, 99, 108, 77, 131, 66, 83, 144, 40, 83, 156, 29, 86, 159, 13, 81, 154, 9, 79, 150, 7, 75, 146, 4, 70, 139, 2, 64, 133, 5, 66, 134, 6, 71, 142, 16, 79, 150, 35, 80, 151, 52, 79, 143, 86, 78, 132, 119, 69, 120, 137, 66, 87, 150, 59, 52, 160, 48, 0, + 161, 48, 3, 163, 48, 2, 162, 47, 2, 162, 48, 2, 161, 47, 2, 159, 47, 2, 159, 46, 2, 158, 46, 2, 158, 46, 3, 157, 44, 2, 156, 44, 3, 156, 44, 3, 154, 43, 3, 154, 43, 2, 152, 42, 2, 152, 41, 3, 150, 41, 3, 150, 41, 4, 147, 41, 3, 148, 40, 4, 147, 41, 3, + 146, 41, 6, 144, 38, 5, 143, 38, 6, 143, 37, 4, 143, 38, 6, 140, 37, 5, 140, 37, 5, 137, 35, 4, 136, 33, 3, 134, 33, 3, 132, 33, 3, 130, 30, 2, 129, 29, 2, 128, 30, 2, 126, 28, 3, 124, 29, 3, 118, 28, 8, 109, 26, 16, 98, 28, 35, 84, 36, 63, 51, 39, 87, + 23, 39, 86, 3, 34, 90, 2, 32, 89, 2, 26, 81, 3, 18, 67, 3, 12, 57, 4, 11, 54, 2, 11, 54, 2, 12, 55, 2, 12, 59, 2, 15, 63, 3, 18, 64, 10, 22, 64, 32, 21, 58, 61, 19, 45, 78, 20, 24, 90, 18, 6, 99, 15, 2, 104, 15, 2, 104, 13, 2, 104, 11, 2, + 103, 12, 3, 101, 10, 2, 101, 12, 2, 100, 11, 3, 97, 9, 2, 96, 7, 1, 96, 9, 2, 94, 9, 2, 91, 7, 1, 89, 7, 1, 88, 5, 2, 87, 5, 1, 88, 5, 2, 86, 3, 2, 87, 5, 2, 84, 3, 1, 81, 4, 1, 98, 15, 2, 100, 16, 2, 102, 18, 2, 103, 18, 2, + 104, 17, 2, 107, 19, 2, 106, 20, 3, 108, 21, 2, 108, 20, 2, 109, 22, 2, 110, 20, 2, 111, 21, 2, 112, 22, 2, 115, 22, 2, 117, 23, 2, 118, 24, 1, 120, 26, 2, 120, 25, 2, 122, 26, 2, 124, 26, 2, 124, 26, 2, 127, 30, 2, 127, 27, 2, 129, 29, 1, 130, 30, 3, + 131, 30, 2, 134, 32, 1, 133, 32, 2, 134, 33, 2, 136, 35, 2, 136, 35, 2, 138, 36, 2, 139, 36, 1, 141, 37, 3, 141, 36, 2, 141, 36, 2, 142, 36, 2, 144, 38, 2, 146, 39, 2, 145, 39, 2, 147, 40, 3, 148, 39, 2, 151, 41, 3, 151, 41, 2, 152, 41, 2, 152, 41, 2, + 152, 41, 2, 155, 44, 2, 154, 43, 1, 154, 44, 2, 156, 44, 2, 156, 44, 2, 157, 46, 2, 157, 46, 2, 158, 46, 2, 159, 48, 2, 159, 47, 2, 161, 48, 2, 161, 47, 2, 162, 48, 2, 163, 49, 2, 163, 50, 1, 166, 51, 3, 165, 51, 3, 166, 51, 2, 166, 51, 2, 168, 53, 3, + 167, 52, 2, 168, 53, 2, 168, 53, 2, 168, 53, 2, 169, 55, 2, 170, 55, 2, 169, 55, 2, 168, 53, 2, 172, 56, 3, 170, 54, 2, 171, 55, 3, 170, 54, 2, 169, 54, 2, 170, 56, 2, 172, 57, 2, 171, 57, 2, 171, 55, 3, 171, 56, 2, 172, 56, 3, 172, 56, 2, 171, 56, 1, + 171, 57, 2, 171, 56, 3, 171, 58, 3, 170, 56, 2, 170, 57, 2, 169, 58, 2, 171, 57, 2, 171, 56, 3, 170, 56, 2, 169, 55, 2, 169, 55, 2, 169, 55, 2, 168, 56, 2, 169, 56, 3, 169, 57, 2, 169, 58, 2, 169, 58, 2, 167, 55, 2, 168, 57, 1, 168, 56, 3, 167, 56, 2, + 167, 55, 3, 167, 55, 2, 167, 55, 2, 167, 56, 2, 167, 55, 3, 166, 56, 2, 166, 55, 2, 167, 56, 2, 168, 56, 3, 168, 57, 2, 168, 56, 3, 166, 53, 2, 169, 55, 2, 167, 54, 2, 169, 55, 2, 169, 57, 3, 169, 56, 2, 169, 56, 2, 170, 56, 3, 171, 56, 2, 173, 57, 3, + 173, 57, 2, 174, 58, 2, 173, 56, 2, 173, 56, 2, 174, 57, 1, 174, 57, 2, 176, 57, 2, 176, 57, 2, 178, 57, 3, 178, 57, 2, 178, 56, 2, 179, 57, 2, 178, 56, 3, 179, 59, 2, 177, 57, 2, 171, 60, 7, 163, 63, 37, 150, 65, 70, 134, 68, 93, 108, 71, 119, 65, 75, 131, + 38, 74, 141, 20, 73, 142, 7, 68, 139, 5, 63, 130, 4, 57, 122, 4, 52, 117, 4, 49, 116, 3, 52, 118, 3, 60, 128, 10, 72, 142, 23, 75, 144, 44, 76, 140, 78, 78, 133, 105, 72, 126, 132, 71, 105, 143, 64, 69, 157, 55, 25, 160, 52, 13, 159, 50, 8, 160, 50, 9, 158, 52, 11, + 155, 48, 10, 156, 50, 13, 155, 50, 16, 153, 50, 20, 153, 49, 18, 151, 49, 19, 151, 50, 19, 151, 48, 17, 151, 50, 23, 151, 49, 24, 147, 47, 22, 145, 47, 26, 145, 46, 24, 145, 48, 29, 143, 48, 29, 142, 48, 31, 143, 49, 30, 141, 48, 31, 139, 47, 34, 138, 46, 28, 135, 45, 31, + 135, 44, 30, 132, 43, 30, 129, 40, 27, 128, 39, 26, 126, 38, 23, 124, 35, 19, 123, 34, 16, 122, 33, 15, 120, 32, 13, 119, 32, 15, 118, 32, 18, 113, 30, 20, 107, 31, 26, 100, 28, 32, 92, 30, 44, 74, 33, 65, 43, 37, 83, 19, 36, 84, 2, 30, 84, 1, 26, 79, 3, 19, 70, + 2, 9, 44, 3, 3, 21, 2, 3, 20, 2, 3, 21, 2, 3, 25, 2, 3, 29, 2, 5, 33, 4, 8, 38, 17, 12, 41, 46, 14, 40, 66, 18, 29, 79, 15, 13, 93, 16, 3, 101, 16, 1, 105, 15, 1, 106, 14, 2, 105, 13, 1, 104, 13, 2, 102, 12, 2, 102, 11, 3, 101, 10, 3, + 100, 10, 2, 99, 9, 3, 97, 9, 2, 95, 8, 1, 94, 9, 1, 92, 7, 2, 91, 7, 1, 89, 6, 2, 87, 4, 1, 88, 4, 2, 87, 4, 1, 86, 4, 2, 84, 4, 2, 100, 16, 2, 101, 17, 2, 102, 17, 2, 105, 17, 2, 105, 18, 2, 106, 20, 2, 107, 19, 3, 108, 21, 2, + 108, 20, 1, 110, 21, 1, 111, 22, 2, 112, 23, 2, 113, 23, 2, 117, 23, 2, 118, 25, 2, 119, 25, 2, 120, 25, 2, 120, 24, 2, 121, 26, 1, 125, 27, 2, 125, 28, 3, 127, 28, 2, 127, 28, 1, 129, 30, 2, 131, 30, 2, 130, 30, 1, 135, 34, 2, 134, 32, 3, 135, 32, 3, + 137, 34, 2, 138, 35, 2, 139, 36, 2, 140, 36, 2, 142, 37, 2, 143, 37, 3, 145, 38, 2, 143, 37, 2, 146, 40, 2, 146, 40, 2, 147, 39, 2, 147, 40, 2, 150, 40, 2, 151, 41, 2, 151, 41, 2, 152, 44, 2, 154, 44, 2, 155, 46, 3, 155, 45, 2, 156, 46, 2, 155, 44, 2, + 158, 47, 2, 158, 46, 3, 159, 49, 2, 159, 48, 2, 159, 48, 2, 159, 48, 2, 161, 50, 2, 163, 49, 2, 162, 50, 2, 163, 50, 2, 165, 50, 2, 165, 50, 2, 166, 51, 1, 166, 51, 1, 168, 53, 3, 169, 53, 3, 170, 54, 3, 169, 54, 2, 170, 54, 3, 169, 54, 2, 169, 54, 3, + 170, 56, 2, 169, 55, 2, 170, 55, 2, 170, 55, 2, 170, 55, 2, 171, 55, 2, 170, 57, 2, 172, 55, 2, 172, 57, 3, 171, 56, 2, 170, 55, 2, 172, 57, 2, 171, 56, 2, 172, 57, 3, 173, 57, 3, 171, 55, 2, 173, 57, 2, 170, 56, 2, 170, 57, 2, 172, 58, 2, 171, 57, 1, + 171, 56, 2, 171, 58, 2, 171, 57, 3, 169, 57, 2, 169, 55, 3, 170, 57, 2, 170, 56, 2, 170, 57, 2, 170, 58, 2, 169, 57, 2, 169, 57, 2, 168, 56, 2, 169, 58, 2, 169, 58, 2, 167, 56, 2, 168, 57, 3, 168, 57, 2, 167, 57, 1, 168, 56, 3, 169, 56, 2, 169, 56, 3, + 169, 57, 2, 168, 58, 2, 168, 57, 2, 167, 57, 2, 168, 57, 2, 169, 58, 1, 169, 57, 3, 168, 55, 3, 169, 56, 2, 169, 56, 2, 170, 57, 2, 170, 57, 2, 172, 59, 2, 171, 58, 2, 171, 55, 3, 173, 58, 3, 173, 58, 2, 174, 59, 2, 174, 57, 2, 176, 58, 2, 174, 57, 2, + 175, 59, 3, 178, 59, 2, 177, 56, 2, 179, 57, 2, 178, 57, 2, 180, 59, 2, 179, 58, 1, 180, 59, 2, 179, 57, 2, 180, 57, 2, 179, 59, 3, 174, 60, 6, 165, 62, 29, 147, 60, 59, 130, 62, 79, 109, 63, 101, 69, 61, 112, 37, 58, 115, 14, 54, 117, 4, 48, 110, 3, 44, 105, + 4, 39, 98, 3, 33, 93, 3, 32, 90, 3, 38, 99, 3, 50, 113, 5, 63, 133, 17, 69, 139, 36, 73, 139, 67, 79, 136, 93, 80, 133, 116, 74, 125, 136, 71, 96, 143, 61, 66, 147, 58, 56, 150, 57, 48, 148, 55, 45, 148, 54, 44, 148, 55, 45, 146, 55, 47, 143, 54, 49, 142, 54, 54, + 140, 54, 56, 138, 55, 60, 137, 55, 60, 136, 56, 61, 134, 54, 62, 134, 57, 63, 134, 55, 61, 131, 55, 64, 131, 58, 68, 130, 57, 68, 129, 57, 68, 129, 58, 69, 126, 56, 69, 127, 56, 68, 124, 55, 69, 121, 54, 69, 122, 54, 69, 119, 54, 68, 119, 50, 65, 117, 47, 58, 117, 45, 55, + 113, 41, 50, 109, 36, 44, 107, 36, 42, 105, 33, 37, 104, 34, 38, 105, 35, 40, 102, 34, 41, 101, 34, 43, 96, 32, 42, 89, 29, 41, 81, 31, 50, 63, 31, 72, 35, 38, 82, 13, 34, 84, 2, 27, 81, 2, 22, 75, 3, 14, 62, 2, 5, 29, 1, 2, 4, 2, 1, 2, 1, 2, 3, + 1, 1, 3, 1, 1, 3, 1, 2, 6, 7, 2, 11, 27, 5, 16, 49, 8, 15, 68, 10, 10, 83, 12, 3, 96, 15, 1, 105, 17, 1, 108, 16, 2, 107, 14, 2, 107, 15, 1, 105, 12, 2, 104, 12, 2, 103, 12, 2, 102, 11, 2, 100, 11, 2, 100, 10, 2, 98, 10, 2, 96, 9, 2, + 95, 9, 2, 93, 7, 1, 91, 7, 1, 91, 7, 2, 90, 6, 1, 89, 6, 1, 89, 4, 2, 86, 4, 2, 84, 5, 1, 100, 16, 1, 103, 17, 1, 103, 18, 2, 106, 20, 2, 106, 19, 2, 107, 20, 2, 108, 19, 2, 109, 20, 2, 109, 21, 2, 109, 20, 2, 112, 22, 2, 112, 22, 2, + 115, 23, 2, 116, 24, 2, 117, 24, 2, 119, 24, 2, 119, 24, 2, 120, 24, 1, 123, 25, 2, 124, 26, 3, 126, 26, 2, 127, 28, 2, 128, 29, 2, 131, 31, 2, 132, 31, 1, 132, 31, 2, 135, 32, 2, 137, 34, 2, 137, 35, 1, 139, 35, 2, 140, 35, 2, 140, 36, 2, 141, 36, 2, + 143, 38, 1, 144, 38, 1, 145, 39, 2, 145, 39, 2, 147, 40, 3, 147, 40, 2, 147, 39, 2, 152, 42, 2, 151, 42, 2, 153, 42, 2, 154, 44, 2, 154, 44, 2, 155, 44, 2, 157, 46, 2, 156, 46, 2, 158, 46, 3, 158, 46, 2, 158, 47, 2, 157, 45, 2, 159, 47, 2, 160, 49, 2, + 161, 48, 2, 161, 49, 2, 163, 50, 2, 165, 51, 2, 164, 52, 2, 165, 52, 2, 166, 52, 3, 166, 53, 1, 167, 51, 3, 168, 53, 3, 168, 54, 2, 169, 53, 3, 169, 53, 2, 169, 55, 2, 169, 55, 3, 170, 56, 2, 171, 56, 3, 171, 55, 3, 169, 53, 2, 170, 56, 2, 171, 55, 2, + 171, 57, 3, 173, 57, 2, 172, 57, 2, 173, 57, 2, 173, 56, 2, 173, 58, 2, 172, 57, 2, 173, 57, 2, 171, 55, 2, 172, 57, 2, 173, 57, 1, 173, 58, 3, 172, 57, 2, 172, 59, 2, 173, 58, 1, 173, 57, 2, 171, 57, 2, 172, 59, 2, 171, 57, 2, 170, 56, 2, 171, 59, 3, + 170, 58, 2, 170, 57, 1, 169, 57, 3, 170, 58, 2, 170, 58, 2, 172, 59, 2, 170, 57, 2, 169, 58, 2, 169, 58, 2, 170, 57, 2, 168, 58, 2, 168, 59, 2, 170, 59, 3, 169, 58, 2, 169, 59, 2, 168, 56, 2, 167, 55, 1, 168, 58, 3, 169, 59, 3, 169, 58, 2, 169, 57, 2, + 169, 58, 2, 168, 57, 2, 170, 58, 2, 171, 57, 2, 170, 57, 1, 170, 58, 2, 171, 58, 3, 171, 58, 2, 171, 58, 2, 173, 58, 2, 174, 58, 3, 174, 57, 2, 173, 56, 1, 174, 57, 2, 174, 59, 2, 175, 59, 1, 176, 59, 2, 178, 61, 1, 178, 59, 2, 178, 58, 3, 181, 60, 2, + 182, 60, 2, 182, 60, 2, 182, 60, 1, 181, 60, 1, 182, 59, 2, 181, 60, 1, 178, 58, 2, 173, 58, 2, 166, 57, 14, 149, 54, 40, 130, 52, 59, 112, 51, 73, 83, 45, 93, 43, 42, 88, 10, 35, 85, 4, 28, 80, 4, 22, 72, 2, 19, 65, 3, 16, 61, 2, 14, 61, 3, 22, 71, + 3, 36, 92, 4, 54, 120, 8, 63, 133, 26, 73, 143, 53, 82, 147, 72, 85, 145, 88, 84, 140, 114, 76, 127, 130, 69, 101, 131, 66, 90, 131, 64, 83, 130, 62, 81, 130, 59, 78, 128, 59, 82, 127, 61, 85, 125, 60, 85, 124, 61, 86, 123, 63, 91, 121, 63, 91, 120, 63, 90, 122, 63, 93, + 121, 62, 93, 118, 63, 96, 116, 62, 100, 116, 63, 103, 115, 64, 105, 115, 65, 104, 113, 66, 106, 112, 64, 104, 110, 66, 107, 107, 64, 107, 105, 62, 108, 103, 61, 107, 101, 61, 107, 99, 61, 104, 95, 56, 99, 92, 50, 94, 94, 48, 84, 96, 45, 75, 96, 43, 65, 94, 42, 60, 92, 42, 59, + 88, 40, 57, 88, 40, 58, 88, 39, 61, 88, 40, 62, 85, 36, 61, 75, 31, 61, 62, 26, 66, 43, 32, 74, 24, 38, 83, 6, 31, 82, 3, 27, 81, 2, 22, 74, 2, 14, 61, 2, 4, 29, 1, 2, 4, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 1, 1, 6, 1, 2, + 25, 2, 5, 52, 3, 6, 73, 7, 3, 89, 11, 2, 100, 13, 3, 108, 16, 3, 109, 17, 2, 110, 15, 1, 108, 16, 1, 106, 14, 1, 105, 13, 2, 104, 13, 2, 102, 11, 3, 102, 11, 1, 101, 10, 2, 99, 8, 2, 98, 10, 3, 97, 9, 2, 95, 10, 2, 92, 8, 2, 91, 7, 1, + 91, 7, 2, 90, 6, 2, 89, 4, 2, 88, 4, 1, 87, 4, 1, 101, 16, 2, 102, 17, 2, 104, 18, 2, 104, 18, 1, 106, 19, 2, 107, 19, 2, 110, 20, 2, 111, 21, 3, 109, 22, 2, 111, 22, 3, 114, 23, 2, 113, 22, 2, 113, 21, 2, 118, 25, 2, 118, 24, 2, 119, 24, 2, + 119, 25, 2, 122, 26, 2, 123, 25, 2, 126, 28, 3, 127, 28, 3, 128, 28, 2, 128, 29, 2, 130, 29, 2, 131, 30, 3, 135, 31, 2, 137, 33, 2, 136, 34, 2, 139, 35, 2, 138, 35, 2, 140, 36, 2, 141, 37, 2, 143, 37, 2, 143, 38, 2, 146, 39, 2, 146, 39, 2, 145, 39, 1, + 149, 41, 3, 148, 41, 1, 149, 42, 1, 151, 41, 1, 151, 41, 2, 153, 42, 2, 154, 43, 2, 156, 46, 2, 154, 45, 2, 158, 48, 2, 157, 47, 2, 157, 46, 3, 157, 47, 2, 159, 48, 3, 160, 49, 2, 160, 49, 3, 161, 49, 2, 162, 49, 2, 164, 50, 2, 163, 51, 3, 164, 51, 2, + 165, 50, 2, 165, 53, 2, 166, 52, 2, 164, 52, 2, 166, 53, 2, 169, 54, 2, 171, 56, 2, 168, 53, 2, 170, 55, 2, 170, 56, 3, 171, 57, 3, 171, 57, 2, 171, 56, 3, 171, 56, 2, 171, 56, 2, 171, 57, 2, 172, 57, 2, 171, 58, 2, 172, 58, 2, 171, 57, 2, 171, 55, 2, + 172, 56, 2, 174, 57, 2, 173, 57, 2, 173, 57, 3, 174, 58, 2, 173, 57, 3, 172, 56, 2, 173, 57, 3, 172, 57, 2, 173, 58, 2, 171, 57, 2, 172, 58, 2, 171, 58, 2, 174, 59, 2, 172, 58, 2, 172, 59, 3, 170, 58, 2, 172, 60, 2, 169, 58, 2, 171, 59, 3, 170, 58, 1, + 171, 57, 2, 170, 57, 2, 170, 58, 3, 168, 58, 2, 171, 58, 2, 170, 58, 2, 171, 57, 2, 171, 60, 2, 169, 59, 3, 171, 60, 2, 170, 58, 2, 170, 58, 3, 169, 59, 2, 169, 58, 3, 169, 58, 2, 169, 58, 2, 169, 57, 2, 170, 58, 2, 173, 59, 2, 171, 59, 3, 172, 59, 2, + 170, 58, 2, 172, 58, 2, 171, 57, 2, 170, 58, 2, 173, 59, 2, 173, 60, 2, 173, 58, 2, 174, 58, 2, 176, 60, 1, 175, 61, 2, 175, 59, 2, 177, 61, 2, 176, 59, 2, 177, 59, 2, 181, 61, 2, 179, 59, 3, 180, 60, 2, 182, 61, 2, 181, 60, 2, 181, 59, 1, 183, 60, 2, + 181, 59, 3, 182, 59, 3, 181, 60, 3, 175, 58, 3, 167, 55, 7, 152, 50, 21, 133, 44, 36, 112, 38, 46, 88, 34, 51, 51, 25, 58, 11, 18, 49, 2, 10, 42, 2, 6, 34, 2, 5, 30, 2, 4, 29, 2, 3, 32, 2, 11, 50, 3, 26, 81, 3, 46, 112, 4, 61, 129, 15, 76, 147, + 35, 83, 156, 51, 91, 161, 59, 91, 159, 70, 85, 145, 87, 79, 133, 95, 75, 128, 99, 72, 122, 99, 67, 119, 94, 68, 118, 89, 64, 118, 88, 64, 118, 89, 66, 120, 86, 66, 120, 84, 67, 121, 77, 67, 121, 75, 68, 120, 73, 70, 122, 75, 71, 121, 72, 72, 124, 70, 72, 125, 70, 71, 126, + 70, 74, 127, 68, 74, 128, 66, 75, 129, 64, 73, 129, 61, 73, 129, 60, 72, 129, 60, 73, 129, 59, 73, 125, 60, 70, 120, 61, 70, 119, 61, 65, 114, 59, 59, 106, 59, 54, 102, 61, 48, 93, 62, 43, 86, 62, 42, 82, 63, 40, 80, 60, 38, 78, 60, 38, 79, 60, 39, 81, 59, 39, 80, + 55, 33, 76, 46, 27, 70, 36, 29, 69, 26, 35, 76, 11, 36, 85, 3, 31, 83, 3, 26, 79, 1, 20, 71, 3, 14, 61, 3, 4, 33, 2, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 2, 1, 1, 9, 1, 1, 29, 2, 3, 57, 2, 3, 77, 6, 2, 93, 9, 2, + 104, 14, 2, 112, 18, 2, 112, 17, 2, 112, 16, 2, 110, 15, 2, 110, 15, 2, 107, 14, 2, 104, 14, 1, 104, 13, 2, 102, 11, 2, 101, 11, 3, 99, 9, 3, 98, 9, 2, 97, 8, 1, 96, 10, 3, 94, 9, 2, 91, 7, 2, 90, 6, 1, 90, 8, 2, 89, 6, 2, 87, 5, 1, + 87, 5, 1, 103, 17, 1, 104, 17, 2, 104, 17, 1, 106, 18, 2, 107, 19, 2, 107, 18, 2, 108, 20, 2, 109, 20, 1, 110, 21, 2, 113, 23, 2, 115, 23, 2, 116, 23, 2, 116, 24, 2, 117, 24, 1, 119, 25, 2, 120, 25, 2, 121, 26, 1, 123, 26, 2, 125, 28, 2, 124, 27, 2, + 128, 29, 2, 129, 29, 2, 130, 30, 1, 131, 31, 1, 131, 32, 3, 135, 34, 2, 136, 34, 2, 138, 35, 2, 140, 37, 2, 142, 38, 2, 142, 37, 2, 142, 37, 2, 143, 39, 3, 145, 40, 2, 146, 40, 2, 147, 41, 2, 147, 39, 2, 150, 41, 3, 150, 42, 2, 150, 43, 3, 153, 42, 2, + 153, 42, 2, 154, 44, 2, 156, 45, 2, 157, 45, 2, 157, 46, 2, 157, 46, 2, 159, 48, 2, 159, 48, 2, 160, 49, 2, 159, 48, 2, 160, 48, 2, 163, 52, 2, 163, 52, 2, 162, 52, 3, 164, 51, 3, 165, 54, 2, 165, 52, 3, 167, 52, 2, 167, 53, 2, 166, 54, 2, 168, 53, 2, + 170, 55, 3, 169, 54, 3, 169, 54, 2, 169, 55, 3, 170, 56, 2, 171, 56, 2, 171, 56, 3, 170, 55, 2, 170, 56, 3, 171, 55, 3, 171, 56, 2, 173, 58, 3, 172, 56, 1, 173, 57, 2, 173, 58, 2, 172, 58, 3, 172, 57, 2, 173, 57, 2, 174, 58, 3, 174, 58, 2, 173, 58, 2, + 172, 58, 2, 173, 57, 2, 174, 58, 2, 175, 60, 3, 173, 58, 3, 174, 59, 2, 172, 58, 2, 172, 58, 1, 172, 58, 2, 174, 59, 2, 172, 59, 2, 172, 59, 2, 171, 59, 1, 171, 60, 2, 171, 58, 2, 172, 59, 2, 171, 57, 2, 170, 58, 2, 170, 59, 2, 170, 59, 2, 170, 59, 2, + 172, 59, 2, 170, 60, 1, 171, 60, 2, 171, 59, 2, 170, 57, 2, 171, 60, 2, 172, 59, 2, 173, 60, 1, 172, 59, 3, 171, 59, 2, 171, 60, 3, 171, 58, 2, 171, 57, 2, 171, 59, 2, 172, 58, 1, 173, 60, 2, 174, 59, 3, 172, 59, 1, 173, 58, 2, 174, 61, 2, 173, 59, 2, + 174, 60, 2, 173, 59, 2, 173, 59, 2, 175, 60, 1, 176, 61, 2, 176, 60, 2, 175, 59, 2, 176, 60, 1, 178, 59, 2, 180, 61, 2, 181, 61, 2, 180, 60, 2, 180, 59, 1, 182, 62, 2, 183, 62, 2, 184, 60, 2, 184, 60, 2, 185, 62, 2, 184, 61, 3, 183, 60, 3, 178, 61, 2, + 170, 55, 3, 155, 48, 7, 136, 40, 19, 114, 31, 24, 86, 23, 26, 48, 14, 28, 16, 5, 21, 2, 2, 8, 2, 1, 10, 1, 2, 12, 1, 2, 18, 2, 2, 24, 2, 8, 42, 3, 24, 77, 3, 43, 109, 2, 63, 132, 10, 78, 152, 26, 88, 162, 39, 93, 168, 45, 92, 166, 46, 86, 157, + 50, 81, 146, 54, 83, 146, 50, 77, 137, 50, 74, 136, 50, 72, 132, 54, 72, 131, 57, 74, 133, 53, 73, 132, 50, 73, 133, 48, 74, 133, 47, 73, 135, 45, 74, 136, 43, 74, 137, 42, 74, 137, 40, 73, 136, 45, 75, 139, 41, 75, 139, 42, 77, 140, 40, 76, 141, 39, 76, 141, 39, 76, 141, + 40, 78, 142, 38, 77, 141, 35, 74, 138, 33, 73, 137, 34, 72, 135, 32, 68, 130, 35, 65, 126, 34, 60, 117, 34, 55, 111, 35, 52, 104, 32, 47, 96, 29, 43, 89, 29, 42, 86, 28, 42, 86, 29, 42, 86, 28, 42, 87, 29, 41, 85, 26, 37, 81, 21, 33, 75, 13, 30, 74, 8, 31, 78, + 3, 33, 82, 3, 27, 80, 2, 20, 73, 2, 17, 67, 2, 11, 58, 3, 4, 34, 2, 2, 6, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 15, 1, 3, 37, 2, 5, 67, 5, 3, 85, 7, 2, 97, 11, 2, 110, 18, 2, 114, 19, 3, 113, 18, 2, 113, 17, 2, + 111, 15, 1, 110, 14, 2, 107, 14, 2, 108, 14, 2, 105, 14, 2, 104, 13, 1, 102, 11, 2, 102, 12, 2, 100, 10, 2, 98, 10, 1, 97, 10, 3, 94, 10, 3, 93, 8, 2, 92, 8, 2, 89, 6, 1, 90, 6, 2, 89, 6, 1, 88, 5, 2, 103, 18, 2, 105, 18, 2, 106, 18, 2, + 106, 19, 1, 108, 20, 2, 108, 19, 2, 110, 20, 2, 111, 22, 2, 112, 22, 1, 113, 22, 2, 115, 22, 2, 115, 23, 2, 117, 24, 3, 120, 25, 2, 119, 25, 1, 120, 25, 2, 121, 24, 1, 124, 26, 2, 126, 28, 3, 125, 28, 2, 127, 29, 2, 129, 29, 1, 129, 30, 1, 131, 30, 1, + 134, 32, 2, 135, 33, 2, 138, 34, 2, 140, 38, 2, 140, 38, 2, 141, 38, 3, 142, 38, 2, 143, 39, 2, 144, 38, 3, 146, 39, 1, 147, 40, 2, 148, 40, 1, 148, 42, 2, 151, 43, 2, 150, 43, 1, 151, 43, 2, 154, 44, 2, 155, 45, 3, 155, 46, 2, 156, 44, 2, 156, 46, 2, + 157, 47, 1, 157, 47, 2, 157, 48, 2, 158, 47, 2, 159, 48, 1, 161, 49, 1, 161, 50, 2, 163, 51, 3, 163, 51, 2, 163, 53, 1, 164, 51, 2, 165, 53, 2, 167, 53, 2, 167, 54, 2, 168, 53, 3, 170, 56, 3, 169, 55, 3, 170, 56, 2, 169, 55, 2, 171, 57, 2, 170, 55, 3, + 172, 56, 2, 171, 56, 2, 171, 56, 3, 172, 57, 2, 172, 57, 3, 171, 57, 2, 173, 57, 2, 174, 58, 3, 172, 58, 2, 174, 60, 3, 174, 59, 2, 174, 60, 2, 173, 57, 2, 173, 58, 3, 174, 60, 2, 175, 61, 2, 174, 59, 2, 173, 58, 2, 173, 59, 2, 172, 59, 2, 174, 59, 3, + 171, 57, 3, 173, 59, 2, 173, 58, 3, 173, 59, 2, 171, 58, 2, 174, 61, 3, 173, 60, 2, 173, 61, 1, 173, 62, 2, 172, 60, 2, 171, 59, 1, 171, 58, 2, 172, 60, 1, 172, 60, 3, 173, 60, 2, 172, 59, 2, 173, 61, 2, 173, 60, 2, 174, 61, 2, 173, 61, 2, 173, 60, 1, + 175, 60, 2, 173, 59, 2, 173, 61, 1, 173, 60, 2, 174, 61, 2, 171, 58, 2, 171, 59, 2, 172, 59, 2, 172, 58, 3, 172, 59, 1, 173, 59, 3, 174, 62, 2, 173, 60, 3, 172, 59, 2, 173, 59, 1, 174, 60, 2, 174, 59, 2, 175, 61, 2, 176, 61, 3, 176, 62, 2, 176, 62, 1, + 177, 60, 2, 176, 60, 2, 178, 61, 2, 178, 61, 2, 181, 62, 2, 181, 63, 2, 182, 62, 2, 181, 61, 2, 183, 63, 2, 183, 62, 3, 184, 63, 3, 185, 63, 2, 184, 63, 2, 185, 63, 3, 185, 63, 2, 187, 64, 2, 182, 63, 4, 173, 58, 2, 160, 49, 4, 141, 39, 8, 118, 28, 10, + 85, 16, 11, 47, 7, 14, 16, 2, 12, 2, 2, 4, 1, 1, 6, 0, 1, 6, 0, 1, 11, 2, 2, 21, 2, 8, 39, 3, 24, 75, 3, 44, 107, 3, 60, 130, 2, 73, 150, 8, 83, 162, 17, 90, 168, 25, 92, 168, 27, 85, 160, 27, 79, 152, 33, 83, 153, 29, 77, 148, 24, 75, 144, + 25, 73, 142, 24, 73, 141, 25, 72, 141, 22, 73, 141, 20, 73, 141, 21, 74, 141, 22, 74, 141, 23, 73, 141, 20, 72, 140, 19, 73, 140, 23, 76, 142, 24, 75, 142, 23, 76, 143, 24, 76, 143, 26, 78, 146, 23, 77, 146, 23, 76, 146, 21, 76, 145, 20, 75, 143, 22, 76, 143, 19, 73, 140, + 21, 72, 138, 17, 68, 133, 16, 66, 130, 15, 62, 124, 14, 57, 118, 14, 53, 110, 11, 46, 103, 11, 45, 98, 10, 43, 96, 8, 41, 94, 8, 42, 95, 8, 41, 95, 10, 42, 94, 8, 39, 90, 5, 34, 84, 4, 28, 78, 2, 29, 79, 2, 29, 80, 2, 24, 76, 1, 17, 68, 2, 14, 63, + 3, 11, 53, 1, 4, 32, 1, 1, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 1, 19, 2, 4, 44, 2, 4, 72, 5, 1, 92, 9, 2, 104, 15, 3, 113, 19, 2, 114, 18, 2, 115, 19, 2, 113, 19, 2, 113, 18, 3, 112, 16, 2, 111, 15, 2, 108, 15, 2, + 105, 14, 2, 104, 15, 2, 104, 14, 2, 102, 12, 2, 102, 13, 2, 100, 11, 2, 99, 11, 3, 95, 10, 2, 93, 9, 2, 93, 8, 1, 92, 7, 2, 91, 6, 1, 91, 8, 2, 88, 6, 1, 105, 18, 2, 106, 18, 2, 105, 18, 1, 107, 19, 2, 106, 19, 2, 109, 22, 3, 110, 23, 2, + 111, 21, 2, 113, 22, 2, 114, 23, 2, 115, 23, 2, 117, 24, 2, 118, 25, 2, 119, 25, 2, 121, 25, 2, 124, 26, 2, 124, 26, 2, 125, 27, 3, 126, 28, 2, 127, 28, 1, 128, 30, 1, 130, 31, 2, 131, 30, 2, 132, 29, 1, 135, 34, 2, 138, 35, 2, 139, 36, 2, 142, 38, 2, + 141, 38, 2, 142, 39, 2, 143, 39, 2, 143, 39, 2, 144, 40, 2, 146, 40, 2, 146, 41, 2, 148, 42, 2, 149, 42, 2, 150, 42, 2, 152, 42, 2, 153, 43, 2, 152, 41, 2, 155, 44, 2, 155, 45, 2, 156, 47, 2, 156, 45, 2, 158, 48, 3, 157, 46, 2, 159, 49, 2, 160, 50, 2, + 162, 50, 2, 162, 51, 2, 163, 52, 2, 162, 50, 2, 163, 52, 2, 163, 51, 1, 165, 55, 3, 166, 53, 2, 166, 53, 2, 168, 54, 2, 170, 55, 2, 171, 54, 3, 170, 56, 3, 171, 56, 2, 170, 56, 2, 172, 57, 2, 170, 55, 1, 172, 58, 3, 173, 56, 3, 173, 58, 3, 173, 58, 2, + 173, 57, 2, 173, 60, 2, 173, 58, 2, 174, 59, 3, 173, 57, 2, 173, 58, 2, 174, 59, 2, 174, 60, 3, 173, 59, 2, 174, 60, 2, 175, 62, 2, 174, 59, 2, 174, 59, 2, 173, 59, 2, 174, 60, 3, 174, 60, 2, 174, 60, 2, 172, 59, 3, 173, 60, 2, 173, 61, 2, 173, 60, 2, + 171, 59, 2, 172, 59, 2, 173, 61, 2, 172, 60, 1, 173, 60, 1, 173, 60, 2, 173, 61, 1, 172, 60, 2, 172, 60, 2, 172, 59, 2, 172, 61, 2, 174, 62, 2, 174, 62, 2, 173, 60, 2, 174, 61, 1, 176, 63, 2, 174, 59, 2, 175, 62, 2, 174, 59, 2, 175, 60, 2, 174, 60, 2, + 173, 61, 2, 174, 60, 2, 174, 60, 3, 174, 60, 2, 174, 61, 2, 173, 59, 1, 175, 62, 2, 174, 60, 2, 175, 60, 2, 175, 61, 2, 175, 60, 2, 176, 62, 2, 176, 62, 2, 175, 62, 1, 175, 60, 2, 176, 63, 3, 177, 62, 2, 176, 61, 2, 179, 63, 2, 178, 60, 1, 179, 61, 1, + 182, 60, 3, 183, 63, 2, 183, 63, 3, 183, 63, 2, 183, 63, 3, 183, 62, 2, 185, 63, 3, 187, 64, 2, 186, 63, 3, 186, 64, 2, 186, 64, 3, 186, 63, 3, 184, 63, 3, 177, 58, 2, 165, 52, 3, 146, 42, 4, 124, 29, 6, 94, 20, 7, 56, 8, 11, 20, 3, 10, 4, 2, 5, + 0, 1, 2, 0, 1, 6, 1, 1, 8, 2, 2, 18, 2, 5, 34, 2, 19, 69, 3, 37, 99, 4, 51, 117, 3, 65, 136, 4, 76, 154, 3, 84, 162, 6, 87, 165, 9, 84, 160, 9, 77, 151, 14, 79, 151, 10, 76, 147, 8, 74, 144, 8, 72, 143, 9, 73, 142, 6, 69, 140, 6, 72, 142, + 9, 75, 144, 8, 74, 144, 7, 73, 143, 6, 73, 142, 7, 72, 141, 5, 74, 143, 7, 74, 142, 8, 75, 144, 6, 74, 143, 6, 74, 142, 8, 75, 144, 8, 75, 144, 7, 73, 145, 6, 71, 142, 5, 72, 141, 5, 71, 140, 5, 69, 138, 4, 68, 137, 5, 64, 132, 5, 63, 128, 4, 58, 123, + 4, 54, 117, 5, 49, 111, 2, 45, 104, 3, 42, 100, 2, 40, 97, 3, 39, 96, 3, 41, 98, 3, 41, 98, 3, 39, 95, 2, 36, 91, 2, 32, 85, 2, 26, 78, 2, 23, 74, 1, 21, 71, 3, 18, 68, 2, 14, 62, 3, 13, 58, 3, 10, 50, 2, 4, 33, 1, 2, 13, 1, 1, 4, + 1, 1, 2, 1, 1, 1, 1, 0, 1, 7, 1, 2, 24, 2, 4, 50, 2, 3, 75, 5, 1, 94, 10, 1, 108, 18, 2, 118, 23, 1, 116, 20, 3, 115, 19, 2, 114, 19, 2, 114, 18, 2, 112, 16, 1, 111, 16, 2, 110, 16, 2, 108, 15, 2, 105, 14, 2, 104, 14, 2, 104, 13, 2, + 102, 11, 2, 102, 12, 2, 99, 11, 2, 98, 9, 2, 98, 10, 3, 96, 9, 2, 94, 8, 1, 92, 6, 1, 91, 7, 1, 90, 7, 2, 105, 18, 2, 106, 19, 2, 106, 19, 1, 108, 21, 2, 109, 21, 2, 109, 19, 1, 111, 21, 2, 114, 23, 1, 115, 24, 2, 116, 24, 2, 117, 24, 2, + 117, 24, 1, 120, 25, 2, 122, 26, 2, 122, 25, 2, 124, 26, 2, 123, 26, 2, 125, 28, 1, 126, 26, 2, 128, 29, 1, 129, 31, 2, 130, 32, 2, 132, 33, 2, 132, 31, 2, 136, 32, 2, 138, 34, 2, 139, 34, 2, 141, 36, 2, 140, 36, 2, 141, 38, 3, 143, 38, 2, 145, 41, 2, + 145, 41, 2, 146, 39, 2, 148, 40, 2, 149, 44, 1, 150, 42, 2, 150, 42, 2, 152, 42, 2, 155, 44, 2, 153, 42, 2, 156, 46, 2, 157, 48, 3, 156, 47, 2, 158, 47, 2, 158, 48, 2, 159, 48, 2, 160, 51, 2, 162, 52, 2, 162, 50, 2, 163, 50, 2, 163, 50, 2, 165, 51, 2, + 165, 52, 2, 166, 53, 2, 167, 54, 2, 167, 54, 2, 167, 56, 2, 171, 56, 3, 170, 55, 2, 170, 56, 2, 171, 56, 2, 171, 55, 2, 170, 55, 2, 173, 56, 2, 170, 56, 2, 172, 56, 3, 174, 59, 2, 172, 58, 2, 172, 58, 3, 172, 58, 3, 174, 60, 2, 173, 57, 2, 174, 57, 3, + 175, 60, 2, 175, 60, 2, 173, 61, 2, 172, 60, 3, 174, 61, 3, 172, 60, 3, 174, 60, 2, 175, 61, 3, 174, 61, 2, 174, 62, 2, 173, 60, 2, 174, 62, 2, 173, 61, 2, 173, 61, 2, 173, 61, 2, 174, 62, 2, 171, 62, 2, 172, 62, 3, 173, 61, 2, 173, 60, 3, 173, 61, 2, + 174, 60, 2, 173, 61, 2, 172, 59, 2, 175, 62, 2, 175, 64, 2, 174, 63, 2, 175, 62, 2, 174, 61, 1, 175, 62, 1, 174, 62, 2, 175, 62, 1, 175, 62, 2, 176, 62, 2, 175, 62, 1, 176, 63, 2, 177, 62, 2, 176, 62, 2, 176, 62, 3, 176, 63, 2, 175, 63, 1, 175, 63, 2, + 174, 63, 2, 175, 63, 2, 175, 62, 2, 175, 61, 1, 176, 63, 2, 177, 63, 3, 175, 61, 2, 175, 61, 2, 176, 63, 2, 177, 63, 2, 177, 62, 2, 177, 63, 2, 178, 64, 2, 179, 63, 2, 179, 63, 3, 180, 61, 2, 182, 62, 2, 182, 63, 3, 185, 64, 3, 181, 63, 1, 183, 63, 2, + 185, 65, 2, 185, 63, 2, 185, 64, 2, 187, 65, 2, 188, 67, 3, 189, 67, 2, 189, 65, 2, 188, 64, 3, 186, 65, 3, 181, 62, 3, 169, 54, 4, 153, 45, 4, 129, 33, 6, 98, 21, 6, 63, 10, 9, 27, 2, 10, 8, 2, 8, 1, 2, 5, 1, 2, 7, 1, 1, 12, 1, 1, 18, + 3, 6, 36, 2, 18, 64, 3, 31, 89, 3, 42, 103, 3, 54, 120, 3, 63, 135, 3, 72, 146, 3, 76, 151, 3, 75, 151, 2, 70, 143, 3, 72, 144, 3, 69, 142, 3, 68, 140, 2, 69, 140, 3, 70, 138, 3, 68, 138, 2, 69, 139, 4, 69, 140, 3, 66, 137, 2, 66, 136, 3, 65, 135, + 3, 66, 136, 4, 67, 136, 3, 68, 137, 3, 68, 137, 2, 67, 137, 2, 68, 137, 3, 67, 137, 2, 66, 136, 3, 65, 135, 3, 65, 134, 3, 63, 131, 3, 62, 129, 3, 61, 128, 3, 60, 127, 3, 57, 125, 3, 55, 120, 3, 51, 115, 3, 47, 110, 2, 43, 104, 2, 42, 103, 2, 37, 99, + 2, 37, 98, 2, 38, 98, 1, 37, 96, 2, 37, 95, 3, 35, 91, 3, 32, 88, 3, 27, 80, 2, 21, 71, 2, 18, 66, 3, 16, 63, 2, 15, 61, 3, 12, 57, 2, 9, 53, 3, 6, 43, 2, 3, 30, 2, 2, 17, 0, 2, 8, 1, 1, 7, 0, 1, 5, 3, 1, 3, 8, 2, 5, + 26, 2, 5, 52, 3, 4, 80, 7, 2, 98, 12, 2, 111, 19, 2, 118, 22, 2, 119, 20, 2, 116, 20, 2, 117, 19, 2, 114, 18, 2, 113, 18, 2, 110, 15, 2, 111, 18, 2, 108, 15, 1, 105, 14, 1, 105, 14, 3, 104, 13, 1, 103, 13, 2, 103, 13, 2, 101, 11, 3, 100, 12, 1, + 100, 11, 2, 98, 10, 2, 95, 9, 2, 92, 7, 2, 91, 7, 2, 92, 7, 2, 106, 18, 2, 106, 18, 1, 108, 20, 2, 109, 22, 1, 108, 21, 2, 111, 21, 2, 111, 21, 2, 114, 23, 2, 115, 24, 2, 117, 25, 2, 117, 24, 2, 117, 24, 2, 122, 27, 2, 122, 26, 2, 123, 27, 2, + 124, 26, 2, 125, 28, 2, 126, 28, 2, 127, 29, 2, 129, 29, 2, 130, 30, 2, 130, 31, 2, 133, 32, 2, 134, 32, 2, 137, 35, 2, 139, 36, 2, 139, 35, 2, 141, 38, 3, 142, 38, 3, 142, 38, 2, 144, 38, 2, 147, 42, 2, 146, 41, 2, 148, 42, 2, 149, 41, 2, 150, 44, 2, + 149, 43, 2, 151, 44, 2, 152, 44, 2, 152, 44, 1, 154, 45, 3, 156, 47, 2, 155, 46, 3, 158, 47, 2, 160, 50, 2, 160, 50, 2, 161, 50, 2, 162, 51, 2, 162, 51, 3, 161, 50, 2, 163, 51, 1, 163, 51, 2, 164, 50, 2, 165, 53, 2, 166, 53, 3, 168, 53, 2, 170, 56, 3, + 168, 54, 2, 170, 55, 3, 170, 56, 3, 171, 57, 4, 170, 56, 2, 172, 57, 2, 173, 58, 2, 172, 56, 2, 173, 57, 3, 173, 57, 2, 173, 58, 2, 175, 60, 2, 173, 58, 2, 174, 60, 3, 173, 59, 2, 175, 60, 2, 174, 60, 1, 175, 61, 3, 174, 60, 3, 175, 61, 3, 173, 62, 1, + 176, 62, 3, 176, 62, 2, 175, 61, 2, 174, 61, 2, 175, 62, 2, 175, 62, 1, 174, 62, 3, 175, 64, 3, 174, 62, 2, 173, 61, 2, 174, 62, 2, 174, 63, 2, 173, 63, 2, 173, 63, 2, 172, 61, 2, 169, 60, 2, 172, 62, 2, 174, 62, 2, 175, 63, 2, 174, 61, 2, 174, 63, 1, + 175, 64, 2, 175, 64, 2, 175, 63, 2, 177, 65, 2, 176, 64, 2, 175, 62, 2, 178, 62, 3, 176, 62, 2, 177, 63, 2, 177, 63, 2, 176, 63, 1, 178, 65, 3, 177, 63, 2, 176, 62, 3, 177, 64, 2, 177, 64, 2, 175, 63, 2, 177, 65, 2, 177, 64, 3, 176, 63, 2, 176, 63, 2, + 177, 64, 2, 177, 64, 3, 176, 62, 2, 177, 62, 3, 178, 65, 2, 177, 63, 2, 179, 65, 2, 178, 64, 2, 178, 63, 2, 181, 65, 3, 180, 63, 2, 182, 64, 3, 182, 63, 2, 181, 63, 2, 184, 64, 3, 186, 65, 3, 184, 66, 2, 186, 67, 2, 186, 66, 3, 187, 66, 2, 188, 66, 3, + 190, 67, 2, 191, 68, 2, 190, 67, 2, 189, 66, 3, 188, 65, 2, 185, 64, 2, 172, 56, 3, 154, 45, 3, 131, 35, 8, 104, 25, 11, 70, 14, 15, 36, 5, 17, 15, 3, 16, 3, 2, 12, 2, 2, 16, 2, 2, 19, 2, 3, 26, 3, 5, 37, 2, 14, 57, 2, 24, 76, 3, 31, 90, + 2, 40, 103, 4, 50, 119, 2, 57, 126, 3, 62, 132, 3, 63, 131, 3, 60, 129, 3, 58, 128, 3, 59, 129, 3, 61, 131, 4, 61, 131, 3, 63, 132, 3, 62, 132, 3, 62, 131, 3, 60, 130, 4, 59, 130, 3, 57, 128, 2, 58, 128, 2, 58, 126, 3, 58, 127, 3, 56, 125, 3, 57, 126, + 3, 55, 124, 3, 54, 122, 3, 56, 125, 4, 54, 122, 3, 51, 120, 3, 50, 118, 4, 51, 116, 3, 49, 115, 3, 49, 113, 2, 46, 111, 3, 44, 109, 2, 44, 106, 2, 41, 107, 3, 39, 103, 2, 36, 98, 2, 34, 96, 2, 34, 95, 2, 33, 94, 2, 32, 93, 2, 31, 91, 3, 32, 89, + 2, 28, 85, 2, 26, 81, 2, 22, 75, 3, 18, 67, 3, 13, 61, 2, 11, 56, 3, 10, 54, 3, 9, 54, 2, 6, 46, 3, 4, 39, 1, 2, 30, 1, 2, 21, 1, 1, 14, 1, 1, 13, 0, 1, 10, 2, 2, 8, 8, 2, 7, 25, 2, 6, 53, 4, 5, 78, 7, 2, 98, 13, 2, + 113, 20, 2, 119, 23, 2, 119, 23, 2, 119, 21, 2, 117, 19, 2, 116, 19, 3, 114, 19, 2, 113, 19, 2, 111, 17, 2, 111, 16, 2, 109, 16, 2, 107, 15, 2, 105, 15, 2, 104, 14, 1, 103, 13, 2, 103, 13, 2, 101, 12, 2, 100, 11, 2, 99, 9, 2, 97, 9, 2, 95, 8, 2, + 93, 8, 2, 91, 8, 1, 106, 18, 2, 108, 20, 2, 108, 21, 2, 109, 20, 2, 110, 21, 1, 111, 23, 2, 113, 23, 2, 114, 23, 1, 116, 24, 2, 117, 24, 1, 118, 25, 2, 119, 26, 1, 122, 26, 2, 124, 27, 2, 123, 26, 2, 125, 26, 2, 126, 27, 2, 127, 28, 2, 127, 27, 2, + 129, 31, 1, 131, 32, 3, 131, 31, 1, 134, 33, 3, 137, 33, 3, 137, 34, 2, 141, 36, 2, 142, 37, 3, 142, 37, 1, 141, 38, 2, 144, 40, 2, 145, 39, 2, 145, 40, 2, 148, 41, 2, 149, 42, 3, 149, 42, 1, 150, 43, 2, 150, 43, 2, 151, 43, 2, 151, 45, 2, 153, 46, 2, + 154, 46, 3, 155, 47, 3, 156, 46, 2, 158, 48, 3, 158, 49, 2, 160, 50, 2, 160, 49, 2, 162, 51, 2, 164, 52, 2, 164, 51, 2, 164, 52, 2, 165, 51, 2, 167, 54, 3, 166, 53, 1, 166, 54, 3, 167, 53, 2, 170, 56, 3, 170, 55, 2, 170, 56, 3, 171, 57, 3, 170, 55, 2, + 172, 58, 2, 173, 59, 2, 173, 57, 3, 173, 59, 2, 173, 58, 2, 173, 60, 2, 172, 58, 2, 173, 59, 2, 174, 60, 3, 174, 61, 2, 174, 60, 2, 174, 60, 2, 176, 61, 2, 175, 61, 2, 174, 60, 3, 175, 60, 3, 173, 61, 2, 176, 62, 2, 174, 61, 3, 174, 62, 2, 174, 62, 2, + 175, 62, 2, 175, 62, 1, 175, 62, 2, 173, 62, 1, 174, 63, 2, 175, 64, 3, 172, 61, 1, 175, 63, 2, 174, 62, 2, 173, 62, 2, 175, 64, 2, 175, 64, 3, 175, 65, 3, 175, 63, 3, 174, 62, 2, 176, 65, 2, 176, 65, 3, 177, 65, 3, 175, 64, 2, 174, 63, 1, 176, 65, 3, + 176, 63, 2, 178, 65, 2, 177, 63, 2, 178, 64, 3, 178, 64, 3, 178, 64, 3, 177, 65, 2, 177, 64, 2, 176, 63, 2, 177, 64, 2, 177, 63, 2, 177, 65, 3, 177, 64, 2, 176, 64, 2, 177, 63, 2, 177, 66, 2, 176, 63, 2, 177, 63, 2, 178, 65, 2, 177, 63, 2, 178, 64, 2, + 178, 64, 2, 179, 64, 2, 179, 65, 3, 179, 64, 2, 180, 65, 2, 181, 66, 2, 181, 66, 3, 182, 66, 3, 182, 66, 2, 184, 66, 2, 184, 65, 2, 187, 66, 2, 187, 66, 2, 188, 65, 2, 188, 66, 2, 189, 67, 3, 190, 67, 2, 190, 67, 3, 190, 68, 2, 191, 68, 2, 189, 65, 2, + 189, 66, 2, 186, 65, 4, 174, 58, 2, 154, 48, 3, 135, 39, 10, 106, 25, 12, 73, 16, 18, 47, 8, 23, 26, 4, 26, 9, 4, 25, 5, 4, 28, 4, 5, 33, 4, 4, 36, 4, 7, 43, 3, 11, 55, 3, 17, 68, 2, 23, 79, 2, 31, 90, 2, 36, 99, 3, 41, 105, 3, 43, 108, + 2, 45, 111, 3, 43, 109, 3, 46, 113, 3, 48, 116, 2, 48, 119, 3, 49, 121, 3, 52, 124, 3, 51, 123, 2, 50, 122, 3, 50, 122, 3, 48, 119, 4, 47, 118, 3, 47, 118, 2, 46, 117, 3, 45, 117, 3, 45, 117, 3, 45, 117, 3, 43, 115, 3, 43, 116, 3, 41, 113, 3, 40, 112, + 2, 40, 110, 3, 39, 108, 3, 35, 105, 2, 35, 101, 3, 35, 99, 2, 35, 99, 3, 33, 97, 2, 32, 95, 2, 29, 94, 2, 29, 92, 4, 28, 90, 3, 29, 88, 2, 26, 87, 2, 25, 86, 2, 25, 87, 3, 27, 86, 2, 23, 83, 3, 21, 79, 2, 20, 75, 3, 18, 72, 3, 13, 63, + 2, 9, 57, 2, 8, 53, 2, 7, 51, 2, 7, 47, 2, 5, 44, 1, 2, 36, 1, 1, 31, 1, 2, 27, 2, 2, 24, 2, 2, 22, 2, 1, 19, 1, 1, 15, 8, 1, 12, 29, 3, 13, 54, 5, 8, 79, 8, 2, 98, 14, 2, 112, 20, 2, 119, 23, 3, 119, 22, 2, 120, 22, 2, + 118, 21, 2, 116, 19, 1, 114, 20, 2, 114, 19, 2, 113, 19, 3, 109, 17, 2, 110, 16, 1, 107, 16, 1, 104, 15, 2, 106, 13, 2, 104, 13, 2, 103, 12, 3, 101, 10, 2, 102, 12, 2, 100, 11, 3, 98, 9, 2, 97, 9, 2, 94, 9, 2, 93, 8, 2, 106, 19, 2, 108, 21, 3, + 109, 21, 2, 109, 20, 2, 112, 23, 2, 111, 23, 2, 114, 24, 2, 116, 24, 3, 116, 23, 2, 118, 25, 1, 119, 27, 1, 120, 25, 2, 123, 29, 1, 124, 28, 2, 123, 27, 2, 126, 27, 2, 125, 27, 3, 127, 28, 2, 127, 29, 2, 130, 32, 2, 130, 31, 2, 131, 31, 2, 134, 31, 2, + 135, 34, 2, 138, 35, 3, 140, 36, 2, 140, 36, 2, 142, 38, 2, 142, 38, 2, 144, 41, 2, 146, 41, 2, 145, 41, 2, 147, 42, 2, 148, 42, 2, 148, 42, 1, 150, 44, 2, 151, 45, 2, 152, 45, 2, 153, 46, 2, 155, 47, 2, 153, 46, 2, 157, 48, 2, 158, 49, 2, 159, 49, 2, + 160, 49, 2, 161, 49, 3, 160, 49, 2, 161, 50, 2, 163, 52, 2, 165, 54, 2, 163, 52, 2, 167, 54, 2, 165, 53, 2, 166, 55, 2, 168, 55, 3, 169, 55, 3, 169, 56, 2, 170, 57, 1, 169, 56, 3, 170, 56, 2, 170, 57, 2, 171, 57, 3, 171, 58, 3, 173, 59, 2, 172, 58, 2, + 172, 60, 1, 173, 59, 2, 174, 61, 3, 173, 60, 2, 173, 60, 2, 175, 60, 3, 176, 62, 2, 175, 61, 1, 177, 63, 3, 176, 63, 2, 175, 61, 1, 176, 63, 2, 174, 61, 2, 174, 62, 2, 174, 62, 2, 173, 61, 2, 176, 65, 2, 174, 64, 2, 174, 63, 1, 174, 65, 2, 173, 63, 2, + 173, 64, 1, 175, 64, 2, 175, 63, 2, 176, 63, 2, 175, 62, 1, 176, 64, 2, 174, 63, 2, 175, 64, 2, 174, 64, 2, 177, 65, 2, 176, 65, 2, 177, 63, 2, 175, 65, 2, 175, 63, 2, 177, 65, 2, 176, 65, 2, 178, 65, 2, 178, 65, 2, 178, 65, 2, 180, 66, 3, 177, 62, 2, + 178, 65, 2, 177, 64, 2, 178, 65, 2, 178, 65, 2, 178, 65, 2, 178, 66, 3, 178, 65, 2, 178, 65, 2, 177, 64, 2, 177, 63, 2, 178, 64, 2, 178, 64, 3, 177, 63, 2, 178, 63, 3, 178, 65, 1, 179, 65, 2, 179, 65, 2, 177, 64, 2, 178, 64, 2, 179, 65, 2, 180, 66, 3, + 181, 65, 2, 180, 65, 1, 183, 67, 3, 183, 67, 2, 185, 68, 2, 185, 67, 2, 185, 68, 2, 188, 67, 2, 187, 67, 3, 188, 67, 2, 189, 67, 2, 190, 68, 2, 191, 67, 4, 190, 66, 2, 191, 68, 1, 191, 68, 2, 191, 67, 3, 190, 67, 2, 187, 65, 4, 175, 58, 2, 157, 51, 7, + 137, 41, 16, 109, 28, 21, 80, 19, 26, 59, 15, 29, 36, 6, 36, 18, 6, 38, 10, 8, 40, 9, 10, 45, 5, 7, 46, 3, 8, 51, 3, 11, 57, 4, 14, 65, 3, 17, 73, 3, 21, 79, 3, 24, 84, 4, 25, 86, 3, 29, 90, 2, 28, 91, 2, 31, 96, 4, 35, 103, 2, 36, 109, + 3, 38, 113, 2, 39, 115, 3, 40, 118, 3, 41, 119, 3, 39, 117, 2, 39, 116, 2, 37, 112, 2, 36, 111, 2, 36, 111, 3, 35, 111, 2, 36, 111, 2, 34, 111, 2, 33, 110, 3, 35, 111, 2, 31, 108, 2, 31, 106, 2, 31, 106, 3, 29, 105, 3, 25, 99, 3, 25, 96, 2, 24, 94, + 1, 25, 90, 2, 23, 88, 3, 23, 86, 2, 21, 85, 2, 20, 85, 2, 21, 84, 2, 19, 83, 3, 19, 82, 2, 17, 80, 3, 15, 78, 2, 16, 80, 3, 18, 81, 2, 19, 79, 1, 19, 77, 2, 18, 74, 2, 15, 67, 2, 13, 66, 3, 9, 58, 2, 5, 51, 2, 6, 48, 2, 4, 45, + 2, 3, 42, 1, 2, 36, 2, 1, 36, 1, 1, 35, 2, 2, 33, 1, 1, 32, 2, 2, 28, 2, 3, 24, 5, 2, 18, 25, 4, 19, 52, 6, 13, 76, 9, 5, 97, 17, 1, 113, 20, 2, 119, 24, 2, 120, 23, 3, 119, 22, 2, 118, 22, 2, 117, 20, 2, 115, 18, 2, 114, 20, 2, + 113, 19, 2, 113, 19, 2, 111, 17, 3, 110, 16, 2, 107, 15, 1, 106, 14, 1, 104, 15, 1, 103, 13, 2, 103, 12, 2, 102, 12, 2, 99, 9, 2, 97, 8, 2, 96, 9, 2, 94, 10, 2, 93, 9, 3, 107, 20, 2, 108, 21, 2, 109, 22, 2, 109, 23, 2, 109, 23, 2, 112, 23, 2, + 115, 24, 2, 118, 25, 2, 119, 25, 2, 120, 27, 2, 121, 28, 2, 121, 28, 1, 123, 27, 3, 124, 28, 2, 124, 27, 2, 125, 28, 1, 126, 28, 1, 128, 30, 2, 130, 31, 2, 130, 30, 2, 132, 32, 2, 132, 32, 2, 133, 34, 2, 135, 34, 2, 138, 37, 3, 139, 37, 3, 142, 39, 2, + 142, 38, 2, 143, 37, 2, 143, 41, 2, 145, 40, 2, 146, 39, 1, 148, 41, 3, 148, 42, 3, 149, 42, 1, 152, 44, 3, 151, 43, 2, 152, 46, 2, 153, 47, 3, 154, 46, 2, 156, 47, 3, 156, 47, 3, 158, 48, 3, 159, 49, 2, 160, 49, 1, 161, 51, 2, 162, 50, 2, 162, 50, 2, + 164, 53, 2, 165, 54, 2, 164, 52, 2, 166, 53, 1, 164, 54, 3, 167, 54, 2, 168, 57, 2, 169, 55, 3, 169, 55, 2, 169, 56, 3, 170, 56, 3, 170, 59, 2, 171, 58, 2, 171, 57, 2, 170, 57, 2, 172, 59, 2, 172, 59, 2, 172, 61, 3, 173, 61, 2, 172, 60, 2, 172, 61, 3, + 173, 59, 2, 173, 62, 2, 174, 62, 3, 173, 61, 2, 174, 60, 2, 175, 63, 2, 176, 62, 2, 175, 64, 2, 175, 63, 2, 175, 63, 2, 174, 61, 1, 174, 63, 2, 175, 63, 2, 174, 63, 2, 175, 64, 3, 173, 64, 2, 174, 65, 2, 174, 64, 3, 176, 65, 2, 175, 64, 2, 176, 64, 2, + 176, 64, 3, 176, 64, 2, 176, 66, 3, 176, 66, 2, 177, 65, 3, 178, 66, 1, 176, 64, 2, 179, 67, 2, 177, 63, 2, 177, 64, 2, 178, 65, 2, 177, 65, 2, 178, 64, 2, 179, 65, 2, 179, 65, 3, 179, 66, 2, 178, 65, 2, 178, 65, 2, 178, 67, 1, 178, 65, 2, 178, 65, 2, + 177, 64, 2, 179, 66, 3, 178, 64, 2, 179, 65, 2, 178, 64, 2, 178, 65, 3, 178, 65, 2, 179, 67, 2, 178, 66, 2, 179, 65, 2, 179, 65, 3, 179, 64, 1, 177, 64, 1, 179, 65, 2, 179, 65, 3, 180, 66, 2, 181, 67, 3, 181, 65, 2, 183, 68, 2, 182, 68, 2, 183, 67, 2, + 184, 66, 2, 186, 68, 2, 187, 68, 2, 188, 68, 2, 188, 68, 3, 190, 67, 2, 190, 68, 2, 190, 68, 3, 191, 68, 2, 191, 68, 1, 191, 69, 2, 192, 69, 2, 193, 69, 2, 192, 69, 2, 186, 65, 2, 175, 60, 5, 156, 52, 10, 136, 42, 21, 112, 32, 28, 87, 25, 34, 69, 21, 37, + 46, 10, 46, 29, 6, 50, 21, 11, 52, 13, 13, 54, 7, 15, 60, 2, 11, 59, 3, 10, 61, 2, 10, 65, 3, 11, 67, 2, 14, 72, 2, 15, 76, 2, 16, 78, 3, 18, 83, 3, 20, 87, 2, 24, 93, 2, 27, 101, 3, 30, 107, 3, 32, 113, 2, 32, 115, 3, 33, 117, 2, 30, 117, + 3, 28, 115, 3, 29, 116, 2, 28, 113, 2, 27, 111, 2, 26, 111, 2, 25, 109, 2, 24, 108, 3, 25, 110, 2, 24, 109, 3, 24, 109, 3, 23, 107, 3, 25, 107, 2, 21, 103, 2, 17, 98, 3, 17, 94, 3, 15, 92, 2, 14, 87, 3, 15, 84, 3, 13, 81, 2, 10, 77, 2, 12, 78, + 3, 10, 75, 2, 13, 75, 3, 10, 74, 2, 8, 71, 3, 8, 72, 3, 8, 73, 2, 9, 74, 2, 10, 75, 3, 13, 75, 2, 12, 72, 2, 13, 71, 2, 11, 66, 2, 9, 64, 2, 6, 57, 3, 5, 51, 3, 3, 48, 3, 4, 45, 2, 3, 41, 1, 1, 38, 1, 2, 38, 2, 2, 39, + 1, 2, 40, 2, 3, 40, 1, 2, 35, 1, 2, 31, 5, 2, 29, 21, 5, 27, 49, 9, 20, 72, 11, 10, 94, 17, 2, 110, 22, 1, 117, 24, 2, 122, 24, 2, 121, 23, 2, 120, 23, 3, 118, 22, 2, 116, 20, 1, 116, 21, 2, 114, 19, 2, 113, 19, 3, 112, 18, 1, 110, 17, 2, + 107, 17, 2, 106, 15, 2, 105, 14, 1, 104, 13, 2, 103, 14, 2, 103, 13, 2, 102, 13, 2, 100, 12, 2, 99, 11, 2, 97, 11, 3, 92, 10, 1, 108, 21, 2, 108, 22, 2, 107, 21, 1, 110, 23, 3, 111, 23, 1, 114, 24, 3, 114, 23, 2, 117, 24, 3, 119, 26, 2, 120, 26, 2, + 121, 28, 2, 122, 28, 2, 124, 29, 3, 124, 28, 2, 126, 29, 2, 126, 29, 2, 126, 30, 3, 129, 31, 2, 129, 31, 1, 130, 31, 2, 131, 32, 2, 133, 34, 2, 135, 37, 2, 137, 36, 2, 137, 37, 2, 139, 36, 2, 140, 37, 2, 142, 38, 2, 143, 39, 2, 145, 40, 2, 146, 41, 2, + 146, 39, 2, 148, 41, 2, 149, 42, 2, 150, 43, 3, 151, 43, 2, 152, 44, 2, 153, 46, 3, 155, 48, 3, 155, 47, 3, 157, 47, 3, 159, 49, 2, 159, 48, 2, 159, 49, 1, 161, 50, 2, 160, 50, 2, 161, 51, 2, 163, 50, 2, 164, 52, 2, 164, 53, 2, 165, 54, 2, 165, 54, 2, + 166, 55, 2, 167, 55, 2, 168, 57, 3, 167, 55, 2, 170, 56, 2, 171, 58, 2, 168, 55, 2, 169, 57, 3, 170, 57, 3, 169, 58, 2, 171, 57, 2, 172, 58, 2, 172, 60, 3, 172, 62, 3, 172, 60, 2, 173, 61, 2, 172, 62, 2, 173, 61, 2, 174, 62, 3, 173, 61, 2, 175, 63, 3, + 175, 63, 2, 175, 63, 1, 175, 62, 2, 174, 64, 2, 175, 63, 3, 175, 62, 3, 174, 63, 2, 175, 65, 2, 174, 65, 2, 173, 63, 2, 174, 62, 1, 174, 64, 3, 174, 64, 2, 174, 63, 2, 175, 64, 2, 178, 65, 3, 176, 64, 2, 176, 65, 3, 179, 68, 2, 177, 65, 2, 176, 65, 3, + 177, 65, 2, 178, 65, 2, 177, 64, 1, 178, 65, 2, 179, 66, 3, 179, 65, 2, 179, 65, 3, 179, 66, 2, 179, 66, 2, 180, 68, 1, 179, 67, 3, 179, 67, 3, 178, 65, 2, 180, 68, 2, 179, 66, 2, 179, 65, 2, 180, 67, 2, 179, 66, 2, 179, 67, 2, 179, 67, 3, 180, 66, 2, + 179, 65, 2, 179, 66, 2, 179, 66, 2, 178, 65, 2, 179, 67, 1, 180, 68, 2, 180, 67, 2, 181, 68, 2, 181, 68, 2, 181, 66, 2, 178, 65, 3, 180, 66, 3, 181, 65, 2, 183, 67, 3, 183, 67, 3, 183, 68, 2, 184, 67, 3, 185, 68, 2, 185, 67, 2, 188, 69, 3, 189, 68, 2, + 192, 69, 3, 189, 67, 2, 191, 68, 3, 192, 69, 3, 191, 69, 3, 192, 69, 2, 192, 70, 2, 194, 70, 2, 193, 68, 2, 192, 70, 3, 185, 63, 3, 174, 59, 4, 158, 55, 19, 137, 43, 29, 115, 36, 37, 93, 29, 40, 78, 25, 44, 57, 14, 57, 42, 11, 62, 34, 11, 65, 29, 19, 67, + 15, 19, 68, 3, 14, 67, 2, 9, 65, 3, 8, 66, 3, 8, 70, 4, 9, 73, 3, 11, 75, 2, 12, 77, 4, 15, 83, 3, 17, 86, 2, 24, 97, 3, 25, 104, 2, 24, 107, 3, 27, 113, 3, 25, 115, 1, 26, 117, 2, 23, 119, 3, 19, 116, 3, 19, 114, 2, 19, 111, 3, 17, 109, + 3, 15, 107, 3, 16, 107, 4, 16, 107, 2, 14, 106, 2, 13, 107, 3, 13, 106, 2, 11, 104, 3, 10, 101, 3, 9, 99, 3, 7, 95, 2, 6, 90, 3, 5, 84, 3, 5, 80, 2, 5, 73, 3, 4, 69, 2, 3, 65, 2, 3, 63, 2, 2, 61, 4, 5, 62, 2, 3, 60, 2, 4, 61, + 2, 3, 61, 2, 4, 64, 3, 4, 67, 3, 6, 69, 3, 7, 69, 3, 6, 68, 3, 9, 68, 3, 8, 67, 2, 8, 65, 3, 6, 60, 2, 4, 52, 3, 3, 49, 2, 2, 46, 3, 2, 43, 2, 2, 41, 2, 2, 41, 2, 1, 43, 3, 2, 44, 2, 2, 44, 2, 2, 42, 2, 2, 40, + 4, 3, 34, 17, 7, 32, 46, 10, 26, 69, 14, 16, 91, 17, 5, 108, 23, 3, 119, 25, 2, 121, 24, 2, 120, 22, 2, 122, 23, 1, 119, 22, 2, 119, 21, 2, 117, 22, 2, 115, 20, 2, 114, 19, 3, 113, 18, 3, 111, 18, 2, 109, 17, 1, 107, 16, 2, 106, 16, 2, 105, 16, 2, + 105, 14, 2, 102, 13, 2, 101, 12, 1, 101, 12, 3, 98, 13, 2, 97, 11, 3, 96, 11, 2, 108, 20, 2, 109, 22, 3, 110, 23, 2, 110, 24, 2, 112, 24, 2, 116, 25, 1, 117, 25, 2, 120, 26, 2, 119, 26, 1, 120, 26, 2, 122, 28, 2, 123, 29, 2, 123, 27, 1, 125, 28, 2, + 125, 29, 2, 126, 29, 2, 129, 31, 2, 130, 33, 2, 132, 33, 3, 131, 33, 2, 132, 33, 2, 134, 34, 3, 134, 35, 3, 137, 35, 3, 138, 37, 3, 140, 38, 2, 142, 38, 2, 143, 39, 2, 144, 40, 2, 143, 40, 2, 147, 41, 3, 147, 42, 2, 148, 42, 2, 150, 43, 2, 151, 43, 2, + 152, 44, 2, 154, 45, 2, 153, 45, 2, 155, 47, 3, 157, 47, 2, 157, 47, 3, 158, 49, 2, 159, 48, 2, 160, 50, 1, 161, 51, 1, 160, 49, 2, 161, 51, 2, 162, 51, 1, 163, 53, 2, 163, 53, 2, 166, 54, 2, 166, 55, 3, 166, 56, 2, 166, 56, 2, 167, 56, 3, 169, 55, 2, + 169, 58, 2, 170, 57, 2, 169, 58, 2, 170, 58, 2, 170, 58, 2, 170, 58, 2, 170, 61, 2, 170, 59, 1, 170, 60, 3, 171, 59, 2, 171, 60, 2, 171, 60, 2, 173, 62, 4, 175, 61, 3, 173, 62, 3, 173, 62, 2, 174, 61, 3, 175, 63, 2, 173, 63, 3, 175, 64, 3, 174, 64, 2, + 174, 62, 2, 175, 62, 3, 174, 62, 2, 174, 64, 2, 174, 64, 3, 175, 64, 3, 175, 64, 2, 174, 65, 2, 176, 65, 2, 174, 63, 2, 175, 66, 3, 176, 65, 1, 177, 64, 2, 178, 65, 3, 177, 65, 2, 177, 66, 2, 177, 67, 2, 177, 66, 2, 178, 65, 2, 179, 66, 2, 179, 66, 2, + 179, 66, 1, 180, 66, 2, 180, 68, 2, 179, 66, 2, 179, 68, 2, 179, 67, 2, 178, 66, 2, 179, 67, 2, 179, 67, 3, 180, 67, 3, 180, 67, 2, 179, 66, 2, 180, 68, 2, 181, 68, 3, 179, 66, 2, 180, 66, 2, 180, 67, 3, 180, 67, 3, 181, 68, 3, 178, 66, 3, 179, 68, 1, + 177, 65, 2, 177, 65, 2, 178, 64, 2, 180, 67, 3, 180, 67, 2, 181, 67, 3, 181, 67, 2, 183, 69, 2, 184, 69, 2, 183, 67, 2, 184, 69, 2, 183, 67, 2, 186, 69, 1, 186, 68, 2, 187, 69, 1, 189, 68, 3, 189, 70, 2, 192, 71, 2, 190, 69, 2, 191, 68, 2, 192, 70, 2, + 193, 72, 2, 194, 71, 1, 194, 71, 2, 194, 70, 2, 194, 70, 2, 193, 71, 2, 184, 66, 3, 172, 59, 7, 155, 53, 21, 136, 45, 34, 117, 39, 42, 100, 33, 46, 86, 29, 45, 69, 19, 61, 57, 16, 72, 49, 13, 75, 37, 16, 73, 24, 20, 72, 8, 15, 72, 3, 11, 69, 3, 9, 70, + 3, 7, 70, 2, 7, 72, 2, 11, 76, 4, 8, 77, 2, 12, 82, 2, 16, 90, 3, 20, 97, 2, 20, 101, 3, 19, 106, 3, 19, 111, 2, 18, 116, 3, 14, 117, 3, 11, 115, 2, 10, 115, 2, 7, 112, 3, 6, 108, 2, 6, 106, 1, 6, 103, 2, 6, 102, 1, 4, 102, 2, 6, 105, + 1, 5, 104, 1, 4, 103, 2, 3, 101, 2, 4, 97, 2, 2, 92, 2, 2, 88, 1, 2, 82, 2, 2, 76, 2, 1, 69, 3, 3, 65, 3, 2, 60, 4, 3, 55, 3, 1, 53, 4, 2, 53, 3, 2, 51, 2, 1, 50, 3, 2, 52, 2, 2, 56, 2, 2, 61, 3, 4, 63, 2, 7, 65, + 3, 8, 66, 4, 9, 67, 4, 10, 66, 4, 10, 65, 2, 7, 63, 3, 7, 61, 2, 5, 54, 4, 4, 50, 5, 3, 46, 8, 4, 45, 9, 3, 46, 9, 3, 47, 8, 4, 46, 6, 4, 47, 4, 3, 48, 3, 3, 48, 4, 4, 45, 3, 5, 39, 14, 8, 37, 39, 8, 33, 65, 12, 20, + 89, 18, 10, 106, 23, 4, 118, 25, 2, 121, 24, 2, 123, 22, 2, 124, 24, 2, 121, 23, 2, 120, 22, 2, 118, 22, 3, 116, 21, 2, 116, 20, 2, 112, 20, 1, 111, 18, 2, 110, 17, 2, 107, 16, 2, 108, 17, 2, 105, 15, 2, 105, 15, 2, 103, 14, 2, 103, 13, 2, 101, 13, 2, + 98, 11, 3, 97, 11, 2, 96, 11, 2, 109, 22, 3, 110, 23, 3, 110, 23, 2, 112, 24, 3, 116, 25, 2, 116, 23, 1, 118, 26, 2, 120, 25, 2, 119, 24, 2, 121, 27, 2, 123, 28, 2, 124, 27, 2, 125, 30, 2, 127, 29, 2, 127, 29, 2, 127, 30, 3, 129, 32, 3, 131, 31, 2, + 131, 32, 2, 133, 34, 3, 134, 34, 2, 135, 36, 2, 137, 37, 2, 139, 37, 2, 139, 37, 3, 140, 37, 2, 142, 38, 2, 143, 39, 2, 144, 40, 2, 146, 41, 2, 146, 41, 3, 148, 42, 2, 149, 42, 2, 151, 43, 1, 152, 44, 2, 153, 45, 2, 154, 45, 2, 155, 47, 2, 156, 48, 2, + 156, 48, 2, 158, 48, 2, 159, 49, 2, 159, 49, 2, 161, 51, 2, 161, 51, 2, 164, 53, 2, 162, 52, 2, 163, 52, 2, 164, 54, 2, 165, 54, 3, 165, 53, 2, 166, 55, 2, 168, 56, 2, 167, 56, 2, 168, 56, 2, 167, 56, 2, 168, 58, 2, 168, 58, 2, 168, 57, 2, 169, 58, 2, + 169, 58, 2, 172, 59, 2, 168, 58, 2, 170, 60, 3, 170, 59, 3, 171, 59, 2, 173, 61, 2, 174, 62, 3, 174, 60, 3, 173, 59, 3, 174, 62, 3, 175, 61, 3, 172, 61, 2, 175, 66, 5, 174, 63, 3, 174, 63, 2, 174, 64, 2, 173, 63, 3, 174, 65, 3, 176, 67, 3, 175, 65, 3, + 175, 63, 1, 177, 65, 3, 175, 65, 2, 176, 66, 3, 176, 64, 1, 175, 66, 2, 176, 66, 2, 177, 65, 2, 178, 67, 3, 177, 65, 2, 178, 65, 1, 177, 66, 2, 177, 66, 2, 177, 66, 2, 179, 68, 2, 179, 67, 2, 179, 67, 2, 180, 67, 3, 181, 69, 2, 179, 67, 3, 181, 70, 3, + 179, 67, 2, 180, 67, 3, 181, 69, 2, 180, 66, 3, 179, 67, 3, 180, 68, 2, 182, 68, 3, 182, 69, 2, 180, 66, 2, 180, 67, 2, 179, 66, 3, 181, 68, 2, 180, 67, 1, 181, 68, 4, 178, 67, 1, 177, 67, 3, 173, 64, 3, 171, 62, 2, 170, 62, 2, 172, 62, 2, 175, 64, 2, + 179, 67, 1, 180, 69, 2, 183, 71, 3, 184, 70, 3, 183, 70, 2, 185, 70, 2, 185, 70, 2, 186, 69, 2, 185, 68, 2, 187, 69, 2, 189, 70, 2, 189, 69, 2, 192, 70, 2, 192, 70, 1, 192, 70, 1, 192, 71, 2, 192, 70, 2, 193, 71, 3, 194, 71, 2, 195, 73, 2, 195, 71, 2, + 196, 71, 3, 193, 70, 1, 185, 67, 5, 172, 62, 11, 156, 55, 27, 135, 45, 40, 120, 41, 48, 105, 37, 51, 93, 32, 50, 82, 26, 63, 72, 21, 74, 67, 18, 81, 56, 16, 81, 39, 15, 79, 19, 14, 71, 7, 11, 70, 5, 12, 70, 4, 11, 70, 4, 10, 73, 3, 11, 77, 3, 9, 79, + 3, 11, 84, 2, 16, 90, 3, 20, 97, 3, 22, 103, 5, 19, 106, 4, 18, 110, 3, 16, 112, 3, 12, 115, 3, 11, 117, 2, 7, 113, 3, 6, 110, 4, 5, 106, 8, 7, 104, 9, 8, 101, 11, 8, 101, 12, 8, 99, 11, 7, 99, 9, 7, 100, 4, 5, 98, 4, 4, 98, 3, 3, 94, + 3, 2, 89, 6, 2, 82, 9, 3, 79, 13, 2, 71, 19, 3, 68, 27, 3, 65, 29, 2, 63, 30, 2, 57, 29, 2, 56, 24, 2, 54, 20, 3, 53, 12, 2, 53, 5, 3, 50, 5, 3, 53, 7, 4, 56, 10, 6, 63, 14, 8, 64, 20, 10, 67, 23, 15, 68, 18, 14, 65, 12, 14, 63, + 7, 9, 60, 6, 9, 59, 9, 8, 55, 16, 7, 54, 27, 5, 54, 37, 3, 55, 42, 2, 54, 42, 3, 54, 37, 2, 55, 25, 3, 53, 13, 5, 50, 7, 5, 48, 4, 4, 45, 4, 6, 42, 13, 8, 39, 37, 10, 38, 65, 16, 26, 83, 17, 15, 104, 23, 7, 117, 25, 2, 121, 26, 2, + 124, 26, 3, 123, 24, 1, 122, 24, 2, 120, 23, 2, 119, 22, 2, 117, 21, 1, 117, 21, 2, 115, 21, 2, 113, 19, 2, 110, 18, 2, 109, 18, 2, 108, 17, 2, 105, 15, 2, 104, 15, 1, 104, 14, 2, 101, 15, 2, 99, 14, 1, 98, 14, 1, 99, 11, 3, 97, 10, 2, 110, 23, 3, + 111, 24, 3, 113, 23, 1, 114, 24, 1, 117, 25, 2, 118, 25, 2, 119, 25, 2, 120, 25, 2, 121, 26, 2, 122, 27, 2, 123, 27, 3, 125, 28, 2, 126, 29, 2, 127, 30, 2, 128, 30, 2, 129, 31, 2, 130, 32, 2, 131, 31, 2, 134, 34, 2, 133, 31, 2, 135, 35, 2, 136, 35, 2, + 138, 36, 2, 140, 38, 3, 141, 39, 2, 142, 39, 2, 144, 39, 2, 143, 40, 1, 145, 42, 2, 147, 41, 2, 148, 42, 1, 149, 43, 2, 150, 44, 2, 151, 45, 2, 153, 45, 3, 155, 46, 2, 155, 46, 3, 155, 47, 2, 157, 49, 2, 157, 48, 2, 158, 50, 2, 159, 49, 1, 159, 49, 2, + 161, 51, 2, 163, 52, 2, 163, 53, 2, 164, 54, 2, 165, 54, 2, 165, 54, 2, 165, 54, 3, 165, 55, 2, 166, 55, 3, 167, 54, 2, 168, 57, 2, 168, 59, 3, 168, 57, 3, 169, 58, 2, 169, 58, 3, 169, 58, 3, 167, 56, 1, 171, 60, 3, 171, 59, 2, 170, 58, 3, 171, 60, 3, + 171, 61, 3, 172, 60, 3, 172, 60, 3, 173, 60, 3, 173, 61, 4, 173, 61, 3, 173, 62, 4, 173, 63, 2, 173, 63, 4, 174, 63, 4, 174, 64, 3, 174, 63, 3, 175, 65, 4, 173, 63, 3, 174, 65, 4, 173, 64, 2, 174, 63, 2, 175, 65, 3, 176, 65, 2, 176, 65, 3, 175, 64, 1, + 176, 67, 2, 177, 67, 2, 177, 67, 3, 177, 66, 3, 178, 65, 2, 177, 65, 3, 178, 65, 2, 177, 67, 2, 178, 66, 2, 180, 68, 2, 179, 66, 2, 179, 67, 2, 179, 67, 2, 180, 68, 2, 180, 69, 3, 179, 67, 2, 180, 69, 2, 180, 68, 2, 180, 69, 2, 181, 70, 3, 181, 69, 3, + 181, 68, 3, 181, 68, 3, 180, 68, 2, 182, 69, 3, 181, 69, 2, 181, 69, 3, 182, 69, 2, 180, 67, 1, 182, 69, 3, 180, 68, 1, 176, 65, 2, 168, 62, 1, 165, 60, 2, 164, 57, 2, 163, 58, 3, 163, 58, 3, 168, 60, 3, 173, 62, 2, 179, 67, 2, 182, 70, 1, 184, 69, 2, + 186, 70, 2, 185, 70, 2, 186, 69, 2, 186, 69, 2, 188, 69, 3, 188, 70, 2, 191, 72, 3, 190, 71, 2, 192, 71, 2, 192, 71, 2, 193, 70, 2, 193, 72, 2, 194, 73, 2, 194, 73, 2, 195, 72, 2, 196, 71, 3, 197, 73, 2, 196, 71, 2, 194, 72, 3, 185, 69, 6, 170, 59, 12, + 152, 54, 30, 133, 46, 41, 118, 40, 48, 107, 38, 52, 101, 37, 50, 92, 30, 57, 88, 27, 69, 85, 21, 75, 76, 19, 81, 60, 13, 81, 40, 9, 76, 33, 11, 75, 35, 12, 75, 33, 11, 75, 29, 16, 78, 20, 18, 78, 14, 17, 80, 9, 16, 85, 11, 20, 91, 13, 23, 95, 19, 26, 98, + 24, 27, 104, 22, 26, 108, 20, 24, 114, 15, 22, 117, 9, 16, 114, 12, 16, 112, 17, 13, 107, 26, 13, 105, 35, 11, 103, 42, 10, 102, 45, 7, 102, 47, 7, 102, 43, 8, 102, 39, 8, 100, 35, 11, 99, 27, 9, 94, 23, 6, 90, 23, 4, 85, 30, 4, 81, 40, 4, 79, 52, 2, 76, + 63, 2, 68, 69, 4, 61, 74, 8, 53, 74, 7, 48, 71, 7, 49, 62, 5, 49, 53, 3, 53, 39, 2, 56, 31, 3, 59, 23, 5, 61, 26, 6, 62, 35, 6, 68, 44, 7, 70, 51, 9, 72, 51, 10, 73, 48, 12, 72, 37, 10, 67, 29, 11, 65, 25, 9, 62, 30, 7, 59, 44, 7, 58, + 57, 8, 53, 68, 10, 45, 73, 10, 42, 72, 10, 44, 65, 6, 49, 50, 3, 53, 34, 3, 54, 17, 6, 50, 7, 7, 45, 4, 5, 41, 9, 8, 39, 30, 10, 40, 60, 17, 31, 78, 18, 22, 97, 22, 11, 113, 25, 5, 119, 26, 2, 123, 25, 2, 120, 24, 2, 119, 23, 3, 118, 23, 2, + 116, 23, 2, 115, 22, 1, 114, 21, 2, 112, 19, 2, 112, 21, 2, 109, 19, 3, 108, 19, 1, 106, 18, 3, 103, 15, 1, 101, 15, 2, 99, 13, 2, 96, 12, 1, 97, 14, 2, 97, 13, 2, 98, 12, 2, 99, 12, 2, 110, 24, 2, 110, 22, 2, 113, 24, 2, 115, 23, 2, 116, 24, 2, + 118, 24, 2, 120, 26, 2, 121, 26, 2, 124, 29, 2, 123, 28, 1, 124, 29, 2, 125, 29, 3, 125, 28, 2, 127, 32, 3, 130, 32, 2, 132, 34, 2, 131, 32, 2, 133, 33, 2, 133, 35, 2, 135, 35, 2, 137, 35, 2, 139, 37, 2, 140, 37, 3, 139, 35, 2, 141, 38, 1, 142, 39, 2, + 144, 40, 2, 144, 39, 1, 147, 42, 2, 148, 42, 2, 148, 43, 2, 150, 44, 2, 150, 44, 1, 151, 44, 2, 154, 45, 3, 155, 47, 3, 156, 47, 2, 157, 50, 2, 157, 48, 2, 157, 50, 2, 159, 51, 2, 159, 48, 1, 160, 51, 2, 161, 51, 1, 162, 52, 2, 163, 53, 2, 166, 54, 2, + 164, 52, 2, 166, 54, 3, 166, 54, 2, 166, 55, 3, 166, 54, 2, 167, 55, 2, 167, 56, 3, 169, 59, 2, 168, 58, 2, 167, 57, 2, 169, 58, 3, 170, 60, 2, 170, 59, 2, 170, 58, 2, 171, 60, 3, 170, 59, 2, 172, 62, 3, 171, 61, 3, 172, 62, 3, 171, 60, 3, 172, 62, 4, + 172, 61, 4, 172, 62, 3, 173, 61, 5, 173, 63, 4, 174, 63, 2, 173, 64, 3, 174, 65, 3, 173, 64, 3, 173, 64, 2, 174, 65, 3, 174, 63, 2, 174, 65, 2, 175, 65, 2, 176, 66, 2, 175, 66, 3, 176, 67, 2, 176, 66, 3, 178, 66, 2, 177, 69, 2, 177, 67, 2, 178, 68, 2, + 179, 66, 3, 178, 65, 2, 178, 67, 2, 179, 67, 2, 180, 68, 2, 179, 68, 2, 180, 68, 2, 180, 69, 2, 179, 68, 2, 181, 70, 2, 181, 70, 2, 180, 68, 3, 181, 70, 2, 180, 68, 1, 181, 69, 3, 182, 70, 3, 182, 70, 3, 181, 69, 2, 181, 70, 2, 180, 68, 2, 182, 69, 2, + 182, 69, 2, 182, 69, 3, 183, 69, 3, 180, 68, 2, 182, 69, 3, 178, 66, 4, 169, 62, 2, 164, 58, 3, 156, 54, 2, 152, 54, 3, 149, 51, 3, 154, 52, 4, 157, 55, 3, 165, 59, 2, 173, 64, 3, 182, 69, 3, 184, 72, 1, 187, 71, 2, 187, 71, 1, 188, 72, 1, 188, 70, 2, + 188, 71, 2, 189, 72, 2, 189, 71, 2, 191, 72, 1, 192, 71, 2, 194, 73, 2, 196, 74, 3, 196, 75, 2, 196, 74, 2, 195, 72, 2, 197, 73, 3, 197, 73, 2, 197, 72, 3, 197, 73, 2, 194, 72, 3, 185, 69, 6, 168, 60, 18, 150, 54, 35, 131, 46, 43, 118, 41, 50, 107, 40, 52, + 103, 38, 50, 97, 34, 52, 97, 32, 58, 97, 30, 60, 90, 24, 65, 81, 19, 72, 71, 13, 74, 68, 13, 76, 72, 16, 80, 73, 16, 79, 69, 14, 81, 56, 14, 84, 44, 17, 84, 34, 20, 86, 37, 24, 89, 40, 26, 92, 45, 29, 97, 47, 28, 101, 45, 26, 104, 41, 28, 108, 37, 27, 111, + 34, 24, 108, 36, 23, 108, 45, 18, 106, 57, 7, 106, 74, 5, 101, 90, 10, 98, 99, 14, 92, 100, 12, 90, 96, 10, 92, 89, 9, 95, 78, 4, 94, 72, 3, 91, 71, 3, 89, 72, 4, 86, 73, 5, 78, 84, 7, 71, 93, 13, 58, 99, 17, 46, 104, 22, 39, 105, 21, 35, 103, 21, 33, + 97, 19, 31, 90, 18, 32, 82, 15, 39, 69, 11, 52, 56, 8, 60, 45, 6, 61, 48, 8, 65, 57, 10, 67, 71, 18, 69, 77, 22, 66, 76, 21, 66, 70, 19, 68, 61, 14, 66, 52, 10, 64, 49, 9, 62, 53, 9, 59, 62, 12, 52, 78, 19, 42, 88, 20, 35, 92, 20, 33, 91, 20, 35, + 84, 17, 38, 68, 10, 44, 50, 4, 54, 30, 4, 53, 11, 7, 45, 5, 9, 43, 7, 8, 41, 26, 14, 45, 54, 15, 41, 72, 18, 26, 90, 21, 22, 108, 25, 13, 116, 28, 7, 118, 27, 5, 118, 28, 4, 117, 27, 4, 116, 26, 5, 114, 26, 6, 112, 25, 6, 109, 24, 5, 108, 22, 6, + 106, 20, 4, 106, 19, 3, 105, 21, 3, 103, 19, 3, 99, 17, 2, 95, 14, 2, 93, 11, 3, 93, 13, 2, 92, 11, 1, 94, 12, 2, 93, 11, 2, 96, 12, 2, 111, 23, 2, 112, 23, 2, 113, 24, 2, 116, 25, 2, 117, 25, 2, 119, 26, 2, 119, 26, 2, 121, 27, 3, 122, 29, 2, + 123, 28, 2, 125, 31, 1, 126, 29, 3, 127, 31, 2, 128, 31, 2, 130, 31, 2, 131, 33, 2, 132, 33, 2, 135, 33, 2, 134, 34, 1, 135, 35, 2, 138, 36, 3, 138, 36, 2, 139, 39, 2, 140, 38, 3, 141, 40, 2, 143, 39, 2, 144, 40, 2, 146, 41, 3, 146, 41, 2, 149, 43, 2, + 149, 44, 2, 150, 45, 2, 151, 46, 3, 153, 46, 3, 153, 44, 2, 156, 48, 2, 155, 46, 2, 157, 49, 2, 158, 50, 2, 160, 50, 2, 159, 51, 3, 161, 51, 2, 162, 52, 2, 162, 52, 2, 162, 53, 2, 164, 54, 3, 166, 56, 3, 166, 54, 2, 168, 55, 3, 168, 56, 3, 166, 56, 2, + 169, 56, 3, 168, 56, 2, 168, 56, 1, 168, 56, 3, 168, 56, 2, 169, 59, 3, 170, 60, 3, 168, 58, 2, 169, 59, 2, 168, 58, 2, 171, 60, 3, 168, 60, 3, 171, 61, 4, 172, 61, 5, 171, 62, 5, 171, 62, 4, 172, 62, 4, 172, 63, 5, 172, 63, 4, 173, 63, 5, 173, 63, 5, + 174, 63, 4, 174, 66, 5, 173, 64, 3, 175, 65, 3, 175, 65, 3, 174, 65, 4, 175, 65, 3, 175, 66, 3, 175, 68, 2, 176, 66, 3, 178, 68, 2, 177, 66, 3, 178, 67, 3, 178, 68, 3, 177, 67, 1, 177, 67, 2, 177, 66, 3, 180, 69, 2, 181, 68, 2, 179, 67, 2, 180, 68, 2, + 180, 69, 2, 179, 68, 2, 180, 68, 2, 180, 68, 2, 180, 69, 2, 181, 70, 2, 181, 70, 2, 181, 69, 3, 182, 71, 2, 181, 68, 2, 182, 70, 2, 183, 71, 2, 182, 70, 3, 183, 71, 4, 183, 71, 4, 183, 71, 3, 181, 69, 2, 182, 69, 2, 184, 71, 3, 183, 70, 2, 182, 70, 2, + 182, 70, 2, 175, 65, 3, 164, 58, 3, 153, 52, 3, 145, 48, 4, 136, 44, 5, 133, 43, 5, 136, 44, 6, 146, 49, 6, 157, 56, 5, 168, 61, 4, 177, 67, 3, 184, 70, 2, 186, 71, 2, 186, 72, 2, 189, 72, 2, 191, 72, 2, 188, 71, 3, 188, 70, 2, 190, 71, 3, 189, 70, 2, + 193, 72, 3, 193, 72, 2, 193, 72, 2, 195, 75, 3, 196, 73, 2, 197, 74, 3, 198, 74, 3, 199, 74, 3, 197, 74, 2, 198, 75, 2, 193, 72, 5, 183, 67, 10, 167, 62, 28, 147, 53, 40, 129, 47, 48, 116, 42, 53, 109, 41, 53, 104, 39, 50, 100, 34, 46, 103, 34, 52, 103, 31, 49, + 102, 34, 56, 99, 32, 60, 94, 27, 61, 94, 27, 61, 101, 30, 63, 103, 32, 65, 99, 30, 71, 91, 25, 83, 76, 18, 88, 66, 17, 90, 65, 20, 92, 65, 21, 94, 68, 22, 94, 72, 22, 99, 73, 21, 102, 70, 19, 103, 64, 19, 103, 64, 17, 105, 65, 15, 104, 76, 13, 104, 89, 12, 96, + 107, 22, 86, 120, 33, 71, 126, 37, 59, 130, 36, 57, 130, 36, 59, 125, 32, 57, 119, 30, 60, 115, 31, 63, 107, 26, 62, 105, 28, 61, 104, 27, 55, 105, 25, 45, 111, 24, 40, 112, 24, 38, 113, 25, 39, 113, 26, 38, 111, 25, 36, 107, 26, 39, 102, 24, 37, 94, 24, 35, 83, 21, 42, + 70, 17, 54, 61, 15, 64, 61, 15, 64, 69, 20, 64, 78, 24, 58, 89, 28, 55, 91, 28, 56, 83, 26, 55, 73, 19, 55, 64, 15, 56, 63, 16, 56, 64, 16, 51, 73, 18, 44, 86, 22, 37, 95, 23, 35, 97, 23, 35, 98, 24, 35, 89, 19, 32, 76, 16, 37, 60, 8, 48, 40, 5, 54, + 20, 9, 49, 6, 10, 45, 6, 10, 44, 16, 14, 49, 44, 16, 52, 70, 21, 42, 85, 23, 33, 96, 23, 26, 107, 27, 21, 109, 26, 17, 110, 26, 16, 109, 28, 18, 106, 25, 18, 107, 26, 20, 106, 25, 20, 102, 22, 19, 99, 21, 16, 98, 22, 15, 95, 19, 10, 92, 18, 7, 92, 19, 9, + 89, 16, 9, 85, 13, 7, 84, 12, 5, 83, 11, 3, 84, 10, 2, 88, 9, 2, 93, 10, 2, 95, 12, 2, 112, 23, 1, 114, 24, 3, 115, 27, 2, 117, 26, 1, 118, 26, 2, 119, 25, 1, 121, 27, 2, 121, 28, 2, 121, 27, 2, 124, 29, 1, 126, 30, 2, 125, 29, 3, 128, 29, 2, + 129, 31, 2, 130, 32, 2, 131, 32, 1, 132, 33, 2, 135, 36, 2, 135, 34, 2, 137, 35, 2, 140, 38, 2, 138, 37, 2, 140, 39, 2, 140, 38, 2, 142, 39, 2, 143, 40, 2, 145, 41, 2, 146, 41, 1, 147, 43, 3, 148, 43, 2, 149, 43, 2, 150, 45, 2, 152, 46, 2, 156, 49, 2, + 154, 46, 2, 157, 48, 3, 157, 48, 2, 158, 48, 2, 159, 50, 2, 160, 50, 2, 160, 50, 2, 160, 50, 2, 161, 52, 2, 163, 54, 2, 164, 54, 2, 165, 54, 3, 163, 52, 2, 167, 55, 2, 168, 54, 2, 168, 56, 2, 169, 58, 2, 167, 56, 2, 168, 58, 1, 169, 58, 2, 169, 57, 2, + 168, 59, 1, 170, 59, 3, 168, 59, 2, 170, 60, 2, 169, 61, 4, 171, 61, 4, 169, 60, 4, 169, 61, 3, 169, 61, 4, 171, 62, 5, 172, 62, 5, 172, 63, 4, 171, 62, 5, 171, 63, 6, 172, 64, 6, 174, 66, 7, 173, 65, 5, 174, 65, 5, 174, 66, 5, 175, 64, 5, 175, 64, 4, + 174, 65, 5, 175, 65, 4, 174, 65, 3, 176, 67, 4, 175, 68, 2, 176, 66, 2, 177, 67, 3, 176, 67, 4, 178, 67, 3, 177, 67, 2, 180, 70, 3, 178, 69, 2, 179, 69, 3, 179, 68, 4, 179, 68, 2, 180, 68, 3, 180, 68, 2, 181, 69, 2, 181, 70, 2, 181, 70, 2, 181, 70, 2, + 182, 71, 3, 182, 71, 3, 181, 70, 2, 182, 70, 2, 182, 71, 3, 183, 71, 2, 183, 71, 3, 182, 71, 2, 182, 70, 3, 182, 68, 2, 182, 71, 1, 182, 69, 2, 184, 72, 3, 183, 71, 2, 183, 70, 2, 184, 72, 2, 182, 71, 2, 178, 68, 2, 168, 61, 4, 153, 49, 3, 138, 45, 3, + 126, 37, 8, 120, 38, 10, 116, 36, 13, 121, 39, 19, 130, 43, 19, 145, 50, 14, 160, 57, 11, 174, 65, 8, 180, 68, 3, 186, 73, 5, 186, 72, 3, 189, 73, 3, 187, 70, 1, 186, 71, 2, 185, 69, 2, 187, 70, 3, 187, 70, 2, 190, 73, 3, 193, 74, 2, 194, 74, 3, 195, 75, 3, + 195, 72, 2, 195, 75, 2, 196, 74, 2, 197, 74, 2, 198, 75, 4, 194, 74, 4, 190, 73, 14, 178, 66, 22, 161, 62, 40, 142, 54, 50, 126, 46, 55, 114, 45, 58, 108, 44, 56, 102, 40, 55, 100, 36, 51, 104, 38, 54, 108, 39, 52, 109, 39, 53, 106, 38, 54, 103, 34, 53, 108, 37, 55, + 114, 41, 57, 117, 43, 58, 113, 39, 62, 108, 38, 70, 98, 33, 80, 88, 28, 86, 85, 28, 85, 88, 30, 89, 89, 30, 87, 92, 31, 90, 91, 30, 91, 90, 29, 92, 88, 26, 91, 86, 25, 94, 87, 22, 93, 94, 24, 91, 109, 34, 80, 120, 40, 65, 126, 40, 57, 132, 39, 56, 132, 39, 56, + 132, 39, 55, 132, 36, 53, 123, 32, 49, 122, 34, 50, 116, 35, 48, 115, 33, 47, 112, 30, 44, 111, 30, 44, 108, 27, 41, 114, 28, 39, 120, 29, 34, 120, 30, 32, 119, 31, 35, 113, 31, 36, 106, 29, 40, 100, 28, 40, 91, 28, 45, 78, 25, 55, 67, 22, 65, 63, 20, 66, 71, 23, 64, + 81, 28, 59, 90, 31, 52, 92, 30, 48, 85, 26, 47, 76, 22, 47, 70, 22, 51, 66, 21, 52, 67, 20, 49, 75, 22, 45, 85, 24, 38, 94, 24, 37, 99, 26, 40, 98, 26, 38, 90, 23, 35, 78, 19, 37, 60, 11, 45, 39, 7, 52, 19, 10, 49, 5, 12, 49, 4, 11, 51, 10, 16, 56, + 30, 18, 57, 53, 15, 56, 75, 23, 46, 88, 24, 38, 95, 26, 37, 97, 27, 36, 97, 26, 35, 95, 26, 35, 93, 25, 36, 92, 26, 36, 91, 24, 36, 92, 26, 37, 89, 23, 34, 86, 22, 32, 83, 19, 30, 81, 18, 28, 80, 19, 28, 76, 16, 23, 70, 13, 19, 69, 9, 14, 71, 11, 11, + 76, 10, 6, 81, 8, 2, 89, 9, 2, 93, 11, 2, 110, 23, 2, 113, 25, 1, 115, 25, 1, 115, 25, 2, 118, 26, 2, 120, 27, 2, 121, 27, 2, 121, 26, 2, 122, 27, 2, 124, 27, 2, 126, 29, 2, 126, 29, 2, 128, 31, 2, 130, 32, 3, 131, 33, 2, 132, 33, 2, 133, 34, 2, + 136, 36, 2, 135, 34, 2, 138, 35, 1, 139, 36, 3, 139, 36, 2, 140, 38, 2, 141, 37, 3, 143, 39, 2, 145, 40, 3, 146, 41, 3, 147, 42, 1, 148, 42, 2, 148, 41, 2, 150, 44, 2, 151, 43, 2, 152, 46, 2, 153, 45, 3, 155, 47, 3, 155, 46, 2, 157, 48, 2, 159, 48, 3, + 159, 49, 2, 160, 50, 1, 161, 50, 2, 162, 52, 3, 161, 52, 1, 163, 55, 2, 165, 55, 2, 164, 56, 2, 166, 57, 3, 167, 56, 2, 166, 55, 2, 167, 56, 2, 168, 58, 2, 168, 58, 2, 168, 57, 2, 168, 58, 2, 168, 57, 2, 168, 58, 2, 168, 59, 2, 169, 59, 2, 170, 62, 4, + 170, 61, 4, 170, 62, 4, 168, 60, 3, 171, 62, 5, 169, 61, 4, 172, 64, 7, 171, 64, 8, 172, 65, 7, 171, 62, 6, 171, 63, 6, 172, 65, 6, 171, 64, 5, 173, 66, 7, 173, 66, 6, 174, 66, 7, 173, 64, 5, 174, 66, 6, 174, 67, 5, 174, 67, 5, 174, 66, 3, 175, 66, 4, + 177, 69, 3, 176, 68, 4, 176, 67, 3, 177, 67, 4, 177, 67, 3, 178, 68, 2, 179, 69, 3, 179, 68, 2, 179, 68, 3, 180, 69, 2, 180, 69, 3, 181, 69, 3, 180, 69, 2, 181, 69, 3, 183, 72, 4, 181, 71, 3, 182, 71, 3, 181, 70, 2, 181, 70, 2, 181, 70, 2, 183, 71, 3, + 183, 71, 3, 183, 71, 2, 184, 72, 3, 184, 72, 2, 183, 71, 3, 182, 70, 1, 185, 73, 4, 183, 72, 2, 182, 70, 2, 182, 69, 2, 183, 70, 3, 183, 72, 3, 182, 72, 3, 175, 65, 2, 163, 57, 3, 147, 49, 5, 126, 39, 8, 107, 32, 13, 97, 29, 19, 94, 30, 24, 100, 33, 31, + 115, 38, 33, 136, 50, 33, 151, 56, 28, 164, 62, 16, 174, 67, 9, 184, 73, 5, 185, 71, 3, 185, 72, 3, 183, 70, 2, 182, 68, 3, 181, 69, 5, 179, 66, 7, 179, 68, 9, 181, 69, 8, 183, 70, 7, 187, 73, 8, 191, 76, 7, 190, 73, 7, 190, 72, 9, 193, 75, 14, 192, 74, 14, + 190, 73, 16, 189, 76, 28, 184, 74, 36, 175, 72, 50, 158, 65, 58, 138, 56, 63, 124, 54, 68, 117, 54, 72, 108, 50, 73, 99, 43, 69, 97, 40, 65, 102, 42, 64, 105, 41, 59, 108, 43, 60, 107, 41, 60, 109, 42, 60, 113, 43, 60, 122, 48, 65, 125, 47, 63, 120, 45, 63, 115, 44, 71, + 104, 38, 72, 96, 35, 78, 90, 32, 76, 93, 34, 77, 95, 35, 76, 96, 35, 74, 98, 36, 76, 97, 36, 80, 94, 33, 84, 89, 30, 89, 90, 31, 90, 97, 34, 83, 107, 39, 70, 117, 42, 60, 123, 43, 57, 126, 42, 57, 128, 42, 57, 127, 40, 57, 124, 38, 54, 121, 37, 52, 117, 34, 49, + 110, 30, 44, 108, 30, 44, 106, 30, 44, 106, 31, 43, 110, 29, 38, 115, 30, 33, 119, 33, 33, 121, 35, 33, 117, 33, 36, 112, 35, 43, 104, 33, 46, 97, 32, 45, 88, 29, 55, 72, 24, 66, 59, 21, 70, 55, 20, 72, 63, 22, 71, 73, 25, 66, 84, 30, 57, 85, 29, 52, 81, 28, 52, + 72, 23, 54, 63, 21, 57, 59, 19, 59, 59, 17, 56, 66, 19, 53, 78, 25, 49, 91, 29, 45, 96, 30, 42, 92, 28, 40, 85, 26, 42, 71, 20, 45, 51, 9, 51, 31, 8, 53, 11, 11, 50, 3, 9, 54, 2, 8, 56, 4, 13, 60, 12, 18, 60, 33, 18, 62, 55, 16, 63, 71, 21, 54, + 80, 26, 44, 86, 27, 42, 87, 26, 42, 86, 26, 43, 84, 25, 44, 81, 25, 46, 77, 23, 45, 77, 21, 46, 74, 19, 44, 72, 19, 40, 70, 18, 38, 70, 18, 36, 66, 16, 34, 61, 14, 30, 57, 11, 25, 55, 9, 20, 57, 8, 17, 65, 8, 12, 75, 8, 5, 84, 8, 1, 90, 11, 1, + 112, 23, 2, 114, 26, 2, 115, 25, 2, 119, 27, 2, 120, 26, 2, 119, 25, 1, 122, 27, 2, 123, 29, 2, 123, 29, 3, 125, 31, 1, 126, 29, 3, 127, 31, 2, 128, 32, 2, 131, 33, 3, 131, 33, 2, 132, 31, 2, 133, 33, 1, 136, 36, 2, 135, 35, 2, 138, 36, 2, 139, 37, 2, + 139, 37, 2, 140, 37, 3, 141, 39, 2, 144, 40, 2, 147, 40, 2, 146, 40, 2, 149, 43, 3, 149, 43, 2, 149, 42, 1, 150, 44, 2, 152, 44, 2, 154, 46, 3, 155, 47, 2, 157, 48, 2, 156, 46, 3, 157, 48, 2, 160, 49, 1, 160, 50, 3, 161, 51, 3, 161, 52, 2, 162, 53, 2, + 162, 53, 2, 163, 53, 2, 165, 54, 3, 165, 55, 3, 167, 56, 2, 165, 55, 2, 166, 57, 2, 169, 58, 2, 168, 59, 2, 169, 58, 3, 169, 58, 2, 169, 60, 2, 170, 60, 3, 168, 59, 2, 168, 59, 2, 169, 61, 3, 169, 60, 3, 168, 59, 3, 170, 61, 4, 171, 62, 5, 170, 63, 6, + 170, 63, 7, 170, 64, 9, 171, 64, 8, 173, 65, 8, 172, 64, 9, 173, 67, 10, 173, 67, 8, 174, 67, 9, 175, 67, 9, 172, 64, 7, 173, 65, 9, 174, 66, 9, 175, 66, 9, 174, 67, 7, 175, 68, 6, 176, 69, 7, 175, 69, 5, 175, 68, 5, 175, 68, 5, 177, 69, 5, 177, 68, 3, + 177, 70, 4, 177, 69, 3, 177, 70, 4, 177, 68, 2, 178, 69, 2, 179, 69, 3, 181, 70, 3, 182, 70, 3, 182, 70, 3, 180, 69, 2, 182, 71, 4, 182, 71, 3, 182, 71, 3, 181, 69, 2, 183, 72, 3, 182, 71, 4, 183, 71, 3, 183, 71, 2, 185, 73, 4, 183, 71, 2, 184, 71, 3, + 183, 71, 2, 185, 72, 2, 184, 72, 2, 184, 71, 2, 184, 72, 2, 183, 72, 2, 185, 74, 2, 184, 73, 2, 179, 69, 3, 170, 63, 2, 157, 54, 2, 137, 45, 7, 114, 35, 15, 92, 27, 22, 73, 23, 29, 69, 23, 33, 77, 30, 40, 99, 40, 49, 123, 50, 54, 144, 57, 49, 159, 62, 39, + 172, 68, 27, 179, 70, 14, 182, 71, 6, 182, 71, 4, 179, 69, 9, 177, 68, 15, 173, 66, 20, 171, 66, 26, 172, 67, 32, 171, 67, 32, 175, 72, 36, 179, 74, 38, 182, 74, 38, 182, 75, 42, 184, 77, 46, 185, 78, 50, 185, 79, 52, 184, 80, 60, 180, 81, 65, 175, 80, 71, 164, 76, 78, + 149, 71, 84, 137, 70, 89, 123, 64, 89, 113, 62, 98, 103, 56, 105, 94, 47, 98, 90, 42, 92, 91, 40, 83, 96, 42, 77, 100, 43, 74, 100, 43, 74, 103, 42, 73, 112, 47, 73, 123, 53, 77, 126, 55, 76, 122, 51, 74, 114, 47, 75, 103, 42, 80, 91, 37, 81, 86, 36, 81, 87, 35, 79, + 90, 35, 79, 95, 36, 77, 97, 37, 79, 94, 36, 83, 88, 34, 87, 83, 33, 90, 80, 30, 88, 87, 31, 84, 100, 39, 75, 111, 44, 65, 115, 46, 59, 119, 45, 58, 121, 42, 56, 122, 41, 55, 117, 37, 51, 113, 35, 48, 107, 34, 46, 102, 32, 44, 101, 30, 42, 98, 28, 40, 96, 27, 40, + 101, 29, 39, 103, 28, 35, 109, 32, 34, 108, 32, 38, 105, 32, 42, 102, 34, 45, 99, 35, 48, 90, 31, 58, 72, 23, 69, 56, 18, 74, 40, 20, 73, 36, 20, 70, 41, 17, 70, 52, 16, 71, 67, 21, 69, 70, 23, 64, 65, 19, 62, 57, 17, 62, 46, 16, 63, 39, 17, 60, 40, 16, 60, + 49, 16, 62, 62, 20, 63, 74, 24, 61, 79, 26, 59, 76, 23, 56, 66, 19, 54, 53, 12, 55, 32, 8, 53, 16, 11, 51, 4, 11, 55, 3, 10, 58, 2, 10, 61, 2, 12, 64, 4, 17, 67, 12, 19, 65, 28, 18, 64, 46, 16, 66, 55, 15, 63, 61, 17, 63, 63, 18, 60, 62, 18, 62, + 59, 18, 63, 56, 15, 64, 52, 13, 64, 51, 13, 63, 48, 12, 61, 48, 12, 59, 47, 12, 55, 45, 9, 53, 44, 8, 50, 41, 9, 46, 37, 7, 39, 34, 6, 30, 44, 8, 23, 54, 7, 16, 68, 7, 9, 79, 8, 2, 89, 11, 2, 114, 25, 2, 115, 25, 1, 116, 25, 2, 118, 25, 2, + 119, 26, 3, 119, 25, 2, 121, 28, 2, 123, 29, 2, 123, 29, 2, 124, 29, 1, 125, 31, 2, 129, 32, 3, 130, 31, 2, 131, 32, 2, 132, 34, 2, 134, 35, 3, 133, 34, 2, 135, 34, 3, 137, 37, 2, 137, 37, 2, 140, 38, 3, 141, 39, 3, 141, 39, 2, 143, 39, 1, 144, 41, 2, + 147, 41, 1, 146, 41, 2, 148, 42, 2, 150, 43, 2, 150, 44, 3, 151, 44, 2, 152, 45, 2, 155, 48, 2, 156, 49, 2, 157, 47, 2, 157, 48, 2, 159, 49, 2, 159, 49, 2, 160, 51, 3, 160, 51, 2, 161, 53, 2, 161, 52, 2, 164, 54, 3, 164, 55, 3, 164, 55, 3, 165, 55, 3, + 169, 56, 3, 167, 56, 2, 168, 57, 2, 169, 57, 2, 168, 58, 1, 169, 59, 2, 169, 60, 2, 168, 60, 2, 168, 59, 3, 169, 60, 3, 169, 60, 3, 171, 62, 5, 169, 61, 4, 169, 61, 3, 169, 62, 5, 169, 61, 5, 169, 63, 6, 169, 62, 5, 170, 65, 9, 171, 64, 10, 172, 65, 9, + 174, 67, 12, 172, 65, 10, 173, 65, 10, 174, 67, 12, 174, 67, 12, 174, 67, 13, 175, 67, 13, 175, 67, 11, 175, 67, 11, 175, 68, 11, 175, 69, 7, 175, 69, 6, 176, 66, 4, 176, 69, 6, 176, 67, 6, 179, 69, 6, 179, 70, 6, 177, 69, 5, 179, 70, 5, 179, 70, 4, 179, 71, 4, + 181, 71, 4, 181, 71, 3, 181, 70, 1, 182, 71, 3, 184, 72, 5, 183, 72, 3, 181, 69, 2, 183, 72, 4, 184, 73, 4, 184, 71, 4, 182, 70, 3, 183, 70, 3, 184, 72, 2, 185, 73, 3, 183, 71, 2, 185, 73, 2, 184, 71, 1, 185, 72, 3, 185, 73, 3, 187, 73, 3, 185, 72, 2, + 185, 72, 2, 185, 73, 2, 184, 73, 2, 183, 72, 3, 176, 67, 2, 165, 61, 3, 151, 51, 4, 128, 39, 7, 103, 30, 20, 77, 25, 31, 58, 19, 34, 49, 20, 44, 63, 31, 61, 91, 42, 65, 113, 51, 66, 133, 60, 68, 149, 63, 58, 164, 67, 46, 175, 70, 34, 180, 73, 23, 179, 71, 18, + 174, 68, 22, 168, 67, 30, 162, 65, 43, 163, 68, 53, 158, 66, 56, 160, 70, 66, 162, 72, 68, 163, 75, 72, 168, 79, 76, 170, 79, 77, 170, 81, 78, 171, 81, 79, 169, 81, 80, 167, 81, 84, 167, 83, 89, 160, 82, 93, 152, 80, 95, 142, 77, 100, 131, 72, 110, 116, 68, 119, 100, 63, 118, + 86, 59, 112, 74, 50, 106, 74, 47, 103, 78, 44, 100, 78, 40, 96, 78, 37, 94, 81, 36, 93, 84, 34, 89, 96, 41, 92, 109, 47, 93, 114, 50, 90, 110, 49, 89, 100, 44, 92, 87, 36, 90, 73, 33, 88, 66, 31, 86, 66, 32, 85, 70, 30, 83, 77, 29, 86, 81, 32, 88, 76, 30, 88, + 67, 27, 90, 57, 25, 88, 56, 29, 89, 62, 25, 87, 76, 28, 84, 90, 34, 77, 100, 38, 69, 105, 41, 61, 106, 40, 56, 107, 38, 54, 103, 35, 50, 98, 33, 47, 94, 30, 45, 88, 27, 43, 86, 25, 41, 83, 25, 39, 86, 27, 40, 86, 26, 39, 85, 25, 37, 86, 25, 38, 88, 28, 42, + 86, 29, 46, 84, 28, 55, 75, 25, 65, 62, 20, 74, 44, 16, 76, 28, 19, 74, 14, 19, 71, 12, 19, 73, 18, 21, 72, 26, 19, 72, 36, 17, 71, 42, 16, 70, 40, 17, 68, 32, 18, 64, 22, 18, 59, 17, 18, 58, 18, 19, 58, 25, 18, 61, 36, 18, 65, 46, 20, 69, 47, 17, 68, + 43, 16, 66, 37, 14, 63, 24, 14, 59, 12, 12, 55, 4, 9, 52, 3, 9, 57, 2, 7, 59, 3, 9, 65, 3, 12, 69, 3, 15, 71, 2, 17, 70, 8, 18, 65, 18, 20, 64, 27, 19, 64, 30, 16, 64, 29, 15, 62, 28, 15, 62, 27, 17, 62, 27, 16, 63, 23, 15, 61, 21, 15, 58, + 18, 13, 56, 16, 14, 55, 16, 12, 52, 16, 11, 49, 17, 12, 47, 15, 10, 43, 14, 9, 40, 18, 6, 34, 30, 5, 28, 47, 7, 20, 62, 8, 12, 78, 10, 4, 86, 11, 3, 112, 23, 2, 115, 25, 1, 117, 26, 1, 118, 25, 1, 119, 25, 2, 121, 27, 2, 122, 29, 2, 122, 27, 2, + 125, 31, 1, 125, 32, 2, 127, 33, 2, 128, 31, 1, 130, 33, 2, 131, 33, 3, 132, 34, 2, 133, 36, 2, 135, 37, 2, 136, 37, 2, 137, 37, 2, 138, 39, 2, 138, 37, 2, 139, 39, 2, 142, 40, 2, 145, 42, 2, 144, 40, 2, 147, 41, 2, 147, 41, 2, 148, 43, 1, 150, 42, 1, + 152, 44, 3, 153, 45, 3, 153, 46, 2, 153, 46, 3, 154, 46, 2, 157, 47, 3, 157, 48, 3, 159, 49, 2, 160, 50, 2, 161, 52, 3, 162, 53, 3, 163, 54, 3, 164, 54, 2, 163, 54, 2, 165, 55, 3, 166, 56, 2, 166, 56, 3, 167, 56, 2, 167, 57, 2, 167, 57, 2, 169, 58, 2, + 169, 57, 3, 169, 60, 2, 169, 61, 3, 168, 60, 3, 169, 61, 4, 168, 59, 3, 169, 61, 3, 169, 62, 4, 170, 62, 6, 170, 62, 6, 171, 63, 8, 170, 63, 7, 171, 65, 11, 171, 65, 12, 170, 65, 12, 172, 66, 15, 173, 66, 14, 172, 67, 14, 174, 66, 13, 173, 67, 14, 175, 68, 15, + 174, 67, 16, 174, 70, 18, 175, 69, 19, 174, 68, 15, 176, 69, 15, 176, 68, 12, 176, 69, 9, 177, 70, 9, 176, 68, 10, 176, 68, 7, 177, 70, 8, 178, 69, 7, 179, 71, 8, 177, 70, 5, 178, 70, 4, 181, 71, 5, 179, 69, 3, 180, 71, 5, 181, 71, 4, 183, 73, 6, 182, 71, 5, + 183, 72, 4, 182, 70, 3, 183, 72, 4, 183, 72, 4, 183, 72, 4, 185, 73, 5, 183, 70, 4, 186, 74, 6, 185, 72, 3, 184, 72, 2, 185, 74, 3, 185, 73, 3, 188, 74, 4, 187, 74, 2, 186, 73, 2, 184, 72, 2, 187, 74, 3, 184, 73, 2, 185, 74, 2, 185, 75, 3, 183, 73, 3, + 174, 67, 3, 161, 59, 3, 142, 46, 4, 121, 38, 13, 91, 28, 23, 65, 22, 32, 40, 15, 43, 24, 21, 52, 37, 34, 67, 71, 42, 82, 107, 56, 86, 127, 66, 83, 142, 69, 79, 157, 70, 66, 168, 71, 52, 174, 71, 41, 172, 70, 34, 168, 67, 37, 160, 65, 48, 153, 62, 57, 146, 62, 66, + 142, 64, 73, 138, 65, 78, 142, 68, 84, 145, 73, 89, 150, 76, 92, 150, 77, 93, 152, 79, 95, 152, 79, 96, 153, 82, 98, 152, 82, 101, 152, 85, 104, 148, 84, 107, 141, 79, 113, 128, 75, 121, 112, 70, 126, 92, 68, 123, 79, 68, 119, 69, 65, 115, 58, 57, 109, 55, 53, 104, 52, 47, 99, + 52, 46, 97, 51, 41, 95, 48, 37, 91, 52, 36, 93, 65, 37, 97, 78, 38, 103, 86, 41, 105, 85, 39, 102, 77, 37, 99, 61, 37, 93, 47, 35, 87, 38, 35, 81, 36, 32, 79, 44, 32, 82, 49, 28, 84, 52, 29, 88, 50, 28, 89, 39, 28, 87, 31, 28, 85, 27, 27, 82, 33, 27, 84, + 41, 24, 83, 53, 25, 86, 60, 23, 84, 68, 25, 80, 72, 27, 76, 72, 25, 70, 74, 24, 66, 68, 19, 62, 62, 16, 61, 57, 14, 59, 56, 14, 57, 55, 14, 57, 55, 13, 56, 57, 16, 54, 58, 16, 54, 57, 16, 56, 58, 19, 61, 48, 15, 64, 45, 18, 71, 34, 19, 72, 24, 22, 76, + 17, 23, 81, 7, 20, 82, 3, 15, 79, 2, 14, 81, 4, 16, 81, 4, 16, 77, 8, 18, 73, 12, 19, 70, 10, 17, 66, 8, 16, 64, 4, 14, 61, 3, 13, 61, 3, 16, 63, 5, 15, 63, 9, 18, 65, 12, 19, 66, 12, 20, 68, 10, 17, 66, 8, 14, 63, 4, 10, 59, 3, 8, 57, + 2, 7, 55, 2, 6, 58, 3, 8, 65, 3, 8, 68, 2, 10, 70, 3, 13, 72, 2, 13, 72, 2, 15, 70, 2, 15, 68, 4, 14, 64, 5, 13, 62, 6, 14, 62, 5, 14, 61, 5, 13, 61, 5, 13, 62, 4, 13, 61, 4, 10, 58, 4, 9, 56, 4, 10, 56, 3, 9, 53, 3, 8, 49, + 4, 8, 47, 3, 7, 44, 3, 6, 40, 6, 5, 35, 18, 6, 31, 39, 5, 26, 57, 6, 18, 71, 8, 11, 80, 11, 6, 114, 24, 1, 116, 25, 2, 118, 26, 2, 119, 26, 2, 119, 27, 1, 121, 27, 2, 122, 29, 2, 121, 28, 2, 125, 30, 2, 126, 31, 3, 126, 30, 2, 130, 31, 1, + 129, 33, 1, 130, 33, 2, 133, 36, 3, 133, 37, 2, 135, 38, 3, 136, 37, 2, 137, 38, 2, 137, 39, 2, 139, 38, 2, 141, 40, 2, 142, 40, 2, 144, 42, 1, 145, 41, 2, 147, 42, 3, 148, 43, 2, 148, 43, 2, 151, 46, 2, 148, 42, 2, 152, 45, 2, 153, 45, 2, 154, 47, 2, + 157, 49, 2, 156, 49, 3, 156, 48, 2, 159, 49, 3, 159, 49, 2, 161, 52, 2, 162, 55, 2, 161, 54, 1, 163, 55, 3, 164, 55, 3, 164, 55, 2, 166, 56, 2, 167, 57, 3, 167, 57, 2, 167, 58, 2, 169, 58, 1, 168, 57, 2, 168, 58, 3, 168, 60, 3, 168, 59, 3, 168, 60, 3, + 168, 60, 2, 168, 60, 3, 171, 64, 6, 170, 62, 6, 170, 62, 8, 170, 62, 8, 171, 64, 11, 169, 63, 10, 170, 64, 11, 170, 65, 15, 172, 67, 17, 170, 66, 18, 171, 67, 18, 170, 65, 17, 174, 68, 22, 173, 68, 20, 172, 67, 21, 174, 68, 24, 172, 67, 19, 173, 69, 19, 175, 69, 19, + 175, 69, 16, 177, 70, 17, 177, 69, 13, 177, 69, 13, 176, 68, 11, 178, 71, 15, 177, 68, 12, 178, 71, 11, 180, 71, 9, 180, 72, 8, 181, 72, 6, 180, 71, 5, 181, 70, 5, 182, 73, 6, 182, 73, 6, 182, 71, 4, 182, 71, 4, 184, 73, 6, 185, 73, 6, 183, 72, 4, 184, 73, 4, + 182, 71, 3, 185, 72, 4, 184, 73, 4, 185, 73, 4, 184, 73, 3, 185, 73, 3, 184, 72, 2, 186, 75, 3, 186, 73, 2, 187, 74, 3, 187, 74, 3, 187, 74, 2, 185, 73, 3, 187, 75, 3, 184, 72, 2, 185, 74, 3, 183, 72, 4, 173, 65, 3, 160, 57, 4, 139, 47, 5, 111, 34, 11, + 81, 23, 25, 58, 21, 37, 29, 17, 50, 16, 28, 65, 26, 41, 84, 53, 54, 98, 89, 61, 107, 119, 67, 102, 139, 73, 91, 149, 72, 81, 162, 73, 69, 169, 74, 57, 166, 69, 49, 160, 64, 47, 151, 61, 56, 137, 59, 67, 131, 60, 74, 126, 61, 81, 124, 64, 89, 127, 67, 96, 131, 72, 101, + 134, 74, 105, 135, 76, 105, 138, 77, 107, 136, 77, 110, 135, 78, 111, 136, 80, 116, 132, 80, 120, 127, 78, 125, 116, 76, 129, 102, 75, 129, 87, 75, 127, 72, 75, 126, 61, 71, 125, 52, 67, 124, 45, 58, 118, 42, 54, 112, 36, 47, 105, 31, 44, 101, 26, 39, 97, 22, 36, 93, 25, 36, 93, + 32, 37, 95, 43, 41, 99, 46, 41, 98, 45, 39, 95, 37, 37, 92, 30, 35, 91, 20, 33, 88, 13, 30, 85, 13, 30, 84, 18, 30, 84, 21, 31, 84, 21, 28, 83, 21, 28, 87, 17, 27, 89, 10, 23, 89, 8, 23, 90, 9, 22, 88, 11, 22, 86, 18, 25, 85, 23, 26, 83, 27, 25, 80, + 28, 22, 76, 32, 21, 73, 30, 17, 69, 29, 16, 68, 25, 15, 64, 25, 12, 61, 19, 11, 57, 20, 12, 57, 17, 12, 55, 17, 15, 57, 20, 15, 57, 18, 14, 60, 16, 18, 64, 12, 20, 67, 10, 20, 74, 7, 21, 82, 4, 21, 87, 3, 19, 90, 2, 17, 91, 3, 13, 90, 3, 14, 90, + 3, 13, 89, 2, 14, 86, 3, 14, 83, 2, 14, 78, 1, 13, 72, 3, 12, 69, 3, 10, 65, 2, 11, 66, 1, 12, 67, 2, 13, 69, 3, 15, 72, 2, 13, 72, 2, 12, 71, 2, 11, 71, 3, 11, 70, 3, 8, 67, 3, 6, 65, 3, 7, 63, 2, 5, 63, 2, 7, 67, 2, 8, 72, + 3, 11, 77, 3, 13, 78, 3, 13, 76, 3, 11, 74, 3, 12, 72, 2, 12, 68, 1, 10, 65, 3, 9, 65, 2, 8, 65, 3, 10, 65, 3, 9, 63, 3, 8, 61, 2, 7, 62, 2, 8, 59, 2, 8, 59, 3, 7, 56, 2, 8, 54, 2, 7, 51, 2, 5, 48, 3, 5, 45, 3, 6, 42, + 12, 6, 39, 34, 5, 37, 55, 7, 24, 66, 6, 18, 75, 11, 18, 115, 24, 1, 116, 25, 2, 118, 26, 2, 119, 26, 2, 120, 28, 2, 120, 27, 1, 122, 28, 2, 123, 28, 2, 125, 32, 2, 126, 33, 2, 127, 32, 2, 128, 32, 2, 130, 32, 2, 132, 34, 1, 131, 34, 2, 134, 37, 1, + 134, 35, 2, 136, 38, 2, 138, 39, 1, 138, 39, 2, 139, 40, 2, 140, 40, 2, 141, 39, 2, 145, 42, 2, 146, 43, 2, 146, 41, 3, 147, 42, 1, 148, 44, 2, 150, 46, 2, 152, 46, 3, 153, 46, 3, 155, 48, 3, 155, 47, 2, 158, 49, 3, 157, 49, 2, 157, 50, 2, 159, 51, 2, + 159, 52, 2, 161, 53, 2, 161, 54, 2, 162, 54, 2, 164, 55, 2, 164, 55, 3, 164, 54, 2, 165, 57, 2, 167, 58, 3, 167, 58, 3, 167, 57, 3, 167, 59, 2, 166, 57, 2, 167, 58, 2, 168, 60, 2, 167, 59, 2, 168, 61, 3, 168, 61, 3, 168, 61, 4, 170, 63, 7, 169, 62, 5, + 170, 64, 9, 170, 64, 13, 170, 64, 14, 170, 65, 14, 171, 65, 16, 172, 67, 20, 170, 65, 19, 173, 68, 23, 171, 68, 23, 173, 69, 25, 174, 68, 27, 174, 70, 28, 174, 69, 27, 175, 70, 28, 175, 70, 26, 176, 73, 27, 172, 69, 21, 174, 69, 20, 177, 70, 19, 178, 71, 19, 178, 71, 19, + 178, 70, 17, 179, 70, 17, 180, 71, 18, 177, 69, 11, 181, 73, 13, 180, 74, 11, 180, 72, 6, 182, 74, 7, 181, 72, 5, 182, 72, 8, 184, 74, 8, 183, 73, 6, 183, 72, 5, 184, 74, 6, 184, 74, 6, 183, 72, 4, 184, 73, 4, 186, 75, 5, 184, 72, 3, 185, 73, 3, 186, 74, 4, + 186, 74, 3, 185, 74, 3, 188, 76, 4, 188, 75, 4, 188, 73, 3, 187, 74, 3, 187, 74, 3, 187, 74, 3, 188, 74, 3, 187, 76, 4, 187, 75, 3, 186, 75, 3, 182, 72, 3, 171, 65, 3, 155, 56, 5, 134, 43, 6, 105, 31, 12, 72, 21, 24, 52, 19, 38, 23, 24, 55, 13, 34, 75, + 17, 46, 95, 42, 61, 113, 72, 68, 115, 104, 70, 118, 132, 77, 109, 142, 76, 93, 155, 77, 86, 162, 74, 74, 162, 68, 61, 155, 64, 60, 142, 59, 62, 127, 55, 71, 120, 59, 79, 106, 53, 96, 95, 53, 108, 96, 59, 113, 98, 63, 117, 99, 67, 119, 98, 67, 120, 100, 69, 121, 98, 70, 122, + 93, 70, 122, 94, 70, 123, 92, 72, 124, 85, 73, 123, 79, 75, 125, 67, 72, 125, 61, 75, 129, 50, 70, 129, 43, 66, 130, 37, 63, 127, 30, 56, 122, 26, 50, 115, 20, 46, 110, 12, 38, 103, 5, 31, 96, 4, 29, 95, 5, 29, 97, 8, 30, 98, 12, 34, 100, 16, 35, 102, 11, 32, 99, + 8, 31, 96, 6, 29, 96, 4, 26, 91, 3, 24, 88, 3, 25, 88, 4, 25, 89, 4, 24, 91, 6, 27, 95, 4, 25, 97, 3, 21, 96, 4, 20, 97, 3, 19, 97, 2, 18, 95, 3, 19, 93, 3, 20, 93, 3, 19, 88, 5, 19, 83, 4, 18, 79, 5, 17, 74, 6, 16, 72, 5, 14, 69, + 4, 11, 65, 3, 10, 62, 4, 11, 62, 4, 10, 61, 2, 9, 61, 2, 10, 63, 3, 12, 66, 3, 13, 67, 2, 14, 73, 2, 17, 80, 2, 15, 84, 3, 18, 92, 3, 20, 96, 3, 20, 99, 3, 17, 100, 2, 16, 100, 3, 14, 99, 3, 16, 98, 3, 14, 97, 2, 15, 93, 3, 16, 88, + 3, 15, 83, 2, 13, 77, 2, 11, 72, 3, 13, 72, 3, 14, 74, 3, 16, 79, 3, 16, 80, 3, 17, 83, 3, 14, 81, 2, 13, 81, 2, 11, 79, 2, 9, 77, 2, 9, 75, 3, 9, 74, 2, 8, 75, 1, 9, 78, 2, 13, 82, 2, 13, 85, 2, 15, 85, 3, 16, 86, 2, 14, 84, + 2, 17, 85, 3, 17, 83, 3, 16, 81, 2, 16, 79, 2, 17, 79, 3, 18, 82, 3, 18, 81, 4, 17, 78, 4, 15, 75, 3, 11, 69, 3, 10, 68, 3, 9, 66, 2, 8, 62, 2, 8, 63, 2, 8, 61, 2, 7, 59, 3, 6, 53, 7, 8, 50, 24, 6, 51, 45, 6, 48, 63, 13, 40, + 72, 20, 41, 116, 26, 2, 117, 24, 1, 117, 25, 1, 119, 27, 2, 121, 28, 2, 121, 28, 3, 122, 30, 2, 123, 29, 2, 123, 32, 2, 127, 32, 3, 128, 33, 3, 130, 34, 2, 131, 34, 2, 132, 35, 2, 132, 35, 2, 134, 37, 2, 135, 37, 2, 135, 37, 2, 136, 38, 2, 137, 38, 3, + 138, 39, 2, 140, 40, 2, 143, 40, 2, 144, 42, 3, 145, 42, 2, 148, 44, 2, 148, 42, 2, 149, 45, 2, 150, 45, 3, 151, 45, 3, 153, 47, 3, 154, 48, 2, 156, 49, 3, 155, 49, 2, 157, 52, 2, 158, 50, 2, 158, 51, 1, 161, 53, 3, 161, 55, 2, 163, 56, 3, 163, 54, 2, + 165, 56, 3, 165, 55, 2, 165, 55, 3, 167, 57, 2, 167, 58, 2, 166, 58, 2, 169, 59, 2, 168, 59, 3, 168, 59, 2, 168, 59, 3, 167, 59, 3, 168, 61, 3, 168, 61, 4, 170, 64, 6, 171, 64, 7, 170, 63, 8, 171, 65, 9, 170, 65, 14, 170, 65, 17, 169, 64, 20, 171, 67, 24, + 170, 68, 23, 173, 68, 28, 172, 69, 29, 171, 67, 29, 174, 70, 33, 173, 69, 31, 173, 71, 34, 173, 70, 34, 174, 70, 32, 175, 70, 34, 177, 73, 34, 177, 72, 31, 176, 72, 31, 178, 73, 31, 178, 72, 26, 176, 70, 23, 179, 72, 26, 179, 72, 24, 179, 71, 23, 179, 71, 19, 182, 74, 19, + 181, 73, 16, 180, 73, 12, 182, 73, 14, 182, 74, 9, 183, 76, 10, 183, 75, 9, 183, 75, 8, 184, 76, 9, 185, 76, 9, 186, 75, 8, 185, 74, 8, 185, 75, 7, 186, 75, 6, 186, 75, 5, 187, 75, 5, 188, 76, 7, 186, 74, 4, 186, 75, 5, 186, 76, 4, 188, 77, 5, 187, 75, 4, + 187, 75, 3, 187, 74, 3, 187, 74, 3, 187, 74, 3, 188, 75, 3, 189, 74, 3, 188, 74, 4, 187, 75, 4, 182, 72, 4, 172, 66, 4, 155, 55, 4, 131, 41, 5, 99, 29, 10, 69, 20, 25, 48, 19, 40, 24, 28, 59, 11, 35, 79, 15, 48, 100, 35, 60, 116, 60, 68, 121, 88, 72, 122, + 120, 71, 121, 141, 77, 106, 150, 79, 95, 153, 75, 87, 153, 68, 76, 146, 62, 71, 136, 59, 73, 126, 56, 77, 106, 51, 95, 81, 47, 107, 59, 49, 105, 51, 54, 110, 52, 59, 114, 57, 62, 116, 57, 65, 118, 56, 64, 119, 59, 66, 121, 58, 68, 123, 53, 66, 124, 53, 68, 125, 48, 67, 125, + 48, 67, 128, 44, 67, 130, 37, 65, 128, 30, 64, 131, 24, 58, 129, 21, 57, 127, 16, 50, 123, 11, 47, 116, 6, 40, 111, 4, 33, 104, 3, 27, 99, 2, 24, 96, 2, 24, 98, 3, 24, 99, 3, 29, 103, 2, 30, 105, 3, 30, 105, 2, 30, 105, 3, 29, 103, 2, 25, 98, 3, 25, 95, + 3, 24, 96, 3, 27, 100, 3, 29, 104, 3, 28, 106, 2, 27, 107, 3, 24, 107, 3, 23, 108, 3, 20, 104, 3, 19, 103, 3, 18, 99, 3, 16, 95, 3, 16, 91, 3, 15, 87, 3, 13, 81, 2, 16, 79, 3, 14, 74, 3, 11, 70, 3, 9, 68, 2, 9, 68, 3, 11, 69, 3, 9, 68, + 4, 13, 72, 3, 14, 72, 3, 13, 72, 2, 13, 75, 2, 14, 80, 3, 15, 82, 3, 17, 91, 4, 19, 97, 3, 19, 101, 2, 18, 103, 3, 18, 106, 3, 19, 108, 3, 19, 107, 3, 21, 108, 3, 21, 107, 3, 21, 103, 3, 19, 98, 3, 17, 92, 3, 16, 84, 3, 16, 82, 3, 18, 80, + 3, 21, 85, 4, 24, 90, 3, 26, 94, 3, 23, 94, 4, 20, 93, 3, 18, 90, 3, 15, 88, 3, 14, 86, 3, 14, 86, 2, 13, 86, 4, 14, 88, 2, 14, 89, 3, 17, 91, 3, 20, 94, 3, 20, 96, 3, 21, 97, 3, 23, 99, 2, 25, 101, 3, 30, 105, 3, 31, 108, 3, 32, 108, + 2, 34, 108, 2, 36, 111, 2, 36, 111, 3, 35, 109, 3, 30, 103, 3, 23, 94, 3, 17, 86, 2, 14, 80, 3, 15, 82, 3, 16, 83, 2, 16, 82, 1, 13, 79, 2, 11, 73, 4, 12, 69, 12, 14, 65, 28, 14, 67, 43, 15, 71, 54, 17, 71, 114, 24, 2, 116, 24, 2, 118, 25, 1, + 119, 27, 2, 122, 29, 2, 121, 28, 2, 122, 30, 2, 123, 31, 2, 124, 32, 2, 126, 32, 2, 128, 32, 2, 128, 34, 2, 130, 34, 2, 131, 34, 2, 132, 35, 1, 134, 36, 2, 135, 37, 2, 136, 39, 3, 137, 40, 2, 138, 39, 2, 139, 39, 2, 138, 39, 2, 142, 41, 2, 144, 41, 2, + 145, 43, 2, 148, 44, 2, 150, 46, 3, 150, 46, 3, 152, 48, 2, 152, 47, 3, 151, 47, 2, 153, 49, 1, 156, 50, 3, 155, 50, 2, 157, 52, 3, 157, 51, 2, 160, 53, 2, 162, 53, 3, 162, 54, 2, 163, 55, 3, 164, 55, 3, 165, 56, 3, 165, 56, 2, 165, 57, 3, 167, 58, 4, + 165, 57, 2, 166, 57, 2, 166, 58, 2, 167, 59, 2, 168, 61, 2, 170, 63, 3, 168, 61, 2, 170, 63, 5, 170, 63, 5, 170, 63, 7, 170, 63, 7, 169, 62, 7, 171, 66, 15, 169, 63, 17, 170, 66, 24, 170, 67, 26, 172, 69, 30, 171, 69, 31, 172, 69, 33, 171, 69, 36, 173, 71, 40, + 170, 72, 39, 174, 72, 41, 172, 72, 43, 174, 73, 44, 174, 71, 39, 175, 73, 39, 174, 72, 36, 175, 74, 36, 176, 74, 39, 178, 74, 37, 177, 73, 34, 178, 73, 34, 179, 74, 35, 178, 73, 31, 179, 73, 31, 179, 74, 26, 181, 74, 23, 183, 74, 21, 183, 75, 21, 180, 72, 14, 182, 75, 15, + 182, 75, 13, 183, 76, 14, 183, 76, 12, 185, 75, 11, 183, 74, 7, 185, 77, 13, 186, 75, 10, 185, 74, 7, 186, 74, 8, 185, 74, 5, 187, 76, 5, 188, 77, 6, 187, 75, 5, 186, 75, 4, 186, 75, 4, 187, 75, 4, 187, 74, 3, 188, 76, 4, 189, 76, 5, 187, 75, 4, 187, 76, 4, + 187, 74, 3, 189, 75, 4, 190, 76, 3, 188, 76, 5, 183, 72, 5, 171, 65, 3, 154, 55, 5, 131, 43, 7, 101, 31, 14, 69, 20, 26, 47, 16, 38, 23, 24, 55, 16, 35, 79, 17, 45, 99, 31, 56, 112, 52, 65, 120, 80, 73, 126, 105, 72, 129, 129, 71, 121, 144, 75, 104, 149, 75, 94, + 148, 68, 86, 141, 63, 79, 132, 60, 78, 118, 55, 92, 89, 46, 110, 59, 49, 110, 36, 50, 111, 28, 50, 117, 27, 52, 121, 28, 55, 123, 31, 58, 125, 28, 56, 124, 28, 57, 125, 28, 57, 127, 25, 55, 127, 23, 55, 127, 22, 57, 127, 20, 55, 127, 17, 54, 127, 13, 53, 126, 15, 56, 129, + 9, 50, 126, 7, 49, 125, 6, 45, 121, 3, 40, 115, 3, 33, 110, 3, 27, 103, 2, 23, 100, 3, 21, 100, 3, 23, 100, 2, 24, 103, 3, 30, 110, 3, 32, 115, 3, 35, 115, 3, 35, 114, 3, 32, 111, 3, 30, 107, 2, 28, 105, 3, 28, 106, 3, 31, 109, 3, 32, 114, 2, 34, 119, + 3, 38, 124, 2, 32, 121, 2, 29, 119, 3, 27, 117, 3, 23, 110, 2, 20, 105, 3, 17, 100, 3, 14, 92, 3, 14, 87, 3, 12, 80, 2, 13, 79, 2, 12, 75, 3, 9, 72, 3, 11, 72, 2, 12, 73, 4, 14, 74, 3, 15, 76, 3, 16, 77, 3, 15, 77, 3, 12, 76, 2, 13, 79, + 2, 15, 82, 3, 16, 88, 2, 16, 92, 4, 17, 97, 4, 18, 101, 4, 17, 104, 2, 17, 106, 3, 21, 110, 3, 23, 112, 2, 25, 113, 2, 25, 114, 2, 27, 112, 2, 24, 106, 3, 20, 97, 3, 17, 90, 3, 19, 86, 3, 23, 89, 2, 24, 92, 3, 23, 94, 3, 25, 96, 2, 27, 103, + 3, 25, 101, 3, 20, 97, 3, 19, 95, 2, 18, 94, 2, 17, 94, 2, 16, 93, 2, 19, 94, 4, 18, 96, 3, 19, 97, 3, 21, 98, 2, 23, 99, 3, 26, 102, 2, 29, 106, 2, 32, 108, 2, 33, 112, 3, 35, 113, 2, 39, 115, 3, 42, 118, 2, 41, 117, 3, 40, 116, 2, 37, 113, + 2, 35, 110, 2, 29, 105, 3, 26, 100, 2, 19, 94, 2, 18, 92, 2, 18, 89, 2, 17, 88, 3, 16, 89, 2, 14, 86, 3, 16, 84, 3, 16, 78, 13, 19, 74, 26, 23, 71, 35, 23, 71, 116, 25, 2, 118, 27, 2, 117, 25, 1, 119, 27, 2, 119, 27, 3, 121, 29, 2, 121, 29, 2, + 123, 30, 1, 122, 31, 2, 125, 33, 2, 126, 33, 2, 129, 34, 1, 131, 35, 2, 130, 36, 2, 134, 36, 2, 135, 36, 1, 134, 36, 2, 135, 38, 3, 135, 38, 2, 138, 39, 2, 138, 39, 1, 142, 41, 2, 144, 42, 2, 145, 43, 2, 145, 43, 2, 146, 43, 2, 147, 44, 2, 150, 45, 3, + 150, 47, 1, 153, 46, 2, 155, 50, 2, 154, 49, 3, 154, 50, 2, 157, 51, 2, 157, 52, 3, 157, 52, 3, 158, 53, 2, 161, 55, 3, 162, 53, 3, 164, 55, 3, 164, 56, 3, 165, 55, 3, 164, 55, 3, 165, 56, 2, 165, 59, 2, 166, 59, 2, 167, 60, 2, 166, 59, 2, 168, 61, 4, + 166, 59, 2, 169, 61, 3, 169, 62, 4, 168, 61, 4, 169, 62, 5, 169, 63, 9, 168, 63, 9, 171, 66, 14, 169, 63, 16, 171, 67, 26, 169, 67, 29, 170, 68, 32, 171, 69, 35, 170, 67, 35, 171, 69, 38, 172, 70, 41, 171, 71, 45, 173, 73, 48, 174, 74, 50, 177, 77, 52, 173, 72, 47, + 174, 74, 49, 176, 75, 50, 175, 75, 47, 177, 76, 47, 176, 76, 45, 176, 75, 42, 177, 76, 42, 178, 77, 42, 179, 75, 40, 180, 75, 38, 182, 76, 38, 180, 74, 31, 183, 77, 29, 183, 75, 24, 183, 75, 24, 182, 75, 21, 183, 75, 18, 181, 73, 11, 184, 76, 13, 184, 75, 13, 184, 76, 13, + 185, 76, 12, 185, 76, 11, 187, 75, 12, 186, 77, 12, 186, 76, 9, 187, 75, 8, 187, 76, 6, 186, 74, 4, 187, 74, 4, 189, 76, 6, 188, 77, 6, 188, 76, 4, 189, 77, 5, 188, 76, 4, 190, 77, 5, 189, 75, 4, 188, 77, 3, 188, 77, 4, 189, 77, 4, 189, 77, 3, 187, 77, 4, + 186, 75, 7, 172, 67, 4, 156, 55, 6, 131, 42, 7, 99, 29, 12, 69, 22, 27, 48, 17, 35, 26, 19, 51, 19, 32, 71, 23, 43, 94, 35, 55, 109, 54, 65, 122, 74, 72, 126, 91, 70, 130, 110, 64, 131, 131, 71, 128, 141, 74, 116, 141, 67, 102, 137, 65, 102, 124, 58, 105, 103, 48, 116, + 72, 49, 118, 43, 51, 118, 21, 46, 121, 14, 46, 125, 13, 49, 127, 16, 53, 132, 13, 50, 129, 13, 51, 130, 13, 50, 129, 11, 50, 130, 10, 49, 129, 9, 50, 130, 7, 48, 129, 8, 48, 127, 6, 46, 126, 6, 48, 128, 5, 46, 125, 5, 46, 126, 5, 42, 124, 2, 40, 122, 3, 37, 119, + 3, 33, 115, 3, 30, 112, 3, 26, 108, 2, 25, 109, 2, 28, 111, 3, 31, 116, 3, 33, 118, 3, 36, 123, 1, 36, 121, 2, 37, 122, 3, 37, 121, 2, 34, 117, 3, 35, 117, 3, 34, 117, 2, 34, 119, 3, 34, 121, 3, 37, 128, 3, 41, 133, 3, 39, 132, 2, 33, 127, 3, 29, 121, + 2, 25, 115, 2, 21, 107, 2, 17, 101, 3, 13, 92, 3, 13, 85, 3, 12, 79, 2, 11, 77, 3, 14, 76, 2, 11, 71, 2, 11, 72, 3, 16, 77, 2, 17, 80, 3, 18, 81, 3, 18, 81, 3, 14, 78, 4, 14, 80, 3, 11, 78, 2, 13, 80, 3, 15, 86, 2, 17, 90, 3, 17, 94, + 2, 16, 99, 3, 16, 103, 2, 20, 108, 2, 23, 110, 2, 24, 113, 2, 27, 116, 3, 25, 114, 2, 25, 111, 2, 25, 107, 2, 23, 100, 3, 19, 92, 3, 23, 92, 2, 25, 92, 2, 25, 94, 2, 23, 95, 3, 25, 101, 3, 27, 103, 3, 27, 104, 2, 22, 100, 3, 18, 97, 2, 15, 94, + 4, 16, 94, 3, 16, 94, 3, 18, 95, 3, 18, 95, 2, 16, 95, 3, 20, 98, 3, 22, 101, 2, 24, 105, 1, 27, 108, 2, 31, 112, 3, 34, 114, 3, 37, 117, 2, 40, 119, 3, 45, 122, 4, 43, 121, 3, 41, 119, 2, 39, 116, 2, 38, 113, 2, 31, 107, 3, 27, 103, 2, 21, 98, + 3, 20, 96, 4, 18, 96, 2, 16, 93, 2, 15, 91, 2, 15, 89, 2, 15, 87, 3, 16, 83, 4, 18, 78, 10, 20, 75, 16, 22, 70, 115, 26, 2, 116, 25, 1, 118, 27, 2, 119, 28, 2, 120, 28, 2, 121, 28, 2, 123, 31, 3, 123, 30, 2, 124, 31, 2, 126, 31, 3, 128, 34, 2, + 129, 34, 3, 130, 35, 2, 131, 35, 1, 132, 36, 2, 134, 37, 2, 135, 38, 2, 134, 38, 1, 137, 39, 2, 137, 41, 2, 141, 41, 2, 141, 42, 2, 144, 43, 2, 142, 40, 2, 146, 43, 2, 148, 44, 2, 149, 45, 2, 152, 47, 3, 150, 46, 2, 151, 46, 2, 154, 49, 2, 154, 49, 1, + 155, 51, 2, 156, 51, 3, 157, 52, 2, 159, 54, 3, 160, 53, 2, 161, 54, 2, 163, 54, 2, 164, 55, 3, 164, 56, 2, 165, 56, 3, 167, 60, 3, 166, 57, 3, 167, 59, 2, 165, 59, 2, 168, 62, 2, 167, 60, 2, 168, 61, 3, 168, 61, 4, 171, 63, 5, 169, 61, 5, 170, 63, 5, + 169, 64, 10, 169, 64, 13, 171, 66, 20, 170, 66, 20, 169, 66, 27, 169, 66, 27, 169, 67, 34, 171, 69, 37, 170, 71, 42, 172, 72, 46, 171, 72, 48, 175, 74, 52, 174, 75, 54, 174, 75, 54, 175, 74, 56, 177, 77, 57, 176, 76, 56, 176, 76, 58, 178, 77, 57, 177, 77, 57, 176, 77, 54, + 177, 78, 54, 177, 76, 51, 179, 77, 51, 178, 76, 48, 180, 78, 49, 180, 77, 44, 183, 77, 44, 182, 77, 39, 184, 77, 37, 181, 76, 29, 183, 76, 32, 182, 76, 25, 185, 76, 23, 184, 77, 22, 186, 77, 22, 185, 76, 17, 185, 75, 17, 187, 78, 17, 186, 75, 16, 188, 77, 17, 186, 75, 13, + 188, 79, 15, 186, 74, 9, 188, 77, 9, 188, 76, 8, 189, 77, 7, 188, 77, 6, 189, 77, 6, 189, 77, 6, 189, 76, 5, 191, 77, 6, 190, 77, 4, 190, 77, 4, 189, 78, 2, 190, 78, 4, 190, 78, 4, 191, 78, 2, 188, 77, 4, 185, 74, 4, 175, 68, 5, 158, 58, 8, 134, 43, 7, + 101, 30, 13, 70, 20, 24, 54, 18, 31, 37, 16, 48, 30, 28, 63, 37, 42, 85, 44, 50, 100, 60, 63, 115, 73, 68, 125, 83, 69, 130, 96, 64, 135, 108, 63, 138, 117, 64, 140, 118, 62, 139, 107, 57, 139, 92, 52, 133, 76, 55, 131, 52, 56, 128, 29, 49, 129, 13, 47, 133, 6, 47, 134, + 6, 49, 136, 5, 48, 136, 8, 49, 137, 6, 49, 136, 6, 49, 137, 4, 47, 137, 3, 45, 135, 3, 45, 133, 2, 43, 133, 4, 44, 132, 3, 40, 127, 3, 45, 129, 4, 41, 126, 3, 43, 126, 3, 41, 125, 3, 39, 123, 4, 38, 122, 3, 35, 119, 2, 34, 118, 3, 30, 115, 3, 27, 114, + 2, 30, 118, 3, 33, 122, 3, 37, 126, 3, 38, 131, 3, 38, 130, 3, 38, 128, 3, 36, 124, 3, 37, 123, 3, 38, 123, 3, 36, 122, 3, 38, 124, 3, 37, 127, 2, 37, 131, 2, 41, 136, 3, 41, 137, 3, 38, 132, 2, 33, 126, 3, 29, 120, 2, 26, 111, 3, 21, 101, 3, 13, 89, + 2, 12, 82, 2, 13, 78, 3, 12, 72, 2, 13, 72, 3, 13, 71, 3, 17, 76, 3, 18, 77, 2, 17, 78, 2, 19, 79, 2, 16, 77, 2, 15, 76, 3, 14, 76, 2, 14, 76, 2, 13, 75, 2, 14, 79, 3, 13, 83, 3, 14, 89, 3, 15, 92, 2, 17, 95, 3, 18, 101, 2, 22, 106, + 3, 22, 108, 3, 23, 110, 2, 25, 112, 3, 24, 109, 3, 24, 107, 2, 21, 99, 3, 18, 94, 3, 23, 93, 2, 26, 94, 3, 25, 94, 1, 25, 95, 2, 23, 98, 3, 26, 102, 2, 26, 103, 3, 22, 99, 3, 16, 94, 2, 14, 92, 2, 13, 91, 3, 15, 92, 2, 15, 91, 3, 18, 93, + 2, 16, 93, 3, 17, 94, 3, 20, 98, 2, 21, 102, 2, 28, 109, 2, 30, 111, 2, 32, 114, 2, 35, 114, 3, 40, 118, 4, 44, 123, 2, 42, 121, 4, 43, 121, 2, 37, 115, 4, 36, 112, 1, 31, 106, 2, 25, 102, 3, 21, 98, 2, 19, 94, 3, 18, 93, 2, 15, 91, 3, 14, 91, + 2, 16, 90, 2, 15, 87, 2, 15, 82, 3, 15, 77, 4, 18, 74, 7, 18, 71, 114, 26, 2, 117, 26, 2, 118, 28, 2, 120, 29, 2, 121, 28, 3, 122, 30, 3, 122, 29, 2, 122, 29, 3, 124, 32, 2, 123, 32, 2, 126, 34, 2, 129, 35, 2, 131, 36, 2, 132, 36, 2, 132, 35, 2, + 135, 38, 2, 134, 38, 2, 136, 39, 2, 136, 39, 3, 137, 40, 2, 140, 41, 3, 141, 41, 2, 143, 42, 2, 143, 41, 2, 146, 45, 2, 148, 44, 2, 150, 46, 3, 150, 45, 2, 152, 47, 3, 153, 46, 2, 153, 49, 2, 155, 50, 3, 155, 51, 2, 157, 51, 3, 156, 52, 2, 158, 53, 2, + 160, 53, 3, 163, 55, 3, 163, 53, 3, 164, 55, 4, 164, 56, 3, 166, 57, 3, 166, 57, 3, 165, 57, 3, 166, 57, 2, 166, 59, 3, 168, 61, 3, 167, 59, 3, 169, 60, 3, 168, 61, 3, 168, 62, 4, 170, 62, 5, 170, 64, 9, 169, 65, 13, 168, 65, 19, 170, 66, 23, 168, 65, 26, + 172, 69, 35, 168, 68, 36, 170, 69, 43, 171, 69, 44, 174, 74, 51, 172, 74, 52, 173, 77, 58, 173, 75, 58, 173, 75, 61, 174, 76, 63, 177, 78, 67, 176, 78, 65, 177, 79, 68, 177, 80, 67, 176, 78, 64, 178, 79, 66, 177, 79, 65, 180, 80, 64, 181, 80, 61, 180, 79, 58, 178, 77, 54, + 179, 77, 52, 179, 77, 50, 181, 77, 46, 184, 77, 43, 183, 77, 40, 182, 76, 36, 181, 76, 30, 183, 77, 31, 186, 78, 28, 186, 77, 26, 184, 75, 22, 188, 78, 27, 186, 77, 24, 186, 76, 16, 185, 76, 17, 187, 76, 15, 187, 77, 15, 186, 77, 13, 189, 79, 14, 190, 79, 12, 189, 77, 9, + 189, 78, 8, 188, 78, 7, 191, 80, 8, 189, 77, 5, 189, 79, 6, 191, 78, 6, 190, 76, 4, 190, 78, 4, 191, 78, 4, 191, 77, 3, 191, 78, 3, 191, 80, 2, 191, 79, 7, 185, 76, 5, 176, 69, 4, 160, 59, 8, 136, 46, 9, 105, 30, 13, 73, 20, 18, 57, 16, 26, 47, 14, 39, + 44, 20, 59, 54, 35, 79, 63, 44, 95, 74, 54, 112, 81, 60, 124, 85, 66, 130, 88, 62, 136, 90, 60, 139, 91, 61, 144, 90, 65, 146, 82, 66, 147, 70, 65, 141, 53, 61, 140, 34, 58, 145, 21, 55, 146, 10, 52, 146, 6, 51, 146, 6, 53, 147, 7, 53, 146, 8, 54, 146, 7, 52, 145, + 6, 50, 144, 7, 50, 145, 4, 48, 143, 4, 48, 142, 3, 45, 139, 2, 46, 138, 3, 45, 136, 2, 43, 132, 3, 41, 130, 4, 40, 128, 4, 41, 127, 2, 38, 126, 4, 34, 123, 2, 34, 120, 3, 31, 117, 3, 32, 118, 3, 30, 119, 2, 30, 120, 2, 34, 125, 3, 37, 129, 3, 38, 132, + 3, 39, 131, 2, 36, 128, 3, 36, 126, 2, 36, 123, 3, 37, 123, 2, 37, 123, 3, 37, 125, 3, 34, 125, 2, 37, 130, 2, 40, 134, 3, 39, 135, 2, 36, 131, 2, 32, 122, 3, 27, 115, 2, 23, 107, 4, 18, 95, 3, 16, 87, 3, 12, 78, 3, 12, 73, 2, 10, 67, 2, 12, 68, + 4, 14, 69, 3, 17, 74, 2, 17, 74, 3, 19, 77, 2, 17, 78, 3, 18, 79, 3, 16, 76, 2, 16, 74, 4, 13, 71, 2, 11, 70, 3, 10, 69, 4, 9, 70, 3, 11, 76, 3, 12, 80, 2, 11, 83, 2, 13, 87, 2, 15, 91, 3, 16, 96, 2, 19, 100, 3, 20, 103, 3, 21, 102, + 3, 22, 100, 3, 20, 95, 3, 19, 91, 2, 19, 88, 4, 22, 90, 3, 24, 90, 3, 23, 91, 3, 24, 96, 4, 26, 98, 2, 24, 97, 3, 20, 94, 2, 15, 90, 3, 14, 88, 3, 13, 86, 2, 13, 84, 2, 14, 83, 3, 14, 83, 3, 14, 84, 3, 16, 87, 3, 16, 90, 3, 18, 95, + 3, 22, 99, 3, 25, 103, 2, 27, 106, 2, 32, 108, 3, 37, 113, 2, 39, 116, 3, 37, 113, 3, 40, 114, 2, 37, 110, 3, 34, 107, 2, 29, 103, 2, 21, 95, 3, 17, 90, 3, 16, 87, 2, 17, 88, 2, 14, 85, 2, 12, 85, 2, 14, 84, 2, 11, 79, 4, 11, 75, 2, 15, 73, + 5, 16, 69, 5, 15, 63, 114, 26, 1, 118, 27, 2, 118, 26, 2, 119, 29, 2, 121, 29, 3, 121, 29, 2, 122, 31, 2, 123, 31, 3, 125, 32, 2, 125, 31, 2, 127, 33, 2, 128, 34, 2, 129, 35, 2, 132, 36, 2, 132, 35, 1, 134, 37, 2, 136, 40, 3, 135, 38, 2, 136, 39, 2, + 138, 42, 2, 138, 40, 2, 142, 42, 2, 142, 43, 2, 145, 44, 1, 145, 44, 2, 148, 45, 3, 149, 44, 2, 151, 46, 3, 151, 46, 2, 154, 49, 1, 153, 49, 3, 154, 48, 1, 155, 50, 2, 158, 51, 3, 158, 53, 3, 158, 53, 2, 160, 54, 3, 160, 53, 3, 162, 55, 3, 165, 56, 2, + 165, 57, 3, 167, 58, 3, 167, 59, 3, 165, 57, 3, 167, 59, 3, 166, 59, 3, 168, 60, 2, 167, 59, 2, 168, 61, 4, 168, 62, 4, 170, 63, 8, 169, 63, 11, 167, 64, 12, 168, 65, 17, 169, 67, 25, 167, 67, 29, 170, 68, 35, 170, 70, 40, 172, 70, 46, 172, 71, 46, 174, 74, 53, + 173, 75, 57, 172, 75, 61, 173, 76, 64, 174, 78, 67, 176, 77, 72, 175, 78, 72, 177, 81, 76, 176, 80, 75, 178, 81, 77, 177, 80, 75, 178, 80, 76, 179, 81, 78, 181, 82, 76, 181, 83, 74, 180, 80, 69, 181, 80, 65, 181, 79, 64, 183, 81, 63, 181, 79, 57, 182, 78, 53, 183, 78, 49, + 184, 79, 48, 184, 79, 45, 184, 79, 38, 185, 79, 36, 186, 78, 30, 185, 78, 28, 186, 78, 26, 186, 77, 24, 188, 79, 25, 190, 80, 25, 187, 77, 20, 186, 77, 17, 188, 78, 19, 188, 79, 18, 188, 78, 14, 189, 78, 13, 191, 80, 12, 189, 78, 8, 189, 78, 7, 188, 77, 5, 190, 79, 7, + 189, 78, 6, 190, 78, 6, 190, 78, 4, 191, 79, 4, 189, 79, 4, 192, 80, 4, 192, 80, 4, 192, 77, 3, 190, 79, 6, 188, 78, 10, 177, 70, 6, 160, 59, 8, 138, 47, 12, 111, 33, 12, 77, 20, 14, 58, 14, 19, 56, 17, 28, 61, 23, 42, 74, 30, 61, 88, 38, 82, 97, 45, 103, + 99, 52, 120, 97, 56, 130, 93, 59, 136, 84, 58, 139, 82, 66, 145, 80, 69, 147, 70, 70, 148, 63, 76, 154, 50, 71, 155, 26, 58, 150, 13, 56, 152, 8, 57, 153, 8, 55, 154, 5, 54, 153, 6, 54, 152, 4, 50, 149, 5, 50, 150, 4, 50, 149, 5, 49, 148, 5, 49, 146, 3, 45, 143, + 4, 46, 143, 3, 42, 138, 3, 41, 135, 4, 39, 133, 3, 39, 130, 3, 37, 126, 3, 36, 126, 3, 34, 123, 3, 34, 120, 4, 32, 118, 2, 28, 114, 3, 29, 115, 2, 28, 115, 2, 28, 116, 3, 29, 120, 3, 33, 124, 3, 36, 128, 2, 35, 128, 4, 33, 124, 2, 34, 124, 2, 35, 122, + 2, 35, 120, 3, 34, 120, 3, 35, 120, 4, 33, 121, 3, 36, 124, 3, 37, 126, 4, 37, 126, 2, 33, 123, 2, 31, 116, 4, 28, 110, 4, 21, 98, 4, 18, 88, 4, 16, 79, 6, 14, 72, 5, 12, 66, 5, 11, 63, 5, 14, 65, 2, 15, 67, 2, 15, 70, 4, 17, 73, 3, 18, 76, + 3, 18, 77, 2, 16, 74, 2, 15, 72, 3, 14, 69, 3, 14, 68, 2, 10, 64, 3, 7, 59, 5, 11, 64, 7, 12, 67, 8, 14, 70, 7, 13, 71, 5, 15, 77, 2, 16, 80, 3, 19, 87, 2, 19, 90, 3, 19, 91, 2, 20, 92, 2, 23, 93, 4, 21, 89, 3, 17, 83, 2, 17, 80, + 3, 19, 81, 4, 22, 82, 3, 23, 84, 4, 24, 87, 5, 27, 89, 5, 23, 86, 3, 16, 81, 3, 15, 78, 3, 14, 77, 3, 13, 74, 4, 13, 71, 3, 13, 71, 2, 14, 72, 3, 12, 69, 2, 13, 72, 3, 11, 73, 2, 11, 72, 2, 14, 78, 2, 17, 83, 3, 22, 91, 3, 25, 95, + 3, 28, 98, 5, 32, 97, 5, 32, 96, 5, 33, 98, 4, 33, 98, 4, 29, 93, 5, 24, 87, 5, 18, 76, 5, 13, 68, 5, 14, 69, 4, 12, 67, 3, 10, 67, 2, 10, 70, 3, 10, 66, 5, 9, 58, 7, 9, 56, 12, 12, 57, 16, 12, 53, 15, 10, 47, 116, 25, 1, 118, 27, 1, + 118, 27, 2, 119, 29, 2, 120, 29, 3, 121, 30, 3, 120, 29, 3, 121, 30, 2, 123, 32, 2, 124, 32, 2, 126, 34, 2, 129, 35, 1, 130, 36, 2, 132, 36, 2, 134, 37, 2, 134, 38, 3, 133, 38, 1, 136, 39, 3, 136, 39, 2, 137, 40, 2, 139, 41, 2, 141, 43, 2, 142, 42, 2, + 144, 44, 2, 145, 44, 2, 147, 45, 2, 151, 47, 3, 151, 48, 2, 151, 46, 3, 152, 48, 2, 151, 47, 2, 155, 50, 3, 157, 53, 5, 156, 51, 2, 158, 53, 3, 159, 54, 3, 159, 55, 3, 163, 56, 4, 164, 57, 2, 165, 58, 2, 164, 56, 3, 166, 59, 3, 165, 58, 2, 168, 60, 4, + 167, 60, 3, 167, 59, 3, 169, 63, 5, 168, 61, 4, 169, 61, 5, 168, 61, 5, 171, 65, 14, 169, 63, 13, 167, 65, 17, 168, 65, 22, 168, 66, 30, 171, 70, 36, 167, 66, 35, 169, 69, 45, 171, 72, 51, 172, 73, 54, 173, 73, 59, 172, 76, 62, 175, 78, 69, 175, 78, 72, 176, 78, 76, + 174, 79, 80, 175, 81, 84, 174, 82, 86, 174, 82, 86, 174, 81, 86, 177, 82, 88, 177, 82, 86, 178, 85, 88, 179, 83, 85, 179, 83, 80, 182, 84, 81, 184, 85, 79, 183, 83, 73, 184, 81, 68, 183, 80, 63, 183, 82, 60, 183, 81, 57, 183, 80, 53, 184, 79, 50, 185, 81, 47, 186, 79, 42, + 186, 80, 37, 187, 80, 38, 187, 78, 33, 188, 81, 32, 187, 78, 27, 188, 78, 24, 188, 78, 25, 189, 79, 25, 188, 78, 20, 188, 77, 17, 191, 81, 19, 190, 80, 16, 189, 78, 11, 191, 79, 10, 190, 78, 9, 189, 78, 6, 190, 79, 7, 190, 79, 7, 191, 80, 8, 191, 78, 5, 190, 79, 4, + 192, 79, 6, 194, 80, 5, 194, 80, 7, 192, 79, 5, 190, 76, 7, 188, 78, 11, 179, 70, 7, 164, 62, 11, 143, 48, 13, 117, 36, 15, 84, 23, 16, 65, 15, 14, 58, 13, 21, 68, 19, 30, 88, 31, 43, 103, 39, 55, 115, 47, 72, 120, 55, 99, 116, 57, 123, 106, 56, 135, 94, 58, 141, + 82, 63, 145, 74, 67, 145, 63, 77, 159, 57, 133, 216, 46, 124, 206, 19, 85, 172, 5, 54, 153, 5, 54, 153, 5, 52, 151, 6, 51, 151, 9, 52, 151, 10, 52, 149, 10, 50, 147, 11, 50, 149, 7, 47, 146, 8, 48, 145, 5, 43, 141, 4, 39, 136, 4, 40, 135, 4, 37, 132, 4, 35, 127, + 4, 35, 124, 4, 35, 121, 5, 36, 120, 4, 33, 116, 3, 32, 114, 4, 31, 112, 4, 28, 109, 4, 29, 109, 4, 27, 108, 3, 28, 110, 3, 30, 113, 3, 32, 117, 4, 35, 120, 3, 35, 123, 3, 36, 123, 3, 38, 122, 3, 41, 124, 5, 37, 119, 2, 30, 116, 3, 29, 110, 2, 33, 111, + 5, 38, 118, 4, 38, 118, 5, 37, 117, 6, 34, 113, 7, 32, 107, 10, 31, 100, 13, 28, 93, 14, 24, 81, 16, 23, 76, 17, 21, 69, 14, 18, 64, 9, 16, 61, 5, 14, 63, 3, 16, 66, 3, 17, 70, 2, 17, 72, 2, 18, 74, 2, 17, 75, 3, 14, 72, 3, 12, 69, 3, 13, 67, + 2, 14, 64, 4, 11, 58, 6, 11, 56, 12, 13, 57, 18, 17, 60, 21, 18, 63, 22, 18, 66, 15, 16, 66, 14, 19, 70, 12, 20, 76, 8, 18, 76, 6, 20, 78, 7, 23, 83, 6, 23, 83, 3, 19, 78, 2, 16, 72, 2, 13, 68, 3, 15, 66, 3, 18, 69, 7, 24, 73, 12, 26, 75, + 17, 25, 74, 17, 19, 69, 19, 17, 67, 17, 16, 65, 14, 14, 62, 13, 11, 58, 13, 11, 57, 13, 11, 54, 12, 11, 54, 12, 12, 54, 10, 10, 53, 6, 7, 50, 4, 6, 48, 4, 7, 50, 4, 8, 53, 5, 12, 58, 9, 16, 60, 17, 16, 57, 26, 15, 57, 31, 16, 54, 34, 19, 55, + 31, 19, 55, 30, 16, 54, 30, 10, 46, 24, 9, 44, 19, 8, 43, 19, 7, 43, 15, 8, 42, 10, 7, 42, 8, 6, 41, 10, 6, 38, 17, 5, 36, 26, 6, 38, 35, 5, 34, 34, 5, 28, 30, 5, 26, 117, 26, 1, 117, 27, 2, 118, 27, 1, 119, 29, 2, 120, 30, 2, 121, 31, 1, + 120, 29, 2, 122, 32, 2, 124, 33, 2, 124, 33, 2, 126, 35, 2, 127, 36, 2, 129, 34, 2, 131, 36, 2, 132, 36, 2, 133, 37, 2, 135, 38, 2, 135, 40, 2, 136, 40, 2, 137, 41, 2, 139, 42, 2, 140, 42, 1, 142, 43, 2, 144, 44, 2, 145, 45, 2, 148, 45, 2, 150, 47, 2, + 150, 47, 2, 151, 47, 2, 153, 50, 2, 152, 48, 2, 153, 49, 3, 155, 52, 3, 157, 52, 2, 159, 55, 2, 159, 55, 2, 161, 56, 3, 163, 55, 2, 164, 55, 2, 165, 58, 3, 165, 57, 3, 165, 58, 3, 167, 59, 3, 165, 58, 1, 167, 60, 3, 168, 61, 4, 170, 62, 6, 168, 61, 5, + 169, 62, 8, 166, 61, 8, 167, 62, 12, 169, 64, 17, 167, 65, 21, 168, 67, 28, 168, 69, 34, 168, 67, 38, 169, 70, 45, 170, 72, 51, 171, 73, 56, 171, 74, 60, 172, 75, 64, 174, 77, 70, 174, 80, 78, 173, 79, 82, 174, 79, 86, 172, 81, 92, 171, 82, 93, 171, 82, 96, 169, 82, 95, + 170, 82, 97, 170, 83, 97, 172, 84, 97, 173, 84, 96, 174, 84, 93, 177, 86, 93, 178, 85, 88, 181, 84, 86, 185, 86, 84, 184, 84, 78, 185, 83, 72, 186, 82, 68, 186, 83, 65, 183, 79, 58, 183, 79, 56, 184, 80, 51, 186, 82, 49, 187, 80, 43, 186, 80, 39, 188, 81, 38, 188, 79, 34, + 187, 79, 29, 188, 80, 28, 188, 78, 21, 188, 79, 22, 189, 80, 25, 187, 77, 16, 189, 80, 20, 189, 79, 14, 190, 79, 14, 190, 80, 14, 190, 79, 13, 191, 79, 12, 191, 79, 11, 191, 79, 10, 191, 78, 6, 192, 80, 8, 191, 80, 6, 192, 79, 6, 192, 78, 5, 194, 80, 8, 192, 77, 4, + 192, 79, 9, 190, 79, 14, 181, 72, 10, 166, 62, 12, 147, 53, 18, 121, 38, 15, 88, 25, 14, 67, 14, 8, 68, 15, 13, 75, 20, 22, 95, 29, 35, 109, 37, 46, 123, 48, 60, 135, 60, 78, 137, 65, 102, 125, 60, 127, 109, 58, 138, 95, 60, 146, 85, 67, 150, 80, 99, 177, 63, 141, 223, + 51, 129, 211, 30, 112, 191, 20, 93, 184, 4, 50, 151, 10, 53, 148, 14, 51, 146, 14, 49, 143, 18, 50, 143, 19, 51, 143, 16, 48, 141, 15, 47, 141, 13, 45, 138, 11, 41, 134, 7, 38, 129, 7, 37, 127, 4, 32, 120, 5, 32, 117, 7, 34, 115, 8, 32, 110, 15, 33, 109, 18, 34, 107, + 19, 34, 103, 20, 31, 99, 21, 34, 100, 18, 31, 97, 17, 29, 97, 16, 29, 99, 16, 29, 100, 13, 31, 103, 11, 33, 107, 7, 38, 119, 13, 65, 144, 12, 79, 148, 9, 80, 149, 8, 82, 152, 6, 70, 142, 5, 35, 112, 5, 30, 101, 10, 33, 103, 17, 35, 104, 19, 35, 102, 18, 32, 98, + 20, 32, 95, 22, 31, 90, 25, 29, 83, 24, 25, 75, 27, 25, 71, 27, 25, 69, 25, 25, 67, 21, 24, 68, 15, 23, 68, 5, 20, 70, 4, 20, 72, 3, 21, 75, 2, 17, 72, 2, 17, 74, 3, 18, 72, 3, 14, 69, 2, 12, 65, 3, 13, 62, 6, 14, 59, 15, 18, 59, 22, 18, 59, + 28, 18, 61, 32, 18, 63, 32, 15, 64, 28, 18, 63, 25, 19, 64, 19, 20, 65, 16, 19, 65, 15, 19, 68, 11, 18, 66, 10, 17, 66, 6, 17, 65, 5, 15, 63, 5, 13, 58, 5, 15, 58, 9, 18, 58, 15, 20, 57, 23, 17, 57, 34, 15, 60, 39, 11, 61, 41, 11, 60, 41, 10, 59, + 37, 8, 55, 36, 8, 53, 33, 6, 50, 34, 6, 51, 33, 7, 49, 28, 6, 47, 25, 6, 46, 15, 6, 42, 9, 7, 40, 3, 5, 36, 3, 5, 34, 8, 5, 34, 17, 6, 36, 28, 5, 37, 41, 6, 35, 46, 9, 27, 48, 9, 24, 46, 7, 22, 42, 8, 23, 38, 7, 28, 38, 6, 33, + 34, 6, 37, 32, 5, 36, 25, 4, 33, 17, 3, 29, 15, 2, 25, 18, 3, 27, 28, 4, 29, 34, 4, 22, 39, 4, 17, 37, 1, 13, 31, 1, 10, 115, 27, 2, 116, 27, 2, 119, 28, 3, 119, 29, 2, 122, 31, 3, 121, 31, 2, 120, 30, 1, 122, 31, 1, 122, 32, 2, 125, 34, 2, + 125, 35, 2, 126, 35, 2, 129, 36, 2, 132, 36, 2, 133, 38, 2, 134, 38, 2, 134, 38, 2, 135, 38, 2, 135, 39, 2, 137, 40, 2, 139, 41, 2, 140, 43, 2, 142, 45, 1, 144, 44, 2, 146, 46, 2, 147, 45, 2, 150, 48, 2, 150, 47, 3, 151, 47, 3, 153, 49, 2, 152, 49, 2, + 155, 51, 5, 154, 50, 2, 156, 54, 2, 159, 53, 2, 160, 56, 2, 162, 56, 2, 163, 57, 3, 165, 57, 3, 164, 56, 3, 164, 57, 4, 166, 59, 3, 168, 61, 2, 168, 59, 4, 168, 60, 4, 168, 60, 3, 168, 61, 5, 170, 63, 6, 168, 63, 7, 169, 64, 12, 168, 64, 18, 167, 64, 18, + 167, 65, 24, 169, 66, 31, 168, 68, 36, 169, 68, 44, 171, 71, 50, 171, 74, 56, 171, 74, 60, 173, 75, 66, 173, 79, 74, 174, 78, 78, 173, 79, 86, 174, 82, 93, 171, 80, 96, 170, 83, 99, 171, 85, 103, 168, 84, 102, 167, 84, 103, 167, 84, 103, 166, 84, 101, 168, 86, 103, 169, 85, 103, + 170, 86, 102, 173, 86, 102, 176, 86, 100, 180, 87, 96, 182, 86, 92, 183, 86, 86, 184, 85, 80, 184, 81, 72, 186, 82, 71, 184, 81, 65, 184, 81, 62, 185, 81, 56, 184, 80, 51, 188, 82, 49, 188, 82, 43, 188, 80, 40, 188, 81, 42, 189, 81, 36, 189, 81, 31, 190, 81, 28, 191, 80, 28, + 191, 81, 26, 189, 80, 25, 190, 80, 24, 189, 78, 20, 191, 81, 21, 190, 79, 18, 191, 80, 16, 192, 80, 14, 192, 80, 15, 191, 79, 10, 192, 79, 10, 193, 81, 9, 191, 80, 8, 192, 79, 6, 194, 81, 7, 194, 80, 7, 195, 81, 7, 194, 81, 10, 192, 80, 14, 184, 74, 10, 171, 66, 16, + 150, 55, 18, 126, 41, 17, 97, 30, 20, 71, 17, 10, 72, 16, 9, 85, 22, 17, 106, 33, 29, 125, 41, 38, 137, 51, 54, 144, 60, 70, 151, 69, 86, 151, 72, 98, 139, 68, 117, 123, 61, 132, 111, 63, 141, 89, 94, 171, 66, 138, 222, 45, 120, 200, 11, 86, 160, 15, 96, 176, 21, 85, 177, + 14, 43, 132, 22, 46, 130, 29, 49, 132, 34, 47, 128, 35, 48, 127, 37, 47, 126, 34, 45, 122, 32, 43, 121, 25, 40, 119, 19, 37, 116, 13, 32, 111, 12, 32, 106, 14, 32, 102, 18, 31, 100, 28, 34, 98, 35, 35, 95, 42, 33, 93, 47, 33, 93, 49, 34, 93, 49, 31, 90, 45, 29, 89, + 43, 29, 88, 41, 29, 87, 41, 31, 91, 35, 30, 90, 26, 37, 103, 23, 82, 160, 15, 88, 163, 7, 54, 124, 7, 68, 138, 6, 66, 135, 7, 81, 151, 7, 76, 148, 10, 28, 93, 18, 31, 89, 23, 32, 89, 27, 33, 87, 29, 33, 86, 30, 32, 85, 33, 34, 83, 34, 32, 78, 34, 32, 76, + 32, 30, 72, 32, 32, 74, 31, 32, 74, 22, 29, 74, 19, 31, 76, 8, 25, 75, 3, 23, 74, 2, 21, 77, 3, 23, 79, 3, 22, 79, 3, 19, 76, 3, 17, 73, 3, 18, 70, 3, 16, 66, 4, 18, 64, 14, 22, 65, 25, 24, 63, 32, 23, 65, 38, 25, 68, 36, 24, 69, 32, 20, 66, + 30, 22, 65, 23, 21, 61, 23, 23, 63, 21, 21, 63, 19, 20, 61, 14, 17, 60, 11, 17, 60, 9, 15, 59, 8, 17, 56, 12, 17, 54, 18, 20, 53, 26, 19, 54, 36, 15, 56, 50, 15, 60, 58, 16, 55, 62, 18, 54, 61, 17, 50, 56, 15, 50, 54, 14, 49, 51, 12, 46, 51, 13, 45, + 50, 12, 46, 43, 9, 45, 37, 6, 44, 28, 7, 42, 17, 6, 37, 8, 5, 33, 7, 5, 32, 11, 4, 31, 21, 5, 34, 33, 6, 36, 44, 9, 31, 50, 10, 27, 52, 10, 26, 51, 10, 24, 49, 11, 24, 48, 10, 25, 46, 10, 26, 43, 8, 25, 40, 9, 27, 33, 5, 30, 25, 3, 28, + 21, 2, 26, 25, 4, 25, 32, 5, 21, 37, 4, 15, 40, 2, 12, 37, 1, 8, 32, 1, 6, 117, 27, 2, 117, 28, 2, 117, 28, 2, 119, 29, 1, 120, 32, 2, 121, 32, 2, 122, 32, 2, 122, 32, 2, 122, 31, 1, 125, 34, 3, 126, 36, 1, 127, 36, 2, 128, 36, 2, 130, 37, 2, + 131, 37, 2, 133, 38, 2, 135, 40, 2, 135, 40, 2, 136, 42, 2, 137, 41, 2, 137, 41, 2, 139, 43, 2, 142, 43, 1, 143, 45, 2, 146, 47, 2, 146, 46, 2, 149, 47, 1, 152, 49, 2, 152, 50, 2, 153, 51, 3, 154, 51, 3, 155, 52, 4, 156, 53, 3, 157, 52, 2, 158, 53, 4, + 160, 56, 3, 162, 56, 4, 162, 54, 3, 164, 57, 2, 164, 56, 3, 167, 59, 4, 167, 59, 2, 168, 61, 3, 167, 60, 3, 167, 61, 3, 169, 61, 4, 169, 63, 6, 169, 63, 7, 169, 64, 10, 168, 64, 14, 169, 65, 19, 167, 64, 22, 168, 66, 28, 170, 70, 37, 169, 69, 41, 168, 67, 45, + 170, 73, 55, 170, 73, 59, 173, 77, 66, 173, 79, 74, 173, 80, 80, 175, 82, 90, 171, 82, 95, 169, 82, 100, 172, 85, 104, 169, 85, 103, 166, 84, 105, 166, 86, 109, 162, 87, 111, 160, 86, 112, 161, 85, 110, 162, 86, 109, 165, 88, 110, 168, 88, 108, 171, 88, 106, 175, 88, 107, 177, 89, 108, + 180, 89, 101, 184, 88, 96, 186, 89, 92, 185, 86, 84, 186, 85, 78, 186, 83, 73, 185, 82, 67, 186, 83, 63, 185, 82, 58, 187, 84, 53, 187, 82, 47, 187, 80, 42, 189, 79, 40, 189, 81, 39, 191, 81, 39, 191, 83, 36, 191, 82, 29, 191, 82, 29, 190, 80, 27, 190, 79, 22, 191, 82, 23, + 192, 81, 21, 193, 82, 19, 193, 81, 17, 194, 82, 19, 193, 81, 16, 192, 79, 13, 193, 79, 14, 192, 80, 10, 194, 82, 10, 194, 80, 8, 194, 81, 8, 196, 81, 8, 194, 81, 7, 194, 82, 10, 193, 81, 15, 186, 75, 16, 173, 68, 13, 153, 56, 18, 131, 46, 21, 99, 31, 20, 78, 20, 13, + 75, 17, 9, 89, 25, 17, 110, 35, 21, 133, 45, 29, 148, 55, 38, 161, 64, 55, 165, 71, 73, 162, 72, 81, 159, 70, 83, 155, 71, 92, 148, 73, 107, 129, 99, 154, 76, 144, 227, 48, 120, 198, 17, 95, 170, 12, 86, 162, 20, 110, 193, 27, 60, 136, 38, 43, 112, 53, 40, 107, 62, 42, 111, + 65, 38, 108, 67, 37, 107, 63, 37, 107, 54, 35, 102, 44, 35, 98, 36, 35, 97, 27, 32, 92, 27, 32, 90, 29, 31, 85, 36, 32, 84, 46, 29, 86, 59, 29, 89, 71, 30, 91, 76, 30, 89, 80, 32, 89, 79, 31, 88, 77, 31, 88, 72, 28, 86, 71, 29, 87, 65, 28, 88, 53, 32, 92, + 35, 70, 134, 20, 83, 155, 7, 62, 131, 5, 60, 131, 6, 58, 131, 4, 59, 131, 6, 71, 142, 7, 79, 152, 19, 72, 138, 25, 29, 82, 28, 33, 85, 34, 37, 86, 34, 37, 85, 36, 37, 85, 36, 36, 83, 39, 39, 85, 37, 39, 84, 35, 38, 83, 33, 38, 83, 29, 37, 81, 22, 35, 82, + 18, 35, 83, 11, 31, 83, 4, 27, 83, 2, 25, 81, 3, 26, 81, 3, 22, 79, 3, 20, 76, 3, 19, 74, 2, 18, 74, 2, 21, 74, 4, 22, 71, 12, 25, 72, 21, 26, 69, 29, 30, 69, 34, 31, 69, 35, 29, 69, 31, 28, 68, 26, 26, 68, 25, 26, 67, 25, 26, 68, 22, 24, 65, + 20, 22, 63, 16, 20, 62, 13, 19, 60, 10, 18, 59, 10, 17, 56, 16, 21, 57, 23, 23, 56, 33, 20, 58, 45, 17, 61, 59, 19, 60, 70, 24, 56, 71, 25, 51, 72, 25, 51, 66, 22, 50, 62, 19, 48, 61, 19, 49, 59, 20, 48, 55, 17, 45, 52, 14, 47, 46, 11, 47, 35, 8, 45, + 24, 7, 42, 16, 9, 39, 12, 7, 36, 15, 7, 33, 26, 7, 36, 40, 9, 37, 52, 14, 31, 59, 16, 29, 61, 16, 27, 59, 15, 25, 55, 13, 25, 54, 14, 26, 52, 11, 27, 51, 13, 28, 44, 11, 27, 39, 9, 30, 31, 5, 32, 26, 4, 30, 29, 5, 26, 35, 7, 21, 40, 5, 16, + 41, 2, 10, 41, 1, 8, 36, 1, 7, 115, 28, 2, 118, 30, 3, 118, 30, 2, 119, 30, 1, 120, 32, 2, 120, 32, 2, 122, 32, 3, 123, 31, 3, 123, 33, 2, 126, 34, 2, 125, 34, 3, 127, 36, 2, 127, 36, 1, 130, 36, 2, 131, 38, 2, 132, 39, 2, 133, 39, 2, 134, 39, 2, + 136, 41, 2, 137, 41, 2, 138, 42, 2, 140, 43, 2, 142, 44, 2, 143, 45, 2, 147, 47, 3, 145, 46, 2, 150, 49, 2, 150, 49, 2, 151, 48, 3, 152, 48, 3, 153, 51, 4, 156, 53, 4, 156, 52, 3, 157, 52, 3, 159, 54, 2, 161, 56, 3, 162, 57, 3, 163, 58, 2, 164, 57, 4, + 165, 58, 4, 166, 60, 6, 166, 59, 3, 167, 59, 2, 168, 61, 3, 168, 63, 4, 168, 61, 4, 169, 62, 6, 168, 63, 6, 168, 64, 9, 167, 64, 15, 170, 66, 22, 168, 66, 26, 168, 66, 31, 168, 69, 36, 169, 69, 45, 171, 71, 53, 170, 72, 59, 172, 75, 63, 172, 76, 70, 172, 80, 77, + 174, 81, 86, 171, 82, 95, 171, 84, 103, 170, 87, 105, 168, 86, 106, 167, 88, 112, 162, 87, 119, 158, 85, 125, 152, 85, 132, 149, 82, 134, 150, 84, 135, 152, 85, 134, 154, 85, 128, 164, 90, 124, 168, 90, 113, 173, 92, 112, 177, 92, 111, 179, 91, 111, 180, 89, 103, 186, 91, 101, 186, 89, 92, + 186, 86, 84, 187, 85, 79, 186, 84, 71, 185, 83, 65, 185, 82, 60, 187, 84, 56, 189, 84, 51, 189, 83, 47, 191, 84, 48, 191, 82, 45, 191, 81, 39, 189, 81, 36, 192, 82, 33, 190, 81, 29, 191, 81, 30, 192, 82, 29, 192, 81, 26, 192, 81, 21, 191, 80, 17, 193, 81, 16, 193, 82, 20, + 193, 81, 17, 194, 82, 14, 194, 82, 14, 193, 80, 9, 193, 81, 10, 196, 82, 10, 193, 80, 7, 195, 81, 9, 193, 80, 7, 193, 81, 10, 194, 82, 16, 187, 75, 16, 176, 69, 13, 158, 60, 18, 133, 47, 19, 105, 34, 21, 81, 22, 15, 79, 21, 12, 88, 23, 13, 110, 36, 17, 138, 49, 20, + 156, 59, 26, 172, 70, 42, 176, 73, 51, 178, 76, 62, 174, 74, 67, 168, 70, 74, 163, 70, 77, 156, 87, 112, 77, 128, 205, 54, 126, 206, 28, 106, 183, 16, 97, 172, 26, 117, 201, 53, 153, 221, 46, 69, 139, 76, 28, 94, 90, 36, 96, 95, 38, 95, 96, 40, 100, 89, 37, 98, 79, 33, 97, + 65, 32, 94, 51, 30, 87, 43, 32, 83, 41, 33, 84, 42, 32, 80, 49, 27, 82, 62, 30, 87, 78, 34, 89, 91, 37, 85, 100, 44, 83, 102, 47, 83, 98, 44, 79, 98, 43, 84, 93, 39, 86, 89, 37, 88, 81, 38, 93, 58, 57, 116, 24, 84, 155, 4, 46, 112, 12, 80, 152, 10, 81, 157, + 11, 87, 161, 6, 61, 134, 8, 56, 130, 6, 70, 144, 13, 96, 167, 25, 37, 91, 28, 37, 90, 35, 41, 92, 36, 41, 93, 37, 41, 95, 35, 42, 92, 33, 41, 91, 31, 42, 91, 29, 41, 90, 24, 37, 90, 23, 40, 90, 17, 37, 88, 11, 34, 88, 5, 31, 87, 2, 27, 84, 2, 28, 85, + 3, 24, 83, 3, 23, 81, 3, 23, 80, 2, 20, 77, 4, 21, 78, 3, 22, 77, 3, 24, 78, 8, 27, 76, 15, 27, 76, 20, 28, 73, 28, 32, 76, 30, 33, 75, 28, 32, 77, 24, 32, 77, 20, 29, 73, 18, 27, 72, 18, 24, 69, 20, 25, 68, 16, 22, 66, 13, 21, 64, 7, 19, 62, + 8, 20, 61, 13, 23, 61, 20, 24, 59, 32, 25, 61, 46, 22, 67, 61, 24, 68, 72, 27, 66, 74, 28, 63, 74, 27, 61, 69, 24, 62, 64, 22, 60, 61, 21, 59, 59, 22, 58, 57, 21, 56, 53, 18, 54, 48, 15, 55, 37, 12, 51, 26, 11, 48, 13, 9, 40, 11, 9, 37, 14, 7, 37, + 26, 9, 40, 40, 11, 43, 53, 16, 38, 59, 19, 35, 63, 19, 34, 61, 17, 31, 60, 17, 32, 57, 16, 31, 56, 17, 34, 52, 17, 34, 49, 14, 35, 41, 9, 38, 32, 8, 39, 28, 7, 36, 29, 6, 32, 32, 6, 24, 34, 4, 16, 36, 2, 10, 36, 2, 7, 29, 1, 5, 113, 27, 2, + 115, 29, 2, 116, 29, 2, 117, 28, 2, 119, 30, 2, 119, 31, 2, 121, 32, 2, 120, 32, 2, 124, 34, 2, 123, 34, 2, 125, 36, 2, 125, 35, 1, 127, 36, 2, 130, 38, 2, 130, 37, 2, 132, 38, 3, 133, 38, 2, 134, 41, 2, 136, 42, 2, 137, 41, 1, 138, 42, 2, 138, 42, 2, + 141, 44, 2, 144, 46, 2, 145, 46, 2, 147, 45, 2, 150, 49, 3, 148, 46, 3, 150, 49, 2, 154, 50, 3, 155, 53, 4, 154, 51, 2, 156, 53, 3, 156, 55, 2, 159, 56, 3, 161, 57, 3, 161, 57, 3, 161, 57, 2, 163, 57, 2, 164, 58, 3, 165, 58, 3, 166, 60, 4, 168, 60, 4, + 167, 61, 3, 169, 63, 4, 168, 61, 3, 167, 61, 4, 169, 65, 12, 169, 63, 10, 169, 65, 17, 167, 65, 20, 170, 67, 28, 169, 68, 34, 170, 68, 40, 169, 70, 49, 171, 74, 58, 172, 75, 64, 172, 76, 70, 172, 78, 76, 174, 81, 84, 172, 83, 95, 170, 83, 102, 170, 86, 106, 169, 88, 110, + 166, 89, 115, 160, 88, 128, 149, 86, 144, 134, 85, 158, 123, 89, 170, 117, 96, 178, 117, 101, 180, 120, 101, 180, 128, 98, 176, 148, 92, 158, 162, 94, 141, 172, 96, 130, 178, 97, 119, 181, 95, 115, 181, 92, 112, 183, 91, 107, 187, 91, 99, 184, 87, 88, 187, 87, 83, 187, 86, 75, 188, 85, 69, + 187, 85, 64, 188, 85, 59, 190, 82, 53, 188, 82, 49, 192, 85, 51, 190, 83, 47, 191, 80, 42, 192, 81, 39, 193, 84, 39, 191, 82, 33, 192, 83, 32, 192, 82, 29, 190, 81, 24, 192, 83, 28, 193, 84, 25, 193, 82, 18, 194, 83, 21, 194, 82, 15, 193, 81, 12, 195, 83, 14, 195, 83, 13, + 194, 81, 10, 193, 81, 9, 195, 83, 11, 194, 82, 10, 193, 82, 11, 192, 80, 10, 193, 81, 16, 189, 79, 18, 179, 72, 14, 160, 61, 19, 136, 48, 20, 110, 39, 24, 86, 25, 16, 82, 22, 13, 90, 25, 15, 109, 33, 16, 138, 48, 18, 162, 59, 19, 178, 70, 27, 188, 77, 34, 193, 80, 46, + 188, 78, 46, 182, 75, 49, 180, 73, 56, 170, 91, 99, 99, 126, 195, 59, 132, 209, 36, 116, 188, 22, 101, 177, 21, 103, 182, 24, 95, 172, 35, 133, 208, 86, 43, 96, 105, 45, 82, 109, 50, 82, 112, 50, 84, 107, 47, 87, 95, 41, 92, 81, 38, 93, 66, 34, 90, 57, 34, 86, 54, 35, 87, + 55, 35, 86, 59, 32, 86, 71, 35, 88, 91, 43, 94, 101, 46, 89, 110, 52, 89, 115, 55, 92, 113, 53, 91, 107, 51, 95, 105, 50, 101, 98, 46, 101, 84, 53, 111, 35, 95, 167, 12, 61, 126, 9, 64, 134, 8, 88, 162, 8, 82, 160, 9, 82, 158, 9, 78, 150, 5, 49, 124, 5, 50, 124, + 8, 66, 138, 22, 83, 150, 26, 39, 96, 30, 43, 101, 31, 45, 104, 32, 45, 104, 29, 46, 102, 25, 43, 100, 26, 46, 100, 24, 43, 98, 23, 42, 97, 22, 42, 97, 17, 40, 95, 7, 33, 90, 5, 34, 91, 3, 30, 89, 4, 26, 86, 3, 23, 83, 3, 20, 80, 2, 20, 79, 3, 21, 80, + 3, 21, 78, 4, 24, 81, 3, 27, 80, 8, 30, 83, 12, 30, 80, 16, 31, 80, 23, 34, 82, 19, 33, 81, 18, 34, 82, 12, 31, 80, 13, 29, 82, 16, 31, 81, 14, 28, 77, 16, 26, 74, 15, 25, 71, 10, 23, 68, 8, 23, 68, 4, 20, 65, 8, 22, 66, 16, 25, 65, 26, 28, 66, + 39, 26, 69, 55, 27, 76, 67, 27, 77, 72, 28, 76, 73, 27, 75, 67, 25, 72, 60, 24, 69, 57, 23, 68, 54, 21, 65, 53, 20, 64, 51, 18, 63, 44, 17, 59, 37, 16, 56, 25, 15, 50, 15, 12, 46, 8, 10, 42, 12, 10, 41, 19, 11, 43, 34, 12, 47, 49, 15, 49, 58, 18, 45, + 62, 21, 43, 61, 19, 41, 59, 19, 42, 55, 17, 42, 53, 15, 43, 48, 14, 44, 44, 12, 45, 35, 9, 44, 28, 8, 42, 21, 8, 37, 21, 7, 35, 23, 5, 27, 27, 3, 19, 27, 2, 11, 26, 2, 7, 24, 2, 5, 114, 28, 2, 115, 30, 2, 115, 30, 2, 116, 30, 2, 118, 29, 2, + 119, 31, 2, 120, 33, 2, 122, 32, 2, 123, 34, 3, 123, 33, 2, 125, 36, 2, 126, 36, 2, 128, 36, 1, 129, 38, 3, 129, 37, 3, 132, 39, 2, 131, 38, 2, 134, 40, 2, 135, 41, 1, 137, 42, 3, 138, 43, 2, 138, 42, 1, 143, 45, 3, 142, 45, 2, 144, 46, 2, 145, 47, 2, + 148, 49, 3, 149, 48, 3, 150, 51, 3, 154, 52, 4, 152, 50, 3, 155, 53, 3, 155, 54, 3, 158, 56, 3, 158, 55, 3, 160, 56, 3, 162, 57, 4, 161, 57, 3, 165, 58, 5, 164, 58, 5, 166, 60, 6, 165, 58, 5, 167, 60, 5, 167, 62, 5, 168, 63, 5, 168, 63, 7, 168, 64, 10, + 168, 64, 11, 168, 64, 13, 168, 65, 18, 168, 66, 22, 168, 67, 33, 169, 69, 38, 170, 69, 44, 171, 72, 52, 172, 75, 60, 173, 76, 67, 171, 78, 74, 173, 80, 80, 174, 83, 90, 173, 84, 102, 173, 87, 107, 172, 91, 112, 167, 90, 117, 161, 88, 132, 146, 86, 152, 125, 95, 177, 109, 115, 196, + 105, 136, 212, 116, 155, 221, 124, 168, 229, 129, 173, 229, 128, 171, 227, 122, 149, 214, 142, 116, 190, 166, 99, 160, 178, 101, 136, 182, 102, 124, 186, 99, 118, 183, 93, 112, 188, 94, 105, 186, 90, 94, 188, 90, 88, 187, 87, 79, 188, 85, 71, 189, 86, 67, 188, 86, 62, 190, 85, 59, 188, 83, 50, + 191, 84, 51, 192, 85, 50, 189, 82, 44, 192, 83, 43, 193, 83, 39, 193, 84, 37, 194, 84, 34, 192, 83, 30, 191, 81, 25, 194, 84, 26, 192, 82, 21, 194, 83, 20, 194, 83, 16, 195, 83, 17, 195, 83, 15, 195, 83, 13, 195, 84, 14, 195, 83, 12, 195, 82, 8, 195, 81, 8, 194, 82, 9, + 193, 81, 10, 193, 81, 9, 195, 84, 17, 192, 80, 17, 182, 74, 20, 163, 63, 18, 143, 52, 22, 115, 39, 22, 91, 29, 19, 85, 23, 14, 88, 24, 13, 108, 33, 15, 135, 47, 15, 161, 59, 14, 179, 70, 13, 192, 81, 23, 197, 82, 28, 199, 84, 30, 197, 83, 37, 191, 80, 38, 185, 81, 53, + 151, 119, 153, 77, 152, 232, 63, 138, 218, 53, 132, 214, 31, 116, 197, 27, 114, 196, 18, 104, 182, 76, 101, 157, 116, 49, 80, 118, 57, 87, 121, 56, 88, 113, 53, 88, 107, 51, 98, 92, 46, 101, 75, 44, 98, 65, 43, 96, 58, 44, 94, 56, 43, 93, 63, 44, 95, 77, 47, 102, 92, 49, 106, + 105, 53, 108, 114, 57, 106, 116, 58, 111, 115, 58, 114, 109, 57, 116, 101, 51, 115, 91, 56, 120, 59, 83, 149, 18, 71, 140, 13, 51, 119, 7, 57, 127, 7, 69, 145, 4, 71, 151, 6, 63, 143, 5, 55, 133, 5, 57, 129, 5, 43, 118, 5, 51, 124, 16, 97, 171, 25, 42, 107, 28, 48, 110, + 29, 48, 111, 27, 49, 114, 24, 49, 112, 21, 47, 109, 24, 50, 109, 22, 48, 106, 22, 47, 102, 19, 43, 98, 19, 40, 96, 10, 36, 92, 6, 33, 91, 3, 28, 87, 2, 25, 84, 2, 23, 83, 2, 22, 81, 2, 20, 80, 3, 20, 80, 3, 22, 79, 2, 25, 81, 3, 26, 82, 6, 30, 84, + 13, 34, 86, 17, 34, 85, 18, 35, 86, 16, 36, 87, 13, 34, 89, 9, 33, 89, 7, 29, 86, 9, 31, 86, 14, 31, 84, 15, 29, 80, 14, 28, 76, 11, 25, 72, 5, 22, 68, 4, 21, 68, 4, 22, 69, 10, 24, 69, 21, 30, 72, 34, 32, 73, 46, 31, 77, 57, 26, 81, 63, 29, 82, + 61, 26, 79, 57, 24, 76, 53, 26, 75, 47, 22, 71, 48, 23, 72, 46, 20, 68, 45, 19, 68, 42, 21, 65, 35, 21, 61, 22, 18, 53, 12, 14, 50, 7, 11, 47, 8, 12, 45, 13, 14, 45, 25, 14, 47, 41, 13, 52, 52, 16, 55, 57, 18, 53, 56, 16, 50, 53, 13, 51, 48, 13, 51, + 47, 13, 52, 43, 12, 51, 37, 10, 49, 28, 11, 47, 18, 10, 42, 12, 8, 37, 11, 8, 33, 14, 5, 27, 19, 2, 19, 20, 1, 9, 19, 2, 4, 19, 2, 3, 113, 27, 2, 113, 28, 2, 116, 30, 2, 118, 32, 1, 118, 30, 2, 119, 29, 3, 120, 32, 2, 120, 33, 2, 122, 34, 2, + 124, 35, 1, 126, 36, 2, 125, 36, 2, 127, 37, 2, 128, 37, 2, 131, 39, 3, 130, 38, 2, 131, 38, 2, 135, 42, 2, 135, 42, 2, 136, 42, 1, 138, 43, 2, 138, 44, 1, 139, 43, 2, 142, 45, 1, 145, 48, 2, 145, 48, 2, 147, 49, 2, 149, 50, 4, 150, 50, 2, 153, 52, 4, + 153, 51, 3, 154, 52, 3, 155, 53, 4, 158, 56, 5, 157, 55, 3, 159, 57, 4, 161, 57, 5, 161, 58, 4, 164, 59, 2, 165, 59, 4, 165, 59, 5, 166, 59, 5, 166, 61, 4, 167, 61, 4, 167, 63, 5, 167, 64, 8, 168, 64, 11, 167, 64, 13, 168, 65, 16, 169, 67, 20, 167, 67, 25, + 170, 69, 33, 169, 69, 37, 169, 69, 45, 168, 72, 53, 171, 75, 61, 171, 76, 69, 172, 80, 77, 174, 81, 85, 173, 84, 96, 171, 86, 103, 171, 89, 109, 169, 91, 115, 164, 89, 134, 150, 88, 157, 124, 105, 186, 117, 164, 229, 143, 224, 251, 192, 252, 253, 230, 255, 254, 242, 255, 255, 244, 255, 255, + 232, 255, 254, 196, 253, 254, 150, 224, 251, 144, 150, 217, 174, 104, 167, 186, 106, 138, 187, 103, 123, 189, 99, 119, 186, 95, 111, 188, 93, 100, 189, 90, 92, 188, 88, 82, 189, 87, 77, 190, 87, 69, 189, 87, 65, 190, 86, 61, 191, 86, 56, 191, 85, 53, 192, 85, 51, 191, 84, 46, 192, 83, 43, + 193, 85, 42, 193, 83, 36, 193, 84, 35, 194, 84, 32, 193, 83, 30, 192, 83, 27, 194, 83, 23, 195, 82, 24, 196, 84, 20, 195, 83, 17, 194, 83, 15, 194, 82, 12, 194, 83, 11, 195, 84, 9, 196, 85, 10, 195, 84, 12, 195, 83, 10, 195, 84, 13, 194, 81, 8, 195, 83, 13, 193, 83, 18, + 184, 76, 18, 166, 64, 18, 148, 56, 24, 122, 43, 24, 95, 29, 19, 87, 24, 14, 91, 26, 16, 107, 33, 15, 133, 46, 15, 160, 59, 13, 182, 72, 12, 192, 79, 12, 200, 84, 15, 203, 85, 13, 204, 87, 23, 202, 86, 33, 196, 80, 34, 180, 86, 66, 68, 126, 203, 71, 143, 226, 56, 133, 213, + 59, 151, 227, 23, 108, 188, 11, 87, 162, 44, 117, 195, 103, 57, 106, 113, 58, 107, 119, 60, 105, 114, 56, 105, 102, 52, 110, 85, 47, 109, 69, 46, 103, 57, 48, 100, 53, 48, 99, 55, 51, 102, 60, 51, 103, 72, 52, 109, 88, 55, 116, 97, 55, 118, 108, 61, 122, 109, 62, 125, 107, 61, 126, + 103, 63, 127, 92, 60, 126, 74, 71, 135, 29, 78, 148, 13, 52, 120, 9, 57, 127, 14, 88, 163, 16, 98, 176, 10, 78, 159, 9, 82, 163, 7, 62, 143, 5, 45, 123, 3, 33, 110, 5, 45, 120, 13, 73, 146, 19, 68, 138, 23, 48, 114, 25, 51, 117, 22, 52, 118, 18, 51, 116, 15, 49, 114, + 17, 47, 110, 16, 45, 106, 23, 47, 103, 24, 43, 99, 24, 41, 97, 18, 37, 92, 12, 34, 89, 4, 29, 85, 3, 23, 80, 4, 25, 83, 3, 19, 78, 3, 21, 79, 3, 20, 78, 2, 24, 79, 4, 27, 82, 4, 27, 82, 8, 33, 86, 13, 34, 86, 17, 36, 89, 15, 34, 87, 13, 35, 89, + 10, 36, 91, 5, 33, 90, 5, 30, 89, 8, 30, 87, 12, 30, 87, 15, 30, 82, 15, 28, 78, 11, 25, 74, 5, 22, 71, 4, 24, 72, 4, 23, 71, 7, 26, 74, 16, 29, 77, 26, 31, 77, 36, 34, 79, 44, 33, 82, 47, 29, 81, 50, 30, 82, 48, 28, 78, 43, 27, 74, 40, 25, 73, + 40, 26, 72, 40, 25, 72, 38, 26, 69, 37, 26, 66, 30, 24, 62, 19, 20, 57, 9, 15, 55, 5, 13, 53, 5, 12, 51, 9, 15, 49, 17, 18, 49, 34, 18, 54, 46, 18, 59, 52, 17, 60, 53, 16, 59, 51, 14, 58, 47, 14, 57, 43, 14, 56, 37, 14, 53, 30, 14, 50, 21, 15, 46, + 13, 12, 43, 6, 9, 37, 4, 5, 30, 5, 3, 23, 8, 2, 15, 12, 3, 8, 15, 2, 3, 19, 1, 3, 115, 29, 2, 114, 28, 2, 116, 29, 3, 116, 30, 2, 117, 29, 2, 118, 31, 1, 120, 32, 2, 120, 32, 2, 123, 34, 2, 124, 35, 2, 125, 36, 2, 126, 36, 2, 126, 36, 2, + 127, 36, 1, 128, 36, 2, 130, 38, 2, 132, 41, 2, 134, 40, 2, 134, 40, 2, 137, 43, 1, 138, 43, 2, 138, 43, 2, 141, 45, 2, 142, 46, 2, 144, 45, 1, 146, 48, 3, 147, 48, 2, 148, 49, 3, 150, 50, 3, 152, 51, 4, 153, 52, 4, 154, 55, 4, 156, 55, 4, 157, 55, 5, + 158, 56, 3, 157, 56, 3, 160, 57, 5, 160, 57, 4, 163, 59, 3, 164, 59, 4, 164, 60, 4, 165, 60, 4, 166, 60, 4, 166, 61, 5, 167, 63, 6, 168, 64, 11, 168, 65, 13, 166, 65, 13, 167, 65, 17, 169, 68, 25, 168, 68, 28, 169, 69, 36, 168, 68, 39, 168, 70, 47, 170, 73, 56, + 171, 76, 63, 172, 78, 72, 173, 80, 81, 174, 81, 89, 172, 84, 101, 171, 86, 105, 173, 92, 114, 168, 93, 130, 154, 87, 153, 128, 101, 181, 123, 176, 236, 168, 246, 253, 229, 254, 253, 254, 254, 254, 253, 253, 253, 253, 253, 254, 253, 254, 254, 255, 254, 254, 250, 254, 253, 213, 253, 253, 151, 223, 250, + 160, 134, 206, 188, 110, 160, 193, 111, 133, 192, 102, 123, 189, 99, 115, 189, 95, 105, 187, 91, 95, 190, 92, 88, 188, 88, 79, 190, 88, 74, 191, 88, 69, 189, 86, 62, 191, 87, 59, 192, 85, 56, 195, 87, 56, 193, 86, 50, 192, 84, 46, 193, 85, 44, 194, 85, 39, 195, 85, 36, 195, 85, 31, + 196, 86, 34, 193, 84, 26, 194, 83, 23, 195, 85, 26, 196, 86, 21, 195, 84, 20, 196, 85, 22, 194, 82, 15, 197, 84, 15, 198, 85, 15, 197, 85, 13, 197, 84, 12, 197, 83, 8, 195, 83, 8, 196, 84, 8, 195, 84, 11, 193, 82, 16, 186, 77, 20, 173, 69, 24, 153, 58, 24, 126, 44, 23, + 99, 31, 22, 87, 25, 17, 89, 23, 13, 104, 31, 16, 130, 46, 17, 158, 59, 14, 180, 71, 12, 195, 82, 16, 204, 87, 17, 207, 88, 10, 208, 89, 18, 204, 87, 25, 200, 84, 37, 189, 100, 92, 123, 174, 244, 79, 153, 232, 40, 117, 196, 22, 115, 189, 47, 139, 219, 28, 120, 203, 14, 92, 170, + 51, 82, 152, 89, 56, 114, 106, 59, 119, 101, 58, 119, 91, 54, 116, 78, 52, 113, 64, 54, 108, 54, 54, 106, 48, 50, 106, 49, 51, 106, 56, 55, 109, 67, 58, 115, 81, 57, 119, 90, 58, 123, 99, 65, 129, 97, 64, 129, 94, 66, 130, 86, 62, 127, 74, 73, 133, 47, 97, 164, 12, 47, 115, + 11, 57, 124, 11, 77, 148, 19, 104, 180, 12, 94, 174, 7, 86, 167, 12, 94, 175, 9, 87, 167, 10, 82, 160, 3, 41, 118, 3, 39, 115, 5, 56, 131, 23, 96, 170, 21, 51, 117, 23, 52, 116, 21, 50, 117, 17, 50, 117, 16, 49, 115, 22, 49, 113, 22, 46, 108, 27, 47, 104, 30, 43, 100, + 30, 42, 95, 28, 38, 91, 19, 33, 87, 8, 27, 80, 5, 25, 78, 2, 21, 75, 3, 19, 75, 3, 18, 75, 2, 19, 75, 3, 21, 76, 4, 23, 77, 6, 28, 82, 12, 32, 85, 16, 34, 86, 20, 36, 89, 21, 37, 91, 16, 37, 92, 13, 37, 93, 8, 35, 92, 8, 33, 92, 13, 35, 92, + 14, 32, 88, 18, 32, 87, 18, 30, 80, 16, 28, 78, 11, 26, 74, 5, 24, 71, 6, 27, 75, 6, 24, 76, 9, 28, 79, 18, 32, 83, 27, 37, 85, 34, 37, 85, 35, 37, 82, 37, 37, 80, 37, 35, 80, 35, 33, 78, 33, 30, 75, 32, 29, 72, 33, 29, 71, 32, 30, 71, 31, 30, 69, + 28, 26, 66, 16, 22, 62, 8, 18, 61, 3, 15, 58, 3, 15, 55, 7, 17, 55, 13, 19, 54, 28, 22, 55, 42, 20, 62, 48, 19, 66, 50, 18, 65, 48, 15, 62, 45, 17, 61, 40, 17, 58, 33, 18, 55, 26, 17, 52, 17, 15, 46, 9, 11, 42, 4, 7, 37, 3, 3, 29, 2, 2, 18, + 4, 1, 10, 9, 2, 6, 14, 2, 3, 24, 2, 4, 114, 28, 1, 116, 29, 3, 114, 29, 2, 117, 31, 2, 117, 31, 3, 118, 32, 2, 120, 33, 1, 120, 33, 2, 122, 35, 2, 125, 35, 2, 124, 35, 1, 126, 37, 3, 127, 38, 2, 126, 36, 2, 127, 37, 2, 130, 39, 4, 130, 39, 1, + 133, 41, 2, 134, 42, 3, 137, 42, 2, 139, 44, 2, 139, 45, 2, 140, 45, 2, 142, 46, 3, 143, 47, 3, 144, 47, 2, 147, 48, 3, 147, 50, 5, 149, 50, 3, 152, 50, 4, 152, 51, 3, 154, 53, 4, 155, 54, 4, 156, 54, 4, 159, 58, 6, 158, 56, 5, 161, 59, 6, 162, 59, 4, + 163, 59, 4, 164, 60, 3, 165, 60, 4, 164, 60, 3, 167, 62, 4, 166, 62, 6, 168, 63, 9, 166, 62, 10, 167, 64, 14, 167, 66, 18, 166, 64, 16, 169, 67, 24, 167, 68, 29, 169, 70, 37, 167, 68, 41, 170, 72, 52, 170, 75, 59, 172, 77, 63, 172, 79, 74, 173, 80, 82, 173, 82, 93, + 172, 85, 103, 172, 88, 108, 173, 93, 118, 164, 90, 139, 140, 90, 169, 120, 134, 213, 151, 234, 253, 226, 254, 253, 254, 254, 254, 252, 254, 254, 254, 254, 254, 253, 254, 254, 254, 254, 254, 254, 254, 254, 252, 254, 254, 248, 254, 253, 196, 248, 253, 150, 181, 236, 188, 115, 180, 196, 115, 141, 195, 107, 127, + 190, 99, 120, 188, 97, 108, 190, 95, 101, 188, 92, 91, 189, 90, 83, 191, 88, 77, 191, 88, 71, 190, 88, 66, 193, 88, 63, 192, 86, 58, 192, 86, 55, 195, 88, 54, 193, 86, 48, 194, 85, 43, 193, 86, 43, 195, 86, 40, 195, 86, 36, 194, 85, 31, 195, 86, 27, 194, 86, 28, 196, 84, 22, + 196, 85, 19, 195, 83, 19, 197, 85, 23, 196, 85, 17, 196, 84, 16, 197, 85, 15, 197, 84, 11, 196, 84, 13, 197, 84, 11, 198, 85, 10, 198, 87, 15, 197, 85, 13, 196, 85, 20, 189, 79, 22, 176, 72, 21, 156, 58, 20, 132, 48, 25, 105, 35, 25, 89, 25, 17, 87, 24, 12, 103, 32, 18, + 128, 44, 17, 155, 57, 12, 177, 69, 12, 192, 78, 9, 202, 85, 11, 207, 88, 11, 208, 89, 13, 206, 87, 21, 203, 86, 33, 195, 89, 57, 155, 123, 154, 76, 148, 231, 70, 146, 227, 41, 126, 204, 24, 113, 192, 19, 110, 191, 31, 118, 201, 29, 111, 184, 30, 47, 107, 55, 50, 111, 84, 58, 119, + 78, 59, 119, 68, 56, 114, 56, 56, 111, 48, 54, 112, 39, 50, 110, 41, 51, 112, 49, 55, 114, 60, 60, 116, 72, 63, 121, 79, 63, 123, 81, 64, 126, 83, 67, 129, 77, 67, 128, 72, 70, 129, 59, 76, 139, 28, 78, 147, 10, 59, 129, 9, 76, 146, 18, 107, 184, 15, 101, 181, 10, 94, 174, + 7, 70, 152, 9, 85, 169, 10, 88, 170, 8, 75, 155, 5, 50, 128, 4, 46, 124, 7, 67, 143, 16, 101, 182, 22, 50, 119, 27, 54, 121, 25, 53, 118, 22, 52, 117, 21, 50, 115, 25, 49, 115, 28, 48, 112, 34, 49, 107, 37, 45, 100, 39, 43, 95, 34, 39, 89, 27, 35, 84, 16, 28, 77, + 7, 23, 73, 3, 19, 71, 4, 16, 69, 2, 14, 69, 3, 15, 70, 2, 18, 72, 5, 22, 76, 10, 27, 82, 18, 33, 85, 23, 37, 90, 27, 40, 93, 26, 39, 94, 23, 39, 96, 19, 39, 96, 11, 35, 94, 11, 36, 94, 17, 37, 94, 18, 35, 91, 20, 33, 87, 23, 33, 83, 20, 31, 79, + 13, 28, 76, 7, 26, 75, 8, 29, 79, 6, 27, 82, 6, 28, 84, 11, 31, 87, 20, 37, 91, 26, 38, 90, 28, 37, 89, 27, 35, 85, 28, 36, 83, 29, 34, 82, 25, 32, 79, 26, 31, 77, 27, 31, 76, 26, 31, 76, 24, 29, 73, 21, 26, 71, 11, 21, 68, 5, 19, 67, 2, 17, 63, + 2, 16, 62, 3, 18, 61, 10, 21, 61, 24, 25, 62, 37, 25, 64, 44, 23, 70, 48, 20, 69, 48, 20, 68, 45, 21, 66, 40, 21, 62, 31, 21, 57, 22, 19, 53, 15, 17, 50, 8, 12, 45, 3, 7, 36, 2, 2, 27, 1, 2, 14, 5, 2, 8, 12, 2, 4, 21, 1, 4, 34, 1, 3, + 114, 27, 2, 115, 29, 2, 115, 30, 2, 116, 32, 2, 117, 32, 2, 118, 32, 2, 119, 33, 2, 120, 35, 1, 123, 35, 2, 123, 35, 1, 125, 36, 2, 125, 36, 2, 126, 38, 2, 127, 37, 2, 127, 38, 2, 130, 40, 3, 130, 39, 3, 132, 42, 3, 132, 41, 2, 137, 42, 2, 138, 43, 2, + 139, 45, 2, 140, 47, 2, 141, 46, 2, 142, 46, 2, 145, 48, 3, 147, 49, 4, 148, 50, 5, 150, 50, 3, 150, 50, 3, 152, 51, 3, 156, 56, 4, 156, 55, 4, 157, 57, 4, 157, 56, 5, 158, 56, 4, 159, 57, 5, 161, 57, 4, 162, 58, 4, 163, 61, 5, 165, 62, 5, 163, 62, 2, + 164, 62, 5, 166, 62, 5, 166, 62, 7, 165, 62, 9, 168, 65, 16, 167, 66, 17, 166, 65, 18, 167, 66, 23, 168, 69, 34, 169, 70, 38, 168, 69, 43, 170, 72, 52, 171, 76, 59, 171, 78, 63, 172, 79, 74, 174, 81, 82, 173, 84, 94, 170, 86, 103, 170, 88, 108, 170, 92, 119, 160, 88, 143, + 131, 98, 174, 122, 170, 235, 194, 252, 255, 251, 254, 253, 253, 253, 253, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 252, 254, 254, 227, 252, 254, 155, 209, 245, 183, 118, 191, 198, 118, 149, 201, 113, 134, 194, 104, 123, 188, 98, 112, 190, 95, 103, 189, 94, 94, + 190, 92, 88, 192, 91, 80, 192, 90, 75, 192, 90, 69, 192, 89, 65, 193, 88, 60, 193, 88, 57, 194, 87, 53, 194, 88, 51, 194, 86, 47, 195, 87, 45, 195, 85, 39, 196, 86, 36, 195, 87, 32, 195, 86, 29, 195, 88, 31, 197, 87, 27, 195, 84, 23, 195, 85, 22, 197, 87, 26, 197, 85, 23, + 197, 85, 19, 198, 85, 19, 198, 87, 19, 199, 86, 17, 195, 83, 10, 195, 83, 9, 198, 85, 14, 196, 85, 14, 196, 86, 21, 190, 81, 26, 179, 73, 23, 162, 62, 26, 135, 49, 26, 107, 37, 24, 91, 26, 18, 88, 25, 16, 99, 31, 16, 123, 41, 16, 152, 56, 14, 174, 68, 12, 192, 78, 12, + 202, 88, 14, 208, 88, 16, 209, 90, 15, 208, 90, 23, 205, 88, 36, 199, 84, 44, 185, 92, 81, 79, 128, 203, 30, 115, 194, 33, 118, 196, 43, 132, 209, 16, 94, 169, 10, 81, 153, 23, 112, 187, 25, 89, 155, 19, 43, 106, 33, 49, 111, 59, 63, 119, 57, 62, 117, 50, 58, 115, 42, 55, 116, + 39, 54, 117, 36, 52, 116, 44, 57, 119, 52, 60, 121, 61, 64, 123, 66, 68, 124, 67, 68, 126, 70, 72, 130, 65, 69, 129, 59, 73, 134, 45, 97, 165, 21, 65, 127, 15, 56, 122, 17, 94, 167, 15, 108, 188, 16, 108, 188, 12, 101, 182, 18, 104, 186, 10, 82, 164, 5, 75, 158, 4, 70, 150, + 6, 66, 146, 4, 46, 125, 6, 67, 146, 14, 99, 184, 20, 61, 132, 28, 52, 118, 28, 55, 120, 27, 53, 119, 26, 52, 118, 27, 52, 115, 30, 49, 112, 37, 50, 109, 44, 49, 104, 41, 44, 95, 36, 40, 88, 30, 35, 81, 19, 27, 74, 9, 22, 70, 3, 14, 64, 3, 11, 63, 3, 13, 66, + 2, 12, 65, 3, 18, 70, 4, 22, 75, 12, 30, 82, 22, 36, 88, 28, 39, 92, 31, 41, 95, 31, 44, 98, 26, 43, 99, 23, 42, 98, 19, 42, 98, 17, 40, 97, 19, 38, 95, 22, 37, 92, 22, 36, 87, 24, 35, 85, 23, 31, 81, 13, 27, 77, 8, 26, 77, 6, 28, 81, 4, 30, 85, + 3, 32, 88, 8, 35, 92, 17, 38, 97, 21, 40, 97, 19, 37, 93, 20, 36, 90, 23, 36, 89, 21, 34, 86, 19, 33, 83, 19, 32, 81, 23, 32, 81, 23, 31, 80, 24, 32, 81, 17, 28, 76, 11, 25, 75, 4, 22, 72, 4, 22, 71, 3, 20, 68, 3, 20, 67, 10, 24, 67, 21, 27, 67, + 34, 28, 68, 43, 28, 72, 47, 25, 73, 48, 24, 73, 44, 24, 70, 36, 24, 65, 28, 21, 60, 20, 19, 55, 15, 19, 53, 7, 12, 45, 4, 6, 37, 2, 2, 23, 2, 2, 12, 8, 2, 8, 18, 2, 4, 34, 2, 4, 52, 3, 3, 113, 29, 2, 114, 31, 1, 114, 31, 2, 115, 32, 1, + 117, 32, 3, 116, 33, 2, 118, 34, 2, 121, 36, 2, 122, 36, 3, 124, 37, 2, 123, 36, 2, 125, 37, 3, 127, 39, 3, 128, 39, 3, 128, 38, 3, 129, 39, 4, 130, 40, 2, 131, 41, 2, 135, 42, 3, 135, 42, 2, 137, 43, 2, 137, 42, 2, 140, 45, 3, 141, 45, 2, 142, 47, 4, + 144, 48, 3, 147, 50, 3, 148, 50, 4, 149, 51, 3, 151, 52, 4, 153, 53, 5, 154, 56, 4, 156, 55, 4, 157, 56, 5, 159, 57, 5, 159, 58, 5, 158, 58, 4, 161, 60, 4, 161, 61, 3, 162, 60, 3, 163, 62, 3, 164, 62, 4, 165, 64, 7, 164, 63, 7, 166, 63, 10, 166, 64, 13, + 167, 65, 14, 167, 67, 20, 167, 66, 20, 167, 68, 29, 167, 70, 34, 167, 71, 41, 169, 71, 48, 169, 74, 54, 171, 76, 59, 171, 77, 65, 172, 80, 75, 173, 80, 85, 173, 85, 95, 170, 87, 104, 172, 91, 111, 168, 92, 123, 157, 88, 150, 130, 101, 181, 131, 183, 238, 222, 255, 253, 254, 254, 254, + 254, 254, 254, 254, 254, 254, 253, 253, 253, 253, 253, 253, 254, 254, 254, 253, 254, 254, 254, 254, 254, 254, 254, 254, 237, 253, 254, 167, 218, 247, 183, 123, 199, 201, 120, 157, 202, 114, 135, 194, 105, 124, 189, 99, 113, 189, 97, 106, 188, 93, 96, 191, 94, 90, 192, 92, 83, 194, 91, 77, 192, 91, 72, + 191, 89, 67, 192, 88, 63, 193, 89, 62, 196, 90, 57, 195, 88, 53, 194, 87, 48, 195, 88, 48, 195, 87, 44, 196, 88, 41, 196, 89, 37, 195, 86, 31, 197, 88, 32, 196, 88, 26, 196, 87, 27, 196, 86, 23, 196, 87, 27, 198, 86, 24, 198, 85, 21, 197, 86, 22, 197, 86, 18, 195, 85, 15, + 198, 88, 21, 198, 87, 16, 198, 87, 18, 196, 84, 14, 195, 83, 16, 191, 81, 27, 180, 73, 22, 164, 63, 23, 141, 53, 27, 110, 37, 23, 90, 26, 18, 87, 25, 15, 96, 30, 15, 119, 39, 17, 148, 53, 14, 173, 68, 14, 190, 76, 10, 202, 87, 16, 208, 90, 18, 209, 89, 15, 208, 89, 20, + 207, 90, 36, 203, 86, 45, 190, 84, 59, 119, 121, 171, 71, 161, 238, 51, 131, 214, 40, 128, 209, 30, 109, 188, 17, 90, 166, 17, 101, 179, 27, 117, 186, 8, 46, 111, 8, 42, 112, 31, 56, 121, 41, 58, 122, 43, 59, 121, 39, 57, 121, 34, 56, 121, 33, 55, 121, 37, 57, 122, 47, 64, 127, + 51, 65, 127, 53, 65, 129, 55, 66, 130, 57, 69, 134, 58, 74, 140, 57, 100, 169, 26, 72, 136, 18, 61, 121, 15, 52, 115, 9, 61, 128, 13, 98, 177, 9, 87, 167, 10, 88, 168, 7, 62, 144, 5, 73, 155, 9, 73, 153, 7, 64, 143, 4, 56, 136, 3, 47, 127, 4, 64, 145, 11, 101, 189, + 23, 78, 150, 32, 54, 121, 34, 57, 122, 31, 54, 121, 31, 55, 122, 31, 53, 117, 33, 51, 115, 39, 52, 110, 45, 51, 105, 44, 47, 95, 41, 42, 88, 33, 36, 81, 24, 29, 74, 11, 21, 69, 3, 13, 64, 4, 11, 64, 3, 9, 63, 3, 11, 66, 3, 17, 71, 5, 25, 79, 13, 31, 86, + 22, 36, 91, 30, 42, 97, 32, 45, 100, 30, 46, 101, 27, 45, 102, 24, 45, 102, 18, 41, 101, 17, 40, 99, 20, 40, 97, 23, 40, 95, 23, 36, 89, 25, 35, 87, 21, 33, 83, 11, 27, 79, 7, 27, 80, 5, 30, 84, 4, 32, 88, 3, 31, 92, 5, 35, 97, 11, 40, 101, 16, 41, 102, + 16, 40, 99, 17, 39, 96, 17, 37, 93, 16, 35, 90, 16, 35, 90, 16, 34, 88, 18, 33, 87, 19, 32, 85, 22, 33, 86, 19, 32, 84, 11, 27, 80, 6, 25, 78, 2, 21, 74, 2, 19, 73, 2, 21, 72, 5, 25, 73, 17, 28, 75, 32, 33, 76, 38, 32, 74, 44, 29, 76, 43, 27, 74, + 41, 27, 71, 35, 28, 68, 26, 24, 62, 18, 22, 58, 13, 19, 56, 6, 11, 46, 2, 5, 33, 2, 3, 21, 6, 3, 12, 16, 2, 7, 30, 2, 5, 49, 2, 4, 67, 5, 2, 113, 28, 2, 115, 30, 4, 115, 31, 3, 116, 33, 3, 116, 32, 2, 117, 33, 2, 119, 34, 2, 121, 35, 3, + 120, 33, 2, 124, 36, 2, 123, 36, 2, 124, 37, 2, 125, 37, 3, 127, 38, 3, 129, 40, 3, 129, 40, 3, 130, 40, 3, 131, 41, 2, 135, 43, 3, 136, 44, 3, 136, 44, 3, 138, 45, 2, 140, 44, 2, 140, 45, 3, 141, 47, 3, 143, 48, 4, 146, 49, 5, 147, 50, 4, 149, 51, 5, + 150, 52, 4, 153, 54, 4, 153, 54, 3, 155, 56, 4, 158, 57, 5, 157, 56, 5, 159, 58, 5, 160, 60, 5, 161, 59, 4, 162, 61, 4, 162, 61, 3, 164, 62, 5, 164, 63, 6, 165, 63, 8, 166, 64, 8, 165, 65, 10, 165, 65, 12, 167, 67, 17, 166, 67, 20, 165, 65, 20, 167, 69, 31, + 167, 69, 33, 167, 70, 39, 167, 71, 47, 170, 74, 55, 170, 77, 60, 170, 78, 66, 172, 80, 75, 174, 82, 86, 173, 86, 98, 172, 87, 106, 172, 91, 112, 169, 93, 122, 158, 91, 155, 130, 103, 186, 131, 173, 234, 231, 255, 254, 255, 254, 254, 254, 254, 254, 253, 253, 253, 254, 254, 254, 253, 253, 253, + 254, 254, 254, 253, 254, 254, 254, 254, 254, 253, 254, 254, 238, 253, 254, 174, 214, 243, 187, 124, 203, 204, 124, 164, 203, 115, 137, 195, 106, 126, 189, 100, 117, 190, 98, 108, 192, 97, 101, 191, 94, 92, 192, 93, 86, 192, 93, 79, 194, 92, 76, 192, 91, 70, 193, 91, 68, 194, 90, 64, 194, 89, 59, + 194, 88, 54, 196, 90, 52, 195, 88, 49, 195, 87, 46, 196, 89, 46, 196, 87, 40, 198, 90, 38, 196, 87, 34, 197, 87, 32, 197, 88, 33, 197, 86, 29, 198, 88, 32, 197, 87, 25, 198, 87, 22, 197, 87, 21, 197, 86, 19, 196, 84, 16, 199, 86, 23, 198, 86, 18, 196, 85, 15, 197, 86, 22, + 198, 86, 25, 193, 82, 29, 183, 74, 22, 168, 66, 25, 146, 56, 28, 116, 42, 26, 92, 30, 19, 88, 25, 16, 93, 30, 14, 116, 39, 18, 144, 52, 15, 170, 66, 12, 191, 78, 16, 201, 86, 20, 209, 90, 20, 211, 91, 17, 211, 91, 23, 208, 90, 31, 204, 88, 43, 193, 87, 56, 122, 114, 160, + 45, 129, 212, 60, 151, 230, 17, 102, 180, 11, 80, 153, 7, 68, 141, 17, 103, 177, 38, 150, 210, 3, 29, 97, 9, 51, 118, 22, 57, 124, 26, 59, 125, 35, 59, 125, 39, 60, 126, 33, 59, 124, 32, 58, 123, 35, 59, 123, 44, 63, 127, 50, 68, 130, 53, 70, 134, 53, 70, 136, 54, 78, 146, + 62, 111, 180, 38, 82, 148, 4, 24, 75, 8, 34, 92, 8, 61, 126, 8, 76, 147, 5, 65, 141, 10, 98, 177, 15, 98, 179, 14, 92, 172, 9, 76, 157, 6, 60, 142, 6, 42, 124, 6, 49, 130, 5, 52, 132, 4, 68, 152, 10, 94, 179, 26, 90, 162, 33, 55, 121, 32, 55, 122, 33, 57, 123, + 31, 56, 121, 31, 54, 118, 36, 53, 116, 39, 52, 109, 45, 51, 104, 45, 48, 96, 43, 43, 90, 35, 37, 82, 25, 31, 77, 12, 24, 71, 2, 16, 67, 4, 10, 65, 2, 9, 65, 3, 12, 69, 3, 17, 73, 4, 24, 80, 6, 30, 86, 15, 35, 92, 24, 41, 97, 29, 44, 101, 29, 47, 104, + 29, 47, 106, 25, 47, 106, 21, 46, 104, 19, 43, 103, 19, 41, 100, 23, 41, 97, 24, 40, 94, 22, 36, 88, 19, 33, 85, 10, 29, 80, 6, 29, 82, 4, 29, 85, 3, 30, 89, 3, 33, 95, 5, 36, 100, 11, 41, 106, 15, 43, 105, 19, 44, 104, 15, 42, 101, 14, 39, 98, 14, 38, 96, + 14, 38, 94, 14, 36, 93, 15, 34, 90, 18, 36, 90, 20, 36, 91, 18, 35, 88, 12, 32, 86, 6, 29, 83, 3, 25, 81, 2, 20, 77, 2, 22, 77, 4, 25, 79, 12, 29, 80, 25, 33, 79, 33, 34, 77, 39, 33, 76, 40, 32, 76, 37, 29, 72, 32, 28, 69, 24, 25, 65, 15, 20, 59, + 7, 17, 55, 4, 7, 45, 3, 4, 34, 5, 3, 21, 16, 2, 15, 29, 2, 7, 47, 2, 4, 67, 5, 3, 82, 7, 2, 113, 29, 3, 113, 31, 2, 115, 31, 3, 115, 32, 3, 116, 33, 2, 117, 32, 3, 118, 33, 2, 119, 35, 3, 120, 35, 3, 120, 34, 4, 124, 38, 3, 126, 38, 3, + 125, 38, 3, 127, 38, 3, 128, 38, 3, 128, 39, 2, 128, 40, 2, 131, 41, 2, 133, 44, 2, 134, 43, 3, 136, 44, 2, 138, 44, 2, 139, 44, 2, 140, 46, 2, 140, 46, 3, 142, 48, 3, 144, 50, 5, 146, 51, 6, 148, 52, 4, 150, 53, 5, 152, 54, 4, 154, 55, 4, 155, 56, 5, + 156, 55, 4, 159, 58, 5, 158, 58, 5, 158, 58, 4, 161, 61, 5, 162, 62, 4, 162, 62, 4, 164, 63, 7, 163, 62, 6, 163, 61, 7, 165, 64, 11, 165, 64, 11, 167, 66, 12, 165, 65, 13, 165, 66, 18, 167, 68, 24, 165, 67, 30, 168, 69, 36, 169, 71, 42, 169, 72, 48, 169, 75, 54, + 172, 77, 61, 171, 77, 65, 173, 81, 76, 172, 82, 85, 173, 86, 97, 170, 87, 105, 173, 93, 113, 170, 95, 124, 158, 90, 155, 135, 98, 181, 125, 150, 224, 222, 255, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 253, 253, 254, 254, 254, 254, 254, 254, 252, 254, 254, + 232, 251, 253, 172, 199, 242, 194, 130, 207, 207, 127, 165, 205, 116, 138, 196, 108, 127, 192, 103, 121, 190, 100, 111, 192, 97, 104, 192, 97, 96, 193, 95, 88, 193, 94, 83, 194, 95, 82, 193, 94, 75, 192, 91, 69, 192, 90, 65, 195, 91, 63, 196, 90, 57, 196, 89, 52, 196, 90, 51, 195, 88, 46, + 196, 89, 43, 195, 88, 42, 196, 87, 39, 196, 89, 36, 197, 90, 38, 198, 89, 35, 195, 86, 29, 196, 87, 30, 197, 86, 27, 196, 88, 28, 197, 88, 22, 198, 88, 24, 197, 86, 21, 196, 86, 22, 198, 85, 18, 197, 87, 23, 198, 86, 19, 196, 85, 22, 194, 84, 29, 186, 78, 27, 170, 68, 25, + 148, 57, 26, 121, 44, 25, 93, 30, 18, 86, 25, 14, 90, 26, 12, 112, 37, 16, 141, 51, 18, 166, 63, 16, 187, 75, 16, 202, 86, 23, 209, 91, 23, 211, 90, 18, 212, 92, 24, 212, 92, 31, 207, 90, 39, 199, 88, 56, 112, 103, 143, 27, 106, 185, 60, 149, 235, 41, 125, 211, 16, 86, 161, + 8, 70, 140, 40, 158, 230, 26, 119, 191, 4, 40, 107, 5, 42, 108, 8, 47, 113, 25, 65, 131, 29, 60, 125, 28, 57, 122, 22, 52, 116, 26, 56, 118, 26, 55, 117, 34, 59, 123, 39, 62, 125, 39, 63, 129, 39, 66, 134, 42, 90, 163, 37, 96, 162, 7, 40, 96, 9, 33, 86, 12, 43, 102, + 15, 67, 131, 9, 67, 138, 10, 102, 178, 24, 131, 218, 21, 127, 213, 24, 114, 200, 13, 96, 182, 6, 60, 140, 8, 64, 144, 4, 56, 137, 3, 57, 139, 4, 81, 167, 10, 91, 177, 28, 87, 161, 34, 56, 122, 34, 57, 123, 29, 54, 121, 32, 55, 121, 33, 54, 118, 36, 52, 114, 45, 55, 112, + 46, 51, 105, 46, 50, 99, 44, 46, 94, 37, 41, 88, 28, 34, 82, 15, 27, 76, 3, 18, 72, 3, 13, 69, 3, 11, 70, 3, 13, 72, 3, 18, 77, 3, 23, 82, 3, 30, 89, 7, 34, 93, 19, 40, 100, 25, 45, 103, 30, 48, 107, 30, 50, 109, 26, 49, 109, 22, 46, 107, 22, 46, 105, + 23, 44, 104, 24, 44, 100, 25, 42, 96, 23, 38, 92, 14, 32, 84, 9, 30, 83, 5, 26, 82, 3, 27, 85, 4, 33, 94, 6, 36, 100, 13, 42, 105, 19, 46, 110, 18, 46, 108, 16, 43, 106, 15, 42, 104, 12, 39, 101, 10, 39, 100, 9, 37, 97, 12, 37, 95, 16, 36, 94, 17, 35, 92, + 20, 37, 94, 21, 38, 94, 12, 33, 89, 7, 30, 87, 3, 27, 85, 2, 25, 84, 2, 23, 81, 3, 26, 82, 6, 29, 82, 18, 33, 83, 29, 35, 82, 32, 33, 77, 35, 34, 75, 31, 30, 72, 25, 26, 68, 18, 22, 65, 10, 19, 62, 5, 14, 55, 4, 8, 43, 4, 4, 31, 14, 4, 24, + 30, 3, 17, 47, 4, 8, 64, 5, 3, 80, 7, 2, 91, 11, 2, 112, 28, 2, 115, 30, 2, 114, 29, 2, 115, 31, 3, 116, 32, 2, 116, 34, 3, 116, 34, 2, 119, 35, 4, 120, 35, 3, 121, 36, 3, 121, 35, 3, 127, 39, 4, 125, 39, 4, 126, 37, 3, 128, 39, 3, 129, 41, 4, + 129, 40, 3, 130, 41, 2, 132, 43, 2, 136, 45, 3, 136, 44, 2, 138, 44, 2, 140, 47, 3, 141, 48, 3, 142, 49, 3, 143, 50, 5, 143, 50, 4, 146, 51, 5, 149, 53, 5, 150, 52, 5, 152, 55, 6, 154, 56, 3, 156, 57, 6, 156, 57, 4, 158, 58, 4, 160, 59, 5, 160, 59, 5, + 161, 61, 5, 161, 59, 5, 162, 61, 6, 164, 62, 7, 165, 63, 9, 165, 65, 11, 165, 64, 14, 163, 63, 8, 166, 66, 14, 165, 66, 17, 166, 68, 21, 165, 66, 24, 165, 68, 28, 166, 69, 35, 168, 71, 44, 168, 73, 51, 169, 74, 56, 172, 78, 63, 171, 78, 66, 171, 80, 74, 171, 82, 84, + 172, 84, 95, 171, 87, 105, 173, 92, 111, 171, 93, 120, 162, 92, 152, 141, 94, 176, 121, 129, 212, 190, 239, 252, 250, 254, 252, 253, 254, 254, 253, 253, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 249, 254, 254, 215, 249, 252, 176, 185, 239, 200, 136, 210, 208, 129, 167, + 202, 116, 138, 195, 109, 129, 192, 103, 122, 191, 100, 114, 190, 99, 107, 192, 99, 101, 194, 104, 107, 197, 112, 119, 196, 114, 123, 198, 111, 116, 196, 100, 89, 193, 92, 68, 194, 90, 63, 195, 92, 61, 198, 93, 59, 197, 91, 55, 196, 91, 49, 196, 90, 49, 195, 89, 46, 196, 88, 41, 197, 89, 39, + 197, 89, 36, 196, 87, 34, 197, 88, 34, 198, 88, 36, 197, 88, 30, 197, 87, 28, 197, 86, 21, 199, 89, 29, 198, 86, 23, 198, 86, 22, 197, 86, 22, 199, 89, 27, 197, 86, 25, 198, 87, 26, 196, 86, 33, 188, 80, 28, 170, 69, 24, 151, 59, 25, 124, 45, 24, 98, 33, 21, 85, 23, 13, + 89, 26, 13, 106, 35, 16, 136, 48, 18, 163, 62, 17, 185, 74, 18, 198, 82, 19, 207, 89, 21, 210, 90, 17, 213, 92, 23, 213, 93, 29, 211, 94, 39, 203, 95, 61, 129, 114, 160, 8, 89, 170, 37, 123, 209, 36, 119, 206, 9, 77, 146, 13, 80, 153, 25, 121, 208, 8, 63, 132, 8, 40, 102, + 4, 34, 95, 4, 30, 89, 6, 37, 95, 6, 35, 93, 8, 36, 96, 7, 43, 104, 7, 37, 96, 11, 41, 100, 14, 44, 103, 12, 44, 102, 6, 40, 101, 17, 64, 132, 42, 118, 191, 10, 50, 111, 6, 28, 79, 5, 34, 87, 8, 28, 85, 5, 52, 121, 7, 70, 145, 10, 97, 175, 23, 130, 215, + 27, 132, 218, 32, 143, 228, 26, 130, 215, 22, 113, 193, 6, 58, 141, 3, 49, 134, 3, 54, 138, 4, 82, 170, 12, 101, 187, 27, 76, 150, 37, 57, 123, 37, 56, 122, 41, 59, 125, 40, 58, 120, 41, 55, 118, 46, 55, 114, 49, 55, 110, 51, 52, 106, 50, 50, 99, 50, 48, 96, 41, 42, 90, + 31, 37, 86, 19, 30, 83, 5, 23, 79, 3, 17, 75, 2, 14, 75, 3, 14, 77, 3, 18, 80, 3, 22, 85, 2, 27, 89, 5, 34, 96, 11, 38, 99, 22, 43, 105, 30, 49, 109, 32, 49, 111, 31, 49, 111, 30, 50, 111, 29, 47, 108, 29, 47, 106, 26, 46, 102, 26, 43, 98, 23, 39, 93, + 17, 34, 87, 9, 30, 83, 5, 27, 83, 4, 29, 87, 4, 33, 93, 9, 37, 100, 18, 45, 107, 24, 49, 114, 23, 48, 112, 24, 48, 111, 18, 44, 107, 15, 42, 104, 11, 39, 100, 10, 37, 99, 12, 36, 97, 19, 39, 98, 18, 39, 96, 19, 37, 94, 19, 36, 93, 11, 33, 88, 7, 31, 87, + 2, 29, 86, 3, 28, 86, 3, 27, 87, 2, 26, 86, 3, 29, 86, 12, 34, 87, 21, 35, 84, 27, 32, 80, 30, 31, 77, 26, 30, 74, 19, 23, 69, 12, 21, 65, 7, 18, 60, 4, 12, 52, 6, 8, 41, 9, 6, 31, 26, 5, 25, 44, 6, 16, 62, 7, 8, 76, 8, 2, 89, 11, 3, + 100, 17, 2, 113, 30, 3, 115, 32, 1, 115, 32, 1, 115, 31, 2, 116, 32, 2, 116, 33, 2, 118, 34, 3, 119, 34, 3, 120, 36, 4, 120, 38, 4, 124, 39, 4, 125, 38, 3, 125, 39, 4, 128, 40, 4, 129, 40, 3, 129, 39, 3, 130, 42, 2, 130, 42, 2, 133, 44, 2, 135, 43, 3, + 136, 46, 2, 138, 45, 2, 140, 49, 4, 140, 49, 4, 141, 50, 4, 143, 51, 4, 144, 50, 5, 144, 50, 5, 147, 53, 5, 150, 54, 6, 152, 55, 7, 152, 55, 4, 153, 56, 4, 157, 58, 5, 159, 58, 5, 159, 60, 6, 160, 60, 6, 160, 59, 7, 161, 60, 7, 163, 63, 9, 163, 62, 8, + 165, 65, 11, 164, 64, 12, 165, 65, 13, 166, 64, 14, 166, 65, 15, 167, 68, 21, 165, 68, 24, 165, 68, 28, 165, 68, 30, 167, 69, 36, 168, 71, 45, 170, 74, 52, 169, 74, 56, 171, 77, 63, 171, 78, 67, 172, 81, 77, 172, 83, 85, 173, 87, 97, 171, 88, 105, 173, 92, 110, 174, 97, 121, + 165, 95, 144, 148, 95, 173, 132, 117, 199, 148, 202, 244, 228, 254, 253, 251, 254, 253, 253, 254, 254, 254, 254, 254, 254, 254, 254, 253, 254, 254, 253, 254, 254, 249, 254, 254, 225, 252, 253, 180, 232, 251, 182, 158, 230, 206, 140, 210, 210, 132, 170, 203, 119, 141, 197, 112, 131, 193, 106, 125, 190, 100, 116, + 194, 102, 114, 200, 119, 136, 205, 136, 159, 203, 133, 156, 204, 133, 154, 203, 133, 157, 201, 126, 144, 196, 103, 90, 194, 95, 67, 194, 92, 63, 197, 93, 59, 195, 91, 54, 196, 91, 52, 196, 91, 49, 195, 90, 47, 195, 88, 43, 198, 91, 45, 197, 90, 41, 199, 90, 43, 197, 88, 36, 197, 87, 34, + 198, 87, 36, 198, 89, 32, 198, 90, 32, 198, 89, 27, 199, 88, 26, 198, 87, 22, 200, 88, 24, 198, 87, 24, 198, 86, 22, 200, 87, 26, 195, 86, 30, 188, 77, 24, 174, 71, 26, 156, 61, 28, 130, 47, 25, 101, 35, 23, 87, 26, 16, 90, 27, 17, 102, 34, 17, 132, 45, 18, 159, 60, 20, + 180, 72, 20, 198, 81, 22, 209, 91, 25, 210, 92, 20, 214, 93, 20, 214, 94, 27, 214, 96, 42, 207, 113, 103, 141, 122, 168, 19, 105, 189, 32, 117, 204, 25, 105, 184, 12, 77, 148, 6, 64, 131, 11, 66, 130, 8, 56, 123, 11, 45, 102, 9, 26, 72, 6, 12, 52, 5, 11, 52, 10, 28, 79, + 24, 74, 137, 31, 86, 152, 31, 72, 136, 10, 34, 91, 7, 37, 94, 6, 38, 94, 10, 53, 113, 28, 105, 174, 8, 51, 113, 6, 33, 91, 5, 21, 74, 4, 17, 67, 8, 24, 80, 15, 73, 145, 16, 95, 172, 20, 110, 191, 13, 112, 193, 21, 131, 220, 20, 114, 202, 13, 99, 186, 5, 75, 160, + 4, 74, 159, 4, 61, 146, 4, 58, 143, 5, 88, 178, 16, 128, 218, 31, 75, 147, 45, 59, 121, 47, 59, 120, 50, 58, 119, 50, 57, 116, 52, 56, 115, 59, 58, 114, 63, 57, 111, 63, 53, 107, 63, 52, 106, 59, 51, 103, 52, 48, 96, 39, 43, 91, 27, 35, 88, 10, 28, 84, 3, 24, 82, + 3, 19, 81, 3, 15, 81, 2, 19, 84, 3, 22, 88, 2, 28, 91, 4, 34, 98, 13, 41, 103, 23, 46, 106, 33, 50, 110, 37, 53, 111, 39, 53, 112, 38, 52, 111, 39, 53, 112, 37, 51, 109, 34, 49, 106, 32, 47, 102, 28, 42, 96, 19, 35, 90, 12, 31, 86, 6, 28, 84, 4, 30, 87, + 7, 35, 93, 12, 39, 101, 23, 46, 109, 29, 50, 114, 31, 50, 115, 26, 47, 112, 22, 45, 109, 18, 42, 105, 14, 40, 104, 13, 39, 101, 16, 40, 99, 20, 41, 98, 21, 39, 97, 22, 40, 97, 16, 36, 93, 15, 37, 93, 7, 33, 89, 4, 30, 87, 3, 29, 88, 2, 28, 87, 2, 30, 88, + 3, 31, 88, 7, 33, 89, 14, 34, 85, 21, 33, 81, 25, 31, 77, 21, 28, 73, 14, 23, 69, 7, 18, 63, 5, 14, 58, 5, 11, 48, 9, 9, 39, 23, 7, 31, 42, 7, 22, 56, 6, 12, 75, 9, 4, 89, 14, 2, 100, 16, 3, 109, 22, 3, 114, 29, 3, 114, 31, 2, 115, 32, 2, + 116, 33, 2, 116, 33, 2, 116, 33, 3, 117, 34, 3, 118, 35, 4, 119, 36, 4, 120, 38, 5, 121, 39, 4, 124, 40, 5, 123, 39, 4, 126, 41, 5, 129, 41, 4, 129, 41, 5, 130, 41, 4, 130, 42, 2, 132, 44, 2, 133, 44, 2, 135, 45, 3, 136, 46, 3, 137, 47, 3, 139, 49, 4, + 141, 50, 5, 142, 49, 5, 144, 52, 7, 145, 52, 6, 146, 52, 6, 150, 56, 8, 152, 55, 6, 151, 55, 5, 155, 57, 5, 156, 56, 4, 159, 59, 7, 158, 58, 6, 160, 59, 6, 161, 61, 8, 161, 60, 8, 164, 62, 10, 163, 62, 8, 163, 62, 8, 164, 64, 10, 165, 64, 13, 164, 65, 15, + 165, 65, 19, 164, 64, 19, 164, 66, 25, 165, 68, 28, 166, 69, 30, 166, 69, 36, 167, 71, 45, 167, 72, 51, 169, 75, 58, 170, 76, 63, 170, 78, 68, 172, 80, 75, 172, 82, 83, 171, 85, 93, 172, 88, 104, 175, 94, 111, 174, 96, 118, 174, 100, 143, 161, 98, 171, 146, 104, 192, 136, 152, 222, + 180, 243, 253, 232, 254, 253, 249, 253, 254, 253, 254, 254, 252, 254, 253, 250, 254, 254, 242, 254, 253, 209, 251, 253, 163, 233, 249, 159, 180, 235, 194, 137, 213, 210, 136, 192, 208, 131, 161, 203, 121, 143, 197, 113, 133, 196, 110, 130, 194, 109, 125, 200, 119, 138, 209, 143, 175, 208, 144, 171, 209, 144, 174, + 210, 143, 173, 208, 142, 171, 207, 141, 168, 201, 127, 142, 196, 96, 73, 195, 94, 66, 194, 92, 59, 196, 93, 57, 197, 93, 54, 198, 93, 52, 198, 92, 51, 196, 90, 47, 197, 91, 45, 198, 91, 42, 197, 89, 39, 197, 88, 39, 197, 89, 35, 197, 88, 32, 198, 88, 29, 197, 89, 27, 197, 87, 23, + 199, 90, 30, 200, 91, 29, 201, 89, 27, 199, 88, 24, 199, 86, 20, 198, 86, 24, 197, 86, 29, 190, 83, 31, 177, 73, 25, 159, 63, 28, 138, 53, 29, 103, 35, 24, 84, 25, 16, 85, 23, 14, 97, 31, 19, 126, 44, 22, 153, 58, 20, 179, 71, 23, 198, 83, 26, 206, 89, 26, 212, 93, 28, + 213, 92, 22, 215, 93, 27, 214, 97, 40, 204, 113, 111, 179, 139, 188, 57, 126, 207, 56, 136, 221, 25, 100, 178, 11, 75, 141, 8, 51, 114, 7, 29, 82, 11, 34, 86, 9, 19, 69, 9, 18, 57, 8, 15, 56, 12, 30, 78, 21, 57, 115, 26, 74, 134, 16, 45, 101, 5, 35, 91, 11, 47, 104, + 6, 30, 84, 4, 22, 78, 6, 49, 108, 7, 57, 118, 8, 37, 95, 6, 24, 80, 7, 22, 79, 6, 19, 76, 3, 43, 108, 8, 64, 138, 7, 83, 164, 20, 133, 223, 39, 157, 240, 26, 130, 215, 17, 107, 192, 12, 90, 175, 6, 78, 163, 5, 73, 159, 6, 71, 158, 4, 68, 157, 5, 90, 184, + 13, 133, 220, 36, 50, 112, 59, 64, 120, 61, 64, 118, 66, 61, 117, 66, 58, 115, 68, 58, 115, 73, 58, 115, 78, 54, 115, 78, 51, 113, 79, 52, 112, 76, 54, 111, 62, 51, 104, 47, 47, 97, 34, 41, 94, 16, 33, 90, 5, 30, 89, 3, 26, 89, 2, 18, 84, 4, 22, 87, 3, 25, 89, + 3, 29, 92, 5, 37, 100, 13, 41, 101, 28, 47, 106, 36, 50, 109, 41, 54, 112, 46, 56, 114, 49, 57, 115, 48, 57, 115, 47, 56, 113, 43, 54, 110, 38, 51, 105, 31, 45, 99, 26, 43, 96, 16, 34, 88, 12, 33, 88, 9, 33, 90, 9, 35, 93, 16, 41, 101, 27, 49, 110, 31, 52, 115, + 34, 51, 116, 28, 47, 112, 25, 47, 109, 20, 43, 105, 17, 41, 104, 16, 39, 102, 23, 42, 102, 22, 41, 100, 25, 43, 99, 28, 43, 100, 22, 39, 97, 16, 36, 92, 10, 36, 93, 2, 33, 90, 3, 34, 92, 4, 32, 90, 3, 31, 90, 3, 31, 89, 4, 33, 89, 11, 33, 86, 18, 32, 81, + 20, 30, 77, 16, 26, 72, 10, 20, 65, 4, 15, 59, 5, 11, 52, 6, 11, 44, 17, 8, 38, 35, 7, 29, 56, 10, 19, 69, 9, 7, 85, 12, 2, 98, 18, 2, 109, 24, 3, 111, 24, 3, 112, 30, 2, 114, 31, 2, 114, 31, 2, 115, 33, 2, 116, 33, 3, 117, 35, 4, 117, 35, 4, + 119, 37, 5, 119, 38, 5, 121, 40, 4, 120, 39, 4, 123, 40, 5, 123, 40, 5, 126, 42, 6, 127, 42, 5, 128, 41, 5, 131, 42, 5, 130, 41, 3, 131, 43, 3, 132, 44, 3, 134, 46, 3, 136, 46, 5, 139, 48, 3, 139, 46, 3, 139, 48, 3, 142, 50, 6, 142, 51, 6, 143, 49, 4, + 146, 54, 8, 148, 55, 8, 150, 55, 7, 152, 57, 9, 153, 56, 8, 154, 56, 6, 156, 58, 7, 157, 57, 7, 159, 59, 9, 161, 61, 9, 162, 61, 9, 161, 60, 7, 163, 62, 8, 163, 62, 8, 162, 62, 10, 165, 66, 15, 165, 64, 16, 164, 65, 18, 165, 66, 20, 164, 66, 24, 165, 69, 30, + 164, 68, 34, 165, 69, 38, 165, 71, 46, 168, 74, 54, 167, 75, 59, 170, 77, 67, 170, 79, 71, 171, 81, 77, 170, 82, 83, 170, 85, 92, 173, 88, 103, 175, 94, 111, 179, 99, 120, 176, 102, 133, 173, 101, 157, 159, 105, 179, 150, 116, 203, 153, 190, 238, 172, 241, 253, 199, 249, 253, 216, 250, 253, + 216, 251, 253, 199, 248, 252, 160, 237, 252, 124, 211, 247, 118, 164, 225, 157, 128, 194, 195, 136, 203, 207, 135, 184, 205, 131, 156, 202, 121, 143, 200, 118, 137, 197, 115, 133, 196, 114, 133, 207, 142, 173, 212, 151, 190, 213, 154, 193, 212, 155, 196, 210, 151, 193, 210, 147, 189, 210, 144, 183, 207, 139, 169, + 197, 105, 94, 196, 96, 69, 195, 94, 64, 197, 95, 61, 198, 94, 57, 197, 91, 51, 200, 94, 53, 199, 93, 51, 197, 90, 45, 197, 90, 42, 198, 90, 42, 197, 89, 39, 199, 90, 39, 199, 88, 35, 199, 91, 37, 196, 87, 30, 199, 91, 32, 197, 88, 28, 197, 87, 23, 199, 89, 25, 199, 88, 27, + 199, 88, 25, 198, 88, 25, 198, 87, 30, 192, 84, 29, 181, 76, 27, 163, 64, 26, 141, 54, 26, 109, 40, 27, 89, 31, 25, 82, 22, 15, 93, 28, 18, 120, 42, 24, 151, 56, 25, 173, 68, 23, 193, 79, 25, 206, 89, 31, 214, 95, 33, 213, 93, 26, 214, 95, 33, 212, 96, 43, 197, 122, 136, + 155, 181, 244, 93, 160, 237, 37, 111, 186, 13, 72, 138, 8, 42, 100, 13, 55, 113, 9, 39, 96, 8, 35, 89, 14, 47, 103, 27, 64, 117, 20, 43, 94, 27, 82, 148, 28, 84, 150, 5, 14, 54, 28, 71, 132, 7, 31, 86, 12, 47, 103, 9, 41, 98, 10, 44, 102, 4, 45, 103, 8, 44, 104, + 10, 67, 130, 12, 62, 128, 9, 52, 117, 7, 37, 100, 6, 52, 122, 10, 80, 158, 15, 105, 190, 16, 119, 208, 24, 131, 223, 26, 134, 221, 26, 116, 204, 17, 86, 169, 15, 91, 176, 10, 88, 175, 3, 72, 159, 2, 69, 159, 6, 98, 188, 15, 102, 177, 42, 62, 125, 71, 68, 120, 78, 65, 120, + 84, 61, 122, 87, 60, 123, 86, 57, 119, 90, 56, 119, 93, 55, 117, 96, 55, 115, 98, 57, 119, 87, 55, 114, 71, 53, 109, 56, 50, 101, 40, 46, 98, 23, 39, 97, 6, 34, 93, 3, 31, 94, 3, 23, 89, 2, 24, 89, 2, 28, 92, 3, 32, 96, 7, 39, 100, 18, 44, 102, 31, 48, 105, + 41, 53, 110, 48, 57, 113, 54, 59, 115, 54, 59, 115, 54, 61, 115, 54, 62, 115, 49, 58, 113, 45, 54, 109, 37, 48, 103, 29, 45, 99, 17, 36, 90, 11, 34, 89, 9, 36, 91, 12, 39, 97, 20, 45, 103, 27, 48, 109, 34, 53, 117, 35, 53, 117, 31, 50, 114, 27, 47, 111, 21, 45, 106, + 19, 43, 104, 16, 41, 100, 19, 41, 99, 22, 41, 99, 23, 41, 98, 26, 42, 98, 23, 42, 97, 15, 37, 94, 9, 36, 93, 3, 33, 91, 2, 31, 91, 1, 31, 90, 3, 31, 91, 3, 33, 90, 4, 35, 90, 8, 33, 85, 11, 29, 81, 12, 27, 76, 10, 23, 70, 6, 19, 64, 4, 15, 57, + 6, 11, 50, 11, 10, 43, 25, 8, 37, 44, 9, 25, 63, 10, 14, 79, 12, 4, 95, 18, 3, 107, 22, 2, 111, 24, 2, 112, 23, 2, 110, 31, 2, 113, 33, 2, 114, 32, 3, 115, 32, 3, 115, 33, 2, 115, 33, 3, 115, 33, 3, 116, 35, 4, 121, 39, 8, 121, 40, 7, 122, 41, 9, + 123, 40, 9, 125, 43, 12, 125, 43, 8, 125, 43, 7, 128, 42, 7, 129, 44, 7, 128, 43, 7, 131, 45, 7, 132, 44, 6, 132, 45, 5, 136, 48, 6, 137, 47, 5, 138, 47, 4, 139, 50, 5, 141, 50, 5, 141, 49, 5, 143, 52, 7, 146, 53, 10, 146, 53, 9, 147, 53, 7, 151, 57, 10, + 152, 56, 9, 153, 56, 8, 157, 59, 9, 157, 59, 9, 159, 61, 12, 162, 62, 11, 161, 62, 11, 162, 62, 9, 163, 63, 10, 164, 63, 11, 165, 65, 13, 163, 64, 14, 165, 67, 20, 164, 65, 21, 164, 66, 25, 163, 67, 28, 164, 69, 30, 166, 70, 38, 164, 70, 42, 164, 70, 49, 166, 75, 59, + 167, 75, 64, 168, 76, 68, 169, 78, 72, 170, 80, 76, 168, 81, 82, 170, 85, 91, 173, 89, 100, 172, 90, 108, 177, 97, 115, 179, 103, 126, 178, 105, 142, 177, 106, 166, 169, 111, 190, 163, 125, 202, 144, 179, 239, 135, 207, 250, 134, 212, 249, 118, 202, 247, 101, 188, 241, 94, 167, 229, 107, 155, 213, + 148, 175, 204, 190, 195, 217, 198, 177, 213, 206, 147, 190, 206, 137, 160, 202, 127, 148, 202, 121, 141, 200, 123, 141, 202, 134, 151, 211, 187, 214, 223, 211, 231, 226, 223, 238, 216, 204, 227, 208, 168, 213, 209, 155, 205, 210, 150, 195, 206, 143, 174, 197, 111, 110, 197, 96, 71, 196, 94, 65, 199, 96, 62, + 197, 94, 58, 199, 93, 53, 199, 93, 52, 198, 92, 51, 198, 92, 49, 196, 89, 42, 198, 92, 45, 199, 91, 43, 199, 90, 40, 200, 93, 40, 198, 90, 34, 199, 91, 34, 198, 89, 31, 198, 88, 27, 198, 88, 29, 198, 87, 29, 198, 89, 28, 197, 89, 26, 198, 87, 27, 200, 91, 34, 193, 84, 31, + 184, 76, 24, 167, 67, 29, 143, 54, 25, 114, 41, 27, 93, 31, 26, 89, 31, 26, 93, 30, 22, 116, 39, 25, 146, 54, 29, 170, 67, 30, 193, 81, 31, 206, 88, 32, 211, 93, 32, 214, 94, 34, 210, 93, 35, 203, 106, 92, 180, 141, 201, 120, 151, 221, 59, 125, 207, 43, 113, 187, 21, 82, 149, + 32, 88, 154, 7, 32, 88, 13, 60, 122, 17, 63, 125, 23, 78, 143, 50, 140, 215, 31, 93, 162, 16, 57, 116, 12, 25, 68, 33, 75, 127, 38, 105, 179, 27, 88, 157, 20, 59, 122, 10, 37, 97, 8, 37, 97, 11, 45, 105, 9, 61, 124, 11, 75, 145, 32, 104, 180, 25, 107, 186, 28, 109, 190, + 17, 71, 145, 7, 54, 133, 17, 111, 194, 27, 138, 227, 18, 107, 194, 10, 101, 191, 5, 64, 154, 4, 56, 144, 5, 82, 170, 7, 97, 187, 9, 97, 185, 5, 78, 168, 5, 78, 162, 14, 54, 127, 46, 84, 152, 83, 66, 119, 90, 64, 124, 95, 61, 124, 95, 58, 123, 96, 57, 120, 98, 57, 119, + 101, 56, 115, 102, 56, 112, 101, 59, 117, 94, 60, 117, 77, 57, 112, 59, 54, 105, 41, 48, 103, 22, 41, 99, 11, 38, 100, 3, 32, 96, 3, 23, 88, 2, 28, 92, 2, 29, 93, 3, 33, 97, 8, 39, 100, 21, 44, 103, 34, 50, 107, 45, 55, 112, 51, 58, 113, 56, 61, 116, 56, 64, 119, + 54, 62, 117, 54, 63, 119, 50, 60, 116, 45, 56, 112, 38, 51, 107, 30, 44, 100, 18, 37, 93, 10, 34, 90, 8, 35, 93, 8, 37, 97, 13, 41, 102, 22, 48, 110, 29, 52, 116, 30, 52, 116, 28, 49, 113, 21, 47, 110, 14, 42, 105, 11, 41, 103, 13, 41, 100, 13, 39, 99, 15, 39, 98, + 19, 40, 97, 20, 40, 97, 17, 38, 94, 10, 36, 92, 7, 35, 93, 2, 30, 88, 2, 29, 89, 2, 30, 90, 2, 29, 89, 2, 30, 88, 2, 31, 89, 5, 32, 87, 8, 30, 82, 9, 26, 76, 6, 22, 70, 5, 20, 64, 5, 16, 58, 9, 14, 51, 17, 10, 40, 37, 9, 36, 54, 11, 22, + 71, 12, 11, 89, 16, 3, 103, 22, 2, 112, 26, 4, 114, 26, 3, 112, 25, 2, 106, 29, 2, 108, 32, 3, 110, 32, 3, 111, 32, 2, 108, 32, 3, 108, 31, 3, 111, 34, 5, 111, 34, 5, 113, 36, 8, 118, 41, 15, 118, 41, 15, 121, 42, 17, 121, 42, 16, 124, 44, 16, 126, 44, 16, + 126, 45, 14, 125, 43, 11, 125, 43, 10, 126, 43, 9, 128, 43, 7, 130, 45, 8, 134, 45, 7, 135, 47, 5, 135, 47, 4, 138, 51, 6, 138, 50, 5, 140, 50, 7, 141, 51, 8, 143, 51, 8, 144, 52, 10, 148, 55, 12, 146, 54, 9, 150, 57, 11, 153, 58, 12, 154, 58, 11, 155, 60, 11, + 158, 61, 12, 158, 59, 9, 161, 60, 11, 161, 62, 11, 162, 62, 9, 163, 64, 13, 162, 64, 12, 163, 65, 15, 165, 66, 23, 163, 65, 23, 164, 67, 29, 163, 68, 32, 162, 67, 32, 161, 66, 36, 160, 68, 44, 163, 72, 55, 162, 72, 59, 165, 77, 66, 164, 76, 69, 168, 79, 75, 169, 83, 79, + 166, 82, 81, 168, 84, 87, 172, 87, 96, 171, 89, 106, 177, 96, 114, 177, 99, 120, 179, 105, 131, 180, 109, 149, 179, 110, 170, 175, 114, 187, 154, 122, 203, 134, 142, 220, 112, 135, 218, 98, 127, 202, 130, 176, 213, 207, 238, 245, 252, 255, 255, 255, 255, 255, 255, 255, 255, 251, 255, 255, 223, 226, 232, + 204, 146, 170, 204, 134, 155, 203, 131, 149, 210, 153, 169, 237, 231, 234, 254, 255, 255, 253, 255, 254, 253, 254, 254, 251, 255, 254, 229, 234, 242, 201, 170, 217, 207, 154, 205, 208, 145, 177, 200, 115, 116, 199, 100, 78, 196, 97, 69, 199, 98, 67, 200, 96, 62, 198, 94, 56, 199, 94, 53, 199, 93, 51, + 198, 92, 48, 199, 93, 49, 197, 92, 46, 198, 93, 47, 199, 91, 46, 199, 92, 43, 199, 92, 39, 198, 91, 37, 198, 90, 34, 200, 91, 35, 198, 88, 31, 199, 89, 35, 198, 88, 27, 200, 90, 34, 196, 88, 25, 199, 88, 34, 196, 87, 37, 187, 81, 32, 170, 70, 27, 147, 56, 25, 122, 45, 27, + 94, 30, 22, 85, 25, 17, 92, 30, 20, 113, 40, 26, 144, 54, 33, 167, 66, 34, 189, 78, 31, 203, 87, 39, 211, 95, 44, 212, 94, 46, 211, 99, 62, 194, 123, 144, 129, 142, 212, 59, 106, 178, 44, 108, 184, 37, 99, 169, 34, 90, 155, 16, 59, 119, 10, 40, 101, 37, 100, 170, 39, 116, 189, + 59, 156, 226, 33, 96, 162, 9, 34, 94, 8, 21, 69, 24, 59, 119, 39, 119, 191, 29, 89, 162, 23, 76, 149, 35, 87, 155, 23, 83, 151, 16, 66, 133, 8, 30, 87, 12, 47, 108, 10, 61, 132, 20, 100, 176, 37, 128, 214, 37, 118, 202, 10, 73, 150, 8, 71, 152, 10, 95, 177, 10, 73, 151, + 8, 25, 99, 7, 55, 133, 10, 95, 185, 5, 86, 177, 6, 94, 183, 8, 89, 179, 14, 127, 218, 10, 102, 194, 5, 44, 124, 9, 53, 130, 40, 87, 158, 85, 63, 119, 93, 64, 123, 96, 60, 124, 96, 56, 121, 97, 54, 119, 97, 55, 117, 98, 53, 114, 101, 56, 114, 97, 57, 115, 88, 58, 113, + 73, 58, 110, 59, 56, 107, 42, 50, 106, 23, 45, 104, 7, 37, 100, 2, 31, 96, 3, 26, 93, 3, 25, 91, 2, 29, 93, 3, 32, 96, 8, 38, 99, 18, 43, 100, 32, 48, 105, 41, 55, 109, 48, 57, 113, 53, 59, 116, 50, 59, 117, 47, 59, 117, 44, 59, 116, 43, 58, 116, 42, 54, 112, + 34, 47, 105, 26, 42, 100, 17, 38, 94, 7, 33, 92, 5, 33, 94, 5, 36, 98, 7, 38, 102, 12, 43, 107, 21, 48, 114, 22, 50, 115, 18, 48, 113, 9, 42, 107, 6, 39, 103, 3, 36, 98, 3, 34, 97, 5, 34, 95, 7, 37, 96, 8, 35, 94, 8, 35, 93, 7, 34, 91, 5, 31, 90, + 3, 30, 89, 2, 30, 88, 3, 30, 89, 3, 28, 89, 3, 27, 90, 3, 30, 90, 3, 30, 89, 3, 31, 87, 4, 25, 80, 4, 23, 75, 3, 20, 70, 3, 17, 64, 5, 15, 56, 12, 14, 50, 29, 10, 43, 47, 11, 34, 64, 15, 21, 80, 17, 11, 95, 19, 3, 106, 24, 2, 112, 25, 3, + 112, 24, 1, 114, 25, 2, 104, 28, 3, 104, 31, 3, 103, 30, 3, 103, 30, 3, 100, 28, 3, 101, 29, 5, 103, 31, 9, 105, 32, 10, 107, 35, 16, 113, 41, 22, 116, 42, 24, 119, 43, 25, 120, 44, 23, 120, 43, 24, 119, 43, 22, 118, 41, 16, 118, 39, 11, 117, 40, 11, 120, 40, 11, + 123, 41, 11, 126, 44, 13, 129, 45, 11, 135, 50, 13, 134, 47, 9, 136, 49, 9, 136, 49, 9, 137, 51, 11, 137, 49, 10, 138, 51, 12, 140, 52, 14, 143, 53, 14, 142, 52, 10, 146, 54, 12, 149, 56, 12, 152, 59, 13, 153, 58, 12, 154, 59, 12, 157, 60, 14, 157, 61, 14, 158, 59, 12, + 160, 62, 14, 160, 63, 16, 161, 64, 18, 157, 62, 18, 161, 64, 25, 158, 64, 25, 157, 63, 26, 156, 63, 28, 157, 64, 32, 155, 64, 38, 156, 66, 46, 157, 70, 57, 158, 72, 63, 157, 74, 69, 160, 76, 74, 160, 79, 77, 162, 81, 80, 164, 80, 83, 165, 81, 85, 169, 84, 92, 169, 87, 100, + 170, 91, 106, 173, 96, 116, 173, 101, 124, 175, 105, 131, 174, 106, 143, 174, 110, 165, 162, 113, 180, 141, 123, 196, 121, 133, 195, 165, 210, 230, 243, 255, 254, 255, 254, 254, 253, 254, 253, 253, 254, 253, 253, 254, 254, 254, 255, 254, 249, 252, 252, 209, 205, 215, 189, 126, 148, 196, 138, 159, 237, 231, 236, + 254, 255, 255, 254, 254, 254, 254, 254, 255, 254, 254, 254, 253, 254, 254, 251, 253, 252, 213, 215, 231, 203, 151, 205, 201, 139, 165, 195, 113, 114, 195, 100, 79, 197, 98, 72, 197, 96, 63, 197, 95, 62, 198, 96, 59, 198, 92, 54, 199, 95, 56, 197, 93, 50, 200, 95, 52, 200, 95, 52, 197, 92, 50, + 198, 93, 49, 198, 93, 49, 198, 92, 44, 200, 93, 45, 198, 91, 37, 198, 91, 36, 199, 91, 36, 198, 89, 32, 199, 88, 30, 199, 90, 34, 198, 89, 29, 198, 88, 33, 194, 85, 32, 187, 79, 29, 172, 72, 29, 152, 61, 27, 128, 47, 26, 100, 33, 20, 88, 27, 16, 89, 27, 15, 108, 36, 21, + 136, 49, 29, 162, 63, 30, 184, 76, 34, 200, 88, 41, 206, 93, 50, 210, 97, 60, 204, 96, 73, 180, 107, 122, 69, 114, 192, 59, 115, 192, 61, 123, 201, 25, 76, 142, 42, 100, 164, 10, 37, 92, 21, 71, 134, 57, 156, 221, 61, 157, 217, 19, 73, 140, 13, 36, 89, 19, 71, 134, 39, 124, 196, + 30, 112, 190, 23, 96, 171, 39, 111, 179, 22, 69, 141, 19, 78, 146, 27, 81, 148, 15, 74, 144, 24, 87, 157, 10, 54, 119, 15, 91, 168, 21, 99, 179, 20, 101, 183, 14, 78, 155, 17, 95, 172, 19, 89, 169, 10, 79, 158, 11, 53, 125, 5, 25, 97, 10, 61, 141, 5, 62, 151, 7, 82, 174, + 5, 86, 176, 13, 79, 165, 23, 167, 245, 7, 128, 212, 5, 52, 135, 6, 71, 152, 32, 77, 143, 73, 60, 113, 84, 62, 122, 84, 56, 119, 87, 54, 117, 86, 52, 116, 89, 54, 115, 89, 52, 114, 92, 56, 114, 86, 53, 112, 80, 58, 112, 69, 61, 110, 55, 58, 108, 40, 53, 108, 23, 45, 106, + 9, 39, 104, 2, 29, 95, 3, 25, 90, 3, 26, 91, 4, 28, 92, 3, 31, 93, 5, 36, 96, 18, 42, 101, 30, 46, 105, 39, 52, 110, 44, 56, 114, 43, 56, 115, 42, 55, 116, 38, 54, 116, 38, 56, 118, 38, 55, 116, 36, 52, 112, 34, 49, 107, 28, 43, 101, 14, 36, 94, 6, 32, 91, + 3, 29, 92, 2, 32, 95, 2, 34, 99, 5, 39, 105, 8, 42, 110, 8, 43, 111, 6, 41, 109, 4, 38, 104, 3, 33, 99, 4, 30, 95, 3, 30, 94, 3, 30, 91, 3, 29, 90, 2, 28, 89, 3, 29, 88, 2, 27, 86, 3, 26, 86, 4, 25, 87, 2, 22, 84, 3, 23, 85, 3, 24, 86, + 3, 23, 87, 3, 26, 89, 2, 26, 88, 3, 24, 84, 3, 22, 79, 3, 19, 75, 3, 17, 69, 2, 15, 62, 8, 16, 57, 20, 14, 51, 40, 9, 44, 59, 14, 30, 71, 16, 20, 86, 19, 9, 101, 24, 6, 109, 25, 4, 113, 26, 2, 113, 25, 3, 113, 24, 3, 97, 27, 5, 96, 26, 5, + 97, 29, 9, 95, 26, 6, 93, 27, 9, 95, 29, 13, 94, 29, 16, 98, 34, 23, 100, 36, 24, 109, 43, 31, 118, 51, 39, 124, 54, 44, 122, 53, 40, 118, 49, 34, 114, 42, 30, 111, 40, 24, 112, 39, 21, 110, 36, 15, 110, 37, 13, 115, 39, 13, 117, 40, 13, 122, 43, 15, 126, 44, 13, + 127, 44, 13, 130, 47, 13, 129, 46, 13, 130, 48, 17, 130, 44, 15, 130, 45, 15, 133, 50, 16, 136, 51, 17, 136, 51, 14, 138, 52, 14, 141, 51, 11, 144, 53, 10, 148, 56, 12, 148, 57, 12, 148, 56, 11, 151, 57, 15, 151, 59, 15, 151, 58, 16, 152, 59, 18, 152, 60, 19, 150, 57, 19, + 153, 60, 25, 151, 59, 25, 151, 62, 32, 151, 63, 34, 150, 63, 35, 149, 63, 41, 148, 65, 50, 148, 67, 58, 150, 71, 68, 151, 72, 72, 152, 74, 76, 152, 75, 78, 153, 74, 78, 159, 76, 80, 159, 76, 80, 160, 79, 86, 161, 82, 93, 162, 86, 100, 162, 90, 106, 164, 93, 114, 164, 97, 119, + 166, 100, 131, 166, 103, 143, 159, 105, 164, 141, 112, 172, 142, 171, 206, 233, 255, 255, 253, 254, 253, 254, 254, 254, 253, 253, 253, 253, 253, 253, 253, 254, 254, 253, 254, 254, 252, 254, 254, 221, 241, 242, 148, 116, 140, 178, 157, 174, 255, 255, 255, 254, 254, 254, 252, 254, 254, 253, 253, 253, 253, 255, 254, + 255, 254, 254, 252, 254, 254, 239, 244, 247, 192, 149, 190, 192, 122, 137, 192, 110, 110, 191, 98, 78, 193, 98, 72, 193, 95, 65, 194, 95, 63, 194, 94, 60, 196, 95, 57, 195, 94, 55, 196, 94, 54, 197, 93, 51, 198, 94, 53, 197, 94, 55, 198, 94, 54, 198, 94, 54, 201, 95, 54, 198, 93, 49, + 198, 93, 45, 198, 92, 39, 201, 91, 41, 198, 89, 34, 199, 90, 37, 198, 88, 33, 197, 88, 30, 199, 88, 35, 198, 88, 40, 188, 83, 33, 177, 75, 32, 157, 65, 30, 135, 50, 24, 108, 39, 21, 92, 30, 15, 91, 27, 14, 108, 34, 16, 133, 50, 26, 160, 63, 32, 182, 76, 41, 194, 86, 50, + 201, 93, 62, 198, 92, 70, 163, 93, 107, 117, 103, 155, 62, 121, 201, 70, 145, 219, 57, 125, 196, 39, 101, 170, 15, 40, 93, 25, 78, 139, 74, 190, 249, 50, 150, 223, 34, 114, 182, 65, 175, 234, 42, 150, 226, 26, 101, 173, 18, 80, 152, 17, 87, 161, 17, 91, 165, 24, 100, 176, 24, 88, 159, + 28, 90, 163, 14, 80, 150, 15, 80, 152, 18, 89, 161, 14, 78, 151, 22, 94, 171, 16, 105, 190, 10, 86, 164, 36, 129, 213, 26, 118, 202, 27, 114, 195, 22, 92, 170, 15, 53, 121, 10, 78, 158, 10, 99, 190, 7, 107, 202, 9, 117, 211, 13, 112, 199, 6, 73, 157, 18, 132, 213, 7, 118, 211, + 6, 77, 162, 8, 70, 148, 19, 63, 128, 36, 43, 97, 68, 59, 113, 73, 58, 116, 75, 56, 114, 72, 51, 111, 72, 50, 109, 74, 50, 108, 77, 54, 110, 73, 54, 108, 67, 57, 107, 59, 59, 107, 48, 57, 109, 35, 52, 107, 19, 45, 106, 6, 39, 101, 4, 32, 97, 3, 22, 88, 2, 21, 86, + 4, 25, 88, 2, 30, 90, 7, 33, 92, 18, 39, 95, 27, 44, 101, 34, 49, 108, 39, 53, 112, 36, 51, 114, 33, 51, 114, 31, 50, 115, 28, 48, 113, 27, 46, 111, 28, 45, 108, 28, 43, 104, 21, 38, 97, 11, 32, 90, 5, 28, 89, 3, 27, 89, 3, 25, 91, 3, 30, 97, 4, 32, 102, + 2, 34, 106, 3, 36, 107, 3, 36, 105, 4, 30, 99, 3, 26, 93, 3, 24, 90, 3, 21, 86, 2, 20, 84, 3, 20, 84, 2, 21, 82, 2, 21, 81, 2, 22, 81, 4, 22, 81, 3, 19, 80, 2, 19, 79, 3, 19, 80, 3, 20, 82, 3, 20, 83, 3, 20, 85, 2, 19, 84, 2, 19, 82, + 2, 18, 77, 4, 14, 72, 3, 9, 64, 3, 11, 61, 12, 14, 57, 31, 12, 52, 53, 13, 42, 68, 17, 26, 79, 18, 20, 93, 22, 9, 100, 23, 4, 108, 25, 3, 114, 26, 3, 114, 25, 1, 114, 25, 2, 90, 25, 9, 87, 24, 7, 85, 24, 8, 84, 23, 9, 84, 25, 14, 82, 25, 18, + 85, 29, 26, 88, 30, 27, 101, 45, 41, 134, 105, 104, 188, 181, 182, 197, 206, 201, 185, 194, 190, 126, 97, 96, 110, 47, 42, 104, 38, 34, 103, 37, 28, 101, 35, 22, 103, 36, 19, 105, 35, 13, 109, 36, 12, 113, 38, 13, 116, 39, 14, 118, 41, 16, 120, 43, 16, 120, 42, 18, 120, 42, 19, + 120, 43, 21, 122, 44, 22, 123, 45, 21, 125, 46, 19, 126, 46, 18, 129, 47, 19, 133, 48, 15, 136, 50, 14, 138, 51, 10, 137, 50, 8, 140, 51, 12, 140, 52, 12, 142, 52, 12, 142, 55, 14, 142, 54, 16, 142, 54, 17, 141, 54, 19, 142, 54, 23, 142, 54, 27, 143, 55, 31, 140, 55, 32, + 140, 57, 36, 140, 61, 44, 141, 64, 55, 143, 66, 62, 143, 70, 70, 142, 68, 72, 141, 70, 76, 146, 73, 80, 146, 72, 78, 149, 72, 79, 150, 70, 77, 152, 74, 82, 153, 77, 89, 151, 79, 94, 154, 85, 101, 154, 88, 105, 157, 91, 112, 159, 96, 122, 158, 98, 133, 155, 102, 154, 139, 111, 162, + 176, 217, 232, 248, 255, 254, 253, 254, 254, 254, 254, 254, 253, 254, 254, 254, 254, 254, 253, 253, 253, 253, 254, 254, 253, 254, 254, 223, 246, 248, 116, 116, 137, 187, 184, 192, 255, 255, 255, 253, 254, 254, 254, 254, 254, 252, 254, 254, 254, 254, 254, 254, 254, 254, 253, 254, 254, 247, 249, 250, 178, 149, 164, + 179, 109, 122, 184, 105, 101, 185, 98, 79, 186, 94, 70, 187, 93, 65, 190, 93, 64, 189, 92, 61, 189, 92, 57, 189, 90, 54, 190, 92, 55, 192, 90, 52, 194, 93, 54, 193, 94, 57, 196, 94, 56, 196, 94, 59, 198, 95, 56, 198, 94, 52, 200, 95, 52, 199, 93, 47, 198, 90, 38, 198, 90, 38, + 197, 88, 35, 200, 90, 39, 199, 90, 38, 198, 88, 36, 199, 90, 42, 193, 86, 41, 180, 77, 35, 165, 69, 33, 141, 56, 28, 112, 40, 21, 96, 32, 17, 95, 29, 16, 107, 36, 16, 128, 45, 22, 158, 62, 33, 178, 75, 45, 188, 84, 58, 187, 86, 66, 170, 92, 95, 97, 126, 190, 56, 96, 160, + 51, 118, 182, 60, 137, 209, 29, 86, 152, 21, 66, 123, 8, 23, 73, 16, 49, 106, 46, 135, 204, 57, 158, 221, 89, 214, 255, 51, 163, 227, 21, 96, 168, 7, 51, 115, 12, 67, 133, 27, 96, 169, 19, 77, 146, 15, 76, 147, 21, 94, 167, 25, 102, 176, 16, 83, 154, 19, 79, 151, 12, 65, 138, + 13, 93, 173, 23, 115, 198, 17, 110, 195, 9, 83, 164, 21, 104, 188, 20, 116, 204, 24, 113, 200, 25, 112, 193, 19, 89, 167, 24, 131, 221, 23, 124, 213, 10, 87, 173, 6, 64, 145, 4, 74, 159, 5, 71, 155, 11, 99, 184, 5, 79, 163, 5, 79, 162, 11, 85, 164, 9, 48, 115, 12, 32, 91, + 47, 51, 106, 58, 56, 110, 60, 56, 109, 58, 51, 106, 58, 51, 105, 60, 50, 103, 61, 51, 104, 58, 52, 103, 55, 53, 103, 52, 55, 107, 40, 51, 107, 29, 48, 107, 15, 42, 104, 6, 37, 103, 4, 35, 99, 4, 29, 93, 2, 22, 83, 3, 24, 84, 4, 27, 85, 7, 29, 88, 14, 34, 92, + 25, 38, 97, 28, 42, 102, 31, 46, 107, 30, 46, 110, 27, 45, 109, 23, 43, 109, 24, 43, 109, 22, 41, 107, 22, 40, 105, 21, 38, 99, 15, 34, 92, 10, 29, 88, 4, 24, 84, 2, 19, 82, 3, 22, 87, 4, 24, 91, 3, 25, 96, 2, 28, 102, 3, 25, 99, 2, 24, 96, 3, 20, 91, + 4, 20, 87, 3, 17, 84, 2, 13, 79, 3, 13, 78, 3, 12, 75, 2, 12, 72, 2, 16, 74, 3, 15, 74, 2, 14, 73, 2, 14, 73, 3, 15, 75, 2, 15, 75, 3, 16, 77, 3, 16, 80, 2, 15, 82, 2, 15, 80, 3, 14, 78, 3, 12, 75, 2, 11, 72, 3, 8, 64, 5, 10, 59, + 18, 13, 55, 41, 10, 51, 63, 16, 37, 76, 18, 26, 88, 21, 18, 98, 22, 8, 103, 23, 3, 110, 27, 3, 113, 27, 3, 113, 26, 2, 114, 25, 2, 78, 22, 9, 78, 23, 13, 77, 25, 15, 72, 20, 13, 73, 22, 19, 74, 28, 28, 76, 30, 34, 89, 43, 46, 188, 181, 182, 254, 255, 255, + 255, 255, 255, 254, 255, 255, 255, 255, 255, 228, 242, 243, 109, 85, 88, 96, 42, 43, 97, 40, 40, 95, 37, 34, 95, 36, 28, 96, 34, 22, 103, 36, 19, 106, 37, 18, 107, 35, 16, 111, 38, 18, 111, 39, 19, 110, 38, 18, 112, 41, 23, 112, 40, 22, 112, 41, 26, 112, 41, 25, 115, 43, 23, + 117, 42, 21, 117, 42, 19, 121, 43, 16, 126, 46, 18, 128, 48, 16, 127, 45, 12, 131, 47, 16, 131, 48, 17, 132, 49, 17, 131, 50, 19, 132, 50, 20, 131, 49, 20, 133, 49, 22, 132, 51, 26, 132, 52, 31, 129, 50, 30, 130, 53, 37, 130, 53, 40, 131, 56, 47, 131, 58, 55, 131, 62, 63, + 129, 62, 70, 132, 66, 75, 133, 68, 79, 135, 69, 80, 137, 69, 79, 138, 67, 76, 141, 67, 76, 141, 68, 77, 142, 72, 84, 142, 74, 89, 146, 80, 95, 145, 83, 99, 148, 86, 105, 149, 89, 113, 149, 91, 123, 147, 95, 140, 137, 111, 158, 182, 225, 239, 249, 255, 254, 253, 254, 254, 254, 254, 254, + 254, 254, 254, 254, 254, 254, 253, 253, 253, 254, 254, 254, 253, 254, 254, 216, 243, 246, 104, 107, 126, 183, 180, 188, 255, 255, 255, 253, 254, 253, 252, 254, 254, 252, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 246, 248, 247, 171, 140, 149, 174, 107, 116, 176, 100, 93, 176, 94, 77, 179, 92, 71, + 180, 91, 63, 182, 92, 63, 181, 90, 59, 182, 88, 54, 184, 89, 53, 185, 89, 54, 185, 89, 52, 191, 93, 57, 190, 93, 58, 191, 93, 58, 194, 95, 60, 193, 94, 60, 195, 93, 57, 199, 95, 56, 198, 94, 51, 198, 92, 44, 197, 89, 39, 199, 91, 44, 198, 90, 40, 197, 88, 37, 198, 90, 42, + 198, 90, 44, 191, 86, 40, 183, 80, 35, 166, 71, 34, 146, 58, 29, 118, 43, 23, 101, 33, 17, 98, 31, 16, 106, 35, 19, 126, 44, 25, 153, 58, 35, 168, 70, 47, 174, 77, 59, 158, 81, 80, 106, 122, 175, 45, 89, 148, 28, 73, 129, 74, 176, 239, 25, 80, 147, 13, 49, 106, 16, 39, 92, + 8, 23, 72, 25, 70, 130, 39, 120, 184, 79, 218, 255, 55, 176, 247, 42, 147, 215, 15, 51, 108, 11, 44, 102, 16, 79, 150, 24, 104, 181, 9, 65, 134, 10, 68, 136, 14, 85, 156, 17, 92, 168, 14, 78, 154, 17, 92, 169, 28, 102, 179, 23, 116, 199, 20, 103, 187, 15, 110, 197, 14, 110, 199, + 20, 119, 210, 21, 132, 226, 35, 149, 239, 44, 155, 243, 41, 154, 240, 22, 126, 215, 19, 124, 213, 16, 89, 170, 4, 10, 75, 7, 36, 105, 7, 83, 162, 12, 99, 181, 5, 60, 139, 6, 68, 146, 11, 74, 147, 5, 49, 118, 14, 37, 97, 29, 44, 104, 46, 50, 108, 44, 48, 106, 48, 49, 106, + 46, 47, 103, 47, 47, 100, 49, 47, 101, 45, 46, 100, 46, 49, 103, 42, 50, 107, 35, 50, 108, 30, 49, 111, 22, 45, 111, 13, 41, 106, 13, 41, 104, 8, 35, 96, 3, 27, 86, 4, 24, 82, 5, 24, 82, 8, 28, 84, 19, 31, 89, 21, 34, 92, 25, 36, 96, 22, 37, 100, 22, 38, 104, + 21, 38, 105, 22, 41, 106, 20, 39, 104, 18, 37, 102, 18, 37, 101, 16, 33, 94, 12, 29, 89, 8, 26, 85, 2, 19, 77, 3, 18, 80, 3, 16, 81, 3, 18, 87, 3, 21, 93, 3, 22, 94, 3, 17, 91, 2, 15, 89, 3, 14, 86, 3, 10, 79, 2, 10, 77, 3, 8, 73, 2, 6, 70, + 3, 6, 69, 3, 6, 66, 3, 7, 67, 2, 10, 68, 3, 11, 69, 2, 10, 69, 2, 11, 71, 2, 11, 72, 2, 12, 76, 2, 10, 75, 2, 10, 78, 2, 9, 76, 2, 9, 77, 1, 8, 74, 2, 8, 71, 3, 9, 66, 9, 13, 61, 30, 13, 58, 53, 12, 49, 71, 19, 32, 82, 18, 23, + 95, 23, 14, 102, 24, 7, 107, 25, 5, 111, 26, 4, 113, 27, 3, 113, 26, 2, 113, 24, 2, 70, 20, 13, 71, 21, 17, 68, 22, 20, 64, 21, 22, 63, 23, 28, 65, 28, 34, 71, 34, 42, 149, 138, 142, 246, 255, 255, 252, 254, 254, 252, 254, 254, 253, 254, 254, 253, 254, 254, 252, 254, 254, + 167, 185, 186, 93, 50, 59, 88, 41, 46, 87, 38, 38, 88, 36, 34, 90, 34, 28, 91, 31, 21, 96, 33, 22, 99, 33, 24, 102, 35, 23, 99, 34, 24, 101, 36, 26, 101, 37, 28, 99, 34, 28, 100, 36, 29, 101, 36, 28, 104, 37, 28, 105, 38, 25, 108, 40, 22, 112, 41, 21, 114, 42, 18, + 115, 42, 17, 118, 42, 17, 117, 41, 16, 120, 43, 19, 119, 42, 17, 121, 44, 20, 119, 44, 21, 118, 45, 23, 119, 45, 24, 122, 46, 28, 122, 48, 31, 121, 47, 33, 121, 48, 38, 122, 50, 42, 120, 52, 49, 121, 55, 58, 122, 59, 67, 121, 61, 72, 125, 65, 77, 127, 66, 80, 127, 67, 81, + 128, 66, 79, 128, 63, 74, 128, 63, 74, 132, 65, 76, 133, 68, 81, 132, 69, 82, 136, 74, 88, 140, 78, 94, 140, 81, 100, 141, 83, 107, 139, 88, 117, 137, 90, 131, 127, 105, 149, 153, 194, 214, 244, 255, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 253, 253, 254, 254, 254, + 251, 254, 254, 193, 229, 233, 105, 92, 121, 156, 151, 167, 255, 255, 255, 254, 253, 253, 252, 254, 254, 253, 254, 254, 254, 255, 255, 254, 254, 254, 252, 254, 254, 231, 237, 236, 162, 121, 131, 165, 100, 106, 166, 95, 87, 168, 91, 76, 169, 88, 67, 171, 88, 62, 172, 87, 60, 174, 88, 58, 176, 86, 57, + 175, 86, 54, 176, 84, 50, 181, 88, 56, 183, 90, 59, 185, 92, 60, 188, 92, 62, 189, 91, 61, 191, 93, 64, 191, 93, 60, 192, 93, 56, 194, 91, 52, 193, 89, 45, 196, 90, 45, 196, 91, 47, 195, 88, 45, 194, 88, 42, 197, 89, 44, 195, 88, 45, 192, 87, 43, 188, 82, 45, 170, 72, 37, + 151, 61, 35, 126, 48, 31, 106, 35, 20, 102, 32, 21, 106, 35, 19, 122, 43, 25, 145, 56, 38, 156, 64, 50, 145, 62, 61, 89, 71, 104, 65, 135, 205, 23, 62, 117, 72, 155, 229, 44, 119, 184, 22, 77, 137, 8, 24, 78, 28, 80, 143, 8, 39, 98, 25, 84, 151, 61, 181, 245, 52, 175, 243, + 47, 161, 231, 9, 60, 118, 10, 27, 74, 29, 105, 176, 17, 97, 171, 27, 94, 164, 9, 49, 113, 9, 34, 100, 14, 74, 147, 15, 90, 171, 18, 92, 170, 21, 107, 185, 23, 96, 173, 26, 108, 188, 22, 107, 191, 19, 113, 200, 23, 129, 222, 14, 120, 216, 17, 126, 222, 18, 135, 230, 19, 134, 229, + 47, 163, 247, 35, 145, 231, 31, 135, 218, 5, 80, 159, 6, 51, 131, 6, 76, 154, 8, 69, 146, 13, 89, 165, 9, 65, 137, 7, 53, 123, 6, 49, 120, 8, 62, 131, 17, 49, 113, 26, 44, 108, 36, 44, 105, 37, 43, 103, 40, 44, 104, 37, 41, 101, 36, 40, 99, 38, 41, 99, 39, 41, 101, + 40, 46, 105, 35, 45, 107, 30, 45, 110, 27, 48, 113, 24, 49, 114, 20, 45, 110, 19, 43, 107, 12, 35, 97, 10, 31, 91, 8, 26, 83, 7, 23, 78, 11, 25, 82, 14, 26, 82, 17, 27, 86, 21, 32, 93, 19, 32, 96, 22, 36, 102, 20, 35, 103, 16, 32, 100, 15, 32, 99, 14, 31, 97, + 13, 29, 96, 11, 27, 90, 12, 28, 87, 7, 22, 80, 3, 17, 76, 3, 16, 77, 3, 14, 80, 2, 13, 83, 3, 15, 88, 3, 17, 92, 2, 12, 90, 3, 12, 88, 2, 12, 86, 3, 10, 80, 3, 7, 75, 2, 6, 72, 2, 4, 70, 3, 4, 66, 2, 4, 64, 3, 4, 64, 2, 6, 65, + 3, 7, 67, 3, 9, 70, 2, 8, 70, 3, 12, 75, 4, 12, 78, 2, 10, 77, 3, 9, 78, 3, 9, 77, 2, 8, 76, 2, 8, 76, 3, 8, 73, 3, 9, 67, 16, 15, 65, 43, 13, 60, 64, 16, 45, 78, 22, 31, 88, 23, 23, 100, 25, 12, 104, 25, 7, 107, 25, 3, 111, 28, 3, + 114, 29, 2, 114, 25, 3, 112, 24, 2, 59, 19, 18, 58, 21, 22, 59, 23, 28, 58, 22, 29, 58, 23, 31, 62, 28, 39, 66, 38, 55, 202, 216, 218, 251, 254, 254, 252, 254, 254, 253, 254, 254, 252, 254, 254, 253, 254, 254, 252, 255, 254, 208, 232, 232, 82, 56, 69, 81, 43, 51, 76, 36, 43, + 77, 33, 35, 82, 34, 32, 83, 30, 26, 89, 31, 26, 89, 31, 27, 90, 31, 28, 89, 32, 30, 91, 34, 31, 89, 33, 33, 91, 36, 35, 89, 34, 35, 90, 32, 33, 92, 34, 34, 94, 35, 32, 97, 36, 31, 100, 37, 30, 104, 38, 26, 106, 38, 25, 107, 40, 24, 108, 38, 22, 110, 39, 20, + 112, 40, 21, 109, 40, 19, 110, 41, 24, 109, 41, 25, 110, 42, 27, 111, 44, 29, 110, 44, 34, 110, 44, 35, 109, 45, 39, 110, 47, 44, 109, 48, 52, 111, 53, 62, 114, 59, 69, 114, 60, 73, 116, 62, 77, 118, 64, 78, 119, 64, 79, 121, 64, 78, 120, 61, 75, 120, 59, 72, 122, 61, 73, + 124, 63, 76, 128, 67, 79, 130, 70, 84, 133, 74, 92, 130, 75, 94, 133, 80, 101, 132, 85, 112, 131, 86, 126, 120, 100, 143, 117, 140, 174, 206, 241, 246, 250, 255, 254, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 240, 250, 251, 149, 182, 195, 125, 103, 139, 137, 121, 155, + 232, 237, 238, 253, 255, 255, 254, 254, 254, 254, 254, 254, 253, 254, 254, 253, 254, 254, 246, 249, 249, 191, 188, 187, 158, 106, 117, 160, 99, 102, 160, 92, 87, 162, 89, 73, 165, 89, 69, 166, 88, 63, 167, 86, 59, 167, 86, 55, 170, 88, 58, 171, 87, 58, 172, 86, 55, 174, 88, 59, 177, 89, 63, + 177, 88, 61, 178, 88, 63, 181, 90, 64, 183, 90, 64, 185, 90, 62, 187, 91, 60, 187, 88, 54, 187, 86, 47, 188, 85, 42, 189, 85, 41, 191, 86, 43, 192, 87, 44, 192, 87, 46, 191, 86, 44, 190, 86, 45, 184, 83, 49, 172, 75, 42, 152, 61, 40, 127, 48, 33, 109, 38, 26, 101, 32, 22, + 106, 34, 22, 117, 41, 28, 135, 52, 46, 136, 61, 63, 109, 85, 119, 47, 84, 139, 22, 77, 138, 22, 72, 135, 29, 100, 171, 13, 60, 120, 23, 69, 127, 8, 34, 92, 17, 77, 142, 18, 80, 147, 53, 161, 232, 41, 168, 232, 46, 155, 229, 13, 81, 147, 4, 6, 37, 19, 84, 148, 47, 134, 209, + 19, 72, 139, 5, 22, 80, 4, 27, 89, 7, 45, 112, 12, 80, 155, 13, 87, 164, 15, 96, 177, 12, 83, 161, 10, 68, 145, 12, 83, 162, 8, 76, 158, 24, 101, 181, 20, 110, 194, 9, 107, 204, 17, 127, 223, 21, 134, 227, 14, 115, 205, 30, 149, 237, 20, 129, 223, 10, 93, 177, 5, 49, 125, + 5, 36, 114, 5, 49, 120, 4, 31, 96, 5, 43, 112, 5, 30, 95, 5, 34, 101, 4, 68, 141, 4, 57, 127, 6, 33, 98, 20, 43, 109, 22, 38, 105, 28, 39, 105, 30, 37, 104, 30, 38, 104, 31, 38, 103, 30, 37, 101, 31, 39, 103, 34, 43, 109, 32, 46, 112, 30, 50, 116, 28, 51, 119, + 25, 50, 118, 21, 48, 115, 19, 44, 110, 12, 37, 101, 9, 31, 92, 10, 28, 88, 8, 23, 83, 8, 22, 81, 13, 24, 84, 16, 27, 88, 20, 32, 96, 18, 32, 99, 15, 32, 99, 14, 32, 99, 13, 31, 100, 12, 31, 98, 11, 29, 96, 10, 27, 93, 9, 25, 89, 9, 24, 85, 4, 19, 80, + 3, 19, 79, 2, 16, 78, 3, 13, 80, 3, 12, 83, 3, 15, 89, 3, 16, 92, 4, 14, 91, 3, 12, 90, 3, 13, 88, 3, 10, 83, 3, 8, 80, 2, 9, 79, 2, 6, 74, 1, 5, 70, 2, 4, 69, 4, 6, 68, 2, 7, 69, 2, 6, 70, 3, 9, 74, 2, 10, 76, 3, 13, 80, + 3, 12, 81, 2, 9, 79, 3, 8, 80, 3, 10, 81, 3, 9, 81, 2, 8, 78, 3, 7, 75, 4, 12, 71, 22, 15, 65, 52, 13, 60, 73, 20, 42, 82, 21, 29, 93, 23, 19, 102, 25, 11, 107, 26, 7, 109, 26, 4, 115, 29, 4, 115, 28, 3, 115, 27, 2, 114, 26, 2, 50, 17, 23, + 53, 22, 29, 56, 25, 30, 55, 25, 34, 57, 27, 38, 62, 35, 51, 69, 42, 64, 213, 226, 228, 251, 254, 254, 252, 254, 254, 252, 254, 254, 252, 254, 254, 252, 254, 254, 253, 254, 254, 211, 234, 234, 81, 58, 76, 79, 44, 55, 75, 38, 47, 74, 34, 40, 78, 35, 36, 79, 31, 31, 81, 31, 30, + 81, 30, 30, 81, 32, 34, 79, 31, 35, 80, 32, 37, 80, 34, 39, 81, 35, 41, 80, 34, 42, 81, 34, 41, 83, 33, 39, 82, 31, 37, 86, 34, 36, 91, 37, 38, 93, 36, 34, 96, 37, 34, 99, 38, 33, 100, 36, 29, 103, 38, 27, 103, 38, 26, 104, 39, 28, 103, 39, 29, 100, 39, 30, + 101, 39, 32, 100, 40, 33, 103, 44, 38, 103, 44, 40, 101, 43, 41, 103, 46, 47, 103, 48, 53, 105, 51, 60, 107, 57, 68, 110, 61, 75, 112, 62, 79, 110, 62, 78, 111, 64, 80, 113, 63, 80, 113, 60, 75, 116, 59, 74, 119, 61, 74, 120, 61, 75, 123, 63, 78, 123, 67, 83, 125, 70, 86, + 127, 73, 91, 124, 76, 96, 127, 82, 108, 127, 87, 123, 117, 99, 141, 110, 114, 155, 126, 174, 206, 222, 246, 249, 247, 251, 252, 249, 252, 253, 251, 253, 253, 251, 253, 253, 242, 248, 250, 186, 216, 223, 121, 123, 155, 136, 114, 151, 140, 115, 154, 171, 163, 185, 245, 246, 248, 250, 252, 252, 252, 253, 253, + 252, 254, 253, 247, 249, 250, 213, 215, 215, 152, 116, 128, 152, 102, 109, 151, 95, 96, 155, 94, 87, 160, 94, 79, 162, 93, 72, 162, 89, 63, 163, 90, 61, 165, 91, 63, 164, 88, 60, 165, 90, 62, 165, 86, 60, 168, 88, 65, 170, 86, 64, 169, 85, 63, 170, 87, 68, 174, 87, 68, 176, 88, 69, + 178, 90, 67, 176, 86, 60, 180, 85, 56, 178, 81, 46, 180, 82, 45, 183, 84, 46, 182, 83, 45, 183, 82, 45, 188, 83, 47, 189, 85, 46, 187, 84, 48, 181, 81, 47, 168, 73, 43, 148, 62, 43, 127, 50, 39, 107, 36, 29, 100, 33, 25, 100, 33, 22, 110, 36, 27, 118, 45, 42, 109, 68, 94, + 68, 93, 146, 31, 64, 111, 42, 105, 171, 44, 107, 175, 39, 112, 185, 28, 89, 155, 11, 59, 120, 14, 63, 123, 18, 75, 141, 29, 118, 196, 36, 137, 221, 37, 142, 220, 35, 135, 209, 5, 25, 76, 9, 28, 70, 41, 142, 226, 13, 82, 157, 5, 46, 109, 10, 44, 110, 11, 83, 156, 16, 89, 166, + 16, 98, 181, 16, 103, 187, 6, 83, 168, 15, 105, 190, 24, 115, 197, 19, 98, 178, 11, 86, 164, 11, 76, 156, 20, 94, 174, 16, 106, 196, 12, 107, 198, 12, 109, 200, 8, 92, 180, 9, 91, 174, 15, 111, 201, 12, 88, 168, 7, 55, 131, 5, 49, 124, 4, 28, 97, 4, 21, 82, 7, 51, 119, + 9, 44, 112, 8, 68, 140, 10, 79, 153, 5, 41, 108, 8, 40, 106, 18, 48, 116, 18, 38, 107, 26, 42, 112, 26, 40, 112, 24, 39, 110, 27, 41, 110, 26, 40, 110, 26, 41, 112, 28, 44, 115, 25, 46, 119, 28, 53, 126, 26, 56, 129, 23, 54, 127, 22, 54, 124, 18, 47, 116, 13, 41, 108, + 8, 34, 100, 12, 34, 98, 9, 28, 91, 12, 28, 91, 11, 27, 91, 14, 30, 95, 15, 32, 100, 17, 34, 104, 13, 33, 104, 8, 33, 103, 6, 29, 101, 7, 29, 99, 8, 29, 98, 8, 27, 94, 9, 27, 90, 6, 23, 85, 3, 20, 81, 3, 19, 80, 3, 15, 79, 3, 14, 81, 3, 13, 85, + 2, 16, 88, 2, 17, 94, 3, 16, 94, 3, 16, 93, 4, 14, 90, 3, 12, 89, 3, 11, 86, 3, 10, 81, 3, 11, 81, 3, 9, 79, 2, 8, 77, 2, 8, 76, 3, 10, 76, 2, 12, 79, 3, 13, 81, 2, 12, 81, 3, 13, 81, 2, 11, 81, 3, 10, 82, 3, 11, 83, 3, 9, 83, + 2, 9, 80, 2, 7, 79, 2, 10, 76, 6, 13, 70, 30, 15, 65, 61, 16, 60, 79, 24, 39, 88, 23, 30, 98, 26, 19, 104, 25, 8, 106, 25, 5, 111, 27, 5, 113, 28, 3, 115, 29, 2, 114, 27, 3, 112, 26, 2, 45, 18, 26, 49, 24, 32, 53, 26, 36, 55, 30, 42, 59, 33, 48, + 65, 38, 58, 72, 46, 71, 183, 190, 197, 248, 253, 254, 253, 254, 254, 252, 254, 254, 253, 254, 254, 254, 254, 254, 252, 254, 254, 172, 201, 205, 77, 56, 77, 78, 47, 60, 75, 41, 50, 74, 36, 44, 75, 35, 40, 74, 31, 32, 74, 28, 30, 74, 28, 34, 73, 29, 38, 72, 29, 38, 73, 31, 41, + 75, 35, 43, 75, 36, 44, 76, 35, 47, 77, 35, 45, 77, 35, 46, 78, 34, 46, 78, 34, 43, 82, 36, 44, 87, 37, 45, 92, 40, 45, 95, 40, 43, 97, 40, 38, 100, 41, 37, 99, 38, 32, 100, 40, 33, 99, 39, 32, 95, 37, 33, 95, 39, 36, 94, 39, 37, 97, 42, 39, 97, 42, 40, + 96, 44, 44, 98, 46, 50, 99, 48, 56, 103, 51, 62, 104, 58, 71, 108, 63, 77, 108, 64, 81, 107, 64, 82, 109, 68, 89, 107, 67, 87, 109, 61, 79, 111, 58, 76, 112, 58, 73, 115, 61, 77, 117, 63, 78, 118, 64, 80, 122, 69, 86, 123, 71, 89, 120, 73, 92, 122, 79, 105, 125, 85, 121, + 119, 96, 137, 112, 110, 153, 109, 120, 168, 112, 149, 189, 151, 193, 218, 180, 218, 230, 200, 229, 235, 203, 226, 231, 157, 183, 206, 119, 130, 165, 132, 120, 157, 137, 112, 153, 139, 112, 152, 141, 117, 153, 157, 146, 169, 197, 199, 210, 222, 225, 227, 230, 231, 229, 193, 190, 191, 154, 122, 132, 146, 103, 113, + 149, 102, 106, 150, 99, 97, 157, 99, 92, 160, 100, 82, 165, 103, 78, 164, 100, 73, 164, 96, 68, 163, 98, 74, 163, 96, 75, 165, 98, 78, 166, 96, 78, 167, 95, 81, 170, 98, 85, 168, 95, 83, 167, 91, 82, 165, 90, 80, 167, 91, 77, 169, 89, 71, 168, 84, 63, 170, 81, 55, 169, 78, 47, + 168, 77, 44, 171, 78, 47, 174, 80, 48, 178, 83, 50, 182, 91, 62, 185, 111, 93, 187, 121, 109, 179, 100, 83, 165, 77, 54, 146, 63, 50, 122, 48, 46, 103, 40, 38, 95, 32, 31, 96, 33, 27, 103, 38, 34, 111, 44, 47, 106, 51, 66, 50, 50, 98, 2, 11, 41, 12, 43, 88, 41, 115, 180, + 43, 112, 179, 21, 83, 149, 10, 52, 117, 25, 104, 171, 28, 106, 177, 12, 89, 163, 20, 116, 197, 32, 140, 219, 25, 121, 199, 3, 22, 75, 10, 67, 135, 30, 124, 206, 21, 93, 158, 5, 41, 101, 12, 78, 146, 19, 99, 172, 20, 102, 183, 24, 123, 211, 24, 130, 224, 21, 127, 220, 12, 104, 193, + 13, 105, 191, 14, 89, 171, 30, 117, 197, 13, 80, 161, 4, 56, 135, 5, 72, 152, 10, 88, 172, 13, 93, 178, 8, 76, 157, 7, 67, 142, 7, 66, 141, 7, 64, 139, 8, 71, 148, 7, 69, 146, 6, 60, 134, 7, 50, 118, 7, 45, 113, 5, 51, 123, 6, 61, 136, 7, 62, 135, 3, 34, 104, + 9, 46, 113, 18, 56, 127, 15, 40, 112, 20, 42, 115, 21, 43, 117, 19, 42, 118, 19, 42, 119, 18, 42, 119, 19, 43, 121, 17, 45, 121, 18, 49, 124, 20, 52, 130, 19, 55, 133, 20, 55, 131, 18, 54, 128, 14, 49, 122, 11, 44, 115, 10, 41, 110, 10, 38, 104, 6, 34, 100, 5, 31, 97, + 5, 29, 98, 7, 30, 102, 7, 33, 107, 11, 37, 111, 8, 36, 110, 5, 35, 108, 4, 32, 107, 5, 31, 104, 5, 29, 101, 4, 26, 97, 4, 24, 92, 5, 20, 85, 4, 17, 81, 3, 15, 80, 3, 16, 81, 3, 16, 83, 3, 15, 85, 2, 16, 90, 3, 19, 95, 3, 19, 95, 3, 17, 95, + 3, 19, 94, 4, 19, 94, 2, 16, 91, 3, 14, 90, 2, 15, 87, 4, 15, 87, 3, 11, 84, 3, 11, 83, 3, 12, 82, 4, 10, 81, 2, 11, 81, 3, 12, 81, 2, 11, 81, 2, 10, 79, 4, 9, 81, 1, 7, 78, 2, 8, 80, 3, 6, 79, 2, 9, 78, 3, 11, 74, 12, 16, 70, + 39, 15, 67, 68, 19, 56, 82, 23, 33, 92, 24, 28, 101, 27, 15, 106, 25, 7, 108, 25, 4, 113, 28, 5, 116, 30, 4, 116, 30, 2, 114, 28, 2, 112, 26, 3, 44, 20, 30, 48, 24, 33, 52, 28, 37, 56, 32, 44, 62, 36, 51, 69, 42, 61, 74, 48, 74, 120, 152, 170, 236, 250, 253, + 251, 254, 254, 252, 254, 254, 254, 254, 254, 253, 254, 254, 244, 247, 248, 110, 130, 142, 80, 56, 78, 75, 47, 64, 77, 44, 55, 74, 40, 48, 74, 35, 41, 72, 30, 36, 71, 29, 36, 73, 31, 39, 72, 32, 41, 71, 32, 43, 71, 35, 46, 71, 35, 48, 71, 37, 50, 74, 38, 53, 75, 38, 53, + 79, 41, 55, 76, 39, 53, 77, 39, 51, 81, 39, 52, 86, 42, 52, 90, 44, 54, 96, 45, 54, 97, 45, 48, 98, 42, 41, 100, 43, 40, 100, 42, 38, 97, 41, 37, 96, 40, 38, 95, 43, 42, 94, 44, 43, 95, 45, 44, 95, 45, 45, 98, 48, 51, 98, 48, 53, 99, 50, 58, 100, 53, 64, + 104, 60, 72, 107, 65, 81, 107, 73, 93, 107, 104, 139, 103, 133, 187, 97, 133, 193, 104, 101, 141, 111, 65, 85, 110, 59, 77, 112, 59, 77, 117, 65, 81, 119, 66, 83, 120, 69, 87, 119, 70, 88, 119, 72, 91, 121, 78, 103, 122, 81, 117, 117, 92, 133, 111, 107, 149, 110, 117, 162, 108, 123, 176, + 105, 129, 183, 99, 128, 183, 95, 129, 181, 103, 125, 172, 115, 121, 163, 127, 120, 157, 134, 114, 151, 137, 108, 148, 139, 107, 143, 139, 107, 143, 145, 113, 148, 148, 115, 148, 149, 118, 148, 148, 116, 140, 150, 114, 131, 148, 112, 122, 148, 106, 113, 152, 109, 109, 159, 112, 103, 169, 117, 101, 173, 117, 92, + 175, 119, 86, 171, 115, 81, 170, 118, 92, 162, 126, 127, 159, 133, 154, 160, 138, 161, 162, 130, 145, 164, 115, 116, 165, 112, 113, 164, 110, 110, 162, 100, 97, 162, 96, 93, 160, 93, 88, 161, 90, 81, 161, 83, 69, 159, 79, 60, 159, 76, 54, 159, 75, 49, 161, 76, 52, 171, 86, 63, 179, 139, 137, + 187, 203, 234, 185, 217, 255, 183, 214, 255, 181, 210, 248, 169, 155, 170, 145, 74, 68, 121, 58, 64, 105, 51, 61, 94, 40, 47, 88, 31, 30, 96, 35, 36, 100, 42, 52, 81, 61, 98, 35, 86, 153, 35, 78, 131, 44, 97, 150, 19, 41, 70, 39, 96, 160, 19, 75, 142, 13, 74, 142, 35, 122, 193, + 24, 114, 189, 20, 112, 188, 14, 109, 190, 20, 133, 218, 21, 133, 217, 10, 95, 172, 13, 93, 168, 15, 92, 160, 12, 65, 123, 7, 34, 80, 12, 48, 89, 14, 58, 104, 19, 98, 172, 34, 141, 228, 33, 147, 238, 23, 142, 235, 12, 103, 194, 8, 92, 180, 8, 88, 173, 7, 89, 172, 5, 72, 152, + 9, 77, 154, 12, 80, 158, 11, 83, 161, 13, 86, 166, 7, 78, 156, 10, 68, 144, 7, 59, 134, 4, 59, 133, 7, 57, 132, 7, 44, 116, 7, 50, 123, 8, 83, 160, 9, 83, 162, 8, 65, 142, 7, 67, 139, 6, 54, 127, 4, 46, 118, 7, 56, 123, 10, 58, 128, 5, 34, 107, 6, 36, 110, + 8, 38, 117, 10, 41, 121, 12, 44, 125, 9, 43, 124, 8, 43, 124, 9, 44, 126, 7, 45, 128, 7, 47, 129, 9, 49, 129, 10, 53, 131, 7, 50, 127, 7, 48, 123, 6, 45, 119, 6, 43, 117, 6, 40, 112, 3, 33, 105, 4, 32, 105, 3, 32, 107, 5, 34, 109, 5, 35, 111, 4, 37, 113, + 4, 35, 111, 4, 36, 111, 3, 33, 109, 2, 31, 106, 2, 28, 101, 4, 26, 97, 3, 23, 91, 3, 20, 86, 2, 18, 83, 2, 16, 81, 3, 16, 80, 2, 13, 80, 3, 13, 82, 2, 17, 89, 3, 20, 94, 3, 19, 94, 4, 20, 95, 3, 19, 93, 4, 19, 94, 3, 17, 92, 2, 16, 91, + 4, 18, 93, 2, 13, 87, 3, 11, 86, 2, 11, 84, 3, 12, 84, 4, 11, 82, 3, 9, 81, 2, 12, 82, 3, 11, 80, 2, 8, 77, 3, 7, 77, 3, 8, 77, 2, 7, 76, 2, 6, 75, 2, 9, 76, 4, 12, 73, 21, 17, 70, 50, 17, 69, 74, 21, 51, 86, 25, 34, 96, 26, 27, + 104, 28, 14, 107, 27, 9, 111, 28, 5, 116, 30, 6, 117, 30, 4, 116, 30, 3, 115, 30, 5, 112, 28, 5, 46, 22, 34, 50, 26, 37, 56, 31, 42, 60, 34, 47, 65, 39, 53, 71, 45, 62, 81, 78, 100, 85, 199, 249, 122, 206, 248, 225, 247, 249, 246, 253, 254, 246, 252, 254, 242, 249, 251, + 141, 171, 179, 81, 64, 89, 81, 54, 77, 77, 50, 67, 77, 45, 56, 74, 40, 48, 76, 37, 44, 71, 31, 38, 74, 34, 41, 74, 34, 43, 70, 34, 44, 71, 35, 49, 72, 38, 52, 69, 39, 55, 70, 39, 58, 72, 39, 60, 79, 43, 67, 79, 45, 66, 81, 44, 65, 80, 45, 63, 83, 44, 60, + 88, 47, 62, 94, 51, 65, 97, 50, 61, 97, 48, 55, 97, 45, 46, 96, 43, 42, 97, 44, 41, 97, 44, 41, 94, 42, 40, 96, 46, 45, 97, 48, 47, 97, 47, 47, 98, 50, 51, 100, 51, 54, 100, 51, 57, 99, 52, 59, 99, 57, 66, 105, 63, 73, 112, 77, 91, 116, 147, 188, 111, 167, 230, + 110, 158, 222, 103, 156, 223, 99, 152, 220, 102, 114, 161, 109, 65, 81, 112, 64, 82, 117, 66, 83, 116, 66, 83, 117, 69, 86, 117, 70, 87, 118, 73, 90, 120, 76, 100, 121, 81, 116, 117, 90, 130, 111, 107, 147, 112, 113, 155, 113, 119, 166, 111, 125, 175, 110, 126, 174, 108, 122, 170, 116, 122, 164, + 123, 116, 157, 131, 112, 152, 135, 109, 148, 138, 104, 140, 136, 102, 137, 141, 107, 139, 143, 109, 139, 144, 112, 138, 151, 118, 140, 154, 121, 138, 153, 120, 133, 148, 114, 121, 150, 114, 119, 160, 128, 124, 173, 142, 129, 183, 148, 128, 186, 151, 112, 187, 156, 95, 181, 158, 102, 176, 166, 170, 165, 156, 173, + 155, 153, 175, 153, 156, 185, 153, 160, 194, 155, 155, 183, 163, 128, 140, 162, 121, 132, 160, 113, 120, 159, 106, 112, 155, 98, 99, 153, 92, 89, 152, 85, 78, 153, 80, 69, 147, 74, 56, 150, 74, 56, 156, 82, 67, 170, 142, 145, 178, 225, 255, 180, 217, 254, 183, 217, 253, 184, 219, 253, 180, 220, 254, + 175, 218, 251, 155, 162, 184, 121, 64, 79, 104, 54, 71, 88, 43, 55, 76, 28, 34, 80, 30, 36, 91, 43, 57, 62, 71, 119, 49, 98, 165, 118, 145, 198, 51, 60, 92, 17, 7, 25, 34, 70, 117, 21, 90, 160, 15, 87, 159, 42, 141, 217, 27, 122, 200, 15, 89, 164, 16, 117, 199, 21, 136, 220, + 30, 147, 231, 17, 122, 200, 10, 68, 131, 7, 22, 63, 5, 7, 36, 4, 6, 31, 3, 1, 21, 2, 1, 20, 5, 16, 47, 11, 87, 157, 19, 122, 213, 8, 120, 218, 10, 111, 204, 8, 92, 182, 9, 84, 171, 14, 92, 175, 17, 101, 184, 12, 82, 158, 8, 65, 141, 7, 72, 148, 7, 62, 133, + 6, 58, 131, 7, 65, 139, 10, 71, 148, 8, 64, 142, 8, 69, 148, 6, 60, 131, 6, 40, 110, 5, 45, 119, 7, 75, 154, 6, 81, 160, 7, 76, 153, 8, 62, 136, 4, 59, 132, 12, 78, 151, 7, 65, 137, 6, 37, 108, 7, 33, 106, 7, 39, 116, 4, 40, 123, 3, 40, 124, 5, 43, 126, + 4, 41, 125, 4, 42, 126, 4, 45, 128, 4, 46, 128, 4, 48, 130, 3, 49, 129, 7, 51, 129, 5, 49, 126, 6, 48, 122, 6, 46, 120, 3, 36, 112, 3, 34, 109, 3, 34, 109, 3, 34, 109, 3, 36, 111, 3, 37, 113, 3, 37, 113, 3, 36, 112, 2, 34, 110, 3, 34, 108, 3, 32, 106, + 2, 30, 101, 2, 26, 96, 3, 24, 90, 2, 19, 85, 3, 19, 82, 2, 16, 79, 2, 14, 76, 3, 14, 79, 3, 14, 80, 2, 16, 85, 3, 18, 89, 4, 18, 90, 3, 18, 90, 2, 21, 90, 3, 20, 91, 2, 18, 91, 3, 17, 91, 3, 15, 90, 3, 15, 89, 3, 12, 87, 3, 11, 83, + 3, 12, 82, 2, 11, 80, 3, 11, 79, 2, 9, 74, 2, 11, 75, 2, 9, 73, 2, 8, 73, 3, 5, 71, 4, 6, 73, 3, 6, 72, 2, 8, 71, 5, 14, 70, 25, 18, 66, 55, 18, 65, 77, 23, 48, 89, 27, 36, 96, 30, 29, 103, 29, 19, 105, 29, 13, 110, 31, 10, 116, 33, 9, + 120, 35, 10, 118, 33, 8, 115, 31, 8, 110, 28, 10, 47, 23, 34, 51, 26, 37, 59, 32, 44, 61, 36, 49, 65, 38, 52, 68, 42, 57, 88, 130, 157, 79, 185, 248, 85, 190, 245, 137, 215, 245, 175, 237, 247, 158, 228, 249, 111, 196, 229, 81, 67, 89, 82, 54, 80, 80, 50, 74, 78, 50, 67, + 80, 48, 61, 77, 43, 53, 74, 38, 47, 76, 37, 46, 77, 38, 48, 74, 37, 48, 71, 37, 49, 72, 39, 55, 71, 40, 59, 72, 41, 64, 72, 41, 67, 75, 43, 71, 77, 44, 75, 82, 48, 77, 82, 48, 77, 85, 50, 79, 86, 48, 72, 91, 52, 71, 93, 51, 67, 97, 53, 66, 94, 49, 58, + 93, 44, 50, 92, 42, 43, 93, 44, 43, 93, 43, 42, 93, 43, 41, 95, 46, 44, 98, 50, 49, 99, 50, 50, 100, 53, 53, 100, 56, 57, 99, 56, 59, 100, 56, 63, 107, 64, 71, 126, 87, 84, 136, 136, 150, 127, 174, 230, 117, 162, 220, 119, 167, 224, 113, 165, 228, 104, 160, 225, 97, 152, 218, + 107, 83, 107, 113, 67, 84, 116, 68, 85, 117, 68, 84, 116, 67, 84, 116, 67, 84, 117, 71, 89, 117, 74, 97, 121, 83, 115, 117, 91, 129, 112, 105, 145, 115, 113, 154, 114, 116, 161, 115, 125, 172, 114, 124, 169, 116, 121, 163, 120, 118, 157, 126, 111, 149, 133, 111, 150, 135, 105, 143, 138, 104, 138, + 141, 104, 134, 140, 105, 131, 141, 108, 132, 152, 126, 138, 190, 177, 165, 218, 218, 191, 219, 223, 191, 181, 177, 148, 158, 144, 146, 159, 144, 152, 176, 159, 142, 208, 207, 156, 239, 243, 205, 250, 255, 227, 250, 253, 235, 224, 230, 195, 178, 183, 167, 157, 164, 178, 155, 166, 194, 151, 169, 204, 151, 171, 209, + 158, 159, 186, 164, 142, 157, 161, 129, 143, 157, 118, 131, 155, 109, 120, 152, 97, 103, 149, 92, 92, 145, 82, 78, 141, 74, 64, 143, 75, 64, 150, 95, 89, 171, 213, 240, 171, 218, 254, 175, 221, 253, 177, 221, 253, 178, 223, 254, 176, 224, 254, 173, 223, 254, 156, 211, 243, 129, 95, 118, 102, 56, 83, + 87, 47, 68, 70, 30, 41, 73, 32, 43, 80, 55, 78, 60, 118, 178, 65, 129, 184, 120, 196, 236, 88, 86, 97, 27, 21, 44, 19, 68, 126, 17, 88, 159, 21, 99, 171, 40, 142, 221, 29, 127, 209, 14, 93, 171, 17, 133, 216, 32, 163, 245, 15, 138, 228, 10, 97, 170, 5, 17, 51, 3, 11, 41, + 8, 49, 101, 16, 25, 55, 4, 5, 35, 9, 15, 45, 8, 32, 73, 10, 53, 112, 6, 67, 142, 9, 119, 213, 7, 94, 184, 12, 108, 198, 14, 108, 194, 8, 80, 164, 11, 83, 165, 21, 101, 178, 11, 85, 162, 14, 94, 171, 12, 89, 167, 8, 78, 153, 6, 68, 143, 7, 75, 151, 6, 77, 154, + 5, 74, 152, 8, 73, 150, 5, 45, 118, 4, 56, 128, 8, 56, 131, 6, 71, 149, 9, 75, 155, 6, 77, 154, 7, 75, 151, 10, 76, 151, 7, 65, 138, 5, 42, 110, 3, 23, 93, 4, 34, 109, 3, 39, 117, 3, 37, 122, 4, 40, 125, 3, 39, 123, 3, 39, 122, 3, 40, 123, 3, 43, 124, + 3, 43, 124, 3, 45, 123, 2, 44, 122, 3, 45, 120, 3, 41, 115, 3, 38, 112, 3, 33, 108, 3, 34, 109, 4, 35, 109, 2, 34, 109, 3, 34, 109, 2, 33, 109, 3, 34, 109, 3, 34, 108, 3, 33, 106, 3, 32, 104, 3, 30, 100, 2, 26, 94, 4, 24, 91, 3, 21, 85, 3, 17, 80, + 2, 17, 76, 3, 14, 73, 3, 13, 73, 2, 11, 72, 3, 11, 74, 3, 15, 80, 3, 16, 83, 3, 17, 84, 3, 16, 83, 2, 16, 83, 2, 18, 86, 4, 17, 86, 3, 16, 85, 3, 15, 86, 3, 14, 85, 3, 13, 80, 3, 11, 80, 3, 9, 76, 2, 9, 73, 3, 9, 68, 4, 6, 64, + 4, 8, 64, 2, 6, 62, 3, 7, 63, 3, 6, 63, 2, 5, 61, 2, 5, 61, 4, 9, 64, 7, 13, 62, 26, 16, 63, 55, 16, 62, 72, 22, 42, 85, 27, 35, 94, 31, 32, 103, 34, 29, 108, 37, 28, 113, 38, 26, 117, 38, 21, 121, 39, 19, 117, 37, 17, 113, 34, 21, 106, 29, 20, + 47, 23, 34, 52, 27, 37, 57, 31, 40, 61, 34, 45, 67, 40, 50, 71, 43, 54, 94, 135, 157, 146, 214, 246, 238, 252, 251, 255, 255, 253, 253, 254, 253, 205, 245, 250, 92, 186, 225, 85, 64, 79, 82, 53, 76, 78, 49, 69, 77, 46, 63, 77, 44, 59, 77, 41, 53, 75, 40, 51, 74, 39, 51, + 76, 40, 51, 75, 40, 53, 71, 37, 54, 69, 36, 58, 68, 38, 62, 71, 42, 69, 74, 43, 73, 76, 44, 77, 80, 47, 81, 83, 51, 84, 84, 51, 85, 86, 53, 87, 88, 51, 80, 90, 52, 75, 94, 54, 70, 94, 54, 66, 92, 50, 62, 88, 45, 53, 86, 42, 45, 85, 42, 43, 87, 44, 43, + 90, 43, 40, 95, 48, 45, 99, 54, 49, 99, 54, 50, 100, 56, 53, 101, 57, 57, 102, 62, 60, 112, 69, 68, 136, 95, 77, 148, 105, 90, 139, 173, 208, 128, 172, 224, 128, 173, 224, 124, 172, 227, 122, 173, 231, 110, 166, 228, 101, 156, 222, 103, 107, 146, 112, 66, 82, 113, 69, 85, 114, 66, 81, + 115, 67, 83, 115, 67, 82, 116, 70, 86, 117, 75, 96, 117, 82, 114, 117, 91, 126, 112, 102, 141, 114, 110, 151, 117, 117, 159, 116, 121, 166, 117, 123, 164, 117, 121, 160, 120, 114, 152, 128, 109, 148, 132, 105, 143, 136, 103, 138, 138, 103, 136, 138, 103, 130, 138, 104, 127, 159, 139, 139, 239, 241, 222, + 255, 255, 255, 255, 255, 255, 254, 255, 255, 252, 255, 253, 204, 215, 198, 144, 147, 131, 218, 218, 173, 255, 255, 254, 254, 254, 255, 254, 253, 255, 254, 253, 255, 253, 254, 254, 242, 247, 231, 174, 190, 180, 155, 173, 198, 147, 173, 211, 149, 177, 217, 152, 179, 213, 167, 156, 175, 166, 148, 170, 161, 134, 158, + 158, 124, 144, 151, 110, 124, 146, 103, 113, 139, 91, 94, 138, 82, 80, 139, 85, 84, 147, 130, 137, 163, 228, 255, 165, 220, 252, 168, 223, 252, 173, 229, 253, 175, 228, 253, 170, 226, 253, 169, 225, 254, 147, 212, 245, 127, 130, 163, 98, 58, 96, 86, 47, 81, 65, 32, 50, 67, 40, 61, 71, 125, 185, + 65, 156, 220, 32, 96, 138, 30, 169, 231, 13, 22, 42, 20, 46, 81, 14, 81, 151, 11, 82, 152, 16, 105, 180, 36, 145, 228, 25, 122, 203, 13, 87, 164, 26, 149, 228, 35, 167, 244, 16, 126, 205, 5, 29, 76, 3, 5, 34, 8, 77, 144, 34, 161, 228, 68, 80, 106, 14, 24, 52, 75, 108, 145, + 6, 92, 145, 8, 172, 242, 6, 67, 144, 7, 86, 171, 11, 91, 174, 9, 81, 165, 11, 90, 172, 13, 91, 170, 10, 86, 163, 9, 75, 150, 16, 90, 169, 15, 96, 175, 9, 81, 159, 5, 74, 149, 4, 63, 138, 8, 68, 142, 6, 71, 146, 9, 81, 157, 6, 63, 138, 7, 61, 137, 4, 53, 126, + 5, 57, 131, 8, 68, 144, 7, 67, 143, 6, 62, 139, 6, 55, 132, 5, 63, 138, 8, 61, 133, 10, 59, 129, 6, 31, 100, 4, 27, 99, 3, 32, 109, 3, 35, 115, 3, 36, 118, 2, 35, 118, 4, 33, 116, 2, 34, 115, 3, 36, 114, 3, 36, 114, 3, 36, 112, 3, 36, 110, 2, 34, 108, + 2, 34, 108, 3, 32, 105, 3, 29, 102, 2, 30, 102, 2, 30, 103, 2, 30, 102, 3, 31, 103, 3, 33, 104, 2, 31, 103, 3, 31, 101, 2, 29, 98, 3, 29, 97, 2, 25, 91, 3, 25, 89, 4, 24, 85, 3, 22, 80, 3, 18, 77, 4, 15, 72, 2, 14, 71, 3, 13, 70, 3, 10, 68, + 3, 10, 70, 3, 12, 72, 2, 13, 72, 2, 12, 70, 3, 15, 74, 3, 15, 74, 2, 14, 75, 3, 15, 77, 2, 14, 77, 3, 14, 78, 3, 10, 75, 4, 10, 74, 2, 8, 66, 3, 7, 54, 3, 4, 40, 2, 4, 35, 3, 4, 33, 3, 3, 30, 4, 5, 34, 2, 3, 29, 2, 3, 29, + 2, 3, 31, 3, 4, 29, 2, 4, 35, 4, 5, 35, 9, 7, 29, 15, 5, 22, 22, 7, 23, 37, 12, 24, 60, 18, 25, 73, 25, 30, 85, 35, 35, 96, 45, 45, 100, 42, 40, 101, 29, 21, 108, 33, 23, 109, 37, 31, 94, 32, 35, 47, 24, 34, 54, 30, 40, 59, 33, 42, 64, 36, 45, + 67, 40, 45, 75, 46, 53, 152, 146, 132, 255, 255, 252, 255, 254, 254, 253, 254, 254, 253, 254, 253, 255, 254, 253, 174, 209, 197, 88, 66, 78, 82, 53, 71, 81, 49, 67, 80, 47, 64, 82, 47, 66, 81, 45, 62, 79, 43, 59, 78, 42, 56, 77, 42, 55, 75, 41, 56, 71, 41, 59, 65, 35, 60, + 65, 35, 60, 72, 42, 70, 72, 43, 74, 75, 45, 78, 78, 46, 80, 83, 51, 86, 86, 53, 88, 87, 56, 90, 89, 55, 87, 92, 56, 83, 89, 53, 73, 88, 53, 68, 86, 48, 61, 81, 41, 52, 77, 39, 45, 78, 41, 43, 82, 44, 40, 90, 54, 42, 98, 80, 35, 104, 103, 31, 104, 95, 34, + 109, 78, 48, 112, 71, 59, 110, 70, 62, 131, 90, 68, 143, 101, 78, 150, 108, 91, 141, 184, 219, 134, 175, 227, 134, 179, 227, 131, 179, 231, 127, 177, 232, 116, 171, 233, 104, 159, 226, 105, 112, 151, 111, 65, 83, 111, 66, 83, 112, 66, 83, 112, 65, 81, 115, 68, 85, 114, 70, 87, 117, 77, 99, + 117, 84, 115, 114, 90, 124, 111, 99, 138, 115, 107, 149, 115, 114, 155, 118, 120, 162, 120, 122, 161, 119, 118, 156, 120, 112, 149, 125, 105, 140, 129, 103, 137, 135, 105, 139, 134, 112, 145, 130, 114, 148, 128, 131, 153, 230, 233, 218, 254, 255, 255, 253, 254, 253, 253, 254, 254, 253, 254, 253, 252, 254, 253, + 249, 252, 247, 198, 216, 146, 255, 255, 253, 253, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 254, 253, 251, 254, 252, 226, 235, 216, 157, 180, 199, 141, 179, 219, 146, 184, 226, 152, 189, 224, 167, 167, 187, 164, 164, 183, 164, 156, 178, 162, 141, 169, 157, 124, 151, 147, 115, 130, 140, 101, 111, + 136, 92, 100, 136, 96, 104, 148, 146, 160, 160, 224, 255, 160, 219, 252, 167, 225, 253, 171, 229, 252, 174, 231, 253, 171, 229, 253, 166, 227, 253, 153, 216, 248, 126, 138, 173, 97, 59, 102, 84, 50, 90, 59, 35, 61, 59, 53, 84, 72, 148, 213, 63, 144, 198, 7, 42, 80, 13, 165, 240, 20, 134, 195, + 24, 151, 225, 13, 80, 154, 14, 88, 160, 17, 109, 185, 34, 148, 225, 16, 100, 183, 24, 113, 190, 29, 165, 243, 24, 149, 224, 10, 54, 111, 3, 5, 46, 4, 19, 60, 12, 119, 199, 43, 191, 239, 37, 52, 78, 18, 25, 62, 11, 48, 89, 9, 165, 230, 14, 179, 242, 18, 117, 200, 9, 76, 151, + 3, 36, 106, 5, 32, 100, 6, 26, 85, 7, 27, 86, 9, 51, 117, 19, 95, 171, 27, 115, 199, 13, 97, 176, 8, 75, 151, 6, 49, 120, 7, 47, 117, 4, 62, 136, 8, 70, 144, 3, 64, 139, 8, 71, 147, 6, 66, 141, 7, 50, 124, 5, 56, 128, 9, 59, 131, 5, 52, 126, 4, 58, 133, + 3, 53, 129, 5, 58, 134, 9, 56, 130, 5, 46, 114, 8, 43, 111, 5, 24, 92, 4, 32, 103, 3, 34, 106, 3, 32, 109, 2, 30, 107, 3, 32, 106, 3, 31, 105, 3, 30, 102, 4, 31, 102, 3, 28, 99, 3, 28, 98, 3, 28, 95, 3, 27, 94, 3, 27, 94, 3, 26, 94, 3, 26, 93, + 3, 26, 93, 3, 27, 94, 3, 27, 94, 3, 28, 94, 3, 28, 92, 3, 27, 90, 3, 26, 89, 2, 25, 86, 2, 25, 84, 4, 22, 81, 3, 20, 76, 3, 18, 73, 3, 19, 72, 3, 15, 70, 3, 16, 71, 3, 15, 68, 4, 13, 66, 3, 10, 64, 2, 11, 65, 4, 11, 64, 4, 11, 62, + 3, 12, 63, 3, 15, 66, 2, 14, 65, 3, 12, 62, 4, 12, 61, 3, 10, 55, 3, 7, 43, 2, 3, 30, 2, 3, 20, 2, 3, 16, 2, 2, 13, 1, 1, 13, 2, 3, 13, 1, 2, 11, 1, 2, 9, 1, 2, 9, 1, 2, 8, 2, 2, 8, 2, 1, 8, 1, 2, 6, 1, 2, 6, + 1, 2, 7, 0, 2, 4, 0, 1, 5, 0, 1, 6, 0, 1, 7, 1, 2, 9, 0, 1, 8, 0, 0, 7, 3, 3, 13, 20, 9, 21, 20, 8, 18, 23, 10, 23, 34, 12, 25, 52, 29, 39, 57, 32, 42, 61, 36, 44, 67, 39, 45, 71, 40, 45, 79, 49, 47, 229, 223, 192, 252, 253, 253, + 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 254, 254, 237, 244, 213, 90, 78, 62, 85, 54, 70, 83, 50, 68, 81, 49, 69, 85, 50, 74, 85, 48, 73, 80, 42, 63, 77, 40, 57, 76, 40, 56, 73, 39, 56, 67, 37, 57, 61, 30, 53, 60, 31, 56, 64, 36, 63, 69, 41, 71, 72, 43, 77, + 78, 46, 81, 80, 49, 84, 85, 52, 87, 88, 55, 90, 85, 52, 86, 83, 50, 81, 78, 46, 73, 79, 46, 68, 75, 43, 60, 70, 37, 50, 66, 36, 44, 69, 39, 44, 88, 65, 40, 120, 143, 18, 141, 188, 3, 150, 198, 2, 154, 193, 3, 158, 171, 4, 162, 132, 57, 157, 117, 66, 147, 105, 70, + 151, 111, 81, 155, 111, 90, 144, 170, 190, 134, 178, 230, 135, 181, 230, 134, 182, 231, 128, 179, 234, 116, 172, 233, 102, 158, 222, 104, 98, 133, 108, 62, 79, 108, 64, 81, 108, 63, 79, 111, 65, 81, 114, 69, 86, 116, 74, 92, 118, 79, 105, 118, 86, 121, 115, 92, 128, 112, 98, 137, 113, 104, 145, + 113, 111, 151, 117, 117, 157, 118, 118, 158, 120, 117, 156, 121, 108, 147, 125, 104, 139, 126, 108, 142, 125, 120, 156, 122, 121, 154, 115, 126, 162, 145, 173, 188, 255, 255, 255, 252, 254, 253, 250, 254, 254, 249, 254, 253, 250, 254, 253, 249, 254, 253, 249, 253, 252, 252, 255, 247, 251, 253, 254, 254, 254, 254, + 254, 254, 254, 253, 253, 253, 254, 254, 254, 253, 253, 253, 253, 254, 253, 247, 250, 242, 169, 196, 194, 142, 181, 219, 147, 187, 229, 155, 191, 227, 169, 179, 200, 170, 175, 198, 167, 167, 189, 162, 150, 177, 160, 134, 165, 152, 122, 145, 142, 112, 127, 136, 103, 116, 137, 104, 119, 141, 123, 141, 158, 223, 252, + 159, 221, 254, 161, 223, 253, 170, 229, 253, 172, 229, 253, 172, 229, 254, 168, 228, 253, 147, 214, 247, 125, 126, 164, 100, 67, 108, 84, 55, 94, 58, 38, 69, 49, 46, 79, 43, 101, 160, 69, 151, 214, 5, 21, 55, 10, 91, 153, 20, 152, 228, 24, 128, 208, 24, 101, 179, 13, 92, 168, 22, 119, 199, + 12, 107, 191, 11, 98, 180, 13, 123, 206, 32, 179, 249, 15, 95, 165, 2, 6, 55, 3, 6, 47, 6, 19, 62, 7, 101, 181, 4, 170, 250, 10, 112, 167, 7, 38, 84, 14, 145, 207, 5, 170, 247, 19, 131, 207, 44, 182, 247, 26, 135, 219, 9, 94, 174, 9, 71, 145, 6, 29, 90, 4, 8, 56, + 4, 7, 45, 4, 30, 80, 9, 74, 147, 8, 86, 165, 7, 73, 147, 5, 40, 110, 7, 45, 113, 9, 56, 130, 8, 79, 152, 8, 65, 138, 12, 80, 153, 5, 66, 138, 4, 58, 129, 4, 45, 114, 6, 54, 123, 6, 61, 133, 6, 62, 136, 6, 64, 141, 10, 76, 152, 9, 63, 138, 6, 53, 123, + 15, 62, 131, 4, 21, 87, 4, 21, 85, 4, 27, 92, 3, 26, 92, 4, 26, 93, 4, 23, 90, 4, 24, 89, 3, 24, 86, 4, 22, 84, 3, 23, 84, 3, 19, 79, 3, 18, 78, 3, 18, 77, 4, 20, 79, 3, 19, 78, 2, 19, 77, 3, 19, 76, 3, 21, 77, 3, 21, 77, 4, 22, 79, + 4, 22, 78, 3, 20, 74, 5, 17, 73, 4, 19, 73, 3, 19, 72, 4, 18, 71, 4, 16, 68, 1, 14, 65, 2, 17, 67, 3, 15, 66, 3, 16, 68, 2, 16, 66, 2, 13, 62, 3, 13, 61, 3, 13, 58, 3, 11, 54, 3, 10, 50, 4, 12, 51, 3, 11, 50, 4, 9, 45, 3, 6, 37, + 4, 6, 28, 4, 2, 16, 2, 2, 16, 1, 1, 13, 2, 2, 11, 2, 2, 11, 1, 2, 8, 1, 1, 9, 1, 1, 10, 1, 1, 7, 1, 2, 7, 1, 2, 6, 1, 2, 5, 0, 2, 4, 1, 1, 5, 1, 2, 5, 1, 1, 5, 1, 2, 6, 1, 1, 5, 1, 2, 6, 1, 2, 6, + 0, 1, 5, 1, 1, 6, 2, 2, 5, 1, 2, 5, 2, 2, 4, 0, 1, 3, 0, 1, 6, 1, 1, 6, 0, 2, 4, 55, 30, 43, 60, 35, 47, 65, 38, 47, 70, 41, 46, 72, 41, 45, 87, 56, 45, 248, 245, 219, 253, 254, 253, 254, 254, 254, 254, 255, 254, 254, 254, 254, 254, 254, 254, + 252, 252, 240, 98, 94, 58, 84, 50, 65, 84, 48, 65, 85, 49, 71, 85, 48, 74, 84, 48, 74, 81, 43, 68, 76, 38, 58, 75, 38, 55, 72, 37, 54, 66, 33, 53, 59, 30, 49, 54, 24, 48, 58, 30, 54, 61, 34, 62, 67, 39, 71, 72, 42, 77, 77, 44, 81, 80, 47, 83, 84, 52, 87, + 83, 51, 86, 78, 48, 78, 70, 43, 71, 68, 38, 66, 65, 38, 61, 59, 30, 51, 55, 31, 44, 69, 49, 42, 126, 152, 15, 143, 189, 1, 155, 197, 2, 193, 218, 4, 212, 229, 3, 197, 210, 3, 190, 171, 23, 190, 144, 68, 179, 133, 64, 158, 117, 83, 158, 118, 92, 150, 134, 125, 138, 186, 234, + 132, 179, 230, 131, 183, 233, 118, 173, 232, 109, 166, 231, 98, 144, 204, 102, 68, 86, 105, 59, 77, 106, 61, 77, 109, 64, 80, 112, 67, 83, 115, 71, 89, 116, 75, 96, 118, 80, 110, 116, 87, 125, 114, 97, 135, 110, 100, 140, 113, 107, 147, 112, 109, 150, 116, 116, 156, 116, 116, 154, 121, 116, 151, + 123, 111, 146, 123, 106, 140, 120, 122, 158, 119, 123, 160, 107, 128, 169, 100, 137, 184, 182, 206, 215, 253, 255, 255, 249, 253, 253, 249, 254, 253, 250, 254, 253, 248, 254, 253, 249, 254, 253, 248, 253, 252, 252, 253, 254, 252, 254, 254, 253, 253, 253, 253, 253, 253, 253, 254, 254, 253, 253, 253, 254, 254, 254, + 254, 254, 253, 248, 251, 249, 186, 206, 190, 147, 181, 216, 147, 187, 228, 158, 187, 219, 172, 182, 203, 173, 179, 204, 171, 172, 194, 167, 155, 180, 161, 136, 168, 155, 125, 153, 144, 115, 137, 140, 110, 132, 137, 107, 129, 138, 110, 134, 152, 179, 204, 158, 222, 254, 165, 226, 253, 171, 227, 253, 171, 227, 253, + 170, 227, 253, 168, 225, 252, 152, 198, 232, 125, 100, 140, 111, 83, 124, 87, 59, 96, 61, 48, 77, 49, 55, 88, 24, 47, 87, 36, 89, 145, 34, 88, 146, 9, 25, 64, 10, 38, 82, 22, 99, 174, 18, 99, 181, 22, 114, 197, 22, 134, 222, 19, 134, 221, 10, 105, 188, 10, 108, 191, 33, 161, 231, + 6, 51, 121, 7, 24, 79, 3, 2, 42, 11, 22, 69, 21, 80, 146, 7, 164, 239, 5, 192, 253, 12, 191, 255, 7, 174, 249, 21, 141, 222, 56, 175, 229, 27, 116, 197, 10, 94, 177, 17, 104, 187, 5, 56, 129, 5, 47, 116, 6, 35, 92, 3, 5, 40, 4, 2, 34, 5, 16, 57, 5, 47, 108, + 5, 58, 125, 11, 79, 154, 22, 99, 181, 11, 75, 151, 9, 70, 143, 7, 49, 116, 4, 39, 109, 8, 50, 119, 8, 57, 125, 5, 32, 102, 3, 42, 113, 6, 62, 133, 4, 57, 132, 5, 66, 143, 6, 72, 147, 5, 61, 134, 9, 59, 129, 7, 48, 115, 10, 54, 117, 4, 13, 72, 4, 19, 73, + 6, 20, 75, 4, 19, 73, 5, 19, 73, 3, 18, 69, 3, 18, 70, 3, 16, 68, 3, 13, 65, 2, 11, 63, 3, 10, 61, 3, 10, 60, 3, 11, 60, 3, 11, 59, 3, 12, 59, 3, 12, 59, 2, 15, 63, 3, 14, 62, 4, 14, 62, 4, 17, 66, 4, 16, 65, 5, 15, 63, 4, 13, 61, + 5, 17, 63, 5, 14, 61, 4, 13, 60, 4, 15, 62, 5, 17, 63, 3, 20, 66, 5, 20, 67, 3, 15, 59, 4, 12, 55, 3, 15, 54, 3, 13, 50, 3, 8, 40, 4, 7, 37, 4, 7, 36, 4, 6, 31, 3, 3, 25, 3, 3, 22, 2, 3, 16, 1, 2, 13, 1, 2, 8, 2, 3, 9, + 2, 2, 8, 1, 2, 7, 1, 2, 8, 2, 3, 9, 3, 3, 10, 1, 2, 6, 1, 2, 9, 1, 1, 5, 1, 2, 6, 2, 2, 4, 2, 3, 4, 1, 2, 4, 1, 2, 5, 1, 2, 7, 1, 1, 7, 1, 1, 6, 1, 2, 5, 2, 2, 7, 1, 2, 8, 1, 2, 5, 1, 2, 6, + 1, 2, 4, 2, 2, 4, 1, 1, 6, 1, 1, 6, 2, 2, 7, 55, 32, 46, 60, 35, 48, 62, 37, 49, 67, 41, 46, 69, 39, 44, 78, 47, 44, 230, 227, 196, 253, 254, 253, 254, 254, 253, 254, 254, 253, 254, 255, 254, 254, 254, 254, 241, 245, 215, 92, 77, 54, 84, 50, 63, 84, 47, 64, + 85, 48, 72, 85, 49, 76, 84, 47, 74, 81, 43, 70, 75, 37, 59, 70, 34, 51, 66, 32, 48, 62, 29, 46, 57, 25, 42, 52, 23, 40, 54, 26, 47, 59, 30, 57, 65, 37, 68, 71, 41, 75, 77, 44, 81, 80, 48, 83, 78, 46, 80, 80, 51, 82, 72, 45, 74, 65, 40, 69, 58, 36, 63, + 53, 32, 60, 50, 28, 55, 50, 29, 54, 97, 101, 44, 137, 176, 10, 143, 184, 2, 166, 206, 2, 211, 226, 2, 212, 231, 7, 207, 228, 5, 191, 192, 4, 193, 159, 65, 189, 143, 69, 168, 127, 80, 158, 119, 92, 155, 117, 95, 149, 154, 165, 138, 185, 230, 131, 181, 230, 117, 170, 229, 97, 147, 209, + 92, 91, 120, 97, 55, 74, 97, 56, 73, 103, 59, 75, 107, 64, 81, 112, 68, 85, 113, 70, 92, 115, 75, 103, 118, 82, 117, 114, 92, 130, 111, 98, 138, 112, 105, 146, 111, 109, 149, 112, 113, 153, 114, 113, 154, 116, 115, 153, 119, 114, 150, 122, 110, 143, 120, 113, 147, 120, 130, 170, 114, 135, 178, + 101, 143, 192, 99, 149, 199, 173, 206, 220, 255, 255, 255, 250, 254, 253, 250, 254, 253, 250, 253, 253, 249, 254, 253, 250, 254, 253, 249, 254, 253, 252, 254, 254, 253, 254, 254, 253, 253, 253, 253, 253, 253, 253, 254, 254, 252, 254, 254, 254, 254, 254, 254, 254, 253, 249, 251, 245, 181, 202, 183, 144, 177, 210, + 143, 177, 214, 160, 174, 195, 169, 177, 198, 170, 176, 200, 170, 171, 192, 165, 156, 180, 160, 136, 168, 154, 125, 154, 147, 117, 143, 141, 111, 137, 137, 107, 132, 137, 106, 132, 138, 117, 143, 157, 201, 224, 168, 221, 250, 170, 223, 250, 170, 223, 250, 170, 220, 248, 171, 201, 231, 155, 136, 164, 137, 102, 141, + 123, 89, 129, 96, 64, 98, 68, 50, 80, 54, 58, 93, 24, 48, 85, 16, 43, 87, 39, 101, 166, 39, 123, 200, 26, 103, 171, 32, 118, 199, 35, 137, 219, 26, 136, 223, 24, 141, 232, 23, 143, 235, 16, 131, 218, 11, 75, 150, 10, 59, 123, 9, 40, 105, 7, 40, 102, 6, 12, 56, 24, 47, 91, + 12, 37, 93, 19, 76, 138, 14, 118, 183, 12, 116, 190, 17, 108, 184, 30, 112, 181, 3, 62, 132, 5, 51, 121, 6, 65, 139, 6, 70, 146, 4, 35, 109, 6, 45, 120, 11, 95, 175, 11, 55, 122, 5, 27, 77, 2, 6, 45, 2, 4, 45, 4, 17, 63, 8, 57, 124, 15, 78, 152, 8, 53, 121, + 10, 49, 113, 8, 33, 82, 4, 11, 57, 4, 10, 60, 5, 17, 74, 6, 46, 111, 6, 45, 113, 5, 53, 126, 6, 63, 139, 8, 68, 144, 6, 61, 135, 7, 46, 119, 7, 50, 120, 11, 55, 122, 7, 45, 107, 10, 37, 93, 7, 17, 63, 10, 19, 62, 9, 17, 61, 9, 17, 60, 6, 16, 61, + 6, 15, 58, 4, 9, 54, 3, 10, 55, 4, 9, 53, 2, 7, 48, 3, 7, 48, 3, 7, 46, 3, 6, 45, 5, 10, 49, 6, 10, 49, 5, 10, 49, 6, 11, 51, 10, 14, 57, 10, 16, 60, 8, 15, 59, 12, 18, 59, 8, 13, 55, 10, 14, 56, 6, 12, 54, 8, 15, 56, 6, 16, 58, + 8, 19, 61, 7, 20, 63, 5, 15, 56, 5, 11, 47, 2, 7, 41, 3, 5, 35, 3, 4, 32, 5, 5, 29, 4, 6, 29, 3, 5, 26, 4, 4, 18, 2, 2, 16, 2, 3, 14, 2, 3, 12, 2, 2, 12, 1, 2, 8, 1, 2, 8, 2, 2, 10, 1, 3, 8, 2, 2, 7, 1, 2, 8, + 1, 2, 10, 1, 1, 9, 2, 3, 10, 1, 1, 6, 1, 2, 8, 1, 2, 8, 1, 3, 8, 1, 2, 6, 1, 2, 5, 2, 2, 7, 1, 2, 6, 1, 2, 7, 2, 2, 8, 1, 2, 7, 1, 2, 7, 1, 1, 6, 2, 2, 6, 1, 1, 7, 1, 1, 8, 1, 1, 8, 1, 1, 7, + 2, 2, 10, 53, 31, 52, 58, 33, 50, 63, 38, 53, 65, 39, 51, 66, 39, 46, 71, 43, 49, 164, 151, 120, 250, 251, 249, 254, 255, 254, 253, 254, 254, 253, 254, 253, 252, 254, 251, 191, 200, 143, 88, 56, 68, 83, 48, 63, 83, 45, 68, 85, 47, 72, 84, 44, 72, 82, 43, 72, 79, 42, 68, + 71, 36, 59, 66, 30, 47, 63, 27, 42, 58, 24, 39, 54, 19, 33, 50, 19, 34, 50, 22, 40, 54, 26, 50, 59, 33, 61, 71, 42, 74, 75, 43, 77, 75, 42, 78, 74, 42, 75, 73, 44, 76, 66, 41, 70, 57, 36, 64, 51, 33, 61, 46, 31, 59, 44, 27, 56, 49, 33, 58, 124, 135, 52, + 135, 178, 7, 152, 194, 3, 184, 213, 3, 210, 229, 4, 214, 231, 21, 213, 231, 22, 193, 205, 3, 193, 162, 57, 194, 152, 76, 171, 128, 78, 148, 112, 90, 148, 113, 93, 147, 112, 98, 139, 125, 119, 126, 133, 151, 109, 122, 162, 90, 84, 112, 87, 54, 78, 90, 54, 74, 92, 54, 71, 98, 55, 73, + 107, 64, 84, 110, 66, 87, 113, 71, 98, 117, 79, 111, 118, 88, 126, 114, 96, 136, 114, 105, 146, 113, 110, 150, 113, 112, 153, 116, 116, 156, 117, 116, 156, 117, 117, 152, 123, 116, 151, 123, 112, 145, 124, 120, 155, 119, 136, 181, 115, 145, 192, 107, 154, 206, 102, 162, 219, 131, 190, 225, 253, 254, 252, + 251, 254, 253, 251, 254, 254, 251, 254, 253, 251, 254, 253, 251, 253, 253, 251, 253, 252, 249, 251, 235, 253, 253, 254, 253, 254, 254, 254, 254, 254, 253, 253, 253, 253, 254, 254, 253, 253, 253, 252, 253, 252, 243, 246, 218, 174, 188, 158, 149, 167, 178, 153, 160, 176, 159, 165, 183, 164, 168, 188, 165, 165, 188, + 165, 164, 187, 163, 151, 177, 160, 135, 164, 152, 123, 152, 144, 115, 140, 139, 109, 135, 137, 107, 132, 133, 101, 127, 132, 100, 125, 141, 115, 140, 156, 156, 185, 161, 174, 200, 167, 182, 204, 162, 164, 187, 158, 123, 139, 150, 107, 126, 141, 102, 129, 127, 86, 118, 99, 61, 85, 75, 48, 74, 62, 65, 100, + 40, 64, 104, 15, 41, 82, 14, 55, 107, 30, 118, 192, 50, 169, 243, 43, 167, 240, 49, 175, 246, 29, 151, 241, 17, 134, 227, 13, 129, 222, 7, 105, 192, 9, 50, 113, 5, 14, 59, 11, 48, 114, 9, 49, 117, 10, 63, 129, 15, 77, 145, 17, 81, 149, 17, 74, 135, 24, 89, 151, 19, 71, 130, + 8, 43, 97, 7, 39, 99, 8, 61, 127, 5, 50, 120, 7, 56, 127, 7, 66, 142, 5, 76, 152, 10, 93, 175, 22, 126, 217, 14, 128, 223, 15, 111, 194, 6, 39, 96, 4, 8, 49, 2, 3, 37, 6, 29, 78, 14, 87, 163, 16, 94, 175, 13, 78, 150, 9, 28, 76, 4, 10, 57, 4, 14, 69, + 4, 23, 80, 4, 36, 101, 6, 53, 121, 7, 59, 131, 10, 73, 145, 5, 67, 142, 10, 66, 140, 8, 57, 127, 9, 51, 119, 6, 54, 121, 11, 54, 117, 15, 59, 119, 11, 20, 63, 16, 22, 62, 12, 18, 56, 12, 17, 53, 10, 14, 53, 8, 12, 51, 7, 12, 51, 4, 10, 49, 5, 8, 47, + 3, 6, 41, 4, 4, 38, 2, 5, 39, 3, 6, 40, 2, 7, 40, 4, 6, 40, 5, 9, 44, 8, 10, 50, 12, 18, 56, 11, 17, 59, 14, 19, 62, 8, 10, 49, 11, 12, 50, 11, 14, 50, 10, 13, 49, 6, 11, 47, 7, 14, 50, 4, 13, 48, 4, 8, 39, 3, 5, 34, 4, 6, 34, + 3, 3, 25, 2, 3, 23, 4, 4, 23, 5, 6, 24, 6, 9, 27, 3, 3, 17, 5, 5, 20, 3, 4, 16, 1, 2, 11, 2, 2, 12, 2, 3, 10, 0, 3, 7, 3, 3, 10, 1, 2, 8, 1, 2, 7, 1, 2, 10, 2, 3, 10, 1, 3, 8, 2, 2, 9, 1, 2, 10, 1, 3, 11, + 1, 3, 11, 1, 2, 10, 2, 3, 9, 2, 2, 8, 1, 1, 6, 1, 2, 6, 1, 2, 7, 1, 2, 5, 2, 2, 8, 1, 2, 7, 2, 2, 9, 2, 4, 14, 1, 3, 9, 2, 3, 8, 2, 3, 11, 1, 3, 9, 2, 2, 8, 1, 1, 6, 56, 34, 61, 60, 36, 62, 66, 39, 63, + 69, 42, 63, 68, 42, 57, 71, 45, 58, 82, 58, 65, 198, 193, 170, 245, 245, 241, 249, 249, 245, 249, 250, 247, 231, 236, 217, 107, 100, 87, 85, 54, 74, 85, 48, 70, 85, 47, 73, 83, 44, 72, 79, 41, 72, 74, 40, 70, 70, 36, 63, 67, 33, 58, 60, 26, 40, 57, 22, 34, 53, 17, 30, + 53, 17, 31, 49, 17, 32, 51, 22, 38, 53, 25, 45, 58, 30, 55, 70, 39, 68, 70, 38, 68, 69, 37, 66, 71, 38, 66, 71, 39, 67, 62, 35, 62, 57, 35, 63, 51, 31, 60, 46, 29, 59, 48, 31, 62, 51, 33, 63, 129, 139, 62, 138, 178, 11, 153, 195, 2, 188, 216, 5, 212, 228, 12, + 213, 232, 25, 213, 232, 25, 191, 203, 4, 196, 161, 61, 191, 140, 65, 168, 128, 78, 129, 100, 86, 129, 100, 91, 128, 102, 95, 120, 93, 97, 101, 75, 97, 92, 66, 95, 84, 57, 89, 83, 52, 82, 83, 50, 76, 90, 53, 76, 99, 59, 81, 107, 66, 90, 115, 74, 102, 120, 77, 113, 120, 83, 123, + 117, 92, 133, 115, 98, 140, 112, 102, 144, 114, 110, 152, 113, 111, 153, 116, 116, 156, 119, 117, 157, 117, 112, 152, 121, 113, 149, 121, 112, 144, 125, 117, 152, 121, 141, 189, 121, 156, 202, 119, 166, 217, 112, 179, 232, 115, 190, 241, 208, 235, 245, 253, 254, 254, 253, 253, 254, 253, 254, 254, 251, 254, 254, + 252, 254, 254, 248, 250, 242, 211, 223, 146, 251, 251, 233, 253, 254, 254, 253, 253, 255, 254, 254, 255, 253, 253, 254, 252, 253, 254, 250, 251, 241, 219, 220, 140, 167, 165, 113, 161, 155, 147, 155, 154, 165, 159, 157, 173, 161, 159, 177, 162, 155, 178, 163, 152, 176, 162, 143, 168, 157, 129, 158, 146, 116, 142, + 138, 107, 133, 132, 102, 126, 133, 100, 126, 132, 98, 123, 131, 93, 119, 137, 103, 130, 144, 112, 147, 149, 112, 143, 150, 111, 134, 152, 107, 123, 152, 107, 122, 152, 106, 122, 146, 100, 117, 130, 83, 100, 101, 55, 66, 75, 39, 56, 66, 53, 85, 36, 56, 93, 12, 40, 83, 21, 98, 171, 31, 160, 242, + 24, 156, 241, 38, 178, 247, 31, 157, 235, 26, 145, 232, 8, 111, 203, 5, 94, 179, 6, 79, 157, 4, 24, 77, 3, 2, 42, 4, 20, 75, 10, 73, 145, 22, 116, 196, 33, 136, 215, 16, 107, 180, 10, 55, 108, 5, 15, 59, 5, 15, 60, 5, 36, 90, 8, 51, 112, 8, 51, 114, 11, 74, 144, + 9, 82, 156, 18, 92, 170, 14, 114, 197, 13, 119, 208, 10, 117, 209, 22, 141, 238, 22, 125, 215, 13, 89, 170, 4, 41, 100, 3, 3, 35, 6, 16, 55, 7, 28, 79, 5, 27, 77, 9, 53, 117, 14, 70, 143, 9, 46, 111, 5, 34, 94, 7, 37, 97, 5, 18, 83, 8, 46, 115, 7, 55, 125, + 6, 58, 129, 4, 53, 124, 6, 56, 128, 8, 61, 128, 8, 46, 110, 9, 42, 102, 7, 31, 86, 11, 37, 91, 17, 36, 80, 7, 12, 49, 10, 17, 52, 15, 19, 51, 11, 14, 48, 10, 14, 51, 8, 13, 52, 5, 11, 50, 3, 8, 46, 2, 7, 43, 3, 4, 39, 3, 4, 38, 3, 5, 40, + 4, 7, 43, 4, 6, 42, 6, 7, 45, 8, 13, 53, 11, 18, 57, 12, 18, 57, 8, 11, 47, 7, 9, 43, 11, 13, 46, 10, 12, 43, 4, 6, 35, 6, 9, 39, 4, 6, 36, 3, 7, 34, 4, 5, 28, 3, 5, 25, 3, 4, 21, 3, 3, 17, 2, 3, 19, 3, 5, 22, 4, 4, 19, + 4, 4, 20, 4, 6, 21, 2, 3, 15, 2, 2, 12, 1, 2, 12, 2, 2, 12, 2, 2, 13, 1, 3, 10, 1, 2, 7, 3, 3, 10, 2, 2, 9, 2, 3, 8, 2, 2, 4, 1, 3, 9, 1, 2, 10, 1, 3, 10, 2, 3, 13, 4, 4, 17, 3, 3, 17, 3, 4, 13, 2, 3, 8, + 2, 3, 7, 1, 2, 5, 1, 2, 6, 2, 2, 6, 2, 2, 6, 5, 5, 13, 5, 6, 19, 3, 5, 18, 2, 2, 10, 1, 2, 8, 1, 3, 10, 1, 1, 8, 2, 2, 6, 0, 2, 5, 54, 36, 64, 59, 39, 69, 65, 43, 74, 69, 46, 75, 72, 48, 78, 75, 51, 76, 81, 55, 81, + 80, 63, 83, 137, 132, 100, 186, 185, 141, 188, 192, 159, 111, 106, 99, 88, 61, 92, 85, 54, 81, 84, 48, 79, 84, 48, 80, 82, 44, 79, 77, 40, 76, 72, 37, 71, 69, 34, 65, 64, 31, 56, 56, 24, 37, 54, 19, 32, 50, 14, 27, 51, 15, 28, 54, 17, 32, 53, 20, 35, 55, 23, 41, + 58, 27, 49, 68, 36, 62, 74, 37, 65, 75, 37, 64, 75, 39, 64, 70, 36, 60, 66, 35, 61, 59, 32, 61, 52, 28, 59, 53, 31, 63, 54, 30, 64, 59, 35, 66, 116, 112, 64, 141, 165, 35, 151, 194, 2, 175, 207, 3, 210, 227, 6, 213, 230, 13, 209, 226, 11, 190, 188, 15, 195, 147, 67, + 183, 127, 55, 141, 101, 67, 114, 84, 79, 109, 83, 83, 104, 78, 91, 96, 69, 96, 93, 66, 98, 85, 60, 93, 78, 54, 88, 80, 54, 87, 83, 53, 86, 89, 54, 83, 100, 58, 86, 108, 67, 96, 118, 76, 112, 120, 79, 119, 120, 88, 131, 117, 92, 135, 113, 95, 138, 110, 101, 144, 113, 109, 151, + 111, 110, 150, 113, 112, 151, 116, 113, 152, 116, 109, 148, 119, 110, 145, 122, 112, 143, 122, 110, 141, 124, 139, 183, 125, 158, 208, 125, 176, 224, 126, 193, 242, 128, 203, 250, 140, 212, 250, 226, 245, 250, 247, 252, 252, 248, 251, 253, 250, 252, 251, 246, 248, 244, 211, 218, 180, 166, 163, 105, 222, 221, 143, + 249, 250, 231, 251, 251, 245, 251, 252, 245, 252, 251, 244, 248, 250, 237, 231, 234, 169, 184, 178, 95, 175, 161, 128, 159, 153, 149, 159, 149, 160, 161, 149, 164, 160, 145, 164, 159, 139, 162, 157, 133, 154, 152, 125, 146, 146, 117, 136, 139, 108, 127, 134, 100, 120, 131, 94, 113, 128, 90, 112, 125, 86, 106, + 125, 85, 104, 133, 95, 117, 140, 105, 133, 145, 105, 131, 148, 105, 122, 148, 101, 118, 153, 103, 116, 156, 104, 118, 151, 99, 111, 138, 84, 95, 109, 53, 61, 85, 41, 52, 73, 49, 74, 40, 62, 103, 16, 57, 112, 12, 96, 178, 12, 122, 210, 14, 143, 233, 8, 135, 227, 5, 106, 194, 6, 100, 187, + 6, 81, 161, 6, 56, 131, 10, 86, 161, 5, 31, 91, 4, 9, 49, 6, 36, 95, 6, 61, 132, 12, 64, 133, 10, 51, 109, 7, 27, 77, 4, 20, 65, 11, 42, 88, 15, 54, 106, 10, 57, 113, 10, 67, 129, 7, 62, 131, 8, 71, 143, 5, 70, 144, 4, 63, 140, 8, 89, 171, 6, 81, 160, + 14, 114, 202, 26, 143, 237, 26, 142, 234, 35, 146, 232, 6, 64, 133, 5, 3, 40, 3, 2, 31, 5, 9, 40, 3, 0, 27, 3, 7, 40, 6, 26, 75, 8, 39, 98, 11, 46, 107, 3, 30, 90, 6, 34, 98, 5, 24, 90, 6, 54, 124, 6, 51, 121, 4, 41, 111, 7, 36, 102, 7, 34, 91, + 5, 20, 74, 5, 12, 59, 5, 11, 55, 11, 27, 74, 6, 17, 56, 8, 14, 49, 7, 13, 44, 11, 14, 43, 4, 5, 32, 6, 13, 48, 8, 17, 57, 4, 11, 54, 2, 9, 51, 4, 8, 50, 3, 7, 47, 3, 5, 46, 3, 6, 50, 3, 7, 51, 3, 8, 50, 6, 12, 49, 6, 12, 48, + 6, 11, 44, 8, 13, 43, 3, 4, 28, 3, 4, 31, 4, 7, 30, 2, 3, 23, 2, 3, 19, 2, 2, 19, 2, 2, 21, 2, 4, 24, 3, 3, 22, 3, 4, 19, 3, 4, 17, 3, 3, 17, 3, 4, 16, 2, 3, 14, 2, 2, 12, 2, 2, 13, 1, 2, 13, 1, 2, 11, 3, 5, 14, + 1, 2, 11, 2, 2, 13, 3, 4, 15, 3, 4, 12, 2, 2, 10, 1, 2, 11, 2, 2, 9, 1, 2, 7, 2, 2, 5, 2, 2, 8, 2, 3, 14, 3, 3, 15, 5, 6, 22, 7, 8, 27, 4, 6, 27, 4, 8, 25, 2, 2, 11, 2, 2, 7, 1, 1, 6, 1, 2, 7, 0, 1, 5, + 2, 3, 8, 5, 5, 17, 2, 3, 14, 2, 4, 15, 3, 3, 16, 4, 4, 17, 2, 2, 9, 2, 2, 7, 1, 1, 7, 1, 2, 8, 50, 37, 66, 58, 43, 76, 63, 47, 79, 67, 53, 85, 70, 56, 89, 74, 60, 95, 78, 63, 96, 80, 65, 97, 80, 67, 102, 84, 72, 107, 84, 72, 106, + 90, 71, 105, 87, 64, 97, 87, 60, 94, 85, 56, 92, 86, 52, 89, 81, 45, 85, 78, 43, 83, 74, 40, 79, 71, 38, 72, 61, 30, 57, 53, 21, 37, 50, 15, 30, 49, 13, 28, 53, 18, 33, 58, 21, 36, 63, 26, 42, 63, 28, 45, 65, 31, 51, 74, 36, 61, 80, 40, 65, 81, 40, 62, + 79, 40, 61, 75, 36, 59, 68, 34, 57, 61, 31, 56, 56, 25, 55, 59, 29, 61, 60, 31, 62, 70, 36, 66, 90, 62, 63, 141, 146, 62, 154, 189, 18, 168, 206, 4, 202, 223, 5, 211, 228, 6, 200, 208, 8, 192, 159, 45, 188, 136, 56, 167, 113, 51, 114, 74, 67, 100, 62, 70, 96, 58, 74, + 93, 59, 84, 92, 61, 93, 86, 60, 94, 78, 54, 89, 70, 52, 86, 77, 54, 88, 83, 55, 89, 87, 54, 89, 99, 59, 92, 109, 67, 101, 116, 73, 111, 122, 80, 122, 119, 86, 131, 115, 92, 135, 113, 95, 138, 109, 97, 141, 108, 101, 143, 108, 102, 145, 110, 105, 145, 112, 107, 147, 113, 103, 143, + 117, 106, 142, 122, 109, 140, 120, 105, 137, 123, 120, 151, 125, 151, 201, 125, 170, 221, 129, 190, 240, 134, 205, 251, 138, 210, 253, 141, 211, 248, 165, 219, 242, 186, 222, 235, 198, 221, 220, 179, 195, 174, 145, 132, 109, 155, 133, 102, 182, 169, 98, 211, 206, 104, 224, 216, 125, 222, 217, 131, 223, 219, 118, + 209, 206, 95, 178, 172, 69, 179, 159, 112, 175, 151, 129, 163, 145, 143, 156, 140, 145, 155, 134, 146, 151, 127, 141, 148, 121, 135, 145, 114, 127, 137, 104, 112, 135, 97, 104, 129, 91, 98, 123, 82, 91, 122, 80, 92, 121, 79, 94, 119, 74, 89, 121, 75, 91, 125, 81, 97, 132, 88, 104, 141, 98, 116, + 144, 97, 112, 152, 101, 113, 154, 100, 109, 156, 100, 110, 153, 96, 105, 137, 73, 78, 117, 56, 60, 97, 46, 57, 80, 44, 66, 41, 65, 114, 24, 74, 141, 7, 70, 145, 10, 87, 165, 8, 94, 179, 6, 90, 174, 6, 86, 169, 7, 74, 154, 5, 66, 143, 6, 36, 109, 5, 75, 151, 7, 49, 115, + 5, 34, 94, 8, 46, 111, 9, 59, 127, 9, 43, 102, 5, 18, 67, 4, 16, 66, 7, 33, 84, 9, 40, 92, 7, 45, 100, 7, 46, 106, 7, 49, 115, 10, 68, 139, 6, 67, 140, 7, 76, 153, 6, 84, 162, 9, 91, 173, 15, 107, 191, 28, 142, 230, 42, 167, 242, 30, 143, 237, 14, 122, 215, + 8, 81, 158, 6, 22, 70, 6, 12, 51, 3, 6, 35, 3, 6, 31, 3, 3, 28, 2, 4, 34, 6, 18, 68, 6, 27, 81, 6, 23, 81, 8, 47, 108, 8, 51, 117, 9, 51, 121, 5, 50, 118, 5, 27, 92, 5, 17, 79, 5, 17, 72, 5, 17, 66, 6, 20, 66, 8, 15, 59, 10, 36, 82, + 7, 14, 47, 7, 12, 41, 3, 6, 23, 0, 1, 11, 3, 4, 20, 9, 17, 49, 5, 19, 56, 4, 15, 62, 4, 16, 64, 4, 14, 64, 1, 8, 57, 3, 10, 60, 2, 11, 62, 4, 13, 64, 4, 14, 61, 5, 12, 48, 7, 12, 42, 1, 3, 25, 2, 3, 17, 3, 4, 19, 4, 4, 20, + 2, 3, 16, 2, 2, 13, 1, 2, 13, 1, 1, 11, 2, 3, 15, 3, 3, 18, 2, 3, 15, 3, 3, 16, 2, 2, 12, 2, 2, 12, 1, 2, 9, 2, 3, 10, 1, 1, 10, 1, 2, 13, 2, 2, 12, 1, 2, 10, 1, 3, 11, 2, 3, 12, 2, 3, 11, 2, 3, 11, 2, 3, 10, + 2, 3, 9, 2, 2, 10, 2, 2, 10, 1, 2, 7, 2, 2, 6, 2, 2, 10, 6, 6, 22, 7, 8, 28, 3, 3, 22, 3, 5, 25, 5, 9, 32, 9, 16, 36, 5, 7, 16, 2, 4, 10, 2, 3, 9, 1, 2, 7, 0, 1, 5, 1, 1, 9, 1, 3, 10, 2, 3, 14, 3, 3, 16, + 2, 2, 16, 1, 3, 11, 2, 2, 10, 4, 5, 12, 3, 5, 11, 1, 2, 7, 49, 40, 72, 55, 47, 79, 59, 50, 83, 63, 56, 91, 70, 65, 100, 74, 67, 103, 75, 69, 106, 78, 69, 107, 85, 75, 112, 89, 81, 115, 89, 80, 116, 91, 76, 113, 90, 70, 108, 88, 67, 105, 86, 60, 101, + 84, 55, 96, 83, 50, 93, 81, 47, 91, 77, 44, 85, 71, 39, 77, 62, 31, 62, 51, 21, 42, 47, 15, 31, 49, 14, 31, 56, 21, 38, 61, 25, 40, 67, 30, 48, 74, 34, 53, 79, 37, 59, 84, 41, 65, 88, 43, 68, 88, 42, 62, 84, 40, 59, 77, 37, 56, 71, 34, 52, 61, 29, 48, + 59, 28, 51, 63, 29, 53, 71, 34, 60, 77, 39, 64, 86, 45, 66, 106, 76, 61, 142, 142, 52, 158, 181, 18, 171, 194, 9, 183, 193, 14, 177, 154, 42, 178, 129, 50, 165, 113, 42, 127, 80, 55, 94, 53, 61, 90, 49, 59, 90, 51, 67, 91, 54, 82, 86, 52, 88, 78, 50, 88, 70, 50, 86, + 69, 53, 88, 71, 53, 87, 79, 55, 91, 86, 56, 95, 98, 61, 99, 108, 68, 106, 112, 71, 112, 117, 77, 118, 119, 86, 130, 115, 92, 134, 111, 92, 135, 105, 88, 132, 105, 93, 135, 108, 97, 141, 107, 98, 140, 108, 98, 139, 109, 96, 136, 115, 100, 134, 119, 105, 137, 116, 101, 133, 118, 99, 129, + 126, 118, 150, 124, 148, 190, 124, 169, 218, 126, 187, 236, 134, 196, 241, 133, 196, 240, 128, 186, 231, 125, 172, 214, 119, 153, 183, 124, 127, 141, 136, 106, 97, 139, 105, 87, 150, 118, 84, 169, 145, 79, 170, 149, 70, 155, 135, 55, 148, 129, 48, 149, 130, 53, 156, 134, 74, 164, 133, 96, 161, 128, 111, + 157, 125, 117, 150, 121, 118, 144, 114, 115, 139, 105, 109, 137, 100, 103, 132, 91, 90, 129, 83, 81, 122, 74, 69, 119, 70, 67, 115, 66, 67, 111, 63, 70, 109, 62, 70, 112, 64, 75, 113, 63, 73, 119, 66, 74, 126, 73, 78, 136, 79, 82, 144, 90, 95, 150, 93, 100, 153, 94, 100, 156, 91, 94, + 153, 82, 79, 138, 66, 59, 123, 55, 56, 106, 48, 58, 88, 51, 71, 52, 98, 168, 39, 92, 167, 16, 83, 159, 7, 81, 156, 5, 64, 136, 7, 85, 166, 11, 85, 168, 4, 48, 126, 5, 46, 124, 7, 63, 139, 12, 110, 192, 8, 69, 141, 8, 72, 141, 7, 67, 134, 12, 76, 148, 17, 94, 169, + 17, 69, 132, 8, 40, 96, 7, 46, 103, 7, 44, 102, 8, 60, 123, 11, 88, 157, 5, 72, 142, 16, 99, 174, 15, 84, 160, 13, 72, 144, 8, 80, 156, 22, 140, 226, 26, 151, 241, 28, 151, 241, 21, 140, 234, 25, 146, 239, 18, 127, 223, 20, 115, 201, 14, 87, 167, 18, 102, 183, 9, 62, 125, + 9, 47, 106, 6, 35, 79, 4, 6, 37, 4, 14, 59, 3, 8, 56, 4, 10, 68, 5, 24, 88, 10, 55, 125, 11, 61, 131, 10, 40, 106, 8, 32, 94, 9, 37, 95, 5, 23, 76, 5, 18, 68, 4, 21, 65, 6, 24, 66, 7, 20, 60, 3, 4, 27, 2, 4, 16, 1, 1, 5, 1, 1, 6, + 2, 3, 13, 6, 12, 40, 8, 22, 61, 14, 38, 86, 12, 38, 88, 8, 33, 85, 4, 25, 80, 5, 25, 82, 6, 29, 86, 9, 35, 89, 8, 25, 71, 3, 4, 30, 3, 3, 20, 2, 3, 16, 2, 2, 7, 3, 3, 12, 2, 2, 7, 1, 3, 8, 4, 5, 15, 1, 2, 8, 1, 2, 9, + 2, 2, 14, 2, 3, 17, 3, 3, 15, 1, 2, 12, 2, 3, 11, 1, 2, 8, 1, 2, 7, 1, 2, 8, 1, 2, 9, 2, 2, 12, 2, 4, 12, 2, 3, 12, 1, 2, 11, 2, 3, 11, 2, 2, 11, 1, 2, 8, 2, 2, 11, 4, 4, 15, 4, 4, 15, 2, 3, 9, 2, 2, 7, + 1, 2, 6, 1, 2, 7, 1, 2, 15, 4, 5, 23, 4, 7, 31, 4, 8, 33, 6, 7, 29, 2, 2, 18, 3, 2, 14, 4, 3, 13, 6, 7, 17, 1, 1, 9, 1, 1, 7, 3, 3, 12, 6, 7, 21, 5, 8, 25, 10, 16, 38, 4, 5, 23, 3, 4, 15, 3, 3, 14, 1, 2, 9, + 1, 2, 6, 2, 2, 5, 54, 49, 80, 58, 53, 86, 60, 56, 89, 68, 64, 100, 75, 72, 108, 77, 73, 112, 79, 74, 115, 81, 73, 113, 88, 79, 121, 96, 88, 128, 96, 87, 128, 95, 84, 127, 90, 79, 120, 90, 74, 115, 88, 65, 107, 85, 60, 102, 81, 52, 97, 81, 50, 96, 79, 49, 92, + 70, 41, 82, 58, 33, 66, 49, 19, 47, 43, 14, 38, 49, 17, 38, 58, 23, 40, 68, 30, 48, 73, 33, 52, 82, 39, 58, 90, 44, 64, 96, 49, 71, 95, 47, 68, 93, 47, 65, 88, 43, 61, 80, 38, 55, 73, 34, 48, 65, 29, 45, 64, 30, 46, 68, 32, 49, 73, 35, 53, 79, 38, 58, + 87, 46, 62, 89, 43, 61, 90, 47, 62, 98, 67, 58, 109, 85, 56, 102, 72, 57, 100, 68, 55, 99, 66, 56, 96, 59, 56, 84, 45, 56, 83, 41, 51, 83, 40, 54, 83, 43, 60, 85, 49, 77, 80, 48, 86, 74, 47, 87, 70, 51, 87, 69, 53, 89, 71, 56, 90, 77, 58, 95, 82, 58, 97, + 93, 62, 101, 102, 67, 105, 110, 72, 112, 113, 74, 115, 110, 73, 116, 110, 80, 123, 108, 80, 124, 104, 79, 123, 102, 82, 126, 107, 90, 133, 105, 89, 133, 103, 87, 129, 106, 91, 131, 111, 97, 132, 113, 98, 129, 112, 94, 124, 113, 93, 122, 119, 100, 128, 117, 111, 138, 114, 128, 165, 116, 144, 189, + 114, 158, 200, 117, 161, 202, 114, 154, 192, 118, 140, 166, 121, 125, 134, 121, 104, 105, 121, 84, 80, 121, 81, 72, 127, 85, 69, 126, 85, 58, 118, 85, 35, 105, 77, 12, 101, 73, 9, 111, 79, 24, 131, 89, 50, 147, 100, 72, 145, 98, 77, 141, 95, 81, 141, 96, 86, 138, 95, 88, 135, 90, 85, + 130, 83, 79, 123, 73, 67, 118, 68, 61, 115, 62, 55, 113, 59, 54, 110, 54, 51, 109, 54, 54, 109, 55, 56, 110, 53, 57, 109, 52, 55, 112, 52, 51, 121, 58, 54, 133, 65, 55, 142, 69, 57, 147, 74, 61, 152, 75, 65, 155, 76, 67, 151, 72, 62, 140, 64, 57, 128, 57, 54, 112, 50, 56, + 100, 60, 79, 59, 113, 189, 51, 114, 198, 13, 78, 155, 9, 79, 157, 5, 63, 138, 5, 78, 159, 5, 71, 150, 4, 47, 125, 5, 46, 126, 8, 97, 180, 16, 129, 218, 17, 124, 209, 12, 95, 174, 13, 88, 161, 25, 116, 196, 24, 109, 184, 9, 80, 150, 8, 62, 130, 7, 58, 124, 13, 77, 142, + 13, 75, 141, 9, 55, 118, 8, 49, 115, 4, 36, 100, 7, 40, 104, 9, 71, 144, 12, 111, 191, 21, 132, 215, 7, 98, 183, 12, 122, 212, 17, 122, 209, 16, 115, 201, 16, 114, 202, 23, 126, 220, 17, 111, 201, 19, 119, 210, 6, 97, 184, 12, 90, 170, 12, 86, 161, 13, 56, 119, 7, 35, 87, + 5, 17, 68, 4, 15, 73, 5, 29, 92, 10, 51, 119, 11, 49, 117, 5, 31, 96, 7, 27, 88, 4, 22, 78, 4, 17, 69, 5, 13, 61, 4, 14, 56, 3, 11, 45, 3, 3, 22, 3, 3, 17, 2, 1, 6, 1, 1, 3, 1, 1, 4, 1, 2, 8, 4, 7, 28, 15, 31, 66, 28, 50, 99, + 34, 61, 111, 38, 64, 115, 25, 55, 109, 23, 53, 110, 29, 57, 114, 23, 51, 100, 5, 12, 33, 2, 2, 14, 4, 3, 13, 2, 2, 8, 2, 2, 7, 1, 2, 6, 2, 3, 7, 2, 3, 7, 1, 1, 6, 1, 2, 9, 1, 2, 10, 3, 4, 15, 2, 2, 13, 2, 2, 14, 3, 3, 12, + 1, 2, 7, 1, 2, 7, 0, 1, 6, 1, 2, 7, 1, 1, 10, 3, 5, 15, 11, 14, 30, 1, 2, 10, 1, 2, 12, 2, 2, 12, 1, 2, 10, 1, 2, 9, 4, 4, 14, 6, 8, 22, 5, 6, 20, 3, 4, 13, 2, 2, 7, 1, 2, 4, 1, 1, 7, 4, 6, 19, 12, 17, 39, + 8, 14, 39, 5, 10, 37, 7, 11, 36, 4, 6, 21, 3, 3, 14, 4, 4, 20, 4, 5, 18, 1, 2, 10, 3, 3, 12, 2, 3, 14, 4, 5, 19, 4, 5, 20, 5, 9, 26, 6, 10, 29, 3, 2, 17, 5, 6, 17, 1, 1, 4, 1, 1, 5, 3, 4, 13, 63, 55, 91, 64, 61, 97, + 66, 65, 102, 73, 71, 111, 78, 78, 117, 79, 78, 118, 82, 78, 119, 88, 81, 122, 93, 85, 127, 100, 91, 134, 103, 93, 138, 99, 89, 135, 94, 83, 127, 93, 78, 121, 90, 72, 115, 88, 67, 110, 85, 62, 106, 82, 56, 101, 79, 52, 97, 72, 45, 88, 57, 33, 68, 48, 23, 54, 43, 13, 42, + 47, 18, 41, 58, 24, 44, 68, 31, 49, 75, 34, 53, 86, 41, 59, 95, 46, 70, 98, 49, 73, 98, 48, 70, 94, 44, 65, 89, 44, 61, 82, 37, 54, 74, 32, 47, 67, 30, 45, 64, 28, 44, 68, 31, 48, 72, 34, 52, 78, 39, 58, 84, 42, 61, 88, 45, 61, 85, 44, 58, 83, 44, 60, + 84, 46, 64, 81, 47, 60, 79, 44, 57, 77, 43, 56, 75, 39, 54, 74, 37, 52, 76, 38, 51, 78, 39, 56, 77, 38, 59, 79, 46, 79, 78, 46, 84, 73, 49, 88, 70, 50, 89, 69, 54, 90, 71, 56, 91, 78, 61, 97, 81, 61, 99, 88, 61, 101, 97, 67, 106, 105, 70, 110, 107, 72, 113, + 106, 68, 109, 108, 68, 110, 106, 69, 112, 103, 69, 114, 101, 70, 115, 103, 78, 121, 102, 77, 121, 101, 85, 126, 110, 97, 134, 112, 102, 136, 115, 101, 133, 113, 98, 129, 111, 92, 123, 108, 86, 114, 111, 89, 119, 114, 96, 126, 115, 106, 133, 113, 115, 138, 114, 121, 136, 121, 132, 140, 128, 145, 149, + 128, 134, 135, 122, 106, 103, 116, 81, 73, 117, 76, 62, 118, 77, 58, 125, 92, 51, 149, 140, 39, 164, 169, 37, 150, 151, 25, 128, 113, 24, 125, 85, 40, 134, 85, 58, 135, 83, 63, 133, 81, 65, 134, 82, 71, 130, 81, 70, 127, 79, 72, 123, 73, 69, 121, 70, 65, 120, 67, 62, 116, 61, 55, + 113, 58, 49, 111, 53, 45, 109, 48, 42, 107, 47, 43, 108, 46, 44, 109, 45, 41, 112, 45, 39, 120, 48, 39, 126, 52, 38, 134, 57, 41, 141, 64, 48, 145, 67, 52, 150, 69, 60, 150, 68, 61, 145, 65, 59, 134, 59, 57, 119, 50, 55, 104, 52, 66, 59, 109, 176, 52, 128, 213, 22, 99, 185, + 11, 90, 176, 11, 96, 179, 10, 91, 170, 7, 53, 118, 6, 62, 141, 6, 92, 179, 7, 104, 194, 10, 107, 193, 18, 94, 170, 27, 141, 227, 20, 111, 193, 28, 116, 195, 16, 102, 182, 15, 102, 182, 12, 96, 174, 7, 69, 139, 3, 53, 121, 11, 73, 143, 11, 62, 127, 9, 55, 123, 6, 37, 100, + 8, 37, 98, 9, 42, 99, 6, 21, 70, 4, 25, 80, 6, 33, 85, 5, 24, 68, 5, 15, 57, 6, 26, 72, 10, 62, 129, 14, 101, 183, 28, 115, 198, 26, 122, 212, 17, 112, 201, 16, 105, 186, 10, 81, 157, 8, 45, 105, 9, 36, 89, 7, 30, 84, 4, 18, 74, 5, 34, 98, 8, 43, 107, + 4, 30, 94, 5, 29, 93, 6, 30, 88, 4, 17, 70, 4, 9, 57, 6, 15, 56, 6, 15, 52, 3, 8, 32, 1, 3, 12, 2, 4, 12, 1, 2, 3, 2, 2, 2, 1, 2, 4, 1, 2, 8, 2, 4, 20, 10, 21, 53, 19, 37, 81, 30, 53, 98, 41, 65, 113, 54, 75, 125, 43, 67, 118, + 30, 54, 101, 12, 22, 41, 1, 1, 4, 2, 3, 10, 1, 2, 6, 2, 2, 9, 4, 5, 12, 2, 3, 8, 4, 4, 13, 2, 2, 9, 2, 2, 7, 1, 1, 6, 3, 3, 14, 7, 9, 21, 2, 3, 16, 3, 4, 16, 1, 2, 11, 1, 2, 10, 1, 2, 10, 1, 2, 8, 2, 3, 9, + 3, 4, 13, 5, 6, 20, 4, 4, 15, 4, 5, 18, 2, 2, 10, 4, 4, 13, 5, 7, 18, 2, 3, 10, 1, 2, 10, 4, 4, 16, 3, 3, 17, 4, 6, 17, 3, 4, 12, 1, 2, 6, 1, 2, 9, 3, 3, 15, 5, 8, 29, 5, 9, 34, 7, 12, 38, 5, 11, 36, 9, 14, 39, + 9, 13, 33, 5, 7, 22, 2, 3, 13, 1, 2, 9, 1, 2, 10, 2, 3, 15, 3, 3, 18, 3, 5, 21, 4, 6, 23, 5, 5, 27, 3, 3, 18, 2, 2, 11, 1, 2, 7, 2, 3, 11, 3, 4, 17, 64, 56, 97, 69, 66, 105, 74, 73, 113, 79, 79, 119, 81, 80, 120, 81, 81, 121, + 86, 82, 124, 91, 84, 126, 96, 87, 130, 100, 90, 134, 103, 94, 138, 101, 91, 137, 96, 87, 132, 93, 82, 125, 91, 79, 122, 92, 77, 120, 88, 70, 113, 84, 64, 107, 81, 56, 101, 74, 46, 91, 61, 36, 73, 47, 24, 55, 46, 18, 47, 51, 22, 47, 59, 27, 48, 65, 27, 47, 72, 30, 51, + 85, 39, 61, 95, 47, 73, 98, 49, 74, 97, 45, 69, 93, 44, 66, 89, 42, 61, 83, 40, 56, 75, 36, 53, 67, 31, 48, 63, 31, 49, 64, 32, 53, 69, 32, 57, 77, 38, 64, 79, 39, 65, 82, 42, 66, 81, 42, 63, 82, 44, 64, 79, 42, 62, 77, 41, 59, 75, 40, 59, 73, 41, 58, + 73, 38, 58, 73, 37, 58, 72, 35, 59, 72, 36, 62, 72, 36, 67, 72, 41, 77, 76, 50, 85, 70, 50, 88, 68, 52, 89, 69, 55, 92, 70, 56, 92, 75, 60, 95, 79, 60, 98, 86, 61, 100, 96, 67, 107, 103, 71, 110, 104, 67, 108, 106, 67, 106, 103, 61, 100, 102, 59, 95, 102, 59, 97, + 99, 58, 97, 100, 62, 99, 101, 69, 109, 105, 95, 132, 109, 109, 144, 112, 118, 156, 113, 119, 157, 113, 112, 146, 114, 101, 130, 105, 84, 114, 109, 83, 114, 109, 84, 114, 111, 86, 114, 111, 97, 116, 133, 146, 145, 160, 184, 176, 169, 193, 184, 166, 191, 177, 157, 170, 141, 128, 117, 85, 107, 71, 54, + 132, 107, 60, 223, 231, 128, 255, 255, 196, 254, 255, 202, 250, 254, 183, 240, 249, 145, 189, 189, 79, 136, 93, 56, 138, 88, 70, 135, 84, 70, 135, 85, 76, 131, 82, 76, 130, 81, 77, 127, 77, 73, 122, 71, 69, 121, 66, 63, 119, 63, 59, 117, 60, 53, 115, 53, 44, 111, 48, 37, 113, 48, 38, + 112, 44, 37, 115, 45, 37, 118, 46, 38, 122, 48, 40, 129, 52, 41, 135, 57, 45, 141, 63, 50, 148, 67, 56, 150, 67, 56, 153, 68, 60, 149, 66, 58, 139, 60, 56, 126, 55, 56, 109, 53, 68, 64, 127, 192, 67, 154, 228, 3, 77, 161, 4, 61, 131, 4, 7, 28, 8, 28, 58, 8, 50, 98, + 11, 107, 196, 8, 116, 210, 6, 90, 174, 11, 79, 153, 10, 90, 167, 17, 103, 179, 9, 82, 158, 8, 84, 163, 8, 97, 179, 19, 118, 201, 27, 129, 216, 7, 88, 165, 7, 83, 157, 6, 58, 129, 6, 53, 121, 7, 62, 132, 14, 85, 159, 7, 63, 132, 6, 48, 116, 7, 37, 97, 8, 36, 92, + 6, 34, 89, 7, 26, 77, 4, 10, 48, 3, 7, 42, 3, 5, 38, 5, 20, 62, 5, 46, 101, 8, 64, 128, 20, 74, 133, 13, 75, 138, 12, 64, 129, 6, 39, 100, 6, 23, 74, 4, 7, 60, 4, 18, 75, 6, 37, 99, 7, 36, 97, 5, 29, 88, 8, 40, 98, 7, 32, 86, 5, 27, 76, + 3, 11, 55, 5, 15, 54, 8, 19, 52, 3, 4, 21, 2, 2, 12, 4, 5, 16, 1, 2, 6, 1, 1, 2, 1, 2, 4, 2, 3, 11, 3, 3, 18, 7, 7, 30, 7, 8, 28, 10, 8, 26, 19, 24, 48, 24, 35, 58, 7, 10, 21, 6, 5, 10, 1, 0, 1, 3, 2, 6, 2, 2, 6, + 4, 5, 15, 1, 2, 10, 3, 3, 16, 5, 6, 19, 1, 1, 7, 2, 3, 10, 4, 4, 15, 2, 1, 11, 3, 4, 16, 5, 11, 29, 7, 10, 28, 6, 8, 26, 2, 2, 11, 2, 3, 13, 1, 3, 13, 2, 3, 15, 1, 2, 10, 3, 4, 14, 7, 10, 24, 4, 7, 23, 3, 4, 13, + 2, 2, 10, 3, 5, 20, 6, 8, 25, 6, 8, 20, 1, 1, 9, 1, 2, 15, 6, 8, 27, 8, 13, 31, 4, 5, 13, 3, 3, 10, 5, 7, 17, 2, 4, 14, 10, 16, 42, 7, 15, 42, 7, 8, 32, 6, 10, 38, 5, 10, 37, 5, 6, 23, 2, 3, 15, 2, 2, 8, 6, 7, 16, + 3, 4, 15, 4, 4, 19, 6, 9, 26, 9, 15, 38, 10, 13, 34, 4, 5, 21, 6, 10, 24, 4, 6, 13, 1, 2, 7, 4, 4, 14, 5, 7, 21, 69, 61, 101, 71, 68, 108, 78, 78, 118, 80, 80, 120, 81, 80, 120, 84, 83, 123, 89, 84, 125, 96, 89, 130, 97, 88, 131, 100, 90, 136, + 104, 94, 140, 103, 94, 138, 101, 91, 136, 97, 86, 130, 96, 85, 129, 94, 83, 126, 90, 77, 120, 88, 72, 115, 85, 62, 107, 78, 49, 94, 64, 38, 76, 52, 28, 58, 48, 20, 50, 52, 23, 51, 57, 25, 52, 64, 27, 52, 73, 33, 59, 84, 42, 68, 93, 48, 76, 96, 50, 79, 96, 48, 76, + 96, 50, 75, 91, 46, 70, 84, 45, 65, 72, 35, 59, 65, 31, 56, 60, 32, 57, 61, 32, 61, 66, 37, 66, 70, 37, 69, 75, 41, 75, 79, 42, 76, 79, 44, 76, 79, 42, 77, 77, 43, 75, 76, 43, 75, 77, 44, 76, 74, 42, 74, 73, 41, 74, 70, 39, 72, 72, 40, 74, 70, 40, 74, + 70, 40, 76, 67, 43, 79, 69, 49, 85, 71, 53, 89, 71, 57, 93, 67, 56, 93, 71, 60, 95, 72, 59, 94, 76, 60, 98, 86, 63, 101, 93, 67, 104, 97, 64, 105, 99, 64, 103, 100, 61, 98, 99, 58, 92, 97, 56, 86, 93, 52, 81, 93, 52, 81, 95, 56, 86, 99, 79, 116, 104, 124, 159, + 110, 163, 205, 116, 180, 224, 115, 174, 219, 113, 150, 195, 110, 125, 164, 110, 100, 129, 111, 81, 111, 110, 81, 111, 113, 84, 111, 135, 131, 134, 184, 209, 197, 190, 220, 216, 191, 220, 214, 185, 213, 208, 177, 201, 191, 149, 167, 134, 109, 101, 42, 209, 208, 121, 255, 255, 239, 254, 254, 239, 254, 254, 237, + 254, 254, 239, 255, 255, 242, 253, 252, 220, 188, 177, 83, 141, 92, 79, 141, 91, 80, 142, 93, 88, 139, 91, 88, 138, 90, 89, 133, 86, 85, 131, 80, 81, 128, 72, 73, 125, 67, 67, 121, 61, 57, 118, 55, 46, 117, 49, 39, 118, 47, 38, 121, 49, 41, 122, 50, 41, 124, 51, 44, 128, 57, 51, + 132, 60, 56, 137, 62, 57, 143, 66, 60, 149, 70, 62, 154, 72, 64, 159, 74, 65, 156, 73, 64, 150, 67, 63, 131, 56, 59, 112, 68, 90, 59, 138, 211, 86, 188, 246, 29, 98, 180, 4, 66, 147, 9, 46, 103, 22, 104, 177, 23, 139, 221, 23, 154, 237, 11, 108, 197, 6, 71, 145, 9, 49, 115, + 15, 62, 127, 12, 58, 117, 13, 55, 114, 12, 67, 132, 13, 110, 190, 14, 107, 188, 21, 129, 216, 11, 105, 189, 6, 99, 179, 5, 82, 156, 4, 69, 139, 6, 58, 128, 7, 54, 127, 5, 75, 151, 4, 71, 145, 5, 53, 117, 5, 43, 104, 5, 29, 90, 5, 38, 100, 7, 37, 93, 8, 43, 99, + 7, 44, 102, 6, 32, 80, 5, 10, 46, 2, 1, 30, 2, 5, 34, 3, 0, 22, 2, 0, 27, 6, 8, 48, 4, 10, 60, 5, 22, 81, 5, 37, 96, 7, 36, 97, 6, 22, 79, 4, 12, 66, 5, 19, 73, 3, 12, 64, 5, 14, 65, 7, 17, 63, 8, 15, 49, 3, 5, 33, 4, 6, 28, + 3, 3, 14, 4, 6, 17, 3, 2, 6, 2, 2, 4, 2, 2, 6, 2, 3, 10, 1, 2, 9, 3, 2, 13, 2, 2, 11, 1, 2, 8, 1, 1, 3, 1, 0, 0, 1, 1, 1, 2, 2, 5, 3, 2, 6, 2, 2, 4, 1, 2, 6, 5, 5, 15, 5, 5, 19, 7, 10, 27, 3, 4, 16, + 1, 3, 9, 5, 6, 21, 11, 20, 42, 5, 8, 26, 7, 9, 29, 9, 19, 47, 6, 11, 29, 2, 3, 17, 3, 3, 15, 3, 4, 17, 6, 9, 29, 5, 8, 26, 2, 2, 16, 4, 4, 24, 6, 10, 34, 7, 12, 31, 2, 3, 13, 2, 2, 15, 3, 4, 18, 5, 7, 23, 2, 2, 13, + 1, 2, 9, 2, 3, 14, 6, 9, 28, 7, 12, 37, 2, 3, 17, 4, 5, 18, 4, 7, 25, 3, 4, 20, 7, 13, 39, 11, 23, 51, 5, 8, 35, 13, 20, 50, 10, 17, 46, 7, 11, 35, 3, 5, 17, 1, 2, 7, 2, 2, 11, 3, 4, 17, 7, 9, 29, 10, 17, 42, 11, 21, 47, + 3, 6, 29, 3, 6, 25, 6, 8, 24, 2, 2, 12, 3, 4, 14, 7, 9, 25, 6, 11, 31, 74, 67, 107, 78, 75, 115, 81, 82, 122, 83, 83, 123, 82, 81, 121, 84, 83, 123, 87, 84, 124, 94, 87, 128, 97, 88, 131, 99, 89, 135, 104, 95, 139, 103, 94, 139, 101, 93, 137, 99, 91, 136, + 99, 90, 133, 98, 89, 131, 93, 83, 124, 91, 75, 118, 89, 66, 110, 82, 51, 96, 68, 40, 79, 54, 29, 61, 50, 23, 56, 53, 25, 56, 60, 30, 60, 66, 35, 67, 75, 40, 72, 86, 45, 77, 88, 48, 83, 91, 50, 85, 90, 50, 84, 89, 48, 82, 87, 47, 81, 79, 43, 75, 68, 37, 71, + 61, 34, 67, 56, 34, 66, 59, 38, 71, 62, 42, 75, 67, 43, 77, 71, 45, 80, 74, 45, 83, 73, 44, 82, 74, 47, 87, 71, 46, 82, 72, 46, 84, 74, 44, 84, 72, 46, 84, 71, 45, 82, 70, 46, 82, 69, 44, 80, 66, 44, 82, 67, 46, 84, 64, 47, 82, 64, 49, 84, 66, 54, 89, + 64, 55, 90, 64, 57, 91, 68, 59, 94, 71, 62, 95, 77, 59, 96, 81, 58, 97, 87, 60, 97, 91, 56, 96, 91, 55, 91, 94, 55, 87, 96, 55, 84, 97, 56, 83, 94, 53, 80, 95, 54, 82, 100, 70, 98, 104, 143, 179, 136, 215, 245, 156, 232, 255, 153, 229, 254, 148, 226, 254, 137, 214, 250, + 118, 173, 215, 112, 126, 161, 113, 82, 110, 114, 83, 110, 119, 91, 114, 179, 193, 176, 210, 236, 232, 210, 236, 236, 199, 231, 232, 188, 223, 221, 176, 209, 204, 156, 184, 158, 142, 157, 65, 254, 255, 211, 254, 254, 246, 255, 254, 247, 254, 254, 248, 254, 254, 250, 253, 254, 252, 253, 254, 247, 238, 239, 178, + 156, 114, 84, 151, 102, 94, 149, 101, 99, 147, 101, 100, 145, 101, 102, 140, 93, 97, 139, 86, 90, 136, 81, 86, 134, 75, 77, 129, 66, 65, 128, 63, 57, 126, 55, 46, 126, 53, 45, 128, 56, 48, 126, 54, 47, 128, 61, 58, 133, 69, 70, 136, 70, 74, 139, 72, 76, 146, 73, 73, 151, 73, 70, + 154, 72, 67, 160, 72, 64, 160, 74, 62, 151, 69, 63, 139, 60, 58, 121, 72, 91, 66, 139, 209, 86, 197, 250, 67, 159, 217, 7, 47, 115, 19, 66, 134, 39, 151, 224, 39, 171, 247, 19, 136, 222, 8, 91, 171, 8, 65, 138, 9, 72, 144, 16, 95, 168, 20, 105, 179, 18, 118, 194, 18, 147, 227, + 34, 188, 249, 21, 173, 238, 17, 135, 210, 5, 99, 189, 12, 123, 211, 20, 138, 227, 9, 89, 167, 5, 66, 140, 5, 84, 163, 5, 95, 174, 5, 71, 147, 7, 40, 107, 6, 48, 114, 8, 58, 124, 8, 64, 130, 10, 76, 146, 7, 78, 146, 8, 72, 139, 9, 75, 145, 7, 59, 123, 5, 24, 74, + 3, 3, 40, 3, 4, 40, 5, 10, 50, 7, 32, 84, 12, 72, 143, 14, 61, 131, 4, 29, 91, 6, 29, 89, 5, 22, 75, 4, 15, 67, 4, 17, 68, 4, 25, 74, 6, 28, 76, 8, 24, 66, 8, 14, 45, 4, 6, 31, 4, 4, 20, 2, 5, 21, 4, 6, 19, 1, 2, 7, 1, 1, 6, + 2, 2, 8, 3, 3, 12, 2, 2, 7, 2, 2, 10, 2, 3, 8, 1, 2, 4, 1, 2, 5, 2, 2, 3, 2, 2, 4, 2, 2, 4, 2, 3, 5, 1, 2, 4, 1, 1, 4, 2, 3, 12, 5, 6, 21, 7, 12, 35, 4, 7, 25, 6, 8, 27, 5, 10, 32, 14, 28, 56, 7, 12, 40, + 13, 25, 57, 21, 46, 81, 1, 3, 22, 2, 2, 13, 1, 2, 12, 4, 5, 21, 12, 19, 45, 4, 6, 29, 6, 9, 36, 6, 10, 39, 8, 13, 42, 8, 15, 38, 9, 13, 32, 4, 6, 23, 4, 5, 22, 4, 6, 19, 8, 12, 29, 3, 4, 15, 5, 7, 26, 6, 12, 37, 4, 9, 38, + 10, 18, 45, 15, 25, 48, 2, 3, 20, 2, 3, 16, 3, 5, 23, 5, 8, 32, 4, 5, 31, 3, 7, 34, 7, 12, 43, 7, 10, 34, 1, 3, 18, 2, 1, 9, 1, 2, 14, 5, 6, 22, 10, 15, 40, 7, 12, 42, 8, 16, 43, 1, 2, 13, 3, 4, 19, 4, 7, 25, 2, 3, 19, + 5, 8, 21, 6, 10, 26, 5, 8, 27, 80, 74, 115, 83, 82, 122, 86, 85, 125, 85, 85, 125, 84, 84, 124, 84, 83, 123, 89, 85, 125, 94, 86, 128, 97, 89, 130, 100, 92, 135, 103, 95, 139, 101, 96, 141, 100, 94, 140, 100, 94, 139, 98, 92, 136, 99, 89, 132, 92, 81, 124, 92, 74, 118, + 89, 66, 110, 84, 52, 97, 73, 42, 82, 59, 32, 66, 56, 30, 64, 57, 32, 67, 61, 35, 71, 67, 41, 77, 75, 43, 83, 79, 46, 86, 80, 46, 86, 81, 46, 86, 81, 46, 87, 79, 45, 87, 76, 44, 84, 71, 42, 79, 62, 39, 75, 59, 40, 73, 56, 41, 74, 56, 43, 76, 59, 46, 79, + 62, 48, 81, 66, 50, 85, 70, 50, 89, 70, 50, 90, 72, 54, 94, 71, 54, 93, 72, 53, 92, 71, 50, 92, 70, 51, 91, 68, 50, 88, 68, 52, 88, 67, 53, 88, 64, 51, 87, 66, 54, 90, 65, 54, 89, 63, 53, 89, 64, 55, 90, 65, 58, 91, 63, 57, 91, 66, 60, 93, 70, 59, 93, + 77, 59, 94, 81, 57, 93, 86, 55, 91, 89, 54, 90, 92, 55, 87, 94, 53, 83, 94, 53, 81, 95, 56, 84, 94, 54, 84, 97, 62, 91, 97, 126, 157, 129, 209, 242, 171, 239, 255, 172, 238, 253, 174, 239, 254, 174, 240, 254, 166, 235, 253, 145, 221, 250, 118, 164, 200, 119, 91, 116, 118, 84, 111, + 131, 105, 118, 207, 236, 223, 227, 247, 250, 216, 242, 248, 198, 234, 240, 187, 225, 231, 174, 215, 216, 157, 197, 182, 188, 206, 120, 255, 255, 243, 254, 253, 249, 254, 254, 252, 254, 254, 253, 253, 253, 253, 254, 254, 254, 253, 254, 254, 250, 248, 237, 181, 155, 83, 159, 110, 108, 160, 111, 111, 157, 111, 114, + 153, 108, 114, 151, 103, 111, 147, 96, 102, 145, 89, 93, 141, 83, 83, 139, 76, 75, 136, 69, 63, 135, 63, 54, 135, 61, 53, 132, 59, 51, 133, 65, 61, 136, 73, 79, 137, 77, 87, 143, 81, 93, 149, 86, 98, 150, 84, 96, 156, 85, 88, 160, 78, 76, 162, 74, 65, 166, 81, 71, 160, 78, 73, + 144, 61, 57, 126, 61, 67, 84, 138, 202, 88, 190, 250, 92, 194, 242, 33, 86, 146, 38, 106, 175, 55, 170, 238, 39, 162, 238, 19, 140, 228, 15, 103, 183, 9, 79, 152, 7, 51, 121, 9, 52, 120, 8, 65, 138, 15, 93, 164, 14, 117, 195, 16, 118, 201, 13, 165, 245, 13, 180, 249, 16, 129, 223, + 35, 172, 249, 31, 150, 230, 18, 111, 196, 9, 97, 178, 9, 102, 184, 10, 106, 189, 12, 105, 188, 8, 98, 178, 8, 89, 162, 6, 49, 112, 6, 37, 101, 5, 48, 114, 7, 61, 127, 10, 72, 137, 8, 53, 115, 4, 35, 93, 8, 32, 83, 4, 13, 57, 4, 14, 62, 8, 44, 99, 12, 71, 138, + 8, 61, 131, 7, 40, 105, 7, 37, 97, 6, 36, 91, 8, 30, 81, 8, 22, 70, 4, 13, 59, 5, 11, 55, 6, 10, 54, 9, 20, 60, 1, 2, 30, 3, 4, 27, 6, 7, 27, 3, 2, 16, 2, 2, 13, 4, 4, 17, 3, 3, 12, 2, 2, 9, 2, 2, 12, 3, 3, 10, 2, 2, 7, + 1, 2, 7, 2, 2, 4, 1, 1, 4, 1, 2, 5, 1, 2, 6, 1, 1, 6, 1, 1, 5, 1, 1, 3, 1, 2, 5, 1, 1, 9, 7, 8, 24, 15, 24, 50, 6, 9, 33, 8, 15, 40, 4, 2, 22, 6, 12, 41, 13, 23, 57, 9, 15, 47, 9, 19, 46, 3, 3, 20, 2, 2, 14, + 2, 2, 15, 6, 8, 27, 9, 18, 47, 6, 9, 39, 9, 15, 49, 3, 4, 39, 6, 12, 50, 8, 20, 57, 5, 11, 37, 3, 6, 23, 5, 10, 29, 4, 6, 22, 3, 4, 13, 2, 2, 11, 4, 5, 26, 5, 9, 37, 4, 12, 43, 6, 15, 46, 2, 7, 32, 4, 5, 19, 1, 1, 12, + 3, 5, 22, 4, 7, 31, 4, 8, 34, 8, 15, 43, 8, 17, 47, 6, 15, 47, 9, 13, 37, 1, 2, 15, 4, 5, 20, 2, 3, 16, 2, 4, 26, 4, 7, 28, 3, 4, 20, 8, 16, 42, 8, 17, 49, 4, 5, 25, 3, 4, 19, 2, 2, 14, 2, 2, 16, 5, 11, 35, 86, 82, 125, + 89, 86, 128, 89, 87, 128, 89, 88, 128, 88, 87, 127, 86, 84, 125, 90, 86, 127, 96, 88, 130, 96, 90, 132, 102, 95, 138, 105, 98, 142, 104, 98, 142, 103, 99, 144, 101, 96, 142, 101, 94, 140, 99, 89, 134, 93, 82, 127, 94, 78, 121, 90, 69, 112, 84, 55, 101, 74, 45, 88, 66, 39, 78, + 63, 38, 77, 61, 40, 79, 64, 45, 84, 66, 48, 86, 69, 48, 88, 70, 48, 87, 73, 49, 89, 71, 49, 87, 71, 51, 89, 70, 49, 89, 70, 48, 88, 66, 46, 86, 62, 45, 82, 61, 47, 81, 57, 48, 81, 57, 51, 82, 57, 53, 85, 59, 53, 85, 63, 56, 90, 68, 57, 95, 68, 55, 95, + 72, 58, 99, 71, 58, 97, 69, 56, 95, 72, 58, 97, 70, 58, 97, 68, 58, 95, 68, 57, 93, 67, 59, 93, 63, 57, 92, 62, 55, 91, 62, 56, 91, 63, 58, 91, 64, 58, 92, 66, 61, 94, 65, 60, 92, 69, 61, 93, 75, 62, 95, 80, 59, 94, 83, 57, 91, 90, 57, 92, 91, 56, 91, + 93, 54, 89, 95, 55, 86, 97, 56, 87, 96, 57, 90, 96, 58, 94, 98, 81, 115, 105, 169, 219, 154, 230, 253, 176, 242, 252, 176, 242, 253, 176, 242, 253, 178, 242, 253, 177, 241, 253, 168, 235, 253, 135, 202, 235, 123, 103, 134, 121, 89, 116, 137, 128, 132, 229, 254, 251, 229, 250, 252, 215, 244, 250, + 200, 236, 246, 185, 228, 240, 173, 219, 225, 161, 206, 203, 206, 224, 170, 255, 255, 248, 253, 254, 253, 253, 254, 253, 254, 254, 254, 253, 254, 254, 254, 254, 254, 253, 254, 254, 250, 250, 244, 194, 173, 96, 165, 116, 114, 167, 118, 118, 167, 119, 123, 164, 115, 124, 159, 109, 117, 156, 104, 111, 154, 97, 100, + 150, 91, 90, 147, 83, 80, 144, 74, 66, 143, 68, 60, 143, 65, 55, 141, 67, 59, 143, 77, 81, 146, 85, 99, 154, 95, 110, 155, 95, 111, 159, 97, 113, 157, 95, 109, 160, 92, 103, 163, 87, 95, 164, 80, 74, 160, 71, 56, 160, 73, 62, 155, 72, 68, 140, 67, 65, 104, 137, 195, 83, 171, 242, + 73, 160, 235, 65, 145, 219, 47, 120, 194, 37, 117, 189, 22, 102, 175, 19, 106, 181, 16, 113, 197, 9, 89, 169, 9, 71, 147, 12, 81, 160, 17, 97, 174, 16, 97, 174, 19, 98, 169, 12, 119, 197, 15, 153, 231, 17, 172, 248, 19, 159, 246, 8, 124, 219, 7, 68, 135, 15, 55, 118, 18, 89, 166, + 21, 119, 203, 18, 125, 211, 8, 107, 192, 7, 83, 159, 5, 78, 154, 5, 89, 165, 8, 81, 151, 7, 70, 138, 4, 31, 90, 7, 21, 77, 5, 28, 83, 7, 20, 74, 6, 16, 70, 6, 36, 92, 6, 45, 105, 12, 73, 143, 14, 68, 133, 7, 29, 88, 6, 34, 93, 11, 48, 105, 3, 18, 70, + 5, 17, 65, 8, 28, 74, 6, 23, 66, 10, 25, 67, 4, 12, 53, 3, 4, 38, 5, 5, 31, 5, 5, 29, 3, 4, 23, 3, 4, 21, 6, 7, 27, 6, 7, 25, 4, 4, 18, 3, 4, 18, 2, 3, 13, 2, 3, 13, 2, 3, 10, 6, 7, 18, 2, 3, 11, 2, 2, 8, 3, 3, 9, + 2, 2, 8, 3, 3, 8, 3, 3, 10, 2, 3, 7, 1, 2, 9, 2, 3, 15, 3, 4, 20, 4, 9, 35, 10, 18, 45, 9, 12, 39, 3, 7, 30, 3, 4, 34, 6, 9, 41, 8, 19, 56, 6, 10, 39, 5, 9, 31, 2, 1, 17, 3, 5, 20, 9, 15, 37, 2, 1, 28, 6, 8, 42, + 10, 19, 59, 3, 6, 45, 9, 25, 69, 16, 38, 80, 9, 20, 54, 3, 7, 32, 4, 8, 28, 5, 7, 20, 2, 2, 11, 1, 2, 13, 4, 4, 26, 2, 4, 30, 4, 11, 45, 8, 13, 44, 4, 8, 30, 5, 7, 25, 4, 5, 24, 1, 3, 19, 3, 5, 24, 3, 7, 32, 8, 16, 49, + 6, 16, 52, 5, 17, 51, 5, 10, 37, 2, 3, 23, 2, 3, 23, 3, 3, 20, 2, 3, 19, 2, 4, 22, 3, 4, 24, 5, 14, 44, 9, 22, 53, 5, 10, 36, 4, 6, 24, 1, 2, 13, 5, 13, 33, 12, 26, 54, 90, 84, 128, 91, 88, 130, 91, 88, 130, 89, 88, 129, 89, 88, 129, + 88, 87, 127, 90, 87, 129, 92, 87, 129, 98, 91, 134, 102, 94, 138, 99, 95, 139, 101, 95, 140, 100, 96, 142, 101, 94, 140, 102, 94, 140, 99, 89, 133, 96, 86, 130, 94, 80, 123, 91, 72, 115, 83, 59, 103, 76, 53, 95, 71, 48, 91, 68, 48, 91, 65, 48, 90, 66, 54, 94, 65, 55, 93, + 65, 53, 93, 62, 50, 89, 62, 50, 88, 64, 53, 89, 67, 57, 93, 66, 56, 93, 66, 54, 92, 65, 52, 90, 62, 52, 90, 62, 54, 91, 64, 56, 92, 63, 57, 92, 63, 61, 94, 62, 62, 94, 66, 63, 96, 69, 64, 100, 70, 63, 101, 71, 62, 101, 70, 60, 100, 69, 60, 98, 71, 61, 100, + 69, 61, 100, 68, 60, 97, 67, 58, 95, 66, 59, 94, 63, 59, 94, 63, 59, 93, 61, 58, 90, 63, 60, 92, 61, 59, 90, 64, 60, 92, 65, 60, 91, 69, 58, 91, 76, 57, 91, 81, 54, 91, 88, 56, 92, 90, 56, 92, 94, 59, 95, 98, 63, 105, 102, 67, 112, 102, 69, 115, 98, 72, 118, + 97, 73, 120, 97, 114, 160, 106, 183, 237, 161, 237, 254, 179, 245, 253, 176, 244, 254, 177, 244, 254, 174, 241, 253, 173, 241, 253, 168, 234, 254, 142, 212, 245, 114, 112, 145, 113, 92, 126, 136, 170, 193, 227, 253, 254, 223, 248, 253, 210, 240, 252, 198, 234, 249, 190, 230, 248, 186, 226, 240, 175, 216, 219, + 212, 231, 191, 255, 255, 252, 252, 254, 254, 254, 254, 254, 253, 254, 254, 253, 254, 254, 253, 254, 254, 254, 254, 255, 250, 249, 244, 197, 176, 95, 169, 119, 117, 173, 124, 122, 174, 124, 129, 171, 121, 129, 168, 117, 125, 162, 109, 115, 158, 102, 102, 155, 95, 93, 153, 86, 82, 151, 78, 70, 150, 73, 63, + 150, 70, 58, 149, 74, 66, 153, 90, 99, 157, 98, 113, 161, 100, 120, 165, 104, 124, 169, 107, 127, 168, 106, 123, 167, 101, 117, 167, 96, 108, 170, 89, 88, 170, 83, 70, 168, 78, 64, 153, 63, 47, 142, 60, 52, 124, 79, 106, 87, 155, 230, 88, 173, 244, 60, 127, 207, 36, 97, 165, 38, 111, 183, + 45, 126, 200, 33, 122, 197, 46, 145, 222, 24, 117, 197, 17, 99, 173, 11, 83, 159, 14, 90, 168, 18, 81, 155, 17, 100, 175, 15, 115, 201, 18, 141, 224, 14, 144, 241, 13, 136, 230, 5, 64, 135, 4, 14, 68, 5, 31, 91, 11, 96, 172, 24, 141, 228, 22, 136, 226, 11, 118, 206, 8, 113, 197, + 8, 112, 194, 7, 94, 170, 6, 55, 121, 3, 34, 96, 8, 41, 103, 4, 20, 76, 4, 27, 84, 7, 47, 110, 14, 91, 166, 11, 89, 162, 10, 57, 121, 10, 67, 133, 6, 29, 86, 4, 15, 69, 9, 35, 86, 7, 23, 71, 4, 6, 46, 6, 8, 48, 3, 8, 51, 4, 14, 59, 7, 20, 59, + 5, 12, 46, 4, 4, 33, 6, 10, 35, 4, 6, 30, 3, 3, 22, 7, 10, 34, 7, 12, 35, 3, 4, 21, 3, 5, 21, 3, 3, 18, 4, 5, 16, 1, 2, 10, 2, 2, 11, 6, 7, 21, 7, 9, 27, 3, 3, 11, 3, 3, 9, 7, 6, 18, 6, 6, 17, 5, 6, 14, 2, 2, 8, + 6, 7, 17, 7, 10, 26, 7, 6, 25, 4, 10, 32, 8, 17, 48, 5, 8, 35, 5, 4, 25, 3, 5, 31, 12, 25, 60, 18, 37, 76, 4, 7, 38, 7, 8, 32, 3, 3, 24, 3, 4, 24, 4, 2, 25, 3, 5, 35, 4, 10, 48, 8, 18, 64, 11, 24, 69, 25, 53, 105, 20, 43, 92, + 3, 9, 44, 6, 14, 42, 5, 8, 28, 1, 1, 10, 1, 2, 7, 2, 3, 17, 4, 11, 38, 5, 14, 50, 6, 11, 46, 4, 6, 39, 14, 30, 71, 12, 26, 61, 3, 4, 22, 3, 2, 15, 1, 2, 18, 4, 7, 36, 4, 16, 52, 7, 25, 62, 8, 16, 51, 4, 15, 51, 7, 14, 46, + 4, 8, 35, 3, 4, 27, 3, 4, 24, 4, 6, 26, 4, 9, 27, 6, 16, 43, 8, 16, 41, 3, 5, 24, 2, 3, 19, 2, 1, 12, 3, 6, 26, 6, 12, 31, 87, 82, 127, 90, 86, 128, 89, 86, 127, 88, 86, 127, 88, 86, 127, 90, 87, 128, 92, 85, 127, 93, 85, 129, 94, 87, 131, + 96, 86, 132, 95, 87, 133, 96, 88, 132, 94, 86, 130, 95, 88, 131, 95, 87, 131, 96, 87, 130, 94, 87, 127, 89, 81, 122, 87, 73, 115, 82, 65, 107, 77, 59, 101, 72, 58, 101, 71, 59, 101, 69, 61, 102, 68, 63, 103, 66, 64, 103, 63, 61, 100, 60, 59, 95, 58, 56, 92, 63, 61, 95, + 62, 60, 96, 64, 59, 96, 64, 60, 95, 65, 59, 96, 66, 62, 98, 68, 64, 100, 69, 64, 101, 67, 65, 101, 67, 67, 101, 69, 69, 103, 67, 67, 101, 71, 67, 103, 71, 65, 103, 69, 63, 100, 70, 61, 100, 66, 57, 97, 66, 58, 96, 63, 57, 92, 62, 58, 92, 63, 58, 92, 61, 56, 90, + 57, 54, 87, 58, 55, 87, 55, 55, 86, 56, 54, 86, 55, 55, 85, 60, 54, 86, 64, 54, 86, 71, 54, 87, 76, 52, 88, 81, 52, 90, 90, 58, 96, 99, 69, 109, 102, 77, 125, 103, 84, 137, 99, 90, 147, 99, 96, 154, 96, 97, 155, 92, 97, 157, 100, 131, 189, 106, 183, 239, 164, 239, 253, + 177, 244, 253, 177, 244, 253, 178, 244, 253, 174, 241, 254, 167, 238, 253, 151, 227, 254, 123, 200, 242, 94, 106, 141, 91, 93, 128, 126, 190, 230, 209, 244, 252, 213, 242, 252, 198, 234, 253, 194, 233, 253, 189, 230, 252, 189, 229, 249, 183, 222, 234, 210, 231, 194, 255, 255, 249, 253, 254, 254, 254, 254, 254, + 253, 253, 253, 253, 253, 253, 253, 254, 254, 254, 254, 255, 249, 249, 243, 197, 180, 89, 171, 121, 118, 177, 125, 125, 177, 126, 130, 174, 121, 128, 170, 117, 124, 166, 109, 115, 161, 104, 102, 160, 96, 93, 158, 87, 81, 154, 79, 70, 153, 75, 63, 152, 72, 59, 154, 78, 68, 160, 96, 110, 166, 104, 124, + 168, 105, 129, 171, 110, 134, 172, 111, 134, 174, 110, 131, 172, 108, 125, 174, 106, 122, 171, 89, 87, 169, 74, 50, 168, 73, 53, 159, 67, 50, 151, 68, 61, 141, 91, 118, 108, 118, 171, 104, 178, 240, 88, 151, 226, 34, 83, 150, 28, 84, 148, 46, 112, 182, 34, 109, 183, 29, 111, 183, 16, 92, 162, + 14, 86, 156, 9, 67, 136, 8, 46, 112, 9, 65, 134, 9, 83, 154, 11, 92, 174, 9, 109, 203, 14, 120, 212, 13, 83, 164, 8, 27, 86, 12, 56, 121, 18, 111, 190, 37, 158, 248, 43, 160, 245, 26, 142, 231, 23, 131, 219, 12, 114, 197, 9, 101, 178, 8, 87, 158, 6, 39, 101, 4, 22, 81, + 5, 48, 113, 10, 71, 139, 9, 77, 150, 11, 80, 153, 10, 90, 163, 9, 71, 140, 10, 71, 137, 7, 49, 107, 4, 22, 71, 6, 19, 65, 7, 16, 56, 6, 16, 57, 4, 6, 43, 6, 15, 55, 4, 13, 52, 5, 16, 56, 4, 11, 45, 3, 8, 39, 4, 7, 37, 4, 7, 34, 3, 4, 27, + 2, 5, 31, 4, 10, 37, 4, 5, 25, 5, 7, 26, 4, 6, 26, 3, 4, 19, 3, 3, 18, 2, 2, 16, 3, 3, 18, 7, 8, 25, 20, 27, 53, 11, 16, 33, 5, 5, 15, 2, 2, 12, 4, 4, 14, 1, 2, 9, 4, 5, 16, 7, 8, 24, 17, 23, 41, 14, 17, 37, 4, 3, 26, + 9, 18, 49, 6, 12, 41, 6, 9, 36, 6, 8, 34, 8, 21, 56, 6, 11, 47, 7, 11, 45, 11, 16, 44, 4, 6, 32, 6, 11, 40, 5, 9, 41, 5, 8, 39, 8, 16, 55, 5, 17, 61, 7, 19, 67, 6, 17, 65, 8, 23, 67, 5, 15, 53, 8, 19, 49, 3, 4, 22, 2, 3, 12, + 1, 3, 11, 4, 7, 23, 14, 27, 62, 12, 28, 66, 6, 18, 57, 7, 14, 49, 20, 42, 84, 11, 26, 62, 7, 11, 31, 1, 0, 10, 1, 3, 17, 4, 12, 42, 4, 18, 57, 3, 10, 49, 5, 12, 51, 7, 18, 56, 6, 12, 43, 4, 8, 36, 3, 4, 27, 2, 3, 23, 2, 3, 22, + 3, 3, 18, 2, 1, 8, 2, 1, 9, 2, 3, 17, 3, 5, 22, 2, 4, 21, 3, 4, 22, 2, 2, 17, 86, 76, 121, 86, 77, 120, 85, 76, 120, 85, 77, 120, 85, 77, 119, 86, 76, 119, 87, 77, 119, 89, 75, 121, 90, 75, 120, 90, 76, 120, 92, 76, 120, 91, 76, 119, 89, 76, 120, + 88, 79, 121, 89, 81, 122, 91, 83, 125, 89, 82, 124, 86, 79, 121, 85, 76, 117, 80, 70, 111, 75, 66, 107, 73, 67, 108, 72, 67, 108, 72, 69, 109, 72, 71, 111, 66, 67, 108, 62, 66, 106, 61, 65, 104, 63, 67, 105, 65, 66, 106, 66, 66, 103, 64, 65, 100, 63, 62, 99, 67, 65, 100, + 68, 66, 100, 70, 65, 102, 70, 66, 102, 67, 66, 102, 68, 68, 104, 69, 69, 104, 69, 69, 103, 70, 68, 102, 66, 64, 99, 65, 59, 97, 65, 58, 95, 60, 54, 91, 59, 53, 90, 56, 52, 88, 54, 52, 84, 54, 52, 85, 52, 51, 83, 51, 50, 81, 49, 50, 81, 47, 49, 79, 48, 49, 79, + 49, 49, 78, 55, 49, 79, 61, 49, 80, 68, 48, 83, 78, 50, 89, 91, 62, 103, 97, 77, 122, 101, 90, 146, 101, 101, 163, 103, 109, 176, 103, 115, 189, 102, 116, 194, 101, 119, 198, 96, 116, 196, 93, 125, 200, 99, 181, 241, 147, 228, 251, 174, 245, 253, 173, 243, 253, 172, 241, 253, 169, 240, 253, + 159, 234, 253, 133, 219, 252, 102, 178, 231, 81, 97, 147, 77, 100, 150, 109, 177, 231, 184, 231, 253, 198, 234, 252, 193, 234, 254, 190, 233, 253, 190, 232, 253, 190, 231, 251, 182, 224, 238, 199, 226, 190, 255, 254, 245, 254, 253, 254, 253, 253, 253, 253, 253, 253, 254, 254, 254, 254, 254, 254, 254, 254, 255, + 251, 250, 242, 194, 185, 78, 168, 114, 110, 175, 120, 120, 178, 123, 126, 174, 120, 125, 171, 116, 121, 168, 110, 111, 165, 104, 102, 161, 95, 90, 161, 88, 82, 157, 81, 70, 157, 78, 62, 154, 74, 57, 155, 76, 62, 163, 101, 114, 168, 107, 129, 173, 111, 137, 173, 114, 141, 175, 116, 142, 177, 114, 137, + 175, 110, 131, 175, 105, 122, 174, 90, 85, 169, 73, 49, 169, 73, 51, 165, 69, 51, 160, 73, 65, 139, 55, 45, 126, 50, 47, 111, 95, 128, 114, 163, 226, 94, 147, 221, 59, 116, 182, 19, 66, 125, 18, 73, 134, 26, 91, 156, 20, 94, 162, 16, 92, 159, 13, 86, 153, 11, 85, 150, 12, 73, 142, + 7, 46, 113, 11, 50, 118, 7, 41, 111, 10, 53, 122, 11, 48, 116, 13, 79, 151, 26, 120, 203, 36, 149, 237, 34, 146, 236, 21, 135, 223, 26, 138, 224, 17, 127, 213, 14, 115, 199, 7, 80, 154, 6, 28, 82, 3, 9, 61, 5, 31, 93, 6, 66, 134, 9, 83, 157, 10, 84, 161, 6, 87, 165, + 7, 75, 150, 9, 66, 130, 5, 36, 89, 4, 23, 64, 4, 5, 41, 5, 18, 57, 4, 9, 47, 4, 13, 55, 5, 16, 58, 13, 48, 100, 6, 14, 53, 4, 10, 44, 6, 17, 51, 6, 10, 39, 4, 9, 37, 5, 10, 38, 6, 8, 39, 6, 8, 38, 4, 6, 31, 5, 8, 35, 5, 10, 36, + 6, 8, 29, 4, 4, 20, 7, 8, 24, 4, 4, 21, 3, 5, 22, 8, 10, 28, 9, 12, 36, 4, 6, 23, 5, 5, 19, 4, 3, 17, 6, 8, 22, 2, 2, 11, 3, 4, 15, 3, 4, 19, 4, 6, 22, 13, 21, 49, 8, 9, 34, 7, 12, 43, 19, 31, 64, 11, 18, 48, 5, 6, 33, + 7, 14, 52, 15, 25, 61, 9, 25, 60, 6, 16, 47, 3, 9, 41, 10, 23, 57, 4, 9, 42, 3, 4, 37, 6, 9, 51, 16, 37, 86, 12, 30, 80, 4, 13, 58, 10, 26, 70, 5, 9, 46, 5, 12, 41, 4, 7, 24, 2, 2, 14, 1, 2, 14, 2, 3, 20, 4, 9, 41, 9, 25, 66, + 5, 16, 60, 7, 17, 59, 8, 21, 58, 12, 24, 57, 5, 8, 28, 2, 2, 15, 3, 5, 21, 9, 22, 54, 6, 22, 64, 7, 21, 62, 11, 31, 73, 12, 30, 70, 8, 15, 47, 7, 10, 39, 4, 7, 32, 6, 12, 33, 3, 3, 19, 2, 2, 10, 1, 2, 8, 3, 3, 14, 4, 5, 21, + 2, 3, 18, 5, 8, 29, 3, 5, 23, 2, 2, 17, 81, 65, 108, 83, 66, 109, 82, 64, 108, 82, 65, 108, 85, 68, 112, 84, 66, 110, 84, 66, 109, 87, 67, 111, 86, 67, 111, 87, 68, 112, 88, 69, 112, 88, 70, 113, 85, 70, 113, 86, 74, 116, 85, 76, 118, 84, 77, 118, 85, 79, 120, + 81, 76, 116, 80, 76, 116, 77, 73, 111, 72, 71, 111, 70, 70, 111, 73, 73, 114, 73, 73, 113, 71, 74, 114, 65, 70, 111, 62, 68, 108, 62, 69, 108, 63, 68, 109, 64, 66, 106, 62, 64, 103, 64, 64, 103, 63, 65, 103, 62, 64, 101, 64, 65, 101, 65, 65, 100, 69, 67, 102, 72, 69, 106, + 70, 68, 103, 67, 63, 100, 67, 66, 101, 65, 62, 96, 60, 58, 93, 58, 59, 91, 57, 55, 90, 55, 52, 87, 51, 50, 83, 46, 46, 80, 43, 45, 75, 42, 44, 76, 40, 43, 74, 40, 42, 72, 42, 44, 74, 39, 41, 71, 40, 41, 71, 42, 42, 70, 49, 42, 73, 58, 43, 76, 69, 48, 84, + 85, 63, 105, 94, 81, 131, 100, 98, 159, 106, 111, 187, 107, 122, 202, 109, 130, 216, 105, 135, 221, 106, 142, 227, 103, 142, 226, 96, 137, 224, 89, 132, 218, 94, 166, 236, 118, 202, 250, 169, 241, 254, 169, 242, 253, 169, 241, 253, 166, 238, 253, 149, 231, 253, 116, 209, 251, 81, 156, 217, 74, 94, 159, + 71, 101, 164, 100, 164, 228, 158, 219, 251, 182, 230, 253, 185, 231, 253, 184, 231, 253, 185, 231, 253, 183, 228, 252, 172, 219, 238, 185, 218, 178, 255, 255, 239, 253, 253, 254, 252, 254, 253, 253, 254, 254, 253, 254, 254, 254, 254, 254, 253, 254, 254, 250, 249, 239, 193, 183, 80, 164, 109, 104, 173, 117, 115, + 175, 119, 120, 174, 118, 120, 172, 114, 115, 167, 108, 106, 163, 100, 95, 163, 93, 88, 161, 86, 78, 160, 82, 68, 157, 76, 59, 156, 75, 58, 157, 77, 63, 160, 96, 107, 170, 109, 133, 176, 114, 144, 179, 119, 150, 180, 120, 150, 182, 117, 146, 179, 114, 137, 175, 106, 123, 171, 88, 83, 169, 73, 47, + 167, 70, 47, 166, 71, 50, 163, 74, 62, 144, 61, 49, 124, 43, 33, 115, 39, 35, 117, 86, 118, 119, 166, 222, 120, 195, 250, 63, 118, 188, 29, 85, 148, 26, 89, 154, 13, 83, 148, 8, 68, 131, 8, 43, 101, 11, 64, 124, 8, 38, 99, 16, 66, 132, 7, 50, 118, 10, 65, 138, 16, 80, 157, + 27, 104, 186, 40, 143, 231, 56, 160, 245, 43, 149, 234, 16, 122, 209, 9, 111, 195, 12, 110, 189, 14, 95, 171, 9, 54, 117, 6, 27, 87, 5, 14, 65, 7, 32, 91, 8, 61, 129, 7, 67, 139, 10, 74, 146, 12, 95, 170, 8, 80, 152, 8, 70, 133, 6, 32, 79, 3, 13, 52, 2, 3, 31, + 3, 3, 28, 2, 2, 24, 4, 5, 31, 5, 14, 54, 5, 20, 60, 4, 13, 51, 5, 8, 43, 4, 7, 38, 9, 13, 44, 3, 7, 35, 3, 3, 27, 4, 8, 39, 7, 12, 41, 3, 3, 29, 5, 7, 34, 5, 8, 36, 5, 6, 33, 6, 9, 35, 6, 8, 30, 5, 8, 27, 11, 13, 33, + 2, 2, 14, 3, 2, 15, 4, 5, 24, 9, 10, 34, 4, 3, 19, 6, 7, 24, 13, 20, 39, 4, 5, 19, 5, 6, 20, 8, 10, 33, 13, 22, 52, 19, 32, 68, 4, 7, 32, 7, 14, 45, 17, 33, 72, 7, 13, 42, 4, 9, 40, 9, 25, 64, 13, 35, 78, 9, 29, 68, 4, 4, 35, + 6, 15, 51, 4, 14, 47, 2, 2, 31, 3, 4, 38, 4, 10, 54, 5, 25, 77, 5, 28, 80, 4, 8, 57, 5, 11, 55, 4, 7, 42, 2, 4, 28, 3, 4, 20, 2, 3, 13, 1, 3, 14, 3, 6, 31, 3, 8, 43, 5, 16, 58, 6, 23, 65, 7, 14, 54, 4, 10, 44, 3, 5, 28, + 6, 8, 24, 1, 1, 11, 2, 3, 19, 2, 10, 40, 9, 32, 74, 21, 50, 96, 11, 27, 70, 8, 20, 59, 9, 20, 56, 5, 10, 39, 4, 5, 31, 7, 15, 41, 2, 3, 14, 2, 1, 10, 2, 4, 14, 5, 7, 20, 2, 2, 15, 3, 7, 29, 4, 12, 35, 3, 4, 23, 4, 5, 23, + 77, 57, 100, 78, 58, 101, 79, 59, 102, 78, 58, 101, 80, 59, 102, 80, 59, 103, 79, 58, 102, 82, 61, 104, 81, 60, 103, 82, 61, 105, 82, 62, 105, 83, 63, 106, 80, 63, 106, 81, 68, 110, 82, 72, 114, 80, 73, 114, 80, 74, 115, 75, 74, 114, 74, 75, 114, 73, 74, 114, 72, 73, 114, + 72, 74, 115, 71, 74, 115, 68, 71, 112, 61, 67, 109, 60, 66, 108, 56, 62, 103, 56, 62, 102, 55, 60, 100, 58, 61, 101, 57, 61, 100, 58, 62, 102, 58, 62, 101, 58, 61, 100, 62, 63, 99, 61, 62, 99, 63, 63, 98, 65, 65, 99, 64, 63, 98, 62, 61, 96, 59, 59, 92, 57, 57, 91, + 55, 56, 89, 53, 55, 86, 50, 52, 84, 46, 47, 81, 43, 44, 77, 38, 41, 73, 35, 39, 69, 34, 38, 68, 33, 36, 66, 32, 35, 64, 34, 37, 66, 34, 37, 66, 34, 38, 66, 37, 38, 66, 44, 39, 69, 55, 44, 77, 73, 58, 99, 84, 75, 124, 94, 95, 154, 105, 112, 185, 109, 127, 211, + 109, 141, 226, 108, 151, 237, 106, 158, 243, 105, 163, 244, 102, 161, 243, 98, 157, 242, 92, 146, 232, 86, 142, 226, 93, 171, 238, 127, 210, 249, 155, 230, 252, 158, 235, 254, 151, 232, 254, 125, 217, 251, 98, 184, 244, 85, 141, 213, 71, 99, 177, 64, 98, 172, 94, 153, 222, 138, 202, 246, 173, 223, 253, + 178, 227, 253, 178, 227, 252, 178, 226, 253, 174, 222, 252, 152, 206, 230, 171, 204, 160, 255, 255, 230, 254, 254, 253, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 254, 254, 250, 250, 239, 198, 188, 87, 158, 104, 96, 167, 110, 108, 172, 115, 115, 173, 114, 115, 170, 110, 110, 168, 103, 101, + 165, 97, 92, 164, 92, 85, 163, 85, 76, 159, 79, 63, 159, 76, 56, 158, 74, 55, 157, 75, 59, 159, 91, 99, 170, 112, 136, 179, 120, 148, 182, 122, 156, 184, 123, 157, 185, 121, 152, 181, 117, 142, 172, 104, 120, 170, 86, 79, 171, 75, 49, 170, 72, 48, 167, 70, 47, 161, 67, 47, 148, 58, 38, + 131, 48, 33, 118, 39, 32, 114, 45, 47, 126, 118, 154, 143, 203, 246, 116, 189, 244, 74, 151, 223, 62, 140, 215, 32, 110, 181, 36, 123, 197, 40, 127, 203, 32, 116, 193, 31, 109, 183, 29, 111, 187, 16, 94, 171, 35, 113, 196, 45, 127, 215, 40, 125, 212, 42, 138, 225, 34, 131, 219, 20, 119, 202, + 11, 102, 179, 12, 96, 171, 7, 67, 134, 6, 35, 92, 5, 14, 71, 4, 18, 76, 7, 38, 93, 8, 63, 126, 6, 46, 109, 7, 72, 139, 10, 72, 138, 7, 44, 96, 6, 18, 47, 3, 2, 21, 4, 5, 32, 3, 6, 32, 3, 3, 26, 3, 4, 29, 5, 13, 49, 6, 25, 71, 6, 22, 65, + 3, 7, 44, 3, 8, 40, 5, 13, 49, 7, 15, 50, 5, 7, 33, 4, 5, 33, 7, 9, 39, 10, 17, 51, 14, 23, 54, 4, 10, 43, 10, 21, 55, 11, 21, 59, 12, 22, 58, 10, 16, 48, 14, 19, 49, 8, 16, 45, 4, 5, 27, 2, 3, 19, 3, 3, 18, 6, 9, 34, 5, 7, 29, + 4, 5, 24, 5, 7, 26, 4, 4, 22, 6, 7, 21, 3, 6, 17, 16, 29, 60, 15, 32, 67, 9, 25, 64, 5, 9, 42, 11, 24, 64, 7, 15, 51, 3, 5, 37, 5, 14, 47, 10, 28, 69, 10, 29, 73, 11, 25, 64, 4, 8, 44, 8, 24, 62, 5, 10, 44, 3, 5, 35, 2, 5, 39, + 4, 7, 52, 5, 21, 73, 8, 29, 82, 10, 32, 82, 10, 29, 72, 11, 26, 62, 4, 11, 36, 4, 6, 19, 2, 1, 12, 3, 3, 19, 5, 14, 45, 7, 27, 68, 12, 41, 85, 12, 40, 82, 6, 14, 53, 8, 19, 52, 5, 16, 43, 1, 1, 15, 1, 2, 12, 2, 4, 21, 5, 13, 47, + 10, 29, 73, 6, 23, 69, 7, 23, 68, 10, 25, 65, 4, 13, 47, 9, 22, 53, 2, 3, 33, 3, 7, 37, 3, 4, 27, 2, 3, 19, 4, 5, 16, 2, 1, 12, 3, 5, 21, 5, 10, 35, 2, 3, 27, 2, 4, 26, 2, 4, 24, 70, 47, 91, 73, 50, 93, 72, 50, 93, 73, 51, 94, + 74, 50, 95, 75, 51, 95, 75, 52, 96, 77, 54, 98, 77, 54, 98, 75, 55, 97, 77, 57, 100, 76, 56, 99, 76, 57, 100, 75, 58, 101, 73, 62, 104, 72, 66, 106, 70, 67, 108, 70, 70, 110, 70, 71, 110, 68, 71, 111, 65, 68, 110, 60, 67, 110, 60, 67, 108, 57, 63, 105, 54, 60, 100, + 50, 57, 97, 48, 54, 96, 47, 54, 94, 46, 52, 92, 50, 55, 95, 51, 58, 95, 54, 58, 96, 56, 60, 99, 54, 59, 97, 57, 60, 96, 56, 57, 93, 57, 58, 92, 60, 61, 92, 59, 59, 92, 59, 58, 92, 55, 57, 89, 51, 53, 84, 48, 50, 82, 46, 48, 81, 43, 45, 78, 39, 41, 74, + 35, 39, 71, 31, 35, 68, 29, 35, 66, 27, 32, 65, 25, 31, 62, 26, 31, 61, 27, 32, 61, 28, 33, 62, 32, 36, 65, 34, 39, 68, 44, 43, 74, 58, 54, 89, 70, 67, 113, 82, 84, 139, 92, 99, 169, 102, 120, 201, 107, 138, 224, 107, 152, 239, 107, 166, 247, 105, 174, 252, 108, 178, 252, + 105, 176, 253, 99, 172, 250, 93, 156, 243, 86, 144, 230, 83, 132, 219, 92, 143, 218, 99, 178, 237, 105, 185, 242, 103, 186, 244, 97, 179, 243, 95, 164, 235, 89, 130, 213, 78, 110, 195, 71, 102, 185, 85, 134, 208, 114, 184, 243, 155, 213, 252, 163, 219, 252, 168, 221, 254, 164, 218, 251, 150, 208, 245, + 119, 177, 207, 155, 181, 127, 255, 255, 224, 254, 254, 249, 253, 254, 252, 254, 254, 254, 253, 253, 253, 254, 254, 254, 254, 254, 253, 251, 252, 238, 203, 195, 91, 155, 97, 91, 165, 106, 100, 171, 110, 109, 173, 109, 110, 170, 105, 103, 169, 102, 97, 166, 95, 86, 163, 89, 79, 163, 86, 72, 160, 80, 63, + 160, 75, 54, 157, 72, 51, 157, 73, 55, 160, 89, 94, 171, 111, 132, 176, 115, 142, 181, 120, 150, 182, 120, 150, 183, 120, 149, 181, 116, 140, 173, 104, 121, 169, 84, 78, 168, 72, 46, 168, 70, 42, 167, 71, 44, 164, 68, 44, 154, 60, 38, 137, 51, 31, 125, 42, 27, 117, 44, 39, 113, 50, 55, + 131, 119, 153, 144, 210, 247, 127, 208, 254, 100, 181, 248, 66, 149, 225, 48, 133, 212, 57, 139, 219, 44, 123, 205, 47, 122, 204, 38, 114, 196, 29, 107, 186, 24, 102, 181, 40, 118, 201, 38, 116, 199, 20, 101, 177, 19, 102, 178, 5, 84, 155, 7, 73, 139, 5, 45, 106, 6, 23, 82, 7, 31, 91, + 5, 38, 95, 7, 53, 110, 9, 40, 94, 4, 19, 68, 4, 27, 78, 7, 26, 69, 8, 28, 64, 4, 6, 31, 4, 5, 22, 2, 3, 24, 2, 2, 19, 4, 7, 39, 5, 16, 56, 6, 22, 70, 6, 39, 94, 6, 36, 88, 7, 30, 75, 6, 10, 46, 3, 7, 38, 6, 17, 53, 6, 14, 53, + 7, 17, 56, 8, 15, 48, 19, 39, 82, 19, 32, 68, 7, 11, 41, 6, 8, 39, 13, 25, 69, 19, 40, 86, 10, 21, 60, 7, 11, 42, 17, 28, 60, 19, 33, 66, 20, 33, 64, 9, 13, 35, 7, 10, 34, 13, 20, 50, 7, 13, 40, 6, 8, 36, 7, 9, 34, 10, 13, 37, 7, 7, 24, + 1, 2, 17, 8, 15, 45, 16, 32, 72, 6, 22, 64, 5, 7, 40, 18, 38, 77, 9, 18, 54, 6, 11, 41, 17, 33, 68, 13, 30, 72, 10, 34, 74, 5, 8, 40, 6, 11, 47, 15, 38, 80, 8, 18, 54, 6, 12, 44, 2, 6, 39, 7, 18, 64, 9, 26, 79, 7, 20, 74, 11, 40, 88, + 4, 20, 63, 5, 12, 47, 5, 8, 34, 4, 8, 22, 2, 2, 15, 2, 3, 22, 4, 11, 46, 10, 34, 78, 5, 25, 72, 2, 20, 64, 4, 11, 48, 5, 14, 45, 6, 12, 40, 3, 3, 20, 1, 2, 14, 2, 3, 22, 5, 11, 47, 6, 27, 74, 6, 25, 73, 5, 18, 63, 7, 17, 56, + 4, 5, 31, 6, 13, 42, 4, 8, 39, 5, 19, 54, 4, 10, 40, 2, 3, 21, 3, 3, 13, 2, 4, 16, 7, 11, 33, 4, 5, 31, 4, 7, 33, 3, 7, 30, 2, 4, 23, 58, 37, 75, 62, 40, 79, 61, 41, 81, 61, 41, 81, 63, 40, 83, 65, 41, 83, 67, 42, 84, 68, 45, 87, + 66, 44, 86, 64, 44, 86, 66, 47, 89, 66, 47, 89, 64, 46, 88, 63, 47, 89, 61, 50, 92, 59, 54, 93, 60, 60, 99, 61, 62, 102, 59, 64, 104, 58, 64, 105, 55, 61, 103, 50, 57, 99, 47, 55, 96, 45, 54, 92, 44, 51, 88, 41, 49, 87, 40, 47, 87, 41, 48, 86, 43, 50, 89, + 45, 51, 90, 47, 54, 90, 50, 56, 91, 51, 56, 94, 52, 56, 93, 52, 56, 92, 53, 54, 89, 53, 56, 88, 53, 55, 88, 52, 54, 85, 52, 54, 86, 50, 52, 82, 48, 50, 80, 46, 48, 79, 41, 45, 75, 37, 41, 72, 34, 38, 71, 29, 35, 68, 22, 29, 64, 21, 30, 64, 21, 30, 66, + 21, 30, 64, 20, 30, 61, 26, 33, 66, 25, 34, 69, 29, 37, 72, 35, 43, 80, 44, 51, 88, 55, 60, 102, 66, 72, 122, 80, 87, 150, 91, 106, 180, 96, 125, 209, 104, 144, 229, 104, 161, 244, 105, 172, 251, 106, 179, 253, 108, 186, 253, 106, 183, 253, 103, 177, 252, 97, 163, 247, 88, 148, 234, + 84, 131, 220, 82, 115, 201, 81, 110, 190, 89, 124, 201, 91, 135, 209, 94, 141, 220, 91, 136, 220, 88, 127, 217, 84, 121, 209, 78, 114, 200, 77, 113, 197, 95, 151, 223, 127, 192, 243, 144, 203, 247, 145, 202, 247, 139, 195, 240, 117, 174, 218, 90, 132, 168, 114, 130, 104, 253, 255, 210, 254, 254, 244, + 254, 254, 246, 254, 254, 250, 254, 253, 250, 254, 254, 252, 254, 254, 250, 251, 251, 233, 202, 194, 93, 151, 90, 83, 162, 101, 94, 170, 105, 103, 169, 104, 102, 170, 101, 96, 168, 96, 91, 166, 90, 81, 165, 86, 73, 162, 82, 65, 162, 78, 58, 160, 73, 51, 159, 72, 49, 157, 70, 52, 161, 90, 96, + 168, 104, 123, 172, 109, 130, 175, 112, 136, 177, 113, 138, 178, 113, 137, 176, 112, 132, 171, 103, 119, 167, 84, 79, 166, 70, 41, 167, 72, 39, 167, 70, 37, 165, 68, 37, 157, 62, 32, 146, 54, 30, 134, 48, 27, 116, 36, 17, 108, 32, 17, 115, 56, 58, 124, 105, 153, 136, 178, 219, 111, 183, 245, + 97, 167, 240, 80, 153, 230, 48, 124, 205, 44, 121, 201, 30, 109, 190, 18, 100, 180, 16, 95, 171, 9, 81, 155, 8, 77, 148, 10, 78, 147, 7, 67, 135, 4, 53, 113, 7, 56, 120, 6, 40, 99, 8, 39, 99, 6, 42, 100, 7, 56, 118, 7, 60, 117, 9, 38, 91, 7, 31, 84, 6, 17, 61, + 6, 19, 63, 6, 13, 48, 3, 2, 20, 4, 6, 27, 4, 10, 41, 4, 7, 34, 4, 6, 32, 5, 19, 59, 9, 45, 102, 9, 49, 108, 5, 40, 93, 8, 37, 87, 8, 17, 59, 5, 15, 51, 7, 21, 57, 9, 23, 59, 6, 20, 59, 10, 27, 68, 18, 42, 86, 14, 34, 77, 11, 26, 68, + 5, 10, 47, 5, 12, 52, 15, 31, 79, 20, 45, 95, 9, 23, 62, 4, 6, 33, 6, 9, 41, 13, 24, 56, 10, 17, 45, 13, 20, 50, 10, 16, 43, 5, 12, 40, 7, 13, 42, 6, 9, 35, 4, 5, 30, 6, 11, 33, 6, 8, 22, 2, 3, 18, 8, 13, 41, 11, 21, 54, 15, 33, 76, + 9, 19, 55, 5, 16, 51, 10, 23, 59, 6, 16, 51, 8, 23, 63, 14, 33, 78, 8, 22, 63, 5, 15, 53, 11, 16, 53, 17, 38, 80, 10, 31, 70, 4, 7, 37, 3, 5, 36, 6, 25, 71, 12, 46, 100, 13, 46, 99, 10, 37, 88, 5, 13, 57, 4, 9, 45, 4, 5, 30, 3, 3, 21, + 2, 3, 16, 5, 9, 32, 5, 20, 57, 8, 23, 66, 6, 30, 75, 3, 13, 56, 4, 16, 54, 8, 20, 53, 6, 15, 44, 4, 4, 22, 2, 3, 16, 3, 4, 21, 8, 17, 52, 13, 37, 84, 19, 55, 105, 7, 26, 70, 4, 12, 53, 6, 11, 47, 5, 9, 39, 9, 23, 57, 7, 21, 57, + 6, 13, 45, 2, 5, 24, 1, 2, 12, 2, 5, 24, 3, 7, 32, 4, 7, 32, 3, 6, 32, 2, 3, 24, 2, 3, 22, 48, 31, 65, 50, 33, 68, 51, 33, 71, 52, 34, 72, 55, 36, 75, 55, 36, 77, 56, 37, 77, 57, 37, 78, 57, 38, 80, 60, 41, 82, 58, 42, 83, 57, 42, 83, + 56, 42, 84, 55, 44, 85, 55, 47, 87, 54, 53, 88, 55, 56, 93, 53, 57, 96, 51, 58, 97, 50, 57, 96, 46, 54, 94, 42, 50, 90, 41, 49, 88, 37, 45, 83, 35, 44, 80, 34, 41, 78, 32, 41, 76, 33, 42, 77, 38, 45, 80, 41, 47, 83, 44, 49, 85, 48, 51, 86, 47, 52, 86, + 46, 50, 85, 46, 49, 84, 48, 51, 84, 48, 51, 83, 48, 51, 82, 49, 50, 81, 47, 50, 80, 50, 50, 81, 45, 46, 77, 45, 46, 75, 42, 45, 75, 34, 39, 71, 29, 36, 70, 25, 35, 69, 24, 34, 68, 23, 33, 70, 24, 34, 72, 21, 32, 70, 24, 36, 74, 26, 38, 77, 28, 42, 82, + 29, 44, 86, 32, 47, 92, 42, 57, 105, 52, 67, 117, 63, 77, 135, 72, 91, 159, 86, 108, 188, 92, 126, 212, 99, 144, 230, 101, 161, 243, 105, 171, 250, 104, 179, 253, 107, 184, 253, 104, 182, 253, 100, 175, 251, 95, 162, 245, 87, 147, 235, 86, 132, 220, 86, 120, 205, 83, 110, 191, 81, 106, 184, + 86, 112, 193, 92, 124, 211, 90, 130, 218, 88, 131, 221, 90, 128, 219, 88, 126, 213, 85, 122, 207, 80, 115, 200, 86, 124, 199, 103, 145, 204, 103, 150, 204, 101, 142, 195, 86, 120, 170, 68, 91, 139, 79, 93, 119, 249, 250, 188, 253, 254, 235, 254, 253, 238, 254, 254, 241, 254, 254, 243, 255, 254, 246, + 254, 254, 243, 250, 250, 222, 198, 190, 84, 148, 85, 77, 157, 93, 84, 167, 100, 95, 168, 97, 93, 168, 95, 89, 166, 90, 81, 164, 86, 75, 163, 84, 65, 162, 79, 57, 160, 73, 49, 159, 71, 46, 158, 70, 46, 156, 70, 49, 159, 88, 94, 164, 98, 113, 165, 100, 118, 170, 105, 124, 172, 107, 127, + 172, 108, 126, 172, 104, 123, 168, 96, 111, 166, 82, 80, 164, 69, 37, 166, 69, 33, 166, 68, 30, 166, 69, 32, 160, 62, 27, 154, 56, 25, 142, 49, 18, 129, 42, 18, 118, 37, 19, 106, 30, 14, 110, 40, 35, 119, 66, 78, 134, 128, 182, 121, 133, 194, 122, 168, 235, 110, 167, 243, 96, 157, 239, + 85, 151, 238, 64, 136, 216, 41, 113, 191, 25, 96, 171, 15, 86, 156, 6, 72, 141, 4, 49, 115, 5, 33, 89, 4, 34, 91, 7, 41, 99, 7, 36, 90, 9, 48, 101, 6, 43, 93, 5, 7, 43, 4, 7, 42, 6, 17, 61, 4, 17, 61, 4, 17, 60, 4, 8, 44, 5, 12, 45, 8, 32, 73, + 10, 44, 91, 6, 15, 54, 8, 30, 76, 9, 37, 89, 9, 47, 106, 12, 56, 113, 7, 29, 86, 7, 24, 74, 7, 16, 54, 5, 11, 44, 10, 25, 61, 7, 19, 53, 8, 19, 51, 7, 19, 57, 6, 12, 52, 6, 11, 51, 10, 18, 55, 9, 17, 56, 12, 27, 68, 19, 49, 102, 24, 52, 104, + 22, 39, 83, 11, 22, 57, 13, 26, 59, 24, 38, 75, 3, 5, 35, 4, 8, 36, 4, 7, 33, 5, 9, 37, 5, 7, 35, 7, 11, 36, 4, 6, 33, 5, 8, 28, 7, 9, 25, 3, 6, 22, 13, 22, 51, 14, 27, 65, 16, 37, 77, 16, 27, 60, 3, 9, 39, 12, 26, 66, 11, 29, 69, + 8, 25, 66, 10, 29, 75, 14, 38, 85, 12, 21, 60, 5, 12, 51, 17, 40, 85, 7, 20, 59, 3, 3, 28, 3, 6, 36, 4, 24, 67, 8, 48, 104, 16, 53, 108, 9, 38, 88, 9, 28, 72, 8, 15, 53, 4, 6, 33, 3, 5, 26, 2, 2, 20, 1, 3, 19, 3, 14, 49, 4, 19, 62, + 5, 22, 66, 7, 23, 66, 6, 17, 57, 5, 13, 49, 5, 12, 39, 3, 4, 20, 5, 10, 26, 1, 1, 13, 5, 8, 33, 13, 30, 75, 5, 20, 71, 3, 13, 62, 4, 17, 61, 3, 9, 47, 5, 8, 41, 5, 13, 46, 5, 15, 49, 4, 13, 43, 4, 6, 28, 4, 5, 22, 1, 2, 21, + 2, 3, 27, 2, 5, 31, 3, 7, 33, 3, 4, 24, 3, 4, 21, 41, 27, 60, 44, 30, 63, 45, 33, 68, 46, 34, 71, 49, 37, 73, 51, 38, 75, 52, 37, 76, 56, 40, 79, 56, 42, 81, 58, 44, 83, 58, 45, 84, 56, 47, 85, 56, 48, 85, 57, 51, 85, 56, 52, 88, 54, 55, 87, + 51, 53, 89, 48, 53, 91, 45, 53, 91, 42, 50, 88, 41, 49, 88, 35, 46, 82, 36, 44, 81, 32, 42, 76, 29, 38, 72, 30, 37, 69, 27, 34, 66, 32, 37, 69, 35, 41, 73, 39, 41, 76, 40, 43, 78, 43, 46, 79, 43, 48, 80, 44, 48, 80, 44, 47, 79, 46, 48, 79, 47, 49, 79, + 46, 47, 77, 47, 46, 77, 45, 46, 76, 47, 46, 76, 43, 43, 73, 43, 41, 71, 40, 42, 72, 37, 42, 74, 34, 40, 78, 34, 44, 83, 32, 44, 85, 31, 46, 90, 29, 47, 92, 24, 44, 92, 24, 45, 93, 27, 49, 97, 27, 51, 101, 28, 55, 107, 31, 58, 113, 37, 65, 123, 47, 74, 134, + 56, 82, 147, 69, 96, 171, 80, 110, 191, 87, 128, 214, 94, 142, 229, 94, 156, 241, 98, 165, 247, 98, 172, 249, 99, 173, 250, 97, 171, 250, 94, 164, 245, 91, 153, 238, 88, 140, 227, 87, 127, 215, 85, 117, 201, 85, 110, 191, 86, 108, 185, 89, 114, 193, 91, 124, 210, 93, 133, 220, 93, 135, 224, + 92, 134, 223, 89, 130, 220, 89, 127, 216, 85, 120, 206, 82, 111, 194, 76, 103, 180, 73, 96, 171, 69, 91, 163, 68, 86, 153, 63, 80, 142, 90, 108, 137, 226, 223, 163, 253, 254, 221, 253, 253, 227, 253, 254, 229, 253, 254, 231, 254, 254, 232, 252, 253, 230, 248, 249, 202, 188, 177, 59, 144, 78, 71, + 156, 87, 78, 163, 92, 85, 165, 92, 84, 163, 90, 80, 164, 87, 74, 162, 83, 65, 162, 79, 58, 161, 76, 50, 159, 71, 43, 157, 68, 37, 156, 66, 36, 157, 68, 44, 157, 81, 81, 161, 90, 104, 163, 95, 110, 165, 98, 115, 166, 99, 116, 166, 97, 114, 168, 96, 112, 164, 88, 101, 165, 78, 74, + 163, 67, 35, 164, 65, 26, 167, 68, 24, 165, 65, 20, 165, 66, 24, 159, 59, 22, 150, 52, 16, 137, 44, 15, 124, 36, 10, 112, 32, 12, 107, 29, 18, 106, 38, 37, 116, 61, 78, 113, 62, 85, 109, 98, 153, 94, 135, 213, 95, 152, 236, 97, 167, 245, 108, 186, 252, 82, 151, 236, 66, 134, 219, + 35, 103, 178, 11, 83, 152, 15, 79, 148, 5, 30, 88, 6, 42, 97, 8, 46, 96, 4, 12, 48, 5, 11, 47, 4, 14, 52, 4, 11, 48, 5, 26, 74, 7, 43, 97, 8, 50, 107, 8, 32, 82, 8, 27, 74, 8, 24, 64, 4, 10, 45, 6, 11, 48, 8, 25, 66, 6, 18, 65, 6, 22, 75, + 5, 27, 85, 10, 37, 93, 7, 30, 81, 9, 23, 69, 12, 29, 71, 4, 13, 42, 3, 14, 48, 4, 5, 33, 4, 4, 33, 6, 11, 44, 10, 22, 63, 13, 25, 64, 7, 14, 52, 15, 35, 75, 15, 33, 77, 7, 24, 72, 6, 18, 65, 16, 30, 73, 18, 35, 73, 26, 52, 99, 2, 7, 40, + 8, 14, 47, 8, 14, 46, 8, 11, 40, 8, 11, 39, 4, 7, 36, 3, 3, 25, 5, 11, 39, 5, 10, 36, 10, 15, 41, 3, 2, 20, 5, 5, 28, 9, 17, 54, 5, 9, 41, 7, 12, 42, 6, 13, 46, 15, 41, 79, 4, 13, 51, 4, 6, 43, 9, 30, 74, 15, 49, 98, 4, 11, 54, + 5, 12, 55, 7, 24, 71, 7, 15, 54, 8, 16, 47, 3, 7, 36, 4, 16, 54, 14, 55, 112, 15, 52, 107, 3, 27, 80, 6, 28, 77, 19, 41, 82, 3, 7, 38, 5, 10, 38, 3, 3, 23, 3, 4, 27, 4, 10, 48, 5, 21, 65, 5, 20, 65, 16, 47, 92, 7, 26, 67, 5, 17, 54, + 5, 11, 42, 3, 3, 24, 2, 2, 19, 2, 1, 17, 3, 2, 23, 2, 7, 46, 5, 20, 71, 3, 18, 71, 5, 32, 79, 5, 16, 59, 5, 13, 45, 3, 5, 36, 4, 8, 37, 3, 5, 27, 3, 6, 22, 2, 4, 15, 5, 10, 39, 4, 9, 39, 2, 6, 36, 2, 5, 30, 2, 4, 22, + 3, 3, 16, 39, 28, 60, 40, 34, 64, 42, 36, 67, 45, 40, 70, 48, 42, 75, 49, 43, 77, 52, 46, 80, 55, 47, 83, 56, 45, 84, 56, 47, 85, 58, 49, 85, 58, 52, 87, 58, 52, 87, 57, 53, 85, 54, 52, 85, 50, 51, 84, 48, 49, 84, 45, 49, 84, 41, 48, 83, 37, 46, 81, + 34, 42, 78, 32, 42, 77, 30, 39, 73, 27, 34, 66, 26, 34, 65, 26, 31, 59, 27, 31, 59, 30, 32, 62, 33, 35, 64, 35, 37, 67, 37, 38, 69, 39, 41, 72, 40, 43, 73, 42, 45, 74, 41, 43, 73, 44, 43, 74, 46, 45, 75, 46, 43, 73, 46, 42, 73, 47, 42, 72, 47, 40, 72, + 48, 41, 71, 44, 38, 69, 43, 40, 72, 44, 47, 81, 45, 51, 96, 45, 57, 108, 42, 59, 114, 41, 62, 119, 35, 60, 116, 31, 58, 117, 27, 59, 119, 25, 60, 120, 25, 63, 124, 24, 64, 126, 26, 67, 130, 31, 71, 136, 41, 80, 145, 50, 86, 155, 62, 99, 174, 71, 109, 191, 80, 123, 212, + 81, 135, 223, 84, 144, 233, 87, 152, 237, 88, 157, 240, 91, 160, 240, 89, 157, 239, 86, 150, 234, 86, 141, 228, 83, 127, 215, 84, 116, 202, 83, 107, 186, 85, 107, 183, 86, 107, 183, 89, 112, 188, 93, 121, 206, 94, 130, 216, 95, 136, 223, 95, 137, 225, 92, 132, 220, 89, 126, 212, 87, 120, 201, + 84, 110, 187, 81, 104, 180, 79, 102, 177, 77, 99, 175, 72, 93, 163, 67, 87, 150, 106, 119, 144, 183, 175, 145, 249, 246, 196, 252, 249, 205, 253, 250, 206, 254, 252, 209, 254, 252, 210, 253, 252, 207, 243, 243, 170, 174, 148, 62, 144, 78, 71, 153, 82, 73, 159, 84, 77, 159, 84, 76, 160, 82, 69, + 160, 80, 63, 161, 77, 58, 161, 74, 49, 159, 71, 41, 158, 67, 37, 154, 63, 28, 156, 64, 31, 157, 65, 36, 157, 75, 66, 158, 83, 94, 158, 89, 102, 159, 90, 105, 162, 91, 107, 162, 90, 106, 161, 87, 101, 164, 83, 90, 162, 73, 61, 161, 64, 30, 162, 63, 22, 164, 65, 16, 167, 65, 17, + 166, 64, 15, 163, 61, 15, 157, 55, 13, 144, 47, 7, 134, 43, 13, 121, 36, 14, 113, 36, 27, 106, 38, 42, 106, 47, 62, 104, 54, 79, 95, 76, 125, 86, 112, 187, 84, 125, 205, 93, 154, 236, 107, 186, 252, 90, 167, 247, 86, 157, 245, 55, 121, 206, 35, 104, 180, 23, 90, 160, 4, 49, 105, + 9, 44, 98, 3, 6, 41, 4, 7, 35, 7, 28, 72, 8, 38, 88, 9, 38, 86, 8, 40, 90, 8, 24, 70, 6, 29, 79, 4, 21, 73, 9, 41, 91, 13, 38, 83, 8, 17, 53, 3, 7, 41, 3, 5, 43, 5, 12, 58, 7, 34, 88, 4, 40, 94, 5, 18, 70, 7, 24, 71, 9, 21, 65, + 10, 26, 70, 5, 8, 45, 3, 10, 41, 4, 7, 35, 6, 10, 42, 11, 23, 62, 6, 12, 50, 7, 13, 52, 8, 20, 61, 9, 29, 75, 8, 23, 72, 11, 31, 80, 17, 41, 87, 16, 36, 79, 15, 26, 64, 7, 17, 61, 23, 53, 100, 21, 44, 87, 14, 23, 62, 15, 27, 65, 1, 5, 37, + 4, 9, 43, 5, 9, 43, 5, 13, 50, 10, 25, 63, 10, 17, 47, 3, 4, 27, 6, 10, 31, 17, 35, 70, 19, 37, 74, 7, 12, 45, 2, 3, 34, 4, 11, 50, 4, 9, 44, 5, 13, 50, 4, 14, 56, 11, 38, 88, 15, 37, 85, 14, 32, 80, 15, 40, 86, 5, 19, 62, 10, 24, 59, + 2, 2, 26, 4, 11, 44, 11, 48, 102, 13, 52, 106, 7, 36, 90, 9, 31, 80, 5, 16, 60, 2, 7, 41, 4, 8, 38, 3, 5, 30, 3, 10, 46, 5, 19, 61, 7, 26, 71, 3, 15, 62, 6, 28, 74, 8, 30, 71, 9, 28, 64, 7, 16, 46, 2, 3, 20, 2, 2, 17, 2, 4, 25, + 4, 8, 43, 6, 26, 71, 6, 36, 89, 6, 26, 80, 7, 32, 81, 5, 14, 57, 8, 23, 61, 4, 8, 41, 5, 12, 36, 2, 3, 21, 1, 3, 9, 4, 9, 26, 9, 22, 55, 4, 9, 41, 4, 13, 44, 2, 7, 31, 1, 2, 18, 2, 4, 18, 40, 31, 61, 42, 36, 66, 44, 39, 70, + 45, 41, 72, 47, 43, 75, 49, 45, 79, 50, 46, 78, 52, 45, 80, 53, 45, 82, 51, 45, 80, 53, 45, 82, 53, 46, 81, 52, 46, 80, 52, 47, 79, 49, 46, 79, 46, 44, 77, 44, 44, 76, 42, 44, 76, 39, 42, 74, 36, 41, 73, 33, 40, 72, 30, 37, 67, 29, 34, 65, 27, 33, 62, + 25, 30, 58, 27, 30, 58, 27, 29, 54, 29, 30, 56, 32, 31, 59, 35, 33, 62, 40, 36, 66, 42, 38, 69, 45, 42, 72, 46, 43, 72, 42, 40, 69, 46, 40, 70, 48, 41, 71, 52, 41, 72, 53, 40, 72, 54, 39, 72, 55, 39, 72, 56, 40, 72, 52, 39, 72, 53, 45, 80, 54, 54, 93, + 56, 62, 111, 52, 65, 120, 51, 70, 132, 49, 73, 137, 40, 74, 138, 34, 72, 134, 30, 71, 136, 26, 70, 136, 24, 71, 135, 24, 72, 136, 25, 73, 138, 28, 77, 143, 34, 83, 151, 41, 90, 160, 49, 96, 172, 58, 105, 185, 64, 113, 197, 68, 123, 208, 74, 130, 215, 76, 135, 220, 80, 142, 227, + 81, 144, 227, 82, 140, 225, 81, 134, 220, 78, 125, 210, 76, 114, 197, 75, 104, 181, 76, 97, 168, 79, 95, 166, 81, 98, 169, 88, 107, 183, 91, 115, 194, 90, 121, 206, 93, 129, 213, 92, 129, 212, 89, 123, 207, 88, 117, 196, 86, 110, 185, 86, 105, 176, 82, 101, 173, 81, 102, 172, 81, 102, 174, + 77, 98, 168, 72, 91, 156, 95, 106, 146, 153, 143, 144, 216, 208, 151, 244, 234, 182, 245, 234, 180, 248, 237, 185, 248, 240, 186, 247, 238, 177, 225, 210, 126, 161, 123, 78, 145, 83, 80, 152, 82, 80, 155, 81, 77, 157, 81, 75, 157, 78, 69, 159, 77, 61, 158, 72, 51, 158, 70, 45, 158, 66, 35, + 157, 66, 33, 155, 62, 25, 155, 62, 24, 154, 62, 27, 156, 66, 45, 158, 79, 81, 159, 83, 93, 155, 80, 93, 156, 80, 94, 157, 82, 97, 158, 80, 92, 158, 74, 76, 157, 66, 52, 157, 61, 28, 161, 62, 25, 163, 63, 19, 164, 62, 15, 168, 65, 16, 165, 61, 13, 162, 60, 16, 153, 53, 11, + 142, 47, 16, 131, 43, 23, 116, 38, 34, 106, 42, 50, 107, 54, 74, 101, 59, 96, 85, 80, 132, 74, 103, 173, 81, 121, 201, 81, 126, 212, 79, 139, 227, 67, 130, 218, 67, 132, 221, 44, 112, 193, 25, 95, 169, 8, 59, 124, 7, 53, 110, 8, 47, 101, 6, 29, 76, 6, 22, 67, 7, 27, 72, + 5, 24, 64, 3, 13, 52, 4, 12, 47, 5, 31, 83, 7, 55, 115, 13, 61, 115, 9, 21, 66, 6, 18, 57, 6, 8, 39, 4, 10, 46, 5, 13, 48, 7, 26, 69, 10, 43, 94, 6, 36, 89, 11, 35, 83, 8, 21, 69, 18, 33, 76, 4, 12, 54, 8, 14, 54, 8, 15, 52, 10, 19, 55, + 12, 28, 68, 10, 27, 70, 8, 12, 51, 8, 18, 64, 12, 32, 83, 12, 36, 85, 9, 32, 81, 20, 50, 99, 14, 30, 78, 24, 63, 114, 9, 16, 55, 17, 36, 84, 20, 50, 98, 12, 25, 69, 20, 39, 84, 5, 9, 53, 11, 28, 71, 14, 33, 78, 16, 37, 85, 19, 49, 99, 12, 31, 72, + 9, 14, 47, 4, 7, 34, 5, 8, 32, 8, 16, 49, 17, 34, 75, 16, 36, 75, 6, 12, 51, 5, 23, 66, 5, 15, 58, 6, 16, 55, 2, 11, 50, 6, 30, 77, 6, 19, 66, 8, 27, 73, 16, 44, 90, 5, 16, 58, 5, 12, 48, 3, 2, 23, 6, 11, 37, 9, 35, 85, 9, 38, 91, + 10, 40, 95, 4, 21, 75, 6, 27, 73, 8, 22, 62, 9, 20, 55, 2, 5, 37, 3, 16, 56, 5, 20, 65, 4, 12, 61, 8, 31, 79, 10, 31, 74, 4, 21, 63, 10, 29, 67, 4, 10, 42, 3, 3, 26, 3, 3, 23, 3, 4, 33, 4, 13, 55, 7, 31, 80, 13, 46, 100, 11, 37, 91, + 10, 38, 89, 4, 14, 54, 3, 5, 37, 3, 12, 43, 5, 10, 37, 3, 5, 22, 3, 5, 17, 6, 18, 45, 5, 16, 51, 3, 10, 45, 3, 9, 41, 3, 8, 35, 2, 3, 22, 2, 3, 21, 40, 29, 60, 40, 32, 64, 42, 34, 66, 41, 37, 68, 44, 41, 73, 47, 47, 78, 50, 49, 82, + 54, 48, 83, 51, 45, 82, 50, 42, 78, 50, 41, 78, 51, 41, 77, 50, 42, 77, 49, 42, 75, 47, 41, 74, 47, 42, 74, 46, 42, 74, 42, 42, 73, 40, 41, 71, 40, 40, 71, 35, 38, 69, 32, 36, 65, 28, 33, 62, 28, 31, 60, 28, 31, 57, 29, 28, 54, 32, 28, 54, 34, 29, 57, + 38, 31, 61, 40, 33, 62, 44, 34, 66, 47, 37, 68, 50, 40, 71, 54, 40, 74, 54, 40, 72, 56, 42, 74, 57, 42, 71, 62, 43, 74, 64, 42, 74, 63, 41, 73, 64, 40, 73, 63, 39, 73, 62, 41, 75, 61, 49, 88, 61, 61, 103, 60, 66, 117, 59, 72, 131, 58, 77, 142, 53, 80, 146, + 45, 80, 148, 36, 80, 147, 30, 79, 145, 26, 78, 146, 21, 77, 142, 20, 77, 144, 19, 79, 146, 22, 82, 149, 28, 85, 156, 32, 90, 162, 39, 94, 170, 48, 101, 180, 51, 106, 185, 52, 108, 188, 61, 117, 198, 68, 124, 205, 74, 129, 212, 75, 130, 212, 73, 122, 208, 72, 118, 200, 71, 110, 191, + 67, 104, 179, 68, 96, 164, 66, 86, 150, 67, 86, 148, 72, 91, 154, 76, 97, 167, 79, 104, 177, 82, 109, 185, 84, 113, 190, 86, 113, 191, 84, 111, 188, 85, 108, 182, 83, 104, 175, 81, 102, 168, 82, 102, 169, 83, 101, 169, 81, 101, 168, 78, 98, 164, 72, 92, 157, 69, 88, 146, 131, 128, 142, + 157, 145, 126, 202, 184, 126, 217, 193, 127, 222, 201, 131, 223, 202, 131, 219, 191, 118, 192, 161, 106, 150, 100, 93, 147, 87, 95, 151, 86, 95, 153, 81, 86, 155, 80, 83, 155, 77, 73, 156, 75, 66, 157, 72, 58, 156, 69, 50, 156, 66, 41, 155, 64, 36, 154, 60, 25, 154, 59, 22, 155, 60, 24, + 155, 61, 35, 154, 66, 59, 156, 75, 80, 155, 76, 88, 155, 77, 91, 156, 79, 94, 153, 73, 86, 153, 69, 72, 154, 65, 55, 156, 65, 46, 159, 63, 41, 161, 64, 37, 161, 61, 29, 163, 62, 26, 163, 60, 21, 162, 61, 24, 157, 59, 24, 147, 52, 25, 136, 46, 34, 123, 46, 50, 111, 48, 66, + 104, 56, 88, 88, 70, 121, 71, 87, 143, 70, 106, 177, 79, 120, 200, 72, 117, 199, 46, 103, 183, 55, 117, 202, 59, 125, 212, 47, 116, 199, 15, 74, 146, 7, 48, 108, 7, 33, 88, 13, 54, 111, 6, 48, 101, 7, 36, 84, 7, 20, 59, 4, 9, 41, 7, 30, 79, 14, 85, 153, 7, 69, 131, + 6, 50, 104, 8, 27, 70, 5, 16, 56, 6, 15, 54, 6, 10, 46, 5, 8, 41, 4, 10, 49, 6, 23, 67, 10, 44, 94, 5, 30, 78, 5, 14, 58, 10, 34, 78, 10, 29, 72, 7, 17, 60, 10, 28, 72, 6, 12, 50, 10, 24, 63, 9, 21, 64, 7, 16, 59, 8, 25, 72, 14, 37, 88, + 27, 58, 110, 10, 31, 80, 17, 42, 90, 16, 42, 89, 17, 42, 90, 13, 24, 64, 6, 7, 38, 11, 23, 68, 11, 28, 72, 19, 34, 80, 12, 28, 73, 18, 42, 92, 28, 55, 106, 11, 34, 81, 17, 46, 96, 18, 44, 95, 10, 26, 70, 22, 44, 83, 3, 8, 36, 6, 9, 32, 4, 6, 36, + 8, 15, 53, 18, 48, 93, 6, 26, 73, 8, 29, 77, 9, 24, 70, 4, 5, 45, 6, 19, 61, 10, 31, 76, 5, 22, 70, 5, 15, 64, 12, 35, 84, 11, 27, 71, 13, 32, 71, 3, 3, 28, 3, 3, 29, 4, 9, 51, 5, 26, 81, 6, 33, 88, 9, 46, 99, 8, 39, 89, 9, 36, 80, + 3, 9, 48, 2, 6, 41, 4, 12, 55, 7, 28, 75, 4, 20, 73, 5, 28, 78, 3, 18, 62, 5, 11, 52, 7, 20, 58, 3, 10, 41, 3, 3, 22, 4, 7, 32, 3, 10, 44, 5, 19, 66, 5, 31, 82, 4, 16, 71, 10, 36, 88, 19, 54, 105, 3, 14, 54, 4, 10, 43, 3, 7, 34, + 4, 10, 34, 3, 2, 15, 3, 4, 16, 3, 11, 43, 3, 13, 49, 2, 10, 45, 2, 8, 39, 3, 7, 36, 4, 5, 27, 3, 6, 24, 43, 27, 60, 46, 30, 63, 48, 32, 65, 48, 36, 70, 51, 45, 80, 53, 52, 85, 57, 57, 92, 59, 59, 96, 58, 57, 94, 58, 52, 89, 57, 48, 86, + 53, 43, 80, 54, 42, 77, 52, 42, 78, 52, 44, 78, 51, 43, 76, 51, 42, 77, 50, 41, 75, 46, 40, 72, 45, 42, 71, 41, 40, 69, 38, 36, 66, 35, 34, 63, 36, 34, 62, 36, 33, 61, 40, 32, 61, 41, 30, 61, 43, 30, 62, 47, 32, 63, 50, 35, 67, 52, 36, 68, 55, 37, 69, + 59, 39, 71, 59, 37, 70, 60, 39, 70, 62, 39, 70, 63, 39, 69, 64, 39, 69, 67, 40, 68, 70, 38, 69, 72, 39, 69, 70, 38, 71, 69, 40, 74, 70, 52, 93, 68, 64, 108, 70, 75, 123, 67, 78, 136, 61, 81, 147, 58, 86, 153, 54, 88, 158, 43, 86, 157, 32, 83, 154, 26, 82, 153, + 18, 80, 150, 16, 79, 148, 15, 81, 151, 13, 82, 152, 16, 85, 157, 25, 91, 163, 29, 94, 169, 38, 99, 177, 43, 103, 182, 46, 105, 185, 53, 112, 192, 60, 117, 198, 63, 119, 200, 64, 117, 199, 63, 111, 191, 64, 107, 184, 61, 99, 171, 57, 92, 158, 56, 84, 146, 51, 76, 137, 52, 77, 137, + 59, 85, 147, 63, 91, 155, 66, 95, 160, 68, 97, 164, 72, 101, 169, 75, 103, 171, 76, 101, 173, 74, 100, 171, 73, 97, 165, 77, 101, 168, 77, 100, 166, 80, 101, 168, 81, 103, 170, 79, 99, 166, 73, 92, 157, 67, 86, 146, 77, 89, 133, 124, 119, 126, 137, 120, 107, 156, 133, 97, 166, 138, 97, + 175, 146, 102, 178, 143, 104, 155, 115, 101, 141, 91, 106, 147, 88, 105, 151, 89, 104, 151, 85, 100, 151, 81, 93, 152, 77, 86, 153, 77, 80, 156, 75, 73, 158, 72, 66, 155, 67, 58, 156, 67, 51, 154, 63, 40, 153, 61, 33, 153, 59, 30, 154, 61, 40, 153, 63, 53, 151, 67, 70, 150, 70, 82, + 151, 75, 90, 153, 77, 94, 153, 79, 95, 153, 77, 90, 154, 76, 85, 157, 73, 79, 157, 69, 66, 158, 69, 59, 158, 65, 51, 160, 65, 47, 163, 66, 46, 162, 64, 45, 161, 65, 49, 153, 62, 52, 145, 63, 68, 133, 62, 78, 122, 63, 98, 104, 70, 122, 75, 87, 142, 62, 96, 163, 59, 102, 176, + 70, 117, 197, 74, 122, 205, 58, 116, 200, 47, 114, 198, 33, 106, 186, 36, 108, 189, 16, 89, 160, 10, 92, 165, 10, 67, 125, 7, 36, 80, 5, 14, 54, 7, 32, 79, 6, 51, 107, 6, 48, 105, 7, 39, 88, 6, 55, 113, 7, 39, 89, 4, 11, 46, 5, 11, 45, 4, 19, 56, 4, 14, 47, + 4, 10, 48, 4, 13, 53, 9, 30, 76, 5, 15, 59, 4, 9, 50, 4, 10, 49, 5, 11, 53, 7, 21, 63, 5, 12, 52, 7, 14, 54, 7, 17, 58, 12, 26, 66, 12, 22, 58, 5, 15, 55, 15, 38, 79, 19, 42, 88, 6, 25, 76, 12, 33, 81, 13, 29, 76, 17, 37, 82, 9, 23, 71, + 14, 36, 86, 17, 39, 80, 10, 15, 54, 9, 19, 58, 13, 29, 77, 10, 22, 69, 14, 31, 77, 23, 58, 107, 15, 35, 80, 5, 18, 66, 9, 31, 82, 13, 30, 77, 10, 22, 64, 4, 14, 52, 8, 13, 43, 3, 4, 28, 6, 12, 41, 12, 22, 59, 10, 23, 68, 5, 22, 71, 15, 46, 96, + 13, 45, 95, 8, 23, 67, 10, 16, 56, 7, 22, 70, 5, 21, 71, 7, 19, 67, 9, 25, 76, 22, 59, 106, 8, 26, 69, 8, 21, 55, 4, 7, 40, 5, 22, 65, 10, 54, 109, 10, 45, 99, 13, 58, 111, 8, 48, 98, 6, 27, 73, 4, 12, 54, 4, 5, 44, 6, 21, 70, 5, 26, 76, + 6, 28, 79, 8, 35, 84, 4, 22, 65, 5, 13, 53, 5, 17, 53, 11, 24, 57, 3, 4, 23, 2, 0, 19, 3, 7, 38, 5, 28, 76, 8, 36, 88, 9, 33, 84, 5, 23, 75, 5, 27, 76, 5, 17, 57, 4, 12, 47, 4, 5, 32, 2, 6, 26, 3, 6, 25, 2, 5, 23, 6, 19, 52, + 6, 22, 60, 4, 15, 52, 3, 14, 50, 3, 7, 37, 1, 4, 26, 3, 5, 25, 53, 29, 63, 54, 32, 65, 57, 35, 69, 60, 42, 80, 60, 54, 94, 63, 63, 103, 65, 68, 110, 68, 71, 116, 68, 72, 115, 70, 69, 111, 67, 61, 101, 68, 55, 95, 67, 52, 90, 64, 51, 87, 65, 51, 89, + 67, 50, 90, 63, 45, 86, 61, 43, 79, 58, 43, 76, 54, 42, 74, 51, 41, 73, 46, 39, 68, 45, 37, 67, 44, 36, 66, 45, 33, 65, 48, 32, 64, 50, 30, 63, 52, 32, 64, 54, 34, 66, 56, 35, 68, 59, 37, 69, 60, 37, 68, 62, 38, 68, 64, 37, 67, 64, 37, 66, 64, 36, 63, + 65, 36, 62, 64, 35, 60, 68, 36, 60, 66, 34, 57, 72, 36, 60, 71, 35, 63, 73, 38, 71, 73, 52, 91, 70, 64, 107, 70, 71, 119, 68, 75, 133, 64, 82, 149, 61, 86, 156, 55, 88, 162, 48, 89, 164, 34, 87, 159, 28, 87, 158, 13, 82, 153, 5, 79, 148, 8, 82, 151, 10, 83, 153, + 13, 86, 158, 15, 88, 160, 24, 93, 169, 32, 99, 177, 39, 103, 181, 44, 106, 186, 49, 111, 190, 57, 115, 194, 58, 114, 195, 59, 113, 193, 59, 108, 187, 58, 102, 176, 55, 94, 162, 50, 83, 147, 44, 74, 137, 39, 70, 131, 43, 73, 134, 48, 79, 141, 51, 85, 149, 54, 89, 153, 58, 92, 156, + 63, 94, 162, 65, 96, 165, 66, 96, 164, 65, 94, 163, 68, 95, 164, 71, 98, 163, 72, 98, 163, 78, 100, 167, 76, 99, 166, 76, 98, 164, 70, 92, 155, 65, 84, 144, 56, 74, 130, 59, 73, 113, 83, 84, 103, 95, 88, 99, 105, 91, 100, 116, 96, 108, 126, 99, 113, 134, 96, 120, 137, 89, 122, + 149, 93, 123, 154, 94, 124, 154, 90, 114, 152, 85, 105, 152, 83, 103, 155, 86, 104, 153, 82, 97, 154, 78, 89, 153, 73, 76, 152, 68, 68, 152, 65, 57, 154, 64, 49, 153, 61, 42, 152, 63, 46, 149, 61, 56, 149, 67, 73, 147, 69, 84, 152, 79, 95, 153, 81, 102, 154, 84, 108, 156, 87, 115, + 154, 87, 114, 155, 85, 110, 154, 82, 103, 154, 77, 92, 154, 74, 85, 155, 75, 84, 159, 75, 84, 160, 73, 83, 157, 75, 88, 156, 77, 95, 150, 78, 102, 140, 78, 115, 121, 73, 133, 93, 85, 144, 70, 96, 163, 60, 105, 178, 62, 112, 189, 71, 121, 201, 65, 121, 202, 64, 127, 212, 49, 120, 204, + 9, 78, 151, 9, 75, 144, 17, 86, 156, 17, 91, 161, 15, 86, 157, 10, 77, 142, 7, 68, 133, 17, 96, 167, 10, 84, 153, 7, 65, 127, 7, 26, 71, 5, 11, 53, 8, 26, 65, 2, 3, 36, 3, 3, 32, 5, 8, 39, 5, 10, 46, 4, 23, 66, 5, 30, 73, 12, 38, 82, 5, 14, 54, + 4, 14, 55, 9, 26, 69, 4, 13, 50, 8, 24, 60, 5, 13, 46, 5, 13, 47, 13, 26, 60, 13, 23, 57, 6, 10, 39, 14, 27, 62, 8, 18, 57, 8, 32, 78, 9, 26, 74, 4, 11, 56, 8, 21, 62, 6, 10, 49, 11, 28, 76, 21, 62, 116, 15, 28, 75, 8, 17, 63, 27, 52, 100, + 17, 34, 81, 6, 15, 64, 7, 21, 71, 7, 21, 68, 7, 19, 64, 7, 22, 66, 14, 39, 84, 11, 30, 74, 12, 25, 65, 14, 32, 73, 18, 35, 69, 2, 1, 24, 3, 8, 35, 13, 29, 69, 12, 33, 78, 7, 23, 74, 7, 28, 81, 12, 36, 86, 10, 28, 71, 6, 13, 56, 9, 39, 91, + 10, 46, 99, 14, 48, 101, 7, 22, 76, 13, 42, 92, 13, 33, 76, 12, 26, 61, 4, 10, 43, 3, 16, 56, 7, 45, 101, 12, 58, 114, 9, 54, 108, 5, 33, 86, 4, 16, 65, 4, 11, 59, 3, 13, 63, 5, 36, 85, 7, 36, 88, 5, 29, 80, 7, 30, 76, 5, 12, 57, 5, 10, 49, + 7, 18, 56, 16, 31, 65, 1, 1, 15, 2, 2, 22, 4, 10, 40, 9, 37, 86, 3, 22, 73, 3, 20, 72, 4, 20, 71, 11, 41, 88, 7, 24, 65, 9, 27, 66, 5, 13, 43, 2, 3, 26, 3, 8, 27, 2, 5, 20, 7, 22, 56, 4, 18, 58, 4, 13, 52, 3, 15, 52, 3, 6, 38, + 2, 4, 29, 3, 4, 28, 55, 26, 58, 57, 29, 63, 61, 34, 68, 65, 44, 86, 66, 60, 101, 68, 69, 113, 72, 77, 124, 74, 81, 130, 75, 82, 133, 73, 76, 124, 73, 71, 115, 75, 69, 112, 75, 65, 108, 77, 63, 107, 79, 60, 105, 75, 54, 98, 71, 47, 91, 69, 42, 81, 64, 38, 73, + 59, 37, 71, 55, 35, 67, 52, 34, 66, 51, 34, 65, 51, 30, 63, 53, 30, 65, 56, 32, 64, 57, 30, 62, 58, 30, 62, 60, 33, 64, 63, 37, 68, 61, 36, 65, 62, 37, 66, 63, 35, 63, 65, 35, 60, 63, 34, 58, 64, 34, 54, 64, 35, 55, 65, 34, 52, 66, 34, 50, 67, 33, 49, + 70, 34, 51, 72, 34, 55, 75, 37, 65, 75, 45, 86, 71, 55, 104, 72, 66, 116, 70, 73, 129, 66, 81, 147, 62, 87, 155, 58, 90, 162, 49, 90, 163, 35, 89, 159, 27, 88, 158, 12, 82, 154, 3, 78, 150, 5, 81, 150, 5, 82, 151, 6, 84, 156, 12, 89, 161, 22, 95, 169, 32, 101, 178, + 38, 105, 183, 40, 106, 184, 45, 110, 188, 52, 112, 190, 57, 113, 194, 57, 112, 191, 56, 106, 184, 52, 97, 169, 51, 91, 158, 44, 80, 143, 35, 70, 131, 30, 66, 129, 36, 71, 133, 41, 77, 139, 42, 80, 144, 48, 86, 149, 50, 87, 153, 53, 90, 156, 56, 90, 159, 58, 93, 161, 59, 93, 159, + 64, 95, 160, 67, 95, 161, 69, 95, 161, 73, 98, 163, 75, 97, 163, 72, 94, 159, 69, 90, 154, 64, 83, 142, 55, 73, 129, 45, 62, 111, 41, 57, 99, 58, 67, 99, 77, 75, 107, 96, 84, 118, 105, 89, 129, 114, 89, 138, 130, 91, 145, 140, 96, 155, 147, 96, 157, 151, 93, 145, 153, 91, 132, + 155, 91, 127, 157, 91, 122, 157, 90, 116, 156, 87, 112, 153, 80, 98, 151, 75, 90, 151, 72, 81, 149, 66, 68, 150, 65, 61, 147, 61, 58, 146, 64, 66, 146, 67, 79, 147, 73, 89, 151, 81, 102, 151, 84, 112, 151, 85, 123, 153, 90, 134, 152, 88, 133, 152, 89, 132, 152, 87, 126, 150, 86, 117, + 153, 85, 113, 153, 83, 107, 157, 84, 107, 160, 87, 110, 160, 86, 108, 157, 87, 116, 154, 90, 133, 136, 89, 150, 111, 87, 151, 89, 95, 157, 69, 101, 172, 59, 109, 186, 58, 114, 195, 60, 116, 196, 71, 132, 214, 69, 138, 224, 48, 125, 210, 31, 110, 189, 40, 127, 207, 50, 144, 225, 29, 123, 202, + 13, 101, 175, 13, 101, 176, 8, 83, 156, 20, 91, 160, 4, 26, 78, 7, 13, 60, 4, 11, 55, 6, 19, 59, 3, 8, 48, 5, 16, 58, 5, 9, 45, 6, 21, 62, 4, 18, 61, 7, 29, 74, 4, 12, 52, 5, 8, 43, 5, 12, 53, 8, 30, 75, 9, 24, 65, 6, 11, 48, 8, 14, 46, + 2, 2, 27, 3, 3, 25, 2, 4, 27, 5, 8, 31, 6, 9, 38, 7, 13, 50, 8, 15, 53, 6, 12, 55, 9, 29, 76, 6, 13, 59, 12, 24, 70, 11, 29, 77, 27, 59, 111, 21, 53, 105, 15, 41, 94, 11, 27, 80, 21, 48, 103, 18, 47, 99, 16, 38, 90, 10, 25, 74, 14, 29, 72, + 5, 13, 56, 6, 16, 61, 9, 26, 71, 11, 28, 71, 3, 12, 52, 3, 12, 52, 5, 12, 46, 4, 6, 35, 5, 9, 38, 16, 33, 70, 8, 17, 58, 8, 27, 78, 16, 55, 110, 8, 27, 76, 9, 26, 69, 6, 22, 69, 21, 67, 123, 14, 52, 108, 15, 55, 111, 7, 25, 80, 9, 32, 85, + 12, 29, 77, 8, 15, 49, 3, 4, 31, 4, 12, 45, 9, 50, 104, 11, 53, 108, 11, 46, 101, 4, 24, 79, 4, 21, 73, 4, 20, 71, 4, 26, 77, 8, 40, 91, 9, 44, 97, 8, 31, 83, 5, 15, 63, 12, 33, 77, 9, 22, 62, 13, 25, 60, 8, 22, 54, 2, 0, 17, 3, 3, 19, + 4, 10, 40, 5, 27, 73, 4, 22, 70, 6, 25, 73, 3, 17, 62, 6, 23, 66, 3, 11, 54, 4, 19, 58, 6, 22, 53, 2, 4, 27, 3, 9, 27, 2, 4, 17, 5, 18, 52, 4, 22, 63, 3, 10, 47, 4, 13, 49, 3, 11, 43, 2, 7, 37, 2, 8, 35, 57, 25, 51, 59, 26, 55, + 65, 31, 67, 69, 48, 91, 70, 67, 110, 73, 77, 126, 74, 85, 137, 79, 93, 146, 77, 89, 143, 76, 86, 137, 80, 84, 133, 80, 82, 128, 82, 78, 124, 84, 75, 122, 81, 66, 114, 79, 58, 103, 77, 50, 94, 75, 42, 83, 70, 34, 69, 63, 31, 64, 58, 29, 60, 55, 28, 61, 52, 27, 60, + 56, 26, 59, 58, 28, 60, 59, 28, 56, 59, 27, 55, 60, 29, 56, 62, 30, 59, 63, 30, 62, 63, 31, 61, 64, 33, 61, 64, 34, 60, 63, 34, 57, 64, 34, 53, 66, 33, 50, 66, 34, 49, 64, 32, 47, 64, 32, 46, 65, 31, 46, 67, 32, 47, 69, 31, 48, 71, 33, 57, 73, 38, 76, + 71, 46, 94, 73, 57, 107, 71, 65, 117, 65, 75, 136, 59, 83, 148, 53, 84, 152, 41, 83, 152, 30, 83, 154, 22, 85, 154, 12, 83, 154, 7, 82, 152, 3, 77, 149, 3, 78, 149, 4, 82, 153, 10, 87, 159, 20, 94, 168, 30, 99, 176, 38, 105, 183, 40, 106, 184, 45, 110, 188, 51, 111, 190, + 54, 111, 191, 54, 109, 188, 53, 103, 180, 49, 94, 167, 48, 88, 154, 39, 79, 141, 32, 69, 130, 28, 66, 127, 30, 69, 131, 30, 72, 134, 35, 78, 141, 37, 81, 144, 44, 86, 151, 46, 86, 153, 49, 88, 156, 51, 89, 155, 54, 90, 155, 58, 90, 157, 63, 93, 158, 68, 94, 160, 68, 94, 158, + 69, 94, 158, 67, 89, 152, 66, 86, 148, 58, 78, 136, 50, 70, 126, 41, 61, 111, 34, 53, 101, 37, 54, 100, 55, 65, 110, 76, 77, 122, 90, 85, 135, 105, 89, 145, 116, 93, 155, 129, 100, 168, 135, 98, 172, 140, 95, 167, 143, 93, 160, 147, 91, 152, 149, 92, 147, 153, 91, 140, 154, 89, 127, + 154, 86, 113, 152, 81, 103, 149, 78, 95, 147, 71, 85, 145, 67, 75, 142, 63, 69, 142, 67, 76, 143, 71, 85, 146, 77, 95, 149, 82, 110, 147, 85, 127, 145, 87, 141, 141, 85, 145, 143, 87, 150, 143, 88, 149, 143, 87, 145, 144, 86, 136, 146, 86, 133, 151, 87, 129, 153, 86, 125, 156, 89, 125, + 156, 89, 126, 152, 89, 134, 144, 88, 146, 130, 93, 158, 105, 100, 159, 87, 102, 168, 73, 108, 182, 64, 116, 196, 58, 115, 197, 49, 112, 193, 66, 131, 217, 66, 137, 227, 59, 136, 225, 49, 130, 212, 37, 117, 191, 13, 74, 142, 5, 77, 147, 10, 76, 145, 12, 55, 113, 6, 23, 80, 4, 14, 64, + 5, 14, 61, 11, 24, 68, 6, 19, 61, 6, 21, 65, 6, 22, 66, 6, 19, 64, 7, 27, 76, 8, 41, 89, 10, 33, 78, 6, 17, 56, 5, 14, 58, 11, 32, 77, 8, 26, 68, 10, 41, 88, 14, 44, 90, 6, 17, 54, 7, 11, 38, 4, 8, 34, 4, 6, 31, 8, 17, 48, 3, 5, 24, + 7, 12, 40, 11, 21, 57, 10, 20, 59, 6, 16, 58, 20, 47, 93, 15, 35, 83, 14, 40, 87, 11, 32, 77, 15, 37, 84, 9, 30, 80, 16, 43, 96, 26, 61, 115, 24, 52, 108, 23, 57, 112, 17, 44, 97, 20, 46, 94, 13, 31, 78, 11, 27, 74, 8, 24, 67, 7, 14, 55, 8, 19, 58, + 6, 12, 51, 9, 27, 71, 10, 23, 61, 5, 12, 48, 6, 13, 48, 7, 15, 56, 7, 18, 62, 9, 40, 94, 18, 58, 114, 12, 39, 90, 3, 6, 47, 7, 19, 68, 13, 62, 117, 14, 56, 111, 17, 59, 118, 9, 34, 92, 18, 52, 105, 14, 43, 91, 5, 9, 46, 7, 9, 41, 4, 8, 41, + 6, 26, 76, 8, 52, 108, 6, 43, 99, 8, 51, 106, 5, 34, 89, 5, 23, 79, 9, 39, 90, 12, 42, 94, 6, 34, 85, 6, 28, 78, 5, 14, 64, 6, 24, 71, 5, 17, 56, 2, 3, 33, 3, 6, 38, 3, 3, 19, 2, 4, 21, 5, 16, 48, 5, 22, 63, 5, 21, 62, 8, 30, 71, + 4, 13, 54, 4, 9, 51, 3, 16, 60, 5, 20, 61, 3, 15, 48, 4, 5, 30, 5, 9, 27, 3, 6, 19, 9, 30, 65, 7, 30, 71, 2, 13, 50, 3, 11, 47, 3, 9, 45, 2, 7, 39, 3, 6, 33, 57, 23, 44, 61, 26, 51, 69, 36, 73, 71, 55, 98, 73, 73, 117, 77, 84, 136, + 80, 93, 152, 84, 100, 159, 82, 97, 157, 83, 96, 154, 82, 92, 147, 84, 90, 141, 86, 89, 139, 86, 83, 133, 83, 75, 122, 81, 63, 111, 79, 51, 95, 76, 40, 80, 69, 31, 58, 62, 25, 50, 59, 25, 50, 56, 23, 50, 53, 21, 48, 58, 23, 50, 60, 25, 49, 60, 23, 46, 61, 24, 45, + 60, 25, 46, 59, 26, 47, 60, 27, 53, 60, 29, 56, 66, 34, 59, 64, 33, 58, 64, 33, 57, 64, 34, 51, 65, 31, 47, 65, 31, 46, 66, 31, 46, 63, 30, 44, 61, 31, 46, 62, 30, 45, 65, 30, 49, 68, 32, 58, 74, 39, 76, 71, 41, 88, 72, 46, 96, 72, 55, 104, 67, 65, 115, + 58, 71, 128, 48, 70, 129, 39, 76, 140, 29, 79, 146, 19, 84, 152, 11, 83, 154, 6, 80, 152, 4, 79, 149, 1, 76, 148, 3, 79, 152, 9, 85, 158, 19, 92, 166, 31, 99, 175, 36, 103, 180, 38, 105, 183, 40, 106, 184, 45, 107, 185, 51, 107, 187, 49, 104, 183, 47, 98, 175, 44, 91, 163, + 40, 83, 148, 33, 73, 136, 28, 66, 128, 22, 62, 125, 25, 67, 129, 28, 72, 134, 30, 74, 138, 36, 80, 145, 38, 83, 148, 40, 83, 151, 42, 85, 151, 45, 85, 152, 50, 87, 151, 55, 89, 154, 59, 89, 154, 64, 90, 156, 66, 92, 156, 67, 91, 153, 67, 88, 149, 61, 81, 140, 55, 75, 133, + 46, 66, 120, 39, 60, 111, 33, 53, 102, 33, 52, 99, 47, 62, 111, 69, 74, 125, 86, 84, 136, 97, 90, 147, 110, 96, 160, 120, 100, 171, 127, 101, 175, 130, 98, 172, 131, 93, 164, 134, 92, 162, 138, 90, 158, 141, 90, 157, 146, 91, 150, 148, 87, 137, 149, 83, 123, 147, 79, 107, 145, 77, 97, + 140, 70, 86, 137, 66, 80, 140, 68, 84, 144, 73, 89, 145, 76, 101, 145, 81, 117, 143, 83, 135, 139, 86, 147, 132, 84, 149, 132, 87, 152, 133, 88, 154, 130, 83, 148, 130, 83, 144, 133, 84, 144, 137, 83, 143, 141, 84, 142, 143, 85, 141, 146, 88, 142, 141, 85, 145, 132, 87, 151, 119, 95, 157, + 105, 104, 163, 86, 104, 172, 74, 110, 185, 67, 118, 198, 67, 125, 208, 64, 126, 210, 78, 146, 232, 53, 123, 208, 28, 101, 180, 5, 74, 150, 11, 76, 147, 16, 81, 152, 6, 61, 129, 5, 31, 89, 3, 17, 72, 5, 27, 80, 7, 15, 63, 9, 20, 65, 3, 8, 51, 6, 14, 59, 5, 22, 69, + 7, 30, 80, 9, 42, 99, 9, 36, 87, 10, 28, 75, 4, 15, 62, 7, 24, 68, 7, 22, 64, 7, 32, 74, 9, 25, 63, 13, 26, 64, 12, 27, 69, 9, 25, 63, 6, 13, 47, 12, 32, 70, 5, 7, 35, 11, 23, 59, 9, 19, 55, 5, 11, 47, 3, 5, 43, 3, 16, 57, 7, 25, 71, + 14, 41, 89, 15, 43, 91, 9, 33, 80, 7, 19, 67, 7, 24, 78, 11, 27, 79, 15, 43, 95, 15, 34, 84, 13, 38, 90, 11, 44, 102, 10, 43, 102, 9, 23, 77, 9, 23, 72, 10, 31, 82, 23, 60, 111, 10, 24, 69, 7, 15, 57, 6, 17, 62, 18, 47, 91, 13, 29, 69, 11, 27, 69, + 17, 45, 91, 16, 37, 82, 12, 28, 75, 10, 33, 88, 12, 38, 94, 13, 33, 84, 4, 6, 46, 6, 21, 72, 13, 54, 110, 10, 51, 110, 11, 53, 109, 7, 27, 84, 17, 55, 108, 21, 65, 116, 6, 10, 50, 3, 6, 38, 5, 6, 40, 6, 26, 72, 6, 36, 94, 7, 45, 104, 5, 50, 106, + 8, 45, 102, 6, 37, 91, 7, 32, 84, 4, 20, 71, 6, 12, 63, 5, 23, 73, 4, 16, 64, 6, 20, 66, 10, 22, 61, 5, 8, 39, 8, 15, 44, 5, 8, 27, 2, 3, 17, 5, 12, 41, 3, 10, 46, 2, 3, 36, 3, 5, 37, 3, 6, 41, 4, 17, 56, 4, 19, 63, 4, 25, 67, + 2, 6, 37, 3, 4, 23, 1, 1, 11, 4, 5, 19, 6, 16, 47, 2, 12, 46, 3, 13, 49, 2, 13, 50, 4, 20, 57, 3, 13, 45, 3, 0, 23, 50, 18, 38, 59, 25, 51, 70, 43, 83, 72, 61, 104, 75, 76, 121, 79, 89, 142, 83, 101, 162, 86, 105, 170, 86, 104, 169, 85, 103, 165, + 86, 99, 159, 88, 98, 156, 88, 96, 151, 88, 89, 142, 82, 77, 127, 79, 65, 113, 76, 50, 96, 73, 37, 76, 66, 29, 50, 58, 21, 38, 57, 22, 38, 58, 20, 39, 56, 20, 40, 60, 23, 41, 59, 21, 40, 59, 22, 37, 57, 20, 36, 58, 21, 36, 57, 22, 41, 56, 24, 47, 59, 29, 53, + 60, 30, 55, 62, 31, 56, 66, 32, 54, 65, 32, 48, 67, 32, 48, 64, 29, 45, 62, 30, 44, 59, 28, 43, 57, 29, 47, 58, 27, 49, 60, 27, 55, 62, 27, 63, 66, 34, 73, 70, 40, 84, 72, 44, 91, 71, 45, 95, 68, 53, 99, 59, 60, 106, 51, 62, 114, 37, 66, 126, 27, 75, 139, + 19, 81, 149, 9, 80, 152, 7, 81, 153, 7, 82, 153, 4, 79, 151, 4, 78, 152, 11, 86, 158, 19, 91, 165, 28, 96, 172, 33, 101, 178, 34, 102, 180, 38, 104, 181, 41, 106, 184, 43, 104, 182, 46, 103, 180, 43, 97, 171, 39, 90, 159, 38, 82, 147, 31, 73, 136, 26, 65, 126, 23, 63, 124, + 22, 66, 126, 25, 70, 132, 27, 75, 138, 31, 78, 143, 33, 79, 145, 35, 79, 146, 38, 81, 146, 42, 81, 146, 48, 83, 148, 53, 85, 150, 60, 88, 153, 62, 89, 153, 66, 90, 153, 68, 88, 150, 63, 81, 141, 57, 76, 133, 49, 69, 123, 41, 62, 115, 33, 53, 104, 27, 49, 98, 28, 49, 97, + 37, 56, 106, 55, 66, 120, 76, 79, 135, 88, 87, 146, 99, 92, 156, 105, 95, 164, 114, 98, 170, 117, 95, 168, 118, 94, 166, 120, 92, 163, 124, 92, 163, 128, 90, 160, 131, 87, 156, 134, 83, 151, 137, 80, 140, 139, 76, 122, 140, 76, 106, 138, 74, 92, 134, 67, 83, 135, 67, 82, 137, 69, 88, + 140, 74, 99, 139, 80, 117, 137, 82, 136, 128, 80, 143, 124, 81, 148, 118, 82, 147, 119, 85, 149, 115, 82, 146, 113, 81, 141, 116, 81, 142, 120, 79, 141, 123, 79, 142, 126, 80, 144, 130, 83, 146, 125, 81, 145, 118, 86, 147, 110, 95, 153, 96, 99, 158, 83, 103, 170, 67, 102, 174, 62, 110, 187, + 65, 121, 205, 65, 124, 209, 66, 128, 214, 38, 103, 181, 19, 83, 157, 16, 60, 126, 13, 56, 120, 6, 53, 116, 7, 40, 98, 6, 27, 83, 4, 13, 66, 13, 39, 91, 4, 10, 57, 5, 15, 64, 5, 31, 81, 6, 30, 82, 7, 29, 82, 12, 57, 113, 11, 58, 116, 7, 32, 80, 10, 22, 63, + 6, 20, 63, 8, 31, 75, 5, 8, 44, 3, 6, 40, 8, 13, 47, 8, 15, 51, 6, 10, 50, 5, 11, 52, 5, 16, 59, 7, 23, 68, 6, 17, 56, 10, 31, 77, 15, 38, 81, 11, 28, 73, 6, 14, 60, 7, 25, 72, 12, 28, 75, 4, 15, 66, 7, 21, 73, 7, 21, 70, 8, 22, 71, + 19, 52, 105, 21, 51, 103, 13, 36, 84, 6, 13, 58, 9, 17, 64, 16, 47, 107, 12, 44, 104, 17, 44, 101, 7, 16, 69, 10, 32, 87, 7, 26, 76, 8, 12, 55, 12, 23, 66, 10, 23, 70, 11, 35, 81, 8, 20, 65, 6, 10, 47, 10, 26, 69, 15, 36, 83, 7, 15, 60, 7, 37, 91, + 17, 62, 120, 18, 51, 107, 11, 25, 76, 7, 30, 83, 12, 59, 119, 15, 68, 125, 11, 48, 106, 6, 42, 101, 9, 37, 94, 8, 45, 99, 9, 26, 68, 5, 7, 37, 7, 17, 54, 6, 27, 76, 8, 50, 107, 6, 41, 101, 7, 49, 105, 11, 57, 111, 8, 41, 95, 7, 41, 94, 7, 25, 77, + 9, 35, 86, 5, 15, 66, 9, 32, 77, 5, 16, 58, 9, 26, 65, 7, 19, 56, 3, 11, 40, 3, 5, 29, 2, 2, 17, 5, 10, 37, 3, 8, 43, 5, 9, 39, 6, 13, 36, 3, 5, 32, 4, 19, 60, 3, 17, 60, 4, 11, 53, 4, 19, 56, 3, 8, 37, 2, 5, 18, 1, 3, 14, + 3, 8, 35, 3, 7, 38, 3, 9, 45, 2, 11, 48, 4, 16, 54, 3, 9, 44, 2, 4, 35, 47, 17, 43, 59, 27, 57, 68, 43, 84, 70, 59, 105, 79, 78, 127, 82, 91, 147, 83, 100, 162, 84, 102, 166, 84, 104, 169, 87, 105, 168, 88, 104, 166, 90, 102, 162, 89, 98, 158, 88, 92, 147, + 81, 81, 132, 76, 65, 113, 72, 47, 94, 68, 34, 73, 61, 25, 43, 53, 18, 33, 51, 15, 30, 52, 15, 32, 53, 18, 34, 55, 18, 34, 54, 18, 32, 52, 15, 28, 51, 15, 28, 49, 15, 28, 49, 17, 33, 51, 21, 41, 53, 23, 48, 57, 26, 52, 63, 31, 55, 64, 32, 56, 66, 32, 52, + 64, 31, 48, 62, 28, 44, 58, 28, 44, 57, 29, 48, 54, 26, 51, 54, 25, 57, 56, 30, 64, 56, 33, 69, 61, 37, 76, 66, 40, 85, 69, 44, 88, 70, 45, 89, 66, 46, 91, 58, 50, 91, 52, 58, 101, 40, 66, 121, 27, 75, 136, 22, 81, 148, 14, 82, 152, 10, 83, 155, 7, 83, 154, + 5, 80, 153, 6, 81, 153, 12, 87, 159, 19, 90, 163, 26, 96, 169, 31, 100, 176, 31, 101, 178, 36, 104, 181, 37, 104, 181, 41, 104, 181, 42, 101, 177, 39, 96, 169, 33, 86, 154, 34, 79, 142, 28, 71, 133, 25, 64, 123, 21, 60, 121, 22, 64, 125, 26, 70, 132, 27, 74, 137, 32, 77, 141, + 29, 74, 140, 30, 74, 140, 34, 75, 139, 36, 75, 141, 40, 78, 142, 46, 79, 144, 53, 81, 145, 59, 86, 150, 65, 88, 148, 60, 81, 141, 57, 76, 133, 53, 70, 125, 44, 63, 114, 36, 54, 103, 30, 47, 95, 24, 42, 89, 23, 42, 90, 30, 49, 98, 44, 59, 113, 57, 68, 126, 71, 77, 137, + 82, 84, 145, 88, 88, 150, 95, 91, 155, 101, 91, 158, 103, 91, 159, 102, 90, 156, 109, 93, 161, 114, 93, 161, 115, 87, 157, 120, 83, 153, 123, 77, 145, 126, 72, 133, 128, 71, 113, 127, 65, 95, 128, 64, 85, 130, 65, 84, 132, 66, 86, 135, 70, 94, 137, 75, 112, 132, 77, 127, 126, 76, 138, + 118, 76, 141, 110, 76, 140, 105, 77, 141, 100, 76, 137, 96, 74, 132, 98, 75, 134, 99, 73, 132, 102, 72, 133, 109, 74, 136, 108, 73, 136, 109, 78, 139, 102, 82, 138, 93, 87, 140, 83, 89, 145, 73, 92, 156, 67, 99, 168, 61, 102, 174, 55, 101, 175, 59, 111, 188, 33, 78, 148, 9, 54, 118, + 6, 20, 75, 6, 23, 78, 6, 31, 88, 6, 32, 89, 5, 29, 86, 7, 32, 88, 6, 30, 84, 10, 50, 107, 6, 33, 88, 7, 51, 110, 10, 69, 127, 6, 55, 111, 8, 45, 96, 6, 39, 91, 6, 21, 69, 5, 13, 56, 7, 22, 63, 9, 19, 61, 5, 11, 49, 7, 15, 50, 5, 12, 48, + 3, 10, 47, 3, 16, 59, 6, 28, 76, 10, 53, 105, 14, 47, 98, 13, 54, 108, 9, 57, 110, 9, 35, 81, 6, 14, 58, 7, 33, 81, 7, 25, 76, 10, 38, 92, 5, 20, 71, 11, 40, 94, 9, 25, 77, 7, 20, 71, 7, 17, 67, 12, 36, 89, 9, 26, 77, 13, 36, 86, 5, 10, 53, + 8, 23, 74, 32, 76, 134, 14, 52, 112, 11, 41, 100, 13, 32, 88, 9, 31, 85, 11, 38, 91, 9, 28, 76, 4, 11, 57, 8, 22, 70, 17, 45, 94, 20, 50, 95, 13, 25, 64, 13, 27, 69, 8, 18, 65, 9, 23, 72, 7, 32, 89, 16, 64, 120, 6, 27, 82, 6, 20, 73, 7, 21, 74, + 8, 42, 99, 12, 57, 118, 22, 72, 129, 15, 74, 132, 11, 58, 119, 10, 53, 110, 10, 31, 71, 7, 11, 42, 3, 5, 33, 7, 24, 69, 8, 45, 107, 7, 52, 112, 3, 21, 81, 6, 40, 98, 14, 59, 111, 5, 28, 84, 6, 27, 81, 5, 34, 87, 7, 33, 85, 7, 28, 74, 3, 8, 47, + 3, 5, 37, 4, 7, 41, 7, 22, 55, 2, 5, 28, 3, 2, 15, 2, 4, 24, 4, 8, 38, 3, 5, 29, 4, 6, 25, 5, 10, 33, 7, 28, 68, 3, 22, 64, 4, 14, 53, 5, 20, 57, 6, 19, 48, 2, 2, 15, 3, 6, 23, 5, 16, 44, 6, 19, 51, 3, 6, 37, 3, 9, 41, + 2, 15, 49, 3, 17, 54, 4, 15, 48, 43, 16, 48, 54, 28, 62, 61, 39, 83, 69, 58, 107, 76, 76, 127, 81, 91, 149, 80, 98, 160, 81, 99, 162, 80, 100, 163, 80, 100, 164, 83, 100, 162, 87, 100, 160, 87, 98, 157, 87, 91, 148, 78, 82, 131, 73, 65, 114, 67, 45, 91, 59, 27, 64, + 47, 14, 32, 42, 9, 24, 45, 11, 25, 45, 11, 25, 47, 11, 27, 48, 12, 28, 47, 11, 25, 47, 10, 23, 46, 10, 23, 46, 11, 24, 45, 14, 29, 49, 18, 38, 50, 20, 44, 53, 22, 48, 57, 26, 50, 59, 28, 52, 60, 30, 50, 56, 27, 46, 56, 27, 45, 53, 24, 48, 53, 25, 51, + 49, 24, 57, 47, 28, 61, 47, 32, 68, 49, 37, 75, 52, 41, 81, 56, 40, 83, 62, 42, 87, 64, 41, 86, 59, 40, 83, 55, 42, 84, 51, 52, 90, 40, 62, 113, 27, 73, 133, 23, 80, 145, 16, 83, 153, 13, 84, 155, 9, 84, 156, 8, 83, 156, 5, 81, 153, 8, 83, 156, 17, 91, 162, + 22, 94, 166, 28, 99, 172, 31, 101, 177, 33, 102, 180, 34, 102, 179, 36, 103, 179, 34, 98, 174, 34, 93, 167, 31, 86, 154, 32, 78, 140, 28, 70, 129, 24, 61, 120, 22, 60, 119, 23, 62, 122, 23, 66, 127, 26, 70, 133, 28, 72, 135, 26, 70, 135, 26, 69, 134, 31, 72, 135, 33, 71, 136, + 35, 71, 135, 39, 72, 136, 46, 75, 139, 52, 80, 142, 53, 79, 140, 59, 79, 137, 53, 72, 128, 48, 64, 114, 37, 52, 101, 32, 47, 94, 25, 41, 86, 20, 37, 80, 19, 36, 82, 28, 46, 93, 36, 52, 103, 48, 61, 118, 57, 69, 128, 65, 74, 136, 75, 78, 143, 80, 83, 147, 86, 86, 149, + 89, 88, 151, 92, 89, 152, 99, 93, 156, 101, 91, 156, 104, 89, 155, 106, 80, 149, 107, 75, 142, 103, 64, 130, 108, 60, 117, 113, 58, 101, 119, 61, 87, 121, 58, 79, 126, 62, 82, 128, 64, 83, 129, 66, 92, 127, 68, 102, 121, 67, 114, 112, 66, 124, 103, 66, 126, 90, 63, 122, 86, 66, 121, + 75, 61, 115, 71, 59, 110, 77, 61, 113, 84, 64, 119, 91, 67, 123, 90, 65, 122, 89, 68, 125, 86, 74, 127, 80, 80, 133, 70, 80, 137, 57, 78, 140, 53, 82, 147, 46, 84, 151, 37, 80, 146, 8, 43, 103, 8, 36, 94, 13, 47, 110, 8, 46, 106, 13, 64, 125, 7, 43, 102, 8, 47, 107, + 7, 58, 118, 5, 41, 100, 14, 64, 124, 11, 67, 129, 9, 45, 102, 9, 56, 114, 7, 40, 91, 5, 35, 84, 11, 32, 80, 5, 14, 59, 7, 19, 61, 6, 17, 56, 4, 12, 52, 5, 10, 49, 8, 19, 57, 4, 12, 51, 6, 26, 68, 9, 32, 78, 7, 34, 84, 11, 49, 104, 14, 75, 137, + 7, 36, 89, 8, 45, 97, 7, 27, 72, 5, 12, 50, 5, 14, 57, 5, 21, 70, 9, 30, 83, 13, 49, 104, 14, 53, 108, 11, 46, 100, 15, 48, 103, 8, 29, 83, 6, 28, 83, 8, 34, 89, 11, 35, 90, 5, 15, 72, 9, 29, 82, 11, 33, 88, 14, 43, 104, 10, 31, 93, 17, 42, 101, + 23, 59, 114, 11, 31, 86, 11, 37, 90, 18, 62, 119, 18, 59, 116, 12, 33, 81, 14, 27, 70, 13, 26, 70, 8, 24, 67, 12, 39, 88, 6, 15, 59, 15, 49, 103, 4, 35, 95, 9, 51, 111, 13, 65, 121, 5, 21, 73, 7, 25, 76, 6, 23, 78, 14, 71, 129, 8, 49, 111, 14, 67, 126, + 8, 44, 104, 14, 66, 120, 11, 39, 81, 5, 6, 34, 2, 3, 28, 4, 16, 53, 11, 67, 128, 10, 61, 122, 6, 33, 95, 5, 22, 80, 6, 37, 90, 11, 44, 95, 9, 38, 92, 7, 43, 96, 6, 38, 88, 6, 20, 66, 3, 9, 44, 2, 2, 26, 5, 13, 45, 11, 26, 61, 3, 10, 40, + 2, 2, 18, 3, 5, 23, 5, 11, 39, 3, 1, 22, 2, 1, 13, 2, 1, 18, 3, 8, 47, 5, 22, 66, 5, 23, 63, 3, 4, 36, 5, 16, 47, 5, 12, 35, 6, 11, 33, 3, 5, 31, 3, 8, 39, 2, 3, 26, 2, 2, 26, 2, 5, 36, 3, 12, 46, 2, 20, 56, 36, 13, 47, + 48, 25, 64, 59, 41, 85, 67, 58, 107, 76, 78, 129, 78, 89, 148, 78, 94, 156, 78, 96, 159, 77, 96, 157, 74, 91, 153, 73, 88, 149, 78, 90, 150, 76, 87, 146, 76, 82, 138, 69, 74, 124, 62, 60, 106, 53, 37, 80, 41, 16, 49, 32, 6, 20, 31, 5, 19, 35, 7, 21, 36, 9, 23, + 40, 9, 24, 45, 10, 28, 46, 9, 24, 46, 10, 23, 46, 9, 23, 43, 9, 21, 43, 12, 28, 45, 15, 36, 46, 17, 40, 50, 20, 45, 52, 22, 47, 54, 24, 50, 55, 26, 49, 52, 24, 48, 51, 22, 46, 47, 21, 50, 44, 21, 53, 40, 24, 57, 38, 31, 64, 39, 38, 74, 39, 42, 81, + 45, 45, 86, 49, 46, 88, 54, 44, 85, 57, 40, 84, 55, 39, 82, 50, 40, 81, 49, 49, 88, 41, 59, 108, 30, 70, 130, 21, 77, 143, 16, 81, 151, 13, 85, 155, 12, 85, 156, 10, 83, 156, 6, 82, 153, 10, 85, 156, 18, 91, 162, 22, 94, 166, 27, 98, 171, 28, 99, 174, 31, 99, 177, + 35, 103, 180, 33, 100, 176, 33, 97, 172, 34, 91, 166, 30, 85, 151, 30, 75, 138, 24, 65, 124, 22, 59, 117, 17, 53, 110, 19, 57, 115, 20, 60, 120, 23, 65, 128, 22, 64, 127, 22, 65, 128, 19, 62, 126, 26, 65, 128, 27, 65, 127, 30, 65, 128, 33, 65, 128, 36, 67, 130, 44, 72, 132, + 46, 73, 133, 48, 70, 128, 45, 65, 117, 41, 57, 105, 34, 47, 95, 26, 39, 85, 20, 35, 77, 15, 30, 72, 15, 31, 73, 22, 38, 84, 32, 47, 97, 42, 55, 112, 50, 62, 120, 62, 71, 134, 69, 75, 140, 75, 80, 144, 79, 82, 147, 83, 85, 149, 85, 86, 150, 86, 86, 150, 86, 84, 147, + 86, 81, 144, 81, 73, 136, 81, 68, 129, 80, 59, 120, 84, 51, 110, 95, 49, 102, 104, 51, 89, 111, 53, 77, 117, 55, 74, 118, 55, 71, 120, 56, 71, 118, 55, 70, 117, 57, 75, 109, 55, 83, 98, 51, 89, 84, 45, 89, 73, 44, 90, 65, 44, 89, 61, 42, 85, 63, 42, 86, 67, 48, 94, + 69, 49, 97, 72, 53, 101, 73, 63, 112, 76, 79, 133, 80, 99, 160, 68, 100, 168, 56, 81, 147, 47, 79, 144, 31, 70, 138, 28, 74, 142, 28, 76, 146, 24, 72, 140, 32, 96, 170, 24, 96, 167, 14, 82, 150, 15, 80, 144, 15, 86, 150, 10, 72, 133, 7, 60, 121, 19, 80, 141, 14, 71, 133, + 8, 41, 96, 12, 32, 79, 4, 15, 55, 4, 8, 49, 4, 13, 57, 5, 17, 60, 4, 13, 53, 10, 27, 66, 4, 11, 53, 8, 25, 66, 6, 14, 58, 5, 18, 61, 4, 13, 58, 5, 15, 64, 9, 36, 85, 12, 43, 96, 8, 30, 82, 5, 20, 65, 4, 10, 49, 4, 5, 44, 7, 22, 63, + 10, 31, 75, 7, 17, 65, 14, 43, 95, 15, 53, 107, 8, 32, 87, 12, 47, 102, 11, 39, 97, 13, 45, 102, 6, 17, 77, 12, 30, 88, 17, 50, 109, 9, 32, 90, 8, 31, 90, 19, 66, 129, 12, 54, 116, 14, 55, 117, 16, 36, 96, 12, 38, 93, 11, 32, 86, 6, 20, 75, 8, 43, 98, + 11, 49, 106, 13, 43, 95, 8, 19, 62, 4, 9, 52, 8, 26, 72, 13, 50, 102, 10, 32, 82, 7, 32, 87, 10, 49, 110, 19, 70, 131, 9, 46, 105, 10, 27, 80, 14, 35, 83, 2, 9, 58, 11, 46, 105, 16, 68, 128, 17, 76, 137, 16, 71, 131, 7, 29, 78, 8, 16, 54, 6, 10, 41, + 4, 7, 36, 4, 13, 46, 15, 70, 129, 20, 83, 147, 12, 70, 133, 5, 46, 103, 5, 26, 79, 4, 9, 60, 8, 34, 89, 11, 43, 99, 6, 36, 89, 8, 38, 84, 5, 13, 49, 3, 2, 27, 3, 4, 31, 3, 9, 42, 6, 17, 46, 2, 4, 24, 2, 2, 17, 4, 8, 33, 5, 9, 33, + 1, 1, 13, 3, 4, 26, 5, 16, 55, 4, 24, 70, 4, 22, 63, 2, 3, 34, 3, 7, 34, 3, 3, 20, 3, 4, 21, 6, 12, 37, 4, 9, 36, 2, 6, 30, 3, 2, 22, 1, 4, 28, 3, 10, 43, 3, 10, 45, 28, 13, 45, 44, 26, 66, 55, 42, 86, 65, 61, 108, 71, 77, 129, + 76, 87, 147, 75, 88, 150, 73, 87, 149, 68, 83, 144, 64, 79, 137, 63, 75, 133, 64, 74, 129, 63, 71, 128, 59, 65, 119, 49, 55, 102, 39, 43, 83, 31, 29, 60, 25, 8, 33, 19, 2, 16, 24, 3, 19, 28, 5, 23, 33, 6, 28, 37, 7, 32, 42, 9, 34, 46, 9, 31, 47, 9, 28, + 44, 9, 27, 41, 8, 24, 39, 9, 30, 40, 10, 34, 44, 14, 40, 45, 15, 42, 47, 17, 45, 52, 22, 50, 51, 23, 51, 48, 20, 47, 42, 18, 45, 42, 20, 49, 37, 20, 53, 33, 27, 58, 34, 34, 69, 34, 41, 81, 36, 43, 90, 40, 47, 94, 43, 48, 94, 48, 48, 91, 51, 45, 86, + 48, 42, 83, 46, 42, 83, 45, 47, 90, 40, 56, 106, 31, 66, 126, 21, 74, 140, 18, 81, 149, 15, 85, 153, 12, 85, 156, 9, 85, 155, 7, 83, 153, 11, 83, 155, 18, 88, 161, 23, 93, 164, 25, 94, 168, 28, 98, 173, 32, 100, 176, 36, 103, 180, 32, 99, 176, 31, 97, 171, 31, 90, 163, + 27, 81, 148, 28, 73, 136, 24, 63, 122, 21, 55, 110, 16, 51, 105, 15, 50, 105, 17, 52, 109, 20, 57, 118, 20, 59, 120, 17, 57, 119, 15, 56, 116, 19, 58, 117, 19, 58, 117, 23, 59, 118, 25, 58, 116, 30, 61, 120, 35, 63, 121, 37, 66, 120, 40, 62, 117, 38, 57, 108, 36, 50, 98, + 30, 41, 87, 26, 36, 78, 20, 30, 69, 18, 27, 67, 16, 27, 69, 21, 32, 78, 29, 41, 89, 35, 47, 102, 45, 56, 114, 55, 64, 125, 61, 70, 134, 64, 73, 138, 70, 76, 142, 73, 77, 144, 74, 78, 144, 74, 76, 142, 72, 74, 137, 70, 72, 132, 64, 66, 123, 61, 61, 113, 59, 55, 107, + 61, 47, 99, 73, 42, 97, 87, 43, 90, 101, 48, 76, 108, 50, 68, 114, 53, 66, 115, 52, 64, 116, 52, 65, 112, 50, 63, 104, 46, 61, 90, 38, 57, 79, 33, 65, 66, 28, 69, 56, 26, 67, 54, 27, 68, 56, 29, 69, 54, 27, 67, 56, 32, 71, 58, 38, 82, 69, 72, 123, 82, 153, 228, + 82, 156, 241, 63, 123, 204, 52, 101, 175, 56, 116, 195, 56, 121, 202, 60, 126, 210, 64, 130, 215, 61, 130, 215, 58, 127, 206, 34, 103, 177, 21, 87, 155, 15, 77, 141, 13, 66, 126, 7, 44, 102, 8, 61, 119, 7, 36, 90, 8, 37, 87, 5, 12, 52, 10, 27, 69, 8, 25, 65, 5, 20, 61, + 4, 20, 62, 6, 16, 54, 3, 6, 43, 3, 10, 51, 5, 23, 71, 6, 24, 71, 6, 15, 60, 5, 13, 56, 7, 25, 71, 7, 22, 73, 7, 28, 78, 7, 23, 73, 4, 8, 50, 4, 7, 47, 4, 9, 50, 6, 14, 55, 8, 21, 64, 6, 18, 61, 7, 25, 74, 8, 21, 68, 4, 11, 59, + 5, 18, 68, 9, 35, 87, 19, 68, 125, 25, 72, 131, 11, 43, 103, 26, 84, 147, 20, 77, 142, 19, 80, 144, 13, 57, 122, 17, 65, 131, 17, 67, 129, 15, 58, 120, 14, 45, 102, 13, 32, 87, 16, 45, 99, 5, 17, 71, 5, 25, 82, 7, 37, 98, 13, 44, 100, 7, 19, 67, 6, 17, 58, + 7, 28, 72, 22, 73, 130, 16, 54, 108, 3, 14, 70, 7, 47, 109, 20, 85, 148, 11, 51, 110, 20, 50, 102, 13, 25, 69, 4, 13, 63, 7, 28, 86, 5, 41, 100, 8, 62, 124, 9, 61, 122, 10, 32, 82, 10, 18, 54, 2, 6, 36, 4, 6, 35, 4, 9, 43, 13, 59, 114, 22, 95, 156, + 11, 73, 137, 19, 78, 138, 3, 29, 85, 2, 17, 69, 10, 47, 101, 21, 67, 123, 2, 17, 69, 5, 22, 69, 5, 11, 46, 2, 2, 23, 3, 6, 31, 3, 8, 40, 4, 11, 40, 2, 3, 20, 1, 2, 14, 3, 8, 25, 8, 19, 44, 1, 0, 15, 2, 4, 25, 4, 18, 55, 5, 31, 75, + 4, 15, 56, 4, 8, 39, 5, 10, 30, 2, 2, 18, 3, 4, 18, 2, 4, 22, 2, 2, 21, 3, 3, 20, 3, 4, 24, 2, 4, 25, 2, 3, 29, 3, 9, 39, 21, 13, 42, 34, 22, 59, 45, 39, 79, 56, 54, 102, 63, 70, 124, 64, 76, 134, 62, 73, 132, 61, 72, 131, 56, 70, 128, + 51, 63, 117, 45, 57, 109, 47, 57, 107, 48, 56, 107, 40, 49, 95, 32, 39, 79, 24, 28, 62, 15, 16, 41, 10, 2, 17, 11, 2, 15, 17, 2, 22, 23, 3, 28, 28, 4, 35, 35, 7, 43, 42, 11, 46, 45, 12, 45, 43, 9, 38, 42, 8, 34, 39, 7, 34, 37, 6, 36, 41, 12, 40, + 43, 13, 43, 43, 13, 45, 45, 18, 49, 51, 23, 55, 46, 23, 54, 45, 21, 51, 40, 17, 47, 35, 16, 47, 33, 20, 53, 29, 26, 58, 28, 32, 69, 29, 37, 82, 31, 44, 93, 33, 47, 98, 35, 48, 97, 38, 46, 94, 42, 46, 90, 42, 44, 86, 42, 43, 87, 42, 48, 94, 38, 55, 106, + 31, 64, 124, 22, 73, 139, 17, 79, 148, 15, 84, 154, 14, 85, 155, 11, 83, 154, 10, 83, 153, 13, 83, 155, 18, 88, 160, 23, 91, 164, 25, 93, 166, 28, 95, 170, 32, 99, 174, 35, 100, 175, 33, 99, 175, 34, 97, 171, 31, 88, 161, 30, 83, 149, 25, 70, 132, 23, 59, 118, 20, 51, 105, + 14, 44, 96, 13, 41, 96, 15, 46, 102, 15, 50, 106, 16, 51, 108, 11, 47, 106, 11, 47, 105, 13, 50, 107, 14, 50, 107, 18, 52, 109, 19, 50, 108, 25, 55, 112, 27, 57, 113, 31, 60, 114, 32, 56, 109, 31, 50, 99, 30, 44, 90, 28, 36, 81, 26, 35, 75, 22, 30, 70, 17, 27, 67, + 19, 28, 71, 24, 33, 78, 29, 38, 86, 36, 46, 99, 44, 52, 110, 48, 57, 118, 54, 64, 128, 60, 69, 134, 64, 72, 138, 69, 74, 141, 66, 70, 138, 66, 68, 134, 66, 69, 129, 59, 62, 121, 56, 58, 115, 50, 53, 103, 47, 47, 96, 46, 42, 87, 56, 37, 84, 70, 35, 80, 88, 42, 70, + 99, 45, 62, 105, 48, 60, 111, 50, 62, 113, 50, 62, 108, 47, 58, 99, 41, 53, 88, 36, 53, 75, 31, 59, 61, 24, 63, 52, 20, 62, 49, 19, 61, 49, 19, 60, 49, 22, 60, 57, 34, 71, 63, 66, 113, 77, 142, 211, 86, 179, 253, 82, 165, 241, 63, 129, 215, 68, 141, 224, 75, 145, 229, + 64, 133, 216, 67, 133, 219, 59, 124, 208, 37, 103, 179, 20, 83, 153, 13, 70, 135, 7, 60, 120, 9, 57, 117, 4, 28, 83, 7, 43, 96, 9, 48, 103, 13, 41, 92, 10, 34, 83, 5, 20, 63, 6, 15, 54, 7, 13, 50, 6, 16, 54, 5, 9, 47, 3, 10, 48, 6, 26, 67, 8, 33, 77, + 6, 26, 73, 5, 22, 69, 7, 28, 71, 6, 30, 76, 9, 38, 86, 11, 43, 93, 7, 25, 73, 6, 16, 61, 5, 19, 63, 4, 10, 50, 6, 17, 58, 6, 18, 59, 5, 12, 57, 4, 15, 61, 8, 27, 72, 8, 26, 74, 8, 25, 74, 8, 27, 76, 10, 36, 86, 7, 27, 80, 5, 18, 73, + 6, 22, 82, 14, 45, 106, 12, 46, 110, 14, 64, 130, 14, 54, 121, 20, 67, 134, 9, 38, 100, 12, 51, 113, 15, 56, 114, 15, 42, 95, 18, 42, 93, 8, 25, 77, 6, 24, 83, 12, 49, 108, 12, 47, 106, 9, 28, 81, 6, 12, 55, 8, 17, 54, 15, 56, 107, 10, 23, 69, 5, 15, 66, + 11, 60, 119, 22, 86, 153, 10, 39, 103, 11, 44, 97, 7, 15, 56, 8, 17, 67, 15, 55, 110, 14, 59, 118, 20, 82, 142, 13, 74, 133, 9, 37, 85, 3, 5, 39, 3, 10, 41, 5, 12, 42, 7, 15, 51, 7, 27, 77, 6, 47, 106, 9, 61, 125, 18, 85, 146, 3, 35, 92, 3, 16, 71, + 6, 34, 89, 9, 53, 107, 5, 31, 82, 7, 25, 68, 6, 19, 52, 3, 1, 18, 3, 6, 29, 2, 8, 36, 3, 11, 42, 2, 2, 24, 1, 1, 15, 2, 4, 20, 2, 5, 26, 1, 2, 15, 2, 3, 22, 3, 12, 48, 4, 24, 69, 5, 17, 58, 3, 5, 37, 1, 1, 18, 1, 1, 12, + 1, 1, 9, 2, 4, 19, 2, 3, 20, 1, 2, 15, 2, 5, 22, 2, 4, 23, 4, 7, 33, 3, 5, 36, 13, 9, 36, 23, 17, 49, 33, 29, 66, 42, 42, 86, 51, 57, 110, 53, 61, 117, 49, 58, 113, 46, 55, 110, 45, 54, 105, 37, 46, 94, 31, 39, 84, 30, 39, 84, 30, 38, 79, + 24, 32, 69, 17, 24, 53, 13, 15, 41, 5, 5, 23, 3, 1, 14, 11, 3, 21, 16, 4, 27, 22, 5, 34, 30, 7, 44, 35, 9, 50, 40, 10, 53, 44, 11, 52, 44, 11, 51, 44, 13, 49, 44, 12, 47, 43, 12, 45, 43, 14, 48, 40, 13, 46, 42, 17, 50, 44, 22, 56, 47, 22, 57, + 42, 20, 54, 40, 18, 50, 37, 15, 47, 31, 14, 46, 30, 16, 49, 25, 21, 55, 22, 27, 66, 19, 31, 77, 23, 37, 89, 25, 42, 95, 27, 46, 98, 29, 46, 97, 33, 44, 92, 37, 42, 89, 37, 42, 90, 40, 48, 98, 38, 54, 108, 32, 61, 120, 26, 73, 138, 20, 79, 148, 18, 84, 153, + 16, 85, 154, 14, 84, 153, 12, 82, 152, 15, 84, 154, 19, 86, 155, 24, 90, 159, 25, 90, 162, 25, 93, 166, 30, 96, 170, 30, 96, 171, 34, 97, 172, 35, 95, 168, 28, 87, 157, 25, 76, 141, 25, 66, 128, 22, 57, 113, 17, 48, 98, 14, 38, 87, 14, 38, 88, 13, 40, 92, 12, 43, 96, + 11, 43, 98, 7, 43, 98, 5, 41, 95, 12, 45, 101, 8, 42, 98, 12, 44, 100, 16, 46, 102, 21, 52, 107, 24, 53, 108, 27, 52, 107, 30, 52, 104, 30, 47, 96, 29, 42, 89, 27, 37, 82, 26, 33, 78, 23, 30, 75, 22, 30, 74, 26, 32, 79, 30, 38, 86, 36, 44, 94, 42, 49, 103, + 48, 55, 114, 51, 60, 121, 58, 65, 128, 64, 70, 134, 67, 72, 138, 67, 72, 137, 68, 71, 135, 64, 67, 129, 61, 63, 122, 55, 57, 115, 47, 50, 103, 42, 43, 92, 37, 36, 81, 35, 31, 70, 42, 26, 67, 56, 27, 67, 75, 35, 61, 91, 43, 59, 99, 44, 56, 103, 45, 55, 103, 41, 53, + 102, 41, 52, 95, 38, 48, 88, 36, 50, 71, 27, 54, 57, 20, 56, 48, 15, 55, 47, 16, 56, 45, 15, 54, 43, 16, 52, 47, 25, 62, 60, 78, 130, 79, 164, 248, 81, 175, 247, 63, 140, 225, 65, 145, 229, 83, 173, 248, 81, 164, 242, 83, 157, 241, 74, 147, 228, 32, 98, 172, 13, 74, 142, + 8, 58, 119, 4, 40, 99, 4, 37, 94, 4, 37, 92, 8, 45, 97, 7, 32, 79, 7, 29, 77, 8, 24, 65, 10, 33, 77, 4, 9, 42, 5, 12, 47, 4, 13, 50, 5, 12, 51, 6, 18, 61, 4, 16, 56, 6, 24, 67, 6, 24, 64, 8, 32, 76, 9, 30, 77, 2, 12, 55, 3, 8, 50, + 7, 21, 64, 6, 19, 65, 7, 30, 75, 5, 21, 65, 6, 26, 71, 8, 30, 76, 5, 27, 75, 8, 26, 70, 7, 22, 70, 11, 39, 87, 7, 27, 78, 10, 34, 84, 8, 27, 80, 7, 28, 81, 14, 50, 103, 8, 25, 76, 6, 22, 73, 10, 28, 81, 15, 56, 116, 22, 77, 140, 21, 86, 153, + 27, 84, 151, 28, 88, 155, 16, 43, 103, 12, 48, 105, 15, 56, 111, 15, 47, 98, 11, 24, 72, 5, 18, 68, 11, 44, 100, 12, 48, 107, 14, 59, 119, 18, 56, 112, 6, 9, 48, 8, 13, 45, 15, 32, 75, 10, 23, 70, 10, 20, 65, 6, 35, 95, 27, 89, 154, 27, 86, 152, 8, 29, 81, + 13, 25, 66, 8, 29, 74, 11, 48, 105, 9, 41, 103, 15, 63, 124, 13, 71, 130, 9, 35, 85, 4, 5, 37, 10, 20, 58, 5, 12, 46, 9, 27, 66, 8, 25, 75, 7, 51, 109, 10, 60, 121, 9, 70, 133, 7, 48, 108, 4, 19, 78, 4, 24, 80, 7, 44, 97, 6, 33, 83, 3, 10, 49, + 6, 11, 42, 2, 4, 24, 2, 2, 20, 5, 11, 43, 6, 16, 49, 2, 6, 36, 2, 3, 23, 2, 3, 17, 4, 5, 27, 2, 1, 13, 1, 1, 12, 4, 11, 39, 9, 37, 80, 5, 25, 67, 3, 12, 46, 2, 5, 28, 1, 2, 13, 2, 2, 10, 3, 4, 18, 1, 1, 11, 1, 1, 6, + 2, 2, 12, 3, 7, 31, 6, 18, 51, 3, 11, 45, 10, 7, 31, 17, 12, 41, 18, 20, 51, 25, 28, 65, 33, 38, 82, 40, 46, 94, 41, 47, 95, 34, 41, 86, 29, 37, 78, 24, 31, 70, 20, 28, 64, 17, 22, 56, 15, 21, 51, 10, 16, 42, 10, 12, 37, 8, 8, 29, 6, 4, 25, + 7, 3, 25, 15, 6, 31, 18, 8, 38, 23, 9, 42, 29, 13, 50, 33, 12, 54, 39, 14, 58, 42, 13, 60, 43, 14, 58, 47, 16, 57, 48, 18, 57, 46, 15, 52, 42, 15, 51, 39, 14, 50, 41, 19, 53, 40, 20, 54, 38, 17, 52, 38, 17, 51, 37, 16, 49, 30, 10, 44, 28, 10, 44, + 26, 11, 44, 20, 15, 48, 18, 21, 58, 16, 25, 69, 17, 32, 80, 20, 38, 90, 24, 43, 95, 28, 45, 96, 30, 43, 93, 32, 40, 90, 36, 42, 91, 37, 48, 97, 35, 54, 107, 31, 60, 118, 23, 66, 129, 17, 74, 141, 15, 79, 147, 13, 80, 149, 12, 80, 148, 11, 78, 148, 14, 79, 148, + 15, 80, 149, 19, 85, 154, 19, 85, 155, 23, 90, 160, 24, 91, 163, 27, 92, 163, 27, 92, 163, 26, 88, 157, 24, 81, 147, 25, 73, 136, 22, 60, 118, 19, 52, 105, 17, 43, 91, 13, 34, 82, 15, 36, 82, 14, 37, 85, 13, 41, 92, 13, 42, 98, 13, 45, 99, 10, 41, 96, 15, 45, 101, + 12, 42, 98, 13, 43, 100, 15, 44, 100, 19, 48, 104, 24, 51, 106, 27, 52, 106, 27, 48, 101, 28, 46, 97, 29, 43, 91, 28, 39, 88, 27, 35, 83, 29, 35, 84, 29, 38, 87, 32, 41, 90, 37, 45, 96, 45, 52, 107, 50, 56, 114, 55, 61, 120, 60, 66, 127, 68, 73, 135, 71, 73, 136, + 71, 72, 137, 70, 71, 135, 66, 68, 129, 61, 62, 122, 54, 56, 114, 48, 50, 103, 42, 43, 91, 35, 32, 74, 28, 24, 61, 26, 18, 53, 34, 12, 49, 52, 22, 56, 70, 30, 50, 82, 35, 49, 94, 39, 50, 97, 38, 50, 99, 39, 50, 97, 38, 48, 90, 35, 46, 80, 30, 44, 65, 24, 49, + 53, 18, 54, 45, 12, 52, 41, 12, 52, 41, 12, 51, 41, 15, 53, 49, 31, 67, 61, 88, 144, 78, 158, 239, 56, 139, 222, 36, 113, 189, 68, 154, 238, 61, 146, 226, 43, 119, 196, 83, 161, 242, 70, 141, 221, 42, 112, 184, 19, 87, 154, 8, 59, 119, 10, 64, 124, 10, 58, 117, 5, 40, 94, + 4, 37, 89, 5, 22, 69, 6, 25, 65, 3, 8, 36, 3, 9, 33, 3, 8, 36, 6, 19, 57, 4, 24, 67, 7, 24, 64, 7, 19, 61, 6, 26, 68, 6, 18, 60, 4, 11, 50, 3, 15, 54, 5, 15, 58, 4, 19, 65, 5, 16, 59, 6, 16, 55, 6, 16, 58, 3, 10, 55, 4, 12, 56, + 6, 18, 61, 4, 23, 71, 5, 36, 86, 8, 31, 82, 5, 24, 74, 6, 33, 78, 9, 39, 89, 12, 41, 91, 14, 46, 99, 7, 36, 91, 9, 40, 93, 13, 38, 89, 8, 22, 71, 8, 21, 69, 6, 39, 98, 10, 63, 126, 25, 88, 154, 15, 66, 133, 27, 82, 147, 10, 37, 97, 7, 18, 72, + 10, 23, 74, 11, 36, 88, 10, 34, 85, 6, 16, 66, 15, 41, 97, 16, 51, 109, 18, 58, 120, 12, 37, 94, 4, 12, 55, 5, 11, 52, 9, 33, 84, 8, 14, 57, 4, 13, 58, 9, 38, 95, 9, 43, 105, 8, 35, 94, 10, 34, 87, 7, 15, 55, 11, 30, 74, 13, 60, 115, 13, 58, 120, + 10, 48, 111, 15, 69, 129, 15, 60, 113, 5, 22, 62, 8, 24, 62, 6, 27, 69, 5, 8, 42, 9, 36, 86, 13, 67, 127, 4, 27, 89, 5, 55, 117, 6, 56, 117, 3, 41, 100, 5, 21, 79, 8, 40, 91, 5, 24, 75, 3, 13, 52, 6, 14, 46, 5, 8, 27, 1, 1, 18, 2, 3, 29, + 4, 12, 45, 4, 11, 46, 4, 4, 30, 2, 3, 23, 3, 4, 25, 1, 2, 14, 2, 2, 20, 2, 6, 32, 3, 18, 59, 3, 14, 53, 5, 15, 50, 5, 12, 37, 2, 3, 19, 2, 4, 12, 5, 10, 26, 1, 2, 10, 2, 1, 6, 1, 2, 11, 2, 4, 25, 4, 13, 47, 3, 16, 51, + 2, 2, 20, 8, 7, 30, 9, 11, 39, 12, 19, 51, 17, 26, 63, 22, 29, 69, 24, 31, 71, 20, 28, 67, 17, 25, 62, 15, 21, 54, 12, 14, 44, 12, 9, 35, 8, 6, 28, 7, 4, 24, 10, 6, 28, 9, 6, 28, 11, 6, 31, 12, 7, 34, 15, 7, 37, 21, 11, 44, 21, 12, 47, + 29, 15, 54, 34, 16, 56, 36, 16, 60, 40, 17, 61, 45, 17, 63, 49, 21, 65, 51, 21, 61, 50, 18, 56, 46, 18, 54, 43, 16, 52, 42, 17, 52, 38, 15, 49, 34, 11, 47, 34, 11, 46, 33, 10, 44, 30, 9, 42, 26, 6, 40, 22, 6, 39, 20, 9, 44, 17, 16, 52, 17, 22, 63, + 21, 29, 77, 18, 32, 82, 24, 38, 89, 25, 39, 89, 29, 41, 90, 31, 38, 86, 34, 41, 88, 33, 43, 93, 32, 49, 103, 29, 54, 112, 23, 61, 122, 16, 67, 130, 15, 72, 138, 12, 74, 138, 11, 73, 139, 10, 70, 138, 12, 70, 136, 14, 73, 138, 17, 76, 142, 19, 78, 144, 21, 79, 147, + 22, 80, 146, 26, 81, 149, 27, 83, 150, 24, 79, 143, 23, 73, 135, 20, 63, 123, 20, 55, 110, 22, 48, 101, 20, 41, 89, 15, 34, 81, 16, 34, 81, 15, 34, 82, 14, 37, 87, 15, 40, 94, 14, 42, 97, 15, 45, 101, 15, 44, 102, 17, 46, 102, 19, 47, 105, 18, 46, 103, 22, 49, 106, + 27, 52, 108, 30, 51, 107, 28, 48, 104, 28, 46, 100, 29, 43, 97, 30, 43, 95, 32, 43, 95, 32, 44, 98, 35, 46, 100, 40, 52, 108, 44, 56, 113, 52, 59, 119, 58, 64, 125, 64, 68, 130, 69, 72, 135, 71, 73, 135, 73, 74, 136, 71, 72, 133, 68, 68, 128, 60, 61, 122, 54, 54, 112, + 47, 47, 99, 40, 37, 85, 34, 27, 70, 28, 21, 56, 23, 12, 45, 21, 6, 38, 32, 7, 40, 47, 16, 42, 64, 24, 39, 76, 30, 40, 90, 34, 44, 95, 38, 49, 95, 38, 48, 93, 36, 47, 85, 33, 45, 74, 30, 45, 62, 23, 47, 49, 14, 50, 40, 11, 47, 37, 12, 49, 38, 13, 51, + 42, 18, 54, 50, 38, 76, 72, 123, 197, 63, 128, 213, 16, 75, 138, 36, 106, 180, 45, 121, 207, 30, 103, 179, 23, 96, 170, 57, 128, 208, 20, 81, 146, 27, 100, 171, 24, 98, 167, 15, 90, 155, 36, 124, 197, 24, 115, 190, 9, 83, 152, 10, 75, 140, 6, 44, 96, 4, 13, 42, 4, 9, 35, + 6, 15, 47, 10, 24, 60, 5, 19, 58, 9, 36, 79, 7, 26, 69, 4, 15, 56, 4, 18, 59, 4, 22, 66, 5, 24, 65, 6, 27, 69, 5, 23, 66, 5, 32, 78, 6, 26, 69, 6, 22, 65, 7, 26, 69, 5, 25, 70, 3, 18, 60, 5, 15, 56, 3, 22, 69, 5, 40, 91, 6, 48, 97, + 9, 28, 73, 10, 26, 69, 6, 21, 67, 5, 22, 69, 10, 38, 93, 6, 41, 96, 13, 56, 109, 11, 43, 95, 6, 22, 69, 9, 30, 80, 13, 65, 123, 12, 61, 126, 18, 60, 125, 12, 62, 126, 12, 50, 114, 16, 58, 119, 10, 29, 85, 14, 28, 77, 4, 10, 60, 8, 24, 74, 3, 6, 58, + 5, 12, 68, 7, 29, 87, 8, 37, 94, 12, 37, 93, 15, 40, 90, 6, 18, 61, 17, 54, 108, 9, 25, 71, 6, 16, 60, 6, 38, 95, 8, 55, 118, 13, 45, 102, 8, 25, 74, 8, 15, 54, 6, 13, 55, 11, 54, 108, 10, 47, 109, 9, 32, 92, 14, 60, 119, 11, 56, 114, 5, 23, 68, + 5, 18, 59, 8, 42, 88, 6, 14, 50, 10, 45, 96, 8, 58, 117, 4, 44, 107, 5, 55, 118, 8, 64, 125, 5, 44, 105, 3, 28, 87, 3, 17, 72, 3, 20, 69, 4, 14, 53, 5, 15, 45, 1, 0, 16, 1, 2, 20, 2, 4, 32, 3, 10, 46, 6, 23, 63, 2, 4, 37, 2, 4, 30, + 3, 8, 34, 2, 2, 20, 2, 3, 22, 4, 9, 38, 5, 25, 62, 3, 10, 43, 4, 7, 37, 2, 2, 25, 1, 1, 14, 2, 2, 13, 3, 3, 15, 3, 5, 16, 2, 2, 10, 2, 5, 21, 4, 12, 41, 3, 15, 49, 2, 6, 38, 0, 1, 11, 1, 1, 16, 3, 4, 27, 5, 8, 36, + 7, 14, 46, 8, 16, 51, 10, 18, 54, 9, 17, 54, 12, 19, 56, 10, 13, 44, 8, 8, 36, 8, 4, 30, 10, 6, 30, 10, 4, 29, 12, 6, 31, 13, 5, 32, 18, 8, 38, 19, 9, 42, 18, 11, 43, 24, 14, 50, 26, 15, 52, 32, 17, 56, 35, 16, 57, 36, 16, 60, 42, 19, 64, + 47, 20, 64, 50, 22, 65, 53, 23, 62, 52, 21, 58, 48, 17, 52, 46, 15, 52, 39, 13, 47, 37, 13, 47, 33, 9, 44, 29, 7, 43, 27, 5, 41, 27, 7, 40, 25, 5, 37, 22, 5, 38, 24, 8, 44, 24, 15, 55, 23, 23, 63, 26, 29, 71, 24, 30, 75, 27, 35, 81, 28, 36, 83, + 31, 37, 83, 31, 37, 82, 32, 37, 82, 32, 41, 89, 30, 44, 95, 27, 47, 104, 21, 53, 111, 16, 57, 117, 14, 60, 122, 12, 64, 124, 12, 62, 121, 13, 60, 121, 14, 60, 122, 17, 63, 124, 17, 63, 124, 19, 67, 128, 22, 68, 130, 24, 68, 132, 24, 70, 132, 25, 71, 132, 23, 67, 129, + 22, 63, 122, 23, 57, 113, 23, 51, 105, 23, 46, 97, 21, 40, 90, 19, 36, 83, 20, 35, 83, 20, 37, 86, 18, 39, 92, 20, 40, 97, 20, 43, 101, 19, 46, 103, 22, 48, 107, 23, 48, 108, 23, 49, 110, 27, 52, 111, 25, 49, 110, 26, 50, 109, 31, 53, 109, 32, 50, 108, 33, 49, 108, + 36, 48, 105, 38, 50, 106, 42, 54, 111, 41, 52, 112, 46, 57, 118, 50, 61, 121, 57, 65, 127, 64, 68, 131, 68, 71, 135, 73, 74, 139, 73, 74, 137, 74, 75, 137, 70, 71, 132, 66, 67, 125, 62, 61, 119, 55, 54, 110, 48, 44, 96, 40, 32, 79, 33, 21, 64, 27, 13, 51, 21, 9, 37, + 17, 4, 28, 21, 4, 29, 33, 7, 33, 47, 15, 31, 64, 23, 36, 76, 28, 39, 86, 33, 42, 94, 37, 47, 94, 37, 48, 94, 38, 50, 84, 36, 51, 73, 32, 52, 62, 26, 53, 53, 20, 55, 49, 19, 56, 47, 21, 59, 49, 23, 61, 50, 26, 63, 63, 52, 92, 81, 132, 213, 41, 91, 164, + 9, 49, 108, 47, 123, 204, 24, 102, 180, 8, 64, 127, 13, 63, 124, 30, 100, 174, 10, 63, 128, 41, 131, 211, 45, 142, 223, 46, 148, 228, 59, 159, 240, 27, 116, 193, 17, 109, 186, 33, 129, 216, 18, 105, 188, 7, 54, 112, 4, 9, 32, 3, 6, 32, 7, 18, 57, 5, 24, 64, 6, 25, 63, + 8, 28, 67, 6, 18, 59, 4, 17, 59, 5, 16, 58, 4, 11, 49, 4, 16, 58, 5, 12, 52, 7, 30, 76, 3, 11, 52, 4, 16, 59, 5, 15, 58, 6, 20, 62, 6, 19, 62, 5, 24, 68, 6, 25, 70, 7, 29, 78, 7, 25, 72, 7, 21, 64, 5, 16, 56, 7, 23, 70, 8, 31, 83, + 8, 24, 78, 10, 41, 96, 10, 38, 89, 12, 29, 76, 6, 17, 66, 6, 20, 71, 10, 40, 100, 12, 53, 115, 8, 39, 101, 11, 53, 116, 15, 57, 116, 13, 49, 110, 11, 41, 99, 12, 34, 87, 7, 24, 77, 12, 36, 87, 9, 37, 91, 12, 45, 103, 7, 30, 84, 16, 50, 105, 11, 35, 89, + 11, 39, 88, 8, 20, 63, 19, 58, 113, 11, 42, 91, 7, 16, 61, 10, 45, 100, 13, 62, 124, 20, 73, 132, 10, 28, 74, 14, 32, 65, 7, 11, 48, 6, 20, 70, 12, 48, 107, 7, 26, 83, 8, 31, 90, 10, 57, 112, 12, 48, 98, 6, 23, 68, 14, 48, 92, 9, 22, 59, 6, 38, 86, + 6, 50, 112, 10, 70, 130, 4, 51, 116, 8, 57, 121, 10, 64, 125, 5, 39, 97, 4, 32, 85, 6, 22, 69, 5, 13, 47, 4, 11, 38, 1, 1, 16, 2, 3, 26, 2, 10, 48, 2, 15, 59, 3, 13, 58, 2, 6, 41, 2, 5, 34, 3, 12, 42, 2, 3, 28, 3, 4, 32, 2, 3, 34, + 3, 8, 39, 3, 10, 43, 4, 7, 37, 3, 8, 32, 2, 1, 16, 2, 2, 15, 1, 2, 9, 2, 4, 17, 1, 2, 11, 2, 4, 23, 3, 14, 47, 3, 13, 44, 2, 5, 33, 0, 2, 8, 1, 1, 10, 1, 2, 15, 3, 3, 24, 2, 3, 32, 5, 8, 41, 5, 8, 46, 6, 12, 51, + 9, 14, 51, 11, 10, 44, 13, 8, 40, 14, 7, 39, 19, 7, 40, 21, 8, 39, 20, 6, 39, 23, 6, 40, 25, 11, 45, 23, 11, 46, 25, 16, 50, 28, 14, 53, 29, 15, 53, 32, 15, 56, 33, 14, 57, 37, 16, 60, 41, 18, 61, 47, 19, 63, 50, 18, 60, 53, 19, 57, 51, 17, 51, + 49, 16, 45, 45, 12, 41, 42, 11, 41, 36, 9, 40, 32, 7, 41, 29, 7, 42, 30, 7, 43, 31, 6, 42, 30, 6, 41, 28, 6, 41, 29, 9, 48, 31, 15, 58, 31, 24, 65, 29, 27, 66, 33, 32, 71, 32, 33, 74, 32, 32, 74, 33, 33, 76, 33, 35, 76, 35, 36, 79, 33, 39, 83, + 32, 42, 90, 30, 45, 98, 24, 47, 100, 22, 50, 106, 20, 52, 108, 16, 51, 107, 16, 53, 107, 16, 50, 107, 17, 51, 108, 20, 51, 110, 20, 53, 111, 22, 55, 114, 25, 60, 117, 27, 60, 118, 27, 60, 119, 28, 60, 118, 28, 59, 118, 26, 57, 112, 27, 53, 108, 26, 48, 101, 25, 43, 94, + 25, 40, 91, 24, 39, 88, 23, 38, 89, 24, 40, 94, 26, 43, 101, 24, 43, 101, 26, 46, 106, 27, 49, 109, 25, 49, 112, 28, 52, 115, 26, 51, 115, 31, 53, 117, 32, 53, 115, 35, 54, 116, 34, 52, 113, 37, 53, 113, 40, 54, 113, 44, 55, 114, 47, 57, 118, 51, 61, 122, 54, 64, 127, + 58, 67, 131, 63, 70, 135, 68, 73, 138, 76, 77, 142, 77, 78, 142, 77, 77, 140, 75, 76, 137, 72, 73, 134, 67, 66, 126, 60, 61, 118, 54, 51, 105, 47, 41, 91, 43, 29, 79, 37, 17, 60, 26, 9, 42, 20, 5, 31, 14, 3, 22, 15, 4, 21, 20, 4, 21, 31, 6, 23, 46, 13, 26, + 61, 19, 31, 74, 27, 35, 87, 34, 43, 95, 38, 49, 97, 41, 52, 98, 45, 59, 86, 41, 60, 77, 37, 61, 71, 35, 67, 64, 32, 68, 60, 29, 65, 59, 28, 65, 62, 32, 70, 63, 35, 73, 70, 49, 91, 77, 118, 191, 23, 62, 123, 9, 49, 105, 50, 125, 208, 30, 105, 182, 5, 49, 103, + 12, 61, 117, 22, 90, 162, 9, 65, 129, 31, 118, 194, 59, 162, 247, 65, 174, 251, 50, 152, 229, 13, 85, 155, 16, 99, 176, 36, 130, 216, 37, 130, 216, 12, 85, 157, 8, 44, 93, 4, 13, 45, 4, 14, 47, 7, 31, 74, 5, 21, 60, 4, 24, 63, 6, 37, 86, 9, 46, 94, 6, 35, 81, + 5, 18, 57, 4, 13, 50, 4, 29, 68, 6, 20, 62, 8, 41, 85, 4, 16, 59, 6, 26, 71, 8, 26, 66, 9, 29, 70, 4, 14, 56, 4, 8, 49, 4, 5, 46, 3, 10, 52, 3, 8, 48, 4, 10, 50, 4, 26, 78, 10, 54, 109, 11, 58, 112, 11, 62, 115, 6, 23, 74, 6, 17, 65, + 7, 22, 72, 10, 41, 96, 8, 40, 99, 13, 55, 115, 12, 52, 107, 9, 43, 97, 12, 35, 90, 20, 56, 113, 16, 53, 111, 10, 42, 96, 10, 33, 85, 10, 40, 93, 10, 52, 108, 17, 62, 117, 8, 24, 76, 5, 14, 62, 9, 24, 71, 5, 16, 57, 12, 25, 65, 10, 29, 71, 14, 43, 93, + 9, 31, 81, 6, 35, 89, 17, 85, 149, 21, 88, 153, 14, 38, 81, 2, 1, 26, 6, 15, 53, 6, 17, 63, 11, 49, 104, 17, 63, 115, 6, 42, 99, 8, 47, 104, 7, 46, 99, 8, 35, 81, 4, 11, 44, 3, 3, 28, 6, 20, 58, 9, 56, 112, 9, 56, 120, 16, 78, 140, 10, 67, 128, + 6, 54, 113, 5, 46, 101, 6, 47, 100, 5, 26, 71, 2, 4, 32, 2, 2, 20, 2, 3, 19, 2, 5, 32, 2, 11, 50, 3, 19, 64, 4, 33, 83, 4, 24, 70, 4, 12, 51, 3, 15, 52, 4, 12, 47, 3, 8, 40, 4, 11, 42, 4, 9, 41, 3, 4, 35, 3, 8, 38, 4, 10, 36, + 3, 6, 25, 1, 2, 11, 1, 2, 5, 1, 2, 8, 2, 2, 14, 3, 6, 30, 2, 10, 42, 3, 10, 41, 2, 2, 30, 2, 4, 20, 4, 6, 27, 3, 6, 30, 3, 5, 36, 5, 8, 43, 7, 9, 47, 8, 10, 50, 12, 13, 51, 14, 15, 53, 16, 16, 50, 19, 13, 48, 22, 10, 46, + 27, 10, 47, 29, 10, 48, 28, 7, 45, 28, 8, 46, 29, 10, 48, 30, 12, 52, 29, 13, 50, 32, 15, 55, 31, 14, 53, 32, 13, 52, 34, 12, 54, 35, 12, 55, 39, 13, 55, 43, 14, 55, 49, 16, 53, 51, 15, 48, 53, 17, 41, 51, 15, 35, 46, 10, 31, 38, 8, 29, 35, 6, 33, + 31, 6, 38, 33, 8, 43, 35, 11, 48, 36, 10, 48, 34, 9, 48, 34, 10, 50, 33, 13, 55, 33, 17, 60, 34, 24, 67, 35, 27, 69, 34, 29, 68, 34, 31, 72, 33, 30, 71, 34, 31, 73, 35, 33, 75, 36, 35, 76, 35, 36, 78, 33, 37, 82, 31, 39, 87, 25, 41, 89, 24, 43, 94, + 22, 45, 95, 20, 44, 96, 20, 46, 97, 20, 44, 96, 22, 44, 98, 22, 44, 99, 22, 46, 100, 24, 49, 103, 26, 51, 103, 27, 51, 107, 29, 53, 108, 27, 52, 107, 29, 51, 106, 30, 50, 106, 30, 50, 102, 32, 49, 100, 31, 46, 96, 32, 44, 97, 29, 42, 96, 31, 44, 102, 30, 47, 105, + 31, 49, 108, 33, 51, 114, 34, 52, 115, 32, 53, 117, 34, 56, 122, 34, 56, 121, 34, 57, 122, 37, 57, 122, 35, 56, 120, 37, 56, 120, 38, 55, 118, 43, 58, 120, 48, 60, 122, 54, 63, 125, 58, 66, 129, 60, 68, 133, 65, 72, 138, 69, 75, 140, 76, 78, 143, 79, 81, 146, 81, 80, 143, + 79, 78, 142, 77, 77, 140, 72, 73, 134, 66, 66, 125, 60, 60, 115, 54, 49, 100, 47, 39, 87, 41, 27, 71, 37, 16, 57, 28, 7, 37, 17, 4, 24, 12, 2, 17, 12, 3, 16, 12, 2, 14, 18, 2, 15, 30, 6, 20, 46, 11, 22, 61, 18, 27, 74, 26, 35, 87, 34, 44, 95, 38, 48, + 99, 44, 55, 100, 46, 63, 92, 44, 66, 86, 42, 70, 82, 40, 74, 77, 37, 75, 74, 37, 74, 75, 37, 75, 76, 38, 75, 78, 41, 79, 81, 49, 93, 83, 110, 173, 35, 75, 137, 6, 44, 101, 14, 77, 144, 18, 94, 168, 5, 31, 82, 9, 69, 129, 5, 53, 111, 4, 51, 112, 14, 88, 156, + 47, 148, 234, 50, 151, 235, 17, 100, 174, 8, 60, 124, 26, 110, 189, 47, 139, 225, 29, 120, 204, 23, 112, 192, 17, 99, 173, 4, 25, 65, 4, 4, 30, 5, 22, 58, 7, 43, 90, 8, 47, 96, 6, 39, 86, 10, 33, 77, 6, 26, 67, 4, 11, 41, 3, 7, 36, 4, 14, 43, 5, 10, 39, + 4, 17, 50, 5, 14, 49, 7, 15, 49, 5, 5, 38, 4, 7, 40, 4, 11, 51, 6, 26, 72, 4, 22, 69, 8, 24, 70, 5, 23, 69, 8, 25, 71, 6, 41, 91, 8, 46, 101, 7, 44, 95, 11, 49, 101, 6, 14, 61, 7, 27, 75, 9, 30, 80, 6, 40, 97, 7, 50, 111, 9, 36, 91, + 5, 7, 55, 8, 14, 61, 7, 20, 71, 6, 23, 77, 13, 45, 99, 14, 40, 93, 9, 22, 72, 9, 30, 83, 11, 47, 103, 7, 27, 80, 12, 35, 83, 4, 13, 57, 6, 14, 55, 4, 8, 45, 5, 12, 46, 7, 17, 49, 14, 46, 94, 11, 39, 87, 7, 22, 73, 10, 46, 109, 16, 72, 133, + 9, 32, 73, 4, 4, 25, 4, 10, 47, 8, 19, 64, 7, 32, 86, 10, 37, 90, 13, 49, 104, 8, 41, 98, 7, 38, 90, 7, 22, 64, 3, 12, 47, 3, 2, 28, 4, 12, 43, 9, 51, 105, 11, 70, 133, 19, 85, 149, 6, 54, 114, 5, 35, 94, 5, 23, 80, 8, 42, 93, 6, 28, 70, + 2, 2, 23, 3, 3, 19, 2, 3, 21, 3, 10, 43, 3, 15, 56, 4, 28, 76, 6, 33, 85, 4, 32, 84, 5, 29, 78, 2, 9, 51, 4, 20, 61, 6, 22, 61, 4, 11, 44, 4, 7, 37, 3, 8, 36, 2, 5, 25, 2, 4, 22, 2, 3, 18, 1, 1, 8, 1, 1, 7, 1, 2, 12, + 2, 4, 21, 3, 9, 33, 3, 10, 40, 3, 9, 42, 3, 3, 31, 4, 25, 80, 4, 24, 92, 3, 20, 81, 5, 15, 65, 5, 11, 56, 8, 12, 54, 10, 13, 54, 14, 13, 55, 19, 18, 57, 22, 20, 56, 22, 15, 54, 30, 13, 54, 32, 12, 53, 35, 10, 51, 34, 7, 49, 33, 9, 49, + 33, 10, 51, 32, 12, 53, 30, 11, 50, 31, 10, 50, 30, 10, 49, 29, 8, 45, 30, 7, 45, 32, 9, 45, 34, 8, 46, 40, 10, 47, 47, 14, 45, 51, 14, 39, 55, 17, 34, 50, 13, 29, 45, 8, 24, 37, 8, 23, 34, 6, 30, 33, 8, 39, 34, 10, 45, 33, 11, 48, 33, 10, 50, + 33, 10, 52, 36, 15, 58, 37, 18, 63, 36, 22, 66, 36, 26, 70, 39, 29, 73, 39, 30, 73, 38, 31, 74, 40, 34, 77, 39, 35, 77, 37, 35, 76, 36, 36, 75, 35, 35, 76, 32, 35, 77, 30, 35, 79, 28, 35, 80, 26, 36, 84, 25, 38, 86, 22, 39, 87, 23, 38, 86, 22, 39, 88, + 23, 38, 90, 24, 39, 90, 23, 40, 91, 25, 42, 93, 28, 45, 96, 29, 46, 97, 30, 46, 98, 30, 47, 101, 31, 44, 100, 32, 46, 100, 34, 47, 100, 33, 47, 99, 33, 47, 100, 34, 45, 102, 37, 48, 107, 32, 49, 109, 32, 51, 112, 34, 54, 117, 39, 57, 121, 38, 55, 121, 40, 58, 124, + 39, 58, 125, 39, 59, 126, 40, 59, 125, 42, 59, 125, 42, 60, 124, 43, 60, 126, 47, 61, 124, 51, 63, 126, 56, 67, 130, 60, 68, 131, 64, 70, 133, 71, 75, 138, 75, 78, 141, 79, 82, 144, 79, 79, 144, 84, 83, 145, 83, 82, 144, 80, 79, 140, 73, 73, 133, 67, 67, 126, 59, 59, 113, + 52, 51, 98, 45, 37, 82, 39, 22, 65, 34, 11, 49, 28, 5, 34, 21, 4, 23, 12, 2, 14, 10, 2, 12, 10, 2, 11, 10, 2, 10, 15, 2, 12, 29, 4, 16, 46, 10, 19, 62, 19, 28, 79, 26, 35, 87, 30, 40, 97, 38, 48, 102, 44, 56, 103, 47, 64, 99, 45, 65, 95, 45, 71, + 92, 45, 74, 90, 44, 75, 88, 43, 74, 88, 44, 74, 90, 44, 76, 90, 45, 79, 90, 52, 90, 90, 105, 165, 55, 94, 160, 6, 39, 91, 9, 50, 104, 38, 107, 180, 3, 32, 82, 14, 76, 138, 6, 53, 112, 4, 40, 100, 9, 60, 120, 18, 96, 169, 26, 105, 183, 9, 63, 124, 9, 47, 106, + 40, 126, 207, 46, 131, 214, 15, 92, 170, 27, 108, 187, 21, 99, 173, 4, 34, 84, 4, 7, 35, 3, 6, 21, 6, 29, 73, 5, 25, 70, 6, 43, 93, 8, 38, 84, 4, 11, 41, 3, 2, 17, 4, 5, 19, 4, 6, 20, 5, 8, 21, 3, 4, 28, 4, 6, 37, 4, 9, 42, 5, 23, 66, + 7, 23, 67, 7, 20, 61, 12, 33, 78, 6, 29, 74, 6, 26, 71, 6, 31, 77, 9, 39, 87, 6, 32, 80, 6, 29, 79, 5, 19, 66, 9, 41, 88, 6, 21, 68, 12, 34, 81, 7, 24, 73, 10, 55, 110, 11, 64, 125, 11, 42, 101, 10, 40, 94, 8, 24, 68, 8, 19, 66, 5, 19, 73, + 8, 28, 82, 14, 40, 90, 11, 25, 71, 5, 10, 59, 10, 38, 87, 7, 31, 82, 10, 26, 69, 4, 7, 47, 5, 9, 43, 4, 7, 37, 5, 11, 40, 5, 5, 31, 10, 25, 62, 11, 31, 72, 8, 33, 86, 9, 47, 104, 9, 44, 102, 11, 41, 87, 10, 15, 43, 3, 3, 33, 6, 23, 64, + 13, 52, 107, 5, 26, 79, 12, 48, 100, 8, 46, 98, 7, 36, 86, 4, 12, 56, 8, 29, 67, 3, 6, 38, 3, 10, 43, 7, 42, 97, 20, 85, 149, 10, 66, 128, 13, 61, 122, 3, 34, 92, 4, 23, 78, 3, 16, 66, 4, 13, 52, 3, 2, 25, 3, 5, 20, 2, 3, 16, 2, 5, 33, + 3, 9, 48, 3, 21, 67, 3, 22, 75, 6, 39, 91, 4, 20, 70, 5, 16, 61, 3, 11, 54, 5, 12, 52, 2, 6, 39, 3, 4, 28, 3, 5, 23, 2, 4, 19, 1, 1, 11, 2, 3, 19, 2, 3, 16, 1, 2, 5, 1, 2, 12, 2, 7, 22, 4, 7, 31, 2, 6, 33, 3, 12, 43, + 3, 5, 35, 4, 29, 99, 4, 30, 97, 7, 29, 94, 9, 26, 86, 10, 20, 69, 12, 18, 62, 16, 17, 60, 17, 17, 58, 21, 18, 58, 28, 21, 60, 28, 17, 59, 34, 13, 56, 37, 11, 54, 36, 8, 50, 35, 7, 47, 34, 8, 46, 33, 8, 45, 32, 9, 46, 29, 7, 44, 27, 7, 41, + 26, 6, 39, 25, 6, 37, 28, 5, 38, 29, 5, 37, 34, 8, 41, 42, 11, 43, 48, 14, 39, 53, 16, 37, 53, 15, 31, 49, 12, 27, 46, 9, 25, 37, 7, 23, 36, 7, 33, 31, 6, 41, 30, 7, 44, 33, 12, 51, 34, 15, 55, 36, 17, 60, 35, 18, 63, 38, 24, 69, 37, 28, 72, + 38, 29, 74, 40, 33, 78, 41, 35, 79, 42, 35, 80, 43, 37, 80, 40, 35, 78, 40, 38, 79, 38, 37, 77, 37, 37, 76, 34, 33, 74, 28, 31, 73, 25, 30, 75, 26, 32, 77, 25, 33, 80, 23, 33, 80, 24, 34, 81, 23, 34, 82, 25, 37, 85, 23, 36, 85, 25, 37, 86, 27, 40, 90, + 27, 41, 91, 27, 40, 92, 30, 43, 93, 30, 42, 95, 30, 41, 95, 32, 44, 98, 32, 43, 99, 34, 47, 102, 34, 45, 103, 36, 49, 106, 38, 52, 113, 37, 54, 116, 38, 56, 120, 37, 57, 122, 40, 59, 124, 41, 58, 125, 41, 59, 124, 43, 60, 127, 43, 61, 127, 43, 60, 126, 44, 61, 126, + 46, 61, 125, 50, 64, 127, 57, 67, 130, 59, 67, 130, 61, 71, 132, 67, 71, 133, 72, 75, 138, 75, 77, 138, 81, 81, 141, 81, 81, 142, 80, 79, 143, 83, 82, 144, 79, 79, 141, 74, 75, 135, 67, 68, 126, 59, 61, 116, 49, 51, 100, 42, 40, 83, 37, 24, 65, 31, 11, 47, 25, 6, 33, + 18, 2, 21, 12, 2, 12, 8, 2, 8, 8, 1, 7, 9, 2, 8, 9, 2, 8, 14, 2, 9, 30, 4, 14, 44, 9, 18, 64, 17, 27, 77, 23, 33, 88, 29, 39, 101, 39, 49, 107, 46, 58, 107, 46, 61, 108, 49, 66, 105, 48, 69, 104, 49, 72, 101, 46, 71, 100, 45, 69, 98, 45, 68, + 99, 47, 68, 102, 49, 73, 102, 53, 84, 92, 83, 136, 74, 105, 175, 12, 28, 74, 5, 23, 66, 14, 67, 128, 5, 37, 89, 12, 76, 139, 6, 55, 116, 9, 62, 124, 7, 69, 128, 5, 42, 95, 8, 56, 114, 8, 58, 119, 8, 45, 104, 36, 119, 197, 21, 96, 169, 5, 63, 130, 18, 90, 162, + 24, 104, 181, 8, 64, 128, 5, 38, 89, 4, 6, 27, 3, 9, 39, 6, 26, 74, 4, 19, 65, 5, 23, 68, 5, 7, 32, 2, 3, 10, 1, 3, 14, 3, 4, 11, 3, 4, 22, 5, 11, 40, 5, 16, 52, 6, 25, 67, 7, 42, 91, 10, 33, 80, 9, 22, 62, 3, 8, 42, 4, 10, 46, + 5, 9, 44, 4, 8, 46, 5, 19, 61, 5, 14, 59, 3, 8, 49, 2, 8, 48, 5, 10, 46, 9, 29, 72, 4, 12, 60, 5, 17, 65, 6, 36, 92, 17, 73, 133, 12, 63, 125, 20, 77, 137, 10, 43, 96, 10, 35, 86, 11, 34, 84, 17, 54, 105, 12, 43, 94, 5, 14, 57, 5, 12, 59, + 13, 41, 90, 7, 23, 75, 7, 26, 73, 6, 17, 58, 4, 9, 44, 10, 21, 56, 7, 13, 42, 4, 8, 36, 6, 11, 41, 7, 14, 47, 12, 36, 89, 13, 55, 113, 7, 45, 104, 10, 38, 90, 5, 10, 41, 4, 8, 40, 3, 11, 50, 7, 17, 63, 5, 19, 69, 4, 29, 82, 7, 35, 86, + 8, 39, 88, 5, 22, 68, 8, 28, 69, 6, 15, 51, 6, 24, 67, 9, 49, 106, 19, 81, 143, 8, 52, 114, 5, 34, 93, 6, 51, 109, 3, 26, 80, 4, 13, 61, 3, 10, 49, 2, 1, 27, 2, 1, 15, 1, 2, 13, 2, 3, 26, 3, 8, 46, 3, 13, 57, 3, 22, 74, 5, 25, 76, + 5, 31, 79, 4, 26, 74, 3, 7, 54, 5, 15, 57, 5, 20, 56, 3, 3, 28, 1, 2, 13, 1, 1, 11, 1, 3, 16, 3, 6, 25, 2, 4, 17, 1, 2, 9, 1, 2, 9, 1, 1, 9, 2, 3, 22, 3, 5, 30, 4, 9, 38, 3, 8, 37, 8, 32, 102, 10, 33, 102, 14, 34, 102, + 15, 33, 100, 16, 28, 83, 20, 22, 67, 20, 19, 61, 20, 17, 58, 22, 16, 57, 24, 15, 56, 30, 14, 57, 33, 11, 53, 33, 6, 47, 32, 6, 42, 32, 6, 40, 33, 5, 40, 29, 6, 37, 26, 3, 33, 20, 4, 29, 21, 5, 29, 23, 5, 31, 24, 6, 34, 25, 6, 35, 29, 6, 37, + 33, 8, 38, 39, 9, 38, 45, 12, 38, 51, 17, 36, 53, 15, 33, 53, 15, 31, 50, 12, 30, 45, 10, 34, 38, 7, 42, 34, 9, 47, 32, 12, 50, 36, 17, 58, 36, 18, 61, 36, 21, 65, 37, 27, 71, 36, 29, 73, 37, 32, 77, 37, 35, 78, 41, 39, 80, 39, 37, 79, 41, 38, 79, + 38, 35, 79, 38, 34, 77, 35, 35, 75, 34, 33, 73, 33, 33, 74, 32, 32, 73, 30, 32, 73, 28, 31, 75, 26, 31, 76, 25, 32, 77, 28, 33, 81, 28, 34, 82, 32, 37, 86, 29, 37, 86, 29, 38, 87, 28, 39, 87, 30, 39, 89, 31, 40, 91, 32, 41, 93, 34, 43, 96, 32, 43, 97, + 36, 45, 100, 35, 45, 102, 36, 47, 104, 36, 47, 106, 38, 50, 108, 37, 52, 112, 38, 54, 118, 39, 57, 120, 39, 58, 123, 39, 58, 125, 40, 58, 124, 41, 58, 123, 39, 57, 121, 41, 57, 121, 42, 58, 122, 43, 57, 122, 46, 59, 123, 50, 60, 123, 55, 64, 126, 60, 67, 129, 64, 68, 129, + 69, 72, 132, 76, 76, 135, 78, 78, 138, 80, 79, 139, 83, 81, 140, 79, 78, 138, 80, 79, 139, 76, 76, 136, 76, 76, 135, 67, 68, 125, 59, 62, 115, 49, 54, 104, 39, 42, 88, 32, 31, 69, 26, 15, 50, 22, 5, 32, 16, 3, 21, 16, 2, 14, 11, 2, 10, 8, 2, 7, 8, 3, 5, + 9, 2, 7, 8, 2, 7, 15, 2, 8, 31, 4, 13, 48, 9, 17, 64, 15, 25, 79, 22, 33, 94, 31, 43, 104, 38, 50, 111, 45, 58, 114, 48, 61, 115, 50, 63, 113, 49, 65, 111, 50, 68, 109, 47, 65, 109, 48, 62, 109, 49, 64, 106, 48, 61, 108, 48, 64, 111, 53, 76, 104, 58, 102, + 83, 82, 142, 24, 38, 85, 3, 13, 55, 10, 45, 101, 5, 33, 82, 8, 60, 118, 16, 82, 146, 23, 89, 157, 6, 49, 101, 4, 6, 39, 8, 38, 89, 9, 55, 108, 9, 40, 96, 33, 116, 191, 17, 92, 161, 6, 51, 110, 11, 78, 146, 25, 107, 183, 11, 87, 155, 3, 35, 82, 2, 0, 8, + 5, 13, 41, 7, 46, 98, 5, 22, 62, 5, 31, 77, 4, 22, 64, 3, 14, 44, 6, 24, 58, 6, 25, 59, 5, 17, 52, 4, 24, 62, 7, 34, 81, 8, 33, 80, 9, 35, 83, 19, 63, 118, 8, 34, 82, 7, 20, 58, 4, 5, 33, 3, 7, 37, 4, 8, 44, 6, 15, 52, 7, 20, 61, + 4, 14, 55, 4, 13, 52, 4, 15, 52, 8, 36, 83, 4, 25, 71, 8, 33, 79, 6, 29, 78, 14, 46, 100, 10, 46, 104, 9, 53, 111, 9, 44, 99, 6, 40, 94, 7, 22, 69, 12, 38, 86, 4, 17, 63, 3, 7, 48, 7, 28, 76, 13, 43, 92, 7, 28, 77, 9, 26, 69, 11, 33, 74, + 5, 18, 58, 4, 6, 41, 5, 10, 41, 5, 6, 34, 5, 12, 41, 13, 35, 77, 8, 34, 86, 10, 55, 113, 18, 63, 122, 8, 40, 94, 8, 18, 56, 6, 9, 39, 8, 20, 57, 13, 32, 76, 6, 32, 78, 6, 26, 75, 10, 47, 96, 6, 39, 91, 6, 30, 77, 4, 15, 56, 3, 4, 36, + 5, 22, 61, 8, 53, 111, 7, 56, 116, 8, 48, 107, 4, 37, 96, 9, 58, 114, 4, 26, 80, 4, 12, 58, 5, 18, 60, 3, 5, 37, 3, 4, 23, 2, 2, 16, 2, 3, 24, 3, 14, 52, 6, 36, 82, 3, 20, 69, 5, 25, 76, 7, 33, 81, 4, 26, 76, 3, 16, 66, 4, 17, 65, + 3, 16, 54, 3, 9, 37, 2, 2, 18, 2, 3, 17, 1, 3, 18, 2, 6, 27, 2, 4, 20, 1, 1, 5, 1, 1, 6, 0, 3, 12, 2, 4, 22, 3, 2, 20, 2, 3, 22, 2, 4, 25, 19, 38, 107, 21, 38, 108, 24, 41, 108, 23, 37, 103, 23, 30, 86, 23, 23, 64, 20, 20, 60, + 23, 19, 58, 23, 14, 54, 23, 13, 51, 26, 8, 45, 27, 4, 40, 28, 4, 36, 27, 4, 32, 25, 3, 28, 23, 2, 25, 21, 2, 23, 22, 3, 26, 21, 4, 28, 22, 5, 31, 24, 5, 32, 25, 7, 34, 25, 5, 34, 29, 7, 36, 33, 7, 41, 39, 10, 42, 44, 13, 42, 48, 15, 40, + 53, 18, 39, 52, 15, 36, 51, 14, 39, 46, 11, 44, 41, 10, 49, 36, 13, 54, 34, 17, 57, 35, 20, 62, 36, 22, 65, 37, 27, 70, 39, 31, 75, 37, 34, 77, 37, 34, 78, 37, 37, 78, 38, 37, 79, 36, 35, 77, 33, 31, 74, 33, 33, 74, 32, 29, 71, 32, 32, 72, 32, 31, 71, + 31, 30, 72, 30, 31, 73, 29, 31, 75, 29, 33, 79, 28, 34, 80, 31, 36, 83, 31, 36, 84, 32, 37, 84, 33, 39, 87, 35, 40, 89, 33, 40, 89, 32, 42, 92, 32, 42, 92, 32, 42, 94, 33, 43, 97, 35, 45, 100, 33, 43, 101, 36, 45, 102, 36, 46, 103, 35, 47, 105, 36, 47, 108, + 39, 50, 113, 38, 53, 115, 37, 54, 117, 37, 55, 119, 39, 56, 119, 37, 55, 119, 38, 55, 119, 39, 54, 118, 40, 54, 119, 42, 55, 116, 45, 56, 117, 48, 57, 120, 53, 60, 121, 59, 62, 123, 65, 67, 126, 69, 69, 128, 75, 72, 131, 78, 74, 134, 80, 76, 135, 83, 78, 137, 82, 78, 137, + 82, 77, 136, 78, 76, 134, 78, 75, 133, 73, 72, 129, 66, 68, 124, 58, 62, 116, 49, 54, 104, 39, 44, 90, 31, 35, 75, 23, 24, 56, 18, 10, 39, 14, 4, 24, 13, 3, 16, 9, 2, 9, 9, 2, 5, 7, 2, 4, 7, 1, 3, 8, 2, 5, 9, 2, 5, 20, 2, 7, 34, 3, 12, + 50, 8, 15, 68, 15, 22, 80, 20, 30, 94, 28, 39, 105, 36, 47, 111, 40, 52, 115, 45, 56, 116, 46, 58, 116, 46, 59, 116, 48, 60, 116, 47, 60, 115, 46, 58, 113, 46, 57, 110, 43, 56, 112, 45, 58, 107, 47, 67, 104, 56, 100, 79, 62, 113, 42, 52, 99, 2, 19, 62, 8, 31, 81, + 7, 26, 75, 8, 48, 103, 15, 76, 139, 23, 83, 148, 4, 25, 68, 6, 22, 60, 7, 50, 105, 6, 25, 71, 8, 37, 89, 22, 108, 179, 23, 103, 175, 6, 51, 111, 12, 82, 150, 14, 94, 166, 7, 75, 141, 7, 37, 81, 4, 1, 11, 4, 8, 27, 6, 44, 97, 6, 18, 60, 6, 25, 67, + 4, 35, 86, 5, 32, 83, 10, 51, 103, 7, 45, 97, 4, 24, 72, 5, 28, 73, 5, 32, 81, 5, 22, 71, 5, 14, 60, 3, 6, 54, 8, 25, 72, 6, 31, 74, 6, 22, 64, 7, 39, 86, 6, 34, 81, 6, 26, 72, 8, 45, 95, 7, 35, 86, 6, 17, 60, 4, 6, 42, 3, 7, 43, + 4, 18, 57, 6, 28, 70, 5, 14, 49, 2, 4, 36, 3, 11, 54, 7, 34, 86, 7, 33, 86, 9, 34, 86, 4, 13, 56, 8, 17, 57, 8, 24, 65, 5, 11, 53, 6, 22, 72, 6, 25, 74, 7, 26, 71, 9, 22, 63, 5, 16, 58, 9, 33, 74, 7, 19, 55, 3, 5, 36, 4, 6, 36, + 4, 6, 32, 3, 14, 50, 8, 45, 98, 10, 63, 122, 13, 52, 107, 11, 59, 113, 7, 27, 67, 7, 16, 50, 7, 18, 49, 4, 15, 55, 7, 30, 74, 5, 25, 69, 5, 18, 63, 6, 30, 76, 6, 29, 75, 3, 9, 48, 4, 6, 37, 8, 26, 63, 7, 48, 106, 8, 60, 116, 7, 47, 104, + 8, 49, 106, 7, 53, 109, 5, 36, 89, 3, 12, 62, 4, 14, 60, 4, 10, 47, 3, 8, 34, 1, 1, 14, 3, 3, 28, 4, 15, 52, 5, 27, 74, 3, 15, 64, 3, 18, 67, 3, 15, 61, 4, 20, 66, 5, 31, 81, 4, 29, 78, 4, 10, 50, 2, 4, 31, 3, 3, 16, 2, 2, 10, + 2, 2, 19, 2, 2, 22, 3, 3, 23, 2, 2, 10, 1, 2, 5, 1, 2, 8, 2, 4, 19, 2, 2, 16, 1, 2, 11, 2, 2, 21, 25, 40, 110, 22, 39, 110, 23, 39, 109, 23, 37, 104, 24, 30, 83, 22, 20, 59, 20, 15, 53, 20, 11, 47, 21, 9, 41, 24, 7, 35, 22, 2, 28, + 24, 4, 27, 23, 2, 25, 22, 2, 22, 19, 2, 19, 21, 2, 23, 22, 3, 25, 23, 2, 28, 21, 4, 29, 23, 5, 32, 24, 5, 35, 24, 7, 38, 26, 6, 39, 31, 8, 41, 35, 11, 45, 39, 12, 46, 45, 15, 50, 49, 17, 48, 50, 16, 46, 51, 16, 48, 48, 13, 48, 45, 14, 54, + 38, 11, 54, 35, 16, 58, 33, 19, 61, 34, 24, 65, 37, 26, 69, 37, 27, 71, 39, 31, 75, 35, 33, 73, 35, 34, 75, 32, 31, 72, 31, 30, 71, 31, 30, 70, 31, 29, 70, 32, 30, 71, 29, 27, 69, 31, 30, 72, 31, 30, 72, 33, 33, 74, 30, 31, 76, 30, 32, 77, 30, 35, 80, + 28, 33, 80, 30, 35, 83, 32, 37, 85, 34, 38, 88, 34, 39, 88, 34, 39, 88, 32, 39, 89, 32, 41, 93, 32, 41, 94, 31, 44, 96, 33, 45, 98, 33, 44, 101, 33, 46, 103, 35, 46, 103, 34, 46, 105, 38, 49, 108, 37, 48, 109, 37, 49, 112, 37, 52, 114, 37, 52, 115, 35, 52, 115, + 36, 52, 115, 37, 53, 115, 38, 52, 115, 39, 52, 113, 41, 52, 113, 45, 54, 113, 49, 56, 115, 54, 58, 117, 60, 61, 119, 63, 61, 120, 69, 66, 123, 75, 70, 128, 78, 71, 131, 81, 72, 133, 83, 75, 135, 83, 76, 134, 81, 74, 133, 79, 73, 129, 73, 69, 123, 71, 68, 122, 62, 63, 116, + 55, 59, 109, 48, 53, 102, 38, 44, 90, 30, 37, 78, 23, 28, 64, 15, 17, 47, 12, 8, 32, 12, 4, 22, 10, 3, 12, 9, 2, 8, 7, 2, 6, 7, 2, 4, 7, 2, 3, 8, 2, 4, 15, 3, 5, 26, 2, 7, 42, 5, 11, 59, 10, 13, 74, 16, 16, 90, 24, 25, 99, 27, 31, + 108, 35, 38, 113, 36, 44, 116, 40, 50, 117, 41, 52, 118, 43, 56, 119, 45, 56, 115, 42, 53, 116, 41, 52, 114, 42, 52, 110, 41, 55, 110, 47, 65, 108, 59, 92, 96, 61, 112, 64, 55, 101, 27, 41, 87, 7, 17, 63, 4, 11, 55, 5, 26, 74, 5, 23, 73, 8, 38, 91, 6, 38, 93, + 7, 31, 80, 10, 62, 120, 11, 62, 118, 8, 29, 74, 10, 54, 106, 10, 76, 139, 17, 95, 164, 6, 35, 88, 9, 70, 135, 20, 102, 171, 7, 66, 126, 5, 36, 77, 2, 0, 4, 3, 10, 30, 6, 51, 107, 5, 29, 74, 4, 4, 31, 5, 33, 82, 5, 32, 82, 6, 22, 64, 6, 40, 86, + 5, 37, 85, 8, 37, 81, 7, 37, 85, 7, 26, 75, 6, 23, 70, 7, 27, 75, 16, 50, 95, 8, 34, 80, 8, 29, 75, 7, 33, 81, 8, 53, 106, 7, 35, 86, 5, 26, 76, 10, 53, 107, 6, 38, 90, 6, 25, 73, 5, 14, 53, 3, 6, 36, 3, 5, 29, 5, 9, 36, 4, 6, 37, + 3, 5, 37, 5, 14, 60, 9, 40, 92, 14, 49, 103, 6, 21, 63, 2, 7, 49, 4, 8, 48, 6, 16, 62, 9, 39, 91, 12, 47, 100, 7, 22, 65, 4, 10, 47, 3, 12, 48, 7, 24, 65, 10, 30, 68, 4, 11, 41, 4, 11, 40, 3, 3, 21, 6, 14, 42, 9, 47, 94, 6, 61, 119, + 3, 28, 82, 4, 40, 94, 7, 39, 87, 4, 11, 42, 4, 12, 43, 8, 22, 62, 5, 20, 61, 7, 20, 57, 4, 23, 66, 6, 21, 63, 4, 22, 67, 3, 6, 40, 4, 7, 40, 3, 10, 46, 6, 47, 103, 10, 63, 120, 4, 38, 96, 8, 42, 100, 10, 63, 119, 10, 51, 106, 4, 14, 65, + 4, 18, 66, 4, 15, 55, 3, 10, 40, 2, 1, 18, 2, 3, 25, 3, 9, 46, 4, 15, 61, 3, 16, 65, 3, 10, 56, 4, 14, 58, 3, 16, 64, 5, 33, 82, 7, 32, 79, 4, 18, 60, 2, 2, 30, 2, 4, 21, 3, 2, 15, 5, 9, 33, 2, 5, 31, 3, 7, 31, 3, 4, 17, + 1, 1, 4, 1, 2, 7, 2, 4, 16, 1, 2, 14, 1, 3, 17, 2, 4, 26, 25, 38, 106, 27, 41, 109, 24, 37, 104, 21, 32, 92, 21, 19, 60, 22, 9, 39, 21, 6, 30, 22, 3, 23, 21, 1, 20, 20, 1, 17, 20, 2, 17, 20, 2, 18, 19, 2, 16, 19, 1, 17, 20, 2, 20, + 24, 4, 26, 22, 3, 28, 22, 6, 31, 23, 6, 32, 24, 6, 36, 26, 8, 41, 28, 8, 42, 30, 10, 46, 33, 12, 47, 37, 15, 49, 40, 16, 51, 45, 16, 53, 48, 17, 52, 50, 17, 53, 50, 18, 56, 48, 15, 57, 42, 14, 58, 37, 15, 57, 34, 17, 61, 34, 21, 63, 36, 24, 66, + 36, 26, 68, 36, 26, 70, 36, 27, 71, 33, 28, 68, 32, 30, 67, 31, 29, 68, 29, 27, 67, 30, 29, 68, 30, 27, 67, 30, 28, 69, 30, 28, 70, 30, 29, 70, 31, 30, 72, 31, 30, 73, 32, 33, 77, 31, 33, 77, 31, 34, 80, 30, 35, 81, 32, 36, 83, 31, 35, 85, 32, 37, 87, + 34, 38, 87, 32, 37, 87, 34, 39, 89, 34, 41, 91, 34, 42, 93, 33, 44, 95, 33, 45, 97, 34, 46, 100, 33, 45, 102, 34, 45, 102, 36, 47, 105, 36, 48, 106, 35, 46, 106, 37, 48, 108, 35, 48, 110, 37, 48, 110, 37, 49, 110, 37, 49, 109, 39, 50, 110, 39, 49, 109, 42, 51, 110, + 47, 53, 111, 50, 53, 111, 55, 55, 114, 61, 60, 116, 67, 61, 117, 71, 63, 121, 76, 68, 126, 80, 68, 129, 82, 69, 130, 84, 70, 131, 84, 69, 130, 80, 68, 126, 78, 68, 127, 73, 66, 122, 66, 62, 114, 61, 59, 109, 53, 55, 104, 45, 49, 96, 38, 43, 88, 29, 36, 77, 22, 29, 66, + 16, 21, 53, 12, 14, 40, 10, 6, 27, 10, 3, 18, 9, 2, 9, 9, 2, 7, 6, 2, 3, 7, 2, 3, 7, 1, 3, 10, 2, 4, 19, 2, 5, 32, 2, 9, 52, 6, 12, 68, 11, 11, 81, 15, 11, 94, 22, 16, 106, 28, 24, 111, 32, 28, 119, 36, 35, 119, 39, 39, 118, 37, 39, + 120, 39, 44, 120, 39, 46, 118, 38, 43, 117, 42, 51, 113, 45, 57, 110, 57, 88, 107, 66, 111, 94, 76, 125, 82, 63, 110, 51, 57, 99, 32, 48, 96, 19, 42, 92, 16, 43, 91, 17, 43, 91, 7, 28, 77, 4, 19, 69, 8, 28, 77, 6, 24, 72, 5, 36, 86, 6, 31, 79, 8, 26, 66, + 7, 18, 58, 7, 26, 71, 10, 67, 125, 6, 26, 73, 10, 59, 118, 7, 81, 145, 6, 63, 121, 5, 25, 62, 2, 1, 6, 4, 19, 54, 5, 47, 103, 5, 56, 110, 5, 10, 39, 7, 27, 61, 5, 45, 96, 5, 37, 86, 5, 10, 46, 6, 12, 35, 3, 4, 24, 6, 18, 55, 5, 28, 70, + 4, 28, 74, 6, 26, 72, 5, 17, 60, 6, 17, 58, 8, 30, 74, 9, 33, 75, 8, 47, 94, 6, 39, 83, 6, 23, 66, 8, 49, 98, 9, 44, 96, 6, 29, 80, 5, 35, 86, 9, 35, 83, 5, 21, 61, 2, 13, 47, 4, 4, 29, 3, 3, 30, 2, 17, 59, 5, 26, 77, 6, 31, 84, + 6, 24, 73, 8, 21, 66, 7, 25, 72, 7, 31, 78, 7, 35, 85, 8, 41, 93, 9, 35, 77, 3, 5, 33, 3, 3, 27, 4, 9, 39, 5, 13, 47, 3, 3, 28, 3, 4, 26, 2, 3, 20, 4, 3, 16, 4, 12, 40, 8, 52, 106, 9, 53, 107, 7, 51, 106, 6, 42, 92, 6, 14, 48, + 5, 8, 39, 4, 7, 45, 5, 15, 53, 5, 8, 40, 6, 22, 65, 5, 19, 59, 4, 19, 62, 5, 12, 48, 4, 7, 41, 4, 16, 53, 7, 47, 102, 6, 48, 105, 6, 57, 113, 6, 38, 96, 7, 59, 114, 4, 41, 96, 4, 23, 73, 3, 15, 61, 2, 8, 46, 2, 5, 32, 2, 2, 21, + 2, 4, 26, 3, 15, 52, 5, 42, 91, 4, 32, 77, 4, 16, 59, 5, 17, 61, 4, 28, 75, 4, 31, 79, 4, 25, 72, 4, 22, 64, 2, 4, 35, 4, 6, 28, 2, 4, 24, 4, 15, 44, 3, 9, 35, 3, 13, 41, 2, 2, 16, 1, 2, 5, 1, 2, 5, 1, 2, 11, 2, 3, 15, + 2, 5, 24, 3, 13, 40, 24, 22, 66, 23, 25, 71, 26, 21, 63, 22, 13, 40, 23, 5, 21, 21, 2, 18, 19, 2, 15, 17, 2, 13, 17, 1, 12, 17, 1, 12, 19, 2, 14, 17, 1, 14, 17, 2, 15, 19, 2, 18, 22, 2, 24, 22, 2, 26, 22, 4, 30, 23, 7, 36, 26, 8, 41, + 27, 9, 44, 30, 12, 48, 31, 12, 49, 33, 15, 51, 35, 15, 51, 37, 16, 54, 39, 17, 54, 41, 14, 54, 41, 14, 53, 45, 16, 54, 44, 17, 58, 41, 15, 59, 38, 17, 59, 36, 17, 59, 35, 18, 62, 36, 21, 65, 35, 22, 64, 32, 22, 64, 32, 24, 64, 33, 25, 65, 32, 23, 63, + 33, 27, 65, 30, 24, 63, 28, 24, 62, 28, 23, 63, 28, 24, 65, 30, 26, 68, 29, 26, 68, 29, 28, 68, 30, 28, 70, 31, 30, 72, 30, 31, 73, 29, 31, 74, 29, 31, 75, 28, 32, 77, 29, 33, 79, 29, 34, 81, 31, 36, 84, 31, 35, 84, 33, 37, 87, 32, 37, 87, 35, 39, 89, + 34, 39, 88, 32, 39, 90, 30, 41, 93, 32, 42, 96, 32, 42, 98, 34, 44, 98, 33, 43, 99, 35, 44, 102, 35, 45, 102, 35, 46, 104, 35, 46, 104, 34, 45, 103, 36, 46, 105, 37, 48, 106, 39, 47, 105, 43, 49, 107, 48, 51, 109, 52, 53, 109, 57, 56, 111, 61, 55, 112, 65, 58, 115, + 72, 62, 120, 75, 62, 121, 82, 65, 126, 84, 66, 128, 86, 65, 128, 86, 66, 127, 82, 64, 124, 77, 61, 120, 71, 57, 112, 62, 56, 106, 56, 54, 101, 50, 50, 95, 43, 44, 88, 36, 39, 81, 28, 32, 73, 20, 27, 64, 16, 21, 56, 13, 17, 47, 13, 12, 35, 9, 4, 22, 9, 2, 13, + 9, 2, 8, 8, 2, 5, 7, 2, 3, 7, 2, 3, 8, 1, 2, 16, 2, 4, 26, 2, 7, 42, 4, 9, 58, 8, 9, 76, 14, 8, 89, 18, 8, 100, 22, 12, 112, 30, 18, 116, 33, 20, 119, 34, 23, 121, 34, 27, 122, 37, 33, 122, 37, 34, 123, 41, 42, 117, 43, 51, 114, 59, 83, + 110, 76, 126, 97, 74, 131, 82, 53, 105, 53, 45, 91, 59, 60, 104, 40, 49, 95, 37, 55, 105, 28, 51, 101, 21, 46, 95, 22, 50, 100, 17, 46, 97, 13, 44, 93, 6, 32, 84, 5, 23, 71, 5, 13, 57, 5, 16, 56, 5, 9, 42, 5, 6, 36, 6, 17, 53, 3, 11, 49, 5, 15, 54, + 8, 49, 100, 8, 55, 109, 9, 58, 112, 5, 24, 60, 2, 1, 9, 4, 14, 45, 6, 46, 102, 7, 67, 126, 6, 23, 61, 3, 5, 21, 7, 34, 79, 7, 46, 99, 4, 35, 80, 5, 12, 36, 3, 5, 20, 2, 0, 8, 3, 6, 25, 6, 23, 66, 4, 24, 63, 6, 15, 51, 5, 11, 47, + 6, 17, 53, 7, 15, 43, 2, 3, 19, 3, 5, 27, 5, 22, 55, 2, 4, 26, 4, 19, 58, 8, 32, 79, 5, 33, 85, 6, 37, 89, 10, 49, 103, 7, 37, 86, 4, 21, 59, 4, 6, 34, 4, 12, 50, 5, 25, 69, 9, 40, 87, 8, 29, 77, 3, 17, 62, 6, 22, 68, 8, 33, 80, + 12, 42, 89, 6, 17, 59, 2, 6, 40, 2, 4, 25, 4, 5, 23, 5, 7, 31, 6, 17, 46, 4, 7, 30, 3, 4, 20, 3, 4, 13, 1, 1, 6, 4, 6, 25, 7, 24, 63, 8, 36, 88, 7, 51, 108, 6, 34, 81, 5, 10, 45, 4, 9, 44, 4, 15, 53, 5, 15, 52, 4, 8, 40, + 5, 16, 55, 4, 15, 55, 5, 21, 63, 3, 11, 50, 4, 9, 44, 3, 10, 47, 7, 45, 100, 6, 48, 103, 5, 53, 109, 9, 53, 109, 5, 29, 83, 4, 41, 97, 5, 39, 91, 4, 23, 70, 5, 20, 61, 2, 3, 32, 2, 2, 22, 3, 4, 26, 3, 8, 41, 4, 34, 81, 5, 33, 79, + 2, 6, 48, 3, 9, 51, 4, 30, 75, 4, 20, 65, 3, 15, 60, 3, 7, 46, 3, 9, 44, 3, 8, 37, 2, 2, 24, 3, 5, 36, 4, 9, 40, 3, 7, 35, 2, 2, 14, 1, 1, 4, 1, 1, 5, 2, 3, 13, 2, 3, 17, 2, 4, 22, 3, 8, 34, 25, 6, 26, 24, 3, 23, + 23, 4, 19, 22, 3, 18, 21, 4, 17, 20, 2, 15, 16, 1, 11, 15, 2, 10, 13, 2, 7, 14, 1, 12, 17, 1, 14, 17, 2, 15, 19, 2, 17, 20, 2, 23, 23, 2, 25, 22, 4, 30, 22, 6, 33, 23, 6, 37, 25, 8, 42, 28, 10, 44, 30, 12, 48, 32, 15, 51, 34, 17, 52, + 37, 16, 55, 36, 15, 53, 36, 13, 51, 41, 13, 53, 40, 14, 53, 41, 16, 54, 40, 17, 57, 36, 18, 57, 37, 18, 58, 34, 19, 59, 34, 18, 59, 32, 17, 59, 32, 17, 60, 31, 19, 59, 30, 21, 59, 29, 22, 59, 29, 21, 59, 30, 24, 59, 29, 22, 59, 29, 23, 60, 27, 21, 61, + 31, 25, 65, 29, 25, 66, 30, 24, 66, 30, 28, 68, 31, 29, 70, 30, 29, 70, 30, 29, 71, 31, 31, 73, 30, 31, 72, 31, 32, 73, 32, 33, 78, 30, 33, 79, 30, 33, 80, 30, 34, 83, 30, 34, 82, 33, 37, 85, 32, 37, 86, 33, 37, 86, 32, 37, 87, 33, 40, 89, 33, 40, 91, + 33, 41, 94, 34, 40, 95, 33, 41, 95, 34, 42, 97, 34, 42, 97, 36, 44, 100, 36, 44, 101, 34, 43, 101, 38, 44, 101, 41, 46, 103, 42, 46, 103, 46, 48, 104, 50, 52, 106, 56, 54, 108, 60, 54, 110, 67, 56, 115, 70, 56, 117, 75, 60, 120, 80, 61, 122, 81, 60, 121, 86, 61, 123, + 85, 60, 122, 83, 58, 119, 78, 55, 114, 70, 53, 108, 61, 49, 99, 52, 45, 90, 44, 43, 84, 37, 38, 77, 31, 33, 71, 24, 28, 64, 17, 23, 58, 14, 20, 53, 13, 18, 49, 12, 13, 40, 11, 8, 29, 11, 3, 19, 10, 2, 11, 9, 2, 8, 8, 2, 6, 7, 2, 4, 7, 2, 4, + 12, 1, 4, 20, 2, 4, 32, 2, 8, 50, 5, 9, 66, 8, 7, 82, 15, 6, 95, 20, 8, 106, 26, 11, 114, 30, 11, 120, 33, 16, 121, 32, 17, 122, 32, 21, 124, 38, 31, 122, 44, 45, 117, 62, 81, 106, 84, 133, 93, 72, 127, 85, 67, 123, 84, 73, 127, 55, 47, 97, 48, 50, 98, + 40, 45, 93, 29, 42, 93, 29, 48, 98, 17, 39, 90, 15, 40, 91, 7, 31, 85, 19, 50, 102, 10, 39, 90, 9, 38, 90, 7, 34, 83, 4, 31, 79, 4, 26, 71, 4, 11, 51, 3, 8, 36, 4, 6, 38, 2, 7, 39, 6, 11, 43, 5, 5, 31, 5, 17, 55, 5, 40, 87, 5, 19, 55, + 2, 1, 15, 5, 10, 34, 7, 49, 104, 7, 65, 124, 6, 39, 86, 4, 3, 20, 4, 13, 40, 8, 44, 92, 5, 48, 102, 5, 52, 105, 6, 34, 82, 3, 4, 19, 2, 3, 11, 2, 6, 21, 4, 13, 40, 9, 33, 73, 4, 14, 48, 3, 4, 32, 4, 4, 25, 1, 1, 12, 4, 4, 18, + 6, 9, 27, 2, 0, 10, 2, 1, 10, 4, 5, 27, 6, 19, 64, 5, 27, 77, 5, 28, 80, 7, 31, 82, 7, 33, 79, 5, 22, 60, 4, 10, 43, 3, 4, 32, 6, 12, 42, 9, 26, 67, 7, 21, 64, 8, 26, 67, 5, 18, 56, 5, 11, 48, 4, 16, 50, 3, 7, 38, 3, 4, 26, + 2, 1, 17, 2, 4, 20, 5, 9, 34, 2, 3, 21, 5, 8, 26, 3, 3, 11, 2, 1, 9, 4, 5, 22, 3, 8, 36, 6, 31, 81, 5, 47, 99, 6, 33, 81, 7, 18, 59, 5, 16, 53, 7, 24, 65, 4, 23, 64, 5, 14, 48, 3, 9, 44, 3, 7, 43, 5, 12, 53, 4, 17, 56, + 4, 8, 41, 4, 15, 52, 9, 53, 107, 6, 44, 99, 3, 28, 84, 5, 39, 92, 5, 33, 87, 7, 42, 96, 12, 48, 99, 9, 45, 93, 3, 17, 59, 4, 10, 38, 1, 1, 19, 3, 3, 26, 4, 9, 40, 5, 30, 74, 5, 29, 76, 5, 15, 56, 4, 15, 56, 5, 28, 71, 5, 21, 63, + 4, 24, 65, 4, 8, 46, 3, 13, 50, 3, 8, 43, 3, 5, 39, 3, 8, 39, 4, 7, 37, 4, 7, 35, 2, 3, 16, 0, 2, 8, 1, 1, 9, 0, 2, 10, 1, 1, 12, 2, 6, 27, 4, 10, 36, 23, 4, 22, 22, 4, 18, 19, 2, 15, 17, 2, 11, 17, 2, 11, 16, 2, 8, + 14, 2, 8, 16, 2, 10, 18, 1, 13, 20, 2, 18, 20, 2, 20, 20, 1, 23, 22, 3, 26, 22, 3, 26, 22, 4, 28, 23, 6, 33, 24, 6, 37, 23, 7, 40, 27, 10, 44, 27, 12, 43, 30, 14, 48, 31, 16, 50, 31, 14, 49, 34, 14, 52, 33, 13, 49, 35, 12, 50, 36, 14, 50, + 37, 14, 52, 36, 14, 51, 33, 14, 52, 33, 15, 53, 33, 17, 54, 31, 16, 53, 34, 17, 55, 33, 17, 56, 32, 16, 55, 29, 18, 56, 28, 19, 57, 28, 21, 57, 28, 21, 57, 29, 23, 58, 28, 21, 57, 28, 23, 58, 29, 22, 60, 30, 23, 63, 29, 24, 65, 33, 26, 67, 30, 26, 66, + 29, 28, 67, 31, 29, 68, 30, 29, 69, 29, 28, 70, 30, 30, 71, 30, 30, 71, 30, 32, 76, 27, 30, 75, 28, 31, 77, 30, 34, 80, 29, 33, 80, 31, 34, 82, 31, 35, 84, 33, 37, 85, 31, 36, 85, 32, 37, 86, 33, 39, 88, 33, 39, 88, 34, 40, 91, 34, 41, 91, 35, 41, 93, + 35, 41, 94, 35, 41, 95, 35, 41, 97, 39, 44, 98, 40, 45, 98, 43, 47, 101, 47, 49, 101, 49, 50, 104, 54, 53, 106, 59, 53, 108, 63, 54, 111, 71, 56, 114, 75, 57, 117, 80, 58, 121, 85, 60, 120, 85, 58, 119, 82, 55, 118, 78, 51, 113, 76, 49, 109, 70, 47, 101, 61, 43, 91, + 51, 39, 84, 43, 38, 75, 33, 32, 66, 27, 29, 63, 23, 25, 58, 18, 21, 54, 14, 17, 50, 11, 15, 44, 12, 14, 41, 11, 8, 32, 9, 5, 24, 10, 3, 14, 10, 2, 11, 8, 2, 7, 9, 2, 6, 8, 1, 4, 8, 1, 2, 14, 2, 4, 23, 2, 6, 38, 2, 7, 53, 5, 7, + 71, 10, 6, 85, 16, 4, 99, 21, 7, 109, 26, 9, 117, 31, 12, 120, 31, 14, 122, 36, 25, 123, 44, 41, 116, 61, 74, 103, 87, 130, 95, 102, 159, 74, 75, 126, 67, 60, 112, 65, 65, 115, 57, 59, 111, 57, 64, 115, 44, 54, 108, 49, 67, 122, 36, 55, 109, 36, 58, 112, 28, 50, 104, + 35, 65, 123, 21, 54, 112, 16, 51, 107, 11, 45, 100, 14, 44, 96, 4, 34, 86, 3, 27, 78, 4, 28, 78, 3, 24, 72, 6, 29, 75, 4, 20, 63, 4, 11, 46, 3, 8, 41, 3, 5, 33, 4, 7, 37, 3, 5, 29, 4, 12, 39, 2, 2, 15, 4, 7, 26, 6, 38, 88, 8, 67, 126, + 6, 54, 110, 4, 20, 53, 4, 1, 16, 4, 11, 36, 6, 26, 69, 4, 41, 93, 6, 43, 97, 5, 30, 75, 4, 8, 30, 1, 1, 0, 1, 2, 8, 4, 10, 33, 8, 22, 58, 7, 24, 60, 5, 11, 41, 2, 3, 18, 4, 6, 23, 2, 1, 14, 2, 3, 17, 1, 2, 11, 2, 0, 9, + 2, 2, 18, 5, 12, 48, 3, 19, 64, 4, 30, 80, 6, 30, 80, 6, 24, 67, 7, 21, 58, 3, 2, 22, 2, 2, 16, 6, 12, 38, 9, 18, 51, 5, 13, 44, 4, 5, 28, 5, 10, 39, 7, 20, 52, 5, 9, 37, 4, 5, 22, 3, 3, 19, 2, 4, 13, 5, 9, 29, 3, 3, 17, + 2, 2, 16, 2, 2, 9, 1, 2, 6, 4, 4, 15, 5, 11, 35, 5, 27, 70, 7, 42, 93, 5, 22, 68, 7, 21, 61, 3, 7, 37, 4, 18, 62, 5, 21, 63, 5, 8, 47, 4, 10, 49, 2, 13, 47, 4, 13, 54, 5, 17, 58, 4, 11, 45, 5, 19, 53, 6, 44, 95, 8, 47, 100, + 5, 35, 87, 5, 36, 87, 7, 52, 106, 5, 33, 85, 4, 16, 67, 5, 24, 71, 5, 17, 56, 2, 2, 25, 2, 3, 19, 2, 3, 20, 4, 6, 33, 3, 10, 45, 4, 26, 70, 7, 33, 75, 7, 28, 68, 3, 22, 64, 3, 6, 45, 4, 13, 55, 3, 6, 44, 3, 9, 48, 3, 9, 47, + 3, 5, 39, 3, 11, 43, 3, 11, 44, 4, 9, 39, 3, 3, 26, 2, 2, 16, 0, 1, 13, 2, 3, 13, 2, 2, 17, 2, 7, 28, 3, 13, 42, 18, 2, 13, 15, 2, 11, 14, 2, 8, 12, 2, 6, 13, 2, 7, 14, 2, 10, 16, 2, 11, 17, 2, 16, 19, 2, 21, 20, 2, 25, + 21, 3, 27, 20, 5, 27, 19, 4, 28, 21, 5, 30, 22, 6, 34, 22, 6, 35, 24, 7, 40, 25, 10, 42, 26, 12, 43, 27, 14, 46, 29, 15, 47, 27, 13, 46, 28, 12, 45, 30, 12, 46, 30, 11, 47, 31, 12, 46, 30, 10, 45, 30, 11, 45, 31, 12, 47, 29, 13, 48, 28, 13, 47, + 29, 15, 49, 29, 14, 48, 30, 16, 50, 30, 16, 50, 29, 16, 51, 26, 18, 53, 27, 20, 54, 27, 22, 56, 28, 22, 57, 28, 22, 57, 28, 22, 57, 29, 23, 59, 29, 25, 60, 27, 23, 60, 29, 24, 62, 32, 26, 65, 31, 26, 66, 31, 27, 66, 32, 29, 68, 30, 28, 69, 29, 27, 68, + 29, 29, 70, 29, 29, 70, 29, 32, 73, 29, 30, 74, 30, 32, 75, 29, 32, 79, 29, 32, 79, 31, 34, 81, 33, 36, 82, 30, 33, 82, 31, 34, 84, 34, 38, 86, 33, 37, 86, 34, 38, 87, 34, 39, 89, 34, 38, 89, 35, 41, 91, 35, 40, 91, 36, 41, 92, 38, 43, 95, 39, 44, 96, + 42, 44, 97, 44, 46, 98, 51, 50, 102, 53, 50, 102, 57, 51, 106, 63, 53, 110, 68, 54, 111, 74, 55, 114, 80, 57, 118, 81, 56, 117, 79, 53, 115, 78, 53, 113, 74, 48, 107, 68, 43, 98, 62, 40, 91, 58, 38, 85, 52, 34, 77, 42, 30, 70, 30, 25, 58, 25, 23, 53, 18, 18, 49, + 15, 16, 47, 11, 14, 44, 9, 12, 41, 8, 11, 38, 11, 9, 34, 10, 6, 28, 10, 3, 23, 12, 2, 16, 11, 2, 12, 10, 3, 8, 8, 2, 6, 8, 2, 4, 11, 1, 4, 15, 2, 4, 28, 2, 7, 41, 2, 8, 60, 8, 8, 75, 12, 6, 88, 18, 6, 101, 21, 7, 110, 25, 10, + 118, 33, 18, 121, 44, 35, 116, 62, 73, 110, 95, 137, 97, 103, 159, 68, 71, 126, 59, 67, 120, 55, 61, 116, 55, 59, 111, 55, 60, 114, 60, 68, 123, 53, 64, 119, 41, 55, 112, 45, 65, 122, 39, 60, 118, 33, 58, 115, 28, 56, 114, 22, 56, 117, 21, 59, 121, 12, 51, 111, 14, 55, 114, + 4, 38, 94, 5, 39, 94, 6, 36, 91, 5, 34, 88, 5, 36, 88, 5, 33, 84, 8, 33, 83, 4, 29, 76, 6, 28, 73, 3, 16, 53, 3, 9, 40, 5, 10, 36, 4, 4, 23, 3, 3, 20, 6, 11, 32, 5, 27, 67, 5, 48, 105, 10, 63, 120, 5, 38, 81, 2, 0, 7, 3, 4, 15, + 3, 12, 40, 5, 32, 78, 7, 44, 97, 5, 33, 81, 3, 14, 45, 2, 1, 2, 2, 1, 4, 3, 3, 13, 8, 19, 52, 5, 27, 69, 4, 18, 52, 4, 6, 31, 3, 6, 24, 2, 3, 17, 2, 2, 16, 1, 3, 10, 1, 1, 9, 1, 2, 10, 3, 7, 27, 4, 14, 49, 5, 26, 72, + 5, 34, 83, 6, 24, 67, 8, 35, 79, 3, 8, 35, 3, 4, 19, 3, 4, 22, 5, 11, 35, 3, 2, 24, 2, 2, 15, 3, 2, 19, 3, 3, 25, 3, 5, 27, 2, 2, 16, 3, 3, 16, 4, 7, 16, 2, 5, 17, 1, 1, 5, 1, 1, 6, 2, 2, 10, 2, 3, 12, 2, 4, 11, + 4, 7, 26, 5, 11, 41, 4, 19, 60, 7, 43, 94, 6, 31, 76, 4, 6, 35, 5, 27, 72, 3, 27, 71, 5, 17, 58, 4, 19, 63, 5, 24, 66, 3, 25, 67, 4, 20, 61, 3, 10, 46, 3, 8, 34, 6, 38, 85, 7, 61, 114, 4, 35, 86, 4, 17, 69, 4, 24, 74, 5, 25, 76, + 4, 32, 82, 5, 29, 74, 4, 19, 55, 2, 4, 24, 5, 10, 32, 3, 4, 23, 3, 6, 29, 5, 15, 47, 3, 17, 57, 4, 20, 58, 3, 4, 37, 3, 9, 47, 3, 10, 47, 4, 15, 54, 3, 13, 54, 3, 19, 61, 4, 19, 59, 3, 10, 47, 3, 10, 44, 3, 10, 42, 3, 8, 39, + 2, 5, 29, 2, 3, 23, 1, 2, 13, 2, 2, 15, 2, 3, 20, 2, 3, 19, 3, 6, 27, 12, 2, 9, 11, 2, 8, 10, 2, 8, 13, 2, 8, 15, 1, 9, 17, 2, 14, 19, 3, 19, 17, 2, 22, 18, 4, 26, 18, 5, 28, 19, 7, 30, 21, 8, 32, 23, 8, 35, 22, 8, 36, + 22, 8, 37, 23, 9, 38, 23, 11, 42, 24, 14, 44, 23, 15, 45, 22, 14, 45, 22, 13, 42, 24, 14, 44, 25, 12, 44, 27, 13, 44, 26, 12, 43, 27, 9, 43, 24, 8, 39, 24, 9, 40, 23, 8, 40, 25, 11, 42, 25, 12, 43, 25, 13, 45, 25, 14, 45, 25, 14, 46, 24, 15, 47, + 24, 16, 47, 24, 18, 51, 24, 20, 52, 24, 22, 53, 24, 21, 56, 24, 21, 56, 24, 23, 57, 25, 22, 57, 26, 25, 59, 24, 25, 59, 26, 25, 60, 28, 27, 63, 28, 26, 63, 28, 28, 65, 28, 27, 66, 27, 26, 66, 30, 28, 68, 29, 28, 69, 29, 29, 72, 24, 29, 72, 26, 30, 74, + 28, 32, 75, 28, 32, 76, 27, 31, 78, 28, 33, 81, 28, 33, 80, 30, 35, 81, 29, 34, 82, 30, 34, 83, 32, 36, 85, 31, 36, 85, 32, 36, 86, 31, 36, 87, 35, 39, 89, 36, 40, 90, 34, 40, 90, 40, 44, 95, 41, 44, 95, 45, 47, 98, 48, 48, 99, 53, 49, 101, 58, 53, 106, + 61, 52, 109, 68, 55, 111, 70, 55, 113, 76, 55, 115, 79, 54, 115, 76, 50, 109, 74, 49, 107, 68, 42, 99, 63, 41, 92, 57, 37, 83, 52, 33, 77, 44, 29, 69, 36, 24, 62, 29, 19, 52, 19, 15, 45, 16, 13, 42, 13, 12, 40, 11, 11, 39, 6, 9, 37, 9, 8, 36, 7, 7, 33, + 8, 7, 30, 9, 6, 26, 10, 3, 21, 9, 2, 13, 10, 2, 10, 9, 3, 7, 9, 3, 6, 8, 2, 4, 10, 1, 4, 17, 2, 4, 29, 2, 7, 44, 3, 8, 62, 7, 9, 76, 11, 5, 91, 17, 7, 103, 27, 18, 112, 43, 40, 117, 64, 77, 116, 101, 143, 104, 112, 165, 75, 76, 131, + 72, 75, 131, 58, 66, 122, 47, 58, 115, 52, 66, 123, 55, 69, 127, 48, 60, 118, 49, 64, 121, 47, 58, 116, 38, 55, 113, 35, 57, 116, 33, 60, 120, 32, 62, 122, 27, 61, 123, 22, 60, 121, 16, 57, 120, 13, 57, 120, 13, 60, 122, 12, 60, 120, 9, 50, 110, 10, 52, 114, 6, 40, 100, + 6, 38, 95, 6, 38, 93, 9, 38, 91, 7, 37, 87, 6, 31, 82, 5, 33, 85, 6, 33, 82, 10, 38, 84, 4, 14, 51, 5, 13, 36, 2, 4, 21, 5, 9, 36, 8, 33, 74, 3, 35, 80, 4, 17, 50, 3, 1, 7, 2, 2, 6, 3, 3, 8, 4, 10, 44, 5, 24, 73, 5, 26, 72, + 3, 14, 48, 2, 3, 12, 1, 2, 3, 2, 2, 8, 4, 9, 28, 6, 27, 67, 7, 32, 75, 5, 16, 51, 3, 5, 30, 1, 2, 13, 1, 1, 10, 0, 1, 10, 0, 2, 7, 0, 1, 8, 1, 2, 14, 4, 6, 27, 6, 17, 52, 8, 34, 79, 6, 22, 66, 5, 23, 69, 8, 26, 66, + 5, 12, 39, 5, 5, 27, 3, 3, 25, 3, 4, 27, 2, 2, 16, 3, 2, 20, 3, 5, 21, 3, 7, 30, 2, 2, 12, 2, 3, 14, 2, 4, 11, 3, 3, 13, 1, 1, 3, 2, 2, 5, 1, 2, 7, 3, 4, 11, 3, 4, 10, 2, 5, 22, 4, 13, 42, 4, 18, 59, 5, 28, 75, + 4, 24, 66, 3, 5, 35, 4, 22, 67, 5, 27, 74, 6, 25, 72, 6, 23, 67, 5, 29, 74, 5, 23, 67, 4, 21, 65, 3, 9, 46, 4, 7, 31, 4, 26, 66, 6, 44, 93, 3, 29, 79, 3, 26, 76, 6, 31, 78, 4, 23, 69, 4, 30, 78, 5, 15, 59, 3, 5, 32, 3, 2, 21, + 2, 3, 15, 2, 3, 16, 3, 5, 29, 3, 10, 43, 6, 26, 64, 4, 15, 48, 2, 2, 28, 3, 9, 44, 3, 10, 45, 2, 10, 46, 3, 12, 48, 3, 18, 59, 4, 17, 58, 3, 7, 41, 1, 1, 31, 3, 5, 33, 5, 10, 39, 4, 11, 39, 3, 6, 27, 3, 5, 20, 2, 3, 16, + 2, 5, 16, 1, 1, 8, 1, 2, 13, 13, 2, 16, 15, 3, 16, 13, 3, 15, 16, 3, 18, 18, 4, 20, 17, 7, 24, 18, 7, 31, 18, 8, 32, 19, 11, 37, 19, 12, 40, 20, 14, 41, 22, 13, 44, 24, 15, 45, 23, 14, 44, 22, 15, 45, 22, 14, 44, 22, 18, 47, 20, 18, 46, + 20, 17, 45, 21, 18, 46, 22, 20, 48, 20, 16, 46, 20, 17, 45, 21, 15, 45, 19, 13, 42, 20, 13, 41, 19, 11, 39, 18, 10, 38, 19, 13, 41, 18, 12, 42, 19, 13, 44, 20, 15, 45, 21, 17, 46, 21, 16, 47, 22, 19, 50, 21, 19, 49, 22, 22, 53, 21, 21, 54, 22, 22, 54, + 22, 23, 57, 24, 24, 60, 22, 24, 60, 23, 25, 62, 21, 24, 60, 24, 26, 63, 26, 29, 65, 26, 29, 67, 29, 29, 69, 27, 28, 67, 29, 29, 67, 30, 30, 69, 28, 29, 70, 28, 30, 72, 27, 30, 73, 24, 29, 73, 25, 31, 76, 27, 32, 76, 26, 32, 79, 26, 32, 79, 26, 33, 81, + 27, 33, 81, 29, 35, 82, 28, 33, 81, 31, 36, 85, 29, 34, 84, 28, 35, 84, 29, 35, 85, 30, 36, 86, 33, 39, 89, 36, 41, 92, 38, 43, 93, 42, 45, 98, 43, 46, 98, 48, 51, 102, 52, 51, 103, 56, 52, 104, 59, 53, 108, 64, 55, 112, 69, 55, 112, 71, 57, 114, 73, 55, 113, + 75, 52, 111, 70, 48, 105, 62, 40, 96, 58, 39, 90, 50, 34, 81, 44, 30, 72, 39, 26, 66, 30, 23, 57, 25, 18, 50, 18, 15, 45, 10, 9, 38, 8, 8, 36, 8, 9, 36, 7, 9, 36, 6, 6, 35, 7, 6, 34, 5, 7, 32, 7, 6, 31, 6, 4, 25, 9, 4, 22, 10, 3, 17, + 8, 2, 13, 8, 2, 10, 9, 2, 8, 10, 2, 7, 12, 2, 5, 21, 3, 7, 32, 3, 9, 47, 5, 11, 63, 8, 10, 78, 17, 15, 95, 40, 41, 114, 77, 93, 124, 129, 175, 108, 121, 180, 84, 89, 145, 68, 70, 123, 60, 63, 121, 60, 69, 128, 59, 74, 135, 50, 68, 129, 53, 77, 140, + 46, 66, 128, 50, 70, 131, 45, 65, 126, 48, 69, 130, 38, 60, 120, 33, 58, 120, 27, 57, 119, 21, 53, 117, 19, 59, 121, 15, 57, 122, 16, 63, 127, 16, 67, 131, 13, 63, 128, 14, 65, 131, 13, 62, 125, 10, 56, 119, 5, 49, 110, 10, 52, 115, 13, 51, 112, 11, 45, 104, 11, 43, 100, + 11, 42, 96, 9, 38, 91, 9, 39, 91, 8, 41, 94, 4, 29, 77, 7, 32, 82, 6, 31, 76, 6, 22, 57, 5, 13, 38, 3, 10, 32, 3, 4, 19, 2, 3, 7, 2, 1, 3, 2, 1, 3, 3, 9, 25, 7, 22, 61, 4, 25, 67, 3, 26, 70, 4, 13, 42, 2, 1, 10, 2, 1, 4, + 1, 2, 3, 3, 6, 25, 5, 23, 63, 5, 24, 63, 4, 12, 43, 2, 2, 16, 2, 2, 14, 1, 2, 10, 1, 2, 7, 2, 2, 5, 1, 2, 4, 2, 4, 12, 6, 14, 44, 3, 8, 47, 5, 15, 56, 8, 38, 83, 6, 23, 64, 6, 14, 46, 3, 5, 29, 4, 6, 29, 7, 16, 45, + 5, 13, 37, 5, 6, 31, 5, 10, 32, 5, 9, 30, 2, 2, 12, 4, 6, 21, 3, 4, 11, 3, 4, 11, 1, 2, 5, 1, 2, 3, 1, 2, 4, 2, 2, 6, 1, 2, 7, 2, 3, 20, 4, 10, 39, 4, 15, 51, 5, 27, 69, 5, 16, 57, 4, 7, 40, 5, 17, 57, 4, 25, 71, + 3, 21, 68, 3, 20, 67, 5, 30, 75, 4, 27, 74, 3, 20, 65, 4, 15, 49, 3, 6, 28, 4, 12, 40, 4, 19, 61, 4, 31, 78, 5, 46, 95, 3, 24, 70, 4, 21, 67, 3, 36, 82, 5, 19, 61, 3, 10, 41, 3, 3, 18, 1, 2, 5, 2, 2, 11, 2, 2, 23, 2, 4, 31, + 3, 14, 47, 3, 9, 40, 3, 4, 34, 5, 11, 44, 3, 9, 42, 4, 15, 47, 3, 4, 31, 4, 17, 54, 4, 24, 64, 3, 7, 39, 3, 4, 28, 2, 7, 36, 3, 4, 31, 2, 6, 31, 3, 3, 20, 2, 3, 15, 1, 2, 14, 1, 2, 8, 2, 1, 11, 2, 1, 6, 14, 8, 28, + 12, 9, 29, 12, 10, 33, 13, 12, 38, 13, 15, 42, 11, 17, 49, 12, 21, 54, 15, 24, 61, 15, 25, 61, 14, 26, 64, 19, 27, 67, 20, 29, 69, 19, 28, 68, 19, 29, 67, 20, 29, 66, 21, 30, 67, 20, 28, 64, 22, 29, 64, 22, 30, 64, 20, 28, 65, 21, 30, 66, 18, 30, 67, + 18, 28, 65, 18, 27, 64, 16, 26, 60, 17, 24, 56, 16, 23, 56, 17, 23, 54, 18, 23, 55, 20, 25, 57, 20, 27, 62, 22, 29, 63, 23, 31, 65, 24, 32, 67, 22, 32, 67, 22, 33, 71, 22, 32, 70, 23, 33, 72, 26, 33, 76, 27, 35, 78, 27, 35, 79, 25, 35, 80, 27, 37, 80, + 27, 37, 83, 30, 39, 85, 29, 37, 82, 31, 39, 82, 32, 38, 83, 31, 38, 82, 32, 38, 83, 33, 38, 83, 31, 37, 83, 30, 37, 83, 28, 37, 83, 28, 38, 84, 29, 39, 85, 30, 39, 89, 29, 38, 89, 29, 40, 90, 28, 40, 91, 31, 42, 92, 31, 40, 90, 33, 41, 92, 34, 43, 93, + 35, 43, 93, 34, 42, 94, 34, 44, 96, 35, 45, 98, 37, 49, 101, 40, 50, 103, 45, 53, 107, 46, 54, 108, 49, 54, 108, 56, 57, 110, 59, 58, 111, 62, 60, 114, 66, 62, 115, 70, 63, 118, 72, 63, 119, 75, 63, 119, 73, 59, 115, 71, 55, 111, 66, 50, 104, 60, 46, 97, 52, 43, 89, + 47, 40, 81, 41, 35, 74, 36, 32, 68, 32, 30, 63, 26, 26, 58, 20, 23, 54, 15, 23, 54, 12, 22, 53, 12, 21, 52, 11, 21, 52, 13, 20, 51, 11, 17, 49, 11, 17, 48, 13, 16, 47, 12, 16, 42, 15, 14, 39, 15, 13, 35, 14, 11, 30, 13, 9, 26, 15, 8, 24, 20, 10, 24, + 23, 9, 23, 30, 9, 23, 40, 12, 26, 54, 20, 30, 70, 32, 44, 93, 72, 97, 124, 137, 186, 121, 146, 203, 88, 106, 169, 74, 83, 142, 63, 71, 130, 58, 66, 124, 62, 73, 134, 60, 86, 151, 55, 86, 155, 55, 93, 164, 56, 99, 172, 52, 88, 157, 53, 91, 161, 46, 83, 156, 54, 96, 171, + 46, 87, 157, 48, 85, 155, 32, 72, 139, 31, 75, 143, 30, 77, 145, 17, 65, 132, 14, 65, 133, 13, 67, 135, 13, 66, 132, 13, 66, 134, 18, 69, 135, 16, 64, 131, 13, 62, 128, 10, 55, 120, 16, 59, 124, 12, 54, 119, 22, 65, 130, 11, 45, 105, 8, 44, 100, 16, 55, 111, 9, 46, 101, + 3, 38, 90, 9, 42, 94, 9, 48, 101, 10, 46, 101, 4, 39, 92, 6, 36, 84, 7, 19, 53, 5, 18, 42, 4, 6, 17, 3, 7, 13, 2, 2, 7, 3, 2, 14, 2, 5, 27, 5, 17, 54, 4, 17, 52, 3, 7, 29, 1, 2, 8, 1, 1, 4, 2, 3, 16, 4, 15, 52, 4, 20, 59, + 6, 22, 57, 3, 4, 30, 3, 4, 22, 2, 2, 16, 2, 3, 15, 1, 1, 5, 1, 1, 5, 2, 3, 6, 3, 7, 25, 5, 18, 53, 5, 15, 53, 4, 21, 58, 4, 18, 59, 6, 34, 72, 3, 5, 31, 4, 7, 36, 5, 19, 55, 9, 35, 75, 7, 17, 50, 6, 16, 46, 3, 4, 21, + 2, 3, 13, 4, 5, 18, 5, 8, 24, 2, 3, 12, 1, 2, 6, 2, 3, 6, 2, 1, 2, 2, 2, 6, 1, 2, 5, 1, 2, 8, 3, 5, 20, 3, 12, 44, 4, 22, 63, 4, 13, 53, 3, 9, 44, 4, 11, 47, 5, 35, 81, 5, 38, 85, 4, 24, 72, 5, 27, 74, 5, 41, 87, + 5, 23, 69, 5, 13, 48, 2, 2, 19, 3, 3, 21, 3, 15, 52, 4, 44, 94, 3, 38, 86, 5, 21, 66, 4, 30, 74, 4, 28, 70, 3, 7, 43, 4, 7, 35, 2, 3, 15, 2, 1, 7, 1, 3, 12, 2, 6, 28, 3, 4, 29, 3, 3, 31, 2, 3, 27, 3, 3, 25, 3, 7, 39, + 5, 14, 46, 3, 10, 34, 1, 3, 21, 5, 19, 54, 5, 27, 65, 3, 6, 35, 3, 2, 21, 1, 4, 28, 3, 11, 40, 3, 4, 26, 1, 2, 12, 2, 4, 15, 0, 2, 14, 1, 2, 7, 1, 2, 11, 1, 1, 10, 7, 18, 49, 6, 18, 54, 6, 21, 60, 7, 23, 65, 5, 27, 70, + 8, 29, 77, 9, 33, 81, 13, 35, 86, 15, 38, 90, 14, 37, 92, 17, 40, 95, 18, 40, 95, 16, 40, 95, 17, 41, 95, 18, 42, 98, 18, 43, 98, 17, 42, 98, 19, 42, 97, 18, 42, 97, 15, 42, 94, 16, 42, 93, 14, 41, 93, 11, 41, 93, 10, 39, 92, 9, 40, 93, 8, 38, 92, + 9, 37, 89, 9, 36, 88, 13, 37, 87, 16, 40, 91, 19, 40, 90, 21, 44, 95, 21, 44, 97, 21, 45, 99, 20, 48, 101, 18, 47, 102, 21, 49, 104, 24, 49, 105, 27, 50, 108, 27, 50, 108, 27, 51, 109, 28, 53, 112, 27, 53, 113, 28, 54, 113, 31, 54, 113, 31, 54, 113, 33, 54, 115, + 32, 53, 111, 32, 53, 111, 30, 52, 111, 30, 52, 110, 29, 50, 106, 30, 50, 108, 29, 50, 108, 28, 50, 106, 28, 50, 106, 29, 52, 110, 29, 52, 110, 31, 53, 113, 28, 53, 114, 29, 53, 115, 33, 56, 115, 33, 56, 116, 34, 55, 113, 37, 57, 117, 36, 59, 120, 37, 59, 120, 39, 61, 123, + 42, 64, 126, 44, 66, 128, 48, 65, 128, 53, 71, 132, 55, 70, 131, 60, 72, 132, 64, 74, 134, 67, 77, 138, 69, 77, 138, 72, 78, 138, 74, 80, 139, 74, 79, 135, 73, 75, 130, 72, 72, 126, 65, 67, 120, 60, 64, 115, 54, 60, 109, 48, 57, 104, 39, 52, 98, 36, 50, 95, 31, 49, 96, + 27, 48, 97, 24, 48, 95, 18, 48, 96, 16, 48, 98, 17, 48, 99, 14, 46, 97, 17, 47, 97, 19, 47, 95, 21, 45, 94, 19, 42, 91, 20, 42, 90, 21, 43, 89, 21, 42, 85, 19, 39, 82, 21, 39, 79, 24, 37, 74, 29, 38, 77, 31, 38, 74, 40, 43, 79, 52, 52, 89, 73, 78, 117, + 96, 109, 167, 106, 130, 201, 86, 107, 177, 66, 81, 145, 60, 78, 142, 57, 75, 138, 58, 76, 137, 58, 84, 149, 60, 91, 159, 60, 93, 164, 51, 85, 155, 59, 98, 173, 59, 103, 181, 58, 105, 183, 62, 107, 185, 54, 103, 181, 58, 105, 182, 55, 107, 187, 63, 119, 202, 39, 100, 179, 39, 97, 173, + 33, 88, 159, 26, 82, 153, 26, 84, 155, 22, 78, 148, 22, 75, 144, 15, 68, 138, 15, 67, 135, 10, 62, 133, 16, 68, 138, 16, 67, 138, 25, 76, 147, 21, 71, 142, 28, 77, 147, 21, 64, 130, 17, 60, 125, 19, 67, 132, 16, 63, 126, 14, 58, 121, 18, 60, 121, 11, 50, 110, 14, 55, 113, + 9, 44, 98, 7, 38, 91, 10, 47, 102, 4, 43, 97, 4, 29, 81, 9, 40, 83, 5, 15, 46, 4, 10, 29, 3, 4, 16, 3, 4, 20, 4, 10, 39, 4, 17, 46, 4, 7, 24, 1, 1, 2, 2, 3, 10, 5, 11, 38, 6, 16, 51, 4, 16, 55, 4, 13, 49, 4, 9, 39, 2, 2, 23, + 5, 8, 32, 2, 5, 20, 1, 2, 7, 2, 2, 5, 2, 2, 11, 4, 6, 28, 3, 7, 35, 5, 8, 35, 4, 18, 51, 3, 11, 39, 6, 19, 50, 3, 6, 33, 5, 15, 48, 4, 13, 45, 4, 7, 27, 4, 5, 26, 3, 4, 20, 2, 3, 10, 2, 2, 7, 2, 2, 9, 3, 4, 15, + 2, 2, 10, 2, 3, 5, 1, 1, 1, 2, 3, 7, 4, 4, 13, 2, 3, 13, 4, 5, 20, 3, 9, 36, 4, 16, 52, 3, 22, 65, 4, 18, 57, 5, 6, 32, 5, 18, 56, 6, 30, 72, 4, 34, 80, 3, 25, 72, 3, 27, 75, 4, 20, 65, 5, 15, 52, 2, 4, 24, 1, 3, 18, + 2, 18, 55, 4, 41, 88, 4, 19, 64, 5, 28, 72, 5, 27, 72, 5, 28, 67, 4, 12, 46, 2, 3, 23, 1, 1, 10, 2, 2, 6, 1, 3, 13, 4, 8, 28, 2, 3, 25, 2, 4, 30, 2, 5, 29, 3, 4, 21, 4, 12, 42, 3, 7, 36, 3, 5, 28, 1, 3, 19, 3, 13, 49, + 2, 22, 62, 2, 6, 29, 2, 2, 13, 3, 8, 31, 2, 8, 34, 2, 3, 20, 2, 1, 12, 2, 2, 12, 2, 3, 13, 1, 2, 9, 1, 1, 9, 2, 3, 16, 4, 26, 73, 6, 30, 81, 6, 33, 86, 7, 34, 89, 6, 37, 93, 9, 40, 100, 11, 44, 106, 12, 47, 110, 13, 49, 113, + 15, 50, 115, 17, 52, 116, 16, 51, 113, 17, 53, 116, 18, 54, 118, 18, 56, 120, 20, 56, 121, 18, 55, 121, 19, 56, 121, 16, 55, 121, 17, 57, 123, 16, 57, 123, 15, 58, 122, 14, 56, 122, 14, 57, 121, 14, 56, 121, 14, 55, 121, 12, 54, 121, 11, 53, 119, 15, 55, 119, 16, 56, 121, + 20, 58, 124, 23, 61, 126, 24, 63, 129, 23, 64, 130, 23, 66, 132, 23, 65, 131, 25, 67, 132, 27, 68, 136, 30, 68, 137, 30, 68, 138, 31, 70, 140, 33, 72, 140, 32, 71, 138, 34, 73, 141, 36, 73, 143, 35, 72, 142, 36, 71, 141, 38, 73, 141, 35, 71, 139, 34, 70, 136, 34, 70, 136, + 31, 66, 134, 34, 67, 134, 33, 67, 136, 30, 65, 134, 30, 67, 135, 31, 68, 136, 32, 69, 136, 35, 70, 139, 34, 71, 139, 35, 72, 140, 37, 74, 141, 36, 74, 142, 39, 76, 144, 41, 77, 145, 40, 77, 146, 42, 78, 148, 47, 82, 152, 49, 83, 153, 51, 84, 154, 52, 84, 156, 57, 86, 158, + 60, 88, 158, 62, 88, 159, 65, 90, 161, 66, 90, 161, 69, 92, 163, 69, 93, 164, 70, 94, 161, 71, 94, 161, 71, 92, 159, 68, 90, 156, 64, 86, 152, 61, 85, 148, 54, 81, 146, 47, 78, 142, 42, 76, 139, 35, 73, 137, 35, 72, 136, 34, 72, 137, 34, 75, 140, 31, 75, 140, 30, 75, 139, + 31, 77, 141, 32, 76, 142, 34, 76, 141, 38, 78, 142, 37, 78, 142, 37, 76, 142, 35, 75, 140, 34, 73, 137, 34, 72, 135, 36, 72, 135, 36, 70, 133, 38, 70, 131, 41, 71, 133, 47, 74, 135, 60, 88, 153, 82, 116, 189, 91, 133, 217, 85, 111, 186, 68, 89, 152, 56, 79, 146, 59, 84, 150, + 58, 82, 147, 54, 79, 145, 54, 84, 151, 51, 85, 155, 49, 83, 151, 46, 80, 150, 44, 78, 151, 52, 91, 165, 64, 111, 193, 70, 123, 207, 69, 123, 207, 60, 108, 190, 51, 102, 182, 62, 121, 205, 65, 129, 214, 50, 112, 193, 51, 112, 194, 50, 117, 199, 44, 109, 190, 39, 103, 181, 34, 96, 173, + 40, 100, 177, 26, 82, 154, 27, 81, 153, 23, 77, 150, 25, 78, 150, 14, 66, 138, 29, 81, 155, 21, 75, 149, 35, 93, 168, 45, 105, 183, 26, 79, 151, 19, 72, 142, 15, 67, 135, 19, 68, 138, 16, 62, 128, 13, 55, 118, 13, 53, 113, 16, 59, 117, 11, 49, 105, 9, 47, 100, 13, 53, 108, + 9, 48, 104, 13, 53, 110, 7, 43, 99, 7, 41, 94, 6, 24, 68, 7, 22, 52, 6, 11, 33, 4, 9, 28, 4, 7, 26, 2, 2, 13, 2, 2, 4, 2, 1, 6, 3, 6, 25, 4, 16, 50, 5, 23, 64, 7, 22, 63, 3, 6, 34, 4, 16, 51, 3, 22, 57, 3, 1, 16, 1, 2, 9, + 3, 2, 13, 3, 3, 18, 2, 3, 21, 4, 4, 25, 3, 5, 26, 2, 4, 20, 3, 3, 19, 5, 8, 34, 3, 5, 32, 5, 13, 42, 3, 5, 23, 2, 2, 15, 2, 3, 15, 1, 2, 7, 1, 1, 4, 1, 2, 7, 3, 4, 14, 3, 3, 10, 1, 2, 3, 2, 1, 1, 1, 2, 2, + 1, 1, 5, 3, 4, 13, 3, 4, 12, 5, 9, 27, 3, 9, 39, 4, 20, 60, 4, 25, 66, 3, 3, 27, 3, 5, 28, 4, 9, 41, 4, 23, 61, 5, 33, 78, 4, 30, 75, 6, 31, 78, 7, 31, 73, 2, 3, 24, 2, 2, 16, 3, 13, 48, 3, 25, 71, 4, 17, 61, 4, 32, 77, + 3, 24, 68, 3, 18, 54, 3, 6, 30, 2, 5, 24, 2, 5, 17, 1, 1, 5, 1, 4, 15, 5, 11, 35, 2, 4, 30, 3, 6, 33, 3, 6, 31, 3, 4, 22, 3, 9, 33, 3, 8, 36, 2, 4, 27, 2, 5, 23, 4, 14, 51, 4, 18, 56, 3, 4, 25, 2, 2, 12, 2, 4, 26, + 2, 6, 29, 1, 1, 16, 2, 4, 21, 2, 2, 10, 1, 2, 11, 2, 3, 13, 1, 2, 12, 2, 2, 16, 7, 40, 98, 7, 43, 101, 7, 44, 105, 8, 46, 111, 10, 48, 115, 11, 52, 120, 13, 55, 123, 15, 58, 127, 15, 59, 128, 17, 60, 129, 19, 61, 130, 19, 62, 132, 19, 65, 136, + 20, 66, 138, 21, 67, 138, 22, 67, 140, 21, 67, 141, 19, 69, 141, 19, 68, 141, 18, 69, 140, 18, 67, 141, 20, 69, 142, 20, 70, 144, 20, 68, 142, 20, 69, 143, 17, 68, 142, 19, 69, 143, 18, 68, 142, 21, 71, 144, 21, 71, 146, 26, 74, 150, 26, 76, 151, 27, 78, 154, 31, 81, 157, + 30, 81, 157, 30, 82, 158, 33, 83, 157, 32, 82, 157, 34, 83, 159, 37, 86, 163, 35, 86, 163, 39, 89, 164, 38, 87, 165, 40, 88, 166, 41, 88, 165, 42, 89, 165, 43, 88, 167, 43, 88, 166, 43, 86, 164, 40, 85, 161, 38, 81, 157, 36, 83, 158, 37, 83, 157, 37, 82, 157, 38, 83, 160, + 40, 85, 160, 39, 85, 160, 41, 87, 163, 42, 86, 164, 44, 89, 167, 44, 89, 165, 45, 89, 165, 45, 89, 165, 49, 92, 167, 49, 91, 166, 48, 91, 167, 51, 96, 173, 53, 98, 175, 57, 99, 177, 57, 101, 178, 58, 100, 180, 62, 102, 182, 60, 102, 182, 65, 103, 182, 67, 105, 183, 68, 106, 184, + 71, 107, 187, 70, 107, 187, 72, 108, 188, 72, 108, 187, 71, 107, 185, 70, 106, 183, 67, 104, 181, 65, 102, 178, 62, 100, 177, 59, 97, 172, 55, 98, 172, 54, 97, 173, 53, 97, 173, 53, 98, 174, 53, 100, 175, 52, 99, 176, 54, 100, 178, 55, 102, 179, 56, 102, 179, 58, 103, 181, 60, 105, 181, + 58, 103, 179, 59, 103, 180, 59, 103, 178, 57, 101, 178, 57, 101, 177, 57, 100, 176, 56, 100, 176, 60, 103, 180, 69, 109, 190, 79, 119, 204, 81, 125, 208, 72, 108, 185, 63, 92, 164, 65, 91, 160, 47, 78, 145, 51, 82, 149, 50, 86, 154, 47, 85, 154, 49, 88, 159, 51, 92, 164, 43, 83, 154, + 41, 79, 149, 39, 76, 147, 39, 75, 150, 51, 92, 166, 51, 96, 172, 53, 98, 177, 58, 108, 188, 52, 103, 182, 45, 98, 178, 47, 101, 181, 48, 107, 186, 40, 102, 183, 49, 111, 192, 61, 128, 213, 55, 121, 207, 70, 135, 226, 69, 137, 227, 51, 116, 201, 46, 110, 193, 44, 106, 186, 40, 101, 180, + 38, 96, 174, 27, 81, 159, 26, 79, 156, 20, 75, 150, 23, 80, 155, 29, 85, 159, 23, 76, 148, 22, 74, 146, 21, 72, 144, 20, 70, 142, 18, 66, 137, 32, 78, 150, 28, 78, 148, 16, 62, 128, 15, 57, 121, 14, 56, 117, 20, 62, 125, 24, 67, 130, 17, 59, 118, 10, 46, 103, 12, 49, 104, + 6, 45, 102, 16, 59, 119, 16, 56, 115, 15, 54, 109, 8, 31, 70, 2, 9, 30, 2, 4, 18, 2, 3, 10, 1, 1, 8, 4, 4, 16, 5, 15, 44, 4, 23, 61, 3, 14, 50, 5, 24, 63, 4, 27, 69, 3, 8, 35, 3, 5, 27, 2, 5, 19, 2, 2, 13, 2, 2, 14, 2, 3, 14, + 2, 4, 16, 4, 9, 29, 2, 3, 13, 3, 4, 23, 4, 10, 35, 4, 9, 36, 3, 2, 13, 1, 2, 9, 1, 2, 5, 2, 1, 6, 1, 1, 5, 1, 2, 9, 1, 3, 9, 2, 2, 3, 1, 1, 2, 1, 1, 3, 2, 2, 3, 1, 2, 3, 2, 2, 10, 1, 2, 6, 2, 2, 8, + 3, 6, 24, 3, 16, 50, 2, 17, 55, 4, 6, 32, 2, 4, 22, 3, 11, 36, 3, 7, 31, 5, 22, 60, 4, 32, 78, 4, 24, 67, 3, 17, 55, 3, 3, 21, 2, 3, 19, 4, 12, 46, 3, 25, 69, 4, 26, 72, 5, 31, 78, 4, 24, 68, 3, 12, 46, 2, 1, 16, 2, 3, 17, + 2, 4, 17, 2, 2, 7, 1, 2, 15, 3, 7, 32, 2, 6, 32, 3, 7, 35, 4, 7, 34, 3, 5, 25, 2, 3, 20, 3, 9, 35, 3, 8, 33, 2, 7, 28, 4, 23, 59, 3, 18, 53, 3, 2, 20, 2, 1, 13, 3, 4, 23, 2, 2, 20, 1, 2, 15, 2, 3, 16, 1, 2, 6, + 1, 2, 6, 2, 3, 11, 1, 3, 11, 2, 2, 12, 10, 51, 116, 10, 54, 120, 11, 55, 123, 13, 56, 126, 14, 59, 130, 14, 62, 134, 15, 65, 136, 17, 66, 139, 16, 66, 138, 19, 68, 141, 19, 67, 141, 21, 72, 145, 22, 72, 145, 24, 75, 149, 25, 75, 150, 27, 76, 152, 26, 76, 152, + 27, 77, 151, 26, 76, 151, 23, 75, 148, 24, 76, 149, 23, 75, 149, 25, 76, 150, 26, 76, 150, 27, 78, 152, 24, 76, 152, 24, 76, 153, 25, 79, 154, 27, 79, 156, 27, 81, 158, 28, 81, 159, 31, 85, 163, 33, 87, 165, 34, 90, 169, 34, 90, 170, 35, 91, 171, 37, 91, 171, 36, 91, 173, + 39, 93, 173, 40, 95, 177, 39, 95, 176, 42, 97, 178, 42, 97, 179, 43, 96, 178, 43, 96, 177, 45, 98, 180, 43, 96, 178, 45, 97, 178, 45, 94, 176, 44, 94, 176, 43, 92, 173, 43, 93, 173, 41, 92, 171, 42, 93, 173, 43, 91, 172, 45, 94, 175, 46, 96, 176, 46, 96, 178, 48, 98, 180, + 48, 98, 181, 48, 100, 181, 50, 99, 182, 49, 100, 182, 52, 102, 183, 52, 102, 184, 52, 104, 185, 55, 106, 190, 56, 107, 192, 58, 110, 193, 60, 111, 195, 64, 114, 198, 62, 114, 198, 63, 115, 199, 66, 115, 199, 68, 117, 200, 67, 117, 201, 71, 119, 202, 71, 120, 204, 69, 118, 203, 73, 120, 207, + 70, 120, 205, 70, 120, 204, 69, 117, 200, 68, 116, 199, 67, 116, 199, 67, 114, 197, 65, 114, 198, 66, 115, 199, 64, 116, 200, 63, 115, 201, 65, 118, 203, 65, 118, 204, 68, 121, 207, 69, 122, 208, 70, 122, 209, 71, 122, 210, 72, 123, 211, 70, 125, 211, 70, 124, 209, 70, 125, 211, 72, 124, 210, + 73, 123, 209, 75, 123, 211, 78, 125, 212, 79, 125, 211, 81, 122, 208, 77, 120, 204, 75, 123, 204, 63, 106, 182, 35, 73, 140, 31, 70, 137, 33, 73, 140, 40, 80, 149, 44, 93, 163, 41, 94, 168, 43, 95, 169, 44, 91, 165, 45, 98, 174, 49, 104, 182, 43, 95, 171, 40, 87, 161, 50, 95, 167, + 39, 85, 159, 34, 81, 155, 45, 95, 172, 54, 104, 182, 53, 103, 180, 41, 94, 172, 43, 100, 178, 44, 105, 185, 48, 109, 192, 53, 118, 203, 46, 110, 194, 58, 122, 209, 57, 121, 208, 50, 114, 199, 54, 117, 202, 56, 119, 203, 54, 118, 201, 53, 119, 203, 44, 105, 188, 38, 93, 172, 35, 91, 168, + 35, 92, 171, 43, 101, 180, 36, 95, 173, 41, 98, 176, 36, 91, 168, 31, 82, 155, 28, 78, 152, 41, 96, 172, 43, 102, 180, 28, 78, 152, 24, 73, 144, 23, 72, 142, 12, 60, 128, 21, 68, 135, 22, 66, 129, 10, 48, 106, 19, 59, 121, 12, 55, 117, 16, 58, 120, 25, 68, 130, 11, 51, 108, + 12, 45, 103, 8, 38, 92, 4, 23, 68, 3, 17, 54, 4, 12, 42, 5, 12, 37, 2, 8, 26, 4, 6, 24, 3, 7, 33, 5, 9, 34, 5, 17, 53, 6, 25, 64, 5, 18, 52, 5, 16, 46, 3, 7, 29, 3, 4, 19, 2, 3, 16, 2, 4, 25, 3, 5, 25, 3, 4, 19, 2, 2, 14, + 4, 12, 37, 5, 11, 33, 2, 2, 12, 2, 3, 12, 2, 2, 8, 2, 3, 10, 1, 2, 7, 2, 2, 7, 3, 3, 7, 1, 1, 2, 2, 2, 5, 3, 5, 13, 4, 4, 11, 2, 1, 7, 2, 2, 10, 1, 2, 8, 1, 2, 4, 2, 3, 14, 4, 9, 33, 4, 14, 46, 4, 10, 42, + 4, 6, 27, 2, 2, 18, 2, 2, 21, 2, 7, 37, 4, 19, 58, 4, 14, 53, 3, 15, 50, 3, 6, 32, 3, 4, 28, 4, 17, 53, 5, 34, 79, 4, 27, 73, 3, 18, 59, 5, 33, 79, 3, 22, 58, 3, 5, 26, 1, 2, 13, 2, 2, 14, 0, 2, 9, 3, 5, 23, 3, 6, 28, + 2, 4, 29, 4, 6, 35, 3, 11, 40, 2, 5, 25, 2, 2, 15, 2, 3, 18, 2, 3, 24, 3, 6, 30, 3, 16, 49, 3, 8, 38, 3, 2, 17, 1, 2, 10, 2, 3, 16, 2, 2, 15, 1, 3, 18, 2, 2, 14, 1, 1, 6, 1, 1, 2, 0, 1, 5, 1, 2, 7, 1, 2, 10, + 14, 58, 126, 13, 59, 126, 15, 61, 129, 16, 61, 130, 16, 62, 132, 16, 64, 135, 16, 64, 136, 16, 65, 137, 18, 67, 139, 19, 69, 141, 21, 70, 143, 22, 71, 144, 25, 74, 148, 26, 76, 150, 25, 76, 149, 26, 77, 149, 25, 76, 148, 27, 76, 150, 24, 75, 149, 23, 75, 147, 21, 74, 146, + 21, 74, 146, 22, 74, 146, 24, 75, 149, 27, 77, 150, 27, 79, 150, 29, 79, 153, 28, 82, 155, 28, 81, 158, 31, 84, 160, 33, 85, 163, 36, 88, 166, 38, 92, 170, 37, 92, 172, 37, 92, 171, 38, 94, 172, 39, 94, 175, 39, 93, 173, 43, 98, 178, 41, 97, 177, 43, 98, 179, 41, 98, 179, + 43, 99, 180, 46, 102, 182, 46, 101, 182, 46, 101, 183, 47, 102, 182, 47, 102, 183, 46, 100, 180, 44, 97, 177, 47, 98, 179, 45, 98, 179, 43, 97, 177, 42, 96, 177, 45, 99, 178, 47, 100, 180, 46, 100, 180, 48, 102, 183, 50, 104, 187, 50, 104, 186, 50, 106, 188, 53, 107, 189, 53, 107, 190, + 54, 108, 189, 55, 110, 191, 56, 111, 195, 56, 112, 195, 59, 116, 200, 61, 117, 202, 64, 117, 205, 65, 121, 206, 64, 121, 206, 66, 121, 207, 68, 121, 206, 68, 120, 205, 69, 120, 205, 71, 122, 207, 71, 122, 208, 72, 124, 209, 75, 125, 211, 73, 123, 210, 72, 124, 210, 72, 127, 209, 70, 123, 209, + 70, 124, 209, 71, 126, 211, 71, 124, 211, 73, 126, 214, 72, 125, 211, 73, 126, 213, 74, 128, 216, 74, 128, 217, 75, 131, 221, 74, 132, 221, 75, 135, 222, 77, 135, 223, 78, 135, 225, 79, 135, 225, 75, 135, 225, 76, 136, 225, 79, 135, 223, 79, 133, 221, 74, 122, 208, 67, 108, 190, 53, 92, 165, + 44, 82, 156, 49, 94, 170, 62, 119, 199, 59, 116, 195, 19, 65, 129, 12, 58, 123, 19, 67, 134, 14, 68, 138, 24, 79, 150, 34, 92, 164, 44, 106, 185, 46, 107, 185, 46, 109, 190, 50, 117, 197, 43, 106, 186, 35, 96, 171, 30, 83, 154, 29, 78, 149, 32, 81, 153, 45, 98, 173, 52, 103, 178, + 36, 91, 165, 30, 83, 158, 38, 96, 171, 45, 103, 182, 49, 109, 192, 52, 113, 198, 41, 103, 187, 52, 114, 200, 58, 120, 206, 59, 122, 206, 53, 113, 199, 57, 119, 203, 60, 124, 210, 58, 122, 208, 56, 120, 209, 59, 121, 208, 59, 120, 205, 43, 102, 183, 45, 103, 184, 48, 108, 190, 52, 111, 194, + 51, 111, 195, 31, 84, 160, 26, 78, 152, 23, 73, 148, 31, 85, 162, 37, 90, 166, 32, 86, 158, 29, 83, 155, 21, 75, 148, 25, 82, 153, 34, 90, 163, 20, 67, 133, 22, 65, 130, 17, 58, 124, 12, 55, 118, 23, 67, 130, 16, 56, 117, 20, 59, 119, 19, 56, 115, 6, 38, 89, 6, 35, 86, + 5, 34, 83, 5, 27, 76, 5, 26, 75, 11, 38, 85, 7, 26, 67, 6, 20, 53, 3, 14, 44, 3, 9, 37, 3, 9, 36, 5, 13, 39, 4, 12, 38, 5, 10, 36, 3, 6, 28, 4, 9, 33, 3, 8, 32, 2, 4, 16, 1, 2, 8, 3, 3, 23, 3, 6, 26, 2, 2, 11, 2, 2, 9, + 1, 2, 6, 3, 5, 12, 3, 3, 6, 2, 2, 3, 2, 2, 3, 1, 1, 3, 3, 3, 9, 6, 8, 22, 3, 2, 11, 3, 4, 12, 3, 4, 12, 1, 2, 8, 1, 2, 6, 1, 1, 4, 1, 2, 12, 3, 9, 29, 6, 17, 50, 3, 4, 27, 2, 3, 20, 2, 4, 23, 3, 5, 30, + 3, 9, 39, 4, 12, 49, 3, 12, 47, 3, 4, 32, 3, 6, 32, 5, 20, 56, 5, 26, 72, 5, 32, 76, 4, 15, 53, 3, 21, 63, 4, 15, 53, 3, 8, 32, 1, 2, 14, 2, 2, 13, 1, 2, 9, 3, 4, 20, 1, 2, 19, 3, 5, 31, 3, 7, 39, 3, 5, 33, 2, 4, 24, + 3, 5, 22, 1, 2, 13, 2, 3, 19, 2, 4, 23, 3, 9, 36, 2, 5, 31, 3, 4, 24, 1, 2, 14, 2, 3, 17, 1, 3, 15, 3, 6, 29, 2, 6, 26, 1, 2, 6, 1, 2, 1, 1, 1, 1, 2, 2, 5, 3, 3, 14, 16, 59, 127, 14, 59, 127, 14, 60, 128, 13, 61, 128, + 15, 62, 131, 14, 61, 132, 13, 63, 134, 14, 64, 136, 15, 65, 136, 20, 68, 140, 20, 69, 140, 21, 71, 143, 22, 73, 144, 22, 72, 144, 20, 71, 144, 19, 70, 142, 18, 70, 142, 17, 70, 140, 14, 69, 140, 13, 67, 138, 12, 67, 138, 10, 65, 136, 13, 67, 137, 16, 67, 139, 18, 69, 141, + 21, 73, 145, 22, 73, 147, 22, 76, 148, 22, 77, 152, 27, 80, 157, 28, 83, 158, 31, 85, 161, 33, 87, 164, 31, 86, 166, 31, 88, 165, 34, 89, 167, 33, 90, 169, 33, 89, 169, 36, 91, 171, 36, 92, 172, 37, 94, 174, 37, 93, 174, 40, 96, 177, 41, 98, 179, 41, 98, 179, 42, 98, 180, + 42, 98, 179, 43, 99, 180, 43, 97, 178, 42, 97, 178, 41, 95, 176, 41, 95, 175, 39, 95, 175, 41, 96, 176, 43, 97, 177, 44, 99, 179, 43, 98, 179, 47, 103, 183, 48, 103, 184, 50, 105, 186, 50, 105, 187, 51, 106, 188, 52, 108, 189, 54, 108, 190, 54, 109, 191, 54, 111, 194, 55, 112, 194, + 57, 115, 198, 60, 116, 202, 60, 115, 202, 63, 118, 203, 63, 119, 203, 63, 117, 203, 63, 117, 202, 64, 117, 203, 66, 118, 203, 68, 120, 205, 67, 120, 206, 67, 121, 206, 69, 120, 207, 68, 120, 207, 69, 123, 208, 70, 122, 209, 71, 124, 211, 70, 124, 209, 71, 125, 210, 70, 123, 210, 73, 125, 213, + 71, 124, 211, 74, 127, 214, 72, 127, 213, 76, 130, 219, 76, 132, 220, 76, 134, 221, 76, 134, 223, 77, 135, 222, 77, 136, 224, 79, 134, 225, 77, 137, 225, 75, 135, 220, 70, 119, 204, 56, 97, 171, 42, 79, 147, 32, 67, 130, 22, 61, 126, 22, 68, 134, 22, 80, 150, 21, 89, 159, 17, 79, 149, + 5, 57, 121, 13, 62, 127, 17, 68, 134, 7, 63, 131, 15, 75, 145, 23, 86, 156, 41, 108, 186, 45, 113, 192, 39, 104, 184, 34, 99, 178, 21, 90, 168, 25, 90, 165, 13, 75, 146, 8, 62, 132, 19, 75, 145, 29, 90, 164, 34, 93, 167, 22, 79, 151, 20, 77, 149, 26, 82, 155, 30, 86, 161, + 46, 104, 185, 60, 119, 202, 51, 109, 191, 47, 109, 192, 46, 106, 187, 40, 100, 182, 45, 105, 188, 45, 105, 188, 48, 109, 193, 52, 114, 200, 53, 116, 205, 60, 125, 211, 62, 126, 214, 52, 114, 200, 51, 112, 198, 51, 112, 196, 54, 114, 198, 46, 105, 189, 43, 101, 182, 40, 93, 171, 52, 106, 188, + 56, 112, 193, 40, 97, 174, 24, 77, 152, 16, 70, 146, 18, 74, 147, 26, 83, 155, 23, 79, 151, 24, 75, 149, 25, 74, 145, 17, 61, 129, 21, 67, 135, 32, 77, 145, 24, 69, 137, 27, 71, 139, 16, 54, 117, 10, 50, 106, 10, 47, 102, 11, 48, 104, 14, 45, 98, 6, 30, 80, 5, 33, 83, + 11, 42, 91, 10, 42, 92, 5, 36, 84, 7, 38, 86, 8, 38, 84, 3, 23, 65, 3, 16, 54, 3, 13, 42, 4, 11, 34, 4, 8, 27, 3, 6, 26, 2, 4, 18, 1, 4, 11, 2, 4, 17, 2, 4, 17, 3, 5, 14, 2, 3, 9, 2, 2, 6, 1, 1, 1, 1, 1, 3, 2, 1, 2, + 1, 1, 3, 1, 1, 6, 2, 2, 6, 3, 2, 10, 3, 2, 9, 1, 2, 7, 2, 3, 7, 1, 1, 2, 2, 1, 3, 1, 1, 6, 2, 2, 12, 2, 3, 20, 4, 7, 35, 3, 7, 34, 2, 5, 26, 3, 6, 25, 1, 4, 20, 3, 11, 37, 3, 10, 44, 3, 11, 44, 3, 8, 35, + 3, 7, 35, 4, 18, 58, 3, 18, 60, 3, 24, 67, 3, 19, 57, 4, 10, 48, 3, 19, 60, 5, 17, 51, 3, 4, 27, 2, 3, 19, 1, 2, 13, 2, 4, 24, 3, 5, 26, 2, 5, 29, 3, 10, 40, 3, 12, 44, 3, 8, 37, 3, 6, 21, 1, 2, 11, 1, 2, 11, 2, 3, 16, + 3, 7, 30, 3, 7, 33, 3, 6, 25, 3, 3, 15, 1, 3, 14, 2, 3, 18, 2, 4, 26, 3, 7, 30, 1, 3, 11, 1, 2, 2, 1, 1, 1, 1, 2, 3, 0, 2, 6, 14, 57, 122, 13, 56, 124, 13, 57, 124, 12, 58, 125, 11, 58, 127, 12, 58, 128, 15, 62, 131, 16, 62, 132, + 17, 62, 135, 18, 64, 135, 17, 65, 135, 17, 66, 135, 15, 65, 136, 14, 63, 135, 15, 64, 135, 13, 63, 133, 11, 61, 131, 12, 63, 133, 12, 63, 132, 9, 62, 131, 8, 61, 130, 7, 60, 130, 8, 61, 131, 10, 61, 132, 14, 63, 135, 17, 67, 139, 18, 70, 143, 23, 74, 147, 25, 77, 150, + 29, 80, 155, 27, 81, 157, 31, 85, 160, 30, 85, 161, 33, 87, 163, 33, 87, 165, 34, 88, 165, 32, 89, 166, 31, 86, 165, 34, 90, 168, 34, 90, 170, 36, 93, 173, 38, 94, 175, 38, 95, 175, 39, 98, 178, 38, 97, 177, 40, 98, 179, 41, 97, 178, 41, 98, 179, 43, 98, 178, 41, 95, 176, + 40, 95, 175, 42, 95, 176, 42, 98, 176, 42, 96, 174, 41, 95, 175, 40, 95, 175, 42, 97, 177, 41, 97, 177, 41, 97, 178, 45, 100, 181, 46, 101, 183, 46, 101, 182, 46, 101, 183, 46, 101, 183, 48, 103, 184, 47, 103, 185, 48, 104, 186, 50, 106, 188, 52, 107, 190, 53, 111, 193, 54, 108, 192, + 55, 111, 195, 53, 108, 193, 56, 110, 194, 56, 109, 193, 56, 109, 193, 58, 111, 196, 58, 111, 196, 59, 111, 197, 61, 112, 198, 59, 111, 197, 61, 113, 200, 61, 112, 198, 60, 114, 199, 61, 115, 201, 62, 117, 202, 62, 116, 202, 62, 115, 202, 61, 115, 203, 64, 117, 203, 63, 116, 203, 64, 119, 205, + 66, 121, 208, 67, 122, 210, 66, 122, 210, 69, 125, 213, 69, 126, 214, 67, 124, 213, 64, 118, 203, 51, 98, 171, 35, 71, 135, 25, 58, 118, 23, 59, 120, 22, 62, 124, 25, 64, 128, 29, 74, 140, 27, 87, 158, 12, 81, 152, 5, 65, 135, 10, 67, 135, 17, 72, 137, 11, 66, 131, 10, 68, 137, + 16, 78, 148, 13, 78, 149, 18, 85, 157, 32, 100, 176, 33, 101, 178, 21, 89, 166, 21, 94, 172, 32, 100, 179, 18, 85, 156, 8, 69, 138, 18, 81, 152, 32, 99, 174, 32, 97, 172, 14, 77, 148, 16, 77, 149, 27, 86, 157, 29, 86, 160, 36, 92, 171, 43, 100, 181, 38, 95, 175, 39, 98, 177, + 44, 102, 181, 45, 105, 185, 53, 111, 191, 46, 104, 186, 44, 103, 185, 50, 110, 195, 59, 121, 207, 51, 115, 200, 53, 116, 203, 58, 123, 211, 62, 126, 213, 61, 122, 209, 60, 122, 209, 58, 121, 208, 55, 117, 205, 56, 115, 202, 50, 107, 191, 45, 101, 184, 44, 103, 182, 41, 101, 180, 43, 103, 181, + 37, 96, 172, 23, 82, 155, 17, 71, 145, 24, 76, 148, 25, 78, 151, 28, 83, 156, 19, 71, 142, 21, 68, 139, 31, 79, 149, 26, 74, 146, 20, 62, 130, 25, 69, 137, 24, 66, 135, 21, 63, 128, 15, 52, 111, 8, 40, 93, 6, 34, 84, 11, 42, 92, 4, 33, 84, 6, 35, 83, 8, 37, 87, + 5, 33, 79, 2, 17, 63, 4, 24, 69, 5, 29, 76, 11, 41, 91, 15, 43, 90, 7, 31, 73, 6, 25, 65, 5, 18, 49, 4, 16, 42, 5, 17, 43, 6, 25, 53, 6, 19, 46, 4, 11, 31, 2, 10, 24, 3, 8, 20, 2, 7, 17, 3, 5, 15, 3, 4, 15, 1, 3, 12, 2, 3, 15, + 3, 4, 19, 3, 3, 12, 2, 2, 4, 1, 2, 2, 2, 2, 7, 3, 3, 14, 3, 4, 19, 3, 5, 26, 3, 4, 26, 2, 7, 32, 3, 7, 28, 2, 2, 16, 2, 2, 14, 3, 6, 28, 4, 11, 42, 3, 9, 38, 2, 4, 28, 2, 4, 29, 3, 15, 55, 4, 13, 52, 5, 29, 68, + 2, 11, 45, 4, 12, 48, 4, 20, 58, 4, 16, 53, 3, 8, 41, 2, 5, 28, 3, 5, 24, 4, 8, 37, 2, 7, 37, 2, 9, 41, 2, 9, 41, 3, 20, 56, 3, 10, 41, 3, 4, 23, 2, 1, 11, 2, 3, 13, 1, 2, 11, 4, 7, 30, 3, 4, 25, 2, 1, 12, 2, 3, 11, + 1, 2, 11, 1, 2, 14, 2, 5, 22, 4, 10, 36, 3, 5, 25, 2, 2, 7, 1, 1, 3, 1, 2, 7, 1, 2, 7, 12, 54, 120, 12, 54, 119, 13, 55, 121, 12, 54, 122, 12, 56, 122, 13, 55, 122, 13, 58, 125, 12, 58, 125, 12, 57, 125, 14, 59, 126, 12, 58, 125, 14, 58, 126, + 12, 58, 126, 12, 57, 125, 9, 56, 123, 10, 57, 124, 9, 55, 124, 9, 57, 124, 8, 56, 124, 5, 56, 124, 6, 56, 124, 5, 56, 125, 8, 58, 128, 10, 60, 131, 13, 63, 135, 18, 68, 140, 21, 71, 144, 24, 74, 147, 28, 78, 151, 29, 79, 155, 31, 84, 160, 35, 89, 163, 35, 89, 165, + 37, 91, 167, 36, 90, 167, 34, 90, 166, 32, 88, 165, 36, 90, 168, 38, 92, 169, 36, 94, 171, 39, 95, 173, 40, 96, 176, 40, 96, 177, 42, 98, 178, 43, 100, 181, 43, 99, 180, 42, 98, 179, 43, 99, 179, 44, 98, 178, 44, 97, 178, 39, 95, 175, 38, 92, 172, 37, 92, 170, 38, 92, 170, + 35, 89, 166, 34, 88, 165, 34, 89, 167, 35, 91, 170, 36, 93, 170, 38, 94, 173, 41, 95, 174, 41, 96, 175, 39, 93, 173, 40, 95, 176, 41, 95, 174, 39, 93, 173, 41, 95, 175, 42, 97, 175, 45, 100, 180, 47, 102, 182, 47, 100, 182, 47, 101, 181, 45, 99, 180, 47, 100, 180, 47, 100, 181, + 50, 102, 183, 50, 102, 184, 51, 105, 186, 52, 104, 186, 50, 104, 186, 51, 105, 187, 51, 105, 186, 49, 104, 186, 51, 105, 187, 52, 107, 189, 52, 107, 190, 53, 108, 192, 54, 108, 191, 52, 106, 191, 52, 107, 190, 52, 106, 190, 55, 110, 194, 56, 111, 194, 55, 110, 193, 57, 112, 196, 57, 112, 197, + 55, 110, 194, 49, 100, 177, 44, 84, 155, 36, 64, 128, 17, 49, 109, 18, 53, 115, 26, 61, 123, 18, 60, 123, 19, 61, 125, 22, 70, 136, 20, 84, 156, 20, 90, 164, 11, 79, 151, 9, 74, 143, 24, 86, 154, 23, 86, 154, 18, 83, 155, 25, 89, 160, 13, 82, 152, 6, 75, 147, 13, 80, 150, + 16, 84, 157, 22, 89, 164, 35, 110, 193, 38, 116, 198, 29, 109, 187, 19, 100, 175, 23, 97, 172, 32, 102, 180, 36, 109, 189, 23, 94, 169, 15, 81, 152, 18, 82, 154, 29, 89, 163, 38, 99, 178, 34, 95, 171, 23, 80, 152, 27, 84, 157, 29, 86, 161, 35, 93, 168, 38, 95, 171, 31, 91, 170, + 37, 95, 175, 41, 98, 180, 52, 111, 194, 46, 109, 195, 51, 116, 202, 63, 127, 215, 55, 119, 205, 49, 112, 198, 50, 111, 196, 54, 116, 201, 59, 122, 210, 58, 122, 210, 58, 120, 206, 58, 118, 206, 46, 105, 188, 34, 94, 174, 37, 97, 177, 34, 94, 172, 28, 88, 164, 25, 82, 159, 31, 87, 162, + 30, 86, 163, 23, 79, 153, 19, 75, 145, 10, 58, 130, 17, 64, 135, 30, 78, 150, 28, 76, 148, 19, 62, 135, 18, 62, 134, 23, 66, 135, 26, 70, 139, 13, 51, 118, 10, 45, 102, 15, 51, 111, 8, 42, 98, 7, 34, 89, 10, 41, 95, 12, 43, 95, 5, 33, 80, 8, 35, 82, 10, 39, 85, + 4, 30, 78, 12, 39, 86, 16, 47, 95, 14, 48, 95, 7, 35, 79, 3, 27, 72, 5, 29, 75, 5, 31, 80, 7, 44, 94, 8, 42, 92, 8, 39, 89, 8, 41, 88, 5, 31, 72, 4, 21, 57, 4, 20, 54, 4, 13, 48, 3, 11, 43, 3, 8, 31, 3, 9, 29, 4, 8, 24, 2, 5, 18, + 4, 7, 25, 4, 8, 29, 4, 11, 39, 3, 6, 28, 2, 2, 17, 1, 3, 17, 2, 2, 20, 2, 2, 11, 1, 2, 8, 2, 4, 19, 4, 6, 28, 2, 4, 23, 3, 8, 32, 3, 6, 29, 4, 14, 51, 2, 18, 55, 4, 21, 57, 3, 10, 42, 4, 11, 45, 4, 18, 55, 3, 11, 46, + 3, 11, 47, 5, 11, 41, 4, 10, 42, 4, 14, 50, 3, 12, 46, 3, 10, 43, 2, 12, 46, 3, 21, 58, 4, 12, 46, 2, 7, 31, 3, 3, 17, 1, 2, 10, 1, 2, 8, 2, 3, 19, 3, 7, 28, 1, 2, 14, 1, 1, 9, 1, 3, 12, 1, 2, 4, 1, 2, 7, 3, 7, 26, + 2, 11, 38, 1, 2, 10, 1, 1, 2, 0, 2, 5, 1, 2, 9, 9, 50, 117, 9, 51, 116, 9, 51, 116, 8, 51, 116, 10, 53, 117, 9, 51, 116, 10, 51, 117, 8, 51, 116, 9, 52, 118, 11, 53, 119, 10, 52, 118, 10, 52, 118, 9, 52, 117, 8, 51, 116, 7, 49, 114, 7, 50, 115, + 9, 50, 118, 9, 52, 119, 10, 53, 120, 10, 55, 123, 10, 57, 125, 10, 59, 127, 12, 60, 131, 14, 63, 133, 19, 65, 138, 25, 72, 144, 26, 76, 149, 29, 78, 153, 32, 83, 158, 36, 87, 162, 37, 91, 165, 37, 92, 167, 38, 93, 170, 40, 95, 172, 40, 95, 171, 39, 94, 172, 37, 93, 170, + 40, 95, 172, 40, 95, 173, 42, 98, 176, 45, 101, 180, 45, 101, 181, 45, 102, 183, 46, 102, 183, 47, 103, 184, 46, 102, 184, 45, 102, 183, 44, 99, 180, 42, 98, 178, 44, 96, 176, 40, 94, 173, 37, 92, 171, 35, 89, 166, 31, 86, 163, 29, 84, 160, 28, 82, 158, 28, 84, 159, 31, 86, 163, + 29, 85, 162, 32, 87, 166, 33, 88, 166, 34, 88, 167, 34, 90, 167, 33, 88, 165, 36, 90, 167, 33, 87, 165, 35, 89, 167, 37, 91, 168, 37, 93, 171, 37, 92, 172, 39, 94, 174, 37, 94, 172, 35, 92, 170, 37, 93, 171, 40, 95, 173, 43, 96, 175, 42, 96, 176, 42, 96, 177, 44, 96, 178, + 45, 98, 178, 42, 96, 176, 42, 97, 177, 45, 101, 181, 45, 100, 181, 46, 101, 182, 45, 100, 182, 46, 101, 183, 44, 100, 182, 45, 100, 182, 45, 101, 182, 45, 100, 182, 46, 101, 183, 45, 101, 182, 45, 101, 181, 45, 100, 179, 45, 95, 172, 42, 82, 153, 38, 70, 137, 37, 71, 136, 35, 71, 134, + 22, 56, 117, 19, 55, 115, 25, 62, 124, 25, 66, 129, 19, 64, 126, 25, 73, 139, 25, 90, 164, 31, 103, 181, 25, 97, 173, 14, 81, 150, 30, 97, 167, 35, 102, 173, 28, 97, 169, 26, 96, 168, 18, 86, 156, 6, 77, 146, 8, 76, 145, 10, 77, 147, 19, 87, 158, 35, 112, 194, 48, 131, 221, + 50, 131, 220, 45, 122, 208, 31, 103, 181, 19, 95, 174, 33, 108, 188, 35, 111, 192, 21, 92, 166, 15, 83, 156, 36, 100, 177, 51, 127, 208, 43, 114, 194, 20, 80, 152, 10, 68, 139, 13, 69, 140, 15, 74, 143, 20, 76, 147, 33, 93, 169, 43, 100, 178, 37, 94, 173, 45, 101, 182, 50, 112, 194, + 53, 116, 201, 53, 117, 203, 47, 110, 198, 49, 111, 197, 46, 108, 190, 43, 104, 186, 50, 113, 200, 64, 135, 223, 68, 140, 228, 65, 134, 223, 58, 119, 207, 47, 105, 185, 47, 107, 187, 43, 102, 182, 33, 92, 170, 37, 95, 176, 42, 101, 180, 40, 98, 178, 31, 90, 166, 20, 74, 147, 16, 65, 136, + 22, 70, 142, 25, 73, 145, 22, 69, 142, 22, 69, 142, 25, 76, 148, 34, 87, 159, 20, 70, 141, 17, 62, 133, 23, 69, 138, 20, 64, 132, 16, 60, 127, 20, 62, 128, 14, 50, 108, 15, 50, 108, 8, 40, 95, 7, 35, 87, 9, 40, 90, 6, 35, 83, 7, 32, 81, 6, 27, 75, 6, 30, 76, + 4, 30, 76, 4, 25, 71, 4, 27, 72, 7, 35, 81, 15, 49, 99, 7, 39, 86, 3, 28, 75, 5, 36, 83, 11, 49, 96, 4, 28, 73, 5, 34, 79, 3, 27, 70, 4, 28, 72, 3, 24, 66, 4, 21, 62, 4, 31, 73, 3, 19, 59, 3, 15, 52, 4, 16, 51, 3, 10, 44, 3, 8, 37, + 3, 9, 37, 4, 13, 46, 3, 11, 37, 4, 8, 30, 2, 4, 18, 2, 4, 17, 2, 2, 14, 2, 2, 13, 2, 4, 23, 3, 7, 29, 3, 3, 27, 2, 5, 27, 2, 3, 26, 3, 5, 32, 4, 10, 38, 3, 13, 46, 4, 15, 53, 3, 15, 55, 3, 20, 57, 4, 16, 53, 4, 22, 62, + 3, 10, 45, 2, 4, 28, 4, 8, 43, 3, 17, 54, 3, 13, 46, 3, 3, 28, 3, 7, 31, 3, 3, 15, 1, 2, 7, 1, 2, 12, 3, 5, 22, 3, 3, 19, 2, 4, 18, 3, 5, 18, 2, 2, 2, 2, 2, 2, 2, 2, 13, 2, 4, 24, 1, 3, 13, 1, 1, 1, 1, 1, 3, + 1, 1, 4, 6, 46, 109, 5, 46, 109, 4, 44, 108, 4, 44, 108, 4, 45, 108, 4, 46, 109, 2, 45, 108, 4, 47, 109, 7, 48, 112, 5, 47, 112, 6, 48, 112, 5, 46, 110, 6, 47, 111, 5, 46, 109, 6, 47, 110, 4, 45, 110, 5, 48, 111, 9, 51, 116, 12, 55, 120, 12, 55, 123, + 16, 61, 127, 17, 63, 131, 17, 63, 134, 22, 68, 140, 26, 72, 144, 31, 76, 149, 31, 79, 154, 35, 84, 159, 38, 88, 164, 40, 90, 168, 42, 95, 170, 43, 97, 173, 45, 98, 175, 44, 99, 176, 43, 98, 175, 45, 99, 178, 46, 100, 177, 48, 100, 180, 48, 101, 180, 48, 101, 181, 50, 106, 187, + 50, 107, 187, 51, 108, 189, 53, 110, 191, 52, 108, 189, 50, 106, 188, 50, 106, 187, 47, 103, 183, 46, 102, 181, 42, 97, 176, 42, 96, 172, 38, 93, 169, 36, 89, 165, 29, 85, 160, 26, 82, 155, 25, 79, 153, 24, 79, 156, 25, 82, 156, 28, 83, 158, 31, 86, 161, 33, 87, 163, 32, 86, 163, + 34, 86, 163, 33, 86, 162, 32, 84, 161, 32, 85, 161, 31, 87, 163, 36, 89, 165, 34, 88, 164, 36, 90, 169, 37, 93, 171, 35, 92, 170, 35, 91, 170, 35, 89, 169, 39, 93, 173, 38, 93, 174, 39, 94, 174, 40, 94, 175, 40, 94, 175, 41, 95, 176, 38, 93, 173, 38, 93, 173, 42, 96, 176, + 40, 96, 176, 42, 98, 178, 42, 98, 179, 43, 99, 180, 44, 101, 182, 43, 99, 180, 41, 98, 178, 43, 99, 181, 42, 99, 180, 40, 97, 178, 42, 99, 178, 39, 91, 167, 35, 75, 143, 32, 55, 117, 28, 55, 118, 32, 68, 131, 39, 79, 142, 25, 66, 129, 17, 57, 117, 21, 62, 124, 26, 67, 129, + 24, 68, 130, 41, 90, 156, 49, 111, 190, 48, 115, 198, 36, 105, 181, 17, 84, 155, 16, 84, 156, 16, 85, 157, 18, 88, 159, 23, 94, 165, 11, 85, 155, 7, 79, 147, 9, 79, 148, 16, 83, 151, 8, 78, 147, 29, 104, 182, 51, 134, 223, 57, 146, 235, 50, 128, 214, 35, 104, 184, 23, 95, 173, + 40, 112, 195, 52, 127, 211, 34, 108, 188, 20, 88, 163, 27, 95, 174, 39, 109, 189, 40, 110, 189, 27, 87, 160, 14, 74, 145, 14, 74, 144, 14, 75, 146, 24, 86, 161, 49, 114, 196, 46, 108, 188, 24, 81, 157, 29, 87, 164, 46, 108, 190, 53, 117, 200, 48, 111, 196, 52, 115, 200, 55, 115, 201, + 42, 105, 186, 47, 108, 189, 45, 105, 188, 44, 104, 186, 49, 109, 192, 47, 105, 189, 39, 99, 180, 38, 98, 178, 52, 111, 192, 49, 107, 189, 39, 98, 177, 39, 98, 177, 47, 104, 183, 41, 99, 178, 36, 95, 171, 34, 92, 168, 39, 97, 175, 35, 89, 165, 39, 90, 164, 33, 87, 161, 27, 78, 152, + 21, 79, 149, 24, 79, 152, 24, 79, 152, 23, 79, 152, 35, 89, 162, 27, 74, 143, 21, 66, 135, 14, 57, 126, 24, 68, 135, 15, 56, 120, 11, 49, 112, 11, 50, 112, 19, 59, 120, 6, 38, 90, 4, 27, 78, 3, 22, 70, 5, 29, 77, 4, 30, 77, 5, 31, 81, 4, 32, 80, 5, 31, 80, + 9, 39, 87, 4, 29, 74, 6, 37, 82, 5, 38, 82, 6, 36, 81, 2, 24, 67, 4, 29, 70, 5, 37, 78, 3, 31, 74, 5, 30, 71, 4, 26, 68, 4, 28, 69, 5, 27, 69, 4, 23, 63, 4, 25, 67, 4, 19, 59, 3, 22, 60, 4, 17, 56, 4, 25, 66, 8, 30, 75, 5, 24, 67, + 4, 19, 59, 4, 19, 51, 3, 7, 27, 3, 5, 18, 4, 5, 19, 4, 4, 25, 2, 4, 24, 2, 3, 21, 2, 5, 34, 2, 3, 25, 3, 4, 27, 4, 8, 36, 4, 16, 52, 3, 21, 59, 4, 14, 48, 4, 18, 53, 4, 13, 46, 3, 7, 32, 2, 3, 16, 4, 11, 44, 4, 15, 51, + 2, 12, 45, 2, 5, 28, 3, 12, 40, 2, 3, 18, 1, 2, 7, 2, 2, 13, 2, 6, 27, 2, 4, 28, 2, 4, 24, 2, 3, 17, 0, 1, 0, 1, 1, 1, 2, 1, 3, 1, 3, 13, 2, 3, 16, 1, 2, 5, 1, 1, 2, 2, 1, 3, 3, 38, 97, 4, 40, 99, 4, 41, 103, + 4, 43, 103, 4, 43, 104, 4, 42, 104, 3, 42, 104, 3, 42, 103, 5, 44, 107, 4, 44, 106, 5, 44, 106, 5, 44, 106, 5, 43, 105, 4, 44, 104, 4, 42, 104, 3, 44, 106, 3, 46, 109, 7, 49, 114, 11, 53, 119, 14, 57, 124, 19, 61, 129, 21, 65, 133, 23, 67, 137, 26, 70, 139, + 29, 73, 145, 30, 75, 148, 30, 77, 151, 38, 85, 157, 36, 86, 161, 38, 88, 164, 39, 93, 168, 39, 93, 169, 42, 95, 171, 40, 96, 173, 42, 96, 173, 43, 97, 173, 44, 98, 174, 48, 100, 178, 48, 99, 178, 48, 101, 181, 48, 103, 183, 51, 106, 187, 52, 108, 189, 53, 108, 190, 51, 107, 188, + 49, 104, 186, 48, 102, 183, 45, 101, 180, 43, 99, 178, 42, 96, 173, 38, 93, 168, 37, 91, 165, 33, 87, 162, 29, 83, 157, 27, 81, 153, 23, 77, 149, 22, 77, 149, 19, 76, 151, 24, 80, 156, 28, 83, 158, 31, 83, 159, 34, 87, 162, 35, 87, 161, 33, 85, 161, 32, 83, 158, 35, 85, 160, + 34, 86, 160, 32, 84, 160, 33, 86, 163, 35, 90, 166, 36, 92, 169, 37, 91, 170, 34, 90, 168, 34, 90, 168, 37, 91, 171, 37, 93, 172, 38, 94, 173, 40, 94, 174, 42, 98, 176, 44, 97, 177, 42, 96, 176, 40, 96, 174, 42, 97, 177, 42, 97, 176, 41, 97, 176, 44, 99, 178, 43, 98, 178, + 45, 99, 180, 45, 101, 181, 45, 102, 183, 44, 100, 180, 43, 101, 180, 43, 101, 179, 38, 92, 169, 32, 77, 145, 30, 63, 124, 28, 56, 117, 30, 59, 122, 24, 62, 125, 30, 75, 135, 29, 72, 133, 20, 60, 120, 26, 70, 133, 28, 73, 138, 20, 66, 132, 20, 66, 131, 24, 79, 148, 20, 80, 150, + 14, 77, 145, 10, 74, 142, 8, 75, 144, 11, 78, 147, 13, 81, 151, 16, 88, 158, 20, 95, 167, 14, 87, 157, 5, 72, 141, 6, 71, 139, 7, 74, 144, 17, 85, 155, 33, 101, 179, 44, 113, 196, 41, 109, 192, 33, 99, 177, 29, 95, 172, 42, 111, 194, 55, 128, 214, 44, 117, 197, 30, 99, 176, + 25, 95, 171, 23, 93, 171, 29, 97, 174, 30, 95, 171, 24, 90, 164, 22, 87, 162, 32, 97, 173, 50, 125, 210, 68, 157, 246, 57, 136, 220, 20, 79, 154, 15, 76, 151, 34, 100, 178, 45, 109, 191, 41, 104, 186, 53, 114, 198, 56, 119, 205, 43, 107, 190, 46, 108, 189, 45, 106, 187, 37, 96, 176, + 42, 99, 181, 43, 101, 182, 43, 100, 180, 43, 102, 183, 48, 107, 189, 52, 116, 198, 42, 100, 179, 36, 94, 172, 45, 102, 180, 41, 100, 179, 44, 107, 188, 48, 110, 194, 49, 107, 192, 50, 105, 188, 39, 93, 170, 38, 96, 172, 39, 97, 172, 21, 77, 149, 21, 78, 151, 29, 87, 161, 20, 76, 151, + 38, 92, 168, 37, 90, 162, 17, 67, 137, 15, 60, 130, 17, 63, 132, 19, 62, 129, 18, 58, 123, 13, 54, 120, 13, 55, 118, 14, 58, 122, 8, 47, 107, 7, 43, 100, 10, 47, 102, 5, 35, 88, 8, 41, 95, 13, 46, 100, 8, 38, 91, 3, 28, 77, 5, 31, 79, 4, 33, 78, 5, 35, 79, + 3, 30, 74, 3, 26, 69, 5, 30, 73, 6, 34, 76, 4, 25, 68, 3, 28, 69, 5, 29, 69, 5, 25, 64, 4, 24, 62, 3, 23, 63, 4, 27, 68, 3, 19, 59, 4, 27, 67, 5, 31, 71, 4, 23, 64, 3, 28, 68, 4, 25, 64, 4, 22, 59, 4, 18, 54, 2, 15, 51, 4, 20, 56, + 5, 21, 55, 4, 17, 53, 3, 15, 51, 3, 15, 47, 3, 10, 38, 3, 11, 33, 2, 6, 28, 3, 5, 31, 2, 6, 37, 4, 8, 42, 3, 6, 38, 3, 7, 36, 2, 3, 22, 1, 1, 13, 1, 2, 11, 3, 10, 32, 3, 9, 39, 2, 13, 46, 3, 5, 29, 3, 4, 23, 3, 6, 20, + 1, 2, 6, 1, 2, 10, 2, 3, 21, 2, 4, 25, 4, 5, 27, 2, 3, 16, 1, 1, 0, 1, 1, 1, 2, 2, 3, 1, 1, 7, 2, 3, 16, 2, 3, 14, 1, 2, 5, 2, 2, 6, 2, 34, 91, 3, 37, 95, 4, 38, 96, 4, 39, 97, 3, 38, 97, 3, 40, 98, 3, 38, 99, + 3, 38, 100, 3, 39, 101, 2, 39, 101, 4, 41, 102, 3, 40, 101, 3, 38, 99, 4, 42, 102, 5, 44, 104, 5, 45, 107, 4, 45, 107, 5, 48, 111, 9, 51, 116, 13, 56, 121, 17, 59, 125, 19, 62, 129, 22, 64, 133, 27, 68, 138, 28, 73, 144, 28, 73, 145, 29, 76, 149, 32, 78, 151, + 30, 80, 152, 31, 79, 154, 32, 81, 156, 33, 83, 158, 34, 85, 160, 35, 87, 163, 35, 87, 164, 37, 88, 165, 39, 90, 166, 38, 90, 166, 40, 92, 168, 41, 94, 171, 43, 95, 175, 44, 98, 177, 45, 99, 178, 46, 98, 179, 46, 98, 178, 43, 94, 176, 41, 93, 173, 38, 93, 171, 39, 93, 170, + 36, 88, 164, 34, 86, 160, 31, 82, 157, 29, 80, 153, 25, 77, 149, 21, 75, 146, 20, 74, 145, 21, 74, 146, 24, 77, 149, 26, 78, 152, 27, 80, 152, 27, 80, 155, 30, 82, 157, 30, 82, 156, 30, 82, 157, 29, 81, 157, 32, 83, 158, 31, 83, 158, 33, 85, 160, 30, 83, 160, 31, 84, 162, + 30, 87, 165, 33, 88, 167, 35, 90, 169, 36, 91, 171, 38, 93, 173, 39, 95, 175, 41, 96, 175, 43, 97, 176, 45, 99, 178, 44, 97, 177, 42, 96, 175, 44, 97, 176, 43, 97, 176, 44, 97, 177, 41, 96, 177, 44, 98, 178, 44, 99, 179, 47, 101, 181, 47, 104, 182, 47, 103, 184, 48, 105, 183, + 44, 103, 181, 39, 94, 169, 35, 77, 146, 27, 61, 124, 24, 58, 118, 24, 57, 118, 24, 58, 120, 17, 58, 121, 19, 65, 126, 16, 62, 123, 16, 59, 120, 31, 86, 154, 48, 112, 190, 32, 95, 166, 9, 56, 117, 0, 41, 100, 2, 43, 103, 2, 47, 108, 4, 55, 116, 5, 66, 131, 5, 63, 128, + 3, 54, 119, 5, 73, 141, 18, 95, 167, 21, 95, 165, 5, 68, 137, 3, 63, 132, 11, 77, 145, 14, 80, 148, 9, 66, 131, 11, 64, 128, 17, 70, 136, 15, 77, 147, 17, 85, 158, 30, 98, 177, 37, 104, 185, 24, 93, 170, 28, 95, 170, 30, 98, 173, 24, 92, 170, 28, 95, 172, 37, 107, 186, + 37, 107, 188, 38, 108, 190, 46, 117, 200, 50, 125, 212, 59, 139, 225, 47, 121, 206, 22, 87, 161, 18, 83, 159, 21, 90, 169, 29, 96, 176, 20, 85, 162, 28, 89, 166, 46, 111, 195, 46, 110, 192, 41, 104, 184, 39, 101, 179, 35, 95, 174, 46, 103, 182, 46, 104, 183, 42, 99, 179, 46, 104, 184, + 51, 111, 190, 51, 114, 195, 37, 95, 173, 22, 82, 157, 31, 88, 164, 37, 97, 176, 49, 113, 194, 55, 121, 206, 45, 107, 190, 46, 103, 185, 45, 102, 180, 37, 94, 169, 41, 98, 174, 34, 92, 168, 30, 89, 164, 32, 90, 165, 31, 88, 163, 29, 85, 161, 37, 92, 165, 23, 76, 146, 19, 70, 141, + 20, 71, 142, 25, 74, 144, 21, 68, 137, 19, 65, 133, 17, 64, 129, 13, 59, 126, 9, 53, 117, 11, 55, 119, 14, 59, 122, 10, 48, 110, 8, 43, 101, 10, 45, 102, 4, 36, 91, 6, 38, 91, 10, 41, 93, 3, 29, 79, 4, 35, 80, 3, 25, 69, 3, 24, 68, 4, 29, 71, 4, 24, 67, + 3, 20, 63, 3, 25, 66, 4, 23, 64, 4, 25, 64, 4, 24, 63, 3, 22, 62, 5, 28, 69, 5, 24, 63, 3, 22, 61, 3, 23, 62, 3, 17, 56, 3, 20, 58, 4, 21, 58, 3, 24, 59, 3, 16, 51, 3, 12, 45, 4, 20, 55, 5, 26, 64, 7, 33, 73, 5, 25, 62, 3, 25, 63, + 4, 17, 55, 4, 23, 60, 2, 13, 48, 3, 12, 46, 4, 10, 42, 3, 8, 40, 3, 12, 45, 4, 13, 44, 2, 6, 31, 2, 4, 21, 2, 4, 20, 2, 2, 14, 2, 3, 25, 2, 5, 29, 2, 4, 24, 3, 4, 22, 2, 5, 20, 2, 1, 10, 1, 1, 9, 2, 3, 16, 2, 2, 14, + 2, 2, 16, 2, 3, 19, 1, 3, 9, 1, 1, 2, 1, 1, 3, 1, 2, 5, 2, 3, 10, 1, 2, 8, 1, 1, 4, 1, 1, 2, 2, 31, 86, 3, 33, 88, 2, 35, 90, 2, 34, 90, 4, 36, 92, 3, 34, 91, 3, 35, 92, 3, 36, 94, 3, 37, 95, 2, 38, 96, 3, 38, 99, + 3, 39, 99, 3, 38, 98, 4, 41, 102, 4, 42, 103, 4, 43, 105, 3, 44, 105, 5, 47, 109, 6, 49, 111, 9, 52, 116, 13, 55, 121, 16, 59, 124, 18, 61, 128, 20, 62, 131, 21, 65, 133, 23, 66, 136, 22, 66, 137, 24, 68, 139, 26, 70, 141, 27, 71, 141, 24, 70, 140, 25, 70, 143, + 23, 71, 142, 25, 74, 146, 25, 75, 148, 26, 76, 149, 31, 81, 153, 30, 81, 153, 31, 81, 154, 32, 81, 156, 34, 82, 157, 35, 86, 159, 37, 88, 162, 38, 87, 164, 38, 88, 164, 35, 83, 159, 34, 84, 159, 32, 83, 157, 29, 82, 154, 29, 81, 154, 26, 78, 149, 24, 75, 147, 21, 73, 144, + 19, 70, 142, 17, 70, 141, 17, 70, 142, 20, 74, 146, 20, 76, 146, 22, 78, 149, 24, 78, 150, 25, 78, 150, 29, 80, 153, 30, 81, 154, 29, 80, 156, 31, 81, 155, 30, 81, 155, 30, 81, 156, 31, 83, 158, 34, 86, 161, 35, 88, 163, 31, 88, 164, 36, 91, 169, 37, 92, 170, 36, 92, 171, + 39, 93, 172, 39, 94, 173, 44, 98, 176, 44, 98, 176, 45, 97, 175, 45, 97, 175, 42, 95, 174, 47, 98, 176, 46, 98, 175, 44, 98, 177, 42, 97, 176, 43, 97, 176, 45, 99, 178, 46, 100, 179, 47, 102, 180, 46, 102, 181, 49, 104, 183, 41, 95, 173, 37, 77, 143, 30, 64, 127, 25, 59, 123, + 23, 57, 120, 22, 57, 120, 21, 60, 120, 18, 59, 121, 20, 64, 126, 19, 63, 124, 11, 55, 116, 29, 85, 150, 48, 113, 191, 30, 94, 166, 11, 62, 122, 5, 52, 113, 5, 55, 114, 4, 49, 109, 3, 45, 105, 3, 58, 120, 4, 54, 118, 1, 39, 103, 4, 67, 133, 9, 89, 159, 9, 80, 149, + 6, 68, 137, 5, 65, 129, 6, 67, 132, 8, 65, 128, 6, 52, 110, 3, 44, 98, 5, 47, 103, 11, 67, 133, 23, 92, 165, 30, 97, 173, 18, 86, 159, 6, 72, 141, 10, 77, 147, 19, 87, 158, 13, 81, 155, 21, 88, 161, 40, 109, 188, 43, 115, 196, 51, 124, 207, 60, 140, 228, 57, 133, 220, + 44, 110, 196, 37, 107, 191, 32, 101, 181, 28, 97, 177, 30, 98, 178, 34, 102, 181, 29, 96, 174, 24, 86, 165, 30, 98, 179, 27, 93, 174, 13, 82, 159, 22, 89, 165, 29, 93, 171, 28, 90, 167, 29, 89, 165, 25, 86, 162, 32, 92, 168, 37, 98, 173, 30, 89, 164, 27, 84, 158, 24, 80, 152, + 30, 85, 159, 38, 96, 173, 46, 108, 188, 56, 122, 206, 52, 116, 200, 40, 97, 178, 37, 95, 174, 32, 90, 166, 38, 96, 172, 36, 97, 172, 38, 96, 172, 30, 88, 163, 32, 89, 162, 27, 84, 158, 26, 82, 156, 17, 72, 144, 29, 82, 155, 26, 80, 152, 26, 78, 149, 21, 71, 140, 21, 72, 140, + 26, 77, 146, 17, 66, 134, 17, 67, 138, 19, 69, 137, 19, 69, 138, 20, 67, 134, 18, 61, 127, 8, 46, 107, 9, 46, 103, 9, 45, 102, 7, 41, 97, 8, 42, 97, 8, 39, 91, 3, 31, 80, 6, 33, 81, 4, 26, 72, 2, 19, 64, 2, 22, 65, 3, 23, 65, 2, 20, 59, 2, 18, 55, + 3, 22, 59, 4, 25, 64, 5, 25, 66, 3, 23, 62, 3, 22, 60, 2, 21, 57, 2, 18, 54, 3, 16, 51, 4, 17, 52, 4, 19, 55, 3, 16, 49, 3, 8, 41, 3, 11, 45, 4, 17, 53, 3, 11, 46, 4, 15, 49, 3, 16, 50, 3, 18, 54, 3, 16, 52, 3, 12, 46, 3, 15, 49, + 3, 14, 46, 4, 14, 47, 3, 15, 47, 2, 11, 44, 3, 15, 48, 3, 12, 43, 4, 14, 44, 4, 9, 36, 2, 4, 23, 2, 3, 19, 2, 2, 20, 2, 3, 20, 2, 3, 18, 1, 3, 14, 2, 2, 10, 2, 2, 11, 1, 3, 9, 1, 2, 11, 2, 4, 22, 4, 8, 27, 2, 2, 7, + 1, 2, 8, 1, 2, 4, 1, 1, 2, 1, 1, 1, 1, 0, 1, 1, 1, 2, 2, 30, 82, 2, 32, 85, 2, 31, 85, 2, 32, 86, 2, 32, 87, 3, 33, 89, 2, 34, 89, 2, 36, 90, 2, 34, 91, 2, 36, 94, 2, 37, 95, 2, 38, 96, 3, 40, 98, 4, 41, 102, 4, 42, 102, + 4, 43, 103, 4, 45, 105, 5, 46, 107, 5, 47, 108, 5, 47, 110, 7, 50, 112, 10, 52, 115, 9, 52, 116, 11, 54, 119, 12, 56, 121, 15, 57, 124, 14, 59, 124, 16, 59, 124, 17, 59, 126, 16, 59, 125, 15, 60, 126, 14, 59, 129, 13, 62, 132, 13, 64, 135, 15, 65, 137, 18, 68, 140, + 20, 70, 141, 23, 73, 145, 22, 72, 144, 21, 72, 143, 23, 72, 144, 27, 76, 147, 25, 75, 146, 27, 75, 147, 28, 76, 148, 26, 75, 147, 26, 74, 146, 23, 73, 145, 22, 73, 144, 24, 75, 146, 20, 72, 144, 19, 71, 143, 20, 73, 144, 19, 72, 142, 19, 71, 142, 20, 71, 142, 22, 74, 145, + 22, 77, 146, 19, 75, 146, 20, 74, 147, 24, 76, 148, 26, 78, 149, 28, 80, 151, 30, 81, 154, 30, 82, 156, 28, 79, 154, 28, 81, 156, 28, 82, 156, 31, 84, 159, 32, 84, 160, 31, 85, 162, 33, 87, 164, 35, 89, 167, 35, 91, 168, 37, 91, 169, 38, 92, 170, 40, 93, 171, 43, 94, 170, + 43, 93, 170, 43, 93, 172, 44, 94, 172, 45, 96, 173, 48, 98, 174, 48, 99, 177, 47, 98, 177, 44, 96, 177, 44, 96, 176, 43, 97, 176, 42, 95, 175, 46, 98, 177, 47, 96, 175, 40, 89, 163, 34, 67, 131, 27, 60, 123, 29, 64, 125, 23, 59, 122, 21, 59, 120, 15, 58, 117, 20, 63, 124, + 24, 70, 131, 17, 62, 123, 8, 51, 109, 7, 50, 107, 11, 60, 121, 6, 52, 111, 2, 52, 112, 3, 54, 114, 5, 58, 117, 4, 48, 108, 2, 42, 105, 2, 57, 120, 3, 65, 126, 3, 58, 122, 8, 81, 149, 14, 92, 162, 4, 71, 138, 3, 59, 127, 4, 63, 127, 3, 52, 114, 2, 43, 100, + 3, 42, 96, 3, 37, 90, 3, 36, 90, 6, 54, 115, 22, 91, 162, 30, 102, 178, 18, 87, 159, 4, 68, 136, 8, 73, 142, 8, 72, 140, 8, 72, 141, 16, 80, 149, 27, 95, 168, 30, 97, 176, 40, 109, 189, 54, 132, 217, 55, 132, 217, 44, 113, 197, 50, 123, 210, 52, 126, 212, 38, 108, 189, + 34, 102, 182, 37, 108, 188, 45, 126, 211, 52, 145, 229, 54, 142, 228, 41, 112, 198, 20, 90, 168, 26, 93, 170, 29, 95, 171, 19, 85, 163, 19, 84, 159, 21, 85, 159, 21, 85, 159, 23, 85, 157, 18, 77, 150, 16, 74, 146, 19, 73, 144, 26, 80, 151, 37, 93, 168, 42, 101, 178, 47, 106, 185, + 41, 100, 181, 35, 92, 172, 31, 89, 167, 28, 86, 163, 29, 87, 164, 33, 93, 169, 36, 95, 170, 28, 86, 162, 25, 83, 157, 28, 84, 158, 31, 87, 160, 34, 91, 163, 38, 94, 168, 29, 83, 155, 23, 74, 145, 27, 78, 146, 24, 74, 143, 26, 78, 148, 18, 68, 138, 17, 68, 136, 24, 71, 139, + 25, 73, 140, 23, 70, 137, 20, 65, 132, 14, 59, 125, 24, 75, 141, 23, 70, 138, 7, 43, 105, 10, 46, 106, 10, 46, 104, 11, 49, 110, 12, 51, 114, 6, 37, 91, 4, 30, 80, 4, 31, 78, 3, 29, 76, 5, 30, 76, 5, 26, 71, 2, 17, 59, 3, 20, 62, 4, 22, 65, 2, 19, 61, + 3, 22, 62, 4, 25, 62, 3, 21, 57, 2, 19, 55, 4, 22, 59, 8, 31, 67, 3, 22, 55, 2, 16, 49, 3, 16, 48, 2, 13, 47, 3, 15, 49, 3, 14, 47, 3, 12, 44, 4, 22, 55, 5, 24, 59, 2, 10, 43, 2, 10, 41, 3, 9, 40, 2, 7, 37, 2, 9, 40, 4, 17, 49, + 3, 19, 52, 4, 12, 44, 4, 16, 47, 3, 15, 43, 2, 7, 33, 3, 9, 35, 3, 7, 34, 3, 7, 34, 3, 7, 33, 2, 6, 31, 3, 5, 28, 3, 4, 25, 2, 6, 28, 3, 5, 25, 2, 3, 22, 2, 3, 20, 1, 3, 14, 1, 3, 15, 1, 2, 10, 1, 3, 9, 2, 1, 9, + 2, 1, 7, 1, 1, 5, 2, 30, 81, 2, 30, 82, 2, 31, 83, 1, 30, 84, 3, 33, 86, 2, 33, 86, 2, 32, 87, 2, 32, 87, 2, 31, 88, 2, 36, 90, 4, 37, 94, 2, 37, 94, 3, 41, 99, 4, 40, 100, 6, 43, 101, 4, 43, 102, 3, 43, 103, 5, 44, 104, 5, 45, 104, + 3, 42, 104, 4, 44, 106, 5, 47, 108, 5, 46, 108, 6, 48, 111, 7, 49, 114, 8, 51, 116, 9, 54, 116, 9, 50, 116, 9, 50, 114, 9, 51, 116, 10, 54, 120, 7, 55, 122, 6, 55, 126, 9, 60, 130, 10, 61, 131, 11, 62, 133, 14, 65, 135, 13, 65, 135, 15, 66, 136, 16, 66, 137, + 16, 67, 139, 18, 68, 140, 20, 70, 142, 19, 70, 141, 19, 69, 140, 19, 68, 139, 19, 68, 139, 19, 68, 140, 20, 71, 142, 23, 74, 146, 23, 75, 146, 23, 74, 146, 26, 76, 148, 22, 74, 145, 17, 71, 142, 22, 73, 144, 23, 77, 146, 20, 74, 145, 20, 74, 145, 19, 73, 145, 26, 78, 149, + 23, 76, 147, 27, 79, 150, 28, 80, 152, 29, 82, 154, 29, 84, 157, 29, 83, 156, 30, 84, 157, 30, 84, 158, 27, 83, 157, 29, 82, 159, 29, 84, 159, 30, 85, 160, 30, 84, 160, 32, 85, 161, 35, 86, 162, 36, 87, 163, 38, 89, 166, 40, 89, 166, 41, 91, 168, 44, 94, 171, 44, 95, 172, + 46, 97, 175, 44, 98, 175, 47, 99, 178, 44, 98, 178, 42, 95, 175, 45, 97, 176, 43, 94, 174, 44, 94, 171, 41, 87, 159, 37, 77, 144, 31, 65, 127, 25, 59, 119, 23, 58, 119, 25, 60, 121, 16, 54, 116, 6, 50, 112, 6, 52, 114, 7, 59, 122, 7, 57, 118, 3, 45, 104, 1, 34, 90, + 2, 37, 93, 5, 49, 106, 4, 56, 115, 4, 53, 114, 2, 53, 113, 3, 54, 114, 3, 55, 117, 4, 57, 122, 2, 60, 124, 3, 62, 127, 7, 77, 143, 13, 87, 154, 6, 69, 135, 4, 63, 127, 5, 64, 128, 3, 55, 115, 4, 49, 105, 2, 45, 98, 3, 36, 89, 2, 34, 87, 3, 34, 89, + 5, 57, 118, 5, 75, 141, 6, 72, 138, 4, 64, 130, 8, 70, 136, 4, 63, 132, 4, 64, 132, 9, 74, 142, 16, 82, 151, 20, 88, 163, 33, 102, 182, 35, 105, 186, 31, 102, 182, 32, 104, 186, 48, 123, 208, 48, 125, 210, 37, 106, 189, 35, 103, 183, 41, 111, 193, 56, 147, 235, 66, 192, 255, + 63, 184, 254, 52, 133, 223, 27, 101, 180, 27, 98, 175, 24, 94, 171, 26, 96, 173, 32, 103, 182, 32, 101, 179, 24, 90, 167, 24, 87, 163, 24, 86, 161, 20, 80, 153, 10, 64, 135, 13, 67, 138, 18, 74, 145, 26, 79, 152, 31, 81, 154, 36, 88, 165, 41, 99, 176, 43, 101, 176, 36, 92, 169, + 40, 96, 172, 41, 98, 173, 37, 97, 173, 35, 95, 174, 28, 87, 162, 19, 76, 147, 22, 79, 148, 25, 80, 151, 32, 87, 160, 29, 83, 156, 22, 76, 146, 18, 70, 140, 14, 66, 135, 25, 80, 150, 33, 89, 159, 25, 76, 147, 14, 62, 132, 20, 68, 136, 15, 63, 130, 14, 60, 127, 15, 61, 127, + 18, 66, 132, 18, 65, 132, 14, 57, 125, 21, 65, 131, 22, 66, 132, 23, 67, 134, 10, 53, 118, 10, 54, 118, 11, 56, 117, 4, 39, 94, 4, 36, 90, 11, 48, 108, 14, 53, 115, 4, 31, 81, 3, 23, 70, 3, 25, 70, 4, 26, 69, 1, 20, 64, 3, 22, 63, 2, 17, 56, 3, 12, 49, + 1, 10, 45, 3, 14, 48, 3, 15, 50, 3, 17, 52, 3, 21, 55, 3, 16, 50, 2, 17, 50, 3, 12, 45, 2, 11, 43, 2, 15, 48, 2, 11, 46, 3, 9, 40, 2, 6, 35, 3, 11, 41, 2, 13, 43, 3, 14, 45, 3, 11, 41, 2, 11, 41, 4, 9, 39, 3, 9, 37, 2, 7, 33, + 2, 4, 31, 2, 6, 33, 3, 8, 34, 2, 7, 35, 3, 8, 37, 2, 5, 33, 3, 7, 35, 3, 9, 36, 2, 6, 30, 2, 6, 30, 2, 8, 32, 2, 5, 27, 2, 4, 25, 2, 5, 28, 3, 6, 28, 3, 6, 26, 3, 3, 22, 2, 3, 20, 2, 2, 16, 2, 29, 81, 3, 30, 81, + 2, 28, 79, 2, 29, 81, 2, 29, 82, 3, 31, 83, 2, 29, 83, 2, 29, 83, 2, 29, 85, 2, 33, 88, 3, 35, 91, 2, 36, 93, 2, 37, 95, 2, 37, 96, 3, 40, 99, 5, 42, 102, 4, 41, 102, 3, 40, 100, 3, 40, 99, 3, 41, 101, 3, 43, 104, 4, 45, 106, 5, 45, 107, + 5, 47, 109, 5, 47, 110, 6, 48, 111, 6, 48, 111, 8, 50, 113, 7, 50, 112, 6, 49, 112, 9, 51, 116, 8, 52, 118, 6, 54, 122, 8, 59, 127, 9, 60, 130, 9, 62, 132, 11, 63, 133, 12, 63, 134, 13, 64, 133, 15, 66, 135, 13, 65, 135, 16, 67, 137, 16, 67, 137, 16, 67, 138, + 17, 67, 138, 16, 67, 137, 21, 67, 139, 20, 69, 139, 21, 72, 141, 23, 73, 144, 21, 73, 144, 20, 73, 144, 22, 74, 145, 20, 72, 143, 17, 70, 142, 20, 73, 144, 21, 76, 146, 18, 73, 143, 18, 72, 143, 21, 75, 144, 23, 75, 145, 18, 74, 145, 26, 79, 150, 26, 80, 151, 28, 82, 154, + 29, 84, 155, 29, 84, 155, 27, 83, 155, 26, 82, 154, 28, 82, 156, 27, 83, 156, 27, 83, 157, 27, 81, 155, 26, 80, 153, 26, 80, 154, 28, 82, 156, 26, 81, 156, 31, 84, 160, 33, 85, 161, 37, 87, 164, 41, 92, 168, 40, 92, 168, 43, 95, 172, 47, 98, 176, 46, 99, 177, 48, 99, 177, + 44, 98, 175, 45, 98, 177, 42, 95, 172, 39, 87, 161, 31, 71, 135, 26, 58, 117, 20, 52, 114, 16, 50, 108, 15, 49, 105, 16, 52, 107, 20, 60, 118, 14, 69, 132, 7, 63, 125, 4, 61, 123, 5, 57, 119, 4, 49, 107, 2, 37, 92, 2, 37, 94, 5, 48, 104, 5, 54, 113, 3, 55, 115, + 3, 54, 114, 4, 59, 119, 4, 59, 121, 3, 61, 124, 3, 62, 128, 3, 62, 128, 3, 60, 126, 2, 55, 118, 3, 56, 118, 5, 62, 124, 5, 61, 125, 5, 55, 114, 3, 47, 101, 4, 44, 97, 2, 39, 92, 3, 42, 96, 2, 34, 89, 3, 32, 90, 4, 46, 103, 3, 47, 105, 4, 55, 117, + 3, 57, 118, 3, 55, 118, 3, 59, 124, 6, 66, 132, 6, 73, 142, 27, 100, 177, 48, 129, 214, 39, 119, 202, 17, 92, 168, 11, 88, 165, 21, 96, 174, 24, 99, 181, 28, 99, 181, 35, 105, 186, 33, 102, 182, 45, 122, 206, 59, 159, 242, 58, 160, 242, 50, 126, 216, 40, 115, 197, 39, 114, 194, + 32, 102, 182, 27, 97, 175, 32, 102, 180, 30, 102, 181, 30, 102, 182, 37, 107, 190, 42, 116, 198, 31, 102, 182, 22, 80, 153, 13, 68, 137, 8, 63, 133, 8, 59, 128, 9, 53, 119, 14, 58, 124, 19, 68, 136, 22, 73, 142, 22, 79, 150, 34, 92, 167, 38, 94, 170, 42, 100, 178, 47, 110, 191, + 39, 99, 177, 24, 79, 149, 21, 75, 146, 21, 77, 148, 26, 82, 152, 24, 79, 150, 13, 68, 139, 9, 64, 134, 16, 68, 137, 25, 79, 149, 33, 87, 158, 25, 78, 149, 19, 66, 138, 24, 72, 141, 18, 66, 131, 18, 65, 130, 18, 64, 130, 14, 62, 128, 16, 65, 131, 18, 68, 134, 15, 60, 128, + 8, 54, 121, 13, 58, 123, 14, 61, 126, 17, 67, 135, 16, 69, 134, 7, 45, 103, 3, 37, 94, 6, 41, 98, 3, 38, 96, 3, 33, 89, 3, 28, 82, 3, 33, 85, 4, 33, 84, 3, 27, 76, 3, 32, 84, 4, 33, 83, 2, 22, 66, 2, 19, 58, 2, 14, 51, 2, 11, 48, 2, 12, 48, + 2, 12, 48, 3, 15, 52, 4, 22, 59, 2, 14, 49, 3, 13, 48, 4, 20, 55, 3, 20, 53, 2, 10, 42, 2, 7, 35, 3, 9, 41, 3, 11, 39, 2, 10, 39, 2, 8, 37, 3, 6, 35, 2, 10, 39, 3, 17, 47, 4, 16, 46, 3, 8, 36, 2, 6, 30, 3, 6, 32, 2, 8, 33, + 3, 13, 40, 3, 6, 33, 2, 9, 37, 3, 10, 39, 2, 7, 32, 3, 9, 35, 3, 9, 36, 2, 6, 31, 2, 4, 26, 2, 4, 25, 2, 6, 28, 3, 8, 29, 2, 4, 22, 3, 4, 21, 1, 2, 17, 3, 28, 78, 2, 28, 78, 2, 26, 76, 2, 27, 80, 2, 28, 79, 2, 29, 82, + 2, 28, 82, 2, 28, 82, 2, 28, 82, 2, 29, 84, 2, 33, 88, 2, 34, 90, 2, 35, 93, 3, 39, 95, 3, 40, 98, 4, 41, 101, 4, 43, 103, 2, 40, 100, 3, 40, 99, 3, 40, 100, 3, 41, 102, 3, 43, 104, 5, 45, 105, 3, 44, 106, 4, 47, 109, 5, 47, 108, 6, 48, 110, + 7, 48, 111, 7, 49, 111, 5, 47, 110, 7, 50, 114, 6, 50, 113, 5, 52, 118, 6, 57, 123, 6, 57, 126, 6, 59, 129, 10, 62, 131, 11, 63, 133, 13, 64, 133, 13, 64, 132, 15, 67, 136, 16, 67, 136, 16, 67, 137, 19, 70, 140, 21, 70, 140, 20, 68, 139, 23, 69, 140, 23, 71, 141, + 26, 74, 143, 26, 75, 145, 23, 74, 145, 22, 73, 145, 21, 73, 144, 22, 74, 144, 21, 73, 144, 22, 74, 145, 20, 74, 144, 20, 73, 144, 20, 73, 143, 22, 73, 145, 21, 73, 145, 20, 75, 146, 24, 78, 149, 22, 78, 150, 26, 81, 153, 26, 81, 153, 25, 81, 153, 29, 83, 155, 29, 84, 157, + 30, 84, 158, 27, 82, 156, 26, 81, 155, 27, 81, 153, 28, 80, 152, 27, 78, 151, 26, 78, 150, 28, 81, 154, 27, 81, 156, 32, 86, 160, 34, 87, 162, 35, 90, 165, 36, 91, 166, 39, 94, 169, 43, 95, 173, 44, 96, 176, 44, 99, 178, 45, 99, 176, 42, 96, 174, 42, 92, 167, 30, 76, 143, + 19, 54, 114, 24, 57, 116, 24, 56, 115, 19, 54, 109, 7, 43, 99, 8, 44, 98, 10, 49, 107, 11, 66, 128, 8, 68, 131, 9, 68, 130, 5, 61, 121, 7, 55, 113, 4, 46, 102, 3, 39, 95, 3, 43, 100, 2, 46, 105, 4, 47, 106, 4, 44, 105, 4, 49, 106, 3, 50, 109, 3, 58, 123, + 5, 71, 137, 4, 71, 137, 4, 66, 130, 3, 56, 119, 3, 52, 114, 3, 45, 107, 3, 47, 107, 4, 47, 105, 2, 40, 95, 2, 35, 90, 2, 37, 93, 3, 44, 99, 3, 43, 99, 3, 43, 102, 4, 44, 101, 3, 41, 101, 3, 41, 100, 3, 47, 107, 3, 49, 111, 3, 56, 117, 3, 58, 123, + 9, 77, 146, 30, 114, 194, 48, 135, 218, 36, 118, 200, 10, 84, 157, 14, 88, 163, 18, 91, 167, 31, 107, 187, 44, 117, 199, 35, 105, 186, 26, 96, 174, 31, 98, 177, 44, 112, 199, 47, 118, 204, 41, 112, 199, 48, 122, 206, 48, 125, 208, 40, 111, 190, 30, 98, 176, 26, 96, 174, 28, 99, 178, + 36, 108, 188, 43, 117, 199, 44, 117, 198, 36, 107, 186, 29, 97, 175, 21, 87, 161, 19, 82, 154, 18, 78, 149, 11, 63, 133, 8, 53, 118, 4, 49, 115, 7, 52, 118, 15, 70, 139, 25, 85, 159, 29, 86, 162, 34, 90, 166, 36, 91, 167, 31, 84, 158, 28, 80, 149, 24, 76, 146, 28, 81, 151, + 24, 79, 148, 22, 75, 145, 23, 76, 145, 18, 72, 143, 20, 74, 142, 18, 74, 145, 23, 74, 144, 28, 81, 153, 37, 92, 165, 40, 97, 171, 25, 74, 143, 17, 65, 130, 19, 66, 131, 13, 62, 129, 19, 67, 132, 21, 71, 137, 17, 66, 134, 12, 59, 128, 16, 60, 126, 16, 62, 128, 15, 60, 127, + 7, 50, 113, 7, 47, 105, 5, 43, 101, 10, 47, 104, 4, 38, 97, 5, 40, 97, 4, 37, 92, 4, 41, 96, 3, 40, 96, 4, 38, 94, 3, 35, 88, 2, 35, 87, 4, 34, 88, 4, 33, 84, 3, 26, 75, 2, 25, 71, 3, 20, 62, 3, 21, 63, 2, 21, 63, 2, 18, 58, 3, 16, 54, + 2, 13, 49, 3, 13, 50, 2, 15, 50, 2, 12, 46, 3, 9, 40, 3, 9, 40, 3, 12, 41, 4, 11, 40, 2, 7, 35, 2, 5, 32, 3, 5, 33, 2, 9, 39, 2, 15, 46, 3, 11, 41, 3, 7, 33, 2, 6, 32, 4, 6, 32, 3, 6, 35, 2, 8, 37, 2, 11, 41, 3, 10, 41, + 3, 9, 38, 2, 9, 36, 2, 5, 29, 3, 5, 29, 3, 5, 28, 3, 4, 25, 3, 6, 29, 2, 8, 31, 2, 5, 26, 3, 6, 25, 2, 4, 23, 3, 26, 76, 3, 27, 75, 3, 25, 74, 3, 25, 77, 3, 27, 78, 2, 29, 81, 1, 30, 81, 2, 28, 81, 3, 29, 83, 2, 30, 84, + 3, 35, 88, 2, 35, 89, 4, 36, 93, 2, 37, 94, 4, 41, 99, 3, 41, 101, 6, 44, 104, 5, 43, 103, 3, 43, 101, 3, 43, 101, 3, 42, 101, 4, 43, 102, 5, 44, 104, 5, 45, 105, 4, 46, 106, 6, 46, 105, 5, 46, 107, 8, 48, 108, 9, 49, 109, 4, 47, 109, 4, 47, 109, + 5, 49, 112, 7, 53, 118, 8, 57, 123, 5, 57, 124, 5, 57, 125, 9, 60, 129, 12, 64, 131, 13, 64, 131, 13, 65, 132, 14, 65, 134, 18, 68, 136, 18, 69, 138, 19, 69, 138, 24, 71, 140, 23, 69, 139, 24, 70, 139, 23, 69, 140, 24, 70, 142, 26, 73, 145, 23, 74, 144, 23, 73, 143, + 20, 72, 142, 20, 72, 142, 22, 73, 144, 23, 74, 145, 23, 75, 146, 23, 74, 146, 22, 74, 144, 21, 71, 143, 19, 71, 143, 21, 75, 146, 28, 81, 151, 26, 80, 151, 29, 82, 154, 32, 84, 156, 31, 83, 155, 28, 82, 155, 28, 85, 156, 27, 86, 156, 27, 84, 157, 24, 80, 154, 25, 79, 152, + 25, 77, 149, 23, 75, 147, 21, 75, 147, 25, 78, 149, 24, 78, 153, 28, 82, 158, 30, 84, 158, 33, 88, 162, 36, 90, 166, 37, 91, 167, 42, 94, 172, 40, 94, 172, 43, 98, 176, 45, 97, 175, 41, 94, 172, 37, 83, 156, 28, 63, 124, 17, 51, 111, 20, 55, 115, 29, 67, 125, 26, 64, 121, + 10, 49, 105, 10, 51, 106, 4, 43, 98, 3, 39, 97, 3, 46, 105, 4, 57, 117, 3, 51, 112, 4, 46, 105, 4, 43, 99, 3, 39, 95, 3, 47, 102, 3, 48, 104, 2, 40, 97, 2, 38, 97, 3, 39, 96, 2, 39, 98, 4, 56, 120, 4, 73, 143, 4, 73, 140, 5, 63, 128, 2, 58, 118, + 3, 57, 117, 2, 49, 108, 2, 40, 100, 4, 43, 102, 1, 41, 97, 3, 38, 95, 2, 38, 95, 3, 43, 100, 3, 50, 107, 3, 48, 106, 3, 47, 104, 3, 44, 102, 3, 39, 99, 3, 46, 106, 3, 44, 106, 4, 45, 105, 4, 52, 113, 8, 73, 139, 19, 93, 167, 19, 96, 169, 9, 78, 147, + 3, 64, 130, 10, 78, 148, 20, 88, 162, 33, 109, 187, 44, 121, 204, 40, 114, 194, 22, 96, 172, 21, 92, 166, 29, 95, 172, 35, 104, 183, 31, 101, 182, 31, 101, 184, 35, 105, 186, 28, 97, 175, 23, 92, 167, 23, 92, 169, 21, 91, 168, 32, 103, 183, 35, 107, 188, 31, 103, 183, 30, 99, 178, + 35, 102, 180, 30, 101, 181, 29, 102, 182, 30, 103, 181, 24, 94, 170, 19, 84, 156, 16, 78, 148, 13, 76, 146, 23, 85, 158, 33, 94, 168, 23, 82, 155, 20, 75, 146, 15, 66, 137, 17, 65, 134, 15, 63, 133, 18, 69, 139, 27, 80, 147, 19, 72, 141, 13, 67, 136, 21, 74, 143, 23, 79, 151, + 27, 85, 156, 26, 79, 149, 20, 69, 137, 20, 71, 140, 33, 87, 158, 36, 92, 165, 18, 68, 137, 11, 60, 126, 21, 68, 132, 14, 63, 128, 7, 59, 124, 17, 70, 137, 27, 79, 149, 20, 69, 138, 22, 70, 137, 19, 67, 132, 15, 62, 125, 9, 55, 116, 6, 45, 107, 10, 48, 108, 6, 44, 104, + 5, 43, 104, 9, 50, 109, 8, 52, 111, 5, 45, 103, 2, 37, 95, 4, 40, 97, 4, 39, 94, 4, 39, 96, 5, 44, 102, 8, 47, 104, 3, 39, 96, 4, 38, 94, 2, 30, 82, 3, 28, 78, 3, 29, 78, 4, 30, 80, 3, 30, 78, 4, 27, 76, 3, 25, 72, 4, 24, 68, 3, 21, 62, + 3, 19, 59, 3, 11, 44, 3, 7, 39, 2, 9, 39, 3, 9, 37, 2, 7, 36, 3, 9, 39, 3, 14, 45, 4, 16, 48, 3, 10, 40, 3, 11, 39, 3, 7, 35, 2, 8, 35, 3, 14, 43, 3, 10, 41, 2, 12, 42, 2, 8, 36, 2, 6, 32, 3, 8, 35, 2, 8, 33, 2, 5, 28, + 2, 4, 25, 2, 5, 27, 2, 5, 26, 2, 5, 26, 3, 6, 29, 2, 6, 28, 2, 7, 31, 2, 25, 73, 2, 24, 73, 2, 22, 74, 2, 24, 74, 2, 26, 77, 3, 27, 78, 1, 27, 79, 2, 27, 79, 1, 30, 83, 2, 33, 86, 3, 36, 89, 3, 37, 93, 3, 37, 93, 2, 38, 95, + 2, 38, 97, 2, 38, 98, 3, 40, 102, 3, 42, 101, 4, 43, 102, 5, 45, 102, 4, 44, 102, 6, 44, 103, 5, 44, 102, 4, 44, 103, 3, 43, 103, 3, 44, 104, 3, 44, 103, 4, 44, 103, 7, 46, 106, 5, 46, 107, 5, 47, 109, 4, 48, 110, 5, 48, 111, 7, 52, 118, 6, 56, 121, + 7, 58, 122, 9, 60, 125, 11, 60, 127, 11, 62, 129, 11, 62, 129, 15, 65, 132, 16, 66, 134, 15, 66, 134, 19, 68, 135, 21, 68, 136, 20, 67, 135, 21, 66, 135, 23, 68, 139, 22, 68, 139, 26, 72, 142, 20, 70, 141, 24, 73, 143, 21, 72, 141, 18, 71, 140, 19, 71, 141, 20, 71, 142, + 21, 72, 143, 20, 71, 142, 20, 71, 142, 22, 72, 143, 20, 71, 142, 21, 75, 145, 27, 79, 150, 26, 79, 151, 28, 80, 152, 29, 82, 153, 31, 83, 155, 30, 85, 156, 28, 84, 156, 28, 87, 157, 26, 85, 155, 24, 81, 153, 25, 79, 151, 26, 78, 148, 22, 74, 145, 22, 74, 146, 24, 76, 148, + 22, 77, 150, 26, 80, 155, 28, 84, 155, 28, 86, 157, 33, 87, 163, 37, 91, 166, 42, 91, 169, 44, 95, 171, 42, 94, 172, 46, 97, 174, 42, 93, 168, 34, 73, 141, 28, 60, 121, 32, 64, 123, 25, 58, 117, 34, 72, 131, 30, 72, 130, 16, 63, 121, 14, 80, 141, 10, 67, 126, 3, 37, 97, + 3, 40, 100, 3, 46, 105, 3, 39, 100, 4, 37, 96, 2, 35, 92, 2, 35, 91, 3, 41, 98, 4, 49, 104, 3, 47, 104, 2, 41, 98, 2, 38, 95, 2, 39, 97, 6, 63, 128, 8, 94, 165, 7, 89, 158, 4, 66, 129, 3, 57, 118, 5, 58, 118, 5, 52, 111, 2, 45, 105, 3, 47, 105, + 3, 49, 107, 4, 51, 109, 3, 47, 107, 4, 62, 123, 7, 69, 132, 3, 51, 111, 2, 41, 100, 3, 46, 104, 3, 49, 107, 3, 51, 111, 4, 46, 107, 2, 36, 96, 2, 33, 93, 3, 41, 102, 4, 50, 113, 4, 54, 116, 2, 51, 110, 3, 43, 104, 2, 47, 107, 4, 56, 118, 13, 75, 144, + 23, 101, 179, 33, 113, 192, 20, 102, 178, 4, 73, 143, 5, 59, 125, 12, 65, 131, 13, 71, 139, 9, 72, 142, 16, 82, 155, 15, 82, 155, 17, 86, 159, 15, 84, 158, 15, 85, 160, 21, 91, 167, 27, 96, 172, 23, 91, 166, 24, 93, 167, 32, 100, 179, 38, 108, 189, 42, 113, 195, 39, 111, 190, + 31, 98, 176, 29, 95, 169, 26, 92, 164, 20, 87, 160, 29, 96, 169, 32, 96, 170, 16, 79, 150, 12, 72, 142, 12, 67, 137, 13, 64, 135, 14, 64, 133, 11, 65, 134, 10, 62, 131, 5, 57, 126, 11, 63, 132, 19, 74, 143, 28, 86, 159, 31, 90, 163, 24, 76, 146, 13, 58, 124, 10, 55, 120, + 17, 67, 135, 26, 77, 147, 17, 67, 135, 13, 63, 129, 18, 67, 130, 15, 64, 129, 10, 60, 125, 18, 69, 137, 22, 75, 145, 20, 73, 142, 29, 80, 150, 23, 71, 140, 14, 62, 124, 11, 59, 120, 14, 62, 124, 17, 63, 125, 11, 55, 117, 5, 49, 109, 13, 59, 120, 14, 61, 123, 9, 50, 112, + 4, 42, 102, 3, 39, 99, 7, 51, 112, 9, 56, 118, 7, 51, 113, 9, 56, 117, 5, 49, 109, 7, 51, 109, 4, 40, 96, 2, 33, 85, 3, 34, 87, 3, 31, 84, 2, 33, 85, 2, 31, 82, 3, 30, 84, 4, 35, 89, 3, 30, 82, 2, 24, 72, 2, 25, 70, 3, 21, 65, 3, 22, 62, + 3, 18, 56, 3, 14, 50, 3, 15, 50, 3, 11, 44, 4, 9, 42, 2, 10, 41, 3, 11, 41, 5, 11, 41, 2, 8, 39, 1, 13, 44, 3, 15, 47, 3, 18, 50, 3, 12, 41, 3, 10, 37, 5, 10, 37, 3, 9, 36, 2, 8, 33, 2, 8, 32, 3, 7, 32, 3, 8, 31, 2, 6, 26, + 2, 5, 27, 1, 8, 29, 3, 11, 35, 2, 29, 76, 3, 28, 76, 2, 27, 78, 3, 28, 79, 2, 27, 78, 2, 27, 77, 3, 26, 79, 3, 28, 81, 2, 28, 82, 3, 32, 86, 2, 33, 89, 3, 36, 93, 1, 36, 93, 2, 39, 96, 3, 39, 98, 2, 41, 101, 3, 43, 103, 3, 41, 102, + 2, 41, 101, 3, 42, 103, 2, 41, 100, 5, 44, 101, 4, 44, 101, 4, 44, 102, 2, 43, 102, 4, 43, 103, 3, 41, 101, 3, 41, 103, 4, 42, 102, 3, 44, 104, 3, 46, 106, 3, 47, 109, 4, 47, 110, 5, 48, 111, 7, 51, 114, 7, 52, 116, 8, 55, 120, 11, 58, 123, 12, 60, 126, + 10, 61, 126, 14, 63, 130, 12, 63, 130, 13, 65, 132, 16, 66, 132, 15, 65, 131, 15, 63, 132, 16, 63, 132, 19, 65, 135, 23, 67, 137, 24, 68, 139, 19, 68, 138, 19, 68, 138, 18, 68, 138, 18, 69, 138, 18, 70, 138, 18, 68, 140, 18, 68, 139, 17, 69, 139, 17, 69, 139, 19, 72, 140, + 18, 70, 140, 20, 74, 143, 24, 75, 146, 25, 76, 147, 24, 75, 147, 25, 77, 149, 27, 80, 151, 25, 79, 150, 22, 79, 151, 24, 83, 154, 24, 81, 153, 25, 79, 151, 22, 76, 148, 25, 76, 148, 24, 75, 147, 25, 76, 147, 27, 78, 149, 26, 77, 150, 27, 81, 153, 28, 83, 155, 31, 85, 157, + 32, 85, 159, 33, 87, 161, 36, 88, 163, 40, 90, 166, 41, 91, 167, 43, 93, 170, 38, 88, 162, 33, 69, 132, 35, 64, 125, 42, 71, 130, 28, 61, 117, 17, 54, 111, 12, 52, 107, 7, 52, 110, 12, 81, 143, 9, 74, 136, 5, 48, 108, 4, 55, 115, 5, 59, 119, 4, 50, 109, 3, 40, 97, + 3, 44, 101, 3, 45, 101, 2, 38, 97, 3, 46, 102, 5, 53, 109, 4, 51, 108, 3, 47, 104, 4, 48, 105, 5, 62, 125, 6, 84, 153, 7, 83, 151, 5, 68, 130, 4, 56, 116, 3, 48, 108, 3, 46, 104, 3, 51, 107, 5, 53, 110, 4, 53, 110, 4, 54, 113, 4, 53, 113, 4, 74, 137, + 6, 81, 145, 4, 62, 123, 2, 42, 101, 2, 42, 101, 5, 53, 112, 4, 58, 117, 5, 54, 114, 3, 45, 104, 2, 41, 100, 3, 38, 96, 2, 41, 100, 3, 49, 109, 4, 51, 110, 2, 42, 102, 3, 39, 98, 3, 40, 98, 2, 49, 110, 7, 75, 147, 13, 101, 177, 23, 108, 184, 10, 91, 163, + 3, 56, 121, 1, 36, 93, 4, 47, 106, 4, 57, 120, 4, 64, 130, 7, 67, 135, 7, 72, 142, 7, 74, 144, 5, 70, 140, 9, 73, 142, 11, 75, 144, 10, 76, 147, 13, 81, 153, 21, 91, 168, 35, 107, 185, 46, 114, 195, 30, 99, 176, 15, 79, 151, 18, 83, 154, 24, 89, 160, 16, 84, 155, + 17, 85, 157, 18, 87, 159, 15, 82, 153, 20, 82, 152, 14, 78, 149, 20, 84, 158, 25, 88, 159, 18, 80, 150, 13, 71, 139, 11, 69, 138, 20, 80, 151, 26, 90, 164, 30, 92, 167, 21, 83, 156, 11, 62, 130, 5, 47, 110, 7, 52, 117, 17, 70, 138, 30, 84, 154, 22, 75, 143, 15, 65, 131, + 12, 61, 127, 10, 60, 124, 15, 64, 127, 20, 70, 136, 22, 73, 141, 24, 75, 143, 28, 81, 150, 21, 69, 137, 8, 56, 119, 11, 59, 121, 15, 61, 123, 13, 59, 121, 9, 55, 116, 7, 50, 111, 12, 58, 118, 15, 62, 123, 10, 54, 116, 5, 48, 110, 6, 48, 110, 7, 52, 113, 7, 52, 113, + 7, 55, 117, 10, 58, 120, 3, 40, 97, 3, 36, 93, 2, 33, 88, 5, 37, 91, 4, 41, 94, 2, 35, 88, 2, 28, 80, 2, 28, 79, 3, 33, 85, 3, 29, 83, 2, 29, 81, 3, 34, 87, 3, 35, 89, 3, 38, 94, 2, 37, 91, 3, 31, 85, 3, 25, 78, 3, 32, 84, 2, 22, 68, + 3, 21, 65, 2, 19, 60, 2, 13, 47, 3, 11, 44, 2, 10, 43, 2, 13, 46, 3, 13, 47, 3, 13, 46, 3, 9, 39, 2, 7, 35, 3, 6, 35, 2, 9, 37, 3, 12, 39, 4, 11, 38, 4, 9, 34, 2, 10, 33, 1, 7, 29, 3, 6, 28, 2, 7, 27, 3, 6, 26, 3, 26, 76, + 2, 26, 76, 2, 29, 79, 2, 29, 80, 2, 30, 81, 2, 28, 79, 2, 29, 81, 2, 30, 83, 2, 31, 86, 2, 34, 89, 3, 33, 89, 2, 32, 89, 2, 36, 94, 2, 36, 94, 2, 39, 98, 4, 43, 101, 4, 45, 105, 6, 46, 106, 4, 43, 103, 4, 42, 101, 4, 42, 100, 3, 42, 99, + 3, 42, 98, 3, 42, 100, 4, 43, 99, 6, 44, 102, 5, 43, 103, 6, 45, 106, 6, 45, 104, 5, 45, 105, 6, 44, 104, 6, 47, 108, 3, 47, 108, 6, 49, 111, 9, 53, 114, 11, 55, 117, 11, 56, 119, 11, 58, 122, 8, 57, 122, 9, 60, 125, 12, 62, 128, 11, 61, 127, 13, 64, 130, + 16, 65, 130, 16, 64, 130, 17, 65, 130, 14, 63, 127, 14, 62, 128, 16, 62, 131, 21, 66, 134, 20, 67, 136, 24, 70, 140, 24, 71, 139, 22, 70, 139, 21, 69, 137, 18, 67, 137, 19, 69, 138, 19, 69, 138, 18, 70, 137, 16, 69, 135, 19, 69, 139, 19, 71, 140, 22, 73, 143, 22, 73, 144, + 22, 74, 145, 20, 73, 143, 18, 71, 142, 20, 72, 144, 19, 75, 145, 20, 77, 148, 21, 78, 149, 21, 76, 148, 21, 75, 147, 26, 75, 148, 25, 75, 147, 25, 74, 148, 28, 79, 150, 27, 78, 150, 29, 81, 153, 29, 81, 153, 30, 82, 153, 30, 83, 156, 31, 83, 157, 33, 85, 159, 35, 87, 162, + 38, 88, 162, 37, 87, 162, 33, 80, 150, 30, 63, 124, 29, 58, 116, 32, 59, 116, 17, 48, 105, 4, 40, 96, 3, 42, 97, 2, 37, 96, 3, 46, 102, 4, 48, 106, 3, 48, 107, 3, 58, 119, 3, 56, 116, 2, 44, 103, 3, 42, 100, 4, 52, 110, 5, 61, 120, 4, 47, 105, 2, 40, 98, + 2, 48, 105, 6, 53, 109, 7, 60, 118, 7, 62, 120, 3, 51, 110, 3, 43, 104, 5, 49, 107, 4, 49, 106, 3, 42, 99, 3, 39, 95, 3, 40, 97, 4, 48, 104, 6, 49, 108, 4, 50, 106, 3, 48, 104, 3, 48, 105, 4, 54, 114, 5, 60, 121, 4, 56, 116, 4, 51, 110, 3, 46, 103, + 4, 49, 107, 3, 50, 108, 3, 47, 107, 2, 47, 108, 4, 52, 111, 3, 54, 114, 4, 51, 110, 4, 54, 112, 4, 54, 111, 4, 50, 109, 3, 45, 102, 2, 39, 98, 3, 48, 106, 4, 66, 133, 8, 84, 156, 16, 101, 177, 20, 105, 178, 6, 75, 142, 3, 34, 89, 3, 33, 90, 3, 45, 103, + 2, 51, 114, 3, 55, 122, 2, 58, 127, 3, 58, 128, 2, 56, 126, 3, 58, 125, 3, 56, 122, 3, 57, 124, 5, 66, 133, 9, 72, 141, 19, 87, 161, 31, 101, 178, 19, 86, 160, 7, 66, 134, 16, 79, 148, 24, 89, 159, 14, 84, 154, 12, 80, 154, 16, 85, 158, 17, 85, 156, 21, 85, 156, + 17, 83, 154, 26, 89, 162, 30, 93, 166, 21, 84, 154, 19, 82, 153, 20, 86, 158, 30, 94, 167, 30, 94, 170, 29, 94, 169, 25, 90, 163, 18, 76, 145, 8, 58, 122, 5, 54, 118, 10, 64, 131, 20, 77, 146, 20, 74, 142, 11, 61, 127, 4, 54, 120, 5, 58, 121, 10, 60, 123, 8, 52, 115, + 5, 45, 106, 5, 45, 105, 8, 54, 115, 7, 53, 116, 8, 54, 115, 9, 55, 117, 7, 49, 109, 3, 41, 100, 3, 40, 98, 3, 42, 101, 6, 48, 107, 10, 52, 112, 11, 55, 115, 8, 51, 112, 11, 57, 118, 7, 50, 113, 2, 39, 100, 3, 39, 97, 3, 38, 96, 3, 32, 89, 2, 31, 86, + 4, 36, 91, 5, 45, 98, 6, 44, 97, 3, 34, 86, 2, 30, 81, 3, 34, 87, 3, 32, 86, 2, 32, 85, 2, 33, 86, 2, 31, 85, 3, 29, 83, 2, 36, 89, 3, 40, 93, 3, 36, 90, 3, 30, 83, 3, 30, 83, 4, 35, 89, 2, 31, 84, 2, 28, 81, 4, 23, 71, 3, 21, 64, + 2, 20, 64, 4, 22, 66, 3, 19, 60, 3, 16, 53, 3, 16, 50, 3, 16, 49, 3, 12, 45, 3, 13, 44, 3, 11, 40, 2, 8, 34, 2, 6, 31, 2, 7, 31, 2, 7, 30, 3, 8, 31, 3, 6, 27, 2, 4, 23, 2, 26, 75, 2, 26, 77, 2, 27, 78, 2, 28, 79, 2, 29, 79, + 2, 29, 80, 2, 30, 82, 2, 32, 85, 2, 36, 89, 2, 38, 93, 1, 37, 91, 3, 37, 91, 3, 36, 91, 1, 36, 93, 2, 39, 95, 2, 39, 97, 4, 40, 101, 4, 44, 102, 7, 45, 103, 6, 43, 102, 5, 43, 98, 4, 42, 98, 3, 40, 96, 3, 39, 96, 3, 40, 96, 4, 39, 98, + 4, 41, 101, 8, 47, 107, 9, 50, 109, 8, 50, 109, 7, 47, 106, 7, 46, 106, 5, 46, 107, 6, 48, 110, 5, 47, 110, 7, 51, 113, 9, 55, 117, 11, 57, 119, 11, 59, 122, 11, 61, 125, 11, 62, 126, 8, 59, 126, 8, 59, 125, 12, 61, 126, 15, 62, 127, 15, 62, 127, 17, 62, 126, + 16, 62, 127, 15, 61, 126, 15, 62, 128, 19, 65, 131, 20, 67, 135, 22, 68, 136, 21, 68, 137, 17, 67, 136, 15, 65, 133, 13, 65, 133, 13, 64, 131, 12, 64, 131, 12, 65, 133, 13, 65, 134, 16, 68, 138, 17, 70, 140, 17, 70, 140, 19, 72, 141, 18, 70, 139, 14, 67, 137, 16, 70, 139, + 17, 72, 142, 16, 73, 143, 17, 73, 144, 19, 74, 144, 20, 74, 145, 24, 76, 146, 23, 75, 146, 22, 72, 145, 25, 76, 147, 26, 77, 148, 28, 79, 149, 27, 79, 150, 29, 80, 151, 30, 82, 154, 29, 82, 154, 31, 83, 155, 35, 86, 157, 35, 87, 159, 31, 81, 152, 25, 63, 123, 17, 42, 97, + 19, 45, 97, 23, 49, 101, 9, 40, 94, 4, 37, 92, 3, 42, 98, 2, 35, 93, 2, 33, 89, 2, 38, 96, 3, 49, 108, 4, 62, 122, 4, 55, 116, 4, 44, 105, 2, 44, 104, 4, 49, 108, 5, 56, 115, 5, 54, 113, 2, 46, 103, 4, 46, 104, 2, 43, 101, 3, 46, 104, 3, 50, 108, + 3, 44, 104, 2, 37, 97, 4, 39, 94, 3, 35, 89, 3, 27, 80, 2, 32, 85, 3, 39, 93, 2, 42, 98, 3, 40, 98, 3, 43, 99, 2, 42, 99, 2, 40, 98, 2, 43, 102, 4, 48, 106, 4, 52, 110, 3, 51, 111, 3, 44, 101, 3, 42, 99, 2, 41, 99, 3, 41, 101, 3, 47, 108, + 3, 58, 118, 5, 63, 122, 4, 50, 108, 4, 47, 104, 3, 45, 104, 3, 48, 106, 4, 49, 106, 2, 39, 96, 3, 38, 96, 3, 54, 114, 5, 62, 126, 6, 75, 142, 9, 82, 151, 3, 60, 124, 3, 32, 87, 2, 27, 83, 2, 41, 98, 4, 54, 118, 3, 66, 133, 4, 69, 138, 3, 64, 133, + 3, 65, 133, 3, 57, 123, 3, 52, 118, 3, 52, 118, 4, 53, 116, 3, 55, 118, 6, 63, 127, 12, 81, 149, 14, 80, 149, 4, 61, 128, 7, 64, 129, 17, 78, 147, 15, 83, 151, 18, 89, 162, 25, 96, 170, 19, 89, 162, 14, 78, 149, 9, 77, 147, 16, 82, 152, 18, 82, 152, 14, 77, 147, + 15, 77, 148, 25, 87, 157, 25, 87, 159, 16, 82, 155, 19, 86, 158, 34, 100, 173, 29, 95, 168, 14, 76, 144, 8, 66, 133, 7, 62, 130, 9, 67, 135, 11, 66, 134, 4, 57, 123, 6, 59, 123, 7, 61, 124, 5, 57, 120, 4, 44, 105, 3, 35, 92, 3, 38, 95, 3, 42, 101, 3, 46, 107, + 5, 51, 112, 5, 50, 111, 2, 40, 100, 3, 38, 97, 4, 41, 99, 4, 44, 101, 7, 47, 104, 8, 45, 103, 5, 43, 101, 5, 44, 101, 7, 51, 111, 8, 53, 115, 6, 50, 110, 5, 46, 105, 5, 43, 102, 3, 39, 98, 3, 36, 91, 3, 38, 92, 4, 39, 93, 2, 39, 93, 4, 38, 91, + 4, 39, 93, 6, 43, 97, 4, 39, 94, 2, 34, 89, 4, 36, 90, 2, 34, 87, 2, 31, 85, 3, 39, 94, 7, 45, 99, 3, 37, 90, 2, 28, 82, 2, 26, 79, 3, 34, 85, 2, 34, 85, 2, 29, 80, 2, 29, 79, 3, 29, 76, 3, 25, 71, 2, 21, 67, 2, 21, 66, 3, 25, 69, + 2, 32, 80, 3, 29, 77, 2, 23, 67, 2, 20, 63, 3, 16, 55, 2, 12, 47, 2, 13, 48, 3, 11, 43, 2, 6, 32, 2, 7, 28, 2, 5, 26, 4, 5, 26, 4, 28, 76, 2, 28, 78, 2, 29, 80, 2, 28, 80, 2, 29, 80, 1, 30, 80, 3, 30, 82, 2, 33, 86, 3, 36, 89, + 1, 38, 93, 1, 38, 92, 3, 39, 92, 2, 34, 88, 2, 35, 89, 2, 37, 92, 2, 38, 95, 3, 39, 96, 3, 38, 97, 3, 38, 95, 3, 38, 95, 3, 40, 95, 3, 39, 96, 2, 38, 94, 1, 37, 94, 3, 37, 93, 3, 39, 96, 6, 43, 101, 4, 44, 104, 6, 46, 106, 6, 47, 108, + 7, 46, 106, 7, 47, 107, 7, 46, 107, 5, 46, 108, 4, 47, 109, 6, 49, 112, 9, 53, 115, 9, 53, 116, 10, 55, 117, 8, 56, 119, 10, 59, 123, 11, 60, 124, 11, 60, 123, 12, 59, 125, 13, 60, 124, 12, 58, 123, 14, 59, 123, 12, 57, 123, 15, 58, 123, 17, 60, 125, 19, 63, 128, + 19, 63, 131, 18, 66, 134, 17, 66, 135, 17, 67, 135, 15, 65, 134, 12, 63, 131, 10, 62, 129, 10, 64, 129, 10, 63, 129, 13, 64, 133, 13, 66, 134, 15, 67, 136, 13, 65, 135, 16, 67, 136, 13, 66, 135, 13, 65, 133, 15, 66, 136, 16, 67, 137, 16, 69, 140, 17, 71, 142, 17, 71, 142, + 17, 72, 142, 22, 74, 144, 22, 73, 144, 25, 76, 145, 24, 76, 147, 26, 77, 147, 26, 77, 148, 25, 77, 148, 26, 77, 148, 29, 80, 152, 30, 81, 153, 30, 82, 153, 31, 83, 153, 33, 83, 154, 25, 74, 142, 16, 48, 103, 6, 35, 87, 14, 42, 94, 21, 47, 98, 7, 39, 91, 4, 38, 91, + 3, 43, 102, 4, 43, 101, 2, 40, 98, 3, 37, 94, 2, 42, 101, 4, 54, 113, 4, 56, 115, 4, 54, 112, 4, 59, 118, 5, 56, 116, 2, 43, 103, 3, 42, 101, 3, 49, 106, 5, 53, 109, 3, 49, 105, 2, 37, 92, 2, 35, 93, 3, 42, 101, 3, 52, 109, 2, 48, 104, 3, 37, 90, + 2, 27, 80, 3, 33, 86, 3, 40, 93, 4, 41, 96, 2, 37, 92, 3, 35, 94, 2, 39, 96, 4, 43, 99, 3, 45, 104, 4, 47, 105, 4, 48, 105, 4, 48, 105, 3, 38, 96, 2, 37, 94, 2, 42, 100, 2, 46, 104, 2, 46, 105, 4, 55, 115, 3, 54, 113, 2, 41, 99, 2, 37, 94, + 2, 36, 95, 2, 41, 100, 2, 45, 103, 3, 42, 99, 3, 36, 93, 2, 41, 99, 3, 47, 107, 4, 50, 111, 3, 48, 110, 3, 43, 106, 2, 40, 97, 2, 39, 94, 3, 46, 101, 5, 61, 122, 4, 75, 142, 7, 79, 147, 4, 75, 143, 5, 77, 145, 4, 73, 140, 4, 66, 132, 2, 55, 121, + 3, 46, 109, 3, 47, 110, 3, 49, 112, 4, 60, 123, 4, 68, 131, 3, 55, 118, 4, 45, 105, 5, 54, 116, 6, 67, 135, 15, 85, 155, 25, 96, 171, 20, 90, 160, 12, 76, 146, 13, 76, 146, 15, 78, 146, 15, 77, 145, 9, 72, 141, 8, 71, 140, 15, 76, 145, 14, 76, 146, 10, 74, 144, + 12, 78, 148, 23, 88, 159, 21, 84, 155, 19, 81, 151, 14, 77, 146, 7, 65, 134, 5, 64, 131, 5, 62, 128, 7, 64, 131, 12, 72, 139, 10, 71, 135, 6, 62, 124, 5, 51, 113, 4, 50, 111, 5, 55, 116, 8, 59, 119, 5, 54, 115, 6, 54, 115, 4, 49, 109, 2, 38, 98, 2, 38, 97, + 4, 40, 97, 3, 37, 94, 4, 38, 95, 3, 32, 87, 2, 31, 86, 3, 35, 91, 4, 45, 106, 9, 56, 118, 10, 57, 118, 7, 53, 113, 5, 47, 106, 4, 42, 99, 3, 39, 94, 3, 39, 93, 3, 39, 93, 4, 42, 96, 6, 46, 103, 8, 53, 112, 11, 54, 114, 7, 47, 104, 3, 39, 95, + 5, 42, 96, 3, 39, 93, 2, 39, 92, 3, 41, 95, 4, 39, 93, 2, 32, 86, 4, 35, 87, 2, 34, 85, 3, 35, 85, 3, 36, 87, 3, 32, 82, 2, 24, 72, 2, 24, 70, 2, 25, 70, 4, 22, 67, 2, 23, 67, 3, 26, 72, 3, 30, 77, 2, 27, 73, 2, 25, 69, 3, 24, 71, + 2, 25, 73, 2, 24, 71, 2, 23, 70, 2, 18, 59, 3, 14, 49, 2, 14, 48, 2, 10, 42, 2, 11, 43, 2, 24, 71, 3, 26, 76, 3, 28, 78, 2, 29, 78, 3, 30, 80, 3, 30, 81, 2, 30, 81, 3, 32, 85, 2, 35, 89, 2, 38, 92, 2, 38, 92, 3, 38, 90, 2, 32, 85, + 2, 31, 83, 3, 33, 87, 3, 36, 91, 2, 38, 94, 3, 38, 93, 2, 35, 90, 3, 37, 91, 2, 36, 91, 3, 36, 91, 2, 38, 93, 3, 37, 93, 3, 36, 91, 2, 38, 93, 5, 42, 98, 4, 44, 101, 6, 45, 103, 6, 45, 103, 5, 44, 104, 6, 46, 105, 7, 47, 106, 8, 49, 109, + 6, 47, 108, 3, 46, 108, 5, 49, 111, 6, 50, 112, 7, 51, 114, 7, 51, 114, 11, 55, 119, 10, 56, 120, 12, 58, 122, 14, 58, 122, 15, 58, 123, 13, 57, 121, 12, 55, 119, 10, 53, 117, 11, 54, 117, 12, 55, 119, 15, 58, 122, 16, 60, 126, 19, 65, 132, 17, 67, 135, 17, 68, 136, + 15, 67, 134, 13, 64, 131, 7, 60, 127, 9, 61, 128, 8, 61, 127, 12, 64, 131, 11, 64, 132, 12, 66, 132, 12, 64, 134, 13, 65, 134, 11, 63, 131, 12, 64, 131, 12, 64, 132, 14, 65, 135, 16, 69, 138, 15, 67, 137, 17, 70, 141, 17, 70, 140, 20, 71, 142, 22, 74, 144, 26, 76, 146, + 24, 74, 145, 25, 76, 146, 27, 78, 149, 25, 76, 147, 26, 77, 148, 25, 76, 148, 25, 77, 148, 26, 76, 148, 28, 78, 150, 27, 76, 147, 18, 61, 124, 6, 35, 89, 14, 41, 93, 26, 50, 101, 18, 44, 93, 7, 34, 84, 3, 35, 86, 4, 50, 108, 9, 74, 142, 10, 73, 141, 3, 48, 105, + 3, 39, 98, 2, 38, 95, 2, 43, 101, 4, 51, 111, 2, 58, 118, 3, 55, 116, 2, 45, 107, 2, 39, 98, 3, 44, 102, 6, 52, 106, 4, 47, 103, 2, 40, 96, 2, 41, 99, 3, 47, 104, 3, 56, 113, 3, 58, 117, 3, 50, 105, 2, 41, 94, 3, 34, 87, 2, 36, 89, 3, 41, 94, + 3, 39, 93, 2, 37, 95, 5, 49, 108, 4, 59, 116, 2, 49, 108, 3, 38, 94, 2, 38, 94, 3, 44, 101, 3, 40, 96, 2, 37, 95, 2, 48, 106, 3, 49, 107, 2, 42, 103, 3, 47, 107, 3, 45, 105, 3, 40, 97, 3, 44, 99, 3, 43, 100, 3, 45, 104, 3, 45, 104, 3, 43, 99, + 2, 36, 93, 3, 42, 100, 4, 50, 110, 3, 51, 112, 2, 49, 110, 3, 52, 114, 3, 46, 106, 2, 34, 90, 3, 39, 93, 3, 43, 102, 3, 52, 113, 3, 55, 121, 4, 62, 129, 4, 67, 133, 5, 77, 144, 5, 82, 151, 5, 70, 138, 3, 50, 113, 3, 48, 111, 3, 48, 109, 2, 43, 105, + 3, 57, 116, 3, 54, 113, 3, 37, 95, 3, 46, 104, 5, 56, 120, 6, 64, 130, 10, 75, 143, 9, 72, 137, 8, 65, 132, 7, 66, 132, 6, 67, 128, 9, 70, 134, 7, 66, 133, 7, 66, 132, 9, 68, 133, 8, 67, 135, 8, 72, 141, 13, 79, 148, 11, 76, 147, 11, 72, 142, 21, 84, 153, + 21, 83, 152, 11, 73, 140, 10, 69, 135, 8, 67, 134, 10, 69, 138, 15, 79, 149, 15, 80, 149, 8, 67, 133, 5, 60, 124, 9, 68, 136, 13, 74, 144, 13, 72, 138, 5, 60, 120, 6, 57, 117, 4, 50, 109, 3, 42, 100, 3, 40, 98, 2, 41, 96, 2, 37, 95, 2, 38, 95, 3, 36, 91, + 2, 30, 85, 2, 35, 90, 3, 47, 105, 6, 54, 115, 7, 55, 114, 9, 56, 116, 8, 52, 111, 3, 40, 97, 1, 37, 92, 2, 37, 90, 2, 35, 88, 2, 35, 89, 3, 37, 92, 4, 42, 99, 6, 47, 104, 5, 44, 100, 4, 40, 94, 4, 38, 92, 3, 35, 88, 3, 38, 90, 4, 41, 93, + 4, 36, 89, 2, 31, 83, 3, 33, 84, 2, 34, 86, 3, 34, 85, 2, 32, 85, 2, 27, 79, 2, 19, 68, 2, 19, 67, 2, 20, 67, 2, 21, 65, 3, 23, 66, 2, 18, 62, 3, 18, 63, 1, 18, 65, 2, 18, 64, 2, 20, 66, 4, 28, 75, 2, 29, 76, 2, 26, 73, 3, 28, 76, + 2, 23, 68, 1, 21, 66, 2, 21, 66, 2, 23, 68, 2, 24, 70, 2, 24, 72, 3, 24, 72, 2, 27, 73, 3, 27, 77, 2, 28, 77, 2, 29, 79, 2, 31, 82, 3, 37, 88, 3, 40, 91, 2, 38, 91, 3, 35, 87, 2, 33, 83, 2, 30, 81, 3, 31, 83, 3, 34, 87, 2, 35, 89, + 2, 36, 89, 3, 36, 88, 3, 34, 87, 2, 34, 88, 3, 35, 89, 2, 38, 91, 2, 39, 94, 3, 39, 92, 2, 36, 92, 3, 39, 93, 3, 41, 95, 6, 43, 101, 9, 47, 105, 7, 46, 106, 8, 47, 106, 8, 47, 107, 9, 48, 107, 8, 49, 109, 5, 49, 109, 7, 49, 110, 5, 49, 111, + 6, 50, 112, 9, 53, 115, 9, 52, 116, 10, 55, 119, 9, 53, 118, 9, 54, 118, 12, 55, 120, 10, 55, 118, 11, 55, 118, 11, 53, 117, 9, 50, 113, 8, 50, 114, 9, 51, 115, 12, 55, 120, 16, 62, 128, 18, 66, 133, 18, 69, 136, 19, 69, 138, 16, 66, 134, 11, 63, 130, 9, 61, 128, + 8, 60, 127, 10, 63, 129, 11, 64, 132, 13, 65, 133, 16, 67, 134, 16, 68, 134, 12, 64, 131, 11, 63, 131, 10, 63, 130, 15, 66, 134, 17, 67, 136, 19, 70, 139, 19, 69, 140, 19, 70, 140, 19, 69, 140, 20, 70, 141, 22, 72, 143, 21, 71, 143, 23, 74, 145, 25, 76, 146, 25, 76, 146, + 24, 75, 145, 23, 75, 146, 23, 74, 144, 23, 73, 145, 25, 74, 145, 20, 68, 139, 10, 52, 113, 2, 32, 85, 12, 40, 93, 25, 50, 99, 12, 38, 86, 3, 24, 73, 2, 27, 75, 4, 50, 108, 15, 95, 169, 25, 103, 178, 6, 59, 120, 2, 40, 97, 3, 38, 97, 3, 41, 100, 5, 59, 120, + 8, 74, 139, 6, 65, 127, 4, 53, 114, 3, 48, 107, 2, 37, 93, 3, 43, 98, 2, 44, 101, 3, 44, 101, 4, 49, 108, 5, 52, 109, 3, 51, 108, 2, 51, 107, 4, 45, 100, 4, 42, 95, 2, 38, 90, 3, 36, 89, 2, 36, 89, 2, 37, 90, 2, 39, 95, 5, 59, 120, 2, 73, 135, + 3, 55, 115, 2, 31, 86, 2, 34, 90, 3, 43, 101, 3, 48, 105, 2, 42, 102, 3, 53, 113, 4, 58, 117, 3, 47, 108, 2, 44, 103, 3, 41, 101, 3, 42, 98, 2, 44, 102, 2, 47, 106, 4, 48, 110, 3, 49, 109, 3, 46, 105, 3, 44, 102, 2, 44, 102, 3, 51, 111, 2, 52, 113, + 4, 56, 116, 4, 60, 121, 4, 53, 115, 2, 34, 92, 3, 29, 81, 3, 30, 83, 2, 33, 85, 3, 46, 107, 3, 58, 122, 2, 54, 119, 4, 60, 126, 4, 80, 149, 8, 83, 152, 4, 69, 135, 4, 60, 123, 2, 54, 115, 2, 45, 104, 3, 44, 100, 3, 41, 96, 3, 34, 89, 2, 43, 100, + 5, 51, 114, 3, 55, 117, 3, 56, 116, 2, 51, 111, 3, 46, 106, 3, 50, 109, 3, 54, 113, 4, 57, 116, 4, 54, 115, 4, 56, 119, 4, 55, 120, 6, 58, 122, 13, 75, 142, 21, 90, 159, 16, 83, 152, 10, 70, 137, 10, 69, 136, 9, 69, 135, 5, 66, 131, 8, 67, 132, 8, 67, 133, + 10, 69, 137, 14, 78, 148, 20, 81, 151, 10, 71, 138, 8, 64, 131, 11, 71, 139, 12, 70, 138, 7, 62, 128, 3, 55, 116, 4, 51, 112, 4, 49, 109, 3, 45, 106, 3, 44, 103, 3, 47, 104, 3, 44, 101, 4, 49, 107, 5, 52, 111, 4, 46, 102, 3, 42, 99, 2, 44, 103, 5, 50, 110, + 5, 52, 112, 5, 50, 110, 6, 46, 105, 3, 41, 97, 3, 40, 95, 3, 38, 91, 3, 30, 83, 3, 27, 78, 3, 29, 80, 2, 35, 90, 4, 44, 102, 4, 40, 96, 2, 34, 86, 2, 30, 81, 3, 30, 83, 3, 33, 83, 2, 26, 75, 3, 25, 72, 3, 26, 75, 3, 31, 82, 3, 34, 85, + 2, 32, 83, 3, 36, 88, 3, 32, 82, 3, 25, 75, 3, 27, 74, 3, 24, 71, 2, 21, 68, 3, 23, 67, 1, 18, 62, 2, 17, 63, 2, 18, 64, 2, 18, 63, 2, 22, 67, 3, 26, 72, 2, 21, 66, 2, 17, 62, 2, 19, 63, 2, 18, 61, 2, 19, 62, 2, 21, 63, 3, 23, 67, + 2, 22, 68, 2, 24, 71, 2, 23, 71, 3, 25, 72, 3, 24, 72, 2, 25, 72, 2, 26, 76, 2, 27, 78, 2, 32, 81, 1, 34, 86, 2, 36, 88, 2, 32, 83, 3, 30, 81, 3, 27, 78, 3, 28, 79, 3, 29, 82, 3, 30, 84, 2, 31, 83, 2, 30, 83, 3, 30, 82, 2, 31, 84, + 3, 33, 87, 3, 36, 90, 3, 37, 92, 2, 39, 93, 2, 39, 93, 2, 36, 90, 1, 37, 90, 2, 38, 93, 6, 43, 99, 7, 44, 101, 5, 44, 102, 7, 45, 103, 6, 44, 104, 6, 47, 106, 6, 49, 107, 5, 48, 108, 5, 49, 110, 6, 49, 111, 6, 50, 112, 7, 51, 113, 10, 53, 116, + 8, 52, 115, 8, 52, 116, 8, 52, 116, 7, 51, 115, 9, 52, 115, 11, 54, 116, 13, 53, 115, 9, 50, 111, 10, 50, 114, 11, 52, 118, 11, 56, 122, 14, 61, 129, 15, 67, 134, 16, 68, 138, 16, 67, 136, 15, 67, 135, 14, 66, 134, 11, 63, 130, 10, 62, 129, 11, 63, 131, 15, 66, 133, + 18, 67, 133, 19, 69, 134, 18, 67, 134, 18, 66, 134, 14, 64, 132, 17, 65, 134, 17, 66, 135, 17, 66, 136, 17, 67, 136, 19, 69, 138, 19, 69, 140, 18, 68, 139, 20, 70, 141, 19, 69, 141, 21, 72, 142, 22, 73, 143, 21, 72, 143, 22, 72, 142, 21, 72, 143, 21, 71, 142, 20, 69, 140, + 21, 68, 139, 22, 67, 135, 16, 57, 115, 8, 41, 92, 7, 38, 90, 16, 44, 92, 8, 34, 81, 4, 26, 73, 2, 27, 75, 3, 34, 85, 7, 60, 119, 12, 73, 140, 5, 53, 112, 4, 46, 103, 3, 49, 107, 4, 49, 109, 7, 66, 130, 17, 94, 164, 12, 84, 151, 3, 55, 114, 4, 47, 105, + 3, 34, 88, 3, 38, 93, 3, 46, 103, 3, 49, 107, 3, 48, 107, 2, 46, 103, 2, 39, 95, 3, 34, 89, 3, 32, 85, 2, 36, 87, 2, 40, 92, 2, 38, 90, 2, 36, 89, 2, 35, 88, 2, 38, 92, 3, 51, 109, 4, 65, 126, 3, 57, 117, 3, 46, 100, 4, 41, 98, 3, 45, 105, + 5, 53, 113, 4, 53, 112, 4, 51, 112, 4, 57, 117, 2, 54, 113, 3, 49, 109, 3, 44, 103, 2, 42, 100, 2, 43, 102, 2, 46, 105, 3, 49, 110, 4, 53, 113, 3, 57, 117, 4, 59, 120, 3, 55, 115, 3, 53, 114, 4, 50, 111, 2, 47, 107, 4, 54, 114, 3, 56, 116, 3, 47, 105, + 3, 33, 86, 3, 28, 80, 2, 36, 89, 3, 61, 124, 4, 81, 146, 3, 64, 128, 3, 48, 111, 4, 72, 140, 7, 81, 149, 4, 75, 141, 3, 71, 135, 4, 62, 123, 2, 45, 102, 2, 37, 92, 3, 32, 85, 2, 26, 78, 3, 30, 84, 4, 36, 90, 2, 41, 96, 3, 46, 101, 3, 39, 95, + 2, 35, 89, 3, 40, 94, 2, 42, 98, 3, 42, 97, 3, 41, 98, 3, 46, 107, 3, 47, 110, 3, 46, 110, 5, 59, 123, 12, 80, 146, 9, 72, 138, 5, 58, 120, 3, 56, 116, 4, 60, 122, 5, 61, 125, 5, 62, 126, 5, 58, 124, 5, 60, 124, 8, 66, 131, 7, 69, 135, 6, 65, 131, + 4, 62, 129, 11, 72, 141, 14, 75, 146, 8, 64, 131, 3, 56, 117, 5, 51, 111, 3, 49, 110, 4, 51, 111, 5, 51, 110, 3, 47, 106, 3, 45, 103, 5, 54, 112, 8, 61, 126, 8, 62, 125, 4, 50, 109, 3, 46, 104, 6, 52, 109, 5, 50, 109, 2, 43, 102, 3, 44, 103, 5, 52, 112, + 4, 48, 107, 3, 36, 90, 2, 28, 80, 2, 25, 74, 2, 26, 78, 3, 37, 92, 6, 52, 109, 4, 41, 96, 2, 28, 79, 3, 28, 79, 2, 29, 78, 2, 24, 69, 2, 17, 60, 2, 17, 61, 3, 26, 72, 1, 33, 83, 2, 31, 80, 3, 27, 76, 3, 32, 81, 2, 31, 81, 2, 31, 82, + 2, 36, 86, 3, 29, 78, 3, 24, 71, 3, 24, 71, 3, 20, 67, 1, 19, 65, 2, 19, 66, 3, 21, 67, 2, 24, 71, 2, 23, 69, 2, 17, 61, 2, 16, 59, 2, 15, 58, 2, 14, 58, 2, 16, 61, 2, 17, 60, 2, 17, 61, 2, 18, 60, 2, 21, 66, 2, 22, 68, 2, 22, 68, + 2, 21, 67, 1, 21, 67, 2, 22, 69, 2, 24, 72, 2, 27, 75, 1, 27, 77, 3, 28, 80, 2, 29, 79, 2, 27, 76, 1, 24, 73, 3, 23, 73, 2, 25, 77, 2, 28, 79, 2, 28, 79, 2, 29, 79, 3, 25, 76, 2, 25, 76, 2, 31, 82, 2, 34, 88, 3, 38, 91, 3, 41, 95, + 3, 40, 95, 3, 40, 95, 3, 39, 93, 2, 37, 90, 3, 36, 90, 4, 37, 92, 5, 40, 94, 5, 42, 98, 4, 42, 99, 5, 44, 101, 5, 45, 103, 5, 48, 106, 5, 49, 107, 6, 49, 109, 5, 49, 110, 3, 46, 107, 7, 50, 113, 7, 51, 114, 9, 54, 115, 9, 54, 117, 9, 53, 116, + 8, 51, 113, 5, 49, 111, 8, 49, 110, 7, 48, 109, 8, 47, 111, 8, 49, 114, 11, 54, 119, 13, 59, 126, 14, 65, 130, 15, 67, 135, 16, 67, 136, 17, 69, 137, 16, 68, 135, 14, 65, 133, 14, 64, 130, 11, 63, 129, 14, 64, 129, 15, 63, 129, 15, 62, 130, 19, 65, 132, 21, 66, 133, + 18, 66, 132, 19, 65, 132, 19, 65, 132, 16, 63, 130, 18, 64, 132, 16, 65, 132, 17, 66, 135, 20, 67, 136, 20, 70, 137, 19, 68, 138, 19, 69, 139, 19, 69, 138, 21, 69, 139, 21, 69, 138, 20, 67, 138, 18, 66, 135, 15, 62, 132, 15, 60, 128, 15, 57, 120, 15, 50, 105, 15, 44, 95, + 15, 45, 93, 9, 37, 84, 3, 29, 74, 3, 32, 78, 2, 32, 80, 2, 28, 78, 2, 32, 84, 2, 38, 93, 3, 40, 97, 3, 45, 103, 4, 55, 112, 5, 56, 115, 4, 55, 117, 6, 69, 132, 6, 63, 125, 2, 39, 95, 2, 35, 88, 3, 31, 86, 3, 34, 90, 2, 42, 99, 2, 48, 105, + 2, 46, 106, 3, 45, 101, 3, 39, 94, 2, 32, 86, 2, 33, 86, 2, 34, 86, 1, 38, 89, 2, 38, 90, 2, 36, 88, 2, 34, 88, 3, 37, 92, 2, 44, 101, 3, 53, 112, 3, 53, 112, 4, 57, 114, 5, 54, 113, 2, 47, 107, 4, 49, 110, 5, 49, 108, 3, 44, 105, 3, 47, 109, + 3, 56, 117, 2, 53, 113, 5, 49, 107, 3, 45, 103, 2, 46, 105, 3, 49, 106, 3, 50, 110, 3, 53, 113, 5, 62, 121, 6, 67, 128, 5, 65, 125, 4, 57, 116, 3, 48, 109, 2, 40, 100, 2, 40, 99, 3, 46, 105, 3, 41, 100, 3, 34, 87, 3, 29, 82, 3, 35, 88, 4, 57, 118, + 5, 75, 141, 3, 58, 120, 3, 37, 98, 4, 52, 115, 3, 63, 129, 3, 60, 125, 4, 61, 123, 3, 52, 112, 3, 43, 100, 2, 38, 94, 3, 30, 83, 3, 27, 79, 2, 23, 75, 3, 25, 78, 2, 29, 80, 3, 30, 81, 2, 29, 79, 2, 32, 84, 2, 34, 88, 2, 34, 87, 3, 28, 83, + 2, 35, 90, 4, 52, 112, 3, 57, 118, 3, 48, 111, 3, 50, 113, 4, 62, 125, 2, 56, 116, 3, 43, 100, 4, 49, 108, 4, 56, 116, 4, 58, 118, 4, 55, 115, 3, 48, 108, 3, 47, 108, 2, 52, 114, 3, 58, 120, 3, 59, 124, 7, 69, 138, 22, 96, 172, 29, 108, 185, 18, 84, 155, + 5, 57, 118, 5, 52, 113, 4, 52, 113, 4, 55, 112, 5, 50, 109, 2, 44, 103, 3, 44, 104, 6, 55, 113, 7, 61, 123, 9, 61, 123, 3, 46, 104, 3, 37, 93, 3, 42, 99, 4, 45, 101, 3, 48, 107, 4, 62, 126, 7, 74, 139, 5, 59, 122, 3, 40, 95, 3, 33, 85, 2, 29, 80, + 2, 27, 78, 4, 38, 92, 6, 50, 107, 3, 38, 91, 3, 22, 71, 3, 24, 74, 3, 27, 73, 3, 19, 65, 2, 13, 56, 2, 17, 62, 2, 23, 68, 2, 24, 71, 2, 20, 68, 2, 20, 67, 3, 24, 71, 4, 26, 73, 2, 25, 73, 3, 27, 75, 3, 24, 73, 2, 22, 69, 3, 25, 71, + 3, 24, 70, 2, 22, 68, 2, 24, 69, 3, 25, 71, 3, 25, 69, 2, 19, 61, 2, 14, 56, 2, 15, 57, 1, 18, 62, 3, 20, 64, 3, 18, 61, 2, 18, 61, 2, 22, 63, 2, 14, 54, 3, 14, 57, 2, 15, 58, 2, 17, 60, 2, 17, 62, 2, 19, 63, 2, 19, 66, 1, 22, 69, + 2, 23, 70, 3, 25, 73, 2, 25, 72, 2, 25, 73, 2, 23, 70, 3, 22, 70, 2, 20, 68, 2, 23, 72, 3, 26, 75, 2, 27, 77, 3, 27, 76, 2, 26, 74, 3, 25, 74, 2, 24, 75, 3, 29, 81, 2, 34, 87, 2, 38, 94, 3, 40, 94, 4, 41, 94, 2, 40, 94, 2, 39, 93, + 2, 36, 89, 3, 36, 89, 3, 35, 89, 2, 35, 89, 3, 37, 91, 3, 38, 93, 3, 40, 95, 3, 43, 99, 4, 45, 103, 5, 48, 106, 5, 48, 109, 3, 46, 106, 2, 45, 107, 5, 49, 111, 5, 50, 111, 8, 52, 114, 8, 52, 114, 7, 50, 112, 5, 49, 110, 5, 47, 108, 5, 47, 108, + 3, 46, 107, 4, 46, 110, 8, 52, 116, 10, 58, 121, 12, 63, 128, 16, 67, 135, 17, 68, 135, 18, 68, 135, 16, 67, 133, 12, 63, 130, 11, 62, 128, 11, 60, 125, 12, 59, 125, 16, 59, 125, 16, 61, 126, 22, 65, 130, 20, 64, 131, 21, 65, 129, 20, 65, 129, 18, 62, 128, 16, 60, 127, + 14, 60, 127, 14, 61, 127, 17, 62, 129, 15, 61, 129, 18, 63, 129, 20, 65, 134, 19, 66, 135, 22, 67, 135, 20, 66, 133, 22, 65, 133, 19, 62, 131, 15, 59, 127, 13, 58, 124, 12, 55, 120, 11, 48, 108, 10, 40, 91, 8, 39, 87, 14, 42, 89, 3, 29, 74, 3, 20, 65, 3, 27, 73, + 2, 28, 79, 2, 28, 79, 3, 41, 93, 2, 41, 96, 3, 36, 92, 2, 38, 95, 4, 46, 102, 4, 52, 110, 4, 53, 113, 3, 50, 109, 2, 39, 97, 3, 31, 84, 3, 36, 87, 3, 34, 87, 2, 38, 92, 3, 47, 104, 4, 54, 112, 4, 52, 109, 4, 49, 103, 3, 46, 99, 2, 42, 93, + 3, 37, 89, 2, 35, 88, 3, 36, 86, 4, 37, 89, 2, 35, 86, 3, 37, 90, 2, 39, 94, 2, 48, 103, 3, 47, 103, 3, 40, 99, 3, 49, 106, 4, 53, 111, 4, 54, 113, 3, 52, 113, 3, 42, 101, 2, 38, 98, 4, 54, 113, 4, 66, 126, 3, 57, 118, 2, 42, 102, 2, 42, 100, + 4, 49, 107, 3, 49, 110, 3, 45, 105, 3, 41, 102, 3, 47, 107, 3, 55, 118, 4, 58, 120, 3, 54, 116, 2, 53, 114, 3, 45, 104, 2, 36, 96, 2, 41, 101, 3, 44, 103, 4, 42, 98, 3, 34, 90, 3, 34, 89, 2, 39, 96, 3, 50, 109, 3, 45, 104, 2, 35, 93, 2, 36, 95, + 3, 42, 102, 3, 41, 101, 2, 41, 99, 3, 39, 97, 2, 40, 97, 4, 45, 100, 2, 34, 89, 2, 31, 85, 3, 32, 84, 3, 29, 81, 3, 25, 76, 2, 27, 76, 2, 28, 77, 3, 29, 81, 2, 30, 83, 2, 31, 85, 3, 28, 81, 2, 35, 87, 3, 53, 112, 2, 60, 121, 4, 53, 114, + 2, 54, 114, 5, 63, 124, 3, 51, 110, 2, 35, 89, 2, 38, 93, 4, 45, 100, 3, 45, 102, 3, 43, 100, 3, 40, 99, 2, 45, 107, 3, 55, 116, 3, 58, 118, 4, 63, 126, 10, 80, 149, 29, 105, 184, 28, 110, 187, 17, 82, 152, 4, 57, 117, 4, 55, 114, 4, 54, 112, 3, 50, 109, + 3, 45, 103, 3, 44, 102, 5, 51, 107, 6, 52, 109, 4, 51, 110, 3, 48, 106, 3, 35, 90, 4, 27, 79, 3, 28, 80, 3, 36, 91, 3, 48, 107, 5, 65, 130, 6, 73, 137, 4, 58, 120, 3, 46, 105, 3, 45, 104, 4, 45, 102, 3, 36, 90, 2, 33, 86, 2, 35, 88, 2, 30, 82, + 2, 25, 76, 2, 26, 75, 2, 30, 77, 2, 23, 71, 3, 20, 67, 3, 25, 72, 2, 23, 70, 2, 21, 68, 2, 21, 67, 2, 19, 66, 2, 18, 65, 3, 18, 63, 1, 14, 59, 1, 15, 59, 2, 18, 63, 2, 23, 70, 3, 26, 72, 2, 23, 69, 2, 23, 69, 2, 22, 67, 3, 20, 62, + 2, 17, 58, 2, 10, 48, 1, 10, 46, 3, 16, 55, 2, 22, 64, 2, 23, 66, 3, 17, 60, 2, 16, 56, 2, 18, 58,}; +const char* CatPics::cat3Data = (const char*)temp_cat3_3; + diff --git a/tests/images_res/CatPics.hpp b/tests/images_res/CatPics.hpp new file mode 100644 index 00000000..0bdc0880 --- /dev/null +++ b/tests/images_res/CatPics.hpp @@ -0,0 +1,25 @@ +/* (Auto-generated binary data file). */ + +#ifndef BINARY_CATPICS_HPP +#define BINARY_CATPICS_HPP + +namespace CatPics +{ + extern const char* cat1Data; + const unsigned int cat1DataSize = 216090; + const unsigned int cat1Width = 294; + const unsigned int cat1Height = 245; + + extern const char* cat2Data; + const unsigned int cat2DataSize = 117600; + const unsigned int cat2Width = 245; + const unsigned int cat2Height = 160; + + extern const char* cat3Data; + const unsigned int cat3DataSize = 111600; + const unsigned int cat3Width = 248; + const unsigned int cat3Height = 150; +} + +#endif // BINARY_CATPICS_HPP + diff --git a/tests/images_res/cat1.png b/tests/images_res/cat1.png new file mode 100644 index 00000000..ce0aecb6 Binary files /dev/null and b/tests/images_res/cat1.png differ diff --git a/tests/images_res/cat2.png b/tests/images_res/cat2.png new file mode 100644 index 00000000..c28be1ff Binary files /dev/null and b/tests/images_res/cat2.png differ diff --git a/tests/images_res/cat3.png b/tests/images_res/cat3.png new file mode 100644 index 00000000..6fe01b3f Binary files /dev/null and b/tests/images_res/cat3.png differ diff --git a/tests/tests.hpp b/tests/tests.hpp new file mode 100644 index 00000000..334dd1fe --- /dev/null +++ b/tests/tests.hpp @@ -0,0 +1,59 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "dgl/Application.hpp" + +#include "distrho/extra/Thread.hpp" + +#define DISTRHO_ASSERT_EQUAL(v1, v2, msg) \ + if (v1 != v2) { d_stderr2("Test condition failed: %s; file:%s line:%i", msg, __FILE__, __LINE__); return 1; } + +#define DISTRHO_ASSERT_NOT_EQUAL(v1, v2, msg) \ + if (v1 == v2) { d_stderr2("Test condition failed: %s; file:%s line:%i", msg, __FILE__, __LINE__); return 1; } + +#define DISTRHO_ASSERT_SAFE_EQUAL(v1, v2, msg) \ + if (d_isNotEqual(v1, v2)) { d_stderr2("Test condition failed: %s; file:%s line:%i", msg, __FILE__, __LINE__); return 1; } + +START_NAMESPACE_DGL + +// -------------------------------------------------------------------------------------------------------------------- + +class ApplicationQuitter : public Thread +{ + Application& app; + const int numSecondsToWait; + +public: + ApplicationQuitter(Application& a, const int s = 2) + : Thread("ApplicationQuitter"), + app(a), + numSecondsToWait(s) + { + startThread(); + } + +private: + void run() override + { + d_sleep(numSecondsToWait); + d_stdout("About to quit now..."); + app.quit(); + } +}; + +// -------------------------------------------------------------------------------------------------------------------- + +END_NAMESPACE_DGL diff --git a/tests/widgets/ExampleColorWidget.hpp b/tests/widgets/ExampleColorWidget.hpp new file mode 100644 index 00000000..efcea92d --- /dev/null +++ b/tests/widgets/ExampleColorWidget.hpp @@ -0,0 +1,178 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef EXAMPLE_COLOR_WIDGET_HPP_INCLUDED +#define EXAMPLE_COLOR_WIDGET_HPP_INCLUDED + +// ------------------------------------------------------ +// DGL Stuff + +#include "../../dgl/Color.hpp" +#include "../../dgl/StandaloneWindow.hpp" +#include "../../dgl/SubWidget.hpp" + +START_NAMESPACE_DGL + +// ------------------------------------------------------ +// our widget + +template +class ExampleColorWidget : public BaseWidget, + public IdleCallback +{ + char cur; + bool reverse; + int r, g, b; + + Rectangle bgFull, bgSmall; + +public: + static constexpr const char* kExampleWidgetName = "Color"; + + // SubWidget + explicit ExampleColorWidget(Widget* const parent); + + // TopLevelWidget + explicit ExampleColorWidget(Window& windowToMapTo); + + // StandaloneWindow + explicit ExampleColorWidget(Application& app); + +protected: + void idleCallback() noexcept override + { + switch (cur) + { + case 'r': + if (reverse) + { + if (--r == 0) + cur = 'g'; + } + else + { + if (++r == 100) + cur = 'g'; + } + break; + + case 'g': + if (reverse) + { + if (--g == 0) + cur = 'b'; + } + else + { + if (++g == 100) + cur = 'b'; + } + break; + + case 'b': + if (reverse) + { + if (--b == 0) + { + cur = 'r'; + reverse = false; + } + } + else + { + if (++b == 100) + { + cur = 'r'; + reverse = true; + } + } + break; + } + + BaseWidget::repaint(); + } + + void onDisplay() override + { + const GraphicsContext& context(BaseWidget::getGraphicsContext()); + + // paint bg color (in full size) + Color(r, g, b).setFor(context); + bgFull.draw(context); + + // paint inverted color (in 2/3 size) + Color(100-r, 100-g, 100-b).setFor(context); + bgSmall.draw(context); + } + + void onResize(const Widget::ResizeEvent& ev) override + { + const uint width = ev.size.getWidth(); + const uint height = ev.size.getHeight(); + + // full bg + bgFull = Rectangle(0, 0, width, height); + + // small bg, centered 2/3 size + bgSmall = Rectangle(width/6, height/6, width*2/3, height*2/3); + } +}; + +// SubWidget +template<> inline +ExampleColorWidget::ExampleColorWidget(Widget* const parent) + : SubWidget(parent), + cur('r'), + reverse(false), + r(0), g(0), b(0) +{ + setSize(300, 300); + parent->getApp().addIdleCallback(this); +} + +// TopLevelWidget +template<> inline +ExampleColorWidget::ExampleColorWidget(Window& windowToMapTo) + : TopLevelWidget(windowToMapTo), + cur('r'), + reverse(false), + r(0), g(0), b(0) +{ + setSize(300, 300); + addIdleCallback(this); +} + +// StandaloneWindow +template<> inline +ExampleColorWidget::ExampleColorWidget(Application& app) + : StandaloneWindow(app), + cur('r'), + reverse(false), + r(0), g(0), b(0) +{ + setSize(300, 300); + addIdleCallback(this); +} + +typedef ExampleColorWidget ExampleColorSubWidget; +typedef ExampleColorWidget ExampleColorTopLevelWidget; +typedef ExampleColorWidget ExampleColorStandaloneWindow; + +// ------------------------------------------------------ + +END_NAMESPACE_DGL + +#endif // EXAMPLE_COLOR_WIDGET_HPP_INCLUDED diff --git a/tests/widgets/ExampleImagesWidget.hpp b/tests/widgets/ExampleImagesWidget.hpp new file mode 100644 index 00000000..1fcb24d2 --- /dev/null +++ b/tests/widgets/ExampleImagesWidget.hpp @@ -0,0 +1,250 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef EXAMPLE_IMAGES_WIDGET_HPP_INCLUDED +#define EXAMPLE_IMAGES_WIDGET_HPP_INCLUDED + +// ------------------------------------------------------ +// DGL Stuff + +#include "../../dgl/ImageBase.hpp" +#include "../../dgl/SubWidget.hpp" +#include "../../dgl/TopLevelWidget.hpp" + +// ------------------------------------------------------ +// Images + +#include "../images_res/CatPics.hpp" + +START_NAMESPACE_DGL + +// ------------------------------------------------------ +// our widget + +template +class ExampleImagesWidget : public BaseWidget, + public IdleCallback +{ + static const int kImg1y = 0; + static const int kImg2y = 500/2-CatPics::cat2Height/2; + static const int kImg3x = 400/3-CatPics::cat3Width/3; + + static const int kImg1max = 500-CatPics::cat1Width; + static const int kImg2max = 500-CatPics::cat2Width; + static const int kImg3max = 400-CatPics::cat3Height; + + int imgTop1st, imgTop2nd, imgTop3rd; + int img1x, img2x, img3y; + bool img1rev, img2rev, img3rev; + BaseImage img1, img2, img3; + +public: + static constexpr const char* kExampleWidgetName = "Images"; + + // SubWidget + ExampleImagesWidget(Widget* const parent) + : BaseWidget(parent), + imgTop1st(1), + imgTop2nd(2), + imgTop3rd(3), + img1x(0), + img2x(kImg2max), + img3y(kImg3max), + img1rev(false), + img2rev(true), + img3rev(true), + img1(CatPics::cat1Data, CatPics::cat1Width, CatPics::cat1Height, kImageFormatBGR), + img2(CatPics::cat2Data, CatPics::cat2Width, CatPics::cat2Height, kImageFormatBGR), + img3(CatPics::cat3Data, CatPics::cat3Width, CatPics::cat3Height, kImageFormatBGR) + { + BaseWidget::setSize(500, 400); + + parent->getApp().addIdleCallback(this); + } + + // TopLevelWidget + ExampleImagesWidget(Window& windowToMapTo) + : BaseWidget(windowToMapTo), + imgTop1st(1), + imgTop2nd(2), + imgTop3rd(3), + img1x(0), + img2x(kImg2max), + img3y(kImg3max), + img1rev(false), + img2rev(true), + img3rev(true), + img1(CatPics::cat1Data, CatPics::cat1Width, CatPics::cat1Height, kImageFormatBGR), + img2(CatPics::cat2Data, CatPics::cat2Width, CatPics::cat2Height, kImageFormatBGR), + img3(CatPics::cat3Data, CatPics::cat3Width, CatPics::cat3Height, kImageFormatBGR) + { + BaseWidget::setSize(500, 400); + + windowToMapTo.getApp().addIdleCallback(this); + } + + // StandaloneWindow + ExampleImagesWidget(Application& app) + : BaseWidget(app), + imgTop1st(1), + imgTop2nd(2), + imgTop3rd(3), + img1x(0), + img2x(kImg2max), + img3y(kImg3max), + img1rev(false), + img2rev(true), + img3rev(true), + img1(CatPics::cat1Data, CatPics::cat1Width, CatPics::cat1Height, kImageFormatBGR), + img2(CatPics::cat2Data, CatPics::cat2Width, CatPics::cat2Height, kImageFormatBGR), + img3(CatPics::cat3Data, CatPics::cat3Width, CatPics::cat3Height, kImageFormatBGR) + { + BaseWidget::setSize(500, 400); + + app.addIdleCallback(this); + } + +protected: + void idleCallback() noexcept override + { + if (img1rev) + { + img1x -= 2; + if (img1x <= -50) + { + img1rev = false; + setNewTopImg(1); + } + } + else + { + img1x += 2; + if (img1x >= kImg1max+50) + { + img1rev = true; + setNewTopImg(1); + } + } + + if (img2rev) + { + img2x -= 1; + if (img2x <= -50) + { + img2rev = false; + setNewTopImg(2); + } + } + else + { + img2x += 4; + if (img2x >= kImg2max+50) + { + img2rev = true; + setNewTopImg(2); + } + } + + if (img3rev) + { + img3y -= 3; + if (img3y <= -50) + { + img3rev = false; + setNewTopImg(3); + } + } + else + { + img3y += 3; + if (img3y >= kImg3max+50) + { + img3rev = true; + setNewTopImg(3); + } + } + + BaseWidget::repaint(); + } + + void onDisplay() override + { + const GraphicsContext& context(BaseWidget::getGraphicsContext()); + + switch (imgTop3rd) + { + case 1: + img1.drawAt(context, img1x, kImg1y); + break; + case 2: + img2.drawAt(context, img2x, kImg2y); + break; + case 3: + img3.drawAt(context, kImg3x, img3y); + break; + }; + + switch (imgTop2nd) + { + case 1: + img1.drawAt(context, img1x, kImg1y); + break; + case 2: + img2.drawAt(context, img2x, kImg2y); + break; + case 3: + img3.drawAt(context, kImg3x, img3y); + break; + }; + + switch (imgTop1st) + { + case 1: + img1.drawAt(context, img1x, kImg1y); + break; + case 2: + img2.drawAt(context, img2x, kImg2y); + break; + case 3: + img3.drawAt(context, kImg3x, img3y); + break; + }; + } + +private: + void setNewTopImg(const int imgId) noexcept + { + if (imgTop1st == imgId) + return; + + if (imgTop2nd == imgId) + { + imgTop2nd = imgTop1st; + imgTop1st = imgId; + return; + } + + imgTop3rd = imgTop2nd; + imgTop2nd = imgTop1st; + imgTop1st = imgId; + } +}; + +// ------------------------------------------------------ + +END_NAMESPACE_DGL + +#endif // EXAMPLE_IMAGES_WIDGET_HPP_INCLUDED diff --git a/tests/widgets/ExampleRectanglesWidget.hpp b/tests/widgets/ExampleRectanglesWidget.hpp new file mode 100644 index 00000000..7ce85581 --- /dev/null +++ b/tests/widgets/ExampleRectanglesWidget.hpp @@ -0,0 +1,177 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef EXAMPLE_RECTANGLES_WIDGET_HPP_INCLUDED +#define EXAMPLE_RECTANGLES_WIDGET_HPP_INCLUDED + +// ------------------------------------------------------ +// DGL Stuff + +#include "../../dgl/Color.hpp" +#include "../../dgl/SubWidget.hpp" +#include "../../dgl/TopLevelWidget.hpp" + +START_NAMESPACE_DGL + +// ------------------------------------------------------ +// our widget + +template +class ExampleRectanglesWidget : public BaseWidget +{ + bool clicked[9]; + +public: + static constexpr const char* const kExampleWidgetName = "Rectangles"; + + explicit ExampleRectanglesWidget(Widget* const parentWidget) + : BaseWidget(parentWidget) + { + init(); + } + + explicit ExampleRectanglesWidget(Window& windowToMapTo) + : BaseWidget(windowToMapTo) + { + init(); + } + + explicit ExampleRectanglesWidget(Application& app) + : BaseWidget(app) + { + init(); + } + + void init() + { + BaseWidget::setSize(300, 300); + + for (int i=0; i<9; ++i) + clicked[i] = false; + } + +protected: + void onDisplay() override + { + const GraphicsContext& context(BaseWidget::getGraphicsContext()); + + const uint width = BaseWidget::getWidth(); + const uint height = BaseWidget::getHeight(); + + Rectangle r; + + r.setWidth(width/3 - 6); + r.setHeight(height/3 - 6); + + // draw a 3x3 grid + for (int i=0; i<3; ++i) + { + r.setX(3 + i*width/3); + + // 1st + r.setY(3); + + if (clicked[0+i]) + Color(0.8f, 0.5f, 0.3f).setFor(context); + else + Color(0.3f, 0.5f, 0.8f).setFor(context); + + r.draw(context); + + // 2nd + r.setY(3 + height/3); + + if (clicked[3+i]) + Color(0.8f, 0.5f, 0.3f).setFor(context); + else + Color(0.3f, 0.5f, 0.8f).setFor(context); + + r.draw(context); + + // 3rd + r.setY(3 + height*2/3); + + if (clicked[6+i]) + Color(0.8f, 0.5f, 0.3f).setFor(context); + else + Color(0.3f, 0.5f, 0.8f).setFor(context); + + r.draw(context); + } + } + + bool onMouse(const Widget::MouseEvent& ev) override + { + if (ev.button != 1 || ! ev.press) + return false; + + const uint width = BaseWidget::getWidth(); + const uint height = BaseWidget::getHeight(); + + Rectangle r; + + r.setWidth(width/3 - 6); + r.setHeight(height/3 - 6); + + // draw a 3x3 grid + for (int i=0; i<3; ++i) + { + r.setX(3 + i*width/3); + + // 1st + r.setY(3); + + if (r.contains(ev.pos)) + { + clicked[0+i] = !clicked[0+i]; + BaseWidget::repaint(); + break; + } + + // 2nd + r.setY(3 + height/3); + + if (r.contains(ev.pos)) + { + clicked[3+i] = !clicked[3+i]; + BaseWidget::repaint(); + break; + } + + // 3rd + r.setY(3 + height*2/3); + + if (r.contains(ev.pos)) + { + clicked[6+i] = !clicked[6+i]; + BaseWidget::repaint(); + break; + } + } + + return true; + } +}; + +typedef ExampleRectanglesWidget ExampleRectanglesSubWidget; +typedef ExampleRectanglesWidget ExampleRectanglesTopLevelWidget; +typedef ExampleRectanglesWidget ExampleRectanglesStandaloneWindow; + +// ------------------------------------------------------ + +END_NAMESPACE_DGL + +#endif // EXAMPLE_RECTANGLES_WIDGET_HPP_INCLUDED diff --git a/tests/widgets/ExampleShapesWidget.hpp b/tests/widgets/ExampleShapesWidget.hpp new file mode 100644 index 00000000..1186a749 --- /dev/null +++ b/tests/widgets/ExampleShapesWidget.hpp @@ -0,0 +1,115 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef EXAMPLE_SHAPES_WIDGET_HPP_INCLUDED +#define EXAMPLE_SHAPES_WIDGET_HPP_INCLUDED + +// ------------------------------------------------------ +// DGL Stuff + +#include "../../dgl/Color.hpp" +#include "../../dgl/SubWidget.hpp" +#include "../../dgl/TopLevelWidget.hpp" + +START_NAMESPACE_DGL + +// ------------------------------------------------------ +// our widget + +template +class ExampleShapesWidget : public BaseWidget +{ + Rectangle bg; + Rectangle rect; + Triangle tri; + Circle cir; + +public: + static constexpr const char* const kExampleWidgetName = "Shapes"; + + explicit ExampleShapesWidget(Widget* const parentWidget) + : BaseWidget(parentWidget) + { + this->setSize(300, 300); + } + + explicit ExampleShapesWidget(Window& windowToMapTo) + : BaseWidget(windowToMapTo) + { + this->setSize(300, 300); + } + + explicit ExampleShapesWidget(Application& app) + : BaseWidget(app) + { + this->setSize(300, 300); + } + +protected: + void onDisplay() override + { + const GraphicsContext& context(BaseWidget::getGraphicsContext()); + + Color(0.302f, 0.337f, 0.361f).setFor(context);; + bg.draw(context); + + Color(0.235f, 0.271f, 0.294f).setFor(context); + rect.draw(context); + + Color(0.176f, 0.212f, 0.235f).setFor(context); + rect.drawOutline(context, 1); + + Color(0.302f*2, 0.337f*2, 0.361f*2).setFor(context); + tri.draw(context); + + Color(0.302f/2.0f, 0.337f/2.0f, 0.361f/2.0f).setFor(context); + tri.drawOutline(context, 3); + + Color(0.235f, 0.271f, 0.294f).setFor(context); + cir.draw(context); + + Color(0.176f/4, 0.212f/4, 0.235f/4).setFor(context); + cir.drawOutline(context, 2); + } + + void onResize(const Widget::ResizeEvent& ev) override + { + const int width = ev.size.getWidth(); + const int height = ev.size.getHeight(); + + // background + bg = Rectangle(0, 0, width, height); + + // rectangle + rect = Rectangle(20, 10, width-40, height-20); + + // center triangle + tri = Triangle(width*0.5, height*0.1, width*0.1, height*0.9, width*0.9, height*0.9); + + // circle + cir = Circle(width/2, height*2/3, height/6, 300); + } +}; + +typedef ExampleShapesWidget ExampleShapesSubWidget; +typedef ExampleShapesWidget ExampleShapesTopLevelWidget; +typedef ExampleShapesWidget ExampleShapesStandaloneWindow; + +// ------------------------------------------------------ + +END_NAMESPACE_DGL + +#endif // EXAMPLE_SHAPES_WIDGET_HPP_INCLUDED diff --git a/tests/widgets/ExampleTextWidget.hpp b/tests/widgets/ExampleTextWidget.hpp new file mode 100644 index 00000000..2d3b802c --- /dev/null +++ b/tests/widgets/ExampleTextWidget.hpp @@ -0,0 +1,101 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2021 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef EXAMPLE_TEXT_WIDGET_HPP_INCLUDED +#define EXAMPLE_TEXT_WIDGET_HPP_INCLUDED + +// ------------------------------------------------------ +// DGL Stuff + +#include "../../dgl/NanoVG.hpp" + +START_NAMESPACE_DGL + +// ------------------------------------------------------ +// our widget + +template +class ExampleTextWidget : public BaseWidget +{ +public: + static constexpr const char* kExampleWidgetName = "Text"; + + // SubWidget + explicit ExampleTextWidget(Widget* const parent); + + // TopLevelWidget + explicit ExampleTextWidget(Window& windowToMapTo); + + // StandaloneWindow + explicit ExampleTextWidget(Application& app); + +protected: + void onNanoDisplay() override + { + const int width = BaseWidget::getWidth(); + const int height = BaseWidget::getHeight(); + + NanoVG::fontSize(40.0f); + NanoVG::textAlign(NanoVG::Align(NanoVG::ALIGN_CENTER|NanoVG::ALIGN_MIDDLE)); + NanoVG::textLineHeight(20.0f); + + NanoVG::beginPath(); + NanoVG::fillColor(220,220,220,255); + NanoVG::roundedRect(10, height/4+10, width-20, height/2-20, 3); + NanoVG::fill(); + + NanoVG::fillColor(0,150,0,220); + NanoVG::textBox(10, height/2, width-20, "Hello World!", nullptr); + } +}; + +template<> inline +ExampleTextWidget::ExampleTextWidget(Widget* const parent) + : NanoSubWidget(parent) +{ + loadSharedResources(); + setSize(500, 300); +} + +template<> inline +ExampleTextWidget::ExampleTextWidget(Window& windowToMapTo) + : NanoTopLevelWidget(windowToMapTo) +{ + loadSharedResources(); + setSize(500, 300); +} + +template<> inline +ExampleTextWidget::ExampleTextWidget(Application& app) + : NanoStandaloneWindow(app) +{ + loadSharedResources(); + setSize(500, 300); +} + +template class ExampleTextWidget; +template class ExampleTextWidget; +template class ExampleTextWidget; + +typedef ExampleTextWidget ExampleTextSubWidget; +typedef ExampleTextWidget ExampleTextTopLevelWidget; +typedef ExampleTextWidget ExampleTextStandaloneWindow; + +// ------------------------------------------------------ + +END_NAMESPACE_DGL + +#endif // EXAMPLE_TEXT_WIDGET_HPP_INCLUDED diff --git a/tests/widgets/NanoPerfWidget.hpp b/tests/widgets/NanoPerfWidget.hpp new file mode 100644 index 00000000..6fb404a2 --- /dev/null +++ b/tests/widgets/NanoPerfWidget.hpp @@ -0,0 +1,240 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2015 Filipe Coelho + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef NANO_PERF_WIDGET_HPP_INCLUDED +#define NANO_PERF_WIDGET_HPP_INCLUDED + +// ------------------------------------------------------ +// DGL Stuff + +#include "NanoVG.hpp" +#include "../../dpf/distrho/extra/String.hpp" + +// ------------------------------------------------------ +// get time + +#include +#include + +#ifdef DISTRHO_OS_WINDOWS +#else +struct TimePOSIX { + bool monotonic; + double resolution; + uint64_t base; + + TimePOSIX() + : monotonic(false), + resolution(1e-6), + base(0) + { +#if defined(CLOCK_MONOTONIC) + struct timespec ts; + + if (::clock_gettime(CLOCK_MONOTONIC, &ts) == 0) + { + monotonic = true; + resolution = 1e-9; + } +#endif + + base = getRawTime(); + } + + uint64_t getRawTime() + { +#if defined(CLOCK_MONOTONIC) + if (monotonic) + { + struct timespec ts; + + ::clock_gettime(CLOCK_MONOTONIC, &ts); + return (uint64_t) ts.tv_sec * (uint64_t) 1000000000 + (uint64_t) ts.tv_nsec; + } + else +#endif + { + struct timeval tv; + + ::gettimeofday(&tv, NULL); + return (uint64_t) tv.tv_sec * (uint64_t) 1000000 + (uint64_t) tv.tv_usec; + } + } + + double getTime() + { + return (double)(getRawTime() - base) * resolution; + } +}; + +static TimePOSIX gTime; +#endif + +// ------------------------------------------------------ +// our widget + +class NanoPerfWidget : public NanoWidget, + public IdleCallback +{ +public: + static const int kHistoryCount = 100; + + enum RenderStyle { + RENDER_FPS, + RENDER_MS, + }; + + NanoPerfWidget(Window& parent, RenderStyle style, const char* name) + : NanoWidget(parent), + fHead(0), + fStyle(style), + fName(name) + { + parent.addIdleCallback(this); + setSize(200, 35); + + std::memset(fValues, 0, sizeof(float)*kHistoryCount); + + createFontFromFile("sans", "./nanovg_res/Roboto-Regular.ttf"); + + prevt = gTime.getTime(); + } + +protected: + void idleCallback() override + { + repaint(); + } + + void onNanoDisplay() override + { + double t, dt; + + t = gTime.getTime(); + dt = t - prevt; + prevt = t; + update(dt); + + const int w = 200; //getWidth(); + const int h = 35; //getHeight(); + + int i; + float avg; + char str[64]; + + avg = getAverage(); + + beginPath(); + rect(0, 0, w, h); + fillColor(0,0,0,128); + fill(); + + beginPath(); + moveTo(0, h); + + if (fStyle == RENDER_FPS) + { + for (i = 0; i < kHistoryCount; ++i) + { + float v = 1.0f / (0.00001f + fValues[(fHead+i) % kHistoryCount]); + float vx, vy; + if (v > 80.0f) v = 80.0f; + vx = ((float)i/(kHistoryCount-1)) * w; + vy = h - ((v / 80.0f) * h); + lineTo(vx, vy); + } + } + else + { + for (i = 0; i < kHistoryCount; ++i) + { + float v = fValues[(fHead+i) % kHistoryCount] * 1000.0f; + float vx, vy; + if (v > 20.0f) v = 20.0f; + vx = ((float)i/(kHistoryCount-1)) * w; + vy = h - ((v / 20.0f) * h); + lineTo(vx, vy); + } + } + + lineTo(w, h); + fillColor(255,192,0,128); + fill(); + + fontFace("sans"); + + if (fName.isNotEmpty()) + { + fontSize(14.0f); + textAlign(ALIGN_LEFT|ALIGN_TOP); + fillColor(240,240,240,192); + text(3, 1, fName, nullptr); + } + + if (fStyle == RENDER_FPS) + { + fontSize(18.0f); + textAlign(ALIGN_RIGHT|ALIGN_TOP); + fillColor(240,240,240,255); + std::sprintf(str, "%.2f FPS", 1.0f / avg); + text(w-3, 1, str, nullptr); + + fontSize(15.0f); + textAlign(ALIGN_RIGHT|ALIGN_BOTTOM); + fillColor(240,240,240,160); + std::sprintf(str, "%.2f ms", avg * 1000.0f); + text(w-3, h-1, str, nullptr); + } + else + { + fontSize(18.0f); + textAlign(ALIGN_RIGHT|ALIGN_TOP); + fillColor(240,240,240,255); + std::sprintf(str, "%.2f ms", avg * 1000.0f); + text(w-3, 1, str, nullptr); + } + } + +private: + int fHead; + float fValues[kHistoryCount]; + + const int fStyle; + const String fName; + + double prevt; + + void update(float frameTime) noexcept + { + fHead = (fHead+1) % kHistoryCount; + fValues[fHead] = frameTime; + } + + float getAverage() const noexcept + { + int i; + float avg = 0; + + for (i = 0; i < kHistoryCount; ++i) + avg += fValues[i]; + + return avg / (float)kHistoryCount; + } +}; + +// ------------------------------------------------------ + +#endif // NANO_PERF_WIDGET_HPP_INCLUDED