diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 54de7ca06..89216b18b 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -22,7 +22,7 @@ jobs: # https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners runs-on: ubuntu-latest - name: ubuntu (${{ matrix.compiler }} ${{ matrix.cuda }} CUDA) + name: ubuntu (${{ matrix.compiler }} ${{ matrix.cuda }} CUDA ${{ matrix.openmp }} OpenMP) strategy: # Allow other runners in the matrix to continue if some fail @@ -31,6 +31,7 @@ jobs: matrix: compiler: [gcc, clang] cuda: [with, without] + openmp: [with] include: - compiler: gcc compiler-pkgs: "g++ gcc" @@ -51,6 +52,14 @@ jobs: -DENABLE_CUDA=On -DCUDAToolkit_INCLUDE_DIR="/usr/include" -DCMAKE_CUDA_COMPILER_LAUNCHER="ccache" + - compiler: gcc + compiler-pkgs: "g++ gcc" + cc: "gcc" + cxx: "g++" + ccache-max: 600M + cuda: without + openmp: without + openmp-cmake-flags: "-DNOPENMP=ON" env: CC: ${{ matrix.cc }} @@ -75,7 +84,7 @@ jobs: # used in action/cache/restore and action/cache/save steps id: ccache-prepare run: | - echo "key=ccache:ubuntu:${{ matrix.compiler }}:${{ matrix.cuda }}:${{ github.ref }}:$(date +"%Y-%m-%d_%H-%M-%S"):${{ github.sha }}" >> $GITHUB_OUTPUT + echo "key=ccache:ubuntu:${{ matrix.compiler }}:${{ matrix.cuda }}:${{ matrix.openmp }}:${{ github.ref }}:$(date +"%Y-%m-%d_%H-%M-%S"):${{ github.sha }}" >> $GITHUB_OUTPUT - name: restore ccache # setup the GitHub cache used to maintain the ccache from one job to the next @@ -85,8 +94,8 @@ jobs: key: ${{ steps.ccache-prepare.outputs.key }} # Prefer caches from the same branch. Fall back to caches from the dev branch. restore-keys: | - ccache:ubuntu:${{ matrix.compiler }}:${{ matrix.cuda }}:${{ github.ref }} - ccache:ubuntu:${{ matrix.compiler }}:${{ matrix.cuda }} + ccache:ubuntu:${{ matrix.compiler }}:${{ matrix.cuda }}:${{ matrix.openmp }}:${{ github.ref }} + ccache:ubuntu:${{ matrix.compiler }}:${{ matrix.cuda }}:${{ matrix.openmp }}: - name: create empty libraries # This is to work around a bug in nvlink. @@ -127,6 +136,7 @@ jobs: -DCMAKE_Fortran_COMPILER_LAUNCHER="ccache" \ -DBLA_VENDOR="OpenBLAS" \ ${{ matrix.cuda-cmake-flags }} \ + ${{ matrix.openmp-cmake-flags }} \ .. echo "::endgroup::" echo "::group::Build $lib" @@ -573,7 +583,7 @@ jobs: # Prefer caches from the same branch. Fall back to caches from the dev branch. restore-keys: | ccache:msvc:${{ matrix.openmp }}:${{ github.ref }} - ccache:msvc:${{ matrix.openmp }} + ccache:msvc:${{ matrix.openmp }}: - name: configure ccache # Limit the maximum size and switch on compression to avoid exceeding the total disk or cache quota. diff --git a/AMD/CMakeLists.txt b/AMD/CMakeLists.txt index 2810219e4..1203411ff 100644 --- a/AMD/CMakeLists.txt +++ b/AMD/CMakeLists.txt @@ -12,10 +12,10 @@ cmake_minimum_required ( VERSION 3.20 ) -set ( AMD_DATE "Sept 8, 2023" ) +set ( AMD_DATE "Sept 18, 2023" ) set ( AMD_VERSION_MAJOR 3 ) set ( AMD_VERSION_MINOR 2 ) -set ( AMD_VERSION_SUB 0 ) +set ( AMD_VERSION_SUB 1 ) message ( STATUS "Building AMD version: v" ${AMD_VERSION_MAJOR}. diff --git a/AMD/Config/AMDConfig.cmake.in b/AMD/Config/AMDConfig.cmake.in index 9b26776d7..6d31d5c4e 100644 --- a/AMD/Config/AMDConfig.cmake.in +++ b/AMD/Config/AMDConfig.cmake.in @@ -60,7 +60,7 @@ if ( TARGET ${_target_static} ) endif ( ) # Check for most common build types -set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" ) +set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" "None" ) get_property ( _isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG ) if ( _isMultiConfig ) diff --git a/AMD/Demo/amd_demo.out b/AMD/Demo/amd_demo.out index be12b7d7f..820ca1305 100644 --- a/AMD/Demo/amd_demo.out +++ b/AMD/Demo/amd_demo.out @@ -1,7 +1,7 @@ -AMD version 3.2.0, date: Sept 8, 2023 +AMD version 3.2.1, date: Sept 18, 2023 AMD demo, with the 24-by-24 Harwell/Boeing matrix, can_24: -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -115,7 +115,7 @@ Plot of input matrix pattern: 23: . . . . . . X . . . . X X . . . . . . . . . . X return value from amd_order: 0 (should be 0) -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK n, dimension of A: 24 nz, number of nonzeros in A: 160 diff --git a/AMD/Demo/amd_demo2.out b/AMD/Demo/amd_demo2.out index 56ab26771..d3b26e437 100644 --- a/AMD/Demo/amd_demo2.out +++ b/AMD/Demo/amd_demo2.out @@ -1,7 +1,7 @@ AMD demo, with a jumbled version of the 24-by-24 Harwell/Boeing matrix, can_24: -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -144,7 +144,7 @@ Plot of symmetric matrix to be ordered by amd_order: 23: . . . . . . X . . . . X X . . . . . . . . . . X return value from amd_order: 1 (should be 1) -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK, but jumbled n, dimension of A: 24 nz, number of nonzeros in A: 102 diff --git a/AMD/Demo/amd_l_demo.out b/AMD/Demo/amd_l_demo.out index 1f932e933..6d588a728 100644 --- a/AMD/Demo/amd_l_demo.out +++ b/AMD/Demo/amd_l_demo.out @@ -1,7 +1,7 @@ -AMD version 3.2.0, date: Sept 8, 2023 +AMD version 3.2.1, date: Sept 18, 2023 AMD demo, with the 24-by-24 Harwell/Boeing matrix, can_24: -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -115,7 +115,7 @@ Plot of input matrix pattern: 23: . . . . . . X . . . . X X . . . . . . . . . . X return value from amd_l_order: 0 (should be 0) -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK n, dimension of A: 24 nz, number of nonzeros in A: 160 diff --git a/AMD/Doc/AMD_UserGuide.pdf b/AMD/Doc/AMD_UserGuide.pdf index 9d856f65a..5fcfb1e84 100644 Binary files a/AMD/Doc/AMD_UserGuide.pdf and b/AMD/Doc/AMD_UserGuide.pdf differ diff --git a/AMD/Doc/ChangeLog b/AMD/Doc/ChangeLog index 674f848c0..7ca9034be 100644 --- a/AMD/Doc/ChangeLog +++ b/AMD/Doc/ChangeLog @@ -1,3 +1,7 @@ +Sept 18, 2023: version 3.2.1 + + * cmake update: add "None" build type, from Antonio Rojas, for Arch Linux + Sept 8, 2023: version 3.2.0 * cmake updates: SuiteSparse:: namespace by Markus Muetzel diff --git a/AMD/Doc/amd_version.tex b/AMD/Doc/amd_version.tex index 28ac136e7..4ddd353e4 100644 --- a/AMD/Doc/amd_version.tex +++ b/AMD/Doc/amd_version.tex @@ -1,2 +1,2 @@ % version of SuiteSparse/AMD -\date{VERSION 3.2.0, Sept 8, 2023} +\date{VERSION 3.2.1, Sept 18, 2023} diff --git a/AMD/Include/amd.h b/AMD/Include/amd.h index b47ea7b71..1f3014377 100644 --- a/AMD/Include/amd.h +++ b/AMD/Include/amd.h @@ -374,10 +374,10 @@ void amd_l_info (double Info [ ]) ; * Versions 1.1 and earlier of AMD do not include a #define'd version number. */ -#define AMD_DATE "Sept 8, 2023" +#define AMD_DATE "Sept 18, 2023" #define AMD_MAIN_VERSION 3 #define AMD_SUB_VERSION 2 -#define AMD_SUBSUB_VERSION 0 +#define AMD_SUBSUB_VERSION 1 #define AMD_VERSION_CODE(main,sub) ((main) * 1000 + (sub)) #define AMD_VERSION AMD_VERSION_CODE(AMD_MAIN_VERSION,AMD_SUB_VERSION) diff --git a/BTF/CMakeLists.txt b/BTF/CMakeLists.txt index cd0d212fa..ac2a20ae1 100644 --- a/BTF/CMakeLists.txt +++ b/BTF/CMakeLists.txt @@ -12,10 +12,10 @@ cmake_minimum_required ( VERSION 3.20 ) -set ( BTF_DATE "Sept 8, 2023" ) +set ( BTF_DATE "Sept 18, 2023" ) set ( BTF_VERSION_MAJOR 2 ) set ( BTF_VERSION_MINOR 2 ) -set ( BTF_VERSION_SUB 0 ) +set ( BTF_VERSION_SUB 1 ) message ( STATUS "Building BTF version: v" ${BTF_VERSION_MAJOR}. diff --git a/BTF/Config/BTFConfig.cmake.in b/BTF/Config/BTFConfig.cmake.in index 26f707e14..c10e04d99 100644 --- a/BTF/Config/BTFConfig.cmake.in +++ b/BTF/Config/BTFConfig.cmake.in @@ -60,7 +60,7 @@ if ( TARGET ${_target_static} ) endif ( ) # Check for most common build types -set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" ) +set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" "None" ) get_property ( _isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG ) if ( _isMultiConfig ) diff --git a/BTF/Doc/ChangeLog b/BTF/Doc/ChangeLog index 37d774e38..0259f7959 100644 --- a/BTF/Doc/ChangeLog +++ b/BTF/Doc/ChangeLog @@ -1,3 +1,7 @@ +Sept 18, 2023: version 2.2.1 + + * cmake update: add "None" build type, from Antonio Rojas, for Arch Linux + Sept 8, 2023: version 2.2.0 * cmake updates: SuiteSparse:: namespace by Markus Muetzel diff --git a/BTF/Include/btf.h b/BTF/Include/btf.h index a0b3ca98e..1675fabd0 100644 --- a/BTF/Include/btf.h +++ b/BTF/Include/btf.h @@ -254,10 +254,10 @@ int64_t btf_l_order (int64_t, int64_t *, int64_t *, double , double *, * #endif */ -#define BTF_DATE "Sept 8, 2023" +#define BTF_DATE "Sept 18, 2023" #define BTF_MAIN_VERSION 2 #define BTF_SUB_VERSION 2 -#define BTF_SUBSUB_VERSION 0 +#define BTF_SUBSUB_VERSION 1 #define BTF_VERSION_CODE(main,sub) ((main) * 1000 + (sub)) #define BTF_VERSION BTF_VERSION_CODE(BTF_MAIN_VERSION,BTF_SUB_VERSION) diff --git a/CAMD/CMakeLists.txt b/CAMD/CMakeLists.txt index 2b7d48996..7418c5cbc 100644 --- a/CAMD/CMakeLists.txt +++ b/CAMD/CMakeLists.txt @@ -11,10 +11,10 @@ cmake_minimum_required ( VERSION 3.20 ) -set ( CAMD_DATE "Sept 8, 2023" ) +set ( CAMD_DATE "Sept 18, 2023" ) set ( CAMD_VERSION_MAJOR 3 ) set ( CAMD_VERSION_MINOR 2 ) -set ( CAMD_VERSION_SUB 0 ) +set ( CAMD_VERSION_SUB 1 ) message ( STATUS "Building CAMD version: v" ${CAMD_VERSION_MAJOR}. diff --git a/CAMD/Config/CAMDConfig.cmake.in b/CAMD/Config/CAMDConfig.cmake.in index 06e3d4cc9..52fd171d2 100644 --- a/CAMD/Config/CAMDConfig.cmake.in +++ b/CAMD/Config/CAMDConfig.cmake.in @@ -60,7 +60,7 @@ if ( TARGET ${_target_static} ) endif ( ) # Check for most common build types -set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" ) +set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" "None" ) get_property ( _isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG ) if ( _isMultiConfig ) diff --git a/CAMD/Demo/camd_demo.out b/CAMD/Demo/camd_demo.out index 4456bacbb..4ad392519 100644 --- a/CAMD/Demo/camd_demo.out +++ b/CAMD/Demo/camd_demo.out @@ -1,7 +1,7 @@ -CAMD version 3.2, date: Sept 8, 2023 +CAMD version 3.2, date: Sept 18, 2023 CAMD demo, with the 24-by-24 Harwell/Boeing matrix, can_24: -camd version 3.2.0, Sept 8, 2023: approximate minimum degree ordering: +camd version 3.2.1, Sept 18, 2023: approximate minimum degree ordering: dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -115,7 +115,7 @@ Plot of input matrix pattern: 23: . . . . . . X . . . . X X . . . . . . . . . . X return value from camd_order: 0 (should be 0) -CAMD version 3.2.0, Sept 8, 2023, results: +CAMD version 3.2.1, Sept 18, 2023, results: status: OK n, dimension of A: 24 nz, number of nonzeros in A: 160 diff --git a/CAMD/Demo/camd_demo2.out b/CAMD/Demo/camd_demo2.out index 1bdfb7151..549538d17 100644 --- a/CAMD/Demo/camd_demo2.out +++ b/CAMD/Demo/camd_demo2.out @@ -1,7 +1,7 @@ CAMD demo, with a jumbled version of the 24-by-24 Harwell/Boeing matrix, can_24: -camd version 3.2.0, Sept 8, 2023: approximate minimum degree ordering: +camd version 3.2.1, Sept 18, 2023: approximate minimum degree ordering: dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -144,7 +144,7 @@ Plot of symmetric matrix to be ordered by camd_order: 23: . . . . . . X . . . . X X . . . . . . . . . . X return value from camd_order: 1 (should be 1) -CAMD version 3.2.0, Sept 8, 2023, results: +CAMD version 3.2.1, Sept 18, 2023, results: status: OK, but jumbled n, dimension of A: 24 nz, number of nonzeros in A: 102 diff --git a/CAMD/Demo/camd_l_demo.out b/CAMD/Demo/camd_l_demo.out index 2a363bc1b..6df94cf9f 100644 --- a/CAMD/Demo/camd_l_demo.out +++ b/CAMD/Demo/camd_l_demo.out @@ -1,7 +1,7 @@ -CAMD version 3.2, date: Sept 8, 2023 +CAMD version 3.2, date: Sept 18, 2023 CAMD demo, with the 24-by-24 Harwell/Boeing matrix, can_24: -camd version 3.2.0, Sept 8, 2023: approximate minimum degree ordering: +camd version 3.2.1, Sept 18, 2023: approximate minimum degree ordering: dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -115,7 +115,7 @@ Plot of input matrix pattern: 23: . . . . . . X . . . . X X . . . . . . . . . . X return value from camd_l_order: 0 (should be 0) -CAMD version 3.2.0, Sept 8, 2023, results: +CAMD version 3.2.1, Sept 18, 2023, results: status: OK n, dimension of A: 24 nz, number of nonzeros in A: 160 diff --git a/CAMD/Doc/CAMD_UserGuide.pdf b/CAMD/Doc/CAMD_UserGuide.pdf index 60b445000..b58c5f5cc 100644 Binary files a/CAMD/Doc/CAMD_UserGuide.pdf and b/CAMD/Doc/CAMD_UserGuide.pdf differ diff --git a/CAMD/Doc/ChangeLog b/CAMD/Doc/ChangeLog index bbd5c49d3..421680dd0 100644 --- a/CAMD/Doc/ChangeLog +++ b/CAMD/Doc/ChangeLog @@ -1,3 +1,7 @@ +Sept 18, 2023: version 3.2.1 + + * cmake update: add "None" build type, from Antonio Rojas, for Arch Linux + Sept 8, 2023: version 3.2.0 * cmake updates: SuiteSparse:: namespace by Markus Muetzel diff --git a/CAMD/Doc/camd_version.tex b/CAMD/Doc/camd_version.tex index ef7d16585..8ad69e49a 100644 --- a/CAMD/Doc/camd_version.tex +++ b/CAMD/Doc/camd_version.tex @@ -1,2 +1,2 @@ % version of SuiteSparse/CAMD -\date{VERSION 3.2.0, Sept 8, 2023} +\date{VERSION 3.2.1, Sept 18, 2023} diff --git a/CAMD/Include/camd.h b/CAMD/Include/camd.h index 245e76795..6c48f0e2c 100644 --- a/CAMD/Include/camd.h +++ b/CAMD/Include/camd.h @@ -384,10 +384,10 @@ void camd_l_info (double Info [ ]) ; * #endif */ -#define CAMD_DATE "Sept 8, 2023" +#define CAMD_DATE "Sept 18, 2023" #define CAMD_MAIN_VERSION 3 #define CAMD_SUB_VERSION 2 -#define CAMD_SUBSUB_VERSION 0 +#define CAMD_SUBSUB_VERSION 1 #define CAMD_VERSION_CODE(main,sub) ((main) * 1000 + (sub)) #define CAMD_VERSION CAMD_VERSION_CODE(CAMD_MAIN_VERSION,CAMD_SUB_VERSION) diff --git a/CCOLAMD/CMakeLists.txt b/CCOLAMD/CMakeLists.txt index 7524cb0b5..d1a185037 100644 --- a/CCOLAMD/CMakeLists.txt +++ b/CCOLAMD/CMakeLists.txt @@ -11,10 +11,10 @@ cmake_minimum_required ( VERSION 3.20 ) -set ( CCOLAMD_DATE "Sept 8, 2023" ) +set ( CCOLAMD_DATE "Sept 18, 2023" ) set ( CCOLAMD_VERSION_MAJOR 3 ) set ( CCOLAMD_VERSION_MINOR 2 ) -set ( CCOLAMD_VERSION_SUB 0 ) +set ( CCOLAMD_VERSION_SUB 1 ) message ( STATUS "Building CCOLAMD version: v" ${CCOLAMD_VERSION_MAJOR}. diff --git a/CCOLAMD/Config/CCOLAMDConfig.cmake.in b/CCOLAMD/Config/CCOLAMDConfig.cmake.in index 4152ada89..c0ba8ab5f 100644 --- a/CCOLAMD/Config/CCOLAMDConfig.cmake.in +++ b/CCOLAMD/Config/CCOLAMDConfig.cmake.in @@ -60,7 +60,7 @@ if ( TARGET ${_target_static} ) endif ( ) # Check for most common build types -set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" ) +set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" "None" ) get_property ( _isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG ) if ( _isMultiConfig ) diff --git a/CCOLAMD/Demo/ccolamd_example.out b/CCOLAMD/Demo/ccolamd_example.out index 26e1c880f..77c86833a 100644 --- a/CCOLAMD/Demo/ccolamd_example.out +++ b/CCOLAMD/Demo/ccolamd_example.out @@ -15,7 +15,7 @@ Column 3, with 2 entries: row 1 row 3 -ccolamd version 3.2.0, Sept 8, 2023: OK. +ccolamd version 3.2.1, Sept 18, 2023: OK. ccolamd: number of dense or empty rows ignored: 0 ccolamd: number of dense or empty columns ignored: 0 ccolamd: number of garbage collections performed: 0 @@ -38,7 +38,7 @@ Column 3, with 1 entries: row 4 Column 4, with 0 entries: -csymamd version 3.2.0, Sept 8, 2023: OK. +csymamd version 3.2.1, Sept 18, 2023: OK. csymamd: number of dense or empty rows ignored: 0 csymamd: number of dense or empty columns ignored: 0 csymamd: number of garbage collections performed: 0 diff --git a/CCOLAMD/Demo/ccolamd_l_example.out b/CCOLAMD/Demo/ccolamd_l_example.out index 234593a26..58b4cc359 100644 --- a/CCOLAMD/Demo/ccolamd_l_example.out +++ b/CCOLAMD/Demo/ccolamd_l_example.out @@ -15,7 +15,7 @@ Column 3, with 2 entries: row 1 row 3 -ccolamd version 3.2.0, Sept 8, 2023: OK. +ccolamd version 3.2.1, Sept 18, 2023: OK. ccolamd: number of dense or empty rows ignored: 0 ccolamd: number of dense or empty columns ignored: 0 ccolamd: number of garbage collections performed: 0 @@ -38,7 +38,7 @@ Column 3, with 1 entries: row 4 Column 4, with 0 entries: -csymamd version 3.2.0, Sept 8, 2023: OK. +csymamd version 3.2.1, Sept 18, 2023: OK. csymamd: number of dense or empty rows ignored: 0 csymamd: number of dense or empty columns ignored: 0 csymamd: number of garbage collections performed: 0 diff --git a/CCOLAMD/Doc/ChangeLog b/CCOLAMD/Doc/ChangeLog index f494f9011..d0dbe6c81 100644 --- a/CCOLAMD/Doc/ChangeLog +++ b/CCOLAMD/Doc/ChangeLog @@ -1,3 +1,7 @@ +Sept 18, 2023: version 3.2.1 + + * cmake update: add "None" build type, from Antonio Rojas, for Arch Linux + Sept 8, 2023: version 3.2.0 * cmake updates: SuiteSparse:: namespace by Markus Muetzel diff --git a/CCOLAMD/Include/ccolamd.h b/CCOLAMD/Include/ccolamd.h index c339bb701..35f6b896e 100644 --- a/CCOLAMD/Include/ccolamd.h +++ b/CCOLAMD/Include/ccolamd.h @@ -41,10 +41,10 @@ extern "C" { * #endif */ -#define CCOLAMD_DATE "Sept 8, 2023" +#define CCOLAMD_DATE "Sept 18, 2023" #define CCOLAMD_MAIN_VERSION 3 #define CCOLAMD_SUB_VERSION 2 -#define CCOLAMD_SUBSUB_VERSION 0 +#define CCOLAMD_SUBSUB_VERSION 1 #define CCOLAMD_VERSION_CODE(main,sub) ((main) * 1000 + (sub)) #define CCOLAMD_VERSION \ diff --git a/CHOLMOD/CMakeLists.txt b/CHOLMOD/CMakeLists.txt index eea8f4ad2..44b8d66e5 100644 --- a/CHOLMOD/CMakeLists.txt +++ b/CHOLMOD/CMakeLists.txt @@ -12,10 +12,10 @@ # cmake 3.22 is required to find the BLAS/LAPACK cmake_minimum_required ( VERSION 3.22 ) -set ( CHOLMOD_DATE "Sept 8, 2023" ) +set ( CHOLMOD_DATE "Sept 18, 2023" ) set ( CHOLMOD_VERSION_MAJOR 4 ) set ( CHOLMOD_VERSION_MINOR 2 ) -set ( CHOLMOD_VERSION_SUB 0 ) +set ( CHOLMOD_VERSION_SUB 1 ) message ( STATUS "Building CHOLMOD version: v" ${CHOLMOD_VERSION_MAJOR}. diff --git a/CHOLMOD/Config/CHOLMODConfig.cmake.in b/CHOLMOD/Config/CHOLMODConfig.cmake.in index 6b878cf2b..06a9ff350 100644 --- a/CHOLMOD/Config/CHOLMODConfig.cmake.in +++ b/CHOLMOD/Config/CHOLMODConfig.cmake.in @@ -90,7 +90,7 @@ if ( TARGET ${_target_static} ) endif ( ) # Check for most common build types -set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" ) +set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" "None" ) get_property ( _isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG ) if ( _isMultiConfig ) diff --git a/CHOLMOD/Config/CHOLMOD_CUDAConfig.cmake.in b/CHOLMOD/Config/CHOLMOD_CUDAConfig.cmake.in index e49ce91a3..961ad3c2d 100644 --- a/CHOLMOD/Config/CHOLMOD_CUDAConfig.cmake.in +++ b/CHOLMOD/Config/CHOLMOD_CUDAConfig.cmake.in @@ -77,7 +77,7 @@ if ( TARGET ${_target_static} ) endif ( ) # Check for most common build types -set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" ) +set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" "None" ) get_property ( _isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG ) if ( _isMultiConfig ) diff --git a/CHOLMOD/Doc/CHOLMOD_UserGuide.pdf b/CHOLMOD/Doc/CHOLMOD_UserGuide.pdf index d1f425acc..4be62bc47 100644 Binary files a/CHOLMOD/Doc/CHOLMOD_UserGuide.pdf and b/CHOLMOD/Doc/CHOLMOD_UserGuide.pdf differ diff --git a/CHOLMOD/Doc/ChangeLog b/CHOLMOD/Doc/ChangeLog index 6c9f12575..afcf61443 100644 --- a/CHOLMOD/Doc/ChangeLog +++ b/CHOLMOD/Doc/ChangeLog @@ -1,3 +1,7 @@ +Sept 18, 2023: version 4.2.1 + + * cmake update: add "None" build type, from Antonio Rojas, for Arch Linux + Sept 8, 2023: version 4.2.0 * cmake updates: SuiteSparse:: namespace by Markus Muetzel diff --git a/CHOLMOD/Doc/cholmod_version.tex b/CHOLMOD/Doc/cholmod_version.tex index 71a4bfb0e..489f15cc1 100644 --- a/CHOLMOD/Doc/cholmod_version.tex +++ b/CHOLMOD/Doc/cholmod_version.tex @@ -1,2 +1,2 @@ % version of SuiteSparse/CHOLMOD -\date{VERSION 4.2.0, Sept 8, 2023} +\date{VERSION 4.2.1, Sept 18, 2023} diff --git a/CHOLMOD/Include/cholmod.h b/CHOLMOD/Include/cholmod.h index d6c02cbdc..e2f79bf11 100644 --- a/CHOLMOD/Include/cholmod.h +++ b/CHOLMOD/Include/cholmod.h @@ -97,10 +97,10 @@ #ifndef CHOLMOD_H #define CHOLMOD_H -#define CHOLMOD_DATE "Sept 8, 2023" +#define CHOLMOD_DATE "Sept 18, 2023" #define CHOLMOD_MAIN_VERSION 4 #define CHOLMOD_SUB_VERSION 2 -#define CHOLMOD_SUBSUB_VERSION 0 +#define CHOLMOD_SUBSUB_VERSION 1 /* ========================================================================== */ /* === Include/cholmod_io64 ================================================= */ diff --git a/CHOLMOD/SuiteSparse_metis/GKlib/random.c b/CHOLMOD/SuiteSparse_metis/GKlib/random.c index b6462a060..fd89a0ca9 100644 --- a/CHOLMOD/SuiteSparse_metis/GKlib/random.c +++ b/CHOLMOD/SuiteSparse_metis/GKlib/random.c @@ -71,8 +71,8 @@ GK_MKRANDOM(gk_z, size_t, ssize_t) #elif defined ( HAVE_KEYWORD__THREAD ) // gcc and many other compilers support the __thread keyword - __thread static uint64_t mt[NN]; - __thread static int mti=NN+1; + static __thread uint64_t mt[NN]; + static __thread int mti=NN+1; #elif defined ( HAVE_KEYWORD__DECLSPEC_THREAD ) diff --git a/COLAMD/CMakeLists.txt b/COLAMD/CMakeLists.txt index 462329bef..b1b966902 100644 --- a/COLAMD/CMakeLists.txt +++ b/COLAMD/CMakeLists.txt @@ -11,10 +11,10 @@ cmake_minimum_required ( VERSION 3.20 ) -set ( COLAMD_DATE "Sept 8, 2023" ) +set ( COLAMD_DATE "Sept 18, 2023" ) set ( COLAMD_VERSION_MAJOR 3 ) set ( COLAMD_VERSION_MINOR 2 ) -set ( COLAMD_VERSION_SUB 0 ) +set ( COLAMD_VERSION_SUB 1 ) message ( STATUS "Building COLAMD version: v" ${COLAMD_VERSION_MAJOR}. diff --git a/COLAMD/Config/COLAMDConfig.cmake.in b/COLAMD/Config/COLAMDConfig.cmake.in index a9597ee57..70d686239 100644 --- a/COLAMD/Config/COLAMDConfig.cmake.in +++ b/COLAMD/Config/COLAMDConfig.cmake.in @@ -60,7 +60,7 @@ if ( TARGET ${_target_static} ) endif ( ) # Check for most common build types -set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" ) +set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" "None" ) get_property ( _isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG ) if ( _isMultiConfig ) diff --git a/COLAMD/Demo/colamd_example.out b/COLAMD/Demo/colamd_example.out index 77b4197a6..bf9cb0c7b 100644 --- a/COLAMD/Demo/colamd_example.out +++ b/COLAMD/Demo/colamd_example.out @@ -15,7 +15,7 @@ Column 3, with 2 entries: row 1 row 3 -colamd version 3.2.0, Sept 8, 2023: OK. +colamd version 3.2.1, Sept 18, 2023: OK. colamd: number of dense or empty rows ignored: 0 colamd: number of dense or empty columns ignored: 0 colamd: number of garbage collections performed: 0 @@ -38,7 +38,7 @@ Column 3, with 1 entries: row 4 Column 4, with 0 entries: -symamd version 3.2.0, Sept 8, 2023: OK. +symamd version 3.2.1, Sept 18, 2023: OK. symamd: number of dense or empty rows ignored: 0 symamd: number of dense or empty columns ignored: 0 symamd: number of garbage collections performed: 0 diff --git a/COLAMD/Demo/colamd_l_example.out b/COLAMD/Demo/colamd_l_example.out index 296845a73..293784646 100644 --- a/COLAMD/Demo/colamd_l_example.out +++ b/COLAMD/Demo/colamd_l_example.out @@ -15,7 +15,7 @@ Column 3, with 2 entries: row 1 row 3 -colamd version 3.2.0, Sept 8, 2023: OK. +colamd version 3.2.1, Sept 18, 2023: OK. colamd: number of dense or empty rows ignored: 0 colamd: number of dense or empty columns ignored: 0 colamd: number of garbage collections performed: 0 @@ -38,7 +38,7 @@ Column 3, with 1 entries: row 4 Column 4, with 0 entries: -symamd version 3.2.0, Sept 8, 2023: OK. +symamd version 3.2.1, Sept 18, 2023: OK. symamd: number of dense or empty rows ignored: 0 symamd: number of dense or empty columns ignored: 0 symamd: number of garbage collections performed: 0 diff --git a/COLAMD/Doc/ChangeLog b/COLAMD/Doc/ChangeLog index 0c014fa5a..b35d67467 100644 --- a/COLAMD/Doc/ChangeLog +++ b/COLAMD/Doc/ChangeLog @@ -1,3 +1,7 @@ +Sept 18, 2023: version 3.2.1 + + * cmake update: add "None" build type, from Antonio Rojas, for Arch Linux + Sept 8, 2023: version 3.2.0 * cmake updates: SuiteSparse:: namespace by Markus Muetzel diff --git a/COLAMD/Include/colamd.h b/COLAMD/Include/colamd.h index 9d8c9a3f4..55ee9c716 100644 --- a/COLAMD/Include/colamd.h +++ b/COLAMD/Include/colamd.h @@ -70,10 +70,10 @@ extern "C" { * Versions 2.3 and earlier of COLAMD do not include a #define'd version number. */ -#define COLAMD_DATE "Sept 8, 2023" +#define COLAMD_DATE "Sept 18, 2023" #define COLAMD_MAIN_VERSION 3 #define COLAMD_SUB_VERSION 2 -#define COLAMD_SUBSUB_VERSION 0 +#define COLAMD_SUBSUB_VERSION 1 #define COLAMD_VERSION_CODE(main,sub) ((main) * 1000 + (sub)) #define COLAMD_VERSION \ diff --git a/CXSparse/CMakeLists.txt b/CXSparse/CMakeLists.txt index e245a80fd..102323f1e 100644 --- a/CXSparse/CMakeLists.txt +++ b/CXSparse/CMakeLists.txt @@ -11,10 +11,10 @@ cmake_minimum_required ( VERSION 3.20 ) -set ( CXSPARSE_DATE "Sept 8, 2023" ) +set ( CXSPARSE_DATE "Sept 18, 2023" ) set ( CXSPARSE_VERSION_MAJOR 4 ) set ( CXSPARSE_VERSION_MINOR 2 ) -set ( CXSPARSE_VERSION_SUB 0 ) +set ( CXSPARSE_VERSION_SUB 1 ) message ( STATUS "Building CXSparse version: v" ${CXSPARSE_VERSION_MAJOR}. diff --git a/CXSparse/Config/CXSparseConfig.cmake.in b/CXSparse/Config/CXSparseConfig.cmake.in index 1cb709acc..b3b517f39 100644 --- a/CXSparse/Config/CXSparseConfig.cmake.in +++ b/CXSparse/Config/CXSparseConfig.cmake.in @@ -60,7 +60,7 @@ if ( TARGET ${_target_static} ) endif ( ) # Check for most common build types -set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" ) +set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" "None" ) get_property ( _isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG ) if ( _isMultiConfig ) diff --git a/CXSparse/Demo/cs_demo.out b/CXSparse/Demo/cs_demo.out index 5566fd258..74735fd30 100644 --- a/CXSparse/Demo/cs_demo.out +++ b/CXSparse/Demo/cs_demo.out @@ -1,5 +1,5 @@ ( cd build && cmake -DDEMO=1 .. && cmake --build . --config Release -j8 ) --- Building CXSparse version: v4.2.0 (Sept 8, 2023) +-- Building CXSparse version: v4.2.1 (Sept 18, 2023) -- Source: /home/faculty/d/davis/dev2/SuiteSparse/CXSparse -- Build: /home/faculty/d/davis/dev2/SuiteSparse/CXSparse/build -- Install lib: /home/faculty/d/davis/dev2/SuiteSparse/lib @@ -11,9 +11,9 @@ -- Fortran: /usr/bin/f95 -- CUDA: not enabled -- complex data type: enabled --- SuiteSparse_config version: 7.2.0 +-- SuiteSparse_config version: 7.2.1 -- SuiteSparse_config include: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config --- SuiteSparse_config library: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config/build/libsuitesparseconfig.so.7.2.0 +-- SuiteSparse_config library: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config/build/libsuitesparseconfig.so.7.2.1 -- SuiteSparse_config static: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config/build/libsuitesparseconfig.a -- Also compiling the demos in CXSparse/Demo -- ------------------------------------------------------------------------ @@ -37,29 +37,29 @@ -- Generating done (0.1s) -- Build files have been written to: /home/faculty/d/davis/dev2/SuiteSparse/CXSparse/build gmake[1]: Entering directory '/home/faculty/d/davis/dev2/SuiteSparse/CXSparse/build' -[ 44%] Built target CXSparse -[ 89%] Built target CXSparse_static -[ 89%] Built target cs_di_demo1 -[ 90%] Built target cs_demo2 -[ 91%] Built target cs_demo3 -[ 91%] Built target cs_demo1 -[ 92%] Built target cs_di_demo2 -[ 92%] Built target cs_dl_demo1 -[ 93%] Built target cs_di_demo3 +[ 68%] Built target CXSparse_static +[ 89%] Built target CXSparse +[ 89%] Built target cs_demo1 +[ 90%] Built target cs_di_demo2 +[ 91%] Built target cs_di_demo3 +[ 91%] Built target cs_di_demo1 +[ 92%] Built target cs_demo3 +[ 93%] Built target cs_demo2 +[ 93%] Built target cs_dl_demo1 [ 94%] Built target cs_dl_demo2 -[ 94%] Built target cs_ci_demo2 [ 95%] Built target cs_dl_demo3 +[ 95%] Built target cs_ci_demo2 [ 95%] Built target cs_cl_demo1 -[ 96%] Built target cs_cl_demo3 +[ 96%] Built target cs_cl_demo2 [ 97%] Built target cs_ci_demo1 +[ 98%] Built target cs_idemo [ 98%] Built target cs_ci_demo3 -[ 99%] Built target cs_cl_demo2 -[ 99%] Built target cs_idemo +[ 99%] Built target cs_cl_demo3 [100%] Built target cs_ldemo gmake[1]: Leaving directory '/home/faculty/d/davis/dev2/SuiteSparse/CXSparse/build' ./build/cs_demo1 < Matrix/t1 T: -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 triplet: 4-by-4, nzmax: 16 nnz: 10 2 2 : 3 1 0 : 3.1 @@ -72,7 +72,7 @@ triplet: 4-by-4, nzmax: 16 nnz: 10 0 0 : 4.5 2 1 : 1.7 A: -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 4-by-4, nzmax: 10 nnz: 10, 1-norm: 11.1 col 0 : locations 0 to 2 1 : 3.1 @@ -89,7 +89,7 @@ CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 3 : 1 1 : 0.9 AT: -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 4-by-4, nzmax: 10 nnz: 10, 1-norm: 7.7 col 0 : locations 0 to 1 0 : 4.5 @@ -106,7 +106,7 @@ CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 1 : 0.4 3 : 1 D: -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 4-by-4, nzmax: 16 nnz: 16, 1-norm: 139.58 col 0 : locations 0 to 3 1 : 13.95 @@ -144,7 +144,7 @@ LU amd(A'*A) time: 0.00 resid: 1.53e-17 zero entries dropped: 71 tiny entries dropped: 10 blocks: 38 singletons: 37 structural rank: 183 -QR natural time: 0.00 resid: 1.42e-27 +QR natural time: 0.01 resid: 1.42e-27 QR amd(A'*A) time: 0.00 resid: 3.35e-28 LU natural time: 0.00 resid: 6.20e-28 LU amd(A+A') time: 0.00 resid: 1.55e-27 @@ -176,8 +176,8 @@ QR amd(A'*A) time: 0.00 resid: 1.61e-02 --- Matrix: 492-by-490, nnz: 49920 (sym: 0: nnz 0), norm: 9.29e-01 blocks: 10 singletons: 8 structural rank: 448 -QR natural time: 0.05 resid: nan -QR amd(A'*A) time: 0.06 resid: nan +QR natural time: 0.06 resid: nan +QR amd(A'*A) time: 0.07 resid: nan ./build/cs_demo2 < Matrix/bcsstk01 --- Matrix: 48-by-48, nnz: 224 (sym: -1: nnz 400), norm: 3.57e+09 @@ -208,7 +208,7 @@ downdate: time: 0.00 (incl solve) resid: 3.74e-17 --- Matrix: 4884-by-4884, nnz: 147631 (sym: -1: nnz 290378), norm: 7.01e+09 blocks: 75 singletons: 74 structural rank: 4884 -QR amd(A'*A) time: 0.67 resid: 2.01e-22 +QR amd(A'*A) time: 0.63 resid: 2.01e-22 LU amd(A+A') time: 0.32 resid: 1.10e-22 LU amd(S'*S) time: 0.32 resid: 1.28e-22 LU amd(A'*A) time: 0.33 resid: 1.78e-22 @@ -219,7 +219,7 @@ Chol amd(A+A') time: 0.10 resid: 1.19e-22 chol then update/downdate amd(A+A') symbolic chol time 0.01 -numeric chol time 0.09 +numeric chol time 0.10 solve chol time 0.00 original: resid: 1.19e-22 update: time: 0.00 @@ -229,7 +229,7 @@ downdate: time: 0.00 downdate: time: 0.00 (incl solve) resid: 4.09e-22 ./build/cs_di_demo1 < Matrix/t1 T: -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 triplet: 4-by-4, nzmax: 16 nnz: 10 2 2 : 3 1 0 : 3.1 @@ -242,7 +242,7 @@ triplet: 4-by-4, nzmax: 16 nnz: 10 0 0 : 4.5 2 1 : 1.7 A: -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 4-by-4, nzmax: 10 nnz: 10, 1-norm: 11.1 col 0 : locations 0 to 2 1 : 3.1 @@ -259,7 +259,7 @@ CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 3 : 1 1 : 0.9 AT: -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 4-by-4, nzmax: 10 nnz: 10, 1-norm: 7.7 col 0 : locations 0 to 1 0 : 4.5 @@ -276,7 +276,7 @@ CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 1 : 0.4 3 : 1 D: -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 4-by-4, nzmax: 16 nnz: 16, 1-norm: 139.58 col 0 : locations 0 to 3 1 : 13.95 @@ -346,8 +346,8 @@ QR amd(A'*A) time: 0.00 resid: 1.61e-02 --- Matrix: 492-by-490, nnz: 49920 (sym: 0: nnz 0), norm: 9.29e-01 blocks: 10 singletons: 8 structural rank: 448 -QR natural time: 0.05 resid: nan -QR amd(A'*A) time: 0.06 resid: nan +QR natural time: 0.06 resid: nan +QR amd(A'*A) time: 0.07 resid: nan ./build/cs_di_demo2 < Matrix/bcsstk01 --- Matrix: 48-by-48, nnz: 224 (sym: -1: nnz 400), norm: 3.57e+09 @@ -379,7 +379,7 @@ downdate: time: 0.00 (incl solve) resid: 3.74e-17 --- Matrix: 4884-by-4884, nnz: 147631 (sym: -1: nnz 290378), norm: 7.01e+09 blocks: 75 singletons: 74 structural rank: 4884 QR amd(A'*A) time: 0.63 resid: 2.01e-22 -LU amd(A+A') time: 0.32 resid: 1.10e-22 +LU amd(A+A') time: 0.31 resid: 1.10e-22 LU amd(S'*S) time: 0.32 resid: 1.28e-22 LU amd(A'*A) time: 0.33 resid: 1.78e-22 Chol amd(A+A') time: 0.10 resid: 1.19e-22 @@ -399,7 +399,7 @@ downdate: time: 0.00 downdate: time: 0.00 (incl solve) resid: 4.09e-22 ./build/cs_dl_demo1 < Matrix/t1 T: -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 triplet: 4-by-4, nzmax: 16 nnz: 10 2 2 : 3 1 0 : 3.1 @@ -412,7 +412,7 @@ triplet: 4-by-4, nzmax: 16 nnz: 10 0 0 : 4.5 2 1 : 1.7 A: -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 4-by-4, nzmax: 10 nnz: 10, 1-norm: 11.1 col 0 : locations 0 to 2 1 : 3.1 @@ -429,7 +429,7 @@ CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 3 : 1 1 : 0.9 AT: -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 4-by-4, nzmax: 10 nnz: 10, 1-norm: 7.7 col 0 : locations 0 to 1 0 : 4.5 @@ -446,7 +446,7 @@ CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 1 : 0.4 3 : 1 D: -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 4-by-4, nzmax: 16 nnz: 16, 1-norm: 139.58 col 0 : locations 0 to 3 1 : 13.95 @@ -484,7 +484,7 @@ LU amd(A'*A) time: 0.00 resid: 1.53e-17 zero entries dropped: 71 tiny entries dropped: 10 blocks: 38 singletons: 37 structural rank: 183 -QR natural time: 0.00 resid: 1.42e-27 +QR natural time: 0.01 resid: 1.42e-27 QR amd(A'*A) time: 0.00 resid: 3.35e-28 LU natural time: 0.00 resid: 6.20e-28 LU amd(A+A') time: 0.00 resid: 1.55e-27 @@ -548,18 +548,18 @@ downdate: time: 0.00 (incl solve) resid: 3.74e-17 --- Matrix: 4884-by-4884, nnz: 147631 (sym: -1: nnz 290378), norm: 7.01e+09 blocks: 75 singletons: 74 structural rank: 4884 -QR amd(A'*A) time: 0.64 resid: 2.01e-22 +QR amd(A'*A) time: 0.67 resid: 2.01e-22 LU amd(A+A') time: 0.33 resid: 1.10e-22 LU amd(S'*S) time: 0.33 resid: 1.28e-22 LU amd(A'*A) time: 0.35 resid: 1.78e-22 -Chol amd(A+A') time: 0.10 resid: 1.19e-22 +Chol amd(A+A') time: 0.11 resid: 1.19e-22 ./build/cs_dl_demo3 < Matrix/bcsstk16 --- Matrix: 4884-by-4884, nnz: 147631 (sym: -1: nnz 290378), norm: 7.01e+09 chol then update/downdate amd(A+A') symbolic chol time 0.01 -numeric chol time 0.11 +numeric chol time 0.10 solve chol time 0.00 original: resid: 1.19e-22 update: time: 0.00 @@ -568,7 +568,7 @@ rechol: time: 0.10 (incl solve) resid: 1.17e-23 downdate: time: 0.00 downdate: time: 0.00 (incl solve) resid: 4.09e-22 ( cd build && cmake -DDEMO=1 .. && cmake --build . --config Release -j8 ) --- Building CXSparse version: v4.2.0 (Sept 8, 2023) +-- Building CXSparse version: v4.2.1 (Sept 18, 2023) -- Source: /home/faculty/d/davis/dev2/SuiteSparse/CXSparse -- Build: /home/faculty/d/davis/dev2/SuiteSparse/CXSparse/build -- Install lib: /home/faculty/d/davis/dev2/SuiteSparse/lib @@ -580,9 +580,9 @@ downdate: time: 0.00 (incl solve) resid: 4.09e-22 -- Fortran: /usr/bin/f95 -- CUDA: not enabled -- complex data type: enabled --- SuiteSparse_config version: 7.2.0 +-- SuiteSparse_config version: 7.2.1 -- SuiteSparse_config include: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config --- SuiteSparse_config library: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config/build/libsuitesparseconfig.so.7.2.0 +-- SuiteSparse_config library: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config/build/libsuitesparseconfig.so.7.2.1 -- SuiteSparse_config static: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config/build/libsuitesparseconfig.a -- Also compiling the demos in CXSparse/Demo -- ------------------------------------------------------------------------ @@ -606,24 +606,24 @@ downdate: time: 0.00 (incl solve) resid: 4.09e-22 -- Generating done (0.1s) -- Build files have been written to: /home/faculty/d/davis/dev2/SuiteSparse/CXSparse/build gmake[1]: Entering directory '/home/faculty/d/davis/dev2/SuiteSparse/CXSparse/build' -[ 45%] Built target CXSparse_static -[ 89%] Built target CXSparse -[ 90%] Built target cs_dl_demo2 +[ 44%] Built target CXSparse +[ 89%] Built target CXSparse_static +[ 90%] Built target cs_demo3 [ 91%] Built target cs_demo2 -[ 91%] Built target cs_demo1 [ 91%] Built target cs_di_demo1 -[ 92%] Built target cs_di_demo3 -[ 92%] Built target cs_dl_demo1 -[ 93%] Built target cs_demo3 -[ 94%] Built target cs_di_demo2 -[ 95%] Built target cs_ci_demo1 -[ 96%] Built target cs_dl_demo3 -[ 97%] Built target cs_ci_demo3 -[ 97%] Built target cs_idemo -[ 98%] Built target cs_cl_demo3 -[ 98%] Built target cs_ci_demo2 -[ 98%] Built target cs_cl_demo1 +[ 91%] Built target cs_dl_demo1 +[ 92%] Built target cs_di_demo2 +[ 93%] Built target cs_di_demo3 +[ 93%] Built target cs_demo1 +[ 94%] Built target cs_dl_demo2 +[ 95%] Built target cs_dl_demo3 +[ 96%] Built target cs_ci_demo1 +[ 97%] Built target cs_cl_demo3 +[ 97%] Built target cs_cl_demo1 +[ 98%] Built target cs_ci_demo3 [ 99%] Built target cs_cl_demo2 +[ 99%] Built target cs_ci_demo2 +[ 99%] Built target cs_idemo [100%] Built target cs_ldemo gmake[1]: Leaving directory '/home/faculty/d/davis/dev2/SuiteSparse/CXSparse/build' ./build/cs_idemo < Matrix/t2 @@ -631,7 +631,7 @@ gmake[1]: Leaving directory '/home/faculty/d/davis/dev2/SuiteSparse/CXSparse/bui --- cs_idemo, size of CS_INT: 4 T: -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 triplet: 4-by-4, nzmax: 16 nnz: 10 2 2 : (3, 3.14159) 1 0 : (3.1, 42) @@ -645,7 +645,7 @@ triplet: 4-by-4, nzmax: 16 nnz: 10 2 1 : (1.7, 1) Treal: -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 triplet: 4-by-4, nzmax: 16 nnz: 10 2 2 : 3 1 0 : 3.1 @@ -659,7 +659,7 @@ triplet: 4-by-4, nzmax: 16 nnz: 10 2 1 : 1.7 Timag: -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 triplet: 4-by-4, nzmax: 16 nnz: 10 2 2 : 3.14159 1 0 : 42 @@ -673,7 +673,7 @@ triplet: 4-by-4, nzmax: 16 nnz: 10 2 1 : 1 A: -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 4-by-4, nzmax: 10 nnz: 10, 1-norm: 106.075 col 0 : locations 0 to 2 1 : (3.1, 42) @@ -691,7 +691,7 @@ CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 1 : (0.9, 99) C1 = real(A): -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 4-by-4, nzmax: 10 nnz: 10, 1-norm: 11.1 col 0 : locations 0 to 2 1 : 3.1 @@ -709,7 +709,7 @@ CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 1 : 0.9 C2 = imag(A): -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 4-by-4, nzmax: 10 nnz: 10, 1-norm: 106 col 0 : locations 0 to 2 1 : 42 @@ -727,7 +727,7 @@ CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 1 : 99 A1: -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 4-by-4, nzmax: 10 nnz: 10, 1-norm: 11.1 col 0 : locations 0 to 2 1 : (3.1, 0) @@ -745,7 +745,7 @@ CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 1 : (0.9, 0) A2: -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 4-by-4, nzmax: 10 nnz: 10, 1-norm: 106 col 0 : locations 0 to 2 1 : (0, 42) @@ -763,7 +763,7 @@ CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 1 : (0, 99) B = conj(A): -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 4-by-4, nzmax: 10 nnz: 10, 1-norm: 106.075 col 0 : locations 0 to 2 1 : (3.1, -42) @@ -784,7 +784,7 @@ CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 --- cs_ldemo, size of CS_INT: 8 T: -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 triplet: 4-by-4, nzmax: 16 nnz: 10 2 2 : (3, 3.14159) 1 0 : (3.1, 42) @@ -798,7 +798,7 @@ triplet: 4-by-4, nzmax: 16 nnz: 10 2 1 : (1.7, 1) Treal: -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 triplet: 4-by-4, nzmax: 16 nnz: 10 2 2 : 3 1 0 : 3.1 @@ -812,7 +812,7 @@ triplet: 4-by-4, nzmax: 16 nnz: 10 2 1 : 1.7 Timag: -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 triplet: 4-by-4, nzmax: 16 nnz: 10 2 2 : 3.14159 1 0 : 42 @@ -826,7 +826,7 @@ triplet: 4-by-4, nzmax: 16 nnz: 10 2 1 : 1 A: -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 4-by-4, nzmax: 10 nnz: 10, 1-norm: 106.075 col 0 : locations 0 to 2 1 : (3.1, 42) @@ -844,7 +844,7 @@ CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 1 : (0.9, 99) C1 = real(A): -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 4-by-4, nzmax: 10 nnz: 10, 1-norm: 11.1 col 0 : locations 0 to 2 1 : 3.1 @@ -862,7 +862,7 @@ CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 1 : 0.9 C2 = imag(A): -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 4-by-4, nzmax: 10 nnz: 10, 1-norm: 106 col 0 : locations 0 to 2 1 : 42 @@ -880,7 +880,7 @@ CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 1 : 99 A1: -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 4-by-4, nzmax: 10 nnz: 10, 1-norm: 11.1 col 0 : locations 0 to 2 1 : (3.1, 0) @@ -898,7 +898,7 @@ CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 1 : (0.9, 0) A2: -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 4-by-4, nzmax: 10 nnz: 10, 1-norm: 106 col 0 : locations 0 to 2 1 : (0, 42) @@ -916,7 +916,7 @@ CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 1 : (0, 99) B = conj(A): -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 4-by-4, nzmax: 10 nnz: 10, 1-norm: 106.075 col 0 : locations 0 to 2 1 : (3.1, -42) @@ -934,7 +934,7 @@ CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 1 : (0.9, -99) ./build/cs_ci_demo1 < Matrix/t2 T: -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 triplet: 4-by-4, nzmax: 16 nnz: 10 2 2 : (3, 3.14159) 1 0 : (3.1, 42) @@ -947,7 +947,7 @@ triplet: 4-by-4, nzmax: 16 nnz: 10 0 0 : (4.5, 6) 2 1 : (1.7, 1) A: -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 4-by-4, nzmax: 10 nnz: 10, 1-norm: 106.075 col 0 : locations 0 to 2 1 : (3.1, 42) @@ -964,7 +964,7 @@ CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 3 : (1, 7) 1 : (0.9, 99) AT: -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 4-by-4, nzmax: 10 nnz: 10, 1-norm: 144.296 col 0 : locations 0 to 1 0 : (4.5, -6) @@ -981,7 +981,7 @@ CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 1 : (0.4, -2.71828) 3 : (1, -7) D: -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 4-by-4, nzmax: 16 nnz: 16, 1-norm: 25308.3 col 0 : locations 0 to 3 1 : (265.95, 170.4) @@ -1045,8 +1045,8 @@ LU amd(A'*A) time: 0.00 resid: 4.76e-17 --- Matrix: 492-by-490, nnz: 49920 (sym: 0: nnz 0), norm: 9.29e-01 blocks: 10 singletons: 8 structural rank: 448 -QR natural time: 0.14 resid: nan -QR amd(A'*A) time: 0.14 resid: nan +QR natural time: 0.13 resid: nan +QR amd(A'*A) time: 0.13 resid: nan ./build/cs_ci_demo2 < Matrix/young1c --- Matrix: 841-by-841, nnz: 4089 (sym: 0: nnz 0), norm: 7.30e+02 @@ -1106,7 +1106,7 @@ downdate: time: 0.00 (incl solve) resid: 5.85e-17 --- Matrix: 1280-by-1280, nnz: 11963 (sym: -1: nnz 22646), norm: 8.00e+01 tiny entries dropped: 66 blocks: 20 singletons: 14 structural rank: 1280 -QR amd(A'*A) time: 0.01 resid: 6.15e-25 +QR amd(A'*A) time: 0.00 resid: 6.15e-25 LU amd(A+A') time: 0.00 resid: 2.33e-25 LU amd(S'*S) time: 0.00 resid: 3.96e-25 LU amd(A'*A) time: 0.00 resid: 3.96e-25 @@ -1127,7 +1127,7 @@ downdate: time: 0.00 downdate: time: 0.00 (incl solve) resid: 5.85e-25 ./build/cs_cl_demo1 < Matrix/t2 T: -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 triplet: 4-by-4, nzmax: 16 nnz: 10 2 2 : (3, 3.14159) 1 0 : (3.1, 42) @@ -1140,7 +1140,7 @@ triplet: 4-by-4, nzmax: 16 nnz: 10 0 0 : (4.5, 6) 2 1 : (1.7, 1) A: -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 4-by-4, nzmax: 10 nnz: 10, 1-norm: 106.075 col 0 : locations 0 to 2 1 : (3.1, 42) @@ -1157,7 +1157,7 @@ CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 3 : (1, 7) 1 : (0.9, 99) AT: -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 4-by-4, nzmax: 10 nnz: 10, 1-norm: 144.296 col 0 : locations 0 to 1 0 : (4.5, -6) @@ -1174,7 +1174,7 @@ CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 1 : (0.4, -2.71828) 3 : (1, -7) D: -CXSparse Version 4.2.0, Sept 8, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 4-by-4, nzmax: 16 nnz: 16, 1-norm: 25308.3 col 0 : locations 0 to 3 1 : (265.95, 170.4) @@ -1248,14 +1248,14 @@ QR natural time: 0.01 resid: 1.81e-16 QR amd(A'*A) time: 0.01 resid: 1.57e-16 LU natural time: 0.01 resid: 1.39e-16 LU amd(A+A') time: 0.01 resid: 2.95e-16 -LU amd(S'*S) time: 0.00 resid: 3.37e-16 +LU amd(S'*S) time: 0.01 resid: 3.37e-16 LU amd(A'*A) time: 0.00 resid: 3.37e-16 ./build/cs_cl_demo2 < Matrix/qc324 --- Matrix: 324-by-324, nnz: 26730 (sym: 0: nnz 0), norm: 1.71e+00 blocks: 1 singletons: 0 structural rank: 324 QR natural time: 0.02 resid: 9.42e-17 -QR amd(A'*A) time: 0.03 resid: 8.94e-17 +QR amd(A'*A) time: 0.02 resid: 8.94e-17 LU natural time: 0.01 resid: 6.01e-17 LU amd(A+A') time: 0.01 resid: 4.05e-17 LU amd(S'*S) time: 0.01 resid: 4.71e-17 @@ -1265,7 +1265,7 @@ LU amd(A'*A) time: 0.01 resid: 4.71e-17 --- Matrix: 1600-by-1600, nnz: 7840 (sym: 0: nnz 0), norm: 1.41e+01 blocks: 1 singletons: 0 structural rank: 1600 QR amd(A'*A) time: 0.02 resid: 1.04e-15 -LU amd(A+A') time: 0.01 resid: 3.55e-16 +LU amd(A+A') time: 0.00 resid: 3.55e-16 LU amd(S'*S) time: 0.01 resid: 4.03e-16 LU amd(A'*A) time: 0.01 resid: 4.03e-16 ./build/cs_cl_demo2 < Matrix/c4 diff --git a/CXSparse/Doc/ChangeLog b/CXSparse/Doc/ChangeLog index 731fd73b9..77a3fdcf3 100644 --- a/CXSparse/Doc/ChangeLog +++ b/CXSparse/Doc/ChangeLog @@ -1,3 +1,7 @@ +Sept 18, 2023: version 4.2.1 + + * cmake update: add "None" build type, from Antonio Rojas, for Arch Linux + Sept 8, 2023: version 4.2.0 * cmake updates: SuiteSparse:: namespace by Markus Muetzel diff --git a/CXSparse/Include/cs.h b/CXSparse/Include/cs.h index 05e62b5ef..313bf8fb0 100644 --- a/CXSparse/Include/cs.h +++ b/CXSparse/Include/cs.h @@ -37,8 +37,8 @@ #define CS_VER 4 /* CXSparse Version */ #define CS_SUBVER 2 -#define CS_SUBSUB 0 -#define CS_DATE "Sept 8, 2023" /* CXSparse release date */ +#define CS_SUBSUB 1 +#define CS_DATE "Sept 18, 2023" /* CXSparse release date */ #define CS_COPYRIGHT "Copyright (c) Timothy A. Davis, 2006-2022" #define CXSPARSE diff --git a/ChangeLog b/ChangeLog index 337974d5c..f0733f568 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +Oct 7, 2023: version 7.2.1 + + * GraphBLAS 8.2.1: bug fix to GrB_mxm; incorrect handling of typecasting + * cross-compiler support: replace check_c_source_runs with _compiles, + for GraphBLAS and SuiteSparse_config, and remove check for + getenv("HOME"). + * cmake update: add "None" build type, from Antonio Rojas, for Arch Linux, + to all *Config.cmake files for all packages except CSparse (CXSparse + is built instead, and CSparse does not have CSparseConfig.cmake file) + * UMFPACK v6.2.1 and GPUQREngine v3.2.1: copies internal include files + from other SuiteSparse packages (AMD and SuiteSparse_GPURuntime), + so these two packages can be built independently. + Sept 8, 2023: version 7.2.0 * build system: modern cmake structure, by Markus Muetzel. diff --git a/Example/CMakeLists.txt b/Example/CMakeLists.txt index 87f0b2583..20ea08e06 100644 --- a/Example/CMakeLists.txt +++ b/Example/CMakeLists.txt @@ -12,10 +12,10 @@ cmake_minimum_required ( VERSION 3.20 ) # cmake inserts the date and version number into Include/my.h: -set ( MY_DATE "Sept 8, 2023" ) +set ( MY_DATE "Sept 18, 2023" ) set ( MY_VERSION_MAJOR 1 ) set ( MY_VERSION_MINOR 4 ) -set ( MY_VERSION_PATCH 0 ) +set ( MY_VERSION_PATCH 1 ) message ( STATUS "Building MY library version: v" ${MY_VERSION_MAJOR}. @@ -61,23 +61,23 @@ project ( my #------------------------------------------------------------------------------- # look for all SuiteSparse packages: -find_package ( SuiteSparse_config 7.2.0 REQUIRED ) -find_package ( AMD 3.2.0 REQUIRED ) -find_package ( BTF 2.2.0 REQUIRED ) -find_package ( CAMD 3.2.0 REQUIRED ) -find_package ( CCOLAMD 3.2.0 REQUIRED ) -find_package ( COLAMD 3.2.0 REQUIRED ) -find_package ( CHOLMOD 4.2.0 REQUIRED ) -find_package ( CXSparse 4.2.0 REQUIRED ) -find_package ( GraphBLAS 8.2.0 ) -find_package ( KLU 2.2.0 REQUIRED ) -find_package ( KLU_CHOLMOD 2.2.0 REQUIRED ) -find_package ( LDL 3.2.0 REQUIRED ) -find_package ( Mongoose 3.2.0 REQUIRED ) -find_package ( RBio 4.2.0 REQUIRED ) -find_package ( SPEX 2.2.0 REQUIRED ) -find_package ( SPQR 4.2.0 REQUIRED ) -find_package ( UMFPACK 6.2.0 REQUIRED ) +find_package ( SuiteSparse_config 7.2.1 REQUIRED ) +find_package ( AMD 3.2.1 REQUIRED ) +find_package ( BTF 2.2.1 REQUIRED ) +find_package ( CAMD 3.2.1 REQUIRED ) +find_package ( CCOLAMD 3.2.1 REQUIRED ) +find_package ( COLAMD 3.2.1 REQUIRED ) +find_package ( CHOLMOD 4.2.1 REQUIRED ) +find_package ( CXSparse 4.2.1 REQUIRED ) +find_package ( GraphBLAS 8.2.1 ) +find_package ( KLU 2.2.1 REQUIRED ) +find_package ( KLU_CHOLMOD 2.2.1 REQUIRED ) +find_package ( LDL 3.2.1 REQUIRED ) +find_package ( Mongoose 3.2.1 REQUIRED ) +find_package ( RBio 4.2.1 REQUIRED ) +find_package ( SPEX 2.2.1 REQUIRED ) +find_package ( SPQR 4.2.1 REQUIRED ) +find_package ( UMFPACK 6.2.1 REQUIRED ) if ( TARGET CUDA::nvrtc ) # CHOLMOD and SPQR have been compiled with CUDA enabled. diff --git a/Example/Demo/mydemo.out b/Example/Demo/mydemo.out new file mode 100644 index 000000000..ac55d6f2e --- /dev/null +++ b/Example/Demo/mydemo.out @@ -0,0 +1,183 @@ +My demo +Date from #include 'my.h': Sept 18, 2023 +Date from compiled library: Sept 18, 2023 +version from #include 'my.h.': 1.4.1 +version from compiled library: 1.4.1 +SuiteSparse: v7.2.1 (Sept 18, 2023) +SuiteSparse: v7.2.1 (in library) +CXSparse: v4.2.1 (Sept 18, 2023) +CXSparse Version 4.2.1, Sept 18, 2023. Copyright (c) Timothy A. Davis, 2006-2022 +2-by-2, nzmax: 4 nnz: 4, 1-norm: 34 + col 0 : locations 0 to 1 + 0 : 11 + 1 : 21 + col 1 : locations 2 to 3 + 0 : 12 + 1 : 22 +AMD: v3.2.1 (Sept 18, 2023) +P [0] = 0 +P [1] = 1 +BTF: v2.2.1 (Sept 18, 2023) +P [0] = 0 +P [1] = 1 +Q [0] = 0 +Q [1] = 1 +nblocks 1 +CAMD: v3.2.1 (Sept 18, 2023) +P [0] = 0 +P [1] = 1 +CCOLAMD: v3.2.1 (Sept 18, 2023) +P [0] = 0 +P [1] = 1 +COLAMD: v3.2.1 (Sept 18, 2023) +P [0] = 0 +P [1] = 1 +CHOLMOD: v4.2.1 (Sept 18, 2023) +CHOLMOD: v4.2.1 (in library) +GraphBLAS: v8.2.1 (Sept 18, 2023) +GraphBLAS: v8.2.1 (in library) +KLU: v2.2.1 (Sept 18, 2023) +x [0] = 36.4 +x [1] = -32.7 +error: 7.10543e-14 +LDL: v3.2.1 (Sept 18, 2023) +x2 [0] = 36.4 +x2 [1] = -32.7 +error: 0 +RBio: v4.2.1 (Sept 18, 2023) +njumbled 0, nzeros 0 +result 0 +mtype: iua +2-by-2 matrix |simple + 3 1 1 1 +iua 2 2 4 0 +(40I2) (40I2) (26I3) + 1 3 5 + 1 2 1 2 + 11 21 12 22 +SPEX: v2.2.1 (Sept 18, 2023) +SPQR: v4.2.1 (Sept 18, 2023) + +CHOLMOD dense: X from QR: 2-by-1, + leading dimension 2, nzmax 2, real, double + col 0: + 0: 36.4 + 1: -32.7 + OK + +UMFPACK: v6.2.1 (Sept 18, 2023) +UMFPACK V6.2.1 (Sept 18, 2023) +UMFPACK: Copyright (c) 2005-2023 by Timothy A. Davis. All Rights Reserved. + +UMFPACK License: SPDX-License-Identifier: GPL-2.0+ + UMFPACK is available under alternate licenses, + contact T. Davis for details. +BLAS used: Intel MKL 64lp BLAS (32-bit integers) +BLAS integer size: 4 bytes +x [0] = 36.4 +x [1] = -32.7 +error: 5.68434e-14 + +UMFPACK: Copyright (c) 2005-2023 by Timothy A. Davis. All Rights Reserved. + + +UMFPACK License: SPDX-License-Identifier: GPL-2.0+ + UMFPACK is available under alternate licenses, + contact T. Davis for details. + + +Availability: http://www.suitesparse.com +UMFPACK V6.2.1 (Sept 18, 2023): OK + +UMFPACK V6.2.1 (Sept 18, 2023), Info: + matrix entry defined as: double + Int (generic integer) defined as: int64_t + BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 + MATLAB: no. + CPU timer: SuiteSparse_time ( ) routine. + number of rows in matrix A: 2 + number of columns in matrix A: 2 + entries in matrix A: 4 + memory usage reported in: 16-byte Units + size of int32_t: 4 bytes + size of int64_t: 8 bytes + size of pointer: 8 bytes + size of numerical entry: 8 bytes + + strategy used: symmetric + ordering used: amd on A+A' + modify Q during factorization: no + prefer diagonal pivoting: yes + pivots with zero Markowitz cost: 0 + submatrix S after removing zero-cost pivots: + number of "dense" rows: 0 + number of "dense" columns: 0 + number of empty rows: 0 + number of empty columns 0 + submatrix S square and diagonal preserved + pattern of square submatrix S: + number rows and columns 2 + symmetry of nonzero pattern: 1.000000 + nz in S+S' (excl. diagonal): 2 + nz on diagonal of matrix S: 2 + fraction of nz on diagonal: 1.000000 + ordering statistics, for strict diagonal pivoting: + est. flops for LU factorization: 3.00000e+00 + est. nz in L+U (incl. diagonal): 4 + est. largest front (# entries): 4 + est. max nz in any column of L: 2 + number of "dense" rows/columns in S+S': 0 + symbolic factorization defragmentations: 0 + symbolic memory usage (Units): 81 + symbolic memory usage (MBytes): 0.0 + Symbolic size (Units): 40 + Symbolic size (MBytes): 0 + symbolic factorization wallclock time(sec): 0.00 + + matrix scaled: yes (divided each row by sum of abs values in each row) + minimum sum (abs (rows of A)): 2.30000e+01 + maximum sum (abs (rows of A)): 4.30000e+01 + + symbolic/numeric factorization: upper bound actual % + variable-sized part of Numeric object: + initial size (Units) 45 40 89% + peak size (Units) 638 636 100% + final size (Units) 3 5 167% + Numeric final size (Units) 50 51 102% + Numeric final size (MBytes) 0.0 0.0 102% + peak memory usage (Units) 758 756 100% + peak memory usage (MBytes) 0.0 0.0 100% + numeric factorization flops 3.00000e+00 3.00000e+00 100% + nz in L (incl diagonal) 3 3 100% + nz in U (incl diagonal) 3 3 100% + nz in L+U (incl diagonal) 4 4 100% + largest front (# entries) 6 4 67% + largest # rows in front 3 2 67% + largest # columns in front 2 2 100% + + initial allocation ratio used: 1.2 + # of forced updates due to frontal growth: 0 + number of off-diagonal pivots: 0 + nz in L (incl diagonal), if none dropped 3 + nz in U (incl diagonal), if none dropped 3 + number of small entries dropped 0 + nonzeros on diagonal of U: 2 + min abs. value on diagonal of U: 2.11e-02 + max abs. value on diagonal of U: 4.78e-01 + estimate of reciprocal of condition number: 4.42e-02 + indices in compressed pattern: 2 + numerical values stored in Numeric object: 4 + numeric factorization defragmentations: 0 + numeric factorization reallocations: 0 + costly numeric factorization reallocations: 0 + numeric factorization wallclock time (sec): 0.00 + + solve flops: 4.20000e+01 + iterative refinement steps taken: 0 + iterative refinement steps attempted: 0 + sparse backward error omega1: 7.44e-17 + sparse backward error omega2: 0.00e+00 + solve wall clock time (sec): 0.00 + + total symbolic + numeric + solve flops: 4.50000e+01 + diff --git a/Example/Include/my.h b/Example/Include/my.h index 319f5178b..e7e86754c 100644 --- a/Example/Include/my.h +++ b/Example/Include/my.h @@ -11,10 +11,10 @@ // file, since it is constructed from Config/my.h.in by cmake. // version and date for example user library -#define MY_DATE "Sept 8, 2023" +#define MY_DATE "Sept 18, 2023" #define MY_MAJOR_VERSION 1 #define MY_MINOR_VERSION 4 -#define MY_PATCH_VERSION 0 +#define MY_PATCH_VERSION 1 #ifdef __cplusplus extern "C" { diff --git a/Example/README.md b/Example/README.md index d2c8db295..f6263e9ad 100644 --- a/Example/README.md +++ b/Example/README.md @@ -12,7 +12,7 @@ to build a library that depends on SuiteSparse libraries. Include/my.h created by cmake from Config/my.h.in Config/my.h.in input file for Include/my.h Demo/my_demo.c demo program that uses 'my' package - Demo/my_demo.out output of my_demo + Demo/mydemo.out output of my_demo Source/my.c library source code build where the 'my' package is built cmake_modules/FindGMP.cmake how to find the GMP library diff --git a/GPUQREngine/CMakeLists.txt b/GPUQREngine/CMakeLists.txt index eb34fe798..1a592b016 100644 --- a/GPUQREngine/CMakeLists.txt +++ b/GPUQREngine/CMakeLists.txt @@ -12,10 +12,10 @@ cmake_minimum_required ( VERSION 3.20 ) -set ( GPUQRENGINE_DATE "Sept 8, 2023" ) +set ( GPUQRENGINE_DATE "Sept 18, 2023" ) set ( GPUQRENGINE_VERSION_MAJOR 3 ) set ( GPUQRENGINE_VERSION_MINOR 2 ) -set ( GPUQRENGINE_VERSION_SUB 0 ) +set ( GPUQRENGINE_VERSION_SUB 1 ) message ( STATUS "Building GPUQRENGINE version: v" ${GPUQRENGINE_VERSION_MAJOR}. diff --git a/GPUQREngine/Config/GPUQREngineConfig.cmake.in b/GPUQREngine/Config/GPUQREngineConfig.cmake.in index b0bd24f56..4994f3e0e 100644 --- a/GPUQREngine/Config/GPUQREngineConfig.cmake.in +++ b/GPUQREngine/Config/GPUQREngineConfig.cmake.in @@ -60,7 +60,7 @@ if ( TARGET ${_target_static} ) endif ( ) # Check for most common build types -set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" ) +set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" "None" ) get_property ( _isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG ) if ( _isMultiConfig ) diff --git a/GPUQREngine/Doc/ChangeLog b/GPUQREngine/Doc/ChangeLog index db8e65d60..ee328927e 100644 --- a/GPUQREngine/Doc/ChangeLog +++ b/GPUQREngine/Doc/ChangeLog @@ -1,3 +1,9 @@ +Sept 18, 2023: version 3.2.1 + + * cmake update: add "None" build type, from Antonio Rojas, for Arch Linux + * SuiteSparse_GPURuntime: internal include files copied into + GPUQREngine/Include + Sept 8, 2023: version 3.2.0 * cmake updates: SuiteSparse:: namespace by Markus Muetzel diff --git a/GPUQREngine/Include/GPUQREngine.hpp b/GPUQREngine/Include/GPUQREngine.hpp index 498942837..b262c9346 100644 --- a/GPUQREngine/Include/GPUQREngine.hpp +++ b/GPUQREngine/Include/GPUQREngine.hpp @@ -12,10 +12,10 @@ #define GPUQRENGINE_HPP // Version information: -#define GPUQRENGINE_DATE "Sept 8, 2023" +#define GPUQRENGINE_DATE "Sept 18, 2023" #define GPUQRENGINE_MAIN_VERSION 3 #define GPUQRENGINE_SUB_VERSION 2 -#define GPUQRENGINE_SUBSUB_VERSION 0 +#define GPUQRENGINE_SUBSUB_VERSION 1 #define GPUQRENGINE_VER_CODE(main,sub) ((main) * 1000 + (sub)) #define GPUQRENGINE_VERSION \ diff --git a/GPUQREngine/Include/README.txt b/GPUQREngine/Include/README.txt new file mode 100644 index 000000000..96ecfa75b --- /dev/null +++ b/GPUQREngine/Include/README.txt @@ -0,0 +1,8 @@ +The following files must be exact copies of the files in +SuiteSparse_GPURuntime/Include: + + SuiteSparseGPU_debug.hpp + SuiteSparseGPU_internal.hpp + SuiteSparseGPU_macros.hpp + SuiteSparseGPU_Workspace.hpp + SuiteSparseGPU_workspace_macros.hpp diff --git a/GPUQREngine/Include/SuiteSparseGPU_Workspace.hpp b/GPUQREngine/Include/SuiteSparseGPU_Workspace.hpp new file mode 100644 index 000000000..620404b16 --- /dev/null +++ b/GPUQREngine/Include/SuiteSparseGPU_Workspace.hpp @@ -0,0 +1,116 @@ +// ============================================================================= +// === SuiteSparse_GPURuntime/Include/SuiteSparseGPU_Workspace.hpp ============= +// ============================================================================= + +// SuiteSparse_GPURuntime, Copyright (c) 2013-2016, Timothy A Davis, +// Sencer Nuri Yeralan, and Sanjay Ranka. All Rights Reserved. +// SPDX-License-Identifier: GPL-2.0+ + +//------------------------------------------------------------------------------ + +#ifndef SUITESPARSE_GPURUNTIME_WORKSPACE_HPP +#define SUITESPARSE_GPURUNTIME_WORKSPACE_HPP + +#include "SuiteSparseGPU_internal.hpp" + +class Workspace +{ +private: + + size_t nitems; // number of items to allocate + size_t size_of_item; // size of each item, in bytes + size_t totalSize; // nitems * size_of_item + +// bool lazyAllocate; // no longer used (for possible future use) + bool pageLocked; // true if CPU memory is pagelocked + + void *cpuReference; // pointer to CPU memory + void *gpuReference; // pointer to GPU memory + +public: + // Read-Only Properties + size_t getCount(void){ return nitems; } + size_t getStride(void){ return size_of_item; } + void *cpu(void){ return cpuReference; } + void *gpu(void){ return gpuReference; } + + // Constructor/Destructor + void *operator new(size_t bytes, Workspace* ptr){ return ptr; } + Workspace(size_t nitems, size_t size_of_item); + ~Workspace(); + + // Memory management wrappers + static void *cpu_malloc(size_t nitems, size_t size_of_item, + bool pageLocked=false); + static void *cpu_calloc(size_t nitems, size_t size_of_item, + bool pageLocked=false); + static void *cpu_free(void *address, bool pageLocked = false); + static void *gpu_malloc(size_t nitems, size_t size_of_item); + static void *gpu_calloc(size_t nitems, size_t size_of_item); + static void *gpu_free(void *); + + // Workspace management + static Workspace *allocate + ( + size_t nitems, // number of items to allocate + size_t size_of_item, // size of each item, in bytes + bool doCalloc = false, // if true, then calloc; else malloc + bool cpuAlloc = true, // if true, then allocate CPU memory + bool gpuAlloc = true, // if true, then allocate GPU memory + bool pageLocked = false // true if CPU memory is pagelocked + ); + + // destroy workspace, freeing memory on both the CPU and GPU + static Workspace *destroy + ( + Workspace *address + ); + + // Reference manipulation functions + template void extract(T *cpu_arg, T *gpu_arg) + { + *cpu_arg = (T) cpuReference; + *gpu_arg = (T) gpuReference; + } + void assign(void *cpu_arg, void *gpu_arg) + { + cpuReference = cpu_arg; + gpuReference = gpu_arg; + } + +// unused, left commented out for possible future use +// void setLazy() +// { +// lazyAllocate = true; +// } + + // Memory management for workspaces + virtual bool ws_malloc(bool cpuAlloc = true, bool gpuAlloc = true); + virtual bool ws_calloc(bool cpuAlloc = true, bool gpuAlloc = true); + virtual void ws_free(bool cpuFree=true, bool gpuFree=true); + + // GPU-CPU transfer routines + virtual bool transfer(cudaMemcpyKind direction, bool synchronous=true, + cudaStream_t stream=0); + + // CPU & GPU memory functions + // memset functions unused, left commented out for possible future use + // bool gpu_memset(size_t newValue); + // bool cpu_memset(size_t newValue); + + // Debug +#if DEBUG_ATLEAST_ERRORONLY + static void print(Workspace *workspace) + { + printf ( + "(%ld,%ld) has %ld entries of size %ld each.\n", + (size_t) workspace->cpu(), + (size_t) workspace->gpu(), + workspace->getCount(), + workspace->getStride() + ); + } +#endif +}; + +#endif diff --git a/GPUQREngine/Include/SuiteSparseGPU_debug.hpp b/GPUQREngine/Include/SuiteSparseGPU_debug.hpp new file mode 100644 index 000000000..cf3da1215 --- /dev/null +++ b/GPUQREngine/Include/SuiteSparseGPU_debug.hpp @@ -0,0 +1,49 @@ +// ============================================================================= +// === SuiteSparse_GPURuntime/Include/SuiteSparseGPU_debug.hpp ================= +// ============================================================================= + +// SuiteSparse_GPURuntime, Copyright (c) 2013-2016, Timothy A Davis, +// Sencer Nuri Yeralan, and Sanjay Ranka. All Rights Reserved. +// SPDX-License-Identifier: GPL-2.0+ + +//------------------------------------------------------------------------------ + +#ifndef SUITESPARSE_GPURUNTIME_DEBUG_HPP +#define SUITESPARSE_GPURUNTIME_DEBUG_HPP + +#define GPURUNTIME_DLEVEL_OFF 0 +#define GPURUNTIME_DLEVEL_ERRORONLY 1 +#define GPURUNTIME_DLEVEL_CASUAL 2 +#define GPURUNTIME_DLEVEL_VERBOSE 3 +#define GPURUNTIME_DLEVEL_EXTREME 4 + +//------------------------------------------------------------------------------ +// force debugging off +//------------------------------------------------------------------------------ + +#ifndef NDEBUG +#define NDEBUG +#endif + +// uncomment this line to turn on debugging +// #undef NDEBUG + +//------------------------------------------------------------------------------ + +#ifndef NDEBUG +#define GPURUNTIME_DLEVEL GPURUNTIME_DLEVEL_CASUAL +#else +// no debugging +#define GPURUNTIME_DLEVEL GPURUNTIME_DLEVEL_OFF +#endif + +#define DEBUG_ATLEAST_ERRORONLY (GPURUNTIME_DLEVEL >= GPURUNTIME_DLEVEL_ERRORONLY) +#define DEBUG_ATLEAST_CASUAL (GPURUNTIME_DLEVEL >= GPURUNTIME_DLEVEL_CASUAL) +#define DEBUG_ATLEAST_VERBOSE (GPURUNTIME_DLEVEL >= GPURUNTIME_DLEVEL_VERBOSE) +#define DEBUG_ATLEAST_EXTREME (GPURUNTIME_DLEVEL >= GPURUNTIME_DLEVEL_EXTREME) + +#ifndef GPURUNTIME_LOGFILE_PATH +#define GPURUNTIME_LOGFILE_PATH "SuiteSparse_GPURuntime-logfile.txt" +#endif + +#endif diff --git a/GPUQREngine/Include/SuiteSparseGPU_internal.hpp b/GPUQREngine/Include/SuiteSparseGPU_internal.hpp new file mode 100644 index 000000000..6a61f1c32 --- /dev/null +++ b/GPUQREngine/Include/SuiteSparseGPU_internal.hpp @@ -0,0 +1,35 @@ +// ============================================================================= +// SuiteSparse_GPURuntime/Include/SuiteSparseGPU_internal.hpp +// ============================================================================= + +// SuiteSparse_GPURuntime, Copyright (c) 2013-2016, Timothy A Davis, +// Sencer Nuri Yeralan, and Sanjay Ranka. All Rights Reserved. +// SPDX-License-Identifier: GPL-2.0+ + +//------------------------------------------------------------------------------ + +#ifndef SUITESPARSEGPU_INTERNAL_HPP +#define SUITESPARSEGPU_INTERNAL_HPP + +#ifdef SUITESPARSE_CUDA + + #include "cuda_runtime.h" + #include "SuiteSparse_config.h" + + #include + + #include "SuiteSparseGPU_macros.hpp" + + #if DEBUG_ATLEAST_ERRORONLY + #include + #endif + + class Workspace; + + #include "SuiteSparseGPU_Workspace.hpp" + +#endif + +#include "SuiteSparse_GPURuntime.hpp" + +#endif diff --git a/GPUQREngine/Include/SuiteSparseGPU_macros.hpp b/GPUQREngine/Include/SuiteSparseGPU_macros.hpp new file mode 100644 index 000000000..298ff63d3 --- /dev/null +++ b/GPUQREngine/Include/SuiteSparseGPU_macros.hpp @@ -0,0 +1,21 @@ +// ============================================================================= +// === SuiteSparse_GPURuntime/Include/SuiteSparseGPU_macros.hpp ================ +// ============================================================================= + +// SuiteSparse_GPURuntime, Copyright (c) 2013-2016, Timothy A Davis, +// Sencer Nuri Yeralan, and Sanjay Ranka. All Rights Reserved. +// SPDX-License-Identifier: GPL-2.0+ + +//------------------------------------------------------------------------------ + +#ifndef SUITESPARSE_GPURUNTIME_MACROS_HPP +#define SUITESPARSE_GPURUNTIME_MACROS_HPP + +#ifndef IMPLIES +#define IMPLIES(p,q) (!(p) || ((p) && (q))) +#endif + +#include "SuiteSparseGPU_debug.hpp" +#include "SuiteSparseGPU_workspace_macros.hpp" + +#endif diff --git a/GPUQREngine/Include/SuiteSparseGPU_workspace_macros.hpp b/GPUQREngine/Include/SuiteSparseGPU_workspace_macros.hpp new file mode 100644 index 000000000..0f11d0467 --- /dev/null +++ b/GPUQREngine/Include/SuiteSparseGPU_workspace_macros.hpp @@ -0,0 +1,24 @@ +// ============================================================================= +// SuiteSparse_GPURuntime/Include/SuiteSparseGPU_workspace_macros.hpp +// ============================================================================= + +// SuiteSparse_GPURuntime, Copyright (c) 2013-2016, Timothy A Davis, +// Sencer Nuri Yeralan, and Sanjay Ranka. All Rights Reserved. +// SPDX-License-Identifier: GPL-2.0+ + +//------------------------------------------------------------------------------ + +#ifndef SUITESPARSE_GPURUNTIME_WORKSPACE_MACROS_HPP +#define SUITESPARSE_GPURUNTIME_WORKSPACE_MACROS_HPP + +#ifndef GPU_REFERENCE +#define GPU_REFERENCE(WORKSPACE, TYPE) \ + ((TYPE) (WORKSPACE != NULL ? (WORKSPACE)->gpu() : NULL)) +#endif + +#ifndef CPU_REFERENCE +#define CPU_REFERENCE(WORKSPACE, TYPE) \ + ((TYPE) (WORKSPACE != NULL ? (WORKSPACE)->cpu() : NULL)) +#endif + +#endif diff --git a/GraphBLAS/CMakeLists.txt b/GraphBLAS/CMakeLists.txt index a77fbf583..1b52985ed 100644 --- a/GraphBLAS/CMakeLists.txt +++ b/GraphBLAS/CMakeLists.txt @@ -384,9 +384,10 @@ else ( ) "(Linux, conda-forge, spack, brew, vcpkg, etc). " ) # check for __thread, __declspec(thread), and _Thread_local keywords include ( SuiteSparse__thread ) - if ( NOT HAVE_KEYWORD__DECLSPEC_THREAD AND NOT HAVE_KEYWORD__THREAD ) - message ( WARNING "The C compiler supports neither the __thread " - "nor the __declspec(thread) keyword for thread-local-storage; " + if ( NOT HAVE_KEYWORD__DECLSPEC_THREAD AND NOT HAVE_KEYWORD__THREAD + AND NOT HAVE_KEYWORD__THREAD_LOCAL ) + message ( WARNING + "The C compiler does not support thread-local-storage; " "GxB_Context_engage will return GrB_NOT_IMPLEMENTED." ) endif ( ) endif ( ) diff --git a/GraphBLAS/CUDA/Config/GraphBLAS_CUDAConfig.cmake.in b/GraphBLAS/CUDA/Config/GraphBLAS_CUDAConfig.cmake.in index 600d4d598..41db26531 100644 --- a/GraphBLAS/CUDA/Config/GraphBLAS_CUDAConfig.cmake.in +++ b/GraphBLAS/CUDA/Config/GraphBLAS_CUDAConfig.cmake.in @@ -78,7 +78,7 @@ if ( TARGET ${_target_static} ) endif ( ) # Check for most common build types -set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" ) +set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" "None" ) get_property ( _isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG ) if ( _isMultiConfig ) diff --git a/GraphBLAS/Config/GraphBLASConfig.cmake.in b/GraphBLAS/Config/GraphBLASConfig.cmake.in index 9e1b2292e..3b552e828 100644 --- a/GraphBLAS/Config/GraphBLASConfig.cmake.in +++ b/GraphBLAS/Config/GraphBLASConfig.cmake.in @@ -91,7 +91,7 @@ if ( TARGET ${_target_static} ) endif ( ) # Check for most common build types -set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" ) +set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" "None" ) get_property ( _isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG ) if ( _isMultiConfig ) diff --git a/GraphBLAS/Config/README.md.in b/GraphBLAS/Config/README.md.in index cac5d08ba..b8c30307c 100644 --- a/GraphBLAS/Config/README.md.in +++ b/GraphBLAS/Config/README.md.in @@ -225,10 +225,9 @@ Thanks for packaging SuiteSparse! Here are some suggestions: To cite this package, please use the following: - T. Davis, Algorithm 10xx: SuiteSparse:GraphBLAS: parallel graph - algorithms in the language of sparse linear algebra, ACM Trans on - Mathematical Software, just acceped, 2023. See the pdf in - https://github.com/DrTimothyAldenDavis/GraphBLAS/tree/stable/Doc . + T. A. Davis. Algorithm 1037: SuiteSparse:GraphBLAS: Parallel Graph + Algorithms in the Language of Sparse Linear Algebra. ACM Trans. Math. + Softw. 49, 3, Article 28 (September 2023), 30 pages. https://doi.org/10.1145/3577195 T. Davis, Algorithm 1000: SuiteSparse:GraphBLAS: graph algorithms in diff --git a/GraphBLAS/Doc/ChangeLog b/GraphBLAS/Doc/ChangeLog index cd492282c..002f8e47a 100644 --- a/GraphBLAS/Doc/ChangeLog +++ b/GraphBLAS/Doc/ChangeLog @@ -1,3 +1,12 @@ +Oct 7, 2023: version 8.2.1 + + * (49) bug fix: GrB_mxm saxpy4 and saxpy5 had incorrectly handling of + typecasting in v8.0.0 to v8.2.0 (caught by Erik Welch) + * cross-compiler support: replace check_c_source_runs with _compiles, + for GraphBLAS and SuiteSparse_config, and remove check for + getenv("HOME"). + * cmake update: add "None" build type, from Antonio Rojas, for Arch Linux + Sept 8, 2023: version 8.2.0 * cmake updates: SuiteSparse:: namespace by Markus Muetzel diff --git a/GraphBLAS/Doc/GraphBLAS_UserGuide.bib b/GraphBLAS/Doc/GraphBLAS_UserGuide.bib index 28d745000..5e162513e 100644 --- a/GraphBLAS/Doc/GraphBLAS_UserGuide.bib +++ b/GraphBLAS/Doc/GraphBLAS_UserGuide.bib @@ -162,15 +162,26 @@ @article{Davis19 keywords = {sparse matrices, GraphBLAS, Graph algorithms} } -@article{Davis22, +@article{Davis23, author = {Davis, Timothy A.}, -title = {Algorithm 10xx: {SuiteSparse:GraphBLAS}: Parallel Graph Algorithms in the Language of Sparse Linear Algebra}, -journal = {ACM Trans. Math. Softw.}, +title = {Algorithm 1037: SuiteSparse:GraphBLAS: Parallel Graph Algorithms in the Language of Sparse Linear Algebra}, year = {2023}, -note = {(to appear)} +issue_date = {September 2023}, +publisher = {Association for Computing Machinery}, +address = {New York, NY, USA}, +volume = {49}, +number = {3}, +issn = {0098-3500}, +url = {https://doi.org/10.1145/3577195}, +doi = {10.1145/3577195}, +abstract = {SuiteSparse:GraphBLAS is a full parallel implementation of the GraphBLAS standard, which defines a set of sparse matrix operations on an extended algebra of semirings using an almost unlimited variety of operators and types. When applied to sparse adjacency matrices, these algebraic operations are equivalent to computations on graphs. A description of the parallel implementation of SuiteSparse:GraphBLAS is given, including its novel parallel algorithms for sparse matrix multiply, addition, element-wise multiply, submatrix extraction and assignment, and the GraphBLAS mask/accumulator operation. Its performance is illustrated by solving the graph problems in the GAP Benchmark and by comparing it with other sparse matrix libraries.}, +journal = {ACM Trans. Math. Softw.}, +month = {sep}, +articleno = {28}, +numpages = {30}, +keywords = {Graph algorithms, GraphBLAS, sparse matrices} } - @book{Higham, author={Higham, N.}, title={Accuracy and Stability of Numerical Algorithms}, diff --git a/GraphBLAS/Doc/GraphBLAS_UserGuide.pdf b/GraphBLAS/Doc/GraphBLAS_UserGuide.pdf index b77e0a0fb..db1cd3ebb 100644 Binary files a/GraphBLAS/Doc/GraphBLAS_UserGuide.pdf and b/GraphBLAS/Doc/GraphBLAS_UserGuide.pdf differ diff --git a/GraphBLAS/Doc/GraphBLAS_UserGuide.tex b/GraphBLAS/Doc/GraphBLAS_UserGuide.tex index ae99188de..eefbdb099 100644 --- a/GraphBLAS/Doc/GraphBLAS_UserGuide.tex +++ b/GraphBLAS/Doc/GraphBLAS_UserGuide.tex @@ -116,7 +116,7 @@ \section{Introduction} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% GraphBLAS library. For more details on SuiteSparse:GraphBLAS, and its use in LAGraph, see -\cite{Davis19,Davis22,Davis18b,DavisAznavehKolodziej19,Davis20,Mattson19}. +\cite{Davis19,Davis23,Davis18b,DavisAznavehKolodziej19,Davis20,Mattson19}. A full and precise definition of the GraphBLAS specification is provided in {\em The GraphBLAS C API Specification} by {Ayd\i n Bulu\c{c}, Timothy Mattson, @@ -16448,6 +16448,17 @@ \section{Release Notes} \begin{itemize} +\item Oct 7, 2023: version 8.2.1 + + \begin{itemize} + \item (49) bug fix: \verb'GrB_mxm' saxpy4 and saxpy5 had incorrectly handling of + typecasting in v8.0.0 to v8.2.0 (caught by Erik Welch) + \item cross-compiler support: replace \verb'check_c_source_runs' with \verb'_compiles' + for GraphBLAS and SuiteSparse\_config, and remove check for + \verb'getenv("HOME")'. + \item cmake update: add "None" build type, from Antonio Rojas, for Arch Linux + \end{itemize} + \item Version 8.2.0, Sept 5, 2023 \begin{itemize} diff --git a/GraphBLAS/Doc/GraphBLAS_version.tex b/GraphBLAS/Doc/GraphBLAS_version.tex index a786681c9..0d1c92368 100644 --- a/GraphBLAS/Doc/GraphBLAS_version.tex +++ b/GraphBLAS/Doc/GraphBLAS_version.tex @@ -1,5 +1,5 @@ % version of SuiteSparse:GraphBLAS \date{VERSION -8.2.0, -Sept 8, 2023} +8.2.1, +Oct 7, 2023} diff --git a/GraphBLAS/Include/GraphBLAS.h b/GraphBLAS/Include/GraphBLAS.h index 12135d64f..7b5a7fa75 100644 --- a/GraphBLAS/Include/GraphBLAS.h +++ b/GraphBLAS/Include/GraphBLAS.h @@ -1,4 +1,4 @@ -// SuiteSparse:GraphBLAS 8.2.0 +// SuiteSparse:GraphBLAS 8.2.1 //------------------------------------------------------------------------------ // GraphBLAS.h: definitions for the GraphBLAS package //------------------------------------------------------------------------------ @@ -220,10 +220,10 @@ // The version of this implementation, and the GraphBLAS API version: #define GxB_IMPLEMENTATION_NAME "SuiteSparse:GraphBLAS" -#define GxB_IMPLEMENTATION_DATE "Sept 8, 2023" +#define GxB_IMPLEMENTATION_DATE "Oct 7, 2023" #define GxB_IMPLEMENTATION_MAJOR 8 #define GxB_IMPLEMENTATION_MINOR 2 -#define GxB_IMPLEMENTATION_SUB 0 +#define GxB_IMPLEMENTATION_SUB 1 #define GxB_SPEC_DATE "Nov 15, 2021" #define GxB_SPEC_MAJOR 2 #define GxB_SPEC_MINOR 0 diff --git a/GraphBLAS/JITpackage/GB_JITpackage.c b/GraphBLAS/JITpackage/GB_JITpackage.c index 7f02b35a8..08848aa22 100644 --- a/GraphBLAS/JITpackage/GB_JITpackage.c +++ b/GraphBLAS/JITpackage/GB_JITpackage.c @@ -17,2834 +17,2833 @@ GB_JITpackage_index_struct GB_JITpackage_index [1] = {{0, 0, NULL, NULL}} ; int GB_JITpackage_nfiles = 217 ; // ../Include/GraphBLAS.h: -uint8_t GB_JITpackage_0 [56523] = { - 40,181, 47,253,160,169,243, 8, 0, 44,209, 0,154,186,164, 33, 45,160,142, 89, - 55,186,140,104,187,208, 76,190,242,248, 41,106,148,203, 60, 45,209, 69,224,238, -215,166,119,115,157,106,230, 22,219,144,128,117, 90,111,120, 29, 94, 7,167,195, -168, 25,234, 1, 30, 2, 31, 2, 94,187,198,116, 59,189,185,106, 41,219,202,158, -133,183,116, 43,251,211,172,252,216,206,183,211, 29,148,206,143,164,150,101,236, -251,146,126,182,251, 79,195, 74,182,148,110,249,195, 28,121,106, 57, 94,232, 27, -220,222,159, 93,131,244,200,117,134,206, 91,163,199,143,179, 60, 54,213,238,132, -127,181,150,192,177, 92, 39,196,165,243,225,219,139,149,107,123, 38,247,255,111, -159,110, 83,235, 14,198, 23,134,122,239,173,107,209,187, 87, 38, 1,101,240,253, -184,113,100, 11,181,217,117,220,122, 33,106, 59, 16,205,225, 26, 53,110,255,110, -236,141,181,233, 93, 59, 35,131, 64, 42,190, 48, 11,117,227,115,136, 86,203,237, -221,105,254, 91,211, 34, 55,135,175,173,124,255,243, 66,247,227, 48,108,202,153, - 63, 61, 28,162, 52,106,179,118, 90, 95,254,175,187, 63, 39,167, 43,103,146, 12, - 6,117,119,126,248,155,114, 98,213,234,183,241,167, 55,166,152,167,150, 31,213, -234, 12,192, 86,243,254,175,206,120,171,213,184,233,220,248,103,167,153, 94,243, -186,187, 53,114, 77,187, 90,150,253,145,195,239,117,119,186,229,234,188,177, 93, -227, 14,183,159,246,162,111,220,158,249,223,222,161,223,230,253,177, 29, 57, 61, -214,185,251,221,218, 52,122,230, 55,161,185, 61,106, 19,126,107, 33,173,182, 22, - 37,200,104, 47,203,158,180,211,137, 92,187,107,192, 60,125,119, 66,183, 70,126, -183,161,219,211,163,135,101,223,233, 77, 90, 63,190,111, 61, 26,185, 58,255, 99, -248, 92,157, 62,189,142,206,105,142, 70,217,178,246, 5, 53,215, 24,189, 59,150, - 65,211,111,244,248,111,127,119,218,236, 62, 12,165, 71, 89,227,253,205,114,188, -181,189,201,125,155,118, 60,171,113,228,159, 12,209, 29,197, 17,239,185,205, 91, - 91, 94, 16,253,181,181, 73,129,224,152, 96, 38,217, 30,239,239, 12,255,237,184, -153, 97, 74, 41,134, 19, 18, 15, 9, 8, 3,144,135, 4, 75, 90,196,240,167, 39, - 78,120,162, 56,212, 93,235, 77, 13, 67,134,230, 98,135, 22, 59,220,221,101,183, - 27,127,181,243,206, 58,183,150, 28,233, 38,134,136,136, 96,120, 76, 18,211, 1, -198, 40,138,164,235, 68,207,136,244,123,236, 96,125,231,135,113, 68, 68, 30,233, -167,205,235,177, 19,201, 56,226, 99, 34, 48, 65, 30,144, 0,132, 88,172,202,245, -161,137,169,206,105,154,164, 9,248,128, 18,145,133,137,108,152,167, 59,159, 35, -127,191,111,123,243, 66,112,145, 59,180,238, 52,111,142,247, 85,251,185, 78,173, -219,202,145,139, 4, 89,166,105,158,202,212, 53,185, 54, 44, 89, 86, 85, 27,150, -140,105,243,127,180,163,221,111,151,174,236,129, 7,176, 36,121, 36, 69,145, 20, - 69, 16, 30,215,161,106,177, 34, 49, 81,176,166,113, 31,198,103, 37,223,104,233, -198, 0, 97,236,146,169,168, 74,134, 81, 26, 25, 71, 44,177,140, 88,154,208, 35, - 12,142,138, 0,197,196,130,111, 38, 49, 81, 97, 96, 92, 95,130,187,217, 89,225, -176, 40,178, 55,218,116,242,189,152,167,110,138,192, 34, 90,243,207, 98, 17, 29, -208,163,226, 64,123,223,127,100,160, 84, 60, 8, 20,128, 60, 42, 42, 42, 32, 28, -169,168,144,128, 64, 32,148, 7, 36, 98, 32,203, 44,151, 11,155,100,237,137,157, -149,220, 92,252,184, 26, 41,236,238,108, 32,127,202,109, 62, 42, 42,190, 83,146, -110, 63,161,238, 96,136,248,239,116,123,233, 23,159,167,254,136,149, 26,158, 66, - 30,253,122,214, 55,134,213,114,117,105, 40, 13, 70,169,228, 40,203,184,186,189, -110, 33,255,199,202, 58, 27,196,138, 53,153, 11,134,195,202, 40,148, 73,134,133, -162, 88,176, 64,185, 48,149, 75,149, 81, 44,141,229,202,162,140,181,145, 85, 88, - 37,155, 58,211,181,111, 9, 95, 78, 91,173,199, 16, 74, 18, 19, 24,140, 12,219, - 80, 48,221, 49,169,132,118,205, 68, 35,199, 82,143, 84,107, 25,161, 80,146, 11, - 37,195,155,206,109,202, 42,145,244,111,250,105, 7, 96,104,232,166, 6, 16, 8, -196,225, 25, 9,196, 48,171,100, 68,204, 44,129,162, 9,162,218,218,253,185, 29, -187,239,143,237, 24, 62,237,234,221,225,159,166,217,111, 43,189, 39,245,232,237, -225,126,171,213,249, 12, 63,150, 82,219, 90,220, 20,200,136, 8,102,102, 6,137, -173,202,165,177,108, 50,153,230, 90,144, 1, 96, 1, 2, 88,138,152, 66,109, 88, - 33, 14, 16,128, 65, 44,133, 32, 40,146,208, 80,149,247,141, 52, 66, 50, 44,161, - 40, 26,170,226,197,218,206,121,188,117, 82,107, 57,156, 73,101,117,239, 4,221, -100,167,188,143, 32,196, 97,217,238,252, 23, 1, 24, 52, 50, 13, 12,149,201,224, -173,101,221,102, 0,105,187,235,223,253,182,251,159,157, 30,234,143,238,177, 1, - 20,230, 64, 72,198,118,106, 64,179,193,116, 26,197,117, 61, 43, 11,104, 84, 26, -170,130, 93, 84,229, 50,121,203,249, 44, 1, 25, 57,237,217,103, 11, 14, 78, 64, - 76, 54, 44,151,253, 58, 18,153, 11, 38,147, 77, 97,210,200,181, 31, 66, 32,248, - 98, 98, 61,184, 40,148,229,178,108,254,139, 29,168, 43, 14, 60, 12,240, 5,182, -161, 52, 56, 44,134,254,150, 36,192, 25, 81, 16,194, 23,108,109,178, 72,141,144, -210,254, 48,124,240, 5, 99,152, 85, 85, 27,172, 2,131, 71,214, 84,214, 2,201, - 37,115,160,193, 84,172,137,165,185, 88, 44,208, 68,225,233,120,246,122,205,213, -216, 85,158,247,190,218, 33, 57,229,196, 4,185,223,147,219,173,199,219,247,252, -241,179,221, 40,253,187,237, 20,141,211,186, 75,160,123,103, 87,235,189, 89, 72, - 16,134, 96,233, 65,193, 8, 16, 64, 34,150,162, 72,242,160,136, 32, 1, 25,224, -179, 63, 26, 61,247,155,115, 14,107, 98,177,224,207,237,213,126,122, 83,194,201, -213,251, 40,127,172, 71, 64,176, 66, 93, 24,195,235,205,161, 51, 99,154,178,217, - 1, 82,236,177,235,164,240,102,235,164,184,118,154, 1,135,188,246, 94, 80,113, -144, 48, 79, 29,154,117, 47, 74,168, 45,225,106,116,192,212, 99,197, 48,250,108, -183, 21,118,232,183, 11,106,164,116, 86,180, 10,223,107, 53,236,239,141, 21,237, -163,159,132,235,148, 33, 10, 70, 96,197,255,211,243,238, 84,111,143,229,186, 39, -217,211,242,108,134, 19,203,197,128, 29, 88, 40,198,184, 38,150, 75,197,153, 11, - 99, 22,149,201, 80, 13, 52, 52, 87, 3,136, 93, 24, 37,225, 6, 8,216,197, 63, -167,108,143,159,187,217, 59,221,185,248,137,244,155,214, 77,196, 71,112,110,167, - 56,125, 62,159, 10,225, 70,230, 88,230,207, 58,104,173,198, 89,167, 6,234, 80, -244,248,179, 33,182,144, 26, 32, 52, 64,136, 24, 50, 75, 11,179, 88,213, 69,105, -168, 16,166,208,157,117,195, 21, 1, 20,127, 4, 53, 87, 45, 22,192,211,212, 48, -246,174,110,167, 39,204,211,127, 68, 68,164,115,111, 87, 33, 52, 52,104, 54, 23, - 9,197,241,251,236,112, 63,203,137, 14,144, 97,218,128, 20,128,176,199, 90, 30, -204, 44,217, 96, 18,150,235, 0,103, 46, 11,168, 10,195, 3, 26,106,210,208,192, - 86,133,178,100,146, 68,161,108, 30,143, 7,228, 65,226,124, 15,221,214,233, 65, -183, 18,162, 23, 61,109, 79, 83,111,174, 47, 71,142, 88, 88,134,194, 96,150,230, -218, 68, 56,144,128,127, 87,251,252,254,125,139,247,112,251,167, 65, 38, 32, 18, - 21,114, 96,114,101, 82,196, 6, 24, 88, 54, 26, 21, 5, 54,161,172,140,134,198, -242,111, 59, 23, 73,123, 98,100,210, 35, 63,100, 15,245,251, 88,250,149,133,185, -101,201,111,196, 26,140,146, 32, 28,241, 3,239,207,218, 49, 43,115,181,222,182, -230,106, 37,135, 45, 62, 20, 63, 52, 70, 92,125, 39, 4,173, 55,133, 24,175,189, -175, 49, 97,181,236, 77,237,117,251,176, 29,188, 79,130,195,140,145,175, 45, 43, - 56,169,144,223,218, 13, 29,164, 73,241, 69, 68,211,148,222, 59,169,123, 34, 26, -150, 19, 53,255, 58, 16, 52, 74,107,185,141,137,162,177,181,216,121,237, 35, 34, - 7,223,161,218, 15,193,136,229,130,109, 80, 25, 17,254,212, 90,126,119,208,219, -125,212,120, 79,188,255,129,166,199,145,168, 98,142, 56,192,112, 80, 24,199, 27, -229,182, 89,103, 8,250,125, 59, 79,252,159,182,245,116, 78,198,231,246,126,241, -175,214,180,159,165,232,167,127,221,249,103, 55, 15,228,129, 30,232,129,188, 58, - 25, 74, 30,168, 91,237,236, 38, 22,136,146, 29,129, 92,142,211,179,193, 60,133, -226,135,214,139,237,124,141, 14,127, 66,124,188,239,115,211, 60, 48,156, 27,101, -123,203,249,183, 57, 27,255,254,124, 80,231, 3, 62,184,152, 21,127,141,237, 49, -228,194,115, 91,111, 63,180, 50, 27, 77,181,201,104, 48,200, 0,163, 42, 15, 44, -248,113, 81, 89, 60,152,146, 6, 86,209, 5, 39,168, 32,168,234, 53,117,124,244, -190,120,183,201, 21, 87, 72,193, 88, 25,183,172,161,108, 40, 12,107, 18,153,222, - 78, 79,236,154, 35,173,156, 60,240,229,230,215,111,170,159,243,198,109, 78,226, -110,223,184,157,161, 6,165,155, 53,133,249, 17, 75,156,101, 15, 17, 63,176,156, -214, 3,181,219, 12, 53,143, 65, 18,131,173, 81,231,227,235,241,126, 67,213, 80, -145, 62,250,216,138, 13, 38, 35,131, 92,157, 28,209, 96, 80,153, 9,215,207,176, - 92, 12,170, 11, 69, 98,169, 92,172,209, 99, 43,187,115,183,166,221, 67,158, 52, - 75, 57,204, 17,239, 35, 79, 33,187, 53,135,235,220,216,130,237,198,112,129,129, - 33, 50, 5, 44,128, 77, 44,157,207,253,231,163,227, 62, 91,155, 67,209, 61, 90, - 21,117, 85, 23, 6,198, 6, 11,185,245,218,147,112,144,185, 84,172, 74,134,113, -201, 62,182,118,212,239, 81, 93,150,135,218,168,179, 57,138,150,132, 76,141,204, - 72,146, 36, 25,198,147, 80, 16, 12, 16, 15,149, 77,136,115,121, 90, 31, 3, 81, - 51,121, 41, 28, 19,148, 24,228, 17,194, 8, 49,196, 16, 18, 17, 17, 17,145, 64, - 36, 72,146,230, 1,182, 99, 56, 25,141,205, 95, 7,230, 46,196,178,194,139, 96, -199,119,108, 98,179, 66,168,255, 28, 96,136,221, 66, 34,111,112,206, 57,183,154, -108,212, 84,214,221,160, 95, 49, 54,208,248, 60, 42,243,194, 35,211, 38,251,150, -149,243,237,100,138,238,202,132,153, 79, 0, 60, 52,155,228, 0,179, 10,114,189, -165,110, 33,140,238, 33,249,106,130, 22, 70,192,231,179, 20,201,105,133,213, 63, -185, 4, 58,246, 67,195,202, 26,255, 64,212, 52, 80,191, 14, 60,139,150, 49,191, - 0,239,230,161,136, 13,190,113,212, 58,130,122,231, 76,216,131, 35, 4,236,188, -160, 76,149, 72,237,188, 64,216,177,190, 72,103, 67, 23,160,196, 28, 39, 41,194, - 62,216, 15,102,133, 11, 41,161, 67, 92,166, 51,131, 36,152, 79, 80,197, 86,122, -209, 11, 43,136,209, 84,211,141, 94, 68, 16, 43,228,225,176,207,116,120, 11, 31, - 62,123, 46, 49, 36, 4, 71, 78,109, 70,100,223,244,162, 43,168,130, 12,202,116, -182, 99,146,121,177, 46,170,221, 51,187, 22, 51,211, 48, 52,122, 97,100,244,207, -106,247,183,229, 70,138, 2, 5, 54,129, 8, 99,105,172, 19, 95,174,235,135,230, - 27, 35, 0, 32,154, 49,249,181,100, 69, 33, 62, 66, 43, 3,234, 76,127,174,157, -173, 6,205,176,234, 7,201,223,144, 46, 11,177, 51,245, 93,106, 2,158,238,228, - 20, 29, 52, 6, 53, 51,175,243, 41, 62, 77,212, 20,221,252,227, 13, 38,248,162, -196,112,170, 24, 71, 30,134, 11,186, 42, 32, 48,108, 59, 48, 17, 90,235,125, 1, -161,203,102,163, 22, 8,211,136, 58,212,160,221, 6, 24,201,247, 39, 38, 33, 0, -184,197,125,205, 77,190,187,110,201,192, 42, 82, 34,125,131,212, 82,255,152, 92, -175,184, 65,220,141,229,119, 61, 63,160, 40,127,171,118, 54, 0,231,174,226,110, - 57, 45, 99, 89, 60,118,106,234,243,179, 1,219,218,101,206,165,116, 40,140,190, - 99, 21, 4,121,226, 85,142,177,222,182, 91,121,106, 38,117, 29,155,104,243,136, - 30,180,132,134, 0,111, 32,110, 90,198, 10, 75,147, 53,226,106,147,116,250,168, - 82, 13, 10,250,234, 20,221, 32, 89, 8, 6,146, 7, 32,141, 67, 50,146,230,169, - 66, 39, 72,197, 32,198,170,162, 87,192,200, 75,105,182, 46,174,135,126,191, 81, -165, 91, 67,164,114,139,250,172,178,228, 19,180, 10,138, 36,255, 28,233, 64, 34, -201, 48,244, 89,238, 55,235,110,182,145, 67,154, 92, 58,102, 18, 48,107,229,160, -127,189,242, 96, 1,135,164,106,196,209,112, 85,111, 45,234, 94,208,227, 1, 0, -156,252,200,121,159, 39,240,196,161, 92,228,255, 76,230, 66, 96, 68,234,162,114, -188, 94, 58,218, 51,229, 84,120,149, 92,132, 11, 51, 49,108,144,225,127,153, 59, - 65, 78,145,119,178,157,191, 72, 67, 96,203,230,242,103,231,240,100,151, 18, 90, - 73,137,195, 13,117, 27,253,254, 67,201,248,180,245, 14, 53,122, 4,171,239, 91, - 22,235, 58, 86, 82,245, 22,184,244,140,228, 92, 19,174, 18, 14, 71,193,232, 28, -194,235, 83, 47,213,104, 64,117,163,144, 30,245,131,114,168,204,169, 75,233,158, -139, 62,144, 52, 97, 64,105,191, 9,148,130,123,186, 98,137, 64, 89,192,206,145, -168,124,104,204,190, 26,156,202,243, 98,140,125,128,214,240,192,112,169,176, 69, -171, 32, 27,229,228, 96, 33,242, 70,101, 2,175,164, 65,148, 95,155,217,227,129, - 58, 0, 79, 69, 23,110, 70,208, 52,168,160,181,194, 82, 64, 47,167,144,144, 27, -180, 90,129,196, 81,194, 53,168,132, 93,194,171, 12, 37, 25, 51,116, 62, 31, 45, -122,254,108,118, 53, 59,190,167,144, 79,125, 3,169,117, 69,105,202, 2,116,189, -205,192, 36,231, 44,196, 66,106,155, 10,206, 27,102,105,221, 69,164,135,100, 88, -129,106,156, 84, 61,198, 35,231,229,144,192,204, 54, 25,141,230,164, 48, 55,247, -123,144,138, 43, 20, 36,107,205,194,212,170, 64,230,142, 28,176,194, 54,110, 99, -246,132, 9, 77,234, 80, 58, 37,231,208, 96,234, 25, 54, 93, 65,230,228,113, 67, -241, 44,191, 72,142,241,166,107,157, 12, 81, 4,226,137,244,177, 17, 73,127, 79, -124, 86,141,164,179, 2, 2, 32,235, 63,100, 2,213,109,200,144,173,166,172, 52, -235,180,236,245,236, 80, 55,184, 88,138, 7,220, 99,156,226, 11, 5,243,126,150, -211,178, 62, 17, 68, 46,199,151,177,108,228,138,135,160,148,220, 61,145,216,112, -238,202,146,231, 83,236,111,127,165,245,169,220,222,208,181, 51, 46,165, 6,198, -208,138,234, 42,208,225,243,109, 0, 24,133,251,172, 46,196,190,232,131, 64,132, -180,238,209,214,252,152,204,221, 95,109,117,129,254, 69,240,253,224,171, 72, 95, -227,163, 15,120, 23, 66,147, 21,248,118, 75, 21,100,159, 80,179,253, 86, 55, 35, - 0, 30,138,156,151, 47,201,199, 63, 13, 16,154, 94, 96,244, 17,162,103,191,242, -196,134,245, 55,214,188, 63, 99, 7,141,238,214, 47, 62,196,235,121,152,243,138, - 11,113,179, 30, 57, 90, 25,163,222,217,160, 98, 26,183,225, 82, 37, 21,108,248, - 48,161, 32,191, 13,237,241, 20,185, 93,186,200,217,164, 2,108, 65,122,250,136, - 82,173,161,194, 34, 76,194,199,200, 56, 88,251,228, 13,139, 50, 80,142, 10,147, -131,100,171, 44,135,185,142, 32, 39, 39, 14, 59, 35,236,171, 98,178,109,213, 32, -129,202,193,168,249,242,155,248,195,239,154,253,191,190,170, 18, 99, 2,232, 80, -100, 17,179,196,239,232,229, 24,182, 49,197, 60,142,156,222,112, 89,141,177,209, - 51,182,251, 25,254, 99, 74,211, 85,186,149,253,135,145,188,130, 94,166,123,253, -201,162,169, 35, 52,194,119,193, 66,177,126,167, 88, 6,252, 72,140,180,197,156, -158,246, 36, 1,230,108,218, 82, 37, 62, 6, 2,110,200, 71, 64,200,162,187, 89, -184, 18, 38,230, 16,124, 53,184, 63,138,109, 97, 32, 10,154,167, 21, 36, 21, 31, - 10,131,171, 72,116,247,120,123, 41, 16,192,148,213,140, 66,158, 61,240, 68,127, -117, 69, 56, 43,196,156,236, 88,114,250,192, 2, 22,114, 72, 82,184,178,133,129, - 39,219,180,189,212,120, 9,210, 11,147,251, 29,208,168,124, 1,194,103, 19,252, -205, 43,141, 79, 92,132, 98, 98,175,195,243,172, 91,136,106, 67, 76,237,102, 56, - 48,146,205,223, 70,254, 44,191,224,191,252, 47,148, 17,161, 35,176,240,100,110, -151,158, 28, 12,181,223, 64,163,182, 87, 48,132, 25, 10,247,244,239, 87,146,111, - 92, 34, 28, 85,109,108, 96, 20,198, 91,196, 5,253,147,124,213,107, 0, 81,124, - 58, 61,205,152, 72,109, 38,206,100,216,238,194, 13, 31, 97, 61, 26, 56, 20,217, - 46,180,180, 40,185,132, 9, 23,248,202,204,223,162, 65, 58, 18, 0,248,230, 97, -185,198,106,155,239,114,238,239, 95, 83,102,241, 38, 65, 32, 87,131,214, 17, 50, - 29,107,199, 63, 39, 32,137,125, 48,238,198,134, 94,254,113,105,246,173,207, 13, -126,194, 41,251, 85,145, 16,103,148, 83,184,147,192,222, 19,159, 58,201, 13, 81, -243, 75,114, 31,209,183,157, 58,142, 16,116,116, 1, 49, 80, 5,192, 34,216,153, -241,162,124, 22,224, 97,185,220,115,192,132,140,203,190,107, 56,104, 28,219,231, -198,112, 1,188, 5,143, 63,245,110, 50,118, 34, 50,132,137,228,190, 99,225,124, -120, 74, 92,218,107,213,247, 79,220, 49, 82, 65,192, 18, 57,165,198, 17,187, 98, -255,230,138,148, 16,234, 17, 90, 69,224,168, 82,154,211,245,194,121,160, 28, 22, - 70, 66,154, 27, 39, 64,161,172,240,172,254,189, 60,219,135,131, 80,118, 28, 41, -193, 77, 99,206, 45,240,133,140,211,197, 64,113,240, 11,155,234,208, 33, 91,110, - 15, 82,188,120, 30,189,145, 9,152,184,110, 67,184,176, 61,235,221,139,106, 12, - 32,137,123,141,192, 41,225,117,136, 31, 30, 80, 96, 34, 86,175, 23,162,154,223, -206,230,143,132, 77, 73,161,145,118,160,228,247,239, 7,245, 77, 70,212,187,173, -105,114,221,248,177, 0,161,116,232, 40,110,107,131,128,241, 26, 83,219,102, 68, -105,202,151,189,219,230, 9, 63,149,136,163,153, 69, 80, 98, 49,243,106, 39,243, -168, 48,156,173, 65, 59,117,210, 77,181,110, 69,108, 54, 24,101,201,160,211,145, -198,165, 89, 78,220,159,222,192, 31,228,181, 46, 15, 89, 30, 16, 68, 40, 13, 3, -171,147, 89, 69,109, 15, 30,154,101, 91,225,133, 55,157, 90,120,167, 68,100, 38, -192, 44,111, 84,129, 79,253,123,158,191,147,190,127,235, 67,189, 19, 94, 95,177, -224,151,151, 83, 63, 8,222, 90,241,213, 99,240,122,204, 69,168, 8, 71, 50, 36, -254, 75,152,232, 68, 69, 0,196, 35,130,111, 52, 2,130,182,193,177, 2,142,149, - 22,170,103,147,155, 77,112,110, 32,199,152,199,156,217, 1,164,250,216,127, 88, - 66,101,233, 59,127, 4,207,213, 45, 96,160,110,223,147, 52,143,113, 62,122,213, -179, 16,245,210, 39, 4, 0, 25,140,157,219,138,102,194,145, 13, 59,218,146,229, - 54,185,103,170,120,200,158, 99,110,130,161,115,212, 23, 48,105,133,147,190, 82, - 74,220,224,164, 73,225, 78, 10,202,209, 79, 96,207, 35, 29,179,127,215,243, 25, -190,230, 37,123,103,242,136, 41,243, 99,201,109, 92, 79,169,104,171,130,112,237, - 41,198,229, 1,208,116, 99,161,141, 10,240, 80, 99,231,247, 82,101,137, 49, 14, -106, 77,132, 8,107, 11, 56,244, 67,214,205,221,131, 34,176,153,137, 31, 0, 21, - 8, 52,117,153, 66, 9,125,147,133, 1,127,119, 95, 41,250,142, 7, 42, 77, 47, -210, 25,136,178,254, 65, 69,215,162,254,215,218, 20, 42,214, 34,101,198,104,152, -252,141, 41, 45,133, 57,234,169,208, 5,221, 59, 37, 79, 94, 60, 85,149, 71, 34, -137, 54, 22, 59,230,159,225,215, 44,169, 2,152,167, 54, 57,159,168, 80, 43,115, - 31, 51, 8,169,173,147,135, 56,141, 20,119,233, 3, 80, 77,172,235,231,222, 99, - 36,249, 94,180, 52, 97,169, 0,151,246,176, 34, 13,227,203, 97, 85, 23, 44,148, - 19, 57,159,180,242, 21,111,191,121,163, 52,145,165,183,191,166,247, 30, 73,176, -247,199, 63,181,224, 52, 63,196,254,240,103, 88, 45,237,165, 41,171,248,253, 92, - 21,128, 80,152, 70,154,179,172,106,203,132,105,200,201,153, 83, 8,159, 66, 34, - 4, 76,150,251, 87,117,140,107, 41, 35, 13, 15, 15, 17, 75, 83,222,128,149,145, -183, 98, 71, 61,215, 35,105,251,171, 20,224, 85,200,124, 41,221, 49, 52,190,120, -157, 43,163,113,238,193, 30, 63,244, 50,207, 30, 54,239, 8,253, 1,124, 41, 50, -129,111, 64,213, 75,172, 77,202, 27, 40,129,111,200,245,210, 79, 49,211,237, 40, -132,109,137, 28,186, 67, 78, 12, 95,203, 73,206,225, 20,140,248, 58,101,188,119, - 22,144,175,216, 90,124,167,106,230, 72, 52,107,196, 5,163, 15, 29, 65,161,248, - 92,169,168, 55,174, 83,183,228, 49, 15, 31, 97, 67,132,226, 69,134,149, 8, 57, -159,241, 97, 83,112,161,221,224,136,233,184, 11,173,188, 92,134,215, 42, 25, 51, -118,194,122,217,206, 81,108, 44,239, 36,121, 79,112, 95,186, 8,102, 0, 34,248, - 9,197,117, 87,138,176, 79, 76,134,133,141,219,109, 82, 12,139,121,169,134,138, - 2,163,160,141,250,233,141,178, 3,228, 79,167,236,105,111,218,213, 79,237,208, -199,163,225,233,204,147,242, 16, 30,199,248, 90,161, 64,102, 30,172, 55, 80, 73, - 76, 2,188, 25,211,244,244,232,112, 99,142,253,239, 61, 98,248, 80, 5, 43,148, - 41,152, 2, 85,161,116, 15, 39, 46,221,141,252,134,100,156, 17,147,204,165, 14, - 79,122, 6,177,136,182,142,248,137,241,247, 33,136,174,129,233,153,118, 44, 83, - 32, 50, 29,176,212,130, 51, 97, 70, 9,178,136, 97,112,228,150,103, 32,170,113, -140,168,200,158,149,233,119, 5, 44,171, 80,140, 93, 35,200, 38,167,218,129, 53, - 74,204,143, 95,255, 47, 71, 74, 55,191,117, 63, 77,223,222,109, 79,247,110,204, -167, 79, 44,205,147, 75, 1, 76,192, 96, 56, 38, 24, 74,104,163,101, 10,117, 89, - 23, 65,147, 37,212, 11,163,200, 0,216,189, 75,208,112,136, 50, 39,252,168,105, -186,186, 70, 80,236, 97, 73, 42,133,117,211,198, 19,184,115,186,204,170, 98,226, -118,236, 4,213,230, 25, 5, 49,166, 80, 10,158, 48,223,192, 15,101, 70,156,193, -242, 34,226,146, 15, 83,115,124, 7, 34, 39, 58,117,174, 15,152, 30,192,195, 43, -232, 89,131,122, 95, 15, 37,131,180, 68,217,165,208,170, 48,152,118,139, 37,202, - 75, 19,224,191, 49,222,129, 19,186,162,218, 98, 54,176, 83,169,146,125,127,202, - 76, 67,209,141,255,108, 73, 56,214,148, 28,157,107, 67,130, 24,171,167, 65,238, -100,124,136, 73,128,164,138, 95,218, 68, 91, 15,223, 91,113, 20,165, 40,175, 1, -217,186,108,249,167,145,132, 55, 72, 81,154,217, 6,167, 71,167, 14,155, 34,153, - 25, 81,236,121,201, 47,213,160, 40,112,194,170,244,122,169,240,186,106,113,164, -108,194, 54, 87, 33, 86, 84,133,109,104, 41,117,154,134, 71,155,111, 73, 32, 84, - 25,137,213,109,238, 0, 70,106,121,116, 19, 88,110,218,178,111, 57,212, 73,190, -235,177, 41,231,251, 50,195,199,246,171, 34,213, 51, 61,218,171, 15,133,123,228, - 56,112, 65,133, 25,164, 6,145,135,175,188,241,247,144,119,234, 1, 58,131,138, - 37, 24,149,196,220,108,141,156,150,186,119, 46, 99,128,242,177,218,134, 24,249, -147, 85, 27, 42,101,207, 61, 91, 29,232,151, 22, 90, 68,196,172,164,242,101, 86, - 63,125,238,154,186, 49,108,247, 3, 30,237,127, 18, 47,122, 7, 91,177, 84,247, -177, 42, 91,222, 55,108,192,168,115,234, 59,179,224, 25, 66, 29,245, 10,125,232, -224, 5,255, 90,172, 14, 98,131, 63, 6, 9,180, 45, 12,255, 1, 34,221,203, 18, -227,183,205,233,246, 61, 71,119, 36,176,244,125,112,154,171,131,194,149,192, 83, -124, 25,158,120,232,136,160,160,240, 53,124,240, 15,227, 75,240,197,117,192,205, -114,186,218, 8,244, 62,242, 22,112,102, 93,152, 4,218,190, 89,152,143, 1, 59, - 98,134, 76,218, 16, 74,250,178, 40,100,171,100,230, 80, 3, 23,181, 60,225,236, - 17,162, 63, 56, 93, 99,107, 46,253, 60,147,126,246,184,137,128, 34,183,194,234, -218, 66,130,124, 29,113, 45, 34,215, 96,225,166,125,219,153,117,187,222,152,255, -103,131,251,148,156, 16, 47, 1, 32,151,109,155, 19, 16,180,166, 14,181, 75, 20, -242,152, 58, 40,147,115,220, 18,152, 35,223,176, 14,171,198,152, 13, 17,212,102, - 97,231,141, 90,114,196,113, 33, 7,181, 65, 51, 56,113,107,191,209,185, 22, 24, -233,230,157, 41,244,109, 43,101, 46,236, 35,215, 37, 23, 0, 63,234,197,254,174, -173, 19, 33,149,201,223,249,200, 20,254,225,124, 59,158, 31,101, 67,228, 63,153, - 73, 39,174, 64,138,163,238,125, 0,128,194,135, 70,206,210,170, 44,133,128,149, - 1,200,229,238,252,148,117, 60,110, 97,172,119,143,240,174,116,106, 2, 3,175, - 34,166,214, 72, 20, 33, 40,189,195, 42,144,174,242, 99,229, 39,168, 87,218,115, -182, 43,232,226,103,198, 53, 68,231, 91, 29,219, 19, 1,159, 57,160, 92,241,198, -239, 40,165,232,130,158,132, 85, 9,168, 17,107,179, 93, 65, 26,107,182, 59,107, -205,247,168,137,206, 53, 5,237,110, 46, 69, 56,155,247,200, 29, 26,195,230,152, - 19, 55, 6, 78, 10, 46, 2,149,117, 67, 61,252,123, 86, 21, 74,135,192, 85, 33, - 19, 20, 45,134,194, 45, 63, 31,160,117,238,199,122,214, 53,211,173, 72,169, 62, - 79, 36,206,203, 24,228,205, 48,239,227, 15,187,120, 73,155, 89, 86,162,106,173, -139, 46,191, 50, 3,198, 27,206,134, 14, 99, 27,212, 67,178,164,202,149,143,124, - 92,228, 22,179, 59, 89, 88, 19, 43,148,216,138, 1,155,110,178, 0,142, 46, 81, -153, 61, 13,142, 34, 4, 95, 43, 87, 81,156, 72,115,165, 73,104,223,188,234, 84, -204, 8,132,118,142,202,208, 43, 36,232,146,122, 88,182,163,168, 57, 80,138,204, -154, 49, 39, 36, 38,253, 88, 50, 6,101, 85, 34, 3,144,208, 42,149,225,225,240, -176,176,100,172,246,117, 7,117,107, 62,123, 85, 8,191,161,132, 26,109,189, 31, - 60, 31, 67, 21,212,116,200,150,205,254,159,215,251,172,130, 9, 49,128, 79,144, - 78,141,156,143, 81, 40, 79,176, 50,154,254,158, 31, 40,216, 78, 98,207,255,137, -232, 11, 52,231,176, 40, 1,227, 59,209,220,198, 63,155,212, 87,224,170,172, 45, - 89, 73,200,121,130, 33,233,151,140, 30,124, 36, 50,225, 12,107,219,202, 85,125, -140,249,123,225,176,134,253,131,235,229,229,143,185,181, 65, 40,190, 67, 52, 58, - 74, 81, 84, 87, 89,195,208,190,252,157,122, 29, 31, 69,151,248, 34, 0, 95, 83, -219,132,220,195,214,145,153, 59,220,219, 75,207,254, 51,195, 18,174, 7, 93,247, -129,198,213, 4,133, 62, 50, 0, 51, 84,148,138, 73,239,220,188, 37, 1, 62,180, -122,177, 8,238, 87,173,145,220, 44, 18,210,179, 87, 50, 34,124,137, 12, 67,100, -174,203,176, 94, 30, 10,249,218,111, 23, 68, 68,128,113,140,189,204, 50,122, 83, - 96, 84, 24,196,150, 11,158, 96,242, 1, 48,203,142,171, 97, 72, 59, 23, 18,177, -105, 17, 76,247,143, 26,249, 73,239, 27, 45,166,181,129, 62,156, 37, 72,228, 28, - 72,205,215,179,124,176,153, 95, 70,219, 12, 30,160, 77,223, 72, 66,123,193,177, - 60,159,149, 17,183,123,147,130, 72, 84,108,155,246,173, 76,175,142,175,242,115, -215,239,107, 20, 33, 79,227,240,223,157, 26,170, 0,246,224,218,225,170,190, 7, -194,231,241,188, 12,105,163,225,156,168, 30,194,203, 50, 96,156, 58, 15, 44,128, -142,114, 56, 71,141, 76, 37, 8, 73,171, 61,206, 83,116, 23, 38, 13,194,213,133, - 93, 56,226,253, 21,188,118,239,163,247,104,128,161, 67, 75, 62, 80,150,129,141, -140, 38,134, 73,248,241,215,252,123, 20,197, 63, 60, 40,225, 90,206,243,242,241, -196, 76,228, 88,175,207,111,199,228,255,246, 95,159, 90,159,184,188, 52, 54,156, - 58, 49,213, 67,135, 53,242, 66, 56,157, 57,129, 15, 70, 93, 23,249,173,119,241, - 17, 17,227,198,225, 2, 37,247,166,250, 74, 72,196, 23,189,173, 2,132,199,157, -201,229, 81,240,110, 11, 26,140,188,226,193,100,103, 31, 25,144, 2,118,207,128, -213,235,135,106, 66,109,122,110, 54,158,121, 36,117, 31,165,178,139,153, 73,201, - 50, 90, 65,163,250, 61, 67,110, 82,224, 19, 35,222, 52,127, 28,180, 26,170, 20, -174, 87,167,137,132,132,134,222,154, 53,189,111,255,160,239,244,176,135, 99, 80, - 53,125,212,150, 59,243, 74,133,138,191,163, 99,211, 47, 87,136, 61, 19,200,241, -122,122,121, 96, 85,167,233,170,166,106,105,126, 6, 44,201, 52,122,114,244, 14, -115,163,118,194, 48,167,215, 62,117, 82, 53,189,110, 80,204,246, 74, 55,222,233, -207, 1, 98,251,154, 63,200, 30,127, 39, 46,203,151,220,185, 30,211,180,223, 88, - 97,199,203, 66,221, 86,132,253, 72,109,209, 63, 79, 90,179, 67,177, 17,204,100, -197,248, 43, 99,192, 24, 2,134, 30, 11, 0,170,252,233, 53, 52, 69, 56,124,122, -231, 0, 66, 13, 14, 68,119,166,193, 65, 60,156, 52,248,228,174, 50,102,101,165, -234, 32,129, 88,170,148, 32,227,105, 7,219,238, 67,137,247,147,106,188,204,162, -203, 36, 13,240, 35,246,222,246, 84, 80, 81,169, 15, 22, 85, 20,220,144, 21, 41, -249, 58,121, 67, 2,179,230,232,173,233, 77,216,135,150,144, 2, 59,125,244, 67, -170, 23,213,195,252, 76, 93,153,184,149, 13,197,136, 83,178,254,103,141,105,205, - 91,136, 42, 54,241, 8, 8, 33, 43, 92,100, 90,143, 93, 23, 30, 3, 42,172,116, -171,136,145, 42, 19,243, 40,248,205, 38,157, 35, 6,187, 35,132,140,181,117,246, -173, 82,204, 45,186, 47, 55,190,159, 12,222, 61, 34,209,112,212, 59, 93,202, 27, - 59,192, 41, 72, 92,246, 11,219, 72,234,185,205,207,248,176, 37,122,140,255,104, -101,219, 21,129, 42,122,136, 74, 79,108,186,197,244,217, 94,226, 31, 76, 10,242, - 24, 71,186, 4,243, 90, 54,204, 97,144, 2,157, 44,132,204, 21, 69,115, 29,117, -111, 68,193, 53,246, 2,166, 89,243,249,184,109, 23,139, 73,120, 79, 68,144,250, - 63,232,209,143,129,255, 33, 79, 84, 68,143, 4,236, 71,210,173,182,129,194,104, -175,226, 72, 29,159,178, 19, 19,130,184,239,195,126,247, 56,206, 13,186,228,163, - 31,108,195,141,153,245,133,163,134,102,241, 63,152, 20,133,214, 11,200,100,150, -250, 73,240,159,207, 78,225, 73, 55, 56,195,229, 72,180,207, 68,205,117,166,106, - 19, 41,179, 23, 55, 77,210,125, 86,254, 87,220,137, 64,252,127,242, 84, 12,252, - 74, 93, 24,117, 3, 84,143, 0,214, 53,167, 40,192,208,204, 3,200, 4,135, 29, -122,209, 73,228,129,127,222, 14,103,174,203,128, 89,139,146,202,167, 74,213, 61, -157,106, 35,134, 46, 96,154, 4, 65,150,229, 46,154, 0,155, 0,154, 0, 46, 57, -238,145, 91, 46,201,136,179,112,191,113, 31, 27, 93,110,151,218, 61,211,198,144, - 75,163,220, 82,203, 80,116,103,248, 77, 16, 69,140, 64,168, 16,170,204, 73, 72, -216, 56, 70,211, 44, 44,188, 31,138,182,179,102,184, 55,215,214, 79,174,243,163, - 24, 75,145,131, 33, 56,115,190,174,181, 42,207,236,254, 11,231,125, 10,198, 97, -145,205, 55,140,227, 34, 24, 22,137,200,106,195,193, 56, 11,229,238,149, 3, 88, -154,159, 50,164, 79, 16, 52, 12, 18, 3,119, 76,217,119,250,124,168,207,207, 19, -127,158, 58,249,251,156,124,138, 26, 31, 90, 78,131, 91,151,184,212, 35,146, 39, -242, 3, 10, 52,233, 68,143,221,161,126, 76, 5,146,148,238,169,118, 83, 50, 11, -134, 99, 65,207,151, 20,161,193,108,228, 93, 13,121,230,227, 33, 31, 15, 57, 16, - 65,236,204,139, 26, 27,244, 14,167,248,197,196,194, 53, 71,166, 29, 74, 98, 48, -161,118,135,154,200, 4, 4, 87,240, 9,193,100, 66,168,228, 83, 51, 63, 30,255, - 15, 74, 95, 51,245,125, 98,149,248,206,220,253,125, 80,151, 32,169, 64,249, 83, -231,231,250,193,104,215,199, 82, 74, 73,140,114,167, 5, 36, 29,233,135,235,156, -239,220,176, 40,174,245, 45,119,243, 82,143, 20,185,130,119, 28,207, 78, 30,121, -101,203, 64,118,103,222, 92,113, 71,196, 27,143, 29, 99,106,243,215,121, 76,221, - 45,205,194,148,165,228, 50, 27, 78,195,178, 75,253,140,109, 87,169, 68,211,160, -109, 54, 8,206, 37,161,158,158,175, 6,150, 38,145, 75, 81,132,149, 67,239, 24, - 35, 99, 58,239,235,128,250,243,179,182, 2, 9,217,111,210,143,171, 88,178,137, -105, 40,211, 78, 22, 63,235, 62,171, 5,197,108,107, 7,119, 30, 64, 99,114,163, -101,152,204, 37, 43, 54,151, 77,102, 89,248,204,234, 19, 83,144,238, 76,165,136, - 43, 4,184,142, 60,160,160,162,244,168,169,231,137, 24, 99, 6, 87,112,200, 52, - 77,117,130,226,231,187,253,205,141, 16,207,171, 71, 45, 71,207,170, 31, 79,210, -145,167, 48,186,232, 86,168,237,251, 53, 98, 58,117,237, 4,145,100,198, 63,221, -214, 18,151,133, 93, 48,233, 77,233, 77, 48,161, 89,184, 13,183, 93, 60,100,195, -253,148,121, 43, 27,206,118,185, 52, 86,100, 80,225,174,192,130,115, 97,203,189, - 37,237,208,138,214, 90,107, 61,134, 86,102, 60, 45, 71,233, 69,218,245, 40, 71, - 57,185,212, 85,151,166,104, 96,128,193,103,230,245,171, 87, 41,166,219,213,112, -101, 46,151,101,187,255,121,144, 90, 15,153,134, 97,161,216, 32,160,149,185,206, -106, 31, 99,154,235,131,243,122,149,124, 59, 12,219,149,201, 92, 13, 24,239,230, - 7,193,255,124,247, 53,145,170,202, 72,194, 72, 85,129, 18, 44,219, 54, 77,195, - 48, 96, 46, 22,172,171,215,126,116,118,153,136,172,193, 1, 4,186,178, 43,135, -218,168,211,156,177,170, 77,210, 1,195,243, 16, 12, 52, 10,203, 99,114, 49,203, -178,248, 1, 67, 80,146,128, 65, 40, 34,142,163, 24,100, 66, 32, 66, 24, 49, 68, - 17, 66, 8, 33, 18,140, 8,137, 8,141, 72, 29,120, 48,235, 61, 9, 44, 96,187, - 4,162,229,184,135,105, 37,199, 53, 20, 77,142,143, 27,141, 72, 89, 3, 46,237, -166,252, 39, 58,164,220,179, 52, 92, 39, 50,211, 11, 11,240,206,109,229,217, 86, - 98,188, 54,255,149,209, 24,240,136,223,145,104,239, 86, 56,202, 91,212, 73, 31, -245,135,121,120,201,116,196, 36,203,202,103, 76,112,124, 47, 58,108, 24, 90, 37, - 18, 21, 96,202, 25, 23,186,199, 5, 17,118,124, 99, 13, 9,234, 83, 63, 45, 6, - 51, 66,162,237, 3,178,229, 10,136, 58,156,113, 5,182,198,202, 47, 69,141,127, - 27, 57,206, 50, 92,158,142,134, 65, 70,118,106,133,151,147, 70, 67,173, 69,158, -132, 26,182, 85, 69,209,242, 68,145, 92, 44,155,171,224, 40,211, 61, 34, 57, 18, -161,217,120,204,234,250, 42, 14, 30, 90,178,149, 14,168, 50, 26, 97,140,211, 47, - 46,244,212,255,152, 59,203,193,111,123,115,135, 96,207,221,166, 59, 8,227,192, -211,122,226,182,163,200,115,139, 17,115, 95,198, 17,135,203, 3, 82, 78, 95, 1, - 40, 20, 20,119,127,195,177,130,181,255, 99,105, 90, 34, 86, 50,194, 22,193,200, - 70,176, 65,222,203,216,232,114, 1,220,134,244,222,145,101, 2,253,216,105, 29, -102, 13,238,131, 69, 47,107, 70,209,147,181,199, 77, 58, 58,214,230,183,237, 17, - 7,252,119,170,209,101,253,177,217,116,144,159, 86,217, 66,174,252,160, 23, 77, -232,216,216, 2,193,120,130, 95, 3,199,215,200,123,168,219,123, 13,227, 34, 52, - 86, 26,121,205, 47,162,141,175, 17, 40,212,234,224, 43,214,173, 57,218,218, 22, - 29,149, 25,160, 26,210,157,111,243, 50,231, 17,142, 80,157,224,139,165,223,206, -114, 4,179, 29, 75,185,163,113,187,201,177, 45,178,110,133, 1,213, 72,127,141, -232, 79,255,100, 18,142, 91,117, 20, 2, 31, 72, 25, 2,123, 55,133, 46,141, 36, - 2,125, 8,250,136, 40,209,141,145,195, 98,216, 76,134,162, 61,250,160,238,127, -212, 36,144,186, 51,155,124,184, 13, 48,103,104,155, 37, 31,165, 55,120, 36, 29, - 5, 25, 17,162, 61,115,162, 52,117,187, 38,214,174,222,255,198,153,152,245,246, -239,240,227,125,232, 19,163,207,139, 62,220,187, 84,235,148,243,128, 20, 82,184, - 52,249,154, 3,237,165,159,188,156,251,174,253, 28, 69, 3,212, 48,165,159, 53, -182,104,154,175,198,109,150, 8,189, 45,138,145,247,105, 44, 80, 32, 51, 74, 53, -102,210, 68,103,200, 98, 78,239,204, 82, 31,159,137,171,180, 45,179, 57,231,150, -100, 33, 25,145, 93,228,211, 7, 98,241,160,234,171, 11, 34,223, 32, 3,182, 73, - 39, 13,205,176,135, 44,149, 64, 15, 87,120, 96, 55, 68,200, 65,129,187,122, 17, - 12,166,165, 51,202, 68,159, 72,170,253, 15, 22,181,233,111,147,224,195, 54,184, -135, 43,141,121,211,108, 60,105,150,163,224,104,193, 40,105, 12,187, 46, 33, 74, -207, 90, 60, 7,246, 66,107, 20,250,106, 26, 27,167,106,166, 68, 77,131,166, 48, - 57,106,217,213,101, 20,168, 56, 55,157,199, 89,254,148,187,107,145, 50, 22, 23, - 37,141,188, 98, 88,176, 97,160,239, 79,236,169,160,160,183,228, 46, 66, 73, 1, -219,227,209,246,149,176,197,213, 81, 70, 30, 33, 54, 67, 9,170, 3, 83,247,234, -199, 25, 25,220, 74,250,233, 24, 70, 10,234,130,219,108, 17, 46,212, 37, 37,105, -170, 88, 46,208,124, 93, 89,143, 79,130, 10, 63, 8,175,209,208, 7, 92,203,108, -136,189,118,208,239, 3,165,216,195,133, 52, 99, 60,126, 21,166,210,205, 57,126, -225,241,196, 70, 24, 45,102, 81,150, 69, 25, 13, 81, 32,158,121,219, 86,153,157, -133,209,169,117,255,162, 51,106, 73, 42, 9, 81,163,145, 40,191,176,152,184, 14, -206, 43,204,216,147, 97, 47,183, 12,115,119,122,157, 81,104,232,135, 88, 66,120, -124,110, 47,254, 20, 46,120, 91,118, 8, 18,176, 85,159,127, 57, 1, 19, 4,209, - 41,115,112,106,233,226, 31,159,101, 26,135,119,205, 22,250,168, 73, 63,204,237, -236,236,162, 27,219,215, 40, 87, 60,178,137,174,105,216, 33, 24,253,246, 49, 70, - 20, 71, 4,175,112,164,252, 13, 44,229, 37,106, 24,181,103,102,239,201,137, 20, - 57,144, 31, 41,254, 45, 8,196,180,185,112,130, 53,133,233,194, 73, 16, 55,203, - 82,103, 1,156,194, 42,174, 83,110,255, 35, 64,124, 60,237,255, 20, 94,225, 81, -129,105,159,119,124, 9, 68,133, 75,251, 38,216,252, 48,147, 59,134, 25, 29,178, - 0,103,194,215,135, 59,191,115, 2,170,204, 71, 38, 96, 24,252, 83, 73,111,134, -249, 50,213, 78, 63,103,156,253,190,118, 97,193, 43,248,109,182,185, 73,219, 89, - 37, 30, 27,128,160,144,214, 96,156,138,133,250,202,253,183,204, 39, 50, 82, 71, -190,193, 76,187,196,182, 95,189, 46,187,180,226, 50,142, 94,233,160,143,134, 57, -109,141, 63,172, 26, 34, 72,181,170,120,109, 88,168, 76,186, 71,169, 18,237,126, - 36,200,178, 43,243,185,103,209,139, 16,197,184, 25, 83,159,160, 68,232,131,161, -212, 91, 75,134, 43,248, 54, 85, 76, 60, 47,186,199,147,166, 66,151,179,132, 25, -148,133, 23, 99, 33, 74,182, 66,101,206, 6, 4,241,100, 81,172,252, 44,212,234, - 19,127, 95, 97,178, 9,192,188,192, 18, 75, 91,210,237, 70,109, 6, 26,147, 34, - 11, 96,120, 55,250,111,131,198,247, 74, 55,144, 38,124, 5,105, 50,221, 81,203, - 2, 81, 15,161,166, 27, 30,168, 21,127,136,198,208, 88,208, 82,114, 14, 12,228, -144, 74,128,158,114,142,205,255,183,135,102,180,255,181, 49, 75, 92,145, 72,234, - 29,113,107,249, 1, 46, 85,173,203,120,222,252, 18, 88, 64, 14, 47, 84,233,157, -133,233,185,100, 34,218,135,220,167,102, 36,118,189, 40,138, 32,148,160, 17,145, -188, 72,147, 45,190,238, 85, 5, 74, 5,105, 35, 50,211,147, 61, 1,137,220, 10, -233, 54, 92,240, 21,242,111,255, 20,247, 56,145,210, 81,106, 70,103,244, 4,255, -183,142, 1,179, 7,144,172, 88, 40, 59,211,171, 72, 99, 92,220,127, 47, 85,111, - 11, 22, 31,187, 23,252,242, 74,186, 49,112,219, 66, 81,194,253,243,217,234, 22, -140,100,205,197, 59, 5,215,204,189, 50, 71,184,122,200, 20, 84,243,102, 17, 57, -192, 21,253, 60,135, 37,191,252, 72, 10,161, 69,209,221, 69, 33,124,204, 65, 9, - 12, 28, 14,195, 86, 17, 83,178, 73, 93,147,130,161, 21,124, 40, 65, 32,120,135, -184, 28, 57,248,239,139, 80,178,161, 42, 45, 11,109,180,180,223,115,125,153,120, - 16, 77,246,227, 69,149, 62,136, 70, 31,106,163, 20, 50,133, 65, 65,210, 12,124, -224,122,200,196, 19,171,122, 51, 38, 0,216,143,194,197, 35,211,242, 83, 82, 95, -150,208, 27, 49,150,164,223,196,248, 48, 55,162,219,149,121,186,141,178,247,206, -157,228,236, 85, 69, 52,248,137,227,241, 10,131, 2,110,114,226,122, 6,140,163, - 0,192,254, 68, 58,170,152,193,239,150,250, 20, 70,251, 4, 0,109, 39,127,236, - 89, 52,196, 94,205,177,144,205,193, 95,126, 27, 66,249, 63,252,247,241,121, 16, - 62,143, 26,242, 64,210, 47,171,232,209, 12,185, 1, 35, 73,198, 19, 62, 65, 45, -228, 70,152, 88, 87,241,237,133,151,227,210,122, 4,196,199,142, 28, 67, 76, 43, -179, 84, 27,168, 33,226,141, 63,217,154, 99,201,122,100,202,116,160,244, 20,232, - 76, 88, 84, 83, 70,224, 16, 18,204, 68, 94,173, 3,204, 88,245, 69,224,197,221, -142, 80,143, 76, 97, 40, 6,251, 9,164,251, 13,102, 29, 39,197, 44,100,149,116, - 75,140,236,197, 10, 35, 89, 46, 18, 57, 62, 22,173,128,211,192, 13,247, 82,248, -129,155, 21,150,228, 20, 36,225,252, 32, 91, 7,211, 42,214, 10, 43,236, 19,120, -102,191,148,211, 36,139,202, 63,193,155,190, 40,230,188,177,235, 20,110,120, 88, -197,169, 60,169, 34, 41, 95,231, 94, 86, 57,181,139,255, 89,202, 75,198,238,126, -101, 42,203, 99,121,242, 18, 27,226,198,241,186, 16,107,114,244, 15,200,132,189, -198,151,141,203,215, 29,116,196,206, 69,228, 74,198,201, 92,103, 6,119, 32,116, -196,104, 21, 17,248,186, 78,215, 69,248,199,233, 83,234,109,125,152,160,249,165, -233, 71,247,195, 19,109,126, 25, 42,135,125,188, 41,105,242,145, 44, 32,196,247, - 1, 23, 12,218,233, 57, 4,169,142,204, 41, 26, 95,128, 17,149, 31,195,171, 79, - 78,130,217, 88,175, 28, 32,117, 4,187,110, 93,149,115,102,217, 50,162, 17,168, - 49,139, 34,251,145,190,222,141,165, 11,182, 61, 17,244, 91, 96,156,232,235,167, -190, 94,182,161, 95,172,142, 73, 45,212,168,253,234,158,215, 17,234, 36,171,242, -140, 79,121, 34, 29, 34,204, 14, 82, 18,208,205, 59, 56, 3, 18,185, 99,133, 77, -173,223,143, 66,191, 71, 60,221,111,143,191,157,203, 31, 94, 26, 6,195,131, 42, -205, 48,249, 36,114, 56, 5,208,224,217,179,170,243,198, 6, 41,133,223,172, 93, -104,153, 42, 23,230, 86,252,115,220,238,215,235,251, 42, 89,247,225,105, 45,164, -125, 17, 26,116, 80,185,125,103,122,109,132,133,254, 31, 7,208, 80, 81, 23, 47, -172,135,150, 88,148, 88,163, 68,190,193, 1,111, 36, 50, 30, 31,151, 36,253, 57, -133,161, 47, 77, 0, 48,186,254,165,113,185,190, 72, 92, 71,158, 93, 80,254,141, - 28, 25, 94,138, 29, 6,204,104,208,109,132,105, 77,200, 13,211, 84,247, 0, 58, - 70, 44, 89, 0,137, 50, 1, 38,104,130,120, 49,147, 0,126,169, 91,221, 70, 68, -237,129,214,129, 10, 14, 50, 3, 94, 98, 8, 95,143, 57, 78, 0,219, 85, 96,104, -102,245,226,119,255, 99,252, 0,130,216, 88,155, 32, 22,179,102,107,232, 36,176, - 20, 66, 56,143,166, 69, 88,196,189, 55,194, 64, 19, 50, 45,101,159, 21,150, 56, - 53,147, 30, 89, 5,225,244, 50,230,128,169,243,146, 21, 93, 8,160, 70, 25, 3, -228,153, 28, 7,159,107,100,134,133,121,214,179, 64, 15, 24, 44,211,180, 63,205, -187, 50,229,134, 92, 29,246,194, 71,189,255, 56,179, 77, 96, 64,243, 38, 63,142, -169, 80, 7,122, 95, 69, 25,168, 55,144,146,254,196,212,142,150, 65,134,121, 9, -179, 33,193,247,212,180, 52, 33, 64, 88, 94,159, 56,159,253,131, 20,158,204,147, -207,203, 74, 28, 10,211, 52,241,140, 89,141,245, 42,166,159,149, 82,213,151,109, -121, 86, 86,156,105,246,140, 90, 61,243, 23,100,133,187,209,168,108, 46,214, 74, -120, 92,138,217,166,252,195,131, 27, 48,189,197, 84,180,175,185, 31, 14,217,235, - 28,168, 46,155, 33, 41, 15,137,121, 8,243,172,183,110,232,146,203, 53,120,128, -155, 18, 60, 8,235,110,244, 2,223, 43,153,248,192,185, 3, 3,209, 70,189,130, -149,155, 47, 22,110,116,142, 96,131,231,246,158, 7,178, 20,142, 89,238,179,237, - 65, 4, 12, 16,104,232,146,208,158,191, 76,122,165,160,209, 73,169, 57,255,167, - 66,127,163,106,192, 35, 31, 52,159,186,134, 34, 9, 1, 25,123,194,186, 31,116, -205,243,165,121,231,214,190,151,209,143,248,133,226,177, 73,139, 31, 38, 39,159, -251,111,127, 58,116,171,147, 61,142,181,112, 57, 27,114,110,163, 0, 63,217, 38, -174,217, 77,230,150,226, 60, 48, 16,153,177, 50,182,102, 14,165,225, 11, 74,173, -203,238,167, 38,136,247,202,240, 54,251, 37,186, 92,158,126,186,133, 98, 23,132, - 89,191, 58,191, 57, 50, 44, 0, 56, 70,190,110, 7,178,105,130,205,121,195, 8, -136, 23,121,191, 51,207,225,177,167, 6, 34, 69, 1, 51, 67, 82,202, 41, 2,141, -140,162, 81, 90,236, 3, 92, 23,217, 9,101, 73, 59,232,157,166, 1,235, 85,110, -218,111, 51,170,189,244, 19, 14,132,202,202,232, 75,118,209,135,105, 15, 66, 87, - 93,104,194, 71,226,246, 78,169,140,115,250, 53, 72,117, 70,233, 94,213,249,101, -175,197, 9,125, 38,149, 61, 12,245,170,129,251, 2, 97,232, 44,173, 34,105, 11, -125, 22, 21,195, 1, 33, 44, 54, 32, 40, 32,227,224, 35,206, 85, 27,161,247,149, -208,147,191,103,232, 38,172, 45,178, 59,248, 67,204, 4, 20, 97,176, 84,128,156, -170,144, 9, 80,181,218,245,242,158,124, 52,174, 35,113,189, 36,123, 4, 81,153, - 87, 6, 60,146,253, 72, 73,141,129,149,233,201, 53,215,113,189, 78, 57, 44,109, -176, 42, 80,104,255, 81,149,192, 72,134,155,231,201,143, 79, 0, 71, 50,132,151, - 30,192, 62,226, 4, 32,141, 67, 15,153,159,218, 25,161, 6,221, 42,113, 71,208, -103,204,139, 42, 9,185, 41, 95,255,166,133, 12, 40,133,123,102,166,210, 94, 71, - 7,197,156, 48, 79,174,253,227,183,172,129, 21,214,161,117,157, 32,241,144,115, -169,179,208,205, 37,130,137, 18,241, 26,253, 3,191, 52,209, 66,252, 94,191,182, -166, 69, 11,227,247,234,154,218, 45, 42, 38,223,194,150, 4, 9, 40,208,240, 22, -245, 47,224, 11,223, 29, 95,139, 80, 16,109, 91,247, 84,240,153,247,201,253,241, -202, 17, 74, 81,162,226,166,213,123,151, 64,133,139,102, 68,165, 89, 1, 84,176, - 8,240,186, 21,165,244,224,194,191,243, 65, 31,120, 41, 93,154, 23,227, 79,111, - 21,132,234,255,184, 28,227, 47,251,151,143, 76,103,169,137,155, 22,242,159, 64, -215,217,207,126,132,239, 44, 92,116,251, 66, 57,177,229, 50, 26, 32,236, 14, 50, -221,231,213,133,173,162,161, 59,246,148,110, 78, 80, 78, 44, 52,114,253,148,255, - 66, 92,178,146,197,191,223,151,220, 21,245,118,150, 75,133,100,210,113,115,138, - 58, 38,250,234,168,139, 37,132,177,209,211,215,186,148,145,117, 29, 46,229,167, -195,245, 35, 73,165,156,111,190, 60,248,224,150,118, 19, 75, 29,227,101,192, 72, -117,133,197,102, 46, 40, 98, 43,253,203,171,145,105, 67, 13,117, 87,103,155,210, -230,218, 51,130, 79,198, 49,229, 37,213, 98,221, 56,192, 77, 2,250,225,199, 47, -124,159,133, 14,167,160,217,221,247,153,206,174,103, 26,243,191,161,247,185,104, -198, 4, 71,194,187,116, 40, 63,199,242,115,145, 98,164,137, 32,227,116, 95, 86, - 90,222, 83,124, 68, 48,192,209, 4,137,142,138,202,124,182,108, 98,189,129, 69, -183, 77,181,108,141, 80,138,112,203,121,222, 80,154, 93,189,167, 79,229,134,246, - 64,138,255,246,192,246,127,107, 14, 74,200, 3, 67,214,167, 88, 94, 56, 25,163, - 57, 61,228,126,167, 3,148,141,234, 6,240,162, 81,103,224,167,225, 52,156,125, -112, 88,195,215,168, 27, 9,103,131,178, 33, 26, 72, 21,105, 8, 71, 65, 70, 65, -132, 83,125,116,190,142,153, 56,116,129,108,170,103,123, 65, 68, 21, 54, 87,204, -154,182,116, 88, 14, 32,176,138, 30,231, 33,122,157, 40, 9, 74,107,229,195, 4, -132,186,127,135, 63, 18,144,171,192,102, 47, 13,240, 58, 51, 44, 41,235,186,158, - 31,173, 43, 36, 57,222, 87, 94,184, 35,105, 68, 14, 77,120,246, 32,210,102, 78, -238,116,243,107, 58,163, 42,162, 33,240,115,144,204,159,237, 23,211, 82,135, 69, -174,194,173,131, 45,142, 10, 36,229,232, 96,226,147,117, 83, 36, 41,225, 77, 31, -214,251,104,186,216,200,146,239,200,250,205, 16, 84,159, 48,110, 97, 16,171, 24, -217,240, 34,173,110,208, 92,159, 6, 85, 39,228,230,178,204, 62, 80,133, 77,252, -109,182,108, 30, 6,169,243, 76,150,190,242, 22, 83,215,198,132,235,192, 33, 65, - 26, 38, 17,132, 20,213,115, 27, 19,136, 60,169,232,156,210,157, 64,113,111, 38, - 31, 77,226,241,153,176,172, 36, 14, 6,208,219,140, 11,235,241,202,100,115,143, - 48, 72,198, 84,131,110,130, 40,214, 35,178, 82, 24,189,124, 6,115, 50,121,192, -240,209,226, 52, 4,156,142, 9, 11,164,219,175,167, 42, 25,206,188,166,169,222, -201,248,141,227,142,141, 86, 56, 19, 93, 77, 42,165,221,112,199,236,193, 67,114, -132, 18, 93,106,236,228, 84, 56,255, 88, 51,115,104, 78,243,146,214,110, 79,106, - 16,103,105, 40, 74,119, 81, 77, 40,152,159,208,101, 57,128,139,193,171, 1, 49, - 22,210,111, 15, 36,251,222,227,199,181, 13,130,222,131, 10, 44, 99,244,154,227, - 95, 86,210,224,131,247,193, 4,206, 23,201,106, 33,174,126, 55,111,207, 82, 84, -138, 94,191,200, 41, 40,254,235, 82,100,212,206, 32, 41,237, 74,123, 34, 94,144, -108, 37, 34,161, 10,209, 26,211,136,160,205, 84,224,132,164, 19,250, 12,207, 99, - 65,195,190,207,245, 2,240,175,147,213,111,191, 59, 99,193,239, 24, 70,190,187, - 91,164,132, 60,157, 46,225, 91, 96,251,211, 19,157,158,204, 8, 88,195, 53,174, - 3,117,200, 91,175, 6, 62,255,203,189, 46,227, 68,213, 7,235,239, 0,251,172, -194,244, 46, 5,211,111,125, 15,174, 11,145, 3, 28,194, 89, 69, 5,147, 41, 71, - 26,148,200,181,140, 16, 50,198, 49,147,162,113, 88, 21,169,170,229, 62, 34,124, -119, 78,217,178,176,230, 42,141,127,212, 89,170, 87, 77,172,155, 29, 82,254, 58, -147, 35,224,190,191,172,236, 15,207, 19,209,133, 88,139,141,147, 76, 68,247,246, - 72,120, 90, 65, 44,137,244,236,215, 99, 43,146, 84, 58, 59, 27, 73, 62,249, 92, - 37,210,115,104,253,207, 30, 3,179, 51, 12,187, 75,212,123,184,131,144,100, 21, - 80,179,144,216, 40,211,143,226,171,200,243, 79, 83, 79,214,104, 9,179, 42, 96, -206,241,213,126,222, 42, 46,126,233,175,156,117,168,171, 27,166,188, 50, 35,134, -150,228, 62,207, 16,254, 64,106,109,152,219,107, 43,231,108, 23,176,102,167, 76, -227,199,202,116,124,216,170, 4,136,133, 86, 15,129, 79, 90,111,187,160,249,204, - 92,140,189,177,135,233, 86,159,228,147,253,232, 8,206,164,199,223, 69,105, 32, - 7, 67, 23,164,211,183,208,209,112, 37, 85,239,197,122, 70, 85, 16, 5,173,223, -251,197,104,129, 41,229,117, 0,141,178,251, 98, 44, 40,192,172,111, 64,214, 84, -160,247, 84,238,112, 34,227,111,228, 7, 27, 36, 65, 14,172, 29, 1, 10, 75,252, - 13, 40,192,212,113, 3,120, 59, 0,177,120, 45,221,211,170, 3, 57, 51, 2,128, - 55, 40,127,212, 25, 16, 52, 90,121, 77,227,184,177,238,248,244,187,138, 98, 8, - 2, 84,215, 0,216, 0,216, 0, 7, 92,153, 76, 42,157,204, 72, 57,201,212,252, -176, 51,101,242,151, 40, 15, 97, 58, 24,141,196, 80,220,178,130,197, 31,153,110, -242,232,252,159, 92,159, 35,221,227, 7, 34, 9, 54,135,238, 17,241, 84,210,202, - 32,231,202, 79,166,125,189,115,235,162,174,156,170,242,147, 75,238, 77,121,121, -140, 34, 56, 18, 13,150,190,162,234,189,180, 92,193,216,193,186, 20, 8,114,242, -142, 4,187,151, 98,153, 61,147,131,252, 59,223, 80, 71, 35,210, 54,153, 84,233, -231,201,147, 41,225, 14,203, 87,239,220, 62,178,199, 0, 65,116,152,179,115, 75, - 97, 40,180, 15, 69,196,232, 3,194,144,232,230, 70, 93,170,102,183, 85,149, 87, - 63,214,164, 48,244,241,112,115,115,198,180,146, 48, 3, 3,244,231, 95, 8,219, - 99, 22, 35, 79, 43, 85,212, 85, 90,103,180,113,120,168,208,238,229, 98, 37,255, -252,148,196,184,171, 60,227,101, 6,125, 84, 47,229,133,225,193, 92, 42,173,193, -181,148, 27,118,178,121,176, 46,244, 34,119,133,198,177,210, 88,194,173,121, 66, -220,215,110,220, 78,167,237,221,152,207, 61,218,112, 71, 11,195,230,124,206, 72, -178, 27, 51, 43,167,199, 30,189, 62, 30,163, 5, 25,160, 37, 63,102,126, 72, 5, -133, 3,134,131,216, 86,167,242,149, 71,122, 48, 10,133,219, 68, 57, 5,152, 65, -228, 44, 65,129,129, 53, 77,227,204,109,122,222,236,184,202,251,202,183,137,124, -207,101,140, 88,196, 24,235, 92,114, 51,197,243,244,192,147,178, 72, 87,153, 47, -102, 10, 75, 21,123, 31,153, 47, 61,216,160, 31, 98,182,174,129,133, 92,192, 5, -119,154,252, 53, 32, 38,128,204, 37, 94, 76,126, 7, 6, 64,170, 8, 3,178,128, -240,208, 54,179,235,173,210,151,204,125,219, 75,238,186, 40,231, 34,178,112,166, - 45, 10, 53, 17,163,115, 98,156, 33,222, 9, 9,129,153,203, 10,185,240,165,128, - 51,209,214, 7,228,123,205,247,139, 89, 73, 88,120,231,223,102, 68,232, 8, 21, - 26, 92, 15, 14, 23, 69, 99,191,239,251,172,203,218,238, 41, 65,236,236,184,234, -165, 74,241,176,217, 56,140, 58, 1,154,199, 2,114, 86,161, 93,143,148,167, 89, - 44,184, 25,198,111, 50,213,128, 11,199,125, 15, 22,223,137, 74,239, 60,102,126, - 71,117,159,164,111, 20, 84,102,221, 2,135,161,234,213,110,174, 60,233,121,202, - 75,242,242,189,149,106, 77, 38,151, 47, 62, 33,173,211,249,104,236,230,109, 65, -182,248,162,186,202,150,195,149,197, 90,234,152,175,228,229,118,110,148, 75,174, -166,106,201,192,243, 44,174, 66,109,212,209, 70, 27,128,254,132,180,140,136,136, -207, 6,195,129,176,232, 14, 39,131,208, 70, 24,141, 22, 2,105, 16,144,255,222, -123,239,189,214, 90,155,105,125, 47,223,203,242,204, 92,213, 15,201,158,155, 70, -152,235, 67,234,153, 12,103, 11,177,194,157,201, 8, 15,172, 95,105,247,121, 39, - 59, 14, 41, 57, 7, 43, 92,225,182, 55, 58,216,201,229, 15,214, 10,106,172, 0, - 91, 72, 37,146, 66,155,196, 93, 53,224,152,248,194, 28,164, 46,105,142,198,143, - 30,178,255,100,234,252,238,252,162,213,202,246,202, 57,115,141,253,186, 45,135, - 35,220, 22,132, 36,171,123, 4,146,218, 59,141,253, 72, 28,143, 57, 48,245,161, -154,164,142,205,129, 23, 30, 97,206, 40,255,121,210,123,174,239,171, 94, 89,190, -145,139, 3,133,145,210, 94, 93,211, 31,244,109, 33,180,223, 54,219,218,127,173, - 36, 59,207,206,126,203, 90,182, 31, 86, 58, 77, 87, 57,238,123,102, 11,173,198, -242,103,223,246,183, 55, 53,111,254,195,236, 5,230, 73,190,197, 91,145,187,202, - 24,188,166,123,243,228,149,228, 95, 85,150,252,229,199,203,238, 46,179,188,124, -175, 76,155,113,183,109,242, 18,117,239,236,253, 18,228,106,203,178, 86,119,119, -119, 87,188, 74,169,132, 87,170,182, 41, 83, 22,119, 67,200, 5,143,180,168, 4, -251,245, 18,141, 64, 16, 0, 3,164, 0, 8, 26, 9, 10,100, 18,105,154, 73,138, -252,180, 32,135,131, 28,134,137,143,140, 69,162,160, 70, 16, 15, 0, 36,128, 1, - 28,130, 0, 12, 0, 24, 64, 1, 64, 1, 2,144, 2, 12,179, 15,202,183,128, 6, -127, 92, 23, 52,143,230, 24,184,172,246,205, 93,193, 81,182,217,192,189,138, 33, - 51,248,251,236,204,130, 45,229,171, 50, 28,242,105, 34,123, 1,175,157, 57, 98, -182,189, 65,134, 57,106, 42, 55, 67,158, 75,105,112, 74, 14,158,133,129,205, 66, - 55, 56, 41,135,176,194,214,122,146,186,219, 62,235,217, 68,183, 62,140,164, 80, -239, 13, 79,213,109,159,242, 9, 81,120, 93,246,130, 38, 73, 30,183,193,211, 85, -203,193,240,227, 46,249, 32, 60,229,155, 31,167,108,210, 36, 92, 43,159,237, 56, -101, 51, 49,225, 90,249,242, 6, 71,182,193, 76,174,167,116, 71, 47,248, 38,131, -158,200, 13,161,237,189,134, 91, 26,112,118, 13, 78, 54,200, 66, 48, 63,197, 37, -113,158, 22,186,161,171,220,137,209, 85,211,194, 23,124,141,201, 89, 28,165,197, -198,101,212, 67, 80,166, 0,217, 31,132,166, 4, 3, 47,157,178,129,188,125,198, - 22,255, 30, 0,223, 95,188,179, 75,251,209,108, 34,202, 24,144,114, 3,237,212, -249,224,172, 74, 50, 8, 46,114,148,145,189, 8, 54, 17,209,231,104,209,232,209, -103,226,186, 89,167,110,179,237, 56, 90,182,169,124,168,105,184, 9,194, 49,251, -108, 38, 3,210, 0,131,248,227, 38,130, 23, 92, 60,105, 49,228,120,229, 23,173, -212,170, 64,138,191, 38,238,188, 10, 34,181,115,245, 18,207,157,230, 12, 69,115, - 1, 11,166,153,153, 20,123,134,230,128,176,151, 59,112,199,167, 16,236, 29, 7, -211, 27,138,250,235,238,199,113, 8,198,228,122,250,187, 88, 65,240,141,181,255, -151,144,226,147,230, 69,147,228,112,199,148,196, 20,135, 85,142,143, 85,112, 93, -236,185,179,216,111, 68,123,147,124, 28,202,135, 36,123,200,155,231,102,241,176, -159,161, 44,137, 98,215,112,203,120,246, 87, 19,149,113,185,202, 37,175,165, 76, -200,140,185, 68, 77, 71,117,188, 96,118,117,217,206,241, 86,100,228,120, 51,182, - 64, 49, 55,111, 42, 84, 2,182,161, 82, 90,246, 74, 76, 19, 41,230,128, 24,141, -162,177,196, 6,146,174, 77,142,151, 66,241, 43, 4,202,105, 19,125, 2,158, 35, - 81,181,121, 2,110, 51, 34,151,162,106, 33, 83,172,194,159,165, 24,226, 96, 31, - 33,179,158,192,141,139, 31,169,211,158, 88,188,253,206, 4,215, 9,195,109, 69, - 89,161, 25,105,233, 19, 32, 76, 92,207, 75,153,119,250, 6,230,177,165,199, 20, -240, 39,195,134,224, 19,195, 32,160,108, 21,194, 36, 12,193, 64,217, 39,132,229, - 47,132, 5,101, 92, 8,232,188, 16, 26,148, 69, 33,196,232,130,152, 80, 86,146, -112,146,208,177, 80,240,196,101,211, 66, 88, 67,233, 12, 39, 34,203, 89,206,193, -199, 98,116, 15, 93,191, 20,228,160,190, 45, 48,124, 27,147,237, 80,239,190,245, -196,123,133,220,117,106, 74,161, 78,175, 28,167,115,134, 80, 46, 67,102, 92,188, -178,124, 37,241, 95,175,236, 17,179, 39, 32, 42, 51,154, 2, 66,108, 41, 57, 15, - 90,243,222, 5,170, 59,192,227, 49, 21,158,187, 92,185, 16,104,224,167,156, 73, -126,105, 36,185,101, 29, 20,192,163,217,165, 90, 4,211, 68,226,203,203,162,152, - 81, 58,252, 51,172,130,233, 38, 21, 56,208, 56,232, 93, 12,104,129, 82,128, 16, -159,190,250, 32, 17, 63, 52, 4,195,241,226, 55,114, 31,127,251,207,139, 74, 37, -245,111,158, 93,151,220,223,115, 24,244, 42,142, 15,181,203,164, 51, 62,224, 97, -135,177,232, 70,159,149, 24,207, 27, 34, 58, 6,162, 12,252, 20,160, 46,255, 7, - 2, 66,144,161,103, 32, 67,154, 67,193,104,204,127, 18, 12, 61, 25, 24, 47, 89, -243, 16,201,223,179,131,175,159, 52,107,152,128,158,235, 31,242,218, 33, 25,120, -120,138,182,116,142,189, 10,144,148, 21, 9,204, 16,225, 63,170, 73, 16,237, 18, - 7,209,224,139,134, 55, 70, 10, 0, 25,214, 2, 6,205, 13,154,195, 16,142, 98, -210, 53,145, 98,199,137,142,148,150,228, 2, 57,158, 90, 44, 42,101,131, 70,241, -251,112,122,151,226,107, 17,213, 68, 29,152,194, 40, 69, 52,140, 48,250, 4,253, -117, 66,123,216, 75,189, 10,205, 37, 12, 29, 57, 77,134,132,180, 76, 91, 46, 46, -222, 92,142,168, 17, 0,166, 44,115, 94, 75, 43, 87, 58,110,167, 77,220,246, 36, -175, 58, 25,193, 18,196,234, 78, 77, 50, 9,165,221,220, 39,173,182,135, 77, 70, -147, 12, 54, 32,116, 80,156, 49,165, 9,105,159, 10,133,107, 69, 38, 70,246, 65, -114, 95, 0,246,164, 68, 56,180, 68,209,212,244, 45,137,201, 60, 61,182, 25,186, -184,131,234, 55,215, 62,191,147, 47,114,147,247, 88,235,188, 38,180,236,141,178, -190,203,187, 76, 83,101, 69,253,125,109, 40,182, 22,125, 60, 87,116,153,158,114, -217,227,117, 77,120,144,166,220, 47,163,133,165, 76,126,107, 76, 45,141,158,130, -203, 39, 43, 70,210,218,203,231,107,158,203, 46,152,114,152,176,128, 40, 93,197, - 84, 32,142, 37, 49,129,209, 84,147, 93, 47, 39, 54,158, 98,242, 14,239,121,188, - 36,219,250, 26, 34, 29,205, 5,226, 7,153,205,178, 17,166,107, 27, 37,145, 64, - 47,147,212,119,188,143,223,214,192, 56, 63, 0,161, 8,221, 37,205, 43,203, 9, -230,245,254,192,158,228, 39,195, 82, 82, 11, 9, 43, 39, 62,189,101,182,111,221, -163,152,243,186, 72,192, 64, 53,160,102,206, 73, 51,121, 31, 59, 87,113, 29, 6, - 58,226, 66,117,151, 45, 31, 47,214,131, 1,237, 92, 10,238,209, 5,117, 78, 33, -117,228,112, 18,221,131, 3,121,115, 77, 79,254, 30, 28,203, 7, 60,192,171,121, - 70,212, 56,221, 91,148, 76, 79,147,161, 98,106, 43,208, 19, 38,154, 90,156,207, -182,120,104, 64,188,152,187,205,100,119, 11,180,219, 74,216,183, 51,255, 18,225, -181,109,106,135,130,235, 80,163,247, 6,187,157,219,101,116,124,130, 83,250,198, - 97,185, 6,112, 87, 4,183,173,104,119, 76,192,123,127,227,132,137,245, 78,254, - 17, 45, 21, 76,105,131,214,136,159,190,224,154,199,237,228, 8,250,128, 8, 3, -236, 36,185, 51,146, 59,124,188,137,255,143, 44,155,220, 34, 61,102, 71,134,204, -143,227,185,110, 21,180,192,238, 37, 7,114,198,245, 88, 13,180, 28,129,202, 68, - 49,136, 92, 22, 64,255, 69,114,186,137, 12,253, 93,175,152, 92,147, 55,184, 28, - 61,212,121, 12,109,103, 45, 3,215,141,233,162, 20,175, 20,227, 6, 95,109,205, - 39,169,219, 16, 44,104, 91, 3,114, 7,187, 69,133, 56, 51,163,241, 52,222, 58, - 2, 50,181,155, 16,187, 62,222, 45, 62, 10, 49, 72,147, 58,243,226, 13,158, 64, - 0,184, 27,204, 51,137,131,183, 11,147,236,218,183, 66,193, 70,161, 97,114,149, -166, 5,240,150,212,157, 21, 59, 25,109,201,140,132,165,104,143,107,136, 72,203, -175, 9,246,245, 79,107,161,103,145,247,185, 47,139,198,202,162,204, 27,203, 58, - 92, 88,220, 33,142,175, 60,196, 31,115, 93, 65,167,127,157,138, 39,222, 19,189, - 68, 40, 56, 57, 35, 82,151,234, 24,175,252, 22, 49, 75,231,171,224, 22,173,166, - 44,168,178,172, 39, 87,242,232,148, 49,164, 68, 66, 49, 74,138, 56,204,189,191, -135,251,239,108,241,221, 3,143,108,131, 46,185, 90, 51, 89,231,205,186,165,230, -223,196, 65,255,230, 33,148,184, 79,213,138, 3, 83, 36,207,237,234,213, 48, 58, -242,139,194,216,158, 71,237,137, 8, 17,201,216,171, 1, 88,145,235,185,192,154, -165,147, 34,192, 33, 19, 71, 21,233,186, 56, 84,115,212,151,112,221, 1, 86,135, -228,235,189,226, 92, 18, 36, 82,115, 33,236, 59,200, 36, 58,143,247,209, 8,153, -245, 64, 48, 10, 41, 50,173,142,139, 58,148,227, 74,164, 27, 66, 58, 76, 75,146, - 66,209,176, 89, 28, 16, 41, 47, 82,231, 99, 16, 74,222, 31,187,246, 8,179,252, - 66,154,249, 60,132,103, 60, 36,215,178, 98, 29, 30,168, 57,226,177,189, 97,177, - 34, 84, 17,129,254,237, 31,104,240, 43,210,179,243,134,192,221, 58,206,200,199, -161,237, 8,214,137,252,222,110, 17,133, 40, 73,195,117,228,111, 7,239, 16, 93, -180, 67,101,162,138,120,108,120, 54,193, 92,239, 64,223,218, 1,114, 58,194,132, -116,110, 29,159,122,106,251,210, 22,221,130, 45,191, 55,198,209,142,122,228,221, - 54,181,214, 57,156, 32, 29, 22,132,217,126,147,119,156,119,103, 75, 14,249,189, -182, 8,164,175, 50,227,113,151,209, 71, 25, 17,226, 9,140,108, 2,202, 69,139, -160, 24,107, 95,254, 75, 7, 97,244,140, 50,131, 26,161, 82,139,120,133, 73,180, -107,176,139, 41,145, 17,147,231, 98, 51,144,221,115, 74, 94,178, 27,167,238,243, -189, 56, 13, 82, 17,159, 4,131,235,209,244, 10,139,142, 86, 55, 65,156,241,231, -140, 54, 83,167,242, 11, 29, 17,192, 39,240,250,185, 1, 64,168,223, 16,218,167, -213, 47,136, 34,192,229, 49, 13, 96,156,168,196,142, 68,114, 21,152,204, 99, 99, - 46, 42, 49,193,157,159, 22,251,122,238,213, 14,149, 49,148, 99, 61, 12,253, 14, - 76, 89, 49, 11, 14, 50,130, 2, 0,105, 33,232, 99,172,238, 61,216,254, 31,189, -161, 82, 41, 51, 12,187, 11,192, 57,200,187,166, 37, 4,132,250,222,166,123,229, - 64,251,156,195,151, 22, 42, 33,110,251,118, 59, 67,108,201,188,131, 71, 97,181, -243,135, 37,157,221,230,207, 75,123, 48,215, 15,101, 12, 37, 84, 0,189,167, 21, - 79, 35,234,224,134, 75,138,180, 96, 0,222, 84, 45, 54, 70, 33,143,160, 98,159, - 29,216,115,246, 14, 26,134,226, 49,110,117, 43,184, 8,157,116,250, 83,232,215, -181, 73, 58,137,118, 71,253, 81, 25,107, 71,211, 45,207, 64,254, 16, 1,141, 3, -161,120, 17,160, 8, 78,144, 4,118,168,205, 28,175,238,130,222,197,181, 17, 72, - 95, 26,206, 12, 79, 13, 23,191, 61, 20, 61,119,161,230,248, 12,135, 78, 45,128, - 49,137,205,205, 6, 26,110,124, 84, 51, 35, 75,232, 41,112, 76,131,192,152, 31, - 2,232,107,196,247,116, 36,124,136,154,227, 35, 7, 85, 11,117, 90, 93,204,145, -207, 76,134, 88,122, 80,185,154, 79, 98,253,212,219, 9, 26, 3,225,240,219, 51, -188, 40, 76,232, 35,110, 40, 8, 3,162, 92,104,169, 59,193, 3,190,208,200,185, - 25, 97, 82, 78,177, 94,110,108,206,148,232,159,158,236, 55,161,233, 37,133, 80, - 94,193,133, 36,112, 38, 27, 41, 64,217,233,111,142,144,142,152,107, 96,126,180, -100, 74,178,237, 13, 14, 71,238,147, 16,155, 77, 22, 10, 39, 74, 76, 50,134,243, - 75, 74,150,142, 17, 75, 86, 9, 44,115,197,234, 87, 39,154,208, 54,135,192, 25, - 86, 13,206,255,131,200,249,121, 36,133, 96, 78, 45, 47,182, 36,249, 66, 19,181, - 30, 67, 15, 47,204,166,202,135, 90,234,241, 5,148, 46, 17,205,197, 53,167,126, -194, 72,162,159,163,117, 98,118,158, 72,216, 31, 8,186,166,128, 48, 74,158,148, -184,246,117,194,115, 17,219,154,113,131, 38, 15, 61,197,196, 98, 28,223,208,229, -233,191,232, 10,121,173,227,161,245,122,196,226,205,146,120,203,213,253, 5, 2, - 59,233,125,152,234, 13, 23, 81,208,238,190,157, 92,108,175, 23,188, 78,130,183, - 14,120,123,185,230,231, 40,206, 92,233, 73, 32, 68,146,188, 3,106, 25,116, 71, - 21,191,136,159, 22,198,156, 88,244,188,109,127,234, 38,254,254,197, 91,218,197, - 73,246, 15,131, 51,164, 91,252,103,143,120,215,123, 4, 90,222, 92,248,188,144, -165, 1,177, 72, 88, 25, 97,219, 99, 17,114, 53, 11,103,111,236,207,188, 86,235, - 96, 38,202,185,104,249, 1,150,165, 92,114, 41, 86,166,129, 15, 30,235, 59,117, -102, 90,106, 91,126,199,212, 89,131,143,156, 70, 1,137,147,174,184, 1,144, 75, -196,247,167,213,134, 94,176,183, 53,173, 88, 33, 7, 14, 96,242,104,217,170, 42, -170, 73, 18, 50, 38, 42,192, 18,139,114, 31,225,114,216,222,164,197, 36, 85, 44, - 11, 11, 89,165,204,192, 36,230,185,141, 23, 90, 55,160,155, 48,136, 42,162, 73, - 40,143, 22,129, 76, 32, 64,130,205,230, 61, 51,192,123,183,156, 30,217, 0, 74, -164,243,120,230,185, 62,157,190,175,233,218,255, 86,248,105,110,232,127,236,133, - 3,226,254, 18,115, 26,132,201, 97,160, 80,189, 34, 97, 47, 87, 89,108, 6,228, - 2, 96,109, 4, 69,188, 17, 97, 2, 87,248,216, 85, 50, 24,182, 88, 70,246,142, - 52,242,217, 14,172, 13,132, 38,199,151,193,101,145,216,209,255, 54,120,178,135, - 69, 59, 34, 60, 81,140,138, 3,133, 78,140, 28,172,145,197, 63, 99,201,185,135, -184, 74, 74,185,106,179, 65, 20,121,155, 52,142, 9,127, 60, 78,110,178, 5,154, - 69, 31, 65, 32, 16,215, 83, 75,250,224,148,233, 21,102,203,144,115,107, 25,131, -125, 58, 94, 5,154,169,155,143, 66,187, 59, 10,222, 43,234,142,205,187, 8, 97, -146,145,205, 44, 3,248, 98,248,197,205, 63, 81, 67,195, 92,166, 34,172, 17,250, -105,150,125,228,232,228,107, 80,238,189, 13,230,127,115,234, 45,223, 33,124,209, -243, 21,159, 78,147,121, 95, 45, 14,181,216,115,236,248,233, 78,240,147, 14, 26, -217, 1,208, 37, 29,181,133,221, 80,185,239,214, 88,173,154,203, 81,132,199,220, -126,226,110,215,188, 1,160,113, 72,199,103, 93,124,166, 70, 62,134,192, 54,195, -170,169,117,148,245,205, 69, 47, 91,198,108,225,122, 70,248, 56,148,126, 43,162, -133,213, 4, 99, 97,176,144, 24,164, 48, 99,114, 25, 99, 1,157,189, 24,242, 85, - 46, 71, 12, 26,196,224, 75,189,226, 82,180,245, 15,197,105,232,225,163,233, 38, - 22,197, 87, 73,221,133,156,178, 1, 43, 37,113, 37, 18, 81,114,126, 24,118,138, -223,254,224, 21, 86,178,226, 1,130,184,114,116, 29,115, 65, 44,195,104,217,209, -156,155, 32,134, 13, 95,134,163,248, 62, 42,102, 29,179,253, 28,166,235, 16, 70, -138,185,181, 67, 45, 13,233,121, 82,120,237,181, 3, 97,239, 1, 94,253, 34, 67, -183, 46, 74, 21,134,149, 12,188,233, 93, 29,150,130, 81, 71, 77,170, 0,236, 72, -152, 46,135, 23,242, 98, 44, 35,197,106,252, 48, 65, 33, 45, 83,254,145, 70,156, -149, 11,185,113,208, 75,230,250,252, 19, 71,221,116,210,196,188,255, 18,115, 14, -209, 38, 78,133,227,240,104, 24,134, 71,103,232, 88,190,155,129,101,117, 31, 3, -161, 22,147,158,203, 26,191,210, 95,180,209, 82,110, 12,160,146, 26,187,142,131, -109, 82,154, 23,213,104,182, 35,205, 54,251,208, 2,229,222, 17,168,172, 19,227, - 42, 26, 93,212,183,114,238,225,121,166, 90,150,250,133,144, 17,186, 97,123,190, -253, 16,178, 86, 65,126,140,139,126, 41,195,157,159, 27, 53,146, 66, 63, 53,120, -151,125, 97,162,103,133, 8,141,124, 43,194, 33, 27, 69,223, 21, 37,106,229,233, -230,199,141,251,194,220,243, 88,166,151,190,233, 24,198, 63, 31,140,150,225, 39, - 4, 20, 65,234, 29, 87, 52, 60,210,195,210, 5, 66, 5, 61,182,200,100,211,120, - 62, 73, 46,100, 88, 70,222, 31, 5, 5,203,130,180, 9,182,227, 41,217,155,208, - 70,116,200, 98,163,195,246, 56, 47,235,242, 69, 1,186, 59,111,144, 17, 31, 67, -241,168, 8,147,228,158,230,101,189,127, 81,128,122,199, 13,129,226, 63, 67, 42, -220,180, 81, 93, 81,195, 16,188,203, 5,147,252,159,231,210,119,180, 34, 32,220, -112, 82,227,175,253,227,149, 23,183,103,177,192,138, 72, 84, 30, 40,240, 11,228, - 9,112,187,164, 34, 43, 96,235, 56, 87, 38, 79, 96,176, 99,127, 74,136,194,109, -145, 89, 99,178,174, 31, 4,206,160,221,254,131, 31, 97, 15,106,113, 35,152,144, -193, 90,228,247, 56,131,245,198, 12,218,101,116,144,142,162, 26,120, 17,154,109, - 97,152,153,112, 93,167, 3, 98,177,132, 87,111,102,148,132,189,222,103, 61,203, -150, 96,118, 0, 15, 79, 52, 57,147, 73,183,208,225,140, 71,218, 13,102,239, 36, -105,177, 9,213,210, 86, 96,214, 85, 78, 0,143,105, 97,100,123, 58, 70, 10, 93, -221,171,210,226, 22,165, 48,217, 87,168, 75,168,107,160, 98, 91, 18, 13,201,121, - 81, 96, 91, 58, 61,104,159, 22, 97,131, 44, 90, 94, 53, 71,157,152,132, 10,232, - 39, 35, 17,165,230, 97,169,114,135,206,176,245,133, 68,100, 72,208, 78, 30, 41, - 10, 88,190,229,150,164,236,121, 41,237, 6,110,220,153,253,107,113,127, 24,141, - 14,168,205,101, 7, 25,160, 14,159, 51, 95,137, 27,106, 63,223, 11,141, 98,190, -225, 47,138, 67,156,252, 14, 78,238, 76, 44, 0, 86, 48,152, 0,169, 89,171,135, - 31, 52,172,147, 56,177,179,159, 74,149,206,198, 42,165,168, 83,244, 97, 84,235, - 86,156,210,163,160,232,215,183, 10,128, 81, 16, 24, 68, 8,224,172, 22, 42,150, -170,195,101,202,125,148,113,251, 83,242, 52, 82, 50,211,130,244,176, 49,177,186, - 39, 83,136,254, 90,107,204, 84, 0, 83,166,134, 31, 84, 24,123,216, 73, 53,254, - 58,174,206,145, 21,212,251,182, 6,233,245,240,252, 70,168,165, 73,229,192,211, - 12,253, 68, 65,152,165, 71,117,185, 43,192, 4,211,148,185,228,106,249, 39, 45, - 81, 55,246, 91,250,150,201,251, 26,248, 77,130,228, 13,249,181, 29, 74,244, 68, -238,156,171,198,148, 39, 66, 31,116,176,189, 77,119,114,113,207,203, 98, 13,129, -213,170, 48, 14,149, 56,164, 38,179,129,210, 58,203, 4,146,252,234,184,252, 79, - 35, 43,226,211,205,239, 15, 82, 61, 89, 56,173, 80, 93,133, 91, 84, 75, 73, 87, - 66,156,140,159,111,188,151,175,125,171,244,143,195,167,151, 22,218,111,224,138, - 35,114,198, 9,241,220, 9,131,146,207, 33, 40,151, 7,242,147, 42, 35,239,219, -245,224,154,228,205, 10,133,185,197,116, 29,206,247,121, 50,151, 8,160, 38,184, -190,103,246,112, 26, 78,140, 73,198,130,243, 57,132,113,112,207,147, 72,191,136, -221,252,128,211,135,139,115, 61,123,155,132,208,103,226, 61,220, 82, 48, 51,193, - 73,132, 61, 43,140, 92,207,139,122, 76,208, 20,211, 57, 0,142,241,111,153,114, - 70,122,137,108, 41,141, 9,207,163, 62, 63, 49, 88, 62,118, 91,109, 54,202,206, - 1,191,238,237,201, 95,162,128,180,206, 83,206,224, 89, 67,163, 56,249,102,153, -145,212, 74,159, 19,129,110,193,118,154,165,121, 71, 2,244,120,187, 79,221, 12, - 10,180,166,207,160, 45, 49, 99, 21, 67,172, 36, 66,196, 33, 39,180,189,223,102, - 36, 47, 45, 80, 68, 16, 98, 59, 89, 39, 88,222, 7,116,142, 11, 90,226,246, 78, -110,229, 94,231,187, 62,195, 95,166,216,175,124,191, 72,211, 14,198,189, 21, 66, -214,153,178, 34,162, 73,154, 84, 31, 77,227,231, 21, 29, 39, 5, 56,176, 58,146, -185, 22,219,117, 53, 63,126,235, 73,221,103,133,159, 43, 52, 29,219,132,166, 79, -136,216,218,112,212, 79,136, 64, 67,222,141, 2, 47,248, 27,125,240,186, 36,130, -188, 19, 10, 8,199,186,144,226, 42,206, 11,190, 87,199, 40, 39,221, 69, 28,207, -162, 92, 87,108,100,167, 30,208, 95,166, 24,196,252, 17,167,148,208,254,140,233, - 32, 71, 50,146,175, 17, 29, 65,113,205,245,135, 64, 81,172, 75,247, 92,128, 35, - 12,168, 32,146, 78, 66, 57,209,115,140,104,243,161, 26,198,142,156,166,241,176, - 45, 21,133,140,249,210,133,225, 54, 41, 33, 41, 99, 56,220, 5, 5,206, 52,215, -159, 62,246, 91,179,148,242, 88,169,206,168,124,234, 46, 63, 20, 42, 19,253, 32, - 4,214, 3,141,110,213,247,195, 71,136, 34,239,179,127, 2,171,193, 49,153,182, - 60, 66,182, 68,231, 45,216,131,204,198, 47,128,201,214,254, 52,120, 70,117,158, - 28,247,238, 74,252,153, 29,142,116,105,196, 5,176, 39,223,201, 73,136,104,226, - 79,134,141,139,107,164,115,147,243, 85,145, 2, 28,181,147, 22, 12,242, 13,199, - 21, 53, 77,189, 68, 93,187, 39,134,161,148,145, 61,178, 60, 66, 26,114, 1,145, -221,114,147,181, 92, 47,216,211,184,197,155, 66, 78, 45, 86, 37,153,236,233, 21, - 85,218,104,198,162,167, 51, 49,170, 83,161,102,224,150,218,243,101, 16,152, 40, -104,182, 12, 38, 38,224,130,233, 35,240,191,160,246, 6,147,100, 96,162,184, 24, - 63,103,235, 14, 15, 74,253, 51, 10,142, 50, 87,182,222,225,115,134,201,108, 53, -252,192, 83, 56,238, 3, 48, 17, 64,211,231,173,255,170, 15, 71,208,115,148,179, -161,239,198,241, 6,206, 44,165,232, 94, 45,195,179,215,139, 6,149,180, 87,228, - 96, 47,251, 97,198,149, 97, 17,238,116,136, 17,210, 95, 42,201, 10,172, 43,236, -195, 21, 52,189,150, 71, 55,160,245,111,208, 77,243,189,205, 62,208,137, 52,222, -192,138,138,167,205,151,187,209,186,124,209,203, 39,202,112,116,119,155,238, 87, - 25,131, 13, 9,136,147,232,255,165, 12,144, 10, 26,108, 98,150,157, 13, 28, 60, - 94,207,124, 28,137,199,171,122, 88,113,147,136,177,184,105,128,216,162, 81, 47, - 55,240, 32,234,141,235, 6,141, 62,119,180, 84, 69,189, 55, 66, 61, 85, 54,204, -220,215,130,143,163,211,250,238,163, 26,117,230,205,152,226,102, 83,227,121,141, -156,202,185, 41, 48, 89,157,107, 70, 7, 96,245,194,173,163,224, 75,238, 26, 55, -183,192,145, 91, 10, 20,145,129,243,144,146,193, 39, 54,196,108,228,232, 10, 9, - 48,114, 68, 16,247,197,143,155, 33,164, 24,137,224,212, 50,228,232, 17, 46,136, - 56, 76, 45,246, 60,158,146, 30, 2,165, 91, 36,130, 28,253, 86,237, 3, 57, 78, -162,196,202, 29,133,179,192,134,211,227,174,247,106,111, 16,238,214,223, 16, 27, - 20,133,142, 35, 82,112, 45,233,117,107,205, 73, 56,218, 1, 26, 57,114, 54, 30, - 92, 42, 35,254,179,173, 59, 27, 37,176, 33, 44, 38, 85,178,111,112, 92,202, 94, -222, 56, 38, 83, 28,220,184,103,119,218,118, 27,231,234,108,156,223, 18,191,184, -107,126, 54,231,197,137,215,146,106, 23,183, 52,113, 49,112,143, 82,224,231, 42, -174, 62,161,227,236,103, 28,144,181,168, 35, 15,199,253,147, 93, 46, 57,102, 20, -214,142, 68,125, 53, 88, 86, 18,109,204,105,123,120,150,229, 26,236,223, 21, 65, -107,144, 11, 88,248,239, 69,101, 18,161, 62,151,120,180, 2, 94, 53,117,223,192, -187, 61, 39, 46, 75, 97,188,237,128,217,117, 83,135, 4,233, 99,216,207, 52,230, - 42, 35,244, 70, 48,130,171,184,238, 29,129,228,195, 72, 48,141,203,233, 79, 15, -227, 20,110,241,100, 37,161, 70, 53, 78, 43,214,143,158,142, 57,146, 48, 70, 68, -145, 8,204, 18, 65,240, 38, 66,202, 29,195, 10,122,135, 18, 37,167, 79,235,105, -245,190,207,229, 35, 41, 25, 67, 14, 63,130,239,200,108,206,117, 7, 9, 83,241, -253,202,134,105, 3, 2, 74,208, 70,177,204,105,184,126, 76, 12,196,107,120,187, - 31,147, 6,136, 43,233, 83,252, 3, 12,208,112,184,130,161,109, 6, 46, 54, 23, -113, 12,132, 5, 77, 57,131, 28, 5, 96,245,242,108,197, 24,236, 70,236,120, 77, - 31, 64,160, 18,192,235,194,192, 73,106,172,232, 6, 40, 4, 81, 60, 30,173,177, -171,115, 10, 61,161,132,159,148,254, 1,145,161, 54,126,221, 47, 31, 35, 8,226, - 73,123, 46,247, 72,137,183,102,178, 50, 82,173, 5,220, 1, 27,210,147, 13,244, -186, 58,131,117, 48,113, 45, 13,206, 43,252, 48,198, 34,193,233, 38, 41,220, 83, - 63,165,136, 40, 57, 9,199, 21,192, 22,123, 9,233, 75,103,158,164,118,211,132, -142,238,177,194,173, 2,233,187, 95,216, 10, 33,226,121, 24,192,131, 66, 62, 85, - 21,219,203,225, 79, 43,213,227, 17,170, 81,215, 37,125,113,162, 45,128,146, 24, - 5, 30,154,137, 30, 86,212, 6,236,144,235, 14,131,226, 69,245, 93, 66, 56, 58, -173,130,209, 94, 67,214, 74,215,215, 6,208,242,159,186, 64,252,181,140,134,227, -233,181,203, 96, 75,254, 37,216, 80,207, 65,162, 98,189, 4, 69,130, 57,212,134, -179,190,108,210,120,209,150,161,191,104,119, 67,213,165, 49,111,170,175, 92,109, -231, 93, 64,109, 4, 30, 99, 51,212,178, 96,125, 78,121,196, 19,109, 69, 81, 54, -172,191,194, 10,144, 91,168,168,234,154,229,132, 19,165,210, 35,143,242, 5, 4, - 34,243,162,194, 94,144,158,145,229,204, 97,249, 90, 0, 66,134,120,173,118,148, -220, 85,240, 85, 82,127,249, 65,109, 47,218,102, 17,253,109,206,162, 91, 8, 23, -233, 66, 55,242,145,220,254, 9,235,219,193,245,194, 86, 20,190, 30, 93,131,180, -239, 52,182, 19,254, 8,224, 94, 79,169,228,211,229,167,117,191,164,195, 82, 0, -176,155, 21, 10, 11, 52, 76, 98, 2,248,141,246,141, 92,116,166, 46, 79,109,121, -199,122,251,185, 42,150, 0, 58,199, 80,115,171, 64, 85,175,255, 55,141,243,244, - 47, 28,187,106,208, 9,229, 85,216,202,112, 66,107, 91,204,211, 81, 33,133, 7, -176,104, 66, 65,161,248,127, 15,216,149,187,182, 15,188, 1,124, 88, 56,125, 62, -163,127,230, 88,247, 57, 38,175, 9,245, 63,176,224,216, 46,245,148, 40,212,253, -190,169, 69, 49,154,134,244, 96,114, 56,207, 24, 6,125, 88,160, 28, 47, 27,232, -109,183,176, 1, 23,234,171,140,231,209, 75, 33, 88, 25,192,149,157, 25,246,235, - 1, 36,231,232,211,236,220, 53,201, 38,247,133,169,167, 12,207,155, 87, 80, 63, -154,143,104,143,194,150,178, 38,163,176, 99,152, 63, 54, 3, 20,236, 25,238,248, -168,164, 94, 32, 98, 11,117,190, 71, 88,251, 63,222,153,196, 63, 72,168,196,171, -241,188,163, 46, 33, 29,246,197, 27,248, 17,197,111,229, 25, 18,202, 13,162,150, -216, 36,115,128, 39, 20,107, 8,147,106,103, 96, 13, 64,243,113,188, 69,132,140, -192, 43, 14,177,238,109,188,252, 85,112,156, 24,249,255,150, 52, 5,183, 31, 26, - 83, 3,107,188,104, 65,101,106,141, 27, 39, 0, 15,111,231, 49, 22,227,152,173, -137, 85, 23,121, 38, 8, 65, 85, 78,230, 67,157,128, 56, 99, 56, 37,208,214,199, -129,140, 48, 84,109,112,105,225, 36,141,140,178,131,133, 16,183,141, 53, 51,182, -120,249,232, 83, 26, 16,119,129,212,136,114, 39, 32, 63,154,209, 59,152,192,245, -118, 40,220, 44,229,251, 66,189,136, 98,128, 95,189, 78,155,203,249,187,188,123, -149,111, 61,158,138,139,248,226,174,156,130, 48,149,116,169, 42, 48,139, 1,128, -237,127,202,133, 95,162,228,206, 79,118,113,127, 76, 92,220,129, 76,150, 64,218, -122, 11, 28,225, 96, 33,207,252,194, 55,206,174,203,212, 37,194,244, 69,210,121, -125,168,246, 99, 61,123,170,178, 23,201, 45,110,118,180,180,150, 25,146, 88, 69, -107,195, 27,149,230, 94,145,158, 23, 9,124, 91,130,200,237,104, 22,178,201, 66, -196,228, 8, 72, 85, 88,250, 10,185,217, 20,217, 11,129,204,134,105, 9, 64,207, - 8,114, 18,143,236,128,104,214,227,113,199,100, 81, 28,135,152,246,159, 88,210, -117,147, 2,240,156,233, 85,199,116, 32,130, 34,183, 43,214,198,156, 78,237, 84, -173, 26,252, 85,118,223, 1,154, 3, 25, 48,158,182,230, 37,178,189,168,175,218, -127, 10,224,203, 46,169,252,185, 29,125,197,205, 86,228,235, 96, 51, 56, 46,141, - 29, 54, 21, 97,123,179,166,189,140,100, 42,190, 29,190,110,244,168, 28, 73, 6, - 88,101,103,247, 95,154,181,177,108,231,199,152, 34, 53, 22,147,113,134,243,218, - 3,216,240, 60,226, 6,171, 28, 27, 65, 26, 44,248, 11,226,213, 2, 21,254, 34, - 13,120,165,148, 84, 45, 83,154,106, 37, 2,155,142,204, 76, 81, 61,235, 93, 10, -122, 40, 47, 78,118, 39, 66, 55, 45, 77,245,110, 85,168, 65,113,135,166, 65, 87, -205, 49, 95,154,226, 92, 33,127, 62,202,143, 24,138,226,140,241,232, 80,200, 77, -108, 65, 69, 30,210, 3, 63, 52, 76,118,218,236, 93,165, 9,111, 90,244,210,109, -233,210, 35, 26, 50,162,102,204,209, 54,161, 29, 76,156, 17, 13,113,128,254, 48, -132,243, 60,251, 30, 85,190,227,231,119,238,118, 22, 3,129,186, 97,144,227,194, -140,242,208,148,128, 87, 73, 41, 2,143,111,160,161,176, 91,152,234,212, 39, 70, -202, 27,227,112, 9,218,109,159,156,145,102,201, 61, 67,233,217,177,188,172, 33, -192, 68,168,131,242,198,166,114,245, 51, 43,182,166, 3, 0, 80, 29,164,165, 50, -129, 46,202,174,182,201, 19,186,195,217,200, 1, 8,153,158, 47,107, 53,163,182, -183,111, 67, 9,242,252, 78,220,174,198, 72,184, 13, 49,232,225, 77,220,125,242, - 19, 41,189,151, 46,150, 29,214,131,133,198,163, 60, 90,134, 19, 24, 23, 0,208, - 75, 66, 27, 25, 23,236, 1,101,129,144, 86,122,112,146, 49, 46, 20, 55,229,135, - 58,239,223,101, 88,209,187,111,173,228,241,102,225,131,211, 18,184,196,188, 44, - 82,241,111, 87,138, 71, 97,188,116, 17,230, 37,244,134, 75, 81, 52, 7, 94,253, -104,211,128,220,197, 93, 22, 66, 27,110, 5, 87, 70,141,157, 34,224,120, 44, 77, - 1, 91,224,237,202, 6, 23, 96,232, 69, 23,107,196,144,148, 48, 32,124,124,185, - 86, 40,172,153, 34, 50,135,115, 97,175,128,180,229,112, 49, 11,118,166,157,221, -113, 17,216,227, 51, 41,210,218, 20, 45, 73,105,173,183,100, 6, 74, 31,252, 14, -182, 10,125,199, 48, 87, 4,225, 58, 8, 29, 54,150,211,147,119, 88,162, 12, 69, -251,118,108,227, 6, 20,247, 96,207, 98,153,197,120,157, 75,168,201,255,137,254, - 40, 73,145,123,118,203,146,129, 83, 38,180,166, 66, 48,246,113,174,149, 3, 79, -120,121, 14,225,132, 14,154, 10,226,192,200,191,198, 27, 88, 23, 47,175,249,223, - 5, 82, 34,123, 29,229, 84,184, 46,251, 34,198, 29,251,162, 67, 51,254,164, 1, - 28,176,252, 54,155, 81,186, 41,231,152, 24, 63, 39,136, 38, 41,255,172,203, 42, -171,123,206,171, 56, 92,112,208, 94, 38, 69, 12, 16, 31,177,208, 18,243,252, 97, - 36, 48,116,237,135,185, 64,252,184,191,205, 39,242,164,171,238,151, 95,243, 8, - 25, 82, 18,180,179, 32,157,145,140,136,236,198,241, 79,237,140,242,253, 27,113, -233,206, 39,230,193, 75, 53,146, 3, 7, 95, 57,121,221,124, 76,216,174,187,139, -107,215,107,221,133,202,169, 27,227,142, 8,180,157, 84, 46,151, 61, 61, 21, 6, - 67,238, 98,163,119,230, 7, 85,212,144, 2,167, 76,237, 86, 18,226, 47,200,209, -158, 34, 33,244, 33,213,216,213, 85, 73, 62, 89,121, 58,235, 86,166, 20,195,253, - 80,249,123,112, 71,212, 41,105,237,252,162, 7, 13, 50,116,134,159,170, 73,156, -163,181, 86,168, 79,137,244,114, 94, 84, 90,237, 72,204, 72,162,197,161,181,171, - 71,248,180,169, 34, 66,189, 0,147,245,227, 25, 30,119,231, 94, 17,110, 19,234, -102,151,142,117,100,135, 35, 8,152,106, 1,144, 61,139,192, 84,214,132,138, 92, - 50, 32, 7,161, 6,167,236, 85,175,231,118,113,249,221,238,182,189, 61,250,111, -133,160, 78,208,144, 82,157,246,208, 91,207, 27,161,148,220,130, 69, 25, 6,200, - 34, 12, 1,144, 4, 39,164, 8,166, 40,206,199,190,205, 97,240,154,247, 39, 17, - 80, 2, 5, 46,231, 24, 71,248, 22, 68, 2, 27,109, 70, 73,170,165, 55, 40,245, -206,163, 48,229,252,112, 25,116, 74, 96,120,158, 23,182,159,193,253,243, 28, 8, - 79,237, 12,155,155, 54, 2,253,122,185, 84,214,129,149, 60,190, 27,160,198, 13, - 49, 39,142,240,112,121,209, 99, 31,178, 78,160,218, 94,145,245,216,187,107,121, - 13,201,216, 5,153, 15, 18, 53, 68,167,133,125, 17,246,229,123, 42, 68, 62,193, -139,212, 68,190,252,227,184, 57,196,247,134,248, 22,152,113, 23,155,111,164,235, -106,233,146,217, 16, 41,220,169,177,115,140,166,108,173,141,222,128,184,116,110, -163,130,243, 88, 29,240, 92, 33,103,131, 1,255,237, 85, 76,253,241,179,139,127, - 3,201,136, 99, 24,158,247, 20,182,150, 87,172, 51, 2,212, 85, 89,173,231,163, - 75,148, 2,215,247,187, 88,117, 16, 36,232,109, 55, 41,239, 11,204,160, 30,255, - 8,111,148,181,227, 37,104, 78,111,133,244, 34,179,109, 37,234, 98,214,189,179, -244,100,120, 14,220,251, 63, 96,108, 51,173,105, 3,190, 44,148,127, 97,236,209, - 50,196,174,224, 52,199,151,207, 83, 17,156, 39,134, 86, 42, 12,243, 61, 61,153, -140, 14, 91,246,127,248, 32, 86,208, 57,190, 56, 7,204, 95, 21, 29,215,143,157, -123, 27,169,217,143,187,212,212, 61, 84,169, 76,141, 2,193,100, 21,198,128, 15, -127,152,150, 37, 52, 79,187,190, 58,133, 43, 86,162,153, 81,250,198,141, 28, 90, - 24,131,244,102,184, 90,232,121, 93,208,237,186,186, 25,147, 45,198,182, 68, 17, - 32,132, 98,107,147, 76,167, 14,166, 39, 14, 15,243,132, 82, 30,109,167,195, 17, -139, 26, 4,218, 83,246,110, 32,205, 28,192,180, 90, 81, 56,145,180, 13,102,105, -140, 79,168,136, 9, 0,240,246, 68, 37,141, 71,223, 18, 96,214, 69, 5, 55, 63, - 27, 37,134, 70,136,111, 92,140,154,119,121, 96, 32,255,136,168,178,209, 62,149, - 38, 29,184,106,230, 3,185, 9,133, 70,223, 53, 21, 58,145, 62, 13, 69,213,218, -190, 22, 74,163,200,239, 41,221,122, 44,234, 62, 92,102, 12, 57, 58, 36, 2,148, -115, 10,120,216,129,174, 20,210,218,153,126,188,236,140, 30,215,198, 74, 7, 52, - 89, 11, 39,116,120, 8,124,200,137, 78,233,140,130, 27,235, 14, 39, 49,174,131, - 88,221,163, 66,138,159,221,200, 30,201, 19, 53, 38,166,141,137, 14, 22,136,241, -177, 33, 11, 93, 19, 63,255,145, 42, 89, 55,116, 31,224, 13,187,149, 11,246,188, - 12,175, 2,227, 38,239, 46,119,110, 14, 18,111, 71, 75,128,232,208, 34,203, 35, - 88,235, 33, 21, 2,110, 28,204,151, 75,160,225,197, 18,237,133, 18,149,100,221, - 85, 57, 76, 73,148,245,166, 29, 80,132, 88,246,176, 55, 30,192, 92,245,172,169, -136,167,134,132,208, 28, 91, 6,131, 78, 45, 83,180, 46, 54,114,116, 68, 42,255, - 24, 33, 23,210,124,156, 87,106, 77,247,220, 86,167, 51, 56,209,235, 15,196,157, -229, 29,212,102,120,212,160,136,199,147, 71,250,138,119, 80,114, 66,203,210,110, -175, 53, 75, 77, 69, 94,173,168,215, 9,141,204, 84,128, 51, 29,235,243, 10,150, -115, 87,248,121, 99,175,199, 9,244, 23,216,149,167, 22, 32, 27, 6,177,233, 61, -245,248, 24, 7,226,214,254,112, 41, 20,189,141,125,166, 80,130, 38, 81, 72, 88, -156, 36, 55, 69,139,136, 42, 2,145, 39, 34,211,144,193,207,110, 41,191, 55,240, -163,250, 4, 43, 96,228,180,123,110,140,226, 3, 54,122,156, 32,141, 72, 72, 81, -212,104,105, 20, 66, 21, 91, 79,249, 86,128, 20, 20, 16, 33,218,111, 68, 50, 12, - 79, 90,183, 6, 30, 81,141, 89,248, 64,119,243,184,239,203, 71,200,189, 8, 49, -132,253,101, 23, 86,244, 82,146, 73,222,121,193, 23, 33,186, 62,226,129, 48,166, - 41, 68, 58,121,145,160, 98,242,139, 92,191, 90,178,197,148,121,103,192, 29,216, -180, 85,221, 9,146,151,217, 68,142,130, 71, 50, 38,192, 42,227, 5, 75,105, 45, -210,197, 88, 66, 62, 57,246, 75, 69, 28, 94,144,235, 89,235, 7, 77,119,132, 68, -157, 82, 82,230, 20,164,101,239,161, 12, 21, 53,113, 5, 37,121,140, 85,193, 64, - 37,130, 60, 18,135,116,164,142, 64,181, 83,254, 99,112, 49,154, 1, 59, 73,165, -123,173, 16, 45,136,151, 83, 54, 39,166, 80, 80,243, 70,145, 38,202,112,166, 65, -191, 33,123,130,184,116,131, 35, 49,197, 47, 28, 35,125, 88,187, 5, 88, 33, 97, - 55,197,172,102,252,216,106, 95,235,159, 62, 73, 9, 78,252,127,206,158,136,183, - 76,145,166, 40, 40, 35,131,136, 28,215,233, 71, 75, 99,116,226,174,206,102, 43, - 42, 21,118, 55,162, 40, 29,136,151, 86, 26, 42,242, 78, 35,220,106,230,213,232, -254,248,202, 49, 95,252,234, 61, 66,217,162,157,155, 35,197,223,153,113,248,229, -170, 60, 75,234,184,240, 0, 67, 17, 70,103,252,254,183, 55, 13,145, 54, 33, 72, - 20, 77, 45,214, 57,162, 76,224,162,179,148, 20, 66,239, 29,170, 16,171, 26,254, -180, 45,123,154, 2, 18, 41,213, 89, 21,120,141, 41,195,172, 3,164,147, 78, 5, -216, 42,104,183,178,255,105,225, 49, 29,232,241, 22, 37, 82,111, 61,108,232,227, - 86, 78, 88,149,138, 10,100,152,157,106, 47, 67,143, 70,164,152, 66, 65,255,113, - 36, 61, 21, 75,128, 50, 86,138, 48,179,129, 80,148,183, 40, 20, 48, 77, 97,168, -223,131, 60, 9, 95,209,203, 28, 54, 2,101, 33,176,215,170,130,146, 54,117,129, -110,146,103, 19,195,128,119,192, 37,173,105,235,187,216,162, 35,128,231, 12, 14, - 42,120, 15,234, 32,201, 99,182, 17,207, 93,253, 84,116,119,231,204, 95,228, 53, -121, 8, 67,204, 83,208,191,236, 35, 83,203, 22,214,223,127,153, 22,155,199, 95, -159, 50,242, 36, 93, 61, 61, 44, 93,148, 2,108,182,148, 73,174, 65,247, 82, 38, -129,216,146,228,152, 64, 16,155,219,175,188, 47, 98,113, 58,175, 72,180,202,248, - 94,103,244, 39, 12, 65,158,182, 41, 53, 69, 39, 12, 65, 24,204,184,135,149, 34, - 29,184, 40, 52,124,122,208,170, 94,170, 10,161,106, 98,118, 4, 81,157,117,130, -130,212, 41,200,132,104, 97,129,171, 41, 80, 80,200, 79, 41, 45,199,102, 41,173, -181, 53,199,114, 2,130,140, 8,175,228, 67,121,118,243,100,178,238, 14, 19,224, -101, 5,144, 32,131,115, 71,137,230,251,153,187, 91,147,156, 89,226,162, 14, 54, -218,226,102,152, 55,189, 25,216, 20,109, 60,118,140, 19, 8,153, 3,169,210,197, - 19, 44,187, 32,107,124, 92, 56,115, 3,137,208,160,161, 26,193, 69,101, 7, 26, -112,148,149, 6,113,120,198, 92, 84,250, 66,138,222, 98,155, 31, 5,138,166,142, -181,177,115,208, 32,157, 80,213, 14,155,177,100, 25,251,211, 78,153,252,198, 39, -184,165,135,192, 16,232,198,247,223,120,242,197,225,179,180,238, 30,133,212, 26, - 66, 45,101,152,156,104,248, 16, 91,141, 90, 25, 67, 39,149, 52,250, 4,196, 91, - 1,202,103,224, 19, 41,192,240,108, 3,250, 31,141,146,212, 35,245,104,138, 81, -190,178,156, 50,111, 1,189,255,118,143,244,230, 0,223,157, 36,227,247,168, 33, -219,166, 40,186,174,115, 1, 37, 1, 65, 1, 49, 1,162,119,162, 37,177,181,184, -170,145, 89, 82,250,175,233, 91, 95, 81, 60,173,222, 39,212,209,138, 62,197, 44, - 61,155, 42,244, 39,232,166, 28,211, 55,196, 58,191,233,241, 32, 33, 25,196, 4, -201, 79,162,152, 89, 15, 76, 62,209,216,171,231,235,186,220,143, 81,243, 61,211, -123, 38, 19,196,138,215,244,120,189,177,137,210, 34,251,200,215,212,175,113,133, -177,152,203,209, 58,154,183,201,253,179, 0, 37,242,236,250,243,223, 92,134,147, - 58,178, 55,111, 80,135, 77,128, 74, 19, 32, 60,145, 51,153, 45, 50, 44, 45, 70, -125,150, 24,181,126, 85,125, 42,243,147, 86,196,162,185,245,202, 98,227, 39,141, - 54,174,208,126,178,228,198, 34,127,179,164,252,134,150,244,194, 91,225,146,173, - 74, 21,245, 26, 83,227, 88,194, 30,103,242,212,166, 29,105, 28, 90,247,242,181, - 53, 78, 47, 7,228, 16, 50,211,200, 32,249,186, 46, 45,115,215,192, 30,155,232, -174,120,181, 6, 70,221, 55,227,126,133, 99, 73,194, 28,193, 73, 31,241,118,210, - 6,149, 30,217,194, 19,110,150, 37, 75, 66, 50,246,112,188, 36, 18,251,229,121, -198,216, 67,229,124,241,120,210,219,142,210,138,169,170,151,122,197,212,106,166, -183,150,252, 61,143, 74,189,228,222, 99, 60,140,135,241, 48, 24,175,234,234, 85, -171, 28,145,104,101, 6,151,114, 1,255, 13,189,113,240, 91, 82, 99, 59,210,119, -204,231, 63, 34,144,170,170, 20,197,249,174,115, 0,173,253,191,114, 60,159,234, -177, 17,249, 83, 90, 52, 41,176, 91, 69,185,150,249,183,129, 28,179,116, 50,180, - 29,224, 26, 89,236,127,205,157,173,198, 9, 97, 6,241,194,251, 63,217,214, 82, - 57,153,200, 68,251,128,167,155, 79,179,243,169, 13,225, 13,109, 57,142, 99,167, - 1, 0,240,216,246, 25,124, 79, 32,241,120,155, 79, 66,200,227,100, 50,181,154, - 12,100, 29, 39, 41,248,237,181,207, 40,179,244,223, 62, 20, 18,144, 3,130, 95, -167,125,157,143,201,146,163,172,243, 49, 84, 13,105,219, 83,181,124,188, 8, 38, -241,212,134,208,183,224, 85,208,179,241,106,194,119, 49,193,119, 49,101, 60, 50, -108,116, 71,161,102, 18, 60,255,205,203,180,196,242,117,106, 37, 11,101, 56,156, -134, 16, 73,159, 99,182,208,249,100, 40,118,198,230, 9,211, 18, 60,155, 11,216, - 48,194, 91,151,217, 32, 83, 1, 63,149,234,210,164, 41,159,164,244, 41, 13,154, -124, 79,156, 6,205,230,107,224, 16,100, 28, 56,144,109, 89,118,105,168, 89,168, -109,197, 99,153, 65, 65, 6,252, 16,108, 27,114,218, 33,161,124,160,162,182, 8, -176,130,149, 75,230,134,146,207,194,209, 68,116, 94,199,139,128,157,215, 60, 85, - 3,114, 18,178,134,170,241, 92,202,253, 24,134, 17, 92, 30, 58, 33,240,235,174, -142, 0, 96, 40,236,124, 6,159,244,241,120, 60,200,128, 71, 62,195,176,158, 74, -170,250,206,191, 58,149,221, 87,158,187,123,245,149,175,127, 42,255,220, 39, 59, -226,174, 74,241,160,148,125,161,214,117,122, 41, 32,188, 1,101, 5,182,167,208, -180,164, 13,177, 7, 88, 87, 64,197,186, 30,162, 57,107, 69,207,125, 65, 90,142, -211,191,194, 81,129, 86, 42,222, 57, 44,135,227,225,120,138, 68, 62,171,138, 85, -221,188,104,135,166, 36,250, 29,174,156, 74, 42,116,232, 75, 97, 53, 4,127,247, - 21,117,173,201,114, 66, 93, 25, 63,128,223, 8,209,119, 20,217,173,239,198,182, -226, 59,235,169, 47, 99,217,212, 5,157, 69, 81, 20, 67,161,142, 2, 88, 67,213, - 33, 20,242,238,171,235,186, 62, 19, 77, 75, 89,214, 54, 75,157,101, 15,255, 80, -100, 89,239,127, 89,161, 15,189,101,158, 34, 43,181,100, 40,107, 11, 52,225, 34, -139,116,165,118,103, 11,253,214, 44, 5, 40,107, 55,214, 26,135,126, 69, 43,230, - 43,190,149,249, 1,192,101,201,128,156,135,144, 7,226, 27,153,103,169,187,157, - 94, 10,172, 11, 94, 68,136,178, 24,213,184, 45,136,112, 89, 36, 87,220,235, 7, - 52, 14, 19,223, 44,173,206,247,219,116, 34,234, 67,166, 35, 32,224,153, 35,184, -182,149,133,221,154, 67,178,178,165,121,150, 41, 75,170, 64, 10,108,202, 37,229, -122,180,214,116, 97,220,249, 83, 85,160,122, 28,166,153,110,220,198,109,220,198, -105, 18, 77,162, 73,204,174, 51,187,206, 51,241,119, 3,223,189, 87, 3,105,154, -122, 44,107, 28,109,196,243, 18, 54,110,227, 54,110,227, 52,137, 38, 73,107, 45, -229,247,188,132,141,219,184,141,219, 56, 77,162, 73,206,207, 41,145,166,213,121, - 98,139,113,227, 17, 78,159,180, 39,239, 64, 19, 33,135, 3,215,243,211,244, 76, - 43,130,167, 37,236,143,177,164,227,196, 20,130,131,172, 40,193,236, 36, 79,207, -192,100,100, 92, 50, 72, 13,229,225,238,126,209, 35,182, 20, 94, 93,168, 10,215, - 29, 38,177,190,188,238,183,252,152, 82, 69,168,194,199,249, 47,127, 62, 89,238, - 72,105, 44,189, 18,174, 46, 84,166,153,214, 39,254, 32,201, 62,137,230,214,118, -196,254, 32,205, 55,231,188,192,177,108,194,239, 40,235, 52, 72,135,101,101,198, - 40,215,103,120,110,156, 69, 75,122,155,139,214,177,128,245,129,193,171,149, 12, - 82, 65, 84, 77, 41, 95, 37,189, 49,159,229, 2, 82, 42,253,126,125, 10,155,170, - 53,206,150,205, 7,218, 92, 20,190,202,229,181,203, 59, 37,151,215, 40,227,240, -134, 85,152,111,151,177,120, 69,148, 68,251, 9,134,114,233,168,113,204,149,166, - 60, 62,177,162,179,251,175,164,255,150,116, 26,173,221, 87,164,253,183,182,162, -202,213,227,125,116,161,125,212, 74,229, 20,121,181,174,177,219, 28,144,130,168, -212,249, 86, 37, 27, 18, 0, 20, 0,195,178, 0, 8, 10, 11,141, 69, 18,137,156, - 7,138, 82,123,148,192, 6, 68,152, 6,139, 16,140,133,133, 33,105, 48,104, 0, - 8,138,129, 1,144, 0, 3, 64, 0, 1, 3,160, 0,128, 1, 20, 0,114,128,164, - 17,249, 41, 92, 66,110, 64, 72,150,224, 76,142, 26, 61, 19,148,187, 88,170,233, - 53,132, 82, 9, 1,205, 32,204,192,159,123,130,123, 83, 29,124, 88,128,188,213, -146, 17,124,161,165, 24,151, 12,124,208,184,140,212, 58, 7,149,159, 43,192,220, - 95, 67,179,182,115,246,130, 24,204,137,110, 14,237, 60,109,166, 63, 7, 68,226, -116, 70, 1,105, 49, 27,175,109, 27,216, 5, 58,191, 38,220, 4,231,171,128,229, - 9,207, 66,193,127, 29,220,122,193, 37, 36, 28, 45,136, 65,196, 66,221,250, 23, - 5,181, 35, 12, 0,205,246, 72,193, 22,200, 77, 64,224,215,230,182, 7,200,120, -215, 35, 5,136, 97,191, 96, 86,254,236,133,185,159, 57, 87,124, 34,208,160, 71, -159,236, 39, 48,132,165,209, 60,100, 79,118,251, 6,187, 12, 47, 89,149,190, 64, - 25, 72,159,104,132,225, 58,251,180,176, 23,110,148, 11,237, 26,173, 72, 75,209, - 15, 39,144,214, 22,189,114, 24, 78,163, 63,155,118, 90, 73,237, 9,186, 1, 87, -203, 24,198,149, 68,134,177, 74, 77, 96,200,170, 56, 55,228, 61,148, 97, 92,145, -203, 48, 94,109, 61,190,148,145,128,242,154,226, 25,127,144,197, 35, 99, 93, 60, -252, 2,220,167, 27,171,211,146,118, 40,159,170,114,148,174,201, 53,117, 65, 41, - 85, 41,182, 73, 29, 72, 69,224, 81,154,155, 3, 37,161, 67,228,104,194,116,213, -197, 13,106,176,154, 25,156,156,204, 0,198, 41,226,210,209,222,119, 64, 65, 21, - 38, 51, 80,184,252, 30, 94, 77,215,114,206,112, 14,221,107,243, 72, 28, 26, 38, -125, 9, 83, 16, 29,231, 44,252,151,248,134,244,225,116,148,173,196,113,126,203, - 36,220, 89,244,155,157,204, 73,115, 28, 46, 25,202,228,140,143,133, 94, 52, 71, - 66,244, 49, 28, 18,159,209,204, 96,129,148,176, 52,212,221, 21,137, 42, 62,145, -231, 2,146, 3,248, 52,228, 39,241, 22, 95, 72,179, 28,240, 97, 11,105, 20,186, -117, 35, 18,220, 41,205,141,144, 69, 42, 13,166,225,243,204, 16,191,184,126, 80, -244,180,112,124,133, 25, 70,241, 28,241,214, 54,161,248, 80,249,244,193,218, 42, - 89,150,196,221,125, 97,159,219, 69,180, 6,143, 8,219, 36,173, 20,196, 16,119, -139,156,145, 23,120,145,187,218,197, 38,206,200,147,136,212,163, 58,111, 25,222, -107, 34,140,112,156,124,186,206, 17, 71,140,164, 28,156,125, 3,219,164,132, 94, - 45, 37,249, 42, 50,153, 48, 94,164, 11, 85, 79,169,132,216, 81,161, 87, 35, 10, -134,143,247, 24,150,112, 81,225, 41,100,115,240, 93, 66, 53, 9,150,130,139, 62, - 36,130, 56,202, 15,238,167,147,192, 66, 28,101, 40,225,235,217,205,198, 24,135, - 82, 33,197,166,162, 32,235,101,187,100,220, 26,252, 15,153,110, 79,168,165, 16, - 45,158, 40,149, 16, 21,244, 48,212, 33,242, 38, 30, 5, 28, 17, 33,137,161, 84, -163, 33, 10,254,237, 13, 30,228, 45,140, 15,254,220, 97, 41,116,225, 17, 90, 81, -144,159, 17,176, 1,193,122, 69,183,194,230, 90, 65, 38,240,111, 7, 48,185, 32, - 42,156, 17, 21,107,172, 17,111,181,158, 5, 65, 86, 0,132, 52, 53, 55,176,230, -139, 56,177, 58,208, 37,187, 61, 54,108,158,166,175, 33, 28,173,129,208,194, 81, - 27, 89,172, 65,244, 96,221,157,198,191,148,211, 53, 65, 8, 85,212, 32,210,131, - 82,232,131, 53, 85, 69, 26, 4, 42,181, 9, 57,133, 65,176,140,105,201, 13, 20, -245, 66, 20, 32,140, 8,189, 87, 72, 41, 8,183, 4, 90,162,144,165, 29, 16,134, - 24,171,208, 49, 52,142,164,203, 6, 35, 32, 70,218, 14, 68,208,152,220, 73,174, -150, 10,192,182,254,144,124,133, 75, 66, 56, 37, 15, 11, 71, 56, 26, 26,190, 11, -225,220,195, 16,162,119,181, 0, 32, 24,241, 54,207,186, 47, 16, 59,137,189, 7, -186,228, 40,196,102, 65,118,245, 27, 0,129,186, 86, 55,240, 12, 42, 26,194,148, -128,255,126, 14,108, 7,105,201,167, 95, 52,119,210, 37,199, 78, 16,227,134, 51, - 19, 50,156,210,166, 72, 89,212, 41,229,226,163,161, 11, 97, 67, 26, 51,194, 24, -142,210,137,139,182, 70, 59,109,133,126,218, 68,207, 3, 92,186,110,112,210,138, - 34, 98,142,125,119, 34,246,187,152,238,167,231,179, 37,156, 89, 4,208,233,143, -221, 12,196,204,231,143,191,125, 42,174,215,245, 78,158, 78,169,247,175,234, 79, -167, 69,232,247,217, 59,113,224, 65, 26,104,157, 60,121,118,185,198, 60,172,175, -121, 88,228,203,104, 83, 47, 20,213,213,156, 28, 11,180, 93,153,220,233, 73,169, -194,187,180, 27, 0,166,227, 56, 98,119,234, 93, 0,149,251, 49,180,226, 79, 97, -223,193,187,253, 75,225,115, 60,150,142,234,215,224,138,116, 76,243, 91, 49, 62, -183,106, 12, 35,150,202,185, 32,234, 96,250,101, 93, 20, 75, 90,182, 95,177,102, -161,183,168,179, 3,114,225,214,206,125,131,217,250, 63,246, 78,192,181,192,199, - 36,120,231, 33,153,101,210,200, 55,169,249,180, 54,107, 31,193, 32,190,198,230, - 51, 48, 16,208,174,216, 78, 51,156, 86,175,192, 14, 40, 33,182,100,254, 26,165, -155, 41, 62,238,164,209,167,238, 19,117,148, 76, 96,161,136,114,130,255, 17,250, -255, 80,133,232,233,237,182,235, 96,110, 31, 99, 92,166,213, 22, 49,208, 28,216, -240, 16, 55, 78,176, 94,241,234, 9, 68, 87,201,187,255,116, 77, 93,146,160, 27, -203,112,222,117, 87,104, 10, 53,159,251,213,112, 50, 47, 31,173,141,107,240,133, - 68,237,186,173, 70,146, 35, 22, 71,198,198,142,217,193, 52,101,136, 13, 4, 78, - 16,201, 53,202,242,251,188, 69, 42,232,243,130, 72,138, 77,236, 64, 61, 38,178, - 49,144,144,191, 4, 81,122, 4, 58,228,185,163,195,174,150,190,248, 54,223, 20, -187,115, 20,255, 65,127,198,115, 67,194,201,144,128, 4, 72,180,226,246,218, 98, -152,214, 21,122, 99, 1, 60,139,141,196,122, 44, 63,232,132, 71,136,193, 66,193, -210,156, 1,157,242, 64,107,187,134, 90,195,242,240,141,143,253, 55, 20, 70, 3, -153, 2, 1,105,245,195, 1,226, 72,236,139,186, 34,176, 75,128, 90,130, 85, 23, -145, 8, 55,154,155, 73,199, 97, 78, 17, 98, 9, 55, 43,125,173,245, 85, 28,172, - 42, 18, 58, 18,151, 28, 93, 0, 19,158,245, 45,236,195,129,232, 81, 49, 71,183, -127,130,234, 24, 27,139,142, 7, 68, 69, 99,115,236, 92, 88, 33,127, 84,134, 34, -227, 77,220,163, 57, 28,101,157, 42,148, 42,237,141, 21,165,107,192,139,229,231, -156,244,214,240,195,112,156,132,166,132,173, 10,100, 69, 43, 47, 28,153,217,131, -159,251, 72,107, 51, 79,200, 27,160, 51,116, 83, 4, 22, 20,238,137, 90, 79,146, -191,104, 26, 98,125, 86, 91, 54,231, 71, 82, 36,217, 76, 68,172, 40,197,188, 84, -250, 30, 82,230,142,142,117, 84, 44, 23, 8,176,161, 80,128, 21, 69, 42,138, 7, - 88, 65, 34, 49,209,159,186, 42, 17,224, 42,117, 76, 73,168,131, 21,160,122,152, - 39,252,133,199,149, 38,119,105,122,161,142, 96,231,204, 26, 8, 69, 22,219, 29, - 69, 66,148,147, 3,162,234,236,193,189,128, 31,211,174,120, 83, 92, 65,250, 83, -234, 67,227,171,255,232, 65, 70, 0, 13,107, 10,233,174,234, 87,193, 99, 82,113, -195,129,201,182,185,150,160, 76, 8,178,198,230,100,218, 56,203,247,101,232, 90, - 16, 2,169,248,129,124,160, 14, 75, 13,120, 91, 50, 52, 56, 18, 53, 20,231, 17, -179,159, 56,106, 24,241, 18, 41,166,112,111,253, 53, 12,247,130, 93,157, 80, 10, -251,105, 40, 72, 43, 8,232,118, 75,186,172,242,191, 49, 37,147,188,114, 66, 84, - 27, 21, 53, 64, 59,114,192, 41, 36, 50,135,255,143,251, 54, 88,102,137,167, 92, - 74,155,108,246,103,159, 73,238, 6,114,197,139,193, 52, 14, 95, 65,174, 71,180, - 72, 0, 27, 31,114, 41, 75,170, 58,103,197,124,135,188, 71,214,146,146,167,224, - 77,138, 66, 84, 4, 66,107,200,163, 31,164, 30, 53,177, 10, 7,100,117, 61, 55, -174, 64,127, 25, 74,137,138,115,153,202,222,220, 33,235, 16, 4, 39,208,111, 86, - 2,109, 68, 4,222,112, 84, 67, 77, 10,125,120,180, 42, 36, 10, 96,229,225,216, - 44,125, 53,189, 15,163,140, 13,129,220, 26,235,119, 32,160,179,175, 20,117, 12, -201,132, 19,195,133,184,172, 47,190, 19,212,133,208, 39, 13,142,160, 54,214, 47, - 66,145,181, 10, 78,233,121,246,200,144,248,206, 31,162, 56, 13, 45,234,254, 48, - 68, 34, 74,154,117, 84, 37,140, 33, 13,236, 43, 74,196,181, 65, 59, 67, 25,150, - 7,227,232,143,203,217,117,218,212,167,113, 6,100,253,125,167, 91, 23,131,239, - 74, 43,156, 72,221, 36,151,198, 72, 41,156, 61,133,238,136, 48,224,105,183, 5, -117, 15,152,105, 4,245, 29, 69, 75,105,201,173,196, 70, 20,145,165,130,184,192, -118,201,191,148, 3,152, 34, 82, 96,157,163, 55,255, 9, 28,227, 90, 68,222, 59, -234, 99,108,119, 72, 49, 58, 12, 1,140, 73,207,213,239, 65,167, 41, 5,117,193, -193, 82, 24,213,182, 97,118,207, 3,170, 61, 33,112, 75, 5, 58, 12, 55, 10, 4, - 64,231,108,132, 11, 37,144,249,107,104, 50,102,110, 8,110, 20,199,239,144,101, -161, 98,189, 80,151, 53,134,222, 46,170,231,239,208, 12,132,191, 70, 45,182,104, -144,234, 57, 72,117,192,110, 67,255,149,210,202,135,113,170, 66, 36, 83,221,188, -230,228,232,220, 42, 82, 30, 15, 14,204,184, 40, 34,182, 22, 77,111, 1,221,194, -164, 6,136,231,175, 77,152,184,214, 58,126,188,186,174,214,196,140, 94, 41, 52, -182,206,250,242, 55,134,114,217, 88,138, 68,205,104,151,108,189,197,247,230,137, - 4,199, 50, 63, 9,123,121, 19,239,163,139, 19, 65,223, 16, 11,149,242,137,186, -117,140,133,203, 0,157, 76, 19, 34,195, 27,228,184,180,212,145, 66, 67,227,106, -100,227,116, 64, 96, 38, 71,119,153, 8, 77,177, 67,179,238, 21,151, 44,169,204, - 9,210,120,130,179,168,140, 42, 0,201,228,166, 30,112,224,236,237,167,136, 39, -131,196,135, 93, 97, 57,186,162,174, 95,243,193,133, 12, 8,161,164,231, 38,243, -238,175, 3,131, 39, 48, 37,128,160,134,130, 61, 3,131, 5, 4, 43,102,199,196, -252,115, 61,189,179,109, 26,238, 73,191,126,160, 65,214, 27,179,103, 88, 18, 96, - 79,130,173, 23,236, 79,120,179, 46,165,115,253,111, 17,131, 30,137, 82, 11,186, -146,251,138,114,146, 74,208,220,206, 5,231, 51,102,234,102,225,156,205,130,175, - 79,151, 7, 25, 92,154,208,124,150, 40,124, 32,121,179,168,113, 73,198, 47,131, -234,172, 80,191, 71, 31, 14,216,101, 82,238,144,168,174, 45, 48,183, 69, 49,154, -192, 26,155, 21, 5, 51, 22,212, 33, 19,167,218,169, 96,176,237,190,199, 65,118, -165, 83,230,227,218, 86,135, 56,151, 1, 62, 33,185, 17,172,107,127,181,226,117, -156,155,241,111, 85, 87, 16,189, 96, 63,201,101, 60,185,106,247,241,211,203,216, -157,188,186,140, 42,159,172, 4,211, 1,222,254,104,150,155, 82, 7,145,132, 21, - 63,187,149,254,203, 32,230,251, 51, 5,137, 47,129,156,172,236,198,143,120, 37, -165, 94,135,208, 18,222, 97,180, 54,136, 91, 1, 8,122,194, 36, 0, 97,218,169, -248,191,227, 54,196, 82,183,219, 68, 73, 74, 65,219,219,254, 91, 54,225,160, 94, -182, 30,202, 70,138,229,114,221, 19,106, 14,190,103, 29, 68,125,166, 84, 68,229, - 17,169, 74,162,152, 79,248,252,227,126,155,230,252, 57,255,199,253,106,169, 12, - 52, 10, 77,132,230, 54, 74, 80,230,185, 19, 59,225,233,151, 0, 64,165,228,159, -192, 66,134,147, 62,126,207,166,130,157, 32,235,192, 68,136,187, 96, 80,105,130, -141,230, 16,173, 41,232,243, 70,137, 76, 56,143, 85,148, 75, 83,242,215, 4, 51, -108,212, 18, 72,118,213,155, 53, 85, 21,112,183, 32, 90,175,204,252, 63, 90,112, - 11, 31, 74, 90, 2,230,209, 57, 32,115,253,124,174,203,105,145,229,114, 69, 32, - 23,150,243,101,102,232,171,216,196, 9,184,190,140,170,229,175,170,231, 59,119, -234,161, 57,163,161,199,114,155, 99, 84,225, 7, 86,246,243, 27,153, 91, 23, 45, -150,188,214, 72,158,141, 2,102,151,106, 15, 90,225,148, 9,193,113, 9,142,168, -165,112, 99,230,200, 26,145,177,185,115, 5, 54, 81,190,141,227, 71,177, 87, 13, - 30,130, 56,232, 93, 1, 90, 90, 69,144,118,123, 34,125, 31,140,157, 18, 22,165, - 15, 62,145,240,107,112,235,218,138,254, 38,139,233,236, 2,141,185,141,217, 38, - 37,232,210,149,162,221,148,237, 90, 25,186, 11, 78, 37,202,222,204, 98,151, 13, - 88, 60, 8, 69, 64,188,103, 26,160, 58,170, 98,225, 73,215,155,143,224, 60, 29, -212,175,208, 78,236,243, 0, 31,246, 83,128,249,228,195,216,225,152,214,154, 72, - 3, 51,228,154,122, 98,143,170,206,185,205, 34, 75, 11,107, 84, 23,189,130,217, - 86, 42,189,118, 98,212,194,185, 43, 48,179,171, 43, 77,177,136,191,156,107,152, - 37, 16,213,146,250,175,227,219,255,153, 97,246,121,128,183,252, 88,178, 66,254, - 64, 15,127,108,114, 17,231,192, 48,104, 34,185, 17,241,115,148,132,133,221,143, - 23, 47, 88, 73,117, 31, 66,167, 24,154, 53, 52,115, 82,196,252,215,251,226,134, -152,241,141, 1, 0, 82,216, 49, 29,163,224, 65,183,104,139,225,174, 39, 11,189, -125,104,221, 55,202, 17,114,100, 45,240,151, 35, 49,122,182,162,184,205,249, 47, -145,191, 76,107, 8,238, 61, 88, 97, 97, 69,220, 17,128, 88,198,242, 29, 76,208, -229, 16, 46, 93, 34, 2,163,250,169, 56,225,117,131,203,144,239, 62,145,129, 34, - 30,197,128,167,218,222, 38, 24,170, 2,224,249,205, 75,165,150, 83,160,187, 77, -115, 68, 89, 60, 91,176,150,173, 31, 1,115,107,171,197,138, 45, 56,140,110,100, - 81, 67, 25,229,223, 37,179,104,108,103, 91,178,107,246,165, 43,186, 97, 85,176, -126,217,137, 24, 92, 80,140,240,178,168, 17,184, 85,232,254,199,204,127,183, 76, - 58,225,166,178,179,128, 63,205, 84,131,199, 71, 83,221, 57, 83, 22,248, 68,116, -239, 89,211,116, 75, 63, 68,106, 90,128,203, 72,174,188,217,127,105,229,135,178, - 62, 28, 49, 58,122,222, 44,198, 78,206, 38, 41, 79, 19,109,210, 22, 81,226,190, - 14,164, 80, 32, 19,225, 20,132,255,240,133,113, 41, 76,249, 72,227,164,191, 27, -185, 4,118,105,204, 33,234, 17, 47,171,130,173, 81, 21,225,193,128, 80,132, 1, -225,248,123,154,161, 96, 2, 63,209,123, 82, 52,147,164,131,172, 11,102,253, 55, -129, 3, 98, 53,101,132, 87,246,139, 9,210, 10,167, 67, 19, 86,169, 95, 18,106, -164,146,144, 64,228,228, 56,229,141,102, 98, 28, 40, 69,100, 52,228,100, 20,182, -130, 69,148, 25,132,250,103,192, 95, 73,201, 39,136,108,112,147,170,167,100, 5, -126,107, 24,131,149, 42,115,210, 85, 27, 3, 57, 0,112,111,242,179,217, 3,150, - 78, 22,127,114,190,178,158,239,242,188,234,230,140,248, 48, 16,101,182,142,150, -193,170, 75,134,230, 92,230, 86,195,219,228,167,204,180, 92, 86, 52,167,228,111, -102, 53, 79, 87,165,111,215,148, 14, 71,139,249,107,174, 81,147,179, 83,172,128, -106,251,216,213,125, 43,214,106,242,192,170,110,206, 33,115, 85,224,223, 43,154, - 62,115,174,216,160,134,174,171,115,106, 16, 48,129, 69,253,181,156,157,125,236, - 39,227,140, 17,178,103,127,231,184, 95, 71,163,233, 6, 83,220,103,229,242, 77, -188, 47,158, 96, 46, 80, 43,162,167, 53,104,247, 25, 35, 64,172,212,224, 65,235, -171, 38,179, 29,155,172, 24,132, 49,151,102,211, 97,146,137,163, 64,116,133,184, -204,194,160,243, 80, 3,226,134, 98,182,216, 78,127,241,224,142,209,130, 20, 57, -151, 81,141, 45,114,235,136,214,212,205,167,114, 25, 74, 62, 92,171,226, 34,179, -233,136,202, 34, 1,165, 21, 16,201,216,174, 81,155,213,243,246,148,233, 17, 36, - 94,128,128, 27,105, 17, 58, 95,154,106,212, 17,211,230,253,196,183, 88,142, 48, -252, 59,104, 8, 48,216,187, 4,241,232,242, 24,202,208, 69,193, 58,124,147,104, -189,115, 32,137, 78, 42,193, 39, 75,209, 21, 0,202, 82,228, 2, 70,195,223,100, - 88, 30, 41,184,234, 11,168, 36, 20,227, 73,230, 31,112,170,132,152, 23,116, 41, -204,248, 95,178,248,220,224, 63, 43, 46, 54, 69,109,113, 38,185, 29,217, 51,139, -178, 43,253, 97, 90, 29, 6,225,184,202,192,172, 88,217, 81, 98,201,186, 64,156, - 10,195,229,247,143,194,219,223, 69,250, 32, 29,255, 64, 40, 54,105,125, 74, 55, -151, 44,126, 92,219, 43,199,158,141,129,203, 55,186,130,169,218,232, 41,200, 44, -207, 97, 98,148,117,149, 76,243, 71, 86,253, 38,213,187,151, 47, 85,185,242, 97, - 43, 88, 65,153,151, 12,180,132, 58, 94, 68, 76,206,102, 33, 65,103, 47,126,244, - 42, 14,206, 72,240, 82,189,237, 37, 40,147,229,158,167, 76, 21,209, 98, 46, 91, -173,147,149,135, 51, 33,204,101, 54, 21, 16,205, 1,250, 6,225,187, 57,118,226, -248, 68,109, 96,233,154,205, 88, 3,128, 11, 84, 84,100,106,203,166, 99, 7,232, -138,227,215,217,214, 89,247, 96,193,116,230,127,126,166,209,202, 96, 20,132, 1, - 82, 35,114, 29, 34,157, 62,117,224,114, 21, 28, 70,138,188,192,224, 26,182, 68, -142, 58, 3,155, 18, 17, 96, 61,214,238, 36,150,162,183,135, 27, 12,144,105,181, -212,126,136,104, 0, 37,210,234, 78,152,175, 49, 48, 93, 37,188, 40, 16, 56,132, - 72, 93, 53,204, 70,159,252, 24, 73, 12, 85, 17, 28, 85,173,220,232,192, 16, 39, -210,111,129, 93,132, 99,222, 25, 17,236, 23,254,116,167,230, 35, 72, 14,186,230, -178,158,171,225, 21, 40,229,191,125,168, 42,207,145,168, 41,214,248,128,252, 8, -147,227, 75,154, 51,184, 51,143, 13, 55, 28, 72, 71,122,101, 66, 67,214, 30,188, -252, 40,212,237,241, 38, 28,173, 2, 25,198,219,119,213, 3,241,139,206,162,228, -170,236, 83,216, 35,133,232,217,225,165,200,147,216, 96,255, 94,160,206,188, 48, -159, 74,138, 16,120,121,208,243, 45,117, 53, 58,156, 32,176, 77,216, 4, 91,199, -162, 13,160,175, 22,178,126, 7, 87,218,233,151,215,176, 37, 83, 80, 98,111,200, -165, 94,154,173,163,130,225, 39,170, 80,157, 9,144,135,253, 59,175, 93,245, 33, - 65, 54,190, 17, 0, 3,107,111, 64,213,232,212, 85, 23,105, 13, 79, 22,202, 21, - 96,173,236, 31,155, 9, 80,209, 42, 47,176, 59,207,195,231, 31,206,119,177,177, -254,212,194, 67,165, 98,250, 54, 97, 49,113,202,200,135,199,115, 83,233, 51, 8, - 45, 55,105,241,139,151,119, 83, 81, 20, 68,135,247,193, 77,133, 24, 30, 41, 15, - 58,188,142, 49,207, 81, 15, 99,151, 80,255,151, 5, 29,167, 73,145,195, 70, 36, -186, 63,243,154,245,254,245,160, 41,198,251, 70,144, 16,252, 52, 4, 68,187, 51, -117, 36, 33, 21,110,204,148, 38, 17,150, 47, 43,221, 5,249,199,191, 75,154,214, - 60, 15, 18, 51,141,223,186,160,121, 52,239, 85, 51,237,176,192,180,254,156, 72, - 92,175, 81,113, 15, 17,117, 50,200,126,190,186, 65, 17,185, 98, 96,100,128, 22, - 13, 9,201, 15, 79,155,196, 58,226, 10,119, 16, 13,250,214,215,166,213, 66,153, -166,187,207,220, 73,135,156, 37, 49,246,244,200, 93,143,254, 50, 3,130,207,213, -141, 83, 8,109, 52, 32,100,104,125, 84, 65,174,244, 60,186,104, 6, 88, 5,107, - 11,208,129, 68,158, 76,116, 16, 55, 89, 40,201,241,195, 17, 68, 32,248, 91,253, -156,192, 34, 97,143,110,114, 41,158,202,189,172,118, 80,229,199, 2,114, 59,170, -170,236, 38, 16,131, 96,207,178, 18,173, 71, 9,207,167,128,165,114,186,241, 59, - 68, 73, 75, 20,176, 90, 58, 19,177,215, 56,208, 31,204,183, 41,125,124, 30,154, -213,229,170,137, 3,113, 58,222, 63, 11,175,201, 83,158,158,132,138, 77,137,110, -102,153, 22,101, 21, 55, 87, 12,100, 26,245, 47, 22, 59, 21, 67, 19,198, 36, 23, - 67, 24,244, 64,166,146, 17,152,248,162,149,220,125,231,235, 53,125,215,204,236, - 82,209, 53, 92,189,154,161,132, 53,106, 97,238,173,213, 76,251, 9,178,148,166, -183, 88,253, 48, 1, 69,195, 9,161,154,128,242, 41,135, 81, 6,175,186, 20,152, -255, 28,134, 15,160, 9,142, 47,232, 69, 16, 15,194, 67, 72,252,112,215,224,104, -224,144, 28,249,163, 7, 63, 2,213,216,124, 1,203,238,117,104,144,251,176,226, -230,140, 3, 60,109,126, 98,221,219,110, 92,179,123,128,194,123,131, 31,120,102, -146,117, 83,134,122,233, 29, 20,238,240, 46,226,195,186,242,208,186, 80,132,221, - 7,255, 61,229,102,144,116,131,145,143, 29, 4, 62,218, 33,221,243,110,166,245, -184,132,227,207,226,106, 79,255, 23,108, 4,148, 69, 66,218, 78,255, 29,186, 28, -242,230,216, 16,176,221, 53, 51,253,164,161, 56, 14,170, 51,138,217,181, 10, 92, -106,115, 47, 45, 43,194, 17,228,129,107, 62, 68, 56,144, 13, 43, 6, 98, 32,213, - 44, 74,115,213,121,168,247, 87, 90,170, 5, 84,214,159, 51, 87,199, 88,121, 66, - 70,219, 7,119, 50,146, 55,125, 10, 34, 6, 89, 35, 5,141, 74, 95, 90,147,114, - 64,229,193,127,222,209,209, 41, 23,169,162,215, 56, 40,251,118,146,126,211, 98, -252,115,147, 17,112,236, 78, 34,181, 51, 3, 67, 47, 32,121,115,117,104, 71,116, -139,205, 47, 24, 8, 10, 54, 23,227,187,244, 84,101,212, 35, 35, 39,223,171, 24, -162,233,227,101, 93,253, 12, 97,159, 31, 99,217,201, 86,109,114,195, 52,241,178, -179,169, 10,227,115,232, 35,206, 56, 85,208,150,252,114, 25, 8, 14,174, 91, 73, - 92, 50,130,206, 72,239,238, 75,120,241, 52,156, 84, 50, 24,248,101,189, 43, 17, - 72,133, 83,213,135,168,200, 70,204, 0, 19, 83,233, 89, 58, 96,154, 37,227, 85, - 3, 7,142, 0,208, 75, 96,191,181, 20,236,241,198, 15,251,102, 31,106,127,196, - 63, 40,143,239,145, 70,189,238, 65, 42,150, 35, 12,154, 96,234,144,252, 44, 58, - 85,152,223,145,201, 4,254, 95, 3,117,183,147, 95, 5, 31,226,225,110,149,173, -136,181, 8,144,187,248,135,150,101,120, 76, 64,203, 1, 1, 5,114,141, 6, 51, -200,106,248, 63,193,180,112,214,103, 92, 63,163, 52,143,243,213,249,139,228, 24, - 43, 18,149,249,161,215, 96,186,206,154,203,177,128,205, 97, 9, 64, 27,212, 84, - 55,155,129, 35, 92, 88, 3,153,221, 82,203,206,131,219, 37,232,158,193,238, 35, -194,202, 88,112,154, 33, 3,241,136,176,223, 99, 2,211,146,160,231, 28, 10,164, - 84,215, 26, 74,210,117,119,174,208,174,248, 81,133,217,229, 21,223, 75,125,170, -202,138,127,141,100,116, 65, 9, 54,219,193,152,177,138, 2,160, 94,122,203,147, -247,143,217, 77,229,210,226,194,113,204,170,223, 23, 54,150, 16, 44, 78,186, 54, -223,227,162, 84,157, 88,248,219,226,119,226, 68,210, 97,188,212,245,236,124, 49, - 98,174, 42, 56,138,223,190,205,196,229, 62,211,242,216,201,100,100, 7, 68, 21, - 83,251, 65,184,167, 78, 98,128,154, 35,173,203, 56,108,155,105,104, 3,100,220, -117,115,128,129,119,211, 89, 82,180,165, 85,208,254, 18,248,205,132, 52,145, 74, - 63,174,169, 23,121, 31,251,191,120, 90, 43,209,247,167,225, 60,205,172,108,136, -146,159,191,185,175, 34,160,204,241,250,137,104,127, 60,210, 21, 50, 13,253, 1, - 9,183,194,251, 0, 28, 36,195,222, 59,173,243,156,158, 92,163, 93, 16,194,182, - 22, 28,130, 42,210,201, 30,107, 59,204, 62,213, 74,116, 45, 74,107,225,217,248, - 81,126,146,205,220,128,233, 55,179,122,131,255,224,177,123,230,134, 58,243, 66, -174, 14, 24,247,231,149,213, 63,224,172,150,104,255,220,252, 92, 32, 13,127, 69, -211, 49, 36, 74,112,206, 97, 70,230,149, 8,211,250,240, 64, 25,213,242,211, 18, -228,103,193,225,230, 50,195, 22,167,222,135,166,118, 16, 47,254, 69,106, 46,210, -120, 72, 36, 31,226,215,120, 47,105,234,218, 25, 97, 14,138, 53,247,170,125,120, -255,211,187,180,251,178,187,195, 96, 75, 27,243,118, 36,131,183,119,230,245,216, - 40,171, 96,139, 20,102, 30,113,231, 29,140,118,182, 61, 82,178, 32,137, 88, 82, -209, 73, 14,112,206,234,110,191,149,211, 91, 95,208, 90,191, 43,230, 35, 7,200, -109, 32, 3, 74,164, 93, 52, 19, 38, 92,210,160, 17, 39,130,169,227, 33, 64,166, -228,252,128, 43,193, 80, 62, 94, 24,158, 29,196,243,192,212,157, 48, 24,140, 13, -251,175, 98,193, 96, 91,126, 11, 91,110,202, 31, 95,114, 48,156,108, 23, 98,141, -134, 6, 65, 61,146, 18, 57,108,185, 68,225,216, 18, 45,110, 49, 44,151, 51, 28, -136,213, 31,169,205, 64,129, 93,100, 15, 84, 75,201,138,114, 25,139, 1, 8,117, - 88,126, 23,120,202,191,120, 46,127, 16,117, 56,167,128,149, 75,213, 4,150,160, - 92,176,187,148, 75,142, 9,255,101, 52, 82,193,203,173,190, 90,142,222,147, 75, -127,211,190,201, 91,175,148,114,120,176,243, 61, 29, 71,227,216, 88,247,100, 33, -255,213, 82,125,102,219,195, 18, 88,122, 10,167, 70, 61,126, 47,117,221,225, 30, - 40, 45, 81, 20, 16, 47, 64, 21,111, 30, 20, 78,165,165,250, 14,173, 86, 82,182, - 56, 54,223,154,221,119,231,103,157,119, 74,254, 88,112,221, 86,135,124, 61, 98, - 95, 81,197, 85,232, 65,237, 99,229, 94, 8, 84,215,221, 10, 30, 87,210, 11, 96, - 61,146,161,216, 9,216, 12,217,106,111, 81, 0, 17, 64,206,195, 72,252, 32, 15, -164, 71, 37,131,194,153, 21,194, 22, 99,189,189, 14, 38, 47,148, 8, 29,254, 88, -129,197,105, 54,222, 58,152,221,142,131,136, 71,126,118,129, 3, 63, 11,217,204, -209, 72, 83,199, 92,147, 11, 0,131,159,193,172,183, 35,118,153,181,240,119,236, - 27, 33,112,217,146, 60,114,251,173,120,145, 42,243,204, 87, 28, 42, 77,172, 49, -218, 95,151, 16, 87,215,252, 26,195, 20,231, 23, 61,245,233, 37,102,145, 74,111, -107, 16, 53, 56,154,128,104,107, 52,195,169,152,184, 64,216,140,137,104, 43,201, -252,241,163,180,128,162, 69,203,193, 60,196, 32, 99, 27, 87,137,209,230,186,104, - 20,122,240, 85,194,236,171, 50, 29,224,107, 18, 6,186,204, 38, 12, 69,200,170, -239,236, 28,152, 20,231, 22, 24,198,188,100, 7, 53,218, 16,221, 32, 78, 57, 89, -189,216, 61, 28,248,171, 37,185,153, 58,202,195,204, 98, 86,217,177, 3,254, 16, -149,168, 21, 48,149,221,251,106,207,231, 3, 24,192, 88, 12, 80, 93, 30,149, 27, - 89,238,175,166, 13,104,123,242, 32, 48, 23,233,177, 27,124,235,235,244,111, 70, -137,183, 54,152,189, 46,123,227,221,217, 18, 72,142,227, 25,233,135, 71, 19, 43, - 83, 3,105,156, 92, 66, 55, 56,163, 40,108, 52, 63,120,251, 6, 47,247, 11,192, - 77, 26,140,156,246, 13,154, 72,252,205, 54, 31, 1,151,232, 25,170,123,203,252, - 85,157,162,190, 75,206,146, 65, 13,230, 39,119,171,184,177, 36,102, 52,184,134, -135, 68,194, 4,249, 70,109, 94, 9,181,193, 49,219, 91, 73,205,163, 12,230, 19, - 65, 61,126,114,158, 93,246,208,231, 94,239,122,107, 87,161, 15,253,204, 14, 19, - 40,161,134, 93,185, 63, 36, 90,132,138,245, 19, 22, 15, 46, 23, 65, 92, 75, 19, -191, 0,127,252, 35,229, 72,191, 92, 3, 17,143,238,180,159,222,182, 99,112, 94, -117,213, 48, 8,229,248,226,232, 4,209, 9,223,147,224,151,223, 68,139,214, 33, -127,171,189,168,191,136, 53,102,113,239, 68,199,123, 76, 10,111,147, 6, 88,193, - 20,244,233,205, 81, 14, 83,248,114, 31, 87, 21,242, 84, 22,126,248,103, 19,212, - 63, 92,112,238,246,118,217,254,167, 30,211,206, 39, 6,206,168,169,100, 35, 45, -242,166,202, 87, 72,197,202, 62,217,144, 50,107,242,156,199, 32,204,176,123,111, -120,228,167,126,255,169, 45,255,121,141,176,227, 52,109, 19,106,215,139, 1,137, -193, 61, 47,166,104,120, 92,135, 9, 36, 69,176,194, 34,136,161,159,133,205,212, -149,140,104,238, 76,178, 41,208,185,194, 54,180,126, 3,167, 76,105, 81,153,241, - 34, 41, 12,141, 27,107, 98, 71, 34,209,213, 22, 32,181, 12, 23,231, 64, 34, 58, - 37,130,254,224,203,125,166,226,194,232,163, 11,133, 25, 27, 25,151,138,101, 66, - 21,171,129, 48, 72, 61,178, 21, 13, 66, 40, 14,142,215,116, 32,191, 31,206, 9, -156,117, 68, 17, 92, 92,169, 44, 75,130,160,205,120,178, 68,217, 5,129,191, 6, - 56,113, 18,183,123,244,111,230,146, 3,158, 23,109,240, 5,145,118,195,114,137, - 65, 28, 17,173,227,159,148, 34,247,168, 75,132,245, 73, 18, 19,116,230,246,227, - 15,199,100,139,205, 32, 22, 24, 10, 87,179, 77,202, 9,208,215,183, 41, 19, 36, -238, 65, 41,156, 85,160, 69,241,178,206, 63,210,156,178,214,200, 93,231,244,154, - 4,106,110,228, 99, 93,248,203, 27,106,118,227, 26, 27,155,213,197, 74,123,180, -143, 49,144, 42, 7,180,192,214,207,190, 83, 99,230,216,224,176, 62, 85,103,139, -213,170,168, 59,175,218, 5, 96,166,128,146, 5,200,143,189, 72, 59, 78,220, 96, -167,166, 7,117,189,163, 98, 79, 68, 89, 93, 72,198, 62, 76, 2,157,196,140, 72, -227,119, 97, 49,122,220,105, 37,122,205,201,162, 40,205, 67, 81,157, 98, 60,150, -228,252,142, 64, 76, 77, 37,162, 8, 54,140, 61, 29, 76,213, 22, 85,220,180, 41, - 51,205,241,151,228,113,204, 89,252,176, 51,134,179, 29,120,219,192,114, 85, 49, - 69, 91, 14,184,182, 73,157, 58,209,209, 11, 40, 52, 21, 79,134, 63,233,142,165, -219, 98,160, 4,214, 11,155, 31,167, 57, 60,137,154,142,210, 13,107,190, 7, 32, - 64, 66, 2, 78,214,145,239, 26,247,178, 43,222, 53, 96, 28,214,225, 0, 55,137, -181, 48,226,235, 82,104,118, 0,232,180,167,140,136, 52, 1, 28, 79,242,155,116, -240,177,104, 92,214,234, 81, 98, 35,144,242, 64, 81,162, 36,104,196,112, 57,116, -209,163, 52, 90,169, 73, 74,225,105, 58,218, 76, 73,184,234,196, 62, 63, 70,169, - 3,234, 8,144,217,127,132,206, 95,198,249, 93, 54,121,134, 83, 71, 98,252, 23, - 75,205, 77,240,223, 47,230,138,161,248,138, 30,241,150,108,156, 57, 49, 70,136, -231, 54,137, 6,204,142, 20,122,245,226, 6,215, 35,186,210, 93, 40,141, 62, 51, - 76,217, 20, 52,224, 32, 8,130,104,158,196,167, 32, 51,196,138, 87,234, 87, 47, - 1,195,235, 54,137,134,189,226,146,226,208,161, 34, 61,102, 97,190,122, 48, 43, -141,131, 68, 81,134,145, 83,224,110, 35,209, 89, 37, 67,189,210, 60,115,156,134, -181,108, 70, 11, 21, 14,114, 85,209, 20,254, 18,116,102, 41,127,241,103, 41, 13, -145, 44,187,148,211,245, 31,188,168,134,246, 60,218,190,180,245,221,109, 21, 23, - 13, 71,144,180,151,117, 54,113, 4,196,158, 0, 70,229, 29, 40,138,193,135,245, -128, 98,224,120, 26, 59,114,198,232,251, 32,206,166, 9,139, 15, 55, 43, 77,159, -167, 73,207,198,106,163,108, 18, 52,201, 86,135,225,181,138,192, 4, 38, 42, 18, - 71,224, 93,134, 53,253, 73,139, 93, 25, 9, 98,115,196, 4,224, 45, 39,208, 74, - 24,123, 10,212,127, 16,111,194,172,128, 65,205,199, 91, 91,131,212, 65,232,199, - 90, 33, 47, 56,127,211,212, 12,145,166,232,247,163,152, 81,202,207,223,254,147, -111,141,208,172, 65,211,133, 11,110, 19, 18, 46,243, 86,159, 40, 90, 32, 54, 35, - 2,223,161,206,188, 11, 57, 46,105, 26,165, 17,124,108,247,186,218,165, 73,107, -188,254,172,223,168,143,112, 33,172, 77,166,175, 37, 88,187, 9,236,161,169,145, -181, 5, 71, 45,145, 89, 16,105, 36,232,218, 51,215, 44,233,112,250,182,166,154, - 41, 0,245,134,133,165,135,149,246,240,112, 3, 13, 5, 48,188,121, 22, 26,143, - 69,181, 49,217,188, 16,120, 86, 16, 52,168,226,110,179,201, 37, 82, 44,240, 56, - 43, 53,129, 66, 62,105,104, 79, 75, 56, 75,134, 53, 56,121, 4,250, 93,142, 75, -197, 65,125, 95, 67,244,236,166, 18, 14,255,250,151,120,213, 44,105, 27, 67, 15, - 83,106,237,125,120,211, 98, 94, 49, 96, 98,188,136,226,220, 51, 88, 50,220,150, -115, 86,220,185,188,121, 22,230,234,220,197,114,146, 66,137,155, 81, 21, 49, 6, -124,241, 92, 13,248,124, 86, 18,175,111,116,112,102,149, 17, 12, 28, 7,193, 22, - 9, 18, 35,144,195,149, 12, 62, 92,240, 28, 61,137,240,228, 69, 4, 88,205,102, -118,251, 22,198,242, 28, 72,220,196,195, 1,162,110, 29,104,118,118,253,214,210, -112,112,102,166,143,153, 99,231,131,234,197, 19,120, 46, 24,155, 32, 84, 18,249, - 92,109,202,189, 23, 39, 46,209,148,105,174, 21,103, 34, 72,134,120,193,139,168, -237,186,213,204, 80,252, 93,110, 44,102,137, 37,189, 77,151, 44,138, 92,200, 78, -161,218, 70,157,145,184,136, 19, 22, 94, 34, 37, 4,230, 96,226,134, 75, 3, 10, -224, 86, 8, 38, 64, 33,102, 61, 26,186, 12, 1, 58,189,196, 26,116, 0,210, 48, -240,207,219, 50,197, 23, 60,223, 21,205, 68, 39,195,175, 76,240,109,221,196,216, -154,160,128,168, 83,152, 14, 93,209, 66,133, 56,107,224, 66,104,224,213,133, 84, - 84,247, 76,201,176,108,247, 27, 24,125,121,219, 27, 19, 67, 44, 70,140, 87, 99, -137,136,228,152,159,106,145,127,215,133,206, 20, 94, 27,109,177,150, 96,154, 61, -118,129, 71,229, 9,133,118,208, 81, 15, 89,151,107, 69, 4, 59, 91, 47,166,129, -104,214, 93,159,244, 27, 18, 70, 95, 16,161,174, 34,109, 7,146,132,100, 89,218, -106, 96, 43, 19, 61,144, 37, 70,122,109, 64, 69,125,219,134,172, 78,217,161, 24, -136, 16,250,113,195,192,196,224,153,118,105,214, 83, 59,137, 10, 78,102,199, 48, -128, 2,243,192, 64, 36, 29,196,105, 53,178,148,165,175,236, 74,195,194,250, 63, - 40,126,156,242,104, 12, 0,140, 90, 73, 78,187,161, 95,218,135, 52, 86,232,117, - 29,225,239,213,157,203, 77,143,117,193,102,133,121,239,133,188, 75, 51,165,215, -227, 84,114,129, 67, 93, 79,172,226,215, 34,197, 19, 93,247, 41, 51,100, 44, 78, -148,113,226,105, 71, 0,202, 59,139,113, 57,129,195,203, 83,231, 12,204, 96, 22, -108,136, 41, 85,117,240,222,243,142, 27,103,243,225, 62, 51,118, 81,192,117,227, - 86,214,225, 62, 68,177, 56, 12, 62,190, 72, 36,126, 79,224, 75,204, 89,210,139, -108,201, 52, 54,172,219, 46, 29,168,164,207, 99,226,235,114,209,235, 31,227,225, - 10,178,191, 89, 73, 41,228, 32,162,188, 34, 95,146,130,131,184,173, 6,182,111, - 51, 49,132,130,201, 7, 93, 76,138, 64,192,230,162,166, 43,145, 9,250,184, 69, -191, 43,240, 58,241, 61,213, 76,252, 73, 27,117,137, 83,138,108, 11,250,151, 86, - 16, 17,100, 50,247,162,161,163,160,203,110, 94,135, 17,187,230, 27,235,202,226, - 57,209, 6,114,242,103,105, 97, 58,163,203,228, 44, 45, 98, 88,140, 23,133, 4, -132,251, 54,217,208,189, 17, 10,117,245,239,170, 82, 9,191,130,181,246,176, 29, - 82,147, 4, 13, 0,254, 31,155, 45,110,192,253,133,241,230, 60,106, 27,247,134, - 56,156, 82,242, 17, 53, 87, 78, 77,147,180,142,144, 88, 65, 36,118,229, 52, 94, -183,116,181, 22, 71,213,198, 47,247,251, 79,222, 91,126, 9, 9,135,176,194,189, -164, 38, 18,253, 81, 61,249, 99,195, 9, 68,242,208,207,206,192,190, 1, 8, 64, -154, 75,220,241, 70,235, 34,145, 36, 64, 10,215,232,119, 82,250, 84, 29,204,100, - 72,175, 8, 79,255, 7,173, 9, 18, 68, 36,200, 91, 45, 37, 49,119,183,100, 76, - 75, 60,169,135, 69, 78,140,168,168,213,232,142,229, 83,203,158, 12, 43,168,127, - 83,110, 66, 28,145, 49, 3,226, 36, 56, 25,106,113,144,241,176,166, 2, 41, 44, - 81,195,142,234, 72, 74,253, 98, 96,131,243, 92, 73, 81, 53,169,197, 36,132,135, - 92,202, 48,244,189, 11,171, 60,211, 13,202,112,144,108, 38,192,232, 4, 40, 48, - 28,213, 88, 6, 69,124, 57,176,250, 96, 75,147,179, 54,150, 60,107,210, 33,195, -169,176, 86, 19,120,218,249,243,208,198,175,125,217, 90,189,128,164,181, 90,208, -211,124,222,180, 22,180,134,177,234,111,185,193, 39, 87,129,209, 65, 4,219,244, - 63,183,193, 91,189, 58,114,182,186,112, 94,102,191, 42,131,159, 5,158,205,211, - 57, 53,139, 38, 20, 43, 78, 95,177,201,204,159,172,222, 46, 64,131, 96, 63, 37, - 37, 66, 50,110,130,159,193, 35,185,162,144, 28, 42, 85, 76,129,159,176,145, 47, -197, 97, 20, 48, 27,151,233, 72, 14, 98,157,111, 39,225, 94,107,195, 90,135,125, -184, 40,201,175, 25, 98,124, 93,126, 42,112, 36,100,197, 65,234,205,162,126,207, -134,142,168, 31,216, 35, 35,177,180, 71,163,196,180,246, 54,164,217,195,106, 80, -209,236,206,255, 78, 0,192, 9,175,198,164,158, 84,209, 49, 1, 52,164, 14,168, - 87,114,221,226,187, 60, 33,161, 17, 32,140, 75,222,171,118,124,116,253,103, 15, -123,165,168,168, 6, 84,232, 72,203,248, 84,211,245,232,100,111,209,232,222,220, -244, 79, 81, 73,183,228,148,113,106,100,207, 66, 73, 95,109, 58, 77,124,193, 28, - 65, 55,118,250,169,169, 62, 79, 16,116,231,226,147,228, 17,135, 6, 27, 23,102, -156,130,122, 57, 32,153, 98, 73,154,129,188, 91, 94,106,173, 41,189,230,254,138, - 99,239, 21,198,220,132, 28, 35, 18, 69,148, 43, 34,131,160, 63,142, 64,197,200, -246,198, 8,243, 10, 25,111,213, 66,113, 43,242,122, 52,136, 48,216, 31, 82,246, -156, 22, 15, 73,177, 3,159, 83,244,224,216,181, 89,118, 44,216, 15, 73, 87, 22, - 39, 78,111,215,175,147,175,122, 20,222, 6, 25,225, 55,238,164, 33, 65,104,146, -253,202,191,138,238, 59,255, 46,160, 79,183,143, 99, 45, 86,115, 53,241,155,202, -167,136,174,170, 37,242, 69, 15,114,135,176, 79,133, 95,109,128, 35,133, 2,247, -194,140,110,218,135,175, 17, 81,108,220,178,185, 6,132, 23, 0, 50,105,172, 26, - 33,214,106,216,172,229,161, 13, 27,179, 86,144,227,138,182,101, 33,166, 83,242, -155,242, 9, 57, 45,226,212,130, 96,112,209,134, 44, 61,178,115,188,106, 97,183, -184, 4, 26,238, 85,147,199,224,188,212, 92,210, 20, 92,127,152,154,244,215,134, - 5,241, 74,135,190, 64, 30,245, 57, 57, 52,156,114,194, 6,232, 41,217,165, 66, -156, 28, 4, 88, 87, 88, 44, 23, 42,141,137,224, 0,226,245, 2,204, 83, 77,192, -185,166,102,248, 78, 88, 21, 22, 36,147,185, 69, 69,138,128,225,173, 79, 97, 15, -104,106,204,198, 91,135,124,236, 43,191, 24,159, 0,148,216, 52,186,152,103, 29, -148, 86,132,150, 0,248, 18, 28, 34, 17, 88,184,161,141,130,218,236,107,162, 86, -108,241,197,118,229, 62,248, 79,207, 78, 94,160,137,173, 57, 63,212,100,182,253, - 18,223,153,122,202,211,227,118, 19, 31,190, 27,154,115, 67, 10,255,240,247, 8, -241,164, 81,101,201, 38, 63, 42, 14, 81,174, 19,152,106, 17,103,126,180,113, 34, - 48,191,122, 85,145,158,182, 76, 86,204,232,226,176, 14,247,119,223,126, 81, 57, -132,248,239,155, 28,117,195,152, 18,193,182, 45, 78,231,110, 92,217, 42,183,250, -128, 8,249, 19,174,159,179, 98, 35, 69, 81,230, 4,179,180, 55,143,117,104, 5, - 86, 22, 52, 64, 4, 76, 34,122,229,251, 46, 44, 14, 37,232, 73, 3, 0,201,139, -209, 60, 84,113, 53,252, 53,107, 84, 63,144, 63,221, 93, 85,243, 13,205,125, 6, - 49,125, 16,235,158,145, 68,188, 34,136, 47, 93,168, 1, 65,194,153, 16, 21, 35, - 50,230, 24,152, 81,142, 26, 54, 51, 21, 84,197,157, 67, 98,160, 28, 75,121, 72, -184,247,205,101, 83,170,222,126, 13,232,184,245,156,124,252,137, 7,210,185, 88, - 20,111, 94,226, 81, 92,109, 76,151, 24,188,243,100,175, 32,248,207,214,223,234, -219,129, 20, 23, 51, 24, 62, 90,247, 34,214,109,206, 95, 67,232, 87,153,138,219, - 23,128, 36,107, 2, 41,172,132, 91,254,234,211,191,163,186, 38,255,207,101, 49, - 35, 99,116,136, 80, 50, 40, 70,195,243, 63,119, 94,225, 95,251,172, 90, 10,106, -218, 65,103,231, 55,240,235,208, 58,202,177,243, 35,217,100, 83, 33,253,101, 49, -143, 23,193, 41,230, 83, 50,207,128,168,213,108,137, 23, 19, 26,112,231,194, 88, -215,148, 59,142,251, 54, 7,135,146,192,130,226,103,217,218, 7, 56,195, 79, 74, -225,137, 50,104,255,113,119,199,165, 57, 64,231, 70, 33,239,217,104,215,246, 62, - 84, 75, 4,247, 27, 61,162,221,134,106,136, 58,247, 70,139, 52,238, 97,205,209, -203,220,208, 34,179, 61,172, 45,198,117,246,219,148,236,205,155,240,157, 55,104, - 14,140,221,161,246,183,113, 75, 58, 67,188,102,211,254,245,165, 66,247, 30, 53, -170,191,122, 87, 27,245, 89,168,228, 16, 84,166,172, 21, 79, 84,149,137,236,210, -241,130,168,197,144,157,171,138,206,157,232,168,230, 43, 73, 53,247, 23,126,192, -244,238, 28, 80, 45, 45, 30,208, 47,156,186,189,244, 69, 16,205,169,133, 87,242, -103, 70,246, 90,102,157,202,109,106,239,206,228,174,137,110,183,119, 25,192, 93, - 51, 19, 59,149,160, 17, 81,150,248,205, 43,170,213, 6,106, 42,145,214, 28,163, -253,128,122,166, 54,199, 71,116,245,183, 98,122, 65, 20, 96, 55,152,150,233,156, - 79,185,204,163, 76,252, 9,205, 95, 58,206, 83,123,122,105,192, 35, 45,115,242, -111,252, 79,234, 32,240,253,198,202,206,199,185, 81,161, 75,219,151,113, 75,140, -180,217,209,177,179,105,134, 26, 98, 0, 71,199,100,225, 72, 35, 87, 42,180, 45, - 17,180,255,157,104,120,105,108, 41,211, 66,159, 39, 1,193,109,182, 38,224,140, - 88,107, 22,182,182, 22, 96,187,244, 33,197,252,253, 92,141,234, 12,224,122, 59, -203,239,186,169, 81, 63,216,182,118,229,196, 40,164,202, 50,234,213,210, 8, 36, -236, 58,251,115,178,166,104,179, 75,178,101,165,141, 27, 18, 62,134,139, 3,112, -126, 6,128, 88,229, 88,220, 64,137, 3, 41,204,200,225,101,175,155,209, 90, 16, -123,194, 59,142, 0,231,132,213, 16, 50,182,172,143,147,111, 19, 89, 57,137,173, -120,165,126,249,253, 18,214,153, 53, 88,187,247,196,130,121,159, 58,173, 96,192, -107,217,230,101,105,180, 27,181,112,228,195, 57, 75, 0,152,130,115, 28, 21, 40, - 43,158,242, 9, 0, 11,158,194,113, 26, 15,105,179, 80,240,252,212,114,206, 48, -240, 98,167, 22,176, 21,152,214,228,113,214, 9, 24, 0,163,241,236, 24,192,171, - 99,148,135, 48, 87, 96, 29,126,232,240,247,137,162,120,211,247,245, 46,108, 93, -128, 69, 19,145,247,147,191, 74, 57,187, 51, 46,179,220, 21, 0,196, 45,238, 50, - 31, 81,221,204, 0,162, 85,108,184,176,230, 58, 3,169,108, 15,134, 60, 23,183, - 14, 62, 55, 90,123,152,199,183, 36,240, 56,102,138,161,140,182,125,135, 69,230, -134, 15,205,119,109, 0, 24, 82, 28,180, 92,145,241,148,176,181,125,233, 80,210, -207, 62,192,106,241,147,135, 86, 96, 54, 62,128,193,213,203,194,122,142,170, 57, - 14, 27,161, 26,139, 96,156,202, 18, 30,208, 0,246, 54,200, 66,181, 72,244, 88, -150,177, 3,188,159,241,198,173,255,179,120, 45, 4,103,132, 5,217,141, 63,255, - 99,157, 35,255,155, 12, 18,243, 73, 84,112,190,214,218,129, 3,126,108,118,253, -208,185, 39,175, 86,213,199,254,215,128,211,123, 8,195, 30,139,119, 27, 62,203, -220, 46, 55,128, 97,167,220,153,111,180,196,218,231,134,161,203,215,251,238,167, -172, 16, 53, 87,241, 3,194,179,154, 21,250,105,181,118,105,155,252, 76,176,182, -114, 47,115, 28,157,171,166,114,199,185, 38,231,244, 55, 49,109, 50,243, 20, 34, -179,195, 52,121, 25, 3,252,167,140, 84,153,164,244, 50,128,183,104, 21, 87,204, -151,174, 4,240, 20,123, 99,149,105,254, 19,131,248, 15, 28,169, 82, 73, 69, 50, - 58,111,236, 15,159,229, 75, 5,105,229, 9,195, 49, 99,105, 1, 29, 30,250,231, - 14,191,101,182, 64,113, 50, 61,236, 57,105, 46,193,121, 96, 26,116, 22, 56, 7, -232, 45,107, 27, 18,243,216, 68,115,251, 91, 26, 5, 93, 72,102, 15,200, 29, 34, -132,211,212,182,229,242,161,152,238, 76,207,213, 60,142,193, 11,216, 42, 6,160, -146,172, 26, 88,187,196,240,157,221,148, 30, 68,109,150,170,240,236, 81,239, 7, - 37,191,233, 90, 61, 39, 59,207, 99,132,193, 43,192, 87,150,102, 26,151, 79, 89, -104,147, 75, 40, 40, 85, 80, 8,143,217,173,170,214, 13,197, 22,119, 94,183,152, - 7,139,206, 26,189,240,239, 28,208, 76,194,131, 37,239, 89,245,119, 64,135,208, -173,231,198, 53, 44, 55,248, 68, 21,103,143,207,140,243,213,119,229,233, 60,189, -161,144, 99, 74, 35, 69,183,187,216, 62, 5, 60, 36,232,198,155,232,134,189,192, - 56, 39,127,221,213, 93, 42, 21,206,160, 21, 92,160, 20, 42,210, 38, 27, 34, 25, -125, 66,186, 54,122,101, 91,216,131,162,176,137,184, 46,143,194, 54, 32, 62,203, -104,161, 65,224,100,192,226, 62,189,238, 70,167,107,176,164, 8, 80,158, 84,121, -177, 27, 9,193,137, 34,208,190, 12, 57,132,117, 4,175,111, 50,205, 10, 24,245, -220, 66,137,216, 91,253,197,184, 38,148, 98, 0,102, 18, 58, 30, 48,145,115, 6, - 52,189,222,113,172,228,159,238,119, 56,199, 75,219,121, 8,162,203, 94,207,131, - 8,165,129, 1, 15,226, 48, 0, 48, 0, 50, 0,252, 64,134,236,158,123,252,104, - 26, 17, 84, 35,173,181,214, 90, 63, 43, 85,185, 8,138,148, 31,200,144,221,115, -143, 31, 58, 91,134, 61,152, 33, 10,226,167,211,206,254,255,117, 93, 87,164, 1, -167,245,244, 84,101,185, 56, 16,163, 41,101,169,159,244, 8,199, 36, 90,141, 85, -117,163, 62, 43, 81,130, 28, 65, 18,100,247,234, 5,221, 17, 20,169, 4, 25,178, -123,238,241, 19, 5,111,173, 99,139,134,193, 80, 8,148,140,242, 66,181,169,178, -153, 9, 4,218, 54,150, 65,154,225, 6,231,253, 8,224,108,195, 38, 69, 11,144, - 33,187,119,103,111,248,180,181, 29, 13, 9,164,104, 91,219,254,251, 41,109,106, - 68, 19, 34, 74, 80, 55,134, 57, 83, 74,141,101,101, 46,107, 35,221,125,121, 81, -200,144,231,164,164,148, 59, 89,217, 94,202, 61, 28, 14, 15,196,238, 39,140,142, - 3, 71, 66,218, 15, 36, 29,132,218,168,211, 93,147,179,172, 1,227, 52, 17, 8, - 6,134, 70,130, 1, 73, 18, 68,195, 90,218, 3, 83, 80, 65, 32, 33, 28, 16,134, - 2, 65, 16, 18, 12, 10, 2, 65, 65, 32,132, 68, 16, 4, 66, 16,132,128, 34, 64, - 48, 4, 66, 56, 10,161, 48,134, 75, 63, 65,131, 36,170,105, 36, 26, 28,197,163, - 38,123,238,120, 24, 37,201,166, 16,195,225,233,125,157,143, 31,212, 20,236,151, - 98,235,148,103, 89,216,169,230,149,154, 64, 47,130,225, 35,142,242,121, 13,146, -142,158, 53,246,114,245, 0,148,216,253,118,102, 67, 60,130, 97,134,171,142, 96, - 39,210, 82,180, 30, 58, 20,215,193, 24, 85,220,171,157,182,197,177, 8, 73,223, - 15,234,220,203,163, 36, 7,249, 27,132,164,231,171, 18,214, 6, 30,120,182, 62, - 47, 89,149,223,250,139, 66,198,183,141, 89, 98,210, 57,185, 30,168,239,226, 53, -252, 99, 60, 34, 77, 44, 12, 11,188,237, 16,174, 16,121,215,103, 75, 84, 25,171, -194,110, 6, 83,157,110,181, 46,200, 26,104,115, 80,139,148, 24, 17,110,230, 24, - 26, 20,105, 21, 97,142,227,226, 16,142,235, 50, 1, 45, 64,191,241, 77,146,201, - 32, 39,173, 78,242, 98, 3,150,135, 9,172,202,215,181, 71,150,103, 90, 10, 62, - 33,215,121, 14, 40,205,228,146, 34,108,118,236,200,223, 93, 5,105, 6, 25,165, -182,113,255, 39,211,198, 18,160, 91, 26, 34, 90,254, 71, 33,131, 47, 96, 5,127, -235, 54, 16, 49, 13,227,246, 14,177,134, 36,217,199,161,157,206, 99, 32,148,166, -215,184,150,166,116, 45,131, 99,236, 80, 87, 91,209, 82, 98,100,115,173,240,249, -128,205, 7, 68,138,199,250,214,166,103,100,154,246,113,192,119, 27,229,110, 78, -100,251, 32,131,154, 22,237,214,115,159,200,143,108, 73, 50,217, 96,102, 93, 67, - 20,116,186,233,159, 24,115,154, 78,150, 81,155,162,226,182, 65, 85,155, 99,121, -198,174, 62, 56,115, 26, 90, 67, 2,107, 53, 63,118,148, 84, 40,201,129,119, 65, - 30,124,148, 72,178,168, 13, 47, 7, 68,195,136,217,107, 99,229,114,240, 82,125, -197,148, 54,214,195,164, 66, 13, 21,168,220,150,191,155, 50, 89, 36, 73,181,135, -124, 76,164, 64,100,114, 19,122, 57,253,172, 50,103, 50,198, 99, 79, 87,176,243, -194,210, 55, 60,158,238,204, 61, 26, 4,104,185,226,212,143,158,210,218,141,247, -185,217,180,175, 44, 84, 29,255, 6,185,227,207,238,104,255, 28, 81, 96, 10, 20, -117,227,164,125,121, 20, 18, 68,139,188, 5, 37,130, 60,117,132,247,193,210, 82, - 68, 39,214,107,209,100, 94,254,128, 44,174,122, 16, 64, 1, 49, 53,138,214,250, -110, 73, 56,158,147, 91, 64, 9,219,244,253,232,199,217, 83, 84,235, 66,225, 59, -129,165, 18, 85, 54, 37,201, 12,201, 5,124,118,106, 88, 27,222,193, 24, 20,102, -121, 5, 28, 29,180,130,161,251, 63,140, 14,151, 52,225,104, 1,191, 91,146, 17, -147, 43, 78,135,161,255,254,211,144,217, 91, 51,166,108, 9,222,107, 64, 28,234, - 64,195,171,162,245,135, 70,157, 80,173, 43, 61,165,206, 72, 76,213,112,223,129, - 28,237, 79,120, 45,111,117, 7,192, 71,164,139,137,249, 1,201, 45, 62,236, 82, -123,108,109, 63,244,221, 15,194,116, 40, 5,183,239,204, 24, 96,148, 11,169, 67, - 4,179, 28,244,106,103, 76,233,236,220,230, 12,192, 62, 81,149,116,121,140, 3, -111,139, 35,236,128,142,101, 8, 92,213,156,145, 21, 87, 71,176, 16,109,168,247, -133, 89,116,239,218, 0, 58,176,196,149, 3,176,145,203,253, 91,115,193, 49,207, - 2,239,194,125, 4,247,155,198,232, 8, 60,227, 11,239,124,115,112, 95, 9,247, -218,132,157, 24,118,212,232,108, 34, 80,193,134,159,190, 80,193, 97, 75,252,168, - 4, 49,163,199,205,190,110, 96,140,141,204,197,171,150,199, 77, 55, 21,150, 39, -176, 47,161,129,156, 58, 13,218,236, 10, 49,204,213,243,114,174,218,163, 91,178, - 79, 88, 89, 87, 52, 69,125, 0,194,129, 62,251,106,129, 18,146,102, 45, 61,201, - 99, 66, 78, 36,244, 79,159,215, 74,186,105,103,188,217,175, 70,254,139,172, 32, -225,164,191,136,105,113,199,135,177,188, 64,137, 0, 14, 18,145, 84, 27,244,111, -165, 26,227,119, 33, 57, 90,164, 57,147,120,166, 11, 96,206,109, 18,204,178,184, -230,160,159,135,249,135,198, 38,112, 13,215, 65, 84,193,161,129,188,226,103,163, -229, 39,211, 91,175,150,207,208,114,178, 38, 40,182, 27,208, 35,188,209, 63,241, -103, 80,241, 10, 9, 75,162, 70,208, 64,124,123,175,139,104,239,173,234,171, 98, - 84,212,216, 39, 88, 42,123,170, 50,143,160, 71,193, 9, 5,137, 1,209, 73, 64, - 58,127, 66, 24, 95,192, 89,250, 77, 5,169,114,176,150,178, 80,196,228,208, 45, - 45,224, 42,228, 82, 2, 8,255, 21, 63, 81, 65,216,165, 40, 32,254, 39,243,232, - 97,199, 45, 96,160, 40,159, 2, 2,139,113, 70, 9, 29,160,122, 24,236, 80, 30, -166,208, 55, 62, 6,142, 88,210, 2,138, 86,147, 2, 60,145,238, 51, 64, 89, 1, -101,250, 53, 13,178, 72, 96,166, 40,144,149, 41,234, 26,252, 91,192,153, 76,191, - 13, 46, 80, 0,154,228,154, 51,102, 49,111,112,192, 33,124, 28,102,247,195, 32, - 7,142,242, 65,145,227,157,251, 33,146,147, 64,249,128,201,249,227,126,248,228, - 72, 80, 62,152,114, 94,220, 31, 90, 57,210, 41, 31,104, 57, 7,238,135, 93,206, - 52,202, 7, 97,142,131,251, 33,153, 51,139,242, 1,154, 99, 94,209,238,135,107, -142, 80, 69, 86, 94,240,230,212,203, 8,175, 17, 11,149, 79, 50,107, 70,229,214, -114,188,169,140,173, 87,134, 18, 65, 94,199,244,208, 38,255,143,108,203, 16,213, -134,166,109, 22,155, 29,170,235,200,206,209, 31,128, 74,196, 85,177, 32,210,226, -223, 67,224,248,181, 78, 22,150,141,155, 43,132,142, 42, 41, 10, 32, 34,165, 36, -121,243, 5,184, 66,168, 97, 98,138,104, 74,246, 86, 29, 55, 80,204,184, 62, 1, -231,160, 55,115, 50,141,115,244, 53, 59, 21,165, 35,246,151, 31, 32,144,231,225, - 2, 51, 65, 42,197,188, 32, 39,121, 42, 50, 25, 39,113,225,176,204,192,201,167, - 54,119, 0,229,189, 1,100,240,242, 88,169,208,200, 73,145, 2, 25, 18, 91,194, - 2, 78, 91,247,140, 75, 17, 91,210, 39,135, 15,173, 49,169,252, 26,172, 20, 29, - 26,155, 20,121,119, 67,138, 60,158,132, 99, 45, 32,136, 24, 31, 68, 42,187,180, -113,181,116,202, 64,222, 7,203,191,109, 85, 26,177,166, 39, 31,121, 62, 32,193, -175,111, 95,252,226, 4,235, 43,219, 10, 70,107, 33,242,115, 52, 51,188,209, 12, -200,204, 25,102, 43,159, 16,232, 79,249,117,182, 92, 69,162, 56,234,223, 93,102, - 35,132,193, 82,163,233,247, 91, 96,125, 1,249,117, 73, 13,123, 9,195,202,191, - 8,153,109,106, 40, 78,120, 69,111,163, 95, 55, 50,247,155,254,144,160,183, 18, -171,224, 44,183,139,212, 21,240,112, 69,105,234, 97, 12,185,155,201,233, 30,169, -193, 13, 23,211,151,121,247,228, 81,152,193,172,172,161, 4, 76,199, 35,148,107, - 34, 14,132,191,114,111, 37, 24, 71, 77,193, 51, 89,151, 59,201,159,206,251, 22, - 10,158, 27,147,186,105, 67,225,141,151,165, 0,172,160,240,135,104,165,210, 50, - 94,161, 21,232,120, 1, 39, 11,215, 10,220,130, 8, 89,212,130,235,239, 5,238, - 75,165, 50,112,161,245,223, 89, 72,196,212,113,198, 46,148, 12,222, 98,236, 97, -231, 11,243,131,182,208,177,232, 4,195,122,176, 22,233, 61, 48, 10,136, 1,104, - 6,105,209,170, 71, 12,148,111, 83, 85, 23,202,208, 8,212,130, 83, 55, 23,205, - 0, 13,116,204,169,152, 26,208,160,248, 35,181, 83,147,140,105,232,246,189, 56, -204, 83,179, 3,214,208,119,124, 33, 8,179,219,130,212,149,249, 84, 63, 69,119, -174,119,188,167,246,248,129, 4, 93,208, 71,254, 9,226,176, 7,106,252, 5,188, - 71,144,131,204, 55, 53, 6,244, 8,241,224, 25,107, 98,149,191,235,142, 71, 42, -129, 53,254,104,153,175, 59, 82, 30,120, 25,246, 64,194, 28, 82,113, 91,248, 12, -107,145,227,151, 88, 21, 58,163, 87, 3, 28, 71, 34, 11,155,193, 46,178,129,248, - 37,112, 91,200,140, 76,162, 60, 72, 68, 29, 98,131,138,188,226, 99, 0,192, 32, -140, 97,146, 21,128, 14,220,179, 31,231,207, 72,113, 96,141, 90,218,126, 10,190, - 1,117,210, 73, 29,222, 38, 36,164,222,233,210, 50,224,166, 71,210, 98, 72,108, -143,108,140,110,220,182,142, 36,167, 57, 20, 72,228,254, 7, 53,213,202, 9, 72, -106, 41, 97,169,226,122,165, 97,223,129,245,215, 76,166,186,139,128,103, 9, 56, -213, 80, 46, 58,131,120,227, 78,240,169,138,135,106, 72,241, 8,218,196, 35,170, -202, 12, 57,227, 90, 71,190,107, 92,170, 34, 31, 61, 99, 0,204, 89, 33,147,143, -156,161,197,170, 83,213,237,163,102,128, 4,219,104,142,144,219,143,152, 81, 63, - 48,192, 34, 9,199, 18, 22, 61,215,185,119, 40,110,209,105,141,225,161, 13,173, -134,115,181,166,102,174, 10, 13,213,200,111, 69, 32,243, 20,175, 6,212,113, 97, -122, 48,201, 31,137, 6, 19, 3, 1,177,200,203, 68, 24,130, 18, 42, 62,139, 77, -180,118, 72,235,224,116,102, 12,204,175,106, 41, 42, 9,225, 14, 88,137, 92,123, -207,169, 91,171,112, 38, 1,204,198, 75, 48,158, 0, 89, 85,183, 89, 15, 26,128, - 33,181,228, 11,107,108, 82, 48,244, 41,196, 48, 76, 17, 77, 76, 52,140, 97,165, - 16,195,160,151, 68, 50,136, 50,148,209,160, 12, 63, 18, 98, 6, 71,195,189, 16, -175, 25,190, 18, 39,226,153, 47, 83, 34,206,253,145, 9, 12,134, 17, 91,167, 15, - 27, 78,161, 70, 54,200,146,249,130,168,242, 78,225,136, 22,121,221,142,218, 34, - 2, 20,147,121, 36,134,163,245,136, 52, 60,224, 28, 50, 4, 87, 64,128,146,208, - 65, 31, 25,165, 1,234, 0,137, 60,213, 47, 6, 33,187, 9, 59,123,128, 16, 35, -151,232,173, 68,147,208,146,154, 13,198,103,146,252,164,164,212,128,108, 81, 1, - 80, 18, 9,172, 28,133, 55,185, 91,143,233,190, 91, 97,216,152, 95, 31, 69, 17, - 19, 62,109,189,137, 8, 40,182,113, 78, 22, 44, 0, 62,134, 55,225, 32,226, 56, -133, 44,189, 11,111, 98,137,184, 26, 75,146,204, 48, 69,153,108, 14, 83,132,197, -228, 4, 27, 90, 81,229, 58,197,244,225,143,177,129,170,138, 59,197,198, 82, 43, -238, 20, 19, 58,182, 1,197, 25, 68,233,248, 27,129,136,147, 25,243,174,174, 55, - 49, 32,226,128, 1, 37, 39,216, 74,201, 6,240,240, 46, 34, 0,148,247,254, 37, - 44,201, 58,131, 9,159,202,212, 45, 57, 16, 44, 38,177,218,235,104,110, 7,144, -196,199, 23,100,146, 95, 23, 55, 72,180,161,152,196, 11,117,192, 88, 31,141, 74, -119,111, 84,134,249, 26,249,193,228,166, 10,212,203,119,195,212, 6,230,182,155, - 64, 59, 39,149,112, 48, 51, 51,159,206,117,244,180,210,106, 32,228,103,126, 77, -155, 73,249,236,172, 76,228,143, 66, 98, 99, 34, 38,252, 11,200, 27, 88, 18,136, - 51,212,190,245,147,137,204, 47,155, 76,114, 42,191, 94, 61,153,202, 86,132, 84, - 43,165,120, 76, 91,146, 15,154,189,166,132, 3, 40,171,159,208,148,146, 27,136, -195, 59,133, 0, 73,126, 7, 59,177, 45,153,138, 45,101,183, 96,150,254,183,252, -188,246,229, 32, 90, 29,102,191,166, 32,126,191,208,231,141,185,158,254, 71,235, - 44, 3,130,195,181, 2,100,112,143,120,167,144, 78, 55, 17, 80,161,129,101, 54, -153, 50,140,174,103,187, 50, 47, 78,121,131,106,198, 32,215,249, 0, 74, 97, 50, -107, 4,103,191,151,111, 91,129,242,115,128,238,118,103,120,201,113, 17,251,233, - 13, 11, 47,165,161, 90,208, 69,155,128,115,196,254,234, 97, 57,174, 21, 80, 72, - 32, 94, 24, 59,147,201, 10, 59,189,120,127, 65,131, 19, 40,174,243, 30, 22, 90, -254,115, 33,144,131,117,148, 92, 73,235, 79,239, 92, 65,128,132,225, 41, 5,211, - 59,160,143,158,128,170,128, 6, 36,144,175, 98,110, 79,118, 59,160,223,241, 93, - 44, 74,163, 49,105, 47, 13, 57, 34, 65,209,198, 59, 38, 8,112, 79,227, 65,204, -128, 65, 52,116, 90, 9, 26,240,160,141, 34,190, 38,182,240,252, 27,192,157,255, - 62,182,176,154, 7, 6,202, 98,158, 29, 62, 4, 96,209, 28,113,247,225,240,182, - 57, 80,154, 41, 67,118,142,192,140, 6, 21, 44,108, 79,189,141, 48,237, 61,149, - 83,222,249,179, 77,182,246, 68, 99,149,192,129,229, 56, 32,175, 77, 3, 94,131, - 24,112,114,188,136,221, 48, 52, 23,194,174,193,125,244,220,101,121, 33,248,205, -166,221, 77,103, 21, 34,136,177,210, 93, 96, 55,132,215, 12,166,175,103, 70,160, -208, 17,172,117,226,150,127,221,216, 8,190,152,112, 55, 2,233, 30,147, 36,112, -101,161, 6, 48,129,254, 90, 37, 2, 79, 44, 42,112, 15,118, 9,231,139,152, 54, -172, 48, 16, 73,240,100, 30,157, 21,254,134,229, 6,166, 22,216,220,128, 88,123, - 96,212, 44,180, 52, 87, 58,234, 88,136,160, 56, 1,147,240,195,224,197,196,170, - 4,229, 19, 86,169, 24, 90,240, 42, 84,162,224,191, 48,152, 73,175,152, 85,175, - 96, 45, 60,151,146,179, 28, 21, 47,136, 22,116,102, 58,163,176, 42, 25,132, 90, -104,105, 76, 29,204,224,176,172, 65, 58,248,173,140,202, 12,172,113,144, 35, 8, -173, 66,136, 27, 86, 59,120, 17,182, 23,113, 33,195,186, 7,151,132, 49,153,143, - 51, 76,107, 13,111, 1, 60, 86, 0,182, 20, 67, 32, 16,181, 27,149,146,139, 91, -225, 49,140,191,141,136, 15, 19, 37,249, 20, 31,180,223,237,133, 8,214, 70,137, - 8, 0, 0, 40, 16, 57, 0, 58, 0, 59, 0,179,146,245, 71, 46,179, 91, 32,122, -155, 83,255,171,160, 53, 85,107,174, 81,221,226, 81,161, 84, 38,157, 59,136,239, -212, 90, 37,179,230,212,212, 49, 42, 60, 49, 69,186,181,175, 31,175, 94,252, 31, -128,229,218, 53,173,232,209, 11, 93, 37, 25, 12,199,165, 47,238,113,155, 58, 87, -150, 99, 29,220, 57,227,247,220,114,141, 16, 52, 23,114, 62, 49, 76,102, 76, 31, -250, 82,194, 76,163, 17,198,159,250,177, 32,123, 73,196,151, 78, 22, 6,165, 31, -220, 52,149,175, 75, 3,158, 0,124,236,201,244,210, 10,106, 42, 33, 15, 9,145, -254, 40, 60,206,132,153,170,208,222, 87,102,101,107, 25,230,133,117,162,202,185, -244,123,252, 73,137, 97, 12, 73,103,219, 68,103, 40,228,115, 64,186,244, 11, 41, -168,253, 45, 13, 5, 87,230, 4,138,138,159,191, 50,107,102,210,189, 53, 31, 84, -239, 86,251,125, 22,204,217,186,181, 53, 54, 11,217, 53, 59,176,101,206, 91,176, -230, 12,216, 74,156,109,174,235,114,108,111,159,252, 98,156, 51,104, 71,222,219, -132,218,168,179, 77,147, 36, 5,201,114,195, 4, 17, 20, 28,141, 9, 67,138, 34, -164, 20, 68,134,251, 99, 80, 97, 80, 41, 44, 42, 12, 67, 65,144, 19,132, 66, 24, - 20, 81, 2, 41, 32, 2, 66, 4, 70, 0, 5, 4, 17, 34,101, 82,166, 3, 68,198, - 55,203,113,109,162, 13,203, 42,154,134,187,150,106, 62, 81, 3,216,194, 69, 81, -123,178,146, 67, 52,161, 99, 21,193, 66, 67,169,121, 91, 77,107,120,157, 49,131, - 48, 6, 51,217,194, 76, 71, 29,213, 34,199,106,209, 70,161,195, 64,199,146,179, -214,234, 67, 39, 28,109,178, 78,193,174,219,166,189,100,238,143,206,231,115,241, -113,163, 94,199,161,215, 24,214,155, 22,103,193,209,149, 72, 37, 72, 38,126,115, -183, 26,113, 75,157,236,138, 65,195,159,209,102, 41, 83, 89,159, 77,168,221,104, - 38, 59,235,228,180, 43, 13,210,233,101, 48,233,134,145,193, 88,205, 1, 59, 44, - 74, 69,118,117,248,122,213, 18,222,121,118, 91,215, 82,227, 80, 84, 63, 44,199, - 91,210, 9, 58,149, 92,157, 62,147, 92,189, 86,175, 41,195, 19, 85,158, 5,178, - 78,182,117,116, 10,102,112, 86,103,194,204,234,153, 16, 89,195,249,140, 51,242, -109,130, 63,119, 37,203,118, 10, 92,141,142,219,116,162, 91,141,171, 34, 69, 55, -211, 28, 7, 3, 29, 75,206, 58,229, 48,186,164,177,164,137, 59,125, 92, 13, 82, - 63,171, 94, 52, 39, 59,189,124,173,106, 9,239, 60, 86,163,180,214,228,174,144, -238,236,154, 74,116,218,150,156,245,176, 8,245,164, 48, 78,111, 47,135, 31, 42, -114, 20, 19, 40,211,108, 98,166,109, 34, 85,207, 42,219, 41,184,105,169,132,243, -156,115,121,108, 88, 4,209,250,142,236,134,207,159,156, 77,147,192, 46,135, 60, -138, 90,171,188, 12, 15,216,242,104, 51,205, 41, 90,251,179, 21, 98,116,147,248, -149,134, 1, 50,132, 82,109,168,137, 91,207,121,114, 30,209, 18, 16,150,128, 22, -101, 28, 13,221,222,162,252, 29, 49,128, 40,222,174,138,182, 20,215,243,235,202, -111,176, 73, 61, 29,165, 37,235,114,215, 61,222,248, 6,130, 90,202, 98, 72,198, - 6,199,254, 61,222, 37, 80, 27,147,187, 49,179, 49, 10, 31,187, 77,239, 59,168, - 83, 46,106,251,109,154,174, 90, 15, 42, 72,186,168,143, 14,199, 94, 82,108,119, -251, 82, 32,119, 59, 38, 76, 59,238,254, 99, 48,119, 65,116,196, 12,220, 70, 70, -152,249, 66, 43,201,146,168,173, 76, 85, 95,109,128, 89,114, 16,116, 25,194, 14, -108,225,165,217,162,246,209,164, 46,155, 90,176, 50,171, 89,253,202,113, 85, 59, - 65,208, 64,181, 65,130, 90,104,238,224,197, 38,158, 23,215,223,136,109,148, 73, - 45,231,130,228, 28,228,210, 84,236,126, 28, 26,184,184,103,137, 68,111, 65,221, -143,119, 83, 66,190, 93,109, 57,140,139, 59, 66,248,196,122, 93,204,211, 18, 3, -142,115, 99, 74, 74,252,111, 99,127, 48, 61, 57,194,120,107, 13, 56, 10,231, 66, -190,171,135,112,234, 54,239,114,166,118, 50, 78,155,179, 60,254,228, 65, 79,130, - 63,213, 65, 78,202,157,142,231, 40,213, 37,252,152, 90, 57, 46, 17,215,159,149, -103,154,185, 12,250,144, 64,197,187,226, 29,252,187,217,105,201, 20, 89,206,243, -213, 47,106, 48,214,144,239, 60, 65,212, 49, 23, 68, 94,187, 31, 14, 58,230, 24, -180,234,167, 82, 24, 8, 8,234,233,112, 97,183, 34,119,110, 9,236,129,219,214, - 66,143, 23,180,211,253, 7, 10,206,235,128,151,208,230, 78,235,196, 18,115, 31, -204, 82,134,101,142, 95, 55,204, 22, 28, 84,116, 94,156,161, 31,179, 88, 64,119, -120,117,131, 22,183,245, 16, 28,165, 81, 86, 36,244,216,121,226,188, 69,224,251, -198,176, 22, 22,209, 60,247,208, 75,234,100,213, 93, 41,207,172, 16,160,224,170, -234, 21, 77,237, 92,213, 82, 90,101, 78,159, 57,170, 10, 98, 85,173,200,201, 70, -176,169, 29,156,178,163, 55, 15, 31,193, 50,148, 48,245, 37,184,155, 99,186,167, -237, 2,175,226, 45,122, 82, 34,158, 68, 67, 4,210,182,103,220, 38, 53, 55,122, - 66,219,119, 86,115,118,162,225, 22,248, 44, 72, 97,100,138,229,191,130,121,254, -129,100,215,201, 32, 90,220,147, 89,128, 73,140,163, 44,182,253, 93, 36,196, 75, - 69,243,179,250,156, 61, 94,204,160,207,178,139,243,107,224, 41,193,102,250, 34, - 60,197,207, 61, 38, 2, 84,231, 86, 74,181,116,127, 47,185,167,196,159,237, 2, - 51,206,117,126, 29, 2,239, 73,236,213,106,229,174,218, 21, 79,102,121,148,153, -210, 61, 94,122, 32,249,102,233,249,201,166,207, 62,126,242,146,248,137,152,218, - 5, 29, 94, 37,162,164, 28,113, 83, 21, 89, 67,148, 9,184, 12,227,113,116,196, - 91,213, 78, 37,152,196, 8,237, 25, 5,241,222,128, 21,132,182,139, 58, 13,128, -255,189, 8,184,128,217,208,235,249,171,128,181,213,164, 73,211,243,199,178, 3, -142, 32,247,206,211, 54, 13,148,153, 21,192,185,141,111,138,103,174,167, 79, 4, -216,178, 57,242, 70,103,146,130,174,164,215,196,190,188,255,231,163,220,143,239, - 87,225,191,180,202,217,207, 97,182,255,107, 38, 75,243,207,165,136,145,113,248, - 88, 17,132, 56,163,194,167, 32,243,213, 56,203,129, 1,115, 17,133, 11,206, 60, - 51,176,239, 46,104,122,204,158, 9,127,132,144,126,108, 89, 41,133,229, 2,118, - 67, 78,150,147, 27, 67,184,164,208, 31, 70,186,255, 91,251,165, 36,163, 31,152, -238,151,131,130, 63,176, 1, 78,149,107,104,127,162,196, 46,155,157,175,210, 78, - 77,195,163, 53,211,135,203,127,244, 66,224,175, 33, 43,102,144,211, 99,122,129, -199, 51,211, 95,141,126, 31,140,179,185,158, 43, 77, 54,215, 62,108,208, 52,199, - 21,147, 93, 75, 50,252,249,155,155, 13, 65, 27, 52,229,245, 77, 44,142,214,154, -250, 89,107, 90, 50,178,177, 11,179, 65, 18,240,165, 57,217, 23, 79, 49,255,186, -113,208,190, 55, 50,246,118,250,247,189,239, 65, 19,153,159, 16,201,165,200,200, - 38,191,249,206,149,166,163, 45, 23,240, 84, 23, 51,101,213,239,186, 12,145,199, -123,193, 29, 92,191,197, 17,223,194,129,111,194, 79,161, 64,108,168,250,109,250, - 52, 69,146, 97,159, 66,128,225, 55, 45, 20, 70,202, 13, 45, 46,133, 88,230,251, - 41, 67, 14, 78, 19,250,101, 54,152, 35,107,189, 63, 30, 74,183,121,118,239,157, -223, 7,253,110,232,235,113, 93,105,165, 50, 85,133, 52,143, 75,229,149, 7,179, -201,150, 99, 9,249, 77, 75,142,252,141,111, 12,216,153, 80,164, 28, 9, 41,117, - 53,251,254,210,105, 90, 8,184,233,178, 80,121,109,204, 44, 80,169,126,150,242, - 91,128,250,206,104,143, 19,244, 25,187,231,147, 98,104,158, 39,220, 85,131, 29, -173, 17,120, 0,176,240,146, 53,203, 70,118, 42,228, 18, 83,251, 88,135, 77,141, -176, 65,114, 10,195, 50, 80,156,166, 91, 71,103, 20, 82,144,240,176,243,249,143, - 72,237,143,229,207,202, 34, 16, 88,113, 64, 72,174, 8, 79,155, 55,160, 63, 57, -167, 45,130,170, 84,147,170,107,134,108, 53,115,148, 5,189, 2, 5, 76,179,131, -135,151, 36,217,232,218,239, 95,217, 11,113,116,110,121,227, 51, 38, 64,129,122, - 3, 78, 19, 9,227,162,106,125,121, 44, 7,185,228,152,209, 81,209,216, 91, 7, - 46, 39, 25,210, 69,115,112,188,159,197,190,185,158, 21, 87,223, 72,213,172,247, - 35, 88, 13,149,168,111, 42, 66,105,182, 60, 90,140, 11, 63,114,200,162,227, 68, - 32, 59, 10,156, 75,120,156,184,143, 80, 19,104,120,192, 46, 4, 5,146, 40,146, - 80,148, 84,160,119,192,163,173, 44, 47, 89,127, 69, 75, 26,165, 88,183, 1,236, - 66,128,162, 43,196,161, 37,162,143,159,162,254, 21,123,113, 75,148,230,243, 94, -248, 50,195,222,215,217, 89,206,127,111,213,122, 20,214, 36, 98,114,192,128,164, -160,242,140, 16, 36, 86,121,104, 37, 92, 50, 76,189,156, 31,161,222,104,251,152, -116, 57,228,255,244, 99, 99, 63,252,122, 20,231,224, 5,149,118,146, 57,117,212, -199,198,250,187,189,103, 51, 37, 94,243,109,218, 87,102, 97,164,140, 97,160, 33, - 87, 24,227,160,161,150, 48, 39,138,223, 11,151,236,196,211,204,192, 94,103,193, -185,101,190,141,200,152,100,234, 97, 40, 39, 85, 57, 62, 59,164,173,159, 68,106, - 30,253,241,182, 13, 29, 20, 24,193,247, 61, 24, 98,204, 20, 17,129, 0, 76,128, - 41,220,187,130, 65,140,107,250, 16, 41, 95, 37, 60,120,218, 38, 66,230,242, 73, - 39,232,100,238, 71,225,223, 0,188,159,210,149,125,198, 54, 89,139, 78,115,227, - 27, 72, 48, 32,116, 10, 70, 61, 90,188, 0, 53,218,181,187,217,163,104, 48, 81, -114,136, 58,209,210, 92, 8,173, 67,218,174, 51,250,174,222,177,210, 92, 9,225, -113, 20,146, 3,142,226,161, 26,217,212,171, 99,129,214,147,198,190, 25,234,160, -224,192,206,246,241, 14, 62, 50,161,126,128,152,165,145,122, 88,201,247,214,211, -125, 98,198, 6,247,146,122,251,207,107,193,163, 56,194,110,126, 16,156, 75,135, -234, 95,245, 0,162,214, 71,250,212,162,121,179, 66, 60, 34,239, 31, 30,194, 17, -129,252,138, 88,203,173, 63, 44, 48,180,220,176, 19,213,248,101, 81,173,104, 28, -194,178, 6, 1,227, 27,216,120,113, 9, 24,219, 29, 72, 58, 6,152,107,232, 14, - 5,133,214, 67,129,168,195,131,243, 67,230, 47,161,144, 33, 78, 4,141,153, 80, - 72, 58,227, 17, 72, 83, 75,176,113, 19, 83,161,235, 74,150, 68, 40,100,249, 45, - 18, 39,133,214, 33,101,195,169,199,151,214, 9, 9, 30,136,208, 44,150, 25,128, - 70, 83, 73,114,114, 18, 24,119, 11,230,206, 32, 87,215, 62,164,158, 83,163, 72, - 32,105,104, 92, 35,111,125,208, 49,201,132, 23, 25, 67,202, 24,232, 33,145, 43, - 23,219, 20,212, 90,207,183, 18, 69,114,254,138,168,155, 28, 83,132,115, 5,106, - 23, 47,250, 73,186,149,112, 68, 31, 9,105, 20, 5,255, 23, 36, 99, 46,141, 50, - 5,217, 30, 41,151, 18, 21,116, 78, 28,216, 55, 24, 59,175, 77,243,152,204,255, -180, 44,106, 25, 7,139,189,241, 71,211,127, 1, 7,187, 84,111,169,241,124,188, -140, 6,218,155, 92,147,130,167,248, 5,149, 46,231,248,156,145,161, 37,171,253, -254,120,248,228,222,227, 68,199, 7, 31, 82,219,212,192,245, 62,205,137,103,108, - 15, 92, 84,255,103,195, 1, 4,187,255, 2,204, 3, 22,164,210,160,130,187, 96, -171,205, 58, 40,163,199,104, 44, 65,189, 51, 24,244, 15, 69, 24,150,223,222,191, -113,253,242,203,159,169,151,115,101,128, 62,145,221,228,210,249,192, 94, 0, 41, - 75, 47, 34, 37, 24,167, 36, 22, 98,190,161,196,122, 44,229, 61, 6,187, 6, 71, - 85,142,248,241,110,205,207, 93,149, 26, 64,131,137, 51,147,234,206, 78, 90,251, - 26,226, 26, 17,177,198,100, 79, 1, 86, 8,222,203,109, 6,161, 11,193, 80,224, -157,140, 51, 43, 52,197,218,165,246,200,208,198,105, 26,138,103, 69,200,251,241, - 97, 20,208,112, 18,190, 25,108, 98,165,106,219,129, 32,222,131, 66,227,133, 82, -111,146,218,101, 78,233,129,158,183,144, 50,149,211,138,136,200, 4,203,136,239, -174,174,227,127,141,170, 8, 53, 9,131, 44,180, 94,188,205,218, 66,118, 32,132, -137,156,176,155, 75,136,214,238,248,241,215, 14,196,177,172,160, 66,192, 88,104, - 26,135, 6,136, 3,205,192,233,146,248,174, 15,138, 7,165,168,195, 55, 30, 58, -255, 80,162,229,202,181, 99, 9,180, 27, 0,104, 65, 85, 82, 71, 84, 76, 76, 71, - 69, 76, 76, 76, 88,134,128,168,243,207, 1, 99, 61, 68,192, 26,169, 81, 73,154, - 3, 35, 48, 16,192,134, 64, 80,145, 8, 4,130,114, 9, 36,106,162, 80,249, 71, -242,204, 55,129, 75, 57, 87,123,156,224, 86, 11, 92, 61, 31,137, 52,171,215, 22, - 44,149, 30,146, 43, 68,146,162, 34,133, 73,145, 49,253, 47, 4, 12,157, 17,218, - 18, 88, 52, 34,106, 92, 99, 82,102,169, 70,103, 71,185, 88,163,123, 47, 77, 64, - 73,253, 67, 44,218,228, 7, 20, 5, 26,247,209,119, 33,160,228,200, 25,146,224, -170, 0,113, 35,150,253,235, 56,224,229,159, 42, 0,107,181, 24, 85, 56,141, 54, - 73, 76, 91, 74,210,218, 4,198,242, 26, 38,238, 66, 64,201,153, 93, 4,193, 65, - 91,218, 12, 22, 74, 46,116,189,160,231, 90, 2, 84,146,127, 99,222,211,144,192, -162,104,152,255, 19, 1, 82,167, 24,237, 9, 60,154,156,154,103,196,206,213, 0, - 52,116,253,110, 73,119,132,212, 75,219,137, 9,161, 10,156, 57, 33, 90, 4,141, -172,129, 9,107, 37,105,235,230,225,172,208,181, 46,159,107, 19, 80, 82,238,157, - 89, 87, 71, 4,154, 34, 99,250, 93, 9, 8, 59, 35, 84, 36,176,104, 68,212,152, -161,108,174, 2,208,164,227,115,105, 2, 82,234,159,153,245, 53, 72, 97, 82,100, - 76,255, 11, 1, 67,103,132,182, 4, 22,141,136, 26, 51,148,205, 85, 5, 96,171, - 69,122,217,195, 24,158, 32,109, 87,225,180, 39, 31, 30,177, 69, 14,237, 51,144, - 86,179, 41,163, 9,107,228,162, 10,145, 32, 65,163, 18,209, 90, 54,121,168,213, - 42,106,169,167,209, 91,161, 71, 39, 20,221,209,196,234, 2,180,117,238,120,159, - 76,171, 92,112, 83, 9, 59, 56, 83,250,148,201, 95,243,115,172, 72, 35,170,125, -146,109, 95,206, 20, 41, 50,213, 77, 66,183,115,172, 72, 35,170,157,206,208,142, - 51,223,199,237, 33, 82,192, 27, 4, 71, 52, 1, 40, 42,108,172, 96,115, 64,160, - 68, 94,169, 99,123, 60,236, 2, 69,167,116, 85,164,175, 95,216,130,134,146, 67, -234,137,208,164,208,200, 32, 73, 52,166,255,133, 32,161, 51, 68,151, 4,141, 74, - 68,107,217,228, 97, 35,180, 84,197, 56,117, 43,221,121, 47, 77,104,148, 18, 36, - 89,103,219, 67,242, 98, 22,139, 14, 80,214,163, 47, 12, 1, 82, 63, 9, 61, 74, - 19,105,219,216, 95,154,172,232,255, 84, 1, 88,171,197,232, 66, 29,109, 2,137, - 10, 39, 8, 26, 89,147,116, 44,116,142, 50,230, 61,205,110,240, 75,194, 74, 85, -246,145, 32,137,177, 60, 19,173, 98,192,213,162, 46,107, 25,173, 7, 46,130,182, -206,157, 76, 42,171,170, 40,246,138,201, 84,170,105,189,188, 49,114,135, 72,195, - 42, 77,184,221,113,102, 73,237, 89,205,176,187, 24, 54,164, 27,209,131,175, 15, -159,161, 82, 34,173,132,141, 56, 47,232,213, 85,253, 80, 95, 38,211,244,130,170, -122, 72,119,172, 92, 37, 55, 33,173, 54, 73,244,247,231,130, 34,151, 84, 71,199, - 85, 17, 93, 2,144,170,130,134,152,199, 79,248, 69,106, 65, 91, 38, 35, 62,116, - 64,189,164,253,220, 23, 46, 89, 82,120,148, 22,188, 46,249,220,164,193, 84, 21, -234,204,176, 36,189,139, 30,124,253, 24, 67,124,202, 70,100, 51, 88,199,140,218, -151,132,220,243, 14, 37,107, 66,228, 56,185, 42,142,148, 75,187,213, 98, 84, 30, -221,247, 90, 66,198,212,208,250, 20,176, 83, 15,186,254, 76, 82, 51, 56,104, 34, -180, 36,230, 70, 80, 42, 68,212,155,165,208,194, 11,112,208, 45, 44,128, 90,185, - 56,109,169, 35,230,241, 19,126, 41, 32,125,196,202, 53,201, 61, 95,245,105,198, - 58, 33,141,104, 58,238,118,153,233,164,193, 84,135,238,204,177, 36,189, 75,180, -140,126,153,201,182,164,217, 84,135,238,198,177,112,143,104,117,220,118, 48,211, -221, 99,180, 19, 75,163, 51,222, 38, 45, 70,200,245,119,234, 74, 27,141,227, 8, -113,186, 19,189, 95,110, 52,198,162,104, 18, 4, 28, 28,114, 40,108, 3,100,108, -133,142,136,176, 75, 54, 58, 50,182, 66, 61,226, 34, 47,175, 64,221,116, 57, 0, - 82,133, 19, 24,128,205, 3, 32,172, 93,180,189, 4,167, 4,147,108,169,161, 88, -226,201, 4,242,165, 25, 56, 16, 65,183,151, 26, 96,204,146, 64, 73, 27,156,133, - 80,249,148, 84, 18,175,177, 90,153,245,118,207, 35, 74, 75,155,176,174, 88,133, -172,226,202,164,229,254, 63,122,244,255, 55,220,240, 56,227, 92, 13, 35,172, 60, - 47,134,129,168,115,111, 51, 28, 99,122, 4, 8, 19,210,152,131,202,204, 80, 74, - 7, 51,112, 32,200, 24, 24, 30,143, 65, 65, 32, 45, 4, 17,162,201, 4, 40, 16, -145, 64, 36, 40, 41, 40,104,210, 6,192,249,177, 11,248,122, 62,202,224,129,175, -249,160,194, 26,172,239, 82, 23,200,152,240,107,104,228, 10, 19,193, 13,130, 98, - 61, 94,216,128,179, 66,232, 93,149,129,201,201,216, 8, 53,171, 46,173,171,129, -117, 19,208,126,123, 71,244,224,112,161, 24,188, 45, 4, 59, 57, 88, 92,189,179, - 31, 34, 47,176, 83,197,199, 92, 35,200,137,184,118,136,110,105,198,178,165,134, - 71,166,214,135, 72,203,241,177,187,133, 17,113, 35, 34, 72,201, 6, 71,109,201, -171, 97,252, 22,161, 94, 0,154,204,176, 78, 10,228,182,237,208, 32, 24, 52, 96, - 96,183,169,143,202, 17,188,140,118,205,124,128,135,242,198,116,185,129,122,126, - 8,199, 74,173,174, 40, 32, 68,176,110, 12,100,189,217,105, 17,193, 30,217,250, - 51,196,245, 72, 54, 93,107, 27, 47, 26,144, 35, 95, 61,128,147,171,244,188, 0, - 83, 16,154,140,133, 81,230,134, 53, 49,169, 81,121, 32,145,132,134, 7,233, 33, -181,101,243,223,106,176,153, 44, 10,220, 33, 4,124, 4,123,239,131, 2,218, 2, - 2, 24, 3,100, 72, 55, 3,180, 32, 15,214, 56, 99, 56, 14, 89,216,218,233, 17, -118, 70,102,124,200,218, 31,252,110,194,140,108, 62, 52,154,222, 25, 10,110,198, -154, 19,119,197,117, 69,115,113,139,189, 17, 53, 78,217,114,144, 95, 87, 91,246, -175, 92, 27,165,251,101, 72,232,244,233, 45, 17,188,250,237, 17,144,131, 22,202, - 35,226, 61, 82, 61,110,184,120,237,208,204,184,247, 71,137, 37, 35,255, 11,119, -209,110, 51, 93,219,169,179,250, 56,253,171,186,160,204,234,169,191,174,236,215, - 6,124,126,178,102,214,154, 15, 67,142,194, 14, 85,251,207, 78,169, 6,234, 10, -249, 12,170,172, 16, 58,181,246,230,207, 37,243,115, 49,231,174, 48, 71,123, 72, -255,188,137, 17, 93, 25, 90,100,153,208, 35, 70, 86,238, 78,115,161,223, 26, 59, -101,118, 60,143,214, 4,228,251, 99, 26, 17,220, 11, 29,235,207,234, 8,186, 53, - 30, 50,184,158, 1, 90,151,190,117, 47,214, 32, 8, 77,164,196,244,218,133, 65, - 58,249,182,104,135,149,161,229, 48,240, 45, 52,171,227, 9, 38,107,156, 46, 42, -239,215,126,241, 79,177,192,229,171, 3,178, 36, 61,210, 73, 40, 82, 76, 45,213, - 36, 23, 20,169,212,190,228, 64, 17,125,254,192, 73,183,239,151, 82,220,191, 32, -186,161, 79, 36, 13,209, 68,107, 46, 58,219, 23, 78, 30,230,221,151,209,154,112, -155,221, 62,137,202,169,208,229,115, 0, 61,112,179, 42,130,214,192,242, 80,107, -195, 91,200, 96,139,240, 93,176, 93, 15, 2,193,170,147, 8,176,163, 12, 12, 60, -219, 38,186,122,204,100, 10,145,188,185,223, 21,178,237,115, 27,137,126,180, 30, -207,132,216,139,248,211, 57,105, 17,184,175,201, 62,186,102,204, 70,127,251, 42, - 53,170,120,220, 33, 68,153,204, 54,180,206,218, 97,184,235,245,174,149, 57, 69, -183, 97, 67,215, 49, 51, 50,200, 62, 92,145,183,192,195,204,100, 0, 55,141,245, -204, 95,221, 68, 63, 69,221,113, 31,196, 37,211, 1,237, 2, 68,128,182,116,167, -254,181, 34,167,162, 51, 58, 51, 55, 17,131,198,224, 48, 15,145,205, 46, 76,235, - 34,143,227,229,128, 70,176,225,196,133,209,164,181,169,237, 92,118,158, 80, 33, - 2,167,105,200,215,179,238, 88,107,162,204,112, 63, 25,160,254, 39, 68, 86, 44, - 33, 74,140,149,255, 67,159,228,250, 88, 34, 15, 46, 48,224,177,242,142,197,124, -250,198, 18,157,148,252,170,102, 82, 55,203,184,229, 91,128,118,189,133,163,141, -167,180,111, 38,101,186,248,146, 12,177,193,180,122, 7,158,133,230, 35,240,135, -157,171, 51, 50,209, 82,167,172, 0, 47,141,107,187, 40,188,160,126, 96, 81, 15, - 53,169,192,233, 54, 68, 78, 99, 15,241, 98,110,154,143,101,174,162, 43, 89, 24, -158,199,216,225,138, 8,158, 94,174, 53,229, 81, 28,211,246,254, 80,213,188,112, - 49, 47,248,171,134,203, 44,177,189,158, 69, 26,152,127,218,250,127,104,151,124, -124,165,130,174, 54,238, 79, 56, 75,150,167, 38,102,213,165,201,110,102, 72,238, - 26,181,107,211,140,154,154,127,228,182, 84,134,201, 65,163,181,210,183, 76, 78, -160, 75,145,189,209, 23,165,116, 83,186,245,205,111, 45,153, 42,103,151, 92,162, - 6,219, 93,209,204, 31,120, 58,255,121,144, 72, 82, 29,170,173,111, 61,147,225, -176,138,162, 38,125,172,165,119, 23, 7,161,186,232,163, 91,209, 90,223,183, 98, - 61, 97,180,199, 75,200,214,110,190,208,253, 97, 30,209, 40, 54,173,177,242,251, -192,168,195, 26,113, 18, 45, 46,154,246,164,174,183, 66,178,127, 73,125, 80,167, - 15,154, 41,167,163, 35,172,109,105, 28,209, 47,109, 96, 0,205,232, 96,185, 89, - 53, 67,244,199, 46,215,243,115,230, 96,208, 11,153, 31,198,133, 65,253, 57, 38, - 58, 34,255, 94, 92,242, 56, 25, 29, 22,226,184,210,234,150,198,131,178, 80,151, - 58,211, 72, 32, 22,205, 38,205,134, 84,232,233,239,129, 21,156,241, 75,204, 9, -136, 42,193, 70,174, 1,144, 13,123,113, 51, 68,128,126,238, 52,223,122,171, 11, -249,126, 2,191,109, 6,112, 80,227,170, 36,111,135,206, 74,161,106,238,186, 34, -194,218,172, 96,239,164,154,119,174, 74,241,190,190, 93,124, 84,129,218, 14,243, - 29,223,182, 97,148,234, 51, 1,188, 80,115, 35, 54, 91,245, 26,174,148, 37,101, -249,224,240,230, 42,189,129, 55,180, 84,193, 11,131,139,158,126,228, 57,194,199, - 92,144, 38,226,223,172,139, 46,187,137,101, 57, 48,172, 78, 24,189, 92,193,110, - 20, 4,111,127, 30, 43,164,244, 38, 81,128,196, 99,165, 92,179,198,187,136, 70, - 17,154,195,101,151, 14, 22, 35, 59, 18, 28, 76, 60, 76, 69,107,204,129, 91, 39, -103,160,104, 27, 18, 65, 55, 97,154, 92, 20,150, 68,169,253, 68, 27,109, 61,174, - 27,220,169,235,182, 27,146, 28, 41, 85,179,161, 65, 45,225,228, 75,137, 2,130, -254,162, 28, 96, 42,135,133, 88,159, 94, 81,180,116,249,158,209,196, 30,242, 61, -207, 95,114,163, 65,185,112,242,253,197,238,158,156, 37,255,252,226,227,118,193, - 18,226, 46,114,117, 49, 42, 3, 62,174,199,246,121,180,210,101,182,217, 38,226, -178,183,187, 15,241,183, 48,146, 28,137, 86,179,161, 65,173,224,228, 75,137, 2, -130,127, 81, 29,224, 44,199, 66,172, 15, 91,113,177,116,249,158,209,196, 30,242, - 61,165,209,201,190,133,128,121,105,118, 57, 99, 15,249,158,231,183, 58, 62,209, - 89,217, 97, 8,111, 27,177,122,236,149, 9, 23,218, 69, 59, 52, 90,233, 50,219, -108,147,109,228,107, 63,127,108, 71,137,226,200,225,254, 11,191, 91,182, 10,255, - 90,155,143,251, 2, 36,192, 95,116,215,165,168, 25,240,186, 22,183,219, 57,189, -230, 98,209, 53, 71, 52, 53,185,228, 69,103,232, 35,176,142,141, 63,124,107, 5, -213,218, 7,233,198,117,108,208, 5,171,205,189,154, 22, 92,108,111,170,223, 61, -107,118,226,245,222,172,182, 79,212,112,146,181, 70,164, 90,249, 96,209, 52, 93, -214,186, 54,216,168,134,106, 18, 13,103,104, 25,108, 26, 27,175,235,156,109, 37, -214,154, 32,212,215, 10, 95, 18,169,236, 92,104,225, 2,234,239, 5,145, 8, 19, - 83, 1,186, 24, 78, 24,114,154,118,235, 64, 17,190, 0, 3,225, 95,185,164,175, -209, 27, 56, 18, 28,131,129,101, 53, 93, 21,197, 11,196,237,178, 97, 94, 63, 6, - 63,172, 60, 72, 34,236, 42, 35,213, 94, 29,241,197, 24, 42,108,171, 10,174,164, -219,109,186,239, 5, 70, 71, 96, 92,105,196,230,136,110, 36,102,101,186,161,186, -193,209,179,226, 8, 66, 78,136, 91, 22,233,162, 22,130,219,118,217,176, 10,130, -123,235, 89, 72,174, 88,128, 15, 43,213,239,254, 6, 17,197,126,152, 73,179,142, -233, 39,154,104, 62, 96, 11,199,102, 39,245,188, 88,184,187,149, 30, 2,124, 12, - 1,118, 56,169, 38,224,148,186, 1,104, 70,246,123, 27,174,223,231,114,220,139, -215,188, 74,187, 46, 39,190,142, 35, 29, 15, 27, 77,245,114,138,164, 12,102, 88, - 99,188, 16,161, 0,154, 0,157, 0,180,251,167, 88, 87,238,224,210, 3, 11, 8, -171,174,222,163, 95,251, 67, 39,124,197,147,145,132, 10, 69, 96,178,129,241,128, - 0, 77,116,182,249, 25, 76,180,176,232,168,206,216,228,126, 58,103,118,182, 12, - 34,179, 6, 36, 19, 66,236,208, 16,194,166,113, 25,101,191,170, 48,250,214,214, - 14,230,144,227, 98,211, 56,220,255,124,220,153,152,246,181, 71,232,243,220,222, - 55,154,185,101, 92,133,193,199,213,121,132,155,126, 62,207,150, 85,144, 41,198, - 65,197,179,102,158,113,231,255, 52,155,220,213,194,195,234,225,136,138, 77, 99, -140,118,180, 66,228, 89,186, 29,155,123,151, 41,110,250,147,110, 26,202, 18, 45, -241,167,155,200,163, 17,193,240,113, 9,240,129,149,201,132,159, 71,164,114, 20, -189,244, 73,176,186,234,218, 69,231, 75, 37, 6,195, 56, 9,204, 3,119, 38, 26, -179, 81,255,130,233,123,223,248,222, 39,217,251, 36, 54,188, 42, 10, 11, 64, 81, -223,156,179, 77,121,247, 56,222,238,198,199,119,114, 74, 26,106, 30,157,110,236, - 43,114,123,228,158, 34,183, 22,185,173,136,209, 28, 84,145, 55,226,193,202,195, -232,199,230, 70, 59,250,182,210,206, 53,148,243,118,106, 24, 7,222, 54,161, 38, -213, 71,236,127,150, 89,154,106,217, 25, 78,175, 59,152,205,236,220, 50, 56, 95, -231, 9, 52,183,126,163,155,217, 27,199,106, 23, 20, 72,174,206, 19,206,164, 78, -106, 82,107, 11, 26,183,201, 50, 44,227, 96,128, 64,129, 40, 10, 29,243, 52, 73, - 41,165,148,211, 36,165,101,185, 75,121, 41,206,141,118,179,254, 80, 63,157, 66, -209, 8, 47,244,246,248, 40,221, 42,167,121,166,169,235,164,174,235, 56,171,117, -206,174,235,186,206,187,150, 82, 74, 50,178,244, 92, 5, 82, 74, 41,167, 72, 80, -225,111,191, 10,156, 41, 19, 72,192,156,166,158,226,227, 13,151,165,160, 72,233, - 46,229, 35,165,220,108, 54, 13,236, 28,139,162,197, 45,107,235, 98, 89,150,229, - 78,146, 97,174,203,237,229, 82, 74,247,199,163, 75, 41,223, 47,132,150, 31,226, - 32, 90,136,219, 16, 41, 4,164, 1,130,253,149,171,188,239,229,171,223,229,235, - 10,207, 86,159,248, 13, 41,229, 37,178, 64,151,232, 18, 93, 34, 11,100,129, 44, - 80, 84,137, 42,125, 32,113,244,229,142, 12, 27,222, 8, 45,167,234,248,224, 38, -111,134,196, 37,178, 64, 29, 92,199, 37,186, 68, 22,200, 2, 69,149,168,226,247, - 58,212, 28, 62,150, 96, 11, 6,134,124,152, 13, 9,250,105,253, 49, 53, 57, 85, -149,181,229, 50,205,130,147, 4, 51,249, 9, 62, 62,125,230, 12,135,193, 50, 59, -150, 50, 44,101, 52,254,243,129,121,102,190, 51, 61, 13,184,173, 99,222, 48, 62, -254,185,209,204, 76, 79, 75, 51,206, 68,137,112, 96,224,250,117,171,181, 56, 96, - 51,157, 25,144, 48,248,224,219,184,145,234, 29,140,218,233,126,193, 63, 97,197, -141, 1,168, 4, 27, 54,109, 6, 0, 65, 3, 99,114, 0, 0, 10,138,137, 67, 82, -153, 76, 20, 70, 81, 12,244, 3,164, 0,134, 66, 26, 6, 12,151, 14, 69,195, 64, - 5, 32, 44,134, 97, 50, 16, 0, 4, 8, 0, 1, 0, 2, 56, 0, 40,128,136, 82, -192, 56,103,249,169,167, 95, 15,253,128, 6, 44, 34,180,229, 12,224,184, 25, 15, - 9,248,181,115, 86,123,195, 10,245, 97,187,196,187,221,252,206, 42, 68,243,203, - 75,188,106,222, 90,159,114, 33,238, 72,250,132,140, 72, 91,202,231,228,240, 78, -144, 40, 15,166,180, 90,148,213,231,111, 12,117,110, 41, 66, 32, 7, 67,253,148, -210,194,136,248, 9,243, 20,251,171,185,191,209, 44,153,173, 33,228, 38,212,139, -147, 65, 47,164, 28,135,161, 95, 66, 86, 76, 3, 3,137, 31,233,140, 22, 96,103, -221, 0, 6, 47,165,177, 80,206, 27,230,215,130,141,244,245, 99, 65,104,186, 72, -112, 50,152,175,235,184, 19,214,176,136,158,134,177,131,112,160, 71,118, 92,112, -112, 60, 1,252, 51, 95,115,103,132, 17,108, 61,165,246,211,163, 29, 74, 53, 59, -224,133, 32, 75, 39,228, 46,195,235, 28,211,243,119,181, 55, 91, 7, 93, 84,158, -179,174,128, 58,125, 49,108,195,183, 63,235, 34,101, 31,141,122, 79,138,165, 6, - 14,170, 11, 22, 63, 13,123, 16,112,149,250,130, 43,157,236, 91, 62, 99,228,238, -176,221,187,248,235,245,159,236, 44, 55, 61,173,227, 17,217, 26,182,121,189, 60, -250,209,205,243,110, 60,152, 73,103,232,135,136,147,156,100,147,245, 47, 84,121, - 90, 36,147,215,209,132,122, 47, 86,185, 11,169, 46,163,229, 44,169, 47,104,235, - 55,145, 42, 29,196,208, 59,187, 77,228, 36,187,104,147,242,240, 43,237,226,117, - 25, 36,234, 97, 6, 64,154,202,171, 68, 15,134,161, 53, 33, 35,155,148, 17,150, -182,189,182, 33, 36,228, 89,242, 4,246,190,212,222, 87, 20,123,207, 11,215, 44, - 91,224, 13, 47,157,196,108,189,150,211, 46,136,109, 59, 97,185,120, 71, 99,196, -199,238, 91,128, 9,141,205,174,136,208, 16,203,246,166,189,182,164,144, 82,172, -204,157, 28, 75,190,193, 37,109,244,211, 13,225, 4,191,192,134, 78,222, 98,120, - 17,201, 77,113,144, 22, 92,163,203,185,175,169, 16, 87, 79,142, 69,197,194,240, - 90, 1,140, 12, 61, 35,223,173,149,233,127, 10, 76, 85,242,181, 84, 96,204, 18, - 4, 0,202,206, 80, 47,155, 46,120,210, 30, 72, 94,169, 43, 66,197, 98,129, 64, - 78, 18, 2, 24,194,207,221, 46,240,204, 74, 67, 92,253,207, 16,234, 21, 29, 17, - 30,179, 50,202,178,144, 13,240,201,243,238, 9, 37, 60, 94,244, 92,136,155,163, -200,249,216,248,214,242,128,241,189,225,194,184, 5, 4, 82,140,128, 17,180, 33, - 47, 0,220, 88,157, 8,107, 69,114, 42,168, 11,237,113,115,222,123,150,226, 59, - 73, 64,147,208, 52,196,138,170,247,135, 64,122,223,194,124, 26,132,247,128, 62, -209,202,125,247, 85,198, 56, 62,250, 29,218, 87,201, 25,210, 23,246,177,110, 30, -233, 42,135,245, 41,214,223, 6,127,150,233, 29,147,113,170, 15,216, 57,164, 79, -119,226,106, 64, 31,134, 61,252,142,254, 68,227,110, 12,231,163, 34,218, 3,160, -172, 13,101, 34,188,134,203,113,204,240,197,155, 96,175,254,244, 61, 30,208, 25, -176, 72,119, 2, 38,179, 9,229, 26,187,165,159, 56, 12,252, 10, 17, 99,132,125, - 4,124, 15, 63,104,195,203,252,162, 72,111,158,192,220, 65, 6, 10,234,124,255, -142, 66, 1,144, 62,241,199,250, 46, 50, 11, 82, 16,178,106, 67, 30,214,175,118, -187,177, 68, 85,243, 3, 23, 25,211,234, 71,121, 95,179,136,176,170, 29,158, 4, -137, 3,106, 1,220,151,191, 67,141, 68,180,247, 36,233, 91,183,121, 49,148, 62, -111, 58, 32,148,173,176, 38, 48, 93, 10, 24, 54, 75, 22,245, 84,234,236,210,123, - 60,121,116, 51,191,165, 83,112,182,218,251, 16,135, 29,206, 69, 34,213,106,146, -125, 9,171, 86,124,226,136,245,185,217,159,185, 36,200,134, 84, 10,151,112,227, - 31,177,126,114,155, 42,112,252,101, 66, 95,214, 22, 28, 26,116,248, 99,221,127, - 33, 68, 1, 40, 40,109,227, 39,226,250, 23,243,106, 8,219,204,143,194,157, 29, -107, 32,254, 26,165,118,130, 26,223, 70, 16, 87,220,102,149,105,244,136,124, 23, -220, 74, 1,115,165,118, 25, 54, 94,126,113,183,117, 73,211, 53,108, 25,111, 29, -217, 88,218, 42,237,177, 55,142,147,144, 48, 95, 1,119,148, 67, 44,205,119,125, -205, 77, 79, 83, 5, 21,206, 87,234, 36, 14,131, 6,108, 95, 10, 1,133,100,255, -168,158, 35,184,142,177,128,175,172,100,161, 62,235,171, 63, 58,121,241, 10, 92, - 58, 43, 0,111, 76,210, 82,133,186,189,174,163, 91,155,191,114, 43,245, 90, 25, -112,234,105,137,197,119,187,169,228, 93,204,144,200,157, 94, 49,201,236,219,178, -190,228, 81,247, 47, 57, 26, 56, 75,112,193,164,170, 58, 84,204, 39, 77,187,250, -120,150,221,233, 87, 81, 76, 47,215, 46,131, 69,144, 21, 53, 78, 15,239,121, 16, - 27,238, 14,176,207, 77, 8,106, 11,132,157,221, 94,104, 59, 68,116, 21, 84,197, -141,121,157,179,227, 79,228, 58, 67, 23,218,179, 72, 17, 34, 98,214,117,105,188, - 58,235, 17, 27,212, 85, 7, 55,150,109,214,129,145, 89,216,163, 96,136, 1, 59, - 63,203, 25, 92,250,235,120,152, 51, 82, 53, 55,219,249,187,148,150, 38, 19,142, -105, 84,214,137, 44, 43,137, 67,103,187,129, 24,119, 63,111,222, 17,166,100,254, -220, 4, 25,224, 1,129, 23,227, 3, 43, 96, 7,146,110,180, 57,154, 78, 65,180, -124,166,126, 15, 85, 80,103, 2,105,149, 51,155, 99, 99,123,198,122,123,235, 42, -144,231,177,193,116,112,173, 49, 48, 44,212,172,161,110, 19, 59,100,156,237,123, -184, 6,171, 39, 24,173, 64, 14,245, 73,163, 76,212,254,252, 91, 33, 10, 36, 23, - 80, 66,101, 69, 81,142,247,194, 68, 0, 4,142,109,161, 32,103, 25,255, 89,100, -130, 10, 97,115,150,230, 4, 95, 4,208,244,173,210,178,180, 74, 65, 93,173,220, -166,167, 80, 22, 0, 80,147, 83,128,116, 51, 96,138, 74, 96,115, 38,188,204, 74, -160,200,193,103,130,227, 91, 98,158,240,165, 73, 85,154,144,207,197,107,164, 81, - 39,226, 75,189,219,110,168,129,223, 1,235,130,158,142,169, 91, 46, 55,162, 38, -156,244,140,154, 36, 44,204,228,136,206,140, 89,214,149, 39,233,228,174, 32, 51, -236,211, 74, 87,162, 44,119, 70,253,170,116, 39, 11,122, 84,214, 53, 72,222, 86, -244, 31, 68, 80,246,142,139, 71,229, 45,220,232,230, 1, 98,127,238,135, 13, 71, -110,130,104, 98, 7,220, 36, 78,138,227,118, 49,128,133,181,219, 73,138, 70,162, -116,147,106, 4,227,242, 14,203,217,151,248,204,133, 30, 92, 6, 20,144,124,144, -197,128,158,208,215,231, 3, 17, 43, 74,248,125,130,171,245,104,215, 26, 24, 19, - 12,140, 73,137,110, 1, 52,253,164,167, 80,139, 73, 26, 11, 97, 41,182,234, 67, - 18, 6,115, 56,243, 17, 7,229,217, 37,217, 75,157,224,233,250,243,227, 55, 51, - 39, 1, 79,191,208, 90,155, 42,186,136, 67,237,226, 79,197,127,190,221,128, 86, -193,138, 43,172, 63,152,140, 86, 79,130, 88,161,191,174,232,155,103,102, 65,161, -242, 3, 46,111,202,222,174, 35,120,200,116, 92,221, 83, 81, 88,232,107,239,122, -136, 95, 99,173,176,102,180,200,198,209,102,252, 39,112,200,193,156,169,131, 20, -226,105,245, 23,117, 48,158, 31,202,161, 0, 73, 68,155,227, 54,223, 64, 79, 35, - 0,117, 6,248,236,137,138,186, 92,200,242,224,225,247,229, 7,194, 78, 73, 97, -168,255,125, 74, 7,254,242, 9,169, 53,120, 28,199,102, 70,243, 20,239,145,236, - 35,216, 92, 66,119, 34, 23,136,143, 89,112, 47, 52, 32,186, 12, 74,170, 84,202, - 83, 97, 57,164,116,188, 38, 43,101,148, 29,249, 36,211,186, 81,226,204,232, 75, -172, 81,247,166, 67, 3,249,193,203,202,173,203,122, 17,242, 82, 64,162,221,240, -170, 40, 41, 92,242, 60,195, 21,112,155,115, 6,123, 54, 50,220, 85,201, 96,204, -216, 34,103, 83, 63,192,161,199,251,111, 18, 92,157,254,133, 10,126,144,175,175, - 85, 33,167,213,221,236, 43,237, 2,149,147,203, 65,193, 93,184,113, 92,102, 15, - 73,243,229, 32, 34, 93,255,158, 22, 1,118,213, 13, 1,163, 28,176,200, 23,150, -122, 4,188,204,100, 67,145,246,243,254,198,219,248,176,206,150, 60, 40,239,143, - 21,205,128, 10, 77,105, 60,252,236,148,180, 75,246,214,102, 40, 64,178, 81,129, -209, 26,158, 23,168,237,206,225, 99,200,206, 41,124, 10,172, 43, 13, 51, 67,205, - 75, 48,243, 64, 20, 65, 44,167,113,168,173, 89,187,129,230, 89,185,248,114, 91, - 37,181,232, 61, 98, 46, 34, 81, 12,122,107,126,172,135, 66,181,163,178,104,207, -222,151, 35, 0, 16, 73,220, 9, 97, 24,130,226, 75, 81, 60,219,163, 74,112, 40, - 47,128,130,250, 35, 72, 89, 68,100,121,255, 89,255,183, 7, 34,185, 24,205, 77, - 71,231, 41, 97, 90,249,247, 69, 75,224, 64,214,189,234,137, 16,141,101,111, 70, -139, 98,122,252, 41,229,254,116,209, 5,148,151,148, 36, 72, 81,191,230,179,123, - 15,235,232,155,187, 8, 13,252,193,255, 50, 93,135,119,250,232, 29, 49, 57, 55, - 37,127, 21,136,195, 46,212, 79, 72,182, 43,187,176, 89,214, 22,115,217, 92,232, - 25, 18,225, 57, 7,181,138,121, 16, 2,193,208,208,133, 8,106,253, 75,202,181, - 56,110,230, 0, 62, 46,238, 60, 46,187,197,221, 59,165,216,168,207, 68, 90, 0, -232,176,170, 25,208,167, 55,120,112,107,236,217,223,222,232,177,232,195,196, 12, -217,161, 3,249,168, 46,249,255,164, 51,118, 28,105,206, 79, 78,119,143,186, 18, -169, 62, 9, 86, 80,155,166,102,253, 44, 22, 2,170, 40,124,117,253, 25,109,222, - 78,216, 19, 19,121,134, 28, 71,166,214, 14, 67,193, 86,127,142, 81,207,230,194, - 82,118,163,226,197,132,193,244,186,184,131, 92,103, 64, 40,231,162, 61,133,151, - 91,111, 78,206, 64, 76,153, 47,204,101, 48, 4,222,145,134,181,242, 21, 67, 83, -205,238,207,191, 7,219, 33,145,197,218, 96, 53, 40,115,192,206, 27,143,171, 94, - 18,130,255, 44,202,139, 23,132,158, 72,104,120,134, 86,207,226,166,238,151,142, - 55,176,239,230, 3, 80,231,130, 11,119,185,185,193, 92,211, 18,251,159, 5,170, - 88,135,251,222, 70,132, 3,203, 31, 84, 28,231,201,151,205,149,107,249, 88,145, - 9,134,156,128, 79,140,215,112, 27, 71,240, 28,192, 7, 80,237,197, 75,170, 73, - 42,139,136,253, 55, 67, 38,103,241,141,142, 24,136,249,177,180,231,225,124, 48, -233,234, 23,197,128,139,217, 32, 90,170,150, 3, 95,120, 58,203,137,213,145,205, -164, 43,220,227,245, 83,233, 85, 74, 61,126, 28, 92, 4,155, 17,238, 56, 63, 39, -211, 38,198, 19,171, 88,191,214,197, 19,224, 59,142, 32,228, 8, 24,206, 40,103, -161, 1,132, 50,138,247,191,251,115,210, 76,197,122, 45,251,169, 64, 38, 27, 93, - 47,157,147,168, 2, 61, 99, 32, 40,162,148,199, 8,203,248, 7,194, 85,101,195, - 72, 91, 9,148,156,240, 93,143,154, 27, 92,205, 98, 84,195,249, 30,186, 72,214, -241,136, 28,145, 56, 75, 63, 33,208, 25, 27,162,152,240,117,215,235, 33,166,208, - 84, 72, 86,116,174, 77,192,128,105,222, 16,161,213, 77, 68, 22,183,246,169, 40, - 9, 63,138, 77, 47,136,138,200,154, 20, 31,203,119,198,210,223,169,125, 35, 79, -171,153,128,247,233,235,132, 3,155,176, 56, 9, 6,221,198, 5,140,148, 35,229, - 17, 66,209,237,217, 62,193, 82,166, 32, 5, 91,226, 49, 48, 72,202,240,176,167, - 10,248, 37, 4,199,250,198,181,156,194, 25,241, 61, 10,222,104, 57,218, 14, 0, -222,156,173, 29, 89, 90, 69,172, 87,215,231,183, 74,198, 63, 66, 56, 51, 72,101, -241,167, 51, 65,228,194,135, 71,141,248,175,124, 84, 21, 33, 32, 19, 52,100,111, -253, 5, 80, 26,193,213,225,145, 97,208, 50,195, 31,222,124,190,117,114,162, 15, - 21, 51,147, 58, 42,188,198, 42,240,195,168,234, 32,116, 13,214,166, 50,177,134, -206, 75,191,233,145,245,129,133, 70,143,180, 1,233, 33, 78, 85, 68, 11,236,232, -230,118,135, 97,151, 42,111, 33,245,184, 81, 68,205, 13,206,192, 2, 19,149,199, -100, 50,143, 95,229,160, 23,206, 10,177, 72, 16, 15,125,201,222,249,172,136,105, - 12, 84,138,146,136, 3, 98, 57, 6,104, 91,218, 39, 45, 79,158,239,145,210,170, - 41, 82,192,141, 1,130,163,141,205,158, 66, 65,121, 63, 55,108,235,227, 32, 15, - 43,204, 4,251,185,167,201,132, 72,105,215, 12,152,101, 73, 90,119, 82, 28, 21, -162,142,117,209,104,105, 65, 35,198,162,176,173, 28, 21, 31,255,129, 17, 93,206, - 31,129,253,119,228,250, 35,153, 51, 22,217,182,171, 22, 92, 65,189, 9, 61, 2, -197, 33, 34, 43,124, 16,232, 26,212, 69, 10, 31,171,156,153,173, 17,125,140, 80, -244,121,216, 60, 7, 18,200,111,116, 96, 53, 5,106, 69, 44, 63,197,160, 20,226, -103, 93,203, 9,224, 26, 67, 38, 90, 86, 55,165,105,196,136, 53, 37,225,171,225, -209, 93, 0, 3,200, 69, 95,206,148,166,187,207, 40, 81, 21,127, 29,228, 52,172, -198,181,195, 38,124,128, 17,165, 44,120,242, 68,123,252,176,129, 36, 15, 13,167, -222,103,138,177, 90,171, 60,131,121,181, 15,159,143,193,234, 7,197,106,100,114, - 30,101,105, 68,164,101,222, 62,221,224,208, 15,238, 48,238, 12, 23, 82,113,217, -158, 42,247,114,245, 98,216,184,146, 88,133,178, 2,176, 1,221, 7,241, 64, 63, -252, 95, 64,153,140,185, 11, 9, 31, 25,171,197,224,228, 3,105, 42, 99,177, 49, -108,152,251, 15, 56,111,154, 76,207,130, 63, 82, 67, 89, 68, 26,161, 87, 22,123, - 26,223,178,111,163,175,192, 56, 86, 94,223,255,196, 96,195, 77, 86,246, 50, 43, - 61, 8, 18,160, 62, 23, 62,112, 11, 7, 62, 46,225,177,159,104, 24,103,215, 80, -122,244,194,242,170,100, 51, 33, 15,253,117,216,225,164,117, 31,163,215, 2,110, - 45, 58, 74, 14,150, 67,176,248,219,177,182,192,101,195, 38,176,225,215, 50,236, -211, 10,178,121, 66,203,248,211, 2,107,182,176,180,101,217, 3, 69,112,115,160, -184, 24,129, 56, 31,226,137, 66,103,195,230,120, 96,164, 63,137,115,126,238,156, -170,121, 53,121, 77,116,174,132,113,240, 66,119,248,189,210, 95,186,101, 80, 78, - 91,202, 73, 38, 49,141,196,144, 43, 47,213,177, 58,139, 47, 19,202, 18,127,249, -204,108,212, 68, 77,114, 7,115,216,190,120,177,196,163,166, 70, 60,126,146,133, - 15,119,207,205, 12,215, 46,103,101,194, 21,171,165,132,145,173,209,159,117, 91, - 47, 0,123,126,162, 9,107, 32,255, 30,253, 73,130,100,219, 30,122,221,247,157, -150,146, 90,161, 21,162, 60,182,205, 93,124, 63, 67, 58, 88,249,151,255,201,158, -132,108,251, 52,103,115,215,227,119, 71,177, 55,107,171,180,240, 17,221,146,247, - 92,182,153, 93,125,138,140,148,194, 19, 28,111, 84,253,206,134,125,211, 57, 13, -116, 96, 14,163, 3,201,254,196, 7, 7, 20,104,176,231, 1,195,103,185, 75, 97, -206, 72,240,221,185, 82,233,142,158,157,164, 6,155,141,248, 99, 48,239,108,132, - 82, 29, 41, 69, 91, 17,176,162,109,151, 22,109,198,127, 93, 75,133, 50,131,150, - 55, 29, 91,223,246,108, 17, 55, 0,102, 91,131,106, 23, 8,157, 57, 66,224, 17, -117, 27, 59,102,219, 94, 2,178,215, 22,131,205,148,108,172,176,105, 6,190,215, -173,177, 53,214,254,164, 90, 23, 92,219,104,181,200, 64,138,201,214,184,113, 75, - 25,173,102,169, 73,153,197, 32, 83,232,255, 4,160,121,217, 67,122, 69, 51, 90, -112,218, 16,241, 45,115,137,227,192, 69,186, 39,102, 10, 85,226,131,107,232, 27, - 77,250,195, 41,124, 2,157, 55,221, 55,235,217,182, 6,194, 58,192, 20, 44, 61, -110, 20, 35,189,210,213,249,182, 96,172,206,145, 24, 80,189,207, 99, 56, 37,132, - 78, 3, 49,193, 18,141,232, 12, 3, 25, 5,107,104,170,175, 22,205,255,210,203, -205,189,104,171,248, 81,247,120,115, 81,244,147,140,224,133,203,171,207,169,208, -147,208, 6, 23, 83, 22, 95,108, 8, 42,227, 71,183,218,173,145,170,136, 13, 38, -208, 36,241,169,106,151,217, 55, 83,224, 54, 63,196,154, 6,199,192,252, 50,215, - 66, 93,240, 22,190, 63, 8, 31, 88, 66,137,206,211, 0, 29,207,245,173,195, 95, -115, 50,159,164,109, 57, 34,106, 54,103, 61, 45, 15, 12,152,135,108,212, 46,156, -241, 36,255,154, 56,101,241, 46, 9,109, 49, 18,223,140,164, 38,187,155, 44, 35, - 38, 48, 43,245,129,122,106,198,106,192,157, 42, 2, 85,157,117,103,108, 90, 6, - 98,207, 48, 76,200,194,192, 52,137,124,144, 29,204,220,215,109,120, 24,213,159, - 58,196,217,155, 61,232,237, 52,174, 63,254,128,160,182,214, 27, 76, 92,249,198, - 76,114, 43,185,185,106, 25, 23,178,162, 27, 90,223,222,192, 82, 64,108,223, 22, - 27,169, 54, 45, 84,121, 82, 30,184, 61,134,251,152,133, 6,220,182, 73,231,135, -192,205,223, 84,246,196, 85,102, 82,133,113, 59,118,111, 95, 13,182, 32, 24,255, -225,138,227, 86,213,212, 16,220, 87,193,128,220,202, 40,248,139, 91,235, 47, 27, -125,238, 36,163,145, 49,144,115, 10,110,245, 55, 4, 42, 75,144,155,106, 1,117, -181, 87, 23, 9,166,212, 49,205,199,176, 1,189,191, 76,201,136,255,127, 73,210, - 92,184,143, 34,165,234,138,221,206, 88,201, 94, 65,113, 91,131, 2, 57,175,183, - 40,248,175,147,134, 7,109,187, 8, 1,139, 67,170, 74, 41, 0,129,144, 24,112, -231, 92, 11, 39, 71, 50,142, 61, 91, 34,251, 27,187,128,241,135,163,139,231,152, -247,241,187, 31,218, 53, 28, 50, 25, 75, 10, 91, 30,188,181, 62,240, 88, 40, 94, -122,106,244,198,237,140,219, 81,242,183, 4,221, 59,190,243,213, 18,181,221,145, -251,169, 65,202, 95,200, 71,167,178,183,131,145, 45,206,174,129,135, 9, 85, 25, -126,185, 96,211, 96, 88,217,244,138,182, 56, 84,218,195,154,151,187, 36, 7,243, -117, 22,226, 95,227,162, 19, 27, 65, 27,219,173,165, 49,161,231, 34,243,118,223, -176, 33,206, 46,185, 46, 0,137, 78, 45,177, 98, 40, 26,189,173, 49, 55, 4, 65, - 26,204, 71, 49,193,219, 36,228,216,116, 81, 96,126, 8,156,104, 75, 31, 20,170, - 40,134,145,198, 58,182, 17, 38,173,129,150,176, 48,217, 76,132, 22,196,161,194, -253, 28, 73, 66,250, 0,137,169,222,242,104,220, 42, 11, 37,142,212,243, 47,222, - 8,202,180, 69, 59, 25,218,108,249,153,202, 38, 37,153, 19,122,230, 57,252,214, - 95,255,203, 50, 61,142,202,214,179, 71, 19, 7,139,233,168, 3, 62,220,123,108, - 60,139,179, 59, 10, 19,115,227, 46, 53,158,244,187, 77, 34, 49, 40,151, 8,131, - 4, 1,180, 65,209, 31,230,232,253,202,181, 51,227,235,177, 9, 8, 55,255, 49, - 14,166,193,214,225,171,208,233, 89,161,120,129, 78,250,180,209, 18,151,169, 85, -200, 51,199,238, 36,235, 74, 45, 2, 71,180,206,193,249,253,223,207,210, 43, 25, - 12,200, 26,154,152,162, 89, 58, 24,216,168,135,149, 10, 43,133,206,189, 50, 22, -162, 63,136,164, 12,170, 41,214, 96, 59,166,247,163,197, 85, 52, 4,115,173,244, -217, 18, 87, 53,151,176, 82,171, 23,130, 75,224,106, 17,126,148,127,119, 72,121, -187,150,119,156, 77,145,121,118,133,246,136, 22,226,106,235,108,149,155,223,132, -177, 50, 8, 18, 60,198,145, 93,193, 29,218,208, 33,152, 84,187, 71, 20, 84,173, -144,125, 53,182,184,128, 75,121, 77,170,186,171,129, 46,157, 56,151,147,158, 98, -104,111,218, 25,225,192,232,174,123,220,151,123,186, 8,157,175,153, 75,176,102, -146, 99, 68,199,242,195,164, 46,210, 62, 49,168,246,168,173, 98,179,178, 69, 25, -157,110,232,185,230, 22,171,235,171,235,219, 8, 96, 71, 12, 34, 8, 91, 29, 90, -136,235,116,188,117,251, 72, 63, 69,221,241,131, 20, 7,255,112,119, 42,178,232, - 40,196, 81,175, 50,127,207, 60,145, 33,210,255,101,186,210,133, 71,161,142,136, - 78,226,214,176,226, 29, 44,144,222,206, 41, 36, 44,155, 41, 2, 84,238, 50, 60, - 57, 97, 38, 88, 61,105, 91, 48,217, 86,164, 93,157, 29,142,141,206,136,102,100, -218, 51, 17,167, 91, 50, 34,207,221, 14, 19, 68, 19, 84,152, 15, 78, 22,140,206, -238,254, 56, 4,203,158,224,236,108,214,142,171,141,150,231,200,168,174,179,183, - 62,194,136, 12,225, 56, 18, 36,231,160,176, 92, 11,167, 75, 96, 69,108, 16,101, - 79, 4, 4, 81, 77, 38, 72, 39, 90,186, 10,173,166,238, 29,131, 22,243,154,180, -234,160,122, 74,189, 5, 75,173,122, 0, 67,194,201, 22,106,228, 41, 6, 30,179, -217,148,227,187,163, 80,130,241,245,163,157, 64, 64, 57,147,198, 23, 43, 39,173, - 54, 34,132,222,129, 34,136, 5,201,135, 14,218, 52, 47,195, 73, 49,140, 80, 62, -193, 86,139,221,113,192, 14, 12,106,164,122,204, 82, 83,218,101, 62,204, 7, 80, -227, 37, 84,162,126,250,155, 95, 90,134,193, 81, 90,213, 2,230,222, 7,254, 39, - 36,231, 71, 35, 91,113,189,192,118,140,175, 67, 26,183, 66,100,172,170,150,174, - 15,130,145, 65,244,143,155, 14,255,203,146,207, 79, 36, 98,161,130,127,203,213, - 66,148,196,229,101,178, 44, 3,181,112,101, 58, 32,174, 24,238, 17,211,108,190, - 8, 80,124, 69,214, 8, 36,197, 64,165,181,160, 32,143, 38, 31, 13, 43,199,183, -234, 10, 54,147,119, 30,195,113,121, 38, 74, 13, 19,226, 90,205, 59,229,249,136, -174, 16, 15,174, 67,213,236, 40,217,153, 21,162, 63,106, 22,115,195, 89,210, 14, -207,132,205, 59,177,197,228,205,112, 82, 26, 64, 10,183,249,230,128, 38, 96,116, - 64,196,234,128,240,245, 26,231, 94,134, 57,228,112, 32,103,231,138,144,211, 65, -140,136, 61, 88,126,132, 96,175,183, 24,228, 23,144,180,200,199,145,117,253, 16, -177, 84, 88,125, 25,186,221,232,153,226,175,190,179,188,149,206, 9,175,190,200, -148,194, 1, 91,134, 28, 17, 98,129, 54,113, 31, 77,150,151,105,169, 13,103, 82, -164,242, 97, 5, 95,137,192,109, 92, 81, 12,225,215,169,181, 84,205, 15, 13,116, - 79,167,170,225,160,134, 15,166,195,180,229, 40,210,249,164, 53,208,121,247,210, - 4,246,198, 94,107, 94, 23,208,122,200,134, 86,241,223, 28, 15,148, 35, 17,214, - 64, 48, 95,121, 79,169,175,168,193, 84, 41, 84, 2,109, 77,129, 23,181,225,214, -104,152,184,108,214, 49,138, 97,155,228, 65, 0,107,230,244,217, 69, 21, 17,158, - 76, 75,248,112, 82,139, 16,170, 16, 74, 56,154,180, 97, 52,105,243,204,227,141, - 65,109, 97, 29,122,152, 66,165, 45,144,108,133,184,167, 66,195, 41,177,198, 37, -255,124, 22,138,241,141, 97, 80, 4,137,165, 58, 87,161, 40, 45,157,232,185,246, -164,132,242,157,206,136,173,212,113,116,156, 95,100, 94,179,197, 4, 80,229,216, - 30, 65, 61,150,138,195,116,245,187, 80,115, 8, 81,131, 9, 54,169,181, 72,187, -102,197, 64,244,127, 9,113,181, 59, 5, 0,226,157,181, 79, 66, 57, 51, 22,155, -150,164,221,216, 12, 24,201, 94,195,107, 59,155,200,215,234,180,152,142,137, 98, -137,185,187, 66, 40,245,111, 41,190, 20, 62, 88,240, 9,233, 73, 12,241,118,121, - 25,223, 66, 75,110, 3,226,157,251,139, 24,116,212, 18,148, 95, 53,102,156,250, - 70,156, 56, 46,211,121, 63,106, 95, 97,113,134,234,113, 96,184,156,231,113,224, -122, 26,137, 9, 56,136, 89,212, 59, 14, 73,185,189,227,136,210, 84, 17, 62, 89, -235, 86, 71,166, 96, 41,180, 11,193,244,244,218, 28,190, 93, 43,125,169,160,201, - 87,165, 89,167,163,231,197,247,181, 85, 0,250, 33,129,240, 71,206,179,216, 80, -210, 68,105, 10,121, 81,210, 33,194,113,136, 31,165, 28,116,185, 28,239, 81, 14, -244, 23, 58,236, 59,171,169,195,235,216,177,130, 91, 15,102, 35, 22,130, 48, 24, -195, 23,187, 13,219, 59, 49, 10, 1,185, 62,150,183, 76,117, 69,163,252, 59, 49, -225, 1, 2, 18, 69,120, 58,131, 56, 42, 20, 48,183,158,154, 69,212,163,236,189, - 51, 6, 79,158,179, 16,154, 81,131, 67,132,222, 14,109,248,213, 67,233,217, 39, - 24,206,132,238,182,168,187,210, 11,230,154,117,118,158,238, 47,237,238, 77,218, -182,175,108, 94, 64,183, 83,111, 89,146, 59,193,134,211, 37, 11, 89,168,124, 22, - 82,214, 40,103,148,177, 88,172,206, 2,106,216, 33,104, 20,167,143,116,220,145, - 42,107, 61, 78, 46,176, 15, 37, 98, 5, 14, 23,188, 98,160, 33,160,151,238,100, -232,100,171,220, 27,161,165,108, 43,139, 98,143,123,109, 92, 41, 52,180, 29, 97, -240, 65,206,181, 81, 65,141, 93, 10,215, 63,189, 86, 16,155,190,246, 85,181,126, - 5,169,176,196, 5,241,116,119, 26,135,116,166,141,113, 25,206, 56,173, 11,126, -102,126, 42, 52, 36,216,200,226, 42,204, 72,216,192,205,220,186,214,211,180, 34, -253,218,213, 16,169, 88,217,179,125,208, 72,117, 34,117,223,208, 20,119, 1,107, -213,214,190, 39,160,148,235, 59,196, 91,255,172, 98,140,161,213, 64,106, 42,214, -120, 39,129,253,128,162,175, 56,246, 36,118,191,207,213, 80,176, 89, 17,218, 87, - 14, 42, 82, 9, 71, 92, 85,223, 36, 24, 74,215, 78,123,216, 49, 55, 59, 55,172, - 62,114,106,242,151,106,196, 88,129, 57,229,215, 91, 56,148,113, 9,132, 80, 56, - 36,215,136,238,242, 36, 8, 95, 53,194,247,180,192, 98, 5, 3, 86, 46,250, 19, - 8,156, 27, 97,145,139, 89, 76,113,107,217, 66, 70,216,111, 64, 24,252,188,231, - 28, 80,170, 10, 58,255, 88, 36,159, 57, 98,253, 85, 5,237,215, 21,126,103,138, - 87, 75,169,197, 53, 12, 1, 77, 6, 78,202,108,255,173, 9, 14,154, 69,150, 19, - 95,116, 39,124, 34, 79,105, 2,168, 16, 11,190,103,136,216,192,204, 75, 97, 59, -165,130,198, 65, 34,221, 64,242,153, 42, 77,151, 94,169,101, 78, 5, 27, 93,113, - 62,119,164,105,193,128,254,171,157, 38, 78, 35,147,187, 63,216, 87, 36,195,225, - 66,176, 81,148,136,177,135,185, 36, 31, 44,196,182,241,196,224, 79,120,114,217, -247,139,179, 52,240, 72, 77, 40,192, 1,119,155, 5,121, 56,133,168,180, 30, 15, -128, 13,107,150, 40,178,156,200, 55, 76, 20,235,210, 75,128,199,168,179,129,213, -177,242, 11,124,223,179, 64, 73, 57,249,205,237,179, 19,186, 4, 43,231,234, 65, - 89,120,250,212,119,179, 28, 6, 97, 81,145, 41,105,162, 16, 22,202, 12, 39,184, - 21,168, 63, 84, 31,116,145,199,205,104,101,161, 29,114,139, 54,163, 24,171,108, -172,161,197, 64,118, 87,212, 42, 15,176,187,214, 26, 12,132,152, 36,163,240,252, -106, 38,120,192,137,104, 27,206,250,171, 69,251,204,247,251,124,177, 65,110, 24, - 56,110,137, 37,106, 94,128, 31,234, 7,174,216, 74, 37,198,192,223,141,151, 57, -194, 15,201,231, 32,148,145,221,249, 96, 38, 23, 55, 61, 91, 79, 34, 40,130, 36, - 23, 36,222, 4,121,120, 91, 81, 32,152,250,174,250,246, 61,212, 22,155,190,179, - 50,138, 67,181, 46, 95,187,125,240,161,168, 29, 88,138,102, 0, 15, 74, 76, 73, - 78, 47, 72,142,146, 22,223,229, 67, 71, 66, 37, 76, 51,192,177, 50,124, 47,161, -227, 76, 7, 55, 29,232,147, 41,220, 82, 30, 63, 81,171, 72,129, 76,211,105,224, -102, 5,250,107,133,206, 84,241,136,205, 66, 84,239,118,114,251,227,244,215,141, - 53,209, 74,119, 71, 51,240, 62, 10,251, 97,193, 34, 1, 82,211,139,229,194, 61, -250, 67,213, 77,157, 73, 77,123,184,145,142,245,117, 83, 63,145, 30, 67,219, 17, -167, 71,154,169,187,199, 47, 32,199, 21, 10,122,140,171,121,209,210, 53,208,142, -138, 79,217,117,231,176,108, 74,134, 66, 40, 87,232,192, 54,238,100,105,150, 57, -192,169,138,244,254,100,156, 15, 36, 34,201, 51,247, 57,205,173,104, 31,254,225, -104, 38, 37,226, 99,164,232,246, 4, 37,169,153, 96,124, 98,115, 35, 66,120, 68, -118,254, 3, 91,144, 47,230,226,169,180,175,226,239, 74,239, 73,254, 82, 56, 88, - 24, 71,190,234,227,219, 85,222,160,147, 35, 71,199,211, 56, 60,116,122, 54, 27, - 39, 40,187, 91,235,126,118, 69,246,231, 29,107,111,237, 54,152,198, 13,234,217, - 80,134,104,142,233, 60,144,215,253,239, 44, 14,105,183,239,172,131,159,106,218, -137,171,207,179, 97,240,248, 88, 28, 35, 44, 77, 19,151, 16,168, 66,106,251,160, - 6, 2,173,203, 70,172, 45,171,152, 39,154, 1,154,145,152,153,131, 57, 13, 14, -115,145, 35,163, 92, 63, 20,156,253,213,246,159,206, 89,122,224, 7,250,211,134, - 67,250, 33, 17,145,182,142,142,170,213, 81,173, 88, 65,245,249, 7, 16, 51, 25, -196, 48, 86,243,217,130,116, 89, 89,183,189, 99, 38,116,136, 43,182, 79,165,160, -225, 71, 46, 50,166, 51,251, 34, 67,105, 47,154, 99, 71, 89,154,225, 19,108,158, - 8,248,133,164,223,221, 15, 70,117, 15,159,156,111,243, 73, 68, 45,195, 23, 34, - 11,109,139,125,152,129,142,232,226,133, 50,222,176,226,164,232, 50, 13,159, 37, - 98,247, 57, 98,178,219, 67, 25, 93,179, 28, 29,118, 16, 71, 35,114,176,141,203, - 85,232,132,230, 41,133,140,223,216,222,224, 67, 20, 12,120,183,236,220,207, 82, - 54,245,179, 65, 6, 59,232, 24, 81,110, 33,177, 84,219, 60,183,236,103, 42,241, -199,192,182,201,177,147,221, 21, 94,191,122,174,109, 68, 30, 37,112,234,145, 90, -151, 60,101, 82,213, 16,168,114,166, 44, 80, 86, 62,155, 32, 52, 1,224,102,134, -212, 72,139,244,188, 73, 28,112, 35,208,251,179,237,164,220, 0,104,197, 39,126, - 29,173,194,165, 86,152,211, 27,128,185, 62,191, 12, 91, 31,135, 23, 73,184, 57, - 73,158,192, 89, 19,146,189,210, 81,212,153, 93,174, 54,176, 62,111,236,103, 13, - 39, 25,187,198,137,130,215,150,220, 27,230,203, 9,240,211,153, 22, 84, 38,113, - 23, 48,206,149, 0, 88, 19,208,218,191,190, 31, 98, 63,153, 89, 46, 38, 72,163, - 34,137,200,123, 62, 16,204, 17, 53, 66,113,197, 42,127,129, 15,222,102, 40,114, -189, 17, 54, 11, 94, 89, 45,237,152, 9,183,199,222,124, 86,192,206,163, 32,109, -105, 62, 86, 26, 16,113,154,194, 73,186, 93,178,106, 16,212, 67,240,157, 57, 13, - 80, 39, 19, 58,239,169, 24,144, 12,108, 86,125, 91,136,116, 90,163,163,201,248, -247, 28, 38, 78, 73, 67, 91, 0, 16,189, 35, 96,192, 75, 77, 82,253, 17,139, 11, -188, 84, 97,203, 92, 54, 96, 49, 20, 51,252,162,188,156, 21, 34, 9,211,189,140, - 5,205,130,242, 38,220, 70,249, 74, 60,111,221,111,201, 98,211, 50, 80, 36,106, -122,216, 62,133,130,161, 43,166, 67,138,194, 62,104,107,196,240,123,118,116, 3, - 79, 58,101,239, 6, 99,226, 8,161,139, 33, 33, 74, 23, 14, 59, 77, 16, 70, 35, -175, 88,211,216,143,116,249, 89,118,233,202,168,246,124,156, 52,252, 81,109,136, -154,145,193,146,230,132,220,112, 17, 32, 32,246,119,166, 27,221, 17, 55,235, 83, - 66,158,160, 54,114,245,192, 42,212,227,227,214,113,225,159, 49,139, 80,163, 35, -219, 41,177,196, 37, 39,176, 50,178,172,209,161, 80,171,213,216,202,243, 98,126, -250, 36,153,157,183,216, 19,142, 32,210, 75,235,107,102, 57, 51,238,249,214,122, -204, 23, 0, 30,178, 6,168,185, 4,160,215,118,208,127, 14, 38,232, 52,198,219, -109,235,237,136,253,162,234,190, 44, 88,239,100, 47,184, 65,229, 8,205, 45,154, -254,168,181,102,243,142, 8,155,224, 5, 5, 42,178,185,234,200, 66, 11, 10,222, -117, 85, 87, 38, 1, 75, 50,235,191, 41, 54,144, 18,139,235,204,241, 5, 60,145, -112,250,213,168,145, 61, 9,241,199,111, 99, 20,203,172,232, 17, 60,117,106,126, -228, 31,192, 74, 19,240, 48,145,240,195, 5,141,144, 7,120,237,232,223,208, 98, - 43,224,208, 26, 64, 63, 59, 90,139,194,221, 31,162,120,191,186,195,115, 75,162, - 25,216,249, 86,191,109, 89,164,127,226, 50,105, 0,234,201, 63,183, 48,216, 57, -225,204, 10,121, 99,188, 35, 79,127,166, 21, 86, 71,208,218,164, 38,150,246,189, -174,115,217, 65, 3, 45,121,126, 72,126,114, 51, 46,249,204, 21,208,122,250, 4, -158,102, 36, 45,176, 31, 59, 49, 6,213,247, 71,147, 75,192,215,129, 83, 96,211, - 88,234,216, 8,245,185,121, 83, 57,147,217, 39,129,200, 54, 94,233,211,177,227, -171,223,222, 40,164,194, 45,213, 60,102, 14, 75,173,230,109, 13, 96, 62,147,114, -165,184, 15,190,251,107,216,133, 95,230,245,206, 92, 8,219, 27, 42,152,213,211, -154,235,129, 81, 10,190, 84,232, 97, 62,136,252,187, 39, 57,145,254,188, 20, 96, - 4,142,203,153, 33,175, 19, 65, 21, 95,223,207, 0,127,107,247,165,113,114, 13, -124, 41,119,253, 11,235, 73, 23, 52, 76, 25,163,168,241, 96,126, 58, 73,157, 86, - 76, 49,242,160,237, 32,227, 62,216,234,174,162,245,201,197,222,137, 49,118,177, -190, 46, 50,237,223, 7,113, 37,143,189,139,184,174, 67,168, 91,182, 29, 24,119, -154, 45, 37,102,232, 11,185,188,125,171,117,138,246, 10,233, 97,128, 24, 15,210, - 37,159, 96, 62,180,162,108, 38,197,131,195,103,157, 56,217, 69,210,158,144, 14, -222, 80, 25, 98,222, 99, 29,109,118, 98,187,231,120, 43, 8,108, 56,221,218,146, - 78, 94,212, 24,151, 0,246,205, 23, 78, 25,221,199,243,189, 19, 24, 78, 1, 99, - 56,101,235,202, 30,227,152,101, 10,250,227,247,155,222,210,144,200,184, 1,167, - 98, 85,234,125, 20,124,200, 25,255,119, 58, 43,142,127, 40,186, 97,148,197, 47, -207, 48,110, 8,228,113,232,218, 42,254,110, 35,116,160,112,192,249,150,195,177, -136, 44, 8, 76,117, 3,161,184,170,175,166,238,112,179, 9,122,152,164, 91,139, - 43,255,182, 18,187,155, 32,212,127, 48,139,122,220, 65,207,224,172,100,111,255, -123,243,118, 22,214,110,224,117,140,235, 55,228,247,148,211,239,133, 6,120, 98, -210,129,196,115, 71,160,109,158, 31,126,225,187,153,177,215, 77,111, 2,163,199, -159,241, 79,132,118, 46, 40,194,130,186,104,223,241, 65, 84, 41,220,154, 82, 70, -236,113, 82,215,122, 76, 15,211,130,218, 62,118,208,109,242,158,250, 21, 1, 11, -211, 84,184,246, 15,188,103,143,121, 7, 7, 82,228,158, 96,241, 94, 75,127,130, -212, 32,123,162, 92,209, 0,180,101, 15,241,154,143, 26,251,183,155,142,147, 86, - 51, 79, 20,183, 61, 93, 53, 11, 35, 76, 55, 83,245, 73,132,188, 80,242, 64, 23, -172,107,194, 18,128,220, 46, 20,249, 50,116,186, 74,253,167, 97,248, 60, 48,102, -105,234,151, 22,137,134, 44,165,190, 66,112,125,101, 95,111,130, 49, 4, 17,107, -100, 13, 48, 17, 91, 83, 0,195, 40, 5, 48, 39,133,228, 67, 30, 3, 80,127, 0, - 41,189, 92,154, 37, 88,160,158,131, 29, 85,166,233,207, 12,223,198, 6,185, 70, -141,116,209,168,128, 93, 7, 86, 55,152,153,154,128,224,113,105, 9,198,251,230, - 61,193,115, 63,209, 28,160, 70, 51, 63, 90, 26, 92,154, 99,218, 83,159,230,192, - 3,158,164,246, 19, 16,106, 62, 2, 45, 74,100,225,161, 89, 7, 80,198,166,121, -177, 47, 28, 56,200,165, 72,175,121, 91,209,118,222,230,237,159, 29,199,101,133, -150,203, 28,209,151, 65, 8,198, 2,118,106,100,246, 72, 9,244, 76, 39, 0, 9, -244,129,127,183,161, 52,191, 7,142,203,109, 7,206, 93,221, 46,240, 40,228,143, -149,152,123, 82,164, 16,163,207,155,236, 88,213,225,228,121,244,201,245,114, 72, - 17, 52,121, 33,135,103,240,141, 46, 39, 34,242,153, 39,167, 99,207, 45, 35,255, -234,201,153,135,140, 74, 29, 37, 6,239,227,103,224,135,149,135,224,153,194,185, - 75, 11, 4,127,178,185,174,107, 6,213,101,144, 70,208,132, 57, 45,160, 29,122, - 98, 72,193,111, 60, 59,209,125, 25,227, 32,156,189, 17, 28,208, 29, 94,130, 52, - 97,145, 2,204,176, 40,228,218,103,128, 0, 62,112,103,195, 18, 75, 63,134,194, -223,140,194,148,250,139,141,241, 79, 31, 49,167, 14, 62, 60,151, 2, 46, 18,149, -133, 53,160,126,122,129,192,248,180, 64, 55,175, 33, 15,231,163,200, 31,153, 14, - 77, 17,167, 96,152,202, 11, 96,121, 86,110,192,128,165,175, 12,115,108, 43, 43, -175,208,148, 90,184, 6,165,113, 17,133,226, 20,229,240, 0,102, 56,169, 40,224, -176,234, 1,228,109,131,140,130,230, 91,101,196,250,248,252, 0, 63,148, 54,240, - 46,163,184,184, 56,178,109,219, 37,183,206, 72, 78,196, 24, 25, 33,252, 2,158, - 0,158, 0,157, 0,247,203, 26,182, 89,205,123,107, 12, 17,113,131,202,221, 39, - 10,114,134, 74,131,196,226,193,231,181,221,207, 25,109,243,181,223, 21, 40,242, -156, 23,197,163,123, 29,118,243,254,249, 92, 12, 45,224,244,129,208,146,113,225, -148, 60,125, 42, 92, 26,115,152,166, 61,155, 78,247, 64,191,214,195,154, 83,174, - 1, 72,157, 94,238,243,201,174,231,183,206, 95,230, 26,210, 48,180, 63,140,117, - 22,113,221,206, 68,213, 68, 32, 73,121,127, 23,217, 13, 38, 73, 84,119,246, 95, -188, 16, 57,223, 69, 92,225, 70,161,110,252, 57, 17,202,252, 29,142,203, 87,191, -115, 21, 99,160,189,159,193,106,151,167,205,156,189,216,223,231,130,185,203, 99, - 51, 73, 6,217, 11, 24,128,153,197,110,229,234,165,123, 40,121, 80,144,185, 57, - 95, 57, 92,209,160,192,109, 49,255,144, 2, 48, 77, 68, 58, 39,120,109,214,234, - 14,155, 63,238, 43,135, 71,248,246,226, 25,172,238, 93, 45,191,209,251,240,195, -234,251, 74,218,225, 42,143,203,161, 75, 79,183, 34,148, 23,239,170,170, 42,138, -138, 80, 94, 85,148, 79, 85,100,242,106,114,106,138,150, 78,101, 82, 69,180, 59, -245,190,133,154,209, 18,158,211,140,167,126,107,159,167, 18,241,221, 15,235,198, -221,250, 74,231,238,218,253,214,214, 35,143,164,199, 84,194,139,185, 30, 77, 2, -135, 16,212,136,162,156,218, 81, 3,205,169,103,116,182, 25,204, 55,220, 15,119, - 1,244,233,235, 71,132,185, 63, 55, 42, 35,228,158,231, 0,254,215,211,223,180, -134,211,189,233,234, 81, 13, 10,190,222,127,132, 68, 10,225,164, 32, 51,131,114, - 32,105,116,250, 22, 55, 8,129, 72,210,181,159, 82,114,184, 81, 75,102, 83, 44, -195, 9, 31, 82,165, 88,107, 42, 37,237,184, 46,203,229,154,243,151,204,101,125, -166,169,242, 90, 78, 83, 57,181,211,111,169,229,209,168,171,174,240, 30, 4,232, -169,146, 36, 51,206,213,234,215, 68,100,207,125,221,135, 93, 15,214,102,140,205, -166,195, 86,109,190,120,140, 20,132, 78, 61,193, 99, 4, 86, 18,151,160, 75, 10, -170, 40,229, 97, 8, 68,146, 61,148, 64, 75,231, 94,135,189,118,152, 26, 29,209, -103,140, 18,226, 49, 66,232, 29, 15,139, 21,201,164,138,196, 72,125,194,250, 47, - 60,114,174, 40,161,127,146, 73, 21,113,127, 60, 42,146, 73, 21,153, 80, 93,189, -123, 74,167, 82,114,111,110,116,174,207,141, 13, 78, 84,160,233, 32,141, 70,243, -154,135, 26,141,204, 24,107,111, 98,202,216,231,149, 29,229,211,166, 87, 25,238, - 15,104,252, 22, 39,133, 87,132,183,235, 15,127, 24,204,213,251, 19, 82,126,181, - 56, 91,139,206,181,184,248, 51, 90, 27,206,172,231,253,166, 51,158,213,231,182, -109, 20,148,163,203,227,188,239,210,169,101, 81, 16, 44, 4,255,119, 13, 59,141, - 7, 29,213,255,177, 94,208, 13,160, 81,234,251, 81, 26,139, 23,172,228, 26, 86, -113,154, 8, 2, 35,113, 0, 0, 12,140,139, 68,114,153, 60, 30,231,105, 28,210, - 15,243,130,197, 58,214, 43,108,139,126, 12,214,168,114,179,204, 27, 5,156, 19, -198,244, 73,191, 58, 29, 72,242, 6,210, 6,144,136,228,135,104,157, 31,239,115, -236, 22, 41,212, 84,106,154,215, 55, 90,205,228, 28,181, 97,212, 72,192,203,247, - 43, 63,213,232, 99, 18,115,200,241, 80,184,253, 10,158,115, 58, 3,249,221,250, -217,229,250, 87, 62,174, 95,253,171,117,228,139,204, 24, 32,198,135, 19,111,207, - 8,123,160, 75,114,102,250,243,252, 45, 8,163,122,107, 44, 52,233,104,173,159, -127, 89,178,130,238,116,229,203, 40,124,136,199, 73,196, 70, 61,126, 72, 7,207, - 51,146, 53,146,141, 14,225,227, 27, 68,216,246, 47, 98,239, 77,204, 31,103, 75, - 2,255, 63,209, 8, 64, 93,255, 78, 1, 75,165, 8, 89, 74,239, 56, 76,124,101, - 54, 78,119,114,217,245,202, 50,192,120,108, 18,153, 49,136,137,113,249,132, 1, -159,105,174,167, 34, 66,104, 67,169,244, 46,189, 93, 48, 95, 12,171,159,206, 40, -251, 75,252,236,197, 8, 86,173, 27,113, 19,237,255,203,232, 85,171,110, 55,184, - 40, 64, 37,183, 55,240, 32,132, 16,220,119,135,136,140, 83,140, 95,228, 83, 98, -231, 52,153,213, 0,184,169,154,114,158,142,216, 13, 96,102, 0,144, 62,158,180, -101, 55, 40, 9,251,211,243,159,150,231,205,197,161,245,248,158,185,107, 26, 99, - 42,169, 3,107, 96,248, 27,255,120,126,145,208,143, 18, 13,158,146,160,241, 2, - 77,186, 15, 48, 60,142,208,204, 78,144, 18, 8, 0,208,243, 6,235,137,180, 50, -115,237, 74,215,134,181,115,156,194,156, 25, 70,121,161, 90,110, 77,150,147,231, -193,193,116, 63, 84, 32,152,146,102, 24, 0,221,203, 63,184, 96, 90, 94, 12, 17, -222,201,149,166, 4,238, 6,137,201,156, 43, 44,242, 5,212, 4,214,162,139,158, -130,254, 44, 11,188, 50,142, 11,106, 7,227, 68,113,145,246,171,148,204, 93,255, - 95, 35, 71,219,135,125,143,119,165,245,166,241, 96, 70, 30,100,190,118,229, 14, -132,120,225, 53,207,114, 99,231, 72,205,249, 33,163,241,173,211,230, 90, 80, 59, -118, 26,157, 44, 8,172, 0,139, 88,207,115,200,240,240, 4, 32, 55,245,211, 35, -177,209, 70,157,155,161,250,240,131, 59, 55,207, 21, 36,201, 40, 82,125, 83, 28, - 92, 31,160,142, 30,144,222,172,102,106, 54,192,149,199,175,243,161,238,202, 35, -162, 78,139, 94, 63,228,205, 54, 71, 7,163, 40, 42,196,178,164, 19, 33,229,246, - 75,225, 12,104,219,114, 43,190,146,211, 5,200,189, 70,165, 76,234, 52, 29, 20, -102, 86,107,194, 64, 43, 65,235,188, 55, 90, 71,206, 19,113, 41,179,121,234,127, -171,196,137,177,127, 18,249, 43, 35,250,134, 9, 82, 44,117, 81,195,236, 20, 99, -224,112, 35, 34,193,136, 27, 52,251, 54,207,187,203, 19,117,229, 21, 48, 24, 61, -240, 69, 44,173, 48, 88,252, 32,177, 23,174, 97,200,251, 54, 76, 31,168,244,123, -226,251,130,220,229,209,114,111, 68,254,198, 1,142, 64,211,188,182,255,133, 52, -118, 58, 50, 82,235,126,138,144, 39,198,135,139,233,201,202,215,201,151,188,144, - 16,197,238, 70,216,112, 45, 5,252, 48, 10, 98,124,133,157,145,120,164, 68,139, - 68,234,204, 99,200, 55,188, 10,200,109, 17,178, 88, 43,189, 85,132,143,223, 16, -180,150,248,121,139,116,218, 57,163, 61, 79,124,221, 6, 30, 94, 27, 4,203,136, -215,240,160, 17,151, 0,243, 86,129,196,182, 71,224, 49, 53,124,255, 18, 41,205, - 23, 96,241, 3,118,197, 8,107, 98, 48,229, 29,140, 49, 61, 28,174, 34,213, 2, -115,234,177,129, 1,102, 15,171,171, 55, 93, 20,214, 7,247, 5, 99, 34, 75,202, -126,212,187,210,125, 29,249,112,102, 18,187, 95, 38, 46,168, 48,186, 76, 88,212, -175,147, 3,167, 96, 96,133, 25,112, 99, 10, 30, 0,226,151,211, 47,114,124,244, -178,228,156, 55,236, 30, 23,147,219, 96,132, 17,127,151, 64,221,166,125, 93,152, -217,202, 46, 41, 80, 59,172,175, 79,205,107,141, 48, 49, 64,154,201,252, 25,252, -125, 57, 70, 99,156,178,194,146,167, 74,146,200,123, 64,105,208, 36,168,136,116, - 5,186,234,170, 86, 95, 17,136, 26,113,111, 66, 89,186,185,160,103,212,198,231, -248,233, 65, 72,109,205,173, 20,171, 66, 99,145, 37,117, 52, 84, 10,149, 25,178, - 46, 31,158, 39,144, 85,204,134,115,101, 15,144, 60,187,213,126,237, 55,163, 33, -251, 64,148,242, 69, 46,144,145, 93, 72, 56, 89,120,215, 10, 93, 13, 40, 68,166, -222,159,122, 38,248,176,115,227, 49,245,160,244, 38,124,209, 15, 64, 24, 30, 80, - 28,233, 40, 33, 27, 68, 0,193, 52,145,171, 60,116,189, 64, 51,153, 83, 30,199, - 33, 39, 60,125, 40, 83, 83, 9, 9, 64,217,101,255,216,152, 89,188, 96,220, 73, - 94,221,126, 35, 88,143, 39,233, 69,188,211,123, 10, 59,130,186, 46, 38, 94,171, - 14, 85, 9,229,184,214, 75, 13,191,142, 55, 18,251,249, 73,254,203,154,163,180, - 1, 38,114,206,237,211, 8,146, 73, 19,215,238,154,226, 55,106,103, 75,178,113, -164,176, 36, 83,122,164, 49,181,208,231, 50,139, 91, 15,137,236, 0,162,123,237, -225,212,131, 24, 34,150, 48, 66, 96,224, 52,137,206, 81, 97, 81,184,140, 79,225, -118, 79,183,136,222,125,161,163, 6,112, 95,114, 4,223, 7,116,223,225,249, 41, -153,108, 65,233, 3, 44,151,195, 74, 47, 32,105, 16, 58,130,155,113, 88,254, 0, -198, 22, 83,154,141, 0,206,192, 27,152,122,192, 55,130, 68,193,245, 80, 95, 8, -133,124,152,249, 74, 49, 66,102, 33,122, 74, 8,100, 61, 46, 29,109,253,114,137, - 5,175, 74, 49,140,163,103,123,216,190,178,122, 97, 70,175,178,248, 79, 87, 6, - 41,158,182,192,239, 76,231, 25,158,129,210, 37,192,150,199,199,215,224,103, 92, - 73, 68, 83,255,119, 70,102,106,146,233,195,251, 4,102, 88, 22, 57,181, 68,213, -130,247, 66,237,139,228, 58,167, 2,170, 45,130, 94,243,184,151, 47,150, 2,199, -117,131, 66,133,157, 77,219,134,206,193, 53, 95, 55, 81, 79,128,235,254,244,167, - 18,177,174, 39,113,131, 18,208, 17, 53,120,116,231,143,249,114,111, 45, 11,215, -100, 86, 73,235, 74, 93, 5,103,102, 41,172,199, 64, 42, 33,132,207,184,239,109, - 61,116,229,103,146,204, 31, 41, 26,133,136,165, 69,166, 99, 47, 45, 45,175, 44, -234, 39,100,110,194,188,205,122,131, 41,241,153,170, 94, 28,250,215, 18, 60, 68, -105,117,111,132, 1,125,255, 98,171,206, 55,128,155,189,204,211,247, 30,122,145, -190,168,139, 75, 66,222, 50, 72, 99, 15,170, 61,237, 4,150,235,242,226, 5, 20, - 13,148,246,223, 65,111,200, 75, 49, 45, 90, 45,128,194,182, 93, 14, 23, 97,235, -197,222,125,166,222, 96,169, 43, 66, 76, 97,216,174, 10, 82, 58,235,170, 25, 53, -124,160,215, 29,130, 24,238, 57,148,105,253,135, 89,168, 84, 36, 14,235,196,112, -216,159, 56, 72, 61, 82,109,102,237, 65,236,130,104,208, 85,231, 61,190,253,232, -110, 18, 54,194, 41, 42,171, 30, 70, 59, 65,192,197,169, 52,202, 4,140,150,247, - 92, 28, 21,128,187, 59, 34, 72,147,157,163,254,108, 16,136, 5,122,226, 82, 74, - 37,239, 20,115,121, 88,112,159,244,143,226,150,140, 28,221, 30,190,180,142, 38, -234, 0,196,113, 72,248, 55,150,161,173,124, 78,148, 67,248,132, 48, 95, 75, 47, - 67, 94, 49,139,209,209, 15, 47,234,158,191,153,107,114,233,137,203,246,168, 24, -231,249,224,254, 50,207,161,216, 7,188,205, 32, 68, 45,237,119,121, 26, 26, 95, - 41,190,241, 9, 79,121,240,241,142,253, 70, 65,100,125, 44, 96,223,117,122, 28, -217, 18,249, 2,246,100, 17, 2,130,152, 31, 57,154, 44, 58, 96, 87,136, 63,157, - 53,166,245,220,197,193,119,196, 70,180, 97, 17,124,231, 79, 54,171,143,193,200, -156, 63,100, 41, 42, 85,231, 38, 12,175,220,136, 53,229, 25, 54, 2,255,144,177, -191,222,172,160, 17, 57, 81,221, 10,124,254,236,102, 35,250, 72,234,191, 21, 58, - 84,127, 35, 65,106, 15,232, 97, 33, 55,136,148, 31,140,207,185,238,128,119, 24, -246,167, 76,178, 90, 91,221,194, 42, 76,190, 36,207, 12, 37,128,112,116,165,113, -183,202,161, 69,213,170, 25,146,216, 18,251, 74, 23,214,223,152, 14,121,171, 50, - 62,190,180, 13, 50, 19, 66,191,129, 93,116,152, 27,247,187, 6,240,234,180, 87, - 41, 81, 30, 61,117, 78,246,108, 87, 32, 63,142, 5, 72,162,215,208, 37, 2,233, -115,183,202,195,221,174, 82,246,195, 63,215,249,166, 70,110,101, 26,103, 79,197, - 73,244,195,136,131, 63,178, 59, 4,165, 73,182,147,227, 90,178, 7, 4,239,236, -186, 37, 42,210,122,182, 85,140,157,194, 20,238, 79,129,159,150, 85, 98, 70, 31, -242, 6,169,232, 96,220,118,254, 87, 68,230,240,158,194, 1,194,255,156,115, 68, -196,220, 52, 5,224,147,238,234, 91,141, 15, 90,241,103, 4, 35,251, 76,175,203, - 97,207,136, 93,237,106, 90,150,137,212,174,155,206, 55,246,164,165,176, 61,224, - 49, 84, 64, 39,200, 84,107, 22,255,199,208,131, 95, 34, 39, 83, 8,157,131,147, - 50, 21, 31,212, 78, 53, 12,159, 14,189, 10, 85,239,208, 74, 32,185,150,150, 74, -201,136,128, 76,104, 93,175, 32,218,134,234,208, 81, 24, 86,195, 97,222,182,179, - 80,179,206,227, 41, 68, 66, 42, 73, 16, 80,252, 5,216,109,142, 63,143, 88,110, - 16,146, 90,206,189,217, 75,246,163,244,184, 73,177,234,202,101, 88,102,253,242, - 71, 84,121, 33, 99, 41,210, 35,214,141,109,105, 48,191,156, 37,183,154,112, 73, -123,152, 27, 38,231,193, 20, 97,208,175, 1, 43,118,243,149,218, 51,174,182,219, -106,158,117,126,142,242, 91,219,200,227, 71,160,108,102, 98, 22, 69,125,168,101, -107, 24,251,120, 90,121,129,180,196,115, 81, 69, 21, 50,125,185,251,151,169,134, -141,101,211, 92,191,156,135,199,115, 64, 12,215,108,211, 91,184, 41, 82,253,156, - 64,203,149,192, 84,229,158, 68, 52,174,196,153, 0,173,193,122,157, 99,239,130, -127, 79, 35, 4, 40, 58, 58,170, 25,202, 5, 13,220,135, 19,215,151,114, 27, 86, -180, 4, 30,105,219,143, 56,120,165, 50, 80,180,185,158,247, 32, 3, 45,146, 80, -213,130,119,225, 97, 21, 43,244, 24, 58,199,185, 48,150,103,118,128,193,130,209, -238,237,111,185,234, 32,119,219,117, 76, 88,252,131,132,169,199,106, 91,173,134, -100, 63, 22, 47,245, 1,108, 18, 47, 47, 5, 80,231,254,151, 43,176,217, 56,235, -194, 90,108, 99,217,220,202,183,116, 82,160,141,182, 84, 2, 43,129, 24,215, 72, - 85, 24,244, 15,100, 38, 53,236,212,183, 81, 47,109, 67, 58, 37,181,177,201,196, -243, 28,168, 29,158,170,197,156, 12,232, 61, 14,138,251,249,224, 50, 35, 17,165, -123,109,148, 82, 77,179, 74,123, 2, 36, 79, 96, 76, 28, 76,229,107,111,168,178, -183, 41,247,235,134,115,241,210,136,228, 67,167,122,102, 39,195,174,212,188, 36, -211,160, 38,117,156,174,203, 88, 65, 76, 16,106,151,202,233, 87,231,167, 45,118, -185, 89,159,106, 57, 42,114,147, 77, 4,252,174,124, 8,132,132,249, 40,199, 51, -166,207, 64, 4,126,208,248, 1,112,253, 10, 65,112,205, 45,182, 95, 89, 63, 62, -248, 70,146,174,141,147, 53, 27,189, 3,234,197,157, 75,124, 40, 80,165,204,158, -144,198,173, 59,165,133,141,223, 53,112,113,109,166,118,222,224, 75, 14,182,237, - 16,176, 50, 90,100,212, 77, 72,134,105, 1,154, 86, 16,103,178,150,179,154,130, -222, 21,167,111,112,138,143, 37,197,235, 41, 97, 61, 73,178,131,114,250,132,182, -195,234, 50,103, 45, 34, 6,243,106, 48,134, 6,251,218, 23, 31, 90,191,206,231, -216,172,169,239,117,177,157,156,134, 36, 15, 19,105, 75,119,246,136, 62,233,157, -218, 95,146,111,208,143,249,165,252, 56, 81,127,127,106,108, 71,165,130,158,209, - 68, 60,147,136, 73, 97,218,181,172,164, 5,157,236, 42,237, 27,208,252, 85, 39, -105,238, 11,213, 50, 14,223,149,223,173,188,244, 13, 64, 11, 96,138, 89,138,176, - 52,162,200, 97,213, 88, 7,223,163,108,148,127, 51,162,140, 34, 10, 13, 31,181, - 12,238, 60,207, 58, 76,194,115, 38,164,135,147,160,140,203,219,193,181, 68,161, -131,219,195, 39,116, 40, 23,113,162, 97,148,164,159, 56,156, 81,137,211,193,206, - 26, 70,170, 92,101, 86,216,153,255, 45,102, 69,178,121, 40,201, 3,132, 92,238, - 54, 80,117,137,190,138, 11, 10,189,202, 30,234, 67,115,189,114, 94,251, 76, 52, - 53, 25, 2,175,130, 2,218,237,220,219,225, 36, 25, 53,169, 46,255, 16,113, 98, -149, 96, 32, 71,227,158, 85,197,195,234,213,216, 49, 8, 77, 73,193, 58,147, 6, - 8,253,117,234,240,197,130,121, 1,130,134, 65, 78, 98,156, 3,181,104,204, 90, - 8,129,248, 5,132,230,165,245,235,245,164,247, 0, 78,244, 35,110,151, 18, 60, -208, 34,242, 76,196,167,196,190,243, 49,136,110,165, 98, 56,174, 3,225,193,114, - 97, 80, 19, 80,200,187,233,222, 53,158,192,148,135,207,203,120,116, 67,207,123, - 4,255, 3, 62, 65,230,123,107, 9, 67,112,118,209,198,202, 93,124,160,221, 61, -206, 78,225,182,155,147,196,246,241,212,117, 9,160,200,116, 42,170,198,190, 59, - 82,193,239,241, 72,110,185,250,112,105,208,244,202,117,149, 49, 49,223, 76, 55, - 40,206,231,226,156,123, 84, 15,220,138, 79,209, 0, 34,254,244,102,103, 29,176, - 16,199,139, 62, 60,144, 0,205, 10,228,247, 34,103, 68, 7, 64,218,106, 95, 64, - 78, 74,183, 21,164,189,249, 15,100, 42,238,232,222,116, 43, 16, 10,124,245, 99, -142, 15,152, 76, 21, 29,185,252,191, 19,120,152,219, 5,109,113, 3, 44,207, 48, -123,158, 11, 54,204,223, 48, 35,169,249,146,205,133, 75,220,211,145,100, 8, 21, - 8,140, 18, 21,237,239,245,146,200,127, 62,176,157, 74, 51,232,123,116,248,195, -181,131,166,187, 92,240,117, 98, 46,121,177, 19, 65,102,162, 37, 18, 25,181, 59, -119,139,126,209,107, 84,108,248,151, 14,220, 33,193,159,134,186,104, 50,180,100, -113, 70, 47,228, 26,234, 74, 56, 30,221, 16, 44,124,161,140, 83, 45,111,199, 48, - 24,105,193, 24, 54, 95,109, 76, 69, 1,226,217,165, 15,239,171,108,118,118,132, -117,221, 88,117,143,126,136,104,245,112, 28,250, 23,100,203,143,167, 72,170, 78, - 33, 20, 32,146,219,217,209,108,121, 27,107,219, 2,253,202,240,255, 77, 90,114, - 34,208,112, 49, 51,147,170,142,168,133,145,196,134,215,134, 85,208,197,131, 10, -175,100,194,173, 22, 39,112,131,108, 14, 92,140, 52, 14,231, 96, 55,193,213,157, -255, 68, 9, 60,112,116,133, 5, 58,131,116, 0, 0, 47,251,177, 68,211, 8,219, - 33,201, 8,234,162, 25,136,132,171,227, 18, 29,234,100,242,108,158, 51,152,123, -111, 49, 3,247,140,217,241, 98,143,141,201, 96,141, 18,127,142,234,132,245,162, -181,211,177, 98, 54,243,116, 7, 16,194,181, 8,150, 70, 88,170, 80, 16, 28,236, -128,208,186, 18,101,139,130,204, 67,227,181,113,245, 81,106, 78, 13, 9,138,128, -150,252,122, 80,145,166,106, 70,153,105,213,212, 14, 99,241, 8,145, 34, 76, 95, -171,199,207, 87,127, 37, 53, 65,214, 9,209, 29, 27, 66,122,155, 28, 3, 77, 41, - 18, 25,145,144,253,177, 60, 89, 89,196, 54,200,193, 42, 80,133,106, 8,172,136, -140,211, 86, 38, 8, 67, 70,117, 29,163,228, 84, 81,238,126, 66, 40, 26,163, 2, - 26,240, 95, 50,133, 6, 28,169,171, 48,209,246,115,180,242,193,161,194,156,229, -168, 55, 14,148, 39,229,171,141, 16,163,115,114,216, 24,220,137,144,152,130,233, -115, 52,155, 57,181,254, 29, 4,221,168,111,219, 31, 98,156, 10,201, 23,192,186, - 88,214,106,220,224,180,141, 11,101,143, 50,205,209, 95,253,121,168, 9,201,224, -194,216,167, 41, 62, 75,157,187,171,180,161,100, 21,243, 16, 16, 44,131,245,196, -253,217,127,189, 90,172,118, 77,148,213,166, 53,177,218,183, 86,163,135,188, 7, -206,242, 54, 81, 55, 60, 30,234, 97,130,193, 40,133,207,151, 29,185, 57, 90,169, -220, 97, 7,111,247,209,121, 44,253,181,245,139,168,229,130,244, 5,172,130, 7, - 43, 34, 11, 4, 18, 65, 65, 9, 97,172,232,253,192, 97,127,153,177, 70,202,253, -228,194,119, 38,171, 29,203,165, 98,157,241,178,177,231, 57,127, 21, 37, 86,105, -141, 5, 78, 76,203,103, 11,173, 15, 6, 84,183,195, 64, 70, 81, 49,118, 75,104, -193, 2, 77,218, 93,124,150,138, 1,243, 73, 77, 45, 68,130, 37,137,214, 91,145, - 82, 60,108,254,164,228,156, 43, 93, 76, 68,251, 75,182,235,137,219,248, 57,253, -213, 84,249, 21, 3, 64, 75, 33,136,243, 90,234, 89,184, 1, 41,112,249,192, 92, - 70, 85,154, 15,230,125,208, 34,254,209,176,214,150, 86, 5,152, 59, 90,108,102, -197,193,130,164,153,119,140, 5,224,213, 71,166,116,232,163, 26, 19,131, 94,252, - 56, 55,144,182,188, 80, 51,153, 42,137,125,191, 43, 74,197, 99, 50,198,144,111, - 30, 97, 63, 14,210,137,123,228,255,151,168,177, 7,189,200, 44, 6,226,160,102, - 38,173,211,190, 48, 39,112,168,235, 62,224, 35, 11, 87, 84,116, 72,117, 93,148, -139,129, 21, 36, 91,183, 17, 94,240,112,123,105, 83,151, 31,180,115,186,128,152, -121, 93,254,178, 23, 96,203, 8,244, 90, 85, 48,243, 10, 24, 13,136, 79,148, 72, -158,105, 72, 44, 84,229, 27,159,108,105,147,214, 62, 89,219, 84, 4,222, 10,116, -104,118, 4, 76, 8, 1,152, 18, 16, 42, 22, 72, 97, 81, 5,145, 76,225,214,160, -251, 50,101,135,172,118, 90,241, 14, 24,103,130,158, 48, 92,154,133,104, 98, 9, -170,149,162, 56,222, 3,211, 54, 63,226,131, 26,179,254,134, 43,237,145, 95,238, -143, 65,162,247, 31,152,196,154, 7, 84,187, 2,220,130, 9, 26, 65,215, 58,184, - 14,185, 46, 55, 53,105,214,253,189,251,152,103, 42,208, 40,254, 11,168,220, 60, -147,252, 97, 72,195,117,166, 38,162,164,109,244,141,150, 22,189,108, 87,255,147, - 96,160, 72,249,218,105, 8,184, 99,177, 83,177,219, 21, 89,155,172, 29,116, 59, - 87,109,219,161, 55, 83,137, 79, 25, 24,209,138,119,243,192,160,204,199,122, 48, - 88, 89,156,247,213, 38,103, 16,150,161, 45,191,227, 23, 39,233, 44,207,255,129, -232, 18, 82, 99,126,162,152, 11,252,103,176,184,153,101, 18, 66,101, 99,254,219, - 90,221,132, 43,226,123, 41,111,138,203,207,112,140, 81, 95, 37,106,245,141,185, - 8,130,150,174,232, 24,158, 8, 48, 7,148,114,223,203, 4, 2,122, 49, 62,217, -206, 77,110, 96,207,201,150,159, 62,177,128, 30,168,224, 41, 11, 6, 77, 13,194, -190,216,194,217,155,243,149, 44,109,115,130,184,182,106, 0, 34,172,210, 35,219, - 59,245,120,194,103,149,112, 95,122, 11,172,123, 79,168, 29,158,216,150,222,100, -198, 98, 43, 66, 59, 72,144,119, 67,123, 68,122,164,136, 62, 58,208, 33,185,228, -184, 41,236, 77,127,119, 8,108, 45,124,182,205,240,166, 58,140,101,194, 45,178, - 67, 72, 1, 42, 68,250,181,228,130,119,115, 12,161,128,118,200,224, 76, 60,231, -219, 54,122,148,195, 26, 41,138,222,216, 24, 45,244, 10, 39, 47, 86,125,209, 57, -181, 64, 37,176,242, 36, 41,203, 55,195, 57,254, 68,212, 20,243,239,181,231,182, - 82,117,149, 95,113,232, 58,161,129,118,209, 6,139, 45,111,179, 86,179,113,182, -199,229,239, 76,146, 15, 65,104, 76,152, 31,144,133, 61,101, 96,145,190,166,255, -188,230,112, 93, 86, 52,113, 65,151,180, 37, 93,105,205, 52, 47, 17, 86,137,145, - 73, 13,224, 72, 37,160,193, 64,134,116,178,110,155, 96,239, 44,201,165,232,162, -188,119,196, 73, 63,241,100, 86, 4,210,127,229, 40, 17, 9, 70,170, 17, 84,180, -207,148,201, 34,175, 98, 52, 1, 2,198,182,233, 81, 78, 80, 76,102, 47,180,109, - 62, 0,255, 17,219,253,125,117,143,124, 7,255, 20,100, 42,112,192, 56, 33, 0, -200,232,155,149,217,199, 48,179,209,193,149,150,184,165,212, 99,244,206,145,191, -190, 21, 26,187, 65,230,170,216,141, 18,170,136,229,105, 63,149,213,132,172,178, -114,237, 97,168, 98,126,150,222, 30, 64,251, 2, 85, 36,169,241,196,121, 23, 99, - 39,112,162, 10,120,214, 88, 85,255,116,162,138, 48,232,238,178, 53,146,155,235, - 7,179,152, 49, 41, 18, 33, 65,180,158,127, 84,186, 43, 80, 72, 63,177, 92, 14, - 60,215, 67,188,131,182,174, 20,202,177, 59, 68,142,235,131,150, 20, 91,147, 71, -195,106,162,228,192,176,143,220,197,117, 84, 82, 0, 28, 16,176, 14, 79,211,224, -192,243,157, 47, 24,113,122,142, 9, 76, 76, 47,224,109,139,165,209,211,124, 76, -220,153,204,110, 18, 64, 12,120,232,112, 53,132,157, 36,253,132, 19,159,187,197, - 69, 12, 40,253,137, 3,153,178,113,222,220, 97,199, 54, 10,175, 3,116,188, 31, -104,128, 70,178,207, 63,255, 68,169, 50,183, 14,125,202,217,220,235, 69, 66, 71, - 43,185,148, 58, 9,211,155,158, 71, 47, 19, 89,215, 26,249,127,226,171, 5, 1, -161, 33,220,111,112, 68,237,175, 82,159, 11,135,142,134, 79, 23,222,226,232,220, - 43,142,193,218,169, 85,170, 93,192, 86, 84, 25,204, 27,214,229,190,105,118, 19, -194,119,172, 81, 98,183,160,197,220,191,112,116,160,178,146,146, 16, 35, 51, 9, -238,191,182, 24, 66, 34,213,193,111,168,155,160,218,102, 14,161,197, 36, 81,181, -133, 62,154, 52,142,128,100,252,209,118, 14, 92, 23,192,241,225, 1, 74,202, 2, - 43,153, 60, 19,129,156, 95, 79,100, 8, 73,125,150,226,200,142,131,148,165, 7, -137,152,198, 38,200,100,124, 5, 3,128, 18, 20,167,208,244,210, 53, 38,196,247, - 38,227, 92, 29,100, 47,190, 48,204,166, 99, 71,211, 81,164, 62,155,254, 85, 43, -150,238,166,203,185,184,240, 82, 75,163,248, 72, 87, 28,157,108, 4,147, 40, 71, -214,156, 11,128, 60,200, 81, 99, 98,111,222,228,245,101,202, 80, 90, 86, 25,111, - 28,152, 39,209,247,178, 88,220, 66, 22, 78, 62,107, 64, 32,203,238, 49,216, 51, -109,171, 43,144,218,193, 22,162, 15, 32, 52, 32, 96,246,153, 65,187, 8,242,195, - 48,236,172,111,230,219,251,225,138,180, 73,139,166, 92, 44, 20, 95,193, 31, 20, - 29,155, 93,187,156, 98,163,129,170,122,108,108,236,118, 59, 82,106,206,245,230, -116, 52,157,233,150,148,145,206,200, 2,232, 51, 30,224, 59,254,219,251,109,102, -208, 86,234, 60, 69,173,205,118,173,191, 60,238,247,158,174,219, 86,120,133,228, -180,143, 47,179, 9, 39,218,210, 90, 61,123, 95, 43,180,242,138, 16, 85,184,207, -115,111, 33, 52, 47,237,115,113, 8, 65, 84,207, 50,139, 46, 74, 55, 34,216,174, -187,152, 20, 30, 86,225,197,136,168,180,144, 78,245,196,190,190, 32,169, 26, 79, -185,241,162, 88,141, 78, 97, 22,103,121, 40,109,205,165, 97,119,149,190, 76,183, -121,229, 42, 32,132, 69, 91, 12,176,132,230,142,174,155, 50,230,144, 56, 13, 66, -217,122,144,222, 16,117, 51,209, 62,221,229,212,105, 34, 52,239,254, 8,107,146, -236, 76,227, 88,104,165, 62, 46,102, 70, 44,138, 49, 10,176, 17, 95,188,144, 31, - 88, 42, 82,216, 69,138, 60,251, 22,136,124,234, 12,152,150, 70,246, 95, 38,161, - 99,169, 18,177, 86, 99,127,157, 41,151, 7, 18, 63,220, 4,101,249,172,205,168, - 0, 61,198, 77, 71,229, 98, 81,231, 60,196,138, 30, 32, 25,214, 46,153,150,134, -161,101,162,191,152, 60, 89,157, 5, 83,104, 97,224,118,128,189,213, 6, 24,239, -133, 50, 1,178,127,105, 63,202,206, 9,218, 63, 70, 29,176,177,251,154,153, 61, -110, 61,115, 42,140, 30, 76, 22,117, 28, 4, 84,243, 17,156, 77, 12, 87, 31, 14, -222,239,124,231,101,198,167, 36, 10,208, 0,105,127,174, 84,110,254, 61,144,162, - 54,246, 15,164, 10, 66, 35,236,178, 87, 11,142, 90,116, 41, 95,177,149, 77, 34, - 21, 84,195,169,216,145,209,200, 47,237,122,122,141,133,161, 71,113, 76, 73, 76, - 53,225, 7,127,160,130,145, 65,133,217, 3, 17, 26, 11,171, 67, 26,100,128,197, -174,202,254, 8, 17,178,229,184,144, 63,228, 80,173,141,144,240,102,196,157, 19, - 12,188,158, 7, 82,159, 20, 68,178,196,116,235, 95,132, 41,199,223,124, 98,113, -212,137, 75,130, 73, 24, 33,192,236,246, 52,169,162,154,177,130,113,197,136,255, -168, 8,162,173, 52, 98, 22, 62,137,101,251,239,149, 30, 34, 11,125,142,245,221, - 79, 70, 8, 91,223,168, 86, 21,186,119, 33,208,142, 40, 40, 67,104,186,223,194, -185, 51, 6,153, 86,214,151,162,119,158,223, 47,151,135,174,202, 1,192,249,137, -216,176, 94, 29,203,133,246, 79, 77,124, 67, 26, 73,115, 16,143,154,198, 85,172, -192,194,151,148, 15,131, 73,244, 60, 58,127, 3,132,153,197, 20,147,128,122, 83, -157,207, 26, 59, 46,186, 17,190,251, 52,115,113,220,153, 38,175,236,189, 67, 53, -118,103,182, 85,193,202, 10,114, 76,233,230, 89,228,102, 42,236, 55,167,128,173, -143,112,215, 24, 46,146, 29,118,112,205,226,120,176,140,182, 78,101,151,203, 19, -183,141,179,218, 3, 4,183,121, 40, 40, 18, 99,114,241,108,106,137,229,102, 69, - 0, 48,121, 21, 96,129, 20, 48,209, 78,204,238, 21,220,227,149,248,145,225,222, - 20,146,199,247, 50, 52,248,114, 91, 28, 97, 82, 45,227,120, 50,142,202, 50,214, - 43, 80,102,212, 16,133,255,234,105,204, 9,108,121, 91,147,217,117, 62,154, 75, - 3, 93,166, 23, 47,110,156, 27,241,244,124,205, 58,228,163,114,115,196,213,108, -206,107,255,254,253,146,138,218,128,157, 34,129,124,185,126,137,245,127,104,209, -121,228,139, 72,175, 72,136, 12, 79, 20,172,101,206,193,214, 92, 87, 88, 50,222, - 69, 21,181, 11,238,103,208,176,249, 9,124,212,233,127, 43, 58,116, 53,169, 97, - 39, 77,229,210,214, 49,179,141, 38, 94,135,218,109, 94, 40,142,238, 89,195, 1, - 82, 7, 72,105, 35,164,201,220, 14, 22,234,180, 38,192, 25,180, 53, 57,121, 36, -163, 17, 95,165, 0, 25,250,225, 13,255,203, 56,166,216,200, 5, 89, 48, 14,181, -160,199,206, 77,217,196,120, 25,247, 19,253,230,129, 33,124,140,141,226,113, 2, -125,184,170, 12,226,158, 2,181, 93,204, 25,161,153,177, 64, 3,173, 74,109,145, - 34, 76, 72, 89,144,166, 82, 7,180,244,177, 65, 50,101, 30, 78,148,114, 6, 81, - 3,177,145,248, 17,100,189,195,178, 46,196, 12, 7,184, 51, 4,151, 52,177, 10, -183, 17,159, 23,134,225,243,138, 91,220, 13,204,240, 9, 19, 7,194, 0,214,235, -104,118, 48,184,247,121, 23, 79,126,228,120,194,242,194, 85, 54,196,254,197, 94, -165,119,180, 99, 7, 66, 30,206, 13,157,215, 80,107, 73,121, 34, 23,190, 3, 33, - 29,247,195, 98, 65,101, 58,108, 48, 4,193,152,167,206,130,130,171,162, 33,212, -130,251,178,254,174,201,121,147,232,137,129,201,254,123,122,144, 21,170,118,142, - 58,173,164, 70, 56,119,237, 5,195,238,133,233,201, 21, 44, 9, 15, 55,231, 9, - 63,130,199, 47, 48,239,162,160,104,113,207, 9, 59,207, 72, 76, 19,100,157,158, - 90,120, 85, 32,151,254, 86,124,203, 11,244,145, 8,186, 8, 38, 71, 56, 87, 9, -113, 40, 90, 37,240, 17, 36,144,146,202,251,244,124,161, 27,203, 24, 76, 92, 21, -182,239,210,218, 22,190,157,159,183,146,178, 98,226,111,125, 38,192, 83,141, 21, -213, 70,153,197,166,245,113, 33,120, 8,243,108,187, 59, 23, 86, 39, 98,111,137, - 3,139,225,169,211,125,138,105, 28, 24,222, 50,233, 13, 20,151,235,213,149,176, -237, 39, 44,103, 92,111, 8, 26,188, 0, 31,137, 29, 46,127,146, 26, 15,255,196, -114,213, 78, 21,200,159,207,162,233,173, 53,234, 10,252,136, 68,233,165,201,134, - 7,132,240,245,227,123, 24, 20,254,158,103,116, 51,126,148,201,163,244,167, 48, -122, 51, 10,193,102, 68, 90, 88, 82,239,158, 83, 63,225, 74, 61, 34,195, 47,239, -169,218, 84,123,204,210,138,239, 98,166, 98,172,172, 42, 90, 91,176, 92,149, 15, - 63,214, 29,172,239, 21,168,218,176, 97,247,247,187, 75, 59, 42, 80,174,178,221, -169,186,231,174,176,111,143,165,126,222, 48, 54,121,184,101, 52, 16,190, 26,150, -188,241, 0,198,102,104,201, 84,170,129,199,251,104, 18,240,162,253,243,186,192, -202,124,178,198, 14, 52, 68, 92,195, 70, 88, 48,122, 64, 67,116, 95,249,254,120, -216,103,140,232,172, 86, 30, 25, 92, 47,222,234,233,202, 39, 32,208, 37,133,100, - 16,128, 43, 61,111, 56,114, 49, 76,188, 32, 19,223, 97,227, 19, 30, 59,195, 37, -119, 10,108, 79, 83,110,234,234, 51, 72, 11,123, 56, 48,139,219,201, 93, 69, 0, -171, 98, 96, 26,203, 63,212, 91,211,177, 82,150, 41, 77,237,131, 22,210,176, 95, - 67, 35,131, 83, 8,204,125, 21, 72,160,125, 94,157,153,214, 52,165, 33, 78, 40, -132,173,140, 14, 5, 6,185, 61, 55,123,110,203,251, 96,208,199, 45, 14, 99, 93, - 11,102, 74, 21,150, 96,194,222, 39, 84,120,185, 88,128, 3, 78, 95,109, 46,204, - 71, 89,174,109,237,148,176,193,203,241,120, 98,114,131, 2,176,221,104,132,107, - 47,244,229,144,217, 90, 22,244, 43,213,146, 50, 94,252,254, 97, 34, 6,133,138, -214,102,195,171, 46,209,159, 50, 56,152,116, 3, 58, 47,180,221,120,244,229, 65, -250,185,248, 11,246,105, 34,110,225, 51,142,100,107, 49, 85,106,144,225,179, 73, - 68,187,173, 16,144,248,118,123, 57,114,241,243,127, 0, 72,111, 71,191,246,213, -197,192,104,233,233, 59, 21, 61, 94, 76, 9,207, 30,189, 87,191, 48,156,225, 67, - 87,214,113,203,142,177,239,233, 48, 94, 86,175,198,194,207,223,144,172,142,170, -139,167,235,248, 88,112,194,241, 94, 58, 60, 50,169,127,185,187, 82,126, 37,126, -228, 92, 14,210, 82, 27,194,158,201, 88,241,244,127,223,176, 28,156,129,169, 64, -218,130,222,197, 37, 68,228,230,119,250,150, 33,135,240, 85,228,188, 13,245, 91, -131,204,222, 80, 12,103, 78, 13,211,144,138, 97,132,117,135,149,105,104, 70, 38, - 93,118,101, 98,230,250,210, 55, 83,102,126,255,184,176, 28, 5,117, 87,136, 63, - 54,236,126,126,197,189,191, 43,160, 56,107, 72, 59,193,153,226,104,173, 64,215, -105, 47,133,129,124,120, 51, 83,208, 53,156,231,148,202, 49,135,225, 0,102, 58, -192,194, 0,246, 60, 28,241,126, 67,204,157,196, 84,231,152,208,190,136, 70,133, -149,193,102, 22,126,216,236,238,220, 60,205,200,244,188, 78,250, 2, 76, 65,154, -205, 40,200, 94, 98,124, 99,165,199,250, 92,145,188, 49,247, 88,187,216,171, 63, -197,200, 88, 37, 71,107,234,110, 86,102, 76,222, 11, 27,119,109,128, 3,118, 16, - 3, 85,190,179, 6,241,234,178, 24,115,132,152,116,124, 67,118,248, 55,187,169, - 13, 24,119,175,149,222,247, 10,166, 53,123,165,154,102,122, 26,106, 25, 27,138, -186,253,210, 40,166,102, 1,103,137,187,240, 94,204,110,141, 52,146,239,201, 19, - 35, 88,213,176,106, 93,216,103,155,240,129,135,173, 2, 60,185,185,175,144, 9, -163,112, 30,116, 72, 82, 27, 67,193,240,160, 22, 77,101,116,227,248,117,122, 18, -113, 11, 71,140, 12, 99,169, 39,184,216, 50, 66, 27, 93,134, 4, 52,240,235,207, -202, 39, 55,155,135, 18,190,167,187,121, 85, 0,181, 27,173,203, 97,150,203, 96, -252,255, 67,255,226, 13,181,250,224, 36,165,193, 96, 47, 11,101,218,222,232,208, - 34,208,151, 68,212,130,225,152, 80,157,148, 2,108, 55, 62,145, 57,109, 21, 39, -112, 5, 59, 58,180, 23,249, 49, 90, 3,104,102, 64, 86, 48,165, 42, 73,110,207, -248,176, 54, 42,181, 82,219,249,131,127,237,121,138, 16, 97,133,238,125, 71, 69, -110, 55,194, 66,157, 92,240,100, 6, 37, 69, 55,227, 28,159,144,184,214,207,132, - 16, 90,135,197, 30,171, 62, 84, 42,165,167, 66,159, 4,220,101,192, 5,117,175, -225, 54,114,158,133, 9, 99,145,100,234, 63,129,253,132,210, 2, 97,206, 52, 83, -224, 72,224,211,147, 97, 76, 95, 88,247,104,192,138,204,208,243,245, 30,177,215, - 95,253,247, 22,178,248,109,152, 88,143,226,157, 96,144, 6,208,170, 80, 82,254, -128,157, 4, +uint8_t GB_JITpackage_0 [56509] = { + 40,181, 47,253,160,168,243, 8, 0,164,208, 0, 10,185,100, 33, 45,176,174,172, + 27,186,140,104,187,228, 76, 62,247,248, 41,106,132, 27,252, 51, 21, 59,129,228, +182,207,255, 15,172,170, 92,153,194,119, 50, 31,169, 39,249, 65,255,193,254,198, +174, 4,231, 1, 25, 2, 25, 2,118,122,115,213, 82,182,149, 61, 10,111,233,246, +211,172,252,216,206,183,211, 27,148,206,143,164,150,101,236,251,146,126,182,251, + 79,195, 74,182,148,110,249,195, 28,121,106, 57, 94,232, 27,220,222,159, 93,131, +244,200,117,134,206, 91,163,199,143,179, 60, 54,213,238,132,127,181,166,192,177, + 92, 39,196,165,243,225,219,139,149,107,123, 38,247,255,111,159,110, 83,235, 14, +198, 23,134,122,239,173,107,209,187, 87, 38, 1, 93,240,253,184,113,100, 11,181, +217,117,220,122, 33,106, 59, 16,205,225, 26, 53,110,255,110,236,141,181,233, 93, +251, 34,131, 64, 42,190, 48, 11,117,227, 87,203,237,221,105,254, 91,211, 34, 55, +135,175,173,124,255,243, 66,247,227, 48,108,202,153, 63, 61, 28,162, 52,106,179, +118, 90, 95,254,175,187, 63, 39,167, 43,103,146, 11, 6,117,119,126,248,155,114, + 98,213,234,183,241,167, 55,166,152,167,150, 31,213,234, 12,192, 86,243,254,175, +206,120,171,213,184,233,220,248,103,167,153, 94,243,186,187, 53,114, 77,187, 90, +150,253,145,195,239,117,119,186,229,234,188,177, 93,227, 13,183,159,246,162,111, +220,158,249,223,222,161,223,230,253,177, 29, 57, 61,214,185,251,221,218, 52,122, +230, 87,161,185, 61,106, 19,126,107, 33,173,182, 22, 41,200,104, 47,203,158,180, +211,137, 92,187,123,192, 60,125,119, 66,183, 70,126,183,161,219,211,163,135,101, +223,233, 77, 90, 63,190,111, 61, 26,185, 58,255, 99,248, 92,157, 62,189,142,206, +105,142, 70,217,178,246, 5, 53,215, 24,189, 59,150, 65,211,111,244,248,111,127, +119,218,236, 62, 12,165, 71, 89,227,253,205,114,188,181,189,201,125,155,118, 60, +171,113,228,159,236,120, 76, 18, 16,221, 81, 28,241,158,219,188,181,229, 5,209, + 95, 91,155, 20, 8,141, 9,102,146,237,241,254,206,240,223,142,155, 25,166,148, + 98, 72, 64,226, 33, 1,129, 0,242,144, 96, 73,139, 24,254,244,196, 9, 79, 20, +135,186,107,189,169, 97,232,104, 46,110,104,177,195,221, 93,118,187,241, 87, 59, +239,172,115,107,201,145,110, 98,136,136, 8, 7,100,146,152, 18, 48, 70, 81, 36, + 93, 39,250, 69,164,223, 99, 7,235, 59, 63,140, 35, 34, 2,145,126,218,188, 30, + 59,145, 76, 35, 62,166, 2, 19,228, 1, 11, 64,136,197,170, 92, 31, 34, 48,213, + 57, 77,147, 68, 0, 62,160, 68,100, 97, 34, 27,230,233,206,231,200,223,239,219, +222,188, 16, 92,228, 13,173, 59,205,155,227,125,213,126,174, 83,235,182,114,164, + 98, 65,150,105,154,167, 50,117, 77,174, 12, 75,150, 85, 85,134, 37, 99,218,252, + 31,237,104,247,219,165, 43,123,224, 1, 44, 73, 30, 73, 81, 36, 69,145,132,199, +117,168, 90,172, 72, 76, 7, 88,211,184,207,226,179,146,111,180,116,115, 64, 24, +187,100, 42,170,146, 97, 20, 70,198, 17, 75, 44, 35,150, 38,244,200, 66,163, 42, +112, 96, 66,193, 55,147, 32, 80, 89, 88, 92,223,130,187,217, 89,209,176, 40,178, + 55,218,116,242,189,152,167,110,138,192, 34, 90,243,207, 98, 17, 29,208, 99, 34, + 65,123,223,127,116, 80, 38, 30, 5, 12, 64, 30, 19, 19, 19, 16,142, 76, 76, 72, + 64, 32, 16,202, 3, 18, 65,144,101,150,203,133, 77,178,246,196,206, 74,110, 46, +126, 92,133, 15,228, 79,185,205,199, 68,117,167, 36,221,126, 66,189,225,136,248, +239,116,123,233, 23,159,167,254,136,149, 83,200,163, 95,207,250,198,176, 90,174, + 46, 13,165,193, 40,149, 28,101, 25, 87,119, 11,249, 63, 86,214,249, 32, 86,172, +201, 92, 48, 26, 86, 70,161, 76, 46, 44, 20, 5, 3, 6,202,133,169, 92,170,140, + 98,105, 44, 87, 22,101,172,140,172,194, 42,217,212,153,174,125, 75,248,114,218, +106, 61,134, 80,146, 32,128,177,200,176, 13, 5,211, 27,147, 82,104,215, 76, 52, +114, 44,245, 72,181,150, 17, 10, 37,185, 80, 46,188,233,220,166,172, 18, 73,255, +166,159,118, 0, 71, 67, 55, 53,128, 64, 32, 13,207, 72, 32,134, 89,229, 34, 98, +102, 9, 20, 77, 16,213,214,238,207,237,216,125,127,108,199,240,105, 87,239, 13, +255, 52,205,126, 91,233, 61,169, 71,111, 15,247, 91,173,206,103,248,177,148,218, +214,226,198, 64, 50, 51, 59, 36,182, 42,151,198,178,201,100,154,171, 65, 6,128, + 5, 8, 96, 41, 98, 10,149, 97,133, 56, 64, 0, 6,177, 20,130,160, 72, 66, 67, + 85,222, 55,210, 8,201,176,132,162,104,168,138, 23,107, 59,231,241,214, 73,173, +229,112, 38,149,213,189, 23,116,147,157,242,190,130, 16,135,101,187,243, 87, 4, +112, 96,100, 24, 24, 42,115,193, 91,203,186,205, 0,210,118,215,191,251,109,247, + 63, 59, 61,212, 31,221, 99,189,118,140,233, 1, 33, 25,219, 41, 2,205, 6,211, +105, 7,174,235, 89,105, 0,163,210, 80, 21,236,162, 42,151,201, 91,206,103, 11, +200,200,105,207, 62, 83, 16,152, 92,246,235, 72,100, 46,152, 76,182,133, 73, 35, +215,126, 8,129,224,138,137, 21,225,162, 80,150,203,178,249, 47,118,160,158, 72, +240, 64,192, 21,216,134,194,208,176, 28,253, 45, 81,128, 51,162, 32,132, 43,216, +218,100,145, 26, 33,165,253, 97,248,224, 10,198, 48,171,170, 54,216, 5,135, 71, +214, 84, 86, 3,201, 37,131,160,193, 84,172,137,165,185, 88, 44,208,116,192,211, +241,236,245,184, 26,187,202,243,222, 87, 59, 36,167, 36, 48, 65,238,247,228,118, +235,241,246, 61,127,252,108, 55, 74,255,110, 59,141,211,186, 75,247,206,174,214, +123,163,144, 32, 12,193,210,227, 0, 43, 80, 0,137, 88,138, 34,201,227,192, 4, + 9,200, 0,183,179, 63, 26, 61,247,155,115, 13,107, 98,161,224,207,237,213,126, +122, 83,194,201,213,251, 40,127,172, 71, 64,176, 66, 93, 24,195,235,205,161,243, + 98,154,178,217, 1, 82,236,177,235,164,240,102,235,164,184,118,218, 1,135,188, +246,110, 80,113,144, 48, 79, 27,154,117, 47, 82,168, 45,225,106,132,192,212, 99, +197, 48,250,108,183, 21,118,232,183, 13,106,164,116, 86,180, 10,223,107, 53,236, +239,141, 21,237,163,159,132,235,148, 33, 10, 70, 96,197,255,211,243,238, 84,111, +143,229,186,167,229,217, 12, 39,150,203, 1, 67,176, 80,108,113, 77, 44,151,138, + 51, 23,198, 44, 42,147,161, 30, 96,104,174, 7, 16,187, 48, 74,194, 13, 18,176, +139,127, 78,217, 30, 63,119,179,119,186,115,241, 19,233, 55,173,155,136,143,224, +220, 78,113,250,124, 62, 85,194,141,204,177,204,159,133,208, 90,141,179, 78, 13, +212,161,232,241,103, 67, 76, 33, 53, 72,104,144, 16, 49,100,150, 22,102,177,170, +139,210, 80, 37, 76,161, 59,235,134, 43, 2, 40,254, 8,106,174, 90, 44,128,167, +169, 97,236, 93,221, 78, 79,152,167,255,136,136, 72,231,222,174, 74,104,104,208, +108, 46, 18,138,227,247,217,225,126,150, 19, 29,160, 99,202,120, 64, 12, 64,216, + 99, 45, 16,102,150,108, 48, 9,203,149,128, 51,151, 6, 84,133, 33, 2,190,218, + 69, 67, 77, 26, 26,216,170, 80,150, 76,146, 40,148,205,227,241,128, 60, 72,156, +239,161,219, 58, 61,232,150, 66,244,162,167,237,105,234,205,245,229,200, 17, 11, +203, 80, 24,204,210, 92,155, 8,123,254, 93,237,243,251,247,211,245, 41,222,195, +237,159, 70, 0, 34, 81, 33, 9, 38, 87, 38, 69,140,192,129,101,131, 81, 29,192, + 38,148,149,193,208, 88,254,109,231, 34,105, 79,139,236,178,244,200, 15,217, 3, +172,223,199,210,175, 44,204, 45, 75,126, 35,214, 96,148, 4,225,136, 35,120,127, +214,142, 89,153,171,245,182, 53, 87, 43, 57, 76,241,161,248,161, 49,226,234, 59, + 33,104,189, 45,196,120, 31,195,123,194,106,217,155,218,235,246, 97, 59,120, 31, + 5,135, 25, 35, 95, 91, 86,112, 82, 33,191,181, 27, 58, 72,147,226,138,136,230, + 50,105, 74,239,157,212, 61, 17, 12,203,137,154,127, 29, 8, 26,165,181, 92,198, + 68,209,216, 90,236,188,246, 17,145,131,239, 80,237,135, 96,196,114,193, 50,168, +139, 8,127,106, 45,191, 55,232,237, 62, 98,188, 39,130,166,199,145,168, 98,142, + 64,192,104, 80, 24,199, 27,229,182, 89,103, 8,250,125, 59, 79,252,159,182,245, +116,206,197,231,246,126, 81,138,126,250,215,157,127,118,243, 64, 30,232,129, 30, +200,171,147,161,228,129,234, 91,237,236, 38, 86,133,146, 29,129, 92,142,211,147, +193, 60,133,226,199, 35,211,122,177,157,175,209,225, 79,136,143,247,125,110,154, + 7,134,115,163,108,111, 57,159,179,241,239,207, 8,117, 62, 96,132,138, 89,241, +215,216, 30, 67, 42, 60,183,245,246, 67, 43,179,209, 84,155,140, 6,131, 14, 48, +170, 18,129,130, 31, 21, 21, 69,132, 41,105, 96, 21, 85,240,130,138,130,170, 94, +211,198, 71,239,139,119,155, 92,113,133, 20,140,149,113,203, 26,202,134,178,176, + 38,145,233,237,244,196,174, 57,210, 78, 30,248,114,243,235, 55,213,207, 57,227, + 54, 39,113,183,111,220,206, 80,131,210,205,218,194,252,136, 37,230, 44,123,136, +248,129,229,180, 30,168,221,102,168,121, 12,146, 28,182, 70,157,143,175,199,251, + 13, 85, 67, 69,250,232, 99, 39, 54,152,139, 12,114,117,114, 68, 99, 65,101, 38, + 92,255,194,114, 57,168, 46, 20,137,165,114,177, 70,143,173,236,206,221,154,118, + 15,121,210, 44,229, 48,127,222, 71,158, 66,118,107, 14, 51, 5,219,205,145,193, +225,136,124, 0, 26,192, 38,150,206,231,254,243,209,113,159,173,205,161,232, 30, +173,138,186,170,203,194, 98,131,133,220,122,237, 73, 64,200, 92, 42, 86, 37,179, +184,100, 31, 91, 55,234,247,168, 46, 11,133, 73, 16,135,221,168,211, 57,130,150, +132, 76,141,204, 72,146, 20, 50,140, 1,147, 64, 16, 12, 16,143,148,141,136,115, +121, 26, 63, 19, 65, 51,113, 41, 40, 9,149, 24,133, 51,132, 17, 98,136, 33, 36, + 34, 34, 34, 34,129, 72,144, 36,205, 3, 86,138, 0,156,195, 14,176,123, 72,116, + 14, 62,123,186,229,155,125,158, 74, 57,221,224,131,162,200, 35,152, 23,110,200, +164, 21,155,172,104,176, 66,166,243,174,172,176,245, 9,136, 67,242,200, 17,112, +172,192,204, 91, 16, 22,242,246, 27, 18, 85, 18, 60,102, 4,110, 70,162,208,207, + 79, 88,157, 89, 75,240,184, 15,186, 86,230,248, 71,169,165, 65,215, 63, 48, 42, +160,142,121, 6,248,218,188, 22, 80,248, 39,135,253, 35,164,123,123, 34, 58, 24, + 33, 24,113, 19,101,114, 19,209,241, 62,119, 83, 8, 87,113,200,198,188,248, 17, + 19,155,228, 11,123,104,191,101, 21, 90,224, 11,221,100,153,133, 25,163,193,196, +217, 12,222,164,130,149,176, 34, 9,111,125, 55,254, 81,194, 85,225, 8,139,125, +238,195,151,242,233,147,111,137, 71, 33,176,230,130, 51,130,251, 34, 20,157,126, + 21, 68, 10,166, 43,204,248,230, 51,178, 12, 11,207,140, 27,102,254, 97,136, 97, + 33,175,213, 78,110,158,114,203, 87, 40, 10, 63, 24, 6,209, 27,210, 72, 65,124, + 86, 92,215, 52,229, 30,113, 1, 8,141, 9,225,146, 72, 10, 98,132,112,220,210, +153,107, 92,152,170, 6,141, 97,249, 58,207,159,145,158, 50,216,209,179,113,223, +154,174,238,148, 23, 26, 9, 53, 75,214,249,132,147, 38,180, 97,218, 56, 33, 53, + 13,124, 20, 37, 14,188,132,123, 30, 8,116,148, 32,172,108, 51,143, 35, 64,235, +153, 2,162, 56,155, 87, 45, 12, 73,163, 9, 80,112,118,219, 49, 82,239,207,166, +129, 48,104, 22, 87,165, 54,201,119,103,146,209, 43,114, 69,180, 6, 97,160, 95, + 51,103, 83,188, 46, 14,198,162,186,138, 63,108, 44,191,174,182,231, 0, 30, 92, +245, 2, 56,165,205,178,220,236, 36,244,243,101,163,222, 58, 49, 75,165, 36, 9, + 79,191,131, 55, 4, 69,226, 56,199,106,222,136,183, 2, 52, 4,117,193,155,168, +120,196,148, 45, 49, 61,192,187,139, 91,204,156,133,229,100,141,126,181,137, 78, +167,163,148, 82, 5, 5, 57, 69, 16, 8, 49,194, 88,170, 1,232, 59, 68, 89,210, + 6,171,182,130,180, 18,177, 28, 43,106, 15,140,243,149, 57,215,233,125,225,225, +237,171,172,119,215, 80, 40,110,113,206,202, 74,198,235,170,224, 56,179,139, 5, +146,234, 13,163,216,149,187,124,221,110, 54,248, 67,203,176, 19, 39, 97,103, 43, +143,255, 5,203,195, 88, 14,241,197, 17,147,135, 83,194, 90,220,189, 96,240, 1, +104,144,252, 74,243,134, 28,193, 3,133,114,235,252,189,204, 69,236,136,212, 69, + 37,240,171,116, 52, 85,202,103,120, 68,200,189, 42, 76, 10, 88, 96,195,191,106, +187,183, 57,165,223, 73,109,190, 33, 77,215,150,113,202,159,206,225, 19, 1,117, +187,106, 18, 7, 25, 84, 13,252,251, 3, 37,152,147,222,123,106, 56, 17,200,223, +183, 90,172,203, 88, 25,213,202,199,146, 51,114,113, 77,208, 74, 56, 27, 5,219, +230, 16, 37, 62, 69, 77,181, 84,104, 30,165,131,241,170,204,146,203,173,206,197, + 37,144,149,106, 80,190,203, 41,148, 2,120, 58,190, 32, 64, 89,242,156,107, 38, + 31,202,183,175,250, 77,147,241,146, 6,234, 1,209,192,130,229, 6, 96,251, 80, + 65, 62,202,193,192,194,228, 45,202, 4, 91, 9,129,232,222, 54, 43,199, 3,107, + 0,230,143, 38,221,134,128,103, 80, 97,107, 5, 82, 64, 56, 35, 65,146,223,160, + 69, 4, 90, 78, 82,209,160, 96,118,113,172, 50,241,105,204,156,233,124, 60,209, + 19,220, 76,189, 57,170, 79, 9, 60,245, 43,233,247, 10,129,169, 4, 24,124,219, + 76, 37,228, 47,220, 67, 2, 57, 5,156,103,108,145,252,226,217, 7, 80,176,178, +193,120, 20, 61,134, 0,103,205, 34, 97,153, 45, 45,106,184, 73,217,111,190,236, +160,142, 43,227,165,117,103,193, 98, 13, 80,230,142, 28, 16,194, 22,107,155,242, + 4, 3,141, 63, 80,122, 71,115, 68,152, 68,202,230, 76, 64, 24,131,204, 82,113, + 67, 59,203, 93, 4, 23,121,211, 3,116, 67,212, 3,113, 50,250,216, 96,164,111, + 40, 15,172,134,184,174, 2,191, 57,179,159, 74, 67,213, 54,100, 24, 81, 83, 23, +205,228, 44, 19, 61,203,232, 6, 33,166, 98, 46,247, 20,167,140,133,134,123,191, +112, 90,186, 79,108,145, 75,246, 50, 68, 28,145,226,245, 79,202, 16, 79,188, 13, + 56, 95,112,201, 7, 40,225,109,255,161,250,224,110,239, 60,237,140,133,180,172, + 23,227, 16,165, 42,128, 52,231, 75, 4,176, 40,178, 58, 87,100,112, 54, 19,150, +115, 95,244, 32,176, 32, 42,122,180,104, 72, 48,115,213, 43,125, 33,176,118,241, +124,223, 41,138, 48,243,248, 51,144,188, 81,161, 25, 42,112,118, 34,162,249,128, +241,218, 31,190, 65,205,239,160,192,121,109, 69,190,235, 47, 64,168,118,129, 8, + 7,146, 60,155,223,122,108,253,201,209,188, 55,227, 65,163, 57,235, 85, 62,252, +217,185,152,242, 93, 10, 65, 48, 60,246, 90, 42,163, 48,176, 65,200, 49,110,213, +229,122,165,142, 45,233,223,109, 80, 4,167,136,187, 90, 33,127,146,189,216,120, +211, 67,143, 32,105, 13,243, 27, 65, 69,124,204, 58,196,170, 39, 47, 26,229, 66, + 57, 52, 48, 3,146, 33, 89,182,230,241,130,156, 76, 28, 24, 70, 80, 82, 69, 20, +211,170,216, 5, 42, 14,182,112, 57,248, 32, 15, 92, 83, 15,223,175, 70,213, 2, +107, 4,202, 67,233, 34,134, 17,253,163,151, 40,108,117,138, 90, 28, 27,221,160, + 98,140, 49,209, 83,217, 14,153,210,199,220, 75, 87,111,187,252, 79, 79, 74,131, +190, 97,247, 14,144, 80, 83,135,110,132, 80,113,147,176,126,114,147,140,249,152, + 46,146, 24, 51, 91,218, 43, 3,232,177,169, 69,139,122, 12,134,184,201, 30,145, +145,165,195,179,112, 75,254,204,117,248, 34,120,122,100,138,237, 65,124,101,190, +175,235, 20, 33, 11,227,128,147, 16, 41, 85,246,146, 43, 44,170,141, 41, 5, 26, +122,164, 17,201,238,141,112, 81, 0, 62,203,177,100,236, 65,225, 91,138, 33,121, +110,229, 14,131,254,109,179, 84,105,250, 18,171, 23, 36,247,127,170, 81,251, 2, +197,103,244,248,155, 36,141,139,113, 17,199,164,158,195, 65, 80, 91,184,222,234, +146, 56,155,177,247, 36,187,162,140,139, 31,196,224, 31,249,223, 64, 13,241,122, +193,162, 39,114,155, 78,114,144,217,254, 12,141,216, 80, 48, 68, 43, 20,244,163, +168,112,149,228,171, 45,241,230,171, 22, 26,108, 10, 99,144, 2, 0,159,145,124, + 95,106,128, 81,124, 58,253,172,152,136,223, 38, 80, 99,184,254, 66, 17, 30, 97, + 63, 88, 56, 43,214, 46,244,183,200,178, 20,137, 22,184,206,206,223,166, 63,250, + 83, 0, 79,243,112,210,199,138,152,235,114, 98,222,191, 62,115,242, 38, 65,160, +166, 65,113, 68,157,110, 53,199,254,108, 1,197, 65,175,130,203, 76,193, 20,227, +116, 2,183, 56, 55,248,219,166, 90, 79, 82, 34, 7, 74, 10,240, 50,216, 61,119, +212, 89,213, 16,121,142,147,156, 17, 33,189,163, 99,132,224,142,110,180, 32,158, + 18,138,134,142,188, 23, 86,179,172, 15, 59, 20,207, 2,134,101,124,249,230,113, + 32,115,236,106,247,117,230,240, 45, 30,241,159,221,212,218,177,100,128, 27, 9, +101,142, 45,222,225,182,112,233,210,164,254,184,245, 7,132,138,207, 72, 80, 1, + 51,142,216,148,244,110, 10, 72, 5, 33, 60,129, 83,228, 90,149,189,248,106, 47, + 92, 2,212,195, 66, 39,196, 82,227, 88, 11,165,109,207,106,220,219,179, 2, 28, +153,236,222,164, 68, 89, 26,255,212,130, 15, 10, 57,237,224, 19,179, 94, 0, 84, + 7, 33,153,147,237,105,226,101, 62,224,141,165,129,233,181, 13,192,193, 86, 79, +239,166, 85,123,128,196,229, 85,133,147, 9,209,173,192,112, 8, 50, 71,212,122, +173,239,212,252,232, 44,127, 36,105, 74, 89,141,119, 71, 2,191,127, 30,212,211, + 50,162,162,219, 92, 76,206,191,143,102, 16,202,250, 28,199,108, 93,242,139,135, +153,131, 53,227, 76,129,190,227, 77, 54,238,235, 83, 13, 28,181, 45,194, 27, 11, +108,171, 69,203, 35,172, 55,123, 2,109, 30,167,167, 1,105, 91, 41,176,126, 81, +182, 26,244,237,104,236,154,249, 56,247,204,182,251, 7,169,236,190,135, 4, 6, +134, 35,154, 42, 6,152,228, 38, 81, 59, 18, 12,193,214, 86,103,225, 71,162, 22, + 56, 60, 34,158, 9,144,142, 55, 1, 48,198,255, 77,124, 71,174,201,126, 54,101, +221, 66,119,194,155,104, 44, 4,241,138,192, 15,252,181,150,183,244,232,114,143, + 77, 5, 62,225, 36, 24, 73,177,132,172,157,100, 78,248,120, 68,241, 13, 35, 48, + 98, 27,220,194,251, 24,223, 66,148,108,117, 53, 19,134, 13,132, 29, 91, 59,255, +116, 96,163,255,250,175,238,168,114, 20,103, 95,240,117,252, 77, 6,232,233, 99, + 42,205,131, 9, 42,175, 43, 25, 34,100,122,249, 0,160, 7,174,230,198, 85, 77, +172, 96, 35,168, 5,176, 68, 48, 55,169,138,128, 44, 58,150, 18, 25,204, 3,113, +129, 29, 43, 32,209,215, 32,147, 52,214, 4, 41,224, 74, 65, 24,253,142, 81,125, + 56, 49, 67,248,186,128,201,212,188,148,119, 6, 69, 12,203, 62,102,177, 65,188, + 42, 70, 8, 11, 2, 97, 31, 76, 88,158, 89,154, 62, 20,234,169,192,155, 96,226, +243,158,169, 46, 54,131, 59,173, 33, 4, 89, 45, 8,216, 83, 1,217,128,187, 46, + 19,109, 19, 63, 31,192,152, 10, 63, 92, 21, 8, 61,117, 9,133,120,250, 58,132, +249,126,119, 92,169,147,131,135,174, 76, 7,102, 25,152,175,254,141, 68,167,170, + 70, 28,218,208, 43,214, 2, 48, 99, 66, 24, 36,140, 9,142,226, 61,226, 77,232, +174, 93,138,147, 82, 94,108, 84,149, 53, 68, 90, 27,131, 93,157,159, 5,198, 44, +125, 3,248, 84, 54,201,158,188,208,115,114, 95, 38, 66,176,234,150, 95, 28, 3, +101,187,244, 65,104,103,216,117,116, 47,192,131,124,104,109, 54,176,236, 64,195, + 61,196, 17,100,138,245,171,234,244,155,246,196, 16, 39, 13,191, 2,237,191,108, +196, 45, 98,144,238,100, 19,129, 71,194,247, 22,247, 39, 22, 8,197,250, 73,235, +135, 27,133, 21,196, 46,237, 25,133, 0,143,172, 0, 0, 98,110,106, 57,123, 81, + 59, 0, 83, 79, 39,102,206, 40,124, 10, 45, 16,144,161, 97,111, 92, 24, 39, 74, +121, 53, 28,210, 35, 26,137,242,174,171, 12,117, 21,207,233, 76,253, 75, 27, 91, + 37, 71, 87,225,104, 84,106,142, 47,241, 37,112,174,142,226,140, 34,123,172,170, + 87, 94,246,205, 60,247,231,143, 79, 74, 33,251,222, 88,130,130, 41, 25, 79, 74, +233, 38, 1,113,200,251,232, 15,146,105,149, 40,172, 95, 18,233,232,160,216,129, +152,175, 86, 39,122,135, 80, 48,226,235, 38,227,188, 89, 64,123, 21,214,226,156, +142,135, 35, 85, 89, 51, 45, 24, 19, 58, 57, 91,129,121,165,131,222,216,167,190, +172, 49,255, 23,225, 75, 17,166,138,206, 47, 17,200,242,226,195,198,224,194,118, +154, 43,118,199,207,131,227, 26,252,210, 82,166, 98, 28, 92,244,218, 73, 23, 27, +127,157, 4,237,234,234,203,241,193, 64, 65,109,159,156,185,206, 80,103,125, 18, + 63, 88,152,113, 94, 51,186,176,170, 23, 24,162,148, 39, 5,118,100,128,221, 40, + 11, 80,252, 57, 45,133,122,211, 43, 63, 57, 71,150, 27, 9, 50,103,100,206,133, +120, 92,209, 90,144, 71, 6, 57,152,201,192,147,195,227,187, 7,166,156, 14,163, +163, 17, 96,140,212,158, 20, 57, 65,181,128,155, 76,114,194, 81, 60, 74,156,157, +144, 36, 55, 90, 57,120,112,166, 54, 73,158, 54,124,129, 7, 56, 69,100, 49, 66, +161,140,104, 78, 32, 74, 16,136,228, 96,135, 53,133, 19,211, 1, 81, 90,172, 88, +102, 84, 68,150, 14,134, 66,183, 94, 13, 81,106, 99,118,143,204, 95,153,114,215, +194, 50,111, 98,180, 26, 65, 52,185, 96, 29,134, 80,218,111,252, 29,255,122, 68, +115,179,129,234, 39,254,246, 0,246,212,238,198, 56,125,100, 73, 76, 82, 10,113, + 8,131,189, 49,129, 38, 65,115,150, 71,214,101, 90, 4,101,210,109,160,112, 47, +119, 34, 99,127,187, 43,166, 96, 31,101,250,191, 81, 15,118, 85,108, 69, 37,132, +201, 42, 81,234,166,138, 37, 88,115,238,204,171,196, 68,108,172, 56, 37,201, 83, + 36, 97, 76, 71, 10, 10, 40,223, 12, 26,170, 64,124, 64,242,154, 60,146,207, 81, + 18,240, 21,132, 28,239,213,173, 38, 96, 89,130,119, 82,128,137,104,148,146, 65, + 34, 11,170, 25,195,149,226, 91,193,192,117, 46,148, 88, 41, 93,255,190, 49,111, +227, 38, 64,249,212, 33,176, 13, 65,165, 1,246, 25, 83,251, 16,138,136,242,221, + 65, 44, 88,221,115, 12,131, 61,248, 48,103,121, 58,193, 78,142, 64, 12,247,143, + 42, 64,111, 19,167, 60,222,220,138, 83, 40,133, 87, 13,196,150,229,144, 40,205, +222,187, 65,123,105,232, 13,183,146,148,221, 10, 37,109, 38, 68,105,144,210,164, + 81, 3, 69,192, 85,235,232,178, 82, 33, 8,168,101, 35,153,208,246,132, 99, 22, + 84,215, 45, 49,168, 28, 52, 89, 68, 55, 89, 18, 20,171,128,196,212,107,244,224, + 45, 42,102,196, 71,164, 54, 41,202,183,160,232,164,160,117,171,228, 16, 41,115, +191, 99, 51, 72, 36,120,118,222,241,205,250,160,204, 39,179, 3, 55,162,181,136, +142, 28, 33, 44,175,208,143,209,240,113, 58,233,186,161,138,163,232, 36, 9,187, + 1,210,179,117, 78, 97,128,210, 49,200,134,139,108,215,170,253, 43,133,231,222, + 65, 29,104,150, 22, 45, 18,181,198,201,188,156,213, 99,155,187, 34,119,195,174, +158,108,219,214, 74,190,163,247, 99, 43,244,210,125, 98,101, 27,220,134, 43, 98, +100,220, 63,192,136, 60,195,147, 71,253, 67, 31, 46,120, 49, 67, 45, 46,141,165, + 33, 54,128,132, 88, 23,182,251,251, 34,221,252,140,212,139, 54,233,238,219,124, +119, 8,102,137,245,201,113,188, 5,141, 42, 65,166,230, 50,188,230,153, 17, 65, +213, 60, 86,200,224,191,215,151,226,197,117,194,219, 22,225,198, 19,251,199,179, +152,224, 24,118,209, 22, 46,253, 83,225, 59, 6, 82, 68, 54, 12,105,133, 80, 61, +201, 78,212, 86,127,244,161,114, 95,212, 8,194,253,163,141,254,200,187,198,196, + 92, 13,242, 12,155,216,179, 82, 2, 30,107, 5,204,181,185, 70,242,101,196,101, + 33,215, 82,132,155,211,219, 38, 14,215,245,164,249,159,103,238,109,114,130, 60, + 5,128,233,219,225, 80, 0,109, 77, 2,106, 83, 20,194,106,174, 61,144,252, 81, + 75, 96,142,111, 44, 58,217, 26,195, 5, 17,230,220,218,235, 27,197,228,136, 67, +148, 19, 34,131, 2,248,225,208,126,243,115,159, 33,210,133,176,115,251,222, 88, + 74, 14, 38,146,203,146,131, 2,126,244,177, 95,128,173,115, 90,101,114, 70,205, + 55, 5, 33,248,216,206,207,195,216,192, 92, 79, 76,169,191, 98, 35,221, 74, 61, +127,116, 0,247, 1, 68, 30,195,106,180, 70,192,226, 0,115,187,125,127,150, 59, + 21,180, 48,246, 46, 82,188, 43,226,212, 8, 86, 79,155,106,133,156,222,179,223, +219,152,186,252, 79, 15,109,126,129,186, 90,123,106, 54,143,174, 84,153,188,190, +116, 62,128,241,176,136,123,219, 4, 20, 86,111,109, 7, 72, 74, 65,144,126, 40, +146,128, 0, 25,109,102, 43,144,102,141,118, 71,164,249,106, 34, 8,108, 77, 69, +187, 90,150, 26, 60, 4,246, 30, 95,122, 35,134, 49, 39, 91, 4, 14, 50, 23, 73, +149, 5, 3, 89, 5, 79,244,148, 75,103,225,213,150,185, 44, 58, 15,225, 47,115, + 6,116,235,120,140,213,170,107,199, 91,156, 82, 72,159, 72,213,203, 96,210,155, + 73,239,227, 19,246,144,115, 68,103, 57, 87,213, 73, 23,195,189,242,126,226, 13, +123, 67, 62,176, 77,197,144,172,161,168,202, 71,121, 54,185, 81,236,198, 44,215, + 36,155, 98,191, 66, 49,209, 77, 32, 64,213,151,136,217, 83,208, 81,216,231,107, +213, 42,130,137,148, 49, 77,204, 9,204,107, 87, 33, 84, 16,181,249, 18, 70, 94, +225,148,238,248,135, 43, 38, 10,161,129, 80,229,151, 28,115,147,191,119,246, 76, +126,157,183, 41,218,135,132,140, 81, 49, 9, 43, 1,139,155,198, 50,138,235, 32, +190,230, 46, 81,133,170, 91,148,200,189, 90,180,225,126, 96,249,248, 78, 65,169, + 14, 8,216, 26,191, 54,123, 98, 21, 80,136,180, 39, 11,209,193,113,106,249,124, +184,161,168,129, 36, 83,255,251,221, 64,119,203,250,236,185,128, 21,189, 78,243, +139, 22,135, 53, 94,108,154,219,242, 51, 39,181, 39,240, 47,107,207, 86,162,157, + 91, 97,200,229,242,211, 83,176, 68, 52, 60,201,218,200,200,245,142,145,206,212, + 98,129,142,125,194,181,147,165, 43,185,133, 32,168,180, 67,206,160, 38, 69, 33, + 82, 1,207, 33,252, 97,199, 88,135,145,229, 37,138, 16,120,100,211,124, 66,161, + 86,247, 21, 20,201, 76,228,254,129,244,246, 63, 71,150, 20,118,104,221, 71, 6, + 87, 22, 34,140, 6, 3, 27, 74,177,184,146,179,231, 26, 75,109,245,181,234, 5, + 86,112, 69,181,178,115, 71, 36,204,207,222,137,232, 50, 94,144,230, 12, 73,114, + 93,185,245,202, 97,228,136,126,103, 64, 68, 34,152,204,216,105,203,232, 94,185, + 82, 33, 43, 86, 46,230,153,185, 7,133,200, 20,250, 67,168, 11,245, 18, 73,232, + 34,117,243, 95, 26, 63, 13,247,213, 89, 76, 59,128,142, 57,155, 89,236,197,247, +139,215,123,249,106, 49,159,166,109,128, 15,232,161,175, 64, 66,231,136,120,121, +112, 43,187, 58,123, 3,244, 72,108,201,155, 74, 91,179, 71,158,175,202,231,121, +220, 87, 34, 66,227,122,248,135,158,144,149, 22, 73,192,229,224,170,190, 7, 2, +232,113,118, 50,220, 77, 51,251,172, 86,195,221, 51, 14,156,150,249, 60,175,158, +219,224,141, 50, 3, 2,144,128,118,252, 96, 67, 65, 71, 73, 86, 19,247, 14,155, + 48,200,192, 87,200,134, 27,140,182,171, 6,224, 28,186,249, 3, 81,198,110,216, +248, 24, 41, 41,240, 76,212,239,186, 40,112,230,193, 13,238,103, 30, 9, 9,230, +158,226, 99, 53,206, 62, 24, 19,234,119,244,125,170, 19,196, 29,171,145, 57,101, + 99,154,159, 10,183,229,101, 99, 58,239, 4, 42, 24,170, 47,194,138,222, 17, 71, +252, 24, 7, 15,119, 74, 38,244, 5,237, 11,128,234,136, 57,233, 33, 31, 8, 60, +206, 35, 87, 39, 34,115, 11, 13,240,209,138,111,146,109, 63, 34, 37, 6,236, 55, + 3,202, 74, 62, 36, 9,233,233, 25,139,241,230, 35,169,120,247,139, 14,102, 22, +203,107,120, 5,136,110,247,132,220,160,224,139,150,178,223, 60,172,176,209,197, +110,111, 86,167, 13,233,250, 84,164,101,140,122,106,103,140,239,179,180, 7,179, + 65,189,124, 36, 94,238,134, 72,148, 20, 63,219,151,202, 47,156, 51,123, 41,200, + 64,123, 18,224, 65,173,142, 0, 87, 45,110,137,233,156,147,120, 8,244,167,210, +219, 29, 68,192,180,103,142,175,153,234, 95,106,206,122,203, 48,123, 55,221,177, +195,241, 14,112,217, 23,255,109,123,204,159,120, 39, 15,119,167,123, 28,167, 4, +214,211,244, 39, 94,173,236, 70, 22, 22,139, 58, 47,127,165,100,219,142,209, 70, + 52,201,140,243,183,157,129, 48, 78, 23, 2, 18,200, 89,248,211, 42, 52, 64, 56, +209, 52,196,217, 0, 21,227,142,165, 51,203, 18,209,165,164, 33,133,155,160,241, +133,245,255,131, 80,197, 98,167,186,140,112, 37, 88,115, 47, 74, 55, 79,172,248, + 62, 11,217, 72,210,131,212, 88, 77,246,170,172,139,206, 62,156, 84,225,195, 24, +100, 82,170,184,153,238, 70, 0,173,133,222, 22,126, 19,235,240, 39, 68,101,119, + 9,189,152, 58, 84,171,102, 82,212, 39,243,224,217, 16, 68,227,226,241,255,110, + 44,210, 20, 65,238,216,178, 71,227, 8,216,225,176,180, 62,119,223,125,102, 80, +194,133, 91, 48, 70,114,166,185,209,224,247, 44,105,132, 20,220, 11, 33, 92,166, +173,130,183,108, 49,248, 35,236,186, 1,249, 4,246,198, 34,102, 77,120,182,164, + 75,186, 49, 32,147,184,223, 8, 17,160, 79,210,246, 84,231,105, 61,193,167, 35, +149,210,128, 71,100, 38, 75, 8,164, 34,135,228,245,140, 74, 79,129,152,205, 68, + 12,196,164, 33,175,110,164,158, 49,115,203,234, 31, 6,169,208, 25,132,239, 92, + 89,152, 11, 70,245,142, 91,184, 46, 85, 32, 71, 86, 31, 60, 14, 44,177,213, 8, +143,243,142, 82,187,199,183,255,136,248, 16,241, 36, 69, 69, 75,240,253, 8,223, +190, 54,202, 23,205,170, 24,129,115,148,108, 62,145, 35,224,119,240, 95,146,130, +195, 56, 87,114,233, 71,217,106, 97,230,119,225,174,151, 92,133, 30, 81, 42, 70, +123,121, 53,159,174,142,137, 26,254,105, 21,151,117,227, 60,156, 81, 22, 35, 72, + 23, 53,223, 68, 41,191,139,155,186,238, 30, 91,234, 21,181, 34, 8,230,159, 3, +170,164,121,165,209, 0,186, 1, 84,143, 0,134, 52,164, 40,208,206,204, 3,200, + 4, 1,156, 94,173,164,200, 3, 31,251, 0, 31,108,200, 49,152, 78,191,141, 23, + 70,133, 74,175, 26,111,210, 28,186,140, 82, 15, 71,169,152,151, 0,152, 0,150, + 0, 63, 59,255,209, 91, 47,205,136,179,112,244, 34, 83,169,252,217,127,242,255, + 76, 43, 67, 47,149,179, 79, 62, 67, 81,174, 99, 88, 65, 19,178, 65, 82, 73,170, +221, 65, 64,232, 94,163,105, 22, 54,146,248,179,234,216,187,140,239,103,223, 26, + 90,173,165,232,197, 81,172,123, 95, 25, 91,149,231,163,225, 88, 51,157, 96, 28, +246,216,126,195, 56,238,129, 97,143,199,172,186, 14,198, 89,168,255,175, 30,192, +226,208,169, 98,126, 68,194,185, 64, 12,254,245,164,231,233,243,177, 95,233,174, + 58,244,220,105,250, 74, 90,208, 17,119, 48,143,223, 33,219,127, 72,158,232, 15, + 40, 80,228, 35, 61,184,143,156,106,106, 70, 2,239,185,184, 79, 50,139,166,131, +197,223,151,212,192,193,112,244,223, 13,121,106,163, 49, 27,141, 57, 16, 49,244, +205,132,146, 22, 93,252,140,159,252, 68, 68,226, 57,198,182, 30, 5, 49,136, 80, +221,163, 34, 19, 65,242,148,143, 16, 68, 38, 73, 53, 41, 85,119,163, 65, 41, 21, + 37,122, 55, 21,134,228,157, 58,215,253,209, 76, 65, 31, 2,164, 2,237,207,173, +225,115, 42, 70,253, 82, 61,231,148,200,104,127, 92, 64,226, 17,111, 60,223, 59, +215, 11, 11, 34,227,223,246, 87,179,245, 72,209, 83,254,235,128,120,138,190,178, +109, 28,221,171,121, 95,237,145,250,130,234,215,218,226, 29,122,244, 45, 78,194, +180,167,244, 51, 26,150,101, 46,221, 26,127,215, 66, 56, 24,173,219, 24,184,135, +252,206, 22, 90,138, 68, 47, 69, 13,214, 14,209,215, 20, 91, 91, 30,112,105, 13, + 49,174, 56, 66, 56,172, 54,228, 42,150, 76,171,218,134,182,245, 54, 25,226,255, +122,177, 72,110,124, 61,237, 81, 0,142,205, 78,203, 52,215,140,232, 50, 93,102, + 73,248,212,251, 85, 91,209,246,109,165,199, 83, 2,158, 71, 31, 80, 80, 81,188, +228, 22, 4,201, 78,235,203, 83,222, 49, 77,211,173, 34,249,161, 95, 15,235,197, +168,107,230, 37,159, 37,104,221, 15, 40,241, 8,164,148, 79,190, 53,106, 61,211, +219, 80,169,140, 39,135, 52,183,166,245,241,149,230, 12, 14,153,132, 94, 48,241, + 78,241, 78,240,160, 89,184,142,219, 50, 79, 39, 53, 87,186,206,150,185, 56,145, + 65,165,191, 2, 44,214,132, 62,123,159,214,179, 21,206, 57,231,188, 28,241,220, +128,124,150, 19,140,248,243,114,150,115,122,233,187, 47, 77,209,192,192,165,102, +127,233, 5,175,213,118,187, 48,215, 38,115, 89,182, 76, 63, 84,180,214, 66,166, + 81, 88, 32, 54,135,136,231,190,245, 98,170,181,221,151,138, 53,131,149,157,189, +203,214, 93,155,205,133,209,128,121, 83, 81,164,159, 48, 83,206,163,170, 54,144, +241, 81, 85, 34, 4,203,182, 77,211, 52, 23, 77,198,130,125, 55,227,208,214,111, +211,144, 97, 20, 64,160, 43,187, 58, 46,135,222,168,227,156,177,162, 77,210, 1, +195, 3, 17, 12, 48, 10,203, 99,114, 49, 11,115,241, 3, 83,128,146, 72, 29, 36, +133,202, 97, 16, 48, 33, 18, 33,140, 24,194, 8, 33,132,136, 4, 34, 66, 34, 82, + 18,169, 3,247, 14,178, 58,252, 82,142, 29,136,239, 69,222,162,166, 1, 3,237, +214,213, 63,190, 82, 14, 57, 13,104, 13,153,181, 77, 19, 31,234,176,109,181,183, + 24, 52,195,168,212,107,164,209,136,196,209, 52, 15,127,221, 58, 51,232, 31, 62, + 74,133, 3,120, 73, 46,196, 84,137,138, 0, 76, 25,111, 42, 18,109,253, 89, 40, +142,214,143,148,147, 36,132,218,250, 12, 6,216,198, 12, 8,154, 79,122, 82, 56, +218,151, 68,163, 24,136,132,154, 19, 76,176,140, 69,104,144, 89, 37, 70,124,232, + 49,170,122,131,121,217, 31,114, 8, 50, 82,150, 37,168,224, 20, 11, 70, 40,106, +164,171,117, 88, 21,138,145, 36,138,162,111, 80, 44,247, 69,154,127, 68,158, 40, + 22,203,224,217,165, 54, 85, 41, 52,205,101, 43,234,181,101, 52,170, 49,206, 72, + 22, 82,146,187,115,161,243,124,126,141, 88,252,109,147, 59, 84,126,219,109, 87, + 64, 24,157, 30,165,133,219,186, 33,207,148, 68,204,151, 39,142,236, 19, 26, 72, +225,155, 4,160, 53, 63,196,188, 79, 56,177, 2,201,255, 24, 80, 47, 17,147,140, +122,139, 32,100, 3,222, 48,155,102,108,163,187, 0,232, 33, 77,223,200, 50, 74, + 63, 10, 90,203,172,201,254, 0,209,203, 26, 16,126,100, 45,124, 51,244, 99,109, +244,109, 49,224,128,163,118,106,244, 4, 63, 54,147, 14,114,171, 42, 27,248,149, + 17,187,168,226,141,141, 77,144,235, 47,248, 53,116,124,109,188,235, 82,189,215, + 20,132,208,124,248,200,107,114,161, 65,190,118,135,162, 22,128,175, 41,110, 45, +190,173,213,187,116,102, 81, 99, 80,119,190,229,101,175,199, 32, 4,126,155, 45, + 24, 98,246, 44, 77,152, 3,190,172, 52,218,235, 6,153,109, 5,117,171, 1,244, + 13,254, 53,188,159,201,123,176, 28, 43, 72,135, 38,144,129, 24,178,194, 83, 83, + 4,104, 12, 33, 0, 14,155, 43,162,126,109,232, 28, 22, 96,206, 16, 10, 37,162, + 15,143,254, 71, 80, 42,171, 59,182,201,135, 46, 1, 69, 6,213, 89, 78,165,200, +193, 99, 88, 66,144, 77, 17,211, 89, 39, 10,208,237, 10, 90,237,170,252,119,206, + 52,132,102,127,135, 31,220,135,133, 98,116,143,232,125,239,202,171, 78,182, 7, +220,199,132,139,118,254,115, 32, 63,233, 7, 44, 79, 57,166,253,216,175,129, 97, + 8,251,179,194, 47,154,218, 87,195, 50, 11,188,120, 99, 25,121,252,198,194,195, +183,232,206, 49,131, 31, 85,144,196,253,251,130,165, 70,167,153,120, 78,147, 48, +171,227,220,180, 11,233,211,236,162,157, 6,246,197,129, 42,175, 46, 55, 95,154, +236, 30, 40,157,100,110,197, 30, 78, 83,157, 30,238,194,242,221, 48, 49, 7,213, +220,165,240, 47,152,154,206,208,146, 41, 33,169,166, 31, 12,182,233,219, 38,235, +176,249,114, 15, 65,227,217,222,108,140,223, 44,207,143, 75, 20,195,106,140,124, + 93, 98, 44,159,171,120, 14,225, 66,251, 60,244, 21, 46,205, 78,165,174,148, 78, +105,170, 86, 14,188, 44, 7, 23, 85,153,206,191,254, 57,107, 31,229,158,117, 68, + 86, 93, 92,126, 38,234, 93, 80,134,216, 2,193,211,116,220,145, 11,122, 82, 36, + 69,162, 20,238,222,244,118,205, 18,194, 8,110, 50,210,122,136,252,208,135, 18, +135,169, 42,227,120,170, 9, 14,220,126, 18,192,200, 33, 96,100,155,115,132, 11, +122, 62, 4,214,183, 40, 77, 63,223,214,108, 38,175,128, 11, 7, 72, 43,163,209, +199, 18, 67, 92, 1,184, 68,240,239,102,165,245,135,155, 5, 99,117, 35,143, 80, +199, 13, 6,126, 97,240,132, 68, 24, 59,130, 81,208,162, 76,154, 41,144,110,107, +244, 85, 48,100, 9,115,106, 96,124, 81,112, 90,242, 10,132,168,107, 41,148, 98, + 89,119,168,211,241, 58,221,247,244,236,229, 67,201,228,167, 3, 49,246,131,125, +114, 9,185,240,185,163,241, 39,112,145,183,188, 34, 72,173,246,126,254, 72, 50, + 23, 99, 97,188, 82,197,116, 25,193, 63,222, 99,238,206,119, 85, 5, 93,212,212, + 44,115,155, 63, 14,167, 27, 67, 24,202, 25, 79,155,157, 53,109, 79, 8,198,129, +125,130,118, 42,122, 60, 87, 14,169, 79, 3, 7, 84,151,222,209, 39,222,218, 29, + 22,162, 3,216,193,101, 30,158, 48,175,206, 37,181, 89, 83,111,210,166, 80,220, + 1,150, 18,151, 56,197, 84, 92,167,158,113,101, 70,221,240, 89, 97, 84, 21,103, +213,194,139,245, 38, 93,217, 80,147,188,227, 29, 96,232,245,172, 18, 54,178,164, +206,165, 39,160, 0,215,116,117, 44,248,143, 37,107,224, 97, 9, 83,187, 46, 64, + 99,232,172,107, 96,174,139,120,202,196, 6,153,112,184, 20,226,241,233, 85, 13, +105,247, 75, 69,106, 11, 95,135,125, 75,127, 34, 19,154,228,219,100,140, 75, 12, +202,234, 53,249,101,126, 55,238, 53, 43,121,166,113,144,175,209,103, 46, 86, 46, +210, 65,201, 72,235,234,144,208, 12, 96, 15,182,178, 56,147,212, 98, 99, 25,203, + 24,239, 73,238, 10, 38,208, 40,227,175, 39, 70, 44, 55,115, 67,210,189,170, 67, + 0, 51,157,138, 37,254, 3,207,119,196, 93,113, 38,183, 36, 24,132,202,194,184, +160,146,140, 37, 48,111,207, 57, 71, 90, 20,223,124, 3, 27,167,137,174,143, 55, + 49, 17,224, 18,115,137, 47, 44, 1,116, 64, 27,155,172,165,152, 3,168, 0, 52, +158,155, 42,104,162, 0,156, 57,149,125, 11,212,164,212,155, 17, 29,194, 10, 66, +113, 27, 94,116,182,103, 12,141,111,172,227, 68, 73,112,205, 94, 40,152,199,139, + 94, 67, 90,228,218, 75, 89, 36,217,169,175, 17, 68,145, 89, 41, 63,102, 44, 38, +239,189, 84,245,236, 70, 73,200, 47, 9, 24,114,192, 2,202,162,180,209,113,230, +118,201,114, 2,105,226,158,168, 81,157,234, 69, 69,103, 40, 32, 70,196, 40, 35, +205, 68,252, 44, 87,197,176, 10, 82,162,201, 0,101,246,228, 32,159, 65,112, 26, +198,242,218,108, 76,183,197,153, 67,164,116,131,154,209, 73,158,224,254,214,208, + 49,187, 1,210,138, 69, 49,103,122,229,210,152,197,125,238, 37,130,109, 41,224, +107,201,130, 95, 30, 97, 25, 19,108, 99, 23,237,156,134,159, 86,173,204, 40, 99, + 38,222, 73,112, 41,238,213, 61,130,141,135,251,130,166, 95, 44,146, 1,174, 94, +207,163, 44, 8,239, 35, 81, 8,179, 40,199, 46,234,249, 99,200,150, 74, 32,104, + 64,221,170, 36,141, 63, 41, 26,152, 96,220,156, 15, 37, 15, 4,143, 76,149, 35, + 55,255,221, 4,165, 27, 42, 78, 89, 40,198,225,234, 63,127,207, 16, 15, 16,206, + 44,121, 81, 76, 31,114,116,218, 70,101,146, 74,166,194, 82,220,139,180,199,199, +171,135, 12, 34,177,114,183, 50,216, 1, 54,143,194,197, 33,211,210,174,164,122, + 47,161,213, 28,155,173, 19, 48, 86,191,141,208,202,202,135,174,162,164,213, 25, + 79,114, 38, 43, 39, 60,148, 56, 83,246, 83, 98, 6,133,225,178, 94, 5,254,184, +113,176,179,162,175, 14, 54,228, 11,177, 63, 72,162,126, 1, 0,183, 91, 41, 22, +112,180,165, 92, 0, 99, 11,205,241,190,247, 29,138, 29,242,240,224, 99,242, 32, +248, 60, 68,157, 27, 73, 72, 41,233,161,139,209, 90,140, 68,179, 29,115, 45,155, +162,152, 88,173,232,192, 50,200,105,183, 30, 3,203, 19, 75,132, 33,134,246, 44, +213,110, 52, 68,112,198,191, 58, 86, 33, 2,141, 50, 12, 28, 63,173, 8,157,113, +131,168,197, 64, 22,124, 51,248,151, 69,161,253, 93,194,234,232, 63,250,187,219, + 16,181, 26, 74, 73,248,247, 96, 73,226, 25,172, 45, 76, 77, 93, 8, 74,186,167, +140,196,200, 38, 78,230,231, 80,223, 58, 20,205,253, 8,165,220,159, 79, 96, 34, + 32,109,202, 83,193, 48,220,211,131,204, 89, 32,211, 29,101,133,247,236,241,124, +115, 95,130,136, 36,203,102, 93, 1, 13,143,169,112,189,113,235,116,184, 76,173, + 64, 41, 33, 29,145,156,240, 29, 36,166, 47,132, 29,255, 44,219,150,194,244,178, +198,212,179,148,139, 63, 34,109,199,134,108, 12,106,224,204,154, 89,255,224, 41, +216,171,219,133,197,184,110,207, 94,120,150, 78, 37, 3,147,111,103,110,114, 32, + 32,136,227, 42, 36,248,198,154,140,124,239, 15, 53,103, 9,195,250,114,130,246, +149,242, 28,221,131, 39, 42,243,201, 80,112,216,255,155, 48,228, 35,131, 70,136, +175, 25, 36, 88,239, 52,104,123,147, 71, 56, 21, 77, 46,161,131,138, 53,241,252, +200,105, 33, 27,111,151, 85,163,208,145,215,127,175, 50,201,150,205, 0, 52,186, + 54,126, 9,178, 95,233,215,157,205,186,224,248, 83, 80,229, 22, 48,139, 14, 59, +159,213,165, 27,229, 34, 54, 49, 41, 87,205,142,160,177,122, 35, 65,157,208, 85, +143, 81,179, 75, 36,246, 15,179,121, 74,154,200,230, 64, 78, 82,145, 75,173, 4, + 83, 43,237, 40, 20,246, 8, 78,247,236,132,181,115, 8,131,160,225, 49, 60,136, +160, 73,180,143, 89,204,186,128, 39, 61,123,218,207,155, 76, 8,113,243,102, 53, +133,140, 83,121, 1,106,133, 44,121,146,127,141,238, 43,151, 58,200, 79,107, 29, +237, 91, 75,144,152,148,219,207,233, 5, 36,148,251, 59, 29,160, 77, 69,163,120, +165, 12,116,197,162,196, 26, 59,185, 4, 13,240, 26,239,142,231,230, 75,178,255, +172, 43,209, 87, 63,144, 27, 1,248, 18,243,114, 87,124,169,233,129, 93,184,147, + 70, 46,134,215,237, 97, 61,243, 26, 94, 27,249, 86,199,100, 35,180, 86,251,159, + 97,204,163, 29, 33, 18, 95, 0, 32,180, 83,108,204,244, 7,127,177, 91,229, 66, +196,225, 1,232,123, 5,166, 62,211, 53, 49,196,215,203, 51,156,192,193, 42, 18, +104,198,189,152,222,254, 39,251, 49,132,132,165,101, 16,150,156,205, 28,232, 24, +192,210,238,110, 66,203,130,176,100,157, 27,161,160, 57,153, 62,202,254,101,150, + 88, 36,147,129,172, 14,225,245, 50,150, 82,171, 19,130, 74, 93, 72,121,227, 24, +163,235, 76, 69, 96,185, 26,153,199,193,188,173, 30,239, 33, 17,203, 23,109,100, +254, 4, 6, 75,231,234,167,247,119,212, 91,216, 51, 77, 1, 6,186,203,132, 36, + 71,153,211, 65,203, 23,191, 4, 50,246,163, 44, 62,177, 89,134,101,194, 48, 47, +194, 68, 18,176, 60, 53, 54,205, 18, 8,115,233, 67,224,243, 63,200, 62,194, 60, + 81, 93,214,168, 93,120, 70,207,124,108, 43,214, 97,203,171,172,148,133,125,153, +227, 89,145,143,243, 63, 7,112,234,179, 79, 3, 86,194,141,135,178, 75,177,170, +240,200, 20,244, 54,197, 63,200,220,160,151, 45, 38,209,188,230, 46, 55,182,235, + 72, 90,161,172, 12, 9, 43,137,128, 71,205, 67,140,245, 83,151,224,149, 51,184, +144,140, 7,183,238,134, 85,224,137,145,113, 86,156, 78, 49,104, 55,168, 39,181, +220,172,170,187,209,168, 4,139, 62, 55,123, 30, 15,127, 56,230,184,207,160, 65, +100,172, 19,104,200, 84,104,179,190, 28, 38,165,160,191,164,244,112,126, 43, 11, + 59,133,170,127,143, 74,208,184,117,141,184,164, 0,100,248,132,245,122,144,223, +207,151,188,206,237,235, 66, 70,207,240, 45,187,199,102, 45,176, 77, 78,254,234, +191,235,116,196,229, 45,123,239,185,112, 49, 25,114, 20, 71, 1,171,205,148,184, +114, 55, 41,231,138,219, 48,228, 49, 99, 21, 91, 13,222, 72, 27, 23, 32,172,139, +222,175, 22,196,253,100,176,153,125, 4,184, 92,139,254,182, 37, 36, 46,168, 88, +177, 58, 95,115, 42, 46, 6, 56, 11,113,109, 14,116, 61,225,244,121, 35, 67, 98, +158,111, 57,252,225,125,236,177, 71,108, 39,224, 98,136,184,156,162,105,100,150, +141,146,212, 30,238,184,167, 78,151, 37,173,159,119, 9, 13, 59, 86,169,212,206, +205,168, 22,194, 23, 56, 70, 81,121, 68,175,195, 69, 2,191, 49, 96,165, 13,202, + 39, 40, 61,220,158,182,114,247,211, 79,222,234, 12,148,135,239, 46,254, 94, 28, +186,213, 56, 56, 38, 3,151,152, 6, 86,242, 6, 67, 97,105,105, 73,219,184,179, +104, 10, 7, 48,121,148, 1,193, 13, 30, 97, 98, 17,238, 28, 68,166,189,132,130, + 8, 61,131, 78, 98,216,220,230,246,252, 64,153,128, 86,131,101, 14,120,200,152, +251, 76,176,173, 73,213, 11, 15,249, 72, 82, 71,137,126,201,123, 4, 56,157, 39, + 4, 60,135,250,200,234,166, 73,229,139, 85,115,145,242,175, 3,149, 75,155,165, + 10,220,220,127, 42, 12, 48, 42,111,243,118,252,193, 9,120, 72,129,220,165, 83, +212, 71, 44,254,163, 37,144, 14,126,234,229, 79, 53, 40, 83,137,254, 7,186, 49, + 47, 31,137,155,155, 90,217,191,163, 33,195,188,194,115,152,105,233,117, 38,223, + 14, 36, 62,220,176,252, 48,143, 39,172,177,125, 88, 71,232, 58,197,205,241, 37, + 81,231, 16,157, 75,132, 8,113,253, 88,241,131,124,114, 1, 42,113, 83,127, 20, +229, 5,232,228,230,234, 81,148, 7, 80,137,155,176,235,230, 0, 40, 56,193, 46, +189, 49, 96,137,204,170,136, 97, 1, 44,208, 89, 15, 5,198,106, 9, 44,230,155, + 57,198, 35, 59,176, 56,254,254,189, 24, 77, 2, 69,198,239, 75,139,161, 73,160, + 24,220,216, 42, 44, 61,176,160,179, 44,208, 67, 47,179,165,233, 98,174,212,171, +224,122,230,237,255, 24,147,179,255,134,200,144,144, 26,254,131, 75,254,179,195, + 58,251, 97, 40,124, 3,133,139,115, 94,204,228,183, 16, 99,163,177,237,249,233, +106,248, 38,193, 20,205,193,237,169, 8,156,128,130,182,160,209, 48,167,176, 23, +146,254,127, 45, 91,188, 78, 79, 93,188, 82,100,121,129,147,137,172,132, 83, 80, +238,209,245, 37, 93,140, 74,136, 45, 83,183, 86,122,136,204, 74,226, 82,139, 14, +174,156, 68, 42,169,238,102, 76,240,101,231, 20, 48, 87,106,140,199, 11,140, 85, +223, 89,108,138,224, 8, 60,233, 87,252, 52,146,103, 8,161,182,180,181,105,143, +170, 61,118,158, 76, 60, 78, 91, 76, 82, 21, 35, 42, 14, 78,134,255, 36,234,225, +114, 44, 36,160, 2, 77, 77, 25,159, 41,120,121, 38,212,254,127, 69,125, 78,205, +152, 90,113,238,174,186,231,231,152,116,110, 54,136,181, 13,114,157,251,250, 48, +209,158,106,172,140, 1,149, 88,144,144, 81, 63,230,115, 99, 83, 8, 55, 48, 55, +145,171,128,217,118,165,130,155, 99, 95,161, 76,160,226, 65,112, 42,179,237,193, +117,209,237,113,221,255,235, 35, 74,104, 61,198, 15,150, 49,177,152, 7, 0, 88, + 98,200,253, 74,255, 79,206,253,126,244,162,175, 41, 48, 19,195,201,148,221, 76, + 88, 67,109,212, 34, 92,172, 77, 25,116,217,208,147, 82,245, 25,137, 71, 43, 81, +176,212,169,138, 56, 80,199, 6,126, 5,144,137,252,217, 42,169,168,162,227, 21, + 51,119, 43,250,195, 5, 8, 37, 69, 15, 48,104,156, 19,183,165,124,180,124,184, + 48,161, 6,223, 97,129, 6,228, 69,176, 25,237, 6, 88, 18, 12, 54,202, 58, 60, +207, 47,235, 10, 9,131,247, 69, 6,220, 9, 77, 50, 67, 19,154,253, 71, 90,129, + 35,184,110, 6, 77,199, 59,149,252, 13,240,103,144, 76,234,246, 63,167, 37,246, +193,109,140,118, 53, 1, 56, 90, 68, 82, 97, 14,102,133,244,108, 34,105, 0,111, +128, 89, 79,170,233,197, 71,150,203,145,229,111, 6,173,232, 25, 1, 49, 95,211, + 58,160, 80, 11, 22,174, 70, 15, 4,194, 45,248, 90,121,148,140, 32, 81, 28, 50, +209,245, 60,219, 60,204,233,121,166, 57,190,242,150, 66, 81, 73, 43, 20, 30,173, + 37,164, 65, 76, 60,252,197, 67,196,102,150,209,227,221,117,145,141, 9, 36,226, +102,242,169, 73,143,207,196,108, 37,147,114,237,192, 51, 55,235, 17, 43,166, 20, +247,154,129,204,168, 38, 68,119,184,148, 63, 3,239,156, 89,244,216,254,180,143, +133, 1, 94,194,167, 57, 56,157, 41, 22,131,168, 65,158,108,251,130, 90, 38, 21, +197,155,161, 63,167,143, 13, 16,170, 3,222,140, 96, 42, 19, 69,200,208,143,167, +207, 33, 18,223, 73,230,116,188,112,134,164,153, 50,107,182,121,237, 54,216,164, +192, 96, 66, 82,106,212,203, 5, 78, 40, 0,157,138,112, 50,137,138, 65, 4, 6, + 36, 22,146, 14, 20,200,250, 96,208,227,114, 54, 16,122,199, 41, 81, 28,163, 43, +147,255,101,133, 33,124,120,159,219,128, 99, 22,177,118,136,219,188, 27,175,103, +169, 41, 69,163,125, 81,201, 17,248, 91,165,115,220,206,144, 66,166,150,253, 68, +148,145, 91,149,248, 9, 60, 68, 15, 64,171, 4, 57, 41, 76, 15, 12, 38, 44, 49, +252,228,130,125,251, 78, 4, 22,240,127,157,106,127,249,206,185,133,210,199, 32, +184,238,110, 1,177,123, 90,104,194, 67,156,219, 45,161,234,244, 60, 25,193, 3, +157,166,116, 80,247,245,114,169,129,238,191, 72,210,200,176, 82, 61, 82, 55, 17, +176,131, 3,211, 81, 45,154,254,209,239,215,114, 97,210,209,163,172, 96,209, 77, +178, 70,164,237,161,174, 5,218, 66, 60, 61,166,121,228, 44,172, 36, 26,213,249, + 26, 16,228, 93, 40, 91,116, 80,129,111, 99, 79,157,218,235, 69, 98, 9,217,107, +193,159, 50,121, 7, 62,251, 75,107,127, 68,188,191,186, 60, 86,101, 18,246, 3, + 47,177, 95,132, 87, 40,116, 92, 34, 91,193,120, 28,234, 72, 66,209, 46,154, 38, + 31, 43,102, 59,202,135, 7,255, 19, 99, 83,118,139, 45,102,137,174, 14, 3, 61, +161,172,184, 53,203,119, 35,231,226,247, 31,243, 94,229,154,139, 77,177, 84, 9, + 33,204,100,201, 60,233,171,221,123,235, 47, 94,216, 95,155,117,186,170, 3, 82, +198,131,249,137,150, 9,159,162, 9, 12,200, 76,110,243,201,109, 13,182,237, 82, +107,121, 41,163,152, 88, 25,145, 11,182, 46,130, 41, 20, 33, 71, 64, 59,173, 95, + 94,208, 82, 99, 22, 37, 7,216, 83,223,222,111,124,202, 62,154,121, 73, 18,251, +221,186, 6,194, 13,208, 69,196,233, 76,248,211,188, 73, 10, 95,128, 53,138,100, + 16, 11,215,191,251,197,179,192,252,240, 54,128, 85, 57,248,152, 52, 5,112,115, + 7, 36,165, 2, 93, 79,119,135, 11, 25,247,200,151, 48,138, 77,106,184, 94, 52, +194, 99, 29,134,237,194, 39,231,180,101,233, 80,120,146, 13, 64,132,228, 29, 1, + 26, 75, 0, 14, 40,192,212,113, 3,120, 59, 0,177,184, 16,227,231,131, 60,157, + 25, 1,128,131, 18, 23,232, 12, 0, 63,127,220,103,219,184,125,149,104,192, 52, + 9, 66, 0,192, 85,217, 0,217, 0,217, 0,206,191, 81,137,208,113,192,215,100, + 82,185, 9,149,148,143,137,162, 36, 75, 81, 38,255,121,242, 16,166,131,209, 76, +236,196, 61, 47, 76,254, 8,117,147,199,209,127,202,245, 57,211,157,255, 36, 63, +144, 73,176, 57,116, 15,136,231, 38, 87, 25,228,124, 61,101,174,175,119,110,189, +162,171, 42,117, 81, 46,185, 71,167,229, 33,130,224, 68, 52, 84,250, 86, 84,239, +231,197, 23,198, 14,241, 82, 32,200,135,119, 36,216,189, 20,203,236,153, 28,228, +223,249,134, 58,154, 10,109,147, 65,149,158,126,120, 50, 37, 29,149,175, 94,186, +145,178,199, 0, 61,116, 88,101,233,134,194, 76,104,159, 9, 8,209, 7,132, 17, +209,209,141,243,153,162,221, 86, 83, 94,253, 68, 14,134, 62, 30,110,110,206,152, +171, 35,204,167, 51, 48,192, 61,253, 11, 97,187,204,164,100,106,103,138,243,148, +214, 17,109, 28, 46, 20,218,181, 88, 44,125,212,196,184,171, 76,229,101, 6,125, + 82, 63,167,101, 13,174,165,220,109,175,116,176,147,203,111, 39,155, 75,188,208, +227,166,208, 88, 86, 78,114,107,158, 16,247,181, 27,183,211,233,187, 65,159, 91, +180,225,150, 17,195, 40,125,206, 72,178, 43, 51, 59,169,199,155,199, 89, 31,151, + 50, 66, 6,232,201,143,161, 36, 5,133, 3,134, 3,217,177, 75,249,202, 51, 61, + 24,133,194,109,226, 56, 5,152,129,228, 44, 65,129,129, 53, 77,227,208,141,122, + 30,237, 84,215,251,202,183,201,228,166,148,152,196, 24,235,124,170, 40,138,233, +199,133, 41,199, 34, 93,101,182,152, 41, 60, 83,236,189,100,190,220,193, 6,247, + 33,230,120, 13, 44,228,130, 75, 77,254,175, 1, 49, 1,100, 44,210, 98,242, 59, + 48, 0, 82, 43, 48,247, 35,129, 44, 30, 60,180, 13,237,122,171,220, 79, 86,125, +219, 79,149,101,113, 28, 75, 69,133,101,166,237,233, 36, 33,165,115,164,164, 33, +222, 9, 9,129, 25, 43,134, 88,216, 82,192,145,136, 36,200,215,162,239, 23,244, + 58, 64, 72, 88,248, 19, 21,185, 27, 66,104, 96, 93, 28, 44,138,198,126,223,247, + 69,203,218,182,112,108, 58, 65, 44,237, 84,213, 75,117,226,114,217, 56,136, 58, + 1,154,199, 2,114, 70,161,185,164, 60,151,201,130,155, 97,252, 38, 83, 13,176, +168, 84,223,197,226,251,224,166,119, 30,191,159,186, 63,166,111,148, 83, 22,111, +129,195, 80,245,106, 71, 87,222,244, 28,229,165,121,249,222,171,198,201,228,178, +189,248,132,180, 78,231,163,177,155,119,132, 28,249,158,186,202,209,225,170, 98, + 45,231,152,175,230,229,118,238,147, 79, 85, 69,213,146,129,231, 69, 85,133,154, + 72,212,209, 68, 27,128,254,132,180, 12, 8,136,207, 6,195,121,176,232, 14, 39, + 36,202, 30, 52, 17, 70,163,133, 64,218, 3,228,191,247,222,123,175,181,214,102, + 90,223,203,215,138,158,161,171, 74,154,236,185,105,132,185, 62,228, 60,147,225, +108, 65, 94,220,217,132,240,192,250,149,235, 62,239,102,199, 33, 37, 87,193,139, + 47, 14,204,113, 5, 53, 86,128, 43,163,146, 73,225,122,196, 93, 53,224,152,216, +194, 28,163, 46,105,142,198,139, 30,178, 63,138,242,187,243, 87,172, 86,182, 87, +206,153,107,236,215, 29, 29,142,112, 71, 8, 71,177,123, 4,142,218, 59,141,253, + 70, 28,143,227, 8, 69, 74,209, 56,106,217, 28,104,225, 17,230,140,242,159, 55, +189,231,250,190,234, 85,229, 27,225,160,228,184, 94, 89,212, 31,244,109, 33,132, +246,219,104, 91,251,175,149,102,231, 89,218, 31,109,180,253,240,234,234, 70,189, +174,170, 84,223, 51, 91,104, 53,150, 63,251,182,159, 51,219, 30,213, 60,250, 15, + 51,126, 1,250, 49,223,226,163,228,174, 50, 6, 45,234, 94,105,190, 85,103,201, +127,146,126,118,119, 89,229,231,251, 69,109,198,221,182,205,182, 42,184,123,103, +239,159, 32,214,119,140, 54,118,119,119,247,229, 85,142,155,240,206,212, 70, 3, +143,188,168, 20, 27,230,176, 54, 32, 8, 3,164, 0, 8, 28, 9, 10,100, 34,105, + 26, 73,130,252,180, 64,199, 3,155,133,146, 4, 17, 6,162,128, 70, 16, 17, 0, + 24,128, 1, 36,128, 0, 12, 0, 48,128, 2, 0, 2, 6, 40, 4,152,102, 31,207, +183,160,222,117,193,244, 56,173,192,101, 47, 95,221, 21,128, 97,240, 56,110, 43, +134,204,160,212, 7,103, 22, 0, 42, 64,149, 51,145, 79, 91,181, 23,240,233,140, + 18,179,173, 30,100, 88,196,205,131, 83,226, 91,149,134,152,212,224,217, 23,183, + 92,116, 67,140, 34, 8,107,107,189, 40,171,186,205,182,150,152,232,189,175,145, + 20,236,237, 38,169,187,237, 86,222, 34, 10,247,140,117,208,160,200,102,219,240, +187,106, 53, 24,218,220,205, 7, 53,162,144,249, 9,149, 97, 77,130, 47, 5,176, + 93,169,252, 34, 38, 60, 43, 87,222, 2,204, 54,158, 89,238,148, 2,235, 69,193, +106,208, 19,185,225, 49, 66,149, 33,140, 1,103,115,193, 73,162, 44, 31,134, 85, + 92,220,225,105, 52, 8,170,202,157, 64, 26, 53,237,255,130, 95, 55, 57,139,163, + 52,144,184,100,121, 0,202, 20,214,255,125,209, 84, 38,246,178, 36,247, 39,111, +135, 59,217, 71, 7,226,168, 23,231,108,105, 87, 52,155,156, 50, 6,171,224, 65, + 59,117, 28,172, 94, 73,134,203, 69,142,225,200, 78, 4, 50, 65,244, 57, 91, 52, +250,233,215,112,205,196,151,219,108,139,142,150, 68, 40, 31,222, 12, 39, 68, 56, +230,247,102,151, 4, 12, 96, 2,127,124, 90,224, 21, 58, 39,109, 64, 57, 94, 33, +163,213, 56, 21, 40,245,215, 1,157, 87, 58,164, 63, 87, 88, 2,208,197,156,170, +232,238,176, 36,205,135,151, 18, 53,206, 21,144,141,115, 31,206, 3, 23,130,108, +241, 3,122, 67,128,126,221,234, 28,135, 28,180, 92, 15,244, 46,190, 59,190, 93, +251, 55, 21,174, 10,239,124,150,178, 58,156,171,146, 84,226,176,201,240,177, 57, +170,139,189,118, 22, 27, 69,212,108, 34,143, 67,116,145,100, 79,110,252,168, 33, + 32,251,225, 99, 73,148,114, 13,183,219,233,123,245,204, 0, 87,185,243, 74, 85, + 38, 10,198,220,112, 65,117,212, 73,138, 6,193,213,229,205,245, 91,177,141,227, +237,234, 66, 79,223,188,217, 82, 9,105,125,165, 60,217, 43,224, 39, 82,218, 1, +210, 53, 74,132,149, 27, 55, 83,155, 88, 78, 10,197, 41, 32, 80,172, 47,250,228, + 37, 71, 2,239,205,147,204, 54, 74, 46,229,175,213, 53, 49, 89,254, 44,165,198, +233,248,200, 41,245, 4,103,244,126,164, 48,247, 4,220,237, 55, 23,220,140, 15, + 15, 5,221, 13,205, 4,164, 79,146,237,112,137, 46,101, 48,248,187,156, 71,174, + 30, 3,240,159,212,134,159, 79,140,248,128,146, 20,154,144, 48,110, 7, 10, 86, +232,146,191,100, 39, 40, 23, 97,137,243,146,212,160, 84,132, 35,163,203, 78,132, + 82, 73,174, 38,137,205,133,210, 38,206,154,150, 63, 25, 74,107,184,139, 44, 6, +228, 11,125, 44,204,124,232, 93, 80,112,134,250,230, 12,249, 46, 38,237, 80,214, +125,175,221,123, 69,183,227,223,120,183, 77,175, 52, 19,113, 70, 40,132, 33,179, + 52, 94,177,191,190,234,215, 43,222, 96,179, 39,115, 42,159,166, 84,177,182, 20, +151, 95,173, 7,232, 2,117, 3,202,177,231, 10,210, 40, 87,242, 4, 52,112,104, +156, 73,208, 97, 36,137,101, 30, 20,192,174,217,165, 91, 0,204, 68,242,136,203, +162,128, 81, 72,250, 16, 86, 40,238, 38, 21, 36,162,113,248, 93,238,181,158, 82, + 88, 16,151,190, 23,144, 23, 63, 5, 5,195,213,226,119, 81, 28, 23,224,207, 63, +150,146,218,243,253,235,194,214,223,115,104,234,213, 73, 95,180, 11, 72,178,110, +192,243, 14,171,239, 95,159, 25, 49,194, 1, 34,186, 12,100, 23,120, 89, 40,151, + 63, 31,132, 26, 33,164, 59, 67,182, 52,183,128, 50,230,115, 18, 80,186,244, 48, + 78, 89,115, 51,130,188,167,126, 14,158, 84,210, 0, 27,221,239,175,242, 26, 73, + 24, 30,240,148, 66,117,158,183, 10,216, 6, 43,214,152, 33,130,124,120, 72, 16, + 81, 36,206,162,193, 23, 5,111, 26, 41,119, 50,174, 14,140,133, 27, 87, 9, 35, +224,170, 83,198, 19, 41,220,228,225, 72,209,135, 92,144,226, 73,210, 69,165,244, +209,107,223,135, 57,187,192,167, 69,190, 35,150,216, 20, 6, 27, 68,248,132, 69, + 9, 24,215,166,180,175,102,126, 44, 52,151,175,192,151,211, 57,148,204,152, 73, +114,143,119,115,177,191, 70, 0, 4,202, 66,252,181,212, 93, 73,184, 36,219,172, +179, 39,109, 84,100,223,150,250,171,187,185,164, 20,186,236,230, 60,105,135, 14, +155, 78, 35, 25, 13, 26,209, 65, 95, 99,202, 16, 36,252, 84, 52, 93, 22,153,224, + 96, 8,222,125, 99, 24, 36,229,140,161,229, 72,147,204,183, 80, 78,134, 55,126, + 96,232, 98, 27,170, 39, 92,134,252, 6,188,168,158, 44,198,122,245,202,208, 50, + 93,116, 81,174,226,146,129, 26, 81, 84,251,139,165,216, 85, 52, 62, 92,151, 75, +251, 84, 37,123, 40,151,193,131, 12,165,197,229, 24, 88,202,242,183, 44,212,206, +232, 37, 92, 0, 89,137, 39, 33, 93,202, 95,255,185,120,193,196,136, 57, 8,136, +241, 85, 24, 69,135,150,112, 4,230, 29,154, 25,191,156, 76,162, 28, 19,110,120, +159,231, 63,101,155, 38, 61,210, 79,130, 72, 56,200,172,149, 24, 97,184, 70, 36, + 1, 8,180,101,161,190,163,125,252,173, 18,126, 65,248,107, 16,225,178,100,120, +253, 26,193, 9,189,223,241, 39, 97, 17,131, 1, 54, 62,187,204,201,115, 77, 27, +244,150, 28,197,145,131, 68, 82, 12, 84, 47, 44, 57, 39,203,228, 67,212,185, 14, +116, 24, 10,130, 11, 85,193,244,223,143,254,191,128,190, 40, 37,209,163,221,117, + 78, 20,116,103,114, 18, 29, 70,157,121, 31, 38, 5,255,158, 42,202,135, 77,198, +171,121, 68, 68, 58,253, 91,188, 76,207,203,126,111, 10, 23,232,149, 31, 77, 80, + 36,111,123, 57, 97,192,104,204,154,230, 50,132, 2,237,212, 18,174,118,246, 87, +114,120,197,133,218, 93,225,114,230,122,174,131, 11,228,118, 16,125, 4,228, 80, +165, 60,198, 1,208,224,110, 31,219,180,180, 59,167,255,125, 13, 56,213, 93,239, +156, 62,162, 69,132, 37,182,192, 26, 81,204, 23, 69,121, 28, 41,231, 88,247,107, + 26,212,224, 90,204,217, 63,170, 79,205,193,217,153,109,114,155,122, 20, 71,103, + 1, 63,142,186,254, 35,104, 17,231, 87, 0,114,248,245, 28, 6, 62, 89,124,145, + 84, 0, 68, 78, 22, 48, 66, 68,114,220, 68,198,141,161, 49,153, 28,213,111,190, + 57,250, 51,140,161,237,100,119,142,231, 12, 92, 69, 9, 23,181,199, 82,140,171, +127,181,245, 87,109,161,243, 57,150,216, 27,197,178,177, 27, 86,188,111,103,180, +101, 99, 5,227,130,172,221,190, 98,234,189,219,209,145, 35, 6, 31,105,219, 45, +222,218, 9,100,199,221, 62, 94,173, 12,222,228, 59,177,111,223, 10, 5,163,133, +134,201,171, 52, 3,139,183,164, 6, 85,236, 68,180, 5, 96,148,154,226,237,175, +133,144,150,143, 39, 32,215,127, 67,203,207,146,189, 87,176, 44, 89, 79, 95,150, +100, 44,241,130, 55, 59, 87, 96,248, 74, 40, 78,229,235, 74, 58,248,215,171,120, + 98,152,232,147, 80,176,227, 26,145,122,169, 68,120,197,118,196,124,175,191,138, +111,193,105, 10,136, 42,160,193,181, 74,210,157,242, 6,170,156, 80,146,146, 98, +140, 45, 70, 69, 80, 34,165, 44, 76, 61,206, 99,204, 64, 70, 46,200, 76,138,227, +122,157,112,252,251, 95, 64,118,243,131,146, 29, 87,201,226,128, 44, 18,197, 30, +145,113, 53, 15, 1,138,129,236,185,197,238,252, 33,210, 91,123, 65, 2, 43,146, + 57, 75,177,102, 6, 82, 36, 41,100, 98,173, 98,103,139,117,105,142,187,165,168, + 59,188,118,136,178,193, 81,156,203, 66,162,103, 46,132, 21, 7, 17,196,226,227, + 29, 58, 66,218,158,199,139, 34,235, 38,213,113, 11, 9,202,192,210, 67, 68,200, +148, 73,149,164,131, 54, 44,129,243, 35,245, 22,219,124,108,133,224,251, 81,173, + 61,240, 22, 7,200, 53, 61, 15,108, 50,154,100,130,172,130,134, 71,139,142,117, +109,135, 44,160, 9,245, 33,196,184,125, 25,127,126,165, 60, 35,111, 4,220,160, +195, 25, 15, 28,216,142,112, 77,207,137, 53, 22, 46, 68, 57,178,174, 3,253,118, + 96, 11,121,106, 7, 50, 19,131, 16, 15,144, 79,209,193,245,142,197, 89, 59,166, + 78,135,159,232,166,155,172, 83,212,218,190,151,187, 91,101,171,215,143,113,232, +170,214, 96,183,173,240,118, 14, 58,164, 99,106, 97,182,167,230, 29, 83,228,175, +144, 39,223,107,243, 34,244,181,212,120,248,197,244,192, 5, 33,129,131, 17,255, +160,220,122, 57, 21,227, 24,184,124,167,206,159,159,104, 35, 36, 91,196,208,152, +120,101, 13,214,104, 74, 68,248,242,204,111, 54,156,238,174,211, 74, 70, 37,234, +144,238, 5,188,193,222,246,100,233, 10,222, 11, 94,233, 20,193, 74,151, 32, 32, + 16,155, 17,175,235, 84, 87,165, 35, 14,242, 9, 82, 53, 55, 14, 11, 53, 17,119, +251,209,253, 5, 7,139, 90, 30,204,144,215,137,172,236, 72, 60,203,131,233,107, +236, 56, 69,181, 62,112,231,251,192, 62,147,123,245, 67,101, 12, 85, 88,143, 71, + 63, 98, 83,154,101, 65,138,140, 64, 29,212, 62,156,250, 24,235,121, 15, 72, 61, + 74,111, 76, 10,245,133, 97, 63, 7,157,131,120,232,193, 66, 93, 8,111,215,116, +179,136,105,159,103,125,240,160, 39,236,232,235,110,103, 99, 1,153,171,120, 22, +242, 58,127,168,164,179,107,198,121,233,129,109,253,112,140, 69,225, 3,192, 55, +161, 56, 26,209, 38,120, 59, 31, 58, 7,147,141,212, 4,197,110, 20,242, 17,228, +236,211,129, 85,185,151,160,209,113, 60,198, 85,215,153,139,240, 36,139,191, 25, +253, 94,227,164,147, 6,186, 85,204,154,197,218,233,117,203,217, 78,147,136,128, + 21, 61, 0,176, 8,104, 72,126,198, 9,236,141,186,153,139,189, 99,172,109,237, +190,180,131, 12, 44, 13, 46,206, 38,130,158,107,156,230,184,128,195, 1, 91, 0, +163,198,222, 77,201, 26, 80,188, 85,141,145, 9, 73,183,187,169,166,192, 78, 14, +123,144,215,188,247,199, 18, 10, 76, 77,195,199,199,170,177,116, 26, 55,231,254, + 51,243,133, 88, 39, 80, 93,205,135,119, 63,244,246,171,198,168,240,213,206,248, + 69,201,144, 62,226,126, 65, 40, 16,165, 83, 75,215, 25, 14,200, 45, 71,206,205, + 8,211,155, 98,189,221,216, 28, 82,126,219,117, 34,101, 66,163,217, 20,200,190, + 66,120,146,192, 89,101,228, 15, 21,172,191,217, 61, 58, 53,174, 65,125, 76,201, +148,142,218,155, 21,142,204, 37,161,166, 45, 45, 36, 7,182, 77, 50,237,241, 56, + 37, 19,218,203,146,133,110, 75, 94, 93,251, 97,137,160, 40,208, 33, 54, 67, 65, +192, 5,127,144,213,126,191, 85, 97, 62, 85,212,150,228, 26,165,135,246,106,234, + 13,177,248,225,131,221, 87,121,219,210, 43, 95, 80,193, 37,162,105,113,205,213, + 79,184, 36, 98,112,180,144, 56,206, 19,149,206, 2, 65, 87, 23,216, 85, 73,123, + 36,229, 46, 73,120, 58, 34,106,205,168,170,153, 76, 79, 89,129,198,159, 27, 68, + 18, 24,150, 24,211,227,181,182, 67,107,182,136,197, 87,178,225,186, 81,253,133, + 14,236,250,251, 48,186,183, 42, 33,167, 29,103,183, 73, 1,173,119,107,157,164, +108, 29,102,245,162,108,230, 40,244,231,163,103, 67,108, 32,121,159, 11, 19,208, +157, 3,191,238,103,128, 25,178,176, 40,249,108,175,175,155,176, 48,194, 95,218, +133, 74,246,255,107,103,200, 42,254, 15, 71, 58, 92,239,173,104, 89,226, 98,116, + 81, 45, 13,132, 66,188, 2,135, 26, 43, 81,185, 10, 40, 39, 61,254, 44,162,202, +227, 96, 26,135,185,200,248, 40, 43, 75,241,114, 41,179, 50,213, 6, 30,187, 41, +138,129,105,201,126,124,199, 90, 97,227, 65, 78,231, 13,137,147,199,110,162,200, + 37,234,254, 52,177,185, 23,124,115, 77,187, 83,200,193, 6, 80,200,104,214, 82, + 21,169,241, 2, 41,142,210,145,137,203, 93,193,184,244,110,195,104,161, 88, 86, + 84, 17,187, 90,189,165,124,189,157,184,169, 14,180, 97,160,135,176,103, 43, 74, +147, 36, 30, 27,120,146, 0, 81, 98,151,121,207,236,219,123, 23,249,216,108, 0, +186,233,224,176,152,185, 78, 79, 33,118,136,217, 31,182,158, 71,115, 31,226,190, +179,217, 1, 8,105, 40, 45, 24, 57,124, 17,170, 55, 39,249,200,153, 70,143, 64, +110, 6, 83, 47, 80,196, 3, 1, 19,216,195,199,174,216,215, 87,189,140,133, 29, +105,242,102,123,111,108, 34, 52, 41, 94, 6,211, 29,233, 29, 49,218,224,163, 30, + 86,244, 22,194,147,131,141,145,179,229,180,230,208, 75, 86,248,140,185, 86,123, +179,171,100,225,123, 25, 20,148, 34, 79,152, 34,236, 65,238, 24,107, 77, 79, 3, + 29, 15, 31, 69, 90, 20,162,150,253,203,119,138,244,138,234,206,237,192,182,208, + 96, 79,231,152, 64,144,144,226, 0,161,221, 81,230,123,201,221,195,120, 23, 65, + 76, 11,101,147,120, 0,163, 0,252, 76,228,159,144,171, 97, 46, 83, 17,210,216, +240,185,101,159, 47,119,242, 89,151,123,111,204,249, 34,148,122,195, 61,130, 47, +122, 19,207,247,220,100, 94, 81,166,195, 90,123, 46, 16,127, 58,254,253,164, 35, + 66, 22, 4,186,239, 46,222,226, 33, 84,110,119, 53,150,218, 83,236, 16,230, 49, +183,253,112,183, 97,222,216, 56, 56, 60,249, 51, 41, 62, 83, 11, 31,227, 7,102, + 13,234,242, 71,190,178,179,232,101,129, 49, 11, 84,207,232, 62,142, 30,178, 30, +209,194,242, 97,204, 7,163, 83,125, 98,105, 76, 46,178,104,210, 96, 21, 67,190, +106,157, 37, 62, 59, 15,190,148, 5, 7,250, 55,148,161, 56,237,110,227, 80,102, + 98, 87,124,149, 52, 28,204, 40, 83,169,114,100, 86, 34, 81, 60,143,195,228, 93, +252,246,135, 57, 40, 33,203,142, 4,195,114,163,235,164,128,152,131, 17,254,131, +103, 83, 65, 12, 27,120,217,124,227,123, 83,172, 37,156,109,123, 84, 85,251, 70, +138, 81,100, 7,178, 26, 30,202, 67,193,107,215, 29, 8,154, 27,172,234, 23, 6, +146,117,113, 46, 61,173, 54,240,198,205,213,169,234,129, 58,106,140, 10,214,145, + 40,119, 57, 73, 64, 94,167,101,244,177, 12,122, 18, 21,164,197,224, 31, 57,155, +179,178,144, 63, 7, 38, 51,193,231,223, 75,212,177,150, 38,102,224,167, 26,231, + 16, 98,226,248,251, 13, 79, 75,232,207,104,249, 14,194,197,140,230,235,253, 24, +200,180,207,244, 28,200,241, 43,158,192,162,165, 4, 99,224,172,170,177,235, 58, +104,147, 42, 38, 81,205,201,142,180,117, 31,100,219, 82, 18,121, 56, 66, 99,214, +161,140,138,166,179,231, 91,209,149, 61,207, 39,201, 50, 79, 33, 99, 66, 83,248, + 30,230,189,204,250, 10,111,211, 92,186, 74, 25,211, 92,223, 32,149, 20, 50,168, +193,115,145,133, 9,197, 10,249, 45, 68, 49, 16,142,107, 20,241, 55,148,128, 59, + 79,151, 28,183,231,243, 97,158,199, 21,188,244,129, 99,144,242,249,152, 15, 25, +157, 36,190,136,169,119,132,227,240,192, 9, 75,246, 11, 21,226,204, 51,147,205, +224,105, 41,185,192, 97, 25,247,117, 40, 36, 92, 22, 67, 79,144, 29,137,100,110, + 66,247,113, 32,139,220, 31,157, 39, 86,121, 26, 93,132, 25,213,145,129,236,244, + 61,201, 69,101, 14,100,226, 17, 86,184, 31, 23, 19, 83,116,120, 16,177, 94, 37, +171,200, 79,251,242, 24, 29,195, 78, 47, 23,233,181,127, 2, 40,168, 35,139,236, +225,134,137,128,191,244, 29,106,190, 80, 56,139,197, 43,135, 80,145, 99,153, 95, +172, 39, 64,138, 36, 21, 67, 1,139,129,168,236,209,197, 56,143,206,148, 50, 9, + 81,136,204, 60,211,159,126, 80, 14,131,115,251, 39, 62,130, 6,106,146, 70, 48, + 37,131, 53,200, 77, 61,131,145,130,121, 52, 28,116, 72,143, 34,205,123, 17,152, +109,233,152, 89,166,148,167,195,153,205, 1,175, 70,103,102, 51,246, 26,210,181, + 75,131, 32, 78, 79,193, 60,110,210,237,232,112,166, 77,187, 77,236,157,202,153, + 88, 66, 53,102,101,204, 26,145, 19, 40, 30, 45, 44,105, 79,224, 72, 41,131,238, +158,180,184,202, 41, 76, 50, 32,212,195,217, 53,136,177, 45,156,134, 60, 93, 20, + 64, 85, 58, 61, 56,243, 22, 97, 84, 22, 45,169, 52, 7,167, 11,138, 0,154,201, +160, 68, 41, 57,212, 22,157, 73,236,161, 62,233,244,148,221,229, 22,171, 21,192, + 13,228, 24,148,210, 69, 37,233, 81,102,129,175,143, 69,224,239,155, 38, 1,224, + 59, 76,167, 3,220,141, 40,198, 36,121,172, 84,184,199, 98,233,249, 1, 35, 70, +135,132,219,221,139,238,212, 88, 2, 90, 81, 70, 32, 41,183,170,204, 29,204, 45, +152, 24,198,179,159,138,119, 64,100,101, 83,132, 97, 84,110, 84, 35, 20,231,251, + 40,216, 41,210,167, 78,108, 4,136,115, 66, 24,192,252, 84, 91, 36,197,227, 50, +164, 91,140, 53,255,127,204,239, 88, 98,198, 82,253,202, 52,177,164, 36, 83, 88, +129, 90,155,213,180, 52, 1,224, 53, 57, 1, 53,177,135, 39,113,241, 23,122,149, + 65, 86,248,143,251, 90, 19,175,135,252, 65,168,213, 57,197,113,164, 25,138, 68, + 65, 30, 79,207,153,232,145, 29,205,217,148,193,114,159,234,159, 46, 68,151,232, +183, 92, 95, 38,207, 53,186, 4,201,166,157, 79,141, 28, 14,229,246, 68,102,220, + 85,107,205,147,148, 62,136,189,189, 41, 2,117, 49,207,139,229, 2, 0,132, 86, +134,145, 80,107,163,148,212,134, 73,139,246, 76,240,128,135,205, 75,105, 26,197, +241, 79, 66,191,195, 72, 89,100, 91,209,149,181,249, 80,110,216, 55,132,128,121, +196,124, 99,206,124, 12, 26,165, 95,172,146,203, 15, 76, 95,130, 43,192, 86, 13, + 27,197,115,103,131, 50,159, 67, 2, 56, 12, 72,115, 57,146,209,219,237,214,224, +109,178,176, 66, 1,253, 51,253, 23,167,213,243,164, 2, 2, 40, 25,215, 63,130, + 61, 40,159, 9, 22, 9, 76,115, 52,116, 25, 26,246, 73, 32,146,161, 92, 55, 35, +131, 98,208,224,164,207, 30,131, 16,186, 76,188,153,173, 13,230, 66,112, 90,240, + 96,133,229,245,252,144, 30, 43, 52, 81,116,142,198,177,147, 45, 19,177, 71,122, +165,108,169,192,132,151,174,207,123, 48, 88, 94,125,251, 36, 27, 5,113, 64,224, +223, 91,136,191,192,140, 60,138,167, 92,195,179,134,162,120,250,102, 2, 35, 77, + 43, 41, 18, 13, 69,193, 14,145,165, 9, 45, 1,122,127,123, 79,105, 6,133,191, + 38,219,160, 9,108,198,174, 65,172, 18,253,129,195,105,104,251,123,155,215,183, +210, 18, 19, 65,232,219,201,151,192,242,208, 64,151, 90,207, 18,141,235,124, 85, +238, 53,172,235,136,252, 55, 18, 59,231,236,215, 39,237, 77,220, 5, 66,189, 49, + 83,174, 67, 52, 18,137,244,209,228,251,188,162, 81,101,128, 3, 53, 35, 9,104, +161, 84, 87,207,225, 55, 76,162,125, 86,227,185,146, 28,198, 54, 63, 27,159,208, +134,109, 56, 53,239, 39,164, 20,107, 6, 89,193, 54, 30,247,235, 86, 4,185,231, + 9, 16,198,214,245,136,139,107, 94,192,123,185,163,156, 76,247,127, 60,107,233, +186,114,163,207,121, 64, 31,129, 98,200,218,143,152,228,132,170,121,152,142,114, +146, 33, 33,154,194, 17,148,125,210,112, 8, 52, 92,165,119, 15, 4, 28, 81, 64, +110, 35,137, 32,148,153,237,195, 68,107,150,106, 24,118,180, 53, 13, 3,219,120, + 81, 4,204,151, 34, 12, 95,147,158, 72, 25,123, 41, 46,168,142, 76,243,229,233, +164,126,107, 68, 41, 23,219,234,176,202,103,114, 57, 82,161, 48, 97, 36,168,103, +143,197,209,173,219,126,248,136, 40,224, 62,227, 39, 16, 53, 64,201,180, 85, 32, +108,143,232,188, 5, 39,148, 97, 52, 7,148,108, 45, 85,131,127, 43,181,201,242, + 10,130,172,125,226, 67,157, 46, 77,177, 48,122,166, 61, 45,148,131,134,252,100, + 97, 98, 57, 93,138,239,254,240, 85, 17, 60,190,164, 78,162, 48, 24, 42,128,138, + 99,154,122,137,193,176, 39, 98, 64,117,204,181,163,122, 67,111,119, 1, 84,187, +221,102, 71,238, 89, 16, 50,112,171, 43,116, 74,149, 74, 53, 22,217, 19, 23, 85, +238,104, 82,223,211,249,115, 84,103, 50, 51,112,101,101,251,178,254, 77,148, 9, + 91,246,139,137, 27,193,244,233,248, 95,168,186,193, 84, 12,204, 71, 78, 1, 63, +135, 56,119, 7,167,254,121, 6,199,152, 42, 91,222,225, 99,219,100,182,153,115, +240,244,199,125, 14, 19, 33, 98,250, 28,235, 27,245, 97, 26, 61,135,154, 27,250, +150, 53,219,200, 59, 63,148,159,215,204,192,235,123,145, 75,101,176,138, 15,118, +126, 31,111, 79, 21,135,224,117,122,130, 87,194,183, 74,146, 8,235,238,103,109, +246,163, 89,179,218, 50,183, 75,131,174, 66,190,247,192,195, 23, 91,100,232, 96, +201, 54,123,130,214,101,141,222,223, 47,231, 91,119,183,233, 94, 37, 30,108, 40, +131, 46,145,255, 47,149, 64,106, 61,216, 16, 91,237, 27,236, 57, 94, 15, 89,103, +137,199, 36,111, 82,241, 73,207, 88, 92,106,128,168,208,168, 23, 48,108, 41,234, +129,242, 13, 66, 62, 39, 53, 9, 81,239, 31, 67, 61,147,110,160,215,163,135,177, + 50,155,140, 61, 12, 39,171,142,193,154,202,172,155,198,115, 96,156,202, 29,168, +127, 28,185, 65, 69, 95,221,106,132,219, 79,208, 75, 46, 26,110,206, 2, 71,110, + 15,100, 20,129,131,146, 18,251,211, 45,146,222,200,213, 20,106, 50,114,220, 18, +231, 8, 63,206, 0,176, 0, 68, 87, 99,101,200,109, 9,247, 68,220,161,179,181, +252, 95, 73, 23,128,226, 42, 86, 65,206,191, 5, 86,129, 92,153, 36,141, 37, 15, +195, 83, 0, 75, 93,143,195,155,212, 46, 65,184, 87,127,235, 33, 8, 24, 58,206, +110,214,182,164,227,205,202, 19,211, 46, 15,208,182, 35,210, 44, 77, 41,142,240, +159,225, 60,102,100,135, 13,131,152,212,237,250, 5,199, 49,150,244,198,193,178, + 29,192,141,131,238,178, 39,182,113, 62,132,141, 43,236,221, 47,174,228, 84,116, + 94, 92,115, 13, 9,237,226,140, 36,220,117,245,163,236,137,231, 42,134,128,208, + 1,241,115, 14,202,218, 88, 35, 87,226, 86,141, 93,135,156,142,194,204, 72, 20, +149,198, 95, 37, 81, 96, 78, 81,193, 51,134,170,225,249,117, 16, 52,176,189, 32, +163, 62,180,232,166, 18,106,128,196,179, 23,120,175, 9,253, 54,222,185, 59,201, + 44,100,198,208, 59, 64, 42,222,172, 80,144, 22, 8,251,237, 25,115, 29, 19, 2, +210, 23,193, 49,182,238,229, 64,244, 48, 22,204,142,229,244,221,195,152,194, 45, + 52, 89, 9,212,184, 58,105,253,234,209,211, 49,199, 21, 99,156,136,196,184, 44, + 17, 80, 55, 17, 86,240, 12, 86,208,230,144,178,156,206,166,158,100,239,115, 88, + 62,142,149, 49, 98,248, 1,241, 14,170,229,220,120,144,166,179,239,151, 8,152, + 66, 77, 64,191,205, 40, 94, 63, 13, 67,254, 19,163,245, 26, 86,247, 15,103,128, +132, 78,250,168,255,171, 0, 13,114, 94, 80,194, 91,179, 66,175, 34,218,129, 24, +240,111,127,192,237, 48,177, 89, 30,146, 12,142,217, 17, 11,239,200,135, 88, 39, + 2, 80, 92, 24, 88, 75, 29, 26,221, 72,204,160,176, 7,170,117, 35,178,154,209, +129,248, 36, 38, 39,225,255,181, 48,212,219, 95, 71,183,125,130,192,129,105, 71, +205, 61, 10,237,214, 82,178,223,185, 54,107, 53,238, 96,147,244,132, 6,189, 62, +118, 96,221, 75,128, 56,193, 89,136, 49,236, 97,193, 56,221, 36,133,251,214, 64, +233,111, 74, 14, 40,113, 52, 96,195, 72, 66,187,140,244, 67,152, 29,206,162,155, +123,140,185,221,150,244, 19, 4,223,220,136,215, 56, 64, 42, 56,190,229, 81,168, + 98, 73, 57,188,179, 82,149,187,204, 26,232,250, 64,110,236,118, 11, 40, 41,134, +165,135,198, 61,148,139, 90,113, 57,138,185,195,172,243,226,235, 18,220,163,224, +173, 7,213,197,165, 80,105, 92,218, 0,101,226,167, 3,116,190, 22,163,126,148, + 43,118, 9, 55,198,127, 57, 54,212,191,144,168,157, 23,104,113,137, 14,181,111, + 75, 47, 59,105,188,156,151,161,122,180, 59,149,234, 3,152,119, 29,190,114,149, +255,108, 92, 35,224, 59, 54,163, 46,203, 34,159,243,155,184, 69, 91,145, 90, 12, +112,173,176, 42,114, 11,111,229,186,102, 11,113, 82, 88,122,228, 4,190, 0, 60, +100, 86, 40,236, 5,200, 11,178, 37, 57, 76,190, 22,112,187, 16,175,210,143, 74, +185, 10,172,149,212, 67,126, 51,166, 83,218,102, 44,230,109, 54,142, 47, 4,171, +116,190,247,100,145,152,255, 9,138,133,127,114,188, 64, 23,133,227,209, 29,145, +246, 56,141,239, 68, 30, 1,156,239,233,148,124,154,252,180,246, 43,197, 32, 74, + 64,236,102, 61,134, 5,197,145,143, 16,122,163,253, 44, 47,152,169,255, 83,207, + 69, 97, 87,125, 22,137, 37, 28,199, 49,210, 28, 14, 36, 93,245,203, 36, 57, 15, +253,194, 52, 90, 13,174, 81, 54,225,182, 81, 0,157, 95,172,232,168, 81, 5, 12, +128, 97, 66,234, 80,124,188, 35,216,190,187,177,143,222, 16, 1,176,176,150,125, +150,124,153,172,187,173,192, 13, 10,243, 63, 48,179,232,181,212,125,162, 10,251, + 91, 35,139, 90, 40, 13, 1,192,220,113, 94,196, 26,244,149,129,244, 93, 54, 9, +218,110,229, 6, 92,185,175,178,204, 67,203, 66,112, 50, 64, 72, 59, 83,242,107, + 30, 36,135,158,209,236, 14,107, 22,255,238,187,186,167,184, 32,175, 81,161, 36, +154, 87,105,143,156, 75,105, 69, 97, 16,238, 69,197,120,168, 69, 24,236, 93,237, +248, 48, 82, 95, 88,192,109,148,125,140,176,242,255,254,157,228,254, 60,193, 66, + 4,104,161,131, 90, 88,111,216, 20, 45,240, 20,197,220,202, 85,166,162, 42,122, +151, 6,228, 69, 96,131, 23,187, 10,169,125,109,170, 91,160, 32,118,124, 69,132, +192, 47,171, 37, 55,238, 75,124,148,171,232,237, 61,185,253, 45, 49, 10, 78, 36, +104,140, 6, 87,226,162, 5,203,212,122,110,172, 0,252,253,206,191, 84,172, 83, +108,221,219, 94,228, 89, 65,130,171,156,212,143,140, 37,196, 69,225,148, 63, 21, + 48, 62, 38,236,210,216, 48,245,204,165,163,147, 56, 5, 82, 82, 45,132,116,219, +212,153,145,196,171,101,159,210,140,184, 11,164, 70,136, 59, 1,241,209,148, 30, +180, 0, 85,222,161, 48,179, 36,195, 66,253,136,226, 0,224,122,221,204,151,211, +118,243,206, 39, 95, 6,158, 94,138,248,252, 93, 25,141,138,149,116,225, 45, 48, +159, 13,128,223,127, 82,152,189,164, 12,148,159,226, 99,245,152,128,115,171, 63, + 89,130,189,173,178,137,212,193, 4, 63,243,231,220, 56,171,150,103, 75,132,218, +139,220,115,106,104,220,173,158,121, 73,101,109,146, 59,216,108, 90, 90, 67, 49, + 36, 43, 21, 45,240, 55,134,230, 86, 40, 61, 71, 36,246,108, 9,194, 11,210, 44, +232,147, 5,105,144,163,237,170,176,142, 23,114, 43, 45,226, 52, 2,143,135,105, +149, 24, 62, 91,130,113, 78, 6,210,102,189,193, 59, 38, 29, 83,208,222,144, 88, + 10,232, 38, 4,120,107,122, 9,114, 26, 41, 65,145, 96, 87,172,158, 56,157, 78, +168, 90, 87, 36, 88,198,131, 3, 20, 5, 25,143,158,182,249, 17,217,100,212, 7, +236, 63,232, 96,181, 75,130, 58,183, 67, 92,113,191,158,136, 56,152, 59,142,139, +106,135,173, 32,108,169, 94,251, 47, 99, 76,177,111,167, 47, 29, 61,181,137, 36, +211, 50,249, 21,253,122,103,109, 29,219,185, 24, 83,178,197, 98,197,156,125, 94, +107,130,141, 0, 17, 55,131, 42,122,163,102, 99,213,112, 65,171, 26, 82,221, 22, + 69,248, 43, 91, 90,181,152,194,212,153, 40,226, 92, 20, 39, 65,181,165, 47, 82, +245,161,203,155,172, 46, 4,202, 36, 76,109,107, 85, 40, 13,138,187,164, 65,167, + 52, 7, 41,134,131, 58,225,243, 20,185, 84, 76,119,224,204,167,102,129,212,206, +180, 34, 15,249,192, 46,216,147,193, 54,139, 93, 25,239, 53, 68,210,110, 87, 79, +159, 73, 22, 64,144,120, 39, 97, 50,189, 94,115,176, 40,114,128, 59,130,173, 86, +174,157, 31,253,234, 12,226,247,167,118,202, 5, 1, 98,152,250,114,213,140, 30, +104,170,113,171, 68, 46,132,116,105, 8, 42,188,170,166,138,208,147,134,229, 27, +227,112,201,198, 59,143,202, 72,179,220, 2,195,167,217,113,120,138, 16,160,185, +209, 65,121,103, 83,185,250,185, 21,119,213, 9, 1, 40,153,111,229, 78,160, 42, +101,151,181,164,135,206,115, 22, 7, 0, 2, 76,207, 23, 89,205,155,237, 77,123, +147, 58,151,207,175,185,218,105, 24,137,213,208, 68,143,194,252,221, 52, 63, 64, +166, 87,175,140,213, 11,235,192, 2,247, 24,138,150,145, 4, 54, 8, 0,132, 75, +130,141,142, 11,166, 65, 89, 36,210, 42, 15, 42, 25,123,112,115, 83,239,126,238, + 82,183,252, 13,219,109,123,188,192, 48,227,180,120, 85, 98,150, 22,169,179,190, + 43, 21, 93,120, 43, 93, 28,145, 18,226,224, 82,132, 70, 81,174,126,198,105, 66, +238, 34,250,132,116,134,243,130, 43,161,177, 83,240, 27,143, 91, 83,140,109, 16, +122,245,229,146, 2,136,209,237,211, 12,239,152, 1,167,199,199, 72,135, 18,153, + 41, 74, 28,170, 3,123,111,102, 45,101,139, 57,188, 35, 93,118,151,136, 32, 58, + 62,180, 34,103, 83,100, 88,147,214, 93, 37,179,202,124,240, 5,110, 21,130, 28, +195,158,240, 41,233, 32,176,179,209,152,158,140, 67,134, 50,132,239,219,191,205, +166,157,226,214,244, 44,178, 42,198,249, 92, 2, 83,254, 47,186,176,253,154,238, +153,149, 89,198,255, 76,216,146, 8, 9,220, 7,124, 87, 14, 72,121,201, 26,194, +233, 26,196, 27,236,129,145,208,198, 27, 73, 44,102,188,248,191, 9, 82, 34,247, + 42,204,169, 99, 93,252,162,194, 29, 23,143,134,230,254,165,121, 26,177,130, 54, +155, 43,161, 41,167, 85,108, 42, 39,136, 44,233,249,172,112, 85, 22, 34, 56, 47, +180,185, 88,144,189, 60,156,120, 34, 62, 90,154, 37,214,253,255,106,129, 97,197, +235, 53,176, 95,215, 71,151,211,101,247,235,167,121,108,135,148, 24,190, 97, 8, + 58,146,151,148,221,192,252,243, 45,163, 50,126, 83,146,186,125,130,168,240,178, +120,228, 0, 2, 95,167,247,186,213, 48,101,174,187, 53,181, 59,234,238,218,201, +105, 27, 91, 30, 17, 8,157, 84,148,151, 61,249,202, 4, 67, 73,178, 81,151,249, + 65, 56,106, 40,154, 11, 83, 59,168,228,156, 23,228,200,166, 8, 36,125, 72,148, +188,186, 34, 32, 31,180,243,116,188, 22,216, 10,253,245, 67, 85, 95, 80, 75, 84, +136,180,178,125,209, 67, 0,153,133,195, 79, 5, 73,211, 81,180,150,211,167,196, +247, 50,164, 42,188,118,142,103, 36,177,124, 40, 34,168, 71,240,107,164, 40,106, +100, 83,101, 21,157, 12,255, 59, 78, 53, 50,116, 21, 5,187, 34,223, 53,123,140, + 8,196,164, 25,135, 44, 82,143, 0,218, 56, 58,236, 6,129,124,143, 50, 8,101, + 75,176,151,219,179,124,219,109,140,236,237,178, 63, 33, 84,173,129, 92, 0,195, +144, 73,111, 93, 29, 16,231, 78,204, 22,254,196, 94,119, 26, 48, 96, 47,213, 47, + 57, 2, 60, 20,228,128, 48, 70, 43,195,227,205,110,101,209, 1,199,165,243,172, +107, 91,203,144,128, 35, 75, 4,176, 18, 22,239, 91,158,199,133, 49,170,154,224, + 89, 40,218, 32, 60,245,238, 61,201,224, 24,158,115,135,231,205,158,205,205, 24, + 1,253, 6,185,212,252,129,125, 30, 36, 60,168, 87, 66,204, 91,135, 1, 92,238, +234,177, 17,178, 64, 48,108, 19,110,122,108,221, 71,121, 13,158,216,110,206,131, +236, 26, 50,131, 96,223,107,187,124,207,130,200, 23,188,250,152,136, 65,254,241, +132,227,204,123, 67, 36,139,251,184, 35,243,205,245,186, 91,150, 51,155, 61,133, +119, 52,182, 45,163, 21, 91, 11,239, 13, 79, 46,157,105,212,111,110,226, 1,161, + 43, 74, 53,248, 75,167, 84,197,152,190,127,118,238,111, 32, 57,241, 88,240,230, + 41,133,237,246, 58, 60,227,178,186, 96,211,122, 85,118,160,142,114, 80,181,139, + 44, 25,196, 19,221, 54,146,226,157,128,243,234,121,143,162,141,150, 59, 6,144, +230,196, 42, 36,214,153,109, 60, 80, 31,102,221,131, 55, 93,218,142,241,220,231, +126,243,196,102, 6,166, 13,110, 89,123,243,194, 2,127, 25,162, 87,112,212,214, + 88,136, 60,141,211,121,186,166, 82,177,179,247,188, 42,147,113,179,141,255, 79, +224, 16, 43,116,199,163, 28, 46,127, 69,163, 99, 96,236,114, 45, 73,206,126,160, + 82,187,250, 67, 21,253,168, 81,196, 38,180, 48, 74,126,240,195,164, 43,161,216, +180,235,233, 41,172,165, 97, 51, 10, 84,115,120,131, 52,132, 49, 93, 94,134,147, +133,158, 81,106,101,145, 86,212,167, 57,129,109,181, 45, 64, 99,138,173,154,120, +162, 58, 24, 19, 26,231,145, 19, 10,181,104, 59,157,142,154,100, 16,169, 79,153, + 90, 20,105,174, 1, 88,192, 42,138,113, 73, 3,242, 44, 13,125,247,151,248, 14, + 0, 37, 72, 71,173, 13,244,122, 83, 12,110, 74,124, 34,219,208, 89,203, 24,246, +198,241,232, 64, 6, 8,179,245, 71, 66,139, 51,247,100, 47,104,194,129, 63, 31, +208, 91, 81,232,120,108,208, 32, 73, 69,185,161, 91,181, 53,104, 97, 47, 5, 52, +142,232,173,147,162,100, 5, 0, 32,220,209, 56, 34, 70,223, 72, 68, 45, 30, 20, + 9, 22, 59,101,255,199, 23,211,244,122, 6, 57, 55, 32,166, 29, 57,145,224,193, +225, 67, 38,222,138,183, 50, 90, 66,119,178,116, 88, 85,107, 34,174, 16,120,159, + 53,168,184,189, 76,237, 34, 17,186, 77, 52, 90, 32,170,143,237,220,174, 95,247, + 68,164,169, 36,208,240, 19,130, 55, 72,170,188,220,243, 2,189, 10,143, 55, 67, +189,172,185, 57,150,182, 97, 23, 24, 1,161, 69,108,143, 96,227, 33, 85, 5,220, + 56,152,175, 74,240,221,197, 82,218,139, 56,106,212, 30, 28, 77, 85,228, 88,175, +189, 3,190,211,178, 31,153,231, 3,216, 85,207, 60,248,124,234, 78, 8,105,100, +243, 4, 62, 69,153, 96,116,149,251,209,145,179,252,117, 95, 46, 17,136, 93,103, +181,166,125,110,107,137, 51, 56,190,236, 31,218, 59,123, 10,202, 49, 60,162, 65, + 84,199, 19, 79,250,186,236,160,199,132, 66,200,110,255, 50,155, 57,181, 31,172, +162, 55, 23, 74,164, 46,174, 51,221,123,115, 5, 43,126,175,242,121,191,215, 91, + 9,212, 14,216,141,167,114, 32, 73, 12, 81,211,130,169,197, 99, 28,190,219,254, +224,249, 53,136,109,108, 68, 10, 53,147, 68, 41, 82,113, 76,230,166, 16, 33,162, +229, 16,201, 14,153, 16,140,240,243, 49,173,244,222,141, 74, 10, 88,181,158, 4, +200,102,216, 42, 62,172, 82,143, 31,146, 69, 66,126, 74,141, 96, 69, 78,171,192, +225, 99,110, 84, 44, 25, 64,228,176,207, 6,110,109, 56, 61,144,156, 77, 6, 31, + 77, 0,156,208,119, 70, 37,254,166,213,131, 20, 44, 23,187,143, 28, 54,241,232, + 36, 29,117, 74,194,131, 65, 92,249,245,115,102,184, 36, 16,157,243,157, 14, 67, + 26,102,158,250,187,192,134,114,207,187,236, 35, 72,221,180,232,242, 98, 60, 52, +167,224, 87,198,112,148,202, 69,193, 91,154,120,116,145, 99, 8,193,217,167, 84, +222,190, 23,132,124,138,126,184,251,142,104,205, 41,197,154, 83, 92, 91,123,143, +189,160,242, 34, 87, 56, 23,199, 93,149,239, 41, 17,251, 17, 0,164,106,117,132, +131, 83, 74, 30, 3,100,154,225, 36, 74, 69,252,173, 48, 19,196,250,212,231, 36, + 11, 20,108,127, 26,105, 54, 14,103,212, 40, 17,178,239, 16, 23, 45,142,116, 53, + 94,189, 97, 4,131, 53, 33,168, 21,154, 79, 83,120,104,198,137, 86,139, 90,255, +225,209, 39,103,251,127,130, 32,136, 46, 89,204,188,138,226, 82, 20, 52, 4, 61, +106, 31,253,167,148,137, 40,191, 55, 59, 87, 78,194,186,103,138,236,128, 91, 18, + 18,160,138,164, 24,130, 75,193,188, 21,221, 31,112, 59,228,123,214,189, 59, 72, +198, 99,242,154, 18,219, 8,209,130,106,185, 83, 9, 3,179,218,141,214, 41, 86, +152,227,211, 0, 98,239, 74,162,187,245, 40, 81,166, 10, 69,200, 76,138,117,177, +210,240,238, 8, 76, 29, 8,204,218,140,192, 53,219, 12, 19,155,104,133, 22,158, + 5, 14, 66,134, 84,148,245, 66, 34, 58,129, 21,175, 53,126,157,227, 31, 13, 48, +134, 22, 57, 30, 47,148,185,239,161,115, 31, 83,151, 44,244, 59, 85,208, 72,204, + 26,244,173, 67,123, 14,180,155, 66, 79,139,199, 5, 84,143, 41, 47, 3, 75,145, + 48,111, 36, 65,185, 74, 64,145, 5,212, 48,120,227,164, 39, 73, 75,116,170,199, + 6, 49,113, 34,108, 94,117, 38,105, 53, 71, 19,147, 98, 54, 99, 23,240, 70, 25, +154, 29,154, 19, 46,198,195, 17,136,117,230,131,154, 7, 81, 57, 31,146,202,142, +182,145,101,165,250,197,233,238, 30,182,191, 72,106,242, 6, 67, 28, 78,225,241, + 6, 71,155,151,253, 44,191,231,197,186,216, 80,127, 61, 96,132,224,187,250,235, +176,188,167, 20, 44,178,229,229, 36,102,116,143,152, 4,147,151, 36, 10, 19, 8, +221, 92,143,145,103, 71,172,105,231,193, 48, 8,246,210, 89,213,116,240,162,212, + 68,185,119,200, 71,235,128,132,172, 13,227, 49,151,251,136,213, 33, 23,181,150, +253,110, 65,166, 92,105,102, 66,246,233,133, 74,101,148,186,130,250, 52,132,245, +191, 2,139, 17, 10,212, 66,146,168, 14, 83, 79,108,135,167,100,181, 33,113, 2, +192,102,132,238,153,192,184,111, 32,153, 50,116,171, 77,128,159, 97, 18,203,150, +240,148, 54, 1,253,196, 56,214,153, 99, 53, 70,234,128,136, 88,118, 73,160,199, + 12,215,180,153,185, 41, 64, 92,118,143, 78,144,153, 67, 36, 93,228,175,229, 80, +240,220,133,205,236,227, 34,229,167,168,152, 57, 13,217, 81, 83,205,123, 79, 0, + 7, 20,104,192, 67,118,135,139,227,174, 51, 16,178, 54,218, 40,161,164,240, 30, +131,193,135,134,155, 66, 20,121, 38,226,142,100,136,152,128,226,145,103,153,193, + 23, 19, 2, 39,160,157,111, 65, 49,253, 11, 74,109,117,223,109, 9,186, 16,130, +131,174, 47,158,146,227,227, 90,165,186,162,179, 75, 31,220, 50,171,121,169, 85, +209,243, 94,134,182, 90, 38, 80,180, 91, 1, 26,102,156, 19, 41,192, 14,109, 3, + 10,136,233, 53,198, 87,213,220, 19,101,118, 8, 5,105,151,253,135,234, 17, 9, +139,235, 14, 70,154,156,249,159,150, 33,219,166, 40, 48, 69, 7, 2, 35, 1, 60, + 1, 44, 1,222,137,150,196,150, 2,179, 72,102, 89,233,191,166,111,125, 69,241, +180, 37, 10,117,180,162, 79, 49, 75,207, 39, 11,253, 9,186, 43,143,232, 27, 98, +157,255,228,112,144,143,236,113,122,228, 39,209,136, 89, 15, 78, 62,209,216,107, +214,186,220,143,154,155,228,157,222, 59,157, 30, 86,188, 39,199,235,141, 79,149, + 30, 89, 71,190,166,126, 11, 99, 49,151,163,117, 52,239,147,251,103,129,234, 71, +158, 93,127,254,155,203,112, 82, 73,246,230, 29,202, 30,100, 23,145, 8,153, 36, + 66, 88, 34,103, 50, 95,100, 88, 82,140,250, 44, 49,106, 29,171, 58, 63,249, 23, +196,162, 89, 20, 27,127,137,180,113, 74, 59,202,146, 27,143,252,205,178,242, 27, + 90, 50,188, 22, 54, 89,203,100, 85,175,113, 53,142,166,200,227, 76,158,218,180, + 36,141, 67,235, 94,198,182,198,233,229,132,252, 65,102, 89,134,145, 61, 50,134, + 97, 90,230,142, 17,249,136, 68,119,197,171, 49, 44,234,190, 25,119, 44, 28,203, + 82,196, 17,156,244, 17,111, 47,237,144,201,145, 47, 44,225,102,105,178,228, 35, + 99, 15,199, 91, 34,177, 99,158,103,140, 63, 85,206, 23,143, 40,189, 45, 41,173, + 24,171,122,169, 87, 76,173,102,122,171,201,223,243,170,212, 77,238, 61,198,195, +120, 24, 15,227, 85, 93,189,122,149, 36, 18,181, 42, 1,183,114, 1,255, 12,189, +113,240,147, 26, 91,146,190, 99, 62,223, 1,121, 88, 86,173, 42,206,119,157, 3, +104,237,255,149,243, 1, 89,142,205,200,191,210,163, 73,129,221,172,202,181,204, +191, 13,228,144,162,237, 24,201, 98,255,107,238,108, 53, 78, 8,179,135, 23,222, +255,201,182,150,202,201, 64, 38, 32, 16,117,243,105,122, 64,181, 19,222,208,150, +227, 56,118, 24, 0, 0, 31,217, 62,131,239, 9, 36, 31,111, 3, 74, 16,121,156, + 76,166, 90,147,129,172,227, 36, 5,191,189,246, 89,101,150,254, 27,104, 66, 2, +114, 64,240,235,180,207, 3, 58, 89,146,148,121, 62,134,170, 41,109,139,170, 22, +144, 7,137, 72, 62,181, 35,250, 22,188, 10,126, 54, 94, 77,248, 46, 38,248, 46, +167,140, 71,134,141,246, 40,212, 76,130,231,191,121,153,150, 88, 62, 79,173,100, +162, 12,135,211, 17,149,244, 57,102, 11, 30, 80,102, 98,103,108,162, 34, 90,194, +103,115, 1, 59, 36,188,117,153, 13, 50, 21, 16, 84,177, 48, 77,158,242, 89, 74, +159,210,209,228,139,226,116, 52,155,175,195, 33,200, 56,112, 32,203,178, 75,167, +102,161,182,169,143,100, 6, 5, 25, 16, 68,176,109,200,233,134,164, 26,176,170, + 13, 2,172, 96,229,146,185, 97, 41,249, 44, 28, 13, 68,231,121, 60, 8,232,121, +237, 83, 53, 32, 39, 33,235, 84,205,231, 82,238,143, 68, 34, 4, 23, 7,143, 8, +252,186,171, 33, 0, 22, 10, 59,159, 98, 14,135,131, 12,112,228, 51, 12, 43,170, +172,172,239,252, 45, 84,217,189,229,185,187, 91, 95,249,250,168,242,247,185, 81, +150,196, 97,149,242, 65, 41, 27, 67, 47,236,116, 83, 64,120, 3,202, 20,182,168, +208,180,164, 13,177, 7, 92, 88, 64,229,194,254,161, 57,107, 69,207, 93, 65, 94, +141,211, 63,213, 72,161,149,176,226, 93,227,106, 52, 28,141,167, 68,228,211,170, + 92,213,205,139,118,104, 74,162,223,133,141, 59, 97,245,227,187,175,168,107, 77, +150,147, 10,203,216, 1,252,198,135,190,227,200,110,125, 55,182,169,239,174,175, +190,140,101, 83, 23,116, 22, 69, 81, 20,137, 60, 10, 96, 21,213, 6,145,200,187, +183, 48, 12,251, 76, 52,109,117, 93,219, 44,117,150, 57,252,195,209,117,189, 63, +118,137, 94,244,151,121,142,174,212,146,162,172,175,144,132,143,174, 18,150,218, +157, 41,244, 91,179, 20,168,172,221, 26,107,141, 67,191,162, 21,243, 21,255,202, +252,230,242, 0, 0,179,100, 64,142,131,232,243,240,145,204,179,212,221, 78,111, + 5,214, 5, 15, 66, 84, 89,140,106,220, 22, 64,184, 12,146, 83, 23,251, 1,141, +139,104, 84,124,179,180, 58,223,111,227,129,168, 14, 25,143,128, 0,130,107,107, + 81,216,173, 57,165, 43, 95,154,103,185,178, 37, 11,156,192,167, 92, 86,174, 71, +107, 79, 24,238,252,171, 42, 96, 61, 14,102,186,113, 27,183,113, 27,167, 73, 52, +137, 38, 49,187,206,236, 58,207,196,223, 13,124,247,110, 13,164,105,250,185, 46, +136,231, 37,108,220,198,109,220,198,105, 18, 77,146,214,106,202,239,121, 9, 27, +183,113, 27,183,113,154, 68,147,156,160,136, 52,181,206, 19, 83,140, 27,147,112, +250,164, 69,121, 23,146, 16, 53, 26,184,158,159,166,103, 90, 17, 60, 53, 93,176, + 63,198,146,141, 19, 87, 8, 13, 50, 85,130,217,153, 34, 79,191,192, 92, 92, 92, + 46, 72, 13,197,225,238,126,209, 35,182, 19,110, 93,170,148,235, 14,147, 88, 99, + 94,247, 91,126,140,169, 34, 88,225,227,252,151, 63,159, 44, 55,196, 52,150,158, + 9, 91,151, 42,211, 76,235, 19,255,144,100,163, 68, 19,251,135, 52,223,156,243, + 2,143,100, 18,126, 73, 89,167, 61,186, 72, 86,230, 72,229,250, 12,207,141,179, +104, 73,111,115,209, 60, 22,176, 58, 48,120,181,146, 61,172,135,170, 49,101,204, +164, 55,230,179, 92, 64,138,165,223,177, 79, 97, 83, 45,206,150,205, 23,218, 92, + 20,190,202,229,181,203, 59, 37,151, 24, 41,227,240,134, 86,152,111,151,177,120, + 71,149, 68,251, 9,134,114,233,170,113,204,150,174, 62, 62,177,163,179,251,175, +164,255,182,132, 26,173,221,119,164,253,183,182,163,202,213,227,117,116,142, 90, +169,156, 35,175, 26,187,205,160,212, 17,144,137,168,212,249, 70, 37, 27, 26, 0, + 20, 0,211,178, 0, 8, 10,139, 77, 69, 18,137, 28, 7,138, 82,123,148,224, 70, + 68,152, 6, 17,134, 16,134,196,193,104, 32,128, 8, 8,137,129, 1,152, 0, 3, + 48, 8, 1, 3,160, 0, 66, 1, 24,128, 66,128,164,145,249, 41, 92, 66,110, 64, + 72,182,224, 79,142, 34, 62, 19,212,211, 49,169,153, 49, 88,165,210, 27,154, 65, + 8,199,159,123,122,122,163, 58,184, 70,192,182,213, 0, 32,248, 2,173, 24, 55, + 14,196,160, 49,122, 56,146,132,161,178,177, 5, 38,255, 53,172,236,118,198, 94, + 16, 3,153,232,218, 67,159,187,102,186,219, 64, 44, 78,227, 46, 32, 45,243,226, + 53, 17, 3,187,240,230,215, 88, 74, 48, 74, 11, 22,150, 64, 20, 20,124,245, 1, + 29, 45,184, 91, 2, 83, 5, 49, 0, 81,168,245,127,222,163,246,146,128,112,182, +179, 21,172, 12,185,237, 2,140, 54,119, 73, 0,113,187,158, 33,176, 58,236, 5, + 96,244,179, 23, 62,247,160, 92,241,233,141, 6, 36,244, 25,254, 4,134,248,141, +230,225,120, 52,180,111, 48,109, 56,119, 81,201, 5,134,129,244,134, 70, 24,142, +151,184,137, 46,193,185,123, 49,175,209,174,174, 20, 56,118,218,143,109,150, 43, +135,225,203,244,199,157, 1, 85,226,217,131,238,177,106, 25, 67,122, 73,100, 72, +168,178,113, 12, 92, 21,231,158,125, 15,101, 72, 23,185, 12,233,171, 45, 32, 46, +101,145,128,225,164,120, 56, 14, 68,241,200, 65,157, 60,252, 4,220, 7,223,203, + 11, 72, 59,222,166,160, 28,165,193,114,205,208,170,148,198, 20,219,164,230, 81, +193,192, 81,138,200,129,146, 0,128,218, 52,233, 48,255,188, 1, 29,144, 48, 3, + 79, 38,159,132, 78, 20,144, 68,192,251,126, 75, 80,122,208, 65,180, 85, 13,238, +101, 10,222, 30,202,170,205,161, 84,201, 79,166, 99,128,169, 87,194,148,149,112, +132,139,119, 38,190, 65,123, 88,148,210, 67, 28,247,136,204, 35, 59,139, 78,179, + 21,170, 53,241,213,165, 37,106,114,230,244, 63, 79, 51, 71, 10,236, 24, 14,154, + 10, 57,211, 15, 32, 37,216,154,170,238,138,220, 29,159, 72, 21, 1,201, 97, 0, + 26, 82,104, 33,175, 47, 36, 88, 78,144,187,133,252, 10,181,226, 17, 71,176, 57, +165, 17, 66, 90,165,129, 50,124,210, 66,196,175,157, 13,194, 49,201,199, 23,130, + 97,116,162, 24,111,225, 14,250, 14,153, 78, 25,172, 45,215,101, 73, 15,192, 47, + 12,211,118,241,204,252, 17, 97,155, 72, 43, 29,177,136,187,109,206,200, 54,188, +200, 74,237,226,133, 51, 50, 32, 50,121,248, 62,106,114, 11,227, 19,154, 8, 39, + 28, 39, 99,173,115,245, 17, 99,113,135,127,223,136, 61, 41,133, 61, 45, 69,112, + 21,125, 76, 24, 97,164, 11,142,158, 82, 81,177,163,144, 87, 35, 65,134, 24,239, +105,143,112, 81,216, 41,100,118, 96, 93, 66, 21, 11,150, 2,139, 62,204,128,208, +241, 99,253,211, 17, 0, 32,142, 42,148,240,245,252,102,211,144, 67,169,148, 98, +195,148, 32,235,161, 93, 50,229, 6,113, 67,102,202, 19,166, 51, 8,168, 39, 86, + 96, 8, 81,125,216, 75, 33,196, 37, 30,229, 93, 68,100,192, 80,138,208, 16,157, +127,114,131,199,194, 11,227,223, 44,119,120, 11,185,247, 8, 13, 10, 65, 51, 2, + 56,224,218, 94,225, 87, 96,173, 86,212, 7, 70,220, 1, 16, 47,136, 26, 50, 35, + 12, 24,107,229,173, 86,164,131, 32, 43, 5,241, 61,205, 13,199,253,141,128, 88, +133,130,146, 16, 31, 27,106, 94, 99,246,225,224,214, 80, 74,197, 81,159, 56,107, + 32, 20, 52,214,157,216,126, 41,243, 53, 65, 74, 21,175, 73,184, 60,106,112,161, +197,171,138,148, 19,228,106, 19,138, 10,131,168, 51,166,233, 13,150,233,133,172, + 69, 24, 49,228, 21,130, 27, 8, 44, 2,154, 81,200,162,193, 17,134,104,170,208, + 49, 69, 29, 73, 64, 12, 70,188, 70,218,110,143,160, 49,161, 36, 87, 98, 5, 25, +173, 63, 84, 73,133,190, 68,176,101, 15, 21, 71, 48,197, 13, 9,141,224,232,195, + 16,227,118,181, 96, 35, 24,241,156,103, 61, 23,132, 42,137, 53, 6,186,228, 23, +226,120,161,175,250,141,142,128,201,171, 27,117, 6, 6, 5,161,226, 4,204,221, +207,209, 62, 48,150,124,202, 97,116, 63, 46, 57,162,129,120,231,112,102,183,209, +158, 54, 69, 15,162, 78,108,107, 5,130,133,103,240,124, 98, 38, 31,195,209, 62, + 81,132,111,180,207,172,100, 65,155,164, 58,192, 37,110, 27,156,224,162,207, 49, + 71,214,157, 68,126, 23,193,253,116,224,177,229,200,186, 2,232, 76,199,110, 44, + 49,243,241,207, 91,158,203,235,117,189, 41,215, 41,185,127,121,255,233,212,128, +126,103,188, 19,199, 30, 4, 65,235,196,131,103,119, 98,186, 97,125,205,189, 32, + 95, 70,137,122,161,216, 4, 7,227, 91,224,213,149,225, 78,115, 74, 21,174, 75, +187, 1, 26, 37,199, 91,140,147, 65, 3,168,100,223, 74,139,242, 20,198, 78, 84, +228,138, 20,130,196, 3,182, 97, 10, 27, 92, 8,142,233, 73, 80, 76,193,137,143, + 97,116,165, 29,174, 92, 30,140,128,137, 20,245, 47,173,116, 44,177,120,161,183, +170,103,121,112,225, 22,205, 97, 12,179,101,127,168,127,192,181,204,196, 36, 86, +238, 33,147,101,194,204, 55, 1,230,211,130,181,253, 96, 16, 27,141,155, 17, 24, + 8, 58, 31,106,103, 32,252,210, 86, 67, 5, 20, 53,182, 12,254, 26,198,155, 2, +190,195, 73,159,112,237, 99,120, 20,118,106,161,210,114,142,140,136,201, 5,164, +218,232, 25,187, 45, 96, 48,152, 62, 60, 27,129,213, 77, 40, 91,116,160,232, 53, +142, 17,149,191, 34,213, 19, 65,159,245, 16, 74, 3,148, 92,200,216,179,204,227, + 29, 17,160,166, 11, 51, 4, 52, 13, 39,116,142,210,234,113, 13,206, 74,212,194, +183, 14, 43, 9, 98,145, 50,200,237, 24, 14,140,178,134,228,131, 68, 6, 17,141, + 81,120, 30,102,110, 17,234,226, 38, 18, 45,107, 9,125,103, 2, 43, 6, 43,152, + 75,104, 38,143,131, 67,158,155, 62,236,130,190,141,159, 97, 78,177, 27, 66,113, + 96,250, 51, 14, 19, 2,158, 40, 16, 79,123,118, 23, 55, 7,151,194,180,189,165, + 86, 10,192, 45, 36,213,212, 99,252,128, 75,203,136,145, 80, 40, 9,154,117,160, +245, 30, 40,215,174,161,215, 97,185,126,227, 35,225, 27, 86,137, 6,244, 5, 2, +156,234, 39, 52,113, 36,140, 11,103, 34,176,118, 32, 45,193, 42,102,145,128, 56, +154,211,164,254, 1,162, 8, 83, 35,220,220,255, 90, 3,235, 50, 56, 81, 36, 75, + 35,113,213,232, 98, 76,248,197,183, 36, 11,199, 87,143,138,118,186,125, 9,170, +207,111, 44, 22, 15, 32, 18, 26,155,199,114, 97,203,124,211,243, 68, 70,148,184, + 71,197,112,240, 58, 85, 40, 37,106,111, 44, 89,186, 26, 60,124,249, 57, 46,191, +245,255,204, 54, 78,239,148, 48,164, 3, 22,104,229,197, 66,102, 54,136, 39, 26, +210,250,200, 19,124, 3,145,111, 55,101,197, 2,228,159,168, 85,143,164, 36,154, + 28,172,207, 10, 75,115, 52, 39, 69,162,137,137,144, 1,101,131,151,172, 99,106, +100,114,232, 32,199,194,242, 98, 14, 86, 22, 10,136,171, 72,197, 59, 0, 43,122, + 18,147,253,169,171,178, 5, 87,249,237,184, 10,117,158, 2,116,135, 55,192, 95, +248, 93,169,162,151,106, 38, 42, 10, 96,206, 36, 73,232,157,192,221,153, 75, 71, +108, 49, 74, 84,199, 30,141, 11, 32,176,220,241,139,196, 93,209,159, 82, 57, 20, +131,250,235, 91,100, 4,208,176,102, 72,187,170,213,138, 36,147,218, 26, 20, 79, +182, 77, 95, 2,178, 71, 48, 29,243,207,180,163, 44, 63, 67, 67,215,142, 19, 72, +133, 52,249,192, 19,150, 11,224,106,125,211, 68,183,107, 40,195, 35,132, 62,209, + 56, 50,202, 47, 82,160,144,222,186,192,208,107,134, 54,114, 66,238,244,211, 32, + 4,173, 0,187,219,253,180,172,114,127, 99,186, 39, 57,233, 4, 0, 54, 42,104, + 64, 21,188,128,204, 73,100, 94,255,143,205,225, 96,153,205, 78,249, 14,251,108, +118,236,159,137, 52, 15,228, 82, 22,131,105, 28,115,127,174,229,168,176, 64,152, + 15, 43,165,150,154,113,238, 50, 32,159,188, 68,217,191, 75,158, 14, 47, 63, 10, +189, 9,164,213,144,200,205, 75, 37,106,198, 21,142,220,234,139,110, 94,129,226, + 11, 28,157,222, 96, 62,149, 97,189, 67,215, 33, 68,158, 64,159,247, 73,121,136, +143,156,139,160,212,185, 54,212,164,249,243,160, 85,241, 90, 56, 38,251,227, 1, +250,170, 97,239,148,137, 77, 16,185,181, 28,119, 16,160,191,175, 20,237, 6,255, +132, 83,234, 34,141, 92, 93,242, 39,132, 5,246,211,118, 21,129, 51, 6, 90,164, +147,201, 3,238,212,243,188,171, 33,251,157, 63, 74, 97,125, 91, 2,249,135,165, +146,192, 52,174,142, 92, 18, 19, 26,129,189, 68,137, 56, 27,180, 51, 68,195,210, + 96,180, 62,161,156, 69,167,217,124,130, 92,102,214,188,140,211,237, 98,112, 92, +105, 11, 39, 86, 55,201,177,177, 77, 10,131,135,209,129, 26, 6,169,214,109,177, +173, 7, 12,213,133,250,142,160,141, 41,225,150,126, 35,204,203, 82, 65, 93, 96, +187,172,239,232, 64,134, 34, 82,192,206,209, 35,255, 45, 28, 99, 13, 34, 75, 50, +234, 99, 92, 56, 82,140,188,135,189,198,144,112,245,247,160, 67, 74,169,186,224, + 16, 81, 7, 85, 79,128, 61,226, 97,212,196, 46,112,131, 11,116, 16, 22,133, 6, + 64,113,164,236,188,242,209,252,165, 51, 25, 67,219,169,165, 64,121,226,180, 98, + 45,188,173, 23, 58, 69, 67, 18,222, 66,117,245, 53,174, 17, 40, 52,106, 46,219, + 32,237,224, 32,237,196,187,141,206, 87,170,135, 14, 49,182,202,183,164,235,155, +215,145, 29, 17,180,138,100,234,209, 28,154,248, 73,208,107,209,250, 45,167,134, +176,243, 0,217,249,235, 10, 19,119,172, 51,141,247,165, 90,147,161,232, 53,110, + 99,235,225,247,113, 99,168,117, 91, 83, 36, 94,163,157,175, 13, 88,190, 55, 36, + 18, 28, 37,203,164,198,242, 38,140, 15, 29, 39, 98,229,134, 24,163, 20, 66,234, + 54,123, 22, 46, 21,232,164,157, 16, 13, 53, 33,217,210,188,143, 20, 14,108, 36, +108, 27, 39, 89, 2, 92, 57, 26,210, 68,178, 98,135, 25,164, 87, 95,144,164, 60, + 39,200,240,185,233,162, 50, 43, 0, 36,217,103,234, 25, 2,156,213, 75,138,216, +197, 18, 31, 80,133,229,221, 21,245,139,204, 7,183, 53, 40,249, 74,122, 88, 71, +222,253, 64, 96, 80,103, 76, 9, 48,105, 64,181,151,197,144, 98, 88, 49, 60, 18, + 49,247,210, 83, 25,178, 18,135, 75,219,215, 23, 24,100, 29, 99,246,215, 33,145, +246,155,219,186,116,127,196,111,214, 1,185, 94,127,170,133,160, 95, 71, 33, 68, + 87,114,182, 40,151,163, 2, 42, 64,186,224, 84,199, 0,186, 88,122,206,230,241, +157,164,203, 81, 6,151,134,221,231,139,194,135, 36,205, 89,136,175, 72,102,103, + 37,117, 86, 98,130,163, 15,212,187, 76,132, 29,146, 19,222, 2, 48, 78, 20,115, + 37, 96,178, 76,209,119,244, 67,124,179,108, 58, 68, 5,143,203,238,123, 40,100, + 62,117, 68,156,210,182,176,218,115, 25, 29, 39,197,141, 96, 46, 88,176, 21,242, +226,220, 55,223,170, 29,113,242,222,183,112, 76,114,117,156, 92,172,251,227,135, + 26,118,231,156, 46, 99,142, 15, 26,193,116, 37,183, 63, 29,228,166,170, 35,144, +132,113, 60,187,149,252, 47,131,204,247,103, 21,238,190, 4, 84,179,178,140, 31, + 49, 87, 74,205,162,101,231,142,220, 97,132,119, 16, 39, 6,184, 39, 66, 38, 32, +228,180, 19, 70,255, 26,108,136,241,100,183, 73, 89,147,130, 6, 43,179,219,159, +194, 65, 85,144,229,228, 71,111,213,195,165, 17,106,206,230,237,114, 16,181,158, +175,136,202, 35,151, 75,162, 24,159,242,242, 71,248,205,195,238, 31,254, 91,254, +161,231, 24,104, 84,133, 8, 30,109, 84,104, 57,126,231,194,132,188,175, 10,128, +172, 16,149,192,194, 1,231, 15,252,158, 13, 42, 59,225,159, 3, 19,233, 82,193, +170,105, 42, 25, 13,167, 51, 40,208,231, 22,197,149, 80,142, 85, 48,183, 91,114, +118, 9,248,216,148, 75,144, 20, 86,111,188,170, 42,104,197,130,104,133,222,153, +110,180,100,179,184, 29,210, 90, 34,143,142, 73,230,186,211,115,205, 32, 20, 46, + 87, 97, 28,185,196,152,175,167,166,175,194, 6,221,228,250, 42, 10,148,191,132, + 61,102,113,167, 70,207,105, 23,186,185,109,182, 94, 5,174,173,188,246, 54,178, +169, 27,170,101,234, 48, 45, 45, 27, 3,216, 45,170, 61, 89,134, 83,222, 13,142, + 75,112,248, 72,154, 24, 35,132,254, 8, 8,154, 59,231, 96,227,192,109, 14,111, + 20,235, 84,242,144,167,147, 26, 5,169,165,209, 4,169,183, 39,242,187,203,152, + 80,194,162,112,193,223, 25,126,253,223,174,173, 24, 20,178, 38,157, 58,176,146, +219,111,187, 47,130, 14,202, 17,109,226,150, 6, 72,208, 70, 92,137, 82, 60,179, +216, 73, 1,139, 4, 66,145, 55,239, 25, 24,168,206,205, 88,120,236,244,230, 67, + 68,255,131,146, 43,232, 19,179, 24,208,202, 40, 5, 4,159, 29, 24, 59, 28,211, + 90,183,193, 54, 67,174, 75, 44, 54,133,169,147, 44,144,125,248,142,163,186, 50, + 21,242,110,173,238, 29,146,243, 23,142, 73, 65,165, 93,143, 63, 5,165, 66,195, + 92, 50,150,192,183, 36,213,255,141,111,239,202, 12,181,224,241,240,229,199,154, + 20,242, 35,122,248, 83,200,165, 62,127,133, 65,243,150, 27, 97,197, 81, 18,197, +238,117,234,188, 96,197,136,251,112, 48, 69, 52,131,175,153, 99, 36,230,127,143, +139, 27,210,143,111, 40, 9,160,100, 28,211, 49, 5, 15,186, 66, 91, 12,157, 49, + 21,221,246,161,117, 79,163, 28, 33, 57,107,145, 47,160,101, 70, 86, 42,138,219, +242,123, 20,242,151, 24,133,224, 83, 12, 43,168, 88,196, 29, 2,136,101,185,223, +193,254, 95, 14, 59,165, 75,156, 53,170,107, 17, 39, 16,233,107, 25,234,166,246, + 12, 20,111, 81,196, 95, 71,209, 54,111, 8, 21,222,103, 47, 15,185, 84,216, 97, + 88,156,124,178,202,238,212,130,248, 89,214, 8,128,116, 27, 46, 86, 8,197, 97, +244, 89,173, 21, 42,176,126, 23,133, 69,101,206,182,246, 68,164, 45,183,130,137, +162, 10,230, 63, 59, 17,131, 5,197, 16, 47, 17, 53,158,185,204,230, 2,253,191, + 12,147, 0,113, 83,229,162, 0, 63,121,170, 65,240,163,169, 4,137,148,133, 83, +145, 7,122,224, 81,186,117,128, 16, 73, 29,203,150,129, 80, 28,248,191,180,233, +193, 88, 91, 39, 17,125,189,161, 18, 99,155,102,243,213,151, 38, 14,244,144,200, + 10,119, 4, 82,116,144, 9,190,201,194,185,159, 97, 92, 74, 70, 62,210,178,186, +191, 83, 46,110,187,104,197, 33,183,147,151,213,227,214,220, 70,120, 96,149,136, + 48,195, 16,162,158,102, 27, 73,224, 71,186, 39,128, 99,146,124, 32,114,193, 44, +228, 19,172,143, 88, 7,100,226,213,137,162,125, 90, 81,112,192, 41,171,154, 32, + 9, 56,169,216,196, 21, 57,242, 56, 5,194, 59, 65, 31, 74, 57,244, 24,197, 48, +170,179,144, 33,158, 11,161,170,152,222,191,156,193, 39,161,189,220,244, 68, 43, + 89,173, 83,237, 20, 96,165,118,206,229,218, 60,176,177,219,246,230, 36,155,173, +196,210,165,242, 39,254, 43,179, 3,157,217,171,182,156,121,248, 48,201,103, 11, + 76,123, 44,180,100, 38,238, 50, 18,185,112, 91,240,204,204, 21,184, 68,147, 36, +141,205,192,250,212,150,254,244,186,227,112, 84,159,178,230,242,119,116,118,218, +252, 12,183, 55,233, 74,171,210,168,195, 69,148,106,216, 57,128, 65, 37,122, 95, + 85,119,137,129,130, 71,112,133,123,202,113,209,157, 35, 31, 1,179, 95,148, 89, +203, 9,132,223, 33,227,188, 62, 71,144,225,157,206,113,254,186,198,208, 13,174, +184,184,199,229,235,185, 47,134,205, 5,138,231,139,125, 19, 90,224, 63, 61, 20, +212,111, 20, 60, 40, 66,214,188,182, 3, 48, 43, 92,208, 73, 75,179, 25,185,171, + 80, 76,129,232, 35,113,215, 10,131,155, 7, 15,100,168,138,217, 88, 59, 17,241, +224,249,209,154, 84,228,191, 81, 13, 31,114,107,254,173, 81,229,211,190, 12, 69, +121,184,150,253, 69,230,103, 68,165,116,210, 92, 43, 77,100,120,163, 81,219,234, +177,250,148, 73, 22, 36,116, 28,130, 73,211, 34, 65,126, 9, 36,163, 62,166, 37, +247,196, 12,197,156, 15, 74,217, 77, 57,182,212, 55,141,155,214,188,152, 57, 75, +157, 95,245,144, 89,228,252, 39, 88,153, 79,157,191,199,153,160,160, 7,112, 41, + 40,104, 19,141,240,136,176,182, 69,115,208, 91, 80,185, 53,227, 73,220,227, 97, +169,146, 3,188, 56, 85,167,105,129,100,235,225,166,212, 89,139,114,220,218, 18, +230, 91,159,133,103, 63,106,250,192,133,153, 59,108, 31,114,165, 18,174, 88, 57, + 30,111,145,187, 88, 15,198, 97,197,242,143,102, 12,114,182, 41, 17, 75, 34,180, +108, 7, 78,125, 55, 99,133, 27,215,150,138,138, 17, 24,171,180, 17,106, 86, 28, + 49,169, 95, 53,210,195, 12, 74,126,121, 97,243, 71, 74,249, 77,190, 75,220,231, +172, 18,230, 35, 30, 89, 33,112, 47, 29,141,132, 58,202, 8,185,155,205, 14,130, +206, 42,240,163,139, 58, 56,152, 32, 69,245, 54,126, 80,198,199,190, 67,153, 42, +250, 98, 46,235,214,201, 74,134, 51, 65,229, 50, 27, 36, 16, 45, 30,244,141, 77, +242,230, 88,201,227, 19,179,135,165, 75,134, 4, 13, 0, 92, 96,150, 34, 51, 31, +155,142, 36,160, 43,209,190, 62,114,157, 29,130, 5, 43,155,135,241, 51,189, 43, + 61, 63, 16, 6, 91,117, 45,151,134,115,250,196,158,203, 85,181,172, 20,253,201, +130,236,242,108,115,228, 97,129,151,136,134,217, 9,237, 71,178,196,222, 42,230, +232,128, 76, 94,231,201, 91,169, 2, 40,105,206, 56, 97,210,137, 37,210, 85,202, +226, 1,137, 59,168,234,170, 65,211,244,201,169, 39,197, 80,189,156, 94, 67,152, +210,197, 26,120, 75, 7,202,215, 34, 28,123,127, 65,176, 95,135,211,155, 74,140, + 32, 57,224,157,171,100, 46,196, 67, 81,202,150,206, 0, 96,158, 35, 43,178, 0, + 33,140,252,104, 29,227, 81, 58,206,224,206,165, 13,151, 34,144, 78,197,149,241, + 33,107,207,127,249,113,158,216,227,213,143, 86,194, 12,243,194,119,213,135,210, +171,107, 97,239,222,179,201, 4, 97, 20, 36, 6,158,164,200,227, 15,191,255, 94, + 82,103, 65,154, 79,101, 33, 33, 0,122,200,242,173, 87, 45,116, 56,109,175, 13, + 28,109, 98,197,226,194,107, 13, 28,136, 21, 15,150,180,147, 23, 71, 97,203,161, + 16,103,125,197,165, 30, 56,190,163,158,226, 77,162, 48,228, 9,144,103, 14, 73, +175, 93,236,147, 78, 54,126, 13,180, 2,207, 54, 88,106,116,210,131, 11, 87, 35, +192, 11,127, 11, 70, 86, 6, 29,235, 4, 40, 73,151, 31,216,163,231,244,249, 7, +233, 93,215, 88,127, 58,205, 67,167,162, 57, 55,115, 49,113,170,184,199,202,115, + 83,112,206,120,180,220, 84, 43, 47, 83,222, 77,138, 81,224, 14,249, 7, 55,165, +104,192,173,160,235, 64, 60,144,185, 33, 61,131, 93, 66,218,159,189,202, 56, 77, + 46,188, 37, 86,162,253,153,110,180, 78, 93, 15,210, 88,156,111, 4, 25,204, 79, + 99, 64,160, 59, 19,193, 19,226,162,194, 76,105,233, 24,246, 50,197, 93, 16,111, +248, 6,164, 41,199,239, 84, 98, 38,241, 91,247,124,158,140,148,106, 38,133,245, + 24, 94,158,136,137,153,209, 64,250, 17, 44, 47,156, 70,227,126,218, 5,246,147, + 1, 77, 3,202,105, 72, 28, 28, 62, 54,137, 77,136,123,179,131, 98,233, 43,213, +166,221, 69,157,166, 55,157,241, 19, 94, 57, 69, 66,219,105,111,187,222,155,229, + 31, 4,255, 83, 55,238,145,216,213,128, 6,217,234,243,176, 60,216,121,112, 9, + 6,117, 9,224, 19, 20, 0, 9,155,201,220,133, 32,147,133,192,225,249, 17, 68, +128,104,112,253, 96, 1,191, 96, 15,113,114,213,147,122,181,172,152, 85,117,199, + 2,250, 61, 85, 85, 90, 19,200,136,176,202,138,233, 41, 8,129,231, 47,128, 37, + 30,221,220, 29,226,164, 69, 22,128, 8, 29,130,176,212, 56,187, 79,253,219,100, + 28, 42,132, 6,104,185, 2,196,193,173,142,226,207,226,104, 6,243,196, 47,104, +115, 74,129, 54,136, 96,145, 71,209,194,103,160,178, 49, 15,177, 86,169, 24, 55, + 97, 76,142, 49, 84, 9,186,237, 33,166,192, 88,151, 56,228,230, 59,159, 94,211, + 95,204,204,149,138, 30,151,171, 45, 27, 74, 65,163,142,236, 37,177,119,194,126, + 65,150,208,116, 17,171,111, 93,128, 60,232, 39, 64, 16,168,135,114,192,202,224, +149,225,129,231,207, 1, 9, 3,192, 64,206,130,119, 4, 33, 67,136,136,242, 15, +180, 26,254, 4, 14,202, 49,126,244,128, 35,144, 13,105, 20, 80,238,150, 67,195, + 10,133, 21,215,206, 56,192,107,177, 1, 30,120,123,197, 68,186, 7,184,188, 5, +126,224,156,157,213,198,149, 19, 82,220,129,184, 3,128,197,135, 69,229,161,173, +204,135,205,151,254,187,101,200, 17,236, 6, 43, 23, 59,112,124,174, 8,173,122, + 33, 38,212,113,207,199, 34, 23,151, 32, 21,114,167, 17, 80, 11,146, 59, 58,101, + 92,232,170,145, 23,140, 64, 26,237,238, 40, 40,147,158,226,216,183, 29, 49, 94, +174, 21,213, 82,107,191,194, 88,231,142, 35, 31, 24,195, 67,112,129, 44,149,102, +252, 3,233,131, 82,160,161,203, 67, 3,250,238, 75,179, 64, 12,242, 7,228,170, +158,202,131, 63,180, 9,112, 39,173,132,192,199, 27, 98, 34, 55,210,128, 84,122, +219, 82,151, 3, 18, 7,211,122, 71,201, 83,110, 85, 69, 47,116,208,242,237, 97, +253,198,212,248, 24,147, 17, 16,176, 59,105,100,110, 3,254, 47,160,200,230,106, +184, 29,209, 36, 54,191,199, 64, 16,213,116,145,223, 11, 92, 13, 35, 4, 50, 66, +242,186, 42, 0,154, 62, 25, 22,235,159, 33, 70,241, 99,207,118,143,171, 77, 25, + 76,123,150, 59,155,150, 27,159, 70, 31,187,199,191, 1,109,105, 16, 60,152,223, +235, 86, 48,151,224, 74,103, 96,216,125,133, 93,138, 6,173,151,243,128,241, 55, +205,254, 34,175,134, 83,169, 55, 93,143, 83, 98,131,226,166,210, 99, 70,192, 78, + 11, 30,110,191, 7, 46, 16,160,216,127,191,209, 44, 16,243, 70, 29,246,188,247, + 80,123,197, 79,167,124,150,126, 53,106, 26,227, 85,177,121, 17,208,132,167, 67, +245, 37, 51, 80,133,117,135, 7, 38,188,127,246,167,187, 95,190, 84,121,232,151, + 79, 89,182,104, 82,148, 80, 86,186, 62,236,149,225,209, 0,237, 43, 5, 56,208, + 73, 26, 88, 40,171, 65,145, 9,211,194,217,129,161,213,140, 50,177, 78, 33,207, + 71,146,207,168, 44, 59,243,131,215, 3,232,250, 57,247, 4,167, 55,135, 13, 0, +173, 68,159,110,150, 10,206, 63, 88, 3, 9,166,167, 86,228,131, 9, 78, 40,153, +193, 50, 49,194,170, 92, 84,204, 16, 54, 24, 62,156, 9, 12,128,160,170,138, 20, +238,172,174,154,226,145,174,125, 89,164, 93,241, 83, 21, 91,200, 59,106, 47, 37, + 84, 53, 66,252, 63,101,244, 46, 73,210, 49,195,152,105,138, 2,166, 93, 58, 34, +229,241, 65, 52,177,130, 70,241,225, 56,166,223,239,141, 54,150, 82,139,147,208, +154,239, 29,161, 84, 1, 23,254,246, 45,203,113,198,233, 56, 91, 42,121,118, 18, + 19, 57, 55, 28, 28,151,167,218, 38,202, 66,159, 33,123,236, 60, 25,201, 30, 6, +139, 89,251,164,140,167, 70, 51, 64,141,147, 84,193, 68,216,116,104, 68,238, 49, +142,111, 19,156, 1,143,101,143,184, 56,147, 86,245,248,229,229,155,233, 55, 90, + 42,229,184,166,139,201,251,168,212,186,105,160, 68, 95,206, 12,167,118,102,133, + 73,148, 30,252, 77, 94, 69, 64,165, 9,236, 79, 16,248, 35,107,165,144,105,116, + 14, 72,156, 23,194, 6,224, 32, 59,123,211,190,206,140,158, 96, 71,198, 32, 88, +111,109,115, 8, 16, 74,116,167, 19, 67,161, 96,171,166,164,107,165,105,181, 79, +127, 63,138, 72,178,217, 77,155,116, 75, 11,110,240,101,122,236,234,216, 99,213, +122, 25,171, 3,207,253,185,145,235, 31, 16,223, 18,237, 77, 55, 63,135, 73,195, +185,104,154, 43, 36, 66, 56,135,194,178,188,114,148,105,125, 14,200, 69, 53, 53, +180, 84,120,137, 59,220,161,153,241,194, 57,251,161,137, 53,136, 79,143, 35, 51, + 23,233, 7, 73, 4, 14,218,106, 60,191,105, 31,237,204, 51, 7,165,129,123,165, +125,167, 46,245,129,180,139,163, 29, 50,216, 58, 27,243,123, 37, 98,219, 23,230, +149,161, 81,230,206, 22, 63,103,102,198,221, 31, 48,138,222,246,136,220,130,244, + 67, 82,145, 54, 40,195, 57,235, 97,251, 64, 78,135,236, 5,113,168,191,252,145, +147,224, 73, 33, 67, 48, 72, 59,224, 53, 25,155,110, 80, 52, 39, 34, 75,253, 16, +221,153, 81,126, 32, 43,209, 35,159, 40, 16, 50,131,134,231, 93, 89, 74, 98, 48, +200, 0,246, 35,148, 43, 20,130, 14,243, 29, 13, 63, 94, 97,156,106,139,196,154, + 11, 13, 42, 30,137, 57,221,219,114,217,224,200, 36, 2, 29, 14,150,139,116, 14, + 4,200, 31,110,203,240,198, 46, 46, 21, 84,139,178,139,114,193,207, 0, 19,117, +152, 77, 22,176,225, 95,244,133,203,123,117, 58, 51,192,202,197,121, 98, 39, 40, + 71,120, 93,202,165, 96, 6, 63, 53,249,174,226,187,185,175,150,168,235,201,197, +114, 59,188, 45,173, 87,188,188, 89,216,249, 80,199,241, 36, 54, 6,159, 44,134, +228, 87,203, 45,102, 43,192, 18,201,230,164,167,216, 21,126, 63,234,186,197,110, + 66, 47, 58,138,160,185,160, 45,114,120,128, 58, 41,140,234,111,103, 8, 93,101, + 27,216,252, 75,242,190, 44, 63,148, 60,244,249,211,130,171, 65,149,252,235, 17, +245, 55, 87, 49, 19,244,212,186, 44,216,219, 72, 80,183,254, 4, 15,147,250,222, +144,130, 1,123, 34, 25,158,193,131,111, 5, 27, 36, 46, 8, 16,221,204, 57,194, +196, 67, 8,156,244, 72, 96,248, 64, 89, 17, 76, 90,214, 27, 90, 61,137,164, 68, + 56,225,143, 21, 66, 57,205,226, 86,201, 73,228, 56,143, 20,227,103, 90,193,129, +247, 69, 54,195, 50, 50,237,120, 52,200,170, 96,232, 25,129,245,198,179,203,253, + 10,231,146, 64,140, 49, 9,177,190,167,182,159,211, 23, 92, 96,158, 46, 22,135, +232,180,146,209, 14,187,156,226,130,216,175,133,167,100,190,168, 91, 63, 33,169, + 40, 82,157, 91,131, 80,193, 41, 8,224,180, 51, 12,167, 55,117,121,194,102,228, +208, 86, 7,243,199, 70,111,245,161,197,121,196,188, 22, 51, 98, 27,113,137,145, +208,104,209,174,110, 48, 13,132,153, 80,101, 0,230,107, 31,102, 40,153, 89, 43, + 4, 7,156,228, 59,157, 67,147, 98,228,162,195, 24,160,236, 74,163,141,173,187, +227, 20,213,234,105,187,199,187,157, 37,201,233,169,176, 60,140, 74,179,208, 59, +118,128,156,136,182, 86,192,155,178,123, 65,242,236, 21,192, 72,216,230, 0,149, +233, 81,121, 15, 46,254,122,221,244, 50, 79, 20, 2, 9,144,222,235,193, 39,166, +238,236,102,154,242,222,130, 89,247, 50,226,115, 55, 81, 64,236, 57,126, 74,229, + 60,212, 78,158,173,164,105,231, 14,187, 33,142, 86, 99,227,221, 7,155, 55,229, +114,191,130, 80, 50,140,145,217,111,182, 75,226,114, 54, 51, 10,196,161,167,173, +238,150, 81, 75,157,207,122, 60, 57, 35,131, 26,200, 78, 98,171,172,212,146,216, +233,193, 53, 26, 4, 55, 38, 46,102,200, 82, 76,144, 6,183,108,205, 67, 18, 69, +177,206, 47,130,122,202,228, 2,171,204, 67, 95,115, 61,227, 70,170,114, 43,250, +153, 96, 38,176,162,182, 94, 89, 31,210,182, 34,216,237, 54, 19, 15,142, 46, 34, + 92, 47, 38,190, 2,127,252,154,148, 51,253,114, 9, 90, 62,114,214,238,114,219, + 60,192, 9,230,106, 65, 16,210,241,197,136,206,139, 39,132, 66,102,253,114, 54, +180,136,155,228,255,188, 23, 43,198,233,116,185,224,131,249,189,199, 24,240,246, +118, 64, 24, 70,180,239, 99,142, 66, 79, 1,150, 33, 92, 21,203,211,107,248,214, +182, 77, 32,120, 24,219,105,219, 83,178, 39,143, 32,166, 28, 19, 95,157, 81, 89, +168, 13,161,205, 27, 14, 92,217,138, 83,219, 98, 95,131,172, 81,112,130, 3, 19, +195,174,189,101,200, 79,205,254, 83, 71,190,199, 53, 66,224, 35,218, 38,244,173, +135, 59, 18, 19,122, 94,210,228,225, 62, 14, 19, 56, 21,168,210, 77, 16, 67, 63, +114,155,169,175,140,104,174, 39,217,196,208,185, 82, 27,130,223,196, 41, 83,187, +168,204,152, 34, 56,135,125,136, 53, 33, 96,145,232,107,123,148, 90,102, 20, 57, +136, 22,157, 78,131,254,234,229, 46, 44,113, 49,254,232,130,214,140,205, 25, 73, +197,215, 50,139,205, 38, 12,182,167,161, 74,103,152, 16,147, 1,121,246,188,252, +126,226, 19,160,213, 20,133,228,242, 15,178, 58, 1, 39,227,104,146,209, 20,184, + 8,232, 26,224,161, 21,184,249,140,206, 50,239, 15,228,217,115,131, 26,100,223, + 93,151,203, 49,226,232,250, 29,245, 72,138, 12, 71, 37, 27,172,211,164,222,170, + 51, 7, 57,254,112, 38,219, 57, 23,205,128, 33, 64, 57,219,164,151, 0, 21, 97, + 91,107,130,196, 55, 40,133, 27, 4,167, 78,196, 58,246, 84, 82, 82, 86, 4,111, + 87,135, 62,152, 32,255,225, 67,172,121,127,136,195,215,110,241,177,177,172, 46, +246,180, 39,244, 28, 83,163,242, 64,121,182,126, 68, 54, 21, 78,196, 6, 67,165, +234,164, 28,147,184,213,154,125,119, 76,165, 14,192, 4, 0,202, 11,168,128,189, +252, 17, 39,137, 96,127,129, 5,197,112, 71,133, 68, 68,140,187, 36,141,128,147, +247,139,159,196,169, 98,229,187, 16,245, 60,238, 96,165, 50,154,147,165, 80,219, + 44,170, 19, 33, 30, 88,226,248, 17, 72,111, 83, 49, 83,192, 70,246,158, 14,180, +110,139,111, 71,218,148,167,230,232, 86,106, 58,228,182,148, 22,196,112,214, 5, +222, 62,177,220,172,152,138,119, 2,118,119, 20, 83, 39, 20,113, 1, 5, 69, 98, + 55,196,247,239, 88,234,175,104, 18, 89,246,194,237,199,201,135,117,130,240,169, + 2,132,253,188, 7, 22,192,131, 4,119, 45,149,225,154,224,178, 43, 8,107,224, + 49, 60,148, 3,184, 35, 14,205,136,167,165,144, 32, 3,240,161, 29,100,164,209, +148,115, 60, 97,155, 92,235,227, 33,206,215, 64, 81,184, 35,252,243,240, 80, 98, + 1,144, 63,134,203, 81,137,115,165,209,133,102,250, 20,254,197,209,102,138,195, + 85,199,196, 88, 15,165,193,128, 75,128,111, 95, 39,156,221,129, 19,164,183,233, + 73,240, 78, 29,125,204, 5, 44, 53, 9, 76, 62,196,187, 46,134,130,121, 41, 42, + 93,178, 90,115,134,210, 64,155,219,156, 6, 32, 56, 18,108,245,162,152,175,199, + 67,165, 59,104,154, 92, 51, 76, 89, 47,104,200, 1, 10, 65, 57, 93,138, 79, 57, + 61, 36,141, 42,245,123, 4, 1,216,215,109,178, 12, 67,207, 37, 46,196,160,210, + 48,179, 48, 37, 89, 48, 63,133,131,228, 83, 6,215, 82, 32,160,145,232,132, 38, + 67, 97,221, 60, 70,123,169,183,108,172,133,202, 40,228,170,210, 21, 44, 18,116, +118,233,127,113,104,169, 13,177,155,208,148,211,167, 15,188,232,106,218,187,125, +251,214,235,131, 52,152, 45,198,141, 32,209,151,117,122,222, 8,232, 78, 1,172, +156,119, 32,231, 65, 56,235, 1,118,129,243, 5,249,243,143,209, 7, 66,231,166, + 17, 22, 31,140, 86,186, 62, 72,147,114,156,119,195,108, 82,110,146,109,156,225, +213,139, 0, 27, 81, 20, 49,142,240, 84, 25, 65,228, 79,226,239, 10, 77, 16,187, + 35, 38, 8, 56, 45,162, 42,129,221, 89,168,147, 24,186,105,163, 2,222,203,147, +183,182,146,169, 3,223,167, 89,129, 5, 56, 63,223, 20,127, 34, 51,232, 15,163, +179,125,213,231,101, 95,122, 84,130,184,214, 64,118, 65,214,219,105,137,200,121, +171,219,130, 66, 32, 60, 43,209, 53, 16, 82,222,220, 63,244,104,206,108, 4, 28, + 38,161,238,185,210, 36, 19, 94, 11,220, 2,234,151, 52,132,245, 80,233,107,107, +222,151,125,251,154, 38,172,197, 88,212,210, 5, 11,141, 65,170,212,158, 89,116, + 2,141,165,255, 57,122,153, 35,168,125, 90, 93, 48, 86,218, 15, 42,160,110,124, +194,208,206,179, 32, 43,140,170, 42, 35, 80,150,157,137,146,166,129,160,187,186, + 38,151,184, 88,108,113,186,212,196, 23,249,123,208, 61,103,112,150, 84, 99,112, + 54, 8, 52,162, 28,183,193, 65, 13, 93,195,246,236,102, 42, 14, 47,191,146, 4, +213, 44,241, 2,227,158, 41,245,201,125,192,210, 98,250, 48, 96,210, 93, 65,139, + 19,195, 96, 73,124, 91,142, 70,113,167,255, 38,123,152,171,195,217,114,106, 69, +139,235,175,202, 85, 13, 63,245,121, 29, 48,131,108, 4, 47,111,164,168,134, 42, + 35,227,230, 7, 25,138, 50, 9,181,201, 97,132, 6,159, 52,161,137,158,225, 88, + 91, 38,159, 42, 32, 52,110,177, 47,183,232, 75,110,112,139, 51, 13,150, 68, 93, +241,125,118,193,118,214, 34,190,115,158,153, 38, 86,103,142, 14,213,219, 12,124, +152, 24,201, 32,131, 17,249,176,221, 84,223,139,227,200, 4, 96, 8,173, 21, 71, +191, 16, 80,156,198,186,111, 88,178,160, 51, 32,255, 46, 61,184,117, 66,145,222, +102,231,145, 2, 93,157, 23, 97,223, 70,157,216,163,248,184,133,117,188,175,112, +224,150,203,190,101,155, 2, 48, 21, 18,217,160,144,222, 29, 13,157,191, 0,157, +176,188, 54, 49, 0,233,106, 48,156,183,165,195, 23,204, 93, 43,186, 78,149,240, + 84,130,239,234, 38, 98,208,196, 30,196,224,194, 84,235,138,134, 35,240, 88, 1, + 46,132, 86,174,246,164,162,186,124, 74,134,161,234,159,208,224,202, 43,112,150, +203,192, 98,176,175,198, 74, 94, 36,135, 16,170,197,189,187,238, 33, 83, 83, 97, +108, 86, 44,193, 12,121,236,186, 15,111, 19, 10,137,160,179, 62,176, 46,215,245, + 8,164, 91,139,181,129,104, 70,173,190,248, 55, 36,116,115, 65, 68,176, 74,188, + 29, 8, 58,169,180, 72,210, 84, 85,192,233, 97, 81, 98,116,217, 70, 71,231,219, + 54, 36,252,244, 32,253,128, 32,208, 41, 15,195, 17, 35,246, 4,165, 17,158,242, + 2, 38, 56,148, 29,201, 0, 20, 94, 27, 6,217, 60,248,144,213,200,166, 44, 57, +205, 2, 27,138,160,127,210,241,131,219,163,241,184, 48,106,139,228,218,135,206, + 81,159,201, 88,113,167,235, 80,191,207,243,244,111,122, 76, 42,251,185,152,247, +203,228,218,205,148, 50,152, 83,137, 52, 14, 17,245, 36, 32,255, 38, 41,158, 50, + 93,152,100,134,176,197, 17,143,101,157,154,136,100,222, 25,148,203, 9,216,241, + 39,117, 14,193,140,215,130, 13, 93, 78, 53, 8,120,111,165,227,213,140, 92,209, +103,124, 23,197,101,110, 52,101, 29,142, 67,132,197, 97,248,227,107, 18,255,242, + 2, 41, 77, 76,100,210, 75,185,100, 53,108,216,150, 46,104, 80, 73,196, 99, 50, +229,226,209,235,229,225,110, 5, 73,214,172, 36, 34, 57,136,152, 95,145,127,207, +142, 5,113,144,142, 50,208,102,216, 8, 49,146,231,187,152, 88,129,232,205,175, +132,171, 32, 9,226,161, 69, 12,214,189,174, 41,143,228,212,127,207, 26, 68,190, + 63, 7,179,165,242, 75,185,142, 48,153,186,189,134, 52, 16,200,179,155,212, 1, +166, 9, 69, 67,117,210,225,137, 52,192, 28,215,115, 99, 8,133,244, 23,221,108, +234, 24, 86,247, 98,154, 0,243, 77, 38, 91,115, 55,141,161,145,252,247,162, 52, +174, 87, 96, 44, 37,101, 71,196, 72, 34, 10,192, 43,219,102, 11,237,186, 63, 31, +158,148, 71,185, 70,216, 16, 71,134, 20, 43, 34,242,203, 41,210, 36,147,136, 24, + 3, 25,201, 46, 27,241,186,193,174,198,162, 81,125,250,210, 87,255,241,113,107, + 42, 85, 50, 68, 49,220, 5,107, 66,209, 31, 8, 38, 63, 87, 56, 87, 25, 5, 34, +200,153,209,200,192, 13,210,244,227,206, 18, 9,139, 36, 25, 7, 18,240,209,239, +192,227, 83,115, 48, 94, 32,189,240,158,224, 31,100, 77,144,176, 72,144, 79,104, + 75, 61,216, 73,205, 41, 53, 67,179,143,211,195, 85, 19,211, 87,116,109,180, 84, +251,212,130, 30,134,245,114, 18,149, 77, 72, 12,217, 80, 64,147, 64,135, 19, 20, + 79,200,194, 97,186,157,194, 28, 54,172,225,140,212,215, 47,158,154, 18,207, 21, + 38,138, 67,135, 47, 36,132,135, 29,196, 48,100,122, 23,224,122,102, 37,168, 12, +125, 2, 12, 2,232,185,242, 14,171, 88, 86, 24, 95,123,172, 62, 21,148,201,153, +206,229, 31, 53, 85, 53,195,150,176,150, 10,216,253,252, 35,100,227,209,190,108, +166,177,128, 52,190, 90,208,109, 62, 49,180, 22,180,134, 49,246,181,185,193, 95, + 82,145,237, 32, 2,108,250,127,101,131,183, 64, 29,235,251,117,173, 57,211, 14, + 53,148,249, 44,208, 47,152,206,105,182, 8,166, 52,229,255, 17,182, 12,160,147, +213,231, 7,144, 29,183,159, 95,137, 16,151,243, 36, 25, 60,239, 85, 20,140,177, +234, 1, 41,200, 36,224, 82,138,163,104, 47, 8, 32,128,203,164, 63, 7,201,231, + 38,211,113,175, 45, 91, 3, 36, 0, 23, 4,233,148, 33,130, 71,125, 79,133, 17, +108,172, 55,247, 0, 32,106,119,109,232,112,239,192, 94,168,184,210,158,203, 19, +211,183,228,102, 39, 51, 40,168,136,235,206, 31,146, 1,240, 1, 47, 63, 82,207, +192,113, 76, 80,133,212, 0,141,156, 92,119, 36,147,135, 78,107, 38, 8, 67,139, +247, 10, 2, 31, 29,228,217, 67, 69, 73, 28,213,192,240, 18,105,189,150, 51,237, +101,122,236,219, 32,235,126,238,250, 27,235, 38, 91,178,144,241, 52,101, 31, 64, +153,168, 54,198,134,238,130, 31, 65,188,206,116,230,140,146, 39, 64,116,231, 82, +147,228,237,135, 6,123, 38,188, 34,133,231,165, 64, 41,198,242, 19, 3,127, 51, +201,244,122, 67,121,213,226, 21,199, 26,109,133, 81, 34, 24,137,162, 24,162, 19, +130, 8, 4,172, 28, 13,127,137,176,111, 97,240,118,127, 11,193, 98,200,180, 82, +168, 21,236, 79,149, 77,169,197,163, 18,230,192,119, 21,103,112,119,237,141, 45, + 48,144, 33,233,186,223,193,234,237,122,234,228,167,142,224,237, 33, 35,108,113, +183,230, 36, 8, 95,114,182,242, 83, 81,126,103, 36, 7,132,232,150,225,232,242, +106,222, 38,254, 15,252,169,142,149,110,137,176,233,105,220, 97,119,133, 31,222, +242,170,165,134,194, 9,220, 10,179, 94,105,193, 95,235,162, 96,205,150, 13, 6, + 8,183, 2,116,189,243,107,132, 8,103,127,178,186, 71, 27, 86, 99, 13,134, 28, +175,106, 11,132,176,183,146,137, 62,125,224, 34, 64, 45, 8,106, 45,102,197,210, +131, 58,199,181, 22,118,206, 4, 26,153,158, 64, 82, 0, 79,249,100,169,123,161, +174,187,118,150,218,107,109,195, 34,252, 74,187, 94,167,199,134, 86, 14,141,105, +121, 72, 11, 85,167,118, 32, 37, 4, 8,130,229,235, 26,150, 11, 67, 99,106, 56, +232,132,189, 0, 5,170, 9,220, 53,107, 71,245, 59,161,187, 88,216,158,204, 35, + 85,104, 68,139,111, 0, 42,236, 73,154, 67,108,220, 52,150, 15,186,241,147, 89, + 8,128,148, 77,179,151, 14,214, 73,153,137, 60,211,203, 47, 65, 57, 16,113,199, +205,223, 96,170,198,255, 20,209,139, 45,150, 66,207,210, 7,226,105, 93,228, 5, +249,182,230, 90, 82, 77, 38,216,111,236,109, 87, 31,124,122,132,111,226, 19, 13, +195,145,219, 77,139, 15, 29,163,230, 39,141,223, 22,143,182, 82, 34, 98,185,222, + 53,213,234, 57, 31,162,227, 18,153, 35,205, 93, 69,186,160, 49, 89,117, 69,231, + 64,199,176,173,251,110,133,202, 35,196,223,223,228,168, 13, 99,170, 9, 22, 17, +113, 58,191,113,229, 85,185, 21, 3, 34,201,165,185,126,193,138,141, 24, 69,131, + 4,244,105,255, 42,214,225, 13,172, 41, 8, 7,116, 18,193, 83,151,178, 44, 2, + 28,188,104,107, 17,241,143, 37, 90,202, 8,191,178,170, 95, 14, 6,185, 71,106, +222,212,249, 60,104, 16,119, 3,225,215, 51,134, 11,175,144,245,165, 51, 44, 96, + 19, 70, 18,246, 98, 72,134,189,129,121,195,168, 97,204,249,136,106,185,115,168, + 54,228, 13, 40, 15, 31, 58,255,224, 99, 10,141, 84, 89, 3, 58, 14,157, 13, 31, +127,162, 58,157, 87,152,244,230,213,136,150,110, 99,234, 98,120,231,252,189, 65, +156, 34,179,191,213, 99, 4, 41,110,125, 48,232, 91, 12, 42, 66,183,249, 15,134, +208, 15, 57, 27,119, 55, 0,169,166, 9, 36,114, 37,220, 82, 92, 82,254,224,190, +154,124,212,150,229, 42, 25,155, 78,100,192,100, 2,163, 97,113,202,157, 83,124, +119,143,168,164, 26,166,157,170,236,188,140,253, 58, 88, 71, 70,236,252, 88,198, +188, 85,160,185, 44,230,168,162, 52,138, 57, 84,214, 25, 16,245,152, 45,241,199, +132, 38,239,188, 26,235,222,238,142, 35,194,150,203, 83, 50, 3, 40,206,149, 53, +125,160,105, 56,148, 20, 62,144, 21,238,127, 40,119,220, 22, 7,168,220, 10,242, + 62,134,102,179,189,111, 53, 68,112,239,209, 42,180,187,183,230,169,243, 85,232, + 88,227, 62,215,138,244,114,131,230, 51,219, 15,107,168,184,126,222,234,146,125, +127,243,190,115, 26,205, 4, 99,223,214,208, 54,126, 75,107,197,235,122,154,191, +190, 83,215,189, 59,230,245, 87,188,171,221, 63, 11,149, 28,242,154, 41,107,253, +137, 12,163, 68,118, 47, 60, 32,242, 14,200, 87,180,211,184,131, 30,213,237,104, + 82,221,254,226, 9, 64,199,110, 13, 84,139,227, 1, 61,194,169, 91, 46,125, 81, +185, 57,181,232, 74,158, 94, 32, 43,202,172, 91,115,155,218,187,153,220, 53,209, + 65,231,221, 12,192,209,128,197, 78,233, 52, 85, 72, 75, 54, 67, 81,237, 57, 80, +247, 36, 18,255,120,110, 31, 80, 35,109,115,148, 40, 87,191, 82, 76,243, 72, 1, +167,131,105, 86,122, 75,147, 15, 61, 76,139, 63,242,244, 75, 75, 60, 37, 88, 47, +157, 53,210,164,234,255, 54,154,167, 12, 68, 31, 55,250,237, 9,158, 27, 55, 93, + 26, 15, 25, 55, 69,164,207,142,206, 34,219,100, 84,157, 1, 28, 61,204,150,140, +180,200, 82,161,111,139,160,125, 32,209, 62,253, 24, 91,155, 92,244, 20, 73, 24, +106,179, 95, 2,206,220,180,102, 91,104,107, 73, 99,155, 39, 41,102,220,222,213, +196,102, 0,215,213, 89,246,202,155, 90,227,129, 85,119, 56, 39, 6, 69,112,150, +249,149,182,176, 95,194, 23,239, 56,231, 0, 69,155, 52,201,146, 65,218, 24, 45, + 65,104,184,248,242,248,153, 32,132, 79,142,205, 8, 74,124, 88,161, 38,135,159, + 13,185,217,215,130,126, 79,184, 18,199,158, 19,238, 62,200, 56, 85, 63,193,162, + 98,145, 8,147,240, 20,101,227,151,231, 47, 1, 12,179, 86,220,138, 54, 22, 28, +249,184,218, 10,118,184,150, 49, 87,208, 48,218,221,225,122,180, 61,231,175,128, + 41,248, 15, 73,129,178,168,161,142, 1, 59, 48, 20, 62,164,149, 72,203, 11, 5, +207,166, 54,209, 25,102, 89, 40,110, 1, 23, 2,205,159,180,189, 58, 1,183, 99, +110,158,157, 57, 72,116, 12,161, 33,140, 12,172,179, 68, 57,248, 11, 79, 81,220, +230,125,189,211,182, 46,117, 17, 33,242, 38,113,249, 82,238,129,194,149, 83,238, +210,160,113, 11,144,108,113, 84, 23, 8, 90, 90, 21, 63,244,174,185, 25, 88, 82, +182,219,208,225,226,122, 4,209,141,150, 12,145,227, 91, 28,116,142, 89, 54,244, +163,109, 11, 97,145,185,195, 67,223, 93,235, 2,241, 41, 94,191, 68,101,252, 61, +212,181,125, 63,116,251, 89,223, 32, 88,252,190, 33, 14, 48, 75, 29, 96,246,247, +178, 35, 60,167,106,142,131,160,142,140,149, 23, 7,163,132,231, 15,184,109,131, +236, 99, 45, 58, 27,139, 50,184,135,220,207, 24,227,242,255, 25,146, 22, 35, 48, + 84, 4,217,181, 7,253,177, 77,149,255, 77, 46, 18,243, 39, 42,248, 89,202,218, + 70, 2,126, 44, 70,194,201,191,199, 87,219,246,177,190,189,100,237,189,135, 97, +143, 69,180, 13,143,108,110,247, 53,128, 97,199,237,204, 87, 90,226,141,169,126, +209,229,235, 97,151,248, 18,136,154, 43, 65, 1,225,255, 47, 5,253,180,110, 93, + 98,116,127, 38, 88,127,185, 8,151, 67, 99,138,144,206, 46, 62,146,107,186, 78, +127,231,167, 13,107,254, 34, 50, 23,152, 49, 47, 83,193, 87,202,200, 2,211,151, + 94,220,227, 49,173, 66, 96,202,232,202, 58,124,180, 55, 26,152,187,255,132,142, +151,224,200, 66,106, 76,145, 20,242,139,251, 3,191, 20, 43,200,110, 62,194,112, +180, 46,119,208, 65,166,151,112,225,249,204, 22,232, 2,211,142,210,147,187,241, + 31,152, 50,121,179, 88, 7, 8,220,200,243, 54, 20, 40, 39,232, 96, 97, 45, 77, +103,200,129, 24,246, 88,254, 89, 33, 84,153,196, 7,149, 15, 98,228,102, 14, 83, +147, 63, 0,135, 1, 95, 49, 25,225,240,129, 54,113,148,236,190, 51,152, 9, 71, + 44,119, 94,133, 67,178,122, 63, 96, 26,130,206,156, 56, 55,181, 63,201,199, 96, +227,232, 87,157,220,188,124, 50, 54, 91,155,220,192, 25,172, 2,144,102, 12, 85, +173,191,145, 45,183,221,110,209, 6, 51,206,107, 81,135,214,133,161,153,173,147, +150,196, 51,235,252, 46, 9,161,123, 14, 44,220, 31,185,178, 63,118, 28, 59,163, + 50,206,198,184,135,119,109,217,201,247, 50,129,154,149,146,123,113,203,126,240, + 72, 43, 23, 89, 52, 55,228, 8,140,115,229,139,174, 62,228,164,112, 66,172,192, + 66,124, 33,151, 54,249,141,112, 46,147, 43,108,244, 26,109, 53, 27, 5,126, 38, +105, 93, 29,134,153, 26, 95, 55,169, 93,147,192,185,192,210, 63,133, 0, 70,167, +110,176,164, 78,190, 60,143,186,181,111,105, 65,243,196,208,127,169,121, 8,235, + 9,175,111,178, 61, 43,224,215,115,246, 37,177,111,200,225,232,148,156, 98, 0, + 38,210, 57, 30, 64,115, 30,107, 49,251,117,131,248, 42, 84, 42,153,254,196, 21, +216,194,104,110,105, 27,106,168,235, 81,209,154,224, 5, 47, 0, 49, 0, 49, 0, +206,243,231,205, 53,231,142,166, 33,227,133,246,222,123,239,237,122, 35,169,201, + 8,173, 59,207,159, 55,215,156, 59,182,178,138, 58,212, 0, 5,176,235,250,197, +221,221, 20, 69, 81,208, 6, 29, 73, 23,204,138,140,183,209,229,118,181,141,112, + 76, 36,107, 38,233, 89,212,213, 34, 93, 42,240,121, 46,227,243,188,185,219,130, +127, 25,161,125,158, 63,111,174, 57,119,160,160, 25,123,232, 1, 4, 74, 69,233, +130,180,145,170,154, 9, 4, 24, 63,173, 32,204,208,134,213,223, 18,176,152,209, + 26,217,194,243,231,205,245, 98, 67, 67,124,223,209,144, 68, 5,227,203,184,155, + 27,106,123,219, 6, 12,106, 72, 8, 1,159,248, 79,233,250, 57, 53,211,148,161, + 38,142,252,127, 79,202, 62,175, 53,154,115, 50, 52, 85,220,115,242,225,112,120, + 32,120,194,120, 56,112, 36, 30,238,129,228, 23,140, 6,132,219,168,211, 93,147, +179,172, 1, 3, 53, 17, 8, 6,134, 70,162,241, 72,146, 99,187, 90,218, 3, 83, + 64, 81, 0, 33, 44, 8,137, 2, 65, 48, 18, 8, 12, 2, 1, 65, 32, 4, 69, 16, +132, 65, 16,132,128, 34, 64, 40,132, 66, 72, 6,161, 48,134, 75, 63, 84,211, 40, + 32, 28,197, 67,140,157,216,241, 80,101,200, 26, 33,134, 99,193,125,189,183,185, +223,169, 63, 44, 97,214, 41,134, 88,144,169,134,149,202,192,123,238,193,103,157, +186,120, 13, 19,141,158,165,247, 50,233, 3,111,208,177, 19,183,213, 73, 32,195, +126,181, 6,118, 82, 47, 93,212, 91,135,162,243, 24,163,205, 94, 61, 62, 88,124, +131,208, 87, 64,150,214,189, 74,234,118,144,252, 67, 72, 25, 9, 75, 68,162,129, +135,113,172,207, 55,171,170, 89, 75, 85,168,139, 78, 51, 75,182,117, 78, 26, 2, +143, 93, 60,133,124,140, 23,166,113, 43,220, 2,239,151,112,117, 66, 94,172,217, + 18, 75,198,158,111, 59, 50, 1,208,253,182, 5, 89,195, 50,250, 84, 73,137, 17, +193, 39, 81,236, 72,145, 6, 62,252,149,216, 14, 59,208,127, 21,177, 24,107,205, + 49, 73, 38, 69, 66, 72, 63, 9,139, 78, 96, 73,111,233, 84,116,196,115, 96,121, + 38, 79, 48, 11,105,221,185,161,112, 24,165, 69, 64, 69, 66, 71,130,131,221,154, + 70, 56,109,219,116,251,159,147,206, 27, 66,183,148, 6,245,210, 79, 69,150, 45, + 32,193,254,214, 93, 39, 98, 2,198,219, 59, 80, 26,146, 42,134,179, 29,186, 72, +128, 64, 9,189, 38,212, 15,194, 21, 7, 78,254,161, 14,109,209, 75,137, 17,247, + 90,145,171, 1,155,122, 7, 41, 86,235,177,141,158, 5,211, 52,226, 64,127,155, +154,187,113, 86,244, 65,153, 50, 90,172, 91, 79,150, 37, 63, 66, 39,201,164,161, + 25,184,134,124,136,116, 19, 62,105,193,226, 30,103,153,197, 19, 4,171,162,236, +115,171,150, 96,121,150,174, 62, 53,128, 52,148, 66, 96, 53, 53,127, 8,148, 68, + 40,218,129, 71, 71, 17,124, 72, 68, 85, 84,123, 26, 0, 34,212, 8,236,154, 88, +185,236,245, 84, 31,237,105, 35, 75,163,153, 66, 41, 21,250,210, 38,123, 55, 53, +175, 72,134,171,135,142, 86, 0,164, 98, 52,110,146,127, 30, 57, 43, 33,154,176, +226, 21,210,105,133, 95, 88,254,199, 31, 48,114,232,142, 6, 37,218, 22, 56, 21, +145,158,190, 16, 7,202,139,108, 26, 45,171,233,141,127,147,220, 81,216, 29,189, + 63, 71, 20,152, 74, 69, 93,221,255, 3, 30,133,220, 66, 87,188,133, 1,130,252, +155,240,111,179,180,148,213, 33,214, 15,177, 9,119,249, 67, 74, 87,214, 33,118, + 1, 49, 53,126,213,122, 16,169, 8,207,217, 63,160, 4,210,244,246,232,237,234, +253, 82,235, 34,117, 66, 69, 12, 69,200, 19,159,205, 12,201,157,191,215,176,208, +134, 97, 14,158, 61,108, 51, 78,195, 4,110,183,130,113,213,127, 24,151, 72,186, +157,133, 12,218, 45,241, 40,147, 67,159, 14,163,131, 62,142,161, 4,118, 35,153, + 50,203,235, 29,235,176,158,144,203,208,110,113,143, 49,135, 46, 77, 40,187, 43, + 61,174, 78,241, 79,213,112,205,129,156, 11,143,103, 45, 21,185, 3, 16, 21,233, +194, 74,252,128,231, 58,214,225,210,195,145,173,251, 53,206, 15,194,207,161, 20, +132,223,153, 52,192,136, 16, 82,199,113,101, 99,208,171, 13,153,234,233,220, 38, + 14,128,125, 40, 73,186, 84,221, 3,111, 5, 24,118, 64,135,101, 8,180,216, 16, +192,138,235,250,104,136,182,226, 64, 11,179,186,187,118, 26, 51,176, 36, 11, 20, +176, 17,214,253, 91, 38,130, 99,182, 14,239,194, 69, 5,247,219, 29,163,227, 59, +227,251, 47,188,174,112, 95, 73,174,155,143,157, 95,237,168,161, 7,136, 64, 5, + 54, 78,242, 66,133, 53, 93,162, 70, 12,146,233, 29,195, 70,187, 77, 58,166, 13, + 23,239, 64,158,130,110, 54, 22, 71,102,163,156, 6, 66, 60, 52,224, 91, 61, 98, + 82,180,230, 47,231,118,143,238, 82,159, 99,202,186,114,158,245,161, 54, 6,250, +216,212,194, 26, 49,105, 45,229,202,219, 27,156, 72, 92,164, 59,217, 74, 82,198, +206, 56,147,175, 70, 20, 45,178,232,144,147, 54, 12,170,100, 96,130, 49, 70,129, + 18, 36, 59, 72,104,242, 54,232,111,155,106,140,155,133,196,167, 72,115, 38, 37, + 50,113,192, 1,178, 73, 48,117,177, 7, 35,126, 30,229, 72, 99, 19,218, 53, 86, +103, 94, 75,135,230,116,197,207, 38,148,159,132,219,122,181, 60,125,203,113,100, +130, 66, 99, 32,253,129,163,127, 26,157,197,197, 87,104, 44,137,220, 7, 13, 61, +232,225, 44, 70,189,189, 85,109, 41, 70,141, 42,251, 4, 75,178,167,186,244, 8, +248, 45, 56,161, 96, 48, 32,170, 5, 36, 14, 39,132,248, 5,156, 37,106,169,224, + 42, 7,107,105, 23, 5, 65, 14,221,146,157, 86,133, 92,226, 1,225, 63,215, 9, + 71, 8,187, 20, 1,196,255,120, 62,186,114,184, 6,188, 1, 37, 34, 32,185, 51, + 40, 41, 97, 3, 4, 15, 3,119,202,195,116,250,224, 99, 80,156, 5, 78,192, 56, + 53, 76,128, 39,232, 62, 3, 47, 87, 64,153,118, 77,131,151, 4,102, 90, 5,178, + 50,161, 94,131,253, 22,112, 38,232,219,128,120, 10, 64,147, 79,228, 12, 20,243, + 6,156, 30,194,199, 89, 14,126, 24,228,120,172, 63, 40,114, 86,248, 31, 34, 57, +247,129, 31, 48, 57,255,244,135, 79,206, 58,255, 7, 83,206, 61,240, 67, 43,231, +159,254, 64,203, 89,206,255,176,203,185, 7,126, 16,230,252,167, 63, 36,115,214, +249, 31,160, 57,219, 21, 2,252,225,154, 83, 87,193,250,130, 55, 7,232,140, 32, + 57, 70, 70,229,219, 75,159,169,208, 90, 16, 55,149,234,244, 74, 69, 32, 72, 89, + 76, 15,227,242,159,140,205, 50, 68, 53,223,180, 13, 66,177, 67,181, 30,217, 57, +250, 23,228, 41,185,208,110, 70, 90,245,123,136,142, 95,235,228, 97,217,248,248, + 10,123, 71, 61,138, 2,223,244, 18, 80,222,252,224,175,188,168, 97,164,136,166, +152,212, 32, 7, 98, 5,202,210,232, 19, 64, 11,122, 51,247,208, 56, 71,247, 99, +223,104,232,136,201,133, 31, 85,201, 77,187,232,212, 79,117,152, 23,121, 73, 58, + 21,101,140,107,188,112, 31,230,112,238, 7,155, 59,176,240,222,192, 26, 56,162, +172, 84, 72, 55, 61, 50, 35, 67,204, 74,211,124, 5,214, 51,226,146,231,150,242, +228,240,161, 95, 36,149,135, 13, 43, 69,179,195, 38, 69,202,221,144,162,128, 39, +225,152, 99, 8,250,244,153,142, 10, 72, 27, 63,149,178, 24,178,254, 96,173,208, + 86,141, 74,155,108,242,145,255, 3, 50,249,106,240,226, 23,111,219,175,108, 43, + 32, 90, 11, 33,160,163,153,189,141,230,250, 27, 96,195,177,231,127, 80,191,130, + 31, 66,227, 39,193,223, 17,144,238, 11, 27, 86, 49,191, 71, 86,180,174,127,139, +247, 31, 70,186, 46, 64, 86, 30, 27,172,252,143, 40,164,169,134,130,193,241,124, + 27,201, 50, 50, 39,194, 12, 0, 73,217, 85, 98, 55,164,200,191, 72, 61, 0,167, + 80,126,160, 30,198,232,119, 51, 36,221, 35,149,172, 17, 40,125,249,233,158,252, + 18, 51,152,235,107,146, 7,211, 81,237,213, 78,213,251,195, 1, 73,203,222, 10, + 68,210,186,156, 72,126, 93,223, 63, 93, 0,187,152, 84, 82,155,151,111,188, 76, + 2,192, 10,175, 63,183,149,218,200,120, 5, 53, 16,132, 11, 9, 89,144,119,224, + 22, 40, 97, 81, 11,208,191, 23,204,151,234, 47, 3, 23,228,254,206,130, 40,166, + 42, 25,187,240, 48,120, 11,158, 30, 31, 95, 40, 26,180,197,212,194, 22, 12,221, + 7,107, 49,225,129,113, 67, 12, 82, 56, 72,139, 29,158,116, 32, 86,155, 74,116, +161, 12,167, 64, 38,156,218,185,104, 6, 33, 16,204,156,154,104, 64,195,238,207, +220, 78, 29,201,152,134, 71,223,139,108,158,186, 31,176,134,103,227,203,116, 52, + 59,158, 73,221,202,167,186, 99,186,115,123,199,123,170, 70, 31, 72,190, 3,125, +100,190, 33, 14, 59,161,198, 95,195,123, 68,105, 16,222,166, 70, 69,143,216, 15, +158, 17,235,192, 72, 59, 13,241,200, 59,176,134, 47, 32,227,187, 35,164, 3, 47, +195, 17, 72,236, 67,220, 64, 11,159, 97, 34,130,252, 18, 27,133,206,168,105,152, +227, 72, 99, 97, 51,210, 21,217,168,126,137,205, 11,153,209,142, 8, 15,118,169, +134,102,112,138,168,160, 24, 64, 28,172,171, 49,148, 10,224, 7, 10,213, 71, 60, +207, 8, 46,176,134, 16, 39, 60,133,222,128, 58,234, 70, 10,205,135,228,180, 55, +157,210, 50,246,210, 35,201, 49, 67,155, 2, 77,140,110,124, 45,105, 30,201,170, + 9, 36,227,240, 87, 77,149,126, 2,146,177,100, 90,170, 7,151,210,176,159,195, +250,203,202, 84,237,138, 52,179,106, 78,181,148,139,206, 56,193,247,142,250, 84, + 91, 67, 53,234,120,196,222,116, 18, 85, 79, 67,206,216,215, 17,251,170, 81,170, + 82, 28, 61,227, 6, 83,175, 16,228, 35,103,216,194, 66, 82, 85,132,163,102,140, +193, 54,206, 71,136,244,142,152,113, 3,184,228,162,151,199,157,139,142,215,196, + 59,236,168,104,106,239,240,240, 14,253,196,185,161,169, 44, 87, 37, 12,213, 96, +180, 34,198,123,138,178, 3,234,120,229,145, 80,185, 5, 9,123, 19,195,194, 23, +201,203,196, 49,130, 18, 74,147,197, 38,106,119,126,119,112, 82, 58,202,235, 87, + 69, 20,149,132, 20, 25, 18,137, 92, 11,143,192,173,109,152, 46,233,203,230, 23, + 49, 86,128,172,138,183, 89, 21, 26,128,225,227,252, 11,107,108,167, 96,128, 77, +136, 97, 72, 17, 65, 76, 72, 24,131,124, 33,134,129, 9,137,100,128, 50,148,193, +160, 12, 58, 34, 98,134, 98,134,123,113,175, 25,172,138, 33, 68, 59, 95, 84, 65, + 60,234, 35, 28, 24, 28, 35, 82, 7, 24, 54,184,112, 65, 54,236,146,241, 5,241, +241, 78,114,196, 47,146,222,142,193, 34, 74,148,199,121,156,134,231,234,177, 47, + 15, 56, 7,238, 55, 87, 64,128,150,208,225,129,140,124,128, 58,104, 40,143,242, + 5, 71,200,110, 36,154, 61,224,201,224, 50,244,138,172, 73,108, 57,103, 91, 55, + 50,201,150,164, 68, 78,128,108,229, 0, 40,249,201, 85, 14,201,155, 40, 92,143, +233,238,107, 97,152, 25, 12, 29, 69,164,137,120, 52,120,147,118, 80,108, 99, 43, +124, 45, 0, 62,131, 55,209, 71,196, 65,195, 45,186, 85,111,210, 25,113, 53, 78, +224,140,236,138,241,188, 41,163, 56, 83,147,113,108,132, 98, 18,233, 64,203,195, +128,107, 83, 89, 40, 70,173, 77,189,175, 24,118, 38,233, 76,121,138, 11, 10,195, +192, 28, 50, 34, 65,198, 96,250, 13,111,242, 67,196, 17, 0, 37,218,182,149,203, + 26,192, 67,174,136,136, 80,202,251, 23,178, 4,235, 20, 76,168, 1,211,183,228, + 64,188,152,197,234,175,157,185, 29, 64, 98, 21,170,204, 36,144, 46,231,145, 72, + 67, 49, 73, 23,194,128,113, 55, 26,149,238,199,169, 12, 51, 52,178,155,201, 77, +213,169,151, 27,135,169,141,111,189,110, 47,237, 28, 41,225,160,103,102,123,170, +212,209, 5,148, 86,227,206,207,242,149, 72, 38,167,178,190, 48,141, 62, 26,140, + 13,138,152,228, 23, 34,111, 32, 73, 39,206,112,250, 22, 39,211, 56,191,104, 50, +241,148,253,122,119, 50,153,173, 15,169, 30, 74,244,152,142, 37, 47, 52, 59, 81, + 9,135, 53,171,127,181, 41,157, 52, 16, 71,209, 10,212, 37,252, 14, 94, 86, 91, +226, 27, 91,106,109,193,172,242,183,156,227,233,203, 17, 58,213,235,212, 53,249, +252,207, 66,222, 55,230, 26,146,193,214,116, 6, 4, 49,104, 61, 45,227,215,196, + 59,136,116,186, 15,134,202, 29, 96, 25, 55, 83, 54,242,122, 54, 88,102,108, 41, +111, 20,230,118,228, 58,124, 32, 19,146, 65, 29, 56, 40,123,249, 82, 25, 40, 63, + 63,221,221,214, 17, 47, 57,218, 97, 23,188,193, 39,165, 52,212, 11,188,176, 9, +120,114,177,231, 62, 44,199,117, 75, 53, 13,148, 12, 67,224,202, 52,176, 79, 31, +239,207, 1,112, 2, 17, 59,205, 97,161,211, 63,175, 10, 57, 44, 36,229, 74, 26, +126,122,231,154, 96, 68, 13, 79,233,158, 62,102,125,244,196, 76,194, 52, 32,129, +172, 23, 11, 62, 36,221, 1,241,142,239,162,189, 52, 90,122,123,105,232,130, 4, + 69,164, 30, 30, 65,128,123,157,121,109, 6, 12,162,161,211,144,160, 1,125,101, + 20,245,154,236,198,131,111,208, 4,217,247,116,211,217,236,120,180,195,124,151, +254,220,148,122, 33,172,205,157, 19,106,152, 38,205,148,243,117,206,133,136,232, + 74,214,135,103,220, 70,248,199,206,136, 42,239, 18,236, 97, 82, 9,134, 27,189, + 18, 81, 1, 14, 56,167,166, 1, 93,130, 24,112, 63, 94,196,254,149,205,133, 16, +107,136, 5,120,238, 4,185, 16,244, 81, 68,232,166, 51, 38, 34, 8,180,210, 5, +197, 25,194,235,133,233, 51,161, 63,100,113, 4, 75, 29,196,250,191,110,104, 4, + 31, 50, 69,109, 4,238,110,151, 36, 48,219, 34, 2, 96, 2, 87, 90, 37,154,104, + 44, 42,240, 28,104, 9,167,238,152,110, 88, 97, 32,146,240,201, 60,224, 45, 60, +141,229, 6,110, 23,200,202, 12,177,246,192,165, 89,104, 41,174, 70,136,176, 16, +193, 85, 2,166,241,135, 25,107,199,170, 4,249, 38,172,146, 23, 90, 84, 11, 84, +162, 96,191,208,143,148,169,132,170, 87,240, 23,246, 75, 73,138,130,138, 23,236, + 11,249, 19, 2, 53,168, 74, 6,207, 23, 90,210, 83,135, 20, 0, 44,107,240, 15, +238, 43, 3,213, 0,107, 28,236, 8,127,171,128, 18,192,106, 7, 63,130,254, 34, +162, 8, 88,247, 96,151,208,103,108, 88, 20, 83, 67,195, 91,180, 86, 0, 38,148, + 65, 32, 0,211, 60,164,193, 75,225,143,105,254, 24,185,214,243,238, 18, 51,195, +153,195, 68, 9, 41, 43, 0,164, 37,170,170,170,106, 86, 56, 0, 56, 0, 57, 0, +211,106,208, 79, 69, 69,117, 42,246,140,213,218, 78, 23,202,179,207,164,111,193, + 73, 58, 73,228,251, 23, 51,142, 60,163,230,206, 94,138, 92,202,196, 35,162,135, +123,166, 45, 7,180, 56,107, 14,160,250,204,157, 86,242, 37, 24,183,122,190,109, +107, 80,156,242, 47,181,200, 55, 85,253,165,201,190,119,214,224, 95,207, 15,147, +123,163,247,244,186,230,174, 24,188,195,221,200, 96,140, 82, 71,174,243,132,105, + 25, 77,182,206,181,136,113,105, 91,184, 82, 42, 32, 80, 95,112, 18,117,222,236, +138,171,237,120,157, 14,110, 58,230,115, 4,157, 45,163,133, 34,248,187,133, 85, +251, 86, 5,106, 93,223,199,102,112, 13,117, 14,231,188,174, 13,226,152, 22, 85, +234,241, 60, 21,132, 99,237,248,235, 22,246, 3, 73,146, 28,109, 97, 21,197,230, +191,103, 47,176, 32,182, 55, 12,175,184,247,253, 74,243,139, 18, 48,139,122, 64, +219, 25,125, 69,187, 55, 64, 11, 93,247,190,111,115, 91,250,251, 71,143,115,222, + 91,188, 1,132,219,168,195, 77,115,146,130,100, 57,179,244, 16, 20, 28,140, 73, + 99, 2, 77, 73, 41,104, 12,247, 1,115, 80, 97, 72, 41, 80, 14,144, 4, 65, 96, + 19,132, 68, 16, 16, 81, 2, 74, 64, 4,132, 8,136, 64, 18,130, 4, 68,110,196, + 76, 7,254,224, 90, 13,162,245,137, 98, 88,209, 3,207, 90, 27, 70,116,138, 50, +248,224,197, 72,107, 39,192,117, 68,241, 89,249,164, 77,106, 3, 49,149,173, 46, + 56,120, 5,164,145,131,138,206, 64, 55,173,160, 78,183, 12,101,181,195,202, 39, + 42,191, 13,202,206,180, 85,225, 78,232,172,143, 14,253,123,102,234,125,151, 83, + 32, 31,243,185,236,111,156,180, 56, 90,143, 97,253, 36,230, 44,184,101, 16,169, + 4,201,196,111,228, 86,116,110, 9, 58, 93,157,206,247, 74,234,167,101, 17,164, + 79, 47,165,172, 85, 9, 59,249,243,222,250, 8,165, 41, 55,241,234, 62, 10,175, + 86,189,114, 58, 89,106,230,245,252,121,111,213, 11,140,195,212, 44,177, 31,157, + 21,140, 20, 53,106,251, 84,204, 70,108,124,179, 62, 80, 94, 1, 50, 54, 81, 83, +160, 41,116,198,164, 18, 53, 68,240,146,205,109,102,221, 11,161,210, 49,198,128, +236, 81,196,175, 74,190, 77, 47,114, 87,187,108,217,192,213,203,241,190,178,237, +160,217, 76,126, 32, 71,125,131,158,183, 10, 98, 55,162, 28,198,141,244,204,177, +213,229,195, 76, 65, 74,101,211, 75, 1, 98,247, 63,158,143,244,138,174,181,157, + 81, 83,116,204, 12,105, 42, 75, 15,163, 78, 15, 84,222,218,177, 40, 90, 93, 73, +153,220, 87, 29, 75, 97, 98, 41, 91, 84,215, 87, 29,207, 49,147,233, 91,202,239, +245, 31,199,253,137, 64,216,217,197,163, 24,159, 13,173, 31, 49,118,119,254, 91, +153, 21, 7,118, 22,229,209, 2,217, 83,101,248,151,173,163,205, 20, 63,208,214, +165,173, 21, 35,115, 36,187, 52, 33, 32,253,148,106, 67,131,110,215,204,147, 51, +247, 45, 1,113, 15,227,237,208, 75, 99,183,183,180,217,249, 6,144,200, 27, 75, +209,150, 10, 61,127, 87,254, 6,115,213,211,209,144, 58, 85, 73,171,199, 43,199, + 64, 80,203, 49, 6, 75,108, 28,222,191,103, 92, 90,106, 3, 96, 51,182, 54,136, +194,167,186,233,205, 15,202,200, 69,145,223,166,177, 85,195, 65, 5, 9,137,172, +209,225,133, 46, 11,219,216,184, 90,241,176,195,194, 4, 12,237, 15, 3,115,215, + 5, 31,254, 96, 33, 25,213,195,203,130, 72,182, 82,219, 50, 85, 39,182, 33,204, + 36, 7, 81,233,195,232, 0,219, 94,218, 48,106, 31,149,186,120, 12,192,101, 86, +179, 24, 87,139,170,118, 87, 45, 11,173, 3,127,181,208,120, 91,250,153,192,174, +191,151, 33, 12,241, 38,181, 44, 26, 82, 56,150,165, 19,176,251, 25, 2, 48,248, + 61, 75,152,122, 11,210,224,221, 60,225, 47,226,180,142, 28,134,114,103, 31, 63, +202,174,115,123,244, 98,240,113,254,155,146, 34,247, 10,224, 15, 38,159, 39,140, +116,141,223, 81, 56, 7, 98, 91, 61,100, 80,151,106, 56,223,225,176, 83,161,225, +146,191,112, 34,136,191,170,227,255, 40,119,156,145,195,167, 75,138,156,131,114, + 92,116,174, 63,117,207, 52, 75,104,252,176, 4, 71,222, 95,233,160,180,219, 60, + 45, 89, 39,203,185, 93,245, 75,115,198, 26, 65,194, 39,136, 56,226,130,200,169, +238,135,227,123,142, 65,171,126, 42,133,249,128,160, 30,142,133,227, 21, 57,220, +218,112, 15,220,112, 11, 61,189,160, 29,238, 43, 80,112,156, 11,120,201,150, 27, +200,137,165,161,190,115,165, 12, 25, 77,137,149, 47, 91,160, 81,180, 69,188,150, + 62,101,177, 64,245,240, 42, 26, 45, 70,234, 33, 24, 38,163,171, 88,235,216,249, +196,121, 19, 62,223,183,214,234, 78,162,153,199, 67, 79, 89, 39, 43, 76,165,188, +124,130, 0, 5, 75,166,239, 54,181, 35,160,150, 82,109,156, 62, 67,175,202, 38, + 85,181, 78,146, 25,179, 49, 57,124,188,234,205,243,121,194,251, 18,166, 25,134, +178, 26,152,238,113,119,193,163,234, 23, 61,137,198,159,163, 55,128,202,248,153, + 15,131,206, 74,101, 6,248,157,199, 92,245,104,124, 6,146, 39, 82,117,221,122, +254, 75, 19, 60, 63, 67,178,235, 12,136, 22, 91,100, 22,100, 38, 14,103, 44, 54, +126, 23, 9, 94, 72,104,121,138,124,206, 30,203,179,192,179,120,248,252,224, 35, + 37,168, 30, 95, 36, 85,228,255, 0, 10,248,155, 75,227,117,214,251,123,187, 41, +229,204, 44, 35,152,113,202,240,215, 32,225,158,196,158,172, 86,242,138, 93, 73, +154,101,126,230,152,243,120,246, 6,201, 60, 75, 14, 55,155,192,248, 88,248,165, +238, 63, 49, 65,129,166,175, 18,113,133,161, 63, 85,145,179, 17, 53, 21, 46,218, +109, 28, 1,241, 86,134, 83,142,152,246, 8,139, 48,163,250,222, 1,109, 16,182, + 88, 84,149, 1,172,239,162, 63, 33,203,162, 21,243,119,251,172, 61,147, 37, 13, +219,143,133, 29,148,131,220, 11,101,111, 55, 96,115,165, 27, 38, 27,160, 20,231, + 92, 79,103,188,109, 21, 29,121,163, 27, 80, 97, 60,197, 90,196, 54,239,127,242, +181,236,115,250,155,253,191, 60,229,248,230,148,249,255, 53, 78, 74,115,241,210, +202,232, 30, 62, 74, 17,107,207,212,249,121,100,126,141,179,196, 6,192,100, 65, +241, 43,207, 64,226,215,119,200,180, 51,102, 79,133, 63,194, 58, 30, 91, 98,148, +194,178,135,221, 16, 94,114,114,147, 5,151,148,242,195,248,244, 32,100,239,150, +100, 68,236, 39, 25, 66,187,226,171,165, 6, 54,218,172,114,141,238,191,142,216, +101,116,140, 85,242,212,188, 61, 90, 83, 78,184, 60,104, 23,123,127, 13,169, 24, + 52,151,222,226,135,213, 23, 56, 9,211,125,209,125, 83,198,217,208, 25,106,154, +108,166,125,216, 48, 47, 51, 29, 82,146, 86,215,233, 19,202,205,198, 87,187,106, +208,116,147, 7,165,181, 38, 52,107,141,144, 51,178,161, 10,179,225, 25,248, 18, +206,175, 23,210, 99,195,186,171,148,190,119,137,216,155,230,247,189,142, 39, 20, + 80,254,132, 40,204, 34, 35,107,103,243,157,134, 76, 71,251, 92,224,217, 83,204, +148,131, 28,165, 50, 68,238, 52, 11,238, 88,221, 45,238,246,192, 12,124,179,255, + 20,118, 0,134,216,185, 77,159,102, 66, 18,245, 41,196, 26,126,211,188,194, 72, +249,208,226, 82,139,165,157,223, 0,114,112, 42,199, 47,251,166, 57,178,223,251, +227,161, 46,120,126,231, 94,207, 61, 86,204, 13,127, 59,161,158, 86, 85,121, 85, +223, 48,111,131,149, 33,103,144,169,142,209, 1,112,207, 59, 54, 71, 39, 82,230, + 70,144,157,208, 72, 98,154, 94,123,255, 21,111,242,165, 75,104,121,253, 83,219, +166,170,105, 49,147, 67, 73,250, 72,210,111,184,114,158, 41, 26, 39,213,211, 98, +143,176, 98,128,194, 67,244,170, 6, 59, 61, 1,252, 14,172,181,196, 37, 99,200, + 42,197,171, 34,106, 79,196, 48, 92,163,224,129,156,170,185,244, 15,167,250,172, +163, 51, 59,169,100,120, 56,206,249, 71, 36,141,194,242,199, 78, 8, 4,180, 50, + 8,177,214,251,108,136, 38,126,179,156,187,145,191,146,196,214,164,227,117, 71, +122,154, 65,101, 65,120, 55, 84,232,118,230, 8, 13, 95,242,201,134,166,244,250, + 78,235, 3, 70,231,114,154,158,241, 8,126,171,221,101,205, 29, 24,215,197,244, +205, 9,255,113,201, 1,175,163, 14,178,183, 14, 92,142,164,164,219,243,195,153, + 22,139,189,166,158,149,224,125,227,106,179,126,157, 96,181,153,136,122, 29, 8, +165,113,224,104, 25,139,252,108,113,161,195,176,160,118, 12,220, 77, 24,138,174, +134, 12, 33,100,121, 32,142, 68, 65, 19, 24, 18,134,138, 91,192, 17,150,104,119, +138, 73, 86,195,232,209,154, 79,151,219, 70,205, 66,128,162, 43,196,203, 18, 17, + 99,156,162, 97,139,189, 59, 87,147,230,189, 87,190, 56,179, 55, 45, 87, 44, 13, +190, 23,141, 1, 56, 40, 3,152,114,208, 3,217, 84,248, 24,161,177,211,176,181, + 1,111, 37,159,128,128,105,251, 81,168,231,127, 31, 83, 73, 5,105,160,127,132, + 25, 32, 2, 98, 96,206,193, 1, 44,218, 47,243,214,241,136, 81,214, 45,139,123, + 86,183, 68,158,121,251,131,148, 65,140,166, 49,172,200,196, 40, 44, 72, 80,128, + 37,204, 81,136, 31,128,150,224,196,211, 44,212, 94,127,216,185, 89,191,141, 5, +100, 78,212,195, 0, 78,170, 23, 83, 26, 62,159,233, 38,177,138,208,144, 44,240, + 5,150,127,168, 74, 24, 65,105, 35,100, 23, 3,140, 30,189,172, 35,108,106,172, + 39,118, 24,125, 26,249, 30,148, 16,241,150, 30,161, 77,230, 67,136,115,146,101, +252, 99, 33, 2,140, 18,209,213,192, 98,243, 68, 71, 23, 76,226, 75,100,111, 16, + 22,136, 88, 58, 58, 94, 76, 53,250,229,106,252, 40, 26, 77,148,156,244, 74,116, + 20,120,209, 60, 4,193, 34,163, 1, 12, 27,250,240, 72, 74,142,160, 25,152,183, +147,231, 38,154,108,196,195,234,173,144,208, 16, 51, 92, 15,200,102, 39, 73,193, +159,121,228,149, 79, 64,197,142,107,234,144, 37,211, 95, 90,242, 73, 29,246, 13, + 75,170,237,209,130,138, 60,225,162,223, 22,224, 64,101,160,211,173,126, 46,128, + 19,252, 62,150, 38, 42, 99, 63, 84, 40, 35, 69,194,211,139, 23,140,150,201, 18, +212,146, 90,129,165,242, 6, 86, 85, 99, 22, 51,240, 68, 20, 57,220,108,200,221, +136,192, 1,251,216,161,177, 9, 89, 9,220, 9,119,218,231,216,145, 76,242, 4, +156,168, 36,223, 33, 36,128,122,242, 14,200, 25,156, 24,209,120, 8,133, 20, 73, + 66,129, 52,108,130,141,194, 49, 47,126, 87,124, 39, 58,246,149, 78,202,156,147, + 66, 63, 70,202,131,169, 39,248,136,105, 36, 10,236, 64, 89, 52, 30,167, 19, 77, +222, 9, 29,167,177,177,182, 96,195, 14,145,198,147,135,244,128,254,180, 16,118, + 0, 52, 46, 14,135,254, 85,155,144,176, 54, 18, 37, 41, 75,161, 33,177, 83,124, +176, 77,113,211,122,246,149,244, 82,231,175,160, 29,163,236,138, 48, 37, 76, 70, +177,106,139,164,114,162,134,167, 18, 82,252, 5,199, 23, 26, 99, 46,141, 38, 3, +217, 30,241,164, 30, 4, 58,135, 13,246, 13,134,196, 59,219, 60,166, 45,159,238, +184, 90,198,225,223, 27,127, 32,212, 47,224,140,149,106, 4, 88,167,143, 94,238, +161,236,101,174,145,201,189,223, 61,233,114, 4, 79, 91,100,192, 73, 76,149, 63, +142, 63, 57, 82,156,232,224,227,163, 46, 77, 13,114,189,164, 57,241,228,225,129, + 11,217,255,108,126, 68,176,250,175,134, 61, 96,129, 43,141,109,176,139, 91,218, +166,131, 78,119,140, 9, 31, 97,230, 12,102,246, 15,131, 48,254,164,189,127,147, +250,203, 89, 9, 76,189, 36, 64, 6,232, 19,175, 55,220,239,159,230,111,144,178, +180, 23,115,128,113, 26,131,229,164,111, 40,166,190,122,121,143, 33,107,112, 20, + 70,194, 87,117,107,148,244,171, 82,247,185,153, 56, 51,153,206,217, 73,113, 63, + 65, 92, 35, 48,170, 13, 58, 61, 5, 88, 37,240, 58,183, 25,132, 94, 4,235, 5, + 60, 97,156, 89,161,139,217,230, 87,235, 69,218, 16,116, 26,201, 5, 43, 59,250, +198,244,232, 29,195, 73, 5, 50, 2,196,214,212,182, 3, 45,222,227,206,227,101, + 70,111,210,204,141,100, 74,175, 47, 69, 97, 72,153,209, 38, 17,146, 91,136, 64, +217,187,186,222,255,162,170,200,141, 12, 6, 89,156,189, 24,190, 37, 5,236, 64, +136, 7,242,205,222, 92,114,177,125,144,241,215,174,255,179,172,184, 17, 0, 99, +113, 29,135, 6,229, 15,154, 1,101, 73,226, 59, 16, 81, 60, 46,209,193,223,120, +220,243,135, 50,104,201, 50,104,160,162,112, 13,204, 27, 0, 96, 78, 82, 71, 84, + 76, 76, 71, 69, 76, 76, 76, 88,134,134,168,243,207, 1,115, 61, 68,192,142,208, +136,154,230, 35, 48, 16, 0,134, 0, 33,248, 16, 2,145, 75,112, 34, 20, 17, 41, +191,210, 6,238,203, 75,200, 86, 19,220,198,254,182, 85,241, 92, 91, 70, 42,205, +138,174, 73,156, 51, 26,109, 23,184,217,134,231,183,236, 63,188,221,152,215,209, +110, 69, 56, 33, 75,117, 88,211,133,253,216,185,142,126, 22,229, 98,141,166,176, +100,224,232,118,179, 95,241,234,239, 83, 43,226,131,138, 21, 61,230, 28, 13,231, +215, 76, 2,179,114,178,193, 0,223, 30,113,192, 11, 23,109, 1,214,106, 49,170, +112, 26, 41,156,211,217,206,187, 10,205,191, 55,119,182, 99,206,102, 34,186,107, + 38,129, 89, 41,181, 1, 87, 36,209,186,210, 25,129,241, 70,163,218, 5,110,182, +225,249,149, 97, 56, 83,211,190,164,141,155,238, 60, 66,131, 42,120, 31, 86, 99, + 68, 21, 0,205,165, 82, 56,231,134, 90, 1,243,240,196,177,172,179,103, 59,102, +110, 38,162, 59,215, 18,200,138, 64,103,176,114,134,214, 21,157, 9, 28, 55, 26, +202, 44, 96, 98, 9,142, 79, 24,194, 49, 26,181, 9, 90,152,100,222, 32, 48, 40, +229,219,224,181, 64, 84, 1,208, 92, 40,133,115, 70,163,237, 2, 47,215,240,252, +142, 67, 56, 83,179,190,164,141,155,238, 53, 4,130, 34,120,103, 92, 3, 68, 85, + 1, 96,171,162, 75,217,195,168, 4,142, 27, 77,181, 59, 93,190, 99,145,235,155, +134,112,142,220,148,183,201,110,195, 76, 2,150,242, 92,163, 9,223,254, 90,185, +206,181, 29,125,171,197,232,132, 98,244,129, 67,220,220,141,117, 9,103, 42,108, +189, 21,223,146,175,176,206,212,110, 74,166,196,109,153,184, 11, 2,133,116,157, +176,196,109,153,184, 11, 2,133,116,157, 80,226,182, 76,220, 5,129, 66,186, 46, +168, 93, 4,111, 65,160,224,174, 11,106, 23,193, 91, 16, 40,184,235,130,218, 69, +240, 22, 4, 10,238,186,160,118, 17,188, 5,129,130,187, 78,136,111,201, 87, 88, +103,138,222,210, 21,250, 95,191, 93, 9, 92, 31, 3, 39,186,214, 40, 40,112, 62, + 97, 24,206,148, 27,243, 58,218,173, 8, 39,100,169, 14,107,186,176,255, 43,159, +171, 98,212,234, 86,244, 69,226,116,203,148,204,198,132,233,166, 63, 89, 55,188, +181,230, 40, 77,142,242, 78,121, 85,117,106,108, 4, 60,221,185, 70, 67,190,241, +146, 85,148,139, 42, 0,214,170, 40,186, 80, 71, 9,215,234,232,230, 29, 1,178, +237,137, 61, 91,218,151,244,203,102, 37, 48, 66,131, 6,187,149, 66, 40,235,145, +150,109,141,112,181,120,201,160,141,235,129, 43,115, 55,206, 73, 82,211,169,240, +111, 82, 54,172,146,195,166, 10,125, 67, 97, 35, 67, 42, 56, 5,120, 23,112,171, + 72, 79, 83,197, 63,247, 32,155,129,212,115, 84,121,118, 21,204,186,124,208,134, +203,178, 72,125,136, 16, 98, 21, 37,152,213, 1, 59,140,242,192,203, 37,213, 85, +227, 10, 77, 39, 1, 66,165,183, 77, 22,193,231,101,161, 38,180,228, 45,164, 20, +177, 57, 80,130,145, 95, 79,111,174, 44,176,164,131,136,202,146,123,112, 51, 73, +167, 94,229,189,186,100,107,145,246, 66,117,110,251,192,204,224,227,250, 36,141, + 8, 80,167,121, 19, 26,234,130,119,158,178,191,184, 42, 42,201, 34,117,171,197, +168,108, 52,149, 97, 3, 71,213,223, 67,187, 33,160,108,192,131, 18, 21, 57,214, + 28, 13,231,223,108, 66, 54,197,146,106,146,139,130,200, 51,138, 55,202,110, 93, + 55, 90, 43,116, 7,181,110,102,203, 62,167, 46, 42,154,181, 6, 22,153, 73, 5, +155,131, 51,221, 24,108, 89,189,242, 42,222, 45,184, 21,164,119,169, 48, 87, 15, +102, 6, 82,193, 69,113,182,100,214,205,179,155, 42,220,109,184, 13,238,119, 41, +138,108,139,204, 44,220, 9, 35,106,154,141, 6, 27,149, 73, 11, 76,176,104,142, +188,237, 25,225, 74, 2,153, 7,189, 55,226,168, 24,115,163, 73, 51,192,224, 92, +144,174, 3, 12,110,171,141, 61,251, 24,219,100,192,160,182, 74,199,230,234, 92, + 2, 32,186, 1, 4, 57, 0, 98, 5, 20, 24,128,109, 3, 32,172, 93,116, 91, 96, +196, 14, 67,188, 75, 87,208, 38,210,172,252,171,108,184, 30, 66,251, 3,180, 59, +104,208,211, 80,141, 19,210, 22,197,122,105, 40, 6,162,207,219,156,124,180,222, +150,149,174,226,195,186,100, 23,179,139, 39,164,204,197, 8, 31,126,140,203, 47, + 15, 37,148, 76,138,152, 97,103,122, 1,134,134,168,115,111, 51, 28, 83,138, 4, + 8, 20,210, 28,131,202,204, 76, 74, 7, 51,112, 32,168, 16, 40, 6,153,194, 65, + 96, 29, 16, 69, 8, 36, 18,160, 64, 68, 68, 36, 72, 82,144, 52,105, 3,199,187, +203,252,137,218,202, 36,131,175,158, 65,136, 53, 24,200,169,139, 89,121,129,167, + 74,185,237, 39,176,122,222,217, 10, 38,117,152, 60, 42,132,167,222, 74, 78,222, + 17, 77,155,186,134, 91, 3,129,117,176,102, 87,218,167, 31,220, 89,227, 77,107, + 42,193, 57, 16,136, 74, 29, 65, 30, 4,143,219,169,132, 68, 46, 29,172, 58,184, + 0,228,183, 34,160,216,186,134,180, 90, 75, 95, 79, 43, 99,133, 64, 17,120,194, +165,135, 0,189, 9, 14,124,142, 87,253,248,150,141, 52, 3, 22,237,129, 45, 88, +129, 55,111,216,160,198, 8,106, 66,192,222,212, 35,204, 66, 0,163, 93, 16, 31, +224,147,188, 81, 46,119, 32, 49, 43,194,209,109,223, 85, 7, 92,249,193,154,114, +150,133, 70,160, 53,132,206,163, 45,170, 25,174, 4,138,174, 0, 19, 47, 35, 16, +124,190,174,192,196, 3,245,218, 54, 48, 51, 33, 80, 45, 12, 92,110,100,136,141, + 24,196, 3,223, 81,144,121,120,112,189,168, 5,240, 52, 12,160, 85,137, 5,235, +137, 21,134, 4,189, 58, 19,110,106, 1, 1, 14,176, 14, 74,231,133, 2,214, 68, +214,196,107,216, 33, 72,177,181,176, 71, 80, 22,153, 81, 34,107, 57,252,130, 30, + 88, 91, 84,104, 52,224, 76,191,111,198,154, 19,247,214,245, 73,185,184,150,183, + 17, 53,154,211,114,144, 69, 87, 91,198,165, 92, 27, 93,223, 50,164,104,250,244, + 86, 17,188,186,118, 4,140, 11, 90, 40,239,140,132,164,122, 34,229, 98,223, 12, +193,199,125,160,229,196, 27,249, 95,186,139,118, 63, 76,247, 19,187,163,156, 75, +170, 11,138, 98,193,184,222, 53,253, 75,181, 71,159,169,122,152,135, 48,252, 30, +124,237,179,154,222, 67,160,110, 86,159,175, 1, 99, 45, 58,220, 50, 15, 99,201, +252,184,152,115, 86,152,163, 83,146,127,222,196,160,171, 12, 45, 10,153,210, 59, +129,172,156, 11,115,161,191,212,117,202,248, 61,143,220, 68,195,239,199,212, 5, +220, 11,233,244,103, 67, 2,221,125, 30, 50,112,200, 0,141,206,191,117, 47, 60, + 8, 78, 16, 39, 49,245,186,176, 35, 39,223,118,249, 97,101,104, 53, 6, 30, 16, +103,117,121, 1,147, 53,238, 98, 42, 31,176, 95,204,165, 88,112,155, 21, 28, 89, +146,102,233, 48, 20, 41,212, 29,107,222,226,143, 73,173,148, 28, 40,162,175, 14, +156,116,226,126, 41,237,253, 11,162,133,178,255,176, 1,227, 26,187,232,108, 95, +138, 60,204,203, 47,163, 85,133,219,236, 58, 73, 85,206,150, 46,159, 3,232,139, + 59, 14,181, 88,196,144, 63, 91,135,183,194, 62,243,115,247,164,109,157, 10,113, +235,122, 20,113,181, 40,167,196, 11, 98,207,207, 27,198,128,126, 14,196,230,196, + 87,144,206,238, 80, 28, 93,212, 76,242,163,184,240, 65, 43,115,186, 43,200,157, + 76, 34,211,229,114,200,159,109, 9, 64,198,111, 13,193, 61, 6,219,208,150, 71, +127,194,253, 99, 72,208,201, 52,207, 69,207,120, 92,242, 92,200,117,201, 11,110, + 39, 3, 24,174,110,184,171, 57, 57,102, 58,233,249,142, 75, 61, 4, 79, 96, 29, + 28, 34,106,255,250,169,211,219,202, 6,163, 19,157,155, 95,128,223,195, 64, 77, +222, 49, 85, 95,184,232, 38,119,252,114, 99, 31,248,109,226, 37,114, 59,106, 67, +232,227, 62,243,132, 58, 31,238,170, 47, 95,207,116, 97,173,207,159, 15,247,171, + 59,234,127,165, 96,197,178,255,196, 88, 22, 23,244,245,185,143,101, 9,226, 98, + 15, 30,139,219, 88,204,179,111,172, 2, 72,201,119, 47,223,116, 14, 94,101,210, +194,175, 80,162, 66,253, 27,187,180, 19,186,154, 36,198,226,106, 61, 42,179,114, +244, 97,246,141,132,188, 90,176,234, 66, 9, 49,120, 19,170, 89,169, 91,243,154, +113, 76,253,136, 69, 57, 2,216,194,210,188,205,156, 88,109, 76,135,189,232, 35, +154, 5,206, 65,246,178,245,195,216,116,173,241,167,118,212, 82,255, 81, 2,110, +235,253, 68,157,121,109, 97, 47,248,107, 47,179,100,154,244, 44,146, 59,197,211, +214, 86, 67,230, 0, 30, 95,137,203,213,166,253, 10,103,201,202,212,196, 85,109, +180, 35,204, 12,149, 85,133, 91,241,101,102, 76,213,159,186, 57,150,241,212, 42, +227,254,252,183, 28,166,248,165, 80,183,245, 66, 38, 93, 60,229,181,255,111,141, + 76, 21, 59,146, 42,107,123,139, 89,148,225, 27,244, 71,122,228,175, 18, 66,122, + 95,133,186, 61,153, 12,151,133,253,109,105, 78,181,215,194,147, 34, 20,117,100, + 26, 78,239,253,214, 28, 15,167, 64,141,250,131, 80, 55,109,189, 82,133, 91,137, + 90,102,250,116,219,100, 88, 7,181, 78, 78,183,125,209,226,122, 42,168,105,212, +188,198,182, 85, 2, 69,189, 13,182, 76,252,141,142,252,109,148, 17,163,255,181, +206, 0,130,122,240, 67,172, 26,232,161, 67,181,165,231,138,230, 96,150,180,204, + 21,227,194, 92,255,133,137, 14,148,124, 47,254, 60,150,140, 14,139,121,175,180, +138, 57,241,160, 32,218,165,254, 46, 18, 8, 17, 60,120, 31,251, 7,250,118,136, + 26,230,247,151,254,185, 4, 48,222,174,241,164, 63, 80,116, 59,109,110,253, 38, +109, 99, 81,253,169,242, 19,224,133,126,180,253, 22,108,207,133, 32, 99,253, 13, + 45,109, 99,177, 68, 53, 58,169, 74,199, 47,133,227,167, 6, 11,121,226, 77,163, +100, 74, 97,253,214,177,188, 32, 19, 96,141,154, 91,218, 28,168,136, 25,248,100, + 4,249,224,214, 54,179, 22, 51, 95,251,101,106, 97,112,151,167,107, 8, 35,124, + 76, 20,105, 34,238,102, 93,116,217, 77,172,219, 1, 96,165, 97,244,234,222,184, + 81, 16,188,166, 51,147,144, 84,255, 76, 1,228,140,149,114,209, 98,146, 34, 26, +197, 9, 14,151,185, 57, 88,116, 67, 36, 56,128,242, 48,229,162, 49,167, 16,157, +156,225,162,109, 72, 16,221,132,105,184, 81, 88, 18,186,102, 15,220,108,211,156, +162,197,254, 3,165,151, 70, 5,248, 94,201, 72, 24, 86,218, 30,156,212, 49, 33, +249,209,232,124,208, 88,124, 96, 75, 56,127,103,116, 5,185,186,224,220,168, 90, +176,139,152,202, 36,219,214,226,208, 84, 11,160, 61, 33,186,105,216,181, 60,193, + 55,143,228,126,143, 66, 97,159,166,213,184,244, 74, 23,205, 0, 85,100,175,179, + 69,191,184, 42, 2,155,132,143, 66, 52, 8, 76, 19,247, 11,206, 73,157, 32,124, + 52, 53, 28,212, 23,198, 96, 75,216, 95, 52,116, 81, 86, 11,240,190, 64,217, 3, + 92,180, 80,100,181, 35,230,179,186, 10, 74,224,196, 8, 35, 36, 22,193,253, 34, + 20,214, 8,111,103,233, 43,131,219,165,157, 40, 90,232, 2,249, 42,226, 93,129, +250, 96,163, 41,225, 36,242, 94,232,104, 37,138, 34,107, 41,176,235,144,247,118, +194,163, 71,196,118, 30, 69, 97,158,166,183, 12, 46,189,230,146,211, 53,199, 24, +107,228,230,171,197,246,113, 38,247,134,140,240,175,141,214,170,243,110, 84, 17, +254,208,238,213, 86, 42, 27,106,249, 13,183,164, 75, 55,113,212,103,247,253, 92, +125, 98,184,177,103,177,164, 87,173, 4, 83, 95, 5,141,191,182, 17,118,119, 82, + 13, 9,254,174,102,212,138,122, 27,210,111,236,234, 19,107,149, 8,110,107,203, + 74, 2,218,216,129,177,110,114, 25,134, 27,237,205,171,193,104,155, 46, 18, 19, + 6, 30,166,221,210, 90,156, 82, 0, 38,252, 43, 61,233,107,151, 4,112, 36,240, + 6, 3, 51,209,116, 21, 29,228,200, 45,201,202,134, 91,227,135,155, 64, 7,132, + 93, 69,168,218,171, 83,252, 18, 67,133,138,170,130, 43,105,187, 77, 55,189,224, +116, 4,134, 84,154,251,230,136, 46,148,152, 27,186,161,162, 74,217,227, 52, 17, +132, 63,153,104, 89,164,231, 84, 8, 86,208,200,134, 85, 20,220, 21,135,133,228, + 10, 23,248,176,154,117,211,152,140,153, 79,101, 26,236, 90,127,196,228, 38,196, + 55, 86, 25,222,173,107,140,218,240,175,231,100, 12, 1,102,247,166, 38,208, 84, +209, 3,233,214,216,174,220,117,124,253,165, 17,240, 42, 37,194, 2, 42, 9,137, + 10, 49,159,174, 36, 18,254, 0, 67,244, 1, 95, 60,201,213,103,158, 0,153, 0, +154, 0,114, 86,217,220,254,231, 69,101, 83,237,224,206, 3,139,247,168,166,190, + 93,251, 67, 59,153,240, 20, 75, 66, 18, 40, 19, 1,137, 6,230, 1, 33,154,248, +100,242, 53, 25,104, 97,193, 65,157, 47,169,125,117,143,252,100, 89,173, 16,213, + 26,136,200, 23,177, 67, 71, 8, 25,166, 85,142,125,138,186,230, 91,250,185,252, +109, 92,100,152, 71,251,151,142, 63,242,194,158,190,119,200,124,150,217,123,103, + 35,179,170, 81,215,115, 76,157, 67,180, 9,130, 30,103,149, 43,157,152, 3, 10, +166, 20, 75,223, 22,254, 81, 16, 71, 84,100, 24, 95,115,155, 21, 32,207,151,219, +176, 53,119, 69, 56,220,243, 41,190,204, 17,255,153,129, 64, 25, 17, 12, 29,150, +237, 46, 91,214,131, 30, 69, 34, 97, 8, 2,161, 26,103,222, 9, 33, 76, 42,147, +132,170,155,110,240,206,152,185, 46, 77, 34,243,192,159,137,206,104,208,255, 11, +158,239,125,161,147,212,119, 9,236,103, 81, 20, 22, 32,115,205, 54,231,167,111, +142,225,221, 28, 95,233, 25,233,183,113, 23,182, 5,185, 29,114, 79,144, 27,131, +220, 21,196,180, 22, 81,226,141,112,143,226, 48,141,185,100, 54,183,249,150,206, +205, 55,211,243,118,234, 7, 7, 92, 38,225, 72,168,135,216,255, 90,171, 13,117, +126,147,235,207,101,171,149, 89,125,210,125,158, 0,243,234,179,217,145,221,241, +139,118, 65, 65,100,234, 44,241, 72,168,156,112, 2, 19, 21,172,152,214,169,245, +210, 56, 24,112, 56,146, 17, 38,209, 68, 97, 99,158,166, 24, 99,140,113,154, 98, +172, 42,247, 24,239,133, 54,179, 14, 85,251,210, 39, 31,248,238,243,118,232,236, +204,168,182,129,166,105,219, 46,219,182,113,165,114,219,182,109,243,173, 99,140, +151, 8,249, 2, 89, 5, 49,198, 24, 9, 40,252,110, 21, 56, 79, 38,143, 0, 57, + 77, 61, 65,200, 27,172, 24,221, 99,140, 80,140,177,211,105, 96,247, 84, 19, 12, +118,101,169, 96, 85, 85,149,123,181, 44, 82, 51,150,229,150,199, 24,221, 33,135, + 30, 99,140,239, 22, 66,199,255,112, 15,236,195,237,133, 12,252,241,241,225,209, + 16,189,126,170,245,189, 86,206, 82,159,120,141, 24,163, 69,170, 68, 22,201, 34, + 89,164, 74, 84,137, 42,145, 68,145, 40,125,240, 53,186,108,112, 67,126,253, 46, +124,214, 67, 53,116, 47,139, 23, 67,194, 34, 85, 34, 14,141,195, 34, 89,164, 74, + 84,137, 36,138, 68,241,123,253, 97,254, 28, 75,112, 5,131,137, 46,163,113,137, +164,117,199, 0, 28,233,161,168, 90,177,234, 73,145, 12,148,252, 4, 15,127, 62, +179,198,195, 80,145, 27,157,124,209,240, 69,179,241,151, 15,204, 82,243,154,150, + 6,151,247,131,142, 95,118, 54, 82,211,210,206, 15, 87,207, 52,129,111, 96,224, +250,245,170, 49, 56, 96, 53,173, 25,184, 92,207, 61,151,105, 33,212, 63,215,180, +210,253,130, 63,141, 12,168, 4, 91, 22,109, 6, 0, 65, 3, 99,114, 0, 0, 10, +138,137, 35, 82,153, 76,146, 70, 81, 12,244, 3,196, 64,198,130,152, 5, 22,134, + 21,133,195, 80, 37, 24, 60,134,161, 25, 10, 32, 2, 6,128, 16, 0, 1, 64, 0, + 32,162, 8, 67,192, 64, 71,125,169,167, 95, 47,125,128, 6, 30, 17,218, 58, 3, +211,222, 84,163, 4,236,218, 54,239,213, 12, 66,227,118,189,119,187, 43,206,106, +216,138, 11, 90, 66,187, 22,173,125,172,133,184,161,232, 19, 97, 68,154, 6,207, +201,189, 56,129,161, 60, 24, 66,106, 81,104,127,216,208,192,115, 75,113,130, 28, + 76, 75, 41,229, 49, 67,244,153,121, 10,118,106,238, 15, 98,161, 84,108, 67,104, + 15,245, 98, 50,208, 75, 67,142,179,208, 47,145, 21,212, 32,137,195, 35, 58,255, +123,216,153, 27,128, 1, 86, 37,251, 46, 7,112,243,171,179,145,114,246, 27, 16, +154, 65, 18,171,252,244,223,117,212, 48,107, 96,178,158,134, 25, 33, 28, 26, 70, +118,240,153, 43, 30,235,248, 7, 27,119,188, 5,193,186,167,239, 93, 0,218, 57, + 45,200,142,160, 37,248,123, 26,192,153,119,157,180,245, 36,158,189, 69,235, 36, +224,148, 39,207,169,169,131, 47,220,218,128,241, 39,187, 72,222,163, 28, 96,204, + 98,105,189, 41,185, 5,115, 79,193, 74,112,231,145,118, 4, 67, 79,187, 58,207, +254,130,184,179,182,231,240,215, 7, 96,178,131,215,212,100, 29,107,165,106, 56, +201,235,250,209, 75,219,212, 68,212,131, 25,116, 70, 63,124, 72,114, 54,155,172, +250, 80,101,106, 25, 39,175,227, 79,254,126,141, 39, 57,108, 5,155,153, 97,153, +122, 65,213, 94, 69,170, 95, 16,179,166,179,251, 82, 78,217,101, 98,146,210,174, + 52,200,233, 98, 24, 70,226,182, 7,155,160, 68,197, 42, 67, 64, 7,166, 10, 41, +155,205,182,189,196, 37,100, 58, 44, 4,118,171,168,189,103, 23,117,207,219,215, + 44,193, 59,222, 80,176,108,125,156,211,254,139,109, 7,118,185,200, 67,195, 48, +142,221,159, 0,147,159, 45,107,197, 34, 13, 49,209,222,180, 8,101,242, 82, 50, +202,156,201,169,227, 25,220,205, 70,135,217, 16, 78,136, 5, 54,108,210, 77,140, + 68, 84,155, 56,128,200,253,224, 90,172,212,251,154, 45,101,245,228, 40, 84, 4, + 16,212, 10, 96,209,208, 51,242,221, 20,154, 30, 71,129, 86, 21,194,150, 88, 25, + 3, 64,232,160, 0, 24, 26,221,116, 53, 39, 19, 0,201,171, 94, 69,168,104, 45, + 16,136, 83,132, 0, 27,225,231,177, 11,225, 85,105, 20, 86,191, 73,132,122,163, +143, 8,235, 89, 25, 29, 21, 90,157, 62,121,186, 98,222, 18,251,139,138,133,174, +114,155,229,150, 21,223,113,122,168,245,123,208, 5,213, 5, 32, 36, 32,225, 74, +208,134,223,251,220,254, 60, 17, 86, 25, 57,181,109, 11,237,101,197,193,247, 54, +134,175,240,128,166,247,104,136,149, 81, 47,136, 64,154,172,133,249,120, 16,239, +128, 62, 46,122,230,220, 7, 51,224,124, 47, 58,180, 15, 49,206,144,131,216,247, +250,240,148,175, 57,172,143,250,174,119,244,119,140,102, 98,154, 66,125,138,207, + 33,125, 91, 35,106,217,161, 47,128, 30,126,167,252, 68,195, 7,195,249, 54,145, +208,130,123,172, 97, 52,203,200, 71,114,166, 25,246,216, 38,164,144,239,146, 9, +207, 46,131, 33, 34, 13,225,158,165, 36, 84, 77,234,164,223, 55, 12,252,164, 17, +178, 9,251, 66, 24,127,241,178,141, 93,252,136,145, 62, 44,129, 81, 67,226, 45, + 56,115,244, 50,212, 27, 32,245,137, 31,171,121,145,137, 3, 15,161, 86, 91,143, + 46, 74, 57, 57, 21,203, 85,148, 31, 96,203,152, 38, 36,202,123, 65, 71,132,185, +183,199, 36, 72, 95,168, 5,195, 23,248, 29,117, 72, 68,155,147,147,111,109, 41, +101,161,255,189,163,192,191,108, 61,213, 4,150,216,128,225, 81,201,162,161, 74, +197, 92,106,150,147, 71,206,231,183,212, 81, 59, 91,109, 6,233,129,195,233,143, + 84,171, 69,218,175,113, 16, 53,137,227,170,207,141,126,182, 39, 65,166, 90, 69, + 95,194, 29, 62, 98,213,222,109,138,192, 49,187, 44,232,139, 52,130,121, 46,237, + 71,226,254,203, 46, 24, 64, 65,120,238,247,244,174,127,225,172, 6,176,102,126, +206,220,217, 93, 8,226,205, 40,219, 9,194, 24,109, 4, 61, 13,108, 86, 41,202, + 71, 4,105,112, 43, 1,204,149,222,101, 88,233,101, 77,187, 45, 51,154,174, 27, +229,241, 22, 49,213, 7,189, 74,123,248, 27, 65, 75, 72,226,172,180, 70, 33, 22, + 91,124,215,161,153, 44,244,222,104,210,249,202, 54,226, 0, 56, 96, 99, 83,240, + 95, 33, 23,254,168, 56, 56,121,203,130,133,176,146, 13,234,179,186,252,209, 55, + 21,175,192, 58, 43, 64,223,125, 81, 21, 42,255, 58,187, 91, 59,119,229,184,212, +107,113,192, 41,128, 37, 22,168,118, 83,137,119, 49,193,200,157, 22,196,100,179, +111,119, 9, 36,143,130,127, 89,105, 80, 89,130,131,146,170, 42, 80,241,159, 52, +109,246,120,150,221,233,175,162,152, 95,174,244,193, 34, 28, 43,106,191, 30,222, +251, 32,150,169, 14,176,243, 77,136,242, 45,208,119,118,123,184,237,144,141,171, +128, 89,220,200,175,115,189,125, 61,201,102,232, 2,247, 44,133, 72,110, 26, 19, +243,230,175,197,171, 69, 28,177,229,174,187,224, 6,183, 13, 61,140,204,138, 61, + 37,134,216, 37,231,103,153,193,165,131,142,118,115, 42, 86,115,179,217,191, 75, +169, 54,153,112,210, 71,183, 78,228, 95,137, 15,157,218,141,133,220,141,109,121, +231, 22, 37,239,207, 77, 74, 7, 15,182,187,136, 60,176, 58,236,160,187,113,205, + 65,116,250, 78,203,125,253, 76,181,130,127, 76,159,171,212,220,220, 40,219,243, +191,119, 9, 87,191, 60,143,115,211, 65,100,141,201,199,124,176,134, 82,155,168, + 67,198,185,211, 99, 34, 86,127, 55, 90,145, 58,145,146, 70,230,153,218, 7, 21, +161,133,228,147, 26, 42,163, 20,229, 40, 45,172, 16, 32,136,123,155, 19,228,172, +207,255,188,205,143, 10, 97, 67, 76,115, 82,177, 8,148,251, 86,198,178,180, 50, +184, 90, 94,238,218, 83, 56,111,128, 33,147, 83,159,116, 97, 96,138,232, 97,219, + 74,120,145, 74,200,153,131,135, 0,199,183,138, 60,129,210,164,106,154,144, 37, +226, 53,118, 81,231,178, 98,233, 22, 23,212, 96,239,128, 29, 64, 79, 99,234, 54, + 47, 55,146, 18, 28,122, 72,119, 18,150,201,228, 24,205,196, 44, 72,148, 39,201, +252,174,216, 22,246, 25,206, 43, 81, 43, 87,169,126, 44, 29,136, 5,253, 43,235, +234, 94,222, 86,112,186,177, 29,188,119,241, 81,222,226, 77, 85,135, 4, 96,233, +210, 57, 88,158, 4,247, 98, 31,104, 37,102,217,113,187, 49,128,253, 67,237, 36, + 29, 64,162,196, 72, 53,162,249,242, 62,203,217,151,146, 76, 96, 31, 92,121, 15, + 8, 63,136, 39,109,139, 82,113,158, 7,162, 9, 74, 79,126,233, 43,206,104,222, +154, 47, 19,100,135, 66,137, 30, 5,104,223,100, 45,133,200,164,247,244, 68, 82, + 44,175, 15,201,218,176,135,236, 16, 7,165,194, 37,169, 73, 93,193,211,209,115, +231,151,123, 38,109, 79, 31,209, 90,123, 39, 93,202,225,118,205,159,138,150,111, + 55,171, 85, 48,238, 10,199, 15, 38,163, 69,164, 26, 43,242,199, 21,203,231,153, +167, 20, 5,255,168, 47, 57,218,215, 70, 4,239,159,142, 11,215, 84, 33, 11,193, +247, 93, 15,233,107,220,138,184, 33, 33,225, 78,114, 94,248,159,183, 42, 7,115, + 16, 15, 82,200, 83,239, 15,132,193,120,126,168,116, 1,146, 68, 41,199,109, 86, + 4,205, 34,128,113,202,252, 73, 13, 21,101, 17,130,242,244,231,183,204, 7,121, + 71,171, 48, 84,171,124,170, 1,152,235, 19, 58,105, 80, 59,142, 23, 71,243,148, + 26,145,134, 71,176, 81, 22,244,129,156,215, 62, 90,194,189,254,233, 50,224,222, + 99, 83,169, 82,218, 79,133,145, 36,165, 99,209,172, 20, 32, 59, 18, 60, 50, 45, +136, 18, 79,147,213, 38,136, 42,155, 14, 5,249,161, 99, 89, 57,127, 9,136, 80, +158, 98, 32,118,183, 87, 69, 20,225,104,231,153,200,207,109,206, 58,186,103,227, +235,174, 74, 12, 99,198, 86, 59,155,122, 0, 14,137,225,191, 73, 74, 87,167, 73, +218,224, 7, 89,119,173,162,148, 28,214, 8,156,246,216, 25, 94,207, 65,224, 46, + 76,228,176,148,135,164,163,202, 65,220,187,254,165, 13,130, 93, 53, 23, 0,115, + 13, 88,228, 12, 91,143, 58, 47, 16,217, 80, 66, 63,111,219,189,141, 77,214,217, + 0,131,242, 26, 87,193,246,168,128,175, 49, 30, 46, 66,104,170, 33,205, 8, 64, +200, 70, 5, 18,107,247, 94,149,182, 27, 14, 31,127,118,134,224, 83,127, 93,105, + 35, 33, 67,189, 90,171,161, 32,138,156, 44,163, 58, 84,107,110, 55,138, 62, 43, +215, 94,110, 87, 82,175,222,203,204, 69,244, 69,141, 23, 89,243, 58, 51,116,135, +186,118,123, 62,175, 30,129, 67, 36,241,206, 24,195, 2, 74, 43,165,246, 84, 69, +105,154,227,136, 0,170,239,131, 29,165,144,143,229,221,192, 86,216,190, 3,201, +173,104, 24, 59, 58, 67, 53,217,122,190, 47,244, 3, 14,236,186, 87, 73,132,232, +228,252,166,171, 40,230,214, 63,197,125, 63,109,119, 1,126, 65,232,128, 72,169, +126,141, 79,238,173, 99,145,113, 3, 4, 1,120,179,159,126,189,116,218,232,163, + 64,196,224,220,190, 88,171,240, 31,246,204,234,145,101,233,178, 9, 26,189,104, + 49,151,109,161,103, 84, 8,207,113,165, 53,192, 65, 60, 4, 67, 3, 29,222, 41, +208, 47, 41,254,226, 72,156, 3,104, 97,171,119, 1, 81,147,184,247, 51,177,209, + 48,123, 9, 1,160,115, 68,205,128, 28,112,243, 92, 91, 99,183,254,190, 35,143, + 69, 11, 98, 51, 36,147,125,242, 81, 93,206,255,147, 78,144,113,164, 59, 63, 73, +238, 30,201, 37, 82, 29, 8, 86, 56, 12,173, 65,121, 90,113, 4, 26,144,122, 42, +229, 50,218, 88,153,176, 39, 32,242,140,228,184,142, 26,248, 21,108,173,121,140, +234, 53,234, 44,101, 55,234, 44,166, 5,167,223,165, 7,228, 58,252, 65, 57, 10, +237, 23, 94,214,122,115,154, 0, 49, 73,249, 86, 33,138,221,172, 86, 78, 80,104, + 74,223,253, 57,170,193,118,136,176, 88,219,160, 6,165, 38,216, 25,160,113,213, +150,196,235, 63, 59,242,226,125,163,223, 26, 26, 14,179, 17,188, 56,169,251,165, +203, 13, 44,185,249, 0,217,181,224,121,247, 47,111, 48,111,188, 44,110,198, 9, + 85, 56,197,125, 93, 18,225,176, 86,222,207,111,122,242, 29,230,202,165,251,231, +100,130,106, 54,224,147,209,107,184,215, 17, 44,191,250, 64, 80,173,184,145, 10, +200,202, 82,226,250,205, 88,207, 74,111,163, 43, 33, 77, 90, 98,105,175,230,204, + 77,172,210, 13, 0, 88,125,131,138,112, 45,183,253,250,100,150,143, 53,252, 13, +205,184,194, 26, 15,101, 46,255,165,215,175,242, 32,189,176,153, 57,128,243,203, +252, 13, 60, 39, 98, 21,232,107, 65,116,130, 50,113, 36,137, 28,193,216,213,202, + 17, 1, 32, 40,161, 56,252,155,246,226,113,170,120,175,134, 95, 5,173,180,209, + 85,250, 57, 9, 87,160, 97, 3, 65, 18, 74,118, 12,180,197, 63,240,168, 42,171, +154,180,149,253, 42,130,239,250,181,185,193,213, 44,198, 21, 56, 51,113, 23,137, +180, 60, 62, 4, 36,206,208, 39, 34, 99,198,154,104, 41,191,238, 86, 61,196,124, + 43, 9,146, 21,180,107,113, 26, 48,109, 30,136, 16,114, 19,145, 21, 75,177,138, +200,207,143, 98,217, 11,162, 92,172,137,240,216,195, 78, 40,234,157, 56, 14,228, + 41,158, 9,210, 63,240, 59,225,128, 62,228,209, 4,131,248,199, 2,150, 61, 82, + 30, 11,248, 26,123,130, 78, 48,199, 20,115, 96, 75,172, 4,165, 80, 8,207,116, +106,190,190,132,216,216, 79,220,161,179,112,166,190, 71, 33, 68,251,161, 83, 3, +160, 27, 45,111, 39,106,173, 34,176, 82,238, 45, 87, 37, 35,151, 18, 59,139, 72, + 21,247,211, 25, 78,200, 53, 16,212, 59,241, 95, 25, 43, 79,142, 67, 38,226,229, +207,125,100,120, 47,130,183,171,103, 97,162,229,174, 31,222,132,253, 58, 57, 89, + 31, 42, 0, 72, 29, 33,175,177,204,252,226, 41,213, 81,188, 6,203, 20,153,222, + 66,231,130,113,211,163,243, 9, 97, 71,143,132,128,244,240,189, 42,126, 11, 30, +116,147,215, 97,137, 75,149,155,168,114, 52, 77, 17,145, 82,131,115, 97, 49,137, +234, 30, 50,217,197,175,114,209, 11,167,201,177,161, 32,134,250,146, 95,231,195, + 16,211, 88, 84,138, 6, 17,134,153,156, 4,254, 6,166,125,146,232,146,167,156, + 72,105, 73,235, 12,112,163, 71,112,192,177,217,112, 40, 40, 1,115, 3, 91, 31, + 39,122,173, 8, 16,236,184,167, 73, 22, 98,208,254, 36,192, 44, 70, 2,202, 19, + 80, 80,100,117,148,143, 70,235, 96,116, 12,115,100,110,228,184,125,156, 7,198, + 82,229,242, 16,216, 48,171,236, 43,210, 97, 44, 18,158,221, 45,232,130,250,169, + 30, 59,138, 67,214, 15,254, 14,233, 30,117, 85, 4,127, 86,206,252,111, 68, 46, + 69, 24,249, 60,188,148, 3,102,249,141, 36,218,136, 64,173,102,203,207, 47,212, + 38,126,230,213, 62, 3,116, 50,246,152,200,172,110, 6,167,241,203,106, 38, 45, +225, 13, 15, 48, 1,212, 23,100,187,103,102, 71, 21, 25, 45, 81, 77,188, 74,230, + 52,203,113,147, 96, 3, 62,192, 76, 82, 11, 79, 94, 68,123, 92,200,129, 36, 22, + 77,138,247,249,195, 88,205,227,227, 42,175,118,149,239, 61, 88,205, 86,172, 46, + 78,178,163,172,123, 68,250, 11,219,103, 0,135,230,225, 14, 55,207, 70, 74, 42, +242,207, 83,117, 95,174, 43,195,198,250, 41,177, 86,131,156, 54,143,174,107, 61, +248, 31, 22,147,161,108, 56,151,215,224, 35,212,181, 24,149,124, 32, 6,202,216, + 32,193, 62, 38,245,100,243,170,192,116,233, 16, 70,106,240,211, 73,187,175,236, +173, 75,100, 16,125, 27, 29, 5,198,205,120,125, 63,136,193,248, 38, 43,185, 97, + 86, 85,130,196,165,159, 11, 47,184,133,249,199,191,240, 88, 92, 52,140,217, 53, +100, 29,189,144,186, 42,153, 46,228,161,163, 78, 23, 39, 45,192,167,199,197, 87, +113,211, 40,185,100, 56,100,136,197, 61,214, 46,151, 13, 42, 3, 71,253, 90,140, +113, 90, 65,195, 78,104, 29,121, 90,150,205, 71, 72, 91,198, 60, 80, 4,116, 7, +138, 41, 70,254,115, 72,156, 40,167,110, 88,151, 15,140,164, 70,226,156,190,227, + 25,213, 36,152,104, 26,157, 3, 96,172,159,161, 91,252,189, 73,151,206, 9, 37, +230,150,236,146,201,201,145, 24,138,254, 82,189,174,154, 6,151, 57,194, 37,152, +248,204,148,197,167, 76, 26,193, 28, 64, 92,188,114,238,114, 9, 35, 30,190,100, +225, 7,237,221,143,225,190, 23, 51, 50,225, 26,181, 4,102,228,214,200,101, 93, + 94, 5, 96,207, 65, 49,195, 26,172,234,209,117, 72,144, 92, 74,174,215,167,239, +180,102, 82,217, 86, 88,199,182, 33,172, 21,130,239,149,176, 14, 86,121,252, 79, + 10, 17, 2,175, 79, 19, 18,119, 61, 42,119,116,222,120,105,149, 62, 31,183, 45, +229,122,217, 50,217, 53, 89,228, 94,170,160,113,188,113,252, 58, 27,251, 77,186, + 39,232, 96,162,130, 14, 42,241,249, 70,102, 49,188, 65,214,251, 15,154,210, 38, + 46, 19,140,234,204,115,101,143,199,246,236,144,119, 34, 54, 98,143,193,232, 99, + 35,244,212,165, 20,109, 40,194,138, 54, 98, 45,218,208,247,123, 45, 21, 42, 65, + 22, 6,119,108, 97,123, 86, 29, 55,160, 88, 91, 83,118, 23,112, 59,115, 14,171, + 18,234,112,116,204,118, 92,210,119, 39, 92, 12, 54, 26, 25, 91, 70,230, 13, 80, +175,173, 1, 52,185,252,164,194, 8,184,251,161,213, 38, 34,197, 36,193,184,211, + 45,101, 44,205,218,164, 12,144,241,167,208,127, 28,208, 28,236, 97,190,162, 25, + 19,112,147, 16,145, 20,185, 68, 83,224,114,230,137,153, 88, 42, 23,193, 53,215, +141, 0,252,202, 42,124, 66,231, 77,255,155,121, 55,214, 6, 90, 15,176, 59, 75, + 15,178,138,145,242,231,110,190, 89,144, 85,231, 1, 70, 83,222,231, 66, 56, 37, +190,211, 64,127, 88, 98, 82,148,207, 12, 99,190,248,145,220,168,101,235,191,244, +184,115, 65,197, 60, 27,181,158,180, 57,138, 30,145, 81, 85,160,125,245,121, 7, + 61,238, 70, 77,153, 48,165, 44, 74,177, 33,154,196,143, 67,106,113, 50, 85, 17, + 56, 76,132, 94,236,176,194,233,232, 87,205,148,220,206, 15, 41, 41,208, 28,152, +223,206,181,176, 86,223, 82,122, 7,225,225, 67,104,161, 60, 25, 80,241, 92,211, +117,248, 50,128,242,233,169,102, 99, 68, 1, 53,203,213,178,207, 0, 74,101,195, +116, 57,249,147,124,163,137, 83,224,187, 36,110,139,145,242,102, 26, 77,118, 35, + 44,131,158,152,163,212, 71,220,168, 25,219,133,219,155,184,171, 18,131,157,177, +169,101, 72, 61,131,137, 32, 95,188,105,146, 54, 25, 59,152, 57,208,254,189, 48, +154,157, 58,132,233,205,126,244,118, 11,247,103, 58,169,161,182, 62,255, 37,238, +128, 81,243,226, 74,108, 50,162,140,139,173,232,134,192,183, 55,167, 20, 16,123, +111,251, 70,170,214, 11,249,222, 30, 9,110,127,195,125,206,114, 23,183,196,164, +107,128,118, 11,180, 18, 56,226,122,152, 48,101,220, 2,220, 59,136, 6, 91, 30, + 35, 32,210,115, 92, 11, 53,102, 4,247,129, 48,144,203, 49,214,215,226,182,252, +203,194,207, 77, 91, 36,137,133,228, 60, 60,110,121, 25,248,191,169,101, 19, 66, +238,106, 5,223, 86,125, 85,134, 55,117, 49,205,135,175, 1,197, 89,177, 95, 42, + 28,191, 34,104,188,112, 79,105,169,110,183,178,216, 72,151, 28,184,213,129, 2, + 57,215, 79, 76, 18,234,164,248,130,182,169, 72, 61,138, 67, 84,165, 39,128, 62, + 73, 76,160,230, 92,155, 27, 69, 50,206, 63, 91, 37,123, 51, 87,129,241,135,184, +177,241,204,223, 7,250, 15,225, 90,221,148,140,249,128,173, 70,188,221, 29,171, + 45,219,247, 56,245,133,113,201,140,215, 43,150,183,139, 46, 1, 23,126,117,143, +218,137,200, 37,213, 76,255, 11,243,209,169,120,118, 48,174,197,201,106, 48,103, +178, 42,219, 93,145,154, 16, 12,211,155, 67,209,234,135,162,235, 3, 22, 41,119, + 93, 7,127, 4, 22, 98,202,198,229, 39,190,134, 74, 71,156,187, 1,133,207,213, +108,123,139,219,142, 33,242,159,174, 94,170,146, 87, 75, 4, 69, 40,130,222, 22, + 9,110, 40,221, 52,152,147, 99,134,168,150, 0, 99,211,143, 50,243, 37,112, 98, + 43,125,119,169,162, 34,140, 75,214,205, 27, 97,210, 23,104,218, 14,147, 71, 34, +116, 65, 28,226,212,207,115, 18,226, 7, 72,164,192, 6,162,113,139, 46,240, 39, + 90,253, 11,185, 29, 30, 65,153, 91,180,147,161,205, 26, 60, 83,135, 83,210, 92, +192,135,231, 82, 27, 26, 6,123, 2,161,199, 17,182,166,247,104,116, 48, 77, 71, + 40, 3, 11,103, 78,116, 70,159,221, 90,152,241,134,130,244,231,228,182,235, 18, +137,221,190,196, 97, 36, 48,161,149,163, 63,204,212, 67,229, 84, 50,147,184,223, + 8, 32,130,205,127,204,106, 29,183, 10,217,246,108,183,134,232,202,135, 0,150, +184,140, 20,150,118,230, 24, 61,102, 93,173,165,198,249,152,122,252,255,253,175, +155,244, 26, 6, 6,100, 25, 37, 82,107,214, 28, 70, 33,236, 97, 41,128,149, 66, +116,175,250, 67,212, 46, 34, 66, 73, 52,125, 53, 58,157,129,125,132,184,122, 15, +216,186, 86, 82, 54,195,213,188,203,183,174, 85, 5, 1,226,252,194, 61,137,171, + 58,172,234,209,201,192, 76,187,112, 87,132, 68, 95,198,192,213,189, 51,219,102, + 79, 28,204, 44, 15,204,226,152,148,236,170,227,208, 70,228, 99, 82, 13,189, 34, + 25, 72,100,246, 85,212,226,160, 95,222,136, 78,213, 93,225,188,116, 82,185,156, + 68, 15,168,163,205, 39, 23, 3,168, 19,223, 11,157, 0, 23,197, 95, 58, 75,176, + 98,146, 35,155, 19,237,135, 97, 42, 93,159, 24, 28,121,212,190,189,205,101, 59, + 27,117, 72,104,225,154, 36, 6,232,166,215,183, 91, 96, 71, 28, 71, 80, 18,186, +188,208,215, 49,103,235,182, 43,253,139,186,195, 21, 36, 16,254, 33,208,169, 8, +161,216,131,163,176,202,233,205,243, 52, 71,199,254, 17,147, 84, 93, 64,116,234, +136, 44, 36,254, 12, 20,223,193,144,116,233, 92, 33,185, 51, 92, 17,160,112,151, + 97,202, 57, 39, 65,216,164,109, 0, 19, 49,241,154,213,217, 93,110, 82, 70, 24, +141, 76,235, 16, 25,213,204, 7,228,185,211, 51,161,126, 10,132,249,248,101,193, + 96, 97, 71,200, 33, 44,200,185,206,206, 70,116,188,118,132,127, 14, 69,245,230, +189, 53,242, 45,146, 22,142, 35, 62, 14, 81, 69, 72, 5, 59, 41,192,138,232, 32, +106, 11,145, 12,162, 47,153, 32,178,104, 52, 85, 40,152, 48,179,119, 50,241, 26, + 17, 37,250, 17,251, 90, 13,192,166,240, 97,139,213,200,211,221,238, 68,218, 72, + 93,189, 11, 11, 80, 24,107,207,218,217, 7,148, 63,173,123,177,246,211,108, 35, +226,236, 29,136,131, 88, 16,103,232, 32, 81,243,138, 76,138,161,230,247, 9,182, + 91,236,142, 78, 58, 48, 40, 48,213, 6,203,112,178,130,249, 48, 6,208, 12,222, +160, 18,202,211,223,222,242, 51, 12,150,180,134, 41,255,247, 62,252,159, 48,212, +146,118,109,197,149, 7,100,140, 54,135, 4,175, 80, 20,116,183,171,182, 37,198, + 7,177,200, 40, 47,159,254, 11, 87, 35, 67, 62, 63,197,138, 27,128, 86,206,213, + 2, 64, 66,239,117,150,229, 78, 45,199,153, 94,128, 69,134,125,196, 74, 38, 79, + 4, 16, 31, 75,107, 75,132,102, 6,211, 90,128,147, 7, 2, 31, 13,130, 41, 95, +213, 21, 11,223,220,124, 12, 71, 22,147, 38,106,155, 16, 87,253,228,148,167, 70, +116,197, 58,184, 78, 81,179,227, 91,103, 90, 25,127,220, 89, 53,125,103, 89,142, +249, 2,108,182,251,230,206,155, 27,147,110,135, 20, 14,151, 55, 7, 68,145,209, + 1, 41, 86, 7,116,223, 43, 45,247,178,248, 7,135,131,136,157, 19, 15, 57, 29, +116, 68,236, 65,232, 71, 98,225,122, 11, 49,223,113,164, 69,242,142,172,171, 28, + 17,203,126,213,215,166, 91,188,158, 42,124,245,173,230,205, 78,254,237,234,219, +218,137, 59,112,234,160, 71, 66, 44, 72,137,251,200,200,242, 14, 45,109,195, 28, + 68, 42,111,195,170,106, 92,209, 9,133, 95,119,168,165, 42,127,104,192, 62,165, + 93,195, 65, 21,222,152,110, 1,203, 81, 6,242, 73, 43,218,121,143,107, 5,235, + 97,175, 53,215, 21, 90, 15,112, 67,171,179, 55,103, 24,138, 72,132,117, 37, 48, + 95, 1,158, 34, 89,133,193, 84,181, 85,101,180, 53,130, 47,146,181, 76, 20,126, + 58, 8,222,172,183,138,225,190,178, 78, 0, 43, 39,232,115, 23,213, 15, 88, 49, + 92,194,103, 94, 45,162,166, 66, 88,237,104, 82,201,104, 82,197,153,242, 24,163, +215,194,238, 76,190,136,224,182, 64,192,182,119, 79, 0,135, 83,133,198, 5,127, + 62, 43, 17,227, 59,198,120, 5,233,175, 78,207, 80,148,159,206,145,174, 56,169, + 74,191,163, 16, 1, 73, 0, 14,179,243, 47,230,157,180,120,128,162, 28,219, 56, +168, 37, 21,135, 66, 66, 83,250,125, 83,179,130,254,166, 8, 90,169, 9, 75,235, +204, 10,156,232,105,146,170, 53, 17, 4, 32,199, 59,107, 49, 49,105,202,173,245, +150,211,254,108, 6,100,177,255,241, 26,137, 81,242, 21,117, 10,208,182,166, 88, + 34,150, 43,133, 26,125,231,165,252,135, 9, 75,199, 48, 61,137, 79,183,203,163, +241, 45,164,233,246,113,120,167,127, 17, 31, 29,221,125,242,139,122,198, 18,143, +118, 98, 85,249,205, 59,153,176,125,152, 97,216, 43, 70,112,158, 7,126,221,112, + 36,161,193, 65, 28,170,119, 49, 29,229, 54, 8,135,168,166, 92,120, 79,181,110, + 77,100, 10, 86, 13,121, 8,166,253,169, 45,223,183,110, 37,148, 14,218,175, 42, +121,157,206,150, 23, 31,162, 87, 1,232, 10, 9, 68,128,141,103,177, 99, 73, 19, +174, 41, 23,162,164,155, 9,199,241,117,148,114,211,101, 48,120,143,178,194,191, +136,176,239, 16,154,146, 12,218,142, 21, 36, 30, 12,192, 66, 48, 58,160, 55,134, +175,196,109,216,162, 19,163,160,200,245, 33,216, 50,117,139, 70,145,113, 98,226, +191, 11, 9, 51, 60, 45, 70, 28, 85, 10,204,173,130,230, 28,242,137,189, 55,200, + 96,202,215, 89, 8,127,166,193, 33, 66, 97,135,246,201,213, 67,232,185, 19, 12, + 61,132, 32,216,170,121,168,151,206, 85,176,234,120,180,191,212,238,141, 80, 91, +147,178,249,148,220, 78,117,176, 36,167,130,141,209,193, 12, 89, 40,127,102, 83, +214, 40,102,148, 82, 44, 86,243,129, 26,158,208, 58, 18,142, 92, 24,151,173, 59, + 57,229,200, 19, 39, 85, 88, 82, 73,181, 2,178, 11,168, 24, 35, 8, 56, 42,119, +206,112,178,149,246, 6,161, 18,181,181,152,216, 19, 82,182, 87, 10,221,179, 29, +185,244, 65,186, 43,163,194,164, 83, 81,171,219,116, 40,111, 82,251,170,158,253, + 42, 36,172,116, 33,158, 83,175,119,142, 46,252,198, 14, 12, 7,152, 98,133, 96, +102,126,170,180,119,108,100,135, 21, 70, 72, 80,224,102,110, 93,213,105,184, 34, + 93,218,213, 0, 82, 45,101,207,122,172,145,170,142,212,179, 33, 97,119, 1, 93, +170,173,169, 38,137,134,171, 83,226,177,215,236, 25,131, 86, 99, 24,145, 96, 41, +223,230,157,196,101, 5, 69, 31,244,101, 79,194,233, 62, 87,201,130,211,253, 8, + 93, 25,236, 42, 16, 40,174,239,169, 4, 6,165,235,123,216,225,235, 20,110,237, +220,120, 14,228,212, 36, 95,170,235, 61,129, 57, 79,215, 91, 32, 84,185, 4,194, + 46,156, 44,215,136, 71,121, 18,243, 84,141, 40,158, 22, 16,170,130, 65, 98,135, +158, 4, 2, 99,142,176,232, 98, 22,105,184,181,215,144, 17,106, 45, 65, 24,240, +221,115,212,146,170,248,157,127, 48,228, 51,199,221,176,170,240,241,221,132,167, + 77,169,171,184,212,250,135, 33, 44,144,225,150,130,182,127,209,100,160,201, 21, +135, 31, 78,186, 19, 22,228, 59,154,104, 87, 60,193,235, 50, 68,188,152,185, 82, +184, 66,169,209,120, 89, 72,135,147,140, 76,193,147,171, 87,234,236,118,193,193, + 21,245,243, 45,201, 52,152,163,223,189,211, 4,120,151,249,221, 31,134, 19, 41, +124,248, 36,110, 68, 42, 2,220, 97, 46, 80,159, 53, 68,216,168,138,225,152,109, +115,221,253, 34,120, 26, 15, 82, 19,254, 56,128,180, 77, 44,242,198, 68, 43,221, +198, 67, 29,108, 88, 42,209, 54, 57,225,105,152, 2,214,238,151, 0,157,213,173, + 5,171,195,204, 47,240,202,165,230,177,212,229,164,247, 93,144, 92,130, 85,240, +120, 64, 89, 72,122,210,119,115,226, 63, 97, 65,145, 41, 25,163, 0, 18,202, 12, +199,221, 14,212,223,168,143,186,200, 3,194,104,165,105,119,185, 85,251, 40,198, +138, 54,162,208, 9,161,190, 43, 42,155, 7, 84, 93, 75, 7, 3,129,152, 36, 99, +120,118,205, 38,148,232,196,198,205, 89, 47,110, 37,159,249, 20,190, 90,236,142, + 13,131,221,150,186, 69,229, 46, 58,163,125,224, 78,138, 84,210, 24,240,110,248, +204,129, 58, 36, 61, 7,225, 34,187,147,115, 51, 24,113, 45, 67,104,130, 64,101, + 42,201, 45,226, 80,198,195, 11,240,194, 65,213,247, 99, 55,128,135,218,249,210, + 89,107,140, 24, 16,226, 31,251,244, 15,238, 39,106,221, 75,209, 12,233, 65, 19, + 83,181, 83, 92, 36,135, 73, 75,118,121,160,163, 84, 9,203, 12,239, 88, 25, 43, +151,137,115,166, 51,108, 7,237,100, 10,160,148,104, 6,125,137, 38, 32,211,126, + 7,230,132, 64,127,171,221, 9, 58, 30, 49,174, 16, 85, 60, 32,183, 63, 61,127, +221,171,105, 82,186,203,226,192,231, 81,216,191, 83, 88, 36,196,154, 94,104, 46, +250, 35,135, 85,221,236,154,200, 98,255, 25,233,199,215, 77,196,137, 28, 40, 96, +120, 4,113,122, 76, 50,236,245,248, 80,229,184, 66,165, 71, 76, 53, 31,120, 25, + 3,237,240,241,105,238,186,179, 42,155, 38, 32,131,114, 5,222,188,143, 59,169, +205,242, 25, 57,117,146,222,159,199,249, 27, 34, 98, 58,179,146,211, 92,138,246, + 1,129,163, 65,163, 68,172, 18, 98, 97, 79,208, 97,205, 68,166, 30, 54,183, 70, +225, 17,227,245, 31, 16, 33,205, 5, 23,143,184,221, 15,249,232, 61, 79,242, 32, +133, 3, 90,197,145, 15, 16,124,187,238, 41,114,218,200,209,129, 22,135,135,131, +158,205,250,137,177, 99,179,112,205,174, 72, 43,222,177,218,214,110, 73,141,147, +179,158, 13,145, 16,221,155,210, 3,121,167,255,157, 44, 72,187,118,205, 58,160, +171,230,153, 72,247, 60, 27,216,143,207,226, 24,227,105,154, 0, 38, 64, 21, 54, +105, 7, 56,250, 89, 23,138, 88,145,235,179,105, 74, 52, 35,249,154,240,121, 7, +135,185, 81, 57,178, 88,252, 80, 8,162,191,218,202,162, 80, 3, 28,161, 63, 61, +247, 33,129, 66, 34, 70, 91,199, 38,171,181, 93,181, 73, 5, 69,231, 31,184, 51, + 25, 28,198, 88,216,103,139,141,178,234,103,247,193, 76,232,190,143,140, 62,149, + 46,150,175, 92,100, 76,227,251, 34, 67,201, 91, 52,127, 22,101,119,246, 19, 15, +150, 8,238,129,164,223,232,231,186,234, 4,159, 92,106,243, 81, 67, 45,195, 30, + 4, 60,217, 22,187,134, 9, 29,152,129, 23,189,193,126,154, 82, 65, 83,222,102, + 95, 31, 15,246,210,116, 32,225, 11,186,212, 26, 29,118,211, 27, 83, 60, 12,199, +181, 92,245, 4,131,111,169, 71,166,113,241, 31,226, 40,162,120,119,153,175,202, +169,108,248,171, 65, 6, 59,209, 99,254,221,226,185,132,122, 60,183,239,103,194, +228,143,129,194,108,155,147, 69, 21, 94,103,244, 28,242, 17, 30, 37,227, 79, 35, +181,174,183, 5, 41,196,156,141,167,113,207,104,128, 50,131, 34,149, 16,154,240, +226,204, 14,141,148, 97,158, 55,172, 94,111, 4,186, 54,133,173,252, 70, 3,173, +120,129, 43,128, 43, 92,218,170, 57,213, 1,152,234,243,180,174, 7,119,120,145, +193, 63,135,238,249, 56, 99, 34,217, 75, 71, 81,235,236,126,181,124,245,121,235, + 78,214,112, 45, 95, 61,115,240,218,110,254,144, 53, 98, 98, 98, 28,101,253,200, + 36,238, 6,107,206, 76,188,213,208,182,246, 88,237,135, 72, 9,151,115, 88,204, +153,230, 34,137, 8,107, 5,112,153, 35,234, 65,113,205, 90, 62,129, 47,194,134, + 19,185,214, 44,236, 27,188, 42,168,129,174, 32, 28,143,253,241,172, 64,168, 68, + 11,218, 34, 58, 58,136, 45,108,192, 20, 93,115,204,234, 13,138, 74,240,174, 89, + 0,168,147,232,206, 95,197,128,158,109,194,138,151, 11, 35, 14,149,114,240, 48, +232,123,126, 37,110,167,161,137, 2,223,203,129, 1, 8, 29, 79, 42, 49,162,114, + 89, 47, 5,182,204, 21, 0, 86, 70, 49,131,252, 40,165,131, 55,151,195,238,203, + 80,161, 89, 16,108,194, 61,150,175, 4,123,235, 6, 83, 22,163,150,129,106,210, +208, 92,251, 20, 2, 12, 93,234, 93, 58, 13,251,160,220, 8, 96,175,216, 81, 0, + 60,233,216, 94, 22,204,206, 33,137, 46,134, 14, 74, 94, 29,118,234, 20,140,145, + 87, 52, 97, 68,142,188,252,220,210,149, 43, 64, 98, 41,243,238,176, 80, 97, 28, +217, 34,102, 9,197,133, 92,224, 34, 96, 42,246, 87,166, 27,141, 71, 20,217,184, +132,188,249, 54, 54,244,129,157,245,248, 74,133, 44,123, 38,138, 80,251,158,108, + 7,185,132,156, 35,112, 86,100,217,212, 72,168, 21,161,177,149,243, 34,119,250, +164,254,206, 91, 58, 34, 28,225,132,151,214, 59,102,207, 21, 51,243,188,122,204, + 3, 0, 58, 2, 6,168,209, 13,224,220,182,247,127,206, 59,116, 27,230,237,182, +245,102,198,254,204,235, 62, 57, 24,245, 84, 22, 92,116,149, 58, 17, 76,209, 69, +212, 26,178,217,132, 8, 27,240, 98, 17,205,216, 12,115, 84, 64, 31, 11,150, 93, +213,225,134,135, 83,172,253,155, 98,206, 82, 98,113, 93,159,248, 2, 86, 88,156, +126, 65,103, 68,112,194,170,227,197, 49,121,203, 86,244, 8, 48,117,234, 0,198, + 63,128, 84, 19,240,168,146, 88, 98, 3, 77, 41, 15, 52,220, 12, 28,180, 88, 11, + 56,116,247,104, 80,142, 26, 11, 77,215, 88,117, 99,123, 93,221, 17,214,146,104, +186,116,190, 37,163,182,172,243, 79,161, 76,154,132,202,251, 15, 24, 6, 59,231, +143, 89, 52,190, 49,174,151,167,223,222,136,207, 17, 84,144,212,153, 75,251, 42, +227, 28, 45,104,203,106, 15,236,248,116,233,184,228, 10, 65, 1,157,204, 39, 48, +140, 35,233,119,253, 88, 83, 50,168,182,143, 38,165, 13, 95, 7, 50,128, 77,179, + 81,199,138,206,231, 6, 77,109,158,204,158, 26,145, 45, 45,210, 1,216,101, 43, +126,195,162,208,177,119, 84,243, 8, 56, 44, 37,202,155, 53,136,226, 76,201, 25, +113,107,225, 43, 80,195, 94,248,101,154,118,230, 67,184,166,160,231,196,158,214, + 42, 6, 38,229,249,178,133, 30,230, 76,228,223,240, 36,178,148, 43,175, 20,140, + 96, 92,110, 65, 94,247, 18,201,121,253,122, 4,124, 92,187, 47,208,225, 53,184, + 82,238,194, 46, 12, 79,186, 32,106,154, 64, 81, 67,249,252,116,103, 98, 91, 49, +221,228, 65,147, 65,198,153,176,213, 21,138,214,191,147,235,199,169,108,125, 35, + 91, 93,193,104,255, 58,226, 74, 10,120, 23,209,216, 13, 66,183,236, 24, 24, 81, + 55, 91, 26,203,208,215,103,121,219,168,117,106,244,202,211,195, 64, 55, 86,233, + 2, 75, 48,255, 56, 70, 9, 73,241,136,242,129,143, 30, 34,105,201, 89,183,167, + 89, 73, 7, 39,184,127, 10, 59,177,212,163,241,214, 25,165, 13,167,175,123,117, +226, 26,192,215,255,194,233,112,207,222,247, 78,252,118, 66, 29,195,105, 91, 87, +122,172,211, 44,211,181,111,188,223,148, 91, 26,218, 19, 26,112,122, 88, 91,111, + 42,193,213, 98,212,255,157,174, 22,199, 7, 16,221, 8,101,113,255,163,227,134, +200,227, 24,182,195,111, 21, 47,217, 70,104, 69,225,224,240, 45, 87,177,136,252, + 9,249,168,222,114, 40,129,212, 87, 51, 83,149, 82, 75, 16,135, 31, 14,148,151, + 97,142, 57,153, 22,215, 70,173,196,219, 59,248,230, 31,172,161, 30,179,156,153, + 23,171,172,251,191, 55,207,198,194,118, 19, 74, 29,227,186, 13,113, 61,229,116, +207, 66, 71, 60, 49,153, 87, 49, 92,135,154,205,131,195, 47, 8,244,247,244,186, +233, 71,224, 76,230, 51,174,137,208,170,232, 67,216,177, 46, 90,211,246,138, 42, +117, 67, 82,202,136, 61,156,212,131, 15, 85, 98, 90, 16,220, 30,253,249,184, 41, + 74,253, 74, 85, 0,204, 89, 1,249, 31,184,188,199, 68, 29,131,240,196,158,224, +170,123, 23,252, 4, 99, 3, 45, 65, 70,139, 6, 20,151, 61,234, 52,159,213,141, +111, 55,173,131, 8,155, 5,138,184,109,102,213, 88, 24,161,214, 84, 8, 1,205, +136,158,249,126,152, 50, 3, 0, 2,128,214, 22,138,158, 50,214,186, 74,189,123, +123, 56, 60, 48, 38,219, 84, 67,139, 68,130, 44, 21,116,162,112, 65,101, 95, 71, +130, 49,148, 20,107,196,110, 25, 89, 32,161,224, 51,163, 23,192, 78, 10,193, 65, + 30, 87, 75,253, 1,227,246,114, 9, 94, 80, 17,245, 28,104, 84,193,166, 63,195, +217,142, 13,194, 22, 6,248,132, 1, 97, 18, 81, 41, 15, 53, 47,119, 89,205,212, + 58, 4,143,130,190, 49,222,159,230, 9,158, 13,137, 6, 0, 53,154,214,209,242, +114,105,148,171,100,127,154, 77,118,128, 13,215, 39,145,148,193, 1,208,171, 16, +141, 35,128,117, 0, 50, 54,204,139,243, 5, 25, 90,151, 34,101,172,109, 69, 30, + 15, 92, 17, 63, 42,167, 47,153, 76,184, 46,157,246, 6,125,107,228,134,248,206, + 39,186, 99, 51,182,198,118,128,193,102,162, 63,155, 41, 90, 93, 16,180, 2,237, + 32,153,254,173,133,139,245,109,230,188, 48,145,115,106,226,227,253, 85,204,110, +208, 35,246,179,153,235,166, 14,151,189,151, 34, 60,242,156, 20,208,197,159,177, +236,238, 19,203,139, 9, 87, 63,188,160,164,197,132,171, 27, 94,144,173,193, 38, + 11, 22, 19, 78,210,100, 35,137,219, 72,197,168, 22, 50,151, 45,136, 83,159, 4, + 57,240, 31, 22, 62,137,147, 87,158,135, 71, 9, 7, 73,254,104, 83,254,213,194, +199,226,209, 67,189,215, 58, 72, 35,248, 36,224, 86,139,216, 59, 77, 0, 50,196, + 7,206, 38, 58,172, 78, 28,133, 75, 61, 70, 49,118, 18, 47, 99,184,109,196, 94, + 45, 56,241, 29, 13, 56, 9, 84, 90, 91, 64,249, 51,133,163,250, 76,129, 31,112, + 67,230, 78, 71,145, 62, 34, 21, 52,197, 30,225, 98, 42, 51, 5, 74,176,122, 3, + 14, 61,253,234,250, 95, 91, 89,239,161, 94,214,122, 15,156, 21,215, 17,104,181, +212, 50,197,240, 0,102,119,166, 40,208,178,234, 1,164, 41, 98,103,130,195,205, + 17,191, 85,122,145,233,126, 86,136,244, 58, 73, 73,111,218,128,182, 93,114,227, +140,126,129, 47, 30,196,106, 3, 2,156, 0,155, 0,154, 0,223,112, 59,188,221, + 46, 99, 24,182, 87,205,123,107, 12, 33,113,131,202,221, 39, 10,114, 6, 75,195, +196,226,193, 37,205,238,103,141,182,153,238,119, 5,138, 44, 37,157,156,219, 48, + 55,239,151,207,197,208, 2, 62,159,247, 46, 25, 23, 94,201,210,165, 2, 85,208, + 88,195, 96,216,211,209,217,158,231,215,114,152, 14, 60,107,250,164,238,242,185, +232,243, 91,231,238,114, 13, 97, 24,194,250,138,180,109,107,162,106, 34,144,164, +188,127,139,108, 7, 70,146,166,238,236,191,120, 1, 67,206,111, 16,215,215,161, + 80, 59,252, 57,240,197,252, 29, 77,203, 85,191,107, 21,103,158,189,175,201,210, +102,205,222,251,104, 96, 77,227,177,151, 20,153, 11, 24,120, 46, 47,139,185, 85, +171, 26,219,191, 9,132,138,200,205,249,170, 97,203, 70,229,109,155,249,127, 21, +128,105, 2, 78, 57, 61,154, 89,171, 63,108,238,180,175, 30, 14,223,107, 48,117, +239,106,249,229, 58,252,175,250,190, 86,139,211, 2,161, 14, 81,237,240,225, 93, + 85, 83, 85, 85, 20, 37,161,188,170, 40,159, 42,201,228,213,228,212, 4, 47, 29, + 11,165,186,244, 75,180,251,228,186,133,170,209, 18,156,207,140,165,181,207, 99, +129,248,238,127,181,195,221,122, 75,231,238,186,253,214,214, 35,143,164,199, 49, +202,119, 51,215, 35, 73,224, 17,130, 26, 81,147, 83,183,105,128,249,196,215, 93, +131,209,217,106, 50, 1,115,206,159,175, 33, 81,230,190,204,102,132,144,115,156, + 3,248,211,159,159,233, 13,159, 59,211,149,155, 27, 21,124,185,127, 24,129,243, + 61, 73, 69,100,134,132, 77,233, 25,204, 94, 36, 34, 69,199, 94, 70,201, 95, 54, + 47,154,237, 19,147,159,124, 16,169, 78, 61, 99,156, 31,148, 94,168,107,206,107, +104,168,245,215,166,198,107,181, 77,229,212, 77,191,157, 22, 55,161,174,186,130, +123, 16,160,167, 74, 82,204, 56, 87,171,119,196,245, 90,183,117, 24,250, 80,127, +147,177,151,116,200,170,205, 26, 14, 33,245,158, 79, 79,112, 40,121,213,196,165, + 72, 65,213,164, 56, 28,137, 76,174,127,147,119,217,156,219,176,215, 45, 83, 3, + 31,208, 37,132, 49,226,240,121,135,195, 64,203,132, 82, 73, 32,156, 62, 97,253, + 23, 14, 57, 20,198,215, 77, 40,149,196, 29, 2,177, 76, 40,149,132, 66,109,245, +110, 25,125, 70,201, 57,201,209,185, 46, 57, 56, 56, 81,193,102,131, 54,155,205, +111,254,109, 54, 49, 99,172,185, 9, 61,101,236,242,198,173,210, 97,146,171, 12, +247, 7, 54, 92,126, 6,229,124, 52,194,219,117,135,187, 12,214,234,253,137, 24, +171,197,217, 90,116,174,165,193,151,208,202,240,101, 57,238, 51,173, 63, 99, 89, + 93,102, 89, 70, 65, 57,162, 14,229,125,143, 62, 45,171,130, 96, 33,248, 99,216, +231,193, 54,245, 63,172, 20,186, 1, 19, 70,125,187,139, 30,172,196, 26, 86,145, + 52,128, 0, 35,129, 0, 0, 12,141,139, 68,114,161, 60,158, 7,106, 28,241, 3, +243,194, 98, 61, 88, 84,216, 22,205, 47,215,168,178,242,248,139,146,145,211,122, +250,228, 89, 17, 48, 72,188, 12,105,230, 26, 17, 21, 68,142, 17,248,242, 57,182, +164, 24,254,230,224, 44, 26,175,111,219,154,137, 82,234,165,101, 93,254,175,164, +175,102,252, 31,146,173,109,168,246,169, 32,191,196,128,156,218, 67, 62,183, 50, +201,190,182,242,199,249, 87,121,105,157,224,162,226,163,100,241, 97,125,252,140, +220, 3,138, 36,105, 8,254, 60,223, 10,135,209,115,193, 48, 52, 97, 3, 70,216, +191,116, 40, 33, 50,119, 37, 58, 51,124, 69, 85, 56,138,219,137, 50,212,128,183, +116, 13, 27,225,130,163,255,248,230, 22, 70,253,132,120,216,111,252, 35,212, 72, + 96,248,137, 99,210,148,172,239, 20,170, 84,138,162, 62,122,231, 16,196, 87, 54, +226,116, 71,118,187, 80, 45, 35,141,107,147, 72,140, 65, 20,173,199, 95, 24,184, + 99,201,114,164, 97, 65,104, 67, 75,247,254, 88, 95, 48, 35,190,233, 55, 35,202, + 30, 36, 79,118,196, 76,213, 82,101,217, 38,218, 32,121,232, 85, 3, 16, 18,115, + 55,140, 97, 32,179, 44,164,237, 30,186,223,131, 61,136,200,139,127,149,117,137, +116, 69, 16,184, 1, 47, 61, 4,255,243,111, 1,110, 0,145, 8,248,227, 56,235, +150,221,160,170,230,167,236, 63,117,186,206,197,161,245,248,102,194, 3, 48, 29, +236,237, 62,171, 1,244, 27, 79,177,249,100,216,199,152,152,124, 50, 30,120,129, +197,110,211,166, 39,116,232,129, 54,144, 18,202, 5,217,121,195,247, 9,153, 50, + 3,237, 92,107,195, 7, 92, 78, 33,249, 12,227,152, 80, 45, 9,167,169,201,243, +105, 48, 29,184, 20,200,172,164, 41, 11, 0,140, 24,137,139, 42,102, 49,220, 91, + 39, 87, 44,152,253, 59,137,190,157, 43, 92,254,130,123, 23, 88, 11,141,126, 10, +154,186,172,216,100, 28, 90,136, 14,227, 92,112,200,218,215, 1, 61,119,165,234, + 90, 92, 91,226,253,158,212, 86,139, 55,141,129, 50,242,164,231,143,174,150,128, + 16, 19,173, 65, 16, 55,118,255, 52, 83, 29, 25, 61,204, 58, 29,205, 3,213,177, +123,237,100, 73,128,102,176,131,124,158,131, 49, 15,207,170,236,167, 74,232,120, + 28,117,186,204,172,142, 31, 24,221, 42, 87, 54, 54,163,168,248, 77, 49,233,125, +128,106, 93, 64, 90,167,154, 49, 62,195, 94, 30,191,208, 6,191,235,210,136, 58, + 21,189,126,168, 55,219, 33,116, 48, 83,165, 66, 62, 73, 58,145,110,110,111, 2, +103,232,111, 43,222, 10, 98,114,196, 7,185,215,157,153, 73,157,124, 7, 85, 73, +165,150, 48,116,146,160, 53,212,141,214,206,231, 68,249, 17,103,150,210,191,149, +247,197,216,157, 4, 96,202, 22,122,195,244, 17, 75, 93,101, 49, 59,221, 24,108, +216,244, 36,152,161, 2,197,223,102,167,187,186, 84, 87, 94, 81,131, 65,142, 94, + 52,207, 10,131,133,201, 37,230,197, 53,110,222,183,168,126, 32,206,186, 39,158, +222, 32, 87,106,180,220,251,144,175,250, 0,191,144,138,193,122,124, 17,192, 78, + 71,130,106,157,143, 34,242,196, 16,212, 66, 78, 90,249,186,227,114, 45, 4,197, +216,157, 46, 60,215,210,188, 15,163, 67,140, 47,251,140,164,156,101, 90, 36,105, +205, 92,104,190,225,171,128,134,214, 44, 16,131,210, 67,133,248,136, 30,186,181, +197,159,183, 48,211,206, 9,180,231,145,235, 54,225, 97,175, 65,176,240,124, 13, +239, 31,113, 77,146,119, 11, 20,107,123, 29,147,201, 38,247,175,125,164,189, 0, +227, 28, 48,165, 17,214,112,217,148, 15,128, 49,246, 50, 47,171, 54,162,192, 24, +149,144,129, 89, 9,124,165,212, 65, 21,133, 41,193, 68,193, 82, 34, 43,226,143, +122, 22,116, 23,163,250, 12,202,196,238, 23,177,116,169, 80,249, 9,131,248,218, +190, 89, 22,124, 86, 88,175,139,147,226,144, 39,191, 59,126, 73, 41,234, 5, 41, + 58,222,176,228, 92, 76,210, 96,132,117,126, 55, 2,184,113,185,186, 48,191,245, +167,164, 2,117,216, 81,203,140,107,141, 1,125,236,177,153,251, 76,251,190,144, + 15, 51, 62,101,109, 29, 83, 5,143,144, 14, 36, 52,176, 25,163, 66,186, 2, 93, +234,234, 99, 95,153,136,195,152, 55, 1,155, 27, 92,116, 47, 5,144,118,204, 34, + 20, 82, 91,184,153, 20,203,125, 99, 25,146, 75, 27, 42, 5,180, 10, 89,131, 15, +207, 19,237, 42, 42,112, 8,237,129,183,102,183,234,239,125,101, 13, 89, 11, 68, +103,185, 40, 7,121,167, 11,249, 34, 11,143, 78,232,234,131, 16, 25,129,253,235, + 51, 78, 15, 59,207,141,201, 7,170, 9,225,139,125, 0,130,235,128,226, 64, 55, +106,178, 77, 9,248,172,137, 16,202,131,186, 11, 96,146, 57,101,239, 56,228,228, +105,150,162,152, 74,192,228,202, 30,204, 99,163,132,120, 31,227,206,116,117,187, +177, 99, 61,150,219, 23, 69, 78,111, 43,236,132,219,117,209,124,109, 38, 84,185, + 41, 71, 29, 41, 53,188,125,222, 72,225,230, 39,251, 45, 11, 71,233, 2, 12,228, +158,216,155, 17, 68,146,166,238, 93, 34, 69, 24,121,103,203,213, 56,145,177,100, + 41,191,211,216, 8,250, 36, 97,214, 81, 47, 35,239, 0,231,249,127, 56,213, 42, +134,194, 75,248, 32,112,209, 93, 47, 71,237,188,194,141, 63,153,219, 83,221,170, +188,251,145,142, 88,192,125,233, 8,104, 63,156,191, 67,187,165,100,225, 67,211, +135, 75, 46, 67,165,151, 37,105, 32, 22, 2,219, 65,176,240,147,140, 45, 87,154, +141,143,142,162, 27,152,122,192,119, 1,112,198,245, 48, 86, 8, 33,251, 48,191, +165, 24,168,178, 16, 75, 32, 15,180,190,184, 84,218, 58,229, 82, 35,175,138, 12, +137,147, 53, 61,108, 94, 89, 97,122,166, 87,121,209, 79, 31,203, 51,158, 54,226, +239,207,121,134, 41,129,242, 66,224, 16,143, 31,174,113,206,184, 10,137,230,255, +119,234,207,228, 8,211, 71,246, 4,102,101, 22,185,157,180,108,193,187, 67,143, + 71,114,147,143, 2,170, 31, 1,217, 60,110,156, 47,147,128,227, 66,138, 2,134, +157,205, 21, 6,200,193, 29, 95, 87, 80, 23,136,235,198,116, 32, 0,177, 46,236, + 98,107, 36,192, 32, 58,247,232, 78,100,241,229,130, 89,123,213, 76, 83, 99,236, + 74, 81,136,159, 89, 90,225, 25,180, 74,136, 46, 50,201, 39, 92,111, 86, 40,120, +228,106, 22, 81, 91,130, 88, 74,106,143,189,226,116,254, 45,236, 39,162,220, 20, +212,205,122,131,148,136,152,170, 94, 76,250, 23, 0, 60,196,205,186, 87,136,128, +190, 17, 49, 66,231,171, 45,205, 94,226,233, 11, 8,189,193, 95,212,158,144,144, +215, 23,108,217, 1, 97, 43,187,153,229,124, 84, 64,125, 32, 84,210,254, 45,184, + 47,121,179, 78,140,213,253, 80, 88,160, 11,243, 69,112, 94,172, 99, 96,211, 52, +190, 29,185,125,202, 76,236, 68, 32,229, 18,190, 24,217,187, 34, 33,227, 18, 87, +189,243, 51,188, 32, 60, 15,163,167,210, 34, 14,212,217,144,251,159, 91, 74, 33, + 72,236, 89,254, 32,158, 67, 84,208, 85,186,120,124,147,212,157, 25,111,180,126, + 85, 86, 59,230, 30, 65,192,153, 40, 74, 20,109, 70,159, 87,189, 16, 73, 0,231, +124,228,120, 76,189,162,190, 25, 12,137, 5,114,226,114, 75, 37,183, 60,254, 40, + 88,176,127,216,143, 58, 66, 50, 82,217, 30,214,180,110,115,117,132,192, 17, 72, + 56,134, 43,220,250,113,206,148, 67,112, 2,205,151,119, 47, 3, 92,161,206,232, +248,135, 65,186,199,114,166,125,174, 92,241,180, 61,250,135,236, 94,182,207,226, + 57, 55,194, 0,180, 6, 51,111, 57,196,203, 35,243,238,202,236,141, 19,172,230, +193,199,119,232, 55,234, 24,202,177,238,125,215, 25, 25,214, 5,196, 11,222,192, + 22, 8, 25, 49, 9,102, 52, 96,217,128, 93, 19,223,222, 53,166, 19,207,197, 68, +118, 68,146, 96,190, 8,162,243, 39,230,213, 39, 29,100, 78, 15,178,128, 74,180, +211, 9,179,104, 27,161,192, 51,204,117,234,153,204,216,191,164, 89,161,123,114, + 66,233, 43,232,252,222,205, 54,147,104,198, 63, 22,122,172,126, 43,130,242, 15, +104,193, 66,206,136,108, 57, 24, 14,225,117, 7,198, 97,216,156, 66,217, 78,219, +234, 40,171,176,205, 37, 37, 58,148,106,225,232,116, 35,109,155, 67,187,192,170, +125, 63,177,159,190,162,133,245, 55,161, 67,194, 93,133, 60,218,180,149,102,254, + 67,171,129, 54, 58,162, 25, 79, 84, 2, 60,117, 90,142, 52, 78, 30,189, 13, 38, +123,160,107,154, 31, 63, 1,176,227,107,168, 18, 89,211,231,238,243,208,105, 87, + 24,251,241, 47,215,176, 73, 35,189,138,198,105,111,186,140,244,139,113, 80, 17, + 89, 10,130,179, 79,114, 56,174,247,246, 58, 2,205,128,110,255, 69, 58,204,182, + 64,180, 83,130,194,253, 36,252,116,201, 18, 91,232, 67, 10,144,202,218,184, 73, +243,191,220,100, 38,245, 20, 29, 18, 46,109,206, 17, 71,221,244, 66, 72,158, 20, + 6,127,253,124, 80,210, 62, 35, 78,217,127,123,129, 9,123, 45,114,117,170,137, +219, 38, 82, 67,180, 57,111,236, 73, 75,201,123,224,146,208,125, 51,144,169,127, +113,222, 62, 17,198,240, 75,130, 7,110,190,107, 82,166,250,177,180, 83, 15, 67, +233, 6,189, 86,213,151,208, 74,226, 76,137,150, 26, 42, 65, 0, 77,104, 29,117, + 16, 51, 67,169,199, 81,104, 84,195, 29,130,182,166, 80, 19,244, 88,132,174,148, +104,167, 9,152,242, 66, 25,183,105,127,184,197, 38, 64, 72, 38,157,251,202, 75, +182, 44,233, 86,147,210,174, 43, 23,188,204,154,228,143, 86,229,149,224,146,168, +167,191, 27, 99,190,193, 92, 59, 75, 86,106, 98, 37,223, 97,158, 91,206, 73,167, +216,128,142, 8, 88, 66, 55, 95,235,158,209,106, 51, 86,243,252,252,156,221,111, +141, 46,143, 31, 81,217,188,145,178, 40,202,152, 90,246, 97,244,197,211,234, 7, +150, 37,158,185, 42,234,144,233,187,220,191, 71,106,216,142,111, 18,209,151,243, +192,120,106,196,112,173,209,212,177,155, 34,239, 79,199,104,185, 54, 76,197,220, +179,105,234,214,156,137,253, 53,138,215, 92,240, 46,144,124,186, 8,160, 56,233, +248,109,160, 92,160,193, 73, 57, 46,189,116,219,176,200,171, 96, 12,237,144,145, +138, 87,202,245, 21,205,131,243,238,236, 64,210,137,194, 90,124, 23,254,167, 34, +101,143,125,231,152, 3,140, 61,227, 14, 69, 88,112,246, 94,115,203,117,114,200, + 93,129,116,133, 45,221, 7,136,201,103,213,173,254,134, 44, 62, 90,144,122,198, +218,242, 37, 47, 39,160,174,215, 47, 55,102,179, 17,160, 11, 91, 70, 24,139, 23, + 91, 73,153,138, 7,186,180, 21, 37,176,148,143,113, 13,171,194,160,125,160,153, + 73, 99,167,246, 77,189,111,155,108,233,214,134, 77,102,216,231, 67,237, 0,169, + 90,225,100,192, 82, 63,131,226, 94, 31, 24,102,246,136,210, 78, 27,165,151,105, + 86,161, 39,192, 90, 10, 44, 24, 71, 92,190,147,152, 42,145, 51,165,184,158, 56, + 23,215, 70,164,194,232, 84,183,218,100,216,125,205, 5,211,178,140,143,212,151, +105, 94, 70, 37,193,248, 80,160,212,123,191,242, 63, 29,202, 46,183, 94,227, 87, +142,246,158, 89, 68,128, 48, 40,159, 3,225, 1, 31,149,241,124,224,131, 0,129, +159, 66,223, 1,174,183,123, 43, 38,111,247,160, 95,151,120,124,192, 68,114,163, +113,234,110,232,228,156,212,223,150,127,225, 19, 94,170,212,178, 39,242, 47,158, + 72,105,172,198,181,102, 93,253, 54,211,147, 55,248,126,129,114, 59, 3, 88,173, + 22, 25,131,147,235, 97, 58,162,105,125,113,102,119, 57, 75, 94,242, 93,113, 83, +132, 83,116, 66, 82,120,158, 97,192,194,127, 58, 40,231, 55, 57,216, 97,145,228, +172,229,251,193,124, 16,140, 9, 68,190,182,196,135, 70,213,229, 20,155, 13,217, +247,122,213, 78,122, 66,204,193, 68, 58,211, 73,120, 68, 69,189, 83, 64,188, 5, +223,240, 28, 83,163,252,184,153,254,254,112,222,142, 38, 5, 61,171,136,120, 90, +136, 37, 97,218,209,191,164, 5,141,236, 34,239, 11,104,254,166, 74,154,243, 67, + 68,121,135,239, 42,118,171, 85, 98, 3,208, 2,152, 98,202, 34,176,136, 40, 14, +172, 26,149, 14,116, 84, 61,229, 71, 70,180,166,136, 98,228,163, 62,193,157, 47, +175, 11, 37, 60, 71, 71, 50, 57,137,205,113,175, 29,252, 18, 54, 14,174, 65, 33, + 33,100,185,218,207,175, 81,146,193,226,112, 2, 74, 68, 54,118,150, 27,146,226, + 42, 51, 79,103,182,187, 24, 81,183,230,113, 34, 75, 16,114, 51, 46,201,170, 11, + 90, 45, 41, 20, 58,161, 61,100,134,166,122,117,190,126,153,116,170, 52, 3,175, +132, 2,176,237,232,237,112, 82, 55, 42,170, 75, 48,228,152, 88, 15, 24,200,145, +184,135, 88,241,148,122, 23, 61, 6, 49,146, 20,126,253,104,128,208,183, 78,229, +113, 44,149, 23, 32,168, 13,162,145, 24, 87,160, 20,141,233, 5,225,157, 47, 32, +104,190, 66,191, 94,179,120, 15, 28,173,112,187,116,168, 62, 15,180,155, 62,231, +248,148,111,119,132,179,207,173,244,143,227, 82, 33, 60,140, 53, 6,245, 24, 10, +121,235,221,187,242, 9,252, 51,124, 26, 98,217, 13,173,251,246,249, 7, 28, 33, + 50,207, 93, 75,199,193,217, 5, 27,187,237,226,195, 38,247,136,169, 75,219, 1, + 39,169,244,241,100,190, 8,160,234,117, 42,128,228,190,227,171,224, 23,225, 37, +183, 64, 96,184,212,116,127,114, 29,106,153,168, 99, 3, 90,113, 74,177, 80,234, + 30,235,208, 86,236, 48, 15,195,249,171,127,118,150,160,213, 56,158, 8, 33,167, + 5, 40,137, 53,181,216, 63, 99, 13,128, 20, 83,251,240, 60, 41, 79,172,160,221, +230, 63,148, 44,113,135,253,201,173, 34, 47,240, 53,111,196,244,152,144,137, 94, + 89, 94,233, 4,254, 16,118,193, 45,212, 24,232,103, 24, 11, 60,146, 13,231, 11, + 76, 23,106,114,101,115,225, 42,239, 61, 53,134,192,136,129,176,137, 95,253,189, +118, 91,249,201, 79,252,171, 40, 64, 15,156,142,204,181,247,109, 12, 77, 7,190, +206, 22,146, 23,190, 17,100, 82,234,164,146,129,188,115, 55,142, 46,122, 29,161, + 23,254,211,193,237, 48,191,211,144, 21,155, 12,209, 61,218,245, 66,145,165,102, + 18,194,163, 26,131,133, 39,202, 53,171,125,237, 80,131,145,238,188, 97, 99,108, + 99, 54, 8, 16,203, 78,250,240, 44,149,105,185, 35,140,146, 27,171,254,215, 31, + 98, 86, 15,104,161,127,233,109,249,241,140,159,234,157, 68, 1, 98,179,253, 25, + 53,203, 49,176,214, 39,208, 71, 56,255,143, 74,219,137, 51, 90, 10,169, 99,210, +107, 71,113,161, 88,166,225, 53,104, 97,189,120, 38,173,246,152,112,107,212, 8, +220,184, 27,109,138,209, 64,231,156,105, 90,112,213,236, 63,209,235, 31, 25,174, +176, 94, 43, 72,231, 67,193,171, 37,148,157,198,223,142, 23,206,160, 30,205, 33, +145,112, 77, 92,130, 98,171, 44, 79, 20,115,178,185,163, 18, 51, 31,196, 24, 19, +210,105, 54,230, 12,214, 98,240,231,192, 39, 44, 9,140, 13,109,190,188,153, 22, +119, 0, 59, 93,255, 96, 54, 97, 95,179, 98,132,100, 7,220,214, 73, 52, 60,138, +138,135,250,181, 9,243, 33, 49,151,236,204, 41,123,139,250,122,166, 72,175, 26, +189,204,180, 57,181, 67,250,225, 77,160, 40,192,215,130,231,171, 43, 91, 97, 82, + 73,253,140, 53, 24,117, 97, 51, 72, 21,146, 99,160,146, 34, 33, 35,186,178,159, +229,177, 82, 22,177,139,115,176, 38,131,112, 52, 4, 86, 68,213,180,245, 47,224, +151, 87,159, 5, 74, 57,145, 98,197, 15,153,210, 39,138, 20, 5,255,146,169, 56, +224,241,187, 51, 7,109,111,169,157, 11, 78, 23,102, 45, 71,243, 56, 73,153,148, +175, 14, 67,236,198,201, 17,158,133, 47, 66, 63, 44,166, 43, 43,155,177,254,242, + 59, 8,154,208,183,205, 14,130, 72,132, 36, 57, 1,186, 88, 22,117,105,112, 10, +196,197, 40,207, 20,205,145,176,254,100,174,137,189,229,226,219,211, 88,253,104, +156,155,170, 14,148, 44, 24, 57, 3, 4, 78, 96,185,241,254,225, 94,127, 45, 22, + 28, 19,197, 55,104, 77,174,246,139,212,232, 97,234,126,187, 60, 35,234,221,227, +237,122,172, 62, 24,149,241,185,178,131,212,136, 63,229, 14,103,246,246,104,156, +199,209,223,165,117, 17, 53, 42,168,144,195,170,118,176,162, 44,129,160,112, 40, +168, 32,140, 37,169,223, 15,207,167,140,106,100,231, 75,174,221, 46,182,210,180, + 92, 88,236,142,215,181,231,121,134, 85, 20,185,210, 54, 75, 57, 68, 14, 43, 91, +104,123, 9, 40,164,157,151,204,118, 49,118,251,211,194, 11,180,162,187,248,180, + 22,195,152, 30,142, 25,113, 26,137,142, 36,138,101, 69,226, 59,108,190, 71,201, + 89, 83, 90, 48,122,248,151, 85,215, 23,237,253,115, 90,202, 84,121,223, 0,160, + 77, 37, 20,117, 45,181, 67, 72,129, 0, 72, 30, 32, 46,163, 42,249, 96,202, 15, +170, 51,127, 50,236,207,210,156, 1,102,228,174, 21, 27, 56, 72, 35,169,114, 71, +125, 3,240, 90,101,122, 98,232,115,137, 52, 36,112,203,156,179,181,182,188,144, +121, 50,253,108,223,199, 5, 37,239,152,142,101,120, 50,143, 84,143,131,124,116, +143,188, 63,152,212,216,212, 46, 50, 51,128, 62,168,153,113,214,255, 52,115, 2, +180,122,225, 1, 75, 26, 91, 17,212, 33,219,245, 69, 1, 6, 86,146,108, 29, 36, + 26, 10,126, 55,182, 51,117,249,178,157,254, 5,244, 40, 67,251, 35,189,125,225, +126,208,107,173, 99,204,174,221,104, 32, 58,225,220, 27,147,173, 88, 40,241,141, + 90,178,165,120,181,143,167,109, 18,226,187, 21,116,109,118,240, 77,186, 1, 76, +245, 9, 21,105,139,176, 40, 65,200,166, 16, 98,228, 97,153, 50, 93,157,221,169, +132, 1, 99,218,160, 60, 12,151, 74, 33,218, 85,218,233,163, 81,129,247,240,220, +155, 31,136, 7, 53, 41, 59,195,149, 52,134, 47,119,142, 1,221,239, 31,194, 54, +147,131,144,221,214, 45,152,235, 15, 81,212, 58, 7, 53, 71, 93,110,108,164, 89, +249,246,238, 35,200, 84, 0, 40,140, 10,168,122, 60,139,252,185, 72, 61,209,171, + 69,100, 73,219,130, 27, 13,187, 96,216,174,230,199, 32,103,186,248,218,145, 17, +101,199, 2,126,197,110,197, 89,155,122, 59,116, 59,246,179,109,199, 56,162, 18, +255,200,176,176,209,222, 61,131, 65,177, 62,214, 59, 72,197, 26,223, 87, 40,103, + 16,159,161, 29,255, 59,126, 63, 15,171,222, 65, 36,135,114, 44,107,224, 39, 64, + 92,231, 31,196,194,217,191, 36,132,178,198,252, 39,210,214, 9,243,223,215, 80, +222, 4,157,159, 89, 25,163, 62, 73,160,149, 35,107, 17,132,134,174,232,108, 39, + 17,140, 43,208, 96,248,158,102, 5,245, 18,147, 25,205, 77,110, 96,207,233,149, +159,254,121,128, 30,200,192, 83,118, 22, 52, 37,246,251, 98,130,179, 47,230, 43, + 49, 98,155,211,225,218, 88, 0,196, 33,164, 71,102,204,169, 3, 1,143,151,112, +209,210, 5,172,187, 79,168,183,155,216, 22,201,201,140,153, 24, 66,183, 37,200, + 91, 3,237,200,122,180, 23,125,232, 64,223,222,200,113,179,150,249,138,218, 83, +163,192,150,194,103,219, 16,111,130,102,172, 37,200, 66,108,161,252, 62,115, 69, +108,201,133,223,205,184, 11, 19,180, 51, 1,103,134, 57,223, 70,129,178, 28, 86, + 73, 81, 52,109, 99, 24,208, 43,147, 28,177, 90,162,115,200,142, 2,149, 58,223, + 36, 56,190,169,206,241,239, 71, 77, 93, 73,138,200,109,208,234, 42, 16,197,237, + 98, 66, 3, 13,209,182, 46, 70, 49,205,218,201,198,185, 53, 46,127, 81, 35, 95, +148,174, 49,110, 86, 65, 22,182,148,129,109,125,213,195,243,130,232,117, 69,209, +196,181, 46,105,139,186,164,229, 52,119, 88, 88,219, 84,243,123, 64, 36,149,128, +135,177,149,163,211,186,109, 42,222,119,184, 75,216, 11,166,110, 34, 39, 33,241, + 50, 89, 33, 72, 62,148, 35, 92, 22,140,180, 11, 80, 13, 46, 83,197,139,110,149, +115, 23,164,164,103,117, 71, 45,116,156,100,201,192,124,188,103,200,239,142, 67, +221,132, 58, 36, 47,167, 63, 13,241, 31,254, 24, 49, 9,124,146, 62,166, 49,240, +224, 66, 50,234,109,245,136,227,112,189,146,222, 93,167,215, 71, 77, 3, 27, 4, +185, 21,223, 40,161, 56, 85,240, 60, 48,149,249, 24, 89,229, 41, 41, 71, 58,208, +253, 89,154, 51,128, 22, 2, 85,180,249, 68,141,167, 43, 71,158,199,241,146,190, +198, 84,125, 2,151, 39,194,160,229,178,197, 74, 55, 23, 10,204, 50,254,164, 72, + 74, 18,220,214,243, 87,165, 37,129, 66,236, 41,230,115, 44,180,206,245, 61,182, + 29, 69,185, 23,239, 16,188, 88,247,180, 60,237, 99,136, 46, 24,136,108, 7,235, +251,200,125,188,163, 82, 30,224, 11, 97,228, 65, 27,198, 9, 60,223, 11, 60,138, +200, 51, 24,224, 81,120, 1,111, 40,150,198,148,102, 96, 18,207,100,144, 11, 24, + 98,122, 91,135,184, 1,204,148,176, 36, 78,236,220, 86,141, 32,177,244,203, 78, + 50,133,240,150,185, 35,197,172, 73,175, 3,232,120, 54,212,183, 70, 9,151, 83, +255, 76, 86,213,182,202,254,178,224, 12,211,139,180,220,178, 62, 74, 39, 33,229, +205,176,148,151,137,215,181, 38,254, 44,252,213,142,128,208,207,221, 43, 46,154, +154, 82,137,156, 11,167,194, 14,135, 11, 30,113,186, 87,220, 35,193, 66,120,209, +232, 43, 85,165,215,138,202,104,243, 6,176,252, 55,205, 14, 6,249, 17,209,225, +139, 33, 65,139, 9,125,225, 40,128,202, 50, 43, 1,106, 72, 9,222,190,142, 24, + 2,128,234,192, 53, 20,152,160,250,192, 28,194,177,152,110, 63, 27,245,163, 57, + 8, 16,144,156, 63,218,238, 84,113, 93, 62, 3, 84, 46, 22,216,196,116,185, 8, +236,252, 94,106, 67,104,234,179, 20,103,196, 56,236, 44, 61,186,136,105,178, 32, +147,125, 29, 12, 0, 18, 40, 78,135, 40, 47, 77,147, 16, 51,139,140,113,117,144, + 73,226,219,156, 45,146, 25,154,170, 75,253, 75, 11,211,202,192,108,164,186, 17, +183, 92, 28,241,242,201,232, 52,114,221,142,226,108,191, 74, 52,237, 53,103, 5, + 32, 18,233,107, 68, 40,155, 55,236, 20, 17, 24, 74,223,169, 84, 12, 37,228, 73, +165,247, 98,236,220, 66, 1, 78, 62,174, 41, 32,175,206, 35,247,109,132, 40,148, + 69,237, 96,163,237, 55, 8,141, 95, 49,187,114,104, 15, 65,123,128,100,226, 0, + 14,249, 71, 63, 32,118,109,210,182,212,197,130,233, 29,127,194,251, 30,167,221, +182,156,162,150,182, 87,141,176, 49,220,237, 35,100,127, 46,219, 27,166, 61,145, + 24,109, 82,198, 46,183, 39,162,207,248,230,119,116,183,151,219,116,172, 45,218, +121, 22,173,173,214, 49,127,184,238,215, 71,215,117, 23, 15,236,133, 50,215,194, + 95,102,171, 51,218, 90,183, 82,252,190,214,132,242, 54,232, 51, 71,237, 26,156, +123,167,154,151, 7, 73,161, 24,252, 24,172,244, 44, 3,117,102, 58,243, 4,126, +186,139, 57,225, 70, 10, 47,110,136, 74, 3,188,137,167,170,245, 7, 66, 21,123, +156,141, 7,199,106,116, 4,179, 56,145,103,210,166,148, 24,221, 21,237, 50,145, +156,115,148, 20,159,205, 24,152,191, 45,162, 39,156,136,189, 21,132, 58,198, 65, + 27,248,205,168,209, 27,183,157, 46, 2,171,242, 70,104, 92,135,136,220, 36,217, +160, 19, 35,144, 7,243,227, 18,150, 64, 11,179, 34,192,198,179,248, 15,228,136, +255, 90,138,137,125,139,140,124,234,230,154,150,102,238,191,236, 67, 71, 74,149, +136,113, 99,127,193, 83,198, 31,212,252,112, 51,214,242,217, 39,163, 66,162, 24, + 7, 71,229, 34,167, 10, 7, 15,164, 17,129,100,220,187,100,124, 28,134,156,140, + 38,144,231,241,146,138, 26,208,194,136,219, 1,102,185, 54,192,230,238,109, 2, +228,132, 36,255,201, 59, 39,226,253, 24,186, 46,160,239,104,251, 60,110,222,101, + 42,236, 19, 76,151,119, 28,180,172,133, 34,120, 59, 24, 94, 12, 94,238,119, 22, +250,222,140,143, 28,121, 55,128, 77,126,174,122,110,254,187,147,162,163, 63,211, + 12,195,215,195,118,217,147, 11,120, 90, 68, 94,125,177,200, 13,131, 10,135,194, +169,216, 2,236,117,103,254,158, 94, 67,210,208,182, 62,166,116,182, 38, 36,165, + 63, 80,199,200,136, 86,246, 64,228,233,194, 4,161, 65,100,128,119,169,178,255, + 17, 98,217,110,185,216,131, 91, 35, 0,106,109,246, 8,175, 35,238,124,194,192, + 75, 5, 72,125,176, 32, 18, 47, 18, 84,255,242, 77,140,112,243, 9,204, 81, 22, +151, 56, 76,194,218,128, 75,236,105, 26, 96, 53,243,163,227, 10,223,255, 40,206, + 71,116, 48,142,136, 15, 29,203,219,239, 95, 61, 75, 22,120, 28,235, 42, 79,198, +195,172,111, 36,160, 42,116,216, 66, 64, 35,114,253, 50,172,166, 59, 7,142, 88, +198,203,177,200,155, 82,194,157,231,233,204,229, 33,244,114,128,118,254, 50,186, +184, 36,214,179,208,254,194,220,110, 72,155, 55,125,201, 81,235,186,138,117, 83, +248,194,209,195, 32,132,238,146,206,223,137, 48,179,236, 98, 18,121,189,123, 26, +180, 70,157,151,137, 49,230, 35, 52,115, 25,201,248, 38, 47,136,123,135,214, 4, +206, 48, 86, 33,209, 21,148, 85, 44,243, 44, 46,118, 42,246, 55,167, 12,234, 83, +174,107,248,206, 69,181, 97, 97,159, 8, 31, 44, 35, 55, 78,189,229, 98,205,182, +113, 28,244, 0,185,204, 44,144,127, 45, 41,142,154, 77,237,160,220,172,164, 3, + 76, 14, 15, 0, 40,133, 94,116, 51,102, 95, 35,247, 79, 9,119,103,184, 85, 33, + 57,240, 47,195,138, 47,105,139,115,108,242, 57,199,147,217,167,178,204,165, 64, + 91,212, 36,133,167,118, 41,182,219,142,147,176,201, 29, 16, 28,153, 57, 3, 54, +165,247, 94,170,207,141, 52,211,243, 53, 12,200,237,202,205, 81, 25,179, 57,149, +251, 27,238,151, 86,104,100, 59,141, 55,242,229, 90, 17,214,191,173, 69,191,204, +151, 74, 94, 81,131, 25,158, 20,252,147,157, 27,214,132, 42, 44,145,239,154, 19, +181,186,232,231,103,216,236, 18, 62, 10,235,127,171,220, 58, 63,169,129, 55, 66, +229, 18,209,152,217,186,109, 13,134,194,108, 94,136,242,189,125,227,232,199, 1, +130,210, 70,104,201, 76, 23, 11,242,160, 38, 8, 24,120,149,188,131,200,218, 8, +117,165, 32, 22, 26,219, 55, 28, 97,223,152, 75, 94, 85,200,103, 56,116,131,238, + 52, 55,124,138, 33, 26,247,147,235,196, 11,134,240, 95, 27,197, 59, 1,245,115, + 85, 25,234,222,254,216,197, 24,230, 60,160, 0, 11,119, 40, 81,106, 75,245,104, +169, 33,245, 50,165,172, 3, 90,211,216,208, 77,217,168,137,162,200, 32,230, 32, + 54, 8, 62,226, 80,239,176,170, 11, 27,157,177,196,115,223, 37, 1, 26,234, 25, +122, 95, 23,134, 67,164, 11,101,232,157,161,177, 39,228,133, 1,137,214, 81,210, +193, 96,175,159, 47,158, 60,139, 57,147,229,133, 84,118,195,254,165,166, 72,131, +104,196, 39, 8,208, 56,183, 39,175,161, 68, 75,202, 33,185,240,171, 4,127,241, +135, 5,128,203,232, 96,131,105, 4, 55, 79,221,243,226,254,226, 34,212, 50,247, +101, 61, 93,147,247, 38,209,159, 58, 38,251,241, 52,147, 21,106,112,142,186,100, + 73, 13, 47, 87,241,130,117,222, 11, 99, 39,199, 88, 85,234, 75, 63,105, 63,130, +219, 87, 18,238,249,161,232, 6,151, 19,150,103, 36,166, 13,200, 79, 83,160, 82, +222,250,135,170, 91, 30,238,113, 37, 70,128, 98,195,127, 17,248,229, 56,180,218, +225, 16, 36, 80, 99,149, 95,252,124,241, 38,147, 25, 76,252, 22,182,207,228,181, +179,218,186, 63,218, 6,202, 10,252,191,181,147, 72,162, 97, 69, 53, 57,179,241, + 90, 95, 25, 74,135,240,121,219,229,180,176, 58, 58,189, 37, 6,165, 88, 36,177, +140,199,152,246,189,225, 38, 51,222, 64,173,114,117, 28, 29, 88,234,194,173,233, + 88, 64,220,241, 10,124, 36,168,190,216, 83,186,241,240,118,138, 91,237,212,224, +217,244, 44,144,183,227,168, 83,224, 71,113, 75,207, 36, 27,190, 19,132,159,178, +246,193,111,225,239, 71,163,155,141, 80, 38,175, 77,127,186,232, 77,163, 4,155, +201,180, 99, 96, 97,125, 46,254, 4,229,212, 32, 25, 82,180,167,234,172,182,149, +149, 86, 8, 37,102, 42,239, 88, 45,177, 94,197,114, 85, 60, 85, 99,205, 11,235, +251, 75, 84, 47,108, 6,234, 29,194,189, 29, 58, 80,174, 22,113,219,242,235,110, +246,173,177, 68,207, 27,198, 38,231, 95, 70,107,225, 47,195, 82,158, 63,144,109, +214,147, 76,189, 66,240,168,133,134, 57,111,222, 63,151, 9, 18,204,195,107,140, +170,225,110,111,152, 70, 89,216, 56, 72, 51,221, 23,154, 63, 30,188,151, 29,157, +181,192, 71, 6,207,139,183,122, 90,164, 79, 25,117, 61, 39,243,217,184,204,243, +134,235, 33,174,172,215,117, 34, 73,226, 53,250,115,155,157,225, 42,100, 7,166, + 74,227,192, 72,125,230, 88,203, 29, 54,204,226,128,100, 22,223,128,167, 98,224, + 48,203,243,233,173,201,179, 74,203, 32,112,216,167, 54,237, 97,151,160,237,140, +166, 16,136,110,133,129, 4,242,196,213,207, 41,208,222,149, 98,212,158, 48, 7, +219,180, 0, 60,183,217, 79,184,182,144, 31, 12,250,215, 98,155, 48,217, 2,183, + 82,197, 26, 48, 49,250, 68, 66, 47, 3, 8,144,128,210, 87,193,133,121, 57, 42, +126, 63, 28,228,111, 30, 17,175, 19, 80, 26, 66,128,224,160, 17, 30,183, 32,148, + 3, 12,118, 68, 5,253, 92,234,200,211,253, 67, 85, 76, 6, 37,151, 56,103,110, +139,133,248,222,193,161,210, 9,196,249, 68,219,245,232,203, 63,214,207,201, 95, +176, 76,171,185,133,191, 84,169,127, 49, 37,237,145,225,255, 47, 89,105,147, 8, +188, 25, 46,192,164,118, 91, 63,242,224,243,110, 1,128,166, 35,127,237,171, 99, + 72,209, 82, 50, 54, 41,123,148,196, 9, 31,106,244,242, 79,225,100, 56, 73,215, + 51, 43,203,142,113,227,232, 96, 47,139,175, 6, 97,230,111,168,174,142,170, 21, + 79,151,241, 88,240,222,241, 94,105, 30, 25,191,110,121,185, 47,159, 18,191,224, +185, 28,226, 82,235, 75,207, 20,175,228,242,223,113, 44, 7, 78, 99, 42, 44,108, + 65, 95,134,132,232,187,249,125,187,101, 40,134,240,101,129,188, 13, 50,177,250, +164,188,129, 24,206,112, 29,166, 17, 84, 25,177,153,196, 1, 14,172,236, 69, 51, +210,117,217, 85, 76, 98, 14,165,111,214,206,188,255, 19,245,114, 20,216, 57, 33, +126,236, 64, 8, 69, 22,247,126, 80,108,193, 89, 51,145,130, 51,213,208, 90,193, + 83, 39,233, 98,111,213,195, 91, 73, 65,215,183,224,105, 82,166,206, 59, 28,218, + 77, 7, 89, 24,216, 69, 37,185,210,154,158,110,137,146, 14,160, 1,123,169, 71, +113, 21, 49, 51, 11, 15, 21, 14,245,144,121, 26,210,233,121,121,251, 2, 92, 65, + 58,103, 20,192,188,196,184,198, 89,143,147, 92,146,188,161,230,177,246, 83,168, + 63,175,200,191, 82,186, 53,165, 95, 43, 51,209,188, 23, 33,238, 90, 49, 0,170, +106, 3, 85,212, 89,143,225,162,150,197,232,133,248,117, 76,138,117,248,251,185, +175, 13, 24,218,254,148, 70,123, 5,235,152,189,226, 77, 51, 33,141, 13,154,194, +156,186,122,210,104,168, 53, 11, 64, 36,238, 2,251, 2,125, 53,210,123,223,147, +167,136,106, 21,176,106,173,102,159, 45, 24, 70, 30,182, 88,192,228, 6,164,242, + 19, 6,112,222,216,144,164, 17, 67, 55,225, 65,202,180,187,209,141, 57, 58, 56, + 88, 28, 36,108,103,100,216,175,158,224,181,101,196,190,209,135, 30,104, 13, 93, + 51,254, 32, 29,179,121, 88,224,123, 50,154, 87, 85,208, 58,109,141, 8,179, 23, + 6, 70,253,255,236, 75, 42,168, 85, 19, 39,228, 6,143, 39,200, 81,166,237, 13, + 13,156,121,216, 69,125,181, 96,134, 9, 85,185,148,153,236,196, 77,114, 78, 91, +211, 56, 92, 97,137,142,234, 46,242,235,174, 1,128,117,144,149,161, 84,133,139, +219, 19, 16, 97,163, 82,103, 93,200, 77,106,134, 63,120, 92, 61, 79, 89, 34,100, +232,222,179,168, 36,162, 35, 44, 48,112,144, 79,218, 76, 82, 52, 30,115,214,212, +150,224,167,214,207, 68, 5,173,131,178,199,162, 28, 42,213,173,167,162,154, 4, + 92, 36,224,226,116, 83,184, 13,154,103,225,136, 93, 36, 25,231,172,160, 30, 47, + 66,129,176, 97,154, 41, 43,137,198,180, 25,206,232, 11, 67, 31, 51,173,200, 60, + 60, 95, 20,109, 94,127, 33,169,183, 52,218,117, 79, 38,214,207, 86, 39,216, 55, + 1, 95, 85, 57,140,131, 81,139, 17, } ; // ../Source/Template/GB_AxB_dot2_meta.c: @@ -15299,7 +15298,7 @@ uint8_t GB_JITpackage_216 [712] = { GB_JITpackage_index_struct GB_JITpackage_index [217] = { - { 586665, 56523, GB_JITpackage_0 , "GraphBLAS.h" }, + { 586664, 56509, GB_JITpackage_0 , "GraphBLAS.h" }, { 12343, 2052, GB_JITpackage_1 , "GB_AxB_dot2_meta.c" }, { 8501, 2026, GB_JITpackage_2 , "GB_AxB_dot2_template.c" }, { 6513, 1649, GB_JITpackage_3 , "GB_AxB_dot3_meta.c" }, diff --git a/GraphBLAS/README.md b/GraphBLAS/README.md index 296f882a6..8bac7bf57 100644 --- a/GraphBLAS/README.md +++ b/GraphBLAS/README.md @@ -4,7 +4,7 @@ SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2023, All Rights Reserved. SPDX-License-Identifier: Apache-2.0 -VERSION 8.2.0, Sept 8, 2023 +VERSION 8.2.1, Oct 7, 2023 SuiteSparse:GraphBLAS is a complete implementation of the GraphBLAS standard, which defines a set of sparse matrix operations on an extended algebra of @@ -225,10 +225,9 @@ Thanks for packaging SuiteSparse! Here are some suggestions: To cite this package, please use the following: - T. Davis, Algorithm 10xx: SuiteSparse:GraphBLAS: parallel graph - algorithms in the language of sparse linear algebra, ACM Trans on - Mathematical Software, just acceped, 2023. See the pdf in - https://github.com/DrTimothyAldenDavis/GraphBLAS/tree/stable/Doc . + T. A. Davis. Algorithm 1037: SuiteSparse:GraphBLAS: Parallel Graph + Algorithms in the Language of Sparse Linear Algebra. ACM Trans. Math. + Softw. 49, 3, Article 28 (September 2023), 30 pages. https://doi.org/10.1145/3577195 T. Davis, Algorithm 1000: SuiteSparse:GraphBLAS: graph algorithms in diff --git a/GraphBLAS/Source/GB_AxB_saxpy4.c b/GraphBLAS/Source/GB_AxB_saxpy4.c index 9c983eb09..7a56787c5 100644 --- a/GraphBLAS/Source/GB_AxB_saxpy4.c +++ b/GraphBLAS/Source/GB_AxB_saxpy4.c @@ -99,7 +99,7 @@ GrB_Info GB_AxB_saxpy4 // C += A*B GB_Opcode mult_binop_code, add_binop_code ; GB_Type_code xcode, ycode, zcode ; - GB_AxB_semiring_builtin (A, A_is_pattern, B, + bool builtin_semiring = GB_AxB_semiring_builtin (A, A_is_pattern, B, B_is_pattern, semiring, flipxy, &mult_binop_code, &add_binop_code, &xcode, &ycode, &zcode) ; @@ -259,7 +259,10 @@ GrB_Info GB_AxB_saxpy4 // C += A*B // disabled the ANY monoid #define GB_NO_ANY_MONOID - #include "GB_AxB_factory.c" + if (builtin_semiring) + { + #include "GB_AxB_factory.c" + } } #endif @@ -275,6 +278,7 @@ GrB_Info GB_AxB_saxpy4 // C += A*B use_atomics, A_slice, H_slice, Wcx, Wf) ; } + //-------------------------------------------------------------------------- // free workspace and return result //-------------------------------------------------------------------------- diff --git a/GraphBLAS/Source/GB_AxB_saxpy5.c b/GraphBLAS/Source/GB_AxB_saxpy5.c index 7388b8b56..0731b2d70 100644 --- a/GraphBLAS/Source/GB_AxB_saxpy5.c +++ b/GraphBLAS/Source/GB_AxB_saxpy5.c @@ -109,7 +109,7 @@ GrB_Info GB_AxB_saxpy5 // C += A*B GB_Opcode mult_binop_code, add_binop_code ; GB_Type_code xcode, ycode, zcode ; - GB_AxB_semiring_builtin (A, A_is_pattern, B, + bool builtin_semiring = GB_AxB_semiring_builtin (A, A_is_pattern, B, B_is_pattern, semiring, flipxy, &mult_binop_code, &add_binop_code, &xcode, &ycode, &zcode) ; @@ -181,7 +181,10 @@ GrB_Info GB_AxB_saxpy5 // C += A*B // disable the ANY monoid #define GB_NO_ANY_MONOID - #include "GB_AxB_factory.c" + if (builtin_semiring) + { + #include "GB_AxB_factory.c" + } } #endif diff --git a/GraphBLAS/Source/GB_add.c b/GraphBLAS/Source/GB_add.c index 770e98200..2ffc10270 100644 --- a/GraphBLAS/Source/GB_add.c +++ b/GraphBLAS/Source/GB_add.c @@ -109,7 +109,7 @@ GrB_Info GB_add // C=A+B, C=A+B, or C=A+B // initializations //-------------------------------------------------------------------------- - int64_t Cnvec, Cnvec_nonempty ; + int64_t Cnvec = 0 , Cnvec_nonempty = 0 ; int64_t *Cp = NULL ; size_t Cp_size = 0 ; int64_t *Ch = NULL ; size_t Ch_size = 0 ; int64_t *C_to_M = NULL ; size_t C_to_M_size = 0 ; diff --git a/GraphBLAS/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f000bba0bbacf__plus_my_rdiv2.c b/GraphBLAS/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f000bba0bbacf__plus_my_rdiv2.c index 43ae206a4..754c66d6d 100644 --- a/GraphBLAS/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f000bba0bbacf__plus_my_rdiv2.c +++ b/GraphBLAS/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f000bba0bbacf__plus_my_rdiv2.c @@ -123,7 +123,7 @@ GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) ; GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) { (*hash) = 0x31aff911c5850713 ; - v [0] = 8 ; v [1] = 2 ; v [2] = 0 ; + v [0] = 8 ; v [1] = 2 ; v [2] = 1 ; defn [0] = NULL ; defn [1] = GB_my_rdiv2_USER_DEFN ; defn [2] = NULL ; diff --git a/GraphBLAS/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f000bbb0bbbcd__plus_my_rdiv.c b/GraphBLAS/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f000bbb0bbbcd__plus_my_rdiv.c index 0c53074c3..fcdab4322 100644 --- a/GraphBLAS/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f000bbb0bbbcd__plus_my_rdiv.c +++ b/GraphBLAS/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f000bbb0bbbcd__plus_my_rdiv.c @@ -123,7 +123,7 @@ GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) ; GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) { (*hash) = 0x227f98d0b09e286f ; - v [0] = 8 ; v [1] = 2 ; v [2] = 0 ; + v [0] = 8 ; v [1] = 2 ; v [2] = 1 ; defn [0] = NULL ; defn [1] = GB_my_rdiv_USER_DEFN ; defn [2] = NULL ; diff --git a/GraphBLAS/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f046bbb0bbbcd.c b/GraphBLAS/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f046bbb0bbbcd.c index fc9190598..6bb82de35 100644 --- a/GraphBLAS/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f046bbb0bbbcd.c +++ b/GraphBLAS/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f046bbb0bbbcd.c @@ -105,7 +105,7 @@ GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) ; GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) { (*hash) = 0xdf8cbb0c0ac7ce22 ; - v [0] = 8 ; v [1] = 2 ; v [2] = 0 ; + v [0] = 8 ; v [1] = 2 ; v [2] = 1 ; defn [0] = NULL ; defn [1] = NULL ; defn [2] = NULL ; diff --git a/GraphBLAS/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f100bba0baacf__plus_my_rdiv2.c b/GraphBLAS/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f100bba0baacf__plus_my_rdiv2.c index f0a248370..0c875d343 100644 --- a/GraphBLAS/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f100bba0baacf__plus_my_rdiv2.c +++ b/GraphBLAS/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f100bba0baacf__plus_my_rdiv2.c @@ -123,7 +123,7 @@ GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) ; GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) { (*hash) = 0x422f36dae3aeca51 ; - v [0] = 8 ; v [1] = 2 ; v [2] = 0 ; + v [0] = 8 ; v [1] = 2 ; v [2] = 1 ; defn [0] = NULL ; defn [1] = GB_my_rdiv2_USER_DEFN ; defn [2] = NULL ; diff --git a/GraphBLAS/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f100bba0babcd__plus_my_rdiv2.c b/GraphBLAS/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f100bba0babcd__plus_my_rdiv2.c index 25fb5fa16..483620b6d 100644 --- a/GraphBLAS/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f100bba0babcd__plus_my_rdiv2.c +++ b/GraphBLAS/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f100bba0babcd__plus_my_rdiv2.c @@ -123,7 +123,7 @@ GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) ; GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) { (*hash) = 0x654ba0e0a34027e9 ; - v [0] = 8 ; v [1] = 2 ; v [2] = 0 ; + v [0] = 8 ; v [1] = 2 ; v [2] = 1 ; defn [0] = NULL ; defn [1] = GB_my_rdiv2_USER_DEFN ; defn [2] = NULL ; diff --git a/GraphBLAS/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f100bba0babcf__plus_my_rdiv2.c b/GraphBLAS/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f100bba0babcf__plus_my_rdiv2.c index 89d555f44..29a11cd6d 100644 --- a/GraphBLAS/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f100bba0babcf__plus_my_rdiv2.c +++ b/GraphBLAS/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f100bba0babcf__plus_my_rdiv2.c @@ -123,7 +123,7 @@ GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) ; GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) { (*hash) = 0x98afaa59c37fb8bb ; - v [0] = 8 ; v [1] = 2 ; v [2] = 0 ; + v [0] = 8 ; v [1] = 2 ; v [2] = 1 ; defn [0] = NULL ; defn [1] = GB_my_rdiv2_USER_DEFN ; defn [2] = NULL ; diff --git a/GraphBLAS/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f100bba0bbac7__plus_my_rdiv2.c b/GraphBLAS/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f100bba0bbac7__plus_my_rdiv2.c index 6a6b99766..2997ba748 100644 --- a/GraphBLAS/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f100bba0bbac7__plus_my_rdiv2.c +++ b/GraphBLAS/Tcov/PreJIT/GB_jit__AxB_dot2__2c1f100bba0bbac7__plus_my_rdiv2.c @@ -123,7 +123,7 @@ GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) ; GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) { (*hash) = 0xfaa3c6cd7f90ec16 ; - v [0] = 8 ; v [1] = 2 ; v [2] = 0 ; + v [0] = 8 ; v [1] = 2 ; v [2] = 1 ; defn [0] = NULL ; defn [1] = GB_my_rdiv2_USER_DEFN ; defn [2] = NULL ; diff --git a/GraphBLAS/Tcov/PreJIT/GB_jit__user_op__0__my_rdiv.c b/GraphBLAS/Tcov/PreJIT/GB_jit__user_op__0__my_rdiv.c index 1b8f5f796..3d24e8db4 100644 --- a/GraphBLAS/Tcov/PreJIT/GB_jit__user_op__0__my_rdiv.c +++ b/GraphBLAS/Tcov/PreJIT/GB_jit__user_op__0__my_rdiv.c @@ -37,7 +37,7 @@ GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) ; GB_JIT_GLOBAL GB_JIT_QUERY_PROTO (GB_jit_query) { (*hash) = 0xa98ff14e387744fe ; - v [0] = 8 ; v [1] = 2 ; v [2] = 0 ; + v [0] = 8 ; v [1] = 2 ; v [2] = 1 ; defn [0] = GB_my_rdiv_USER_DEFN ; defn [1] = NULL ; defn [2] = NULL ; diff --git a/GraphBLAS/Test/GB_mex_test23.c b/GraphBLAS/Test/GB_mex_test23.c index 5e41f2ae4..68c497057 100644 --- a/GraphBLAS/Test/GB_mex_test23.c +++ b/GraphBLAS/Test/GB_mex_test23.c @@ -55,7 +55,7 @@ void mexFunction // JIT is disabled printf ("JIT disabled\n") ; OK (GxB_Global_Option_set_CHAR (GxB_JIT_CACHE_PATH, "/myroot")) ; - char *s ; + const char *s ; OK (GxB_Global_Option_get_CHAR (GxB_JIT_CACHE_PATH, &s)) ; CHECK (MATCH (s, "/myroot")) ; } diff --git a/GraphBLAS/Test/GB_mex_test25.c b/GraphBLAS/Test/GB_mex_test25.c index 751bf1929..7dbfa16e2 100644 --- a/GraphBLAS/Test/GB_mex_test25.c +++ b/GraphBLAS/Test/GB_mex_test25.c @@ -65,7 +65,7 @@ void mexFunction // GxB_Context_error //-------------------------------------------------------------------------- - char *s = NULL ; + const char *s = NULL ; OK (GrB_error (&s, GxB_CONTEXT_WORLD)) ; CHECK (s != NULL) ; CHECK (strlen (s) == 0) ; diff --git a/GraphBLAS/Test/test237.m b/GraphBLAS/Test/test237.m index b0812d311..8922714d4 100644 --- a/GraphBLAS/Test/test237.m +++ b/GraphBLAS/Test/test237.m @@ -37,10 +37,17 @@ F = GB_spec_random (n, 1, inf, 1, class) ; F.sparsity = 8 ; % full - A.sparsity = 2 ; + A.sparsity = 2 ; % sparse C1 = GB_mex_mxm (F, [ ], accum, semiring, A, B, [ ]) ; C2 = GB_spec_mxm (F, [ ], accum, semiring, A, B, [ ]) ; - GB_spec_compare (C1, C2, [ ], tol) ; + GB_spec_compare (C2, C1, 0, tol) ; + + % typecasting (to trigger the JIT) + A.class = 'single' ; + C1 = GB_mex_mxm (F, [ ], accum, semiring, A, B, [ ]) ; + C2 = GB_spec_mxm (F, [ ], accum, semiring, A, B, [ ]) ; + GB_spec_compare (C2, C1, 0, tol) ; + end GB_mex_burble (0) ; diff --git a/GraphBLAS/Test/test240.m b/GraphBLAS/Test/test240.m index bae1d7a4a..9de98ec37 100644 --- a/GraphBLAS/Test/test240.m +++ b/GraphBLAS/Test/test240.m @@ -49,6 +49,18 @@ GB_spec_compare (C1, C2, 0, 1e-12) ; end +% test saxpy5: A full, B sparse, with typecasting +A2 = A ; +A2.class = 'single' ; +for k = 1:32 + % C += A*B + B = rand (k, n) ; + F = rand (k, n) ; + C1 = GB_mex_mxm_update (F, semiring, B, A2, [ ]) ; + C2 = F + B*A.matrix ; + GB_spec_compare (C1, C2, 0, 1e-5) ; +end + % test saxpy5: A iso bitmap, B sparse A.sparsity = 4 ; % A is bitmap A.iso = true ; % A is bitmap diff --git a/GraphBLAS/Test/test259.m b/GraphBLAS/Test/test259.m index 788ac5f6b..22b55adce 100644 --- a/GraphBLAS/Test/test259.m +++ b/GraphBLAS/Test/test259.m @@ -40,26 +40,26 @@ C2 = GB_mex_mxm (C, [ ], add_op, semiring, A, B, dnn) ; C1 = GB_spec_mxm (C, [ ], add_op, semiring, A, B, dnn) ; C3 = GB_mex_plusplus (C, [ ], add_op, [ ], A, B, dnn) ; -GB_spec_compare (C1, C2, [ ], tol) ; -GB_spec_compare (C1, C3, [ ], tol) ; +GB_spec_compare (C1, C2, 0, tol) ; +GB_spec_compare (C1, C3, 0, tol) ; C2 = GB_mex_mxm (C, [ ], add_op, semiring, AT, B, dtn) ; C1 = GB_spec_mxm (C, [ ], add_op, semiring, AT, B, dtn) ; C3 = GB_mex_plusplus (C, [ ], add_op, [ ], AT, B, dtn) ; -GB_spec_compare (C1, C2, [ ], tol) ; -GB_spec_compare (C1, C3, [ ], tol) ; +GB_spec_compare (C1, C2, 0, tol) ; +GB_spec_compare (C1, C3, 0, tol) ; C2 = GB_mex_mxm (C, [ ], add_op, semiring, A, BT, dnt) ; C1 = GB_spec_mxm (C, [ ], add_op, semiring, A, BT, dnt) ; C3 = GB_mex_plusplus (C, [ ], add_op, [ ], A, BT, dnt) ; -GB_spec_compare (C1, C2, [ ], tol) ; -GB_spec_compare (C1, C3, [ ], tol) ; +GB_spec_compare (C1, C2, 0, tol) ; +GB_spec_compare (C1, C3, 0, tol) ; C2 = GB_mex_mxm (C, [ ], add_op, semiring, AT, BT, dtt) ; C1 = GB_spec_mxm (C, [ ], add_op, semiring, AT, BT, dtt) ; C3 = GB_mex_plusplus (C, [ ], add_op, [ ], AT, BT, dtt) ; -GB_spec_compare (C1, C2, [ ], tol) ; -GB_spec_compare (C1, C3, [ ], tol) ; +GB_spec_compare (C1, C2, 0, tol) ; +GB_spec_compare (C1, C3, 0, tol) ; fprintf ('test259: all tests passed\n') ; diff --git a/GraphBLAS/cmake_modules/GraphBLAS_JIT_paths.cmake b/GraphBLAS/cmake_modules/GraphBLAS_JIT_paths.cmake index d50b686df..e718fae78 100644 --- a/GraphBLAS/cmake_modules/GraphBLAS_JIT_paths.cmake +++ b/GraphBLAS/cmake_modules/GraphBLAS_JIT_paths.cmake @@ -12,8 +12,6 @@ # The GraphBLAS CPU and CUDA JITs need to know where the GraphBLAS source is # located, and where to put the compiled libraries. -include ( SuiteSparse_getenv ) - # set the GRAPHBLAS_CACHE_PATH for compiled JIT kernels if ( DEFINED ENV{GRAPHBLAS_CACHE_PATH} ) # use the GRAPHBLAS_CACHE_PATH environment variable diff --git a/GraphBLAS/cmake_modules/GraphBLAS_version.cmake b/GraphBLAS/cmake_modules/GraphBLAS_version.cmake index 797aa76ba..eb83ff12e 100644 --- a/GraphBLAS/cmake_modules/GraphBLAS_version.cmake +++ b/GraphBLAS/cmake_modules/GraphBLAS_version.cmake @@ -8,10 +8,10 @@ #------------------------------------------------------------------------------- # version of SuiteSparse:GraphBLAS -set ( GraphBLAS_DATE "Sept 8, 2023" ) +set ( GraphBLAS_DATE "Oct 7, 2023" ) set ( GraphBLAS_VERSION_MAJOR 8 ) set ( GraphBLAS_VERSION_MINOR 2 ) -set ( GraphBLAS_VERSION_SUB 0 ) +set ( GraphBLAS_VERSION_SUB 1 ) # GraphBLAS C API Specification version, at graphblas.org set ( GraphBLAS_API_DATE "Nov 15, 2021" ) diff --git a/GraphBLAS/cmake_modules/SuiteSparse__thread.cmake b/GraphBLAS/cmake_modules/SuiteSparse__thread.cmake index 75c5cb61d..1c52185b7 100644 --- a/GraphBLAS/cmake_modules/SuiteSparse__thread.cmake +++ b/GraphBLAS/cmake_modules/SuiteSparse__thread.cmake @@ -10,7 +10,7 @@ # determine if the __thread keyword is available, which is an extension by # gcc but supported by many compilers, to indicate thread-local-storage. -include ( CheckCSourceRuns ) +include ( CheckCSourceCompiles ) set ( thread_src " #include @@ -43,11 +43,11 @@ set ( thread_local_src } " ) -check_c_source_runs ( "${declspec_thread_src}" HAVE_KEYWORD__DECLSPEC_THREAD ) +check_c_source_compiles ( "${declspec_thread_src}" HAVE_KEYWORD__DECLSPEC_THREAD ) -check_c_source_runs ( "${thread_src}" HAVE_KEYWORD__THREAD ) +check_c_source_compiles ( "${thread_src}" HAVE_KEYWORD__THREAD ) -check_c_source_runs ( "${thread_local_src}" HAVE_KEYWORD__THREAD_LOCAL ) +check_c_source_compiles ( "${thread_local_src}" HAVE_KEYWORD__THREAD_LOCAL ) if ( HAVE_KEYWORD__DECLSPEC_THREAD ) add_compile_definitions ( HAVE_KEYWORD__DECLSPEC_THREAD ) diff --git a/GraphBLAS/cmake_modules/SuiteSparse_getenv.cmake b/GraphBLAS/cmake_modules/SuiteSparse_getenv.cmake deleted file mode 100644 index 491274f89..000000000 --- a/GraphBLAS/cmake_modules/SuiteSparse_getenv.cmake +++ /dev/null @@ -1,34 +0,0 @@ -#------------------------------------------------------------------------------- -# GraphBLAS/cmake_modules/SuiteSparse_getenv.cmake -#------------------------------------------------------------------------------- - -# Copyright (c) 2017-2023, Timothy A. Davis. All Rights Reserved. -# SPDX-License-Identifier: Apache-2.0 - -#------------------------------------------------------------------------------- - -# determine if the compiler and OS support getenv ("HOME") - -include ( CheckCSourceRuns ) - -set ( getenv_src -" #include - #include - int main (void) - { - char *home = getenv (\"HOME\") ; - printf (\"home: %s\", home) ; - if (home == NULL) return (-1) ; - return (0) ; - } -" ) - -check_c_source_runs ( "${getenv_src}" HAVE_GETENV_HOME ) - -if ( HAVE_GETENV_HOME ) - message ( STATUS "getenv(\"HOME\"): available" ) -else ( ) - add_compile_definitions ( NGETENV_HOME ) - message ( STATUS "getenv(\"HOME\"): not available" ) -endif ( ) - diff --git a/KLU/CMakeLists.txt b/KLU/CMakeLists.txt index 0142e24c8..345b29f9c 100644 --- a/KLU/CMakeLists.txt +++ b/KLU/CMakeLists.txt @@ -12,10 +12,10 @@ cmake_minimum_required ( VERSION 3.20 ) -set ( KLU_DATE "Sept 8, 2023" ) +set ( KLU_DATE "Sept 18, 2023" ) set ( KLU_VERSION_MAJOR 2 ) set ( KLU_VERSION_MINOR 2 ) -set ( KLU_VERSION_SUB 0 ) +set ( KLU_VERSION_SUB 1 ) message ( STATUS "Building KLU version: v" ${KLU_VERSION_MAJOR}. diff --git a/KLU/Config/KLUConfig.cmake.in b/KLU/Config/KLUConfig.cmake.in index a1049ed13..12657689a 100644 --- a/KLU/Config/KLUConfig.cmake.in +++ b/KLU/Config/KLUConfig.cmake.in @@ -60,7 +60,7 @@ if ( TARGET ${_target_static} ) endif ( ) # Check for most common build types -set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" ) +set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" "None" ) get_property ( _isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG ) if ( _isMultiConfig ) diff --git a/KLU/Config/KLU_CHOLMODConfig.cmake.in b/KLU/Config/KLU_CHOLMODConfig.cmake.in index 73a849d4a..aa1470e5a 100644 --- a/KLU/Config/KLU_CHOLMODConfig.cmake.in +++ b/KLU/Config/KLU_CHOLMODConfig.cmake.in @@ -60,7 +60,7 @@ if ( TARGET ${_target_static} ) endif ( ) # Check for most common build types -set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" ) +set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" "None" ) get_property ( _isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG ) if ( _isMultiConfig ) diff --git a/KLU/Demo/kludemo.out b/KLU/Demo/kludemo.out index f9d1cc1c9..550625408 100644 --- a/KLU/Demo/kludemo.out +++ b/KLU/Demo/kludemo.out @@ -1,5 +1,5 @@ ( cd build && cmake .. && cmake --build . --config Release -j8 ) --- Building KLU version: v2.2.0 (Sept 8, 2023) +-- Building KLU version: v2.2.1 (Sept 18, 2023) -- Source: /home/faculty/d/davis/dev2/SuiteSparse/KLU -- Build: /home/faculty/d/davis/dev2/SuiteSparse/KLU/build -- Install lib: /home/faculty/d/davis/dev2/SuiteSparse/lib @@ -11,46 +11,41 @@ -- Fortran: /usr/bin/f95 -- Looking for CUDA -- Find CUDA tool kit: --- Found CUDAToolkit: /usr/local/cuda/include (found version "11.7.99") -- CUDA toolkit found: TRUE -- CUDA toolkit version: 11.7.99 -- CUDA toolkit include: /usr/local/cuda/include -- CUDA toolkit lib dir: /usr/local/cuda/lib64 -- CUDA: enabled --- SuiteSparse_config version: 7.2.0 +-- SuiteSparse_config version: 7.2.1 -- SuiteSparse_config include: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config --- SuiteSparse_config library: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config/build/libsuitesparseconfig.so.7.2.0 +-- SuiteSparse_config library: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config/build/libsuitesparseconfig.so.7.2.1 -- SuiteSparse_config static: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config/build/libsuitesparseconfig.a --- BTF version: 2.2.0 +-- BTF version: 2.2.1 -- BTF include: /home/faculty/d/davis/dev2/SuiteSparse/BTF/Include --- BTF library: /home/faculty/d/davis/dev2/SuiteSparse/BTF/build/libbtf.so.2.2.0 +-- BTF library: /home/faculty/d/davis/dev2/SuiteSparse/BTF/build/libbtf.so.2.2.1 -- BTF static: /home/faculty/d/davis/dev2/SuiteSparse/BTF/build/libbtf.a --- COLAMD version: 3.2.0 +-- COLAMD version: 3.2.1 -- COLAMD include: /home/faculty/d/davis/dev2/SuiteSparse/COLAMD/Include --- COLAMD library: /home/faculty/d/davis/dev2/SuiteSparse/COLAMD/build/libcolamd.so.3.2.0 +-- COLAMD library: /home/faculty/d/davis/dev2/SuiteSparse/COLAMD/build/libcolamd.so.3.2.1 -- COLAMD static: /home/faculty/d/davis/dev2/SuiteSparse/COLAMD/build/libcolamd.a --- AMD version: 3.2.0 +-- AMD version: 3.2.1 -- AMD include: /home/faculty/d/davis/dev2/SuiteSparse/AMD/Include --- AMD library: /home/faculty/d/davis/dev2/SuiteSparse/AMD/build/libamd.so.3.2.0 +-- AMD library: /home/faculty/d/davis/dev2/SuiteSparse/AMD/build/libamd.so.3.2.1 -- AMD static: /home/faculty/d/davis/dev2/SuiteSparse/AMD/build/libamd.a --- Found CUDAToolkit: /usr/local/cuda/include (found suitable version "11.7.99", minimum required is "11") --- CHOLMOD_CUDA version: 4.2.0 --- CHOLMOD_CUDA library: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/GPU/libcholmod_cuda.so.4.2.0 +-- CHOLMOD_CUDA version: 4.2.1 +-- CHOLMOD_CUDA library: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/GPU/libcholmod_cuda.so.4.2.1 -- CHOLMOD_CUDA static: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/GPU/libcholmod_cuda.a --- CHOLMOD version: 4.2.0 +-- CHOLMOD version: 4.2.1 -- CHOLMOD include: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/Include --- CHOLMOD library: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/libcholmod.so.4.2.0 +-- CHOLMOD library: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/libcholmod.so.4.2.1 -- CHOLMOD static: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/libcholmod.a --- CHOLMOD_CUDA version: 4.2.0 --- CHOLMOD_CUDA library: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/GPU/libcholmod_cuda.so.4.2.0 --- CHOLMOD_CUDA static: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/GPU/libcholmod_cuda.a --- CAMD version: 3.2.0 +-- CAMD version: 3.2.1 -- CAMD include: /home/faculty/d/davis/dev2/SuiteSparse/CAMD/Include --- CAMD library: /home/faculty/d/davis/dev2/SuiteSparse/CAMD/build/libcamd.so.3.2.0 +-- CAMD library: /home/faculty/d/davis/dev2/SuiteSparse/CAMD/build/libcamd.so.3.2.1 -- CAMD static: /home/faculty/d/davis/dev2/SuiteSparse/CAMD/build/libcamd.a --- CCOLAMD version: 3.2.0 +-- CCOLAMD version: 3.2.1 -- CCOLAMD include: /home/faculty/d/davis/dev2/SuiteSparse/CCOLAMD/Include --- CCOLAMD library: /home/faculty/d/davis/dev2/SuiteSparse/CCOLAMD/build/libccolamd.so.3.2.0 +-- CCOLAMD library: /home/faculty/d/davis/dev2/SuiteSparse/CCOLAMD/build/libccolamd.so.3.2.1 -- CCOLAMD static: /home/faculty/d/davis/dev2/SuiteSparse/CCOLAMD/build/libccolamd.a -- Using CHOLMOD for addtional pre-ordering options -- Also compiling the demos in KLU/Demo @@ -73,19 +68,19 @@ -- CUDA architectures: 52;75;80 -- ------------------------------------------------------------------------ -- Configuring done (0.3s) --- Generating done (0.0s) +-- Generating done (0.1s) -- Build files have been written to: /home/faculty/d/davis/dev2/SuiteSparse/KLU/build gmake[1]: Entering directory '/home/faculty/d/davis/dev2/SuiteSparse/KLU/build' [ 3%] Built target KLU_CHOLMOD_static -[ 48%] Built target KLU_static -[ 93%] Built target KLU -[ 95%] Built target KLU_CHOLMOD -[ 96%] Built target klu_simple +[ 69%] Built target KLU +[ 93%] Built target KLU_static +[ 94%] Built target klu_simple +[ 96%] Built target KLU_CHOLMOD [ 98%] Built target kludemo [100%] Built target kluldemo gmake[1]: Leaving directory '/home/faculty/d/davis/dev2/SuiteSparse/KLU/build' ( cd build && cmake -DDEMO=1 .. && cmake --build . --config Release -j8 ) --- Building KLU version: v2.2.0 (Sept 8, 2023) +-- Building KLU version: v2.2.1 (Sept 18, 2023) -- Source: /home/faculty/d/davis/dev2/SuiteSparse/KLU -- Build: /home/faculty/d/davis/dev2/SuiteSparse/KLU/build -- Install lib: /home/faculty/d/davis/dev2/SuiteSparse/lib @@ -97,46 +92,41 @@ gmake[1]: Leaving directory '/home/faculty/d/davis/dev2/SuiteSparse/KLU/build' -- Fortran: /usr/bin/f95 -- Looking for CUDA -- Find CUDA tool kit: --- Found CUDAToolkit: /usr/local/cuda/include (found version "11.7.99") -- CUDA toolkit found: TRUE -- CUDA toolkit version: 11.7.99 -- CUDA toolkit include: /usr/local/cuda/include -- CUDA toolkit lib dir: /usr/local/cuda/lib64 -- CUDA: enabled --- SuiteSparse_config version: 7.2.0 +-- SuiteSparse_config version: 7.2.1 -- SuiteSparse_config include: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config --- SuiteSparse_config library: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config/build/libsuitesparseconfig.so.7.2.0 +-- SuiteSparse_config library: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config/build/libsuitesparseconfig.so.7.2.1 -- SuiteSparse_config static: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config/build/libsuitesparseconfig.a --- BTF version: 2.2.0 +-- BTF version: 2.2.1 -- BTF include: /home/faculty/d/davis/dev2/SuiteSparse/BTF/Include --- BTF library: /home/faculty/d/davis/dev2/SuiteSparse/BTF/build/libbtf.so.2.2.0 +-- BTF library: /home/faculty/d/davis/dev2/SuiteSparse/BTF/build/libbtf.so.2.2.1 -- BTF static: /home/faculty/d/davis/dev2/SuiteSparse/BTF/build/libbtf.a --- COLAMD version: 3.2.0 +-- COLAMD version: 3.2.1 -- COLAMD include: /home/faculty/d/davis/dev2/SuiteSparse/COLAMD/Include --- COLAMD library: /home/faculty/d/davis/dev2/SuiteSparse/COLAMD/build/libcolamd.so.3.2.0 +-- COLAMD library: /home/faculty/d/davis/dev2/SuiteSparse/COLAMD/build/libcolamd.so.3.2.1 -- COLAMD static: /home/faculty/d/davis/dev2/SuiteSparse/COLAMD/build/libcolamd.a --- AMD version: 3.2.0 +-- AMD version: 3.2.1 -- AMD include: /home/faculty/d/davis/dev2/SuiteSparse/AMD/Include --- AMD library: /home/faculty/d/davis/dev2/SuiteSparse/AMD/build/libamd.so.3.2.0 +-- AMD library: /home/faculty/d/davis/dev2/SuiteSparse/AMD/build/libamd.so.3.2.1 -- AMD static: /home/faculty/d/davis/dev2/SuiteSparse/AMD/build/libamd.a --- Found CUDAToolkit: /usr/local/cuda/include (found suitable version "11.7.99", minimum required is "11") --- CHOLMOD_CUDA version: 4.2.0 --- CHOLMOD_CUDA library: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/GPU/libcholmod_cuda.so.4.2.0 +-- CHOLMOD_CUDA version: 4.2.1 +-- CHOLMOD_CUDA library: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/GPU/libcholmod_cuda.so.4.2.1 -- CHOLMOD_CUDA static: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/GPU/libcholmod_cuda.a --- CHOLMOD version: 4.2.0 +-- CHOLMOD version: 4.2.1 -- CHOLMOD include: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/Include --- CHOLMOD library: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/libcholmod.so.4.2.0 +-- CHOLMOD library: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/libcholmod.so.4.2.1 -- CHOLMOD static: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/libcholmod.a --- CHOLMOD_CUDA version: 4.2.0 --- CHOLMOD_CUDA library: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/GPU/libcholmod_cuda.so.4.2.0 --- CHOLMOD_CUDA static: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/GPU/libcholmod_cuda.a --- CAMD version: 3.2.0 +-- CAMD version: 3.2.1 -- CAMD include: /home/faculty/d/davis/dev2/SuiteSparse/CAMD/Include --- CAMD library: /home/faculty/d/davis/dev2/SuiteSparse/CAMD/build/libcamd.so.3.2.0 +-- CAMD library: /home/faculty/d/davis/dev2/SuiteSparse/CAMD/build/libcamd.so.3.2.1 -- CAMD static: /home/faculty/d/davis/dev2/SuiteSparse/CAMD/build/libcamd.a --- CCOLAMD version: 3.2.0 +-- CCOLAMD version: 3.2.1 -- CCOLAMD include: /home/faculty/d/davis/dev2/SuiteSparse/CCOLAMD/Include --- CCOLAMD library: /home/faculty/d/davis/dev2/SuiteSparse/CCOLAMD/build/libccolamd.so.3.2.0 +-- CCOLAMD library: /home/faculty/d/davis/dev2/SuiteSparse/CCOLAMD/build/libccolamd.so.3.2.1 -- CCOLAMD static: /home/faculty/d/davis/dev2/SuiteSparse/CCOLAMD/build/libccolamd.a -- Using CHOLMOD for addtional pre-ordering options -- Also compiling the demos in KLU/Demo @@ -158,15 +148,15 @@ gmake[1]: Leaving directory '/home/faculty/d/davis/dev2/SuiteSparse/KLU/build' -- compile definitions: SUITESPARSE_CUDA -- CUDA architectures: 52;75;80 -- ------------------------------------------------------------------------ --- Configuring done (0.3s) +-- Configuring done (0.2s) -- Generating done (0.0s) -- Build files have been written to: /home/faculty/d/davis/dev2/SuiteSparse/KLU/build gmake[1]: Entering directory '/home/faculty/d/davis/dev2/SuiteSparse/KLU/build' [ 3%] Built target KLU_CHOLMOD_static [ 48%] Built target KLU_static [ 93%] Built target KLU -[ 95%] Built target KLU_CHOLMOD -[ 96%] Built target klu_simple +[ 94%] Built target klu_simple +[ 96%] Built target KLU_CHOLMOD [ 98%] Built target kludemo [100%] Built target kluldemo gmake[1]: Leaving directory '/home/faculty/d/davis/dev2/SuiteSparse/KLU/build' @@ -179,153 +169,153 @@ x [4] = 5 ./build/kludemo < ./Matrix/1c.mtx default ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 n 1 nnz(A) 1 nnz(L+U+F) 1 resid 0 recip growth 1 condest 1 rcond 1 flops 0 peak memory usage: 492 bytes CHOLMOD AMD ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 n 1 nnz(A) 1 nnz(L+U+F) 1 resid 0 recip growth 1 condest 1 rcond 1 flops 0 peak memory usage: 492 bytes CHOLMOD METIS ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 n 1 nnz(A) 1 nnz(L+U+F) 1 resid 0 recip growth 1 condest 1 rcond 1 flops 0 peak memory usage: 492 bytes ./build/kludemo < ./Matrix/arrowc.mtx default ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 n 100 nnz(A) 298 nnz(L+U+F) 298 resid 1.68007e-14 recip growth 0.019999 condest 295.99 rcond 0.019999 flops 297 peak memory usage: 32244 bytes CHOLMOD AMD ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 n 100 nnz(A) 298 nnz(L+U+F) 298 resid 1.68007e-14 recip growth 0.019999 condest 295.99 rcond 0.019999 flops 297 peak memory usage: 32244 bytes CHOLMOD METIS ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 n 100 nnz(A) 298 nnz(L+U+F) 298 resid 2.93788e-14 recip growth 0.019999 condest 295.99 rcond 0.019999 flops 297 peak memory usage: 32244 bytes ./build/kludemo < ./Matrix/arrow.mtx default ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 n 100 nnz(A) 298 nnz(L+U+F) 298 resid 1.77636e-15 recip growth 0.0204082 condest 303 rcond 0.0204082 flops 297 peak memory usage: 20412 bytes CHOLMOD AMD ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 n 100 nnz(A) 298 nnz(L+U+F) 298 resid 1.77636e-15 recip growth 0.0204082 condest 303 rcond 0.0204082 flops 297 peak memory usage: 20412 bytes CHOLMOD METIS ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 n 100 nnz(A) 298 nnz(L+U+F) 298 resid 1.9762e-14 recip growth 0.0204082 condest 303 rcond 0.0204082 flops 297 peak memory usage: 20412 bytes ./build/kludemo < ./Matrix/impcol_a.mtx default ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 n 207 nnz(A) 572 nnz(L+U+F) 615 resid 6.98492e-10 recip growth 0.00957447 condest 4.35093e+07 rcond 4.5277e-05 flops 259 peak memory usage: 34276 bytes CHOLMOD AMD ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 n 207 nnz(A) 572 nnz(L+U+F) 616 resid 6.98492e-10 recip growth 0.00957447 condest 4.35093e+07 rcond 4.5277e-05 flops 264 peak memory usage: 34276 bytes CHOLMOD METIS ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 n 207 nnz(A) 572 nnz(L+U+F) 610 resid 4.65661e-10 recip growth 0.00588235 condest 4.35093e+07 rcond 2.44261e-05 flops 231 peak memory usage: 34548 bytes ./build/kludemo < ./Matrix/w156.mtx default ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 n 156 nnz(A) 362 nnz(L+U+F) 396 resid 6.23816e-08 recip growth 0.00889922 condest 1.79787e+09 rcond 0.000124785 flops 175 peak memory usage: 39516 bytes CHOLMOD AMD ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 n 156 nnz(A) 362 nnz(L+U+F) 396 resid 6.23816e-08 recip growth 0.00889922 condest 1.79787e+09 rcond 0.000124785 flops 175 peak memory usage: 39516 bytes CHOLMOD METIS ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 n 156 nnz(A) 362 nnz(L+U+F) 406 resid 6.14058e-10 recip growth 0.00285463 condest 1.79787e+09 rcond 2.69023e-05 flops 207 peak memory usage: 40060 bytes ./build/kludemo < ./Matrix/ctina.mtx default ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 n 11 nnz(A) 36 nnz(L+U+F) 45 resid 4.44089e-16 recip growth 1 condest 56 rcond 1 flops 73 peak memory usage: 4268 bytes CHOLMOD AMD ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 n 11 nnz(A) 36 nnz(L+U+F) 45 resid 4.44089e-16 recip growth 1 condest 56 rcond 1 flops 73 peak memory usage: 4268 bytes CHOLMOD METIS ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 n 11 nnz(A) 36 nnz(L+U+F) 42 resid 4.44089e-16 recip growth 1 condest 56 rcond 1 flops 54 peak memory usage: 4268 bytes ./build/kluldemo < ./Matrix/1c.mtx default ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 n 1 nnz(A) 1 nnz(L+U+F) 1 resid 0 recip growth 1 condest 1 rcond 1 flops 0 peak memory usage: 600 bytes CHOLMOD AMD ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 n 1 nnz(A) 1 nnz(L+U+F) 1 resid 0 recip growth 1 condest 1 rcond 1 flops 0 peak memory usage: 600 bytes CHOLMOD METIS ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 n 1 nnz(A) 1 nnz(L+U+F) 1 resid 0 recip growth 1 condest 1 rcond 1 flops 0 peak memory usage: 600 bytes ./build/kluldemo < ./Matrix/arrowc.mtx default ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 n 100 nnz(A) 298 nnz(L+U+F) 298 resid 1.68007e-14 recip growth 0.019999 condest 295.99 rcond 0.019999 flops 297 peak memory usage: 39000 bytes CHOLMOD AMD ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 ------------------- KLU User n 100 nnz(A) 298 nnz(L+U+F) 298 resid 1.68007e-14 recip growth 0.019999 condest 295.99 rcond 0.019999 flops 297 peak memory usage: 39000 bytes CHOLMOD METIS ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 ------------------- KLU User n 100 nnz(A) 298 nnz(L+U+F) 298 resid 2.93788e-14 recip growth 0.019999 condest 295.99 rcond 0.019999 flops 297 @@ -333,20 +323,20 @@ peak memory usage: 39000 bytes ./build/kluldemo < ./Matrix/arrow.mtx default ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 n 100 nnz(A) 298 nnz(L+U+F) 298 resid 1.77636e-15 recip growth 0.0204082 condest 303 rcond 0.0204082 flops 297 peak memory usage: 29584 bytes CHOLMOD AMD ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 ------------------- KLU User n 100 nnz(A) 298 nnz(L+U+F) 298 resid 1.77636e-15 recip growth 0.0204082 condest 303 rcond 0.0204082 flops 297 peak memory usage: 29584 bytes CHOLMOD METIS ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 ------------------- KLU User n 100 nnz(A) 298 nnz(L+U+F) 298 resid 1.9762e-14 recip growth 0.0204082 condest 303 rcond 0.0204082 flops 297 @@ -354,13 +344,13 @@ peak memory usage: 29584 bytes ./build/kluldemo < ./Matrix/impcol_a.mtx default ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 n 207 nnz(A) 572 nnz(L+U+F) 615 resid 6.98492e-10 recip growth 0.00957447 condest 4.35093e+07 rcond 4.5277e-05 flops 259 peak memory usage: 44800 bytes CHOLMOD AMD ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 ------------------- KLU User ------------------- KLU User n 207 nnz(A) 572 nnz(L+U+F) 616 resid 6.98492e-10 @@ -368,7 +358,7 @@ recip growth 0.00957447 condest 4.35093e+07 rcond 4.5277e-05 flops 264 peak memory usage: 44800 bytes CHOLMOD METIS ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 ------------------- KLU User ------------------- KLU User n 207 nnz(A) 572 nnz(L+U+F) 610 resid 4.65661e-10 @@ -377,20 +367,20 @@ peak memory usage: 45152 bytes ./build/kluldemo < ./Matrix/w156.mtx default ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 n 156 nnz(A) 362 nnz(L+U+F) 396 resid 6.23816e-08 recip growth 0.00889922 condest 1.79787e+09 rcond 0.000124785 flops 175 peak memory usage: 47480 bytes CHOLMOD AMD ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 ------------------- KLU User n 156 nnz(A) 362 nnz(L+U+F) 396 resid 6.23816e-08 recip growth 0.00889922 condest 1.79787e+09 rcond 0.000124785 flops 175 peak memory usage: 47480 bytes CHOLMOD METIS ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 ------------------- KLU User n 156 nnz(A) 362 nnz(L+U+F) 406 resid 6.14058e-10 recip growth 0.00285463 condest 1.79787e+09 rcond 2.69023e-05 flops 207 @@ -398,20 +388,20 @@ peak memory usage: 48152 bytes ./build/kluldemo < ./Matrix/ctina.mtx default ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 n 11 nnz(A) 36 nnz(L+U+F) 45 resid 4.44089e-16 recip growth 1 condest 56 rcond 1 flops 73 peak memory usage: 5144 bytes CHOLMOD AMD ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 ------------------- KLU User n 11 nnz(A) 36 nnz(L+U+F) 45 resid 4.44089e-16 recip growth 1 condest 56 rcond 1 flops 73 peak memory usage: 5144 bytes CHOLMOD METIS ordering: -KLU: Sept 8, 2023, version: 2.2.0 +KLU: Sept 18, 2023, version: 2.2.1 ------------------- KLU User n 11 nnz(A) 36 nnz(L+U+F) 42 resid 4.44089e-16 recip growth 1 condest 56 rcond 1 flops 54 diff --git a/KLU/Doc/ChangeLog b/KLU/Doc/ChangeLog index 79a2222ff..f7c7aedee 100644 --- a/KLU/Doc/ChangeLog +++ b/KLU/Doc/ChangeLog @@ -1,3 +1,7 @@ +Sept 18, 2023: version 2.2.1 + + * cmake update: add "None" build type, from Antonio Rojas, for Arch Linux + Sept 8, 2023: version 2.2.0 * cmake updates: SuiteSparse:: namespace by Markus Muetzel diff --git a/KLU/Doc/KLU_UserGuide.pdf b/KLU/Doc/KLU_UserGuide.pdf index 4d9ef7d87..1d4c9f925 100644 Binary files a/KLU/Doc/KLU_UserGuide.pdf and b/KLU/Doc/KLU_UserGuide.pdf differ diff --git a/KLU/Doc/klu_version.tex b/KLU/Doc/klu_version.tex index 47eff9253..750180267 100644 --- a/KLU/Doc/klu_version.tex +++ b/KLU/Doc/klu_version.tex @@ -1,2 +1,2 @@ % version of SuiteSparse/KLU -\date{VERSION 2.2.0, Sept 8, 2023} +\date{VERSION 2.2.1, Sept 18, 2023} diff --git a/KLU/Include/klu.h b/KLU/Include/klu.h index 48bcfbba2..d855727f0 100644 --- a/KLU/Include/klu.h +++ b/KLU/Include/klu.h @@ -814,10 +814,10 @@ void *klu_l_realloc (size_t, size_t, size_t, void *, klu_l_common *) ; * #endif */ -#define KLU_DATE "Sept 8, 2023" +#define KLU_DATE "Sept 18, 2023" #define KLU_MAIN_VERSION 2 #define KLU_SUB_VERSION 2 -#define KLU_SUBSUB_VERSION 0 +#define KLU_SUBSUB_VERSION 1 #define KLU_VERSION_CODE(main,sub) ((main) * 1000 + (sub)) #define KLU_VERSION KLU_VERSION_CODE(KLU_MAIN_VERSION,KLU_SUB_VERSION) diff --git a/LDL/CMakeLists.txt b/LDL/CMakeLists.txt index 09667121c..1f496a99b 100644 --- a/LDL/CMakeLists.txt +++ b/LDL/CMakeLists.txt @@ -11,10 +11,10 @@ cmake_minimum_required ( VERSION 3.20 ) -set ( LDL_DATE "Sept 8, 2023" ) +set ( LDL_DATE "Sept 18, 2023" ) set ( LDL_VERSION_MAJOR 3 ) set ( LDL_VERSION_MINOR 2 ) -set ( LDL_VERSION_SUB 0 ) +set ( LDL_VERSION_SUB 1 ) message ( STATUS "Building LDL version: v" ${LDL_VERSION_MAJOR}. diff --git a/LDL/Config/LDLConfig.cmake.in b/LDL/Config/LDLConfig.cmake.in index 948a34a58..0b791d458 100644 --- a/LDL/Config/LDLConfig.cmake.in +++ b/LDL/Config/LDLConfig.cmake.in @@ -60,7 +60,7 @@ if ( TARGET ${_target_static} ) endif ( ) # Check for most common build types -set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" ) +set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" "None" ) get_property ( _isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG ) if ( _isMultiConfig ) diff --git a/LDL/Demo/ldlamd.out b/LDL/Demo/ldlamd.out index 1be9e859e..82cd7a2d0 100644 --- a/LDL/Demo/ldlamd.out +++ b/LDL/Demo/ldlamd.out @@ -6,7 +6,7 @@ name: Dense/0 n: 0 entries: 0 -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -14,7 +14,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 4 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK n, dimension of A: 0 @@ -37,7 +37,7 @@ name: Dense/0 n: 0 entries: 0 (jumbled version) -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -45,7 +45,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 4 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK n, dimension of A: 0 @@ -68,7 +68,7 @@ name: Dense/1 n: 1 entries: 1 -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -76,7 +76,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 4 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK n, dimension of A: 1 nz, number of nonzeros in A: 1 @@ -119,7 +119,7 @@ name: Dense/1 n: 1 entries: 2 (jumbled version) -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -127,7 +127,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 4 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK, but jumbled n, dimension of A: 1 nz, number of nonzeros in A: 1 @@ -170,7 +170,7 @@ name: Dense/2 n: 2 entries: 4 -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -178,7 +178,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 4 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK n, dimension of A: 2 nz, number of nonzeros in A: 4 @@ -221,7 +221,7 @@ name: Dense/2 n: 2 entries: 5 (jumbled version) -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -229,7 +229,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 4 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK, but jumbled n, dimension of A: 2 nz, number of nonzeros in A: 4 @@ -272,7 +272,7 @@ name: Dense/3 n: 3 entries: 9 -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -280,7 +280,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 4 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK n, dimension of A: 3 nz, number of nonzeros in A: 9 @@ -323,7 +323,7 @@ name: Dense/3 n: 3 entries: 11 (jumbled version) -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -331,7 +331,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 4 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK, but jumbled n, dimension of A: 3 nz, number of nonzeros in A: 9 @@ -374,7 +374,7 @@ name: HB/can_24 n: 24 entries: 160 -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -382,7 +382,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 4 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK n, dimension of A: 24 nz, number of nonzeros in A: 160 @@ -425,7 +425,7 @@ name: HB/can_24 n: 24 entries: 188 (jumbled version) -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -433,7 +433,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 4 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK, but jumbled n, dimension of A: 24 nz, number of nonzeros in A: 160 @@ -476,7 +476,7 @@ name: FIDAP/ex5 n: 27 entries: 279 -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -484,7 +484,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 4 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK n, dimension of A: 27 nz, number of nonzeros in A: 279 @@ -527,7 +527,7 @@ name: FIDAP/ex5 n: 27 entries: 325 (jumbled version) -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -535,7 +535,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 4 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK, but jumbled n, dimension of A: 27 nz, number of nonzeros in A: 279 @@ -578,7 +578,7 @@ name: HB/bcsstk01 n: 48 entries: 400 -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -586,7 +586,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 4 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK n, dimension of A: 48 nz, number of nonzeros in A: 400 @@ -629,7 +629,7 @@ name: HB/bcsstk01 n: 48 entries: 472 (jumbled version) -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -637,7 +637,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 4 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK, but jumbled n, dimension of A: 48 nz, number of nonzeros in A: 400 @@ -680,7 +680,7 @@ name: HB/bcsstm01 n: 48 entries: 24 -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -688,7 +688,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 4 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK n, dimension of A: 48 nz, number of nonzeros in A: 24 @@ -731,7 +731,7 @@ name: HB/bcsstm01 n: 48 entries: 26 (jumbled version) -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -739,7 +739,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 4 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK, but jumbled n, dimension of A: 48 nz, number of nonzeros in A: 24 @@ -782,7 +782,7 @@ name: Pothen/mesh1e1 n: 48 entries: 306 -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -790,7 +790,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 4 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK n, dimension of A: 48 nz, number of nonzeros in A: 306 @@ -833,7 +833,7 @@ name: Pothen/mesh1e1 n: 48 entries: 359 (jumbled version) -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -841,7 +841,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 4 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK, but jumbled n, dimension of A: 48 nz, number of nonzeros in A: 306 @@ -884,7 +884,7 @@ name: Bai/bfwb62 n: 62 entries: 342 -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -892,7 +892,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 4 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK n, dimension of A: 62 nz, number of nonzeros in A: 342 @@ -935,7 +935,7 @@ name: Bai/bfwb62 n: 62 entries: 407 (jumbled version) -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -943,7 +943,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 4 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK, but jumbled n, dimension of A: 62 nz, number of nonzeros in A: 342 @@ -986,7 +986,7 @@ name: HB/bcsstk02 n: 66 entries: 4356 -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -994,7 +994,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 4 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK n, dimension of A: 66 nz, number of nonzeros in A: 4356 @@ -1037,7 +1037,7 @@ name: HB/bcsstk02 n: 66 entries: 5175 (jumbled version) -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -1045,7 +1045,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 4 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK, but jumbled n, dimension of A: 66 nz, number of nonzeros in A: 4356 @@ -1088,7 +1088,7 @@ name: HB/bcsstm02 n: 66 entries: 66 -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -1096,7 +1096,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 4 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK n, dimension of A: 66 nz, number of nonzeros in A: 66 @@ -1139,7 +1139,7 @@ name: HB/bcsstm02 n: 66 entries: 72 (jumbled version) -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -1147,7 +1147,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 4 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK, but jumbled n, dimension of A: 66 nz, number of nonzeros in A: 66 diff --git a/LDL/Demo/ldllamd.out b/LDL/Demo/ldllamd.out index a0646c728..35b6e32ba 100644 --- a/LDL/Demo/ldllamd.out +++ b/LDL/Demo/ldllamd.out @@ -6,7 +6,7 @@ name: Dense/0 n: 0 entries: 0 -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -14,7 +14,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 8 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK n, dimension of A: 0 @@ -37,7 +37,7 @@ name: Dense/0 n: 0 entries: 0 (jumbled version) -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -45,7 +45,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 8 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK n, dimension of A: 0 @@ -68,7 +68,7 @@ name: Dense/1 n: 1 entries: 1 -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -76,7 +76,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 8 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK n, dimension of A: 1 nz, number of nonzeros in A: 1 @@ -119,7 +119,7 @@ name: Dense/1 n: 1 entries: 2 (jumbled version) -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -127,7 +127,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 8 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK, but jumbled n, dimension of A: 1 nz, number of nonzeros in A: 1 @@ -170,7 +170,7 @@ name: Dense/2 n: 2 entries: 4 -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -178,7 +178,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 8 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK n, dimension of A: 2 nz, number of nonzeros in A: 4 @@ -221,7 +221,7 @@ name: Dense/2 n: 2 entries: 5 (jumbled version) -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -229,7 +229,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 8 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK, but jumbled n, dimension of A: 2 nz, number of nonzeros in A: 4 @@ -272,7 +272,7 @@ name: Dense/3 n: 3 entries: 9 -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -280,7 +280,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 8 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK n, dimension of A: 3 nz, number of nonzeros in A: 9 @@ -323,7 +323,7 @@ name: Dense/3 n: 3 entries: 11 (jumbled version) -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -331,7 +331,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 8 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK, but jumbled n, dimension of A: 3 nz, number of nonzeros in A: 9 @@ -374,7 +374,7 @@ name: HB/can_24 n: 24 entries: 160 -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -382,7 +382,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 8 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK n, dimension of A: 24 nz, number of nonzeros in A: 160 @@ -425,7 +425,7 @@ name: HB/can_24 n: 24 entries: 188 (jumbled version) -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -433,7 +433,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 8 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK, but jumbled n, dimension of A: 24 nz, number of nonzeros in A: 160 @@ -476,7 +476,7 @@ name: FIDAP/ex5 n: 27 entries: 279 -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -484,7 +484,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 8 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK n, dimension of A: 27 nz, number of nonzeros in A: 279 @@ -527,7 +527,7 @@ name: FIDAP/ex5 n: 27 entries: 325 (jumbled version) -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -535,7 +535,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 8 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK, but jumbled n, dimension of A: 27 nz, number of nonzeros in A: 279 @@ -578,7 +578,7 @@ name: HB/bcsstk01 n: 48 entries: 400 -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -586,7 +586,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 8 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK n, dimension of A: 48 nz, number of nonzeros in A: 400 @@ -629,7 +629,7 @@ name: HB/bcsstk01 n: 48 entries: 472 (jumbled version) -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -637,7 +637,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 8 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK, but jumbled n, dimension of A: 48 nz, number of nonzeros in A: 400 @@ -680,7 +680,7 @@ name: HB/bcsstm01 n: 48 entries: 24 -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -688,7 +688,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 8 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK n, dimension of A: 48 nz, number of nonzeros in A: 24 @@ -731,7 +731,7 @@ name: HB/bcsstm01 n: 48 entries: 26 (jumbled version) -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -739,7 +739,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 8 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK, but jumbled n, dimension of A: 48 nz, number of nonzeros in A: 24 @@ -782,7 +782,7 @@ name: Pothen/mesh1e1 n: 48 entries: 306 -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -790,7 +790,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 8 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK n, dimension of A: 48 nz, number of nonzeros in A: 306 @@ -833,7 +833,7 @@ name: Pothen/mesh1e1 n: 48 entries: 359 (jumbled version) -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -841,7 +841,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 8 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK, but jumbled n, dimension of A: 48 nz, number of nonzeros in A: 306 @@ -884,7 +884,7 @@ name: Bai/bfwb62 n: 62 entries: 342 -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -892,7 +892,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 8 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK n, dimension of A: 62 nz, number of nonzeros in A: 342 @@ -935,7 +935,7 @@ name: Bai/bfwb62 n: 62 entries: 407 (jumbled version) -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -943,7 +943,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 8 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK, but jumbled n, dimension of A: 62 nz, number of nonzeros in A: 342 @@ -986,7 +986,7 @@ name: HB/bcsstk02 n: 66 entries: 4356 -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -994,7 +994,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 8 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK n, dimension of A: 66 nz, number of nonzeros in A: 4356 @@ -1037,7 +1037,7 @@ name: HB/bcsstk02 n: 66 entries: 5175 (jumbled version) -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -1045,7 +1045,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 8 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK, but jumbled n, dimension of A: 66 nz, number of nonzeros in A: 4356 @@ -1088,7 +1088,7 @@ name: HB/bcsstm02 n: 66 entries: 66 -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -1096,7 +1096,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 8 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK n, dimension of A: 66 nz, number of nonzeros in A: 66 @@ -1139,7 +1139,7 @@ name: HB/bcsstm02 n: 66 entries: 72 (jumbled version) -------------------------------------------------------- -AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering +AMD version 3.2.1, Sept 18, 2023: approximate minimum degree ordering dense row parameter: 10 (rows with more than max (10 * sqrt (n), 16) entries are considered "dense", and placed last in output permutation) @@ -1147,7 +1147,7 @@ AMD version 3.2.0, Sept 8, 2023: approximate minimum degree ordering size of AMD integer: 8 -AMD version 3.2.0, Sept 8, 2023, results: +AMD version 3.2.1, Sept 18, 2023, results: status: OK, but jumbled n, dimension of A: 66 nz, number of nonzeros in A: 66 diff --git a/LDL/Demo/ldlsimple.out b/LDL/Demo/ldlsimple.out index f0e8feb37..563befe80 100644 --- a/LDL/Demo/ldlsimple.out +++ b/LDL/Demo/ldlsimple.out @@ -1,4 +1,4 @@ -LDL 3.2.0 in SuiteSparse 7.2.0 +LDL 3.2.1 in SuiteSparse 7.2.1 Nonzeros in L, excluding diagonal: 13 x [0] = 0.1 x [1] = 0.2 diff --git a/LDL/Doc/ChangeLog b/LDL/Doc/ChangeLog index a9adb7f8e..57fbe39d4 100644 --- a/LDL/Doc/ChangeLog +++ b/LDL/Doc/ChangeLog @@ -1,3 +1,7 @@ +Sept 18, 2023: version 3.2.1 + + * cmake update: add "None" build type, from Antonio Rojas, for Arch Linux + Sept 8, 2023: version 3.2.0 * cmake updates: SuiteSparse:: namespace by Markus Muetzel diff --git a/LDL/Doc/ldl_userguide.pdf b/LDL/Doc/ldl_userguide.pdf index 5babfec81..79d4d1845 100644 Binary files a/LDL/Doc/ldl_userguide.pdf and b/LDL/Doc/ldl_userguide.pdf differ diff --git a/LDL/Doc/ldl_version.tex b/LDL/Doc/ldl_version.tex index 23044db3d..70dbc23fa 100644 --- a/LDL/Doc/ldl_version.tex +++ b/LDL/Doc/ldl_version.tex @@ -1,2 +1,2 @@ % version of SuiteSparse/LDL -\date{VERSION 3.2.0, Sept 8, 2023} +\date{VERSION 3.2.1, Sept 18, 2023} diff --git a/LDL/Include/ldl.h b/LDL/Include/ldl.h index 913a2d375..59ab45a0b 100644 --- a/LDL/Include/ldl.h +++ b/LDL/Include/ldl.h @@ -106,10 +106,10 @@ int64_t ldl_l_valid_matrix ( int64_t n, int64_t Ap [ ], int64_t Ai [ ]) ; /* === LDL version ========================================================== */ /* ========================================================================== */ -#define LDL_DATE "Sept 8, 2023" +#define LDL_DATE "Sept 18, 2023" #define LDL_MAIN_VERSION 3 #define LDL_SUB_VERSION 2 -#define LDL_SUBSUB_VERSION 0 +#define LDL_SUBSUB_VERSION 1 #define LDL_VERSION_CODE(main,sub) ((main) * 1000 + (sub)) #define LDL_VERSION LDL_VERSION_CODE(LDL_MAIN_VERSION,LDL_SUB_VERSION) diff --git a/Mongoose/CMakeLists.txt b/Mongoose/CMakeLists.txt index 6921f1b2a..3572a8b49 100644 --- a/Mongoose/CMakeLists.txt +++ b/Mongoose/CMakeLists.txt @@ -43,11 +43,11 @@ include ( SuiteSparsePolicy ) #------------------------------------------------------------------------------- -set(Mongoose_DATE "Sept 8, 2023") -set(Mongoose_NUMERIC_DATE "2023-09-08") +set(Mongoose_DATE "Sept 18, 2023") +set(Mongoose_NUMERIC_DATE "2023-09-18") set(Mongoose_VERSION_MAJOR 3) set(Mongoose_VERSION_MINOR 2) -set(Mongoose_VERSION_PATCH 0) +set(Mongoose_VERSION_PATCH 1) project(Mongoose VERSION "${Mongoose_VERSION_MAJOR}.${Mongoose_VERSION_MINOR}.${Mongoose_VERSION_PATCH}" @@ -247,6 +247,11 @@ if ( NSTATIC ) else ( ) target_link_libraries ( mongoose_exe Mongoose_static ) endif ( ) +if ( TARGET SuiteSparse::SuiteSparseConfig_static ) + target_link_libraries ( mongoose_exe SuiteSparse::SuiteSparseConfig_static ) +else ( ) + target_link_libraries ( mongoose_exe SuiteSparse::SuiteSparseConfig ) +endif ( ) # Build the Demo executable add_executable ( demo_exe ${DEMO_FILES} ) @@ -257,26 +262,36 @@ if ( NSTATIC ) else ( ) target_link_libraries ( demo_exe Mongoose_static ) endif ( ) +if ( TARGET SuiteSparse::SuiteSparseConfig_static ) + target_link_libraries ( demo_exe SuiteSparse::SuiteSparseConfig_static ) +else ( ) + target_link_libraries ( demo_exe SuiteSparse::SuiteSparseConfig ) +endif ( ) # Coverage and Unit Testing Setup enable_testing() set(TESTING_OUTPUT_PATH ${CMAKE_BINARY_DIR}/tests) # I/O Tests -add_executable(mongoose_test_io +add_executable ( mongoose_test_io Tests/Mongoose_Test_IO.cpp - Tests/Mongoose_Test_IO_exe.cpp) + Tests/Mongoose_Test_IO_exe.cpp ) target_link_libraries ( mongoose_test_io Mongoose_static_dbg ) -set_target_properties(mongoose_test_io PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${TESTING_OUTPUT_PATH}) +if ( TARGET SuiteSparse::SuiteSparseConfig_static ) + target_link_libraries ( mongoose_test_io SuiteSparse::SuiteSparseConfig_static ) +else ( ) + target_link_libraries ( mongoose_test_io SuiteSparse::SuiteSparseConfig ) +endif ( ) +set_target_properties ( mongoose_test_io PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${TESTING_OUTPUT_PATH} ) add_test(IO_Test ./runTests -min 1 -max 15 -t io -k) # Edge Separator Tests -add_executable(mongoose_test_edgesep +add_executable ( mongoose_test_edgesep Tests/Mongoose_Test_EdgeSeparator.cpp Tests/Mongoose_Test_EdgeSeparator_exe.cpp) target_link_libraries ( mongoose_test_edgesep Mongoose_static_dbg ) -set_target_properties(mongoose_test_edgesep PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${TESTING_OUTPUT_PATH}) +set_target_properties ( mongoose_test_edgesep PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${TESTING_OUTPUT_PATH} ) add_test(Edge_Separator_Test ./runTests -min 1 -max 15 -t edgesep) add_test(Edge_Separator_Test_2 ./runTests -t edgesep -i 21 39 191 1557 1562 353 2468 1470 1380 505 182 201 2331 760 1389 2401 2420 242 250 1530 1533 360 1437) @@ -284,56 +299,66 @@ add_test(Weighted_Edge_Separator_Test ./runTests -t edgesep -i 2624) add_test(Target_Split_Test ./runTests -min 1 -max 15 -t edgesep -s 0.3) # Memory Tests -add_executable(mongoose_test_memory +add_executable ( mongoose_test_memory Tests/Mongoose_Test_Memory.cpp Tests/Mongoose_Test_Memory_exe.cpp) target_link_libraries ( mongoose_test_memory Mongoose_static_dbg ) -set_target_properties(mongoose_test_memory PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${TESTING_OUTPUT_PATH}) +set_target_properties ( mongoose_test_memory PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${TESTING_OUTPUT_PATH} ) add_test(Memory_Test ./runTests -min 1 -max 15 -t memory) # Performance Test -add_executable(mongoose_test_performance +add_executable ( mongoose_test_performance Tests/Mongoose_Test_Performance.cpp - Tests/Mongoose_Test_Performance_exe.cpp) + Tests/Mongoose_Test_Performance_exe.cpp ) if ( NSTATIC ) target_link_libraries ( mongoose_test_performance Mongoose ) else ( ) target_link_libraries ( mongoose_test_performance Mongoose_static ) endif ( ) -set_target_properties(mongoose_test_performance PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${TESTING_OUTPUT_PATH}) +if ( TARGET SuiteSparse::SuiteSparseConfig_static ) + target_link_libraries ( mongoose_test_performance SuiteSparse::SuiteSparseConfig_static ) +else ( ) + target_link_libraries ( mongoose_test_performance SuiteSparse::SuiteSparseConfig ) +endif ( ) +set_target_properties ( mongoose_test_performance PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${TESTING_OUTPUT_PATH} ) add_test(Performance_Test ./runTests -min 1 -max 15 -t performance -p) add_test(Performance_Test_2 ./runTests -t performance -i 21 39 1557 1562 353 2468 1470 1380 505 182 201 2331 760 1389 2401 2420 242 250 1530 1533 -p) # Reference Test -add_executable(mongoose_test_reference +add_executable ( mongoose_test_reference Tests/Mongoose_Test_Reference.cpp - Tests/Mongoose_Test_Reference_exe.cpp) + Tests/Mongoose_Test_Reference_exe.cpp ) if ( NSTATIC ) target_link_libraries ( mongoose_test_reference Mongoose ) else ( ) target_link_libraries ( mongoose_test_reference Mongoose_static ) endif ( ) -set_target_properties(mongoose_test_reference PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${TESTING_OUTPUT_PATH}) +if ( TARGET SuiteSparse::SuiteSparseConfig_static ) + target_link_libraries ( mongoose_test_reference SuiteSparse::SuiteSparseConfig_static ) +else ( ) + target_link_libraries ( mongoose_test_reference SuiteSparse::SuiteSparseConfig ) +endif ( ) +set_target_properties ( mongoose_test_reference PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${TESTING_OUTPUT_PATH} ) # Unit Tests -add_executable(mongoose_unit_test_io +add_executable ( mongoose_unit_test_io Tests/Mongoose_UnitTest_IO_exe.cpp) target_link_libraries ( mongoose_unit_test_io Mongoose_static_dbg ) -set_target_properties(mongoose_unit_test_io PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${TESTING_OUTPUT_PATH}) -add_test(Unit_Test_IO ./tests/mongoose_unit_test_io) +set_target_properties ( mongoose_unit_test_io PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${TESTING_OUTPUT_PATH} ) +add_test ( Unit_Test_IO ./tests/mongoose_unit_test_io ) -add_executable(mongoose_unit_test_graph - Tests/Mongoose_UnitTest_Graph_exe.cpp) +add_executable ( mongoose_unit_test_graph + Tests/Mongoose_UnitTest_Graph_exe.cpp ) target_link_libraries ( mongoose_unit_test_graph Mongoose_static_dbg ) -set_target_properties(mongoose_unit_test_graph PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${TESTING_OUTPUT_PATH}) -add_test(Unit_Test_Graph ./tests/mongoose_unit_test_graph) +set_target_properties ( mongoose_unit_test_graph PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${TESTING_OUTPUT_PATH} ) +add_test ( Unit_Test_Graph ./tests/mongoose_unit_test_graph ) -add_executable(mongoose_unit_test_edgesep +add_executable ( mongoose_unit_test_edgesep Tests/Mongoose_UnitTest_EdgeSep_exe.cpp) target_link_libraries ( mongoose_unit_test_edgesep Mongoose_static_dbg ) -set_target_properties(mongoose_unit_test_edgesep PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${TESTING_OUTPUT_PATH}) -add_test(Unit_Test_EdgeSep ./tests/mongoose_unit_test_edgesep) +set_target_properties ( mongoose_unit_test_edgesep PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${TESTING_OUTPUT_PATH} ) +add_test ( Unit_Test_EdgeSep ./tests/mongoose_unit_test_edgesep ) if ( $ENV{MONGOOSE_COVERAGE} ) set ( COV on ) diff --git a/Mongoose/Config/MongooseConfig.cmake.in b/Mongoose/Config/MongooseConfig.cmake.in index 84089876e..ed18cf143 100644 --- a/Mongoose/Config/MongooseConfig.cmake.in +++ b/Mongoose/Config/MongooseConfig.cmake.in @@ -60,7 +60,7 @@ if ( TARGET ${_target_static} ) endif ( ) # Check for most common build types -set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" ) +set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" "None" ) get_property ( _isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG ) if ( _isMultiConfig ) diff --git a/Mongoose/Doc/ChangeLog b/Mongoose/Doc/ChangeLog index a15f7efd3..335800ccc 100644 --- a/Mongoose/Doc/ChangeLog +++ b/Mongoose/Doc/ChangeLog @@ -1,3 +1,9 @@ +Sept 18, 2023: version 3.2.1 + + * cmake update: add "None" build type, from Antonio Rojas, for Arch Linux + * cmake updates: link executables to SuiteSparse_config that depend on it; + by Markus Muetzel + Sept 8, 2023: version 3.2.0 * cmake updates: SuiteSparse:: namespace by Markus Muetzel diff --git a/Mongoose/Doc/Mongoose_UserGuide.pdf b/Mongoose/Doc/Mongoose_UserGuide.pdf index 38ac224a1..62dfa79e1 100644 Binary files a/Mongoose/Doc/Mongoose_UserGuide.pdf and b/Mongoose/Doc/Mongoose_UserGuide.pdf differ diff --git a/Mongoose/Doc/title-info.tex b/Mongoose/Doc/title-info.tex index 071ffb6e5..f10e44229 100644 --- a/Mongoose/Doc/title-info.tex +++ b/Mongoose/Doc/title-info.tex @@ -1,3 +1,3 @@ -\title{Mongoose User Guide, Version 3.2.0} +\title{Mongoose User Guide, Version 3.2.1} \author{Scott Kolodziej, Nuri Yeralan, Tim Davis, William W. Hager} -\date{Sept 8, 2023} +\date{Sept 18, 2023} diff --git a/Mongoose/Include/Mongoose.hpp b/Mongoose/Include/Mongoose.hpp index 286065378..5a921bf53 100644 --- a/Mongoose/Include/Mongoose.hpp +++ b/Mongoose/Include/Mongoose.hpp @@ -20,8 +20,8 @@ // Configuration information from CMake #define Mongoose_VERSION_MAJOR 3 #define Mongoose_VERSION_MINOR 2 -#define Mongoose_VERSION_PATCH 0 -#define Mongoose_DATE "Sept 8, 2023" +#define Mongoose_VERSION_PATCH 1 +#define Mongoose_DATE "Sept 18, 2023" namespace Mongoose { diff --git a/Mongoose/codemeta.json b/Mongoose/codemeta.json index e263981b1..e92b9fe1c 100644 --- a/Mongoose/codemeta.json +++ b/Mongoose/codemeta.json @@ -7,8 +7,8 @@ "codeRepository": "https://github.com/ScottKolo/Mongoose", "issueTracker": "https://github.com/ScottKolo/Mongoose/issues", "license": "https://spdx.org/licenses/GPL-3.0-only.html", - "version": "3.2.0", - "softwareVersion": "3.2.0", + "version": "3.2.1", + "softwareVersion": "3.2.1", "author": [ { "@type": "Person", @@ -47,7 +47,7 @@ }, "contIntegration": "https://travis-ci.com/ScottKolo/Mongoose", "developmentStatus": "active", - "downloadUrl": "https://github.com/ScottKolo/Mongoose/archive/v3.2.0.zip", + "downloadUrl": "https://github.com/ScottKolo/Mongoose/archive/v3.2.1.zip", "funding":"Office of Naval Research grant N00014-11-1-0068", "funding":"Office of Naval Research grant N00014-15-1-2048", "funding":"Office of Naval Research grant N00014-18-1-2100", @@ -66,7 +66,7 @@ ], "dateCreated":"2018-04-09", "datePublished":"2018-05-25", - "dateModified":"2023-09-08", + "dateModified":"2023-09-18", "programmingLanguage": "C++", "programmingLanguage": "MATLAB" } diff --git a/RBio/CMakeLists.txt b/RBio/CMakeLists.txt index f82f62f96..e1db8b3e0 100644 --- a/RBio/CMakeLists.txt +++ b/RBio/CMakeLists.txt @@ -11,10 +11,10 @@ cmake_minimum_required ( VERSION 3.20 ) -set ( RBIO_DATE "Sept 8, 2023" ) +set ( RBIO_DATE "Sept 18, 2023" ) set ( RBIO_VERSION_MAJOR 4 ) set ( RBIO_VERSION_MINOR 2 ) -set ( RBIO_VERSION_SUB 0 ) +set ( RBIO_VERSION_SUB 1 ) message ( STATUS "Building RBIO version: v" ${RBIO_VERSION_MAJOR}. diff --git a/RBio/Config/RBioConfig.cmake.in b/RBio/Config/RBioConfig.cmake.in index 2d0f259e0..a5daa8bc0 100644 --- a/RBio/Config/RBioConfig.cmake.in +++ b/RBio/Config/RBioConfig.cmake.in @@ -60,7 +60,7 @@ if ( TARGET ${_target_static} ) endif ( ) # Check for most common build types -set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" ) +set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" "None" ) get_property ( _isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG ) if ( _isMultiConfig ) diff --git a/RBio/Demo/RBdemo.out b/RBio/Demo/RBdemo.out index 40592c9f1..5683bd138 100644 --- a/RBio/Demo/RBdemo.out +++ b/RBio/Demo/RBdemo.out @@ -1,5 +1,5 @@ ( cd build && cmake .. && cmake --build . --config Release -j8 ) --- Building RBIO version: v4.2.0 (Sept 8, 2023) +-- Building RBIO version: v4.2.1 (Sept 18, 2023) -- Source: /home/faculty/d/davis/dev2/SuiteSparse/RBio -- Build: /home/faculty/d/davis/dev2/SuiteSparse/RBio/build -- Install lib: /home/faculty/d/davis/dev2/SuiteSparse/lib @@ -10,9 +10,9 @@ -- Build type: Release -- Fortran: /usr/bin/f95 -- CUDA: not enabled --- SuiteSparse_config version: 7.2.0 +-- SuiteSparse_config version: 7.2.1 -- SuiteSparse_config include: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config --- SuiteSparse_config library: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config/build/libsuitesparseconfig.so.7.2.0 +-- SuiteSparse_config library: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config/build/libsuitesparseconfig.so.7.2.1 -- SuiteSparse_config static: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config/build/libsuitesparseconfig.a -- Also compiling the demos in RBio/Demo -- ------------------------------------------------------------------------ @@ -41,7 +41,7 @@ gmake[1]: Entering directory '/home/faculty/d/davis/dev2/SuiteSparse/RBio/build' [100%] Built target RBdemo gmake[1]: Leaving directory '/home/faculty/d/davis/dev2/SuiteSparse/RBio/build' ( cd build && cmake -DDEMO=1 .. && cmake --build . --config Release -j8 ) --- Building RBIO version: v4.2.0 (Sept 8, 2023) +-- Building RBIO version: v4.2.1 (Sept 18, 2023) -- Source: /home/faculty/d/davis/dev2/SuiteSparse/RBio -- Build: /home/faculty/d/davis/dev2/SuiteSparse/RBio/build -- Install lib: /home/faculty/d/davis/dev2/SuiteSparse/lib @@ -52,9 +52,9 @@ gmake[1]: Leaving directory '/home/faculty/d/davis/dev2/SuiteSparse/RBio/build' -- Build type: Release -- Fortran: /usr/bin/f95 -- CUDA: not enabled --- SuiteSparse_config version: 7.2.0 +-- SuiteSparse_config version: 7.2.1 -- SuiteSparse_config include: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config --- SuiteSparse_config library: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config/build/libsuitesparseconfig.so.7.2.0 +-- SuiteSparse_config library: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config/build/libsuitesparseconfig.so.7.2.1 -- SuiteSparse_config static: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config/build/libsuitesparseconfig.a -- Also compiling the demos in RBio/Demo -- ------------------------------------------------------------------------ diff --git a/RBio/Doc/ChangeLog b/RBio/Doc/ChangeLog index 68bc216a9..615dfd74f 100644 --- a/RBio/Doc/ChangeLog +++ b/RBio/Doc/ChangeLog @@ -1,3 +1,7 @@ +Sept 18, 2023: version 4.2.1 + + * cmake update: add "None" build type, from Antonio Rojas, for Arch Linux + Sept 8, 2023: version 4.2.0 * cmake updates: SuiteSparse:: namespace by Markus Muetzel diff --git a/RBio/Include/RBio.h b/RBio/Include/RBio.h index 542b506ad..f14918ba2 100644 --- a/RBio/Include/RBio.h +++ b/RBio/Include/RBio.h @@ -79,10 +79,10 @@ extern "C" { #define RBIO_VALUE_IOERROR (-94) /* I/O error: numerical values */ #define RBIO_FILE_IOERROR (-95) /* I/O error: cannot read/write the file */ -#define RBIO_DATE "Sept 8, 2023" +#define RBIO_DATE "Sept 18, 2023" #define RBIO_MAIN_VERSION 4 #define RBIO_SUB_VERSION 2 -#define RBIO_SUBSUB_VERSION 0 +#define RBIO_SUBSUB_VERSION 1 #define RBIO_VER_CODE(main,sub) ((main) * 1000 + (sub)) #define RBIO_VERSION RBIO_VER_CODE(RBIO_MAIN_VERSION,RBIO_SUB_VERSION) diff --git a/README.md b/README.md index 06a717a2f..76b8a4d26 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ SuiteSparse: A Suite of Sparse matrix packages at http://suitesparse.com ----------------------------------------------------------------------------- -Sept 8, 2023, SuiteSparse VERSION 7.2.0 +Oct 7, 2023, SuiteSparse VERSION 7.2.1 SuiteSparse is a set of sparse-matrix-related packages written or co-authored by Tim Davis, available at https://github.com/DrTimothyAldenDavis/SuiteSparse . diff --git a/SPEX/CMakeLists.txt b/SPEX/CMakeLists.txt index ddc57bc21..1035e966d 100644 --- a/SPEX/CMakeLists.txt +++ b/SPEX/CMakeLists.txt @@ -12,10 +12,10 @@ cmake_minimum_required ( VERSION 3.20 ) -set ( SPEX_DATE "Sept 8, 2023" ) +set ( SPEX_DATE "Sept 18, 2023" ) set ( SPEX_VERSION_MAJOR 2 ) set ( SPEX_VERSION_MINOR 2 ) -set ( SPEX_VERSION_SUB 0 ) +set ( SPEX_VERSION_SUB 1 ) message ( STATUS "Building SPEX version: v" ${SPEX_VERSION_MAJOR}. diff --git a/SPEX/Config/SPEXConfig.cmake.in b/SPEX/Config/SPEXConfig.cmake.in index 0b4d92267..83306b22f 100644 --- a/SPEX/Config/SPEXConfig.cmake.in +++ b/SPEX/Config/SPEXConfig.cmake.in @@ -60,7 +60,7 @@ if ( TARGET ${_target_static} ) endif ( ) # Check for most common build types -set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" ) +set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" "None" ) get_property ( _isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG ) if ( _isMultiConfig ) diff --git a/SPEX/Doc/ChangeLog b/SPEX/Doc/ChangeLog index 85e590747..f7a0185d7 100644 --- a/SPEX/Doc/ChangeLog +++ b/SPEX/Doc/ChangeLog @@ -1,3 +1,7 @@ +Sept 18, 2023: version 2.2.1 + + * cmake update: add "None" build type, from Antonio Rojas, for Arch Linux + Sept 8, 2023: version 2.2.0 * cmake updates: SuiteSparse:: namespace by Markus Muetzel diff --git a/SPEX/Doc/SPEX_UserGuide.pdf b/SPEX/Doc/SPEX_UserGuide.pdf index b353b9b50..33bb1ae09 100644 Binary files a/SPEX/Doc/SPEX_UserGuide.pdf and b/SPEX/Doc/SPEX_UserGuide.pdf differ diff --git a/SPEX/Doc/SPEX_version.tex b/SPEX/Doc/SPEX_version.tex index 08050661e..b41aa5c65 100644 --- a/SPEX/Doc/SPEX_version.tex +++ b/SPEX/Doc/SPEX_version.tex @@ -1,2 +1,2 @@ % version of SuiteSparse/SPEX -VERSION 2.2.0, Sept 8, 2023 +VERSION 2.2.1, Sept 18, 2023 diff --git a/SPEX/Include/SPEX.h b/SPEX/Include/SPEX.h index 5cdd829d3..51b50cf0a 100644 --- a/SPEX/Include/SPEX.h +++ b/SPEX/Include/SPEX.h @@ -265,11 +265,11 @@ // #define SPEX_UTIL_VERSION_MINOR 1 // #define SPEX_UTIL_VERSION_SUB 1 -#define SPEX_DATE "Sept 8, 2023" -#define SPEX_VERSION "2.2.0" +#define SPEX_DATE "Sept 18, 2023" +#define SPEX_VERSION "2.2.1" #define SPEX_VERSION_MAJOR 2 #define SPEX_VERSION_MINOR 2 -#define SPEX_VERSION_SUB 0 +#define SPEX_VERSION_SUB 1 #if defined ( __cplusplus ) extern "C" diff --git a/SPQR/CMakeLists.txt b/SPQR/CMakeLists.txt index 2b4ee0812..cb88165ba 100644 --- a/SPQR/CMakeLists.txt +++ b/SPQR/CMakeLists.txt @@ -13,10 +13,10 @@ # cmake 3.22 is required to find the BLAS in SuiteSparsePolicy.cmake cmake_minimum_required ( VERSION 3.22 ) -set ( SPQR_DATE "Sept 8, 2023" ) +set ( SPQR_DATE "Sept 18, 2023" ) set ( SPQR_VERSION_MAJOR 4 ) set ( SPQR_VERSION_MINOR 2 ) -set ( SPQR_VERSION_SUB 0 ) +set ( SPQR_VERSION_SUB 1 ) message ( STATUS "Building SPQR version: v" ${SPQR_VERSION_MAJOR}. diff --git a/SPQR/Config/SPQRConfig.cmake.in b/SPQR/Config/SPQRConfig.cmake.in index 195ab3d1b..fa430d048 100644 --- a/SPQR/Config/SPQRConfig.cmake.in +++ b/SPQR/Config/SPQRConfig.cmake.in @@ -91,7 +91,7 @@ if ( TARGET ${_target_static} ) endif ( ) # Check for most common build types -set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" ) +set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" "None" ) get_property ( _isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG ) if ( _isMultiConfig ) diff --git a/SPQR/Config/SPQR_CUDAConfig.cmake.in b/SPQR/Config/SPQR_CUDAConfig.cmake.in index 108ee3b9e..83297a234 100644 --- a/SPQR/Config/SPQR_CUDAConfig.cmake.in +++ b/SPQR/Config/SPQR_CUDAConfig.cmake.in @@ -77,7 +77,7 @@ if ( TARGET ${_target_static} ) endif ( ) # Check for most common build types -set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" ) +set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" "None" ) get_property ( _isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG ) if ( _isMultiConfig ) diff --git a/SPQR/Demo/spqr_demo.out b/SPQR/Demo/spqr_demo.out index 4666a30b2..4576231b1 100644 --- a/SPQR/Demo/spqr_demo.out +++ b/SPQR/Demo/spqr_demo.out @@ -1,5 +1,5 @@ ( cd build && cmake .. && cmake --build . --config Release -j8 ) --- Building SPQR version: v4.2.0 (Sept 8, 2023) +-- Building SPQR version: v4.2.1 (Sept 18, 2023) -- Source: /home/faculty/d/davis/dev2/SuiteSparse/SPQR -- Build: /home/faculty/d/davis/dev2/SuiteSparse/SPQR/build -- Install lib: /home/faculty/d/davis/dev2/SuiteSparse/lib @@ -16,48 +16,47 @@ -- CUDA toolkit include: /usr/local/cuda/include -- CUDA toolkit lib dir: /usr/local/cuda/lib64 -- CUDA: enabled --- SuiteSparse_config version: 7.2.0 +-- SuiteSparse_config version: 7.2.1 -- SuiteSparse_config include: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config --- SuiteSparse_config library: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config/build/libsuitesparseconfig.so.7.2.0 +-- SuiteSparse_config library: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config/build/libsuitesparseconfig.so.7.2.1 -- SuiteSparse_config static: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config/build/libsuitesparseconfig.a --- AMD version: 3.2.0 +-- AMD version: 3.2.1 -- AMD include: /home/faculty/d/davis/dev2/SuiteSparse/AMD/Include --- AMD library: /home/faculty/d/davis/dev2/SuiteSparse/AMD/build/libamd.so.3.2.0 +-- AMD library: /home/faculty/d/davis/dev2/SuiteSparse/AMD/build/libamd.so.3.2.1 -- AMD static: /home/faculty/d/davis/dev2/SuiteSparse/AMD/build/libamd.a --- COLAMD version: 3.2.0 +-- COLAMD version: 3.2.1 -- COLAMD include: /home/faculty/d/davis/dev2/SuiteSparse/COLAMD/Include --- COLAMD library: /home/faculty/d/davis/dev2/SuiteSparse/COLAMD/build/libcolamd.so.3.2.0 +-- COLAMD library: /home/faculty/d/davis/dev2/SuiteSparse/COLAMD/build/libcolamd.so.3.2.1 -- COLAMD static: /home/faculty/d/davis/dev2/SuiteSparse/COLAMD/build/libcolamd.a --- Found CUDAToolkit: /usr/local/cuda/include (found suitable version "11.7.99", minimum required is "11") --- CHOLMOD_CUDA version: 4.2.0 --- CHOLMOD_CUDA library: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/GPU/libcholmod_cuda.so.4.2.0 +-- CHOLMOD_CUDA version: 4.2.1 +-- CHOLMOD_CUDA library: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/GPU/libcholmod_cuda.so.4.2.1 -- CHOLMOD_CUDA static: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/GPU/libcholmod_cuda.a --- CHOLMOD version: 4.2.0 +-- CHOLMOD version: 4.2.1 -- CHOLMOD include: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/Include --- CHOLMOD library: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/libcholmod.so.4.2.0 +-- CHOLMOD library: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/libcholmod.so.4.2.1 -- CHOLMOD static: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/libcholmod.a --- CAMD version: 3.2.0 +-- CAMD version: 3.2.1 -- CAMD include: /home/faculty/d/davis/dev2/SuiteSparse/CAMD/Include --- CAMD library: /home/faculty/d/davis/dev2/SuiteSparse/CAMD/build/libcamd.so.3.2.0 +-- CAMD library: /home/faculty/d/davis/dev2/SuiteSparse/CAMD/build/libcamd.so.3.2.1 -- CAMD static: /home/faculty/d/davis/dev2/SuiteSparse/CAMD/build/libcamd.a --- CCOLAMD version: 3.2.0 +-- CCOLAMD version: 3.2.1 -- CCOLAMD include: /home/faculty/d/davis/dev2/SuiteSparse/CCOLAMD/Include --- CCOLAMD library: /home/faculty/d/davis/dev2/SuiteSparse/CCOLAMD/build/libccolamd.so.3.2.0 +-- CCOLAMD library: /home/faculty/d/davis/dev2/SuiteSparse/CCOLAMD/build/libccolamd.so.3.2.1 -- CCOLAMD static: /home/faculty/d/davis/dev2/SuiteSparse/CCOLAMD/build/libccolamd.a --- SuiteSparse_GPURuntime version: 3.2.0 +-- SuiteSparse_GPURuntime version: 3.2.1 -- SuiteSparse_GPURuntime include: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_GPURuntime/Include --- SuiteSparse_GPURuntime library: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_GPURuntime/build/libsuitesparse_gpuruntime.so.3.2.0 +-- SuiteSparse_GPURuntime library: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_GPURuntime/build/libsuitesparse_gpuruntime.so.3.2.1 -- SuiteSparse_GPURuntime static: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_GPURuntime/build/libsuitesparse_gpuruntime.a --- GPUQREngine version: 3.2.0 +-- GPUQREngine version: 3.2.1 -- GPUQREngine include: /home/faculty/d/davis/dev2/SuiteSparse/GPUQREngine/Include --- GPUQREngine library: /home/faculty/d/davis/dev2/SuiteSparse/GPUQREngine/build/libgpuqrengine.so.3.2.0 +-- GPUQREngine library: /home/faculty/d/davis/dev2/SuiteSparse/GPUQREngine/build/libgpuqrengine.so.3.2.1 -- GPUQREngine static: /home/faculty/d/davis/dev2/SuiteSparse/GPUQREngine/build/libgpuqrengine.a --- CHOLMOD_CUDA version: 4.2.0 --- CHOLMOD_CUDA library: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/GPU/libcholmod_cuda.so.4.2.0 +-- CHOLMOD_CUDA version: 4.2.1 +-- CHOLMOD_CUDA library: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/GPU/libcholmod_cuda.so.4.2.1 -- CHOLMOD_CUDA static: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/GPU/libcholmod_cuda.a -- Looking for Intel 32-bit BLAS -- Found Intel10_64lp 32-bit BLAS --- Building SPQR_CUDA version: v4.2.0 (Sept 8, 2023) +-- Building SPQR_CUDA version: v4.2.1 (Sept 18, 2023) -- Source: /home/faculty/d/davis/dev2/SuiteSparse/SPQR -- Build: /home/faculty/d/davis/dev2/SuiteSparse/SPQR/build -- Install lib: /home/faculty/d/davis/dev2/SuiteSparse/lib @@ -69,7 +68,6 @@ -- Fortran: /usr/bin/f95 -- Looking for CUDA -- Find CUDA tool kit: --- Found CUDAToolkit: /usr/local/cuda/include (found version "11.7.99") -- CUDA toolkit found: TRUE -- CUDA toolkit version: 11.7.99 -- CUDA toolkit include: /usr/local/cuda/include @@ -102,27 +100,27 @@ -- BLAS integer: int32_t -- CUDA architectures: 52;75;80 -- ------------------------------------------------------------------------ --- Configuring done (0.6s) +-- Configuring done (0.5s) -- Generating done (0.1s) -- Build files have been written to: /home/faculty/d/davis/dev2/SuiteSparse/SPQR/build gmake[1]: Entering directory '/home/faculty/d/davis/dev2/SuiteSparse/SPQR/build' -[ 3%] Built target SPQR_CUDA -[ 7%] Built target SPQR_CUDA_static -[ 44%] Built target SPQR -[ 82%] Built target SPQR_static -[ 84%] Built target qrsimple -[ 86%] Built target qrdemoc_int32 -[ 88%] Built target qrdemo -[ 90%] Built target qrdemoc -[ 91%] Built target qrsimplec_int32 -[ 93%] Built target qrsimplec -[ 95%] Built target qrdemo_int32 +[ 4%] Built target SPQR_CUDA_static +[ 7%] Built target SPQR_CUDA +[ 45%] Built target SPQR_static +[ 82%] Built target SPQR +[ 83%] Built target qrdemoc +[ 85%] Built target qrdemo +[ 87%] Built target qrsimplec +[ 89%] Built target qrdemoc_int32 +[ 91%] Built target qrdemo_int32 +[ 93%] Built target qrsimple +[ 95%] Built target qrsimplec_int32 [ 96%] Built target qrdemo_gpu -[ 98%] Built target qrdemo_gpu3 -[100%] Built target qrdemo_gpu2 +[ 98%] Built target qrdemo_gpu2 +[100%] Built target qrdemo_gpu3 gmake[1]: Leaving directory '/home/faculty/d/davis/dev2/SuiteSparse/SPQR/build' ( cd build && cmake -DDEMO=1 .. && cmake --build . --config Release -j8 ) --- Building SPQR version: v4.2.0 (Sept 8, 2023) +-- Building SPQR version: v4.2.1 (Sept 18, 2023) -- Source: /home/faculty/d/davis/dev2/SuiteSparse/SPQR -- Build: /home/faculty/d/davis/dev2/SuiteSparse/SPQR/build -- Install lib: /home/faculty/d/davis/dev2/SuiteSparse/lib @@ -139,48 +137,47 @@ gmake[1]: Leaving directory '/home/faculty/d/davis/dev2/SuiteSparse/SPQR/build' -- CUDA toolkit include: /usr/local/cuda/include -- CUDA toolkit lib dir: /usr/local/cuda/lib64 -- CUDA: enabled --- SuiteSparse_config version: 7.2.0 +-- SuiteSparse_config version: 7.2.1 -- SuiteSparse_config include: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config --- SuiteSparse_config library: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config/build/libsuitesparseconfig.so.7.2.0 +-- SuiteSparse_config library: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config/build/libsuitesparseconfig.so.7.2.1 -- SuiteSparse_config static: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config/build/libsuitesparseconfig.a --- AMD version: 3.2.0 +-- AMD version: 3.2.1 -- AMD include: /home/faculty/d/davis/dev2/SuiteSparse/AMD/Include --- AMD library: /home/faculty/d/davis/dev2/SuiteSparse/AMD/build/libamd.so.3.2.0 +-- AMD library: /home/faculty/d/davis/dev2/SuiteSparse/AMD/build/libamd.so.3.2.1 -- AMD static: /home/faculty/d/davis/dev2/SuiteSparse/AMD/build/libamd.a --- COLAMD version: 3.2.0 +-- COLAMD version: 3.2.1 -- COLAMD include: /home/faculty/d/davis/dev2/SuiteSparse/COLAMD/Include --- COLAMD library: /home/faculty/d/davis/dev2/SuiteSparse/COLAMD/build/libcolamd.so.3.2.0 +-- COLAMD library: /home/faculty/d/davis/dev2/SuiteSparse/COLAMD/build/libcolamd.so.3.2.1 -- COLAMD static: /home/faculty/d/davis/dev2/SuiteSparse/COLAMD/build/libcolamd.a --- Found CUDAToolkit: /usr/local/cuda/include (found suitable version "11.7.99", minimum required is "11") --- CHOLMOD_CUDA version: 4.2.0 --- CHOLMOD_CUDA library: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/GPU/libcholmod_cuda.so.4.2.0 +-- CHOLMOD_CUDA version: 4.2.1 +-- CHOLMOD_CUDA library: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/GPU/libcholmod_cuda.so.4.2.1 -- CHOLMOD_CUDA static: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/GPU/libcholmod_cuda.a --- CHOLMOD version: 4.2.0 +-- CHOLMOD version: 4.2.1 -- CHOLMOD include: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/Include --- CHOLMOD library: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/libcholmod.so.4.2.0 +-- CHOLMOD library: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/libcholmod.so.4.2.1 -- CHOLMOD static: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/libcholmod.a --- CAMD version: 3.2.0 +-- CAMD version: 3.2.1 -- CAMD include: /home/faculty/d/davis/dev2/SuiteSparse/CAMD/Include --- CAMD library: /home/faculty/d/davis/dev2/SuiteSparse/CAMD/build/libcamd.so.3.2.0 +-- CAMD library: /home/faculty/d/davis/dev2/SuiteSparse/CAMD/build/libcamd.so.3.2.1 -- CAMD static: /home/faculty/d/davis/dev2/SuiteSparse/CAMD/build/libcamd.a --- CCOLAMD version: 3.2.0 +-- CCOLAMD version: 3.2.1 -- CCOLAMD include: /home/faculty/d/davis/dev2/SuiteSparse/CCOLAMD/Include --- CCOLAMD library: /home/faculty/d/davis/dev2/SuiteSparse/CCOLAMD/build/libccolamd.so.3.2.0 +-- CCOLAMD library: /home/faculty/d/davis/dev2/SuiteSparse/CCOLAMD/build/libccolamd.so.3.2.1 -- CCOLAMD static: /home/faculty/d/davis/dev2/SuiteSparse/CCOLAMD/build/libccolamd.a --- SuiteSparse_GPURuntime version: 3.2.0 +-- SuiteSparse_GPURuntime version: 3.2.1 -- SuiteSparse_GPURuntime include: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_GPURuntime/Include --- SuiteSparse_GPURuntime library: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_GPURuntime/build/libsuitesparse_gpuruntime.so.3.2.0 +-- SuiteSparse_GPURuntime library: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_GPURuntime/build/libsuitesparse_gpuruntime.so.3.2.1 -- SuiteSparse_GPURuntime static: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_GPURuntime/build/libsuitesparse_gpuruntime.a --- GPUQREngine version: 3.2.0 +-- GPUQREngine version: 3.2.1 -- GPUQREngine include: /home/faculty/d/davis/dev2/SuiteSparse/GPUQREngine/Include --- GPUQREngine library: /home/faculty/d/davis/dev2/SuiteSparse/GPUQREngine/build/libgpuqrengine.so.3.2.0 +-- GPUQREngine library: /home/faculty/d/davis/dev2/SuiteSparse/GPUQREngine/build/libgpuqrengine.so.3.2.1 -- GPUQREngine static: /home/faculty/d/davis/dev2/SuiteSparse/GPUQREngine/build/libgpuqrengine.a --- CHOLMOD_CUDA version: 4.2.0 --- CHOLMOD_CUDA library: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/GPU/libcholmod_cuda.so.4.2.0 +-- CHOLMOD_CUDA version: 4.2.1 +-- CHOLMOD_CUDA library: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/GPU/libcholmod_cuda.so.4.2.1 -- CHOLMOD_CUDA static: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/GPU/libcholmod_cuda.a -- Looking for Intel 32-bit BLAS -- Found Intel10_64lp 32-bit BLAS --- Building SPQR_CUDA version: v4.2.0 (Sept 8, 2023) +-- Building SPQR_CUDA version: v4.2.1 (Sept 18, 2023) -- Source: /home/faculty/d/davis/dev2/SuiteSparse/SPQR -- Build: /home/faculty/d/davis/dev2/SuiteSparse/SPQR/build -- Install lib: /home/faculty/d/davis/dev2/SuiteSparse/lib @@ -192,7 +189,6 @@ gmake[1]: Leaving directory '/home/faculty/d/davis/dev2/SuiteSparse/SPQR/build' -- Fortran: /usr/bin/f95 -- Looking for CUDA -- Find CUDA tool kit: --- Found CUDAToolkit: /usr/local/cuda/include (found version "11.7.99") -- CUDA toolkit found: TRUE -- CUDA toolkit version: 11.7.99 -- CUDA toolkit include: /usr/local/cuda/include @@ -231,16 +227,16 @@ gmake[1]: Leaving directory '/home/faculty/d/davis/dev2/SuiteSparse/SPQR/build' gmake[1]: Entering directory '/home/faculty/d/davis/dev2/SuiteSparse/SPQR/build' [ 3%] Built target SPQR_CUDA [ 7%] Built target SPQR_CUDA_static -[ 45%] Built target SPQR_static -[ 82%] Built target SPQR -[ 83%] Built target qrdemoc -[ 85%] Built target qrsimplec -[ 87%] Built target qrsimplec_int32 -[ 89%] Built target qrsimple -[ 91%] Built target qrdemo -[ 92%] Built target qrdemo_gpu -[ 94%] Built target qrdemo_int32 -[ 96%] Built target qrdemoc_int32 +[ 44%] Built target SPQR +[ 82%] Built target SPQR_static +[ 84%] Built target qrsimple +[ 86%] Built target qrsimplec +[ 87%] Built target qrdemoc +[ 89%] Built target qrdemo_int32 +[ 92%] Built target qrsimplec_int32 +[ 93%] Built target qrdemoc_int32 +[ 95%] Built target qrdemo +[ 96%] Built target qrdemo_gpu [ 98%] Built target qrdemo_gpu2 [100%] Built target qrdemo_gpu3 gmake[1]: Leaving directory '/home/faculty/d/davis/dev2/SuiteSparse/SPQR/build' @@ -462,7 +458,7 @@ Matrix 841-by-841 nnz: 4089 residual: 1.8e-16 rank: 841 ./build/qrdemoc < Matrix/lp_e226_transposed.mtx Matrix 472-by-223 nnz: 2768 residual: 9.2e+00 rank: 223 ( cd build && cmake -DDEMO=1 .. && cmake --build . --config Release -j8 ) --- Building SPQR version: v4.2.0 (Sept 8, 2023) +-- Building SPQR version: v4.2.1 (Sept 18, 2023) -- Source: /home/faculty/d/davis/dev2/SuiteSparse/SPQR -- Build: /home/faculty/d/davis/dev2/SuiteSparse/SPQR/build -- Install lib: /home/faculty/d/davis/dev2/SuiteSparse/lib @@ -479,48 +475,47 @@ Matrix 472-by-223 nnz: 2768 residual: 9.2e+00 rank: 223 -- CUDA toolkit include: /usr/local/cuda/include -- CUDA toolkit lib dir: /usr/local/cuda/lib64 -- CUDA: enabled --- SuiteSparse_config version: 7.2.0 +-- SuiteSparse_config version: 7.2.1 -- SuiteSparse_config include: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config --- SuiteSparse_config library: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config/build/libsuitesparseconfig.so.7.2.0 +-- SuiteSparse_config library: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config/build/libsuitesparseconfig.so.7.2.1 -- SuiteSparse_config static: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_config/build/libsuitesparseconfig.a --- AMD version: 3.2.0 +-- AMD version: 3.2.1 -- AMD include: /home/faculty/d/davis/dev2/SuiteSparse/AMD/Include --- AMD library: /home/faculty/d/davis/dev2/SuiteSparse/AMD/build/libamd.so.3.2.0 +-- AMD library: /home/faculty/d/davis/dev2/SuiteSparse/AMD/build/libamd.so.3.2.1 -- AMD static: /home/faculty/d/davis/dev2/SuiteSparse/AMD/build/libamd.a --- COLAMD version: 3.2.0 +-- COLAMD version: 3.2.1 -- COLAMD include: /home/faculty/d/davis/dev2/SuiteSparse/COLAMD/Include --- COLAMD library: /home/faculty/d/davis/dev2/SuiteSparse/COLAMD/build/libcolamd.so.3.2.0 +-- COLAMD library: /home/faculty/d/davis/dev2/SuiteSparse/COLAMD/build/libcolamd.so.3.2.1 -- COLAMD static: /home/faculty/d/davis/dev2/SuiteSparse/COLAMD/build/libcolamd.a --- Found CUDAToolkit: /usr/local/cuda/include (found suitable version "11.7.99", minimum required is "11") --- CHOLMOD_CUDA version: 4.2.0 --- CHOLMOD_CUDA library: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/GPU/libcholmod_cuda.so.4.2.0 +-- CHOLMOD_CUDA version: 4.2.1 +-- CHOLMOD_CUDA library: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/GPU/libcholmod_cuda.so.4.2.1 -- CHOLMOD_CUDA static: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/GPU/libcholmod_cuda.a --- CHOLMOD version: 4.2.0 +-- CHOLMOD version: 4.2.1 -- CHOLMOD include: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/Include --- CHOLMOD library: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/libcholmod.so.4.2.0 +-- CHOLMOD library: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/libcholmod.so.4.2.1 -- CHOLMOD static: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/libcholmod.a --- CAMD version: 3.2.0 +-- CAMD version: 3.2.1 -- CAMD include: /home/faculty/d/davis/dev2/SuiteSparse/CAMD/Include --- CAMD library: /home/faculty/d/davis/dev2/SuiteSparse/CAMD/build/libcamd.so.3.2.0 +-- CAMD library: /home/faculty/d/davis/dev2/SuiteSparse/CAMD/build/libcamd.so.3.2.1 -- CAMD static: /home/faculty/d/davis/dev2/SuiteSparse/CAMD/build/libcamd.a --- CCOLAMD version: 3.2.0 +-- CCOLAMD version: 3.2.1 -- CCOLAMD include: /home/faculty/d/davis/dev2/SuiteSparse/CCOLAMD/Include --- CCOLAMD library: /home/faculty/d/davis/dev2/SuiteSparse/CCOLAMD/build/libccolamd.so.3.2.0 +-- CCOLAMD library: /home/faculty/d/davis/dev2/SuiteSparse/CCOLAMD/build/libccolamd.so.3.2.1 -- CCOLAMD static: /home/faculty/d/davis/dev2/SuiteSparse/CCOLAMD/build/libccolamd.a --- SuiteSparse_GPURuntime version: 3.2.0 +-- SuiteSparse_GPURuntime version: 3.2.1 -- SuiteSparse_GPURuntime include: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_GPURuntime/Include --- SuiteSparse_GPURuntime library: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_GPURuntime/build/libsuitesparse_gpuruntime.so.3.2.0 +-- SuiteSparse_GPURuntime library: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_GPURuntime/build/libsuitesparse_gpuruntime.so.3.2.1 -- SuiteSparse_GPURuntime static: /home/faculty/d/davis/dev2/SuiteSparse/SuiteSparse_GPURuntime/build/libsuitesparse_gpuruntime.a --- GPUQREngine version: 3.2.0 +-- GPUQREngine version: 3.2.1 -- GPUQREngine include: /home/faculty/d/davis/dev2/SuiteSparse/GPUQREngine/Include --- GPUQREngine library: /home/faculty/d/davis/dev2/SuiteSparse/GPUQREngine/build/libgpuqrengine.so.3.2.0 +-- GPUQREngine library: /home/faculty/d/davis/dev2/SuiteSparse/GPUQREngine/build/libgpuqrengine.so.3.2.1 -- GPUQREngine static: /home/faculty/d/davis/dev2/SuiteSparse/GPUQREngine/build/libgpuqrengine.a --- CHOLMOD_CUDA version: 4.2.0 --- CHOLMOD_CUDA library: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/GPU/libcholmod_cuda.so.4.2.0 +-- CHOLMOD_CUDA version: 4.2.1 +-- CHOLMOD_CUDA library: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/GPU/libcholmod_cuda.so.4.2.1 -- CHOLMOD_CUDA static: /home/faculty/d/davis/dev2/SuiteSparse/CHOLMOD/build/GPU/libcholmod_cuda.a -- Looking for Intel 32-bit BLAS -- Found Intel10_64lp 32-bit BLAS --- Building SPQR_CUDA version: v4.2.0 (Sept 8, 2023) +-- Building SPQR_CUDA version: v4.2.1 (Sept 18, 2023) -- Source: /home/faculty/d/davis/dev2/SuiteSparse/SPQR -- Build: /home/faculty/d/davis/dev2/SuiteSparse/SPQR/build -- Install lib: /home/faculty/d/davis/dev2/SuiteSparse/lib @@ -532,7 +527,6 @@ Matrix 472-by-223 nnz: 2768 residual: 9.2e+00 rank: 223 -- Fortran: /usr/bin/f95 -- Looking for CUDA -- Find CUDA tool kit: --- Found CUDAToolkit: /usr/local/cuda/include (found version "11.7.99") -- CUDA toolkit found: TRUE -- CUDA toolkit version: 11.7.99 -- CUDA toolkit include: /usr/local/cuda/include @@ -569,20 +563,20 @@ Matrix 472-by-223 nnz: 2768 residual: 9.2e+00 rank: 223 -- Generating done (0.1s) -- Build files have been written to: /home/faculty/d/davis/dev2/SuiteSparse/SPQR/build gmake[1]: Entering directory '/home/faculty/d/davis/dev2/SuiteSparse/SPQR/build' -[ 4%] Built target SPQR_CUDA_static -[ 7%] Built target SPQR_CUDA -[ 80%] Built target SPQR +[ 3%] Built target SPQR_CUDA +[ 7%] Built target SPQR_CUDA_static +[ 44%] Built target SPQR [ 82%] Built target SPQR_static -[ 83%] Built target qrdemoc -[ 85%] Built target qrsimple -[ 86%] Built target qrdemo_gpu -[ 88%] Built target qrsimplec -[ 90%] Built target qrsimplec_int32 -[ 92%] Built target qrdemo_int32 -[ 94%] Built target qrdemo -[ 96%] Built target qrdemoc_int32 -[ 98%] Built target qrdemo_gpu2 -[100%] Built target qrdemo_gpu3 +[ 84%] Built target qrsimplec +[ 87%] Built target qrsimplec_int32 +[ 87%] Built target qrdemoc +[ 91%] Built target qrdemo +[ 92%] Built target qrdemoc_int32 +[ 93%] Built target qrsimple +[ 95%] Built target qrdemo_int32 +[ 96%] Built target qrdemo_gpu +[ 98%] Built target qrdemo_gpu3 +[100%] Built target qrdemo_gpu2 gmake[1]: Leaving directory '/home/faculty/d/davis/dev2/SuiteSparse/SPQR/build' ./build/qrdemo_int32 < Matrix/a00.mtx Matrix 0-by-0 nnz: 0 diff --git a/SPQR/Doc/ChangeLog b/SPQR/Doc/ChangeLog index ae6891114..fe55a9fb5 100644 --- a/SPQR/Doc/ChangeLog +++ b/SPQR/Doc/ChangeLog @@ -1,3 +1,7 @@ +Sept 18, 2023: version 4.2.1 + + * cmake update: add "None" build type, from Antonio Rojas, for Arch Linux + Sept 8, 2023: version 4.2.0 * cmake updates: SuiteSparse:: namespace by Markus Muetzel diff --git a/SPQR/Doc/spqr_user_guide.pdf b/SPQR/Doc/spqr_user_guide.pdf index 407e5855e..77727f5ec 100644 Binary files a/SPQR/Doc/spqr_user_guide.pdf and b/SPQR/Doc/spqr_user_guide.pdf differ diff --git a/SPQR/Doc/spqr_version.tex b/SPQR/Doc/spqr_version.tex index a9068b56f..63a04a715 100644 --- a/SPQR/Doc/spqr_version.tex +++ b/SPQR/Doc/spqr_version.tex @@ -1,2 +1,2 @@ % version of SuiteSparse/SPQR -\date{VERSION 4.2.0, Sept 8, 2023} +\date{VERSION 4.2.1, Sept 18, 2023} diff --git a/SPQR/Include/SuiteSparseQR_definitions.h b/SPQR/Include/SuiteSparseQR_definitions.h index 442b04dad..0dce203a9 100644 --- a/SPQR/Include/SuiteSparseQR_definitions.h +++ b/SPQR/Include/SuiteSparseQR_definitions.h @@ -62,10 +62,10 @@ #endif */ -#define SPQR_DATE "Sept 8, 2023" +#define SPQR_DATE "Sept 18, 2023" #define SPQR_MAIN_VERSION 4 #define SPQR_SUB_VERSION 2 -#define SPQR_SUBSUB_VERSION 0 +#define SPQR_SUBSUB_VERSION 1 #define SPQR_VER_CODE(main,sub) ((main) * 1000 + (sub)) #define SPQR_VERSION SPQR_VER_CODE(SPQR_MAIN_VERSION,SPQR_SUB_VERSION) diff --git a/SuiteSparse_GPURuntime/CMakeLists.txt b/SuiteSparse_GPURuntime/CMakeLists.txt index 5e6e55c4c..807c30b95 100644 --- a/SuiteSparse_GPURuntime/CMakeLists.txt +++ b/SuiteSparse_GPURuntime/CMakeLists.txt @@ -12,10 +12,10 @@ cmake_minimum_required ( VERSION 3.20 ) -set ( SUITESPARSE_GPURUNTIME_DATE "Sept 8, 2023" ) +set ( SUITESPARSE_GPURUNTIME_DATE "Sept 18, 2023" ) set ( SUITESPARSE_GPURUNTIME_VERSION_MAJOR 3 ) set ( SUITESPARSE_GPURUNTIME_VERSION_MINOR 2 ) -set ( SUITESPARSE_GPURUNTIME_VERSION_SUB 0 ) +set ( SUITESPARSE_GPURUNTIME_VERSION_SUB 1 ) message ( STATUS "Building SUITESPARSE_GPURUNTIME version: v" ${SUITESPARSE_GPURUNTIME_VERSION_MAJOR}. diff --git a/SuiteSparse_GPURuntime/Config/SuiteSparse_GPURuntimeConfig.cmake.in b/SuiteSparse_GPURuntime/Config/SuiteSparse_GPURuntimeConfig.cmake.in index fa6234140..e3d60d0e4 100644 --- a/SuiteSparse_GPURuntime/Config/SuiteSparse_GPURuntimeConfig.cmake.in +++ b/SuiteSparse_GPURuntime/Config/SuiteSparse_GPURuntimeConfig.cmake.in @@ -60,7 +60,7 @@ if ( TARGET ${_target_static} ) endif ( ) # Check for most common build types -set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" ) +set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" "None" ) get_property ( _isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG ) if ( _isMultiConfig ) diff --git a/SuiteSparse_GPURuntime/Doc/ChangeLog b/SuiteSparse_GPURuntime/Doc/ChangeLog index ccda857d9..b0fb9bcf7 100644 --- a/SuiteSparse_GPURuntime/Doc/ChangeLog +++ b/SuiteSparse_GPURuntime/Doc/ChangeLog @@ -1,3 +1,7 @@ +Sept 18, 2023: version 3.2.1 + + * cmake update: add "None" build type, from Antonio Rojas, for Arch Linux + Sept 8, 2023: version 3.2.0 * cmake updates: SuiteSparse:: namespace by Markus Muetzel diff --git a/SuiteSparse_GPURuntime/Include/SuiteSparse_GPURuntime.hpp b/SuiteSparse_GPURuntime/Include/SuiteSparse_GPURuntime.hpp index 566664920..8af08f8e1 100644 --- a/SuiteSparse_GPURuntime/Include/SuiteSparse_GPURuntime.hpp +++ b/SuiteSparse_GPURuntime/Include/SuiteSparse_GPURuntime.hpp @@ -12,10 +12,10 @@ #define SUITESPARSE_GPURUNTIME_HPP // Version information: -#define SUITESPARSE_GPURUNTIME_DATE "Sept 8, 2023" +#define SUITESPARSE_GPURUNTIME_DATE "Sept 18, 2023" #define SUITESPARSE_GPURUNTIME_MAIN_VERSION 3 #define SUITESPARSE_GPURUNTIME_SUB_VERSION 2 -#define SUITESPARSE_GPURUNTIME_SUBSUB_VERSION 0 +#define SUITESPARSE_GPURUNTIME_SUBSUB_VERSION 1 #define SUITESPARSE_GPURUNTIME_VER_CODE(main,sub) ((main) * 1000 + (sub)) #define SUITESPARSE_GPURUNTIME_VERSION \ diff --git a/SuiteSparse_config/CMakeLists.txt b/SuiteSparse_config/CMakeLists.txt index efc1e6400..0e0282dc5 100644 --- a/SuiteSparse_config/CMakeLists.txt +++ b/SuiteSparse_config/CMakeLists.txt @@ -14,10 +14,10 @@ cmake_minimum_required ( VERSION 3.22 ) # version of both SuiteSparse and SuiteSparse_config -set ( SUITESPARSE_DATE "Sept 8, 2023" ) +set ( SUITESPARSE_DATE "Oct 7, 2023" ) set ( SUITESPARSE_VERSION_MAJOR 7 ) set ( SUITESPARSE_VERSION_MINOR 2 ) -set ( SUITESPARSE_VERSION_SUB 0 ) +set ( SUITESPARSE_VERSION_SUB 1 ) message ( STATUS "Building SuiteSparse_config version: v" ${SUITESPARSE_VERSION_MAJOR}. diff --git a/SuiteSparse_config/Config/SuiteSparse_configConfig.cmake.in b/SuiteSparse_config/Config/SuiteSparse_configConfig.cmake.in index c16ffd80d..cca8872da 100644 --- a/SuiteSparse_config/Config/SuiteSparse_configConfig.cmake.in +++ b/SuiteSparse_config/Config/SuiteSparse_configConfig.cmake.in @@ -60,7 +60,7 @@ if ( TARGET ${_target_static} ) endif ( ) # Check for most common build types -set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" ) +set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" "None" ) get_property ( _isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG ) if ( _isMultiConfig ) diff --git a/SuiteSparse_config/SuiteSparse_config.h b/SuiteSparse_config/SuiteSparse_config.h index e28fd0989..43d73e15a 100644 --- a/SuiteSparse_config/SuiteSparse_config.h +++ b/SuiteSparse_config/SuiteSparse_config.h @@ -409,10 +409,10 @@ int SuiteSparse_version // returns SUITESPARSE_VERSION #define SUITESPARSE_HAS_VERSION_FUNCTION -#define SUITESPARSE_DATE "Sept 8, 2023" +#define SUITESPARSE_DATE "Oct 7, 2023" #define SUITESPARSE_MAIN_VERSION 7 #define SUITESPARSE_SUB_VERSION 2 -#define SUITESPARSE_SUBSUB_VERSION 0 +#define SUITESPARSE_SUBSUB_VERSION 1 #define SUITESPARSE_VER_CODE(main,sub) ((main) * 1000 + (sub)) #define SUITESPARSE_VERSION \ diff --git a/SuiteSparse_config/cmake_modules/SuiteSparse__thread.cmake b/SuiteSparse_config/cmake_modules/SuiteSparse__thread.cmake index 75c5cb61d..1c52185b7 100644 --- a/SuiteSparse_config/cmake_modules/SuiteSparse__thread.cmake +++ b/SuiteSparse_config/cmake_modules/SuiteSparse__thread.cmake @@ -10,7 +10,7 @@ # determine if the __thread keyword is available, which is an extension by # gcc but supported by many compilers, to indicate thread-local-storage. -include ( CheckCSourceRuns ) +include ( CheckCSourceCompiles ) set ( thread_src " #include @@ -43,11 +43,11 @@ set ( thread_local_src } " ) -check_c_source_runs ( "${declspec_thread_src}" HAVE_KEYWORD__DECLSPEC_THREAD ) +check_c_source_compiles ( "${declspec_thread_src}" HAVE_KEYWORD__DECLSPEC_THREAD ) -check_c_source_runs ( "${thread_src}" HAVE_KEYWORD__THREAD ) +check_c_source_compiles ( "${thread_src}" HAVE_KEYWORD__THREAD ) -check_c_source_runs ( "${thread_local_src}" HAVE_KEYWORD__THREAD_LOCAL ) +check_c_source_compiles ( "${thread_local_src}" HAVE_KEYWORD__THREAD_LOCAL ) if ( HAVE_KEYWORD__DECLSPEC_THREAD ) add_compile_definitions ( HAVE_KEYWORD__DECLSPEC_THREAD ) diff --git a/UMFPACK/CMakeLists.txt b/UMFPACK/CMakeLists.txt index 4c0e52850..56b4432b7 100644 --- a/UMFPACK/CMakeLists.txt +++ b/UMFPACK/CMakeLists.txt @@ -12,10 +12,10 @@ # cmake 3.22 is required to find the BLAS in SuiteSparse_config cmake_minimum_required ( VERSION 3.22 ) -set ( UMFPACK_DATE "Sept 8, 2023" ) +set ( UMFPACK_DATE "Sept 18, 2023" ) set ( UMFPACK_VERSION_MAJOR 6 ) set ( UMFPACK_VERSION_MINOR 2 ) -set ( UMFPACK_VERSION_SUB 0 ) +set ( UMFPACK_VERSION_SUB 1 ) message ( STATUS "Building UMFPACK version: v" ${UMFPACK_VERSION_MAJOR}. diff --git a/UMFPACK/Config/UMFPACKConfig.cmake.in b/UMFPACK/Config/UMFPACKConfig.cmake.in index 0fd7f87e2..d97214e04 100644 --- a/UMFPACK/Config/UMFPACKConfig.cmake.in +++ b/UMFPACK/Config/UMFPACKConfig.cmake.in @@ -60,7 +60,7 @@ if ( TARGET ${_target_static} ) endif ( ) # Check for most common build types -set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" ) +set ( _config_types "Debug" "Release" "RelWithDebInfo" "MinSizeRel" "None" ) get_property ( _isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG ) if ( _isMultiConfig ) diff --git a/UMFPACK/Config/umfpack.h.in b/UMFPACK/Config/umfpack.h.in index e0788e498..3f5cea3cb 100644 --- a/UMFPACK/Config/umfpack.h.in +++ b/UMFPACK/Config/umfpack.h.in @@ -568,7 +568,13 @@ Arguments: Control [UMFPACK_STRATEGY]: This is the most important control parameter. It determines what kind of ordering and pivoting - strategy that UMFPACK should use. There are 4 options: + strategy that UMFPACK should use. + + NOTE: the interaction of numerical and fill-reducing pivoting is + a delicate balance, and a perfect hueristic is not possible because + sparsity-preserving pivoting is an NP-hard problem. Selecting the + wrong strategy can lead to catastrophic fill-in and/or numerical + inaccuracy. UMFPACK_STRATEGY_AUTO: This is the default. The input matrix is analyzed to determine how symmetric the nonzero pattern is, and diff --git a/UMFPACK/Demo/umf4hb.out b/UMFPACK/Demo/umf4hb.out index 3846d7db7..f822bfed4 100644 --- a/UMFPACK/Demo/umf4hb.out +++ b/UMFPACK/Demo/umf4hb.out @@ -1,4 +1,4 @@ -UMFPACK V6.2.0 (Sept 8, 2023), Control: +UMFPACK V6.2.1 (Sept 18, 2023), Control: Matrix entry defined as: double Int (generic integer) defined as: int32_t @@ -38,7 +38,7 @@ UMFPACK V6.2.0 (Sept 8, 2023), Control: computer/operating system: Linux size of int32_t: 4 int64_t: 8 Int: 4 pointer: 8 double: 8 Entry: 8 (in bytes) -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double Int (generic integer) defined as: int32_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -106,8 +106,8 @@ UMFPACK V6.2.0 (Sept 8, 2023), Info: numeric factorization defragmentations: 1 numeric factorization reallocations: 1 costly numeric factorization reallocations: 1 - numeric factorization wallclock time (sec): 0.02 - numeric factorization mflops (wallclock): 0.10 + numeric factorization wallclock time (sec): 0.01 + numeric factorization mflops (wallclock): 0.34 solve flops: 1.20800e+03 iterative refinement steps taken: 0 @@ -128,7 +128,7 @@ symbolic analysis: nnz (U): 902. numeric factorization: status: 0. - time: 0.25E-01 + time: 0.77E-02 actual numeric LU statistics: size of LU: 0.01 (MB) memory needed: 0.04 (MB) diff --git a/UMFPACK/Demo/umf4hb64.out b/UMFPACK/Demo/umf4hb64.out index 498b5910e..068a9e8fc 100644 --- a/UMFPACK/Demo/umf4hb64.out +++ b/UMFPACK/Demo/umf4hb64.out @@ -1,4 +1,4 @@ -UMFPACK V6.2.0 (Sept 8, 2023), Control: +UMFPACK V6.2.1 (Sept 18, 2023), Control: Matrix entry defined as: double Int (generic integer) defined as: int64_t @@ -38,7 +38,7 @@ UMFPACK V6.2.0 (Sept 8, 2023), Control: computer/operating system: Linux size of int32_t: 4 int64_t: 8 Int: 8 pointer: 8 double: 8 Entry: 8 (in bytes) -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double Int (generic integer) defined as: int64_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 diff --git a/UMFPACK/Demo/umf4zhb.out b/UMFPACK/Demo/umf4zhb.out index e7b57f10a..da09a3ca4 100644 --- a/UMFPACK/Demo/umf4zhb.out +++ b/UMFPACK/Demo/umf4zhb.out @@ -1,4 +1,4 @@ -UMFPACK V6.2.0 (Sept 8, 2023), Control: +UMFPACK V6.2.1 (Sept 18, 2023), Control: Matrix entry defined as: double complex Int (generic integer) defined as: int32_t @@ -38,7 +38,7 @@ UMFPACK V6.2.0 (Sept 8, 2023), Control: computer/operating system: Linux size of int32_t: 4 int64_t: 8 Int: 4 pointer: 8 double: 8 Entry: 16 (in bytes) -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double complex Int (generic integer) defined as: int32_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -120,9 +120,9 @@ UMFPACK V6.2.0 (Sept 8, 2023), Info: numeric factorization reallocations: 0 costly numeric factorization reallocations: 0 numeric factorization wallclock time (sec): 0.02 - numeric factorization mflops (wallclock): 796.37 + numeric factorization mflops (wallclock): 783.23 symbolic + numeric wall clock time (sec): 0.02 - symbolic + numeric mflops (wall clock): 721.98 + symbolic + numeric mflops (wall clock): 712.11 solve flops: 3.70332e+05 iterative refinement steps taken: 0 @@ -134,7 +134,7 @@ UMFPACK V6.2.0 (Sept 8, 2023), Info: Matrix key: QC324 symbolic analysis: status: 0. - time: 0.19E-02 (sec) + time: 0.18E-02 (sec) estimates (upper bound) for numeric LU: size of LU: 1.17 (MB) memory needed: 2.40 (MB) diff --git a/UMFPACK/Demo/umf4zhb64.out b/UMFPACK/Demo/umf4zhb64.out index ae6ad0ae0..b857c4c33 100644 --- a/UMFPACK/Demo/umf4zhb64.out +++ b/UMFPACK/Demo/umf4zhb64.out @@ -1,4 +1,4 @@ -UMFPACK V6.2.0 (Sept 8, 2023), Control: +UMFPACK V6.2.1 (Sept 18, 2023), Control: Matrix entry defined as: double complex Int (generic integer) defined as: int64_t @@ -38,7 +38,7 @@ UMFPACK V6.2.0 (Sept 8, 2023), Control: computer/operating system: Linux size of int32_t: 4 int64_t: 8 Int: 8 pointer: 8 double: 8 Entry: 16 (in bytes) -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double complex Int (generic integer) defined as: int64_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -119,10 +119,10 @@ UMFPACK V6.2.0 (Sept 8, 2023), Info: numeric factorization defragmentations: 0 numeric factorization reallocations: 0 costly numeric factorization reallocations: 0 - numeric factorization wallclock time (sec): 0.04 - numeric factorization mflops (wallclock): 407.98 - symbolic + numeric wall clock time (sec): 0.04 - symbolic + numeric mflops (wall clock): 383.46 + numeric factorization wallclock time (sec): 0.01 + numeric factorization mflops (wallclock): 962.67 + symbolic + numeric wall clock time (sec): 0.02 + symbolic + numeric mflops (wall clock): 839.26 solve flops: 3.70332e+05 iterative refinement steps taken: 0 @@ -143,7 +143,7 @@ symbolic analysis: nnz (U): 39609. numeric factorization: status: 0. - time: 0.35E-01 + time: 0.15E-01 actual numeric LU statistics: size of LU: 0.74 (MB) memory needed: 1.38 (MB) diff --git a/UMFPACK/Demo/umfpack_di_demo.out b/UMFPACK/Demo/umfpack_di_demo.out index 6df673a35..3d3e74a20 100644 --- a/UMFPACK/Demo/umfpack_di_demo.out +++ b/UMFPACK/Demo/umfpack_di_demo.out @@ -1,5 +1,5 @@ -UMFPACK V6.2 (Sept 8, 2023) demo: _di_ version +UMFPACK V6.2 (Sept 18, 2023) demo: _di_ version UMFPACK: Copyright (c) 2005-2023 by Timothy A. Davis. All Rights Reserved. @@ -10,9 +10,9 @@ UMFPACK License: SPDX-License-Identifier: GPL-2.0+ Availability: http://www.suitesparse.com -UMFPACK V6.2.0 (Sept 8, 2023): OK +UMFPACK V6.2.1 (Sept 18, 2023): OK -UMFPACK V6.2.0 (Sept 8, 2023), Control: +UMFPACK V6.2.1 (Sept 18, 2023), Control: Matrix entry defined as: double Int (generic integer) defined as: int32_t @@ -257,7 +257,7 @@ diagonal of U: dense vector, n = 5. Numeric object: OK -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double Int (generic integer) defined as: int32_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -346,7 +346,7 @@ UMFPACK V6.2.0 (Sept 8, 2023), Info: UMFPACK: Copyright (c) 2005-2023 by Timothy A. Davis. All Rights Reserved. -UMFPACK V6.2.0 (Sept 8, 2023): OK +UMFPACK V6.2.1 (Sept 18, 2023): OK x (solution of Ax=b): dense vector, n = 5. @@ -362,7 +362,7 @@ maxnorm of residual: 1.06581e-14 UMFPACK: Copyright (c) 2005-2023 by Timothy A. Davis. All Rights Reserved. -UMFPACK V6.2.0 (Sept 8, 2023): OK +UMFPACK V6.2.1 (Sept 18, 2023): OK determinant: (1.14) * 10^(2) @@ -376,7 +376,7 @@ x (solution of Ax=b, solve is split into 3 steps): dense vector, n = 5. maxnorm of residual: 1.06581e-14 -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double Int (generic integer) defined as: int32_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -605,7 +605,7 @@ diagonal of U: dense vector, n = 5. Numeric object: OK -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double Int (generic integer) defined as: int32_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -852,7 +852,7 @@ diagonal of U: dense vector, n = 5. Numeric object: OK -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double Int (generic integer) defined as: int32_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -1300,7 +1300,7 @@ Freeing numeric object: Loading numeric object: Done loading numeric object -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double Int (generic integer) defined as: int32_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -1509,7 +1509,7 @@ Done copying numeric object Numeric blob size: 752 Done serialize/deserialize of numeric object -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double Int (generic integer) defined as: int32_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -1607,7 +1607,7 @@ maxnorm of residual: 3.55271e-15 Solving C'x=b again, using umfpack_di_wsolve instead: -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double Int (generic integer) defined as: int32_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 diff --git a/UMFPACK/Demo/umfpack_dl_demo.out b/UMFPACK/Demo/umfpack_dl_demo.out index 60e209f5d..fa481ff22 100644 --- a/UMFPACK/Demo/umfpack_dl_demo.out +++ b/UMFPACK/Demo/umfpack_dl_demo.out @@ -1,5 +1,5 @@ -UMFPACK V6.2 (Sept 8, 2023) demo: _dl_ version +UMFPACK V6.2 (Sept 18, 2023) demo: _dl_ version UMFPACK: Copyright (c) 2005-2023 by Timothy A. Davis. All Rights Reserved. @@ -10,9 +10,9 @@ UMFPACK License: SPDX-License-Identifier: GPL-2.0+ Availability: http://www.suitesparse.com -UMFPACK V6.2.0 (Sept 8, 2023): OK +UMFPACK V6.2.1 (Sept 18, 2023): OK -UMFPACK V6.2.0 (Sept 8, 2023), Control: +UMFPACK V6.2.1 (Sept 18, 2023), Control: Matrix entry defined as: double Int (generic integer) defined as: int64_t @@ -257,7 +257,7 @@ diagonal of U: dense vector, n = 5. Numeric object: OK -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double Int (generic integer) defined as: int64_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -346,7 +346,7 @@ UMFPACK V6.2.0 (Sept 8, 2023), Info: UMFPACK: Copyright (c) 2005-2023 by Timothy A. Davis. All Rights Reserved. -UMFPACK V6.2.0 (Sept 8, 2023): OK +UMFPACK V6.2.1 (Sept 18, 2023): OK x (solution of Ax=b): dense vector, n = 5. @@ -362,7 +362,7 @@ maxnorm of residual: 1.06581e-14 UMFPACK: Copyright (c) 2005-2023 by Timothy A. Davis. All Rights Reserved. -UMFPACK V6.2.0 (Sept 8, 2023): OK +UMFPACK V6.2.1 (Sept 18, 2023): OK determinant: (1.14) * 10^(2) @@ -376,7 +376,7 @@ x (solution of Ax=b, solve is split into 3 steps): dense vector, n = 5. maxnorm of residual: 1.06581e-14 -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double Int (generic integer) defined as: int64_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -605,7 +605,7 @@ diagonal of U: dense vector, n = 5. Numeric object: OK -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double Int (generic integer) defined as: int64_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -852,7 +852,7 @@ diagonal of U: dense vector, n = 5. Numeric object: OK -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double Int (generic integer) defined as: int64_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -1300,7 +1300,7 @@ Freeing numeric object: Loading numeric object: Done loading numeric object -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double Int (generic integer) defined as: int64_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -1509,7 +1509,7 @@ Done copying numeric object Numeric blob size: 1144 Done serialize/deserialize of numeric object -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double Int (generic integer) defined as: int64_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -1607,7 +1607,7 @@ maxnorm of residual: 3.55271e-15 Solving C'x=b again, using umfpack_dl_wsolve instead: -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double Int (generic integer) defined as: int64_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 diff --git a/UMFPACK/Demo/umfpack_simple.out b/UMFPACK/Demo/umfpack_simple.out index a069d0155..cb5595086 100644 --- a/UMFPACK/Demo/umfpack_simple.out +++ b/UMFPACK/Demo/umfpack_simple.out @@ -1,4 +1,4 @@ -UMFPACK V6.2.0 (Sept 8, 2023) +UMFPACK V6.2.1 (Sept 18, 2023) UMFPACK: Copyright (c) 2005-2023 by Timothy A. Davis. All Rights Reserved. UMFPACK License: SPDX-License-Identifier: GPL-2.0+ diff --git a/UMFPACK/Demo/umfpack_zi_demo.out b/UMFPACK/Demo/umfpack_zi_demo.out index da79c43ab..349405427 100644 --- a/UMFPACK/Demo/umfpack_zi_demo.out +++ b/UMFPACK/Demo/umfpack_zi_demo.out @@ -1,5 +1,5 @@ -UMFPACK V6.2 (Sept 8, 2023) demo: _zi_ version +UMFPACK V6.2 (Sept 18, 2023) demo: _zi_ version UMFPACK: Copyright (c) 2005-2023 by Timothy A. Davis. All Rights Reserved. @@ -10,9 +10,9 @@ UMFPACK License: SPDX-License-Identifier: GPL-2.0+ Availability: http://www.suitesparse.com -UMFPACK V6.2.0 (Sept 8, 2023): OK +UMFPACK V6.2.1 (Sept 18, 2023): OK -UMFPACK V6.2.0 (Sept 8, 2023), Control: +UMFPACK V6.2.1 (Sept 18, 2023), Control: Matrix entry defined as: double complex Int (generic integer) defined as: int32_t @@ -257,7 +257,7 @@ diagonal of U: dense vector, n = 5. Numeric object: OK -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double complex Int (generic integer) defined as: int32_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -332,7 +332,7 @@ UMFPACK V6.2.0 (Sept 8, 2023), Info: numeric factorization reallocations: 1 costly numeric factorization reallocations: 0 numeric factorization wallclock time (sec): 0.00 - numeric factorization mflops (wallclock): 0.01 + numeric factorization mflops (wallclock): 0.02 solve flops: 1.02800e+03 iterative refinement steps taken: 1 @@ -346,7 +346,7 @@ UMFPACK V6.2.0 (Sept 8, 2023), Info: UMFPACK: Copyright (c) 2005-2023 by Timothy A. Davis. All Rights Reserved. -UMFPACK V6.2.0 (Sept 8, 2023): OK +UMFPACK V6.2.1 (Sept 18, 2023): OK x (solution of Ax=b): dense vector, n = 5. @@ -362,7 +362,7 @@ maxnorm of residual: 1.77636e-15 UMFPACK: Copyright (c) 2005-2023 by Timothy A. Davis. All Rights Reserved. -UMFPACK V6.2.0 (Sept 8, 2023): OK +UMFPACK V6.2.1 (Sept 18, 2023): OK determinant: (-1.7814+ (2.3784)i) * 10^(2) @@ -376,7 +376,7 @@ x (solution of Ax=b, solve is split into 3 steps): dense vector, n = 5. maxnorm of residual: 1.77636e-14 -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double complex Int (generic integer) defined as: int32_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -451,7 +451,7 @@ UMFPACK V6.2.0 (Sept 8, 2023), Info: numeric factorization reallocations: 1 costly numeric factorization reallocations: 0 numeric factorization wallclock time (sec): 0.00 - numeric factorization mflops (wallclock): 0.01 + numeric factorization mflops (wallclock): 0.02 solve flops: 4.80000e+02 iterative refinement steps taken: 0 @@ -605,7 +605,7 @@ diagonal of U: dense vector, n = 5. Numeric object: OK -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double complex Int (generic integer) defined as: int32_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -852,7 +852,7 @@ diagonal of U: dense vector, n = 5. Numeric object: OK -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double complex Int (generic integer) defined as: int32_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -1300,7 +1300,7 @@ Freeing numeric object: Loading numeric object: Done loading numeric object -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double complex Int (generic integer) defined as: int32_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -1509,7 +1509,7 @@ Done copying numeric object Numeric blob size: 864 Done serialize/deserialize of numeric object -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double complex Int (generic integer) defined as: int32_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -1607,7 +1607,7 @@ maxnorm of residual: 4.88498e-15 Solving C'x=b again, using umfpack_zi_wsolve instead: -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double complex Int (generic integer) defined as: int32_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 diff --git a/UMFPACK/Demo/umfpack_zl_demo.out b/UMFPACK/Demo/umfpack_zl_demo.out index c3c58fc39..40bf13ce4 100644 --- a/UMFPACK/Demo/umfpack_zl_demo.out +++ b/UMFPACK/Demo/umfpack_zl_demo.out @@ -1,5 +1,5 @@ -UMFPACK V6.2 (Sept 8, 2023) demo: _zl_ version +UMFPACK V6.2 (Sept 18, 2023) demo: _zl_ version UMFPACK: Copyright (c) 2005-2023 by Timothy A. Davis. All Rights Reserved. @@ -10,9 +10,9 @@ UMFPACK License: SPDX-License-Identifier: GPL-2.0+ Availability: http://www.suitesparse.com -UMFPACK V6.2.0 (Sept 8, 2023): OK +UMFPACK V6.2.1 (Sept 18, 2023): OK -UMFPACK V6.2.0 (Sept 8, 2023), Control: +UMFPACK V6.2.1 (Sept 18, 2023), Control: Matrix entry defined as: double complex Int (generic integer) defined as: int64_t @@ -257,7 +257,7 @@ diagonal of U: dense vector, n = 5. Numeric object: OK -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double complex Int (generic integer) defined as: int64_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -346,7 +346,7 @@ UMFPACK V6.2.0 (Sept 8, 2023), Info: UMFPACK: Copyright (c) 2005-2023 by Timothy A. Davis. All Rights Reserved. -UMFPACK V6.2.0 (Sept 8, 2023): OK +UMFPACK V6.2.1 (Sept 18, 2023): OK x (solution of Ax=b): dense vector, n = 5. @@ -362,7 +362,7 @@ maxnorm of residual: 1.77636e-15 UMFPACK: Copyright (c) 2005-2023 by Timothy A. Davis. All Rights Reserved. -UMFPACK V6.2.0 (Sept 8, 2023): OK +UMFPACK V6.2.1 (Sept 18, 2023): OK determinant: (-1.7814+ (2.3784)i) * 10^(2) @@ -376,7 +376,7 @@ x (solution of Ax=b, solve is split into 3 steps): dense vector, n = 5. maxnorm of residual: 1.77636e-14 -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double complex Int (generic integer) defined as: int64_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -605,7 +605,7 @@ diagonal of U: dense vector, n = 5. Numeric object: OK -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double complex Int (generic integer) defined as: int64_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -852,7 +852,7 @@ diagonal of U: dense vector, n = 5. Numeric object: OK -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double complex Int (generic integer) defined as: int64_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -1300,7 +1300,7 @@ Freeing numeric object: Loading numeric object: Done loading numeric object -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double complex Int (generic integer) defined as: int64_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -1509,7 +1509,7 @@ Done copying numeric object Numeric blob size: 1208 Done serialize/deserialize of numeric object -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double complex Int (generic integer) defined as: int64_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 @@ -1607,7 +1607,7 @@ maxnorm of residual: 4.88498e-15 Solving C'x=b again, using umfpack_zl_wsolve instead: -UMFPACK V6.2.0 (Sept 8, 2023), Info: +UMFPACK V6.2.1 (Sept 18, 2023), Info: matrix entry defined as: double complex Int (generic integer) defined as: int64_t BLAS library used: Intel MKL 64lp BLAS (32-bit integers). size of BLAS integer: 4 diff --git a/UMFPACK/Doc/ChangeLog b/UMFPACK/Doc/ChangeLog index 8f80454ae..564ddaa09 100644 --- a/UMFPACK/Doc/ChangeLog +++ b/UMFPACK/Doc/ChangeLog @@ -1,3 +1,9 @@ +Sept 18, 2023: version 6.2.1 + + * cmake update: add "None" build type, from Antonio Rojas, for Arch Linux + * AMD: amd_internal.h include file copied into UMFPACK/Source, so + that UMFPACK can be built with just the installed AMD files. + Sept 8, 2023: version 6.2.0 * cmake updates: SuiteSparse:: namespace by Markus Muetzel diff --git a/UMFPACK/Doc/UMFPACK_QuickStart.pdf b/UMFPACK/Doc/UMFPACK_QuickStart.pdf index 2b277f3e9..0521a0ec0 100644 Binary files a/UMFPACK/Doc/UMFPACK_QuickStart.pdf and b/UMFPACK/Doc/UMFPACK_QuickStart.pdf differ diff --git a/UMFPACK/Doc/UMFPACK_QuickStart.tex b/UMFPACK/Doc/UMFPACK_QuickStart.tex index 93943da1c..f5265ab4c 100644 --- a/UMFPACK/Doc/UMFPACK_QuickStart.tex +++ b/UMFPACK/Doc/UMFPACK_QuickStart.tex @@ -494,7 +494,13 @@ \subsection{umfpack\_di\_symbolic} Control [UMFPACK_STRATEGY]: This is the most important control parameter. It determines what kind of ordering and pivoting - strategy that UMFPACK should use. There are 4 options: + strategy that UMFPACK should use. + + NOTE: the interaction of numerical and fill-reducing pivoting is + a delicate balance, and a perfect hueristic is not possible because + sparsity-preserving pivoting is an NP-hard problem. Selecting the + wrong strategy can lead to catastrophic fill-in and/or numerical + inaccuracy. UMFPACK_STRATEGY_AUTO: This is the default. The input matrix is analyzed to determine how symmetric the nonzero pattern is, and diff --git a/UMFPACK/Doc/UMFPACK_UserGuide.pdf b/UMFPACK/Doc/UMFPACK_UserGuide.pdf index 7ed49e85f..102284cce 100644 Binary files a/UMFPACK/Doc/UMFPACK_UserGuide.pdf and b/UMFPACK/Doc/UMFPACK_UserGuide.pdf differ diff --git a/UMFPACK/Doc/UMFPACK_UserGuide.tex b/UMFPACK/Doc/UMFPACK_UserGuide.tex index 890871e00..60c025620 100644 --- a/UMFPACK/Doc/UMFPACK_UserGuide.tex +++ b/UMFPACK/Doc/UMFPACK_UserGuide.tex @@ -2534,7 +2534,13 @@ \subsection{umfpack\_*\_symbolic} Control [UMFPACK_STRATEGY]: This is the most important control parameter. It determines what kind of ordering and pivoting - strategy that UMFPACK should use. There are 4 options: + strategy that UMFPACK should use. + + NOTE: the interaction of numerical and fill-reducing pivoting is + a delicate balance, and a perfect hueristic is not possible because + sparsity-preserving pivoting is an NP-hard problem. Selecting the + wrong strategy can lead to catastrophic fill-in and/or numerical + inaccuracy. UMFPACK_STRATEGY_AUTO: This is the default. The input matrix is analyzed to determine how symmetric the nonzero pattern is, and diff --git a/UMFPACK/Doc/umfpack_version.tex b/UMFPACK/Doc/umfpack_version.tex index 8b56ef294..14737caa6 100644 --- a/UMFPACK/Doc/umfpack_version.tex +++ b/UMFPACK/Doc/umfpack_version.tex @@ -1,2 +1,2 @@ % version of SuiteSparse/UMFPACK -\date{VERSION 6.2.0, Sept 8, 2023} +\date{VERSION 6.2.1, Sept 18, 2023} diff --git a/UMFPACK/Include/umfpack.h b/UMFPACK/Include/umfpack.h index c8e632135..32b784404 100644 --- a/UMFPACK/Include/umfpack.h +++ b/UMFPACK/Include/umfpack.h @@ -82,10 +82,10 @@ extern "C" { * below. */ -#define UMFPACK_DATE "Sept 8, 2023" +#define UMFPACK_DATE "Sept 18, 2023" #define UMFPACK_MAIN_VERSION 6 #define UMFPACK_SUB_VERSION 2 -#define UMFPACK_SUBSUB_VERSION 0 +#define UMFPACK_SUBSUB_VERSION 1 #define UMFPACK_VER_CODE(main,sub) ((main) * 1000 + (sub)) #define UMFPACK_VER UMFPACK_VER_CODE(UMFPACK_MAIN_VERSION,UMFPACK_SUB_VERSION) @@ -568,7 +568,13 @@ packed complex Syntax: Control [UMFPACK_STRATEGY]: This is the most important control parameter. It determines what kind of ordering and pivoting - strategy that UMFPACK should use. There are 4 options: + strategy that UMFPACK should use. + + NOTE: the interaction of numerical and fill-reducing pivoting is + a delicate balance, and a perfect hueristic is not possible because + sparsity-preserving pivoting is an NP-hard problem. Selecting the + wrong strategy can lead to catastrophic fill-in and/or numerical + inaccuracy. UMFPACK_STRATEGY_AUTO: This is the default. The input matrix is analyzed to determine how symmetric the nonzero pattern is, and diff --git a/UMFPACK/Source/README.txt b/UMFPACK/Source/README.txt new file mode 100644 index 000000000..8b8df99a1 --- /dev/null +++ b/UMFPACK/Source/README.txt @@ -0,0 +1 @@ +The amd_internal.h file must be an exact copy of AMD/Include/amd_internal.h. diff --git a/UMFPACK/Source/amd_internal.h b/UMFPACK/Source/amd_internal.h new file mode 100644 index 000000000..85d43930b --- /dev/null +++ b/UMFPACK/Source/amd_internal.h @@ -0,0 +1,280 @@ +//------------------------------------------------------------------------------ +// AMD/Include/amd_internal.h: internal definitions for AMD +//------------------------------------------------------------------------------ + +// AMD, Copyright (c) 1996-2022, Timothy A. Davis, Patrick R. Amestoy, and +// Iain S. Duff. All Rights Reserved. +// SPDX-License-Identifier: BSD-3-clause + +//------------------------------------------------------------------------------ + +/* This file is for internal use in AMD itself, and does not normally need to + * be included in user code (it is included in UMFPACK, however). All others + * should use amd.h instead. + */ + +/* ========================================================================= */ +/* === NDEBUG ============================================================== */ +/* ========================================================================= */ + +/* + * Turning on debugging takes some work (see below). If you do not edit this + * file, then debugging is always turned off, regardless of whether or not + * -DNDEBUG is specified in your compiler options. + * + * If AMD is being compiled as a mexFunction, then MATLAB_MEX_FILE is defined, + * and mxAssert is used instead of assert. If debugging is not enabled, no + * MATLAB include files or functions are used. Thus, the AMD library libamd.a + * can be safely used in either a stand-alone C program or in another + * mexFunction, without any change. + */ + +/* + AMD will be exceedingly slow when running in debug mode. The next three + lines ensure that debugging is turned off. +*/ +#ifndef NDEBUG +#define NDEBUG +#endif + +/* + To enable debugging, uncomment the following line: +#undef NDEBUG +*/ + +#define SUITESPARSE_LIBRARY +#include "amd.h" + +/* ------------------------------------------------------------------------- */ +/* basic definitions */ +/* ------------------------------------------------------------------------- */ + +#ifdef FLIP +#undef FLIP +#endif + +#ifdef MAX +#undef MAX +#endif + +#ifdef MIN +#undef MIN +#endif + +#ifdef EMPTY +#undef EMPTY +#endif + +#define PRIVATE static + +/* FLIP is a "negation about -1", and is used to mark an integer i that is + * normally non-negative. FLIP (EMPTY) is EMPTY. FLIP of a number > EMPTY + * is negative, and FLIP of a number < EMTPY is positive. FLIP (FLIP (i)) = i + * for all integers i. UNFLIP (i) is >= EMPTY. */ +#define EMPTY (-1) +#define FLIP(i) (-(i)-2) +#define UNFLIP(i) ((i < EMPTY) ? FLIP (i) : (i)) + +/* for integer MAX/MIN, or for doubles when we don't care how NaN's behave: */ +#define MAX(a,b) (((a) > (b)) ? (a) : (b)) +#define MIN(a,b) (((a) < (b)) ? (a) : (b)) + +/* logical expression of p implies q: */ +#define IMPLIES(p,q) (!(p) || (q)) + +/* Note that the IBM RS 6000 xlc predefines TRUE and FALSE in . */ +/* The Compaq Alpha also predefines TRUE and FALSE. */ +#ifdef TRUE +#undef TRUE +#endif +#ifdef FALSE +#undef FALSE +#endif + +#define TRUE (1) +#define FALSE (0) +#define EMPTY (-1) + +/* largest value of size_t */ +#ifndef SIZE_T_MAX +#ifdef SIZE_MAX +/* C99 only */ +#define SIZE_T_MAX SIZE_MAX +#else +#define SIZE_T_MAX ((size_t) (-1)) +#endif +#endif + +/* ------------------------------------------------------------------------- */ +/* integer type for AMD: int32_t or int64_t */ +/* ------------------------------------------------------------------------- */ + +#if defined (DLONG) || defined (ZLONG) + +#define Int int64_t +#define UInt uint64_t +#define ID "%" PRId64 +#define Int_MAX INT64_MAX + +#define AMD_order amd_l_order +#define AMD_defaults amd_l_defaults +#define AMD_control amd_l_control +#define AMD_info amd_l_info +#define AMD_1 amd_l1 +#define AMD_2 amd_l2 +#define AMD_valid amd_l_valid +#define AMD_aat amd_l_aat +#define AMD_postorder amd_l_postorder +#define AMD_post_tree amd_l_post_tree +#define AMD_dump amd_l_dump +#define AMD_debug amd_l_debug +#define AMD_debug_init amd_l_debug_init +#define AMD_preprocess amd_l_preprocess + +#else + +#define Int int32_t +#define UInt uint32_t +#define ID "%d" +#define Int_MAX INT32_MAX + +#define AMD_order amd_order +#define AMD_defaults amd_defaults +#define AMD_control amd_control +#define AMD_info amd_info +#define AMD_1 amd_1 +#define AMD_2 amd_2 +#define AMD_valid amd_valid +#define AMD_aat amd_aat +#define AMD_postorder amd_postorder +#define AMD_post_tree amd_post_tree +#define AMD_dump amd_dump +#define AMD_debug amd_debug +#define AMD_debug_init amd_debug_init +#define AMD_preprocess amd_preprocess + +#endif + +/* ------------------------------------------------------------------------- */ +/* AMD routine definitions (not user-callable) */ +/* ------------------------------------------------------------------------- */ + +size_t AMD_aat +( + Int n, + const Int Ap [ ], + const Int Ai [ ], + Int Len [ ], + Int Tp [ ], + double Info [ ] +) ; + +void AMD_1 +( + Int n, + const Int Ap [ ], + const Int Ai [ ], + Int P [ ], + Int Pinv [ ], + Int Len [ ], + Int slen, + Int S [ ], + double Control [ ], + double Info [ ] +) ; + +void AMD_postorder +( + Int nn, + Int Parent [ ], + Int Npiv [ ], + Int Fsize [ ], + Int Order [ ], + Int Child [ ], + Int Sibling [ ], + Int Stack [ ] +) ; + +Int AMD_post_tree +( + Int root, + Int k, + Int Child [ ], + const Int Sibling [ ], + Int Order [ ], + Int Stack [ ] +#ifndef NDEBUG + , Int nn +#endif +) ; + +void AMD_preprocess +( + Int n, + const Int Ap [ ], + const Int Ai [ ], + Int Rp [ ], + Int Ri [ ], + Int W [ ], + Int Flag [ ] +) ; + +/* ------------------------------------------------------------------------- */ +/* debugging definitions */ +/* ------------------------------------------------------------------------- */ + +#ifndef NDEBUG + +/* from assert.h: assert macro */ +#include + +extern Int AMD_debug ; + +void AMD_debug_init ( char *s ) ; + +void AMD_dump +( + Int n, + Int Pe [ ], + Int Iw [ ], + Int Len [ ], + Int iwlen, + Int pfree, + Int Nv [ ], + Int Next [ ], + Int Last [ ], + Int Head [ ], + Int Elen [ ], + Int Degree [ ], + Int W [ ], + Int nel +) ; + +#ifdef ASSERT +#undef ASSERT +#endif + +/* Use mxAssert if AMD is compiled into a mexFunction */ +#ifdef MATLAB_MEX_FILE +#define ASSERT(expression) (mxAssert ((expression), "")) +#else +#define ASSERT(expression) (assert (expression)) +#endif + +#define AMD_DEBUG0(params) { SUITESPARSE_PRINTF (params) ; } +#define AMD_DEBUG1(params) { if (AMD_debug >= 1) SUITESPARSE_PRINTF (params) ; } +#define AMD_DEBUG2(params) { if (AMD_debug >= 2) SUITESPARSE_PRINTF (params) ; } +#define AMD_DEBUG3(params) { if (AMD_debug >= 3) SUITESPARSE_PRINTF (params) ; } +#define AMD_DEBUG4(params) { if (AMD_debug >= 4) SUITESPARSE_PRINTF (params) ; } + +#else + +/* no debugging */ +#define ASSERT(expression) +#define AMD_DEBUG0(params) +#define AMD_DEBUG1(params) +#define AMD_DEBUG2(params) +#define AMD_DEBUG3(params) +#define AMD_DEBUG4(params) + +#endif